A System for Conducting Crowdsourced Games User Research Software

Technologies Used Python, Flask, SQLAlchemy, HTML, CSS, JavaScript

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. I created a flexible system do to this based on the technologies I had used earlier for my system for evaluating opponent location awareness in FPS games. 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.


Back-of-Device Joystick Input for Android Software Hardware Firmware

Technologies Used Android Studio, Arduino, AVR Microcontroller, DipTrace

Modern smartphones are wonderful pieces of technology that let you do so much through a single input device -- the touchscreen. Despite all of their amazing features, there are some features that we've lost in the transition to capacitive touch screens. Namely, we've lost the input mechanisms that made use of our sense of proprioception and provided tactile feedback, such as physical buttons or the Black Berry trackball. There is unutilized space on the backside of every smartphone, and so this project investigated the technical challenges involved with adding buttons and a low-profile joystick to the backside of an Android phone.


Fiero Car Club Web Site Design

Technologies Used HTML, CSS, JavaScript, Bootstrap, ASP Classic

I do web design occasionally, but I hadn't done anything significant for several years. There are certain expections of a modern website now, and my skills were a bit out of date. I manage the website of the Lower Mainland's Fiero car club, and it was quite out of date, having been designed in 2007. Since they could benefit from a new design, I used the opportunity to learn some new web technologies. I used the Bootstrap framework to create a responsive website.



A System to Evaluate Opponent Location Awareness in FPS Games Software

Technologies Used Python, Flask, SQLAlchemy, HTML, CSS, JavaScript

Video games require players to learn a variety of skills in order to succeed. In particular, first-person shooter games are quite complex. They require players to master the core mechanics of navigation, aiming, and resource management -- skills which must be executed simultaneously. One skill that hasn't been studied very intently is that of making use of the awareness cues that the game provides -- both auditory and visual -- in order to locate enemies. This is an important skill that players learn because it allows them to predict an enemy's position, making it easier to aim towards them and score points.

I was interested in whether a player's ability with this skill could be evaluated, so I designed a system to test it. The system consisted of having players watch and respond to scenarios presented through videos. They watched a video depicting their POV and a single enemy, and based on what they observed in the video they were asked to locate the opponent on a 2D map. I tested the system by looking at the performance differences between novices and experts -- if I was testing the skill in the way I intended, then I should see the experts performing better than the novices. This was indeed the case.

This work resulted in both a CHI publication and my M.Sc. thesis.


Digital Auxiliary Gauges for the Pontiac Fiero Hardware Firmware

Technologies Used Arduino, AVR Microcontroller, EAGLE CAD
  • Replaces the stock oil pressure and voltage analog gauges with a pair of digital ones.

For the final project of a digital electronics class offered through the UFV physics department, I chose to take what I had learned and apply it to the creation of digital versions of two auxiliary gauges in the centre console of my car. I chose to do this with the Arduino platform, which was not taught in class, but I found it easy to pick up based on the topics I had learned.

The project went through several revisions. The version I completed for the class consisted of two separate display PCBs with 7-segment displays -- one for each digital gauge -- with the rest of the the electronics being an Arduino Uno and a breadboard with some voltage dividers. The "final" version (if I don't revisit the project later) had all of the electronics on one PCB, abandoning the Arduino hardware for a standalone ATmega 328 microcontroller. This final version also included provisions for a 16x2 character OLED display. The reason for this is because I was interested in the MPGuino at the time and wanted to see if I could integrate it into my gauges.

Details ยป


Data Analytics Dashboard Software

Technologies Used C#, ASP.NET AJAX, HTML, CSS, JavaScript (jQuery), Kendo UI Datavis Widgets, Telerik ASP.NET AJAX Controls
Databases SQLite, IBM DB2
  • Create dashboard widgets based on SQL queries.
  • Define parameters for the queries, which can be specified when the widget is created and optionally modifiable by the end user.
  • Design dashboard pages which can be assigned to groups or individual users, or allow the user to create their own.

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.


Batch Image Resizer Software Open Source

Technologies Used Java, Swing
  • Resize multiple images at once.
  • Specify resize options and save options to a "preset".
  • Image's aspect ratio is always maintained, unless "stretch" is chosen.

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:

  • Preset resizing options for users who may not understand exactly how to get the output they're interested in, but could potentially pick out predetermined options based upon the end goal for their image.
  • Illustrative icons to demonstrate the effects of different types of cropping and resizing.
  • Drag and drop functionality, so there is no need to navigate directory structures to find the icons you wish to resize.

I later decided to release the code as open-source, you can find the code on Bitbucket.


GPS Record Software Open Source

Technologies Used C++, Qt
  • Uses GPS data to calculate an approximation of both your current lateral and longitudinal accelerations.
  • Calculate distance travelled.
  • Saves raw GPS data and calculated values to a CSV file.
  • Displays your current speed on a speedometer (in KM/h or MPH).
  • Set thresholds that once met can pause or stop your recording.
  • Specify what you do and don't want to record.

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.


Accessible Mouse Hardware

Technologies Used Solid Edge, Z Corporation Spectrum Z510 3D Printer
  • Mouse buttons designed to be clicked by the thumb and index finger.
  • Unlike normal mice, the fingers doing the clicking also provide enough support to accurately move the mouse around.

During high school, I had access to a Spectrum Z510 3D printer as part of the drafting and design classes. In my final year, I had the option to participate in a district scholarship competition. I elected to participate and take full advantage of the ability to rapidly prototype physical objects by designing a mouse that would be accessible for a friend of mine with a partial hand amputation.

During the course of the project, I learned a lot about how to design something that you intend people to interact with. Understanding how people hold a mouse, and how disabled people end up adapting to their situation was a key factor in successfully completing the project.

I also decided to take things a step further than necessary and add the PCB from an old mouse into my prototype shape in order to create a mostly-working prototype.

As part of the project, I spent a day at the local mall presenting my project to the public, as well as to the judges who came by at random points throughout the day.


Discussion Forum Software Software Open Source

Technologies Used PHP, HTML, CSS, JavaScript, Apache, MySQL

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?


Label Quoting Application Software

Technologies Used PHP, HTML, CSS, JavaScript, Apache, MySQL
  • Estimate costs for printing flexographic labels.
  • Handle the complete workflow, from quoting, to generating packing slips.
  • Generate purchase orders.
  • Production list to schedule the presses.
  • Keep track of vacation days for employees.
  • Lists for customers, dies, materials, press rates, etc.
  • Online order tracking for customers.

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.