Posts by Year

2025

Random Walks on Polls

A while ago, the Economist published an explanation of their model of the 2016 US presidential election. This post implements a simplified form of that model.

Converting Dataframes to Pytrees

Numpyro models expect data in the form of a pytrees: nested lists or dictionaries of multidimensional arrays. But datasets usually don’t start that way: we u...

Back to Top ↑

2024

Advent Of Code

I’ve been playing Advent of Code this year. I started writing solutions in R, but soon realized I was better served by a more general purpose language. Julia...

Hop Lists

Hop Lists are a novel retroactive set data-structure that allow for a branching timeline.

Graph SLAM

Tracking a robot’s motion with maximum likelihood estimation.

Finite Particle Approximations

Say you have a discrete distribution $\pi$ that you want to approximate with a small number of weighted particles. Intuitively, it seems like the the best ch...

Testing With Julia

The standard way of writing tests Julia is to write a test/runtests.jl file. Running Pkg.test() will when start a new Julia process that loads your package a...

Finite Basis Gaussian Processes

If your GP kernel corresponds to an inner product in a low enough dimensional space, you can speed up inference by taking a weight space view.

Nearest Neighbor Gaussian Processes

In a k-Nearest Neighbor Gaussian Process, we assume that the input points $x$ are ordered in such a way that $f(x_i)$ is independent of $f(x_j)$ whenever…

Krylov Methods

The $i$th Krylov subspace $\mathcal{K}_i$ for a symmetric matrix $A$ is the subspace spanned by repeatedly multiplying $A$ by an initial vector $b$. This mos...

Back to Top ↑

2023

Fast Slam

Instead of representing the joint distribution of an object and landmarks’ locations with a multivariate Gaussian, we can use a particle filter.

EKF Slam

A hands-on introduction to an old technique for simultaneous localization and mapping.

Conjugate Computation

This post is about a technique that allows us to use variational message passing on models where the likelihood doesn’t have a conjugate prior. There will be...

Back to Top ↑

2022

A Taste Of Qmc

Error with standard Monte Carlo methods decreases as $O(n^{-1/2})$. Quasi Monte carlo methods have error that decreases as $O(n^{-1})$, as we demonstrate wit...

Back to Top ↑

2021

Sparse Variational Gaussian Processes

This notebook introduces Fully Independent Training Conditional (FITC) sparse variational Gaussian process model. You shouldn’t need any prior knowledge abou...

Differential Equations

In my freshman year of college, I took an introductory differential equations class. That was nine years ago. I’ve forgotten pretty much everything, so I tho...

Likelihood Ratios

Say you’re trying to maximize a likelihood $p_{\theta}(x)$, but you only have an unnormalized version $\hat{p_{\theta}}$ for which…

Back to Top ↑

2020

Jupyter For Everything

Forget vim or emacs of VSCode. Jupyter is hands down the best editor out there. The literate programming support, complete with images and beautiful latex sn...

Blogging With Jekyll

This blog is written using Jekyll and Github Pages. Jekyll is a static website generator, which converts directories of markdown files into pretty, hyperlin...

Back to Top ↑