Projects

I contribute to various open-source projects in my spare time as can be seen from my GitHub profile.

This page displays a list of some of the projects that I have personally created, in mostly random order.

Sigil

Sigil started as an open-source, cross-platform WYSIWYG editor for ebooks in the EPUB format and pretty much grew to a full EPUB IDE. It became incredibly popular and by the time I left the project it had reached 40 thousand downloads a month (all platforms combined).

This was written in C++ using the Qt Framework; Sigil works on Windows, Mac and Linux.

This was my first really big project.1 I started it while I was still in college and worked on it almost full-time for two years.2 By mid-2011, I had been working 12-14 hours a day for nearly two years and reached the point of massive burn-out. I learned a valuable lesson here, and these days I make damn sure to work reasonable hours and get plenty of rest.

I transitioned Sigil to a new maintainer near the end of 2011 and today I’m not involved with its development anymore.

FlightCrew

FlightCrew is an open-source EPUB validator. You give it an EPUB file and it spews out errors and warnings. This was also a big, complicated project involving tens of thousands of C++ LOC. Also, cross-platform. This time I didn’t have the luxury of the Qt Framework abstracting away platform-specific differences since I didn’t want to burden other users of FlightCrew with such a large dependency. So the cross-platformnessyness3 was achieved through lots of pain, hardship and Boost.

I wrote this for Sigil to power its EPUB validation features. Also, the only other EPUB validator out there was EpubCheck which was crap.

FlightCrew is written as a C++ library and also comes with separate GUI and CLI clients.

I transitioned FlightCrew to a new maintainer near the end of 2011 and today I’m not involved with its development anymore.

YouCompleteMe

YouCompleteMe started as a fast, as-you-type, semantic, fuzzy-search code completion engine for Vim. I have since then spun off the completion engine into an editor-agnostic server called ycmd and other developers are writing clients for various editors.

Picture Commander

Picture Commander provides a way to select an image from a gallery on one device and have that image automatically displayed on the screen of a remote device (with server-push). No fancy apps are necessary, this is completely implemented with modern web technology. All you need is a browser.

MatchTagAlways

A Vim plugin that always highlights the enclosing HTML/XML tags. This is actually surprisingly difficult to get right if you want to support use-cases like templating languages and HTML5 syntax where some tags can be left unclosed.

ListToggle

A fairly simple Vim plugin that provides commands for easy toggling of Vim’s QuickFix and LocationList windows. There’s no command in Vim for toggling these by default.


  1. When I say big, I mean 35k LOC big. And I rewrote it from scratch twice. No, I am not proud of that in the slightest. 

  2. Whilst maintaining a near-flawless GPA. Apparently I enjoy pain. 

  3. I am fully aware that this is not a word.