All postings/content on this blog are provided "AS IS" with no warranties, and confer no rights. All entries in this blog are my opinion and don't necessarily reflect the opinion of my employer.
So far, rich Internet applications (RIA) don’t have to be concerned with data management on the client side, as most connected implementations are designed to be simply a visualization and interaction layer to data and services on the server side. In these cases, data is retrieved from the server as JSON or XML data types (or serialized binary objects for some platforms), then cached in-memory as objects and collections, part of the application, and eventually discarded as part of the application lifecycle.
McObject’s Perst is an open source, object-oriented embedded database system. Perst has been available in Java (SE, ME, and EE) and in .NET and .NET Compact Framework, and Mono. But recently McObjects ported Perst to Silverlight as well. Its small library size (~1MB including support for generics; ~5,000 lines of code) and small in-memory footprint is packed with a very sophisticated set of features, such as:
Perst inherited much of its heritage from McObject’s eXtremeDB embedded database product, which has been used in devices such as MP3 players, WiMAX base stations, digital TV set top boxes, military and aerospace applications, etc. Yes, even embedded applications and firmware can use databases.
Interestingly, the C# code tree was initially produced from the Java version using the Java-to-C# converted in Visual Studio, then some additional changes to enable specific C# features. While not all Java applications can be converted this easily, this shows that some can. And this also means how similar C# and Java are.
As an embedded database engine, Perst presents a very viable in-memory data management solution to Silverlight applications. It can be instantiated and used directly as part of the application, instead of something that runs in a separate process and memory space, or over the network on the back-end server for most RIA’s. Perst can also use Silverlight’s isolated storage to manage additional data that can be cached in a persistent manner. This enables many more complex scenarios than simply storing JSON, XML, CSV, or plain text data in isolated storage.
One can argue that the “connected client” design (as described above) works best for RIA’s, as they’re rich Web applications intended to enhance the user experience when connected to the cloud, to begin with. Or essentially, everyone can assume ubiquitous connectivity anytime and everywhere, so applications only need to live in the cloud, then all we need is a browser.
But we’re also starting to see very valid scenarios emerge to access the cloud outside of the browser. And applications in these scenarios are often more refined/specialized than their HTML-based counterparts. For example, iPhone apps, iTunes, Wii, Adobe AIR, Google Gears, Google Desktop, Apple Dashboard Widgets, Yahoo! Gadgets, Windows Gadgets, FireFox extensions and plug-ins, Internet Explorer 8 WebSlices, SideBars, and ToolBars, etc. These out-of-browser application models are very valid because it has been observed that users tend to spend more time with them, than the websites behind those clients.
There are many potential reasons for this observation, with some more prevalent in some scenarios. For example, local content is more visible to users and easier to access, without having to open a browser and then finding the website (sometimes needing to re-authenticate) and downloading the content. And of course, content and data can be stored locally for off-line access.
Now that Silverlight 3 also supports installation of applications locally on the desktop, we can add the option of caching some data locally, in addition to being a locally installed visualization and interaction layer to cloud-based services, or a rich disconnected gadget. And McObject’s Perst embedded database would again be a really compelling solution to help with managing the data.
This is especially important for out-of-browser and locally installed applications, as one of their primary benefits is to support off-line usage. Having a database management solution such as Perst can help increase the overall robustness of the user experience, by ensuring work continuity regardless of connection state.
Founded by embedded database and real-time systems experts, McObject offers proven data management technology that makes applications and devices smarter, more reliable and more cost-effective to develop and maintain. McObject counts among its customers industry leaders such as Chrysler, Maximizer Software, Siemens, Phillips, EADS, JVC, Tyco Thermal Controls, F5 Networks, DIRECTV, CA, Motorola and Boeing.
MGM and Microsoft partnered to build an application intended to give old and new fans of Stargate a first look at the main location of the new Stargate Universe show, an ancient starship called the Destiny. The sets for the Destiny are amongst the most sophisticated ever built for a TV show, accurately capturing the spirit of a spaceship that has been abandoned for millennia.
MGM wanted to give fans an accurate experience of what it would be like to walk around and explore the Destiny, and using Microsoft Silverlight and Photosynth were able to deliver an immersive 3-D experience.
UPDATE 2009.09.04 – a Microsoft Case Study and video has been published for this project. You can view the Case Study at http://www.microsoft.com/casestudies/Case_Study_Detail.aspx?casestudyid=4000005102, and the video at http://www.microsoft.com/video/en/us/details/c0387435-dd01-4c5a-87c9-6e87cedeee15.
Over the space of two days, several hundred photographs were taken of some of the locations of the Destiny starship. These include the fan-favorite Gate Room, from where the crew embarks on their adventures through the Stargate as well as locations such as the ship’s control center, observation deck, and main shuttle.
These photographs were used to create a number of 3D scenes using Microsoft Photosynth technology. This technology analyzes pictures and creates a virtual 3D space using the different viewpoints from different pictures. Because the pictures were shot in high resolution, fans can zoom in and see the sets in great detail.
See the Stargate Universe Photosynth set at http://stargate.mgm.com/photosynth/index.html
Now Photosynth does not require any programming effort. All we need to do, is to take pictures. Lots of pictures. Then all we need to do is upload the pictures to Photosynth.net, and Photosynth will do the rest, by interpreting textures in each photo and correlate the photos by matching similar textures, and figuring out spatially where each photo is located. Then finally, all of the photos in one set are stitched into a 3D environment for visitors to navigate through.
Compare Photosynth to traditional approaches of trying to deliver 360 degree view of items, rooms, etc., which requires carefully planned photo shoots, then writing or obtaining specialized software to render them and allow viewers to interact with them. The time and effort required to create a “synth” can literally be minutes. Then just a few HTML-level changes to embed the Silverlight viewer for Photosynth into a web page, and anyone visiting that page can now interact with the synth.
A screen shot of the gallery view is shown below.
Kind of like a photo gallery on steroids. However, Photosynth is not just a slideshow. It allows viewers to traverse through the set of pictures in a non-linear manner, and to see the spatial perspectives between pictures (where each photo was taken relative to other photos).
At the same time, specific considerations should be taken when taking photos for Photosynth. Basically, cover lots of angles and have lots of overlaps for overview shots, then lots of close-ups for detailed shots. Here’s a short tutorial on how to shoot for Photosynth.
For the Stargate Universe synth, extra attention was paid to the physical architecture of the Destinty set. And the series of shots were taken so that the resulting synth would provide viewers an experience of walking through the set.
Thus Photosynth can be leveraged in many scenarios, especially when a project has physical content that can be shared online. These can be anything, such as product showcases, exterior environments, interior walk-throughs, etc. Another simple and elegant way to enhance user acquisition and retention on websites.
A couple of announcements at the Microsoft Worldwide Partner Conference (WPC09) have been making a lot of noise today. One is the unveiling of the much anticipated Office Web Applications, part of the overall Office 2010 announcements – that Office 2010, SharePoint Server 2010, Visio 2010 and Project 2010 have reached the technical preview engineering milestone.
Unlike the previous online Office service offerings, such as Office Online, Office Live and Office Live Small Business; Office Web Applications are indeed browser-based Office clients. Specifically, Excel, OneNote, PowerPoint, and Word; in addition to Outlook which had the Web Access version for a number of years already.
And as part of Office 2010, Office Web Applications will be available to nearly half a billion customers at launch:
A few screenshots below. As you can see, one of the major common themes is that all of the Web Application clients will use the Office Fluent ribbon menu system as well.
Excel Web Application
And in FireFox:
OneNote Web Application
PowerPoint Web Application
Word Web Application
The Office Web Applications can be accessed by simply opening the documents as listed on a web page. Even though not just any web page, but can be document folder pages that are hosted in Office Live Workspaces, Windows Live Skydrive, SharePoint Online, on-premise SharePoint Server 2010 instances, etc. Just opening the document (for editing) will open the Office Web Applications in the same browser.
These browser-based clients are considered “basic” cousins to the full desktop client versions. But as you can see, the level of fidelity and richness in the Office Web Applications are actually much better than “basic”. In fact, the included features are quite effective at editing documents from any browser.
Plus some new features in Office Mobile 2010:
This means that, users will have access to, and can use Microsoft Office to edit/modify Office documents anywhere. From the most basic experience, but highest mobility on mobile devices, to most common/streamlined experience on any computer with an Internet connection, and to the richest/professional desktop experience installed locally on your own computer.
Some people may criticize Microsoft for not innovating and still holding on to the desktop dinosaur, but we think a not one-size-fits-all approach, and offering the spectrum of options to use, is actually better for the customer. Someone has used an analogy – trying to fit everything into the browser, and ask all users to use that one model, is like asking everyone to ride mopeds.
In addition to the ability to save/store documents and access/edit them anywhere (cloud, server, desktop, device, etc.), users will also be able to share and collaboratively edit the same document over the network. And this will work access the desktop and browser-based clients. With “fast dynamic sync”, changes from multiple simultaneous users can be synchronized across the group almost instantaneously.
Other new collaboration features include:
Things sure are looking quite interesting with the Office 2010 release.
For more information:
Photobucket has collaborated with Microsoft to build Photobucket Visual Search (http://photobucket.com/visualsearch), making use of Silverlight, Windows Live Services and Photobucket's Open API platform. Photobucket Visual Search uses Silverlight to provide a rich and entertaining search experience, by displaying photos and videos in an easy-to-browse interface. The experience shows up search results, as well as related terms, helping users to find images they might not have in the past.
Recognizing that photos are about sharing a social experience, Photobucket decided to use Microsoft's new Windows Live Messenger Web Toolkit to socially enable this Visual Search experience. Windows Live Messenger has over 320 Million active users, with over 32 billion social relationships between them. Sharing an image with friends on Windows Live is as easy as a click of a button with Photobucket Visual Search.
Photobucket is a very popular site on the Internet for uploading, sharing, linking and finding photos, videos and graphics. Photobucket is usually used for personal photographic albums, remote storage of avatars displayed on internet forums, and storage of videos. Photobucket's image hosting is often used for eBay, MySpace (now a corporate cousin), Bebo, Neopets and Facebook accounts, LiveJournals or other blogs, and message boards. Users may keep their albums private, allow password-protected guest access, or open them to the public.
Below are some statistics (circa 2007) regarding the Photobucket.com website.
This project is intended to enhance Photobucket’s user experience while mapping specific objectives to the following core business goals:
Richer visualization and interaction, plus social networking capabilities, were chosen as the means to achieve the goals of improving user acquisition and retention. Consequently, Silverlight and Windows Live Messenger Web Toolkit were chosen as the components from the Microsoft platform that can be leveraged for the Photobucket Visual Search project. Photobucket’s existing open API’s (HTTP/REST-based) are used directly to support the search client application.
The project architecture consists of Photobucket’s existing server infrastructure, which provides the open REST-based API’s, images, albums, thumbnails, groups (featured, most active, most recent, most contributions, contests, etc.), static content, etc. The Photobucket.com website itself is a user interaction/presentation layer on top of the thousands of servers deployed as part of the content infrastructure. The Photobucket.com website manages all the metadata associated with the massive amount of content, such as tags, descriptions, comments, image ownerships and relationships, user memberships, etc. Searches done on the Photobucket website is performed on the metadata and indexes; and the search results point to actual locations of content and assets across the massively parallel content infrastructure.
The content infrastructure consists of multiple farms of thousands of servers, each manages different types of content, with user data partitioned horizontally across servers in each group. The content servers can be accessed directly using sub-domains on photobucket.com, such as i98.photobucket.com for one of the image clusters, t104.photobucket.com for one of the thumbnail clusters.
Application requests are managed by the photobucket.com website, and the open API’s are managed via api.photobucket.com servers. Search queries retrieve an XML response, which represent search hits, with associated metadata, and actual image locations potentially pointing to hundreds of different servers where they physically reside.
The Silverlight search client implementation is designed to fully leverage the search service as part of Photobucket.com’s open API’s. It captures the search queries from the user, then sends it to api.photobucket.com for processing, then interprets the returned XML, renders the result, and downloads individual thumbnails from actual server locations in the thumbnails server farm.
A diagram representing the logical architecture is shown below.
The overall end-to-end architecture consists of these components
The default target dimensions for the application are 1024 X 768. However, the application supports browser resizing and will adjust accordingly when the user changes browser window size dynamically.
The application has two primary states:
The project team went through many data visualization designs for the search results. In the end, a simplistic one that represented a similar model to the rest of the Photobucket site was chosen.
While in Zoom View, a user can share the photo via IM using Live Messenger. Doing so will prompt the user to sign in or register to sign up for Live Messenger. If the user is already signed in, this will trigger the user's Windows Live contact list to pop up.
Signing in will link a user’s Windows Live ID with the Photobucket.com website, granting an authentication consent (as a site-wide stored consent token) to Photobucket so that web pages generated from Photobucket can reuse this session with Live Messenger, and not have to require the user to sign-in on each page.
The project team decided to leverage Live Messenger’s Delegated Authentication method because it provides the most unobtrusive method to the existing Photobucket’s membership system, as well as simplicity in implementation as the identity federation approach would be significantly more complex.
Messenger Web Bar
The Messenger Web Bar is a single UI Control that contains a full Windows Live Messenger experience. The Messenger Web Bar has the following functionality:
This functionality is encapsulated within a small bar at the bottom of the page. Because the Live Messenger Web Bar works across pages, conversations that start on a page on the application Web site can continue on another page of the application Web site. This functionality enables an application Web site to use the Live Messenger Web Bar as a platform to deeply integrate Live Messenger functionality and data into the site. Making an application Web site more social with the Messenger Web Bar and UI Controls can significantly increase user engagement.
Shown below is a picture of the Messenger Web Bar used as part of the Visual Search experience.
Once the user is logged into the Windows Live Messenger service, the user can view and interact with the list of contacts managed in the Windows Live service. The user can see also see presence information in terms of who among the contacts is online or offline at the moment. An IM conversation can then be initiated just by selecting a contact. If the user initiates an IM conversation while in Zoom View, Visual Search will automatically insert a link that says “Check this photo” with a URL to the actual image.
This project demonstrated how Silverlight can be leveraged to add value to a website completely built on the LAMP stack. It also showed how Live Services can be leveraged, without any significant custom development effort, to add social computing capabilities to any website. The combination of rich clients, and composition of multiple cloud-based services on the Web, represents a Software Plus Services implementation approach, and how it enhances existing Web browsing models and improves user acquisition and retention.
On July 7th, 10AM PT/1PM ET, Microsoft will be broadcasting the Michael Jackson memorial, live in HD from the Staples Center in Los Angeles using Silverlight and IIS Smooth Streaming (the technologies used for the 2008 Beijing Olympics, 2009 NCAA March Madness, Netflix, etc.). And this event will be available worldwide to anyone who has an internet connection.
Memorial Service Live Streaming
Visit the Sympatico / MSN inMusic website, at http://inmusic.ca/news_and_features/Michael_Jackson, for up-to-date content, and special tributes to the King of Pop. The Silverlight player providing the live streaming service will become available at the time of the event (2009.07.07 10AM Pacific Time / 1PM Eastern Time).
MSN Special Coverage
Also visit MSN for additional information and special coverage on Michael Jackson, at http://entertainment.uk.msn.com/music/michael-jackson.aspx. And visit a DeepZoom (also in Silverlight) collage of hundreds of Michael Jackson’s pictures, at http://www.msn.michaeljackson.shoothill.com/.