Stupid Windows trick of the day: For a few months now I've been working on the same project, so I created a Windows Explorer icon that I wanted to start in the same directory every time I opened the Explorer. After a little testing and rooting around on the web here is the Properties -> Shortcut -> Target command I use to start the explorer, getting it to start in the desired sub-directory, showing the Folders Panel on the left side:

I'm a ruby newbie (and not yet a fan), so forgive the obviousness of the links below. Once I get my bookmarks app over here I'll probably quit putting links in here like this:

Too busy with work, I missed the news that Borland purchased TogetherSoft, and that TogetherSoft had earlier purchased WebGain. Doing a little simple math, this seems to mean that Borland now owns the rights to their own product, JBuilder, as well as their former competitor, VisualCafe. While this means little to the rest of the world, I find it amusing, in that I officially started my Java career writing for two Ziff-Davis publications, Inside JBuilder and Inside VisualCafe.

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.