MIX09: Keynote Announcements

Bill Buxton of MS Research led off, looking quite like the professor in Back to the Future. The key to UX, he says, is to balance budget with multiples - multiple ways of accomplishing the same task, that can be chosen between. “The transitions are just as important as the states,” he says. Better transition documentation would end up with a better UX implementation of said process in the final product. “Ideation,” basically brainstorming, actually lowers usability unless followed by a stage of reflection/iteration on the ideas created.

Expression web 3 is coming. SuperPreview feature can load previews using different browser engines, including Firefox and Safari from within the Expression interface, as well as a side-by-side view with the original comp or overlaying the comp as a transparency. It can also get previews for things like Safari Mac by using a MS cloud service to provide the rendering. It can also firebug-style outline elements while n side-by-side view to compare browsers (ftw!). Free version of SuperPreview only available now, which enables side by side display of multiple versions of IE with no VMs, etc. More on SuperPreview later, after I condense my notes from discussing it with one of the developers on the project.

ASP.NET MVC 1.0 RTM is released.

Some features of Visual Studio 2010 were discussed but I will discuss those in my post about the VS session I was at later in the day.

IIS 7’s FTP module getting an update including SFTP support. Much needed, IIS FTP has been pretty terrible for ages now.

Web Platform Installer 2.0 coming out, available from http://microsoft.com/web, which extends on the 1.0 featureset of being able to configure IIS and install Microsoft development tools (SQL/VS express, IIS 7 extensions like URL Rewrite) by adding an “app store for your web server” as ScottGu put it. I think that sounds like a great idea. The Web PI app gallery has an open interface and many common products are already on it - even not traditionally Microsoft apps like PHP and Drupal, as well as open source .NET apps like DotNetNuke and Umbraco.

Silverlight 3 beta is released today. Many many new features to compete with Flash and AIR.

  • New Codecs: supports H.264/AAC/MP4

  • GPU acceleration including pixel shaders and 3d perspective transforms on images and video
  • improved media analytics
  • deep linking support
  • better text quality (ClearType support, including on the Mac)
  • multi-touch support
  • Silverlight library caching support (i.e. download external code libraries once)
  • Can run outside a browser similar to AIR, with a solid security sandbox limiting the need for “are you sure xxx?” dialogs
  • Download size 40k less than Silverlight 2 thanks to code optimizations
  • “Smooth” streaming using adaptive bitrates depending on network conditions enables several interesting behaviors including lowering the bitrate temporarily to avoid rebuffering a stream, and instant seek in streams by restarting the stream instantly with a low bitrate and kicking it back up as the buffer refills.
  • DVR-style stop and rewind abilities for live streams

  • That’s all folks. Some exciting stuff coming down the pipe here, with more details in some entries I need to write from my sessions today.

    Going to MIX09, or ASP.NET MVC vs the mighty CMS

    Well I’ll be getting on the plane to go to MIX09 in a few hours. I’m really looking forward to it, since there are a lot of ASP.NET MVC talks this year by many .NET people who I have a lot of respect for.

    Since I do a lot of CMS development ASP.NET MVC has always a bit of an odd proposition technically. CMSes pretty much always want to enforce their own idea of how to program, which tends to be technically about as advanced as putting SQL statements right on the page so their marketing department can make claims about how easy it is to use if you require practically no advanced functionality. It’s a constant battle to figure out ways of writing maintainable, “good” code within the confines of a CMS’s API, and ASP.NET MVC is definitely one of the tools I’m looking at.

    The main problem with integrating ASP.NET MVC into a CMS installation is that almost all CMS like to have a fully hierarchical URL setup; i.e. http://mysite.com/some/long/path/to/rewritten/content.aspx that would match /some/long/path… in the admin interface. The default routing system from what I’ve been looking at won’t really support this setup since what we’re really doing is defining what item in the (dynamically created and modifiable) hierarchy to look at as opposed to a (static, defined in code) controller action to invoke. So I think it’s likely I’d need to implement my own version of routing, but that brings with it it’s own issue that the custom routing then needs to know a lot about the data before passing control off to a controller action to render a page using a specific template renderer (based on the type of page it finds at the location in the hierarchy). I’m still looking around and hopefully can corner one of the MVC guys at MIX and see if they have better ideas :)

    Compiling in minimal environments with MSBuild

    I think it’s happened to almost everyone: you push web site changes to a dev server, or a staging server, and something breaks. Something that of course only occurs in that remote environment and can’t be reproduced on your development instance with all its nice debugging tools.

    Suppose that you track it back to an issue that will require recompiling the site to test it. Sure, you could build it locally and manually copy files every time you need to test…and realize you didn’t quite fix it, but why do that when there’s a better way to recompile a solution without Visual Studio installed: MSBuild.

    So what is MSBuild? In short, it’s the build runner that Visual Studio uses every time you build a project. It parses the solution or project file and executes the build commands embedded in the XML. It’s capable of a whole lot, and makes a great tool to automate nightly builds and lengthy push processes. We tend to use Subversion to accomplish build management by keeping the built DLLs under version control and making configuration changes very minimal across environments, so the build and configuration abilities aren’t as awesome when building medium sized websites. It’s the ability to parse and compile a solution that is of great interest.

    So how do I use it to compile a solution without having a local copy of Visual Studio? Fortunately, that’s the easy part. Open a command prompt and type this:

    C:\my-project-path> C:\WINDOWS\Microsoft.NET\Framework\v3.5\msbuild.exe my-solution.sln
    • You may need to change the v3.5 to the framework version you’re using. You may also need to change Framework to Framework64 if you want to run the 64-bit MSBuild.

    Pretty simple eh? That will build the solution using the active configuration from Visual Studio.