by Dion Almaer and Ben Galbraith
With the mobile world becoming more complex with platforms like Palm webOS, iOS, Android, Blackberry, and Symbian all with growing user bases, how can you build applications that target a wide variety of devices? In the past, the solution was J2ME (boo! ;), but now the common denominator for the smartphones of the world is WebKit, the HTML5-based engine that's powering today's smartphones.
The Web has the opportunity to be the unifying platform, but really? How can you actually create a Web application that spans all of the platforms? There is an exciting new world brewing. A world that isn't about a "browser" but is about a global runtime. Learn how the computing game has changed, and how you can disrupt the industry using productive and fun technology.
by Robert Nyman
HTML5 is upon us and it offers a wide range of exciting possibilities when it comes to developing rich web interfaces. This talk will introduce you to a number of them and hopefully inspire you to create amazing things!
JavaScript Frameworks, Libraries, and Loaders -- there is no shortage of options. Each are wrong. Each have their own philosophies, usefulness, targets, and flaws. Continuing on the "It's Just JavaScript" theme we'll take a subjective look at the current offerings, what problems they intend to solve, and the reasons you should be using one of them anyway.
Either roll your own or adopt a major library, but know the caveats and benefits therein. Embrace JavaScript as the elegant, loosely-typed language that it is and leverage it's ubiquity for the forces of good. This is not your average framework-comparison presentation; there will be no charts or performance tests. There will be, however, lively discussion of the current state of affairs in the JavaScript landscape, client and server side. And of course beer.
The Web has never been more open to everyone. Open Data services exist in almost every web application: from social networking apps to governmental pages and the news, all this data can be instantly accessed by exposed APIs. However, although most of this data is offered in a simple interchange format, its structures are quite complex, ranging from complex networks to time-based information, hierarchical data or heavy graphs. Displaying this data in a manner that enables the viewer to gain some insight can be challenging, especially if we aim at providing some interaction and doing it in a cross-browser/cross-device manner. The JavaScript InfoVis Toolkit creates interactive data visualizations for the Web. It's based solely on Web Standards, leveraging the power of native browser technologies to provide insights on complex data. In this talk you will learn about the JavaScript InfoVis Toolkit and how it can help you create advanced data visualizations for the Web.
by Jenn Lukas
Straight from the JSConf.us talent pool comes the wonderful Jenn Lukas. If you missed her talk in the US, go watch it on blip.tv (when it is released :) because here comes part 2:
"Part one of this series spanned a broad overview of where JavaScript and Web Standards meet. I also explored examples of how to support progressive enhancement without sacrificing functionality or alienating users. The sequel to that talk will continue on that track and delve deeper into specific examples of JavaScript gone wrong! I will talk about common JavaScript enhanced mistakes that prevent users from enjoying the site experience and provide solutions on how to overcome those. Accessibility and usability should always be on the forefront of your code; this talk will cover take-away tips and general theory all while keeping those goals of best practices in mind."
by Stephan Seidt and Sebastian Deutsch
Doing animations in the dark ages of the internet led you to technologies like Flash, or even Java Applets. Early arcane magicians tried bending the will of the DOM to create shiny stuff. It felt wrong.
With HTML5 two technologies arrived to fix that: Say hi to Canvas and SVG!
Our talk will cover basic usage and use cases of both technologies. By showing demos and real world examples we'll try to give you an understanding of when to choose what. Eventually we will show you libraries based on Canvas or SVG which should save you some time.
by Tim Caswell
One of the biggest challenges to the otherwise wonderful programming model of JavaScript is handling complex logic that involves lots of async functions and things that emit events. The inversion-of-inversion-of-inversion-of-control often needed is hard to read, write, and just plain understand.
With pre-empetive multi-threading you delegate all control to the operating system and it handles concurrency for you. This comes at a great performance cost. However with JavaScript this simply isn't the model, there is one thread and finite snippets of code executed. There is nothing like being able to tell a computer exactly how much code to run and under what conditions and it just works under extreme load and/or concurrency.
Be prepared to have your mind warped and molded as you are trained to not only accept this fact of life, but embrace it. You'll even be thinking in callbacks by the time this talk is over.
by Paul Bakaus
Graphically intensive and fast paced browser games written in pluginless JavaScript largely do not exist yet, for a very specific reason - Performance issues. Only recently, browser engines started to give us enough quirks and hacks to power full motion graphics, animation and real time interaction. With unprecedented depth, you'll learn why Canvas isn't the obvious choice, why you should write JavaScript in front- and backend, why HTML5 really is just a buzzword and how to leverage CSS hardware accelerated to create true platform independent games. Dive in to the world of JavaScript gaming!
by Ulrike Mueller
Did you know that London 2012 olympics shop runs on server-side JavaScript? Did you know that you can buy a Burton snowboard, a Puma sneaker or latest fashion from Nine West, all with the help from server-side JavaScript. All these web sites run on Demandware's commerce platform, where customization from business logic to pages is done with JavaScript. The talk gives an introduction how JavaScript is used on the Demandware platform and talks about the history, the decision made along the way, the learning and the DOs and DON'Ts with server-side JavaScript in a system, which is provided in a platform-as-a-service model.
You like the idea of Object Oriented CSS, but your website has out-of-control CSS bloat. You know your performance is being impacted, but how do you move from organic CSS with no particular architecture to something lighter, more logical, and easier to maintain? How do we automate some of the heavy-lifting and stop wasting our own time?
CSS is typically the most difficult layer to automate, but a more clearly defined CSS architecture makes lint much more powerful. In this session, Nicole will show you how she improved the CSS at Facebook and demo tools that you can use to test your own CSS.
by Mikeal
For a variety of reasons CouchDB and node.js are a perfect fit. This talk will focus on node.js tools and utilities for accessing CouchDB, writing Couchapps and responding to _changes events.
Felix was supposed to speak at JSConf 2010 in Washington, DC, but then there was a volcano!
What would happen if your database would have no network interface, no query abstractions and less than 250 lines of node.js code? You would end up with a very flexible in-memory database that is wonderfully suitable for dirty tasks such as rapid prototyping or performing millions of GET/SET operations per second.
This talk is about rethinking current database technology and exploring situation-based CAP tradeoffs.
by xnoɹǝʃ uɐıɹq
Building native mobile applications across platforms with PhoneGap is super easy but developers are still required to install a dizzying array of SDKs for: iOS, Android, Blackberry, webOS, Symbian, MeeGo and Windows Phone. At JSConf.eu the PhoneGap team is releasing a special sneak peak at two new projects which aim to solve this problem. Unlike our previous sessions which have been information dense lightened up with pixel art and 4chan pictures this session will be more code intense: with pixel art and 4chan pictures!
In order to find out whether node.js is ready for production use and to scratch an itch, tempalias.com was started as a fun project.
The service allows anybody to create a temporary email alias with a limited validity (either time- oder usage based). Mail sent to that alias within the validity constraints is then forwarded to any address of your choice.
The talk gives a behind-the-scenes look on how the (free software) project was built and how its architecture works. On the process, we'll learn how to build a web application without dynamically generating a single byte of HTML on the server side, how SMTP works, and how to implement a bookmarklet without destroying arbitrary target pages. And we'll learn how to design a daemon in a way sure to bring your server down under load :-)
The whole service reeks of JavaScript all over: Webserver? Javascript. SMTP-Server? Javascript. Web-Application? Javascript (and a bit of HTML).
Aside of the technical issues, we'll also have a look at how to be a good citizen in the open source community by providing upstream with usable and easily applied patches. And as it's the case with all cool free services, we'll learn how to deal with Spammers.
by Ben Firshman
Applications that were once on the desktop are now appearing on the Web, bringing a whole new set of performance challenges. After writing a console emulator in JavaScript, I have a few tips to share that might be applicable to your more sensible applications. I will talk about the differences in performance between modern browsers, tweaks that can have a huge impact on the speed of your code, and some fun hacks.
by Joe McCann
This topic will cover the concept of what rapid prototyping is, why it is important in the design and development process, and how you can not only leverage the power of JavaScript to rapidly develop proof of concepts and prototypes, but build them with multiple devices in mind.
Digging Deeper
The area of Research and Development (R&D) in software, web and user interface engineering is making quite a statement in many large and small scale organizations lately. With such a vast amount of data and web service APIs available to developers, coupled with a huge demand for multiple systems integrating seamlessly across several platforms and devices, it should come as no surprise that companies are creating "Labs" departments left and right to create the "next big thing."
In order to cultivate innovative products and services, designers and developers need to research, ideate, and collaborate to develop creative approaches to current products or services, or even fill voids for users for products or services that have not been created. Developers need to quickly build out prototypes of these ideas in order to not only implement the ideas and prove the value of the concept, but to also provide new products and/or services for the business itself (and keep the R&D department alive!).
Rapid prototyping is exactly as it sounds: creating a prototype of a concept or an idea in a very short amount of time. For years, such rapid prototyping and development of various simulations was heavily dominated by the Flash and Actionscript world. Now, with the speed and power of current JavaScript interpreters and its ubiquity across arguably the most used piece of software known to man (the web browser), JavaScript, in harmony with HTML and CSS is quickly becoming a go to resource for hashing out proofs of concepts.
From My Presentation, You Will Learn...
What rapid prototyping is and why it is important.
Some actual results of rapid prototyping (case studies) with JavaScript.
What tools you can use right now to build rapid prototypes (including Titanium Desktop, Phonegap, CouchDB, Node.js, JavaScript Templating, Webview for Android and plain HTML5 and CSS3).
Tips on baking in ideas like performance, scalability, and maintenance into the prototypes and why you should avoid them.
How to utilize a single codebase for usage across various devices and platforms including the desktop browser, the mobile browser and mobility products (e.g. Ipad).
by Mutwin Kraus
With recent advancements in JavaScript interpreters it's possible to run more complex games inside the Browser, using JavaScript and the canvas tag.
In this talk, we'll explore what is needed to develop a 2D game, like Monkey Island, entirely in JavaScript, by example of JSScummVM, a (work in progress) JavaScript port of the adventure game engine ScummVM.
Some of the topics covered are: palette graphics, Sprites, manipulating canvas image data, Blitters, Timing, Sound and new technologies like WebGL and Chrome's Native Client.
Project managers, bosses, and teams are picking jQuery as their go-to JavaScript library at an ever-increasing pace. Nobody wants to choose a loser, and as demonstrated by super-meaningful Google graphs and surveys that count my grandfather's blog alongside leading web sites, jQuery is leaving all the other libraries in the dust. Plus, it's easy! And there's a plugin for everything! And with all those sites using it, finding someone who can write thoughtful, maintainable code with it will be totally no big deal. Right?
This talk is a call to arms. This is not just JavaScript -- it's JavaScript, damnit, a language worthy of respect and, *gasp*, knowledgeable developers. When well-meaning but uninformed deciders and developers see jQuery as the be-all-end-all answer, conflating a knowledge of jQuery with a knowledge of JavaScript, we all lose. As a community, we owe it to the language -- and ourselves -- to give those deciders and developers the context they need to make well-informed decisions. Maybe jQuery is the right answer; but first, they need to truly understand the question.
by Pete LePage
nteractivity to a key driver for innovation on the web. A new generation of applications such as Gmail and Office Web Applications use thousands (or hundreds of thousands) of lines of JavaScript to deliver functionality and complexity similar to traditional desktop applications. With the advent of AJAX and script libraries, nearly every new site today makes use of JavaScript. These changes have also pushed browsers and script engines to evolve rapidly to keep up with user and developer needs to have fast, responsive applications and sites.Internet Explorer 9 introduces a new JavaScript engine, codenamed Chakra, which fundamentally changes the performance characteristics of JavaScript inside Internet Explorer 9. We'll dive into what's new in Chakra, including the new compiler that compiles JavaScript source code into high-quality native machine code, a new interpreter for executing script on traditional web pages, and improvements to the JavaScript runtime and libraries like ECMAScript 5 support.
by BrendanEich
Proxy Objects are going to an amazing new addition to the next version of ECMAScript. You will be able to allow a proxy to intercede any method or internal within the ECMA specification, allowing you to wrap everything in the JavaScript object domain. This is super powerful for logging, debugging, operation inversion, and if you can wrap the entire DOM and record timestamps, this might be the magic bullet that will allow you record and replay DOM interactions. We are bringing metaprogramming or Meta Object Programming to JavaScript and this will be your first peek at this awesome technology.
by Douglas Crockford
Software development is hampered by a specific set of design mistakes that were made in the first programming languages and repeated in everything that has been done since. And, somewhat miraculously, JavaScript is going to make it right, radically transforming the way we write applications. Again. In the Loop of History, it has all happened before, but it has never happened like this.
by Jens Arps
Plugin-independent client side data storage, like HTML5 powered localStorage or IndexedDB, is becoming more relevant every day, though it had been there for ages. In fact, IE 5.5 was the first browser to offer data persistence in other forms than cookies. However, today, as we are online most of our time, handling offline situations has become important for many web apps. And for mobile dev, storage is crucial: You wouldn't want to pull some hundred k of data via a slow connection again and again.
"This talk will take a tour around existing client side storage mechanisms. We'll start with cookies and see why it's a bad place to stay. Then we'll quickly move on to the good neighbours, visiting ancient places as well as futuristic ones and investigating their ins and outs. And we'll also stop by the frameworks/wrappers that give easy access to them. To make things more interesting, we'll then board a submarine and dive into the crazy world of mobile devices, it's special demands and see what options exist over there. Finally, we'll have a look at performance and security concerns. Don't forget your towel!"
by Paul Irish
HTML5 and friends have been getting implemented in browsers at an impressively quick pace. But that leaves us as web developers wondering, "Great, but how am I supposed to build cross-browser applications with these features when I still have to support IE".
We'll take a look at what the landscape of implementable features are, detailing best practices of implementation and fallback solutions where appropriate. For example, how do you pair WebSockets with a standard comet stack and what do you have to watch out for.
We'll also review your available feature set if you're only targeting webkit mobile, or if you've already given IE6 the boot.
The data will be up-to-the-day accurate, covering all major browsers and filled with best practices from topic experts.
JavaScript was made for the web of yesterday, but the web has changed significantly in the past decade and therefore the requirements of a JavaScript for tomorrow. I'm a JavaScript hacker and its in the nature of hackers that having a better language tomorrow isn't fast enough for us.
Let me show you how to deal with the flexibility of today's JavaScript implementations to make things, which you may haven't seen before running in a Browser but will definitely become needed parts for the future of web development. This will be about shifting bits and bytes, misusing native file formats, overloading operators, uncommon using of getters/setters and some more evil JavaScript hackery.
by ryah
After last year's standing ovations performance, he is back. His last talk's video was viewed 12 thousand times. We're excited what will happen this year.
Node.js presents the same non-blocking, single execution stack programming model of client-side Javascript. However, Node is arguably aiming at more complex problems than browsers have faced: massively concurrent servers that may shell out to many different processes, that might need to execute many sequential file system operations. Can this programming model support such systems or does the code degenerate into a spaghetti of callbacks? This talk will present an emerging set of patterns being used in this new domain.
by Jed Schmidt
(fab) is an HTTP framework for that eschews the conventionally muddled web stack of middleware, routers, and handlers for a cleaner, more functional approach. By stressing convention over code, (fab) enables any web app to be recursively composed of other web apps, using a chained pattern that enables the full power of javascript but the simple readability of a site map. In this presentation, Jed will show you how to use (fab) to get up and running with your own reusable apps on both the client and server.
Mobile applications are a huge trend at the moment. But there is one major drawback: You need to develop them from scratch for every-single-platform. That hurts. Web technology seems like a natural choice to develop cross platform and fundamentally increases efficiency during development. This talk is about the richness of Unify applications, the focus of the project and our future plans.
Sever Side JavaScript (especially Node.js) is a hot topic right now, but we are still figuring out what good SSJS code looks like. It isn't enough that we can write JavaScript on the server, or even that it is well written JavaScript. It's essential that we write maintainable JavaScript for the server environment. This talk will examine different coding styles for event driven, non-blocking SSJS and which styles are most successful.
We'll take a look at strategies that other languages and frameworks with similar attributes such as Clojure, Erlang, Python/Twisted and Ruby/Event Machine use. From these languages we'll take a look what has worked well and what hasn't. We'll explore how these models can apply to JavaScript to create patterns that can be used to make code more maintainable.
Since JavaScript is already an event driven language there is already a lot of support for events, and developers are used to developing code with the event driven browser. However, how we use these features on the server with it's additional freedom can either help or harm the long term use of our code. One of the obvious code defects created by poor use of the evented model in JavaScript is Pyramids. Pyramids are huge chains of nested, dependant anonymous callbacks piled one on top of another until you end up with a pyramid of code, left to right. Pyramids are one of the first, obvious, mistakes people tend to make when beginning SSJS. We'll also discuss some of the less obvious ones and explore ways of avoiding them.
The realtime web is right around the corner, and JavaScript is here to help, both on the server and the client side. The WebSocket protocol promises to solve the problem of bidirectional communication once and for all, but can we leverage it today?
Socket.IO provides an API that enables WebSocket for every browser (IE5.5, IE6, IE7, IE8, Safari, Chrome, Firefox 3-4, Opera 10) and multiple mobile devices (including the iPhone and the iPad).
I'll talk about how you can get started using Socket.IO today, how people are using it in production environments, and how to create realtime web applications with just a few lines of code.
by Kevin Dangoor, Joe Walker and Patrick Walton
We're really proud to have a large number of Bespin devs at JSConf.eu. Three of them will give us a heads up on their work:
The Mozilla Labs Bespin project has created a customizable code editor that's built on the HTML5 capabilities present in the rapidly expanding list of "modern browsers". The project has evolved to support the notion of "coding in any cloud", as it's easy to build an editor to include in your own web applications. You can use Bespin in bookmarklet form to improve the editing experience at any site you visit. Finally, the JavaScript-based desktop and server packages allow you to edit code on your local machine or in your own, personal or small group cloud.
In this talk, the Mozilla developer tools team will run through what Bespin can do for you, how you can customize it and where the project is headed.