The Universal Makefile for JavaScript

TL;DR The world is moving from Gulp and Grunt towards npm scripts. This seems like a place we could stay for a long time. But there's one shortcoming with npm scripts, especially when compared to Makefile: it's a sub-optimal command-line experience. So I wrote Fakefile: a universal Makefile that you can save into any Node project to offer your npm scripts as Makefile targets. This makes operating npm scripts ten times faster, and offers a polite language agnostic way into your project to people coming from non-js backgrounds. Just type npm install fakefile and profit instantly.

Continue reading

Introducing airbud

Retrieving stuff from the web is unreliable. Airbud adds retries for production, and fixture support for test.

Continue reading

Watch Your Language (Automatically)

I was writing internal documentation on how I set up automated language checking at Transloadit. Halfway through, I thought this could be useful to the rest of the world :earth_americas: as well, so I rewrote it in a more generic fashion. I'll attempt to first give a high-level overview of the problem, then I will drive all the way down to the low-level nuts & bolts of solving it. I hope you'll enjoy, here goes!

Continue reading

tus 1.0-prerelease

It's been a while since I've mentioned tus, but there have been some cool developments so we'd like to refresh your memory.

Continue reading

Introducing ratestate

Ratestate is a ratelimiter in the form of a Node.js module that can transmit states of different entities while avoiding transmitting the same state twice, and adhering to a global speed limit.

Continue reading

Introducing environmental

Some people feel that shipping .json / .yml / .xml config files is an upgrade over using archaic environment variables.

Continue reading

Git Hour Tracking

Recently I was asked to estimate how many hours I worked on a project. Since I hadn't really tracked them I decided to use the Git history to get an indication.

Continue reading

Fixing Heartbleed

Four days ago the news about the Heartbleed got every sysadmin's attention. Renowned security expert Bruce Schneier writes:

This means that anything in memory – SSL private keys, user keys, anything – is vulnerable. And you have to assume that it is all compromised. All of it.

"Catastrophic" is the right word. On the scale of 1 to 10, this is an 11.

Continue reading

GitHub Spring Cleaning - the Deprecation Hack

Almost spring here! Birds are chirping and we start cleaning out our kitchens and backyards and closets and GitHub accounts. Let's trash some legacy!

Why? Because

  • We're ashamed of old code
  • We want to save money by having a lower (private) repo count
  • We want to improve the signal-to-noise on our profiles before a job interview
  • Spring

But wait, what if your co-worker wants to access some of those commits again? You probably don't feel like peeling archives from crashed backup drives in the basement of your previous building.

Renan and I faced this at and we started looking for simple solutions.

Continue reading

It's Almost 2014 and We Are Still Committing Broken Code

Dispite testcases, syntax errors still find their way into our commits.

  • Maybe it was a change in that bash script that wasn't covered by tests. Too bad our deploys relied on it.
  • Maybe it was just a textual change and we didn't think it was necessary to run the associated code before pushing this upstream. Too bad we missed that quote.

Whatever the reason, it's almost 2014 and we are still committing broken code. This needs to change because in the

  • Best case: Travis or Jenkins prevent those errors from hitting production and it's frustrating to go back and revert/redo that stuff. A waste of your time and state of mind, as you already moved onto other things.
  • Worst case: your error goes unnoticed and hits production.

Git offers commit hooks to prevent bad code from entering the repository, but you have to install them on a local per-project basis.

Chances are you have been too busy/lazy and never took the time/effort to whip up a commit hook that could deal with all your projects and programming languages.

That holds true for me, however I recently had some free time and decided to invest it in cooking up ochtra. One Commit Hook To Rule All.

Continue reading