April 2007 - Posts - Jon Galloway

April 2007 - Posts

MIX07 - A private Silverlight demo from ScottGu

The situation was grim. I was sitting in a hotel bar at MIX07 with Jeff Atwood, Miguel de Icaza, Phil Haack, and Rob Conery (pictured left to right). The conversation had slowed. Miguel was telling Rob why he should floss. Phil was humming showtunes. Jeff was trying harness telekinetic powers to levitate his beer. See for yourself:

Jeff Atwood, Miguel de Icaza, Phil Haack, and Rob Conery

Then Scott Guthrie and Beau Ambur (one of the keynote presenters) walked by. Next thing you know, Scott's showing off Silverlight 1.1. He wrote a quick demo application on the fly to demonstrate the .NET API support. Here he is answering Miguel's questions:

ScottGu demonstrating Silverlight to Miguel de Icaza

That's why MIX is not your average conference.

Posted by Jon Galloway | with no comments
Filed under:

Announcing SilverlightBlogs.com

I've just started a community site for Silverlight bloggers called, unsurprisingly, silverlightblogs.com. At this point, the community is just me and I'm still learning about Silverlight.

Know something about Silverlight and want a blog account? Contact me!

Posted by Jon Galloway | with no comments
Filed under: ,

Silverlight gets Photosynth

Photosynth (using the Seadragon technology) has been added to Silverlight. (announced at MIX07)

Posted by Jon Galloway | with no comments
Filed under: ,

MIX07 - Keynote

Live webcast is available here.

Ray Ozzie

Into - discussing the continuum of Universal Web to Experience First (Desktop / Device)

The reality is that useful applications don't pick, they blend. The movement is from SAAS (software as a service) to Software + Service


  • Video - Cross platform runtime for video
  • .NET - Enhancing RIA platform via .NET integration (new choice over JavaScript)
  • Services - Silverlight streaming - storage service for Silverlight applications and media

Expression Studio is officially shipping today

Scott Guthrie

Announced cross platform .NET support has been added to Silverlight

A preview release of Silverlight just shipped (download here)

Video support - HD, using standard codecs for cross platform support

Neil Hunt (Netflix)

They've had video streaming since beginning of year

Will be using Silverlight video streaming (VC-1) bitrate 500 to 2200, will be adding HD later

Today they have 2000 titles available for viewing

Netflix viewer demo - view online, select chapter, also use Netflix services, shared viewing, integrated chat

Built Netflix viewer application in 3 weeks

Demonstrating on Firefox / Mac - exact same experience

Editorial - this is the first WPF app I've seen that really sells "rich internet applications" over simple AJAX

New presenter, didn't get his name

Expression Media crashed during demo. Brilliant save by demonstrator - "We're just demonstrating how fast Expression restarts!"

Expression Media - can split screen on video to show difference in encoding quality - move slider and timeline while playing. Very slick.

Blend 2 - Showing live demo.

Round trip - encoded video in Expression Media, did some design work in Expression Design and Blend, then deployed to site in Expression Web 2. Silverlight video piece was deployed to VisitMix site.

Very cool demo - took a playing video with what looked like a puzzle overlay, then hit scramble and the entire video broke into puzzle pieces all over the screen, all still playing the video.

Expression Blend 2 - May Preview released today.

New speaker - CBS

Showed video, audio sharing site

Video had a small logo overlay, overlay scaled cleanly when he expanded to full screen.

Can continue to browse while uploading video

Demo video - sample newscast with user submitted video

Scott Guthrie

Free video hosting - any number of 10 minute videos

Backed by Microsoft content delivery network

Recap of announcements:

  • Silverlight 1.0 beta (will ship this summer)
  • Silverlight 1.1 alpha (.NET language support)
  • Silverlight Streaming Alpha

Silverlight contains same .NET CLR as desktop

300 to 1000 times the performance as JavaScript

WPF Framework Library

HTML library

Orcas demo - CLR cross platform debugging

Showed interactive debugging from VS.NET IDE against Silverlight running on Safari / Mac

Silverlight Network stack allows communication between Silverlight client and server logic via Windows Communication Framework (WCF).

Demo - Silverlight Airlines demo - Interactive airline booking - selected flight by clicking on cities on a U.S. map, then showed flight animation with actual flightpath. Showed some interactive

Beau Ambur (Metaliq)

TopBanana demo

Video editing site - Clipped video segments

Filmstrip view of videos - just stretched video thumbnails and they transform into filmstrip view

Frame by frame navigation

Entire site delivered over the web in 50K

Done in one month on pre-alpha bits


  • Visual elements created in Design, exported to XAML
  • Project setup in Blend
  • Code written in Visual Studio

MS will be releasing the application as a sample

Scott Guthrie

Dynamic Language Runtime

Python / JavaScript / Dynamic Visual Basic / Ruby

Silverlight + Dynamic Languages

Demo - Silverlight app with Ruby code. Text for XAML and Ruby (rb) file written in TextMate on a Mac - no compile, no Microsoft code other than Silverlight client

Demo - Command line Ruby interactive editor with IntelliSense

Automatically canonicalize to appropriate language - wpf.load_xaml "photo.xaml"


Very nice interactive viewing experience for a live game. Like Media Center but with navigation to inning and pitch, picture in picture, stat overlays. The guy sitting next to me said "Why would you ever watch it on TV?"

Mobile device app with video clip integration


  • Broad Reach
  • Richer Media
  • .NET
  • Multiple Languages
  • Expression Studio
  • Visual Studio
  • Services

Q & A With Mike Arrington

Internet as a platform - Ray Ozzie: not an A or B choice, advantage of common mesh

Is Silverlight a Flash Killer / can you compete with Adobe for Designers - Scott Guthrie: Choice, designers will use a range of tools

Why should users of Dynamic Language work with Microsoft - Guthrie: Hire and support of passionate innovators, dynamic language release to CodePlex

Online version of Office - Ozzie: Nothing to announce, but you can see where we're going with the integration of Software + Services

Zune Phone - Not much here - Ozzie: XBox, Zune designed from ground up with experience in mind. More offerings like this will follow.

Do you see real opportunities to compete in search - Ray Ozzie: Some of Microsoft best advances have been in response to competition with incumbents. Often due to secondary impacts - for instance, Google has helped enable an ad support monetization strategy that will enable new Microsoft businesses, etc. Linux prompeted server and tools response, which has had wide reaching impacts on Microsoft's offerings. PlayStation prompted not only the XBox, but other devices. Google is like the PS2

How have you done as Chief Software Architect - Ray Ozzie: Services - Connected entertainment, Connected business, Connected Platform

We've shipped a lot of projects we were working on when I came in. Of course I'm living in Bill's shadow, but I'm happy with how we're doing and where we're going.

Posted by Jon Galloway | with no comments
Filed under: , ,

[MIX07] Dinner with Miguel, Guitar Hero defeat by Hanselman

Phil Haack and I drove out Sunday afternoon. We met up with Miguel de Icaza and talked for a long time. As time went on, we added John Osborn (senior editor at O'Reilly) and Eric Kemp (Rob's right hand man on SubSonic) to the party, and headed to dinner.

MIX07 - Sunday Dinner

After dinner, Phil got hold of Adam Kinney, who pointed us to a blogger hangout suite here at the Venetian. I caught up with Adam, Woody Pewitt, Steve Maine, and Clemens Vasters. I got to meet Jon Udell - I've been following his work for a while and am really interested in his vision of computing as applied to every day life for non-techies. Then Jeff Atwood turned it into a guitar hero party, and Scott Hanselman crushed me soundly.

Scott's first comment when he met me was the same as Rob Conery's a few months ago - Gee, you're skinny. I guess my blog picture makes me look - um - not skinny.

Quite a full day, and the thing's really even started yet.

Posted by Jon Galloway | 1 comment(s)
Filed under:

Going to MIX? Get Twitter and Twitteroo!

Twitter is a simple program which lets you see what all your friends are up to - you enter a short message and all your "followers" get the update. Normally I don't care what all my friends are doing, but this kind of thing is perfect for a conference. The MIX conference folks have set up a Twitter account, so by "befriending" the MIX07 account you can get hooked up with other conference attendees.

Here's info from the VisitMix site:

Text JOIN MIX07 to 40404 and Twitter will keep us all connected as we descend upon Las Vegas for our 72 hour conversation. We'll know who's "heading out to dinner in ten minutes," who is "sitting up for the Ray Ozzie keynote," and even, who is "waking up in the desert!"

If you've got a laptop with you, be sure to install Twitteroo. It's a little desktop client app that updates you when any of your friends sends an update.

There are some other Twitter client apps out there, including a Vista Desktop Gadget.

Posted by Jon Galloway | with no comments
Filed under:

Jeff Atwood (CodingHorror) on DotNetRocks

Jeff Atwood's inteview on DotNetRocks is out. I've listened to every single episode - over 230 of them - and say this makes my top ten. Excellent show, and worth the listen.

Posted by Jon Galloway | with no comments
Filed under:

Search queries to find Silverlight and XBAPs apps

Silverlight and XBAP serve the same purpose, but in different ways.  Both allow for viewing for WPF (XAML) based applications in a browser. Silverlight is a self-contained, cross-browser plugin which supports a subset of the .NET framework, while an XBAP (XAML Browser Application) requires that WPF be installed on the host operating system.

You can get an idea of what people are doing with XBAPs by searching for url's with the .xbap file extension. Microsoft's search.live.com doesn't support .xbap filetype searches yet, but Google does:


It's harder to search for Silverlight applications. While Silverlight applications all contain some common features, such as a javascript reference to agHost.js, search engines don't index the javascript code. The best I can think of is a search for pages which include links to both XAML and JS files:


Posted by Jon Galloway | with no comments
Filed under:

The 9 things Microsoft SHOULD be announcing next week at MIX07 (but won't)

Smart Art FunMicrosoft has said they'll have some kind of big surprise to announce next week at the MIX07 conference in Las Vegas. If you want to hear some good guesses as to what will actually be announced, you've come to the wrong place. If you'd like some good guesses, try the following:

But accuracy's not what this post is about. No, this is good old armchair quarterback time. I'm not going to talk about idealistic things like firing half the marketing and legal departments, I'm going to focus on product direction and long term vision things. Ray, if you've been procrastinating on your keynote, I've put together a few talking points for you. Style point: remember that the great speakers of history were men of passion. Wave your arms a lot and bang on the podium.


1. We're going to give away a free "Express" version of Expression Blend

We understand that Silverlight and WPF adoption is going to take a good, free developer environment, so we're adding a simplified version of Expression Blend to our Visual Studio Express family of developer products. We've always offered a free trial version of Expression Blend, but we want to let you know that you can continue to work with a free version of Blend when it goes live. Yes, we're going to have to figure out the naming thing - Expression Express is fun to say, but a little goofy.

2. We're working on an online version of Office (no, it's not Office Live, it's more like NetDocs 2.0)

Sometimes it's all about timing. We were working on an internet based document management system back in 2000, well before anyone had heard of Google Docs. We discontinued NetDocs before bringing anything to market - we weren't clear on the business model, and our first take on this didn't have a clear focus. However, broadband and internet adoption combined with sustainable ad revenue supported models have shown us that it's time to take another look at this.

All you'll need is a Windows Live ID to do basic online document sharing and editing. The service will be supported by contextual ads and will include the kind of support that you'd need to edit and share a soccer team schedule spreadsheet with a small group. We'll be including a more advanced, ad-free version to our Office Live suite for the Essentials and Premium account levels. Of course, we believe that the Microsoft Office product line will be a much better choice for daily use and are confident that our users will continue to see the value in that product line. You'll have the ability to save and edit documents online using the Microsoft Office products.

3. We're going to release a series of free applications for Vista

We put a lot of hard work into the development platform that powers Vista. Unfortunately, our busy Longhorn development cycle didn't give us time to build many cool consumer focused applications that make Vista a compelling user experience. We've started a team that will build modernized versions of programs and widgets with the same feel as the Mac iLife suite. It's a humble beginning, but today we're presenting Windows Live Notes - a tabbed notepad replacement with a lot of cool features. We've got four more applications at different phases of development. In addition to being useful, these applications show off the .NET 3.0 platform that ships with Vista. 


4. Internet Explorer 8 will begin to introduce Firefox style extensions

We heard you loud and clear - extending Internet Explorer is such a pain, the only people who bother to do it are trying to sell products or infect your computer. Whereas Firefox extensions can be as simple as a zipped up JavaScript file, IE's Browser Helper Objects require mucking around with C++ and COM. No big surprise that we don't have a real extension developer community, just a marketplace.

Well, as I said, we heard you. We've wrapped the messy browser helper bits with a simple .NET interface, so you can build extensions in any .NET language. We're working on a new extension framework which allows you to write extensions in XAML and distribute them in a simple zip file.

Additionally, we're doing exploratory work to see if we can support portions of the Firefox Extension Model. We've written an IE extension which can host some simple Firefox extensions - it translates a subset of XUL to XAML and redirects the chrome JavaScript calls to calls in our extension model. We're releasing the Firefox host extension on CodePlex today.

5. A new Microsoft team will to compete with Office, IE, and Visual Studio using the .NET 3.0 Framework

We know that competition for some of our most popular products - Office, Visual Studio, and Internet Explorer - are growing. These are good products, and they've got a lot of good years left in them. The are, however, built on top of decade-old technologies. Would these products be better if they were restarted today, built on the .NET 3.0 stack? It's hard to say - there's no question it would be nice to have these products running as managed .NET 3.0 Framework applications, for a host of reasons - security, maintainability, performance, etc. On the other hand, the hazards of rewriting working applications are well known.

It certainly is a pickle. The software industry is boiling disruptive technologies - many of which we've created. While it's hard to countenance rewriting working applications, it's hard to believe that the leading office suite, browser, and development platform of 2015 will still be running on a mid-90's COM platform.

So, we're going to make sure that we're our toughest competitor. We're funding a team whose job it is to disrupt our business before someone else does. This team will run like a spin-off. This group isn't just going to be creating knock-off applications, they're going to be competing as best they can, so they'll have the freedom to change and create features as they see fit.

We don't have a monetization strategy for this group right now, although you know we do have a history of selling a bit of software around here. The initial goal here is to make sure that we're in a good place in five years, and best way to do that is by getting started now.

In addition to insurance, though, we hope this effort serves some another purposes: we'll be putting our money where our mouth is. By dogfooding the .NET Framework 3.0 in a major way, we'll show that it's a solid platform that's worth learning and investing in. It's been said that Office sets the standard for desktop applications. This move will indicate that we have both a firm commitment to our existing products customers as well as a long term commitment to our development platform.

We're also granting this team opportunity to try some things that may fail. This team will follow our live.com way of doing things - public beta releases, experiments, and a very interactive development relationship with our end users.


6. We're pushing .NET outside the developer division

In addition to some of the things we've mentioned above, we're making a long term commitment to implement the .NET Framework throughout the Windows platform. Our goal is to have more than 60% of Windows running on managed .NET code within 10 years. While our customers don't care what technology Windows runs on, the features they want - reliability, security, more frequent updates - are best achieved on a .NET based platform.

7. Microsoft Endorsed Projects - Better than just copying open source projects

We have significant challenges and opportunities ahead. While we've got a great team, we realize that we'll be able to achieve a lot more if we can work even more effectively with the developer community - especially the growing .NET open source community. Some of the biggest .NET success stories have been open source projects: .Text, Paint.NET, DotNetNuke, CommunityServer, SubSonic, and the list goes on.

We understand that you don't just want us to spend our time re-implementing features that the open source community has already created. We agree.

We're going to be making a few major changes to increase our support for the .NET open source community - Endorse, Ship, and Support.

First, we're going to actively endorse open source projects which have demonstrated technical maturity and stability. This endorsement will go beyond a simple link from our developer blogs or sites; it is an actual certification program similar to our "Certified for Windows Vista" program. By doing this, we hope to recognize outstanding open source projects and stimulate acceptance in the broader market.

Second, we are exploring licensing terms which will allow us to ship open source software along with Microsoft releases. For instance, while the .NET Framework will continue to be shipped as it is, we'll also offer a .NET Framework Extras release which will include open source frameworks such as NUnit, MbUnit, log4net, Rhino Mocks, etc.

Finally, we're also expanding our internship program to include paid open source development positions, similar to the Google Summer Of Code. We'll be starting with ten paid summer open source internships this summer.

We're open to your opinions on what we can do to work more effectively with the open source community. Please give us your feedback at the MIX Open Source panel.

8. We'll release a Zune phone developer API within a year

Everyone's been expecting a Zune phone this year, and without spilling the beans too much I'd say there's a good chance you'll see it. Although the Zune phone isn't based on Windows Mobile, we do see the Zune as a platform, and by that we mean a development platform as well as a media platform. Our number one goal with the Zune phone is to have it out by the end of the year, but we'll have a firmware update within a year that includes version one of the Zune developer API.


9. We're ramping up funding for the Singularity Operating System

We're doubling the Singularity OS team at Microsoft Research from 30 to 60 over the next year. For those of you who aren't familiar with Singularity, it's an operating system designed with reliability as a primary focus and implemented almost entirely in managed code. While we've been clear that this is just a research project and is not designed to become an end product, we are very interested in seeing what we can do with a managed operating system. We've already been very pleased with the results - for instance, we've seen that it performs significantly faster than unmanaged operating systems because we're able to redraw process boundary lines to avoid unnecessary context switching. While Singularity may never become a shipping operating system, we're convinced that this project is vitally important to defining the way Windows 2015 will work.

Today, we're announcing the first VirtualPC release of Singularity OS, available for download. This is just a demonstration project, but we invite developers to test it out. Future demonstration releases will be a little more exciting, as we'll be adding a basic command line compiler and partial WPF support.

With that, I'll open the floor for questions. What do you think?


  • Some of these announcements would make more sense at PDC rather than MIX. Since it's my pretend announcement, I get to ignore that.
  • I don't expect Microsoft to be announcing these things, but I honestly think they should.
  • I think there's a decent chance that for the free Expression Blend product. I think the rest of them are a lot less probable.
  • I understand that Microsoft has tried some of these things before - managed code in the operating system, NetDocs, etc. However, things have changed since then. The .NET Framework has matured, broadband penetration has greatly increased, ad supported web applications have become viable, etc.

SQL Puzzle #2 - Paging through a table with GO 10

I just wrote about using GO 10 to execute a T-SQL batch 10 times in SQL Server Management Studio. Could you use it to page through data?

The challenge: Write an ad-hoc query which queries the AdventureWorks Production.Product table 10 times using GO 10, returning the next sequential row each time. My query looks something like this:

(some other T-SQL here)
GO 10

Here are the first two columns, first three rows when it's executed:

Beginning execution loop
ProductID   Name                 
----------- ---------------------
1           Adjustable Race      

ProductID   Name                 
----------- ---------------------
2           Bearing Ball         

ProductID   Name                 
----------- ---------------------
3           BB Ball Bearing      

Extra credit: Instead of sequential results, return rows one at a time but in random order. Can you use TABLESAMPLE here?:

Beginning execution loop
ProductID   Name                       
----------- ---------------------------
375         Hex Nut 5                  

ProductID   Name                       
----------- ---------------------------
731         ML Road Frame - Red, 44    

ProductID   Name                       
----------- ---------------------------
471         Lock Washer 12             

Note: Yes, there's no point to this quiz other than as an exercise. There are better ways to page through data with 2005 T-SQL functions like ROW_NUMBER(). Since GO operates at the batch level, it will always execute the same script each time, which breaks most of the common paging approaches. How would you work around that?

UPDATE: Here are my solutions.

-- The main puzzle

SELECT MIN(ProductID) AS ProductID INTO #productTemp FROM Production.Product

SELECT * FROM Production.Product p INNER JOIN #productTemp pt ON p.ProductID = pt.ProductID

UPDATE #productTemp SET ProductID =
(SELECT MIN(p.ProductID) FROM #productTemp pt, Production.Product p WHERE p.ProductID > pt.ProductID)
GO 10

DROP TABLE #productTemp

-- Extra credit

SELECT TOP 1 * FROM Production.Product ORDER BY NEWID()
GO 10

Posted by Jon Galloway | with no comments
Filed under:
More Posts Next page »