It’s been a long road, but I can finally say I’ve finished my master’s thesis, “Generalization bounds and size generalization for graph neural networks.” This was also under the supervision of Dr. Nick Harvey and with input and collaboration from Dr. Renjie Liao. It’s available at the UBC Library, and also locally.
MSc Course Projects 1: Direction of Voice Filter
I’ve just finished my first year of my Master’s program and I’ve so far done a couple of course projects in a variety of areas. This is the Direction-of-Voice filter, which I’ve done with my colleague Abi Kuganesan for Dr. Robert Xiao’s “Machine Learning for Signal Processing” course. It’s an audio filtration application that filters unintended voice audio out of an audio signal by using machine learning to eliminate the portions of the audio generated by speakers not facing the microphone. Please also check out our presentation and demo that I’ve uploaded to YouTube!
The full report is also available on GitHub as well.
Undergraduate Thesis: "Restricted-dimension subgradient descent: asymptotic bounds on error"
As part of my final year of undergrad I completed my thesis/final project “Restricted-dimension subgradient descent: asymptotic bounds on error” under the supervision of Dr. Nicholas Harvey. I’m now posting it here: thesis. A write-up will follow soon!
Logs 2020-05-25: The Addition of Comments
Trying to understand social media addiction
Logs 2020-05-11: Sequences of Sets
Update: A Bag of Resistors
Hi all, I’ve been trying to post every Monday the past few weeks; this week I missed it in order to instead spend time on my side project, A Bag of Resistors, now live. It was a lot of fun putting it together and I hope it proves useful to people. I’ll make a writeup about it soon.
Quarantine Logs 2020-04-13: Circuit-Sim Progress!
Been a week! This is by far the most frequently I’ve ever posted. I’m hoping to keep it up.
I’m happy to update that I made a little progress on the circuit simulator I’ve been working on. Here I’ll get into some of what that’s all about in a little bit more detail. All the relevant code is up on Github, though it’s really bare-bones and without documentation as of the time of writing.
Learning about circuit analysis introduced me to the concept of nodes. A node is a point in a circuit where two or more components meet. This concept is important because of Kirchhoff’s Current Law, which states that the sum of currents leaving a node is 0.
$$ \text{Current leaving node $i$} = \sum_{j \in N(i)} I_{i,j} = 0 $$
Here’s an example:
Moving to Hugo and Netlify
CockroachDB internship project: Speeding up some interleaved table deletes by a factor of 10 billion
Last summer, I did an internship with Cockroach Labs, makers of CockroachDB, a SQL database built for massive distribution. I was working on the SQL language semantics in Cockroach, and I was able to work on many different facets of the project in that area.
Overall, my theme for the summer was finding ways to improve the performance of mutation statements - that's your INSERT
s, UPDATE
s, and DELETE
s. At the tail end of the internship, I was able to contribute a major performance gain by adding a fast path to a particular kind of DELETE
, involving a kind of table called an interleaved table. This post is about this particular performance fix and everything about how it works.
All the work described in this post actually comes from this pull request.