Contracts.coffee, Game Prototyping, Persistence.js

2011-09-02 00:00:00 +0100 by Alex R. Young


Contracts.coffee (GitHub: disnet / contracts.coffee) by Tim Disney is a new dialect of CoffeeScript that adds contracts.

Contracts let you clearly express how your code behaves, and free you from writing tons of boilerplate, defensive code.

// id is a function that should always be called with a number and return a number
id :: (Num) -> Num
id = (x) -> x

When I first looked at this I thought I was looking at Haskell, and the
author points out the similarity:

It looks a lot like types (in fact the syntax looks a lot like Haskell) but unlike types, contracts are enforced at runtime in pure JavaScript.

The Contracts.coffee site
includes lots of details on how to get started using the dialect. I
don't usually write CoffeeScript, but this twist on the language is
definitely extremely interesting.

TJ Holowaychuk on Game Prototyping

In Game prototyping with JavaScript &
TJ talks about game prototyping with CSS3, HTML5, and
move.js (GitHub: visionmedia / move.js, License: MIT). TJ discusses how he started writing a game for iOS, moved to Canvas, and
then discovered the performance gains of CSS3 and HTML.

He's posted a
game-prototype to GitHub, and I hope to see more (particularly as he mentions Grim
Fandango in his blog post).


Jacob Mumm emailed us about his experiences using
persistence.js, an asynchronous ORM mapper by Zef Hemel. In particular, persistence.js
comes with persistence.sync.js, a remote server
synchronisation plugin:

persystence.sync.js is a persistence.js plug-in that adds data synchronization with remote servers. It comes with a client-side component (persistence.sync.js) and a sample server-side component (persistence.sync.server.js) for use with node.js. It should be fairly easy to implement server-components using other languages, any contributions there are welcome.

I'd like to write more on mobile sync in the future, as I've done a lot
of work on native app syncing (mostly Objective-C), and I've also
recently been working with single page client-side apps that sync
against remote APIs. If you're interested in this area, give
persistence.sync.js a look.