Alvin Alexander | Java, Scala, Unix, Perl, Mac OS X

After days of deep requirements documents and use cases, here's a LaTeX FAQ that was most useful: The UK List of TeX FAQs. (Cheers)

Here is a brief list of UML-related products for the Java environment. Some may work with IntelliJ or JBuilder ... I'm about to find out. My *real* interest here, however, is in reverse-engineering source code into sequence diagrams.

I got back to working on my anti-spam program again two nights ago. I included a lesson learned on the growth of a software application here.

It's interesting how, when a software program grows, it may not evolve exactly as it should.

I was working on my anti-spam program two nights ago, and I noticed it had this growth problem. When I first starting creating the program it was supposed to mark email messages w/ varying levels of suspicion, kind of a Bayesian algorithm. But, in practice, I found that this wan't really necessary; a message was either spam, or it wasn't.

However, as my program grew I ended up leaving code in it like this:

Linux sed FAQ: How can I use the sed command to modify many files at one time?

Here's a Linux/Unix sed command file that I just used to modify a bunch of files:


I put those three lines in a text file named sed.cmds.

After that, I call that sed script from a simple shell script. Here are the contents of the shell script:

One of my co-workers told me about a cool Alphaworks project that can analyze the structure of a Java project, and report interesting structural metrics/stats. I just found the project; it's named "Structural Analysis for Java".

I don't know of any direct commands to do this, but this cat command works:

cat /etc/redhat-release

You can also take a look at the uname command, which can provide a lot of Linux version information.

I've created a list of some common vim commands that I need to remember. The most important of these vim commands are related to vim syntax highlighting, auto-indent, and showing line numbers.

Here's a short list of these vi commands, all of which can be issued while you are in vi "command mode":

Here's a link to some JavaScript code I found that let's a user double-click anywhere on a web page to get back to the top of the page. This way, if you're half-way down a very long page, you can just double-click anywhere and move back to the top. This seemed like an interesting idea, and I did not want to lose it. Many thanks to the folks at for this idea.

Here's some JavaScript code I found today while poking around the net. Embed this JavaScript code in a web page, and a user can simply double-click anywhere on the page to automatically move back to the beginning of the page. Pretty cool idea. Here's the code:

There are dates/times like last night, and again this morning, that my unified theory of software development seems to be coming together. My latest concepts, documented here just so I won't forget them :), involve:

Here are a couple of links as I found yesteday as I continue my personal "software quality" quest:

Here's a link to a good Unofficial Java Web Start FAQ I found while in the need this morning. The If I were King page is also good.

Here's the source code for a Java memory eating program I've written. Its purpose is to consume all of the memory (RAM) on a PC. It tries to allocate 1 MB byte arrays until it runs out of RAM.

It's a Struts world after all. Two useful Struts links from this morning:

Java spell checking FAQ: Can you share a Java spell checking example?

Java spell checking FAQ: Can you share some source code for a Java spell checking example?

Here is the source code for my first test program with Jazzy, a Java spell checking tool. This is taken straight from one of the example programs distributed with Jazzy.

Java spell checking with Jazzy

Here's the source code for this first Jazzy Java spell checking example:

I just started using an open source spell checking tool for Java. Its name is Jazzy, and the authors have created a site for this tool on sourceforge. It is only on version 0.5, so I'm a little concerned about recommending it at this time, but I've created two test programs, and they both seem to work okay. I'll release those test programs shortly, because as you might have guessed by now, I'm a big believer in learning how to use tools, or how to get started with them, by working with examples. Another cool thing for LaTeX weirdos like me ...

For strange humor and maybe true confessions -- and nothing to do with programming -- has become a favorite site lately. Almost makes me want to write something of my own, like "I hate to admit it, but I am an SCO Advanced Certified Engineer (ACE) and Authorized Instructor." If nothing else, at least that was in the days when SCO was just a slow-moving technical company, and not just a group of lawyers trying to make money.

Nothing major here, but there's an interesting story in the MIT Tech Review this month about three jobs they must do at the same time, but most developers are only qualified for one of the three. According to the article, the three jobs they must perform are: