The JavaScript blog.


events conferences backbone.js xmpp

Fluent, Backbone.xmpp, leFunc, Frisby

Posted on .

Fluent Conference


Fluent will be held on May 29-31, in San Francisco. It features several tracks -- one covers language issues and includes a session with Brendan Eich. The browser track has talks from employees of social networking favourites Twitter, Facebook, and Twitter, and even Microsoft! There's also a track for Node sessions, which has speakers from Joyent, Twitter, Groupon, and lots more interesting companies.

"Early price" tickets are on sale until May 15th, and there are several tiers available:

  • All-Access Pass: $1695 (standard price: $1895)
  • Conference Plus Tuesday Workshops: $1295 (standard price: $1495)
  • Conference: $995 (standard price: $1195)
  • Tuesday Workshops: $695 (standard price: $895)

There are discounts for previous O'Reilly conference attendees, company teams, academic staff, non-profits, and students.


Backbone XMPP Pub-Sub Storage (License: MIT) by Yiorgis Gozadinos is an alternative storage layer for Backbone.js that uses XMPP publish-subscribe.

To use it, set a collection's sync property to Backbone.xmppSync, and assign an instance of PubSubStorage to the collection's node property:

var MyCollection = Backbone.Collection.extend({  
    sync: Backbone.xmppSync
  , model: MyModel

var mycollection = new MyCollection();  
mycollection.node = new PubSubStorage('mymodels', connection);  

The README has links to full documentation in the form of annotated source.


leFunc (License: MIT, npm: leFunc) by John Fawcett is a library that uses type checking to support function overloading in pure JavaScript:

var getItems = leFunc({  
  'string'; function(id) {
    // Do something

  'string,object': function(id, options) {
    // Do something else

  'string,object,function': function(id, options, callback) {
    // Do something different

getItems('123abc'); // Calls the first function  
getItems('123abc', { awesome: true }); // Calls the second function  
getItems('123abc', { awesome: true }, function(){}); // Calls the third function  

At the moment it'll work with any function signatures that are relatively easy to type check. That means primitive values and objects will work as expected.


If you're testing a lot of REST-based APIs, then Frisby (GitHub: vlucas / frisby, License: BSD, npm: frisby) by Vance Lucas might be what you're looking for. It's a REST API testing framework built using Jasmine.

It has a nice and friendly chainable API:

var frisby = require('frisby');

frisby.create('Get Brightbit Twitter feed')  
  .expectHeaderContains('content-type', 'application/json')
  .expectJSON('0', {
    place: function(val) { expect(val).toMatchOrBeNull("Oklahoma City, OK"); }, // Custom matcher callback
    user: {
      verified: false,
      location: "Oklahoma City, OK",
      url: "http://brightb.it"

The project itself is also fully tested, and comes with API documentation.