Dear Santa...

You know, for years now, I've had just a terrible time making out Christmas lists. The fact is, I'm fortunate enough to be in a position where if I really want something, I'm usually able to just go out and get it. If it's more expensive than what a single trip to the store armed with a credit card can obtain, then it's probably something I don't really need. (High-end gaming desktop machines do not fall into that category, no matter what my family might suggest.) So, it's rather difficult to come up with a list of things for friends and family to buy for me, particularly since impulse control is...

Brian Grieves...

I grieve with him. I can't imagine how the babysitters feel right now--at age 13 and 11, to have to make the hard choices any babysitter has to make in a the event of a fire, and to have to live with that choice for the rest of your life. To be the parents, to have to live with the "what-might-have-beens" and the "if-onlys". And to have to learn, as Brian talks about, how to go on.

Does this get an "A" on the Turing test, then?

From wikipedia: The Turing test is a proposal for a test of a machine's capability to demonstrate intelligence. Described by Alan Turing in the 1950 paper "Computing machinery and intelligence," it proceeds as follows: a human judge engages in a natural language conversation with one human and one machine, each of which try to appear human; if the judge cannot reliably tell which is which, then the machine is said to pass the test.

Quotes on writing

This is, without a doubt, the most accurate quote ever about the "fun" of writing a book: Writing a book is an adventure. To begin with, it is a toy and an amusement; then it becomes a mistress, and then it becomes a master, and then a tyrant. The last phase is that just as you are about to be reconciled to your servitude, you kill the monster, and fling him out to the public.

A Dozen Levels of Done

Michael Nygard (author of the great book Release It!), writes that "[his] definition of 'done' continues to expand". Currently, his definition reads: A feature is not "done" until all of the following can be said about it: All unit tests are green. The code is as simple as it can be. It communicates clearly. It compiles in the automated build from a clean checkout. It has passed unit, functional, integration, stress, longevity, load, and resilience testing.

NFJS 2007 Demo Code Posted

For those who've seen me give presentations at the No Fluff Just Stuff symposia over the year who've also asked to get the demo code that I write during the presentations, I've put it all up online. Simply find the show you attended below, and the hyperlink downloads the associated .zip file: Boulder JUG Denver JUG Phoenix JUG Atlanta Austin Boston Chicago Columbus Dallas Denver Green Bay London Miami Milwaukee Minneapolis (1st show) Minneapolis (2nd show) Oklahoma City Omaha Orlando Phoenix Portland Princeton, NJ Raleigh, NC Reston, DC Seattle St Louis Toronto Usual disclaimer applies, as with all demo code: I don't guarantee the code for any particular purpose except as a supplement to the lecture that was given at that time in that city, the code isn't guaranteed to do anything except soak up space on your hard drive, I can't be held responsible if you use it in production, and so on.

Anybody know of a good WebDAV client library ...

... for Ruby, or PowerShell/.NET? I'm looking for something to make it easier to use WebDAV from a shell scripting language on Windows; Ruby and PowerShell are the two that come to mind as the easiest to use on Windows. For some reason, Google doesn't yield much by way of results, and I've got to believe there's better WebDAV support out there than what I'm finding. (Yes, I could write one, but why bother, if one is out there that already exists?

Javageeks papers moving here

Some of you knew me way back when I started the domain name "". Obviously, it's been a while since I updated that site, and in fact, if you go try to read some of the papers there, you'll get redirected to "", which has been on hiatus ever since the ISP there decided that my use of JSP was somehow trashing their server. (This is what happens when college students run an ISP in the spare time, I guess.) Anyway, for a variety of reasons, I've since decided that my online presence should coalesce into one place, this domain (, and I've been slowly moving things over to this site in recognition of that fact.

Proving That, Once Again, "Corporate Management" Equals "Idiots"...

Now, I've had my issues with corporate management before (some of you may recall my run-in with Sun lawyers over the domain ""), and I've seen corporations behave badly with cease-and-desist letters (Hey, Microsoft... you and RedHat can come out of the corner now...), but this action on Sun's part to effectively muscle out the four project leads on the open-source OpenDS project definitely deserves some kind of award. (For those of you who want the short version: four Sun employees, including Neil Wilson, the poster, have been working on the OpenDS project for the last n number of years.

When is something not ready for Prime-Time?

When you can’t do something simple with it. Check out this absurdly simple Groovy script: import import import as JMXFactory import as JMXUrl def serverUrl = ‘service:jmx:rmi:///jndi/rmi://’ def serv = JMXFactory.connect(new JMXUrl(serverUrl)) def on = new ObjectName(‘Catalina:type=Server’) def gmb = new GroovyMBean(serv, new ObjectName(‘Catalina:type=Server’)).serverInfo For those of you not up on your JMX, this is a simple connection via an RMI connector to the JMX server running at port 9004 (which happens to be my local Tomcat installation).