GothamJS schedule

Saturday 9th July 2011

  • The Once And Future Script Loader

    by Kyle

    Like the tales of King Arthur, the history, mythology, and lore of script loaders is teeming with both fact and fiction. If we're going to achieve the destiny of true web performance optimization in our page loads, we're going to have to separate the myths from the truths.

    We're going to take a brief look at the history of script loading techniques, looking at what survived and what didn't, and why. We'll also look at some of the techniques that are still around but shouldn't be!

    Then we're going to jump into a broad review of current script loading techniques. We'll cover from the very basic single-script snippets (like the "async snippet" from Google Analytics), to general script loaders like LABjs and HeadJS (and several others). We'll also look at task-specific script loaders such as those found in frameworks (Dojo, YUI, etc). Our goal will be to identify the characteristics of each loader and loading technique, to give you solid information you can use when choosing the right script loader for your sites.

    We'll also survey the current state of browser technology and the HTML specification standards for these loading techniques, and also talk briefly about where those things are headed in the future.

    Finally, we'll gaze into the crystal ball to look at the future of advanced use-cases for script loading, such as module dependency (RequireJS) and deferred script execution (ControlJS), as well as upcoming ES-Harmony Modules. We'll talk about why these things are so valuable, and give you practical do's and don'ts for implementing these techniques right now.

    More than just a technical talk (although there's plenty of code!), this is a talk for advocacy and awareness among the developer community on the topic of efficient and performant script loading, and what members of the community can do to become involved in shaping the next generation of script loading technology.

    The rich history, diverse current state, and bright future for script loaders is both technically challenging and highly rewarding in performance gains, if you accept the quest.

    At 10:00am to 10:40am, Saturday 9th July

  • HTML5 APIs: Where No Man Has Gone Before!

    by Robert Nyman

    This talk aims to introduce you to the plethora of APIs HTML5 and related technologies offer us. Sure, HTML5 brings eye-candy and we'll look at that, but there's so much more to it when it comes to building day-to-day web sites and web applications.

    At 10:50am to 11:30am, Saturday 9th July

    Coverage slide deck

  • Leveraging Code Quality Tools or How I Became Crockford's Sworn Enemy

    by Anton Kovalyov

    JavaScript is a powerful and flexible language that allows you to write very elegant programs. However, it has some parts that are easily breakable and no matter what you are writing it is very important to not to ship broken code. Fortunately, there are tools that were designed to catch potential problems in your code and report about them before the deployment of your code.

    This talk is about integrating such tools into your daily development workflow. It will give you a basic idea of the problems that JavaScript has and approaches you can take to prevent those problems. Along the way, we will introduce JSHint, a community-driven code quality tool, and how we use it at Disqus to make sure that we don't ship broken code to 500m+ visitors.

    The talk will also explain why code quality tools are important to the community and describe our plans towards the next iterations of JSHint.

    At 11:50am to 12:30pm, Saturday 9th July

    Coverage slide deck

  • Rendering Views in JavaScript - "The New Web Architecture"

    by Jonathan Julian

    Making a request to the server for a new page is sooo 1990s. We have the technology and power to make amazingly fast and responsive applications - not just web *sites*, but *applications*. This requires a shift in thinking, an ironic shift back to the 1990s. I'm talking about client-server programming.

    The MVC pattern has been embraced by the development community. Unfortunately, traditional server-rendered views are often much slower than they need to be. Add in a bit of network latency, and an application can slow to a crawl. Pushing the "V" in MVC to the client can be a solution - and it's not as difficult as it seems. With a well-designed architecture, we can leave the service layer on the server-side, and move the view layer to the browser.

    This presentation will help attendees re-design their applications to take advantage of fast client-side templating of views. We will survey the landscape of templating solutions in JavaScript, and discuss architecture choices when using various back-end languages. Technologies discussed will include Backbone.js, underscore.js, JSON, REST, mustache, as well as others.

    At 12:40pm to 1:20pm, Saturday 9th July

    Coverage slide deck

  • Lessons from a Rewrite

    by Rebecca Murphey

    In late 2010, Toura Mobile had developed a PhoneGap-based platform for creating content-rich mobile applications, and customers were buying. The problem was that customers were also asking for more and more complex features, and Toura was rapidly discovering that their platform was more of a prototype than a solid base for future development. In this session, Rebecca will talk about the decision to start from scratch, what the team did differently the second time around, how they used features of the Dojo Toolkit to smooth the process, and how they designed the new solution with an emphasis on expecting the unexpected.

    At 2:20pm to 3:00pm, Saturday 9th July

  • CreativeJS Visual Effects

    by Seb Lee-Delisle

    Now that the open standards Canvas and SVG are available natively in all major browsers, JavaScript developers have much to learn about creative visual programming.

    From particle systems to blending effects, optimised animations, 3D, touch interfaces, gaming and good old maths creativity, Seb Lee-Delisle has more than a trick or two to share with us. If you’re interested in bringing a little visceral beauty to your websites, apps and games, then you will want to see this talk.

    At 3:10pm to 3:50pm, Saturday 9th July

  • JavaScript and Node.js and The Future of Telephony Application Development

    by Mark Headd

    In addition to traditional web apps, Node.js is very well suited to building communication apps (it's good for everything!) To illustrate this, Mark will provide a short introduction to Node, and lead up to a broader discussion about the different kinds of things you can build with it, including an exploration of the future of telephony application development and the prominent role that technologies like Node will play in it.

    Mark will present some live demos to illustrate the power of building telephone, IM and SMS applications using JavaScript, both in the browser and on the server, highlighting the power of Node. You'll see how JavaScript and Node.js can be used to build powerful, VoIP enabled, multi-channel communication apps.

    At 4:10pm to 4:50pm, Saturday 9th July

    Coverage slide deck

  • The Fallacy of Microlibs

    by Yehuda Katz

    These days, the idea that large JavaScript applications should be built on top of tiny, independently developed libraries is all the rage. The argument goes that with the latency requirements of mobile devices, we can't afford to ship code that we're not using. Like Unix, the argument goes, small libraries designed to do one thing and one thing well are the way to go.

    There's another way. In this talk, Yehuda will provide an alternative approach to thinking about developing large JavaScript applications, the approach the SproutCore team is using for developing SproutCore 2.0. He will explain why 5k vs. 1MB is a false dilemma, and why framing the discussion that way is crowding out good solutions in the JavaScript community's marketplace of ideas.

    We're still in the early days of building rich applications in JavaScript. Now's the time to learn from those who came before us, not the time to prematurely declare that small incremental changes to the existing browser-based programming models are all we need.

    At 4:50pm to 5:30pm, Saturday 9th July