shahine.com/omar/

homepage | Send mail to the author(s) contact

yet another Microsoft blogger

# Saturday, October 09, 2004

Virtual PC 7

Well I am really late to the game here, but I never got a chance to shout out that Virtual PC 7 is available. I don't think folks outside the product team will appreciate just how difficult it was to get this product out the door. It took a bit longer than we'd all hoped, but Virtual PC is really a testament to the dedication and hard work of the team, and some of the great resources that Microsoft offered the product.

One of the first things we did when Microsoft acquired Virtual PC was some substantial user research and usability testing. We sat in customers homes, brought them into our usability lab and really dug into what people wanted to use this product for, and what they were having problems with. In our usability testing we asked customers to configure a USB printer. Not surprisingly, > 85% of our subjects failed at this task (and grew frustrated in doing so). In addition, a lot of people complained that they weren't sure if Windows was locked up or things were just taking a while. Finally a lot of people were complaining about slow startup and shut down performance because they were booting up Windows from scratch, and shutting it down every single time they wanted to use Virtual PC! That was particularly crazy given that Virtual PC can quickly save state and resume state (which is equivalent to a Hibernate in Windows). As a result of all this Virtual PC 7 really focused on a few core things:

  1. Performance, Performance, Performance. The team will never be done looking for ways to squeeze out every % point possible, and we feel that in this version we significantly improved raw CPU performance. Now remember, I said raw CPU performance. There are a number of factors that will affect overall PC performance, such as disk performance, and machines like G5's with their SATA interfaces are going to be faster launching applications then a PowerBook G4.
  2. G5 Compatibility. This one was a no brainer and we just did the work to support this. It was no small task, and we suspect most people grew frustrated with how long it took to get a compatible version. Well, we wanted to deliver a version of Virtual PC that didn't just run on G5s, but ran significantly faster on a G5 than a G4 and that took a lot more work than just G5 compatibility.
  3. Improved Printing. One feature I got to "own" was our new Zero Config Printing. Basically, you don't need to do anything to print, so long as your printer is connected and configured to print from your Macintosh. This really went a long way to making printer configuration a non issue for users. This takes advantage of Mac OS 10.3 functionality that essentially allows us to capture PostScript from Windows and throw it over the fence to the Mac to print.
  4. Improved toolbar and CPU meter. Another one of my features was to clean up the Toolbar. We wanted it to be useful to customers and as such removed the network status (who really needs to know this), floppy icon and added a new CPU meter which will give you some sense that VPC is up to something rather than stuck cause Windows is frozen. You can enable or disable any of the buttons to suit your needs.
  5. Fast Save. This isn't a new feature really, but we just went ahead and made fast save the default when you close a VPC window and we save the contents of memory in the background. This gets VPC out of the way so you can go and do something else w/o waiting for VPC to finish saving state. It also gives you the impression that things are really snappy. Now users aren't unnecessarily shutting down windows, but can quickly launch VPC use it for a while and then quit the application w/o much overhead.
  6. Improved framerate throughput. Animation, graphics etc will appear more fluid then ever because we are offloading some of rendering to the Graphics hardware. Don't get this wrong idea, this DOES NOT improve Windows framerate, rather is ensures that Virtual PC can keep up with what Windows is trying to draw. It DOES NOT mean that you can now run games that require 3D graphics hardware (contrary to some of the rumors out there). If you run a screen saver such as the Bezier Curves and compare VPC 6.1 and 7 side by side you will see the difference. Otherwise you won't notice much except that things will seem snappy.
  7. More Secure. This is undoubtedly the most secure version of VPC to date. The team spent a long time working on this and ensuring compatibility with Windows XP SP2. This does not come for free.
  8. Improved Help. Yes, you may not use this, but we took a good long hard look at Help and overhauled it. Lots of Mac users are not familiar with Windows, so help is particularly important.
  9. Localized in Swedish. That's right, if you speak Swedish, you can now get a Swedish version.
  10. Bug fixes. Lots, and I mean Lots of bug fixes. Not every USB device in the world is going to work. There are finite resources to test every device on the planet, and certain classes of USB device still don't work (things like certain GPS receivers).

I'm a bit sad that I wasn't there to see VPC 7 out the door, but either way kudos for the team for rounding out what I think is the highest quality version of VPC ever. I had a lot of fun working on this product. One of my favorite highlights was a trip to Japan where we went on visits to user's homes and office to see first hand the kind of feedback they had for us. I can't tell you how much we all leared through experiences like that. I hope this product reflects what our users want, and am sure that the team will continue to deliver for their customers...

Posted Saturday, October 09, 2004    Permalink    Comments [18]  View blog reactions

 

# Wednesday, September 29, 2004

Bless Starbucks

So here I am sitting in a Starbucks in Madrid, Spain. I'm here for a few days on business and am staying at The Palace Hotel (Westin) which is quite a swanky hotel. However, it is lacking broadband in all the rooms, and as luck would have it, they are fully booked, and I got a room lacking broadband. This is enough to place the hotel on my black list. Even worse is that I tried dialup yesterday, got carried away (was online for about 3-4 hours) and saw that I racked up 80 euros in local phone charges. This was all to avoid going to the lobby and forking over 30 euros a day for wifi.

On a hunch, I came down to the starbucks today with my laptop and found WiFi. I can't even tell you the last time I used dial-up. It's torture.

Anyway, Madrid is a cool place. The weather is beautiful right now. I'll be doing some sight seeing this afternoon, probably at the Prado.

Posted Wednesday, September 29, 2004    Permalink    Comments [4]  View blog reactions

 

# Sunday, September 19, 2004

.NET Compact Framework Essentials

One very frustrating thing about programming with the .NET Compact Framework is that it's quite limited in how much integration capabilities you have with the device. It's very good if you build a little application that doesn't need to hook into the device, or hook into Outlook, but as soon as you want to do something like that you have to use p/invoke which involves hunting down the signatures, and testing code that I don't really understand. Luckily p/invoke.net has many of them already.

However, there are two really good options that I recently discovered.

OpenNETCF.org

This set of .NET assemblies helps you overcome a plethora of shortcomings of the compact framework. The folks who developed this did an amazing job providing excellent functionality to .NET developers. Some of my favorites namespaces are OpenNETCF.Win32 which wraps most of the p/invoke functions you'll need as well as OpenNETCF.Windows.Forms which provides some very nice Controls that .NET doesn't provide like Groupbox, NotifyIcon, Battery indicators and so on.

PocketOutlook In The Hand 

This is a superb managed Outlook Object model. Today, it's impossible to talk to Outlook on a Pocket PC using p/invoke because the framework does not allow you to call COM objects. The object model is mostly identical to the OM of it's big brother, Outlook XP/2003.

I hear that 2.0 of the framework allows you to call COM objects, but until then, avoid writing C code and head on over to InTheHand to get Pocket Outlook. It's not free, but there is a trial you can play with, and it's priced modestly. One caveat though. You need to be very careful and make sure to dispose all your objects. I didn't do this and ended up with a very sad Pocket PC after running my app for a few hours.

 

Posted Sunday, September 19, 2004    Permalink    Comments [0]  View blog reactions

 

# Saturday, September 18, 2004

KlipFolio

I've been playing around with a program called KlipFolio for a few weeks now. Not to long ago they released a new version, 2.6, and added a Hotmail Klip! This is a really cool way to keep on top of your Hotmail, w/o having to run a mail client. It allows you to view a preview of the message body, as well as delete messages. At work I keep KlipFolio running on my second monitor, along with a few other small utility windows (more about those later).

I also like to use the Stock, Weather, C|Net and FeedViewer (for RSS feeds). The product is free to download.

Posted Sunday, September 19, 2004    Permalink    Comments [1]  View blog reactions

 

RAW Windows Shell Integration

A few months ago I posted about a little piece of software that let you view Digital RAW thumbnails in the Windows XP Explorer Shell. Well, I found something even better. DPMagic has some really well integrated software that lets you:

  • View Thumbnails in the Shell
  • View a full size image preview in the Shell Picture Viewer
  • View a slideshow of the images
  • View Properties of the image, including the Histogram

You can see screenshots of all the features here.

There is a free version of the product, as well as a pay version that has all the features mentioned above.

Posted Saturday, September 18, 2004    Permalink    Comments [1]  View blog reactions

 

# Sunday, September 12, 2004

Audiovox 4100 PocketPC Phone

Well, it's been a year now since I've purchased a new phone, and well, I've been getting gear anxiety. A few co-workers in the office have the new iPaq h6315 and the Samsung SPH-i700 device. However, they are both to large for my tastes. AT&T has been selling the Audiovox 4100 for a while, and I've been holding out for the Motorola MPX which was delayed yet again. When the MPX does come out, if it's not outrageously expensive I'll buy it and sell my Audiovox.

So, I went down to AT&T and got a Audiovox 4100. I have to say, this device rocks. Sure it doesn't have Wifi or bluetooth, but with my all you can eat GPRS data plan it's not such a big deal. I've owned 2 Pocket PC devices in the past and I'm glad to be back in the Pocket PC camp, and out of the Smartphone camp. There are a number of reasons that I think the PPC device is a better fit for me. Among them are:

  • I can use a stylus to read/reply to mail (I'd rather have a thumb keyboard like the Treo 600, but no ppc phone devices have this yet).
  • Ditto for SMS.
  • T9 Input sucks. I'd rather use my fingers and a soft keyboard.
  • Higher resolution than Smartphone
  • Pocket PC Phone Edition 2003 which is 100% better than Smartphone 2002
  • Can run AvantGo and Vindigo which are killer apps IMHO. I've missed Vindigo for so long.
  • GPS integration via Microsoft Streets and Trips 2005.

Personally, I loved my Smartphone, but realistically it was a read only device. Also, the Tasks feature was fairly useless. The Audiovox device is small, and as a result fits fine in my pocket (I will not purchase any PDA/Smartphone device that will not fit in my jeans).

Finally, having just discovered Microsoft Voice Command, I can't imagine not living with it. Voice Command is like your own personal assistant. This is hands on one of the best Microsoft products out there. I installed it this morning, and activated voice and it has recognized 100% of my commands such as:

  • Call < Contact >
  • Dial < Number >
  • What are my appointments today?

This is truly an innovative, compelling product that really showcases the power of the platform. Check out the flash demo.

Posted Sunday, September 12, 2004    Permalink    Comments [2]  View blog reactions

 

# Sunday, September 05, 2004

dasBlog Security Update

If you are running dasBlog, make sure you install the security fix available for all released versions of dasBlog.

http://www.dasblog.net/documentation/PermaLink.aspx?guid=92ad6eb7-ee40-4c89-9f1e-a07c83859e63

Posted Sunday, September 05, 2004    Permalink    Comments [0]  View blog reactions

 

JimmyG on the cover of a Magazine

Well, it's not the Sports Illustrated Swimsuit Issue, but heck, I just saw this via Dennis!

http://www.itp.com/magazines/current.php?magid=7

Posted Sunday, September 05, 2004    Permalink    Comments [0]  View blog reactions

 

# Friday, September 03, 2004

On being a Resident

I'm sure not everyone knows this, but my wife is a Resident in Obstetrics and Gynecology at UCSF. We were both pre-med in college, and well, one of us went to medical school and the other did not. For me it was a decision that was made for me, I did not get in. However, this was the best thing that ever happened to me as I would be an absolutely shitty doctor. I was in it for the wrong reasons, and instead I have a job that I cherish. I consider myself very fortunate that I love to go to work.

Now about Residency. I cannot begin to understand how difficult this is. My wife often tries to explain to me some of the emotions she experiences, and the work she does but she knows I don't really have a way of understanding. I do have an enormous amount of respect for her, and her passion for taking care of people. Let’s face it; no one goes into Medicine for the money any more.

A lot of people are shocked by how the Residency system works in this country and a lot of people just don’t know. I personally believe that there is something very wrong about it. What I do tell people is that the reason we have the best healthcare system in the world is because countless people have worked long hours with very little pay and cared tirelessly for the homeless, the uninsured, the wealthy, citizen or non citizen, whomever. They never ask who you are or where you are from, and how you are paying. They do one thing really, and that’s to understand your problems and try and help you within the confines of the system. My wife never complains about the crap pay, or the hours, or the fact that we have one weekend a month to hang out. I find this humbling, and realize that I could not ever do this.

One day I visited her in the hospital after she had just delivered twins for a couple. We ran in to the Mom in the hallway and she was gushing with happiness toward my wife. I was so amazingly touched, and realized that this is probably something I'll never experience at a software company. This kind of experience is an amazing gift to give to some one.

Why am I writing this? Well Joe Beda just posted a link to a new book called “On Call: A Doctor's Days and Nights in Residency" by Emily Transue. Lora has often talked of writing a book about her experiences, and I hope that she does. I think it’s a great way to explain what life is like learning one of our most difficult and important arts.

Posted Saturday, September 04, 2004    Permalink    Comments [1]  View blog reactions

 

iPod and MSN Music

One of the more surprising things I found when checking out MSN Music is this statement.

How can I get MSN Music downloads to play on my iPod? 

Unfortunately Apple refuses to support the popular Windows Media format on the iPod, choosing to only support their own proprietary DRM format. If you are an iPod owner and are unhappy about this, please send feedback to Apple and ask them to change their policy and interoperate with other music services.

There are more than 70 portable audio devices that support MSN Music today, and we hope that someday Apple decides to join with the industry and support consumer choice.

Who ever decided that this was a good idea has a lot of balls. I can't even begin to imagine how many LCAs were involved and how high up the food chain this had to go. Why? Well in MacBU we never ever said anything bad about Apple. Why? Cause once we did and we lost. Apple has a phenomenal PR relationship with the media and turned the story pretty much back in our face and it was ugly. Everyone felt like crap.

I'm interested in seeing how this one turns out. Personally I don't care. I don't purchase music on line cause I'm a snob about audio quality. If I am going to pay almost the same price as a CD I may as well buy a CD and rip it how I want without DRM. Lets face it, DRM is a pain in the ass. I don't mind it for subscription services and streaming like with Napster because I really don't own the content. I am subscribing to it. So, I rip to WMA and AAC and have plenty of hard drive space to spare. My iPod and my Portable Media Center are both very happy campers ;-).

Posted Saturday, September 04, 2004    Permalink    Comments [7]  View blog reactions

 

# Wednesday, September 01, 2004

System.Drawing.Imaging performance fix in .NET 1.1 SP1

A few months ago I encountered a significant performance problem with System.Drawing.Imaging.

I found that by using the new Method performance was 93x faster (on average) for loading jpegs.

You can download the update here:

http://www.microsoft.com/downloads/details.aspx?FamilyID=a8f5654f-088e-40b2-bbdb-a83353618b38&DisplayLang=en

Specifically, this update adds a new method to System.Drawing.Imaging:

System.Drawing.Image.FromStream(Stream stream, bool useICM, bool validateImageData)

This is essentially a new signature for an existing method:

System.Drawing.Image.FromStream(Stream stream, bool useICM)

As you can see, validateImageData is a new parameter. Setting it to true is the default behavior that we have today (essentially the same as calling FromStream(Stream stream, bool useICM)).

So I made a change to my application. Before my code looked like this:

using (Image photo = Image.FromFile(this.fileInfo.FullName, true))
{
    //do stuff
}

So I changed it to:

using (FileStream fs = new FileStream(this.fileInfo.FullName, FileMode.Open, FileAccess.ReadWrite))
{
    using (Image photo = Image.FromStream(fs, true, false))
    {
        // do stuff
    }
}

Posted Wednesday, September 01, 2004    Permalink    Comments [1]  View blog reactions

 

# Thursday, August 26, 2004

Portable Media Center Review

If you've been wondering about PMC check out this excellent review by Corey Gouker.

I've been dogfooding (testing) a Creative Zen device since the very early days (months ago) and love it. I just leave it plugged into my MCE over night and it sync'es tv shows and audio.

Since all my music is ripped as lossless WMA, I can have WMP transcode from losless to 160 KPbs allowing me to listen to lossless music on my Media Center and take all my music with me on my PMC. I happen to love the UI and the Album Art for Music. I find it so natural to browse my music collection by looking at album covers.

Posted Friday, August 27, 2004    Permalink    Comments [0]  View blog reactions

 

# Sunday, August 08, 2004

El Alamein

Most people who visit Egypt don't get a chance to see the memorials commemorating the Battle of El Alamein. I've been twice since it's only about 2 hours from the town I used to spend my summers (near Alexandria). This picture below is one of the most powerful images I have ever photographed. I just found it today and thought I would share.

The stark contrast between the German, British and Italian memorials is notable. It's fascinating how each country chose to commemorate its dead. You can see some of the pics I took in 2000 in my gallery.

Posted Monday, August 09, 2004    Permalink    Comments [0]  View blog reactions

 

Vonage

So I bit the bullet and got service from Vonage. Last week my modem arrived and I proceeded to lay out my network topology. I am really pleased with the service. Most notably I am saving money (about $230 a year). I chose the 14.99 plan which includes 500 minutes a month (local and long distance). I still get free incoming calls and calls to other Vonage users are free. I use my phone very little (but don't want to rely on cell for everything since my wife and I want a shared number), so this is a big savings over my previous service. I get things for free that I used to pay for like Called ID and Call Waiting, but I also get free voicemail that is sent as an e-mail attachment (with voice mail notification on phones that support it), Simulring (you can have two phones ring at the same time, like your office or mobile), call forwarding after x seconds, and lots of other features. Call quality is excellent. In short I am very pleased. I chose to continue to use my existing phone number and that isn't set up yet, but they give you a free virtual number to use (it maps to your phone). Lastly, international calls are super cheap. Easily > 60% what ATT was offering me without having to pay for the privilege of cheaper rates.

<shameless plug>
if you decide to get Vonage and you want a free month of service, leave a comment or send me an email (click the email icon or contact button) and I will send you a referral. You and I will both get a free month of service.
</shameless plug>

Setup

There were some complications because I guess I am picky. Here is the deal.

Before Vonage:

Broadband = Comcast Cable Modem

Router = Microsoft MN-700 Router/Wireless AP

Now with Vonage, I have a new Motorola Voice Terminal which is also a router. However, it has less functionality than my Microsoft router, primarily it lacks support for UPnP and is very no frills. Why do I care about UPnP? Well UPnP allows my Windows PCees to negotiate ports dynamically on the router. That means things like Messenger File Sharing, Remote Assistance and Even XBOX Live work w/o having to manually configure anything. I like this.

However, the Motorola Voice Terminal implements a very crucial feature when it comes to VoIP. Essentially, it will prioritize voice packets over data packets, otherwise known as Quality of Service (QoS). This is crucial as you do not want to hear static or loose your connection if you are downloading stuff from the web. Taking advantage of this requires that you place your Motorola Voice Terminal upstream from all your internet traffic. So, here is how I did it.

Configure Motorola Voice Terminal
  1. Connect PC to the Motorola Voice Terminal
  2. Wait for DHCP to assign you an IP address. It should be 192.168.102.X.
  3. Launch IE and enter 192.168.102.1. This is the address of the Motorola Voice Terminal.
  4. Go to the Advanced Page
  5. Disable NAT/DHCP server (this was an error, it should be enabled)
  6. Enable DMZ and enter 192.168.102.2. You will later assign this address to your router, in this case my Microsoft MN-700.
  7. Click Save Changes
  8. Click Reboot.
Configure Network

Now that your Motorola Voice Terminal is connected you can proceed with your network set up.

  1. Plug Cable Modem or DSL modem into Cable or Phone Line
  2. Plug Ethernet cable between Cable Modem or DSL Modem into the WAN port of the Motorola Voice Terminal
  3. Plug your router (MN-700) into the Motorola Voice Terminal by connecting an Ethernet cable between the PC port on the Motorola Voice Terminal and the router Modem port (or WAN port).
  4. Plug your PC, or in my case my home network into the LAN ports of the router
Configure Router

Now we will configure the router (MN-700). These steps will vary depending on your router manufacturer, these steps are specific to my router.

  1. Wait for your PC to retreive an IP address from the router
  2. Type in the gateway address of your router (192.168.2.1)
  3. Go to the WAN configuration page.
  4. Copy down the gateway and DNS server information (if it is not located on this page to back to the main router home page).
  5. Change the way the router obtains the WAN IP address from Dynamic to Static
  6. Enter 192.168.102.2 in the IP address that we configured from step 6 when configuring the Motorola Voice Terminal.
  7. Fill in the remainder of the information (DNS, Gateway etc) that you copied down from step 4.

This last part is important because it basically instructs the Motorola Voice Terminal to pass through all web traffic it receives to your Router. This is essentially the same configuration you would have if you plugged the router directly in to the Cable or DSL modem. However, the Motorola Voice Terminal will still be able to prioritize the voice data higher than all the internet traffic on your network. Additionally by disabling the DHCP and NAT server on the Motorola Voice Terminal you are allowing your router to do it's job and continue to act as the DHCP/NAT/Firewall on your network allowing UPnP to function. (you don't need to disable DHCP/NAT/Firewall on your Motorola Voice Terminal. The DMZ passthrough will take care of sending all IP data to your Router).

A final note. In my apartment I have a closet where all my CAT-5, Cable and Phone lines terminate. This allows me to connect the Vonage modem to my phone switch and all my phone in my apartment are now on the Vonage network. Cool.

Here is a diagram of my network.

Update: There is an error above. DHCP/NAT should be enabled on the Vonage Router. I mistakenly said it should be disabled.

Posted Sunday, August 08, 2004    Permalink    Comments [18]  View blog reactions

 

# Wednesday, July 28, 2004

Send to OneNote from Outlook PowerToy Released

At long last, my PowerToy is live! Send to OneNote from Outlook lets you send Mail, Post items and Sticky Notes to OneNote (note, this was previously called Outlook2OneNote).

While you are there I also recommend Send to OneNote from Internet Explorer.

Both of these use the OneNoteImporter that Donovan created.

A lot of folks at Microsoft were instrumental in dogfooding the product as well as answering my never ending questions about managed programmability in Office 2003. Special thanks to Siew Moi Khor and Misha Shneerson for showing me the light.

Note, if you install this PowerToy and you do not see the toolbar icons in your Outlook standard toolbar this is because the Outlook 2003 .NET Programmability Support is not enabled. To fix this you must:

  1. Uninstall the PowerToy if you have already installed it
  2. From the Start menu, select Control Panel, and click Add/Remove programs.
  3. Select Microsoft Office Professional Edition 2003, and then select Change.
  4. Select Add or Remove Features and click Next.
  5. Click Chose advanced customization of applications.
  6. Expand Microsoft Office Outlook, and confirm .NET Programmability Support is set to Run from My Computer.

update: seems Peter has found some bugs.

  1. Navigate to Selected Item is broken. It is supposed to take you to the OneNote page you created from the Outlook item
  2. Sometime the message header isn't coming across. Not sure about this one yet.

Posted Wednesday, July 28, 2004    Permalink    Comments [9]  View blog reactions