Hello non-existent fans!

This site has been essentially defunct for quite awhile now.  As you can see, the last post is almost three years old.  I’ve finally decided to start blogging again, now that after two and half years my life actually has some kind of stability.

Lots of big changes:

  • Done with school
  • Living in San Antonio again
  • Working at Rackspace, which is awesome
  • Living in a nice 1500-ish sq. ft. apartment
  • Actually making a reasonable sum of money

I pulled all my old posts off of The Wayback Machine, sadly sans comments.  Hopefully I can write something here now that will actually be useful or interesting to someone.  If not, oh well.

I’ll also be pulling my posts from my war blog, The Collegiate Warrior, off of the old Xanga site an on to collegiatewarrior.com, so stay tuned for that, and you can read about my experiences as an Infantryman during the war in Iraq.


Bitten by the Apple TV bug, I’ve decided to put a PC in the living room for use as a video player. I already have a DVR box, so I don’t really need another one, but it will be nice to get all my video content in one place. Eventually, I would like to rip all my DVDs to VIDEO_TS folders to that I never have to mess with physical media again.

As the proud owner of a 4:3 standard-definition TV, I don’t really need anything fancy. What I’d really like to get is a Mac Mini and a few of those stackable external hard drives designed to fit so nicely with it. Unfortunately, I don’t really have the budget for that, being a young, married student. I have an old PowerMac G4 350 MHz machine sitting here that I could slap OS X on (currently running 9.2.2), but somehow I just don’t think 350 MHz is going to cut it for some of the nicer modern video codecs.

So, in the end, I’ve decided to use my old desktop machine for the build. It was state of the art way-back-when, and it will be perfect for this monolithic little task. The specs currently:

  • Athlon Thunderbird 1.4GHz processor (the hottest little proc ever produced, I swear)
  • GeForce2 Ultra 64MB video card with DVI, VGA, and S-Video out for the TV connection
  • DVD-ROM drive
  • 16x CD-RW drive
  • Soundblaster Live! sound card
  • This strange old Winnov video capture card that I found somewhere, manfactured circa 1997, just in case I want to import video from other sources or actually do some DVRing
  • 2 PATA hard disks currently, a 30GB and a 20GB (hopefully I can scrounge some up from work/friends and stick a couple of nice, larger-capacity drives in there, but it’s a start)
  • Ethernet card or mobo integrated, can’t remember which

Now, it’s possible that I may need a few more things. I’m not sure if this machine has USB 2.0, and if not, I’ll most likely want to add it. Then I can slap my 250 GB external hard drive on it, which has mostly video content on it anyway, and use my old 60 GB external as my desk-bound data drive. If I have any problems with DVD performance (which I don’t think I will, either due to possible hardware decoding on the GeForce or because the proc is fast enough), I have an old DVD-decoder card somewhere. It came out of a PII-400, which obviously needed it. I don’t think I will here.

I haven’t built a PC for myself since my freshman, or possibly sophomore, year of college, when I built one mostly on my dad’s dime for my mother. That system, a casualty of a lightning strike, has since been replaced with a Mac Mini (That’s right folks, God wants people to be Switchers!). I’m strangely excited about it, even though the “building” is just a few parts swaps. I build and rebuild systems at work all the time, but somehow doing it for myself is different. Ever since I switched to the Mac in the fall of 2003, I haven’t really had the same constant hardware desires that once filled me with a lust for more megahertz and megabytes.

More to follow on the building experience, scheduled for this weekend.


TextMate’s parsing for symbols and code folding is broken. It fails with many slightly-nonstandard brace arrangements, and even fails if there is a tab depth difference between closing and opening tags in XML. In addition, it’s symbol list only works correctly about half the time, although I haven’t spent the time yet to figure out under what cases it is [un]successful.

So far in my BBEdit/TextMate showdown, BBEdit is staying slightly ahead, with its fully-working symbol detection, perfect folding, and generally more powerful menus. While most of the functionality in BBEdit is duplicated in various TextMate bundles, all that functionality is then in one huge menu; not exactly the best interface for an efficient workflow.

Still, TextMate has a superior plugin (bundle) architecture and much more extensive code completion. If they can work out some of these issues, TextMate will pull ahead as my editor of choice. As it stands, I use TextMate for most of my general editing, and BBEdit for serious programming.


Well, it’s been a couple of busy weeks, and I am way behind on my blogging. Bad, bad Derek. I’ll be posting on a variety of topics today, and hopefully kickstarting my writing neurons once again.


I’ve been writing XML, XSLT, and PHP all night. It’s sleep time, folks.


Class: 13 hr/wk

Work: 19 hr/wk

Math Homework: 4 hr/wk

Coding Homework: 14 hr/wk minimum

Reading for Class: 6 hr/wk

Transit times: 7 hr/wk minimum

National Guard duty: 20 hrs

Total work and trans hours per drill week: ~77 minimum

Hopefully, I can fit a meet up with Josh, a meet up with my brother, and some time with my wife in there. Oh, and sleep, if I get the chance.


This Java-related blog has been dead for a couple of years, but still definitely worth a read. Check it out!


Java is not my favorite language. Despite a fairly robust class library, and some nice constructs, it has some serious problems. This first post will be about specific language “features” (or lack thereof). The next in the series will be a bit more general.

Update: my buddy JK, who commissioned this little screed, pointed me toward this guy, who says pretty much everything I do here, and more. I swear, I hadn’t even read this before when I wrote this list. I guess it just goes to show how glaring some of these langage oversights are, huh?

  • First one good thing: no free(). QED. Now on to the bad things.
  • No Macro system – I realize that the C Preprocessor is in many cases the Root of All Evil, but still, it has a lot of great uses, especially for things like easy conditional compilation.
  • No inline functions (admittedly not a serious issue for modern compilers). I mean, seriously, why is this not here?
  • Schizophrenic basic types: int and Integerbyte and Byte, etc. I know that Java sacrificed much of its usefulness on the altar of the Gods of OOP, but it just needs to pick one or the other; primitives or objects. I’m not going to say which it should be, but it should be one or the other.
  • The preceeding point also leads to some issues because primitive != Object. If a function expects an Object, and I try to send it a byte, the compiler with give me an error in 1.4. In 1.5, it will automatically box the byte in a new Byte object, which quite possibly violates my reason for using bytes in the first place (memory overhead, perhaps?).
  • byte is unsigned. Since when does anyone working with a type called ‘byte’ want it to be unsigned? Of course, this means that if you want to loop through the values of byte as say, array indicies, you have to normalize them first.
  • The inability to use non-Unicode Strings. Sometimes you know there will be no non-ASCII characters, and you’d really like to save a little memory. At least, I know I would.
  • No printf(). Most languages have realized the incredible utility of this particular functional construct, and include it in a similar if not identical form. I’m not asking for total duplication of the feature set, but things like field width and format specifiers just rock out, you know? (Update: I see now that 5.0 added PrintWriter.printf())
  • No typedef. This is an extremely handy keyword. If I want say, longs, to represent something in particular in a Java class, I can’t really assert anything about them except for their long-hood.
  • Interfaces are a kludge created by someone who has it in for multiple-inheritance.
  • static methods are not class methods, even though Sun likes to pretend they are. No, they are global friggin functions. How do I know? Try overriding one in a subclass. Just try it.
  • Since new is the only way to allocate a new object, there are lots of tricks and optimizations that can’t be performed. I can see how a single allocation method might help the Write-Once, Run-Anywhere potential of Java, but frankly, that sucks as it is (see my upcoming Part 2 post).
  • The new generics in JDK 1.5 don’t allow you to use primitives as E types. WTF?
  • No function pointers/function references. And no, functor Objects are not a good way to accomplish this.

Added to phrases that I hate: “syntactic sugar”.


I purchased TextMate this evening, which means that I now use $170 worth of text editors on my Mac. I plan to use this as my new blog editing environment. Anyone who writes professionally, whether code or prose, can appreciate the importance of a good text environment.