Side Projects

Wed Feb 25 2015 19:00:00 GMT-0500 (EST)

After reading antirez's blog post I decided that it might be a good exercise to write down the notable side projects that I spent my time upon since Jan 2014.

Here is the list and some comments from me:


JavaScript library for working with Big Numbers. bn.js is an ultra-fast bignum alternative with support for running in io.js/node.js and browsers.

This one took lots of time and effort through whole year with some periodic sparks in a contributions graph, and many PRs from OpenSource community. Seriously, big kudos to you people for helping me with it!


JS library for doing Elliptic Curve crypto. It was the reason for creating the bn.js in the first place, and excuse for me to learn more about EC cryptography and crazy math behind it.


A friendly and clever TLS-terminating proxy in C.

Although I worked on it since Nov 2013, lots of development happened during the 2014 year. This is my biggest project in C so far, and it has taught me a lot about designing the APIs and interfaces in low-level languages.

Bud seens lots of love from Emmanuel Odeke. Big thanks to you, Emmanuel!


(Incomplete) TLS implementation in JavaScript.

Totally experimental protocol implementation. Did it just for fun, but it turned to be useful in screening the web servers.


Implementations of SHA1, SHA224, SHA256, SHA384, SHA512, RIPEMD160, various HMACs. One of the mandatory dependencies of...


BitCoin SPV client implementation. Purely experimental, but I heard that some people do use it.

Lots of contributions from Christopher Jeffrey here. Thank you!

bthread (src)

Writing blog posts in a BitCoin block-chain.

I know many people hate me for this, but still I wanted to experiment with it a little.


JS JIT compiler written in JS.

Very preliminary implementation with little or no compatibility with ECMAScript yet :)

heap.js, jit.js, cfg.js, ...

Various js.js dependencies.


Lenstra–Lenstra–Lovász algorithm JavaScript implementation.

I don't remember exact reasons for writing this, but I guess I thought about doing more optimal GLV Method for elliptic.


Creating heap snapshots out of the core file on OS X, linuxes, and FreeBSD.


ASN.1 encoding implementation in JS.


Miller-Rabin primality test in JS.


Butler bot for github projects. I wanted it to be used for io.js, but we decided to walk a different road.


I guess that's it.

Most of these projects were a big incentive for me to dig into the protocols, technology, science. I find it much more enjoyable and interesting to investigate new topics through their applications.

Thank you for all your contributions, people! It is really awesome to see you interested in helping me with these and other projects!

Thanks for reading this.