Posted By J.T. Kimbell
Just four years ago I got the chance to spend a summer as a Microsoft intern, which was an absolutely fantastic experience. This summer we have quite a few interns getting a similar experience on Windows Embedded. Jordan Goldberg’s post is the first in a series of blogs from those interns to let you learn more about their experiences, their projects for Windows Embedded, and Microsoft’s culture. We hope you enjoy reading about their experiences!
Hello World! My name is Jordan, and I am an intern here on the Windows Embedded team. Today I would like to share the experience I have had here at Microsoft and how I’ve been given the opportunity to make an impact with my work. To start, let me introduce myself. I grew up in the “Great White North” -- Canada, or more specifically, the town of Caledon which is slightly Northwest of Toronto. I am currently completing my undergraduate degree in Computer Science at the University of Guelph and my interests range from playing guitar to practicing parkour to developing mobile and web solutions. This summer I have had the extreme pleasure of moving to the West Coast to complete an internship with Microsoft! For the past 8 weeks I have been working on developing a Windows Debugger Extension for the new Unified Write Filters feature in Windows Embedded Standard 8; but I will delve more into this experience later.
Life here at Microsoft has been nothing short of remarkable. In the short time that I have been here Microsoft has announced the innovative Xbox Smart Glass platform, unveiled the highly anticipated Windows Phone 8 and revealed the ultra-secret Microsoft Surface; I can proudly say that I am working for one of the most exciting tech companies in the world! On top of this, the Microsoft campus is absolutely breathtaking. Being surrounded by snowcapped mountains, green vegetation and sprawling forests makes the commute to work each day a treat. And with a population of over 40,000 Microsofties, the campus feels more like a city than a corporate headquarters!
On top of working for an exciting company and enjoying the beautiful scenery, the experience of being an intern here at Microsoft has been outstanding. This summer Microsoft is hosting over 1,500 students from around the globe. I have had a great opportunity to connect with new people and learn what life is like at other universities.
The running joke with full time employees at Microsoft is that they wish they were interns because of the VIP treatment we receive. Some of these perks include:
Social Events: Throughout the summer various social events are planned ranging from hiking around Mt. Rainier to trampoline dodge ball.
Special Speaker Series: Intern-exclusive talks are given throughout the summer by some of the top Microsoft executives! These include: Joe Belfiore (Windows Phone), Steven Sinofsky (Windows) and none other than Steve Ballmer himself!
Corporate Housing: During our stay here in Redmond & Bellevue, Microsoft organizes our living arrangements and the amenities are plentiful. I was lucky enough to get an apartment right on Lake Sammamish with an amazing view!
Now don’t get me wrong, life as an intern isn’t all fun and games... The projects that interns work on address real world problems and directly contribute to the company. We aren’t fetching coffee and completing menial tasks. The work we do here is on the same level as full time employees and this is one of the most rewarding things about being an intern at Microsoft. We get real world work experience before we have even graduated University! This helps us direct our career path and pad our resumes with some very meaningful work experience.
Now, this brings me back to a question I mentioned earlier in my post. “What have I been working on for my internship?” To start, let me break the Windows Embedded organization into 3 main categories:
Windows Embedded Standard: The traditional Windows NT offering that you know and love with some special features such as Lockdown and Branding, Componentization and Embedded Tools.
Windows Embedded Compact: Microsoft's real-time operating system that comes with a lot of tools to allow you to create and deploy to small footprint devices.
Windows Embedded Automotive: Focuses on bringing intelligence to your vehicles. Windows Embedded works with manufacturers such as FIAT, Ford, KIA and Nissan.
For my internship I have been working with the Windows Embedded Standard team on their Unified Write Filters feature.
“Write filters intercept writes to protected volumes and redirect the writes to an overlay that records changes. Conceptually, an overlay is similar to a transparency overlay on an overhead projector. Any change that is made to the transparency overlay affects the projected picture as it is seen by the viewer. However, if the transparency overlay is removed, the underlying picture remains unchanged. If you restart your system, all changes in the overlay are lost, and any volume protected with write filters returns to its original state.” -- Kevin Asgari
This allows OEMs to achieve scenarios such as wiping user data on public kiosks or increase system reliability by having a stable OS image that can be reverted to.
For the UWF, or Unifies Write Filter feature, I have been working on a Windows Debugger Extension. Windows Debugger is a powerful Kernel and User level debugger, but it lacks usability with its shell-like interface and raw data output. However, custom extensions can be written for Windows Debugger or WinDbg for short, which allow developers to add extra functionality, format text and automate tasks.
For my internship I have been working on writing a WinDbg Extension that displays the configuration settings of a Write Filter protected system, similar to the already existing command “uwfmgr get-config”. One of the great features of WinDbg is that it can remotely connect to and debug a machine. The purpose of the UWF Extension is for Support or Development roles to connect to a remote Write Filter protected system, load our custom extension and execute our command, “!uwfconfig”, to get the Write Filter configuration information.
Our custom extension provides UWF specific context to otherwise meaningless raw data. Without the use of the extension, WinDbg could still be used to gather configuration information from a system. However, this would require a fairly seasoned WinDbg user to know the exact symbol names that the configuration information is being stored in.
Our WinDbg Extensions programmatically request this raw data in the background and formats it to give context to UWF. This saves time for your seasoned WinDbg expert and simplifies the process for the less experienced users.
All in all, completing an internship with Microsoft has been a very memorable experience. This summer I have gotten to explore the beauty of the Northwest, gain invaluable development experience, meet amazing people from all over the world and experience what life will be like after graduation! Thank you for staying tuned and hearing what my internship has been like. This is the first in a series of blog posts that you will see from interns on the Windows Embedded team, so keep an eye out to hear more perspectives!