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.
Trying to organize my Twitter timeline, using unsupervised learning
I'm a frequent user of Twitter, but I realize that among the major social networks it could be the hardest to get into. One of the big obstacles for me was that, as I followed more and more people representing my different interests, my timeline became an overcrowded mess with too many different types of content. For example, at one point I started following many tech-related accounts and comic book art-related accounts at the same time, and when I would go on Twitter I could never reasonably choose to consume content from only one of the groups.

Even after learning to adapt to this, I still thought that it would be nice to be able to detect distinct groups among the twitter accounts that I followed. The impetus to finally start a project about this came when I started using cluster analysis algorithms in my machine learning class - the algorithms used seemed to be exactly the right idea for this kind of community detection. With that I set off on the task to collect and analyze the data from my own Twitter follow list, with clusters!
The work I've done since then is still in progress (mostly because the results I'm getting aren't that great yet), and as I make more progress I'll be making more posts about it!
All the code is available on Github.
More details below!