JavaScript Weekly
Issue #43 - September 9, 2011

Peter here, and welcome to issue 43 of JavaScript Weekly. My nascent gaggle of newsletters has sailed past 25,000 subscribers this week so thank you for your support.

Things are getting more serious here at Cooper Press HQ but the great weekly JavaScript links will continue to flow! However, if any of you are investors or have good leads, answers gladly received on a postcard to.. the reply address :-)

Headlines

Announcing The Node.js Knockout Winners
Node Knockout was a Node.js-based 48 hour development contest that took place recently. Judging is now over and the winners have been announced. First place went to an app that lets you watch user activity on your webapps in real time.

jQuery Mobile Beta 3 Released
The jQuery Mobile team has unveiled beta 3 of the as-yet-still-not-quite-1.0 version of jQuery Mobile. It now includes pushState for cleaner URLs with Ajax-based navigation schemes, a 'beforechangepage' event, and improved iOS 5 support.

Qt Is Likely To Use The V8 JavaScript Engine in Future

Articles

Chess@home: Building The Largest Chess AI Ever using JS
Chess@home was a winning entry in the recent Node.js Knockout contest and in this blog post, Sylvain Zimmer explains how it's aiming to be the biggest 'chess AI' ever by harnessing the processing power of visitors' browsers.

Why Does ++[[]][+[]]+[+[]] == 10 in JavaScript?
An interesting syntax question over on Stack Overflow but, importantly, an excellent highest scoring answer in response. Get ready for a brain bender.

Using jQuery's Data APIs
A most excellent and compact guide to using jQuery's Data APIs to work with HTML5 data attributes and other data associated with DOM elements on your pages. You get 5 'Rules of the Road' to apply for your own jQuery Data API work, too.

Using Node.js and a Phone to Control a Browser Game
An interesting explanation of a game built by Cykod where you control a Node and Canvas powered game using a modern smartphone (containing a accelerometer and gyroscope). The server and the accumulation of the 'tilt data' is explained well.

Creating a DOM Builder with JavaScript Proxies

Installing and Deploying node.js Apps on Amazon EC2
Ben Lindsey demonstrates how to install Node and deploy Node applications on an Amazon EC2 cloud server using Ubuntu. A tidy walkthrough.

How to Create a Fan-Gated Facebook Tab with Rails and JavaScript

CoffeeScript: JavaScript without the Fail
Despite the provocative title, this is an interesting HTML5-based presentation by Bodil Stokke that walks through JavaScript and CoffeeScript's potential and promise in relation to it with plenty of live examples. Well worth a walk through.

Code and Libraries

A Roundup of 90 Node.js Modules by Browserling
Peteris Krumins presents a mega round-up of 90 node.js modules open sourced by his company, Browserling. It goes from RPC systems, through to benchmarking tools, color generation, command line parsing, and Markov chain generation. Most come with a cute illustrated logo too.

fox.js: Creating Grid Layouts from ASCII-art in JavaScript
Grid layouts are often an important part of creating rich Internet apps, yet creating them is still quite difficult and verbose. The goal of fox.js is to see whether ASCII art provides a helpful way to design grid layouts.

Treesaver.js: JS Framework for Magazine-Style Layouts
Treesaver is an open-source JavaScript framework for creating magazine-style page layouts using standards-compliant HTML and CSS. It works well across different sized devices (mobile and desktop).

FitVids.JS: Simple jQuery plugin for Fluid Width Video Embeds
FitVids is a small-but-sweet jQuery plugin for 'responsive' video embedding on your pages. If you resize the page, FitVids.JS will resize the videos on the fly too (while maintaining the right aspect ratio).

The Processing CoffeeScript Editor
An interesting experimental browser-based editor for Processing.js-powered CoffeeScript. If you want to play with writing Processing-based visualizations using CoffeeScript, this could be a great place to start.

node-bunker: Calculate Code Coverage in Native JavaScript

Implementing The Y Combinator in JavaScript
Heavy on the theory, this article talks about the "Y combinator" and its implementation in JavaScript. The Y combinator is a function that can be used to express a recursive function as a non-recursive function that can compute fixed points.

Common Node: CommonJS on Node using Fibers
Common Node implements a number of CommonJS proposals on top of Node.js using node-fibers, letting you write concise CRUD web apps without callbacks while retaining the performance benefits of using an event loop.

Elastical: A Node.js Client Library for the ElasticSearch (Lucene) REST API

Entourage.js: Automatic Download Tracking for Asynchronous Google Analytics
Tian Valdemar Davis shows off Entourage.js, his JavaScript extension to Google Analytics that adds unintrusive download tracking support. Along the way, he explains how he put it together.

Roto: Touch-Capable Image Carousel for jQuery
Roto is a jQuery plugin that implements a flexible 'touch-capable' image spinner/carousel. It can work horizontally or vertically and even include multiple images in a 2D layout.

Js_of_ocaml: OCaml Bytecode to JavaScript Compiler

20 Useful jQuery Tooltip Plugins (Yep, A List Post)

Last but not least..

Live Editable Simulation of JavaScript-Powered Swarms Fighting Each Other
An interesting live-editable simulation (hosted on JSFiddle) of swarms of objects 'fighting' each other across an HTML5 canvas. These sorts of experiments make for great learning tools.