Projects

The Shake Stick is a NIME (New Interface for Musical Expression) implemented in C++ and SuperCollider on a Raspberry Pi B+. This repo contains all of the necessary code and data to run a Shake Stick. This project was produced as part of a directed study with Dr. Abram Hindle at the University of Alberta. You can read a pre-print of the resulting paper on PeerJ.

Cryssake is a simplified C++ build system written in Python. It Understands very basic configurations of C++ executables and libraries. The guiding principle of Cryssake is that by adding structure to the project being built, we can simplify the build system. Unfortunately, C/C++ code tends to have complex requirements from the underlying operating system, available libraries, etc, and structure cannot be enforced in those areas. Ultimately, I determined that this project, though it works well for very simple C++ builds, would need to rapidly grow in complexity to accomodate more complex configurations. At that point I gave up and learned CMake.

Zap is multiple prototype CMSes that lets you edit locally and deploy your site using git. The guiding principle of ZAP is to keep your content in git. The rest is still being explored. Currently, ZAP is still being prototyped, with two branches that you might find interesting:

master

This is a fairly complete CMS that provides an in-browser editor powered by AngularJS. Content is stored in your file-system and you are expected to manage it via git. Editing is done locally and a copy of ZAP must also be running on your server in read-only mode to provide search, rendering etc. This version also has fairly good test coverage.

Ultimately, this became overly complicated and unwieldy, with an annoying dependence on Elasticsearch (this was needed even while editing your site offline).

simple

A rewrite that includes some of the lessons I have learned from the master branch. Currently implemented as a static site generator, it reads files from your project folder and assembles the website as you wish. Extra features such as SASS/LESS compilation, GUI editor, search are not implemented and likely will never be. This removes complexity from ZAP and lets tools that are good at those things (Makefiles, gulp.js, your text editor, etc.) handle those parts. Features:

very nice error messages for the user

explicit over implicit

specifically designed to make it easy to host your website through github-pages.

Haiku is a new open-source operating system that specifically targets personal computing. Inspired by the BeOS, Haiku is fast, simple to use, easy to learn and yet very powerful.

This is not a project that I started, nor am I the biggest contributor. Far from it. GitHub can show you my commits if you are interested. However, I did do quite a bit of work on Haiku. All programming was in C++, and I worked on:

updating a linear programming-based layout manager to a newer version of the layout API

documenting the layout API and fixing bugs

At this point, I no longer work on Haiku, but it was a great experience. I not only
learned quite a bit about C++, but this was the period of time when I first became interested in Software Engineering (as opposed to simply computer programming), design patterns, maintainability, etc.. I also formed a good understanding of how
open source can work, and had some very cool doors opened for me, such as going to
New Zealand on a scholarship to work on Haiku there.

Code Samples

The projects listed below are small and simple. They are probably not useful on their own, but can be useful as a guide or an example.