Rich Web Experience 2011 schedule

Tuesday 29th November 2011

  • The Reality of Third-Party JavaScript

    by Mark Meeker

    It sounds too good to be true and probably for good reason. You add a single line of code to each of your pages and it will magically do anything including serve ads, providing user and marketing analytics, displaying a widget, or even go so far as handling some major site functionality. But what impact does this "simple" script include have on your site's performance, security or user experience?

    This session will look at the benefit and the risks with including third-party JavaScript, provide a checklist to identify and address such risks, and look at what the future holds in this area.

    At 10:45am to 12:15pm, Tuesday 29th November

Wednesday 30th November 2011

  • Crackin' the Browser Open: HTML5, APIs, and the Evolution of Web Applications

    In this half-day session, Molly will provide an overview of where HTML5 is within the W3C process, what it's originators at the WHAT-WG are thinking about, and then jump on in to the really interesting topics of the day. Continuing deeper, we'll look at HTML5 media elements and APIs including video, audio and canvas; we'll examine related technologies such as Scalable Vector Graphics (SVG) and its role within contemporary site and application design; and finally wrap up with a variety of related work in geolocation and device-orientated standards such as is emerging via other standards bodies.

    Takeaways include:

    - A better understanding of the origins, goals and current thinking in HTML5

    - Real-world techniques to implement HTML5 and related tech into current workflow

    - A look at how browsers are changing the way we work, for better or worse

    - Guidance as to how to manage open, emerging technologies based on individual and group skill sets

    - A solid foundation for determining next steps regarding emerging tech and your current development practices

    At 8:30am to 12:00pm, Wednesday 30th November

  • Economic Games in Software Projects

    by Matthew J McCullough

    The full title of this talk reveals its grand aims: Game Theory and Software Development: Explaining Brinkmanship, Irrationality and Other Selfish Sins.

    Once in a while, a topic, seemingly orthogonal to software development, presents a great opportunity to showcase how engineering can benefit from knowledge of seemingly more social disciplines. In this talk, the fundamental principles of economics Game Theory are compared to often inexplicable behaviours and decisions we frequently observe in programming projects.

    Then, with a good Game Theory vocabulary under your belt, several standard games are studied in a manner that will allow you to better manipulate the inputs. These games are present in web framework choices, project planning and estimation, and even team decisions on which bug to solve first. With a good understanding of Game Theory, you'll be able to understand and influence what you previously labeled 'irrational behavior'. It turns out to be far from irrational when examined in the context of self-preservation. Once these behaviors are understood, you will be able to ethically influence the outcomes to your personal and corporate advantage.

    At 8:30am to 10:00am, Wednesday 30th November

  • Front-End Craftsmanship

    by Mark Meeker

    At 8:30am to 10:00am, Wednesday 30th November

  • Intro to the next generation of JavaScript frameworks

    by Peter Bell

    As our web applications become more interactive, frameworks like jQuery or dojo are 'necessary but not sufficient'.

    In this session we'll do a whirlwind tour of the next generation of JavaScript frameworks - from backbone, sammy, and batman to Sencha touch and SproutCore. We'll look at the strengths and weaknesses of each and how you would choose between them for various desktop and mobile web applications.

    At 8:30am to 10:00am, Wednesday 30th November

  • Mastering JavaScript

    by Venkat Subramaniam

    JavaScript is one of those very powerful languages that is often misunderstood and underutilized. It's quite popular, yet there's so much more we can do with it.

    In this presentation we'll deep dive into the capabilities and strengths of this prominent language of the web.

    At 8:30am to 10:00am, Wednesday 30th November

  • Seven Steps to Learning Grails

    by Tim Berglund

    Grails is emerging as a standard JVM web framework in environments ranging from startups to the enterprise. It's a full-stack solution build on rock-solid components, fully relying on convention over configuration, and using the best application language the JVM has yet seen: Groovy. This is the place to be for web apps on the JVM.

    In this introductory talk, we'll get a whirlwind introduction to Grails, visiting seven things you need to know about the framework to get started.

    1. Creating an app
    2. Development using the Tomcat server
    3. Interacting with the database
    4. Building your UI
    5. Processing web requests
    6. Tapping the huge plugin community
    7. Deploying to production

    At 8:30am to 10:00am, Wednesday 30th November

  • WebSockets Overview

    by Johnny Wey

    Ever wanted to send a realtime "push" message from a server to a client running in a browser? Send messages from one client to another? Write realtime games and other demanding applications using JavaScript?

    One of the most exciting new additions to the suite of technology collectively known as "HTML 5" is an official WebSocket standard. This finally allows full duplex bi-directional communication between a client and server of TCP.

    However, the technology is still new and rapidly changing. In this talk, Johnny will explain what a WebSocket is, how it works, how to implement it on browsers that don't natively support it, and how it relates to other technologies and platforms such as HTTP long polling, Comet, Flash Sockets, mobile and JSONP. He'll also discuss the different types of server implementations, scaling strategies, and how it can be integrated into an existing applications.

    At 8:30am to 10:00am, Wednesday 30th November

  • Workshop: 1/2 Day Workshop: Hands on Cloud Storage

    by Adrian Cole

    At 8:30am to 12:00pm, Wednesday 30th November

  • Workshop: Continuous Delivery Part 1: Deployment Pipelines

    by Neal Ford

    At 8:30am to 12:00pm, Wednesday 30th November

  • Workshop: Enter the Gradle

    by Has Dockter

    At 8:30am to 12:00pm, Wednesday 30th November

  • Automated testing tools and techniques for JavaScript

    by Venkat Subramaniam

    Programmers often complain that it is hard to automate unit and acceptance tests for JavaScript. Testability is a design issue with some discipline and careful design we can realize good automated tests.

    In this presentation we'll learn how to automate the testing of JavaScript using both TDD and BDD tools.

    At 10:30am to 12:00pm, Wednesday 30th November

  • Busy Developers Guide to CouchDB

    by Ted Neward

    With the rise of the NoSQL movement, a whole new crop of different ways to store data suddenly became available to the Java developer. Unfortunately what didn't come with them was the owner's manual. CouchDB, for example, was the first of the NoSQL databases to be named as such, and offers features not found in the traditional RDBMS: A distributed, robust, incremental replication document-orientated database server with bi-directional conflict detection and management, accessible via a RESTful JSON API, stored ad-hoc and schema-free with a flat address space that is both query-able and index-able, featuring a table oriented reporting engine that uses JavaScript as a query language. (With a list of buzzwords like that, what's not to love?)

    In this session, we'll look at CouchDB, how to set it up, store data to it, retrieve data from it, and in general figure out where it fits within your next project.

    At 10:30am to 12:00pm, Wednesday 30th November

  • Dojo 2.0: Modular, Mobile, and Reinventing Web App Development

    by Dylan Schiemann

    The Dojo Toolkit is one of the original Ajax toolkits, and has reinvented itself again through a series of improvement in modularity, performance, API improvements, adjustments for HTML5 and mobile platforms, and much more to provide a stellar platform for building web apps.

    Learn how Dojo's adoption of CommonJS AMD makes it a perfect toolkit for including source code from other micro-toolkits, to create the most extremely optimized JavaScript toolkit for your application, big or tiny. Learn about the wide variety of new features and approaches that are available no in Dojo, as well as the forthcoming Dojo 2.0 release.

    At 10:30am to 12:00pm, Wednesday 30th November

  • Going Global

    by Mark Meeker

    We live in a global economy. One of the most logical ways for a site to expand is to market their services to users in other countries. But moving into new countries and markets means supporting multiple languages and multiple currencies, with each offering their own unique set of challenges. Localizing (or localising) isn't as simple as swapping translated text. From managing content of different lengths to displaying that text right-to-left, making your site work around the globe offers unique challenges.

    This session will look at the impact of internationalization on the client-side and what it takes to make your user experience a global one.

    At 10:30am to 12:00pm, Wednesday 30th November

  • Grails Workshop (bring a laptop)

    by Tim Berglund

    If you've gotten your feet wet with Grails. You've talked to friends, you've done some reading, you've seen a presentation that sold you on the awesomness of the framework. What's next? Why, some hacking, of course!

    Come to this 90-minute workshop ready to create a persistent domain model, build a scaffolded UI, modify page layouts, and maybe even build some Ajax into your new web app. See how quickly you can get started building robust, scalable web apps for the JVM.

    Bring a laptop of be prepared to pair with a friend. Please have a current release of Grails (http://grails.org/Download) downloaded and unzipped.

    At 10:30am to 12:00pm, Wednesday 30th November

  • node.js - why you should *really* care

    by Peter Bell

    JavaScript on the server. OK, cool. So what? Node.js isn't about JavaScript any more than the web is about http headers. With node.js you can create asynchronous, non-blocking web servers that can easily handle thousands or even tens of thousands of connections - with a single thread.

    If you're creating the next generation of interactive web and mobile applications which need to connect back to your server on a regular basis, node.js is a technology you can't afford to ignore.

    At 10:30am to 12:00pm, Wednesday 30th November

  • Building Mobile and Enterprise Apps with HTML5 and Google Web Toolkit

    by David Chandler

    The browser has become an increasingly important platform for enterprise development, and GWT has long appealed to developers looking to migrate desktop apps to the Web. There are still limitations of Web apps vs. desktop apps, but HTML 5 has addressed many of these.

    This session will primarily cover HTML5 features of interest to mobile and enterprise developers, including the FileSystem API and desktop-like file handling, AppCache, local storage, Geolocation, and determining device form factor. We'll also take a look at Maven integration and new features in the latest Google Plugin for Eclipse.

    At 1:30pm to 3:00pm, Wednesday 30th November

  • Continuous Delivery Part 2: Agile Infrastructure

    by Neal Ford

    Getting software released to users is often a painful, risky, and time-consuming process. This workshop sets out the principles and technical practices that enable rapid, incremental delivery of high quality, valuable new functionality to users. Through automation of the build, deployment, and testing process, and improved collaboration between developers, testers and operations, delivery teams can get changes released in a matter of hours - sometimes even minutes - no matter what the size of a project or the complexity of its code base.

    In the second half of the workshop, we introduce agile infrastructure, including the use of Puppet to automate the management of testing and production environments. We'll discuss automating data management, including migrations. Development practices that enable incremental development and delivery will be covered at length, including a discussion of why branding is inimical to continuous delivery, and how practices such as branch by abstraction and componentization provide superior alternatives that enable large and distributed teams to delivery incrementally.

    At 1:30pm to 4:45pm, Wednesday 30th November

  • Design for the Developer

    by Terrence Ryan

    "That's really useful, but it looks like it was designed by a developer."

    Ever heard that? Want to fix it? Think you don't have the design ability?

    Here's a dirty little secret, design is a skill, it can be learned. This session will take you through the basics of design theory for applications. By the end you should be on your way to building not just useful apps that people have to use, but awesome apps that people love to use.

    Topics include:

    - Design Dos and Don'ts

    - Planning a Design

    - Design Fundamentals

    - Layout

    - Typography

    At 1:30pm to 3:00pm, Wednesday 30th November

    Coverage slide deck

  • Enterprise Gradle

    by Has Dockter

    In this talk we will cover many Gradle power features that are particularly helpful for the real heavy lifting often needed in enterprise builds.

    We will start this session with the concept and advantages of auto-wiring the Task Dependency Graph based on the inputs and outputs. We will then talk in details about the new dependency management features such as the new cache, customizable dynamic revision handling and customizable version conflict resolution. From there we'll explore the new extension mechanism for Gradle DSL and introduce the Gradle daemon. We will also discuss our take on best practices for dealing with module dependencies in the enterprise and how this can be mapped with Gradle. Finally we will show how you can programatically customize the way the Gradle build model is mapped to the STS Gradle Eclipse plugin.

    At 1:30pm to 3:00pm, Wednesday 30th November

  • Intelligently Organizing Large JavaScript Projects

    by Johnny Wey

    Using the same techniques we've learned over the last decade of Java and other OO languages, find out how to think about and organize a large JavaScript code base intelligently.

    It often only took one or two lines of JavaScript to implement that site counter we were all so proud to show off a decade ago. Now, creating advanced web applications requires literally thousands of lines of complex JavaScript and, with the popularity of Node.js, the server side is equally daunting.

    We know how to handle big projects in Java, Ruby, Python, and the like. We know how to organize our code and use frameworks to help the process. But how do we apply that knowledge to JavaScript?

    In this talk, Johnny will explain and demonstrate tools, practices, frameworks, and patterns that work to make large JavaScript applications understandable, maintainable and fun!

    At 1:30pm to 3:00pm, Wednesday 30th November

  • jQuery

    by Nate Schutta

    Sure, Ajax might not be the hardest thing you'll have to do on your current project, but that doesn't mean we can't use a little help here and there. While there are a plethora of excellent choices in the Ajax library space, jQuery if fast becoming one of the most popular. In this talk, we'll see why. In addition to it's outstanding support for CSS selectors, dirt simple DOM manipulation, event handling and animations, jQuery also supports a rich ecosystem of plugins that provide an abundance of top notch widgets. Using various examples, this talk will help you understand what jQuery can do so you can see if it's right for your next project.

    Once we've established a solid understanding of just what jQuery can do out of the box, we'll delve deeper into the plugin space. jQuery is designed to be extended and while odd are there's a plugin that meets your needs, sometimes only a homegrown solution fits. Starting with a couple of very simple examples, we'll work our way up to more full fledged widgets.

    At 1:30pm to 4:45pm, Wednesday 30th November

  • Ratpack: the Un-Framework for Groovy Web Apps

    by Tim Berglund

    Ratpack is a hyper-lightweight, Groovy-based web framework for developing and deploying simple apps in a hurry. Like its high-achieving cousin Gaelyk, it provides Groovy developers with a way to create web apps without days of iteration zero setup time.

    In this talk, we'll look over Ratpack's very simple structure and live-code a small, practical example application. We'll look at how to evolve simple controller logic, how to manage templates, how to persist data, and how to deploy Ratpack applications to the web. The Java world needs ways to build small applications in a hurry, and Ratpack is the latest way to do it!

    At 1:30pm to 3:00pm, Wednesday 30th November

  • Sonar Half-Day Workshop

    by Matthew J McCullough

    You've heard about Sonar and are intrigued by its features. It can analyze code in both a static and dymanic manner making aggregated sense of the complex figures gathered by the underlying tools such as CPD, FindBugs, Cobertura, Checkstyle and many more. You believe your team can benefit from using it to gether metrics and to facilitate code reviews. But how do you get started? The answer is easy. Through a hands on workshop that has you installing, running and reviewing code.

    This workshop is purely hands on and will give attendees first-hand experience of the setup, configuration, and use of Sonar to analyze Java and Groovy code. Attendees will install Maven, Gradle and then Sonar and proceed to analyze an open source project, all during the course of this three hour class.

    Prerequisite: Motivation to analyze source code for team-wide improvement of coding techniques and architecture.

    At 1:30pm to 4:45pm, Wednesday 30th November

  • Testing with Spock

    by Venkat Subramaniam

    Spock is an awesome tool that exploits Groovy AST transformation to provide elegant, fluent syntax for writing automated tests.

    In this presentation we will learn how to use Spock to test both Java and Groovy code. We will take an example orientated approach to learning the strengths of this powerful testing tool.

    At 1:30pm to 3:00pm, Wednesday 30th November

  • WebGL

    by Brian Sletten

    HTML 5 has introduced us to the Canvas API, 2D graphics and the pleasures of plugin-free video and audio playback. One of the next hurdles we will face is native support for 3D graphics and simulations, visualizations and games.

    WebGL is an early look at supporting OpenGL ES 2.0 in the canvas in most modern browsers through JavaScript APIs.

    This will be an example-driven workshop that will cover the basics of 3D graphics, OpenGL and where it is going on the Web.

    At 1:30pm to 3:00pm, Wednesday 30th November

  • Cooking Up Infrastructure with Chef

    by Matt Stine

    Chef is a community-developed platform for automated provisioning, configuration and integration of software infrastructure. It currently boasts 190+ individuals and 40+ companies (including parent company OpsCode) as contributors, and companies like EngineYard, ElectronicArts, GoTime and Rhapsody as adopters.

    Chef achieves fully automated infrastructure via three primary disciplines:

    - Automated provisioning of bare metal, virtualized and cloud environments.

    - Configuration of servers via roles ("webserver", "appserver", "loadbalancer") and receipies, which are dclaratvie descriptions of resource (e.g. Apache, MySQL, Hadoop) configurations written in a Ruby DSL

    - Systems integration via dynamic lookup and discovery

    We'll dive deeply into Chef's architecture and features, including its idempotency, its thick client/thin server philosophy, its intentional lack of dependency management (preferring and order-based configuration), and its deep integration with other tools. We'll then leverage Chef to set up infrastructure of a typical JVM-based web development project with various IS, application server and datastore configurations. You'll leave a ready to get cooking with Chef on your next software delivery effort.

    At 3:15pm to 4:45pm, Wednesday 30th November

  • JavaScript + Jenkins = Winning

    by Eric Wendelin

    You already know that Jenkins is a great CI tool for managing your JVM or .NET projects, so let's take it a step further and extend these benefits to your JavaScript.

    As applications become more JavaScript-heavy, it is important to automate static analysis, testing and reporting of your JS.

    In this talk, we will review how to integrate JavaScript analysis and testing tools with a build, talk about how to setup Jenkins to run your build and then about the plugins and scripts that enable useful reporting on the health of your JavaScript code. Having some familiarity with testing your JavaScript will help, but it isn't required.

    At 3:15pm to 4:45pm, Wednesday 30th November

  • JavaScript Puzzlers

    by Gabriel Dayley

    We will be going through a handful of strange and seemingly anomalous JavaScript programming puzzles in the style of Joshua Bloch's entertaining and enlightening game show.

    The goal of the presentation is to highlight some of the less understood pieces of JavaScript in an engaging format. Understanding some of the subtle nuances of the language will allow developers to deliver cleaner, more bug-free code. Come to see how well you do at answering these puzzles.

    At 3:15pm to 4:45pm, Wednesday 30th November