a quick guide to os fork in python
A tutorial on process-level parallelism using os.fork() directly — useful for understanding what higher-level libraries like multiprocessing are abstracting.
Projects, writeups, and notes from school and self-study.
Writeups from tutorials, meetup talks, and projects I wanted to document — mostly Python, some D3.
A tutorial on process-level parallelism using os.fork() directly — useful for understanding what higher-level libraries like multiprocessing are abstracting.
An introduction to matplotlib using NumPy arrays; covers line plots, histograms, and scatter plots with a MATLAB-familiar syntax.
Part 1 of a typing series — a tour of Python's built-in type system: primitives, collections, and iterables — as a foundation for the type hinting articles that follow.
A 2017 walkthrough of sending SMS via the Twilio Python SDK; the API surface has since changed but the integration pattern (credentials, client setup, message dispatch) is still representative.
Covers Python 3.5+ optional type hints and static analysis with mypy — the mechanics of adding hints without enforcing them at runtime.
A pattern for building reusable, configurable chart components in D3 using ES6 classes, written around a 2018 Boulder D3 Meetup talk.
Best practices for handling multiple return values in Python — where tuple unpacking helps readability and where it becomes a liability.
Deeper into Python's typing module — Union, Callable, TypeVar, and type aliases for annotating more complex function signatures.
Most of my data work is closed-source. These are the projects that were either open-source from the start or that I was able to share later.
An interactive D3.js map of Boston AirBnB listings using GeoJSON; the interesting part is the Python pipeline that converts raw listing data to geospatial format.
Regex-based analysis of 200,000+ messages from a Discord server — frequency patterns, activity windows, and communication graphs.
Implements graph-based infection spreading (total and limited strategies) plus a Markov chain analysis of the network, from a 2017 interview project.
Uses scipy's griddata and kriging to interpolate 3D glacier coordinate datasets — a practical comparison of interpolation methods in three dimensions.
High-performance latent semantic analysis for fuzzy document retrieval — SVD on term-document matrices with a Python interface for querying by semantic similarity.
A 2015 prototype using Apache Spark's streaming API to analyze civil unrest signals in real-time Twitter data; the functional pipeline patterns hold up better than the specific APIs.
Applies simulated annealing and genetic algorithms to redistricting — framing fair district boundary selection as a computational geometry optimization problem.
Most of these started as class notes, projects, or homework that I cleaned up into something more readable.
Generates the Mandelbrot set by iterating complex numbers and visualizing convergence boundaries — a clean Python implementation with matplotlib.
Implements and compares 1D interpolation methods from scratch — linear, Lagrangian, Newton's divided differences, and cubic splines.
Phase portraits, nullclines, and stability analysis for nonlinear systems — numerical exploration of how vector fields behave near fixed points.
Homework assignments from a chaotic dynamics course covering strange attractors, bifurcation diagrams, and sensitivity to initial conditions.
Studies the logistic map and other iterative 1D systems to explore period-doubling and chaos; uses Cython to speed up the orbital calculations.
Implements 4th-order Runge-Kutta from scratch and applies it to several differential equations — method derivation alongside the code.
Implements and compares bisection, secant, fixed-point iteration, and Newton's method for finding function roots numerically.
During college I found it especially effective to write my notes by hand and then transcribe to LaTeX as a study method.
I've spoken at academic conferences, local meetups, and professional events over the years.
Using ML to flag poor-quality lab photographs at scale — research from my undergrad position, presented at SIAM 2016.
A massively parallel simulation of soliton gas dynamics in 1D systems — the computational methods work from my applied math research assistant role, presented at SIAM 2017.
An exploration of the Collatz Conjecture through the lens of chaos theory — built for a college course, but an excuse to think about how simple iterative rules produce complex behavior.
The redistricting-via-simulated-annealing project adapted into a Boulder Python talk — computational geometry for a general audience.
The Boulder D3 Meetup talk behind the reusable charting writeup — building configurable chart components with ES6 classes.
Expanded the Boston AirBnB interview project into a full talk — analysis pipeline, key findings, and visualization approach.
The interactive D3 map that went with the talk above — Boston AirBnB listings rendered geospatially.