Google

The following is a selection of my best work. It includes essays available elsewhere on this site, video recordings of recent presentations and links to more information on projects that I'm involved in.

Writing

Math Envy and CoffeeScript's Foibles: Part1, Part 2 - CoffeeScript is a popular JavaScript replacement well know for it's syntactic flexibility, but the language's design has produced confusing interactions between terms. These posts formalize a subset of the language to reproduce one such issue, formalize semantic ambiguity using operational semantics, and then finish with a proposal for a tool to prevent similar issues in the future.

Faster JavaScript with Category Theory - This post covers my initial work on formalizing the relationship between vanilla DOM manipulation functions and jQuery methods using Category Theory. It forms the basis for one talk and two essays.

Splitting jQuery in Two, A Proposal - The relationship between the categories Html and Jqry highlighted a logical division of responsibility for jQuery methods. The result is better performance and a more modular architecture for the library.

A Natural Transformation in JavaScript - A natural transformation was a logical progression after constructing two categories and a functor in the previous writing on JavaScript and Category Theory.

Open Source

Vagrant - Vagrant is a tool to make virtualizing development environments entirely painless. This has many benefits like deployment environment parity, fast developer on-boarding, and easy deployment testing. My involvement has been limited recently but I am the co-creator of this project.

jQuery Mobile - jQuery Mobile is a UI kit and collection of browser fixes that make developing cross browser mobile web applications easy. I am currently employed by Adobe Systems as a development lead on this project.

Wield - Wield is the realization of the proposal made in Splitting jQuery in Two, A Proposal. It is a collection of very simple DOM manipulation methods that can be used at the core of jQuery's DOM manipulation methods. The primary project goals are modularity, compact size, and minimal JavaScript overhead for DOM manipulation.

Talks

Math Envy and CoffeeScript's Foibles - CoffeeScript is an extremely dynamic and flexible language that compiles to JavaScript. This talk takes one confusing term interaction and shows how it can be used to generalize about language construction.

Faster JavaScript with Category Theory - After refining the results in three essays I created a thirty minute presentation around my thoughts on Category Theory and JavaScript. I gave the talk most recently at JQCONUK in Oxford to approximately 600 developers.

Progressive Enhancement on the Mobile Web - The mobile web is populated by an incredibly diverse set of browsers with wide ranging capabilities. In this light hearted talk I discuss some of the more difficult and subtle issues confronting developers working on the mobile web and present some solutions used in jQuery Mobile.

Middleware as General Purpose Abstraction - When Mitchell Hashimoto and I created Vagrant we eventually used a modified version of the middleware described in PEP333 to compose actions over virtual machines. For more information on Vagrant itself see the section on Open Source.