May 11th, 2016
I decided to implement a non-uniform random number generator for use in video games. The purpose of the technique is produce random events that are more consistent than a uniform distribution, similar to stratified sampling.
March 15th, 2016
In CS 452 I've been developing a system for tracking train position, velocity and acceleration. The model will be used as part of a train scheduler, which my partner and I are actively working on.
February 16th, 2016
I recently upgraded my website to serve content using HTTPS instead of HTTP. This required an SSL certificate, which I generated using the Let's Encrypt toolchain. The post includes sample code for configuring an HTTPS server in Node.js.
February 11th, 2016
While working on our CS 452 project, my partner and I encountered an elusive kernel bug that took hours of debugging to track down. The bug was caused by incorrect assumptions about the way our code was loaded into memory by the hardware.
February 3rd, 2016
The CS 452 instructors provide performance guidelines for inter-task communication that students are expected to meet. A round trip time of 30 to 60 microseconds is sufficient, however my partner and I put in extra work to achieve better times.
January 25th, 2016
The embedded system bootloaders I evaluated didn't support the features required for my work, so I wrote my own. Raspboot allows me to load binaries to my RPi over a serial port (UART), and will eventually be extended to support basic debugging utilities.
January 16th, 2016
The Raspberry Pi is a cheap ARM system that's able to connect to peripherals, run Linux and interact with GPIO pins. I decided try doing embedded development on the Pi - writing code directly for the hardware, not for an existing OS.
January 11th, 2016
For my last term at U. Waterloo I decided to take CS 452, a real-time operating systems course. The course is quite time consuming, however so far I've found the material to be interesting.
January 6th, 2016
The fourth post my in series on the use of convolutions in image processing. This post discusses a special property of some kernels that allows them to expressed as the product of two vectors. This can be used to simplify the convolution operator.