December 15th, 2008 — Uncategorized
This quick rant is about Amazon.com. Before proceeding further let me assure you that I’m a big fan, having been an Amazon.com customer for over a decade. I’ve also successfully tested their A-to-Z coverage, with my shopping history including phones, camera lenses, lawnmowers (yes, several), as well as books. Yes, they’re great!
In an older post I pointed out that Amazon’s recommendation technology didn’t allow one to specify whenever they’re purchasing gifts for others. Consequently any such purchase used to throw it off, adding noise to otherwise useful recommendations. That got fixed since then, though it took longer than I thought.
These days I’m longing for another obvious yet missing feature: the ability to sort/filter by location. I purchase used books/music/videos quite frequently, and the default sort by price (increasing in the following screenshot) no longer does it for me:
All online stores offer the above experience; nowadays it is the norm. If my shopping experience is any indication, an improved experience is within close reach, involving information that is already available, yet for the moment is blindly pushed from the seller database(s) onto the glass.
Personally I prefer local (or close-by) sellers vs equally (or even slightly lower) priced, but far-away ones. For the items that I buy used the shipping charges tend to be the same. Consequently, in the above example, assuming the item’s cost doesn’t vary wildly, I’d pick a seller from WA over one in CA, over one in TX, over one in MN, over one in NY. To begin with, the delivery time will be shorter. Then, assuming you care about your carbon footprint, the shorter distance translates into a lower environmental impact. However, although Amazon (or other commerce sites for that matter–this experience reflects today’s common practices) has this information readily available, it doesn’t allow me to pivot by location. Consequently I have to do it through visual inspection. Let’s see how long it takes until the location pivot becomes an integral part of the shopping experience!
November 11th, 2008 — work
A few weeks ago we launched Live Labs Web Sandbox, a preview for a technology that secures Web 2.0. The sandbox runs entirely in the browser, without requiring any browser add-ons or plugins. Consequently we worked hard to make it cross-browser, as the image from my post from 10/23 illustrates.
However the browser no longer belongs to the realm of desktop or laptop computers. Browsers run on mobile phones and offer capabilities on par with their traditional counterparts. We ran the Web Sandbox on the T-Mobile G1 phone, as well as on the iPhone (screenshot below). The samples from the sandbox site execute as they should. When running the overhead benchmarks the QoS layer kicks in a little earlier than on traditional platforms, reflecting the speed differential between the underlying runtimes.

October 24th, 2008 — work
The New York Times already has a story about Live Labs Sandbox, a project we’ve released just a few days ago. I am happy to see one of Live Labs‘ projects I’ve been driving from the embryonic stages receiving this kind of attention! For a closer look drop by our PDC 2008 session in L.A. or join the discussion about Web 2.0 security in the community forums available on websandbox.livelabs.com.
October 23rd, 2008 — patterns, work
In the post Political Streams Online (work blog) I mentioned that I left my fingerprints on Social Streams, the platform underneath Political Streams. For those who followed my work for a while the connections are probably obvious. For those who’d like to get oriented here are a few starting points:
- Streams fit right into data flow architectures. A Data Flow Pattern Language covers sources, filters, and sinks, as well as how they interact with each other.
- Aggregating data from heterogeneous sources is an integration problem. Integration Patterns discusses many proven techniques for tackling those problems.
Enjoy!
October 19th, 2008 — cloud, work
Due to scheduling conflicts I will miss the forthcoming workshop on Cloud Computing and Its Applications (CCA08), scheduled to kick off in a couple of days in Chicago. Erik Meijer will be there to present our LINQ-to-Datacenter paper–thanks Erik!. Here’s the abstract:
A plethora of Cloud/fabric frameworks/substrates have emerged within the industry: S3/EC2, Bigtable/Sawzall, Hadoop/PigLatin. Typically these substrates have low-level, idiosyncratic interfaces with data- and query- models heavily influenced by legacy SQL.
The many choices translate into high pain of adoption by developers because of the high risk of making the wrong bet. The SQL-like query model translates into high pain of adoption because it doesn’t appeal to developers who embraced object-oriented languages like C# or Java. The SQL-like data model is suboptimal for MapReduce computations because it is not fully compositional. This conservative approach is puzzling because recent language and tool innovations such as Language Integrated Query (LINQ) address precisely the problem of compositional programming with data in modern object-oriented languages.
The proponents of the current substrates have no incentive to come up with a general and developer-friendly abstraction that hides the idiosyncrasies of their proprietary solutions and graduates from the SQL model to a modern, object-oriented and compositional style.
We propose extending the LINQ programming model to massively-parallel, data-driven computations. LINQ provides a seamless transition path from computing on top of traditional stores like relational databases or XML to computing on the Cloud. It offers an object-oriented, compositional model that hides the idiosyncrasies of the underlying substrates. We anticipate that just as the community already built custom LINQ providers for sources such as Amazon, Flickr, or SharePoint, this model will trigger a similar convergence in the space of Cloud-based storage and computation substrates.
August 25th, 2008 — work
(Cross-posted from my work blog)
My article Volta: Developing Distributed Applications by Recompiling (co-authored with Brian Beckman and Benjamin Livshits) is now available in the Software Development Tools issue of IEEE Software (September/October 2008).
Here’s the abstract:
Mainstream languages and tools are tailored for sequential, non-distributed applications, with support for distributed computing provided only in library APIs. Such programming environments force developers to make decisions about “where-code-runs” early in the application lifecycle, structuring the entire application around partitioning decisions. Performance measurement may reveal that the original partitioning was wrong, but redistributing the application is expensive because redistributing is restructuring. We built a new kind of tool suite that recompiles executables into distributed form based on declarative user annotations, inserting most of the necessary remoting and synchronization boilerplate code, and facilitating post-hoc instrumentation to drive quantitative redistribution. Since the tools operate on the intermediate language CIL, they are compatible with a wide variety of .NET programming languages and eventual execution environments, even those that do not support .NET CIL directly, such as JavaScript.
Enjoy!
August 20th, 2008 — work
My colleagues from the Photosynth Team just released the full version of Photosynth. Read the announcement or jump directly to photosynth.com. Happy synthing!
August 4th, 2008 — book
Earlier today on the Microsoft Campus in Redmond I attended a talk by Jonathan Zittrain. This was a timely talk since about a month ago I finished reading his book The Future of the Internet (and How to Stop it)–mentioned first in my previous blog post Services Without Borders. Today’s talk, focused on Civic Technologies, was interesting and engaging–e.g., referring to email as the shared hallucination application, and bringing up Sturgeon’s law. He covered some of the topics discussed in the book, including generativity in the context of Web 2.0.
The book identifies Web 2.0 as one of the trends towards limiting generativity. I didn’t agree with this perspective while reading the book, and as it came up today what better way of revisiting it than talking to the author? As Jonathan gracefully signed a sticker that’s now glued to my copy of the book I asked for a few examples that illustrate how Web 2.0 hampers generativity. He offered a couple, explaining how forcing developers to use a unique key in their programs does just that.
Jonathan makes a good point: many of the sites that provide snippets to be mashed up elsewhere do require unique developer keys. However, as the echoes of the Web 2.0 workshop I organized recently haven’t faded completely in my head, his explanation involves an implicit assumption about the Web 2.0 platform. What is this platform?
- If you assume that the platform resides on top of providers that require unique developer keys, the mechanism for controlling (and even disabling) generativity is indeed embedded within the Web 2.0 fabric.
- If you assume that the Web 2.0 platform resides on top of DHTML + HTTP, the access through developer keys resides on a different, higher layer that could be bypassed thus does not hamper generativity.
Now I understand what frame of reference Jonathan used when he pointed his finger at Web 2.0, and thus the reason for my disagreement.
July 13th, 2008 — patterns, work
Several threads that we put on the table at last week’s workshop in Zuerich did not get sufficient traction to tackle with the workshop’s participants. However that doesn’t mean that they’re not worthy of pattern mining; on the contrary.
Consider for example scalability and viral spread. There are well known techniques and patterns for designing high-capability Internet-based systems.
However, in a Web 2.0 world, particularly when there is potential for network effects, a site may become popular very quickly. How do you design a system that may need to scale to 1 million users in less than 2 months? I offered iLike as an example, but that was as concrete as we got at the workshop.

Back in Redmond my colleague Greg Linden pointed me to a Q&A with Ali Partovi of iLike.com. While the conversation doesn’t go into the technical details, the numbers speak for themselves:
In terms of daily signups, iLike on Facebook trounces anything else we do… iLike on Facebook has been signing up roughly 200,000 new members a day.
Viral spread made possible by social networking adds an interesting twist to scalability. I hope than an increasing number of designers will start talking about their solutions. If you’re interested in sharing data points or articulating them as Web 2.0 patterns, head over to our pattern Wiki. As the iPhone 3G launch demonstrated just a few days ago, miscalculations have the potential to inflict major frustrations with customers, as well as make the headlines.
June 26th, 2008 — Uncategorized
It’s been a few years since my last vacation overseas. Since then I acquired several e-dependencies on services such as Pandora (see my older post on feature extraction) and Hulu, a service I learned about from my colleague Adam Sheppard (you may have read about Adam on Live Labs’ web site). I discovered that these services don’t work from outside the US:


This is surprising because in both instances the providers know my permanent location from the ZIP code provided when I set up the accounts.
Luckily Pandora and Hulu are not my only options. I am also a Sirius Satellite Radio subscriber, and unlike with the previous accounts that is a paid subscription. Their service did not complain about my accessing it from outside the US. While this finding hasn’t sunk in completely it resonates with what I’m reading in Jonathan Zittrain’s The Future of the Internet (and How to Stop it) about reducing generativity.