Projects
Open-source code I have written or contributed to. More is on GitHub.
Machine learning
-
MyPDFLibrary
PythonCommand-line RAG tool for asking questions about a collection of PDFs. Runs a local LLM through Ollama, retrieves passages with vector embeddings, and answers from the retrieved text.
-
rl-lab
PythonReinforcement learning library and tutorials covering tabular, deep, multi-agent, and distributed RL with PyTorch, Gymnasium, Stable-Baselines3, and Ray RLlib.
-
DJINN
PythonMy maintained fork of LLNL's DJINN (deep jointly-informed neural networks), an algorithm for designing and initializing neural networks.
-
WOLF (contributor)
PythonLANL's open-source workflow orchestration and learning framework. I fixed an async coroutine leak and a BM25 crash on empty corpora, cleaned up PyMuPDF deprecations, and added the missing PDF ingestion endpoint for the knowledge base.
Scientific computing
-
ants
CythonDiscrete ordinates (SN) multigroup neutron transport code in one and two dimensions. Includes the collision-based hybrid method, ML acceleration, and solution verification with the method of nearby problems.
-
discrete1
PythonOne-dimensional neutron transport solver, with optional DJINN models in place of the scattering and fission matrix products.
-
NeutronDiffusion
PythonOne-dimensional neutron diffusion solver for slab, cylindrical, and spherical geometries.
-
MC/DC (contributor)
PythonMonte Carlo / Dynamic Code, a Python-based Monte Carlo radiation transport code.
-
NumericalAnalysis
C++Algorithms from Burden and Faires' Numerical Analysis (9th edition) written in C++ with Python bindings.
Scripts and gists
Small single-file Python scripts.
-
break_loop
PythonDecorator for stopping a long-running loop early. The first Ctrl+C finishes the current iteration and continues with the code after the loop; a second one quits. Useful for training runs or parameter sweeps you want to cut short without losing the results so far.
-
Alert sound
PythonPlays a short alert sound with the native player on macOS, Linux, or Windows, and falls back to the terminal bell. Useful for knowing when a long job finishes.
-
Sorting visualizations
PythonAnimation of merge, bubble, selection, and insertion sort running on the same data, made with Matplotlib. With 100 elements, merge sort finishes in 7 passes while the other three take 99.