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

The last few weeks I've been looking at ways of estimating software development projects using "Use Cases". I'm all over Use Cases -- I think they represent a good way to document the flow of an app, but a significant problem with them is that your use case is not the same as my use case, even for the same subset of an application. This leads into many problems estimating how much it's going to cost to develop a software app.

I recently ran into a problem where I had about 50 individual HTML documents, with each document was about 2 pages long,  that I wanted to merge into one big HTML document. After merging all of these into one big document, I wanted them to print with their pages numbered 1-100. 

Some times things that seem pretty bad at the time can work out very well. About a month ago I checked into the hospital, with my heart rate bouncing around 120-150 beats per minute, and pounding so hard it felt like my blood must have been as thick as cold car oil on a winter day. I was diagnosed with an irregular heart beat and something called SVT.

Taking a little break from the normal programming discourse, here's some good pitching (baseball) info from Mike Marshall, a heckuva relief pitcher from 1967-'81. (Interesting side note: I almost pursued a career in anatomy and physiology back in the college days based on this guy, and did take an anatomy course in high school.)

The online book and q&a stuff is pretty good. Ahh, if I were young again, or I had a kid interested in pitching, I'd cough up the $100 for the video.

 

A recent anti-SPAM and MockObjects project leads me to Paul Graham's site. He has a nice list of filtering software available to the world. And his info on Filters v. Blacklists is right up my current alley.

One thing leads to another, leads to ... a few "best practices" web sites. Both christine.com and the Software Program Managers Network offer a little insight into the goo that makes managers -- and developers -- happy. Christine is looking a little dated, but there may be something useful in there.

The folks at mockobjects.com have done a good job of creating MockObjects for the Java API. I'm not sure how to use some of their objects yet, but once I learn a few of the basic patterns I'll put a tutorial out here.

They also have links to several MockObject code-generation tools, which may be helpful. These include EasyMock, MockCreator, and MockMaker. Which one is the best or most popular? Dunno yet. That's often an interesting part of the open source world.

 

My favorite quote from a book these days is this: "You can make buffalo go anywhere, just so long as they want to go there." That one is followed by "You can keep buffalo out of anywhere, just so long as they don't want to go there."

For those heavy process days check out the Software Engineering Body of Knowledge, and learn all about the Straw Man, Stone Man, and Iron Man. For use case templates, Cockburn's usecases.org site is the place to be.

A couple of SourceForge projects to remember: PMD is a Java source code analyzer, and JTidy is a Java port of HTML Tidy, an HTML syntax checker and pretty printer. I don't know how good either of these projects are yet, I just wanted to make a note of them.

Steve Jobs keynote address from the Apple Expo 2002 in Paris is online here.

Things not to forget: use the lsof command to list open files on a Linux system; use tcptunnel (or something like that) from the Apache XML project to check out the traffic to and from a web server (good for teaching http).

Learned today that you can launch Internet Explorer in kiosk mode with a -k option. I don't know yet what the limitations are, but maybe another thing not to forget. Of course most future kiosks will be created with Linux and Mozilla, but in case it's ever necessary...

FWIW, Wired magazine had a few nice things to say about OpenOffice this month, an open alternative to MS-Office, especially for those people that don't like to give their $$ to Microsoft for office apps they don't use very often.

Hmmm, July 4, and I'm fooling around on a computer. It seems that I'm often happiest when I'm working on something, at least something fun. Today's travels bring me to the Jiki, or JikiJikiJava, a Java replacement for the Wiki. Actually, it may go further than the Wiki, in that it is a "full-blown distributed component-based server".

I'm not recommending this product yet, because I haven't done anything but look at the web page, but I don't want to lose the URL. So here is the link to JiveLint, a free product that promises to "find unused code and variables" in Java programs, and much more (potential bugs, weak points, code conventions). Some dev teams are great and have no dead code in their projects. Others, well ... a tool like this might be very helpful. :) Borland's OptimizeIt is the only other product I've seen for far to make this claim.

In honor of unofficial socket day, here's a Sun tut on reading and writing from/to a socket. Of course if you don't know what a socket is, you may want to start with what is a socket? instead.

Nothing like a long motorcycle ride (during which I experienced the first suv !#@%$# trying to ride in my lane; I now know where the horn is on the bike), followed by finding the ten gates, which in turn helped me find the primary point online.

Here's a story: Sun and Microsoft agree to work together. While I'm in the news neighborhood, it looks like MS has a few more security issues.

Yesterday I needed to find all the files in two subdirectories (/tmp and /home) on a Linux platform ending with the characters ".java", that contained the string "commit". Here's the little ditty that made that happen:

find /tmp /home -type f -name "*.java" -exec grep 'commit' {} \; -print

For finding files and directories on Unix systems (or Cygwin) the find command rules.