Todd Wolfson

Software Engineer

November 21, 2013

gifsockets are never-ending animated GIFs that can be used to send text and images between people.


The gifsockets project was initially developed during Node Knockout but formalized in the following weeks.

If you think you have heard of gifsockets before, you have. videlalvaro/gifsockets was the first implementation; written in Clojure and not trivial to set up, especially without any Clojure experience.

As a result of my poor experience, I decided to reimplement the concept in JavaScript. It is built using gif-encoder, a fork of gif.js for node and streams, and PhantomJS for canvas preparation.

During the formalization process, a lot of smaller modules were built-out, the most interesting of which is gifsockets which allows for using gifsockets on any writable stream.

  • gifsockets - The heart of the gifsockets project, a mediator for subscribing any writable stream to newly written GIF frames
  • gifsockets-middleware - Plug and play middlewares to set up a server with gifsockets
  • gif-encoder - A fork of gif.js with stream support and is optimized for [node.js][] performance
  • phantomjs-pixel-server - A PhantomJS server which takes text and converts it to an rgba array of pixels

More information can be found in the demo repository:

Top articles

Lessons of a startup engineer

Lessons from being a 3x first engineer, former Uber engineer, and working at even more startups

Develop faster

Removing the tedium from creating, developing, and publishing repos.

Sexy bash prompt

A bash prompt with colors, git statuses, and git branches.