The June 2003 Blog
send me a comment

See You In A Week (Saturday, Jun 28)
[ permalink ] [ e-mail me ] [ >> ]

I won't be blogging next week. I know that some people have tried to claim that it's bad etiquette to announce when you won't be blogging for a while, but I think that's just one person's opinion, and I happen to disagree. I happen to believe that it's polite to tell my readers when I won't be around for more than a few days.

Anyway, see you in a week or so. Check out some of the sites on my links page if you get lonely.

O'Reilly is Cool (Duh); the New RSS; Creating PDF and XLS Files with Java (Friday, Jun 27)
[ permalink ] [ e-mail me ] [ >> ]

Based on Duffbert's recent recommendation of Head First Java, I decided to check out the O'Reilly site for more information about the book.

Man, what a great site. I can't say exactly why, but I really like the O'Reilly site(s). There's something about it/them that really appeals to me on some level.

First, I found a great interview with the Head First Java authors. They have some really interesting theories about learning, and as someone who's sat through several truly boring tech education classes and presentations, I think they're spot on (as you Brits would say). If you do any kind of teaching or presentations or seminars, you should really read that interview.

Then, I figured I should take a look at the book. Sample chapters? Of course they have sample chapters. In fact, they've got samples for lots of current and future books, and a whole library of entire books you can subscribe to (not to mention the Open Books Project).

After that, I decided to just poke around the various O'Reilly sites. A sampling of what I found:

So, for all you old O'Reilly fans out there, forgive me for being a Johnny-come-lately, but I just wanted to share with all the other people who (like me) haven't had a chance to really take a look at this little corner of the Internet before.

Programming and Painting (Wednesday, Jun 25)
[ permalink ] [ e-mail me ] [ >> ]

No, this isn't yet another reference to the Hackers and Painters essay (which is an excellent read, by the way). This is something I was thinking about as we were painting a bathroom a few weeks ago.

My master bathroom has a lot of nooks and crannies that I never really noticed until I got up on a ladder and had to slap some paint on every piece of wall I could find. There's one particular little crevice that was especially hard to get to: a place where the plant shelf above the closets meets with the ceiling at about a 30 degree angle.

Now, we spent a considerable amount of pre-painting time taping the ceiling and mirrors and counters and doors, but even though that little corner was taped up as tight as we could tape it, it was still really hard to jam a paint brush in there to get a uniform coat of paint on the wall without accidentally smearing the new butterscotch-colored paint somewhere on the white ceiling.

So my dilemma was this: do I spend an inordinant amount of time trying to paint that area really carefully with my fat paintbrush, or do I run to Home Depot and buy a much smaller paintbrush specifically for that job, or do I just do an adequate but not perfect job of painting the corner, knowing that it's 9 feet off the ground and completely invisible to anyone who's not standing on a ladder and looking specifically at that spot with a flashlight? To put it a different way, the only person who would ever notice that the corner hadn't been properly painted is a 9 foot man who happens to be in my bathroom, staring at that corner. How much time and effort do I really want to spend on the problem? After all, we only had time to paint while the kids were asleep, so we really needed to finish painting as quickly as possible.

For some strange reason, that got me thinking about programming (I don't know why, I'm just a strange guy that way). We often have tedious little tasks that really should get done in our code -- inline documentation, proper error-handling, removing hard-coded references, bits and pieces of clean-up -- and at some point after the code is actually functional, we have to decide how much of the small stuff we want to spend time doing before we can say that we're "done for now". This ends up being a more complicated decision if we're working on an hourly basis (the kids are asleep) or we're not using the right tools in the first place (wrong sized brush) or no one else will really ever look at the code anyway (hidden in a corner). It's especially difficult when you start talking about more subtle coding issues like elegance and formatting and whether certain variables should be global or local. How much time should you spend?

I guess the question I've been asking myself as I've been coding since then is: who's my audience? Am I writing my code to make it functional and ship it out the door, or am I writing it for the benefit of the 9 foot man who's looking at every crack and crevice? Obviously, the answer somewhat depends on the project I'm working on, how big it is, what the timeline is, how long the code will be active, etc. But it's something to consider. Normally I would always want to design for the 9 foot man, so that the few developers who might look at the code later on would appreciate the design, but I just don't always have that luxury, and sometimes the projects are so small and so simple that it's silly to spend much time on them.

Then of course there's the question of your personal commitment to the code. Even if no one else in the world will ever look at it, maybe you just can't sleep at night if your comments aren't complete or your functions aren't generic enough. Maybe you have a boss who looks over your shoulder and demands certain coding standards. Either way, you always have an audience: your customer, your boss, yourself, some imaginary uber-coder who might someday look at and criticize your code...

So, who are you designing for? How much time do you spend touching up your code to make it look good? (These are hypothetical questions, but you can feel free to comment anyway if you'd like to.)

Yeah, I Guess That Will Take A Few Minutes... (Tuesday, Jun 24)
[ permalink ] [ e-mail me ] [ >> ]

Here's a dialog I got as I was installing Crystal Enterprise on a server at work last week:

Let's see, 72,505 minutes is about 7 weeks. I'd better grab a cup of coffee...

(Update: turns out that Tony Kelleran had this same experience a few months ago. His installation was much faster though, at a blazing 141 minutes.)

Almost Famous (Monday, Jun 23)
[ permalink ] [ e-mail me ] [ >> ]

Via Mike Golding, my site has appeared in the feature article in the latest issue of .net magazine! Even though the magazine seems to be focused on the Internet in general and not that .NET technology we all keep hearing about, the irony is still not lost on me. Sad that they point to one of the ugliest pages on my site, but any publicity is good publicity I suppose.

It's not actually all that surprising that one of my FTP pages ended up drawing someone to my site though. I've been the #1 Google search result for "FTP command list" and similar searches for some time now, and after my RSS feed, my home page, and my Current Blog page, my two FTP command list pages have been at the top of my web stats hit list for months now. My page on transferring cassette tapes to CD has been getting a fair amount of traffic too.

Of course, that's the magic of Google. Finding relevant information that might be buried deep within a site. Pretty cool, if you ask me.

Denormalizing WSDL (Thursday, Jun 19)
[ permalink ] [ e-mail me ] [ >> ]

Here's a little rant I went on a couple of days ago. It started off as a blog entry, but then it got too long, so I decided to put it on a page by itself. It's just me asking the question: can we please de-normalize WSDL?

If you're not into web services or SOAP or WSDL, you probably won't care. But that's fine. Tune in next time for something completely different.

Learning How to Call the Notes API from LotusScript (Monday, Jun 16)
[ permalink ] [ e-mail me ] [ >> ]

Occasionally I get asked about where to find instructions and examples of how to call the Notes API from LotusScript. Here's my standard response:

I'm not sure why I felt compelled to share that with you... I think it was because I was looking through some of my notes today, and I ran across a few links that are neat examples of calling the API from LotusScript -- like how to create a replica stub and how to get information about a scheduled agent. If you know what you're looking for, there are a ton of good examples in those good old LDD forums.

The Unfinished LotusScript Book (Sunday, Jun 8)
[ permalink ] [ e-mail me ] [ >> ]

Okay, I probably won't have too much time to devote to the ol' site in the next 2 weeks (combination of work and family time commitments). I just wanted to let you know, in case I go for a week or so without posting to the blog. I know that you all worry about me so much...

I was able to take some time this weekend and finally put together and post The Unfinished LotusScript Book, written by your truly. It's just what it sounds like: a rough and unfinished collection of information about LotusScript (including lots of fun little functions), put together in Adobe Acrobat/PDF book form. Please download the PDF and read the Introduction section for more details.

Hope you like it.