I'm a scientist and engineer with 20 years of experience building systems for real-time signal processing, genomics, computational biology, machine learning, and computer vision. Here are some of the things I've built over the years.
My full portfolio, including publications and earlier work, is at wjmallard.net.
During my PhD at Harvard, I built machine learning pipelines for protein structure analysis, and computer vision pipelines for live-cell microscopy.
- alphafold-contact-clustering (2025) — AlphaFold ensemble analysis: construct contact maps via K-d tree, identify protein binding modes via unsupervised clustering (Python)
- MeshCell (2020) — Computer vision and computational geometry pipeline for automated analysis of cell size and shape (Python)
- z-ring-treadmilling (2022) — Particle tracking and motion analysis: trajectory extraction, MSD fitting, velocity estimation (Python, Fiji/Jython)
- z-ring-constriction (2023) — Time-series image processing: calibration, registration, object tracking, constriction rate measurement (Python, Fiji/Jython)
- PyLSF (2013) — Python C extension for HPC cluster job management via the IBM LSF API (C, Python)
Before my PhD, I spent several years at UC Berkeley building FPGA-based astronomy instruments, and contributing to CASPER, an open-source signal processing platform used by observatories around the world.
- isi-digital-backend (2010) — 138 Gbps FX correlator on 3 Virtex-5 FPGAs, for the Infrared Spatial Interferometer at Mount Wilson Observatory (Simulink, C, Python)
- gpu-xengine (2026) — GPU cross-correlator for a 3-telescope interferometer (CUDA, C++)
- xgb_recv (2008) — 10 GbE UDP receiver with synchronized ring buffer; core architecture adopted into PySPEAD, the data transport layer for the Square Kilometre Array (C)
- CASPER library commits (2008) — 60+ commits to the CASPER FPGA library (Simulink, Matlab)
Since completing my PhD, I've been building full-stack tools to archive and explore my own data — personal projects I never had time for in grad school.
- claude-conversations (2026) — An offline browser and search engine over an archive of exported Claude conversations. (Python, PostgreSQL, Flask)
- twitter-screenshot-archive (2026) — Search engine over Twitter screenshots. OCR ingest pipeline, full-text and semantic search (pgvector), MinHash near-duplicate detection, PCA/HDBSCAN topic clustering, temporal analysis, and an MCP server for LLM tool use. (Python, PostgreSQL, Flask)
- PlaceTrace (2025) — Personal location history explorer: imports Google Timeline data into PostGIS, with local reverse geocoding against OSM boundaries, trip detection, and an interactive map UI for spatial and temporal queries. (Python, PostgreSQL/PostGIS, Flask)
- JScreenSaver (2026) — JavaScript port of generative artwork from XScreenSaver (Jamie Zawinski & contributors). 150+ Unix/X11 screenhacks reimplemented from the original C and OpenGL. Minimalist full-viewport UI with keyboard navigation and mobile support. [source] (JavaScript, Canvas 2D, WebGL/GLSL, three.js)
- offline-maps (2026) — An offline map viewer that makes zero network requests at runtime. Includes a demo dataset: a layer with every automated license-plate reader (ALPR) known to OpenStreetMap. (Python, Flask, MapLibre GL, GeoPandas)
- adsb-fingerprint (2026) — RF fingerprinting of ADS-B transponders from RTL-SDR captures: real-time Mode S detection and demodulation, a convolutional neural net that identifies the physical airframe from raw IQ samples with the aircraft ID bits masked out, channel-only baselines and ablations to rule out confounds, and a live map of what's currently overhead. (Python, PyTorch, PostgreSQL/PostGIS, Flask)


