Portfolio
Some projects I'm proud of, and notes on their implementation.
Gallery
Apple, Inc., 2007
When you open a MobileMe (formerly .Mac) gallery page, your browser downloads a bare framework of HTML, CSS, and JavaScript. The first version of .Mac gallery was also an early version of the SproutCore framework.
The user's photos and metadata are in a WebDAV store. The page requests the top level gallery metadata, which is returned as a JSON serialized object. Then the page uses a model generated from the JSON to construct the gallery view.
The servers are returning cached information, and all the work's done by the browser. Of course, that means you have to write fast, and memory efficient JavaScript. We found a garbage collection bug in WebKit while working on this.
Loading an individual gallery makes another call back to the WebDAV store to get the JSON for the image and video metadata, and the page redraws the view.
The Beta, the Bear, and the Protocol
Linden Lab, 2008
How do you evangelize a technical project to a non-technical audience? By building in a challenge to attract more users. In the Summer of 2008, I was managing the Open Grid Public Beta for Linden Lab. This was a public interop test of moving 3D avatars between a grid run by Linden Lab, and grids running OpenSim (an open source 3D virtual world simulator.) While OpenSim developers, interop advocates, and the Linden Lab team working on the project understood the significance of the project; many of our users (a.k.a. Residents) did not, and were apprehensive about what interop would mean for virtual goods and permissions on them.
As manager of the beta program I did two things:
- Any Second Life main grid resident in good standing could sign up for the beta, even if they were not hosting a grid of their own.
- And I offered a special bear for residents completing a simple challenge using the Open Grid Protocol.
A Word about Linden Bears: there's a tradition of Linden Lab employees making and giving out a virtual bear to Second Life residents. And on occasion, special bears will be made that are limited editions, and residents seek them out.
Under the Open Grid Protocol implementations on OpenSim and the Second Life Beta Grid, avatars keep the same UUID, that information combined with a shared secret allowed me to create a OGP Beta Bear Vendor.
A resident started by logging into the Second Life Beta Grid using a viewer supporting the OGP protocol. Then they "teleported" their avatar to a OpenSim grid I had set up, which was running the protocol. On that grid there was a sign, if they clicked it, they were given a token sting (generated from the UUID and a shared secret) to cut and paste. This demonstrated that they had teleported between grids.
Then the Resident logged back into the Second Life main grid and teleported their avatar to my inworld office where they gave the token string to another object there that confirmed the token (again, the avatar UUIDs were consistent across the grids) and if valid, gave them a bear. The object also tracked tokens used, so a resident could not receive more than one bear.
As a result, more than 100 people participated in the beta, and helped us resolve over 30 issues, and refine the OGP protocol which became part of the basis for VWRAP.
Management: The Gathering
Apple, Inc., 2004
Apple had licensed a tool for assessing management strengths. The license extended to all Apple employees. The tool was a workbook and a deck of cards, one for each quality. This would not scale to thousands of Apple employees, and a designer and I were asked to make a web version.
We discussed a drag and drop card sorting interface, rejected that and other approaches in favor of a scrollable list, with a focus view for each quality.
In order to produce the views, we imported the source manuscript provided by the vendor as a MS Word file into an XML intermediate, then used XSLT to generate the HTML views for the qualities, descriptions, and suggestions.
The application itself is JavaScript and HTML, using a cookie to store the assessment information on the user's computer between sessions. A control in the app allowed employees who shared computers, such as at Apple Stores, to delete the self-assessment information.
If I was to rewrite this App today, I'd use SproutCore.