⤴Home

Paul Horsfall - Bio

Summary

I've worked as a freelance/contract computer programmer since 2008. I initially worked on web development projects, but later switched to doing work on probabilistic programming. On recent projects I've primarily worked with Python, and have experience with a range of libraries used for numerical computing including NumPy, JAX and PyTorch. I also have varying degrees of experience with several other languages, including JavaScript, Haskell, Julia, and C.

Recent Experience

Error Correction

In 2023 I was contracted to work on an error correction research project. My main contribution was a Python/JAX implementation of a Neural Belief-Propagation based decoder. I also worked on testing, documenting and refactoring existing code within the project.

Probabilistic Programming

For several years I worked on probabilistic programming, a field at the intersection of probability theory, programming languages, and machine learning.

From 2015 to 2018 I worked for Stanford University on the WebPPL project.

The single biggest strand of work I contributed to was a research project that aimed to bring together ideas from probabilistic programming and deep neural networks. This is described in Deep Amortized Inference for Probabilistic Programs.

Along side this, I also did all the usual kinds of work required on a typical software project: fix bugs, refactor, write documentation, write tests, field issues, etc.

During 2018 and 2019 I worked for Uber AI, where the amortized inference work from WebPPL was being refined and extended by the Pyro project. This is described in Pyro: Deep Universal Probabilistic Programming.

I contributed an implementation of DeepMind's Attend, Infer, Repeat model to the project and wrote a tutorial that describes how it works.

I also developed BRMP, a tool that aimed to make it easy to fit Bayesian regression models using Pyro.

The Web

I've done a reasonable amount of web development over the years.

Most recently, I spent a year or so helping build Kronistic, which was something like a "dynamic meeting scheduling tool for teams". The back-end was implemented with Python, Flask, Celery & PostgreSQL running on AWS. The UI was plain JS, HTML & CSS plus a little bit of jQuery.

Kronistic was built at a start-up I co-founded. The business didn't work out and we shut down the site, though we've since open-sourced the code.