Monday, September 28, 2009

Rover, Fetch!

I was busy with some code and was trying to concentrate when I heard a noise from my computer that sounded like someone or something was scratching. My first impulse was to kill all the browser windows thinking that it must be some amateur website that had some flash ad running. Yet, 2-3 minutes later, something scratched yet again. And, there was this distinct feeling that this sound was quite familiar (no pun intended!)

At this point, I killed everything except my explorer windows. And, yet I could hear the scratching sound. And, that’s when it clicked. Mr. Rover – the ever friendly search assistant had completed the “fetch” and was waiting for me to do something with him again!

How can you not like the dog! Seeing Mr. Rover again, I was reminded of an IronPython talk that Mahesh Prakriya (from the DLR team) had conducted at MS IDC. One of his demos used to show how easy it was to invoke Merlin and make Merlin do some wizardry using IronPython.

Interest piqued, moments later, I had the latest build of IronPython downloaded and was ready to make Rover appear. But now, Rover was nowhere to be found.

I asked Rover to show me his hiding place and it turns out that he’s hiding in “%WINDIR%\srchasst\chars\rover.acs.”

Copied this file over to %WINDIR%\msagent\chars and I fired up notepad2 and with the following few lines, got Mr. Rover up on the screen.

Note that you need to run  C:\>tlbimp c:\WINDOWS\msagent\agentsvr.exe from visual studio command prompt.
#from visual studio command prompt, run C:\>tlbimp c:\WINDOWS\msagent\agentsvr.exe
import sys
import clr
from System.Runtime.InteropServices import DispatchWrapper, UnknownWrapper
from AgentServerObjects import AgentServerClass
a = AgentServerClass()
#c = clr.Reference[int]();
reqId = clr.Reference[int]();
cId = clr.Reference[int]();
c = clr.StrongBox[object](DispatchWrapper(None))
a.Load("rover.acs",cId,reqId); #copy rover.acs from c:\WINDOWS\srchasst\chars\rover.acs to C:\WINDOWS\msagent\chars
c.Value.WrappedObject.Think("I fetch, therefore I am!", reqid)


Neat fun! It felt sad to read that Rover has not been invited to Windows 7.


Tuesday, September 01, 2009

Converting your Outlook Auto-complete email contacts into Address book contacts

I got an interesting query yesterday. How do I convert all the email addresses that Outlook caches into Contacts? A bit of probing revealed that Outlook stores the auto-complete cache distinct from the address book and doesn’t provide an easy way to browse the cache or to convert those entries into Contacts. The auto complete cache is stored in %APPDATA%\Microsoft\Outlook\Outlook.NK2 file.

To import the auto-complete entries into a Contacts folder in Outlook 2007:

  1. Run NK2View (download from
  2. Select all the entries and Click on "Save Selected Items"
  3. In the dialog that pops up, select "Comma delimited text file" in the "Save as type" dropdown.
  4. Give a name and save the file. Also, it might be a good idea to run the command "File -> Backup Current NK2 File".
  5. Switch to Outlook and do a File->Import and Export.
  6. Select the following wizard steps:
    1. Import from another program or file
    2. Comma separated values (Windows)
    3. Provide the file name, and select appropriate duplicates Option
    4. Select the Outlook folder to import to.
    5. Select the map
      1. Select First entry on the list on the left i.e. "Name" and drop it onto "+ Name" on the right
      2. Scroll down in the Right Hand side list till "+ Email" is displayed
      3. Select second entry i.e. email address and drop it onto Email
  7. Press Finish and the import process should begin
  8. Verify that the contacts have been imported properly


Thursday, November 13, 2008

Sound Recorder


I get the laptop upgraded to 4GB and I assumed all my out of memory errors can be now stuff of the Dead Sea Scrolls.

I fire up an instance of sndrec32 and record 5 seconds of voice when I am greeted with this!


Not enough memory available to complete this operation!

And, I have about 2 GB available as per task manager ;)

So, a basic search later, it is confirmed that I need to reduce my system RAM if I need to use Sound Recorder! Choices, choices!

Thursday, October 16, 2008

India Holidays Calendar in Windows Live


I was pleasantly surprised to see Indian Holidays listed when I updated my Windows Live Mail to the latest version.


The calendar is available online at

To add the calendar to your Outlook, use this link to the ICS Webcal://

Get Windows Live  here.

Get more calendars at

Friday, April 04, 2008

Technology for the masses?

There are interesting challenges in applied computing. One such perspective comes from Mary Lou Jespen who is the CTO of “One Laptop Per Child” project. Her interview is an insightful read into the kind of problems one might face when bringing laptops to those 5 billion people in the world who are more concerned with procurement of their next meal than the features on an cell phone or the rising costs of crude-oil making them shell out more for a joy flight over the city in their water-plane. I found the problems in designing such a collaborative computing system as mentioned in the article quite interesting. However the interview had an impact on a deeper level too, especially this statement "Normally, the industry designs IT systems for the richest 1 billion people..."

I recently read Bill Gates Harvard commencement address and that had a similar statement "At the same time, for every person in the world who has access to this technology, five people don’t." The "this" in the statement refers to a network of low-cost personal computers (aka the internet.)


That's a profound thought.



The Bill Gates Harvard commencement video

Wednesday, April 02, 2008

Recent Posts Popfly block

Added a Recent Posts Popfly block to the blog courtesy John Montgomery's blog post and Adam Nathan's block :)