shahine.com/omar/

homepage | Send mail to the author(s) contact

yet another Microsoft blogger

# Sunday, July 08, 2007

The end of Win32 based mapping software

Well, it's done. The one remaining feature that I used offline mapping software to do now exists in Google Maps. They have the ability to change the suggested route using drag and drop. I've been awaiting this feature for a long time because often the suggested route by online mappings problems falls short for one reason or another.

Jeff Atwood explains why offline mapping software can't compete with the web.

There's no reason Streets and Trips couldn't adopt the same conventions as Google Maps. But Streets and Trips seems to be completely stuck in the old world mentality of toolbars, menus, and right-clicking. All the innovation in user interface seems to be taking place on the web, and desktop applications just aren't keeping up. Web applications are evolving online at a frenetic pace, while most desktop applications are mired in circa-1999 desktop user interface conventions, plopping out yearly releases with barely noticeable new features.

This should be an unfair comparison. Streets and Trips is free to harness the complete power of the desktop PC, whereas Google Maps is limited to web browser scripting and HTTP calls to the server. Google Maps turns all those browser-based application weaknesses into strengths, by offering a bunch of online-enabled features that Streets and Trips doesn't: satellite view, real-time traffic data, and the new street view. Plus it's always up to date; we're guaranteed to be using the latest version with the newest features. And unlike Streets and Trips, it's free-- or at least ad-subsidized.

The web has won for mapping.

For my offline mapping needs I now use my Samsung Blackjack with Live Maps and my light, small, and sweet Bluetooth GlobalSat BT-359 GPS receiver.

Posted Sunday, July 08, 2007    Permalink    Comments [3]  View blog reactions

 

# Saturday, July 07, 2007

Numbers... what a fun date

I was going to try and say something original, but Adam Barr said it best.

Today is July 7, 2007, which of course abbreviates nicely as shown in the title. For some reason I like to post blog entries on days like today as proof that I did actually take note of their awesomeness, as I was experiencing it.

I can still remember the time, gosh it must have been about thirty years ago, when my father pointed out to me that it was 7-7-77.

In other news related to this date, it would have been Robert Heinlein's 100th birthday (nice how the slashdot URLs happen to have the date in them in 2-digit format, so they encode "07/07/07" for all stories posted today), which means he was also born on 07-07-07.

And Boeing is planning to introduce their new airplane, the 787, tomorrow, on 07/08/07.

In other news, it looks like I've been blogging for 6 or so years. In that time I used Radio Userland, Blogger, now DasBlog. Does anyone use Radio Userland any more?

Oh, and I'm looking forward to flying the 787 someday. It may displace my favorite aircraft the Airbus A330-200.

Posted Sunday, July 08, 2007    Permalink    Comments [0]  View blog reactions

 

# Monday, July 02, 2007

iPhone

I waited a few days so it wouldn't be crazy when I went to the Apple store, but yesterday I placed my grubby fingers on the iPhone and played with it for 10 or so minutes.

Scott Hanselman has a great write up of the experience.

The iPhone reminds me of what it's like to play and experience something I hadn't experienced before. Microsoft Surface gave me the same goose bumps. It reminded me why I am such a gadget freak. Every couple of years something like this comes along that puts a big huge smile on your face every time you use it.

It's the perfect blend of technology and art. It's a completely emotional experience. It's fun.

I did not buy one. I reserve the right to change my mind in the future, but if it did in fact support Exchange ActiveSync I would instead be writing a review rather than a "Wow" post. It's not the e-mail I care so much about, but the calendar, contacts, and tasks sync that is the killer app for me. Knowing that when I update some one's phone number on my phone that all my devices on all my computers get that update is the holy grail.

BTW, other gadgets which made me feel this way:

  • TiVo
  • Apple AirPort
  • Newton MessagePad 100
  • Newton MessagePad 130
  • Newton MessagePad 2000
  • original iPod
  • iPod nano
  • ipod Shuffle v2
  • HiDef
  • original Canon PowerShot Digital Elph

Posted Monday, July 02, 2007    Permalink    Comments [7]  View blog reactions

 

# Monday, June 25, 2007

dasBlog 1.9.7

Scott just announced that dasBlog 1.9.7 has been released.

It's been a long time comin, but this will be the last asp.net 1.1 release. Moving forward we'll release a version that runs on asp.net 2.0 only and will support medium trust. This should make dasBlog run well on a host of providers w/o mucking with security settings.

After that, Clemens has some grand plans for 3.5.

There are a ton of new folks involved on the developer list these days, and it's nice to see the community build up around the little blogging engine that could. I haven't had the time these days to spend on dasBlog like I used to, but I try and sneak in some time here and there.

I'm looking forward to stop using VS.NET 2003 though. I pretty much resort to using Virtual PC these days since it's the only reasonable way to develop for .NET 1.1.

Posted Tuesday, June 26, 2007    Permalink    Comments [3]  View blog reactions

 

# Thursday, June 21, 2007

A data file did not close properly...

image

I see this message every time I launch Outlook.

I have deleted my ost file. I have run scanpst on every single store. Still no luck. I have searched the web, and only found other people with similar problems.

Anyone know how to make this stop?

Posted Friday, June 22, 2007    Permalink    Comments [45]  View blog reactions

 

It's June, and no AMT Tax Relief

If you aren't factoring the AMT into your taxes, and you:

  • have a mortgage
  • live in a state with income tax
  • have high property taxes

then get ready to pay the Government a few thousand dollars on April 15th 2008. As of now, there is no AMT tax relief in site for tax year 2007.

To come up with a realistic picture of my tax liability here is what I do. I factor my AGI (Adjusted Gross Income) by not including state income and property taxes into my AGI. In other words, the only deductions that I factor are:

  • Mortgage Interest
  • Charitable Donations
  • Personal Exemptions for myself, my wife, my child

And that's it. By doing this it offers me a simple way to calculate my paycheck withholding without using an AMT calculator.

BTW, I have paid the AMT tax for the past 3 years. However, in those years congress passed temporary relief that moved the floor of the AMT to adjust for inflation since the AMT rules originally went into effect. This year the AMT floor is the same as it was in 1969.

Hopefully something will be done about the AMT this year, but I would not bet on it as this revenue is factored into our budget, and offering relief will only serve to broaden the gap between our spending and our tax revenue.

Posted Thursday, June 21, 2007    Permalink    Comments [2]  View blog reactions

 

# Sunday, June 17, 2007

First Father's Day

Kinda cool to now experience a holiday thanks to this one:

image

Little Sarah is now 7 months old, and doing really well. She is quite a joy! 

Posted Sunday, June 17, 2007    Permalink    Comments [2]  View blog reactions

 

# Wednesday, June 13, 2007

Designing for Services Dependencies

Most folks that have never worked on services probably think that services are powered by a bunch of boxes sitting in a data center. While that might be true, it's often not apparent just how dependencies might be treated when designing for services.

This post should be titled "Assume your dependency will fail, so design for that reality". A lot of services talk about the mythical 5 nines (99.999% uptime), I don't think that's possible with large Internet scale services. Many services try and achieve 3 nines (99.9% uptime). Here is a handy table which tells you how much down time you can expect with different reliability percentages.

Reliability Downtime / year
99.999% 5 min
99.99% 53 min
99.9% 9 hours
99.8% 18 hours

So, if you want your service to have 3 nine's then you can afford 9 hours of downtime per year. That means that the service is on its ass and no one can use it.

Noticed that I qualified that statement. What does downtime actually mean?

Well, first step is to take a look at your application. Can you classify your dependencies? Dependencies for Hotmail might look like this:

  1. Login
  2. Address Book
  3. Mail Store
  4. external script / static content dependencies
  5. ...

This is of course a simplistic list. There could be dozens of dependencies. Let's look at a few.

Login

If Passport is down, we are on our ass. Why? Well no one can get credentials, so you can't get your mail. If Passport is down, so are we. Dependency mitigation? Pray.

Address Book

In Windows Live, the Address Book is a shared service that Hotmail, Messenger and Spaces all use. This is a critical part of our infrastructure, like Passport, so it poses an interesting challenge.

If the Address Book goes down what happens? Well you can still login, get your inbox, read your mail, reply to your mail and so on. However, you can't compose mail to people in your address book, you can't edit or view any contacts, and maybe a few other things don't work.

Well, how does your code handle this?

  1. Do you fall on your ass?
  2. Do you throw exceptions?
  3. Do you swallow the errors and give the user some basic experience?
  4. Do you send thousands of requests to the service that is down, creating a bottleneck on the network, consuming TCP/IP, making the problem worse (if you have thousands of servers all trying to talk to a service that is offline, that's bad for them when they try and get back online).
  5. Do you queue requests?
  6. Does your operations team have the ability to block any connections to the service that is down?
  7. Do you even have visibility into this or do you require customers to call or email you to tell you that the address book is broken?
  8. Is this a synchronous request? If so is it a blocking call and how long before you timeout?

I could probably come up with more questions, but you get the idea.

In our world, we do not have "planned downtime" or "planned maintenance". Our service is designed to run 24 x 7 w/o any hardware being taken out of service for upgrades or whatnot. That means we have to handle every kind of failure we can... this includes networking gear dying (do you have hot spares?), hard drives failing, machines melting, power going out, fragmented heap space (memory allocation issues), other services impacting us, edge caching failing and so on.

The Food Chain

It's useful to know where you are in the food chain. In Windows Live, after Passport, Hotmail is a big dog. Meaning, other smaller services often come along and say things like "just call us on login" but they have no idea what they are asking for. In most cases, this is a guaranteed way to tip their server over on day one. Not many services are built to our scale, and it still amazes me how naive some people are about this. Adding some code to our login path is simply unacceptable if it degrades performance.

For some services you need to develop a hot cache of the data. Something like Address Book for example. In Hotmail we need the address book to do auto-complete, to see if a message is safe or unsafe (based on who is in your address book) and so on. It would be very expensive to build out an Address Book service that could handle all the real time requests of our service. So, we cache data to optimize the experience we can deliver to the user.

Architecture

This whole issue begs the question of what's your architecture? Why not just put everything on one box and have lots of those boxes. Can't do that at scale... why?

Different boxes should serve different purposes. This is to segment single points of failure but each application has different hardware needs. For example, boxes that store credentials should be in a secure cage. This is to prevent tampering.

Stateless Frontend machines should be separate from Statefull backend machines. Why? Frontend machines that are statefull can be taken out of service, can be overbuilt for capacity, can be cheaper machines with different memory and so on. Backend storage machines, which do represent a single point of failure, need to be running 24 x 7 and the system should ensure that there is some form of redundancy to prevent the user from not getting their data.

Multiple service consumption may require that boxes have ACLs open to different machines in different places using specific ports, protocols or access patterns. This requires some amount of segregation.

There is a fine line though between creating a million specialized services, and just the right number to keep your team and operations team sane.

Planning for new dependencies

I've talked a lot about big dependencies, but what happens when a new one comes along. Here is a typical scenario.

Brand New Feature X in Hotmail has a dependency on Team B to deliver. Team B says they will deliver on 6/1/2007. Ok, well our next release is shipping on 6/2/2007 (or some date in the future close to Team B's release date). What do you do about it?

Build Feature X assuming:

  1. Team B's stuff is there and working when they say it will.
  2. Team B can't say with 100% certainty they will hit their dates, place a mechanism so that you ship your code, but disable the feature some how.

I hope you picked #2. You see, there are two problems with #1. Team B can slip, which will then force you to slip. You want to be predictable and in control of your destiny right? Well assume Team B won't deliver on time. No offense to Team B, it's just business after all :-).

The other problem is that Team B could very well ship on time, but then their service will fall on its ass the following day because something they didn't anticipate happened.

When mitigating this situation you need to answer 1) how critical is this dependency to our application functionality and 2) where in the food chain are they? If the feature is something small, and the are low in the food chain, place a config that you can us to enable/disable the feature. If the feature is core to your experience then regardless of where they are in the food chain you need to mitigate this correctly.

You now solved the problem of how you can ship your feature without caring about Team B's ability to deliver. What happens after Team B delivers and Team B's service goes down or gets very very slow because they aren't built to scale? You don't want to give away time from your 9 hours right? Well, you handle that failure scenario as I mentioned above, protect the user from the other service, give your OPs team or monitoring tools visibility into the service as the failure starts to happen (so that preventative measures can be taken, like closing the doors on communication to that service) or monitor the situation to see if you can deal with the latency or # of failures while escalating to the other team.

You need to have real time monitoring in place to ensure that if something goes wrong appropriate action can be taken to prevent your service from doing something bad, or to prevent your server from falling over.

Remember, 9 hours in a year is not a lot of time.

Posted Thursday, June 14, 2007    Permalink    Comments [1]  View blog reactions

 

Most annoying Vista Feature: Replace Confirmations

In months of using Vista, I am generally very happy with the upgrade. There are dozens of features I have come to rely on, and a few that have just saved my ass a few times. However, there are things I do all the time, that are far worse on Vista.

Z-Order bug when copying files via FTP.

I copy files to my FTP server quite frequently. I like doing it from the shell cause it's fast and easy. However, whenever I try and replace a file that already exists I am greeted with this:

image

When what I want to see is this:

image

But this dialog is hiding behind the useless dialog saying it's calculating the time required to do something.

It doesn't stop there. Annoying issue #2.

Copying files locally or to a network share is annoying.

First thing is that I am greeted with this:

image

It seems that calculating time happens forever, while file copying just hangs out.

Then when you are replacing duplicate files you get this:

image

Holy Cow, hoe much information do I need to read here? And why are so many colors pictures and icons use? Compare this to XP where you have a dialog I don't even remember what it says, followed by some buttons I just know to click. The only improvement I can think of here is that you can check "Do this for next n conflicts" as opposed to just putting up a modal dialog each time.

I'd be happy if issue #1 is fixed in SP1, but issue #2, while annoying, I can live with.

Posted Thursday, June 14, 2007    Permalink    Comments [11]  View blog reactions

 

Welcome Outlook...

to the blogesphere

Posted Thursday, June 14, 2007    Permalink    Comments [0]  View blog reactions

 

# Tuesday, June 12, 2007

Art

One of the neat, subtle things about Microsoft is the Art Collection. On our SVC Campus they just completed a major rotation of artwork. Kinda sad as I grew to like some of the artwork, but now we have a bunch of new things to see and appreciate.

Not many companies have amazing art collections. While you do see a lot of posters on the walls of Microsoft, you also see a broad, diverse set of pictures, sculptures, paintings and so on. It's one of the nice things about Microsoft.

There is an article in CNN about the Microsoft Art Collection. In Silicon Valley the art is very well integrated into our cool building design. I love this quote in the article:

When asked why Microsoft collects art, Klein answered, "Because they can. And they should. They are involved in culture. Technology is culture. And the art informs the culture."

One of my favorite portraits that used to be on our campus is this picture by Wayne Thiebaud.

Theibaud

[via Adam Barr

Posted Wednesday, June 13, 2007    Permalink    Comments [1]  View blog reactions

 

Sansa Express

This is sort of a non-review I guess. I still get a subscription to PC Magazine and Maxum PC. Every so often there are useful tidbits in there. Well in the latest issue I read about the Sansa Express player from SanDisk. I was intrigued by it's cheap price ($60), 1GB of storage, built in USB Stick, OLED display and FM Tuner.

I have an iPod Shuffle, nano and 30GB Player. I wanted something as small as a shuffle but with a screen and FM Tuner. You see, I love the shuffle, but the problem with the shuffle is that if I load it up with a podcast or two, I can never get to it so I can play. Also, if I am randomly listening to music, I usually don't want the shuffle to select a podcast in the middle of my tunes.

Well, the Sansa Express is still in my car. I'm returning it today because in my infinite wisdom I realized something after I got home. All my music is in the AAC format right now. I also have all my music ripped as WMA Lossless on my Media Center, but I'm waay to lazy now to convert that all to a lower WMA bitrate. The iPod can play AAC and MP3 but not WMA. The Zune can play AAC, MP3, and WMA. The Sansa only WMA and MP3.

At this point I can't deal with having another copy of my music library floating around. It means that if I buy a new music CD I will have to rip it 3 times. Ugh.

Anyway, the Sansa Express seems like a great little player. Of course it could suffer from horrible usability like every other player out there (minus iPod and Zune). Anyway, back to Fry's it goes. I hope there is a tiny Zune player in the works, or a shuffle with a display.

Posted Tuesday, June 12, 2007    Permalink    Comments [3]  View blog reactions

 

# Monday, June 11, 2007

Hotmail + Outlook = Sweet

At long last... experience Hotmail inside of Outlook.

What used to be a subscription only offering is now available to anyone that wants it. While Outlook used to have the ability to talk to Hotmail via DAV it was flaky and 2 years ago we no longer offered it to new users of the service.

Well the new Outlook Connector has a few notable features that you didn't get with the old DAV support:

  1. uses DeltaSync, a Microsoft developed HTTP based protocol that sync's data based on change sequence numbers. This means that the server is stateful about the client. Whenever the client connects to Hotmail, the server tells the clients of any changes that happened since the last time the client connected. This is super efficient and allows us to offer the service to many users at substantially lower overhead than stateless protocols. This is the same protocol utilized by Windows Live Mail. It's similar in nature to exchange Cached Mode or AirSync, the mobile sync stack used by Windows Mobile Devices.
  2. Sync of Address Book. Your Messenger/Hotmail contacts get stored in Outlook.
  3. Sync of Calendar (currently premium only)
  4. Sync of allow/block lists for safety/spam

I've been using the Outlook Connector for about 3 years now and it's one of the first things I install on a new machine. It lets me stay on top of my mail while at work.

Hope you enjoy rich client access to Windows Live Hotmail.

Oh, if Outlook isn't your cup of tea, you might try the new Windows Live Mail client download from http://get.live.com/betas. If you have ever used Outlook Express or Windows Mail, this is a great upgrade with a killer feature: Photo Mail.

This officially rounds out our mail story. You can now have access to:

  1. http://mail.live.com - web based email
  2. http://mobile.live.com - mobile web based email
  3. Windows Live Mail - free desktop client based email
  4. Outlook - desktop email
  5. Window Live for Windows Mobile - mobile email on your Windows Mobile Device (WM6)

End to end, I think that's pretty impressive.

Posted Tuesday, June 12, 2007    Permalink    Comments [23]  View blog reactions

 

OMG, Safari for Windows?

Now this is something I was never expecting... Apple has released Safari on Windows. That is a seriously bold move.

Are cross platform applications back in? This brings the major list of Apple Windows apps to:

  • iTunes
  • QuickTime
  • Safari
  • AirPort

Should we expect more? Aperture, iPhoto and iMovie would be welcome additions (in that order).

I wonder what Apple is up to? Is this a ploy to increase web compatibility of sites rendered in Safari? Is this a ploy to make the web look good on iPhone? Who benefits from this the most?

update: just finished playing with Safari. This is 100% a Mac program. There are no Windows Controls or anything in the app. In fact it looks like it's running on top of an emulation stack if you ask me. Does Apple have a Mac OS X Emulator for Windows? It looks like it... down to the Font Rendering.

Posted Monday, June 11, 2007    Permalink    Comments [7]  View blog reactions

 

# Saturday, June 09, 2007

Windows Live Writer beta 2 and dasBlog

image It's no secret that Windows Live Writer is simply the best blog authoring tool out there. What I love is how innovative that team is. Rather than being held hostage to the many blog APIs out there, they have defined awesome ways to provide extensibility and self description of blogging capabilities. From their support of RSD to the latest set of APIs, they keep pushing the envelope by keeping the product fresh and relevant to bloggers. Witness the fact that WordPress and Typepad both have support for this, as well as open source blogs like Subtext and dasBlog.

The best example of this is their recent API support that allows blogging engines like dasBlog to be much better integrated. Scott wrote about this on his blog, and I just updated my blog to take advantage of this. For any existing dasBlog users this is just a drop in upgrade.

Having said that there is one very important bug fix to the blog APIs in dasBlog to support the synchronization of posts to Live Writer. This will be in the upcoming 1.9 release.

BTW, my fav feature of WLW beta 2.... red squiglies. If your app ain't got background spell checking, then it's pretty useless to me. Why? Jeff Atwood says is best:

"People absolutely adore background spell checking. It's one of those rare "you'll get it from me when you pry it out of my dead, cold hands" features that users will switch applications over. Automatic background red-squiggly-underline spell checking in HTML forms is one of the marquee features of Firefox 2.0. In fact, it's feature number two on the feature page, right under tabbed browsing."

Posted Saturday, June 09, 2007    Permalink    Comments [4]  View blog reactions