Open Source Software

The first open source project I worked on was IVTV. Its primary language is C and it uses Make for build automation. The IVTV project develops user-space utilities, a Linux kernel driver, and an X11 driver for cards based on Conexant's CX23415/CX23416 chip. I provided bug fixes and testing for the kernel and X11 drivers and rewrote two of the user-space utilities, the radio and framebuffer control programs. The kernel driver has since been merged into the v4l2 project, and from there is included in the main Linux kernel tree. My contributions were included during the 0.6.x development cycle.

The second open source project I made significant contributions to was KTorrent. KTorrent is KDE's BitTorrent protocol client. It is written in C++ with the Qt library, uses QMake for build automation, and used SVN for version control during my primary period of involvement. It has since moved to git. I have contributed many fixes and enhancements spanning both the KDE3 and KDE4 versions of the application. Examples include: the ability to prioritize certain files in a multi-file download; a greatly extended remote control (DCOP) interface; completion percentage for directories in multi-file torrents; "interesting" peer tracking; stalled peer disconnection; and torrent pausing. Most of the patches and some of the bug reports can still be found under my name in the KDE Bugtracker, and the rest can be found on the KTorrent forum.

More recently, I have contributed to the ScummVM Project. ScummVM is written in C++ and uses git for version control. It is a platform for reimplementing 2D point-and-click adventure games and reverse engineered implementations for many engines, most notably the SCUMM engine created by LucasArts and the SCI engine used by Sierra. My bug reports and patches can be found on SourceForge. As the ScummVM team has transitioned to using GitHub pull requests for more types of changes, my largest change is also available there. I extended the audio file compression tool for SCI games to handle files with external, as opposed to embedded, resource maps.

I've also contributed small patches to other projects on GitHub and released hundreds of code snippets in answers on Stack Overflow.