Don’t be a Magpie Developer

Jeff Atwood (Coding Horror) usually has great articles come out on a very regular basis.  Today's entry is no exception:

Don't feel inadequate if you aren't lining your nest with the shiniest, newest things possible. Who cares what technology you use, as long as it works, and both you and your users are happy with it?

I do find that a large number of the "expert" developers on the net are constantly chasing the "great new thing".  I often wonder how they have to learn about these shiney, new toys while still having time to do all the mundane developing that takes up most of my time.  Maybe they are constantly working on the new Great White Hope that they never stick around long enough to have to support what they build.

To be brutally honest, there is nothing sexy about almost any Domino app out there.  But I will gladly take secure, stable, and working over sexy any day of the week. 

For all the Moms out there
Trying out TadaList
I have decided to give TadaList a try.  I was having trouble keeping track of everything I have to do with the upcoming Spaghetti Dinner and wanted to have something that the other organizers can see and modify.  Here's my list.  Hopefully, everything will have a check by the time Friday rolls around.
Kinda Dorky Nerd King

NerdTests.com says I'm a Kinda Dorky Nerd King.  What are you?  Click here!

 

Microsoft and SCO both face setbacks

A couple of decisions were handed down on Friday that might heavily influence the amount of fun a person has this weekend, depending on which side of the issue they supported.  I found both of these articles in the InfoWorld feed I get and both made me smile.

First, a judge has decided that not only does Novell own the UNIX copyrights that SCO was suing over, but that SCO Group give Novell a portion of the licensing revenue that it received from Microsoft and IBM.  Talk about getting kicked while you're down.  In addition, since SCO doesn't own the copyrights to Unix, SCO's suits against IBM must be dismissed.  Hopefully this will lift the cloud that has been hanging over the Linux/Unix community for a while.

Second, INCITS' executive committee failed to approve Microsoft's OOXML as a standard.  This is really good news for the ODF supporters and hopefully will have ripple effects across the world's standard bodies.  What I really don't understand is why Apple voted in favor of the standard since Office on the Mac doesn't even support it.

Phigment Simpson
My Simpson Character
Funniest thing I’ve seen in a long time
Is it a crime?

I was watching television the other day and the subject was somthing around child pornography.  While watching, I had a thought:

Is it a crime for an underage person, male or female, to post and sell pornographic images and videos of themselves on the Internet?

I know that the person buying the image would be breaking the law, but would the person selling the images also get in trouble?  Since they are a minor, would their parent be held responsible?  Just a thought.

Hooked on Myspace’s alter ego

My wife found out about this site while reading some online news and we just had to check it out. MyDeathSpace.com lists articles contributed by other about MySpace members who have died. Since the main demographics for MySpace are people under the age of 30, many of the deaths are grusome and tragic. There are a fair number of suicides and just as many Darwin Award candidates. They also list anyone who has been accused/convicted of murder. Luckily, they have an RSS feed that allows me to follow the carnage.

It’s browser upgrade time.....finally

It's a great time to be a web application developer.  Within the next couple of weeks, interfaces and functionality will be breaking all over the world.  Since I am soon to be faced with this issue, I thought I had better start looking into what problems I would be having.

First, I upgraded my home laptop to IE7.  The first time the wife got on she was less than amuzed that I had "screwed things up again".  My first impressions are that the UI is nice and clean, but they moved WAY to much stuff around.  Like everyone else, I am perplexed as to why they just didn't take what was familiar and build upon it.  Whomever decided that messing with the functionality of the forward and back buttons should be getting a pink slip very shortly.  It was one of the few things that Mozilla copied when they built their browser and MS had to go an mess it up completely.  Something tells me there will be a interim release very shortly that reverts the navigation functionality back to the way it should be.  The tabbed browsing is nice, but I haven't worked with it enough to see how it compares to Firefox.  As far as the new security features go, only time will tell if MS really did their homework.  One thing that is fixed with the new version is a spacing bug that was occurring on my blog with respect to blockquotes.

On my work laptop, I upgraded to Firefox 2.0 today.  The first thing that hit me after upgrading was the sheer number of extensions that don't work in the new version.  A couple of them are must haves for me when I develop, so I might need to downgrade very shortly.  I was hoping this new version would be less of a memory hog than 1.6, but that doesn't seem to be the case.  Exactly why does a browser need 300K of regular memory and 1GB of virtual memory?  Can anyone say LEAK?

I will take some more time in the near future to put each browser through it's paces and I hope that I am not disappointed too greatly.  IE7 is going to be the one I will be focusing on first since it's going to be forced down user's throats in the near future and my work applications have to not break in the new environment.

Manta from Heaven for an IE bug

Like a lot of developers, I don't trust IE's caching mechanism as far as I can throw Duffbert.  This is especially true when dealing with Domino.  For that reason, I run my IE Temporary Internet Files to Check for newer versions of stored pages Every visit to the page.  While this solves a number of problems when you are making multiple changes to the design of a db and constantly refreshing your browser, it does have a drawback or two.   For the end user, the drawback is that things that should be cached, like background images, aren't and this causes them to flicker occasionally.  This is especially evident when you have a tabbed interface that had a background image set via CSS.  Since most people don't run their browser in this manner, I live with it and make sure I set the cache to Automatically whenever I go to demo a site.

Thankfully, someone else has come upon a solution for this issue.  Like a gift from Heaven, this article gives me a single line to add to my CSS file to fix this problem once and for all.  Upon reading the article and implementing the fix, my hands shot upward automatically and a gleeful yell was heard throughout the house.  It's always the little things that make you happy.

IBM Software Support Toolbar released

Representitives from each brand have come together to compile the most sought after Brand-specific pages. Even though there are common links between these buttons, custom entries from each Brand truly make this Toolbar valuable for your support toolbox no matter what products you use.

With this new , you can search directly from IE just like you can with my Firefox search extensions.

I fear that the inmates are running the asylum

 pointed me to a speech recently given by concerning an amendment to a telecommunications bill regarding net neutrality.  His rant demonstrates exactly how little the people making the rules understand about technology.

But this service isn't going to go through the internet and what you do is you just go to a place on the internet and you order your movie and guess what you can order ten of them delivered to you and the delivery charge is free.

Ten of them streaming across that internet and what happens to your own personal internet?

I just the other day got, an internet was sent by my staff at 10 o'clock in the morning on Friday and I just got it yesterday. Why?

Because it got tangled up with all these things going on the internet commercially.

[...]

Maybe there is a place for a commercial net but it's not using what consumers use every day.

My own personal internet?  This is just as stupid as Al Gore's "I invented the Internet" comment.  Hey Ted, there is no such thing as a personal internet.  You can personalize your experience on the Internet, but the Internet is part of the public domain, just like the highway we all drive on.  The last line above is so retarded that I don't even know how to respond to it.  Maybe he should learn what the big words like commercial and consumer mean before throwing them out in a sentence. 

And maybe if his staff used Domino to send internet (are you kidding me?) instead of Exchange, it wouldn't take multiple days for him to receive it.  Don't blame the traffic on the Internet for your staff's inability to route internal emails.  This whole speech sounds to me like something that occurred because he didn't get his email in a timely fashion, which is a shame for him because it demonstrated exactly how ignorant he is about the issues he is debating.

What I really wonder is if any one on his staff has enough guts to point out all the mistakes he made in the speech.  I would really hope that someone in his position would be smart enough to put aside his pride and take the time to learn about the things he is enacting laws about.  But then again, if he were truly able to do that, he would never have been stupid enough to go on a rant about something he obviously knows absolutely nothing about. 

If you get some time, take a second or two and listen to the full audio of the speech.  It's mesmerizing.

Run VOIP at home
Engadget has a interesting How-to article on running over existing phone lines within your home.  One of the drawbacks of the services like Vonage is not being able to use all of the existing phone outlets all over your home.  Of course, it would be a really good idea to document this fully in case you ever wanted to makeup with Ma Bell.
Google’s done it again

I love it when makes my life as a web developer easier.  They have recently released the Google AJAX Search API (Beta), which allows you to return Google inline with your site.  I am starting to look at the documentation now and hope to have it implemented shortly.

The Google AJAX Search API is an experimental API that lets you integrate a dynamic Google search module into your web pages so your users can mash up Google search results with other content on your site or add search results clippings to their own content.

Watch at your own risk

If there is a funnier ad campaign out there right now than this one from Norelco, I haven't seen it.  It's so very easy to tell that Philips is not an American company.  A word of warning before you watch:  The sound to this is very important to the and you might want to wait until the boss is gone because you will be laughing out loud more than once.

On a similar , I saw the following ad in my wife's Good Housekeeping that made my jaw drop.

Things that used to be taboo are now starting to come out in the open.  Make sure you stop by the site and vote for your favorite shape!

Looking for an add-on for IE?

Microsoft has created a one stop shop for downloading add-ons for IE.

Browser add-ons can help personalize the way you use the Internet. The add-ons available here have been carefully screened by Microsoft and rated by users to help you select the ones that suit your needs and preferences. Start exploring them today.

Bloglines fall down, go boom
As of this moment, Bloglines is offline.  Something started going awry around 1PM EDT today.  The response from the site was sending the wrong content-type in response to a normal HTTP request.  I hope they get it back up and running soon.
Mark this date: April 11 is D-Day for Active-X in IE

via eWeek

Microsoft is moving full steam ahead with a plan to permanently modify the way Internet Explorer renders multimedia content on Web pages, but in what amounts to an admission that the changes could be disruptive, the software maker plans to give Web developers an extra 60 days to continue making preparations.

The IE update, which results from a multimillion-dollar patent spat with Eolas Technologies, changes the way the browser handles ActiveX controls and could have a significant impact on how online advertising and streaming media content is delivered over the Internet.

[...]

The big push now is for developers to recode Web sites and Web applications to cater for the browser update.

If not, users won't be able to directly interact with Microsoft ActiveX controls loaded by the APPLET, EMBED or OBJECT elements without first activating the user interface with an extra mouse click.

Rob Novak blogged about this recently and the way it impacts Quickplace.   In talking with him, he's indicated that there are some inconsistencies in the way this change impacts web applications using Active-X and Java Applets.  Unfortunately, it doesn't seem to impact the Flash advertising that's infected the web.  Then again, you won't be blown away by bad music when you inadvertently click through to someone's Geocities homepage with a MP3 object embedded in it.

This is just another example where the courts have erred when it comes to patents and the computer.  Just like the recent litigation with RIM, I think it's ridiculous for a patent to be granted for a theoretical idea without the company doing the work to determine how to implement the idea.  I am still mad at RIM for giving in and paying the ransom when they would have been "Scot-free" in 6 months when the Patent Office finally invalidated the patents.

Using an agent to work around the AJAX cross domain limitation

AJAX is a great tool for building some really slick applications, but it has one limitation has made me ignore it for a number of things that I have wanted to do. After speaking with Chris Toohey and stealing getting inspiration from some code that he had, I have come up with a simple agent to allow me to get data from other domains. The agent is incredibly simple, but I have no idea what kind of impact this will have on the server, so test thoroughly before you implement it in your environment.

First, create an new LS agent and set the run-time security level to 2. Allow Restricted Operations. The agent can be as complex as you want it to be, but below is all that is necessary:

Dim s As New NotesSession Dim doc as NotesDocument Dim xml As Variant Dim temp As String Set doc = session.DocumentContext temp = StrRight(doc.Query_String_Decoded(0),"url=") Set xml = CreateObject("Microsoft.XMLHTTP") xml.Open "GET", temp , False xml.Send Print "Content-Type:text/html" Print "Cache-Control:NoCache" Print Cstr(xml.ResponseText) Set xml = nothing
This LotusScript was converted to HTML using the ls2html routine,
provided by Julian Robichaux at nsftools.com.

Finally, you create an AJAX call on your page that calls the agent you created and pass the URL you want to retrieve as a query string parameter. That's all it takes to basically have one AJAX call access another AJAX call to get data from some other domain. Just to prove that my dogfood tastes good, I am using a version of this agent to retrieve my Bloglines Blog Roll on the right. Just click on the RSS icon to see the data retrieved via AJAX.

Curious about Ruby? Me too.

My dad is a huge Rolling Stones fan.  For that very reason, I spent the majority of my youth listening to the Stones and other bands like them.  My favorite song when i was young was Ruby Tuesday.  Something about it just struck a cord with me and I can vividly remember playng the cassette tape (made from the vynil LP) over and over just to learn all the words.  It was such a thrill for me years later to hear my favorite band, U2, cover the song in a rendition of Bad.

Well, another Ruby has piqued my interest lately and I ran across a site/book created to introduce us to the new darling of the programming world.  Why's (Poignant) Guide to Ruby is a light-hearted approach to introducing you to the new language.  The author's sense of humor is evident from the first page, but doesn't get in the way of your learning about Ruby.  Here is the opening section:

Pretend that you’ve opened this book (although you probably have opened this book), just to find a huge onion right in the middle crease of the book. (The manufacturer of the book has included the onion at my request.)

So you’re like, “Wow, this book comes with an onion!” (Even if you don’t particularly like onions, I’m sure you can appreciate the logistics of shipping any sort of produce discreetly inside of an alleged programming manual.)

Then you ask yourself, “Wait a minute. I thought this was a book on Ruby, the incredible new programming language from Japan. And although I can appreciate the logistics of shipping any sort of produce discreetly inside of an alleged programming manual: Why an onion? What am I supposed to do with it?”

No. Please don’t puzzle over it. You don’t need to do anything with the onion. Set the onion aside and let it do something with you.

I’ll be straight with you. I want you to cry. To weep. To whimper sweetly. This book is a poignant guide to Ruby. That means code so beautiful that tears are shed. That means gallant tales and somber truths that have you waking up the next morning in the arms of this book. Hugging it tightly to you all the day long. If necessary, fashion a makeshift hip holster for Why’s (Poignant) Guide to Ruby, so you can always have this book’s tender companionship.

You really must sob once. Or at least sniffle. And if not, then the onion will make it all happen for you.

See what I mean?  I am going to try to get through this book over the next couple of weeks and hopefully I will have learned enough to play with Ruby like Jake is doing.

Is this a case for AJAX?

Mat Henricson makes a list of 12 perfect cases for AJAX usage on a web page.

I've spent quite some time creating a 2 hour long Ajax course in Swedish. At the end of the course I list 12 cases where I think Ajax is a perfect fit, inspired by Alex Bosworth's 10 Places You Must Use Ajax, which really only has 6 cases. Well, here is my list. I know some of the cases are closely related, and some of them may be out of order when you try them out. Well, at least I'm trying!

I agree with most of the items on the list.  I can see myself using AJAX for suggestiong, validation, and automatic update in many of my Domino application.  I also think that navigation is an area where AJAX is key.  Used correctly, AJAX can be a suitable replacement for Frames.

Even if you think this is something that you already know, the list of examples he has in the list is enough to make it worth the read.

What really pisses off IT Support

TechRepublic published The top ten peeves of a support tech.  Being a person who has done support for well over 10 years, I definitely related to most of the issues raised.  Numbers 3 and 4 are the ones nearest and dearest to my heart.

#3 Users who deny having done anything that may have caused the problem.
This is the "What? Doom is installed on my computer? I have absolutely no idea how that could’ve happened" phenomenon. In one instance, a summer intern from the local university MBA program called the help desk to complain that he couldn’t access the network. A quick survey of his computer revealed that it no longer contained any files beginning with the letter n. The intern vehemently denied having deleted any files whatsoever but eventually confessed that he didn’t have anything to do so thought he’d delete all the files he didn’t recognize. Why he started with the letter n remains a mystery.

#4 Being treated like a user by tech support from another company.
I dread problems that result in a call to the manufacturer’s tech support department. I will experiment, read manuals, Google the error message, and sacrifice chickens on the keyboard before I will call a tech support number for a problem I can’t resolve. My pride simply can’t handle answering the most basic questions: Have you checked that the printer is in fact plugged in and turned on? ARRRGGGH. Get me out of here. Please, please, please, put me straight through to your highest support level because I can guarantee that I have tried everything you are going to suggest at least three times. Oh wait, never mind, the power strip was turned off….

Users become like my children when it comes to owning up to having done something wrong on their computer.  "I didn't do anything" is their favorite phrase when asked.  The fact that their harddrive is full of music that no teenager would be caught dead listening to won't stop them from blaming it on their son or daughter. 

And I love callig up support for some product I am using and talking to a monkey on the other end who is going down his helpdesk script instead of listening to me.  Yeah, I've only been doing this since you were in elementary school, but I am sure that you know better than I do and I should just reboot it one more time just to make sure.  I sometimes wish they had an exam that you could pass that would give you direct access to second and third level support.

I belong on Babylon 5
You scored as Babylon 5 (Babylon 5). The universe is erupting into war and your government picks the wrong side. How much worse could things get? It doesn't matter, because no matter what you have your friends and you'll do the right thing. In the end that will be all that matters. Now if only the Psi Cops would leave you alone.

Babylon 5 (Babylon 5)

100%

Serenity (Firefly)

94%

Nebuchadnezzar (The Matrix)

94%

Millennium Falcon (Star Wars)

88%

SG-1 (Stargate)

81%

Deep Space Nine (Star Trek)

75%

Galactica (Battlestar: Galactica)

69%

Andromeda Ascendant (Andromeda)

63%

Moya (Farscape)

56%

Enterprise D (Star Trek)

38%

FBI's X-Files Division (The X-Files)

31%

Bebop (Cowboy Bebop)

25%

Your Ultimate Sci-Fi Profile II: which sci-fi crew would you best fit in? (pics)
created with QuizFarm.com

via Stephen Wissel

IE Developer Bar Beta 2 Released

Beta 2 of the developer toolbar is now available. Beta 2 includes numerous fixes to improve stability, usability and performance along with a couple of additional features such as the ability to enable and disable CSS on the page. The developer toolbar has become an essential tool for us in diagnosing issues with web pages. Being able to click on an element in the page and find out where it is in the element hierarchy is just one of the invaluable facilities it provides.

Although it's not as user friendly as the one for Firefox, it does allow you to debug web development issues more easily.

Some good clean Friday fun

I came across a couple of sites to look at while your waiting for your customers to get back to you with some concrete requirements.

It's all fun and games til someone gets their eye poked out, then it's hilarious.

Is Google being Evil?
CNET's article When Google is not your friend shows a harsh light on what might happen to our privacy rights.
Q: Does Google collect and record people's search terms whether they're logged in or not?
Yes. Google confirmed this week that it keeps and collates these results, which means the company can be forced to divulge them under court order. Whether Google does anything else with them is another issue.
Some of the things that this information might be used for is very sobering.  I guess we will all think twice about what terms we search for on the net from now on. 
IE7 Beta 2 released for public consumption

Today, Microsoft released a public beta of IE7.  Unfortunately, I will not be able to play with it until I get another machine that I can test on.

Thank you for choosing Microsoft and for trying this pre-release software. Everyone on the Internet Explorer team wants to make your web browsing experience safer and easier. We welcome your feedback.
I HATE Caching
I hate caching. I can't put it any other way. I have been battling a caching issue in IE for that last couple of days and have finally clubbed it to death, but not without having a few more grey hairs. (No snide hair comments are allowed, children!!!)

Any ways, IE has what they like to call an "intelligent caching system". That's an overstatement on the level of "you're much prettier than Adriana Lima", especially when it comes to the way it handles Domino. By default, IE's cache setting (Temporary Internet Files) is set to Automatic. This allows IE to decide when it needs to bring down a new copy of a page and when it can simply use the copy in the cache. This is all well and good when you are looking at static HTML pages, but blows monster chunks when you are trying to use a Domino application. As a Domino developer, the solution to this problem is relatively simple, but there are many pieces.

The easiest way to control caching is by creating a Web Site Rule. This article from LDD does a great job of walking you through how to create a rule. One thing to remember if you are using Quickplace is that, since Quickplace doesn't support multiple Internet Site documents yet, you will need to create a Global Web Settings document and then create the rule from there.

You can also do it on a form by form, page by page basis using either @SetHTTPHeader or META tags in the HTMLHead. Most of the time, this is very easy to do and can allow you to granularly control which pages and forms are cachable. Check your Administration Help database for more information on how to use @SetHTTPHeader and its counter-part @GetHTTPHeader.

Neither of these ways will work for Quickplace, however. To control caching of Quickplace data, you need to modify the qpconfig.xml file and either modify or add the following lines:

<browser_caches_place_content enabled="false"/>
<page_compression enabled="false"/>

This should help tremendously, but is no guarantee that user's won't have caching issues.

Cache control is even more important when it comes to AJAX. I have been working a bunch with Domino Agents returning data via XMLHTTP calls. While I knew that the first Print statement had to be "Content-type: text/xml" (although "Content-type: text/plain" also seems to work), I was unaware of the issues with caching. To prevent your AJAX calls from being cached, the second Print statement has to be "Cache-Control: no-cache". Otherwise, agents that are called using the same URL will not be access on the server and will instead be access in the cache, regardless of the data that is actually returned. This can be very important if the data on the back end changes without the URL changing.

Following the tips above should allow your site to work correctly, regardless of how your user's browser settings are configured.

Constant Connection Causes Dissatisfaction
MSNBC.com has an article today about how cell phones are ruining the quality of family life.
The study, which followed more than 1,300 adults over 2 years, found that those who consistently used a mobile phone or pager throughout the study period were more likely to report negative “spillover” between work and home life -- and, in turn, less satisfaction with their family life.

Spillover essentially means that the line between work and home begins to blur. Work life may invade home life -- when a parent is taking job-related calls at home, for instance -- or household issues may start to take up work time.
I must say that life was a little simpler before I got my Blackberry. With it in my hands, I am always able to get work done, even when I am supposed to be having fun. I can't imagine IT working without them, but somehow I really wish it would.

via MSNBC

MS Censors Chinese Blogger
BEIJING - Microsoft Corp. has shut down the Internet journal of a Chinese blogger that discussed politically sensitive issues, including a recent strike at a Beijing newspaper.

The action came amid criticism by free-speech activists of foreign technology companies that help the communist government enforce censorship or silence dissent in order to be allowed into China’s market.
Although no where near as tragic or criminal, it was this same type of thinking that drove doctors and scientists in Nazi Germany to conduct experiments on the "lesser" peoples. In their mind and somewhat in reality, a lack of will to do that type of work meant that they would get no funds to do any work and, therefore, would not be able to provide for their families. They also firmly believed that if they didn't do it, some other German would be more than willing to take their position and do what was "necessary".
At places like Auschwitz the killing was regarded as a means of healing Germany and curing it of the racial disease, thus leading to what has been called the "healing-killing paradox" wherein SS doctors could get around issues of moral and ethical conscience concerning their medicalized killing and experimentation because they equated killing with healing. Murder was to them a furthering of their commitment as doctors to the preservation and enhancement of life, as it was seen ideologically as purification (Lifton 224).
Or maybe the tact that MS is taking is worse because it's not driven by ideology but rather by greed. MS is taking the stance that if they don't comply with the local laws of the country, then they will be left out of that market. When a company's ideals and morality loses the fight with the company's desire to "make a buck", it may be time for consumers and company employees to decide if that the type of company they want to do business with. How many yuan will it take to fill the hole left by the willing destruction of the freedom of speech?
GooglePack Unveiled
In related news Google will also take the wraps off of "Google Pack," a bundle of applications that will be made available for download in a single installation bundle. Sources tell us that Google pack will feature a Google-tweaked version of Firefox, Adobe Acrobat Reader, antivirus software from Symantec, AdAware, Trillian, and Google's own offerings, including Google Desktop Search, Picasa, Google Earth, Google Talk, and all of the toolbar action you can shake a stick at. Oh, and I left out one other item: the RealPlayer.
That is a lot of software for the downloading. I have most of them already installed on my machines, but the one that sticks in my throat is RealPlayer. That hunk of junk has always caused me problems and I will not be installing it anytime soon, not that I really need what it provides. I'd much rather they include Winamp Basic in their downloads.

via Google to sell video, take on Apple; announces Google Pack

MS fixes WMF Flaw
Initially, Microsoft said it didn’t expect to do so until at least Tuesday, but the Redmond software maker said it finished testing earlier than planned and was able to release it on its Web site.
Be sure to either run Windows Update on your machines or visit the no fix available for you yet.

via MSNBC

Which office moron are you?
I'm the IT manager. Do you fancy me?
Which Office Moron Are You?
Rum and Monkey: jamming your photocopier one tray at a time.

Something in your childhood has made you the way you are. You've been hired to provide a service to everyone else in the office - you make the computers run, and you make them run well. You've streamlined everything; you've removed all the viruses and installed all the firewalls. The only trouble - the only hole in your veneer of digital perfection - is the way you laugh at everyone.

If someone doesn't know UNIX, you laugh at them. If they lose their password, they laugh at them. If they visit a website using Microsoft Internet Explorer and their computer succumbs to an Internet worm, you laugh. Then you take a swig of your Coke, and with another hearty chuckle tell all your friends on IRC about the idiots you have to deal with.

Maybe it makes you feel better about yourself, although let's face it, you don't need help in that department. You're great, you. Fantastic like burning cool. If only those luddite office fools would let you play Unreal Tournament in peace.

I like my software a little on the trashy side
Now you can use Google to check how promiscuous your lover is, sort of.
Slut-o-Meter evaluates the promiscuity of the subject you enter by comparing the number of Google search results with and without "safe-search" enabled.
It will also give you the number of times that the terms you enter have been search for. The most interesting thing to me is that Lotus Domino is more slutty than Microsoft Exchange, but Rocky's almost as pure as a choir boy.
New XP Exploit via WMF files
Sunbelt BLOG is reporting on a new piece of code out there that exploits a hole in the Windows security model.
Any application that automatically displays a WMF image will cause the user’s machines to get infected. This includes older versions of Firefox, current versions of Opera, Outlook and all current version of Internet Explorer on all versions of Windows.
The article doesn't go into exactly what could be accomplished via this exploit, but the tone of the wording leads me to believe that this is a serious issue.

via tech.memorandum

Must have for Firefox...Performancing
Performancing is a tool I recently downloaded and have come to rely on quite a bit. Basically, it allows me to create blog entries within the Firefox 1.5 browser window while I am reading a page I want to blog about. If you use one of the major blog hosting sites like Typepad.com, it will allow you to post your blog entry directly from the interface. Unfortunately, this is not available to me since I use DominoBlog to run this site. But you can be sure it will be on my list of requests for the next version. Heck, maybe I will even write an agent myself to handle the transfer. Now, that is a good idea in my book.

Update: I have posted a topic on the Perofrmancing forums to find a way to handle the XML that the tool posts. Hopefully, I will get some help sooner than later.

ALA: Sensible Forms
A List Apart has a new article which touches on some rudimentary do's and don't's for web forms. Most of the thing that are talked about are not something that I usually have to worry about as a Domino developer, but there are good things too keep in mind when developing for the web.
Computers are supposed to make our lives easier, not more difficult. As usability-conscious designers, we can make our users’ lives easier by thinking about the way people interact with our websites, providing clear direction, and then putting the burden of sorting out the details in the hands of the computers—not the users.

via Sensible Forms: A Form Usability Checklist

Slingbox broadcasts to your PC
Here's a little something to help feed the N.A.D.D. people in your life. Slingbox is a device that allows you to "broadcast" any audio/video feed to any computer on the Internet.
The bottom line is that Slingbox works exactly as described and is addictive. It allows you to watch and listen to TV wherever you are. Video quality is very good whether you watch inside or outside your home. I haven’t yet tried it overseas but I plan to in the very near future.
I can just imagine how many things I can watch at once. I also wonder how good the feed is across a Wireless g network. Oh, what I wouldn't give for some ultra-disposable income to find out for myself.

via MSNBC

Recap: RadiCockeye’s 2005 predictions
For those of you who don't remember what they were, here they are verbatim from the Messaging Pipeline article:
And now, here are the Radicati Group's 10 Predictions for 2005:
  1. We expect IBM Lotus Notes/Domino to continue losing market share to MS Exchange and other players.
  2. Phishing attacks will get worse before they get better.
  3. Blogging will fade away from the corporate world and be considered a consumer tool, no longer a credible source of news.
  4. Microsoft will speed up development on the next version of Internet Explorer, and release an update before Longhorn (the current plan is to release the next version of IE with Longhorn in 2006).
  5. Microsoft will enter the anti-virus market in a year when the severity of virus attacks will reach an all time high.
  6. Biometrics will become the latest trend in security systems, for network access, desktop access, and physical building access.
  7. Hosted Email providers will see strong growth, as more and more companies look to email as a service, considering the rising costs and complexity of in-house systems.
  8. Google will introduce an IM client that will do surprisingly well.
  9. IM Management vendors will continue to be the biggest winners in the IM space, as more and more companies will have a need for better IM security, archiving, and retrieval.
  10. In the email archiving and compliance market, we expect consolidation of features in the form of all-in-one appliance solutions.
By my computation, I would say that Sara went maybe 3 for 10. The gimme on the list was #2. She was correct in predicting the next version of IE will come out before Longhorn, or at least that's what we're being told. IBM produced a really kewl ad with Lee Majors about biometrics on their Thinkpads, but I am not sure that constitutes a trend. I have yet to enter any buildings where I need to have my retina scanned.

Unfortunately, those weren't major league curveballs she was trying to hit, so the .300 average is not going to get her an 8 figure contract this year. As Ed has pointed out, Notes/Domino revenue has continues to increase in 2005 and MS customers are still waiting for a new version of Exchange. No other viable competitor has emerged from the pack. And it seems that everyone, including CEOs, have their own blog up and running. More companies are encouraging their employees to blog, both internally and externally. No MS Antivirus that I know of has hit the market and the Google IM, while newsworthy, isn't exactly setting the world on fire. The other 3 predictions were too vague to determine whether or not came true, although I didn't hear about any appliances from the archiving vendors that I talked with in August and September.

California video game law blocked
I really hate it when lawmakers try to replace parent's good judgement with laws to keep the kids safe.
"For the sixth time in five years, federal courts have now blocked or struck down these state and local laws seeking to regulate the sale of games to minors based on their content, and none have upheld such statutes," ESA president Douglas Lowenstein said in a statement.
I like it much better when I get to decide what is good for my kids based on the level of maturity that my kids have. And this goes for everything, not just video games. Don't make a lowest common denominator law like this just cause there are parents to lazy or stupid to raise their children correctly.

via Judge blocks California video game law | CNET News.com

Ray speaks up some more
ACM Queue recently posted A Conversation with Ray Ozzie. It's a good interview that gives you some insight into what makes the man tick as far as IT is concerned.
When I was at Lotus in the early ’90s, companies were a lot more vertically integrated than they are right now. At that time, people were attempting to use fairly nascent technology to break down the walls within the organization, meaning they were trying to get different departments within an organization to work together. They were trying to flatten organizations internally and get people to work together across stovepipes, within organizations, just to make processes operate more smoothly.
Luckily, I didn't have to work through the years when departments really didn't work together at all.
Sadly, I think enterprises have a lot of issues going on inside them that make it very difficult to embrace some of these innovations. Frankly, the path that we’re on leads one to believe that a lot of the benefits of these innovations are accruing to small businesses and individuals much more readily than enterprises. The reason: Enterprises are really different from the public Internet in that they have fairly substantial compliance issues. They have control hierarchies related to technology acquisition and enablement of end users. They mandate the use of certain technologies and mandate that others not be used. They control the upgrade tempo. I’ve never seen the technology environment as divergent as it is right now between what’s going on outside enterprises and what’s going on inside enterprises.
The reason for this is simple enough: changing the way you do things is very easy to do, changing the way others do things is next to impossible unless they want to change or you give them enough incentive to trust you.

via Mary Jo Foley

CSS Hacks go home
The IE7 team would like people to really stop using CSS Hacks.
We ask that you please update your pages to not use these CSS hacks. If you want to target IE or bypass IE, you can use conditional comments .
The article goes on to show you how they would like you to get around the differences in the implementations of the ID spec. If you have a lot of web pages out there that use some of the more common hacks, html > body and body > element, you may want to start making the necessary changes now.

via Call to action: The demise of CSS hacks and broken pages

Google takes a bite of AOL
And speaking of Google, it's sounding like Microsoft's nemesis bested Microsoft in the contest for whose search engine would power Google search, going forward. As part of that deal, Google reportedly will invest $1 billion in AOL, in exchange for a five percent stake.
Does this mean I will soon be receiving Google CDs in the mail?

via Microsoft Watch by Mary Jo Foley

Which muppet are you?

What Muppet are you?

You are the the Swedish Chef.You are a talented individual, nobody understands you. Perhaps it's because you talk funny.
  • FAVORITE EXPRESSION:"Brk! Brk! Brk!"
  • HOBBIES:Kokin' der yummee-yummers
  • FAVORITE MOVIE:"Wild Strawberries...and Creme"
  • LAST BOOK READ:"Der Swedish Chef Kokin' Bokin'"
  • QUOTE:"Vergoofin der flicke stoobin mit der brk-brk yubetcha!"

Take this quiz!

Quizilla | Join | Make A Quiz | More Quizzes | Grab Code

via Richard Schwartz

Using an Array to get parts of the URL
Often when I am developing a web site, I will need to get a handle on different pieces of the URL. Sometimes I will need just the database path and other times I might need the document ID. I came up with an easy function that uses the split method to get the URL into an array and retrieve whatever piece of it I needed. The function below is built to work with Quickplace databases:

function getHomeFolder(returnValues) {
  var temp = new Array();
  temp = document.location.href.split('/');
  var rv = "";

  var protocol = temp[0];
  var server = temp[2];
  var qp = temp[3];
  var sub = temp[4];
  var db = temp[5];
  var view = temp[6];
  var doc = temp[7];
  
  if (returnValues.indexOf('1') != -1) { rv = rv + protocol + '//';}
  if (returnValues.indexOf('2') != -1) { rv = rv + server + '/';}
  if (returnValues.indexOf('3') != -1) { rv = rv + qp + '/';}
  if (returnValues.indexOf('4') != -1) { rv = rv + sub + '/';}
  if (returnValues.indexOf('5') != -1) { rv = rv + db + '/';}
  if (returnValues.indexOf('6') != -1) { rv = rv + view + '/';}
  if (returnValues.indexOf('7') != -1) { rv = rv + doc;}
  return rv;
}

The above function could be easily generalized to be able to be used in any database on a Domino server or any regular web page. It's much easier than looping through the href using indexOf() or substring(). In fact, you can use split to create a JS version of Rocky's favorite @Function, @Word.

function atWord(fullstring, sep, wordno) {
  var temp = new Array();
  temp = fullstring.split(sep);
  if (temp.length > wordno) {
    return temp[wordno - 1];
  } else {
    return false;
  }
}

How to Hack CSS: The Opening of Pandora’s Box
CSS hacks are a necessary evil for today's web developers. The father of CSS Hacks, Tantek Çelik, has an entry on The Web Standards Project concerning the mothodology that developers should use when coming up with hacks.
A CSS hack should (or MUST in the RFC2119 sense if you prefer):
  1. Be valid. Invalid hacks are unacceptable. Back in the heyday of Web 1.0 (i.e. the late 1990s), the The Web Standards Project and numerous others were already spreading the message of better coding through validity, and thus hacks themselves had to validate as well. (Nevermind that many/most so-called "Web 2.0" sites can't be bothered to validate. See above about the real professionals having to repeat the message).
  2. Target ONLY older/frozen/abandoned versions of user agents / browsers. When the Box Model Hack was introduced, we were already playing with betas of IE6/Windows (back when we expected there would be an IE6/Mac), and so we knew how to make sure it wasn't affected. And now we're playing with betas of IE7.
  3. Be ugly. It's actually a good thing that a hack be visually ugly from a coding aesthetic point of view in the hopes that the ugliness will be a reminder that the hack is a hack, and should incite a tendency for people to a) minimize it's usage, and b) remove it's usage over time. At it's core, browser switching is one of those things you really shouldn't, but must, do to get your job done. Hacks' ugliness are like the equivalent of persistent warning tags, a reminder to dispose of them when no longer necessary.
Tantek goes on to correctly state that IE7 will NOT remove the need for such hacks. What is most interesting about the article is to see how the hacks and the need for them evolved over time.

What really amazes me is that browser programmers and email vendors continue not to fully support the CSS2(.1) specification. The lack of support is more troubling with the emergence of Firefox as a true, and some would say better, alternative to IE. With the death of Netscape earlier this decade, most developers began to be able to develop for the IE platform only. While this may not have been a perfect platform to work with, it's flaws were well known and you could easily work within those limitations to accomplish what you wanted to. Now, you have to code to the standard and then hack the CSS to get it to work in IE. This can be extremely frustrating, especially when things look so much better in Firefox.

via Scobleizer

Join the cause
TheSickos.com has a number of images available for you to show your allegiance to the brotherhood of yellow and black. I opted for the little chicklet, but there are some large images that might be more your style. You know you wanna be a sicko, don't deny it. Show it with pride!!!
Gone Phishing
I received the following email in my Hotmail account today:
-------------------------------------------------------------------------------
From : Microsoft Online Services
Sent : Monday, November 21, 2005 7:27 PM
To : "xxxxxxxxx@hotmail.com\r"
Subject : Dear Hotmail customer, Update your billing information!
--------------------------------------------------------------------------------
Dear Hotmail customer, Update your billing information!

We have been unable to charge your credit card for your Hotmail Microsoft Online Services. The following credit card is the current payment method on your billing account.

If your services have not already been suspended, they will be suspended within 30 days unless we receive updated billing information.(If payment is due for other Microsoft services purchased with the above card, those services may also be suspended.) To avoid possible suspension of your services or to reactivate suspended services, please immediately provide a valid credit card and a current expiration date.

To view or change your billing account, go to https://billing.microsoft.com
To update your payment information or select a different payment method, click Billing Information.
For payment history and online billing statement, click Monthly statement.

If you have already resolved this issue, please disregard this notice and accept our thanks.

Thank you for using Microsoft Online Services!

Microsoft Customer Support

--------------------------------------------------------------------------------
Note: Please do not respond to this message.
To receive notifications at a different e-mail address, sign in to your account at https://billing.microsoft.com select 'Personal information', then click 'Update this information', change the 'E-mail address', and click 'Save'.
Form: 4
All of the URLs in the email resolve to http://thewebsiteofjustice.com/mambots/content/hotmail/MicrosoftBillingAccountManagement.htm. The thewebsiteofjustice.com homepage seems to be disabled at the moment, so either they got hacked and are trying to clean up their site or Justin Ling of UC Davis has been a very bad boy and is getting taken out behind the woodshed by the admins at ixwebhosting.com. I don't know what's more surprising to me, that these types of emails are still being sent out or that people are still falling for these phishing schemes.
Got CodeSupport?
Sony has finally caved in on the whole DRM issue and they are recalling all CDs with the notorious copy protection scheme.
Sony's first 'fix' for XCP potentially opens the door for websites to take control of a PC, a Finnish researcher Muzzy has noticed. An ActiveX control installed by First4Internet Ltd, the British company that devised XCP, allows remote systems full access.
Ed Felton of Princeton has a page that will detect if the CodeSupport ActiveX component resides on your system. Thankfully, mine was clean.
SearchDomino.com guides you thru the Eclipse
SearchDomino.com has put together a list of on-line guides to the Eclipse Development Platform.
Eclipse is an open source community whose projects are focused on providing an extensible development platform and application frameworks for building software. Eclipse provides extensible tools and frameworks that span the software development lifecycle, including support for modeling, language development environments for Java, C/C++ and others, testing and performance, business intelligence, rich client applications and embedded development.
The guides include are quite varied and should help you learn more about Eclipse, whether you've never even heard of it or you've been working in it for years.

via SearchDomino's Eclipse Learning Guide

Switch to Bloglines
I have switched over from a client based RSS Reader to the web based Bloglines. I did this because I found myself trying to read RSS from multiple machine and that can bean issue with client based readers. Heck, just synching your list of blogs can be an issue, let alone trying to figure out which entries your have already read. I chose Bloglines because it was free and relatively simple to use. Their bookmarklet for adding feeds is a nice to have, but I wish it would either launch in a new window or return me to the page I was reading instead of My Feeds on Bloglines. If you aren't currently happy with the reader you are using, I suggest giving Bloglines a try.
See through a color blind person’s eyes
See your web site through color-blind eyes with the colorblind web page filter.I am not color blind (regardless of what I might be wearing today), but I do have a nephew who is. I have often wondered what the world looks like to him. Well, there is a website out there that will let me do just that. The Colorblind Web Page Filter is easy to use and pretty kewl in giving you one more tool in making your site totally accessible. At least now I can understand some of my nephew's wardrobe color choices.
ENTP: The Mad Scientist
No matter how many times I take the Myers-Briggs test, I always come out with the same grade:
The ENTP, like the ENTJ, is charismatic, outgoing, and intelligent. ENTPs are often quickwitted, clever, and genial; they typically display a highly organized, rational cognitive ability which makes them natural scientists and inventors.

ENTPs are creative, complex people who seek to improve their understanding of the natural world, usually by building armored fifty-story-tall robotic monsters with iron jaws and death-ray eyes, or by creating genetically mutated plagues that spread unstoppably across the land, turning all who are contaminated into mindless zombie drones. They are less likely to want to conquer the world than to destroy it utterly, reducing it to nothing but slag and rubble--though this is often merely a side-effect of their pursuit of knowledge.

RECREATION: ENTPs enjoy recreational activities which challenge them physically and intellectually, such as water skiing and porting Linux to their iPods. They are also fond of collecting gadgets like combination cellpone/PDAs and orbiting arsenals of brain lasers, which they may port Linux to as well.

COMPATIBILITY: ENTPs and ENTJs make natural companions, as the one's unspeakable hunger for power compliments the other's unspeakable hunger for knowledge. They do not generally build successful relationships with ESFJs, as ENTPs they are prone to behaving in inconveniently erratic ways, which pisses ESFJs off to no end; and because ENTPs simply do not know how to dress appropriately for formal occasions.

Famous ENTPs include Spencer Silver (the inventor of Post-It Notes), Robert Oppenheimer, and Dr. Jeckyll.

via The REAL Myers-Briggs Personality Types Made Relevant

Color Palettes
Regardless of whether or not you like my new color scheme, there are a couple of sites that I use to come up with color palettes that I think might be helpful for you.

Color Scheme Generator 2 from WellStyled - Very easy to use color scheme maker. Allows you to either select a color from a visual palette or enter the RGB for a color. Returns complimentary and contrasting colors and allows you to select only web-safe colors.

Color Palette Creator from slayeroffice - It will create 10 shades of the base color, located top-left, at varying degrees of opacity. Along with giving you some nice color combinations, the author also provides the JavaScript and CSS source for easy dissection.

I think that any tool that can help us Domino developers create better looking applications is manta from Heaven.

Using Server-side Includes
The hardest thing for me to do as a developer is to go from a rich environment like Domino to a regular web server with standard HTML files every where. Every time I think about doing something cool to minimize the administration of the site, the first thing that comes to mind is how to do it in Domino. Well, I have started to work with Server-Side Includes (SSI) while I have been redesigning the CGC Builders site I maintain for my brother-in-law.

For those of us who bleed yellow and black, you can think of SSIs as the subforms of the HTML world. Although SSIs do have a performance cost, the productivity gains will be similar to what you have seen with subforms. They can either be a static or computed link to a separate HTML file, like a footer that you want on all pages, or they can be a formula for showing information like the last time the file was modified. The first thing you will notice about sites that use SSIs is that their pages end in either a .SHTM or .SHTML extension. These extensions tell the web server to look for SSI code in the HTML. Once you have the extension correct, just add a line like to your code. The above line inserts the contents of the footer.html file at that point in the HTML. On the CGC Builders site, I have used SSIs for the header, navigation, and footer.

It is important to note that the files that are included are not complete HTML files, but rather snippets of HTML. They do not have HTML, HEAD, or BODY tags in them, since that would cause problems if they were included in other HTML pages. There are a number of web resources out there for learning about SSIs. Here are a couple of the pages I used:

If you find yourself doing plain jane web development, SSIs are a nice way to maintain sanity in a sea of HTML files.

Validating number-only fields
I recently needed to add some additional validation to a form that I think you might find useful. While Domino will automatically check number fields for errant characters, it doesn't do this very cleanly. In fact, it's quite fugly. So I created a JavaScript function that checks the field for errant characters.

//********************function isNumeric()****************
function isNumeric(fieldname, fieldlabel, addchars){
  if (addchars == null ) {
    var ValidChars = "0123456789.,";
  } else {
    var ValidChars = "0123456789.," + addchars;
  }
  var IsNumber=true;
  var Char;
  
  for (i = 0; i < fieldname.value.length; i++){
    Char = fieldname.value.charAt(i);
    if (ValidChars.indexOf(Char) == -1){
      alert('Please enter only numbers in ' + fieldlabel);
      fieldname.focus();
      return false;
    }
  }
  return true;
}

The function is very easy to use. I have a validation function that calls the isNumeric function as follows:

if (!isNumeric(document.forms[0].fatalities,"fatalities in the last 5 years")) return false;
The first variable passed it the field that is being checked and the second is a description of the field that is passed to the user if the validation fails. A third variable is optional and would contain additional characters that would be permissible, e.g. "$" or "%". And before you ask, no, I have not tested to make sure that this works in Firefox or Mozilla. To make that work, I would probably have to change the fieldname variable to document.getElementById(fieldname).
MS rolls out their version of the nifty 50 for Sharepoint
I remember receiving the Nifty Fifty for Lotus Notes Version 3 when I was just starting out in the Notes world. I guess that excuses me from being called a whippersnapper by Rocky. Any ways, it seems that MS has taken a page out of Lotus' book and done the same thing for SharePoint.

On Tuesday, Microsoft quietly rolled out 30 free, downloadable applications that build on top of the company's SharePoint Services collaboration/workflow technology that is built into Windows Server.

Among the plethora new applications are horizontal and vertical applets both. Schedule-management, consumer-financing, employee-training, event-management, travel-request, classroom-management, campaign-management and other similar types of offerings are available immediately.

[...]

"The impetus for these applications was that some of our customers were struggling with SharePoint adoption," said Bunge. "We wanted to find ways to show the value to these users."

Peter O'Kelly, a senior analyst with The Burton Group, agreed with Microsoft's assessment.

"There's still considerable confusion in the market about the extent to which SharePoint can be used for building collaborative applications, so the SharePoint Services application templates are likely to be very popular," O'Kelly said. "Lotus did something similar when Notes was getting started, with a set of 50 templates for various application domains."

Although they were a great source of ideas, I never did implement any of the applications in the nifty fifty. I have always found it easier to start from scratch with my own code then try to bastardize code from Lotus.

Link to Microsoft Watch article

Google Maps pulls the plug on Enterprise/Intranet use
From the Google Maps API Help page:

4. Is the Maps API available for commercial websites?

Yes, it is, as long your site is generally accessible to consumers without charge. For example, if your website is supported by advertising, it likely falls within the terms of the Maps API. Or, if you charge people to place information on your map (e.g., to list their homes for sale), but you list this information on Google Maps on a free part of your site, you’ll also meet the Maps API terms of use.

However, not all commercial uses are allowed. For example,

  • Premium websites – If your site is only available to paying customers, you cannot use the Maps API.
  • Enterprise websites – The Maps API is not available for use within enterprise or intranet applications.

Remember, Google reserves the right to suspend or terminate the use of the service at any time, so please read the terms of use carefully.

This blows a huge hole in the middle of some of our plans to use this tool. At this point, there doesn't seem to be a way to purchase a licenses for use of Google Maps for use on enterprise sites. I really hope that changes soon and that it is a reasonable price.
Google Releases API for Maps
Google has officially released an API for their Google Maps product.
The Google Maps API lets developers embed Google Maps in their own web pages with JavaScript. You can add overlays to the map (including markers and polylines) and display shadowed "info windows" just like Google Maps.
You are required to sign up for a key, but it's still free and it can do some really kewl things.
Proofpoint Upgrade
The 3.0 version of Proofpoint's Protection Server has been out since November, so I finally got around to getting out appliances upgraded last night. The new version gives us increased through-put, support for SNMP, ability to throttle hosts that constantly send SPAM, and some significant compliance features that we may never use.

George from support contacted me about 2:30 PM yesterday and we decided to start the upgrade about 4:30 PM EDT. Since they are on the west coast, it was only 1:30 PM his time, which gave him enough time to get it done in case there were any issues. Since we have 2 Proofpoint appliances, we were able to upgrade them individually without any interruption in mail delivery and without the user community even knowing that anything was going on. The upgrade started on time and took about an hour. The only problem George ran into was when we tried to link the 2 appliances back together. But after talking it through with the developers, they found the problem to be a Linux rights issue in a certain directory that got changed during the upgrade.

Outside of the Domino environment, I have not had a production product that upgraded this easy in a long time. And the best part was that I didn't have to do a darn thing other than ask for the upgrade! Kudos to the boys and girls at Proofpoint.

EWEEK: Web Conferencing Isn’t Exactly Collaboration

But to my mind, a more important question is: Why is Web conferencing even considered a collaborative technology? After all, 99 percent of the time, the actual application of Web conferencing technology is about feeding and consuming information, not jointly manipulating it.

Certainly, screen sharing has its place as a means of letting a couple of people work on a document simultaneously. But when people work together, most work asynchronously. In fact, as demands on our time increase and collaborators become more geographically dispersed, opportunities for lengthy synchronous collaboration become more and more scarce.

Link to article
notes://??? file://??? Who knew?
We all know about using the ftp://, http://, and https:// URI Handlers/Schemes to access sites on the Internet. Some of us a little longer in the tooth also remember gopher://, finger:// and wais://. Most web developers also know about the file:// handler to access local files when developing a web site. Recently, I ran across the notes:// handler to create URLs to launch in the Notes Client. These additional handlers might not seem like a big deal, but think about using them in the following ways:

For any web form used to upload images, you can give an immediate preview of the image that they are uploading using the file:// handler. Simply create some passthru HTML with an IMG tag and have the SRC of that IMG tag changed every time the a new file is selected through the Browse button. The onChange event for File Upload Control is set to "preview.src=this.value". Hint: This can be set through the File Upload Control Properties dialog by using the Other field on the HTML tab.

We build a number of applications that are Notes Client only and would like to have an easy way to proliferate them. The easiest way is through our Quickplace-based Intranet, since that is where we have conditioned users to go to get the information they need. Now, all we need to do is put a link up there using the notes:// handler and presto, the user is taken to the Notes Client and directly into the database you want. In fact, it's even added to their desktop for future use, not that they would even notice.

Domino, XML, and Flash: What a 3-way
A while back, we were tasked with creating an application to allow our Job Sites to upload photos monthly to show the progress of the project. In actuality, it was to make sure that our signage was displayed properly to make sure that every one knew we were building here. One of the things we were initially looking at was to get image information from the EXIF data on the picture. Due to time constraints, we never implemented that feature, but we were still interested in doing something more with the pictures once we had them.

One of the other developers, Chad, came across SlideShowPro, a Flash slideshow, that he thought might just be wheat we were looking for. The Flash file took an XML stream of data and built a very simple and visibly pleasing slide show. Because there would possibly be multiple documents with multiple attachments for each Job Site, the initial "quick and dirty" attempt to pass the XML using a view was not successful. Instead, I took about 30 minutes and whipped up the following agent to spit out the XML:

  Dim session As New NotesSession
  Dim db As NotesDatabase
  Dim view As NotesView
  Dim collection As NotesDocumentCollection
  Dim doc As NotesDocument
  Dim thisdoc As NotesDocument
  Dim doccreated As String
  Dim photo As NotesEmbeddedObject
  Dim photoname As String
  Dim current As String
  
  Set thisdoc = session.DocumentContext
  Set db = session.CurrentDatabase
  Set view = db.GetView("SlideShowPro")
  Set doc = view.GetFirstDocument
  
  Print "Content-type: text/xml"
  Print |<?xml version="1.0" encoding="utf-8"?>|
  Print "<gallery>"
  While Not(doc Is Nothing)
    doccreated = Format$(doc.Created,"mmm dd yyyy hh:mm AM/PM")
    
    Forall i In doc.Items
      If i.Type = ATTACHMENT Then
        Set photo = doc.GetAttachment(i.values(0))
        photoname = ReplaceSubString(photo.Name,"&","%26")
        photoname = ReplaceSubString(photoname,"#","%23")
        If current = "" Then
          Print |<album title="| & doc.job(0) & |" description="Updated: | & doccreated & |" tn="/databases/opsphotos.nsf/| & doc.UniversalID & |/$file/| & photoname & |" lgPath="/databases/opsphotos.nsf/">|
          current = doc.job(0)
        End If
        Print |<img src="| & doc.UniversalID & |/$file/| & photoname & |" caption="Uploaded by | & doc.full_name(0) & | on | & doccreated & |" />|
      End If
    End Forall
    
    Set doc = view.GetNextDocument(doc)
    
    If Not(doc Is Nothing) Then
      If doc.job(0) <> current Then
        Print |</album>|
        current = ""
      End If
    End If
  Wend
  
  Print |</album>|
  Print |</gallery>|

There is probably a more elegant way to get to the names of the attachments. In fact, as I write this, I think I am going to add a computed field containing @AttachmentNames so that I don't have to go through all the Items on the document. In any event, in less than a day, we were able to implement a simple solution to show off Job Site progress by marrying a Flash file with an agent producing XML data from documents in a Domino database. And the best part is that the executives who really eat up the fluffy stuff will never know how easy it was to do.

JavaScript Soundexing Function
Scott Good is high on using @Soundex when searching the address book. Unfortunately, this is not easily available using JavaScript. After doing a little research on the web, I wasn't very satisfied with the soundexing functions that were out there. I did find a great reference on rules for soundexing words on the Califorinia HHS AIDS site. It seems that they are using soundexing for matching names in their database of HIV/AIDS cases. Any ways, after getting the rules straight, I was able to write the following code:

function getSoundex(startname) {
  var startstring = startname.toUpperCase();
  var endstring = startstring.substring(0,1);
  var previous = "";

  for (i=1; i<startstring.length; i++) {
    switch (startstring.substring(i,i+1)) {
      case 'A' : case 'E' : case 'I' : case 'O' : case 'U' : case 'Y' :
        previous = "";
        break;
      case 'B' : case 'P' : case 'F' : case 'V' :
        if (previous != "1") {
          endstring = endstring + "1";
          previous = "1";
        }
        break;
      case 'C' : case 'G' : case 'J' : case 'K' : case 'Q' : case 'S' : case 'X' :  case 'Z' :
        if (previous != "2") {
          endstring = endstring + "2";
          previous = "2";
        }
        break;
      case 'D' : case 'T' :
        if (previous != "3") {
          endstring = endstring + "3";
          previous = "3";
        }    
        break;
      case 'L' :
        if (previous != "4") {
          endstring = endstring + "4";
          previous = "4";
        }
        break;
      case 'M' : case 'N' :
        if (previous != "5") {
          endstring = endstring + "5";
          previous = "5";
        }
        break;
      case 'R' :
        if (previous != "6") {
          endstring = endstring + "6";
          previous = "6";
        }      
        break;
    }
    if (endstring.length == 4) {break;}
  }
  switch (endstring.length) {
    case 1 : endstring = endstring + "000"; break;
    case 2 : endstring = endstring + "00"; break;
    case 3 : endstring = endstring + "0";
  }
  return endstring;
}

There is one rule that I did not feel like trying to code for.  IMHO, Rule #12 dealing with abbreviations was not going to be worth the time it took to write.

Update: Ok, I officially hate Soundexing for use with AJAX. The problem is that it doesn't handle partial names very well. You have to get enough letters entered to get the soundex code correct. This document gives a good overview on how to implement a soundexing index, including some of the pitfalls. It may be time to rethink the method behing my current madness.

Google Shortcuts
Jeff Atwood followed up Damien's link to the Google Cheat Sheet with one of his own. It's absolutely amazing what you can do with a well written URL.
What Does Your Name Mean?
SEANSTEWARTBURGESS
S is for Saucy
E is for Exuberant
A is for Adaptable
N is for Nice
S is for Serene
T is for Temperamental
E is for Expressive
W is for Wonderful
A is for Astounding
R is for Refreshing
T is for Twisted
B is for Brilliant
U is for Unusual
R is for Responsible
G is for Gutsy
E is for Earnest
S is for Serene
S is for Scary
No 2 loops are created the same
As some of you may know, I am an official for wrestling in Maryland. This past season was my first year in the striped shirt and I enjoyed being the one to make the calls on the mat. One this I wasn't quite impressed with was our associations web site. It's so bad that I am not going to link to it until I have a chance to do some clean up. Any ways, I was implementing CSS on a copy of the site I downloaded using HTTrack Website Copier and was trying to make the image roll-overs easier to manage. Basically, I am a lazy person and would rather come up with a few lines of code to do something instead of having to maintain that something in lots of other places. While searching the web to come up with a solution, I can across some JavaScript functions that I had not used before. Here was the finished function I came up with:

1 function setImageEvents() {
2 var imgs,i;
3
4 imgs = document.getElementById('navigation').getElementsByTagName('img');
5
6 for (i in imgs){
7 imgs[i].onmouseover = function() {imageswap(this,"off");}
8 imgs[i].onmouseout = function() {imageswap(this,"on");}
9 }
10 }

A couple of lines were pretty new to me. Line 4 gets an array of images in the navigation DIV. I had used both methods previously, but not in conjunction. I did not know you could get an array of objects on a web page in this manner. Totally Kewl!!!! Well, almost Totally Kewl, but I will get to that later. Line 6 uses a For...In loop, which is very similar to the ForAll loop in LotusScript. The difference is that instead of i being an element in the array, it's just an index pointer for the array. Finally, Lines 7 and 8 set the functionality of the onMouseOver and onMouseOut events for the images in the array. Basically, the function just passes the image and state to a separate array that changes the image.

The creme de la creme of this new function is that it worked in both IE and Firefox and looked so much nicer than the normal For loop that just counted up the values of i. Plus, it allowed me to pull all of the inline JavaScript out of the page so the HTML is extremely clean. The new HTML file is 1/3 the size of the original file and is much easier to manage.

But since this is the WWW, it couldn't be that easy. It seems that IE and Firefox hand the For...In loops a little differently. In Firefox, an index number is returned for i. In IE, it returns the ID of the element. For this routine, it worked fine because all of the elements had IDs, but I ran into a problem in another routine that looped through Links on a page because none of the Links had ID attributes set. Just something to keep in mind for future work. Oh, how I love standards.

CNET: Reversal: Next IE update divorced from Windows
Isn't healthy competition a wonderful thing?

Reversing a longstanding Microsoft policy, Bill Gates said Tuesday that the company will ship an update to its browser separately from the next major version of Windows.

A beta, or test, version of Internet Explorer 7 will debut this summer, Microsoft's chairman and chief software architect said in a keynote address at the RSA Conference 2005 here. The company had said that it would not ship a new IE version before the next major update to Windows, code-named Longhorn, arrives next year.

[...]

Analysts attributed Microsoft's change of heart to the progress of the Mozilla Foundation's Firefox browser, which has made incremental but steady market share gains against IE in recent months. In a survey conducted late last year, Firefox nudged IE below the 90 percent mark for the first time since the height of the browser wars in the 1990s.

Nothing is better for advancing the human race than a little open competition. It will be interesting to see what MicroSloth does with this opportunity. If done right, it could stop Firefox's gains dead in their tracks, but if done wrong, it might hasten the defection.

Link to CNET Article

CNET: Sunday Smackdown - Spyware
CNET has a feature that pits Spybot Search & Destroy vs. Microsoft Antispware Beta 1 in a no holds barred, fight to the finish cage match for the title of "Greatest Spyware Killer". So be sure to cast your vote and puts your 2 cents in on the subject.
3 Interesting articles in WIRED
I ran across 3 articles in Wired that I found interesting. The first article entitled Photographer Seeks Resolution describes Graham Flint trek across America with his 4 Gigapixel camera. Yes, I said 4 Gigapixel. It's amazing what surplus military equipment can do in the right hands.

Armed with a self-designed camera he crafted from parts of spy planes and nuclear reactors, Flint is crisscrossing America, taking thousands of pictures of cities, monuments and national parks.

Weighing more than 100 pounds, Flint's camera captures images at 4 gigapixels -- a resolution high enough to photograph four football fields and capture every single blade of grass. When printed at maximum resolution, the images are as big as billboards, but render the finest detail.

Too bad that camera wasn't available to the Umpire when that damn Yankee kid stole the game from the Orioles.

The second article is called Scientists Find Missing Matter. I know that my finding an article like this interesting mystifies my wife to no end, but I total guess that's the geek in me showing through.

Given that multiple simulations have continually yielded the same result, they theorized that the rest of the normal matter, known as baryons, must be hiding somewhere in the space between galaxies. However, they haven't had much evidence to support the theory until now.

[...]

Even with the new evidence, they plan to keep looking, said Nicastro. That's because intergalactic baryons not only fill a gap in scientists' understanding of the universe, but they may also lead to a better understanding of "dark matter," a mysterious and unseen form of matter that has so far only been detected by the gravitational pull it exerts on other bodies in the universe.

The more we know, the more we understand exactly how little we actually know.

Finally, it seems that all is really not well in Redmond. Hide Your IPod, Here Comes Bill shows just how popular the IPod is an how much it kills MicroSloth.

"About 80 percent of Microsoft employees who have a portable music player have an iPod," said one source, a high-level manager who asked to remain anonymous. "It's pretty staggering."

The source estimated 80 percent of Microsoft employees have a music player -- that translates to 16,000 iPod users among the 25,000 who work at or near Microsoft's corporate campus. "This irks the management team no end," said the source.

So popular is the iPod, executives are increasingly sending out memos frowning on its use.

[...]

"These guys are really quite scared," said the source of Microsoft's management. "It shows how their backs are against the wall.... Even though it's Microsoft, no one is interested in what we have to offer, even our own employees."

Oh yeah, sending out a memo will definitely solve the problem. I just wonder who's reaction is better, Gates' or Jobs'.
I want one of these
I want one of these devices from Canary Wireless.
The Digital Hotspotter™ Model #HS10
A full-featured Wi-Fi detection and analysis device, the HS10 provides information on signal availability and strength as well as essential network information, including ID, security status and channel. The Digital Hotspotter is currently backordered. We expect to have additional inventory in mid to late February.
Price: $49.95
This would have come in real handy at Lotusphere.
So you want some more code
One of the things that Rocky stressed in the Blogging BOF was the importance of posting as much code as you feel comfortable with. Well, I am not sure how comfortable I am with it, but here goes nothing.

One of the problems I always run into when building web applications is validating text entries against a list. This comes into play when ComboBoxes or ListBoxes are not viable due to UI requirements or list lengths. There doesn't seem to be a real JavaScript equivalent to @IsMember(x;@DbColumn). This situation came up recently in our timecard entry system and I found a relatively simple way to build a JavaScript function to validate the fields in question.

First, create a computed text object that is passthru HTML and set it to the following formula:

tmp := @IfError(("case '" + @DbColumn("":"NoCache";"";"NameofView";3) + "' : return true; break; ");"case '' : return true; break");
@If(@IsDocBeingEdited;"<SCRIPT LANGUAGE=\"JavaScript\">function verifyFieldValue(fv) {switch (fv.toString()) { " + @Implode(tmp;@NewLine) + " default : return false; } }</SCRIPT>";"")

What this does is create a huge Switch-Case loop into the form that can be accessed from any other JavaScript code. While this doesn't seem like a big deal when you are only validating one field, the form in question has the ability to handle 50 fields of the same kind that all need to be validated. The validation code looks something like this:

for (var i=1; i < 51; i++) {
  eval("tmpchk = f.this_field_" + i + ".value");

  if (tmpchk != '' ) {
    if (!(verifyFieldValue(tmpchk))) {
      alert(tmpchk + ' is an invalid [field label]. Please select from list.');
      eval("f.this_field_" + i + ".focus();");
      return false;
    }
  }
}

This is probably the only time where using numbers at the end of like fields really comes in handy. Also, by substituting an HTML view for the @Implode(tmp;@NewLine) function, you could remove any of the limitations that you might encounter with @DbColumn. Finally, this type of function is easily duplicated for validation against multiple lists.

Code for this page was formatted using the E2 Source Code Formatter.

My Flickr is up and running
Lotusphere73

I have added most of my Lotusphere pictures to Flickr and they are open to everyone. I have added the relevant ones to the Lotusphere 2005 and Lotus Domino Bloggers groups. Let me know if you want the high resolution images for personal use. Also, I have added a Flickr Badge to the left hand navigation to make it easier to get to the pictures I post.

Rocky’s So Cruel

A sick sense of humor is a terrible thing to waste.

JS to launch links in a new window
I have added some simple JavaScript to my template that launches all external links into a new window. The script is as follows:

function links(){
  for (var i = 0; i < window.document.links.length; i ++){
    if (window.document.links[i].hostname != "") {
      window.document.links[i].target = "_blank";
    }
  }
}

Thanks to Chad for getting me started on this after hearing my bitch about having to add TARGET attributes for all my links. It works quite beautifully.

Pulling Exif info from JPEG files
A problem came my way yesterday that I think is very interesting and am hoping to come up with a kewl solution. Basically, the request is to create an application where users can upload digital photos of job sites in progress. Since the users are Superintendents at the sites, we want to have them enter as little information as possible, but we need to know the date of the photo and the job site that it is of. While we can do a few things about automating the job information, especially if the person uploads photos for only one site at a time, we would really like to be able to pull information about the photo from the EXIF information each contains and to resize the photos to a standard resolution. I have begun investigating this and have found a few examples, all of which are relatively complicated. We are probably going to use ImageMagick to do the resolution manipulation. Any ideas or example for pulling the EXIF data would be much appreciated.
New Addition - Virus Table
Just for grins, I have added live Virus statistics from our Proofpoint Protection Server appliances. These stats are updated every hour during the normal work day. You can view them on the bottom left of the page. I love that the appliance gives the ability to generate the statistics as a JavaScript page for easy inclusion in other HTML pages. I will look at other reports that are available on the appliance and hopefully come up with some other good nuggets of information.
SECURITYSEARCH: New Trojan targets Windows flaw

A Trojan horse program is targeting one of the security holes recently found in Windows. It doesn't look serious, but experts worry bigger exploits could be around the corner.

Meanwhile, Microsoft confirmed it's investigating the reported vulnerabilities and blasted Chinese security forum Xfocus for bringing the details to light over the holiday weekend. An attacker could exploit the vulnerabilities -- discovered by Venustech Security Labs of China -- to cause a denial of service and launch spyware or other malicious code.

Link to article on SecuritySearch.com
See Mary Quit Online
The American Legacy Foundation, an anti-tobacco organization that was born from the 1999 settlement with Big Tobacco, has a web site called Mary Quits that is dedicated to documenting one woman's fight to quit smoking.

Mary is a real live 26-year-old woman who lives in the Washington area. Mary is not her real name; she’s just using it for this campaign. Her attempt to quit smoking was documented over the course of four weeks this summer.

She’s an organization manager working in the field of education and has smoked about a pack a day for eight years. This is her fourth attempt at quitting. She says in addition to the fact that smoking aggravates her asthma, her main reason for trying again is her impending marriage. She’s engaged and hopes to wed within the year. If you were to meet her in person, you’d notice she’s self-aware, honest, attractive and an extremely warm person who’s very easy to like.

This strikes me as a very ingenious way to market the anti-smoking message. There have been a number of radio spots on local stations promoting the site. Not sure if it will have any direct impact on smoking in this area, but I think it is a nice way to get the message out.
The SPAM stops here
Today is a beautiful day in my world. Would you like to know why? Because today is the day that we put our Proofpoint Protection Servers into production. In the 4 hours since turning it on, over 4200 SPAM emails have been blocked, along with 346 emails containing viruses. That's over 2/3 of the incoming email for our company. My Domino environment should start to really cook now that it doesn't have to deal with routing all that crap.
Web Services: Getting too complicated?
CNET.com has an article about whether the specifications for Web Services are becoming too complex to be useful for the average corporate developer.
That ongoing process of specification development has caused consternation among some people, who claim that programmers and their employers cannot absorb the flow of new specifications. There are now more than 30 specs, which include hundreds of pages of technical guidelines. IBM and Microsoft have fostered the development and publication of many of those specifications, referred to collectively as the "WS-*" or "WS-star" rubric.
I have not yet begun to look at using Web Services in any of my applications, but I can see the need arising in the near future. The thought of having to wade through all of these ever changing specifications is very daunting.
vowe knows what wife means
What WIFE really means
No such thing as original code
I have had the pleasure of reusing some very good code recently. First, Julian has a new Date Picker tool that works so much cleaner than the one I was previously using. Of course, I didn't build that one either. :)

Second, I needed a simple slide show for the site I built for my brother-in-law's construction business. it was so weird working in pure HTML without a real back-end to store everything. Anywho, the JavaScript Slide Show from BarelyFitz Designs was just what I was looking for. It was very straight forward and easy to implement and allowed me to generate a 8 line function to populate the show just the way I wanted.

Kudos to both the developers of these useful tools.

Browser Wars II
"Today's builds are the new candidate 1.0PR (preview release) builds," Asa Dotzler, the Mozilla Foundation's community quality advocate, wrote in a Web log posting Saturday night. "If all goes well with these builds, they'll become the official Firefox 1.0 Preview Release builds on Tuesday morning."
Link to CNET Article

Link to dowload Firefox 1.0

People who annoy IT
Julian has a list of People Who Annoy IT. Take some time an add your favorite to the list.
Blogs as the new Cell Phones
In the early to mid 90's, the really cool and important people were the only ones who had cell phones. Nowadays, every snot nosed kid and people who can't program the clocks on their microwaves are jabbering on state of the art mobile phones. The same used to be true for Blogs. Only the true geeks used to spend time putting their words out in cyberspace of other true geeks to read. It was an exclusive club that gave free memberships to D&D Card holders. But now blogging has really started to enter the mainstream and is even threatening the established media as an alternative for gathering information.

Blogging is the hottest thing on the Internet since, well, the Web browser. This is not news, as just about everybody who spends time online is maintaining a blog, regularly reading and contributing to a blog, or knows someone who is maintaining or regularly reading and contributing to a blog. And blogs are everywhere. The National Institute for Technology & Liberal Education Blog Census has logged about 1.9 million Weblog sites, 1.2 million of which are in English.

What is news is that bloggers and blogging are killing journalism as we know it. This is scary but not necessarily bad. I'll try to sort it out.

Scot Petersen raises some interesting questions in his Throw Another Blog on the Fire article on eWeek. It will be very interesting to see how this new outlet influences the real media.
Kewl Windows Utilities
Ned's blog had a link to Mike Lin's web page. On it, Mike has a bunch of nifty utilities that might be of use to you in your daily battle with the Evil Empire's minions. I think the WindowsSizer is going to be truly helpful for me. Don't forget to donate to his PayPal account if you find something useful.
Hack the planet
Hackers was a movie that looked really cool to kids and people who knew nothing about computers. It played up the stereo-types of hackers being kids with way too much time on their hands, an ungodly amount of knowledge about all computer systems, and the ability to get into any system in the world. Unfortunately, the real world isn't built the same way unless you have a pointy-haired person running your systems. Not only that, but I never I have an Angelina Jolie look-a-like sitting in the cubicle next to me. Regardless, there are still a number of pale skinned, sleep deprived geeks out there looking to get into whatever system they can.

While I am more interested in keeping such people out, I am also interested in exploiting some of the kewl sites that are out there. One such site that everyone seems to want to exploit is Google. My latest issue of the informIT newsletter had an article entitled Google Hacking Mini-Guide by Johnny Long.

By using the basic search techniques combined with Google's advanced operators, anyone can perform information-gathering and vulnerability-searching using Google. This technique is commonly referred to as Google hacking.
Long's article is very informative on how you can use Google for on your own systems and how others might use it to try to gain access to your site. j0hnny's own site, http://johnny.ihackstuff.com/, is a more in-depth resource for using Google to the fullest and a great souce for googleDorks. It will make you think twice about putting anything personal on the web.

A couple of interesting pages.....
I ran across a couple of pages I found interesting.

Encrypting your email address
Just in case I am the only person out there who hasn't encrypted his email address on his Blog, a nice little page by Hiveware writes the code to put on your site encrypt your address. Here is an excerpt from their explanation on why to do it:
Posting your email address on your web-site is a sure-fire way to get an Inbox full of SPAM. One way to protect yourself is to "encode" your address, making it more difficult to discover. This tool is useful for protecting an email address on a web-page, not for sending email. Lots of people ask about this.
I am not really worried about getting SPAM on that account, but wanted to use the tool as a proof of concept for some of the extranet applications that I am building.
e-Pro: Top Ten IM Acronyms Include One for Aggression Toward Boss — HTH
e-Pro had an article about the top workplace messaging acronyms.

According to the survey, the 10 most commonly used acronyms for workplace instant messaging are (acronyms used in speech, such as FYI and ASAP, weren’t included in the survey):

  1. BRB - Be right back
  2. CTRN - can’t talk right now
  3. IMO - In my opinion
  4. HTH - Hope this (or that) helps
  5. IAM - In a meeting
  6. WFM - Works for me
  7. BFO - Blinding flash of the obvious
  8. DHTB - Don’t have the bandwidth
  9. IHMB - I hate my boss
  10. SLAP - Sounds like a plan
I think that WTF is one that shouldn't have been left off, as in "WTF was he thinking".
Freaking Google Toolbar
So, just to see what the grass was like on the other side of the fence, I replace my Yahoo toolbar with the Google toolbar in IE. I have been using less and less of the services that Yahoo provides and am always going to Google for searching. One of the features that I enabled was AutoFill, which will fill in your personal information on forms that ask for it. Since I fill out a ton of forms on the web, this can do nothing but make my life easier. Unfortunately, I didn't read the fine print before I took my laptop upstairs to do a demonstration of the SubGuard application.

So here I am, going through the application, when I see that something doesn't look quite right. On the forms I am demonstrating, the background of the required fields are supposed to be taupe in color, but for some reason, a few of them a bright yellow. Furthermore, the phone number field is bright yellow and it isn't even required. This isn't the way the form looked last night when I was messing with it. I looked at the source for the page and couldn't find anything that was causing the problem. So I swallowed my gripes and chalked it up to something that was mistyped somewhere in the style sheet or form and continued on with my presentation.

When I got back downstairs, I thought about what had changed between last night and this morning.....The Google Toolbar!!!! And sure enough, one of the option is to highlight all of the fields that are available for AutoFill. I turned that option off and the form went back to normal. Instances such as this are shaving valuable days off my life through no fault of my own. And here I thought only children were supposed to do that.

Great Movie Characters
Rocky has a nice thread going about great movie characters. Be sure to stop over and give your Top Ten.
JavaScript Pet Peeve of the Day
Since I was a Notes developer before there was JavaScript (JS), I am constantly griping about things that JS makes so difficult. I am still bitten by the case sensitivity that has never made any sense to me. It usually takes me going home and coming back in the morning until I can see that I entered If instead of if.

The latest thing that doesn't make any sense to me has to do with the way you handle checkboxes (CB) and radio buttons. For some reason, the people who developed JS decided that handling a CB with only one option is very different than handling one with 2 or more options. I only found this out because my validation function for CBs bombed on a field with one option. For multi-option CBs, the length property returns the number of options since the options are looked at as an array . For single option CB though, the length property returns undefined since the options are not in an array. Say What??? Exactly how is that consistent and why they heck would you do such a thing?

For a normal CB, you would check to see if the first option was checked using document.forms[0].cb_name.options[0].checked == true. An example of it is as follows:

JDEdwards
Network Drives
Lotus Notes
Is Check Box Filled?

The function used to check if the CB is filled is as follows:

function testCheckboxFilled(checkboxname){
var f = document.testform;
var x = checkboxname.length;
var chk = false;

for (var i=0; i < x; i++) {
if (checkboxname[i].checked == true) {
chk = true;
}
}

if (chk == true) {
f.isfilled.value = "Yes, It's Filled";
f.isfilled.style.color = "Green";
f.isfilled.style.backgroundColor = "White";
} else {
f.isfilled.value = "No, It's Empty";
f.isfilled.style.color = "Red";
f.isfilled.style.backgroundColor = "Yellow";
}
}

But for a single option CB, you would check to see if the first option was checked using document.forms[0].cb_name.checked == true. An example follows:

Lotus Domino
Is Check Box Filled?

The function used to check if the CB is filled is as follows:

function testCheckboxFilled2(checkboxname){
var f = document.testform2;
var chk = false;

if (checkboxname.checked == true) {
chk = true;
}

if (chk == true) {
f.isfilled.value = "Yes, It's Filled";
f.isfilled.style.color = "Green";
f.isfilled.style.backgroundColor = "White";
} else {
f.isfilled.value = "No, It's Empty";
f.isfilled.style.color = "Red";
f.isfilled.style.backgroundColor = "Yellow";
}
}

In my mind, this is totally silly. There must be some performance related reason to treat them differently or maybe they were simply following the example of other languages. Whatever the reason, it's a total pain in the ass to have to code things differently. I am glad that LotusScript follows consistent rules, at least most of the time. LOL

Interesting bit of Social Engineering
Our generic web administration account received an interesting worm email today. Below is the contents of the email:
From: support@[our domain].com
To: user@[our domain].com
Subject: E-mail account security warning.

Dear user of [our domain].com,
Your e-mail account has been temporary disabled because of unauthorized access.
For further details see the attach.
For security reasons attached file is password protected. The password is "80631".

The Management,
The [our domain].com team
http://www.[our domain].com
The email contained a ZIP file, information.zip. Inside the ZIP was a single EXE file that would cause major havoc if I opened it, I am sure. As of yet, I could not find the exact name of the worm that is contained in the email. I suspect it is something relatively new. My NAV did not try to quarantine it, so it might not be named yet or they just might not have a fix. Luckily, ScanMail running on our Domino server stripped the virus out so I am not worried about an infection here at work.

The question that lingered in my mind was will these type of socially engineered worms and viruses every be able to be stopped by technology? How much responsibility should the IT department feel for the naivete of the user community? When can we start putting more blame squarely on the shoulders of the people who proliferate the viruses? I expect the answer to the last one to be never. I mean you really can't blame the sheep for being eaten by the wolves. I mean, they are only sheep, after all.

On a happier note, why don't you visit the Calvin and Hobbes Extensive Strip Search. Just watch out for stuffed tigers ready to pounce on unsuspecting targets.

Bush Gets Blogged
The Washington Post had an interesting article about a blogger who documented his recent meeting with ole Dubbya. The article was particularly interesting because the meeting was closed to reporters.
Little did they know that behind those doors, one of the regular Americans whom Bush was meeting was a blogger.
Behold the power of the blog.
SearchSecurity.com: Microsoft ASN flaw may be biggest defect ever found
A path released on Tuesday to fix a critical flaw in MicroSloth's Windows OS. This flaw effects multiple versions of the OS, including NT 4.0, 4.0 TSE, 2000, XP and Server 2003.
"This Microsoft ASN.1 library vulnerability appears to have as much destructive potential as [the worm] Blaster and has more attack vectors," said Scott Blake, vice president of information security at Houston-based BindView Corp. "We believe attacks will be conducted remotely over the Internet, via e-mail and by browsing Web pages. We expect to see rapid exploitation -- it's simply a case of when it materializes."
The constant release of patches is not something that I see going away anytime soon.

Link to Article on SearchSecurity.com

I feel like such a lemming
Bowing to the pressure of my fellow Domino bloggers and the other developer here at work, I have downloaded and installed Firefox 0.8. The main reason for the installation is to check my applications to make sure that they will run in this browser. The installation went off without a hitch and I started to look at my apps. The first thing that I noticed was that my CSS doesn't seem to be followed the same as in IE. So, I hopped over to my site to see what it looked like. Let's just say that I was not happy at all. The DIV for the right list of links is not lining up correctly and the backgrounds are not working correctly. I am going to have to work a while to see what changes are needed to get this site looking like it should. ARGH!!!!!!
Current Score: MyDoom 1, SCO 0
It seems as though the virus writers got this one right.  Here is an excerpt from CNET's News.com article:
SCO said an onslaught of data had made its usual Web site, www.sco.com, "completely unavailable." The attack began Saturday night and by Sunday morning the software company's site was completely flooded with requests, Utah-based SCO said.

Here is another section from an eWeek article:
According to Blake Stowell, director of public relations for the Lindon, Utah, company, "Hundreds of thousands of MyDoom-infected PCs are attempting to contact our site. It's as bad as anyone thought it could be."
It will be interesting to see if the virus is modified over the next couple of weeks to extend the DDoS on SCO.
MyDoom.b With a Vengence
It seems that someone has taken MicroSloth's motto of "embrace and extend", or rather "seek and destroy", to heart in the new variant of the MyDoom worm.  As you can see in this excerpt from an eWeek article:
A variant of the MyDoom worm discovered on Wednesday does more than launch a denial-of-service attack; it also locks out infected users from contacting Web sites that can come to their assistance, including most antivirus companies and Microsoft.
MS has not confirmed that there is a second variant of the virus out in the wild yet, but, since it is supposed to attack them on Feb.1, we won't have to wait long to see if it really exists.
LMAO © Booble
I ran across this story on SlashDot about a lawsuit involving Google.  It seems that they do not like being parodied, especially by a not so reputable site.  
We have recently become aware of your website at http://www.booble.com (the Domain Name). This Domain Name is confusingly similar to the famous GOOGLE trademark. Your web site is a pornographic web site. Your web site improperly duplicates the distinctive and proprietary overall look and feel of Google's website, including Google's trade dress and the GOOGLE logo.
This is one case in which I expect the plaintiff to win pretty easily.

In another story, the IBMer responsible for everyone's favorite three finger salute (CTRL-ALT-DEL) is retiring Friday after over 28 years of service at IBM.  Thank you David Bradley for saving my butt more than once when I started code I shouldn't have.
At a 20-year celebration for the IBM PC, Bradley was on a panel with Microsoft founder Bill Gates and other tech icons. The discussion turned to the keys.  "I may have invented it, but Bill made it famous," Bradley said.  Gates didn't laugh. The key combination also is used when software, such as Microsoft's Windows operating system, fails.
Unintended Consequences
I wonder if SCO Group Inc. had thought of this when they claimed that Linux included copyrighted code from their version of Unix.  It seems that the latest worm to hit the Internet, MyDoom, specifically targets their web site for DoS attack.  The Reuters article I was reading today stated:
Anti-virus experts said the worm was designed to attack the Web site of the SCO Group Inc., the small software maker suing IBM over the use of code for the Linux operating system, experts said on Tuesday.
Were they actually expecting all of the Linux propeller-heads out there to rally to their defense of greed?  Did they not smell the sour grapes when they were writing the legal brief?  The people, who have spend their free time trying to figure out ways to bring down the Evil Empire in Redmond, now have SCO square in their sites.  This is just a guess, but I am not sure that the person who decided to file the law suit is going to be working at SCO much longer.

The real troubling thing about this new worm is that it does not exploit any Windows holes.  Rather, it's a social engineering worm that entices people to run it through just the wording of the email.  Every time a worm like this comes out, IT asks "when are users going to learn" and the answer always seems to be "never".  Those of you who don't know what social engineering is or how far it can be taken should read The Blue Nowhere by Jeffery Deaver.  It is a geek's version of the who-dun-it thriller novel.

And speaking of consquences, Buga Difino was finally unmasked in Ed Brill's Blog.  IMHO, if you have something to say and it is not completely positive, you had better be willing to put your real name down and take the flack or just keep your feelings to yourself.