Gerald Todd

Definition. A software engineer is someone who explains things to computers, and then to whoever maintains the code next.

I taught calculus for four years before I wrote code for a living. Now I'm a Software Engineer III at Einstein Industries, building AI tooling for legal work, where a confident wrong answer is worse than none.

A slope field that bends around your cursor. The red curves are solutions, integrated as you watch.

Work

A panel of AI agents that has to agree before you get an answer

Einstein Industries. Designed and built alone.

It started with a problem in legal work: nobody trusts a single model's answer, and they shouldn't. So a chair agent gathers the context around a question first. The stakes, the values in play, how confident the answer needs to be. Then it briefs a panel of sandboxed models from different providers. They draft. The chair merges. They vote, and one dissent sends it back for another round.

Any agent can raise its hand and ask the operator a question. It's slow on purpose.

raised hand: a model asks the operator for more context Operator Chair Chair Vote Answer merges drafts sandboxed, one per provider writes the brief: the question what's at stake values that apply confidence needed Model A Model B Model C Model D ✓ ✓ ✗ ✓ question same brief drafts one doc all yes any no: they deliberate again Operator Chair Chair Vote Answer writes the brief: the question what's at stake values that apply confidence needed Model A Model B Model C Model D merges drafts sandboxed, one per provider ✓ ✓ ✗ ✓ question same brief drafts one doc all yes raised hand any no: go again
One question, one brief, four models that never see each other. Nothing leaves until every vote is yes.

10× throughput on client work, from one MCP server

Einstein Industries. One of two developers.

Built on FastMCP. Its tools reach into every app in our suite, pull a client's whole history, and assemble a working model of the finished product. People review it and push back instead of starting from a blank page. Work that took other departments days of manual digging now starts from a draft. We measured before and after.

Retiring a login system from 2012

Einstein Industries. Me and the sysadmin.

Cognito with Google sign-in across the whole suite of applications.

On my own time

All of it is on GitHub
GBoard's Blueprint theme: the house drawn as an architect's sheet, with weather, indoor and outdoor temperature charts, upcoming TV, a Spanish word of the day and a family photo

GBoard

The screen on my wall, and my excuse to try every idea I have about ambient displays. Thirteen themes so far. This one draws the house as an architect's sheet, with the weather and the thermostat plotted like survey data. Another is a split-flap departures board where TV episodes and calendar events share one list.

TypeScript, React, Node, Docker, CI with coverage. Some panels are blurred here because they're personal. Source

The iOS Themer web app: an icon editor, a live phone preview and the steps to install the theme

iOS theming engine

Custom iPhone icons without a jailbreak, installed as a configuration profile. I turned it into an LLC, hired a designer, and got beaten to market. Open source now. Source

MonkeeWrench's voting screen: song proposals with vote progress bars

MonkeeWrench

Song requests, voting and setlists for my band. Next.js, Prisma, Postgres, Vitest. Source

Edge routing DNS a very small box Workhorse ~40 containers

The homelab

Every change touches nine places, health checks and backups and the wiki included. The house rule: verify by artifact, not by exit code. Almost every failure here has been something reporting success while doing nothing.

The Monkee Business homepage: a teal sunburst, a hand-lettered logo and a vintage TV showing the band

Websites for bands

I play keyboards in two Bay Area tribute bands, and I build their sites. A tribute band should look like the era it plays: Monkee Business is 1966 on a TV set, and on The Dark Side, a Pink Floyd tribute, a beam of light crosses the page and splits through the prism when it loads. No frameworks on either.

Gerald presenting a talk titled Breaking Bad Symmetries, the title set in Breaking Bad's periodic-table style
Giving the talk at the Pacific Northwest Section meeting of the Mathematical Association of America, Oregon State University, April 2016. It's talk 87 in the program.

Breaking bad symmetries

My master's research, in plain terms. Draw a picture made of points and lines. A symmetry shuffles the points without breaking any of the lines. The fixing number is how many points you have to pin down before the only symmetry left is doing nothing at all.

I worked on the Dowling geometry, a picture that encodes a group's multiplication table. I counted every one of its symmetries and found its fixing number.

Theorem (Todd, 2016). Let G be a finite group of order n, and Qr(G) its rank-r Dowling geometry, r ≥ 3. Then

|Aut Qr(G)| = r! n! nr−2 fix Qr(G) = n + r − 3

The two main results of my paper, proved there in full.

The surprise is what's missing. Neither answer depends on how the group is built, only on its size n.

My adviser was Jenny McNulty, who co-wrote the textbook on matroids. She's now the dean of arts and sciences at the University of Alaska Anchorage, where I did my undergrad. Read the paper (PDF)

About

I left high school at fifteen. At sixteen I signed up for a community college class called Linear Optimization, mostly to find out what it was.

Turns out it was the next decade. That class led to Anchorage, as far from Bakersfield as my budget reached, and a math degree with the highest GPA across math and computer science. Then Missoula, and two master's degrees at once: one in combinatorics and optimization, one in analysis. I paid for all of it with work, grants, prizes and tuition waivers.

Montana put me in front of about eighty students a semester, from college algebra to Calc II. I built touch-screen Mathematica lessons so they could drag a surface around instead of squinting at one, and won the college's award for top TA evaluations twice. When we graduated, the department asked me to give the student reflection speech for our class.

Watch the speech University of Montana math graduation, May 2016. 2 min 49 s, on YouTube.

I still think like a teacher. If I can't explain a system to someone new in ten minutes, I don't understand it well enough yet. That goes double for my own code.