Saturday, July 15, 2006

Windows Live Messenger or Yahoo! Messenger

I have been an IM user since around 1999, when Yahoo! Messenger first came out. Since then, I've added AIM and Windows Live Messenger. As instant messegng became an integrated part of my personal and professional life, the one thing that has always bothered me was that I needed 3 IM clients, one for each service.

There are several third-party IM clients, such as Jabber and Trillian, that federate the main IM services. The problem I have with these clients is that I need to sign up with them, which gives me yet another user ID floating around (I already have way too many of them, I don't really want more), they don't offer the same level of functionality as the major 3, or they aren't free. The last one is a big deal for me as I think IM services, just like the Internet, should be free.

All of that has finally changed. Thanks to a partnership between Yahoo! and Microsoft, I can finally slim down to just two IM clients. (It's a start, right.) Wndows Live Messenger and Yahoo! Messenger can now communicate with each other. Finally, I can use the IM client that I like the most and still keep my contacts on the other service.

This works out great for me. Over the years I have become a Microsoft convert and actually like the Windows Live Messenger interface a little better than Yahoo! Messenger. (This wasn't always the case, I preferred Yahoo! Messenger up until about 2 years ago.) I think a large part of the conversion was that I have 3 times the number of Live Messenger contacts as Yahoo! contacts.

There are a few things that I don't like about the new integration. If I have a contact that has both IM services, I have to create separate contacts for each service. There should be a way to tie both IM services together to one contact and see which service is "on" at the time. You also can't tell who's on which service unless you view the contact card. Other than that, so far, I like it a lot.

In order to share contacts like this you will need either the latest Windows Live Messenger client or the Yahoo! Messenger with Voice 8 beta.

Now we just have to wait for AOL to get the picture and strike a similar deal.

Friday, July 07, 2006

On This Day

I've always thought it was cool to be able to find out what happened in history on a particular day. This used to be limited to encyclopedias and birtday cards, but in the "information age" this type of information is available from a lot of places fairly easily.

I started searching the web and ran across some information on how to do this on a site, but the link was dead. Needless to say, I managed to track down a site the had it implemented (which I believe is the original) and was able to view the javascript code.

I have implemented a version of this on my blog and am posting instructions on how to do it. You should be comfortable with HTML, CSS, and JavaScript and not be afraid of customizing your template.

I apologize in advance for the word-wrapping in the following code sections. If you want a better formatted version of the code, you can grab it from the source of this page or email me.

The first step is to add the following JavaScript to your template. This should be added to the <head> section:

<script type="text/javascript" language="javascript">
function OnThisDay(thisDay)
var returnString = "<span class=\"on-this-day\">On this day: #Wikipedia# ‡ #HistoryChannel# ‡ #NYTimes# <br> #BBC# ‡ #Britannica#</span>";

var Wikipedia = "<a TARGET=\"_blank\" href=\"\">Wikipedia</a>";
var HistoryChannel = "<a TARGET=\"_blank\" href=\"\">The History Channel</a>";
var NYTimes = "<a TARGET=\"_blank\" href=\"\">The New York Times</a>";
var BBC = "<a TARGET=\"_blank\" href=\"\">BBC News</a>";
var IMDB = "<a TARGET=\"_blank\" href=\"\">IMDb</a>";
var Reference = "<a TARGET=\"_blank\" href=\"\"></a>";
var Britannica = "<a TARGET=\"_blank\" href=\"\"><font style=\"font-variant:small-caps;\">ENCYCLOPÆDIA BRITANNICA</font></a>";

var monthNames = new Array(

var date = new Date(thisDay);
var day = date.getDate();
var month = date.getMonth() + 1; // fixup the month number since getMonth() returns a zero based number;
var year = date.getFullYear();
var monthName = monthNames[month - 1];

var wikipedia = Wikipedia.replace(/#month#/, monthName).replace(/#day#/, day);
var historyChannel = HistoryChannel.replace(/#month#/, 10272953 + (month - 1)).replace(/#day#/, 10272965 + day);
var nyTimes = NYTimes.replace(/#year#/, year).replace(/#month#/, (month < 10 ? "0" + month : month)).replace(/#day#/, (day < 10 ? "0" + day : day));
var bbc = BBC.replace(/#month#/, monthName.toLowerCase()).replace(/#day#/, day);
var britannica = Britannica.replace(/#month#/, month).replace(/#day#/, day);

return returnString.replace(/#Wikipedia#/, wikipedia).
replace(/#HistoryChannel#/, historyChannel).
replace(/#NYTimes#/, nyTimes).
replace(/#BBC#/, bbc).
replace(/#Britannica#/, britannica)

Next, add the following CSS declarations to the <style> block:

.on-this-day-header {
border-bottom:2px dotted #999;

.on-this-day {
margin:1.5em 0 .5em;
font:78%/1.4em "Trebuchet MS",Trebuchet,Arial,Verdana,Sans-serif;

Finally, you are ready to change the actual date header. You are looking for the section enclosed by the <BlogDateHeader> element. It usually looks like this:

<h2 class="date-header"><$BlogDateHeaderDate$></h2>

You need to change the <BlogDateHeader> content so it looks like this:

<div class="on-this-day-header">
<h2 class="date-header"><$BlogDateHeaderDate$></h2>
<script type="text/javascript">document.write(OnThisDay("<$BlogDateHeaderDate$>"));</script>

If you want to customize the script, there are only a few things you need to do. The script is broken up into sections. The first section defines some constant strings that represent the output returned from the function (returnString) and the URLs for each of the sites you want listed. To add a new site, you need to add a new URL variable with the appropriate URL and add a new string replacement pattern to resultString.

The middle section computes the date information based on the date that is passed in. This part should be very simple and should not need to be changed.

The third section fills in the URL strings replacing the patterns with the appropriate values. To add a new site, once you have added the URL constant, you need to create a new variable in this section that holds the fixed-up string pattern.

Finally, we return the resultString value. To add a new site, you need to add the appropriate .replace() call to the return statement.

A week in the life of Sunbelt

Friday, 7 July 2006
The air is finally working again (for the moment) and it's a balmy 74° F in my office.

Of course, we have a mini thunderstorm (lasted about 10 minutes) that generated a waterspout that could be seen from outside our executive conference room.

Great view, unfortunately, I'm on the other side of the building so I get to see part of downtown Clearwater.

Thursday, 6 July 2006
Building maintenance decided that the compressors in the A/C units needed they replaced them. In the middle of the day by shutting the A/C off for about 2 hours. It wasn't only reached 82° F in the office with almost no airflow.

Wednesday, 5 July 2006

The real excitement, an electrical fire on the the high-tension power lines feeding many of the buildings in downtown.

We had lots of power fluctuations bringing many computers down and playing havoc with the elevators.

The air is still not working correctly.

Tuesday, 4 July 2006
HOLIDAY! (and I actually didn't do any work for a change)

Monday, 3 July 2006
The air is still dying a slow death, but with a small portable fan it's bearable...only about 78° F.

Tuesday, July 04, 2006

Goodbye Shayna

Goodbye Shayna, we miss you.

Shayan Punum Dorman
? - June 29, 2006 (approx. 20 years old)