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

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:

My definition of "CFO Disease"

Every CFO that can create a spreadsheet thinks they are a programmer.

As you might guess, this had to do with a long conversation with a CFO today about how to do my job, and how programming seems so easy.


Java URL download FAQ: Can you share some source code for a Java URL example, specifically a Java class to download and parse the contents of a URL?

This example is a little weak, but it's a program that downloads and parses the contents of a given URL. The purpose has nothing to do with URLs ... it has a lot more to do with the parsing that I am trying to achieve. The parsing code is actually going to be used in an anti-spam program that I am working on.

A couple of web sites related to requirements gathering:

Check these links out if you're at all interested in the art and science of requirements gathering.