When I joined the University of Saskatchewan's HCI lab in 2014, they were beginning to use Amazon's Mechanical Turk to run experiments online. The experiments consisted of a task or game implemented in Unity and presented using the Unity Web Player along with questionnaires before and after. There are a number of online survey systems, but none of them integrated well with this sort of task. The workflow involves creating questionnaire definition files in JSON, custom pages as Flask routes, which could be any kind of task, and then defining a sequence in a config file. The project is implemented as a Flask extension that is installed system-wide, so that the base code can be shared amongst different projects. This minimizes code duplication and makes it easier to maintain each individual deployment.
|Technologies Used||C#, WinForms, Python, SQLAlchemy, PostgreSQL|
|Screenshots||   |
This project was a complete rewrite of the web application I made way back in 2005. I decided to implement the user interface in C# using WinForms and the DevExpress desktop components, to maximize usability and to be able to add in new features quickly. For the backend, I decided to implement my PostgreSQL database access via SQLAlchemy, which required the use of Python.NET.
The features are largely the same as the old PHP application, but designed with usability and flexibility in mind and engineered and implemented using current best practices.
|Technologies Used||Unity, C#, Steamworks|
Radio General is a real-time strategy game where you are a general in a tent with a map and a radio. Radio General takes the idea of incomplete information to the extreme — not only do you not know exactly where your opponents units are located, you also do not know the exact location of your own units. Instead you must routinely ask units to report their status and issue orders without knowing for sure if they were successful.
I implemented the online cooperative mode for the game, where players can play through the entire campaign with a friend. I used the Steamworks API to implement lobbies as well as for the networking (using the networking sockets interface).
|Technologies Used||Unity, C#|
|Screenshots||    |
During my PhD, I was apart of the first cohort of students to take what would later become CMPT 406 at the University of Saskatchewan. This course has students form teams similar to what one would encounter at indie game studies and creating a game over the term. I was the tech load for our seven-person team, where we created a walking-simulator game with an emphasis on evoking an unsettling emotional response — essentially, a not-quite-horror game.
|Databases||SQLite, IBM DB2|
In the summer of 2012, I was tasked with creating a flexible, web-based dashboard to analyse data from IBM DB2 databases. I was given general guidelines as to what the dashboard should be able to do, but both the design and the implementation was primarily handled by myself, with some support along the way.
|Technologies Used||Java, Swing|
Created in the winter semester of 2011 as a final project for a user interface design and programming course. The project was intended to allow students to demonstrate what they had learned throughout the course.
I made a few specific decisions about the design of this application based on what I had learned from the course:
I later decided to release the code as open-source, you can find the code on Bitbucket.
|Technologies Used||C++, Qt|
This application receives data from a GPS and parses it to calculate things such as acceleration and distance travelled. That is then saved it to a CSV file. Also shows data in real time and has a speedometer to show your speed in real time (in KM/h or MPH). This is a project I did on my free time one summer and then decided to release as open source software.
This was a PHP/MySQL forum that I created because I was unsatisfied with the current open source forum offerings. I couldn't find a nice balance between features and complexity. A lot of forums had all the features I could ever want, but presented them to the administrator in a way that felt overwhelming and cumbersome to me. Other, simpler, forums were missing features I wanted, and so I decided that rather than try to modify a forum and hope that it would work for me, I'd make my own to be sure that it would work for me.
I designed it in such a way so that I could use it sort of as a very low level CMS if I ever chose. And part of this is that it's quite easy to write a script that uses the user accounts, theme engine, etc. so that it fits in nicely and integrates well with the rest of the website. I took advantage of this to create a front-page for a web site that used topics in a particular forum as news articles, with the replies being comments. Something that annoys me with other websites is when a blog has a comments section as well as a discussion forum, and the two are entirely independent. If you already have an advanced discussion forum, why not use it for your blog's comments?
Back in 2005, I started converting an Excel-based system for determining the production costs of producing labels as well as creating quotes and orders, into a database driven web application. In April 2006, the application had the ability to generate quotes, orders, and packing slips which was enough to fully replace the existing Excel-based system.
Over the next few years I worked on the application part time, adding features, fixing bugs, and eventually ending up with a full featured application which is still being used to this day.