Here are some of my contributions to open-source software over the years:
- Added support for extracting preview images from Canon CR3 files in exiv2 and sped up ISOBMFF handling
- Added Canon 5D Mark IV noise profile to darktable
- Contributed the Stock & Price CSV Updater 2 module for the Ubercart shopping cart system.
- Fixed a bug in the nss_ldap name-service library that was causing applications to hang.
- Redesigned
verify_fork
in PubCookie, a website authentication system. - Fixed a bug that was crashing procps , one of the standard system utilities under GNU/Linux.
- Added some enhancements to cURL , a widely used command-line utility for retrieving web pages.
- Fixed a bug in the GRASS GIS digitizer code that was stopping it from working under Solaris 2.x
Here are some of the things I developed in my day job at the NCI National Facility. They're probably available under a GPL or BSD style open source license if you're interested. Contact nci.org.au for access.
- nfrcp, a souped-up version of the traditional unix
rcp
command. It uses a multithreaded, double-buffered reader and writer to speed up file copies, and can maintain a database of checksums so that file corruption can be detected. For more details, see the manual page. License Shadowing Daemon, a mechanism for controlling the scheduling of jobs on a supercomputer cluster when application software licenses are involved.
LSD consists of a server process (the daemon) and a client-side library. The daemon maintains the state of the system and communicates with the job schedulers and license servers. It also has a built in web server so its state can be easily inspected. The client side library is called by the job schedulers to communicate with the daemon. For more details, see the manual page or the slides from a presentation I gave during development.
Mancini. Mancini is designed to handle the administration of users and projects for organisations that provide access to large-scale computational and data-storage resources for a large user community.
Mancini is written in Python, using the Django web-application framework, and consists of
- A web application, served by a web server as a WSGI (Python) application
- A database that holds information about users, projects and other things.
- One or more "agents" (daemons) that look in the database for actions to carry out. This is the way that users get added to LDAP, directories get created on filesystems etc.
Mancini was designed to limit the amount of havoc that can be wreaked in the event of a database or web application compromise. In particular, the web application does not have access to any stored credentials that allow the addition or modification of entries in the LDAP name service.