#124: Tedit, JS-Git, and Jack with Tim Caswell

Adam and Jerod talk with Tim Caswell about getting started in open source, exploring new frontiers, and his latest project Tedit — a development platform that makes programming JavaScript easy and more accessible.

docopt gets CLI argument parsing right

Brilliant ideas can be painfully obvious in retrospect. They’ll leave you thinking, “Why didn’t we I think of that before?!” Docopt is that for parsing CLI arguments.

Trash – a safer and cross-platform `rm` #

Instead of permanently deleting files from the command line, this little tool moves them to the trash.

Like me, you might be thinking, “But I can do the same thing with mv.” To this Sindre writes:

Not really. The mv command isn’t cross-platform and moving to trash is not just about moving the file to a “trash” directory. On all OSes you’ll run into file conflicts. The user won’t easily be able to restore the file. It won’t work on an external drive. The trash directory location varies between Windows versions. For Linux there’s a whole spec you need to follow. On OS X you’ll loose the Put back feature.

Who knew?

Cleaner class-based controllers for AngularJS #

Classy is Dave Jeffery’s attempt to clean up AngularJS controllers. It removes the requirement to annotate your dependencies, automatically adds functions to the controller’s $scope, and adds a convenient way of watching things without dirtying up your init function.

Also, the project’s homepage has a really nice code sample that switches between JavaScript and CoffeeScript versions. Check it.

Build beautiful programming books with Git and Markdown #

There’s a lot of innovation (and iteration) going on in the online publishing space. GitBook continues that trend by offering a command line tool built specifically for creating programming book and exercises.

You write your book in Markdown and from that GitBook can generate a static website, PDF, eBook, and even JSON. Here’s what the results look like:

GitBook Preview

Metalsmith: a static site generator with lots of potential #

Segment.io’s Metalsmith doesn’t excite me because it’s a static site generator. It excites me because its everything-is-a-plugin philosophy turns it in to a potential swiss army knife for any project that manipulates a directory of files.

It could be a project scaffolder. It could be an e-book generator. It could be a build tool. It could be a documentation tool. It could be something I’ve never even heard of before.

Check out their examples to whet your imagination.

Quickly reduce the amount of data your node API returns #

When designing an API, it’s easy to forget that not everyone has a cable modem. What if a client could easily request exactly the data it needed. That is what JSON Mask aims to do.

This is a tiny language and an engine for selecting specific parts of a JS object, hiding/masking the rest.

A code example helps to demonstrate how this works.

var mask = require('json-mask')
mask({p: {a: 1, b: 2}, z: 1}, 'p/a,z')  // {p: {a: 1}, z: 1}

JSON Mask seems like an interesting way to reduce the amount of data we send down the pipes.

Generate 4 language bindings for your API in one Go #

You just built an API, and want to make sure everyone can use it. Building libraries in every language isn’t only going to be hard, its going to take a lot of time. Time you don’t have. This is where Alpaca can help.

You define your API according to the format, alpaca builds the API libraries along with their documentation. All you have to do is publishing them to their respective package managers.

Right now it can generate API clients in PHP, Python, Ruby, and JavaScript. You can see examples of the generated client libraries here. I can’t speak to the quality of all the generated language bindings, but I took a cursory look at the Python lib and it looks good. Looks like Alpaca could save us all a lot of time.

Zone.js from the Angular team

While I was at the first annual ng-conf last week (excellent conf, btw), Brian Ford of the Angular team gave a great talk about a new library he released called Zone.js.