Ryan Kavanagh's Projects


I maintain a several packages in Debian, the universal operating system.


I've contributed a few patches to OpenBSD:


Removes unneeded files after a (La)TeX run: .aux, .log, .dvi, etc, if their timestamp is more recent than the TeX file's. Also removes the backup files created by your text editor. This keeps a directory containing multiple (La)TeX documents from becoming unmanageable.


Slingshot is a two dimensional, turn based simulation-strategy game set in the gravity fields of several planets. It is a highly addictive game, and never the same from round to round due to its randomly generated playing fields.

It is a deceptively simple game, the goal is to shoot the other spacecraft through the field of planets, but their gravity makes it tricky. The effects of the gravity mean that although it is easy to learn how to play, and to enjoy playing, it could take a lifetime to thoroughly master.

I have yet to release my version of slingshot, see the homepage for the current fork.


Turnin-NG is an assignment submission suite written in Python and composed of turnin and turnincfg. Students can use the turnin command to submit an assignment to a course. Professors and TAs (teaching assistants) can use turnincfg to manage submitted assignments, making them easier to grade.

Turnin-NG is currently used by the Queen's University School of Computing.


Bibliosoph is a free and open-source technical reports manager powered by the powerful CakePHP framework. It's main features allow grouping of papers written by the same authors under various aliases (ex: Smith, John E. writes papers under the names "John Edwin Smith", "Smith, J." and "J. E. Smith"), easy upload of the technical reports in PDF and PS format, the generation of BibTeX entries, sorting of papers, authors and aliases according to various criterion and a password protected admin interface.

Bibliosoph is currently used by the Queen's University School of Computing on their Techreports website.

ET—a simple equipment tracker

ET is a simple equipment tracker used by one or more secretaries at the Queen's University School of Computing to track loaned laptops and projectors.

I am particularly proud of my PHP flatfile database manager.


CEVote (Conseil Étudiant Vote) is a student council election manager, written in Django. It was a grade 11 project and was successfully used to elect my High School's 2009-2010 student council.

Its probably not worth the effort trying to use, it depends on a terribly out of date Django version (whatever was current in January–June 2009, probably 1.0). I tried and failed to get it working.


Having failed to get CEVote working for the 2010-2011 student council elections, I wrote CEVote-NG in two days as a replacement. I'm quite pleased with my progress, CEVote took me 3 months to write (I had never heard of the MVC paradigm before). CEVote-NG uses CakePHP as its framework.

Since CEVote-NG was pitched together in two days, it may be stylistically lacking and/or buggy. It was however successfully used to elect my high school's 2010-2011 student council. We had about 12 desktops available for voting during lunch (~50 minutes) and ~200 students voted.

Various Debian packages

I maintain various packages in Debian and am currently a Debian Maintainer. You can find a list of these packages on my Debian QA packages overview.