Saturday, January 24, 2009

Winter in Silicon Valley

The first two weeks of 2009 saw some marvelous weather in Silicon Valley with clear blue skies most days and mild temperatures over night. I had started to think that we'd just skip the rest of Winter and roll straight on into Spring. However, the gloom returned this week in the form of rain, overcast skies and the news that my employer has eliminated 1400 jobs. The last part didn't really come as a shock since rumors have circled the blogosphere that Microsoft would announce job cuts on the back of poor final quarter results for 2008. As you can imagine, the company's stock price dropped a little following the announcement. 

I work for the Server and Tools business, which is led my Bob Muglia, and we actually had a positive quarter. Our business has a lot of annuity income from contracts that were signed during the boom, so we managed to keep our head above water. However, executive management has realized that the economy is likely to stay down for a few years and that steps must be taken to realign expenses and focus on growth areas of the business.

The decision to cut 1400 jobs this week seems to be a move to free headcount so that people can be hired into growth areas without pushing up wages. Microsoft also intends to cut a further 3600 jobs in the next 18 months. That said, you can expect to see strong hiring in the Live Search business as Microsoft endeavors to take market share in search advertising away from Google. Microsoft is still open to a search deal with Yahoo! and perhaps we'll hear more about this now that Yahoo! has appointed a new Chief Executive. I guess we should thank Jerry Yang for squelching the merger.

My job appears to be safe. We're working on a version 1 product that will deliver new features in Win8 and help to differentiate Windows Server from the competition. Microsoft is geared for long term success and I think that the historically low stock price makes it a good long term buy right now. Otherwise, I'm focusing on shipping a great product for Windows Server, and to that end, I better get back to work.

Happy Australia Day weekend everyone!

Tuesday, January 20, 2009

Mstsc.exe Crashes on Connect

One of the tools I use on an every day basis is Mstsc.exe, which is the terminal services client application that you'll find on all recent versions of Windows. However, something strange started to happen yesterday. Whenever I would attempt to connect to a remote machine, Mstsc.exe would crash without even displaying a warning message. So I checked the application event log (eventvwr.msc) and found the following error message:

Faulting application mstsc.exe, version 6.0.6001.180000, faulting module ntdll.dll, version 6.0.6001.180000, exception code 0x80000003

Exception code 0x80000003 is something I've come across when debugging drivers and it's defined in ntstatus.h as STATUS_BREAKPOINT. It means that a breakpoint or ASSERT was encountered when no kernel debugger is attached to the system. You can find some related information here.

At this point, I had to scratch my head and ponder my navel. I couldn't figure out what I'd done to my machine recently that would cause this problem. So I did a Live Search on the exception code and found a blog post by Joe Wirtley who described encountering this issue after installing the DirectX SDK. His resolution was to uninstall the DirectX SDK.

Coincidently, I'd been doing some work with DirectX recently, so I started thinking, what is it about the DirectX SDK that would cause a kernel mode breakpoint to occur? So then it hit me ... the DirectX Control Panel.

Dxcpl.exe is a useful little tool that's part of the DirectX SDK and one of it's primary uses is to help debug Direct3D code. I'd been using this utility a few days earlier and had forgotten to disable some of the debug settings. My version of mstsc.exe evidently uses Direct3D 9 because it started working happily just as soon as I disabled the debug settings in dxcpl.exe. Here's a screen capture that shows the culprit settings.

DxCpl

Sunday, January 18, 2009

Microsoft Interviews

I get to participate in my first interview loop at Microsoft this week and believe it or not, you have to complete an internal training course before you're allowed to interview candidates. The company has gone to some effort to develop a hiring model and interview strategy that gives every candidate the best opportunity to succeeded. Training is therefore necessary to ensure that the interviewers know what to expect.

The interview loop consists of a number of employees and includes the recruiter, the hiring manager, 2-4 interviewers and optional subject matter experts. Each member of the loop will spend up to 1 hour alone with the candidate, so you can expect to spend 4 hours or more being interviewed. That may sound daunting but feedback actually suggests that most candidates enjoy the experience.

There is a lot of information on the web about Microsoft interviews and much of it focuses on hypothetical problem solving questions like "Why is a man hole round?" or "How many ways can you make change for $10?". The company has actually moved away from these kinds of questions because they tend to be ineffective. However, I still think it's useful to practice these questions because they teach to you think outside the box and to develop a strategy for answering difficult questions. The first thing you should always do is clarify the question and then repeat it back to the interviewer to make sure that you understand the problem. So for the second hypothetical question above, you should clarify the currency being used and then restate the question.

However, you are unlikely to get one of these questions. Sometime before the loop, the interview members will meet to discuss strategy and this typically involves selecting a number of competencies to assess. Some examples of competencies are communication, leadership, negotiation, problem solving, career path and team fit. The competencies reflect the requirements for the position and they are chosen at the discretion of the hiring manager. Each interview member is assigned a selection of competencies and is responsible for devising a number of questions to assess the candidates. Typically, all candidates for a position will be asked the same set of questions because this allows for a direct comparison between responses.

So what kind of questions will the interviewer ask? Typically, the interviewer will use 1 behavioral and 1 hypothetical question to assess each competency and you should attempt to spend 10-15 minutes on each. While providing your answer, the interviewer will ask additional probing questions. Pay attention to these probes because the interviewer is looking for specific responses.

Behavioral questions are used to determine how you behave in particular work situations. For example, if the interviewer wants to assess your communication skills, a behavioral question could be: "Tell me about a time when you had to convince your manager to change a strategy that was successful in the past". When asked this kind of question, you need to be specific about what you did, how your actions were perceived and what was the outcome.

Hypothetical questions are used to explore your creativity and to determine your ability to think on your feet. For example, if the interviewer wants to assess your testing capability, a hypothetical question could be: "Assume that this pen is a product that Microsoft has developed. How would you go about testing it?". To answer this type of question, it pays to be methodical. Start out by saying that you'd write a test plan to describe the product and to capture the testing requirements. You'd devise and document a series of tests to verify product quality. You'd also update your test plan with any resources you require to test the product. The interviewer is also likely to ask probing questions like: "What scenarios would you test?" or "What test cases would you use?". Again be specific with your answers.

Aside from the questions, my advice is to come prepared. You need to be focused, positive and enthusiastic. Microsoft is looking for people who want a career with the company and who have ambition. Make sure you tell the interviewer that you want to work on the latest technology and that you want to build products that make a difference to people all over the world. Microsoft places a lot of value on cultural diversity so please think about this issue and try to address it during your responses.

Finally, take a look at the Microsoft Job Blog and pay particular attention to the tips section. This site also tells you how to apply for jobs at Microsoft. If you're currently located outside the USA, take a look at the international section of the blog because it has some great tips on how to apply from overseas.

Saturday, January 10, 2009

Windows 7 Beta Now Available

The Windows 7 Beta is now available for download if you want to pull down the bits.  Apparently there were some problems with unexpected demand yesterday so the download site went offline until more resources could be dedicated. Anyway, here's the URL for the download page:

http://www.microsoft.com/windows/windows-7/beta-download.aspx

There are a couple of things you should note before downloading the ISO:

  1. The Windows 7 Beta only supports Windows Vista SP1 to Windows 7 upgrades. You'll need to do a clean install if you're currently running XP SP2.
  2. The Windows 7 Beta is only available in one edition, which is roughly equivalent the Ultimate edition of Windows Vista.
  3. The Windows 7 Beta will expire on August 1st, 2009.

If you're thinking about doing an upgrade, you should really backup all your files before running the installer. I personally haven't run the upgrade (just the clean install) so I can't tell you much about it. I would do a backup because it's better to be safe than sorry. Keep in mind that the purpose of the public Beta is to find bugs. This is pre-release software after all and the goal is to find and fix issues before the release candidate. You'll be helping to make sure the final RTM is as good as it possibly can be.

One more thing, you should take the time to scan these two documents to identify potential issues: Things to know and Release notes.

Friday, January 9, 2009

Microsoft Tag

Microsoft has created an interesting new technology that allows you to create barcode tags that can be associated with Internet resources. You can take a photo of the tag with your smart phone and the software will connect you with more information, without having to search the web or type a URL. There's certainly a lot of potential for this technology and Microsoft has already released the software for Windows Mobile and iPhone. Read more here.

MicrosoftTag

Actually, Jeffrey Sharkey created something similar for the Android Developer Challenge. You can read more about it here on his blog. His app is called Android Scan, and it works with traditional barcodes. Microsoft Tag actually goes a step further and introduces High Capacity Color Barcodes (HCCB), which are designed for maximum performance with the fixed focus cameras found on most mobile phones.

Wednesday, January 7, 2009

Windows 7 Beta

Windows 7 Beta will be publicly available for download from this Friday (01/09/2009) at http://microsoft.com/windows7. Build 7000 was produced just before Christmas but was unfortunately leaked to bit torrent sites like Pirate Bay before the formal announcement at CES today. Not that it really matters since the Beta still requires activation once the evaluation period expires. Again, you can download the Beta for yourself from this Friday.

Monday, January 5, 2009

Some thoughts on Home Theatre

I recently bought a basic home theatre package from Sony for around 200 USD. I'm amazed at how affordable these systems have become. The model number is HT-DDWG700 if you want to take a look at it. The receiver has a number of different inputs, including a digital media port and cradle that allows you to connect your iPod and control it with the receiver's remote control. This is all pretty cool and while the sound quality has nothing on my father-in-law's decade old Bose system, it's still produces enough sound to fill my small apartment.

However, I can't help but feel that my home theatre system is incompatible the way I manage my multimedia. I can't remember the last time I purchased an album on CD, but I download MP3s from Amazon every other week. Furthermore, I don't have a 120GB iPod Classic that stores all my music and I don't use iTunes because I have a problem with the way that it organizes my files. Instead, I have a network drive connected to my wireless router and I use this for sharing multi-media with my home computers. I just point Windows Media Player or Zune (even iTunes will work) at the network share in order to play files or sync with my mobile phone or other MP3 player.

However, if I want to play a new song through my Sony home theatre system, I first have to sync it to my iPod Nano or connect my notebook to the receiver using the stereo mini-jack. Both of which are pretty annoying solutions. I notice that my Pioneer DVD player has a USB port that I can use for playing multimedia and this is a step in the right direction since the DVD player has the necessary codecs. However, I really want to play my multimedia directly from the network share, without the need to use my notebook or an iPod. I guess I really need a DVD player that can play the files directly from my network share.

So this brings me to question: Why don't I have an Xbox 360 or Sony Playstation 3? Both of these devices have network cards, large hard-disks, and the necessary codecs to play all my multimedia files. I guess the reason is that both these devices are primarily gaming consoles and these days I'm not into video games. Since I don't really want to have one of these consoles, for the time being, I'm left without a solution.

Drop me a comment if you have any ideas about this.