Offered for your approval, one attendee’s observations of JSConf 2009, held this April in Rosslyn, Virginia.
A few trends emerged.
Second, the party’s on github. In about 2 years, git has gone from nowhere to everywhere. Just about all of the new software presented is open source, so attending the conference amounted to being offered excellent, and free, tools. Take this awesome framework, please! At the same time, taking advantage of these riches means git is essential. Learning how to fork and patch git repositories is now crucial for a developer who wants to make a commitment.
Fourth, some things have gone way out of favor. AJAX is now a dirty word (it might be the X bit — no one likes XML), and the Prototype framework gets no love at all. Sorry, Brian, but Prototype’s functional programming support is phenomenal. A built-in tmeplating language? And the ‘wrap’ function, opening up all of Aspect-Oriented Programming with one function? I’m telling you. But it was mostly JQuery, which is great too. And JSON is huge, which makes me happy. It’s great to see simplicity triumphing.
Finally, twitter is for reals, y’all. Everyone at the conference had a name tag with their name, an optional company, and a twitter handle. I’m tracking these people down as you read this. As you may notice, I’ll be linking people’s names to their tweet streams where possible.
The first speaker, Francisco Tolmasky of 280 North, presented Cappuccino and Objective-J, the former being a rich media framework built on top of the later, a language built on JS as a strict superset of JS. What struck me most about Tolmasky’s talk was his frustration with waiting for the ECMA standards group to give us a better language. He and his team got tired of waiting. He also made an excellent point about the current JS frameworks, as good as they are, requiring the coder to think about structure. The base language should take care of structure, he argued, and you should have libraries that deal with application logic. So, being former Mac and iPhone coders, they built a language that implemented the Cocoa API interface, but in Objective-J. The demo was impressive: lots of drawing lines between icons and rich behavior suddenly happening. Cappuccino is on github. Even the very fine-looking branding and icon imagery 280 North had done will be open sourced. Open source Photoshop docs. For real.
Ian Smith began his Taffy DB talk by saying he wanted to focus on the “trunk” of the webapp tree—the place between the data-layer roots and the user interface canopy. Taffy DB takes advantage of one of my favorite things about JS, that (nearly) everything is a hash, to use a nested object literal structure to represent data. Then he puts lots of search, select, and display functions over that. So your data is available client-side. He was asked about transaction support. It isn’t there yet, but could be. I was reminded of Clojure’s STM, which guarantees atomicity for its data objects, the most common of which is the very JS-like data map. Not that Smith needs to worry about any of the other issues the STM addresses, like multithreading, but it’s an interesting connection. I also applaud him for building his system up as need demanded and not being afraid to admit he started very simple, with arrays. We’ve all been there. It’s inspiring to see a smart person take it a lot further.
Then there were a few lightning talks. What I recall best is Chris Williams’ recollection of his erstwhile “Dissident” program, which sought to push more power (and computation) from the server to the client. I am deeply sympathetic with this view, and I think it’s going to win in the end. Hang in there, Chris.
Finally, John Resig of jQuery and all-around code ninja fame took the podium and talked about performance testing (count method calls, not just milliseconds per function), JS for games (latency precludes accuracy games, and ease of cheating rules out knowledge-based games, but team-based time-limited challenges have promise), and distributed testing (let my JS run in your IE6 client, willing zombie, and I’ll give you a free mug). A melange of topics off the top of his head—nice way to end the day.
A conference without cursing presenters is like a beach without sunshine. Brian LeRoux, contributor to PhoneGap brought the F bombs. He also made some satisfying assertions and drew lines in the sand. He said, Objective C is not cool. We’re not desktop programmers. He said the purpose of PhoneGap was to bring about a day when PhoneGap could cease to exist. He also claimed that a mobile app built with PhoneGap was indistinguishable from a native app. He also also argued that one should try to build his own framework before picking another one to use. I haven’t explained what PhoneGap is, because everyone there knew already: it’s a framework that lets you write an app once for all the mobile devices that support WebKit (it strikes again)—that means iPhone, Android, Nokia phones, Palm Pre, and even Windows Mobile devices. (Although LeRoux pointed out that no one is sure about the Windows Mobile because no one actually owns one.) It’s teh shit. In fact, it’s so hip that its naming convention for success and failure handlers is to call these functions
fail. In the future, LeRoux promises PhoneGap will come with an open tool chain, Gecko rendering on top of WebKit, a better simulator (possibly to be named “Stimulator”), integrated Firebug Lite for debugging, speech recognition, sockets, FileIO, Facebook connections, native controls, and hoverboards. An entertaining talk. And an enlightening one. Did you know Nintendo is preparing an app store?
The CouchDB guys drew a lot of people, including me, to their promised track B talk. I have to confess I understood a bit less than I hoped to, but I did get that views pull together selections and summaries from documents. This seems very natural. After building web sites that are 99% concerned with text on top of databases meant for analysis and reports, things are finally starting to make sense. Once again, REST and JSON rode tall as the dominant AOFLs (Acronyms Of Four Letters), supplying the means by which you query and update. Just one nit to pick: I don’t like magic comments in the code. Like
// !command Don't delete me or you're screwed.
I liked Jason Huggins‘ Selenium talk, although it didn’t make me any more willing to dive into the incredibly complicated undertaking that writing Selenium tests seems to present. I was more encouraged by the future. Brendan Eich’s bodacious (but Mozilla-specific) Narcissus meta-circular JS evaluator has been made broader and more usable as something called Narrative JS. I also think the Castanaut project, bringing screencasting and functional testing closer together, is a good development.
Next I was dazzled by Richard Worth‘s walk through JQuery UI‘s many interactions and widgets. It was like getting your hand held and led through the API docs. I think I’ve lived with Scriptaculous long enough. It’s time to make a move. The theme roller, in which you can configure, preview, and then download as CSS an entire site theme, is very cool too.
Then it was time for SproutCore, presented by OtherInbox representative and Charm City native Mike Subelsky. The bezier curves were flying and flexing as he took us through an example of the “desktop-like” applications that the framework makes possible. Like Cappuccino, SproutCore is inspired by Cocoa. It promises to give you as a developer access to the things a desktop developer has. In particular, Subelsky pointed out the value of Key-Value Coding and Key-Value Observation. Controllers manage collections or selections of objects, and a chain of scope is established from the view up through the controllers. Setting a value fires events you can bind to. Plus you can bind your own function calls to values named by key. Very nice.
My apologies to Peter Higgins, who gave the last talk of the day on Dojo, but I had to run out early to get ready for the party. Traveling around DC on the weekend by Metro is slower than it should be.
All in all, a great conference, and an invaluable opportunity to meet people and learn about projects to watch. I think attending JSConf will pay me back handsomely in the days to come. Chris Williams has put up photos of the conference on Flikr, if you’d like to see what this looked like. There will probably also be videos and slides soon.