Server fun and other oddities
Started: Thursday, July 31, 2003 23:47
Finished: Friday, August 1, 2003 02:42
...or, How I Learned to Stop Worrying and Love the Unemployment.
Let's do the music recommendation first for a change.
Tonight's Music Recommendation:
Artist: SiaQua.
Track: Stomp of the Machines.
Trippy techno featuring some sweet samples from The Second
Renaissance.
(Note to self: For next lounge version, it might be fun to put Music Recommondations in a table of their own. Oh no, the spectre of schema bloat rises again. Just after I finished cleaning out a bunch of the unused tables and fields that I thought would be "cool" a couple years ago.)
This afternoon, I journied down to inflow, where I met up with scott's friend, who rents him the cabinet space. Jaeger and scott joined us. The mission: Get Hydrogen booted to the new kernel.
(I had made a solo attempt to upgrade it last week, which didn't end up in success. Although I managed to sort out some lilo.conf oddities, the new kernel refused to recognize the raid device. Since Jaeger had gotten the raid drivers working last December, I decided to wait see if he could figure it out, since he had gotten it working last winter.)
Jaeger restarted Hydrogen, selected the new kernel at the lilo prompt, and... it worked. Since I fully expected it to exhibit the behavior I had seen last week, I started to suspect some very mysterious gremlens were toying with us. "It said Device Not Found when I booted it before, I swear!"
Jaeger then explained that he had already recompiled the kernel before the journey to Inflow. Apparently, a kernel parameter for software raid had been missing from the .config file.
With Hydrogen booted successfully, scott declared it the shortest fix at Inflow ever. We hung out for a while, looked at hardware, and discussed not-so-confidential matters regarding hosting, colocation, and whatnot.
After leaving inflow, Jaeger proposed going somewhere to eat. Scott declined, since he had other matters to attend to. I agreed to meet Jaeger at a nearby Noodles, and we munched and talked about random stuff. Jaeger just got the DSL line in his apartment up, which is most excellent.
...
Apparently, thanks to the infamous scottgalvin.com, word about the Traqer program I've been working on is starting to get around. Since the only tangible thing to come out of it that anybody other than myself has seen so far have been a couple of prototype html forms, I'm tempted to use the word "vaporware", even though I have a pretty solid idea what the functionality will be.
So far, over the past several days, my time spent related to the project has consisted of roughly 5 parts reading O'Reilly texts (both online and deadtree) to every 1 part coding. The reason for this is that I want to get this right, rather than haphazardly throwing a few scriptlets and SQL queries together. While the latter would do the job, strictly speaking, I want to not only make something extensible and elegant. I want to make a piece of software I can be proud of. To do this, I need to have a good working knowledge of the full range of available tools and techniques.
Last night, after about an hour of struggling with mysterious exceptions, I finally convinced Tomcat to use the postgres tables I created for automated form-based authentication with my web application. I could not understand for the life of me why it kept throwing a bunch of null pointer exceptions on startup whenever the tag for configuring a custom DJBC source for authentication was in the config file. After many iterations of using the scientific method to try to figure out what was wrong, I carefully went over every character of the line in question. The problem? One miscapitalized letter in an xml attribute. Doh.
Thanks for putting nice informative error messages in the logs, tomcat. Not.
With that out of the way, I was quite happy to find that it happily displayed my custom login form, used my postgres user and role tables, and set appropriate session cookies when I gave it a good login. All this without me having to write a single line of "real" code to make it work.
The jury is still out on whether this is really a more efficient use of programmer time. I suspect than in the time I spent learning how to make the prefab deal work, messing with the config files, and tracking down my bad xml attribute, I probably could have just as easily implemented my own equivilant functionality, especially if I had been using something already familiar like perl or php. (Having done that sort of thing before in a professional capacity, I feel qualified to make the comparison.)
Still, it's fun to learn different ways of doing things. I can also see potential advantages in having a standardized way of doing it.
Got a pre-existing java web application that needs to limit access using a role-based model? No problem. Just slap a few tags into the application's deployment descriptor (web.xml) to tell it who can access what, make a pretty little html login form, set the server's configuration to access your datasource, and viola! Instant role-based authorization, without having to modify a single line of jsp or java code. Spiffy.
Though I began this excursion with the idea that I would learn to write servlets (which I have, though I have scant little real experience), at this point, I'm thinking that I probably won't actually be writing any real servlet code, per se, for this project.
A better approach: JSP with a healthy dose of JSTL for the web interface. (NO Java code in the JSP files.) I'll forego using the JSTL tags to make direct contact with the SQL datasource in the JSP body (those examples are spooky) in favor of using my own beans for all JDBC interaction.
We like our acronyms.
The jury is still out on whether I attempt to make any custom jsp tags of my own for this. Probably not. I don't think I'll need them. JSTL + the beans should be enough. Besides, who wants to add unnecessary levels of complexity? (So says the idiot who picks Java instead of perl or php for such a project.)
Yes, Bitscape has gone off the deep end.
Somebody stop me from adding the next logical step to my virtual bookshelf. Safari is definitely an addiction.
...
Tonight, I played Kohan with Yanthor and Humblik. We played 2 games in which the 3 of us took on an AI team of 5.
In the first game, oddly enough, all three of us chose Council, and were solidly beaten by the AIs.
Second game. Same map. Same AIs. This time, Yanthor suggested we each take a different faction. I reverted to my old standby of Royalist, Humblik was Nationalist, and Yanthor was Council again. This time, we whooped them good. A very satisfying victory. But it honestly didn't even feel like the same conditions at all.
Maybe the diverse factions did the trick. Maybe it was the board placement (not too terribly different strategically). Or maybe we just needed to warm up first.
...
My dad has been "hiring" me to help him with his computer, which he uses in his business. Though I don't mind helping him gratis, especially while he's letting me shack up in his apartment and leech bandwidth, he says that my assistance helps him become more efficient in his business, translating to more sales opportunities, which (hopefully) lets him make more money. Therefore, he thinks he should pay me something, even if it's just a little bit for helping him five minutes now and then when he gets stuck. (He is the epitome of the stereotypical clueless Windows user.)
I suspect this might be a symptom of guilt due to getting me involved in the newspaper fiasco. I told him that I was happy to hang out here, and I didn't expect to be paid for answering a few questions and diagnosing some simple problems. But when he wrote me a check, I didn't refuse the money either.
He says that if things pick up, he'll be able to hire me to help him with other tasks, such as cut-n-paste data entry for an hour or two per day. (Which he would be 10 times slower at than I.)
Though I don't mind helping him, I find myself quite reticent about such ideas. Why? Well... for one thing, I find his business ventures... How can this be put politely? Questionable. And I'm not the only one.
(At this point, I find myself uncomfortably close to the territory of airing family dirty laundry, which is neither the intent of tonight's narrative, nor the purpose of this web page in general.)
Hmmmmm.... now that I've broached the subject, how can I say what I need to say and be done with it in as expedient a manner as possible?
How about this: I don't want to be a party to another delusion-fueled disaster, especially if it means accepting money from a family member to do work on a project that I suspect has a slim chance of long term financial viability. I have a hunch that my "help" might only increase the scope of a failure, should one occur. (Which seems quite likely, given my dad's track record.)
That's one way to put it delicately.
I dunno. My dad has been so jazzed about his latest business, I don't want to dampen his excitement about it. In fairness, it does look like this one does have a better chance than many of his previous ventures. After all, he did make enough money off one sale last month to take a month off at his other job, and focus 100% on this for a while.
I guess I just feel more comfortable taking money from other people to participate in risky ventures when they're not my own family. It's easier to say, "I have little or no confidence that this is actually going to work out and make you a profit, but I'll happily take your money if you want to pay me to do some grunt work before the whole thing goes up in flames."
Anyway... That's the scoop on that.
...
Tomorrow, I'm scheduled to meetup with $mentor[0] again. It might do me good to get away from the insanity documented in all of the above topics for a while. But it also means my body clock is going to get a harsh reset when I force myself to wake up at (gasp) 9am tomorrow morning.
To that end, I shall now bid the world goodnight.
out.println("Goodnight world.");