JSConf 2009 Recap: Javascript at the Edge

Two weeks ago, I spent an amazingly full two days at JSConf 2009 getting my mind blown by some JavaScript developers who are pushing the boundaries of the language. Thanks to having so many great people there, we all had a great time discussing ideas and learning from each other. Having a smaller number of attendees really enhanced this aspect of the conference and allowed people to discuss the ideas more deeply.

Beside the discussions of newer Javascript Frameworks (like Cappuccino/Objective-J and SproutCore), the main theme that I think threaded its way through a lot of the conference was using javascript outside the browser. Also, everyone I met was fired up about Javascript and exploring what new things we can do with it.

CouchDB to the Edge

The technology that probably had the biggest spotlight on it was CouchDB. Chris Anderson & Jan Lehnardt gave a stellar talk on how CouchDB works and what makes it special. As they expressed, CouchDB has 3 big selling points: it's Simple, Scalable, and Distributed. The first point is mainly a result of using JSON, REST/HTTP, and Javascript as the basis for interacting with the DB and building apps on top of it. The last two are mostly due to it being built in Erlang, and using Map-Reduce in the “views.” They also talked heavily about the ease of creating CouchApps, which are web apps that are stored and run on CouchDB. The fact that CouchApps have filesystem mapping and that CouchDB is RESTful allows for very simple cloning of CouchApps. CouchApps appear to be extremely scalable and simple to create, making them the item from the conference I’m most interested in exploring more deeply.

The Real Time Web with XMPP

The other technology I was excited about was Strophe, a Javascript library that allows you to do XMPP calls in the browser. Strophe provides a very simple API for doing XMPP over BOSH communications in the browser. Jack Moffitt explained the basics of how the library implements this and then went on to give some examples of just how easy using the framework is.
The most obvious use of this is adding chat capabilities to any page. This can, of course, be specific to the page, specific to the site, or somewhere in between. The less traditional use for it is as a real-time communication channel between the web page and the server. Using this in conjunction with some of the methodologies discussed by George Malamidis, you could easily have this type of client-server interaction.

Interoperable Javascript-Based Client/Server Web Applications

Kris Zyp of Sitepen presented on Persevere, an object storage server based REST/HTTP and JSON. It allows you to take advantage of a number of cutting edge JSON technologies including JSON referencing, JSONQuery/JSONPath, and JSON Schema. They’ve worked heavily to offer tight integration with Dojo’s Data JsonRestStore functionality, although it can also work with other frameworks (like Jester). It also opens up the possibility to work with other data stores on the server side, including MySQL and CouchDB, opening up all sorts of interesting possibilities. What I found most interesting here was the use of JSON referencing to handle relationships between objects. This is a traditional problem with JSON document based storage in my opinion, but this offers a solution to that.


Nick Carter gave an excellent hands-on demonstration of the Javascript ORM JazzRecord. It mirrors ActiveRecord’s API and syntax as closely as it can, offering up the ability to store data client side via Gears and other client-side data persistence options. It’s a really great start to offering a single way of interacting with data with-in a Rails app, be it on the server or on the client. The code is up on github, and he’s looking to offer support HTML 5 databases so if you’ve got a chance check it out and help out by forking it.

YQL Execute

Tom Hughes-Croucher gave a demo of what you can do with YQL, a service that offers up SQL like syntax to access data from various web services. He gave us a preview of the now-announced execute functionality. With execute in your YQL table definition, you can take the data coming into the query and modify it with Javascript before sending out the final response. The main advantage YQL offers is offloading the fetching, processing, sorting, filtering, and joining of data to an external service that’s much faster. To quote Tom, “Our [Yahoo’s] pipes are fatter than yours.”


Every conference needs some comic relief, and that could be found in Brian LeRoux’s hilarious Day 2 morning session on PhoneGap. PhoneGap is a framework and toolset to create apps for the iPhone, Android, and Blackberry using just HTML, CSS, and Javascript. It even offers up an API to get at the devices native technologies like geo location, vibration, accelerometer, and sound. The slides where great and it got everyone excited about building an app with PhoneGap.

And much, much more.

Really, that’s just skimming the surface. John Resig gave a really phenomenal talk on better ways to test Javascript performance and compatibility, and introduced a killer Javascript game. There was also an interesting session on Appcelerator’s Titanium, a way WebKit based platform to create desktop apps with HTML, CSS, and Javascript, Ruby or Python.
Also, E4X was mentioned a number of times. E4X is an extension to Javascript for Rhino that makes XML a native primitive. It allows you to write, access, and manipulate XML in Javascript easier and quicker then with traditional DOM methods.

Overall, it got me very excited to try out all these new up and coming tools. I’d be very excited to attend a JSConf 2010. Javascript as a real programming language is very much a growing topic and I think based on what I saw this year there’ll be even more amazing sessions in the future.

Brian is a developer in our Boulder, CO, office. He loves making code readable and maintainable for clients such as Time Life and Shure.

More posts by Brian