How Smart Are You?

How smart are you? A very challenging little game, some people can do it in 5 minutes, apparently others take a year... took me about 20 minutes.

MSN 7 Beta


  • Thanks to Jamers for the official update.  I will keep this short since most people on the internet can't read apparently.
  • Go here - Bottom of the page.  Basically - Install Journal Viewer from Windows Update and all other updates.  Which should have been done anyways.


  • Minimum requirements for handwrite capabilities are as follows:
    * Microsoft Windows XP or Microsoft Windows 2000 with Service Pack 3 or above.
    * Microsoft Windows Journal Viewer 1.5. ( )
    * Security Update for Windows Journal Viewer (KB886179). ( )


    I recently installed the latest beta release of MSN Messenger 7.  I really hoped for a couple of features that I felt were lacking in MSN Messenger 6. Well I was very glad to see that must of these features were added/fixed.  Ever tried to invite another user to an existing conversation?  It is a pain, you have to click the Invite button then go through your contact list, if this wasn’t bad enough the contact list is sorted alphabetically regardless of groups so no one is where you expect them to be.  This has been resolved, you can finely drag and drop like you tried to do a million times before.  The next thing they fixed was just a really minor annoyance, my picture was too small.  I like my pictures, they are informative and witty and I wish to see them as much as I wish others to see them.  Now the picture for yourself is the same size as your conversation partner (with the option to put it back to small if you are not a narcissist like me).   MSN toast also has the person’s picture in it, which is interesting, but just another distraction as you notice the person you never speak to has changed their picture. 

     If I could stop here I would be a happy MSN 7 user, however there is more.  Winks and nudges are the devils spawn.  I’m not really sure when it started, but flashy useless functionality has become the opiate for the masses, and as expected they apparently love it.  MSN 7 has added two little pieces of functionality that I highly doubt they had overwhelming requests for.  The aforementioned winks and nudges.  Winks are little flash cartoons that people can send you and play on your screen.  Cool the first time, but by the second time the novelty has already worn off and you are searching the options to turn them off. Can’t stop them entirely but you can turn off the Auto-Play function.  The next is nudge, which basically violently shakes your conversation window when you receive one.  Clearly this annoying, and MSN stops you from sending more than one of these in a certain time span, which leads me to believe that they KNEW it was annoying.  Yet it continues to exist.  I turned this off too.  Microsoft I beg of you, get rid of these features. Cut the bloat.

    The last feature is not something I have any use for, but I assume the tablet pc and pocket pc users of the world will enjoy it.  You can hand write your messages (no character recognition available in this beta).  This feature also seems to be backwards compatible with MSN 6 and 4, but not  for Mac users, sorry.

    Other functionality worth mentioning:

    -         Can now set your status before you login

    -         Feature packs.  You can now buy sets of emoticons/backgrounds/etc

    -         History from your last conversation shows up when you start a new conversation.  Very helpful for those long drawn out conversations.


    UPDATE: The Beta is now public and can be downloaded from
  • Is Google Taking Over My Computer?

    It has been rumoured for months, but finally today it was announced that google had entered the Desktop Search business with Google Desktop. Anyone that has ever used Microsoft Windows Search knows it is a big pain, and it is slow and the indexing is pretty bad. Needless to say I've been looking forward to the newest addition to the Google family, and I downloaded it as soon as I heard.
    Right off the bat I had a bit of a problem with the install not working because I had Microsoft Firewall Client Version 3 installed, instead of version 4. Even though this is disabled it would not let me continue the install.
    Once I was past that problem, it was fine and I started playing with it. It is amazing. Amazing.

    It does a one time indexing of your system when there is some idle time, and after that it just keeps track of new and changed files as you work. The searches are amazingly quick and search text files, Word docs, Excel spreadsheets, Outlook mail, browser cache, and all your file names. To do a search for 'jpg' took 0.04seconds and it returned every picture on my computer and every email in which I ever sent, or mentioned a jpg file in. Amazing. Why have you not downloaded it yet?

    There is one beef that I have. I've considered this problem and I've decided it might be a premeditated decision, but I hope it is not. Google Desktop does not look at .cs files, as a C# developer this is very frustrating. For the VB.NET guys it doesn't do .vb files either... Google Desktop will treat .java .c .h .cpp files as text files AND allow for a "filetype:c" or "filetype:java" search. But nothing on .cs files. Google what is the deal with this? I also haven't been able to find anyway to change how certain file types are handled.

    Despite this problem I still love it, it integrates itself with so that any search on the site will also tell you if you have matches on your own machine, this is done by intercepting google requests and then merging your results with the html when your response comes back. None of your personal info is sent to Google, rest easy. The only thing that is sent is how many searches are run, and how long they took, and even this you can opt out of.

    Google is the greatest thing in the world, Dave will tell you how much he loves Google if you ask him.
    As well as taking over the internet, it is also taking over my machine, I now have my Gmail, and the Gmail Notifier, Picasa for all my pictures, Google Desktop, and Google Deskbar. I don't mind this take over a bit.

    Clipboard Copying Problem

    I recently ran into a problem with the clipboard that is apparently a fairly common problem without a common answer.
    The problem occurs while making a temporary copy of the clipboard.

    I needed to put something into the clipboard, but I didn't want the user to lose what they already had in there, the easy way that I assumed would work looked like this:

    IDataObject oldClipboard = Clipboard.GetDataObject();

    //random clipboard manipulation here


    The true ensures that the data is held in the clipboard even after the program closes.  This solution meets with a "The requested clipboard operation failed" message if there is ever anything actually in the clipboard originally.


    So here is the proper way of making a copy of the clipboard data, assuming of course that you have no idea what is in the clipboard before you arrived.  An important note if you aren't aware of how the clipboard is structured.  When you copy text out a richtextbox it is actually stored in several different ways:
    Rich Text Format
    Rich Text Format Without Objects
    RTF As Text


    The solution:

    IDataObject oldClipboard = Clipboard.GetDataObject();

    DataObject newClipboard = new DataObject();

    string[] s;

    s = oldClipboard.GetFormats(); //gets all the possible formats for that data

    foreach(string ns in s)


    newClipboard.SetData(ns,oldClipboard.GetData(ns)); //re-associate the old data with the proper types


    //this is where your clipboard manipulation goes.

    Clipboard.SetDataObject(newClipboard,true); //true makes sure the data persists



    Web MSN plus SP2 and BitTorrent

    Well MSN has knocked one of its shortfalls of the list (it's pretty long).

    I heard last week that Microsoft had openned up a web-based version of its popular MSN client, but everytime I tried it the site seemed to be down. However it seems to be up and pretty stable, and it's pretty nice too. Microsoft seems to be doing some pretty great things with WebGUI's, WebOutlook looks almost identical to normal Outlook, and now web MSN looks amazingly like MSN as well.

    So everyone give it a try at


    Also a note on SP2, anyone installed it yet? I heard a lot of bad things during the beta stages, I assume that Microsoft fixed all these problems before they turned it Gold, but I'm still a little hesitant. IBM has apparently asked its users to hold off with the install. Apparently this is routine, but I now have a mounting list of 'apparents and hopes'. The list of improvements does sound nice though, maybe not for myself (but the new WiFi improvements should be interesting to see) but more for the family that I have become the unofficial tech-support for. There is a good article at NeoWin about the improvements and beefed up security.


    My last note is that at you can get a Torrent for the new SP2 (which is a pretty big file). I'm glad to see that there are people trying to show a legal use for P2P before the US Government ups and makes it illegal. My car has illegal uses too, but I haven't heard of any bills before the US Congress to ban cars for any use...

    Canada Lost The Stanley Cup?

    More than a few of my American friends have used Tampa Bay's win in the Stanley Cup finals as an attempt to bash on Canadian hockey. 'Canada hasn't won a cup in more than a decade'.
    Haven't they?
    Yes geographically the cup has not been won by a team north of the border. But where do you think the cup spends most of its time in the off-season? Canada. Each players gets a day (or week, some amount of time) to bring the cup to their home town. Which means that the cup will spend 2 days south of the border this summer.
    Thats right, Tampa Bay has 19 Canadians and only 2 Americans.
    Ben Clymer (5 Games, 0 points, 2 shots)
    John Grahame (1 Game (only 34 minutes), 3.54 GAA, 0.884 Save %)

    And here are some interesting numbers related to the NHL's yearly hardware giveaway. Big thanks to Gord for the numbers.

    There have been 112 Stanley Cups:

    111 Canadian Captains.
    107 Canadian goalies.
    39 Conn Smythe Winners, 37 Canadians.

    Can you name the non-Canadians? One of the Conn Smythe winners is easy, the other, won back in 1994...
    You can email me at daforsyth !at! if you want the answers.

    49 Norris Trophy Winners, 39 Canadians.
    Lidstrom 3 times, Chelios 3 times, Leetch twice, Rod Langway twice (actually born in Taiwan).

    76 Vezina Winners, 65 Canadians.
    Before 1982 this was essentially the Jennings and I believe that the 100+ Goalies that received the Vezina prior to 1982 are all Canadian. I could be wrong on a couple though.
    Also of note is that of the 11 non-Canadians winners, 6 of them are Hasek.

    30 Jack Adams, 30 Canadians. This year might be a first, but my vote is with Sutter.

    33 Lester B. Pearson Awards (NHLPA voted MVP), 27 Canadians. Jagr twice, Hasek twice, Naslund, Federov. Hull may be a legal american, but he was born and bred on Canadian hockey so I don't count him as an exception.

    80 Years of Hart Trophies. 73 Canadians. Hasek twice, Jagr, Forsberg, Federov, Mikita twice. Once again I count Hull as a Canadian.

    86 Scoring Leaders/Art Ross, 76 Canadians. Jagr 5 times, Mikita 4 times, Forsberg once. For this I'm hazy on the pre-1960 winners, but I'm fairly certain they were all Canadian.

    So there are the numbers, also of note though is that most news outlets are reporting that Calgary had up to 5000 more people at their 'we lost' party than Tampa Bay had for their 'we won' party...

    Don't get me wrong, I would have loved Calgary to win the Cup, but by the same token lets not pretend this is an Olympic Gold Medal won by a team of all Americans..... back in 1980.....

    Thanks to Dave for the flag.

    Not Open Source, but the next best thing?

    I'm not really interested in a big arguement on the merits of Open Source software, I think it has its place in the software world, and so does closed source. So whats the next best thing? Open and well documented API's, SDK's, and protocols. - Outline the MSN assistant with the MSN API, and Speech SDK. Make note of the MSN protocol. - Why this is great, overwrite, or side by side

    MSN API and Lazy Programming?

    In my never ending quest to please Barry I've decided to post another blog, 2 in as many days.

    A couple weeks ago I was reading Eli Robillard's blogs on Lazy Programming, simply happy that someone had blogged a topic I could relate to. As a side note, Eli's wife Marcie is an amazing person who would do anything to help a friend and colleague get what they need.... more on this later hopefully.

    If you haven't read Eli's posts on Lazy Programming I strongly recommend it, and don't write it off just cause it has the word Lazy in it, you will regret it.
    All this talk of laziness got me thinking of my own laziness. I decided that my own laziness is my greatest source of inspiration. The greatest of all the little programs and web apps I've created have been 'lazy' induced, apps to work for me, so I didn't have to.

    The most current of the lazy projects is my MSN Assitant. I got tired of waiting for certain people to sign-on to MSN, but I hate being told about EVERY person that signs-in. So I created a little program that would pop-up some toast when the person I was looking for came online. Easy enough.
    Only a few weeks later the next problem revealed itself. From the couch I could see that someone had written me, but I couldn't read who, or what was being said.
    Now if you are an enthusiastic person you might be yelling at me to get off the couch, but I'm not like you. So the solution was clear, I needed to work in Microsoft Speech and the MSN API so that when a message is delivered it can be read to me. Depending on the message I can then decide for myself if I should get off the couch, I'm actually liberating myself from MSN.

    MSN API - The MSN API for MSN 4 was an amazing bit of work, simple and easy to use. You could send and receive messages, look through your contacts, simply great.
    The API for MSN 6, is simply put, horrible. I'm sure there were some excellent security reasons behind the changes to the API (better have been). Microsoft decided to remove the built in capability to send and receive messages. Unfortunetly MSN 6 has better functionality so you won't find many people using MSN 4. MSN 4 API will not work if the user has MSN 6 running.

    So I can't easily receive messages, as a lazy person my first instinct is to quit, my cost/benefit analysis is thrown all out order, but the potential pay off is WAY to great.

    So I stumbled upon MSN Fanatic which is a great resource site for the MSN API, they had some good suggestions. Basically involving using the WinAPI's to read from the textbox's the comprise a standard msn conversation window. This seemed plossable, but a pain, so I went the easy way, monitor the conversation history, strip out the new line, if it was spoken by someone otehr than me, speak it.

    Microsoft Speach SDK - Another brilliant little peice of work, if you are looking for something nice and simple that will read some text, this is a dream. A couple of lines of code and your computer is reading to you in a selection of voices ( that pretty much all sound the same if you ask me )

    Monad, it isn't just danom backwards anymore.

    I'll be the first to admit that I haven't been paying a whole lot of attention to Longhorn. I went to the token meeting, I listen to Barry and Dave, but that's about as far as my indoctrination goes. However, maybe today that changes. I started to read a couple articles on the Monad Shell (MSH).

    The Monad Shell is Microsoft's kick at the powerful shell engines you find in the *nix systems. As a recent graduate from the academic world which is ruled by the *nix systems, I've always held that a decent shell engine is what Windows lacked the most (I've also added a decent file search engine now).

    MSH introduces the new concept of a Commandlet (Cmdlet), these cmdlet's are the new .exe, .bat, or .com with a twist. The cmdlets are in fact .NET libraries, more closely related to a DLL than an EXE.

    With the help of reflection and metadata inside the class, MSH will validate and map command line parameters to the properties of your class/cmdlet. Metadata is also the mechanism that MSH uses to identify a normal class library from a cmdlet.

    So far this all sounds somewhat interesting, and maybe useful, but the best is yet to come.
    Piping. Microsoft has done something great here, they have taken the already great idea of piping and improved it 100%. Gone are the days of piping text, here are the days of piping objects. Here is one of the examples from the WinHEC presentation. get-process | where “handlecount –gt 400” | sort handlecount | out-chart processname,handlecount I think its pretty self-evident what is happening here except perhaps the last piping command. out-chart will apparently output the results into an excel chart using the associated values of processname and handlecount. All of these commands now return an output stream that contains and object, not just a flat string representation of what SHOULD have be an object. The cmdlets have access to more than just the single output stream as well, by default they have the output stream, and an error stream. Also available are verbose, debug, and progress streams.

    Seamless Navigation. I haven't tried this myself, but it would be nice if it turns out to be true. Microsoft claims that the new shell will enable seamless navigation between the: File system, Registry, AD, and WMI. Lets hope that's the case.

    Now, I just need to find a place to install longhorn so I can try all this great stuff out.

    The slides from WinHEC can be found here.

    Anyone played with this yet? Let me know what you think/thought.

    VS.NET Inherited Forms Bug

    VS.NET Bug. I was asked to look into a problem last week involving some moving buttons in the designer. The problem was occurring in inherited forms where the parent form contained some protected, and anchored controls. When you resized the child form in the designer and build, Vs.Net would create some interesting locations and sizes, often time off the form entirely. These location and size values are set in the InitializeComponent() which makes things difficult.

    So, after some searching and digging I found an interesting KB article, that explains its a bug.
    However Microsoft's solutions are actually the causes in VS.NET 2003.
    Basically there are a few options:
  • Once you have the controls have been moved, delete the offending locations and sizes from the InitializeComponent() and they will inherit their values from the parent again.
  • Create another size and location property and replace the erroneous values with these hard coded values after InitializeComponent().
  • Change the protection level to Friend.

    Obviously some of these solutions have their own problems, but the bug is fixed in the latest beta release of Whidbey so just bide your time for a bit.