Levels of abstraction

I think I must be doing the funkiest development on the planet right now. Connecting to a Debian Linux server running under VMWare Server under Windows 2000 Server as my test server, which is modeling the production server, a Redhat environment.

Locally, I’m connecting to this virtual Linux server via NFS, and plugging Eclipse right into the NFS exported directory, using uid/gid mapping to make sure permissions are okay.

Finally, running VMWare Workstation locally (for access to Dreamweaver/Photoshop) and connecting to the NFS mounted drive by connecting to the mount point on my local machine via SAMBA! That is, I have a mount point on my machine /mnt/server1 which maps to the IP of my server via NFS. And I made /mnt/server1 shareable via samba to my VMWare “Virtual Machine’s” IP address. So that means when I write a file from VMWare, it’s using the Windows SMB implementation which is interpreted by Linux’s SMB daemons, which are then sent over the Internet to my server using the NFS protocol and finally written to my server’s disk. All in milliseconds, no less.

Wow! That’s a lot of layers to peel off when something goes wrong. But so far, nothing has (this is very surprising for me).

MultiTail and syslogd’s heartbeat

Just wanted to post this here in case anyone else runs into this little quirky thing. A lot of the time running Linux you want to see your log files (like /var/log/messages), and so someone has been nice enough to code a gdesklet called MultiTail that sticks the output of your log files on your desktop. This is useful for me not only for monitoring server output (like tomcat, apache) but also for monitoring things like apcupsd (my UPS daemon) and even error messages coming from Gnome programs, etc.

But I started noticing this annoyance, that every few minutes I’d see an entry that went was just — MARK — show up in my log, which unnecessarily cluttered MultiTail. Well, you can actual get rid of that (which is just syslogd telling you he is still alive) in the following ways.

Why don’t things just work?

Nice follow-up to yesterday’s post. I’m frustrated with things not “just working.”

The light bulb for my torchiere light went out a couple days ago. Turns out it’s a weird bulb, so I had to buy it online (at topbulb.com), but then I stuck in the new bulb, and nothing turned on. Turns out the bulb didn’t die (though it seemed that way), the fucking light died!

Then I realized the recently-installed cheap CD changer still doesn’t play MP3 CDs properly. Better than before, but it still skips. And it can’t be a power issue anymore since it’s getting it direct from the battery. Grr. I hate stuff like that. I may just return the damn thing.

Oh yea, and Windows XP crashed while I was recording something off TV for Olivia. Nice. Luckily I rebooted and I think I only lost 2 minutes of commercials from the recording, so no harm there. But still.

On a final breakage note, yesterday I hit CTRL+ALT+BACKSPACE by accident went I meant to hit CTRL+ALT+DELETE. When running X, CTRL+ALT+BACKSPACE shuts down XFree86 entirely, if you don’t know (while CTRL+ALT+DELETE does nothing–I needed to send that command to my Windows server which I was VNC’ing into). Well, it turns out that somehow, by shutting down X at the wrong time, my Gnome panel’s clock applet wouldn’t start. Had to dig around the error message to find the solution, but in the end I had to copy my root account’s gconf entries for /apps/panel/profiles/default/ and then re-customize my gnome-panel. Havoc sure was right awhile ago when he said gconf can corrupt sometimes. I didn’t listen, and I had to rebuild my panel as a result. sad

Now I have to get to work. Let’s just hope things work while I work.

On keeping things

You know, my philosophy about buying things used to be, never buy high-end because you’ll always have to replace it/upgrade it within a few months. But now I’m starting to reject that whole idea entirely.

I mean, I’ve already posted on other sites about how new PDAs don’t impress me because I still use a Palm Vx and it does everything I need in a PDA, and then some. Everything I need. No, it doesn’t play seven or eight MP3s in its Flash memory. No, it doesn’t play video clips I record with the tiny video camera embedded in the back. No, it doesn’t connect to wireless internet access if hotspots are available.

Nope, all it does is keep track of my todo lists, download articles from AvantGo and download maps, directions and listings from Vindigo. I can also set reminders, create shopping lists, and play DopeWars. All in 8MB of RAM. Plus, it’s thin, it’s beautiful, and it’s made in the USA.

Now that computers keep getting faster and faster and most software is not proportionally taking advantage of it, I find it easier to say, “Okay, I’ll have this computer for a few years.” That’s a good thing. In retrospect, these last five years have moved so quickly that it really made us geeks spend a ton of cash. I mean, I’m on a 2.6Ghz machine with a gig of RAM. I never use more than 300MB of RAM unless I’m running VMWare (which I’ll admit, is often nowadays). My CPU never gets cranked unless I’m doing video processing. I mean, things aren’t as speedy as perhaps they should be (I/O being the bottleneck), but I haven’t felt my computer “lagging” in years.

As a side note to that, software needs to get smarter. At 2.6Ghz of raw power, my computer should be doing more for me automatically 🙂

300 lines of (careful) code later…

And I am chiseling away at this project. Coded the registration form in true MVC fashion. As I said to Olivia today, they don’t call it software engineering for nothing. I had to really plan this out properly and code the components with lots of reuse in mind. It’s paying off, slowly.

So anyway, I can see why my brother’s developers shy away from doing extensive error checking on their forms. It’s a pain in the ass. But a necessary one, I think. I really wish something like XForms were widely adopted so that us poor web developers could enforce constraints easily at the client level. I would do it with JavaScript except I really fucking hate JavaScript. It’s slow, clunky, and almost always makes your page look-n-feel unprofessional.

So, I said, fuck it, might as well take some OOP features of Java and code some reusable error handling for forms. I came up with a nice idea of using a HashMap that stores keys of the form element identifiers and passing that object to the JSP page through the RequestDispatcher/Session. Once my JSP page has it, it checks if there are errors, and if there are, it outputs the error message and also marks off asterisks next to invalid form elements.

This is probably the kind of thing Struts/FormBeans handles for you easily, but I’m doing it from scratch. All in the name of knowledge, I guess. Is the time I’m spending on this from scratch > the time it would take to learn the Struts framework/deal with the issues arising from the Struts framework? Who knows. But at least I’m learning more, so I guess that’s why it wins out.

Argh, I need sleep. I’m so pathetic. I disabled Workrave, and so I haven’t taken ANY breaks in the last 2 hours. sad

Busy days

Been working like crazy the last couple of days. Spending most of my time on the UAC project–coding all the great Java classes that will make the website run smoothly. Learning a lot more about MySQL (and Connector/J) in the meanwhile. In fact, yesterday in order to get up to speed I spent about two hours reading some relational database theory (stuff I had stupidly forgotten to review when I jumped into MySQL earlier this year, in a very practical way).

Yesterday, after finishing my Java work, I had the pleasure of setting up a Bugzilla for my brother’s web developers. I say pleasure because the Debian bugzilla package rocks and literally makes it an apt-get install bugzilla bugzilla-doc affair. From there I was able to customize it up the wazoo by editing /etc/bugzilla/localconfig and rerunning dpkg-reconfigure bugzilla. Ah, Debian. Makes things so easy.

Bugzilla is really nice when you play with it. I’ve been entering bug reports for my brother on and off as I browse his websites. 10 minutes ago I got bored so I added a bunch of Stephen Wright jokes to Bugzilla’s “quips” feature (displays a random quip on every bugzilla query). Hopefully that’ll keep my brother’s devs entertained as they try to face the growing steep of UI bugs and such.

Anyway, back to work. Just felt I was leaving this web page without love. More to come later, when I’m less under pressure.

NFS sucks

I started using NFS the other day because I realized I wanted to have transparent access to my server so that I could deploy Tomcat applications there easily (more easily than with FTP, SCP or CVS, at least). Well, it turns out NFS is complicated on its own. When I asked about NFS in #debian, someone told apt to tell me what NFS is. Quoth the bot: “NFS, or Not Fucking Secure: The Networked Filesystem from Sun.” Among the other replies in the room were that it “never fucking works,” or that “when it does, it works poorly at best.” If you care about stuff like this, read on…

Murphy’s Law: Murphy was an optimist

Well, I have to hand it to you, Murphy. I really wasn’t expecting it this time. But you managed to do it. I thought I was free, but clearly I was not.

It’s 5:44am, the birds are starting to chirp, and here I am, finally with a working computer. I am still not entirely sure why it works now. I believe that the clips on the HT800 CPU cooler push down to hard on the CPU or the socket, and are causing instability problems. It doesn’t surprise me. Right now I have the clips off and it boots every time. I put the clips on and it doesn’t boot. I’m pretty sure it’s not coincidental. It’s also the only thing that has changed.

In any event, this has significantly slowed down my work on the summer project, but I’m going to make it up by working all weekend. angry

The question becomes, how am I gonna clip this CPU cooler to the motherboard without causing the instability? I tried only using 2 clips but that seems not to work either. And I can’t even lift up the HT800 since the thermal paste is acting as an adhesive (maybe I did too good a job?). In fact, I’m starting to think perhaps I put too much thermal paste, and that’s why the CPU is getting crushed. I guess things like that really make a difference when you’re talking millimeters.

Throughout all of this, I thought the reason for POST failure was: (a) thermal paste hotspots again; (b) BIOS issues with the installed video card, causing me to do CMOS resets about 40 times with mixed results; (c) bad memory, becuase sometimes taking a DIMM out helped; (d) bad IDE controller, because sometimes removing the drives helped. In all a-d, I believe I was wrong. This was Murphy playing games with me. He gave me four red herrings. The problem, I’m sure, was the clips all along, but Murphy took me for a ride and provided the coincidences to make it possible. All-expense paid trip into my own personal hell: a malfunctioning computer with all my data on it.

I am still not entirely sure of my theory. If Murphy breaks it here, though, I will be quite upset. What a bastard he can be.

Tomorrow I have to do UAC work all day. It’s imperative. Hopefully it’ll keep booting so I don’t have to use the Mac.

SSL and high school reunion

Been reading the SSL Certificates HOWTO to learn a bit for my summer employment (which will require SSL communications). Nice because here my college education is actually helping, in that things I learned in my Discrete Math class are showing up.

Yesterday in the wee hours of the morning, I was getting bored researching this stuff, and so I googled one of my good friends from high school, David Krauss, an extremely talented computer engineer who knew PPC assembler and was fluent in C (and when I say fluent, I mean it) at the tender age of 15. A die-hard Mac lover with so much knowledge, I always wished and hoped he would get a job at Apple. And, it turns out, he did. That makes me happy. The world is somewhat just, it seems.