(This list is, naturally, incomplete.)
Projects I’ve worked on
Courses at UNSW Computing
Through my teaching work at UNSW, I’ve been heavily involved in the development and delivery of:
- COMP1511 Programming Fundamentals, the flagship undergraduate introduction-to-programming course;
- COMP1521 Computer Systems Fundamentals, the undergraduate introduction-to-systems-programming course;
- COMP2521 Data Structures and Algorithms and COMP9024 Data Structures and Algorithms, the under- and postgraduate data-structures-and-algorithms courses;
- COMP2041/9044 Software Construction: Techniques and Tools, a smörgåsbord course introducing Unix tools, scripting, and all manner of useful general skills.
I’ve also had a finger in
- COMP3231/3891/9201/9283 Operating Systems,
- COMP6443 Web Application Security, and
- COMP9315 Database Systems Implementation.
I’ve also wound up contributing to
- dcc, a C compiler that wants to help to novice C programmers;
- previous versions of autotest, a tool to provide automated testing for programming exercises;
- c_check, a semantic analysis tool that identifies a selection of common programming mistakes,
- the common infrastructure platform for delivering several CSE courses, including the initial work in extracting that platform from the courses delivered atop it;
- infrastructure for several assignments, including tournament-esque platforms for assignments derived from Settlers of Catan, The Fury of Dracula, and more;
- the Almondbread fractal renderer.
I also managed a Discourse installation at CSE.
Research Projects
With the Trustworthy Systems research group, I’ve worked on
-
sel4httpd, a native web server for seL4;
-
the seL4 Device Driver Framework, and will accept a small portion of the blame for spurring on recent work;
-
the Cogent language for code and proof co-generation.
Software I’ve contributed to
I use a range of software day-to-day — mostly open-source — and when I find a bug and can fix it, I’ll contribute my changes back. I’ve done this for
- the Blender 3D modelling tool;
- the Bootstrap CSS framework;
- the Chromium web browser;
- the Emacs text editor;
- the Firefox web browser;
- the FreeBSD operating system, mostly the Ports collection;
- the JSONAPI::Resources library;
- the Jekyll static site generator;
- the Ruby on Rails web framework;
- the Rust programming language;
- the SPIM emulator;
- the XML::Toolkit Perl module;
- the uzbl web browser;
- the 389 Directory Server.
I also maintain a small repository of Arch Linux packages; and I have non-trivial patches to fix the packaging of aflplusplus-git, criterion-git, klee-git, librealsense, ocamlfuse, osvr-display-git. I also maintain the AUR package for libxo.
Hacks: other odds and ends
- amdgpuperf, a very simple frontend to the power management logic in the amdgpu Linux kernel driver;
- archpkgupd-notify, a script that generates notifications on Arch Linux package updates;
- composer, a script that generates an XCompose file;
- depackage, a script that unrolls a dpkg(1) package;
- fan, a very simple frontend to the fan controls in the thinkpad_acpi Linux kernel driver;
- getstat, a simple tool that dumps out some sysctl(3) nodes for FreeBSD system statistics;
- jwiki, a half-baked wiki engine;
- lan.hs, a solver for Countdown (and Letters and Numbers) games;
- lan.rs, a rewrite of the same, in Rust;
- mk, a script that tries to build something reasonable;
- powerclamp, a very simple frontend to the intel_powerclamp Linux kernel driver;
- radar.rb, a script that shows a BoM radar image set;
- statusbard.rb, a status bar server;
- tar-to-history, a script that converts a bunch of tarballs to a Git repository;
- test1511, a janky testing hack;
- … and many, more: my dotfiles includes a vast constellation of hacks