The April 2003 Blog
send me a comment

Oh Comments, My Comments (Wednesday, Apr 30)
[ permalink ] [ e-mail me ] [ >> ]

Oh yeah, if you hadn't noticed yet (maybe you're reading this through an RSS 'gator), my blog now has comments. I'm currently testing out the comment system from Enetation, which is a donation-ware type system that Ned Batchelder recently started using. If I use it for more than a week, I'll go ahead and donate to the cause and keep using it for a while.

The Enetation system is nice because it only took about 5 minutes to set up and it has a good look to it (although I find the default font sizes a little small for my taste), but it's not quite everything I want in a comment system. Then again, you can't always get what you want, and if you try sometimes you just might find you get what you need. I have a feeling this system will be close enough for rock 'n roll, and it'll do the job just fine for the time being. And the price is right, and I don't have to fuss over the admin or development of the system.

If I had my druthers, an ideal comment system would have the following:

The Enetation system has the first six features (except for the URL auto-conversion), which makes it a good functional comment system for my use right now. I think that in order to get the last three features though, I'm going to have to do some programming of my own.

You see, in an ideal world I think of blog comments as something almost separate from a blog. The blogs can stimulate the discussion, but ultimately the discussion takes on a life of its own. If this is true, then many bloggers with a common topic could share a single comment system to stimulate discussion among a similar group of users. In addition, one of the problems with comments right now is that as soon as the blogger makes a new post, the comments/discussion for the old posts essentially dies. People can only effectively have a discussion about the current blog entries. If the comments were also available in a forum format, though, you could structure it in such a way that newer discussions always bubbled to the top, regardless of how old the topic was.

Also, as more and more people are using RSS aggregators, blog comments are becoming less and less accessible. I'd like to see entries in the RSS feeds have some integration with the comments for those entries, so someone reading in an aggregator could just click a link to read or participate in the comments.

So, I guess that's one of the reasons why it's taken me this long to implement comments -- I have a slightly higher standard for how they should work. It'll take me a lot of effort to get where I want to be (if I ever even commit to working on it), so I decided that for now I would just settle for good enough. If you can't have perfect, you need to just find something that works.

Useful Registry Entries (Tuesday, Apr 29)
[ permalink ] [ e-mail me ] [ >> ]

Here are a couple useful registry entries I just ran across at this sample chapter on the Microsoft website.

The first is an entry (really a set of entries) that allows you to use Google right from the address bar in Internet Explorer -- you just have to type "google search term" and the Google search comes right up. So I could just type "google Lotus Notes" to do a Google search for "Lotus Notes".

The second is an entry that allows you to use the tab key to auto-complete file names and directory names while you're at a DOS prompt. You can type, say, "cd c:\pro" at a DOS prompt and then the tab key, and it will automatically fill in "cd c:\Program Files" for you. And if there are multiple matches, you can cycle through them by pressing tab over and over.

I made these changes on a Windows 2000 machine and a Windows XP machine, and it works on them both. I'll probably be using those as much as I use the DOS Prompt Here tweak from the old Windows 95 Power Toys utilities. Sometimes it's the little things...

Magnetic Poetry (or, Fun With CSS) (Saturday, Apr 26)
[ permalink ] [ e-mail me ] [ >> ]

While reading about JavaScript menus on Robert Basic's site, I followed the link to BrainJar, and I was really impressed by the articles there. Well documented and creative examples of using JavaScript, CSS, and DHTML.

One of the articles on the site described how to use JavaScript and CSS to drag text boxes around on a web page. That was something I actually started working on myself quite a while ago, but I stopped playing around with it because I couldn't get it to work right after about 2 hours. Well, since the BrainJar code works, I just used it to finish up my little project: Magnetic Poetry on a web page!

Have you ever seen the refrigerator magnets that are just a hodge-podge of words that you rearrange to make creative little sentence fragments? Well, I figured you could do that on a web page too, if you could programmatically adjust the CSS position elements. The BrainJar code lets you do that, so I just added some of my own code that writes a word list to random places on the screen, and away you go. The most fun you can have with CSS with your clothes on!

I've tested it on IE 6, Phoenix 0.5, and Opera 7, and it works for me on all of those (and Ben tells me it works on Safari beta 2 as well). If you have an older browser, your mileage may vary. If you look at the code, you'll notice that it's very easy to change the word list for your own purposes, if you're so inclined.

A Community Blogging Framework (Friday, Apr 25)
[ permalink ] [ e-mail me ] [ >> ]

Okay, I've been doing a lot of thinking about this over the past month or so, and since Robert is talking about it right now, I guess this is as good a time as any to put my thoughts on [electronic] paper. Here's what I see as a framework for a "community blogging" kind of environment:

It seems simple enough as a concept, but I think that's the type of system that can tie together a lot of different blogs and make them into a true community. It needs to be a single site with all of those elements integrated together. Internal to an organization, that sort of framework could capture knowledge and spawn ideas. On the Internet, it could turn a number of individual voices into a true discussion.

(If you want to discuss this, Robert's entry is probably a good place to go right now. He brought it up, and since I still don't have comments enabled on this site...)

I Know You're Lying (Thursday, Apr 24)
[ permalink ] [ e-mail me ] [ >> ]

This was fascinating to me: a website with some information about statement analysis. The analysis of famous cases was especially interesting.

From what I read, statement analysis is just the process of determining whether or not someone is lying. While the author of the web page is discussing it in terms of law enforcement, think of how useful that could be when you're interviewing people for a job...

On an unrelated note, I added a new tip the other day describing how to use ShellExecute to launch a file in Windows and I forgot to tell anyone. It also has an example of how to use the FindExecutable Windows API function if you're just looking to find the program that's registered to open a particular file type. Ben's entry from the other day regarding how to launch PowerPoint made me think to post the information.

Web Services Patent (Tuesday, Apr 22)
[ permalink ] [ e-mail me ] [ >> ]

Charlie Northrup just got what appears to be a patent on web services, and his lawyers are setting up an LLC to transfer the patent to. That can't be good...

More About Working From Home (Monday, Apr 21)
[ permalink ] [ e-mail me ] [ >> ]

Richard Schwartz has some good thoughts on his blog about working from home. His comment about his sleep schedule without his wife and kids was pretty funny to me, because I experience the same thing. If I wasn't married with children right now, I'd have no schedule at all. I'd probably be a mess. I don't think I ever fall asleep earlier than 1:00 AM on the days when my wife and kids are out of town, and I rarely remember to eat dinner.

Anyway, it's good to see Richard back on the blog. We need more of those Penumbra folks out there doing it.

BTW, Richard has a funny entry about a Law and Order episode that features an IP address starting with the number 392...

Working From Home (Sunday, Apr 20)
[ permalink ] [ e-mail me ] [ >> ]

The local newspaper had a short article today about working from home that made some good points. They don't have a link to it on their site yet, but here are some of the tips that I liked:

I worked from home full-time for about a year and a half, and my wife currently does, and I know that it's not all it's cracked up to be. It's great for the first few months, but little by little you really start craving spontaneous human contact. I remember getting cabin fever pretty bad sometimes, and going up to the bookstore during lunch just to be around other people. If someone paged me during the day, I'd usually keep them on the phone for 15 minutes just to talk.

It's tough to stay motivated sometimes too, especially when no one's around to watch. I think the best advice I got about working from home was to make sure you still got up early every day and took a shower, shaved, and got dressed. You need to keep that routine, because if you don't...well, it's really hard to get into the "working frame of mind" when you're dragging around in pajamas and a bathrobe with stubble on your face.

Anyway, I think Ben's got the right idea -- if you have the option, just do it a few days a week, but go into the office too. Then you don't get burned out as much in either place (also, your office can sometimes be as much an escape from your house as your house can be from your office).

Friday Slacker's Club (Thursday, Apr 17)
[ permalink ] [ e-mail me ] [ >> ]

Just a little clarification about yesterday's post (and in case my boss is reading this): I actually do work on Fridays. I didn't mean to imply that it's a good idea to drop everything at the end of the week and play on the computer all day. I just think that the only way most people are going to be exposed to new technology is if they are either (A) forced to, or (B) consciously schedule time to. I prefer to schedule that sort of thing as best I can.

I guess I'm sort of promoting a Friday Slacker's Club, where you block off part of that day to look at new technology, yielding only to tight deadlines and production problems. Think of it like an exercise program: you have to tell yourself that you're going to work out for a certain amount of time on specific days of the week, and you have to plan your day around it. Sure, there are always other things you can be doing -- there are always other things -- but if exercise is important to you then you set those things aside at your scheduled exercise time and you take care of them later.

Also just like exercise, it's tough to stay on schedule at first, because life/work isn't letting up while you're taking the time. But if you stick to it, after a while you realize that a lot of your life and work is just Parkinson's Law in action. All of your projects are expanding to fill their available time, and the more time you give them the more time they'll take. But if you actually shrink the amount of time (to a reasonable extent), magically the projects still get done. It's similar to when you finally manage to take a week of vacation from the job, and you return to find that it only takes you a day to catch up on the week of things that you missed -- boy, you got five days worth of work done in a single day! Have you been slacking the other four days? No, but given a shorter amount of time to deal with the work, you adjust accordingly.

And frankly, if you're spending some Friday time learning about new technology that is related to (and maybe just beyond) your current environment, then you're actually doing work that's relevant to your job. Like my friend Tom just told me, "The key here is to be good at anticipating the problem and solving it before someone else realizes it's there. Then you look like a visionary." So don't feel guilty about learning, because ultimately it can help your boss and your projects as much as it can help you.

If it's Friday when you're reading this, I hope you find some learning time today. If you do, then let me be the first to welcome you to the Club!

Managing Change (Wednesday, Apr 16)
[ permalink ] [ e-mail me ] [ >> ]

I was in a different office the other day, and they had this quote scrolling across an electronic marquee board:

The only way to manage change is to cause it

Initially I disregarded it as some silly "quote-of-the-day" thing that they were running, but somehow that little message kept poking at me from the back of my mind. Cause change? Why would I want to do that? I'm just supposed to change things when it's absolutely necessary, like when a technology stops being supported or when a customer or new application demands it, aren't I?

Hmm, maybe not.

I'm still trying to wrap my mind around that one, because I've been spoiled by Notes/Domino for so long. Features and languages are backwards-supported for years and years and versions and versions. Sure, they keep introducing nice new features, but why would I want to use them? All my old stuff is working just fine, and that's what I know. I figured out the work-arounds years ago. Why change? Why learn and use the new stuff when I'm so comfortable with the old?

Well, that's been a problem of mine for years, and that's something I've really got to work on. I'm pretty old fashioned as far as my computing environments go -- I still prefer command-line tools and text editors in many situations. I like the control and I like the comfort level it gives me. Unfortunately, technology moves so fast these days that you'll find yourself out-of-date in very short order with that kind of attitude. I'm not saying that you have to be an early adopter for every new thing that comes down the pipe, just that you need to try new things to keep from getting old and crusty.

Like I said, Notes/Domino spoils us with its backwards-compatibility sometimes. The stuff we wrote 5 years ago still works on the new ND6 servers (for the most part), so why fix something that ain't broke? Well, what you're missing is things like Java and XML, and at some point a manager is going to come by and look at your application and ask why it's not supporting that sort of thing. Or a Microsoft-head will come to a meeting and challenge you to provide a web service on your Domino server. Sure, you've heard of that sort of thing, and you've read that Domino supports it, but in a pinch could you provide it to a customer or a manager? If you haven't been experimenting with the newer technologies, then the answer is "no", even though you actually can do that with Domino. Don't let your applications get booted or overlooked because of your own lack of knowledge.

So then the question becomes, "How do I find time to learn that sort of thing?" That's a good question, because most of us already have enough work for 40, 50, or 60 hours a week. The answer is that you have to make the time. I usually reserve Fridays for that sort of thing. Not that I don't work on Fridays, but I try to make an effort to look at new things during that day -- play around with Java, try a little SOAP, look at some XML. At worst, you'll have to try to learn some of these things in your spare time, away from the office (gasp!), but it'll help you in the long run. You're in the technology business, and you need to know this stuff. If you're not on top of the job, then the job's on top of you (Richard Nixon actually said that, but consider it as good advice anyway).

Like the quote implies, change is going to happen with or without you. If you're the one who's making the changes, then you'll stay ahead of the game -- or at least you'll be able to keep up.

Great Discussion (Tuesday, Apr 15)
[ permalink ] [ e-mail me ] [ >> ]

Boy, I'm gone for a few days, and I miss all sorts of great discussions about blogging and knowledge management and how it can all tie together:

...and those are just the ones I've read so far. Great stuff! I know it's not a new concept -- Nathan points to a discussion on LDD from a few months ago, and I remember even Ray Ozzie (remember him?) talked about blogging and the work environment way back when, and old-time bloggers have talked about such things for years -- but I just love the discussion.

Blogs are successful because they are easy to use, easy to understand, easy to implement, and customizable to your heart's content. Think of another technology that fits that bill...hmm, HTML? Sometimes the simple ideas are the best ones.

Java RichTextOutputStream Class (Wednesday, Apr 9)
[ permalink ] [ e-mail me ] [ >> ]

I won't be able to post anything for a few days here, so in my absence I'll leave you with this to play with: the Java RichTextOutputStream Class. It allows you to write to a Notes RichTextItem as though it was a standard Java OutputStream.

Not sure why you'd need something like that? Well, sometimes you've got Java methods or classes that only take OutputStreams as parameters, so now you can easily substitute a RichTextOutputStream there instead. Need a Writer instead? Just wrap the RichTextOutputStream in a OutputStreamWriter and away you go. As an added convenience, the default behavior is to convert any line terminators to RichTextItem.addNewLine() calls, just to make sure the formatting is correct (of course, you can override this behavior if you want to).

The more you use it, the more convenient you'll find this little class, especially with as much as Java uses streams for standard I/O. Try it...you might like it.

We're All Just Programmers in the End (Monday, Apr 7)
[ permalink ] [ e-mail me ] [ >> ]

I got an e-mail this past weekend from one David John Fielder (a.k.a. Konan) of Innuendo Software telling me about a bug in my wildcard search code. A pretty basic one, too. As he wrote:

the following code...
	if (!caseSensitive)
	{
		toupper(wcChar);
		toupper(strChar);
	}

should read...
	if (!caseSensitive)
	{
		wcChar = toupper(wcChar);
		strChar = toupper(strChar);
	}

Otherwise, wcChar and strChar remain unchanged.

Well, I have no idea how I let that one slip for so long, but I'm glad he told me about it. The code has been changed accordingly.

What's cool about this (to me) is that someone who has absolutely no connection to Lotus Notes came across the code and found it useful. Granted, that's a pretty generic piece of code, and I wrote it in C (which is certainly not Notes-specific), but it just goes to show: we're all just programmers in the end.

That's also what's nice about Notes/Domino, that it ties in to so many other widely-used technologies in so many ways. C programmers can use our C-API samples; Visual Basic programmers can use our LotusScript code; Java programmers can use our Java methods; web designers on all platforms can use our CSS tips. And vice-versa for all those things and more (JSPs, XML, XSLT, etc). In addition, Notes doesn't tie you down to using just one or two of those technologies. You can use them all. I think that's pretty handy.

Getting Googled (Saturday, Apr 5)
[ permalink ] [ e-mail me ] [ >> ]

Libby wondered a couple days ago, "What's the strangest way you've ever been googled?" Yikes, that sounds like such a personal question...

Checking through some old stats, I think mine has to be a Google search for "explosive detectors" that brought someone to my site a few months ago. I'm sure that person was sorely disappointed when they found that this blog entry was what caused them to get here.

Jake (Friday, Apr 4)
[ permalink ] [ e-mail me ] [ >> ]

Here's something I've been meaning to write for a while, but I'm just getting around to it now. Maybe it's the three glasses of wine I had with dinner that finally pushed me to do it...but whatever.

I just wanted to make a big public thanks to Jake Howlett for influencing me (and probably many other people) to start blogging about Notes and Domino. I know, it all sounds cheesy, and maybe there are other people who've been doing it for longer than he has, but I was reading Jake's blog for a long time before I started my own, and I still read it almost every day. Up until about a year ago, it was one of the only Notes blogs around -- maybe the only one. The only one I knew about, anyway.

When I finally got enough time to start my own site, I was just going to post information every so often (tools, scripts, tidbits) and expect people to keep checking back on a regular basis for updates. But at that time Mike was also going strong and Ben was just starting out (I think I was one of the first people to sign Ben's guestbook, actually), and I thought to myself, "Hey, I guess I could do that too. I could not only post information about Notes, but I could also talk about it in a really geeky sort of way. Bonus."

Hence, the nsftools blog was born. But I don't think I ever would have done it if Jake hadn't "paved the way", if you will. I think he's done a fantastic job of not only keeping his site interesting, but showing all of us that Notes/Domino really is a flexible development tool, especially at a time when all of the other Domino sites on the web used to be ugly twisties and full-page forms.

The reason I've been wanting to say this is because I know that blogging can be a lonely business, and with all of the other Domino blogs that have been popping up recently and only promoting the latest bloggers who are upcoming (and sometimes quickly going -- I won't name names), I'm not sure that Jake is getting the credit he deserves. He's been doing this at a very steady pace for a long time now (Internet time), and that's hard to do. It's difficult to write something every day or so and try to make it relevant and interesting, and Jake's been doing it for something like two years. And I know from my own experience that most people don't send you e-mail just to tell you how much they enjoy your site...it's usually just to ask a question or point out a bug. It's hard to keep up the motivation sometimes, but Jake's been doing it.

So anyway, now is one of those times when I sort of wish I had a comments system on my blog, because I know that other people feel (or ought to feel) the same way, and I'd kind of like to see the reaction. But really, if you also think/realize that Jake has actually had a tremendous influence over the current exploding state of the online Domino community, you should just send him an e-mail and tell him so. I'm sure he'd appreciate it.

And if you feel otherwise, you can just keep it to yourself.

That's all. End of the Jake lovefest. Thanks again Jake.

Web Stats (Thursday, Apr 3)
[ permalink ] [ e-mail me ] [ >> ]

I love looking at the web stats for my site. It's not an ego thing, it's just that I like numbers. That's why I got a degree in Math.

So anyway, my web host has two different stat analyzers available to me: AWStats and Webalizer. Both are good tools, and both have slightly different views of the stat data. Here's one of the interesting set of percentages from last month (most of the numbers have been hidden to avoid looking like I'm just trying to tell everyone how many or how few hits I get):

OSHitsPercent
Windows 2000xxx44.2 %
Windows XPxxx24.6 %
Unknownxxx12.6 %
Windows NTxxx8.9 %
Windows 98xxx5.8 %
Linuxxxx1.1 %
Windows Mexxx0.8 %
Windows 95xxx0.4 %
Mac OSxxx0.4 %
Mac OS Xxxx0.3 %
Sun Solarisxxx0.1 %
FreeBSD320 %
OS/2250 %
CPM240 %
Unknown Unix system90 %
OpenBSD40 %
Irix10 %

So, these are the detected operating systems that hit my site in March. No big deal, but I guess I'm just amazed at the variety. Lots of Windows, which is to be expected, but 25 hits by an OS/2 system? 24 by CPM? That's just plain surprising to me. Heck, I had to do a Google search to find out what IRIX was.

Also amusing to me: in the browser type stats, I had 4 hits from a browser that identified itself as "Nutscrape". Nice...

TreeView Database (Wednesday, Apr 2)
[ permalink ] [ e-mail me ] [ >> ]

If you have a little time to play this week, go ahead and download my latest sample database, which demonstrates a technique to display Notes views in "tree view" format on the Web. You don't even really have to do anything to your existing views to make this work (unless you've got a lot of formatting going on). Just modify your $$ViewTemplate form(s) and add a couple Image Resources to the database and you're off.

Even if you don't end up using it, the technique is fun to play around with. I actually developed it a while back but never had a good use for it. Now I'm working on some design updates to the primary site that I maintain at work, so I dug this out and I'm considering using it for that -- and I figured I'd post it here to the site while I'm at it. If nothing else, it's good to have this sort of thing in your toolbox.

The only real downside is that the JavaScript may not work on some older browsers. If you're working in an environment where everyone's got recent versions of IE or Mozilla (version 5 or higher...maybe?), it's worth a try.