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

I just updated my "Software career best practices 101" post from a few years back. It was a little dated, and hopefully now it's a little refreshed.

I just updated an old Postgresql blog entry about how to make a backup of a Postgresql database. The syntax changed quite a bit since that post in 2004.

I thought I'd take a few minutes to look at the philosophical design differences between the Mac OS X user interface and the Microsoft Windows user interface. This topic is probably worthy of a Master's degree thesis, but I'm going to rattle off the big differences I see in about 30 minutes worth of typing.

Ever have one of those days when you wish you hadn't said something publicly? Kevin Miller must certainly be feeling that way these days:

After working with and other tag-based systems, and thinking about adding tag support and other features to this blog, I started wondering if anyone had applied the "tag" concept to any other systems that are typically directory-based (as seems like a very good replacement for a traditional hierarchical organization (directory) of bookmarks).

Mac HTML editor review: I didn't go exactly where I wanted with that last post about Mac WYSIWYG HTML editors, so let me try again. This time I'll go the product review route I initially planned to go in that last post.

Mac HTML editors

First, as I related in that post I'm not happy with any of the Mac HTML editors I've found. Second, the point I didn't make, is that these are the Mac HTML editors I've looked at so far:

My search for a Mac WYSIWYG HTML editor continues ... I just finished trying Coda, but I don't like it much more than I like using a text editor like TextMate.

I understand the need for these HTML/text-editing tools when you get down to the nitty-gritty details of HTML editing and you want to work only with the HTML source code, and Coda or TextMate on the Mac are good for that.

Linux find/grep FAQ: How can I combine the Linux find and grep commands to search a large collection of files?

A lot of times when I need to find a file I know the text in the file that I'm looking for, but I can't remember the filename, or can't think of what directory it might be in, other than somewhere below my home directory. When this happens, and other search means like the "locate" command don't help, my favorite way of searching for text strings in files that are spread through a bunch of directories and sub-directories is this:

I thought I'd share the source code for my Java email address validator class. I'm not sure if there's a big need for it ... I wrote it a long time ago, and I think I created it because Java's javax.mail.internet.InternetAddress class wasn't validating email addresses as deeply as I wanted it to. For instance, I think it would allow the string "fred" to be a valid email address, but on the internet you really want to see something like "". So I think that's where this class comes from.

Here's the source code for a simple "Java send mail" class that can simplify the process of sending email messages from Java applications. I've named this class MailAgent, and I'm sharing the source code here for free. I've included a brief usage statement in the Javadoc at the top of the class. Hopefully it's all pretty straightforward, and a decent example of using the JavaMail API to send an email message.

It’s raining in downtown Alaska today, so I went ahead and created a vi editor “cheat sheet” for vi and vim users. I tried to focus on the basic vi/vim commands I use most often.

Here’s a direct link to my vi/vim editor cheat sheet (in PDF format).


I created a "cheat sheet" of commands (including examples) for Unix, Linux, and Mac OS X users. You can download the PDF for free from my Unix education page.

Here's a Java performance tuning pattern I've used with great success before:

Last night I started reading a book called The Little Schemer. I don't plan on doing anything with LISP, but I thought it might be a good book to put another wrinkle in the brain. That, and I enjoy their question-and-answer style, which I first saw in a book titled A Little Java, A Few Patterns.

I've had some Function Point Analysis documents available here before, and recently finished converting those presentations into a better form for the internet. To that end I've gathered all these in a new Function Point Analysis Education Center, which contains those free documents and presentations.

These educational documents cover FPA, cost estimating, and even cost estimating for Agile software development projects.

IDC released PC sales information for the 2nd quarter of 2007, and shows Apple with a 5.6% share of all new personal computers shipped in the U.S. This puts them in fourth place in U.S. sales, in a virtual tie with Gateway, and in front of Toshiba and Acer. Dell and HP are in first and second, respectively. HP, Apple, Acer and Toshiba are up, Dell and Gateway are down. Apple may gain more ground and pass Gateway, but lose position to the hard-charging Toshiba and Acer.

I use JSPs and servlets to generate a lot of the pages around here, and today I looked at how many blank spaces and blank lines are generated by the JSP's. I don't think I can do much about the blank lines (actually, I just haven't looked into it yet), but about those blanks spaces ...

Out of curiosity I decided to look at this -- how many blank spaces are there at the beginning of lines that I could delete just through formatting? Would deleting those characters help reduce my bandwidth costs (at the expense of slightly uglier JSP's)?

Another cool feature of the vi and vim editors is that you can easily re-use some search and replace commands across files. For example, I was just editing several HTML files and needed to do the exact same thing to each file: find a certain line, and then delete that line and the line right after it. Fortunately this is very easy to do in vi.

To edit multiple files in vi I first issue this command from the Linux command prompt:

One of the nice things about the vim editor is the ability to easily fire off one command that changes patterns throughout your entire file. For instance, as I was working on editing my Function Point Analysis tutorial the following HTML string pattern kept re-appearing throughout the entire document, and needed to be replaced:

I'm taking the day off and driving up to Denali (yep, I'm in Alaska), but I wrote a quick blog showing an example of the Unix/POSIX sort command after discovering the syntax was different than what I expected it to be. (For other Alaskan adventures you can also visit me here.)