Wednesday, June 3, 2009

Windows 7 General Availability

People have been dropping hints for a long time that Windows 7 will be available sooner than everyone expects. Now it’s official. Windows 7 will be generally available in stores from October 22nd 2009. RTM will happen late July. Windows Server 2008 R2 will also RTM in this timeframe; the first joint client/server release since Windows 2000.

The Engineering Windows 7 blog has some great content about new and updated features in Windows 7 including themes, parental controls, HomeGroup, media streaming, autoplay and support for solid state drives. (Plus many more features that I haven’t listed here.)

I think you’ll be impressed by the new artwork in Windows 7 that really brings your desktop to life. The themes for this artwork are light, energy, inspiration and optimism. Here’s my favorite, courtesy of Red Nose Studio.

win7art

Friday, May 1, 2009

Windows 7 Release Candidate

If you’re staying indoors to avoid the swine flue outbreak, why not fill in some time by downloading and installing your very own copy of the Windows 7 Release Candidate. There’s a new server build out too in case you need to virtualize your DHCP servers … sweet.

The Windows 7 RC build will be made available to the public from May 5th at:
http://www.microsoft.com/windows7

The Windows Server 2008 R2 RC build will be made available at the same time:
http://www.microsoft.com/WindowsServer2008R2

Thursday, March 19, 2009

Internet Explorer 8

Internet Explorer 8 ships today. If you’re using a pre-release version or still using version 7, you can now get Internet Explorer 8 RTM from www.microsoft.com/ie8. If you want a preview of the new features to see if IE8 is right for you, just take a look at these videos.

Thursday, March 5, 2009

Windows Vista SP2 RC

Release candidates are now available for Windows Vista SP2 and Windows Server 2008 SP2. You can access the RCs from TechNet or MSDN if you have a subscription and wish to plan a deployment. Otherwise, the RTM versions will soon be generally available. You can read more here.

Wednesday, March 4, 2009

How to Remote Debug with Visual Studio 2008

It's pretty easy to setup Remote Debugging with Visual Studio 2008 but there are several steps involved. To begin with, this article makes the following assumptions:

  • You already have Visual Studio 2008 Pro or better installed on your Dev machine
  • Your Dev and Test machines are running Windows Vista, Windows Server 2008 or later
  • Your Dev and Test machines are on the same subnet
  • Your Dev and Test machines are on the same domain or trusted domains

Strictly speaking, remote debugging doesn't require your machines to be on the same domain or even subnet. However, bi-directional socket connectivity is required between the two machines. These alternate scenarios are not covered.

Development Machine Setup

The first step is to configure the Windows firewall on your development machine. Thankfully, Visual Studio has a wizard for this:

  • Run the following from the Start Menu
    Start > Visual Studio 2008 > Visual Studio Tools > Visual Studio 2008 Remote Debugger Configuration Wizard
  • Step through the wizard
  • Uncheck the option to Run the Remote Debugger as a service
  • Select Allow only computers on the subnet to connect to the remote debugger
  • Click Finish

The next step is to share the Remote Debugger binaries so you can access them from your Test machine:

  • Open Windows Explorer and browse to directory
    C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE
  • Open the properties dialog for the Remote Debugger directory
  • Use the sharing tab to give yourself Read access to the share

The final step is to share your project binaries and symbols so you can run them directly from the Test machine. In many cases, your binary and symbol files are located in the same directory so you don't need a separate symbol share.

  • Open Windows Explorer and browse to your project bin directory
  • Open the properties dialog for you bin directory
  • Use the sharing tab to give yourself Read (+Write) access to the share
    (Add Write access if your application needs to write to the directory)
  • (Optional) Repeat these steps for your symbols directory

Test Machine Setup

The first step is to logon to your Test machine using the same account that you use on your Dev machine. You can use a different account but you will need to grant access to the shares on your Dev machine.

Once you've logged on, you need to update your symbol path. This is only required if you created the symbol share on your development machine.

  • Open the properties page for your computer
    Start > Right Click Computer > Properties
  • Click advanced system settings
  • Click environment variables
  • Under user variables, click  New
  • Create the following variable:
    _NT_SYMBOL_PATH=%_NT_SYMBOL_PATH%;\\your-dev-pc\Symbols;

Next you need to configure the firewall to allow Visual Studio to connect inbound to the remote debugger monitor. The first time you run the remote debugger monitor and a connection is attempted, you will be given the option to automatically configure the firewall. However, if this doesn't happen, you can always run the following commands using an elevated console.

netsh advfirewall firewall add rule name="MSVSMON - UDP" dir=in action=allow enable=yes localport=any protocol=udp profile=domain remoteip=localsubnet program=”\\your-dev-pc\Remote Debugger\cpu-type\msvsmon.exe”

netsh advfirewall firewall add rule name="MSVSMON - TCP" dir=in action=allow enable=yes localport=any protocol=tcp profile=domain remoteip=localsubnet program=”\\your-dev-pc\Remote Debugger\cpu-type\msvsmon.exe”

The final step is to run the remote debugger monitor. When you run MSVSMON, you will see a message indicating that a new server called 'your-domain\your-username@your-test-pc' is waiting for new connections.

Remote Debugging

Now you are setup, all you have to do is run your application from the bin share on the Dev machine and use Visual Studio on your Dev machine to attach to the remote server.

Here's how to run your application on the Test machine and attach the debugger on your Dev machine:

  • Open Windows Explorer on your Test machine
  • Browse to and run the remote debugger monitor
    \\your-dev-pc\Remote Debugger\cpu-type\msvsmon.exe
  • Browse to and run your application
    \\your-dev-pc\bin\your-app.exe
  • Start Visual Studio 2008 on your Dev machine
  • Open your target solution file
  • Open the Debug menu and choose the Attach to Process menu item
  • Set the Transport to Default
  • Enter the Qualifier
    your-domain\your-username@your-test-pc
  • Click the refresh button
  • Select your remote process from the list
  • Click Attach

If everything is working, you should see the remote debugger loading symbols from the bin or symbol share on your Dev machine. However, you can also configure Visual Studio to automatically start your project on the remote machine. The following steps assume you have a .NET project.

  • Open the project properties page
  • Click the Debug tab
  • Under Start Action, select Start external program
  • Set the program path
    \\your-dev-pc\bin\your-app.exe
  • Add your command line arguments
  • Set the working directory
    \\your-dev-pc\bin\
  • Check Use remote machine
  • Set the remote machine
    your-test-pc
  • Save

Now when you press F5 to debug, the application will automatically run on your remote Test Machine and you don't have to attach.

Saturday, February 28, 2009

Windows Phones

Microsoft CEO Steve Ballmer during a press conference during a Mobile World Congress in Barcelona. Photo: MicrosoftSo it’s official, later this year you’ll be able to buy a Windows Phone. Steve Ballmer released details at the Mobile World Congress earlier this month. HTC and LG are both making phones that run Windows Mobile 6.5, which has a more touch friendly interface and includes a vastly improved web browser.

There will also be an online phone app store and phone services that allow you to securely manage your phone content on the web. The phone service is a major step forwards and means that when you get a new phone, you don’t have to mess around with migrating your contacts. It also opens the possibility that Live ID contacts (or even Facebook friends) can automatically update their contact and presence information.

My only question is, will HTC release a Windows Mobile 6.5 ROM Upgrade for the HYTNII? If not, I’ll be up for a new phone.

Visual Studio Gallery

The MSDN team recently launched a new web site called the Visual Studio Gallery, which is basically a portal to help you find products and extensions related to Visual Studio. Most of the posted products are commercial third party but others have been developed on CodePlex and similar open source portals. I did a quick search and found information of NDepend, Resharper and GhostDoc. However, .NET Reflector was surprisingly absent so perhaps the folks at Red Gate Software are a little slow off the mark. I was also pleasantly surprised to see that Mindscape has published their cool WPF Property Grid on the gallery.

It’s also interesting to observe that Lutz Roeder is no longer working on Reflector and has sold the rights to the source. Perhaps he no longer has bandwidth within the Expression Blend team to work on this must-have .NET tool. However, it’s more likely that Red Gate made an offer he couldn’t refuse. Reflector appears to still be available as a free download but this may change some time in the future.

Sunday, February 15, 2009

Burn Disc Image Files in Windows 7

I noticed the other day that Windows 7 Beta includes a utility called IsoBurn.exe that allows you to write disk image files to CD and DVD. However, there doesn’t seem to be utility for mounting ISOs, which I think is far more useful. These tools really should have been included in the client OS back in XP, but I guess you could always get a copy of DvdBurn.exe by installing the Windows Server 2003 Resource Kit.

BurnDiskImage

On a more interesting note, Windows 7 also allows you to create and attach virtual hard disk files using the Disk Management utility. You can even configure the BCD so you can boot from a virtual hard disk. Aviraj Ajgekar has published a couple of thorough blog articles that walk you through the necessary steps.

CreateVirtualDisk

Monday, February 2, 2009

Where next for Windows 7?

So you may have downloaded and installed the Windows 7 Beta in recent weeks and if you have, you’ll no doubt be thinking about the RTM and wondering when it will become available. You can read the latest from Steven Sinofsky over on the e7blog. In his own words… “The answer is forthcoming”.

Basically, the Windows 7 team is currently improving build quality based on feedback from Beta testing. With the RC milestone just around the corner, much of the focus will move towards ecosystem readiness in preparation for the RTM and General Availability. So there’s still a bit of work required to round out the release. However, if you’ve been using the Beta, you’ve probably noticed that Windows 7 is already feature complete.

On a related topic, Internet Explorer 8 is now at RC1 and available for download. If you have one of the Beta builds, I recommend installing RC1 because you’ll experience far fewer page compatibility issues. Page load time is also significantly improved for many sites.

If you haven’t tried Internet Explorer 8, now is a good time to start. Take a look at some of these videos to preview the new features.

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.