Monthly Archives: January 2007

A Messenger detail…

One of the most compelling things about some companies’ products is the small details the customer initially doesn’t know about but discovers after using the product.   In Microsoft’s case, such details are usually usability features like a keyboard shortcuts or “intelligent” features to prevent extraneous typing.  Very rarely are the small details visual in nature.

After sending a screenshot of my conversation window to a contact of mine as a joke, he identified something odd.  The Sharing Folders icon in the toolbar showed the Windows Vista folder icon whereas on his Windows XP install, it was showing the XP folder icon.  It’s a nice detail but I only hope that in the future other more important details might be done.  I for one would like to see some Aero glass in Messenger, especially in toasts.

Here’s a screenshot of the differences of the two icons:

Skype remote callerID and control

Skype is a great tool for voice communication.   It works in nearly all networking environments, has both outgoing and incoming capabilities with the PSTN and has support for multiparty voice conversations.  The latter is one of Skype’s biggest assets which have allowed it to become the next iParty or Teamspeak.
 
The application has one major flaw however; it requires a ton of CPU power for its functionality to work properly.  Since I started to use Vista full time on my primary PC, Skype became virtually useless as during a call — the PC became incredibly slow, my contacts complained (more so than normally) about not being able to understand me and the application would bring Vista’s Aero interface and my other applications to a halt.
 
Since my poor PC couldn’t handle it, my solution was to put Skype on my server, which sits directly next to this PC.  However, since I don’t use the server much to that the point that I would see incoming calls, it became used only for outgoing calls and the rest of the time remained dormant. 
 
So since Skype has a full API available to completely control it, I looked around for a Skype Remote Control application.  Unfortunately, I didn’t really find anything that did what I was looking for.  So, I decided to make my own.
 
Initially I was going to use this as basis to teach myself WCF in the .NET Framework 3.0.  But after much trying, I just couldn’t seem to grasp the necessary concepts quickly enough to use in this project.  There doesn’t seem to be much good information out there on WCF yet – most of it’s in blog form, and a lot of it relates to when WCF was in beta and no longer works in the final RTM version.  The .NET 3.0 website tells me to buy one the MS Press books – I’ll save my $80 for something else, thanks.   WCF put aside, since this is a pretty simple project I just decided to use the standard TcpListener/TcpClient classes as I’ve used them before and can do the job lightweight without fuss. 
 
The design is simple, a server application running on the Skype PC and a client application running on the other PC.  When a call comes in, the server connects to the client, sends the necessary caller ID information and then the call can be either accepted or declined by the client.  This is the same design as YAC (Yet Another Caller ID program), which is a nice small application I use to alert the PCs on my network for landline calls.  The primarily drawback to this design is that the client can’t remotely make a call or stop a current call, so I may go back and make proper remote application sometime in the future.
 
The application lives in the notification area and there’s no additional UI beyond a Settings form in both server and client to configure the port and client hostname.  The call notification itself is just a MessageBox, as I wanted something simple that would appear quickly since a normal WinForm certainly isn’t very quick to display, especially when Windows is under load.
 
I only did this in about an hour and a half, so keep in mind that the code is largely undocumented and all the code is in the WinForm class.  Additionally, you’ll need the Skype4COM library installed. 
 
SkypeServer (to run on the Server computer)
SkypeClient (to run on the Client computer)

Outlook: let’s update your appointments!

The second thing I do when unlocking my PC in the morning is open Outlook (the first of course is to check any IMs).  Today Outlook greeted me with a dialog to update all my appointments to a new time zone.  Except, I haven’t moved to any new time zone.  I haven’t touched my date settings.  I haven’t installed any updates recently.
 
Probing further into the dialog it informed me it was updating the appointments from:
(GMT-5:00) Eastern Time (US&Canada) to
(GMT-5:00) Eastern Time (US&Canada) (Update)
 
It also provided a few examples showing some of the changes.  Nice touch.  It looked like it wasn’t going to do any harm, so I swallowed and hit OK.
 
Here’s the dialog showing while it was doing the process:
 
A sample of the log:
 
[Original Time Zone]
(GMT-05:00) Eastern Time (US && Canada)
[New Time Zone]
(GMT-05:00) Eastern Time (US && Canada) (Update)
[Time Zone Update Log]
Type: Appointment
ID: 040000008200e00074c5b7101a82e0080000000060efaf8952b6c601000000000000000010000000c9174002c3979a47898c03220fa279e1
Subject: MVP Global Summit 2007
Old Start Time: Monday, March 12, 2007 5:00 AM
New Start Time: Monday, March 12, 2007 5:00 AM
Old End Time: Friday, March 16, 2007 5:00 AM
New End Time: Friday, March 16, 2007 5:00 AM
Recurring: No
Result: Success
 
It took a good 10 minutes for it to process all 999 appointments, but the process seemed to be completely successful and all the dates and times of my appointments stayed the same.  My guess is this "update" is for the newer time zone changes this year for daylight saving time but why today it decided to pop this up I have no idea.