Python 3.9: Now with SAE J1939 socket support

I implemented support in the socket module for SAE J1939 sockets, which is now available in Python 3.9! It's present in all builds after (and including) 3.9.0 beta 1. J1939 is a higher-level protocol built…

assert() is a no-op (sometimes)

I once worked on a project that made liberal use of assertions to enforce invariants. This was useful during development, as one could easily see whether you broke something when you ran the test application…

Musings on a Sankey diagram of FSGP/ASC 2018

On my flight back to Waterloo for my CS convocation ceremony, I was thinking about all the things I've accomplished throughout my undergraduate career at the University of Waterloo. One of the things I'm…

(Almost) Every Single Shell Command I've Used Since 2017

Ever since 2016, I started keeping track of my dotfiles. In my dotfiles, I had configured my ~/.bash_history file to keep an unlimited number of lines of history. Sometime in 2017, I reformatted my laptop…

Decoding CAN messages with DBC files

DBC files are a proprietary Vector file format that encodes information about how data is packed into a CAN frame, allowing you to pack and unpack the data. The open source equivalent is the KCD file used…

Bisecting git with git

Recently, I was talking to a friend about how great git-bisect is, and our conversation reminded me about this one time I used git-bisect to bisect a problem with an old version of git that was being used…

noclobber and the >| redirection operator

I recently encountered an issue in a project I started working on where it wouldn't build correctly. This wasn't too unexpected or concerning, since I had just set up the build environment, and as I've…

git checkout a GitHub Pull Request

Sometimes, reviewing code is easier done with the full diff in front of you. Web UIs like GitHub, Phabricator, or Stash all have their strengths, but often times I find myself opening up my editor and…

Letters From Feridun

Our university president Feridun Hamdullahpur seems to send a lot of emails. But does he really send that much? That was a question that came to my mind one day as I was taking the bus home from work.…

Continuous Integration and Solar Cars

At the University of Waterloo, the Midnight Sun Solar Rayce Car Team makes use of Travis CI to test our embedded software that powers our open source solar vehicle. Writing code for embedded systems is…