PhotoZoom Updates

April 11, 2008

It’s been about a month since PhotoZoom released, and I’ve added several new features since then.  Many of these features were by popular request of users who’ve sent me lots of valuable feedback.

Photo upload control

I wrote a very simple Silverlight upload control in managed code, using the OpenFileDialog class.  You can select multiple jpeg files to upload them in a batch. 

Embed albums in other pages

At the bottom of the page for each album, there is a text field titled “Embed this album,” which contains the HTML source for the album’s Silverlight Streaming application.  You can copy the contents of this field and paste it into the HTML body of any web page to add that album, along with its zooming controls, to the page.  Hint: you can change the values of width and height to whatever you like.

Album Processing Performance

We’ve made several performance changes that have improved the throughput of Deep Zoom album processing, which means that your albums should, on average, be processed sooner after uploading photos and become “zoom-able.”  It still takes some time though, especially for large albums.  Stay tuned for further improvements in this area.

PhotoZoom Facebook application

I’ve created a PhotoZoom application for Facebook that you can install, which adds thumbnail links to PhotoZoom albums to your imageprofile.  It imports your Facebook photo albums automatically, each time you visit the settings page (open by clicking the PhotoZoom icon in the applications list on the left side of your Facebook profile).  You can select which ones to show on your Facebook profile.  Albums you create within PhotoZoom are also available for selection in all their full-resolution glory.


The cover photos of the albums you select will show up in the PhotoZoom box on your profile for others to see.  Clicking on one loads the Deep Zoom album in the canvas page.  You can view it in full screen mode by clicking the link above the album. 

Any new albums you create or photos you add to existing albums will be picked up and processed the next time you open the settings page.


I hope you enjoy the new features.  Try them out, and as always, keep the feedback coming. 


Introducing PhotoZoom

March 9, 2008

During MIX08, word got out via Chris of LiveSide of a project I and a few others on the Concept Development Team have been working on in our spare time for awhile.  PhotoZoom is a web site where anyone can upload their photos and turn them into zoom-able, pan-able albums, using the Deep Zoom technology in Silverlight 2 Beta 1.

In the couple of days since Chris’s post, many people have signed-up for PhotoZoom and uploaded photos.  I am amazed and thrilled with the response, and I hope that everyone is enjoying the site.  Of course, with traffic comes load, and this load has increased the waiting time between uploading photos and when their Deep Zoom album is available.  I will address what we plan to do to improve this situation below, but first let me explain a little about how PhotoZoom works, and before that, a disclaimer:

PhotoZoom is an experimental project developed by a small group of Microsoft developers, and it is definitely not an official, supported Microsoft product.  Also, I cannot make any guarantees that it will be operational at all times, that it will support a large number of users, etc.  This is not an official Microsoft press release and I am not a spokesperson.  I can’t make any suggestions about future Microsoft product releases related to this technology or concept.  In other words, I hope people will have fun with it, but please set your expectations accordingly.

With that said, here’s how PhotoZoom works.  When a user uploads an image, it is stored in a database and its album is put in a queue for processing.  The photo is available for viewing immediately, but its album is not "zoom-able" until it is processed.  Jobs running on the server process albums one at a time, in the order they were updated.

When an album is picked up from the queue, the job runs conversion logic similar to that found in the Deep Zoom Composer to convert all the full-size images in the album to a hierarchical set of image tiles that make up a Deep Zoom album.  This conversion is quite processor intensive, so it can take awhile, especially for a large album.  Finally, the output files along with the Silverlight XAML and script are uploaded to the Silverlight Streaming service, as a new application, and the album is finished. 

Hosting the Deep Zoom enabled albums on Silverlight Streaming brings the same advantages of high-performance and global-scale application delivery that any other Silverlight application hosted there enjoys.

Since, as I’ve said, album processing is resource intensive, lots of people have been uploading albums and the site is not exactly getting its own data center any time soon, albums have been taking far longer to process than we like – in some cases several hours or longer.  We plan to do the following to address this:

  • Optimize the album processing on our server.  We’ll look for ways to make the processing more efficient, which would have a big impact on the overall waiting time.
  • Offer a downloadable photo upload tool that processes the Deep Zoom albums right on the user’s PC. This will provide a batch upload capability and will greatly speed up the processing time by distributing the work away from a bottleneck.

In addition to these items, I’ve received lots of helpful suggestions via email and blog comments for features that would improve the PhotoZoom experience.  I’ve listed them below to acknowledge that I am paying attention to them and intend to address them as soon as I can.  Please keep in mind that PhotoZoom is not my or my teammates’ "day job," but we will work on them whenever we have a chance.

  1. Upload Tool
  2. Ability to link/embed zoom-able album in other web pages.
  3. Better user feedback about album processing status. E.g. estimate of where album is in the queue and how much longer it will take.
  4. Ability to upload more than one image at a time. This is partially covered by number one, but a better upload control in the site itself would still be useful for those who can’t or don’t want to install the upload tool.

That’s what I have so far.  If I missed your feedback or you have other suggestions, please include them in the comments or in email.

Windows Live Search for Mobile – on the relative merits of native code on the phone and desktop

December 1, 2006

Mike Torres likes it, so I gave it a try.  I agree – it’s awesome.  Much has been said about how pure web applications will never match the richness or usability of rich applications, especially on the desktop.  Outlook vs. web email clients are often used as an example of this.  In my experience though, the advantage of locally running applications is much stronger on phones than it is on desktop computers.  Local applications really shine where bandwidth is limited and round trip times are lengthy – where intelligent caching on the client works wonders.

Don’t count pure web applications out on the phone though.  On my old Audiovox SMT-5600, even the most pared down, text-only sites were very slow to load, and larger pages with complicated layouts were often completely unusable.  On my new EVDO equipped Motorola Q though, things are much, much better.  I bet that on the next generation of phones, the native code application advantage will diminish.

If everyone had a phone with a web browser even as good and fast as the one on the Q (or if there was a way to distribute a rich application to all phones without having to write 5 versions, obtain 5 test phones, beg 5 carriers to let their subscribers install it, etc.), the software landscape would look very different.  As it is now, hardly anyone I’ve talked to (outside of fellow software developers of course) has used the web browser on their phone, or even knows that there is one, much less would they even fathom that they could download and install software on it.  In other words, the Facebook and Myspace crowds aren’t hip to wonders of mobile browsing yet.  Hope that changes soon…


Try Windows Live Search Beta for mobile
Now available for Sprint customers
1. Visit on your mobile device.
2. Choose your device (either a J2ME-capable phone, or a Windows Mobile Smartphone or PocketPC) and download the application.
3. Start it up! On a J2ME device, it will be called “Windows Live Search” and, on some phones, might be listed in the Games menu. On a Windows Mobile device, you’ll see it in the Start Menu (or in Programs on a PocketPC), labeled “Search”.

Screencast: Using Live Clipboard to blog about events

November 29, 2006

I finally got around to recording a screencast showing how to copy events from to Windows Live Writer using Live Clipboard. 

Update: I posted it on Channel 9 as well.

SSE plays a key role in Strong Angel III

August 29, 2006

Last week, a few of my teammates and I participated in the Strong Angel III effort in San Diego.  As the NYT article below mentions, we used SSE to pull in data from several different sources in the field and analyze / visualize it in various clients.  The distributed nature of SSE worked very well in an environment of many ad-hoc unreliable networks, and its basis on RSS made it easy to consume by 3rd party developers from Google, IDV (a Virtual Earth partner) etc. 

The graphic above illustrates how we used SSE in the exercise.  On the final day we did a demo to show the integration between Groove, IDV and Google Earth that was recorded and will be available in video form soon.

At the same time, the technology roadblocks were balanced by notable successes, like the work of Google, Microsoft, ESRI, Intergraph and other companies to allow sharing a single set of digital satellite maps seamlessly and to overlay event data relayed from emergency workers throughout the San Diego area.

The new software capability relies on a Microsoft-designed system called Simple Sharing Extensions. It has been built on industry standards, like the Web protocol known as Really Simple Syndication, or R.S.S., which was designed to enable one-way data streams.

Such tools are valuable for disaster-response coordinators who require real-time data feeds from a variety of locations. The Microsoft extensions will make it possible for the feeds to display constantly changing or even conflicting data streams from multiple sources.

Moreover, the achievement demonstrated that industry rivals like Microsoft and Google could cooperatively generate useful technologies. Small teams of programmers from the two companies sat before laptops at adjacent tables to make sure that the Microsoft software connection system would transfer information to Google Earth, Google’s visual mapping tool.

 Jack Ozzie, me, Ming Liu and Paresh Suthar

Live Clipboard in Windows Live Writer

August 15, 2006

I posted this and the previous entry with the recently released Windows Live Writer.  It’s a great product – simple, targeted, functional and scenario based, without being cumbersome.

Lots of people have already written favorable things about Writer, as you can see by looking at this TechMeme snapshot.  The basic content creation and editing features already have been covered extensively, but what I’m really excited about is the content source plugin SDK, to which Michael Arrington alluded and which was mentioned here.

A short time ago J.J. Allaire, Joe Cheng and Bonnie Plottner of the Writer team met with us to talk about  possibly adding support for Live Clipboard in the Writer plugin model.  I’m thrilled to see that they were able to deliver on this in time for the Beta release.  The documentation that is installed with the SDK explains how easy it is to register a handler for a specific content type of Live Clipboard data (for more about these content types, see the Live Clipboard spec).  

Once such a plugin is installed, it is invoked whenever Live Clipboard content of its registered type is pasted into the application, which it can then format for inclusion in the blog post.  For example, a plugin could register for location data in hCard or vCard formats and nicely format the pasted data along with a map in the post.  A more advanced plugin might take advantage of the sidebar integration to provide editing of the pasted data before publishing.

I plan on posting a walk-through of building a Live Clipboard content source plugin in the near future.  I can’t wait to see what kind of cool plugins involving Live Clipboard and microformats the development community comes up with.

Welcome to my "work" blog

August 15, 2006

I’m a software development engineer on Ray Ozzie’s CSA Concept Development Team at Microsoft. During the time I’ve spent on this team, I’ve helped define and prototype technologies such as SSE (Simple Sharing Extensions) and Live Clipboard.  Prior to that I spent several years working in MSN on the contacts and permissions web service, known internally as ABCH, that is used by sites such as Hotmail, Messenger and Spaces as the foundation for contacts, social networking and user-configurable permissions features.

I will use this blog to point out and discuss technologies that our team is working on as well as some random thoughts about software and technology.  In short, this is my “work” blog.  My “!Work blog” is at