Projects
21Built, validated, and demonstrable work — start here. Every project also lives in its subject's notes.
Two scientific programs written in Knot, a small numerical DSL I built in Rust. The compiler lowers them through a hand-written IR to portable C99, then to WebAssembly: a 47 KB module runs the full self-consistent field loop live in the browser, and a 42 KB module races 4.4 million candidate formulas against sampled data — the AI-Feynman inner loop — and hands back the hidden functions exactly.
verified: E_total = -1.11671 Ha ✓ Szabo & Ostlund · 4/4 hidden formulas recovered
A clean reproduction of a 2019 method for four-center Slater-orbital integrals by Monte Carlo. Ten published integrals matched to statistical tolerance — with a written account of the three bugs I had to find first.
verified: within 0.3–2.1σ of published values · 10,000× fewer samples
Lanczos recovers the spectral measure of an operator, and its orthogonal polynomials are the optimal basis for f(A)v. One engine, three problems: an optimal-basis study, circuit model-order reduction with an honest negative result, and a full TDDFT absorption spectrum as a single continued fraction.
verified: adapted basis beats Chebyshev by 7 orders · MOR to 1e-7 · TDDFT to 1e-13
A dependency-free finite-difference solver for the H₂⁺ energy curve with a hand-rolled Jacobi eigensolver. A performance study that lands on a non-obvious conclusion: the grid was never the bottleneck — the basis was.
verified: ~350× faster than Python · within ~8 mHa of textbook
Two accelerated Monte Carlo studies on PySCF energies: self-learning MC that recovers exact conformer populations from a deliberately biased surrogate, and Wang–Landau density-of-states pushed to a chain far too large to enumerate.
verified: exact populations from a 47×-biased surrogate · WL Cv to 8e-4 k_B
A decoder-only GPT with attention, multi-head, LayerNorm, and causal masking all hand-written on raw tensors — no transformer library. Verified against PyTorch, then trained to sort sequences it has never seen.
verified: hand-written attention matches PyTorch to 4e-16 · 99.95% held-out sort accuracy
A from-scratch NumPy autograd — a tensor that records its own computation graph and differentiates anything by a single reverse sweep. Trains a spiral classifier with no framework underneath.
verified: matches finite differences to 3e-9 · matches PyTorch to 6e-17
A batched checkerboard Metropolis sweep running on the GPU (PyTorch/Metal, CUDA-portable) — many lattices at many temperatures at once. Validated against Onsager, then benchmarked honestly against a 12-thread CPU.
verified: matches Onsager m(T) to 8e-4 · 8.6× GPU speedup · 640M spin-updates/s
A matched-capacity benchmark of polynomial, RBF, and random-Fourier bases against an MLP — designed so neither side can win on parameter count alone.
verified: RBF wins 10/10 on Gaussian bumps · MLP 7/10 on Friedman-5D
A learned effective Hamiltonian drives Wolff cluster moves, Metropolis-corrected against the true energy — a reproduction of Liu–Qi–Meng–Fu (2017).
verified: 7.26× measured speedup · ⟨m²⟩ to 4 decimals vs exact
Matrix-product-state truncation of a transverse-field Ising chain across the phase transition, converging toward the exact ground state bond dimension by bond dimension.
verified: E(χ) → E_exact to 1e-15 · eigsh == dense to 1e-10
A diffusion-map + chord-interpolation sampler that respects the geometry of noisy data, benchmarked head-to-head against naive kernel density estimation.
verified: off-manifold RMS 3× better than KDE on an analytic circle
Beyond the featured projects, an open notebook — 459 short, self-contained notes across 12 areas of math, physics, and computer science, most pairing a short explanation with a working program.
Built, validated, and demonstrable work — start here. Every project also lives in its subject's notes.
Algorithms, low-level performance, programming languages.
Linear circuit analysis, dynamics, filters, and the math of analog electronics.
Linear algebra, ODEs, numerical analysis, series.
Quantum chemistry, electronic structure, condensed matter.
Working reimplementations of published methods, validated against the source paper's reported numbers.
Finance, power systems, machine learning.
Computational neuroscience, biophysics, and other computations applied to biology and medicine.
Bayesian methods, simulation-based inference, probabilistic modeling.
Same kernel, different costumes. Concept anchors solved as variations on a theme.
Small, concrete questions I'm trying to figure out. Working notes, not finished pages.
Reading and authoring tools that operate on site content as data — different ways to render or work with the same material.
Each card is math, physics, or biology.
Hook one pendulum onto another, let go. Sensitive to a hair — same starting angles, one degree off, and the path the bob carves out ends up in a completely different place.
Three equations modeling convection in the atmosphere. The trajectory never repeats and never settles — it traces out two looping wings that the system keeps switching between. The original chaotic attractor.
A stochastic differential equation says: take a tiny step in the drift direction, then a random kick. Run sixty paths from the same starting point and they all spread out — but the shape of the spread is what the equation pins down. Pure Brownian, mean-reverting, or exponential growth, all from one Euler step.
For each point on the plane: iterate z = z² + c and ask whether it stays bounded. The boundary between "stays" and "explodes" is the Mandelbrot set — and the same shape repeats at every zoom level, forever.
Drop any starting point on the plane. Run Newton's method on z³ = 1. You'll converge to one of three cube roots — but which root depends on z₀ in an astonishingly intricate way. Each color marks one root's basin; the boundary between them is fractal, all the way down.
A grid of cells. A live cell with 2 or 3 neighbors survives; a dead cell with exactly 3 comes alive. That's it. From those two rules: gliders, oscillators, structures that look like organisms.
Two chemicals diffuse and react on a grid. Same rules everywhere — but tiny noise breaks the symmetry and the mixture self-organizes into spots, stripes, coral. Alan Turing proposed this in 1952 as the mechanism behind spots on a leopard and stripes on a zebra.
Every agent does the same thing: match your neighbors' direction, drift toward the local center, keep your distance. No leader, no plan. Coherent flocking emerges anyway — the same way a school of fish or a flock of starlings organizes itself.
Pick three corners. Start anywhere. Repeatedly pick a random corner and move halfway toward it. You'd expect a blob — but a Sierpinski triangle appears, every time. Order hiding inside dice rolls.
Place dots in a spiral with the golden angle (137.5°) between each one. The pattern that emerges is what sunflowers, pinecones, and pineapples do — packs as tightly as possible into a disc. Drag the slider; the result falls apart immediately.
Fifteen pendulums of slightly increasing length. Each has its own period — so they fall out of phase, drift into a snake, a wave, a braid of motion, then chaos. Wait long enough and they all snap back into a line.
The 2D wave equation on a drumhead. A pulse spreads outward, bounces off the walls, and when two pulses meet they pass right through each other and keep going. Tap anywhere on the canvas to drop in another.
Any shape — any periodic signal — is just a sum of rotating circles. Stack enough of them and you can trace out arbitrary curves. The cleanest example of how complicated things turn out to be secretly simple.
Two populations of brain cells — excitatory and inhibitory — coupled in feedback. Excitation recruits inhibition; inhibition suppresses excitation; the cycle produces the brain's gamma rhythm. The phase plane shows the geometry of the oscillation.
Stronger E↔I coupling and τ_I > τ_E gives a Hopf bifurcation. E ramps up, recruits I, I suppresses E, both fall, E recovers, cycle repeats. This is the canonical mechanism for cortical gamma rhythms (~40 Hz).
The electron in a hydrogen atom isn't pinned to a point — it's smeared into a cloud. The probability density peaks at a distance set by one parameter ζ. Drag it; the orbital contracts or balloons.
Exact 1s ground state of hydrogen — ζ = Z = 1. The peak of the radial probability sits at r* = 1/ζ = 1 Bohr radius, the textbook Bohr radius result.
Around 250 pages on math, physics, neuroscience, statistics, and programming — each paired with code or a visualization you can play with.
Welcome to notesoncomputing.com — some notes on some things I've learned, or am working toward understanding. I use language models, so not every line of code was written by me nor every line of text. I think that the results of my work, no matter if they are incomplete, are more valuable on this website than just stored away in a place where no one will see them. I cannot promise perfect accuracy, but I can promise to improve the contents every chance I get. I'd rather ship something useful and imperfect than wait for a version that never arrives. This site will always be version 0.0.1 in my mind.
Spot something wrong, or have an idea for a correction or improvement? Email me at adam.c.zettel@gmail.com. If your feedback shapes a page, I'll add an acknowledgement on it.