The December 2002 Blog
send me a comment

Another Year Gone (Tuesday, Dec 31)
[ permalink ] [ e-mail your comments ]
The last blog entry of the year. I wish I had an interesting closing remark or a witty toast or something, but I just don't. You'll have to make one up yourself, or steal it from another website.

What will the new year bring for this site? Who knows... Hopefully more tips and tools, maybe a redesign of some sort. I hope I can maintain some sort of blogging pace, too, because it's often hard to find the time, despite the fact that it's mysteriously rewarding (although I still feel like I'm talking to myself every time I write). One thing I do know is that I won't be telling you anything about LotusSphere in January, because the company I work for doesn't pay to send anyone there anymore (which is really frustrating for me because I only live 2 hours from Orlando -- maybe I'll drive down there and be a LotusSphere stalker...). With any luck, I'll at least get to work with ND6 in some meaningful way and report back to you about that experience. Like the rest of my life, I'll just see what happens.

Thanks to all of you who have been visiting the site, and a special thanks to those who have taken the time in the past months to send nice e-mails to me -- that really helps keep me going.

Talk to you again in a few days. Happy New Year to all.

Looking for FTP Commands... (Monday, Dec 30)
[ permalink ] [ e-mail your comments ]
One of the neat things about web server logs is that they let you see how people got to your site (all firewalls and spoofing aside). The good logging tools even list out the searches that people made on search engines like Google in order to find you. This can be interesting to look at, because it not only shows you how people tend to search (not always like you think they would), but also what kind of strange things on your site that they might be looking for.

I've been getting a ton of hits recently for phrases similar to "ftp command list". I know that I've got the list of raw FTP commands buried on this site (buried because it's so ugly), but it seemed strange that I'd have so many hits as a result of that search. I figured my site would end up about 20 pages down the list on a Google search for that type of phrase.

Well it turns out I'd be wrong. I searched Google for "ftp command list", and this site was the FIRST one that popped up. I couldn't believe it. It just goes to show, you never know what people are going to want. And hey, I was pretty excited to be the top result for any search on Google! I'm number one, I'm number one...!

(On a related note, if you're ever trying to figure out where those spiders and robots that hit your site are coming from, there's a decent list on the JafSoft site)

Base64 (again...) (Saturday, Dec 28)
[ permalink ] [ e-mail your comments ]
Ask and you shall receive. Peter Leugner of AS Computer Consulting & Service GmbH was Johnny-on-the-spot with the answer to my question about how to write a single byte to a file using LotusScript. His answer? Just back up the cursor one spot and write two bytes: the byte that's already there and the byte that you want to write. So simple, yet it completely escaped me.

So, thanks to Peter's advice, I'm happy to post the Base64 scripts one more time, this time with a fully-working version of the TrimBytesFromFile function. If I'm lucky, this will be the final version of that particular set of scripts.

Now, back to my vacation...

Base64 version 1.3 (Thursday, Dec 26)
[ permalink ] [ e-mail your comments ]
All right, so how sick is this? We were driving down to my mother-in-law's house on Christmas Eve, and from out of nowhere the thought pops into my head, "Did I use a Print statement to write data in the DecodeFile function in the Base64 scripts? If I did, I bet it doesn't work for large binary files..." I should have been thinking about holiday cheer, and for the next day all I kept thinking about was checking that script and trying to fix it.

When I finally got to sit with my laptop for a little while, I did see that I needed to fix the script, and I eventually realized that the DecodeFile function was just going to be flawed. Why? Because Lotus Notes prior to release 6 doesn't have a single-byte data type, and as a result I couldn't figure out a way to write an odd number of bytes to a file...I always had to write in multiples of two. The best I could think to do was to end the file with a Chr(0) if there was an odd number of bytes, and hope that wouldn't case a problem.

So, there is (as predicted) yet another version of the Base64 scripts available on the site -- we're up to version 1.3. If I can figure out (or if anyone can tell me) how to trim a single byte from a file in a multi-platform sort of way, I'll make even more modifications and do a release 1.4.

Now maybe I won't be thinking about that stupid script for the next week.

Of course, I think the fact that I inherently obsess over stuff like that is the reason why this website exists in the first place. I literally walk around thinking about things to code all the time. I can't help it. I only have a fraction of the information on this site that I plan to put out there, mostly because I just don't have time to clean up and/or finish a lot of the bits of script that I already have stored up (even if I didn't have to work 8 hours a day, I still have a family that I really enjoy spending time with).

So, I write strange bits of code late at night, and I try to post here to the site as regularly as possible just to "get it out of my system". I guess as far as compulsive behavior goes, there are worse things I could be doing.

Merry Christmas (Tuesday, Dec 24)
[ permalink ] [ e-mail your comments ]
Merry Christmas to all! Even those of you who aren't celebrating this week, you're getting a Merry Christmas from me anyway. Peace, love, and happiness, and all that.

Here are a couple of corny, non-technical links for your holiday pleasure. One is a site where you can dress your own snowman -- of course, if you're in Australia you can pretend that the snowman is made of sand...I guess it's not that cold down there this time of year, huh? The other is a link to a crab dip recipe that I often make when we have people over for social events (it might be good for your Christmas or New Year's Eve bash).

Enjoy! Be back in a few days...

The Sandbox has Risen! Also, Java MessageBoxes (Monday, Dec 23)
[ permalink ] [ e-mail your comments ]
First, I really need to thank Ed Brill for his help. I was complaining before about how the LDD Sandbox seemed to have stopped accepting submissions (and Ben had a few words too), and the next thing I know Ed asked the LDD folks about it and whammo! All sorts of newly posted entries in the Sandbox (my stuff still isn't there yet, but surely it's just a matter of time...). Ed, you are a true gentleman.

Second, I added another Java Tip for you. Ever think of writing a front-end agent in Java, but you didn't because there was no built-in way of interacting with the user like you can with a MessageBox or InputBox in LotusScript? Well, here's a treat. I just put some sample code in the Java Tips section that shows you how to call MessageBox and InputBox types of dialogs from a Java agent using the java.awt classes.

I wrote a MessageBox class that can create four different kinds of dialogs: Ok/Cancel, InputBox, drop-down list, and multi-selection. It should be easy enough to add your own types of dialogs to this class, too (I tried to make it as modular as possible). And because you're using the java.awt classes, you won't have to package all sorts of javax.swing classes with your agents either.

Of course, you can use this code with applets and applications too, if you need it there. The java.awt classes give you the ability to make much richer UI interfaces than just dialogs, so these things are just the tip of the iceberg. Even if you're used to creating bigger and fancier things using java.awt, the MessageBox class might be a nice addition to your toolkit -- it's an easy cut-and-paste that can save you a few minutes of coding time (and actually, there's a little more to it than you might think).

Programming Rules (Friday, Dec 20)
[ permalink ] [ e-mail your comments ]
I used to have the book Enough Rope to Shoot Yourself in the Foot, until I lent it to a friend one time and never got it back. It was full of some great "rules" about programming in C++, although the theory can be applied to lots of other languages. I've thought a few times about buying another copy, but I never got around to doing it (looks like it's out of print now).

Well, I was cruising the Internet the other day, and one link led to another, and the next thing I knew I was at Allen Holub's site. He's the guy who wrote that book. I started clicking around, and saw that he has what is essentially the outline for Enough Rope on his site.

This is great reading for anyone who programs in almost any language. Some of my favorite general rules are:

Of course, there's plenty more on that list. You may not agree with all of the rules, but at least it should get you thinking.

(An amusing antithesis to this list is the How to Write Unmaintainable Code page -- read and learn...)

Java HTTP Proxy (Thursday, Dec 19)
[ permalink ] [ e-mail your comments ]
I just added some code for a Java HTTP Proxy class for you to take a look at. I've been playing with this off and on for the past few weeks, and I think it's finally at a state where it's cleaned up enough to post here to the site.

So what good is a Java HTTP Proxy? Well, if you're doing SOAP stuff like I am, you can run the proxy on your workstation, point your SOAP client to the local proxy port, and watch the SOAP traffic go back and forth (including the headers). Or maybe you just want to watch the HTTP traffic go back and forth while you're surfing the web...just have your browser use the local proxy and you can see as much as you want (and I even set it up so you can send traffic through the Java Proxy to another proxy server, if that's how you have to do it). If nothing else, it's just code you can look at to see how it works.

Have fun with it. If you have an opinion, please tell me what you think.

The Sandbox is Dead (Wednesday, Dec 18)
[ permalink ] [ e-mail your comments ]
Next week, it will have been four months since I submitted some of my tools to the LDD Sandbox. They still haven't been posted.

I sent an e-mail to the LDD webmaster back in October, and got a response back several days later that said they hadn't had time to look at my submissions yet and "thank you for your patience". At what point do you stop being patient and just give up?

The sad thing is, I can only assume that mine are not the only submissions that are stuck in the pipeline because all of the submissions over the past few months seem to be from internal IBM employees, or they're updates to old submissions (and besides, I'm not that paranoid). At least I have this site to post my stuff to -- I just wanted to throw some tools out on the Sandbox to give them to a larger audience -- but I'm sure that many of the other people who are submitting things don't have their own Notes-related sites to fall back on.

I don't know what the story is, but I hope that my Sandbox problem isn't some indication of what the IBM merger has done to the Lotus/Iris philosophy. I hope there's a simple explanation, and that the Sandbox bottleneck is removed in the near future. I hate to think that it's now "IBMers-only".

Added File Functions to Base64 Scripts (Tuesday, Dec 17)
[ permalink ] [ e-mail your comments ]
I know, I know, I've been a blog slacker over the past several days. But hey, it's the holiday season and I've got a life to worry about here. Just to show you that I still care, I updated the Base64 scripts for you yet again.

This time I didn't have to fix any bugs (thankfully); all I did was add a couple of functions that make it easy for you to encode and decode entire files all at once. I also started using version numbers in the script comments, so it will be easier for you to keep up. Officially, the version I just put out there is hereby referred to as version 1.2 of the Base64 scripts.

Of course, I fully expect someone to tell me about a problem with the new functions, so it'll be just a matter of time before you see the verison 1.3 scripts out here on the site. I'll keep you updated.

Colors and Usability (Thursday, Dec 12)
[ permalink ] [ e-mail your comments ]
One other interesting thing I learned last week: in the new Sametime client, they replaced the symbol to designate that a person was offline from a red shape to a yellow shape. Why? Because they got a lot of reports from color blind users that they couldn't tell the difference between the green symbol for "online" and the red symbol for "offline".

Logically, we think of "red means stop, green means go", so it makes perfect sense that you would use red for offline and green for online. However, if everything is a shade of grey, it's not so obvious. Something to think about next time you're designing an application.

On a completely unrelated note, here's a funny quote I read on the sixfingeredman site:

A computer without a Microsoft operating system is like a dog without bricks tied to its head.

Heh, heh...

The Meaning of SOAP (Tuesday, Dec 10)
[ permalink ] [ e-mail your comments ]
I recently read this quote from an article on the IBM developerWorks site (one of the lol:> columns):

Take, for example, SOAP. This acronym for a popular protocol in distributed computing started out in the classic style as an abbreviation for "Simple Object Access Protocol." Soon enough, people realized that it wasn't particularly simple, had nothing to do with objects, did not really access anything and wasn't, in the strict sense, a protocol at all. Sure enough, the writers recanted, and the next version of the specification had, hidden in crevasses of the change logs, the solemn statement: "SOAP V1.2 will not spell out the acronym."

I was quite amused by this, because I've been doing some work with SOAP recently. It's a "simple" concept, but the implementation isn't quite what it's cracked up to be. Gotta learn the new stuff, though. And if all goes well, I'll have some SOAP-related code out here on the site for you soon.

Back From Vacation (Monday, Dec 9)
[ permalink ] [ e-mail your comments ]
Well, I fought the urge to stay on vacation for the rest of the year, so I'm back here blogging again. Here are a few random things I learned while I was away:

I've got a bunch of other miscellaneous bits and pieces that I'll be throwing your way in the next week or so, but right now I've still got to help unpack and get the house back in order. And I'm probably not helping much working here on the laptop. More later...