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 JavaScript, though I have varying degrees of experience with several other languages, including Haskell, Julia, and C. I also have experience with a range of Python libraries used for numerical computing, including NumPy, SciPy and PyTorch.
Probabilistic Programming
My recent work has been 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 have experience with HTML, CSS, Javascript, HTTP, DOM, etc. It's been a while since I last did any commercial web development, but I do occasionally use web technologies to create cross-platform GUIs.
For example, I built a data annotation tool as part of a machine learning pipeline, and I developed the infrastructure used to run a series of adaptive psychology experiments on Mechanical Turk. (See section 6.3 and appendix D2 of this paper for more details.)