Work

Here are my 34 open-source projects, most of which were manual labors of love that were brought to the next level over a summer of agential engineering. I've tried to bring all of them to a minimum level of professionalism and reliability. Click into any one for more screenshots and a few words about how it works.

Python libraries

The shared foundations the rest of my projects are built on.

myBasis

Everyday Python utilities for text, iteration, and type coercion.

I made this module to streamline some patterns that seemed both A) frequently-relevant and feasible to streamline. It grew alongside my projects over the years, which means it was in daily use by me from day one.

It covers iteration helpers, regex composition, caching, file formats, and runtime type casting (including a Pydantic model that applies the same casting rules during validation). It has (IMHO) novel, deep approaches to runtime typing ("Vibe Typing"), text processing, and building unusually-huge regular expressions pipelines without losing readability or performance. The regex work was driven by Wikiparse, where I had to write extremely performant code in Python for the first time. Nearly every Python project on this page depends on it. It's on PyPI as my-basis.

Since Python

Project profile
Extent
5 / 5
Ambition
5 / 5
Human design
5 / 5
Human direction
5 / 5
How to read these estimates

Provisional estimates by Robb Doering, .

myForm

Translates between document formats through one typed document tree.

myForm reads and writes six document formats (MyST Markdown, GitHub Markdown, Obsidian Markdown, reStructuredText, Typst, and a subset of wikitext) through one typed document tree. Formatting a file in place is just the identity case of conversion.

Since PythonMySTTypst

Project profile
Extent
2 / 5
Ambition
4.5 / 5
Human design
2.5 / 5
Human direction
1.5 / 5
How to read these estimates

Provisional estimates by Robb Doering, .

myArch

A framework for organizing code and notes into self-similar hierarchies.

myArch gives structure an address. It numbers headings in documents to any depth (numeric, alphabetic, Roman, or symbolic) and organizes Python code into a four-level cell model, with commands to inspect the numbering, preview a repair, and apply it atomically.

Since PythonMarkdown

Project profile
Extent
1.5 / 5
Ambition
2 / 5
Human design
5 / 5
Human direction
4.5 / 5
How to read these estimates

Provisional estimates by Robb Doering, .

Applications

Things with an interface you can open and poke at.

Wikiparse

Turns Wikipedia XML dumps into clean Markdown with structured citations.

Wikiparse converts raw wikitext into Markdown with YAML frontmatter and structured citation records. It's a from-scratch parser built on composed regular expressions (no MediaWiki API), and anything it can't handle gets recorded in an explicit failure census instead of silently disappearing.

Since Python

Project profile
Extent
5 / 5
Ambition
5 / 5
Human design
5 / 5
Human direction
4.5 / 5
How to read these estimates

Provisional estimates by Robb Doering, .

The Epstein Index

A searchable, OCR’d archive of the released Epstein case files.

The Epstein Index makes the released Epstein case files readable and searchable. An eight-stage Python pipeline downloads, OCRs, cleans, and organizes the source documents; an Astro site serves them with timelines, maps, topic views, and a network plot.

Since PythonTypeScript

Project profile
Extent
3 / 5
Ambition
3 / 5
Human design
4 / 5
Human direction
2.5 / 5
How to read these estimates

Provisional estimates by Robb Doering, .

Tools for AI agents

Most of my recent work runs from basic monitoring and orchestration (myFleet) to more advanced tools for "gating" agents non-obtrusively (myGate) and increasing their efficiency by providing tools tailored to their failings (inTact).

myGate

Stops runaway nested-agent launches and reviews my GitLab merge requests.

myGate keeps agent fleets from running up the bill. When an orchestrating agent tries to launch a swarm of sub-agents on the most expensive models, it denies the launch before it starts, unless every one of them is pinned to a lighter model.

Since PythonACI

Project profile
Extent
3 / 5
Ambition
4 / 5
Human design
1.5 / 5
Human direction
0 / 5
How to read these estimates

Provisional estimates by Robb Doering, .

Sublime Text plugins

I've spent hundreds (thousands?) of hours developing Sublime Text plugins and syntax extensions, a lot of which was spent reading through undocumented internal API stubs and piecing together best practices from other plugins.

myTest

Pytest for Sublime plugins, headless or inside a live editor.

myTest lets Sublime plugin authors run pytest against mocked Sublime APIs outside the editor, or run the same tests inside a live Sublime when real editor behavior matters. As far as I know, it's the first test package for Sublime plugins to use pytest.

Since Sublime Text

Project profile
Extent
5 / 5
Ambition
5 / 5
Human design
4.5 / 5
Human direction
4 / 5
How to read these estimates

Provisional estimates by Robb Doering, .

mySublimeBasis

Typed base classes and a mock layer for writing Sublime plugins.

A much more ergonomic & efficient framework for plugins, and the shared foundation for mine: typed command-argument models, helpers for views and windows, and a mock layer that stands in for Sublime's modules so plugin logic can be tested as ordinary Python.

Since Sublime Text

Project profile
Extent
3 / 5
Ambition
4 / 5
Human design
5 / 5
Human direction
4.5 / 5
How to read these estimates

Provisional estimates by Robb Doering, .

Sublime syntaxes

Grammars for the file types I read every day, including some really tricky-to-implement cases like nested docstrings with MyST/Sphinx highlighting in Python. Each pair shows the same file in stock Sublime, then with my syntax.

Reading the project profiles

Each axis is an independent personal estimate from 0 (least) to 5 (most), with no combined ranking. “Not assessed” means no estimate was supplied; it is not zero.

Extent
Size of the resulting engineering artifacts.
Ambition
Complexity, depth and scope.
Human design
Human contribution to design.
Human direction
Human involvement in driving the work.