NationJS 2013

Training Day Schedule

09:00-05:30

Advanced JavaScript by Kyle Simpson

07:00-08:50

NationJS Lightning Talks/Meet and Greet

at WaPo Labs, partnering with DC jQuery and Node DC

09:00

Welcome/Post Meetup Party at the Post Pub

sponsored by Leidos

Conference Schedule

08:30-09:25

Registration and Continental Breakfast Sponsored by Endgame

09:25-09:30

Welcome and Introduction

09:30-10:20

New Rules For JavaScript

by Kyle Simpson

10:20-10:50

Strong Type System Withdrawal? Methadone for JavaScript Confidence

by John K. Paul

10:50-11:15

Coffee Break Sponsored by Intridea

11:15-11:45

Prototyping à la Node with Express

by Pam Selle

Brackets: An Open Source Code Editor For The Web

by Adam Lehman

11:45-12:15

Fantasy Land Witchery

by Brian McKenna

Getting Blazed With Ember.JS

by David Casagrande

12:15-12:25

Break

12:25-12:55

Getting Started with 3D Programming in Three.js

by Chris Strom

UX Eye for the Javascript Guy/Gal

by John Athayde

12:55-02:10

Lunch in Town

02:10-02:40

Interactive Data Visualization with Backbone and D3

by Michael Tierney

The GUI Turns Fifty

by Adam Solove

02:40-03:10

SpiderMonkey Parser API: A Standard For Structured JS Representations

by Michael Ficarra

SASS and Compass for Developers

by Andy Pliszka

03:10-03:20

Break

03:20-03:50

Angular Directives Made Easy: From Imperative to Declarative in Minutes

by Christian Lilley

Ligthning Talks

03:50-04:20

Express on Rails

by Kyle Hill

Mobile Web Patterns with Backbone.js

by Nick Gauthier

04:20-04:45

Snack Break Sponsored by Webs

04:45-05:15

Node.js + WebSockets + Wiimote = Fun

by Andrew Brampton

Angular.js + Jasmine, Testing the Night Away

by Chris Moultrie

05:15-05:45

JS Jouralism

by Ray Daly

jQuery Is Not The Answer

by Ed Kim

06:00

Beer Summit at McGinty's Public House

sponsored by Sequoia

New Rules For JavaScript by Kyle Simpson (Video)

Kyle Simpson I bet you've been writing JS for years and you think you're pretty good at it. I bet you think you know all about how functions create closured scope, and how `this` gets bound, and even how `.prototype` works. Or, rather, you probably don't care because your framework or library takes care of all that for you.

JavaScript is generally considered one of the most misunderstood (and maligned) languages of the modern programming era. And there's good reason for that, because most developers who write JS never actually deeply *know* how the language works. They blame all their WTFs on language bugs, instead of the shortcomings in understanding.

This talk is going to re-visit some of the 'tough parts' of the language by declaring 'New Rules' (Bill Maher style) for the language.

For instance: 'New rule: Stop using 'this' until you fully understand how it gets assigned.'

This talk is going to be hard-core on coding and expects a solid understanding of the language.

Kyle Simpson Kyle Simpson is a JavaScript Systems Architect from Austin, TX. He focuses on JavaScript, HTML5, web performance optimization, and 'middle-end' application architecture. If something can't be done in JavaScript or web stack technology, he's probably bored by it. Kyle runs several open-source projects, writes books, and speaks at meetups and tech conferences. He also helps drive the local startup/enterpreneurial community through events, coworking activities, etc.

Strong Type System Withdrawal? Methadone for JavaScript Confidence by John K. Paul (Video)

John Paul We’re all looking for confidence in our code. No matter how many “ninjas” are hired or how many times we read _Clean Code_, there’s always the itching feeling that we are doing something wrong. For some, the only way out of this feeling comes from a strong and static type system. In JavaScript code bases, the usual substitute for a strong type system is a thorough testing suite, but this goal is not turnkey. It takes time to build up enough testing to regain trust in your code, but I’d like to offer you many more methods to find confidence in your code and wean yourself and your team away from strong type systems.

The JavaScript community has produced many useful static analysis tools to add into any continuous integration process. From linting to beautification to syntax validation, I will be categorizing many techniques and tools that you can use to maintain the quality of your code. I’ll be discussing how to decide which tools are useful for your project as well as how to integrate them into your development workflow. Once you semi-secretly install your first precommit hook onto all of your team member’s machines, I promise that you’ll never go back to your old addictions.

John K. Paul John K. Paul is the lead technical architect of Condé Nast's platform engineering team and former lead front end software engineer at TheLadders.com. He is a contributor to numerous open source projects including learn.jquery.com.

He has spoken to various startups around NYC about front end development, and scalable engineering practices, in particular, unit testing JavaScript. Additionally, he has taught JavaScript and jQuery fundamentals to teams throughout the NYC area.

Mobile Web Patterns with Backbone.js by Nick Gauthier

Nick Gauthier Mobile web is a harsh environment with low processing power, low bandwidth, and high latency. In this talk we'll look at a handful of performance optimizations in Backbone.js with a focus on mobile applications. From transparently caching objects to avoiding unnecessary calls to render, we'll optimize our mobile app for usability.

Nick Gauthier is a web freelancer focusing on Ruby on Rails and JavaScript. His experience spans from SQL to Sass and he always tests, all the time. He wrote Recipes with Backbone with Chris Strom and Mobile Web Patterns with Backbone.js. Aside from freelancing Nick runs B’More Awesome, a Baltimore-based web training organization, and he also co-founded Exobrain, an online mind-mapping tool.

Prototyping à la Node with Express by Pam Selle (Video)

Pam Selle In this talk, Pam Selle (thewebivore.com) will demonstrate a simple method of rapid prototyping and idea validation. You’ll learn how to use Express.js for rapid prototyping, leverage user testing to validate designs and interactions, and get it all up and running on the web quickly and easily. And we’ll do it in JavaScript!

Pam Selle Pam Selle is a professional web developer and UI engineer in Philadelphia, PA where she works at Comcast on xfinity.com. Pam is a champion of web standards, an enthusiastic JavaScripter, and a defender of users. She has spoken at local user groups and regional and national conferences on HTML5, CSS, Sass, and JavaScript. She teaches web development and JavaScript in Philadelphia and blogs at thewebivore.com.

Fantasy Land Witchery by Brian McKenna (Video)

Brian McKenna Fantasy Land is a specification of interoperability for common algebraic structures. Common algebraic structures include functors, monoids and monads. What do these structures do? How do these structures allow us to not repeat ourselves?

This talk will show some magic that we get for free just by implementing a few methods. It'll demonstrate existing Fantasy Land libraries which allow us to treat everything as a value, including I/O, state, mutation and logging.

Brian McKenna Brian McKenna is a huge believer in functional programming. He works Roy, an altJS language for functional programming; bilby.js, a library which takes functional programming seriously; Brushtail, an AST rewriter for tail-call elimination; and Rephrase, a tool for rewriting an AST using inline comments.

UX Eye for the Javascript Guy/Gal by John Athayde (Video)

John Athayde JavaScript has a lot of power, especially for interactive interfaces. But often we see people just throw the kitchen sink in because they can without an eye to interaction design. We'll look at some examples of the right things to do drawn from John's work at LivingSocial as well as some other apps he has designed.

John Athayde is a designer and developer who spends a lot of time fighting bad UX coding practices. He is currently the Lead for UI/UX and Front-end Development–Internal Apps at LivingSocial. Prior to LivingSocial he was the lead designer at InfoEther and ran Hyphenated People with Amy Hoy. In his free time, he plays guitar and keyboards for DC's own Juniper Lane. He holds his Masters in Architecture from Catholic University of America.

Getting Blazed With Ember.JS by David Casagrande (Video)

David Casagrande There is nothing hotter than client-side MVC's right now and it can be difficult to decide which one is right for you. This session will focus exclusively on Ember.js from the perspective of a developer who worked on a Backbone.js application for over a year before migrating to Ember.js and never looked back. We'll cover how Ember.js works, we will talk about its internals and what makes it unique, and we will look at how easy it is to write an incredibly-clean, super-maintainable and most importantly, fun-to-write client-side application. I'll also share some real-world examples of how we use Ember.js at Quad Learning..

David Casagrande is responsible for creating the next generation interface at DC ed-tech startup Quad Learning. In his free time he enjoys tennis, reading and co-runs Ceremony Recordings.

JavaScript Journalism by Ray Daly (Video)

Ray Daly It is time that news stories told with JavaScript get recognized as a form of journalism. It took years for photo journalism to get the recognition it deserves, now it the time to recognize JS Journalism.

Most news organizations presented election news using JavaScript. News home pages often have more JS than text.

A bit of history. A bit of academia. A bit of current news. A few guesses about the future. But nothing about the future of newspapers.

Ray Daly released his first JavaScript program, HTMLjive (http://www.raydaly.com/#htmlJivePg), in January 1996. That summer he gave his first JS talk: "JavaScript Makes Your Site an Application" after co-authoring the book "Using JavaScript." RGBjive and GEMjive followed.

Getting Started with 3D Programming in Three.js by Chris Strom (Video)

Chris Strom You're gonna code in this talk and it's going to be *amazing*!

This is a variation of the course that we teach to kids 8 years old & up. It includes three different exercises designed to introduce new concepts while building on those previously learned, Basic shapes and animations,Building and manipulating a game player, WebGL for beautiful graphics.

Coding is all done with the same in-browser code editor used in the new book “3D Game Programming for Kids.” That way, everything is browser based, so virtually no setup work required, it uses localStorage so attentees following along keep their work, and it yields immediate feedback with the Three.js animations displaying directly in the browser.

So easy a kid could do it. Well some of it, at least :)

Chris Strom You could fill a book with what I don’t know. Which is rather the point. Author of “3D Game Programming for Kids,” “Dart for Hipsters,” and “The SPDY Book.” Co-author of “Recipes with Backbone(.js).”

SASS and Compass for Developers by Andy Pliszka (Video)

Andy Pliszka Sass is a CSS metalanguage that makes CSS development interesting and fun. Sass is a great vehicle for developers to get involved with CSS and design.

In this session, we will start with a short introduction to Sass syntax and semantics. We will explore variables, imports, and nesting. We will learn how to write reusable stylesheets using mixins and inheritance followed by a survey of Sass functions and control structures such as loops and conditions. Finally, we will explore Compass — a CSS authoring framework build on top of Sass. We will take a look at Compass’ directives for colors manipulation, gradients, sprites, and typographic rhythm.

In summary, SASS and Compass is a great framework for generating CSS.

Andy Pliszka is a Software Engineer at Pivotal Labs and the organizer of AlgorithmsNYC Meetup. He worked on variety of projects: financial exchange written in Erlang, multiple Ruby On Rails web applications, and computer vision processing in Python. He enjoys implementing computer algorithms in variety of computer language. His favorite languages are Smalltalk and Lisp.

You can find Andy on twitter @AntiTyping.

Interactive Data Visualization with Backbone and D3 by Michael Tierney (Video)

Michael Tierney Compelling data is everywhere and creating effective data visualizations, while challenging, is always rewarding. In this 30 minute session we'll walk through interactive charts built using D3 on top of Backbone. The session will cover concerns and solutions for displaying your visualizations responsively across devices, as well as strategies employed to create efficient, modular pieces that can bring any number of charts to life.

Michael Tierney Mike Tierney is the lead front-end developer at Intridea. He is a firm believer that every problem, no matter how dire the situation, has a path to success and is always chasing the rush of a great solution. Over the past 3 years as lead front-end dev, he's found himself working with complex applications supporting a diverse range of users and browsers. He is a strong advocate for good user experience and using the right tool for the job.

The GUI turns fifty by Adam Solove (Video)

Adam Solove This year is the fiftieth birthday of the graphical user interface. But the GUI isn't doing so well. It's put on weight, isn't as strong as it used to be, and sighs when it looks back at pictures of itself from the eighties.

But we in the web community have a surprise birthday party planned to get the GUI back in shape and feeling good. We'll celebrate the good times: programs like Sketchpad, VisiCalc, HyperCard, and Improv that brought the interface closer to its users. We'll look at the models behind these programs, then use existing JavaScript libraries to adopt them into our web applications.

Come to celebrate fifty happy years in the life of the user interface, and be ready to go home and make your web applications more powerful.

Adam Solove is a JavaScript developer on the Montage core team. He lives in Silver Spring with his wife and son.

SpiderMonkey Parser API: A Standard For Structured JS Representations by Michael Ficarra (Video)

Michael Ficarra The representation of JavaScript programs that Mozilla exposed with their SpiderMonkey reflection API isn't perfect; in fact, it has a good number of flaws. But a rich ecosystem of tools has formed around this particular structured representation of JavaScript programs, most notably the popular esprima parser. The reusability and composability of these tools has made this format the standard for all modern projects that transform, generate, or otherwise work with JavaScript programs. We will explore this burgeoning format, evaluate its design with the benefit of hindsight, and showcase some of the more useful and prominent projects that have adopted it. This will include code generators, scope analysers, browser bundlers, metacircular interpreters, and more!

Michael Ficarra is best known for his significant contributions to the CoffeeScript programming language, its original compiler, and his KickStarter-funded rewrite. He can be described as having a passion for defining transformations of all sorts, so he naturally enjoys working with compilers and functional programming languages. As one of Github's most active users, he is an influential member of the online OSS and ECMAScript communities. He is currently working at Groupon in Chicago, IL, USA on their application security team.

Angular Directives Made Easy: From Imperative to Declarative in Minutes by Christian Lilley (Video)

Christian Lilley The true power of Angular.JS isn't unleashed until you're writing your own custom directives, and letting Angular handle all your DOM manipulation. You'd never know it from the Angular documentation, but it's easy! Once you understand a few simple concepts, and have your template ready, you can whip up your own re-usable, declarative directives in minutes, and start dropping them into your HTML like a pro. We'll provide the tools and insights to get you there.

Christian Lilley Christian Lilley is a happy hacker at McKinsey & Co., one of the world's finest professional services firms. He specializes in building data-driven, browser-side user-interfaces for the web, featuring lots of data visualization. He also trains other developers there in making maximum use of client-side technology. Christian is Co-Organizer of Data Visualization NY, the world's largest offline dataviz community. He writes about the above - and variations thereon - at christianlilley.com.

jQuery Is Not The Answer by Ed Kim (Video)

Ed Kim jQuery is one of the most popular javascript libraries out there. It's also one of the most over-used. This talk will go over examples of when using jQuery is just wrong, and some alternatives you can use instead.

Ed Kim Ed is the VP of Engineering at Social Tables, an online event planning and CAD software for the hospitality industry. He is also the co-organizer of the NodeDC Meetup group.

Angular.js + Jasmine, Testing the Night Away by Chris Moultrie (Video)

Chris Moultrie Angular.js with Karma make writing unit and behavior tests quick and easy. This presentation takes a quick look at the Jasmine Testing framework and then dives into the some of the great features of ngMock in Angular.js. We'll talk about Dependency Injection, Spies, $httpBackend, and $timeout. You'll be up and running with tests in no time.

Chris Moultrie As a software developer, Chris creates custom user controls and invents new ways for users to interact with Endgame products. He loves implementing pixel-perfect interfaces to produce a unique and amazing user experience. Chris is a life-long Georgian who got his start writing POS software for movie theaters in Delphi. He's currently maintaining an open source project named Jasmine-Node on Github that allows command line execution of unit tests for node.js projects using the popular Jasmine framework. Outside of Endgame, you're likely to find Chris powerlifting, training for a Spartan Run, or leading the Endgame team in its next Tough Mudder.

Node.js + WebSockets + Wiimote = Fun by Andrew Brampton (Video)

Andrew Brampton JavaScript isn’t just for the web anymore. Andrew will show how javascript can interact with physical hardware. This talk will cover the basics of writing a custom Node.js addon that interfaces with a Nintendo Wii Remote. In particular, Andrew will discuss his experiences hacking Node.js and the challenges in developing a multithreaded Node.js addon.

The end result is that with less than 50 lines of javascript (both client and server side), Node.js and socket.io can read input from a wiimote and update the browser in realtime!

Andrew Brampton Andrew (@TheBramp) is a technical lead at Genesys Labs, a company that enables communication between our clients and their consumers. Specifically Andrew is responsible for maintaining numerous platforms related to (SMS/MMS) messaging, and mobile web.

Before Genesys, Andrew was a researcher at Lancaster University, teaching, and researching the area of distributed systems. In his free time Andrew can be found kernel hacking, contributing to open source, and playing around with new technologies. Check out his blog bramp.net or follow him at github.com/bramp

Express on Rails by Kyle Hill (Video)

Kyle Hill Have you built your first node application yet? Yeah, me too! Wasn't writing it fun and easy? Same here! Did your codebase quickly turn into an unrefactorable soupy mess too? Of course it did!

In this talk, we'll discuss the architectural and organizational strategies used by Ruby on Rails that help the scope and size of applications to scale easily. We'll then learn how we can easily employ those principles with express.js to build some serious node applications, without all the dogmatism and pain that usually comes with RoR.

Kyle Hill On weekdays Kyle does data visualization and JS development for JIBE. On weekends Kyle drinks hoppy beers and watches DC United lose.

Brackets: An Open Source Code Editor For The Web by Adam Lehman (Video)

Adam Lehman Brackets (http://github.com/adobe/brackets) is a new open source project started by Adobe to push tooling on the web forward. Based on the principle that the best developers to build tools for web developers are in fact web developers, Brackets is built in JavaScript, HTML and CSS. MIT-licensed and hosted on github, Brackets is a code editor that challenges the status quo with innovations like inline Quick Editing and live browser connectivity. This session will provide an overview of Brackets and demonstrate how to hack on the project so you can customize and extend it to meet your needs.

Adam Lehman Adam Lehman is the Lead Product Manager for Web Development at Adobe based out of Washington, DC. He is passionate about helping web developers through better tools, frameworks and services. Adam is one of the founders of Brackets, an open source code editor written in JavaScript. He is also helping to shape the future of a new breed of web development tools from Adobe, like Edge Inspect and PhoneGap Build. Adam has been developing web applications for over a decade and spoken at over 100 events. You can find Adam online at http://plus.ly/adrock. or follow him on twitter at http://www.twitter.com/adrocknaphobia.