Putting the Web in Web Applications

MAY 04, 2009
This post is part of the Who's @ Google I/O, a series of blog posts that give a closer look at developers who'll be speaking or demoing at Google I/O. Today's post is a guest post written by Ross Boucher, co-founder of 280 North.

When we set out to build 280 Slides, we wanted to create an application that made no concessions: something that felt as interactive as the desktop experience, while leveraging all the benefits of being online. We coined the term "desktop-class applications" as a way to describe our vision for what web apps should be. We also knew it wasn't enough to just recreate a desktop presentation tool pixel for pixel. We wanted to do something new, and to truly take advantage of being a web based solution.

The key to having a great presentation is having great media. A picture that helps tell the story with infinitely more clarity, or that just helps tell a good joke. A movie that shows a demo of your cool new widget that everyone's going to buy. Not all presentations, and not all individual slides will work this way, but the kind of in-person, captivating speech that Steve Jobs would enjoy relies almost entirely on images. And, of course, an engaging presenter.

So, if having great media is key to having a great presentation, it's important to be able to find great media for your presentation. Not all of us have an art department on hand, so we made this idea central to 280 Slides, and we did it with a lot of help from Google APIs.

If you take a look at what we call the Media inspector, you'll see we have top level choices for pictures, movies, and shapes. Both the pictures and movies tabs let you search popular web services to find the perfect media for your presentation.

When you search for a picture, we send a request to our server, which then sends out requests to several web services. Google's AJAX Search APIs actually enable us to perform server side searches as well, thanks to the Flash and Other Non-JavaScript section of the API. On the server side, this lets us send requests to Google and Flickr at the same time, and convert the responses to a consistent data format.

We're excited about finding other ways to integrate with Google services as well. For example, we hope to eventually enable publishing a presentation directly to YouTube, and use Google to log in to our service rather than having to create a new username.

We're also planning on changing the way we interact with the Google APIs. In addition to 280 Slides, our company makes a web application framework called Cappuccino. The media integration in 280 Slides has been a huge hit with our users, so we plan to build this feature directly into Cappuccino and let anyone building a web app integrate media searching with little effort. This means changing our approach from server-side to client side aggregation using JSONP. The AJAX APIs, YouTube APIs, and all the other APIs we use are now available by using JSON with padding. JSONP lets us work around the browser's same-origin policy to better integrate with third-party web services without proxying through a server.

280 North is going to be at Google I/O on May 27-28 to show off 280 Slides and how we integrate with the Google APIs. We'll also be showing off the beginnings of integrating this in Cappuccino which should be interesting to JavaScript developers. We hope you'll stop by the Sandbox!

If you want to learn more about how 280 Slides uses Google APIs, check out these Google Code videos with one of the co-founders:

Guest Post by Ross Boucher, 280 North