2011-09

Internet Explorer 10 Preview – a first look by Sencha

[2011-09-27] dev, internet explorer, javascript, windows 8
Sencha has recently published a first look at the Internet Explorer 10 preview [via Sacha Storz]. This post summarizes the main points.

ECMAScript.next: new details, reacting to Dart complaints

[2011-09-25] esnext, dev, javascript
On September 18, 2011, Brendan Eich held a talk at CapitolJS. In it, he covered more details on what will be in ECMAScript.next; how to react to the complaints voiced by Dart’s creators; and RiverTrail, a JavaScript extensions for parallel programming. This post summarizes the highlights of the first two topics.

Template strings: embedded DSLs in ECMAScript 6

[2011-09-20] dsl, esnext, dev, template literals, javascript

In ECMAScript 6, template strings [^1] are a syntactic construct that facilitates the implementation of embedded domain-specific languages (DSLs) in JavaScript. They were originally called “quasi-literals”. This blog post explains how they work.

Warning: This blog post is slightly outdated. The terminology has changed:

  • Template literal (was: template string): `abc`
  • Tagged template (was: tagged template string): func`abc`
  • Tag function (was: template handler): func from previous item

A first look at what might be in ECMAScript 7 and 8

[2011-09-14] esnext, dev, javascript
Brendan Eich mentions features that are candidates for ECMAScript 6, 7 and 8:

Google’s Alex Russell on JavaScript versus Dart

[2011-09-13] esnext, dev, javascript, google, dart
Its good to see that not everyone at Google thinks that JavaScript “not viable in the long term” [1]. Quoting the highlights of a blog post by Alex Russell [via @MunichJS]:

Google Dart to “ultimately ... replace JavaScript”

[2011-09-11] esnext, dev, javascript, google, dart
Updates:
  • New post 2011-10-10:Google Dart – overview and comments” (with all the information from the official Dart launch at the GOTO conference)
  • New post 2011-09-13:Google’s Alex Russell on JavaScript versus Dart
  • 2011-09-14: Rewrote of the section “What does it all mean?” and added new material on universal virtual machines. Added Crockford quote under “Other voices on Dart”. Added a conclusion.
  • 2011-09-13: More on Eich’s comments at Hacker News.
The following keynote will be held at the GOTO Aarhus 2011 Conference on Monday, Oct. 10, 2011:
Dart, a new programming language for structured web programming
This post explains what Dart is all about and how it relates to JavaScript.

JSHint – a JavaScript code quality checker

[2011-09-04] dev, javascript, jslang, jstools
JSHint is a tool that analyzes JavaScript source code to warn about quality problems. This post describes how to use it.

Currying versus partial application (with JavaScript code)

[2011-09-01] dev, javascript, advancedjs, jslang
Currying and partial application are two ways of transforming a function into another function with a generally smaller arity. While they are often confused with each other, they work differently. This post explains the details.

2011-08

How to write and unit-test universal JavaScript modules (browser, Node.js)

[2011-08-28] dev, javascript, jsmodules, jslang
Update 2011-11-19. This post is now mostly superseded by “Bridging the module gap between Node.js and browsers”.

Node.js has a very nice module system that is easy to understand, yet distinguishes between the exports of a module and things that should be private to it. This post explains how the code of a Node.js module can be modified so that it works on both Node.js and web browsers. It also explains how to unit-test such code.

Spreading arrays into arguments in JavaScript

[2011-08-24] dev, javascript, jslang
Update 2012-02-01: Complete rewrite of the section on spreading constructor arguments.

Sometimes, one needs to spread the elements of an array, to use them as the arguments of a function call. JavaScript allows you to do that via Function.prototype.apply, but that does not work for constructor invocations. This post explains spreading and how to make it work in the presence of the new operator.