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.