shahine.com/omar/

homepage | Send mail to the author(s) contact

yet another Microsoft blogger

# Thursday, August 04, 2005

Tips For Working At MS

Josh Ledgard and Kevin Briody have some good Microsoft tips. [via Furrygoat]

Here is my top 10. Many of these were borrowed from other great folks.

1. Process is no substitute for thinking

Don’t use process as an excuse, or get cornered into a hole because of process. If you use your brain, you’ll find it’s sometimes amazingly powerful at accomplishing hard things.

"we don’t pay you to type – we pay you to think"

2. Get out of your office

Seriously, get out of you chair, walk into the hallway and realize the full potential of being located near your entire team. Resist the urge to send them mail when you can just write it down somewhere and bring it up the next time you see them. On top of that, get to know your team. You’ll find you have an amazing set of co-workers who want to ship a kick ass product with you.

3. Use your product (the one your customers will)

There is no excuse for not knowing everything you can about your product. Don’t get stuck in a silo. The most successful folks at Microsoft have an amazing amount of breadth and depth to the product. If all you have is depth, you are going to limit your potential. When some one external to your team asks you a question about your product, try and asnwer it youself. Don't just reply CC'ing the person who owns that aspect of the product. You'll save an email, and learn something if you do.

Finally, you are shipping this thing to people who expect to use it. If you don't, how do you know you are shipping the right product?

4. Fix things that are broken rather than complain about them being broken. Actions speak better than your complaining.

I can’t tell you how much I value people who don’t ask to fix something, they just take the initiative and make the team’s life better. Fix one broken thing a year and you’ll be amazed at the results.

5. Make hard problem look easy. Don’t make easy problems look hard.

If you make a really hard problem look easy you are a rock star. If you make a really easy problems look hard, then you are making my life (or some one else’s) harder than it needs to be. I have my own problems, don’t bring me more of them.

6. Use the right communication tool for the job.

You need to learn how to communicate to the different people at Microsoft. You can’t talk to the planners or the marketing folk the same way you talk to you developers and testers. If you VP is on a thread, don’t reply with some useless thread propagating crap. Take discussions offline, meet with people, GET OUT OF YOUR OFFICE, and use email sparingly. Think twice, I mean three times about adding anyone to a thread. Once you do they are stuck on that thread from hell till it dies a few days later.

7. Learn to make mistakes.

Microsoft is amazingly forgiving about making mistakes. Software development is an Art, not a science. Try new things, go for the gold, be big and bold. You will screw up, don’t lament, learn and move on. Don’t make the same mistake twice.

8. Keep things simple.

Don’t over complicate things because you can.

9. Add value all the time

You are at the world’s largest software company that has some of the best minds and resources in the industry. Try and add value every day (by thinking). Help your team, co-workers, and other teams be the best they can.

10. Use their product

Make it a point to dogfood other team’s products. Get on their discussion or dogfood DLs. Try their new stuff, give them good feedback and bugs. You’ll get to know new people and personalities in the company, and you’ll be helping Microsoft ship better software. Microsoft has an amazing culture of getting and giving good candid feedback. Don’t miss out on the opportunity to help make another team’s stuff better.

Posted Thursday, August 04, 2005    Permalink    Comments [1]  View blog reactions

 

MSFT vs OMAR

Today I am announcing my year end results. Performance was good and I hit my age target of 29. I have consistently hit age targets each year representing a decent 3.5% increase in age. If you look at overally performance over the past 6 years you will see a nice and steady trend. Contrast this to MSFT which is all over the place.

My birthday wish is that MSFT grow in a similar fasion. $1 a year would be nice :-).

msftvsomar.png

Posted Thursday, August 04, 2005    Permalink    Comments [4]  View blog reactions

 

Steve Lombardi is funny

This post about Virtual Earth was just hilarious. Kudos to Steve Lombardi for having a sense of humor about the problem.

Quote:

“On a related note, a lot of you were alarmed to see that we had removed the Apple headquarters off our map. Our full plan is to of course remove each of our competitor’s headquarters from the map, but we just didn’t have time to get to this in the beta. By the time we get to our final release, we’ll have this feature nailed down. ;-)

Posted Thursday, August 04, 2005    Permalink    Comments [0]  View blog reactions

 

SyncToy

At long last, a decent free sync utility. Man I can’t tell you how excited I am about this. With 4 or so computers it’s a pain to have my photos, music etc on all of them. Today I use a very ad-hoc process.

No more! SyncToy rocks. I used it last night to sync 100 GB of WMA files from my desktop to my Media Center in “echo” mode. I love all the different modes it supports like subscribe, echo etc. Meets all my needs. I plan on using it at work to sync all my spec documents with our SharePoint server for offline access and some level of redundancy.

My only complaint with the product is that you cannot type in UNC paths to select folders, you need to browse your network, and there is no command line support. Hopefully these will be resolved in the final version.

I really have to end it to the Windows team. Between this PowerToy and the RAW Thumbnail PowerToy I’ve gotten two awesome upgrades to XP for free.

There is also a good white paper on SyncToy which is worth reading.

Posted Thursday, August 04, 2005    Permalink    Comments [7]  View blog reactions

 

# Wednesday, August 03, 2005

International Atomic Energy Agency

Yesterday I got 5015 referrals from the International Atomic Energy Agency. What the heck are they doing on my site?

Maybe building a new search engine?

Posted Thursday, August 04, 2005    Permalink    Comments [5]  View blog reactions

 

My Virtual Earth Hack

I was socializing this idea on the train ride home today. I’ve long had this application called JpegHammer that is mainly a showcase for a PhotoLibrary component that I wrote and was thinking of a cool way to integrate it with Virtual Earth to add GPS coordinates to photos (as well as view them).

My main motivation in writing PhotoLibrary was to have access to a Strongly Typed set of EXIF properties in JPEGs etc. Till a few days ago I had no reason to support GPS data cause there was no good way to get them into the photo. Well now with Virtual Earth and inspiration from Nikhilks’s Photo Map I decided it was high time to read EXIF GPS data and see if I could make my own Virtual Earth Hack (with help from viavirtualearth).

Right now all I do is located a selected photo that already has GPS data on a map using VE. The hardest parts were converting from Sexagesimal to decimal for Long/Lat, finding an HTML control (thanks again Nikhilk) that I could use in my WinForms app to render VE, and finding a sample jpg photo that contained GPS coordinates.

Next step is to allow you to browse the globe, and set the GPS location for a photo based on map data from VE, and save that in the JPEG (and eventually XMP) file. This is cool.

JpegHammerVEPrototype

Posted Thursday, August 04, 2005    Permalink    Comments [5]  View blog reactions

 

My RAID Array failed

I think my old PC figured out it was getting replaced and it didn’t like that one bit. As such my Western Digital 200GB Drive Array (RAID1) failed. One of the drives would spin, clink clank, and then spin down.

Can I tell you the importance of having a RAID-1? It’s going to save me at least a day of reconstructing all my files, applications and most importantly music and photos. I hopped on over to Western Digital’s support website and ordered an Advance Replacement drive. Should be here in a few days. In the mean time I’m running off one drive.

And before you mention it… I also back up my RAID-1 array to a second PC in the home (my media center) which has a 200GB drive that acts as a slave.

The sad thing is that Western Digital had all my info (address etc). I must have returned a drive to them before :-(. Is there no sacred Hard Drive Manufacturer? I’ve now had Maxtor, WD and Seagate drives fail in the course of 5 years.

Posted Wednesday, August 03, 2005    Permalink    Comments [5]  View blog reactions

 

# Tuesday, August 02, 2005

Dude, I'm returning my Dell

I received my dell home desktop yesterday. I was pretty excited about it, but that excitement quickly went away. Here are my issues:

  1. The Power Supply is only 150W. What the heck? This isn’t a TiVO! It’s a PC with 2 PCI slots, an additional hard drive + 5.25 inch drive bay. I tried to add my PCI-PATA RAID card from my old PC and my two 200GB PATA drives and the machine would not power on. I use RAID-1 and refuse to use a PC w/o RAID any more.
  2. The Graphics card is freaking loud as heck. It’s the single loudest thing in my room.

Dell has a 21 day return policy from the day of invoice! OMG, that was 13 days ago and I just got my PC unpackaged. What kind of company starts the clock when you place the order (and penalizes you for build time, and UPS Ground Shipping across the country)?

Anyhoo, it was a nice lesson. I’m now going to get a Shuttle ST20G5 with an AMD 64 from Newegg and call it a year. I can get the case, proc and memory for $650. I can then transfer the goods from my old PC to the new one. I should have done that in the first place, but the $700 off coupon was so tempting.

Posted Tuesday, August 02, 2005    Permalink    Comments [8]  View blog reactions

 

The origins of Kahuna (the codename)

Code names are always a fun thing to come up with. As I mentioned in my post on our Mail Beta (code named Kahuna), we wanted a code name that had something to do with water. It was pointed out in the comments of my post that Kahuna has nothing to do with water. I should have been more explicit. Kahuna is short for The Big Kahuna, and in fact this was not our #1 choice of code names. It was #2. #1 was Tsunami, which turned out to be entirely inappropriate.

Well Steve, a fellow PM, explains why we abandoned Tsunami in favor of Kahuna.

Posted Tuesday, August 02, 2005    Permalink    Comments [2]  View blog reactions

 

# Saturday, July 30, 2005

I'm done with MSI + VS

I have successfully built and used the MSI support in visual studio now for many projects. However I keep cutting myself with two problems.

RemovePreviousVersions doesn’t always work.

I just found out a little gem. If you rely on this feature there is NO WAY to garuntee that it will work. If the end user installs the first version of your product using “just for me” or “all users” and then they change their mind the second time around (on upgrade) the old version won’t be removed.

This has been a mystery for me for a long while now. I’ve been stumped, and I found the answer on Usenet. What a bummer. Any suggestions?

COM registration doesn’t always work

There is absolutely no way I can figure out a rock solid 100% foolproof way of doing regasm on a dll at install time (to register a .net dll using COM). The built in MSI property vsdraCOM does not work. I verified this on my desktop machine at work. But it works fine on my laptop. Go figure. I even wrote a custom Install action and I found out that this doesn’t work on at least one person’s machine.

I’m beginning to realize that my time is better spent doing other stuff then messing with any .NET class that needs to be exposed as a COM object. I’m just going to start pretending that this feature doesn’t even exists so I can stop cutting myself.

The reason I ran into this problem recently was to add contextual menu support to the Windows Explorer for individual jpeg files. Yes, you can do this with a registry entry (which is what I do for folders), however, if you select more than one file, the shell launches n instances of your application rather than bundling up the files as multiple arguments. Making a Windows Forms app that forces only once instance of itself to be running is non trivial and involves such things as .NET remoting which I know zero about. That leaves you writing a lot of horrible code to impliment weird COM interfaces, and exposing your class as a COM Class in .NET.

Sigh. Perhaps this will be fixed in Vista.

Posted Saturday, July 30, 2005    Permalink    Comments [2]  View blog reactions

 

DasBlog 1.8 RC1

Scott just announced dasBlog 1.8 RC1! He has put in a heroic effort with this release :-). There are tons and tons of bug fixes in this release. Our goal is to improve the stability of the product with each new release, and provide features that make hosting a blog less annoying. In this vein my fav features are below. This release really would not have happened w/o lots of prodding and work on Scott’s part. I was just slammed the last few months.

The full list of new features is here.

Also to be clear. You do not need to run the upgrader on your content files. If you want to delete all your referrals though feel free to.

  • XCOPY deployment for hosters that provide ASP.NET Impersonation.
    • This means that if your hoster sets up your account to run under your machine account, dasBlog doesn’t need any special permissions from ASPNET or NETWORKSERVICE to write to /content, /logs, and /SiteConfig. This should save folks a lot of time and energy.
    • My hosting provider, Server Intellect, supports this out of the box.
  • Anti-Spam Features
    • You can now delete referrals and trackbacks.
    • Incoming Trackbacks are validated to ensure a site is actually linking to you.
  • Admin Features
    • Captcha disabled if you are logged in as admin
    • Login issues fixed
    • Color highlighting on the Event Log page
    • Can pre/post date entries
    • Referrals are no longer logged with individual entries by default. If you have a high traffic site, this was killing performance. Referrals will always be logged in the event log file. The DasBlogUpgrader can optionally trim your dayFeedback files of all the existing referrals (I just did this)
    • Deleting Comments, Referrals, Posts occurs w/o a postback to the server and an interstitial confirmation page (we now use JavaScript)
    • Themes are easy to install, remove, and copy.

You blog spammers can now pound salt.

This will likely be the last release of dasBlog that supports .NET Framework 1.1. The focus for the next release will be moving to Whidbey, refactoring, and trimming a bunch of code to make dasBlog a lot leaner (and faster). We’ll also be looking to take full advantage of the 2.0 features.

Posted Saturday, July 30, 2005    Permalink    Comments [1]  View blog reactions

 

# Friday, July 29, 2005

Story of Kahuna

Imran has a great post on the beginings of our hotmail re-write. This was a full month before I showed up, and got my crash course in Hotmail :-).

Posted Friday, July 29, 2005    Permalink    Comments [0]  View blog reactions

 

Book Review: The Art of Project Management

When I saw that Scott Berkun was writing a book called The Art of Project Management I was pretty excited. Scott spent much of his career as a Program Manager at Microsoft, and I knew that the book would be chock full of information that goes into great detail about what this wacky job is about, and what it means to be a great Program Manager.

On my flight to and from Shanghai, I read the book mostly cover to cover. I say mostly because it’s 448 pages! The reality is that some of the chapters were just plain obvious to me, so I skimmed them. This book will be whatever you want or need it to be. If you are brand new to the PM job, or a seasoned veteran who joined a new team and is trying to explain to the folks around you what your job is about, this book will help you. I know it’s going to help me.

I would go so far as to say this. If you are in this role at a software company, and have been doing it for less than 3 years, this book should be your text book. Nothing will matter more in your career than having a good grasp and mastery of many of the skills highlighted in the book. If you are an old timer, then this book will be an interesting read to say the least, if not help you with a situation you might be facing today (or tomorrow).

While I’m not going to write pages and pages about this book, I though I would highlight some of my favorite chapters or sections. I wrote and underlined a lot in my copy and I plan to go back and reference these things when necessary.

A Brief History of Project Management

This is the first chapter in the book and has a lot of meat! The main take always for me in this chapter were “The simpler view of what you do, the more power and focus you will have in doing it” and “simple doesn’t mean easy”.

The best example Scott gives here is that of running a marathon. What’s simpler than running? You start running and you stop after 26.2 miles. If I were to do this, there would be an ambulance at the 5th mile to take me to the hospital.

I’ve seen a lot of PMs run projects by creating massive amounts of tools to analyze and report on data about the project. This sounds great and fancy stuff always looks neat, but the tools aren’t going to ship the product, you are. I like and do maintain a very simple view of complex systems. It allows you to be agile. It’s no excuse for not knowing or understanding everything about what is going on, but try and create the least amount of overhead for yourself and your team.

Scott also discusses the history of the PM role at Microsoft. It’s critical to understand why there are so many PMs at Microsoft, and how critical they are in getting stuff into customers hands. He discusses the various traits of PMs and what good ones can do. For me the most important trait is tolerate ambiguity/pursue perfection and courage/fear. “The brave are those who feel fear but chose to take action anyway”.

There is a great topic on confusing process with goals. It’s easy for a PM to try and quantify things that don’t need to be quantified, and fall into a trap of unnecessarily paying attention to your charts, tables, and tasks. Scott paints a good picture of how you evolve into someone who ends up believing that the data and the process are the project, and you lose sight of what your team is trying to do for the business. He makes a bold statement that “your project is your team. Manage the team, not the checklists.” I can’t tell you how important those words are. Sadly for some people, they don’t know what managing the team means, but the good news is that Scott goes into much greater detail in Chapter 10.

On Leadership, Scott states “…leaders and managers are hired to amplify the value of everyone around them”. Again, if you are a great leader you allow people to work to their potential, and you can even increase the abilities and output of the team. These are hard things to measure and very intangible traits (unlike writing code or a test case). Scott also states that “It takes a combination of conviction, confidence, and awareness to be effective and happy as a leader of a team”. If you lack, or haven’t developed as a leader yet, I can guarantee that you won’t be happy, and neither will your team. Leading a project is like drinking from a fire hose, and you need to be prepared or have the support to be coached to do this job well.

Scott ends the chapter with a phrase to describe how he added unique value. He calls this “Making good stuff happen”. On our team, Aditya and I have coined the phrase, “Less talking, more doing” and I think we have the same idea when we say this. The premise is that you can accomplish much more and add a great deal of value if you, as a leader, spend more time with each person on the team than anyone else. In doing this you may influence more decisions than anyone else in the organization, and what you bring to the team will be contagious (good or bad) for the rest of the team.

Final Thoughts

There are many excellent chapters in the book, and hundreds of sentences and insights that really tell the story of Program Management and how to be better at this role. I learned much from this bug and validated much of what I know and do. My favorite chapter is Chapter 10 How not to annoy people:process, email and meetings. This is a must read for every Microsoft Employee :-).

A couple more things I picked up are that empowering people isn’t necessarily being a good manager, but caring about the work that they do, and staying involved with the decisions they need help with go hand in hand with personal growth. Chapter 13 has a great example of this when Scott had to solve a cross team problem and his boss at the time, Hillel Cooperman, provided him guidance that allowed Scott to make the right decision for himself and the business.

Get the book, read it. You won’t regret it. You’ll likely find something that you aren’t doing well, or could be doing better. Or something you can do to help make your team better.

Posted Friday, July 29, 2005    Permalink    Comments [0]  View blog reactions

 

Mail Beta

Well at long last. I can finally start talking about what I, and my team, have been working on since I joined Hotmail. As you may have read here or there, we have started beta testing the next generation web mail product code named “Kahuna”. Why Kahuna? Well in MSN we release in these “Waves” and we wanted a name that had something to do with water.

It’s been really hard to be silent for so long, and it’s been really difficult to not blog about so much of the cool work going on. Imran has an excellent post on our efforts around the User Experience we are building. While the beta is currently invite only, in the coming months more and more folks will have an opportunity to see it first hand.

So what is my role in all this? Well I am one of a few Lead Program Managers in Hotmail. My team of PMs (Aditya, Andy and Kristin) are responsible for the Architecture and Infrastructure of the Hotmail Frontdoor. The Frontdoor is essentially any Internet facing server with the exception of SMTP. There is also a Hotmail Backend team who build the Storage, and Inbound Mail delivery (including spam filtering) and Hotmail Operations who run our thousands of servers 24–7.

More specifically, my team is responsible for designing the technology for all the servers that run our Web Experience, Provisioning, Login, DAV, POP, and a few dozen other weird internally facing services. Our servers are all stateless, meaning they have no user data. We work with our development and testing team to create, test and ship highly scalable web services that can support very rich functionality in a variety of Internet clients. Right now I am actually sitting in the driver seat for this project which means I’m responsible for coordinating the work of all the smaller teams inside the Hotmail FD, as well as a million other details that you can find out about in The Art of Project Management which covers my day to day activities in about 300 pages :-). I just started a few weeks ago after Reeves did his stint (and survived!) getting us to where we are today. It feels a bit like trying to drink from a fire hose :-).

Over the past year, my team has been focused on rebuilding (from scratch) the code that supports the Web Experience. The actual chrome and functionality that the end user might see is lead by Reeves and his team of PMs as well as some other folks on the Hotmail PM team. Finally, we have a team that is dedicated to making sure that the current product gets a lot of attention to improve quality, reliability and customer satisfaction. That team helps us stay focused on building the new thing without getting sucked into the current thing.

It’s not often that you get to start with a clean slate, and it takes serious commitment and investment on the part of our executives, and our business. This is also the most exciting year I’ve enjoyed at Microsoft. I can’t even begin to tell you how much fun it is to build something as important as a communications service (that supports 200 million users) with the latest and greatest technologies at a world class software company. We have invented and created so much in the past year that it’s mind boggling to see just how far we’ve come since we were white-boarding how this thing might work and look like.

What we have built is a solid foundation (in .NET of course) that should provide our service a great footing for the next 10 years (Hotmail turned 9 this year, and the current code started to show its age). And yes, Kahuna makes heavy use of AJAX (when we started using JavaScript, DHTML and XMLHTTP it didn’t have a fancy name) and the MSN Frameworks that we have partnered with Scott Isaacs to build. More and more MSN properties will benefit from the awesome collaboration going on between Spaces, Hotmail, and the start.com folks to build out a new web development platform.

We’ve been using the product with our production accounts (along with a few hundred MS employees) for a while now and people love it! This is also the first time in Hotmail history that we’ve had a dogfood program internally or done a beta! These things will result in a really high quality product. So to all you folks out there who have been waiting patiently for us to do something cool with our service, thank you for waiting. For those of you that left, we hope you come back when the house is finished being built!

And last but not least. We have a team blog. Check it out!

Posted Friday, July 29, 2005    Permalink    Comments [16]  View blog reactions

 

# Thursday, July 28, 2005

FlexWiki horrible slowness fixed

For months now I've experienced some horrible slowness in FlexWiki. It was so bad that the app would just timeout and basically look broken. Craig posted this a while ago, and I thought this could be the problem. Recently I uncommented all the perf counter code out of FlexWiki and the end result is a happy install.

"I'm doing some work on FlexWiki, and I'm finding that this call:

PerformanceCounter answer = new PerformanceCounter(s_PerformanceCounterCategoryName, name, false);

is sometimes taking a really, really long time to come back. Like several minutes. I started tracking it down via Reflector and native debugging, and it looks as though PerformanceCounter internally spins in this loop, inside a BCL-internal class called SharedPerformanceCounter:"

I also turned on authentication to edit the current DasBlog wiki to keep all you dammed wiki spammers away. Folks were really just using the suggestion page, and from now on suggestions should go to the SourceForge trackers site. Scott and I will retain edit abilities on the wiki.

Posted Friday, July 29, 2005    Permalink    Comments [0]  View blog reactions