Welcome to MSDN Blogs Sign in | Join | Help

Windows 7 Developer Boot Camp The PDC is the pinnacle of the Microsoft events calendar as far as I’m concerned: it’s the flagship event for developers, offering the most comprehensive, future-looking, technically deep, densely-packed set of sessions from Microsoft speakers you can find anywhere. This year is no exception: we’ve got a great line up and speculation is mounting about some of the new technologies we’ll be introducing. Lots of surprises await and I guarantee that you’ll miss out on some really cool stuff if you’re not there in person. Registration is going faster than we expected and the event is starting to fill up quickly.

The PDC comes off the back of one of the most important product releases for Microsoft in years: of course, I’m talking about Windows 7. We’ve held back on announcing most of the deep Windows breakout sessions so far (stay tuned), but today we’re announcing something rather special: a Windows 7 bootcamp presented by key leaders from around the product engineering team and others who have been deeply involved in the product development process. This will be the single most densely-packed day we can put together on the subject of Windows development: we’ll take a bottom-up approach to our newest operating system, covering everything from kernel changes to new DirectX 11 features like compute shaders and the hardware-accelerated 2D and text rendering engines that will eventually supplant the venerable GDI libraries.

Confirmed speakers include:

The bootcamp is the day before the PDC itself starts and takes place in the Los Angeles Convention Center.

And the best part is – it’s absolutely free! Normally we’d charge several hundred dollars for a pre-conference event like this, but the Windows team has agreed to sponsor this event to ensure that nobody misses out because of the tough economic climate. You can attend the bootcamp free even if you haven’t signed up for the rest of the PDC (although we’d love you to join us for the rest of the event).

We’ve got limited space, so don’t delay in signing up. See you there!

As everyone must know by now, the Windows 7 Release Candidate is broadly released and available for download from the Windows site. The RC build is essentially our dress rehearsal: we’ve hit feature complete, stabilized the release, followed the active bug glide path down to zero, and the build is essentially at a point where we’re looking for any last remaining “showstopper” bugs that might be lurking. To switch metaphors, it’s our last chance to verify that all systems are go before we hit the big red ‘launch’ button and start manufacturing tens of millions of copies of the software for broad distribution.

What does this mean for you, my esteemed developer readership? Now is the time when you really want to be putting the product through its paces: checking your own applications for any compatibility issues that might generate support calls, taking advantage of our test harnesses to ensure that your applications run well on Windows 7, and starting to take advantage of the new APIs in Windows 7 that can make your application feel like a native citizen of this new operating environment and enable new features that your customers will appreciate.

Let’s split that apart into a little more detail.

Compatibility
EN-w7-comp_rgb_L Application compatibility is always something that’s on our mind when we’re building a new release of Windows. With many tens of thousands of applications that rely on both documented and undocumented behavior from the myriad APIs that we’ve introduced over the last couple of decades, it’s never easy to innovate while ensuring that nothing breaks. Raymond Chen’s blog is littered with examples of where we’ve had to go to extreme lengths to ensure that we even work around applications that relied on buggy behavior.

In some cases, there’s a deliberate trade-off that has to be made between two important tenets. For example, in Windows Vista, we introduced User Account Control to increase security for end users even though we knew that it would pose a challenge to certain applications that assumed full administrative rights. We spent a lot of time attempting to mitigate that risk, adding ‘shims’ for certain applications that we knew in advance required privileged rights to run successfully, and introducing features like file and registry virtualization to provide a fallback solution for other applications.

The good news is that with Windows 7, we kept the bar very high indeed for breaking changes. If an application runs on Windows Vista today, there’s a very strong likelihood that the application will run unchanged on Windows 7; this has been borne out by early adopter tests running on the beta and release candidate to date.

Nevertheless, there are four key steps we’d love every application author to take in the next few months to still further diminish the risk of any application issues:

  1. Download (and read!) the Windows 7 Application Quality Cookbook. This is the ultimate guide to changes in Windows 7, offering 80+ pages of detailed guidance on the various different edge cases that might cause an issue with your application. (A quick perusal of the document will allay any fears of widespread change – unless the likes of ‘removal of Microsoft Agent’ is of major concern to you.) Using this document as a checklist, you’ll be able to very rapidly identify anything that you should take care of.
  2. Install and use the Windows Application Compatibility Toolkit (ACT) 5.5 and Application Verifier 4.0. These tools are valuable both for compatibility and quality, and are particularly helpful to renovate an older application that you never moved up to Windows Vista. The former provides automated tools for developers to check for issues like UAC incompatibility and setup problems, as well as administrative tools that can be used to apply and view other shims that may be in place. The latter tool is a runtime verification tool for applications that can be used to identify issues in the way native code calls into the Win32 API – in some ways, it’s the closest equivalent to FxCop for C++ code.
  3. Get your application certified for Windows 7. Applying for a logo for your application has historically been a somewhat painstaking process – it’s involved spending money on submitting the application for manual testing. Now it’s much simpler: we’ve provided an automated toolkit that tests the application for known compatibility issues, targeting application issues that we’ve seen in the wild and providing clear guidance on how to fix your application. And there’s no cost either, beyond signing up for a certificate for WinQual registration. Whether or not you actually care about using the Windows 7 logo for marketing purposes, this is a worthwhile step to validate that your application runs smoothly on Windows 7 and that your customers will get a good experience.
  4. Lastly, we’d obviously greatly appreciate it if you’d be kind enough to update the “system requirements” page on your web site to call out your support for Windows 7!

Taking Advantage of Windows 7
Assuming your application runs on Windows 7, the optional next step is to take advantage of one or more of the myriad new features in Windows 7 that can give your users a better experience, while of course still supporting Windows XP or Vista where appropriate. To call out a few specific examples:

  • Multi-touch: enabling your application to take advantage of new devices like the HP TouchSmart desktop and notebook that support gestures to zoom, manipulate and control a user interface.
  • Taskbar: adding support for new taskbar features in Windows 7 such as jump lists, progress bars, icon overlays and custom thumbnails.
  • Libraries: taking advantage of the new common file dialogs in Windows 7 that support the library model of virtualized views over multiple physical folders.
  • Sensors and Location: new APIs that enable suitably-equipped machines to report ambient light, user proximity, accelerometers and even geographic location.
  • Direct2D, DirectWrite and Ribbon: replacement libraries for 2D and text rendering as well as the Windows 7 ribbon control that is an evolution of the ribbon in Office 2007.

I could go on, but but perhaps I’ll save a more comprehensive list of new developer features for another blog post!

There are two main kits you’ll want to download and install on your developer workstation to take advantage of Windows 7:

  1. The primary resource remains the Windows SDK (available both as an ISO image and for web-based installation) – this provides headers and libraries, tools, documentation and samples for building for Windows 7 (as well as older releases). We’ve recently updated this to support the RC; although we’ll ship an updated version for the final release of Windows 7, this release is more than suitable for use for production development. You’ll find API reference documentation for all the features listed above, along with some new tools (such as a ribbon XML markup compiler). Most developers have a subset of the Windows SDK already installed as part of Visual Studio, but you’ll need to install this later build if you want to target new APIs in Windows 7.
  2. If you’re a .NET managed code developer, then you might be a little nervous of using the new Win32 COM-based interfaces and rather low-level samples included in the SDK. We’ve made great strides in Windows 7 to ensure that these interfaces are easier to consume from managed code, but nevertheless this can be somewhat daunting if you’re not acquainted with the COM interop libraries in .NET. The good news is that we’ve invested in building some great interop assemblies and helper classes to provide a seamless experience for .NET developing against Windows 7, and you can find the first fruits of this project in the Windows API Code Pack for .NET, available today from the MSDN Code Gallery. The current version includes support for many of the features listed above, with more coming both in future releases of the code pack and in a forthcoming release of the .NET Framework.

It’s an exciting time to be a Windows developer: as we enter the home stretch for this release, I’m enjoying seeing examples of applications that build on the platform from the largest software development companies down to individual ‘cottage’ developers. What are you up to?

What is Windows 7 doing at a web conference like MIX09? Last week I went along to the above titled session, in which Yochay Kiriaty, an irrepressible evangelist on my team, presented the case for a desktop application in an increasingly web-orientated world.

Windows7_v_rgbHe talked about how local desktop applications remain just as relevant as ever in the world of the web. For example, even though Twitter is often portrayed as the doyen of the Web 2.0 world, there are over 560 applications that use the Twitter API, spreading across client and mobile devices. Similarly, many other web properties such as Netflix, New York Times, eBay and Windows Live, have great desktop experiences that add value to the core experience. With a market of one billion addressable devices, it would be foolish to ignore the role Windows-based applications can play.

Yochay demonstrated a number of potential entry points in Windows 7 for a website that might want to supplement their browser-based offering with a “sticky” branded desktop experience:

  • Gadgets. In Windows 7, gadgets go beyond the sidebar: they can be hosted anywhere on the desktop. This makes it easier for gadgets to size a little larger than the default setting in Windows Vista, allowing for a richer data visualization and/or more information to be presented.
  • Jump Lists. Windows 7 allows taskbar-resident applications to easily promote a series of tasks. For example, Windows Live Messenger uses this facility to make it easy to quickly set up a chat or web camera conversation without having to navigate through the full application interface.
  • Search Connectors. Windows 7 enables you to integrate search of a site like Flickr directly into the shell itself, using a standards-based model for search integration called OpenSearch. An application like Word that uses the standard file dialogs in Windows can then insert images without ever needing to go to the website directly. Long Zheng has a good example for download along with screenshots of this approach.
  • IE8 Visual Search. Continuing on the same theme, it turns out (!) that the visual search feature built into Internet Explorer 8 uses the same OpenSearch-based model for providing search results. With just a single line addition, any IE8 visual search can automatically support the Search Connector model. If you’re interested in more information, Sébastien Zimmermann has a good blog post on the topic.

win7desktop

Above: Screenshot demonstrating Windows Live Messenger jump list, barclaycard.co.uk desktop gadgets, Twitter search connector and Wikipedia visual search.

It’s clear that there’s increasing convergence between the web and the desktop. Beyond the search features above, the inclusion of multi-touch and gesture support in Silverlight 3 demonstrates how the lines are blurring. It’s going to get easier and easier to build applications that run great on the web but do even more when they take advantage of the full power of Windows. It’s an exciting time to be a Windows developer!

(Note: I originally posted this session’s notes at http://visitmix.com/Opinions; I’ve edited them a little and reposted them here for consistency with the other posts below.)

WinAzure_h_rgbWindows Azure isn’t particularly “on-topic” for this blog, but hey, just because I’m a client guy doesn’t mean that I can’t show any interest in other technologies, right? Manuvir Das presented a session on the subject at MIX09, and since I’m sat at home with a heavy cold feeling sorry for myself, I thought I’d catch up on some of the sessions that I’d missed via the free online MIX09 recordings.

(In passing, I’d love to know whether these kinds of detailed session notes are helpful to you – feel free to add a comment below or send me a private note.)

What is Windows Azure?
In a nutshell, Windows Azure is an operating system for the cloud.

As an application developer, one can think of an operating system in the following ways:

  • an application execution environment that acts as an abstraction over the hardware;
  • a shared file system with access control;
  • an allocator of resources from a shared pool;
  • a platform that supports powerful programming models;
  • a model that supports interoperation with other systems.

Why do we need a new operating system for the cloud? What’s wrong with the existing model?

The reality is that running cloud-based services presents many unique needs (as an example, consider a popular website like Flickr or Hotmail). Any service that is provided at scale is distributed across servers in one or more geographically-dispersed datacenters. It is expected to be available 24 hours a day, 7 days a week: a failure in any individual piece of commodity hardware needs to be automatically and silently managed without external disruption. Servers need to be upgraded to new software and hardware without taking the whole service offline; the service also needs to be able to support sudden increases in traffic or storage requirements seamlessly.

All these demands mean that infrastructural concerns become an overriding constraint in providing the service. We need software that can manage and abstract these problems – specifically, an operating system that spans and controls a set of connected servers, providing an execution environment, a shared file system, resource allocation, administrative tools and so on. In this world, the ideal is a utility computing model that presents the datacenter as having essentially infinite scale available, with the application developer paying only for the actual resources consumed.

As an operating system for the cloud, Windows Azure provides four facilities:

  1. Development. An environment for developers based on familiar concepts and frameworks.
  2. Computation. A virtualized service execution environment running on cloud-based hardware.
  3. Management. A policy-based infrastructure for controlling the way services operate.
  4. Storage. A scalable set of cloud storage services for data.

Development and Computation
In building Windows Azure, the primary goal was to create a rich and familiar programming experience. You can write code using .NET, PHP or native Windows code, using Visual Studio or even Eclipse. The SDK provides a simulated cloud environment (known as the development fabric) that a developer can run locally to build and test an application, along with tools to package the application for production deployment: it’s important to note that there is no difference to a developer between the local and cloud-based environments.

Newly introduced at MIX09 is support for full-trust application execution, allowing you to run any native code via P/Invoke (as well as more complex .NET applications); you can also now use FastCGI as a way to offer native handlers for your application. Another new addition that will be available shortly is geo-location, allowing you to target your services to one or more locales and ensuring that data and storage are co-located for performance optimization.

Windows Azure is now running in production on datacenters across the world. As part of the session, Manuvir demonstrated two Windows Azure-based demo sites, Botomatic and Tweval, that build on Twitter to provide live session feedback.

Management
The overriding constraint in Windows Azure was to ensure that services can be managed automatically. When you develop your service, you also define a model using XML that describes the service topology and size (number of instances), the resources required (e.g. disk sizing), health constraints (how Windows Azure should know when a service is “unhealthy”), and other configuration settings. When you deploy the service, Windows Azure takes care of identifying one or more virtual machines to run the service, setting up load balancing, creating an entry point for the service and then ultimately monitoring the service for health.

Storage
Windows Azure provides a number of simple abstractions over the underlying cloud-based storage: blobs for large items of data, tables for handing service state, and queues for communicating between services. Additional abstractions over the storage will be exposed over time. One important caveat is that Windows Azure doesn’t support automated geo-replication in the current production environment (although it is coming): you need to manually deploy your data to different locales if you need it to be geographically dispersed.

What if you need a relational database in the cloud? The Azure Service Platform will provide a SQL Server-based cloud relational store, called SQL Data Services; the separate MIX09 session on this topic provides more detailed information on this aspect.

imageConclusion
Beyond the core functionality that Windows Azure provides, best architectural practices remain important. The platform is designed to encourage best practices: stateless computation with durable storage, with web and worker roles co-located and communicating over queues.

Windows Azure is currently in CTP, offering free usage with quotas; an updated technical preview was released at MIX09, with regular updates expected through 2009 culminating in a commercial release by the end of the year.

Seema Ramchandani works on performance as a Program Manager on the Silverlight team. She gave a fast-paced talk at MIX09 covering the graphics and media that contained some helpful tips for performance profiling, debugging and optimization.

Silverlight Rendering Architecture
When building a graphics-rich application, it’s first important to be aware of the underlying architecture of the rendering and media pipelines in Silverlight.

To begin, there is one main execution thread that you need to be careful of not clogging when you build your application. The UI thread executes your code directly along with operating the animation and layout systems. (On older browsers, there’s one UI thread for all tabs in the browser; on newer browsers, we’re starting to see one process per tab.) We spin up separate (non-UI) threads for all other work, such frame rasterization, media decoding and GPU marshalling.

imageMedia is delivered to the end-user through a pipeline: decoding the source, performing YUV –> ARGB conversion, resizing and blending the output (as appropriate) and finally drawing the resultant pixels on-screen. Silverlight 3 enables the latter steps to be performed by the GPU if you enable hardware acceleration. For maximum throughput, make sure you encode the video at the minimum framerate that you need (typically 18-20fps). To make the most of the software renderer, ensure you are also encoding at the desired size so there is no rescaling required, and minimize the amount of media blending.

One word of caution: most developers have high-specified machines that aren’t representative of their target customers’ devices. As a result, when focusing on performance, set the MaxFrameRate property on the Silverlight control to an arbitrarily high number (e.g. 10,000 fps) so that the speed measured isn’t being capped, and then use the EnableFrameRateCounter (IE-only) and EnableRedrawRegions properties to show the rendering speed and areas being redrawn on a per-frame basis respectively.

For maximum performance, there’s no substitute for minimizing the amount of work being asked of the runtime: reduce the size of the objects being rendered; simplify the visual tree; minimize the number of operations required per draw. Lastly, use windowless mode judiciously: it’s expensive because it requires per-frame blending with the underlying background.

Lastly, be aware when you start developing an application of your target goals: how many objects, elements and animations you’re expecting in the final project. Be aware of bloat in the XAML – for instance, it’s easy for tools to insert tens of keyframes that don’t make any visual difference.

Silverlight Profiling with XPerf
image For profiling, one of the best tools is XPerf, a long-standing internal Windows performance analysis tool that has recently been released externally as part of the Windows SDK. It uses Event Tracing for Windows (ETW) to analyze the call stack, taking advantage of the fact that both Silverlight and the CoreCLR have embedded ETW events. XPerf can give you a good idea of the expensive operations in your code: for example, drawing v. browser interactions v. JIT compilation of .NET code.

To use XPerf, enable the profiler while you run the problematic area of your application to generate a capture. (Seema’s blog has more detailed information on the process.) It shows CPU usage across the period of time captured; if you connect to the Microsoft public symbol server you can then break this down against the various internal methods within Silverlight. It’s relatively easy to tell what’s going on, as the following screenshot demonstrates:image As we’ve had customer applications in the Redmond labs, we’ve noticed that it’s quite common to see applications spending a lot of CPU time in the text stack. In Silverlight 3, you can use an inherited property to apply a hint to the text rendering engine when you’re animating the text that turns off pixel-snapping.
   RenderOptions.TextRenderingMode = RenderForAnimation

One last note: it’s worth downloading the PowerPoint slides for this session for more information. There are lots of hidden “context” slides included that add depth to the notes above.

Brandon Bray gave an interesting presentation at MIX09 on how the CLR (the execution engine that underlies the .NET Framework) was refactored to support for Silverlight; I thought I’d share my distilled notes from the session.

Bringing .NET to the Silverlight world was an obvious choice. Not only does it have a broad community and powerful tools ecosystem, but the CLR also offers many important and useful features for building RIAs: strong type safety, partial trust security verification and AppDomains (providing isolation for multiple applications within a single process). But the existing .NET Framework is specific to Windows, and has grown too large for deployment in a web runtime where every byte counts. So it was necessary to rework the CLR to be optimized for this purpose.

CLR Size Reductions

Looking at the .NET architecture, it was designed to support many different scenarios across client and server, including profiling and debugging, just-in-time compilation, and so on. For Silverlight, we just needed to focus on one scenario: interactive client applications. Silverlight contains “CoreCLR”, a cut down version built from the same sources that runs side-by-side with the full .NET CLR. CoreCLR is just 2MB in size. It’s worth noting in passing that CoreCLR is also embedded within other Microsoft technologies, most notably Live Mesh.

Some compromises that could be made to trim the size of the CLR right down:

  • We don’t need to support full-trust applications; applications downloaded from the web are always partial trust.
  • We don’t need interoperability with native or COM code.
  • The versioning model is simpler: we only need one runtime at a time (we don’t need to ship older versions)
  • CoreCLR can only be activated through a host (the Silverlight control): it doesn’t need to be activated through an executable or a COM object.

image The Silverlight architecture is fundamentally the same: the same architectural boxes are present (albeit the surface area is much smaller in each case), with the exception of NGEN and profiling API support. The JIT does a minimum of optimization to improve startup time and reduce code size. The server-optimized garbage collector is removed, since it isn’t required; the reflection engine is substantially reduced, and Silverlight relies on the underlying operating system for collation string tables that are already standardized.

But that wasn’t enough. To get the CoreCLR down to its target size of 2MB, a good proportion of the size savings had to come from the base class library. CoreCLR includes a subset of the base class library called Small BCL. As with the rest of CoreCLR, Small BCL is built from the same source code as the full .NET BCL.

CoreCLR Security Model

image One other area that has contributed significant code size savings is the notion of transparent libraries. The full desktop .NET supports Code Access Security, a very rich but complex security model. The CoreCLR security model makes reasoning about security much easier. There are three layers of code:

  • SecurityCritical code: this is code that has full trust (for example, accessing native code through P/Invoke or changing an application’s global state). It also trusts any code that calls it, but can only be accessed by SafeCritical code.
  • SafeCritical code is the bridge between SecurityCritical code and the outside world; it should always verify the input from any code that calls it.
  • Transparent code is the code that can call into SafeCritical APIs in the Silverlight runtime. This is the only layer that can exist outside of the Silverlight runtime.

Along with the transparent code that a developer compiles into a XAP, the same concept is used for other libraries like LINQ and the DLR as well as many controls; this means that they don’t need to be installed as part of the Silverlight runtime itself but can be downloaded on-demand as part of the application download on request. In Silverlight 3, transparent libraries can be cached so they only have to be downloaded once.

Cross-Platform Support
In one critical way the CoreCLR in Silverlight has to do more than the full .NET CLR: it has to run on Mac OS as well as Windows. This is implemented through a Platform Abstraction Layer (PAL), based on the work done some years ago for a research project called Rotor. The PAL can be fairly simple because Silverlight only needs to support the x86 instruction set. Again, this is checked into the main CLR codebase, but is only required for the CoreCLR implementation.

For more information about the CoreCLR, Andrew Pardoe’s MSDN Magazine article on Programming Silverlight with the CoreCLR is perhaps the most authoritative online source.

Deborah Adler presented a fascinating case study of how user experience design can really have a positive impact on the lives of those who touch our products. She was the principal designer behind Target’s ClearRx drug prescription packaging, which has had a big impact in avoiding drug prescription misusage. As Bill Buxton highlighted in his introduction, “she doesn’t come from our culture. To her, a developer is someone who turns your photos into prints!” Nevertheless, her talk was very relevant to all of us involved in creating rich user experiences, whether we realize it or not!

The Challenge: Confusing Design Costs Lives
When you wipe away the high-tech jargon, we’re all in the business of creating an experience for a customer. When you make it a comfortable or enjoyable one, your job is done. In redesigning the Target packaging, Deborah started with her grandmother, who accidentally took her husband’s prescription. When she investigated further, it was easy to see why – they both were prescribed the same drug at different strengths, and since their names were similar, there was very little to notice different about the two packages.

60% of Americans don’t take their medications correctly. On average, over ten prescriptions per person are filled each year. With 300 million citizens, that represents three billion drug prescriptions. We spend a huge amount of money dealing with the issues of incorrect drug usage, and the costs are measured in lives.

Deborah highlighted some of the design issues that plague drug packaging – poorly printed text with bad iconography, large quantities of small print text with poor formatting and long line length, complex text (“do not take with nitrates” is only meaningful if you know what a nitrate is). There’s no hierarchy of information – how do you know what is relevant and what is just manufacturing information?

Redesigning with the End User in Mind
In redesigning the packaging, the goal was to combine information architecture with intuition and previous knowledge of cognitive schemas (knowledge of what the most important pieces of information are). She used color coding so that no two people in the same household have the same color bottle. She wanted people at a glance to know who it was for, what the drug was, and when to take it. The updated packaging even included a magnifying lens in the back of the bottle to make it easier for those with poor eyesight to read the small print.

They’re continuing to investigate further innovations, for example printing with chemicals that change color over time (so that when a drug expires, a big cross appears over the label).

Turning Design into Production
When Deborah completed her thesis, at first she took it to the FDA with an ambitious goal of having the new prescription labeling being mandated as a federal standard. For various reasons, including the way that control over packaging was mostly federated at a state level, this was unsuccessful. So she started looking for a large nationwide pharmacy to see whether they would adopt it for their own usage.

Target has a “design for all” philosophy, and they took the idea under their wings and refined it into the ClearRx system, which is now standard for all Target prescriptions.

Target ClearRx Packaging System

There were lots of real-world challenges that had to be addressed in productizing this: for example, there are 23 variations of the system that had to be produced due to state law differences. It required a retooling of the production system too (for example with duplex printing).

When Richard Carmona, the former US Surgeon General reviewed this, he said, “the new design is a simple yet important step in improving the health literacy of all Americans.” New York Magazine first broke the story about the ClearRx system – it was great to hear the story presented both from the designer’s perspective and the end-users’ perspective.

Some life-long lessons learned from this project:

  • What separates you from your competitors isn’t design or development, it’s truly thinking about the person who will use your design or development and figuring out how it can solve their needs.
  • Once you start thinking about your customers’ needs, it becomes a habit. When you start from this perspective, you’re no longer just a designer, you’re a user experience designer: worth saluting!

Dean Hachamovitch is the General Manager for the Internet Explorer team. Amazingly, he managed to blog about IE8 at the same time as he was delivering his keynote – he must have been typing with his feet :-)

Dean started with a humorous video on the “history of the web”.

Last year at MIX, we made eight announcements about IE8 and we heard feedback that eight things were too many to remember. The IE team unsurprisingly gets lots of feedback, and does their best to respond to it! So today’s keynote focuses on three categories: the people who build the web, the people who use the web, and the people who attack the people who use the web.

Internet Explorer addresses the fundamentals that developers expect for a modern browser – interoperability, security, standards, performance that developers, but it was also designed as a great application for regular end-users who just want to browse the web. While it’s interesting for a small number of advanced web developers to be downloading nightly “bleeding edge” builds of a browser like Firefox, by nightly build, building real-world sites means taking account of millions of regular users and their needs.

Today, we’re excited to release the final build of Internet Explorer 8 to the web. It’s available in twenty-five languages, across Windows Vista, Windows XP and Windows Server 2003 and 2008 in 32-bit and 64-bit versions. We’re releasing it here at MIX09 because we’re excited about what you can build with it as developers and designers. We used real-world data to build IE8 – hundreds of millions of users, 200+ data points with the products, millions of user sessions, hundreds of hours of usability labs, and dozens of in-home studies. Never underestimate how many people click “submit error report” and the value of that data in improving the product!

A few features demonstrated during the keynote:

  • 80% of navigations are back to where the user has been already. That’s why when you go to the address bar or the search box, you’ll see data from previous navigations.
  • In the search box, you’ll see “quick pick”. 70% of users have more than one search provider installed, and we wanted to make it easier for users to access them.
  • Restoring tabs that have been closed is really easy – when you open a new tab, you’ll automatically see a list of tabs that have previously been opened in the current session.
  • Color-coding and grouping for tabs, so you can open a large number of links and easily identify where they came from.

We discovered that users don’t care about why a browser crashes when it fails, they care about getting back quickly to where they were and minimizing downtime. In IE8, we now have tab crash isolation – when one tab of the browser fails, it doesn’t bring down the entire browser.

Performance has been a major area of investment in Internet Explorer 8, as this performance testing video demonstrates. The speed of a browser is dependent on more than just a scripting engine – when you look across the entire stack (DOM, HTML rendering, script, etc.), IE8 is faster than other browsers on many real-world sites. Even the JavaScript engine itself is 70% faster than the one shipped in IE7.

IE blocks over a million phishing attacks a month. It also has a huge impact on protecting against malware – our data shows that one in forty users running IE8 have been protected from malware each week. An independent study shows that IE8 protects against twice as many malware attacks as any other browser. There are many new security features added to Internet Explorer, including click-jacking protection, per user ActiveX, cross-site scripting filtering, and Data Execution Prevention.

What about standards? IE has historically been criticized for not fully supporting core web standards like CSS. In practice, every browser has work to do here. We have an amazingly broad set of CSS 2.1 test cases (over 7,000), and we’ve submitted them to the W3C. For thousands of tests, all three browsers do the “right” thing, but we’ve also got hundreds of examples of where other browsers that claim ACID2 compliance fail to fully implement the CSS standards. In practice, 100% standards compliance is really hard. Many standards can’t even be completely met at this point in time, because they’re not final. For IE8, we focused on the test suite and delivering as complete an implementation as possible so that we can help you build sites that work across multiple browsers.

Building on the core foundations, Internet Explorer 8 introduces a number of additional opportunities to extend a web site experience so that it more fully integrates into a users’ life. In IE8, we’re introducing web slices, accelerators and visual search to make it possible to get quick access to real-time information while you’re browsing.

  • It’s easy to create a web slice – just a few extra tags. As an early reference example, OneRiot built a web slice that is driving 18% more traffic to their site than would otherwise be the case.
  • One interesting piece of information from our instrumentation shows that a very common flow for users is to open one tab, copy some information and paste it into a new tab. Accelerators help smooth this workflow – you can select a piece of information and quickly do something with it – blog, tweet or email it, map it, etc. There are over 1,200 accelerators, web slices and visual search providers out there already today, including Digg, ESPN, OneRiot, Amazon, Sina, TaoBao, and Yahoo.

The release of IE8 isn’t the end, it’s just the beginning. It’s easy to underestimate this opportunity. Ten years ago, we shipped IE5. Wikipedia credits IE5 with giving birth to AJAX to the world, even though nobody was talking about AJAX at the time. We see IE8 as a similarly pivotal release, and we’re excited to see what you do with it!

As announced at the MIX09 conference today, we just shipped the final version of Internet Explorer 8. If you haven’t yet given it a try, here are eight reasons that might persuade you to check it out:

  1. You want a web that moves as fast as you do: Highlight an address, click the blue "Accelerator" button (clip_image001), and see all the things you can do instantly – like mapping, searching, and translating. Check out accelerators from Digg, Facebook, eBay, Yahoo, and others.
  2. You want to know if it's raining outside: Visit live.com, search for “Seattle Weather” (or any major city), hover over the search result, and click the green "Web Slice" button (clip_image002) to add a weather Web Slice to your Favorites Bar. As of this morning there are over 1,200 Web Slices, Accelerators, and add-ons available worldwide in the IE8 add-on gallery.
  3. You like everyone to get along:  And that includes wanting the web sites you visit to work well with your browser. IE8 is the only browser to include multiple rendering engines to address backwards compatibility— hit a site that doesn't seem right, hit the Compatibility View button, and you're on your way.
  4. You're a visual learner: See pictures of what you’re looking for as you type in the Instant Search box – rich search results in action! Don’t forget to install some extra search providers, such as those from NY Times, Amazon, Wikipedia, OneRiot and ESPN.
  5. You want to find it again, fast: To quickly find sites you’ve visited before, simply use the new Smart Address Bar which searches your history, favorites, and feeds.
  6. You like your privacy: Enjoy more control over your personal information and privacy on the Web with InPrivate. Keep your work and personal lives separate and protect yourself from unwanted cookies.
  7. You want an edge against the bad guys (aka security): Internet Explorer 8 offers unparalleled protection against malware – it's ten times safer than Internet Explorer 7, four times safer than Chrome, nearly three times safer than Safari, and twice as safe as Firefox according to an independent study.
  8. You hate interruptions: If one tab crashes, you can re-launch it without affecting your browsing experience – your other tabs keep right on working.

IE8 isn’t just a good browser, it’s much faster than the Internet Explorer of old. Check out this video to see performance tests of real-world sites with leading browsers. Great web performance is about more than the speed of the scripting engine – in the real-world, it’s an end-to-end test of all the browser components.

As far as I’m concerned, the only legitimate excuse for not upgrading to Internet Explorer 8 is if you’re currently already living on the leading edge with Windows 7 Beta. A pre-release version of Internet Explorer 8 is already built into the beta of Windows 7. When we ship the release candidate of Windows 7 later this year, we’ll include the final IE8 release.

At 9am Pacific (GMT-7), I’ll start live blogging the second day of MIX09 keynotes.

As with yesterday, I’ll post the live version at this location on the visitmix site, and then within a couple of hours of the end, I’ll post a better edited, linked version here.

If you missed out on yesterday’s keynote and sessions, check out the following links to get a sampling of the event:

And of course, don’t forget to tune into the live broadcast at http://live.visitmix.com!

Bill Buxton talked about why user-centered design is so important; now we’re going to talk about the “how”. We’re going to be talking about three key categories today: web, media and RIA. One of the things we’re trying to do is to provide a single platform – the .NET Framework – that can be used to build applications for each different location and reuse code and development tools across each place.

WEB EXPERIENCES

image_thumb[34]

Let’s start by talking about front-end development. Tomorrow, Dean Hachamovitch will be talking about how to build great IE applications. Today, I’m going to talk about the work we’re doing with the tooling to support that.

The Microsoft web platform is a powerful set of tools and technologies optimized for building and hosting next-generation web applications. As well as the technologies we produce ourselves, we’re also increasingly integrating with other existing solutions out there in the open source space like jQuery and PHP, and making sure they run well on the Microsoft stack.

Expression Web 3

Let’s start by looking at the work we’re doing with Expression Web 3. Expression Web 3 includes a set of new features, supporting standards-based web authoring, multi-language targeting, secure FTP support, CSS diagnostics and SuperPreview, which solves the common problem web developers face of ensuring that a web application works consistently across a broad set of platforms.

SuperPreview will be built into Expression Web, but today we’re also releasing it to the web in beta form as a standalone tool.

ASP.NET MVC

Now let’s talk about server-side development. Over the last year, we’ve been iterating on a new model for ASP.NET MVC as an alternative to the existing Web Forms model. One benefit is that you get full control over your HTML markup; it also supports SEO-friendly URL routing and test-driven development workflow. It’s also easily extensible, and it’s great to see how the broader community is taking advantage of this.

Today, we’re releasing ASP.NET 1.0 MVC to the web, available for download immediately.

ASP.NET 4

Visual Studio 2010 Profile ScreenshotLater in the conference, we’ll also be talking about the next release of ASP.NET 4. This provides lots of improvements: to Web Forms, to controls, more granular view state, and data binding. In the Visual Studio 2010 timeframe, we’ll also ship a second version of MVC, along with updated libraries for AJAX that include jQuery; you’ll also see us shipping a middle-tier cache codenamed “Velocity”. We’re also advancing Visual Studio 2010, including code-focused improvements, better JavaScript / AJAX scripting support (including jQuery, Prototype and Dojo), SharePoint and publishing and deployment improvements including support for multiple profiles.

In addition to the work we’re doing to ASP.NET on the programming side, we’re also doing a lot of work on our core web server. Last year, we shipped IIS 7 – a major update. One of the big innovations was infrastructural work to support extensions. Today we’re shipping eight new IIS extensions, providing a ton of new functionality including URL rewriting, a new FTP stack that supports secure FTP, WebDAV, an application routing engine that supports forward proxy, and bit rate throttling.
IIS Extensions

Web Platform Installer

One of the common themes you’re going to see throughout this event is a lot of new capabilities that you can take advantage of. But one thing we often hear from customers is that it’s hard to find all these different technologies. So today we’re shipping a new 2.0 update to our Web Platform Installer tool, which provides a unified list of all the components in the web platform stack – those shipped in-box and those shipped separately; you can optionally also choose development or design tools to install at the same time and have it all installed in a very easy way. The Web Platform Installer is a 1MB tool that can save you hours of time.

In addition to enabling you to download our own technologies, we’re also integrating support for a Windows Web Application Gallery – a portfolio of tested ASP.NET and PHP applications like DotNetNuke, DasBlog, Graffiti, Drupal, WordPress, phpBB that you can quickly install on your machine to get up and running.

You can download the Web Platform Installer 2.0 Beta immediately online.

Commerce Server 2009

Another release this week is Commerce Server 2009 – there are sessions here where you can learn more.

Azure Services Platform

Microsoft is also making a huge investment in our cloud computing platform; at the PDC08 in October last year, we launched a preview of our Azure Services Platform. We’ve seen a lot of user-generated demand for new features; today, we’re announcing a number of new capabilities that will be available this week.

For the underlying Windows Azure platform, we’re adding FastCGI / PHP support, along with the ability to run full trust .NET applications; SQL Data Services goes relational, allowing you to use the full ADO.NET stack, LINQ to SQL, and so on inside a cloud offering; lastly, the .NET Services Platform expands to support more web standards. We’re on track for commercial release later this year.

Microsoft BizSpark

We’re also highlighting Microsoft BizSpark, a marketing program designed to provide software entrepreneurs and startups access to the software they need to build their business for free for three years.

Jeff Atwood and Joel Spolsky showed off stackoverflow.com, a startup built by developers for developers on Microsoft technology.

Silverlight

Let’s change gears and talk about Silverlight. Silverlight 1.0 launched just eighteen months ago, and we shipped our second release last October at the PDC. We’ve already had over 350 million installs, we have over 300,000+ developers and designers, 200+ partners in 30 countries, over 200+ Microsoft products and websites that are using Silverlight; this week we’re shipping two more sites: a Silverlight-based web client for the Microsoft Worldwide Telescope application, and a Virtual Earth Silverlight Map Control Interactive SDK that makes it easy to add mapping to your app.

 image[89]image_thumb[64]
There are tens of thousands of Silverlight sites already out there including AOL, eBay, BSkyB, Netflix, CBS, CareerBuilder.com, Samsung Electronics and Yahoo! Japan.

MEDIA EXPERIENCES

image_thumb[32]

Kevin McEntee, VP of Web Engineering for Netflix shared their experiences as an early adopter of Silverlight.

One year ago, Netflix began looking at Silverlight primarily as a way to get media streamed to Macintosh computers. When we dug in further, we also wanted to broaden support for Firefox. Then we discovered we could produce a better solution for all platforms by eradicating platform-specific code, enabling us as a business to concentrate on producing the best possible experience for all of our customers.

Installers are evil! roughly 20% of our customers who had the appropriate system requirements wouldn’t make it through the process. A lot of the complexity came from the content protection issues. Now Netflix is out of the installer business – there’s just a one-time install that is supported by Microsoft that includes content protection and all the other media elements we need, allowing us to focus on our core business of helping our customers find and watch great movies.

Why is Silverlight uniquely suited for delivering these kinds of experiences? We’ve found that Silverlight is a great platform for developing video players. We want our customers to be able to start watching the video fast and then step up to a higher bit rate as soon as possible, all using a generic HTTP-serving infrastructure. But if we step up the bit rate too quickly, we get stuck in a rebuffering experience.

We’re learning by doing and enhancing our player on a regular basis. We’re using Silverlight to deliver better players transparently to our customers every two weeks without having to take them through a new install. Since we launched our player last November, we’ve halved the rebuffer rate. With our old video player, we were afraid to touch it because we knew it would be a painful experience to our customers – we’d therefore only update it every year. With Silverlight, we’re constantly enhancing!

The media stream source API gives us access at the right point in the pipeline to be able to really push the player. After we’ve done the innovation on Silverlight, we’re also able to take these same experiences and drive them into device-based players like Xbox and Roku.
TimS-Netflix_thumb[4]
 
In Silverlight 3, we’re looking forward to taking advantage of some new features from Microsoft, in particular GPU support for scaling and stretching video, expanding the range of processors and price points for running video playback, as well as taking advantage of all the other innovations and features that Microsoft have added over the last twelve months. We’re very happy with Silverlight.

Silverlight 3 Media

Let’s talk more about the Silverlight 3 enhancements we’re making. In Silverlight 3 we now have hardware-based media acceleration. We have new codec support (H.264, AAC, MPEG-4). We’re adding a new RAW audio/video pipeline API. Now you can write your own codecs in Silverlight using C#, VB or any other .NET language and add them into the pipeline. We’ve also added improved logging for media analytics, so as you watch the video you can monetize it with ads or track it for improving the experience.

We’re also announcing a series of enhancements for IIS Media Services that ship today: smooth (adaptive) streaming for on-demand content, which allows automatic cycling between different bitrates depending on machine and network availability, delivering a smooth experience for both H.264 and VC-1. Today we’re also announcing beta support for live smooth streaming, delivering the same experience even when content isn’t prerecorded. We’re integrating with CDNs like Akamai for edge caching, web playlists, bit-rate throttling and advanced media logging.

Expression Encoder 3 has built-in support for these Silverlight 3 enhancements; beyond support for H.264 and AAC as well as smooth streaming, notable additions include a new smooth streaming preview player that allows you to simulate transient network conditions, along with the ability to do screen capture. With live streaming, I can even pause the recording and seek back, just like using a Tivo.

imageLast summer, NBC hosted the largest sporting event ever held on the web, and they chose Silverlight to do this. Perkins Miller, SVP/GM Digital Media at NBC Sports is on-stage to talk about the background. A cacophony of statistics: 1.3 billion page views, 52.1 unique visitors, 75.5 million videos watched, 9.9 million hours of video consumed, 27 minutes of viewing per session, 5,000 unique clips viewed per day during the final week, 35 million mobile views, 130,000 peak streams, 3.4 petabytes of video delivered.

The next Olympics are the Winter Olympics, in Vancouver, Canada. We’re announcing today a renewal of our partnership with Microsoft for this. This is the ultimate product – fully HD, adaptive smooth streaming delivered at 720p. You’re going to get the DVR experience Scott demonstrated earlier – pause, rewind, super slow motion, high resolution frame capture, metadata overlays, live video alerts and real-time feeds of the latest and most popular clips.

RIA EXPERIENCES

image_thumb[33]Silverlight 3 Core Platform Advances

Let’s switch gears and talk about RIA experiences. In Silverlight 3, we’re introducing a collection of new graphical features for eye-popping experiences: GPU acceleration and hardware compositing (on both PC and Mac), perspective 3D support, bitmap and pixel APIs, HLSL-based pixel shader effects (with out of the box support for blur or drop shadow as well as your own custom effects), and plenty of DeepZoom improvements (hardware-accelerated, larger collections of images). Use this power for good and not evil!

We’re also adding features to improve application development support. Deep linking is a popular request, for ease of navigation and search engine optimization. In Silverlight 3 we’re introducing a page navigation framework that will enable you to hyperlink or bookmark directly into a page of the application. We’ve also done a lot of work to improve the text quality, added multi-touch and gesture support on Windows 7. On the controls side, we’ve added over 100 controls along with support for caching, so you can use more controls without slowing down application initialization.

David Anthony from Bondi Digital Publishing and Scott Stanfield from Vertigo shared their experiences as a Silverlight 3 early adopter. Bondi has always felt like offline publishing would move to the Internet at some point, but we never felt that the user experience was suitably comparable with the printed edition.

Scott: our “competition” is the paper magazine! Showing a beta of a new digital archive of Rolling Stone magazine. This enables you to view and page through articles online just as easily as with a physical magazine. You can zoom in or out using DeepZoom technology, hyperlink through from one page to another, and search for information. Note that the content is highlighted thanks to the bitmap APIs in Silverlight 3; you can also flip the search out of the way using perspective 3D. On a multi-touch machine, you can even use standard gestures like “pinch to zoom”. RollingStone-Screenshot01_thumb[14]

The Rolling Stone application will be made available later this summer from their online site (note that this URL also includes links to their Playboy digital archive, which launches today also – use caution if you’re clicking the link at work…!)

Expression Blend 3

One challenge we have to face as designers and developers is: how do we build one of these things, from requirements gathering to final delivery. Bill talked in the first keynote about the challenges here and some of the ways that we could make it better in the future; in Silverlight 3 and Expression 3 we’re trying to make that future better together.

Today we’re introducing Expression Blend 3. Blend 3 introduces a new feature called SketchFlow, which makes it easier for designers to start iterating on the flow of the application along the lines of Bill Buxton’s talk. It also adds support for importing image assets from Adobe Photoshop and Adobe Illustrator, behaviors (allowing you to add interactivity to objects without writing code), the ability to “design with data”, source code control, along with XAML, C# and VB code IntelliSense in the code editor.

For a more comprehensive guide to SketchFlow, you’ll want to check out Christian Schormann’s blog posting on this technology.

We know how important it is to integrate with existing platforms; in October, we announced our first support for Silverlight development using Eclipse on a PC; today we’re announcing an extension of that support to include the Macintosh.

Eclipse Mac Silverlight Support Screenshot

Silverlight 3 and Data

Let’s talk a little about data. We’ve done a lot of work to continue to evolve the rich data features in Silverlight 2. There are data binding improvements, including element-to-element binding, validation error templates, multi-tier REST data support (.NET RIA Services, previously codenamed “Alexandria”) which solves the age-old problem of how you push the changes back from client to server. And then, to make it easier to retrieve data across the network, we’ve added support for binary XML as well as server push notification.

SAP and Silverlight

imageA quick customer reference: SAP wanted to enable their customers to take advantage of a rich set of controls and the advanced graphics capabilities. As a result, SAP has partnered with Microsoft to further enrich the user experience for SAP’s well-established Web Dynpro UI technology with the powerful capabilities of Silverlight. The combination of Web Dynpro and Silverlight will deliver a rich user experience for business applications with minimized development costs. These capabilities are planned for coming release of SAP NetWeaver.

Silverlight 3 “Out of Browser” Applications

An announcement you’ve all been waiting for: we’re also doing a lot of work in Silverlight 3 to enable “out of browser” experiences on both Windows and the Mac. This enables a bunch of new scenarios: extending media experiences that are pervasive, companion applications for your website, and lightweight “data snacking” applications like gadgets and widgets. In Silverlight 3, we’ve made it very easy for end-users to go ahead and install these kinds of applications. We don’t need to show a scary security dialog because we’re running in the same context as the browser; it’s safely sandboxed.

It includes auto-update support: you can simply copy over the file on your remote server and Silverlight 3 will automatically detect an update has occurred; the next time a user is online they’ll get the application transparently updated. As well as APIs to detect whether an application is running in- or out-of-browser, we’re also adding offline-aware capabilities; you can handle an event in your application that enables you to detect whether the machine is connected or not and produce a differentiated experience accordingly.

KEXP

Tom Mara, Executive Director of KEXP is on-stage showing their new Silverlight 3 radio player. KEXP’s mission is to get a wide and deep array of music into people’s lives: everything from indy rock to jazz and blues, all melded together. KEXP started in 1972 as a 10W station, and has grown incrementally since then, both within Seattle and beyond. In fact, a full third of the listening audience these days is outside of the state of Washington (just seven years ago, only 2-3% of listeners were remote).

This is what the new KEXP player is going to look like:KEXP Player Screenshot

You’ll see that we’ve got the live stream metadata, listener comments that are connecting with the DJ live. I can come in and add a comment. Even if the network connection goes, I can continue to use the player on the bus to watch other videos that I’ve saved – Silverlight 3 provides support for detecting offline scenarios.

Conclusion

So you’ve seen a lot of amazing features: media, graphics, multi-touch, data binding, networking, application model.

People will be wondering how big Silverlight 3 is with all these new features. We spent a lot of time tuning new and old features and improving the compression, and the new download package is actually 50K smaller than the old release – it’s now even faster to install with a ton of new features to take advantage of!

Silverlight 3 Beta is now available for download. We’re really looking forward to seeing what you build!

Earlier today on the visitmix site, I posted a “live blog” of the first two MIX09 keynotes here in Las Vegas. Now that the dust has settled a little, I wanted to provide an edited version for broader consumption. If you’re looking for a comprehensive, blow-by-blow account of what went down today, read on…

First up was Bill Buxton, one of the leading design voices within Microsoft Research. He presented a passionate exposition of the impact of great design and the way that tools need to evolve to better solve the problems faced by “experience designers”.

Introducing Experience Design

Despite the economic downturn, it’s a great time for design!

A useful parallel is 1929, in the middle of the Great Depression, when industrial design was in exactly the same formative stage as experience design is now. Think about it – what a stupid time to launch a business! Yet this was the period in time when Henry Dreyfuss designed the classic phone and Raymond Loewy created the Studebaker Avanti design as well as the Coca Cola logo. Another example: Walter Dorwin Teague started in 1926; his principal customer was Kodak. At the time, they had a single black camera; he helped them expand their brand by producing editions in multiple colors in silk-lined boxes, these sold at double the price of the black original.

Again, what idiot would start up a design company in the middle of the depression? It turns out that every one of the companies these guys founded is still going right now – and the lessons learned are still valuable today.

Industrial designers talk about objects; but it’s the experience of interacting with the product that is the true result of the design, not the object itself. I spent some time working with Trek – the guys who designed Lance Armstrong’s bike. But there are multiple ways to render it: as a simple image of the product, or in a different, mud-splattered stance that shows the essence of mountain biking. In many ways, the latter rendering is a more faithful representation of the experience, even if the bike itself is less prominent: it captures the excitement and the energy. This is what we design – what our tools do.

The question is, how do we do it by design, not by accident? As an example, think of a mobile phone. It’s easy to draw the phone itself, but what about the phone interface? Now clearly, the interface is as important as the hardware, but it’s much harder to draw. That should worry you, because design is about rapid iterations so you get to the right version. What about the experience of using the phone? Here’s the challenge – if you can’t sketch it in a few seconds, how can you capture its essence? We need the same speed and versatility of designing experience, otherwise we’d better start rethinking the structure of the design process. And it’s not just about the phone – the same is true whether you’re designing websites, applications, or anything else that requires interaction.

Designing with Experience in Mind

So how do we do it? When I think about design, I think one needs to think in terms of multiples: offering multiple choices rather than selecting a particular path. You’re not allowed to make a decision as a designer - instead, your role is to ask the right questions that lead to the right answer. Designers don’t come up with solutions, they come up with provocative choices. Naturally there’s a challenge of how to combine the goal with the budget, personnel and resource issues required to get to this point, but if we have the right tools or techniques, we can be just as efficient as our industrial and graphical design colleagues.

Again, how? Well, certainly don’t write code, as a start, sketch. I don’t care how good you are with Expression Blend or Photoshop, you can do the first iteration faster with a Post-It note than on a computer.

How do you sketch time? Experience is a temporal phenomenon. To show the flow, we use a state transition diagram. You need to have as much detail in the transitions as in the states, otherwise you’re going to get it wrong. A guy called Ron Bird from the UK has done some interesting work in this space, showing how each screenshot is connected in the state transition diagram. This is where the reality comes in – the state transition diagram is a good indicator of the complexity. My dream is that some day we’ll have a tool that will provide a way to combine the sketches with the state and enable rapid iteration between those.

People think that design is a creative process. In fact, design is the most negative discipline you could come up with. You start with a million ideas and come up with just one! The biggest part of creativity is throwing away stuff without upsetting folk (and most of what you throw away is yours!) These things are far too important to take seriously; we need to change from sketching to prototyping; from ideation to valuation. We need a really important variation in the suite of tools we use.

Microsoft and Design

What about Microsoft? When I joined three years ago, thee was only one person in the technical leadership with a design background. Now there are about ten. There is significant growth in senior ranks joining from other companies, but also many others have been promoted from within. And growth in the design community isn’t just at a senior level. In less than two years, we’ve grown user experience headcount by almost 1.5 times. This is almost twice the rate that we are hiring technologists as a whole. In fact, we now have about 800 designers and user researchers.

By way of example of the impact this influx is having, two of the young user experience designers who joined Microsoft recently created the Arc Mouse, for instance – a great example of design-led innovation. Another example is the Zune – to go from a standing start to the Zune 2 in just nine months was a remarkable feat. It’s not about the device, it’s about the software and the whole ecosystem.

We need a unified way to develop these interaction experiences, regardless of the target platform: that’s how we get the return. The Roman philosopher, Seneca the Younger, once said, “luck is what happens when preparation meets opportunity”. What we’re going to do as a company is to show you how we can help you in the preparation so that you can reach the optimal experience.

In previous years, I’ve posted a live blog here of the major announcements at our flagship developer conferences. This year I’m going to try and do the same over on the MIX09 site, with “raw” regular updates of the key announcements; I’ll then wrap-up with a slightly more polished, detailed version on my blog here. If you’re looking for the action as it happens, check out the MIX site; if you want to come back later in the day for the full works, you’ll find that here.

And then, after the keynote we have a web exclusive! Jeff Attwood from stackoverflow.com and Jeff Sandquist from our own Channel 9 will be moderating an online video chat with Scott Guthrie with the brilliant name of “AskTheGu”. Tune into http://live.visitmix.com and send your questions in advance using Twitter with the #askthegu keyword.

It’s been a little while in coming, but I’m delighted to announce that we’ve shipped the latest release of Family.Show, our reference application for WPF development. Family.Show started a couple of years ago, when WPF was in its infancy and a few of us were looking for ways to showcase the power of the platform as a way for developers to build beautiful Windows applications. We approached our friends at Vertigo Software with a request to partner with us in building a WPF sample that would be both a beautiful application in its own right as well as a great learning tool for aspiring WPF developers. After experimenting with a few scenarios, we picked genealogy: not only is it one of the most popular hobbies out there, but it’s also a category of application that closely models a number of (rather more boring) enterprise scenarios.

image Fast forward to 2009, and it’s been really fun to see how Family.Show has been used as an application. We’ve been approached by authors who use it to track the characters in their fiction novel, it’s been featured in genealogy magazines, and it’s been downloaded many thousands of times by developers all across the world. Since it’s licensed under our most permissive license, you’re welcome to reuse any or all of the code for your own purposes or to take concepts and build them into your own application.

In this third major release, we knew it was time to refresh some of the code to take advantage of the new innovations in the latest releases of WPF (for example, data validation, LINQ, and so on). We’ve also been reading through the feature requests on the Codeplex site and have implemented a number of suggestions to make it an even better tool for general purpose genealogy purposes. (For example, you can now marry your cousin!) We’ve done a lot of work to refactor the code: componentizing several of the controls to make them more easily reusable in other applications. Lastly, we thought it would be great to create a hands-on lab that made it possible for developers to start to experiment with Family.Show and learn WPF using the application.

We’ve put all this together into a new release that we’ve packaged up on Codeplex. Check it out and let us know what you think!

We’re not done – we’re actively working on the v4 release, which will come out relatively quickly and take further advantage of .NET 3.5 SP1. We’re working with a few interested developers from outside Microsoft who are also interested in extending Family.Show – if you have a patch you’d like to submit, we’d warmly encourage you to do so.

Check out Family.Show on Codeplex or indeed on Vertigo’s website, where they have a ClickOnce version of the application ready to go (requires .NET 3.5 or later).

Not a huge release this one, but we've just shipped an update for Silverlight 2 that fixes a number of minor bugs that have been reported over the last couple of months.

Get it while it's hot, here:

Note that the developer tools page may have an old date/timestamp on it still, but the binary is the new updated version. You have the GDR1 if your Silverlight version is 2.0.40115.0 (the original Silverlight 2 version was 2.0.31005.0).

Here is a list of the main changes in the GDR (build 2.0.40115.0):

  • Fixes problems that were caused by Silverlight and McAfee scanning tools interactions
  • UI automation stability fixes, including:
    • graceful failures when attempting to use features that require .NET Framework 3.0 or 3.5 on machines that do not have either framework installed
    • improved Tablet support
  • Fixes an issue that arises when Mac users customize their environment by removing Arial and Verdana fonts
  • Fixes a known issue with Isolated Storage IncreaseQuotaTo method (see this post for more information)

It's also worth highlighting Tim Heuer's blog entry on the topic, which adds some good information about how to force users visiting your site to upgrade to the latest build if you're relying on one of the above fixes for your application.

More Posts Next page »
 
Page view tracker