Projects

Open-source code I have written or contributed to. More is on GitHub.

Machine learning

  • MyPDFLibrary

    Python

    Command-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

    Python

    Reinforcement learning library and tutorials covering tabular, deep, multi-agent, and distributed RL with PyTorch, Gymnasium, Stable-Baselines3, and Ray RLlib.

  • DJINN

    Python

    My maintained fork of LLNL's DJINN (deep jointly-informed neural networks), an algorithm for designing and initializing neural networks.

  • WOLF (contributor)

    Python

    LANL'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

    Cython

    Discrete 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

    Python

    One-dimensional neutron transport solver, with optional DJINN models in place of the scattering and fission matrix products.

  • NeutronDiffusion

    Python

    One-dimensional neutron diffusion solver for slab, cylindrical, and spherical geometries.

  • MC/DC (contributor)

    Python

    Monte 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

    Python

    Decorator 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

    Python

    Plays 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

    Python

    Animation 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.