Brendan Lynskey

Portfolio

Sites, decks and simulators

I built all of this for my own learning, and I am still working my way through it.

Hardware, DSP and signal integrity first, where most of my career has been; then sixteen interactive explainer sites in four tracks, the showcases, how the numbers are checked, and the deck library.

HardwareSitesShowcasesChecksDecksMethod

Home ground

Hardware, DSP and signal integrity

Where most of my career has been: channels and equalisers, RTL and its verification, accelerator simulators and the DSP behind audio. Each card links a series hub; the hubs link the decks.

Signal Integrity & High-Speed Digital Design

Getting a signal from one chip to another intact: transmission lines, return paths, materials, vias, crosstalk, jitter, power integrity, timing budgets, de-embedding and channel operating margin. Every number is computed by a model and checked against published worked examples.

17 decks, 188 slides; 20 cross-checks against published results, the largest difference 2.44 %.

Code and modelsInterview notes

FHE Accelerator Simulators

Simulating a fully homomorphic encryption accelerator running CKKS bootstrapping: the workload, the anatomy of bootstrapping, a SimPy accelerator model with a live in-browser simulator, optical NTT engines and the design space.

Five decks; the simulator has a bit-exact JavaScript port and replays OpenFHE traces.

FHE_Accelerator_Sim (code)NTT RTL co-simulation

DSP, neural sound synthesis and audio plugins

A twelve-part interactive series on how machine learning makes sound, an audio plugins hub with a JUCE tutorial and seven example plugins, and browser synthesisers, analysers and guides to the transforms. Every sound is synthesised live in the browser.

Twelve parts; the DSP & Music index lists 50 projects in 8 areas.

Audio PluginsDSP & Music index

Compute in Transit

Can useful work be done on LLM training and inference traffic while it crosses a link? Five decks on a photonic link module (arXiv:2608.21536), its operations-per-byte budget, frequency-domain gradient compression and a fixed-band experiment, with a results site.

The answer at this scale is negative, and the series says so.

Results site

Hardware index: RTL, RISC-V, Arm and more

Everything else in hardware: a RISC-V SoC built from separately verified subsystems, Arm Cortex-M, Cortex-A, Neoverse, AMBA and system IP series, dividers, CORDIC and NN number formats in SystemVerilog, Galois fields, optical technology and power electronics.

The Hardware index lists 52 projects.

RISC-V SoCOptical technology

Interactive sites

Sixteen sites, four tracks

I built these sites for my own learning, and I am still working my way through them. Each one is a computed, animated reading experience: the animations are drawn from a tested model, not hand-made. Every site's header has a menu to all the others, and every repository ships its models, fixtures and CI.

Foundations

One small model, end to end

Hardware

The machines underneath, chip to rack

Hardware › Kernels

How a GPU executes the maths

How this is checkedThe GPU model is checked against the CUDA Programming Guide's worked examples (coalescing, bank conflicts, occupancy), and its TypeScript port reproduces the Python reference exactly.

How it is tested (GPU Kernels Explained)

Hardware › Racks

GPUs, networks, power, cooling at scale

How this is checkedEvery hardware figure carries its source and the date it was read, and the model is checked against published rack, switch and fabric totals that it does not take as inputs.

How it is tested (AI Racks Explained)

Inference

Serving models at scale

Inference › Serving

How real systems generate text

How this is checkedThe serving simulator in chapters 11–14 is Disaggregated_Inference_Sim's own engine, copied byte for byte from a pinned commit, and CI requires every request's timestamps to match its Python original; the tiny model's cached logits are bit-identical to full recomputation.

How it is tested (LLM Inference Explained)

Inference › Numerics

Number formats and quantisation

How this is checkedEvery code of every format up to 16 bits is checked against numpy and ml_dtypes, and the TypeScript port in your browser reproduces the Python reference exactly.

How it is tested (Numerics Explained)

Agents

Building on models

Agents › Harnesses

The loop between a model and the world

How this is checkedAgent_Loop_Sim's Python reference and the TypeScript port in your browser produce the same events, token for token and float for float, and three recorded runs of a small open-weights model are replayed token for token.

How it is tested (Agent Harnesses Explained)

Agents › Context

Retrieval, memory and context engineering

How this is checkedEvery retrieval number is measured on 200 SQuAD questions with real MiniLM embeddings and recorded reranker scores, and the TypeScript engine in your browser reproduces the Python reference exactly, with no tolerance.

How it is tested (Agent Context Explained)

Agents › Evals

Measuring agents

How this is checkedThe estimators are tested against scipy and statsmodels on a synthetic benchmark whose truth is known, and the TypeScript engine in your browser reproduces every Python fixture bit for bit.

How it is tested (Agent Evals Explained)

Showcases

Hardware agents and compute experiments

HW Design-Space Agent

A LangGraph agent that explores hardware design trade-offs from one spec down a fidelity ladder to synthesis, with every number from a recorded run.

Agent code

Compute in Transit: results

Can a fixed frequency band replace DeMo's top-k? An experiment, emulated optics and a training-transit simulation, with an honest negative result.

Code

Verification

How I check the numbers

A model that agrees only with itself proves little, so every site is checked against something independent of it. Four examples, quoted from the sites:

Against RTL613 / 0

Systolic: “compares every accumulator after every clock edge with the model: 613 values, 0 mismatches”, in Verilator.

The check →
Against LangGraph39 sessions

Orchestration: real LangGraph 1.2.14. “After each of the 71 operations”, the whole checkpoint history is compared.

The check →
Against the official SDKs160 messages

Protocols: “the engine must produce the same 160 messages, compared as JSON with request IDs renumbered”.

The check →
Against PyTorch1e-5

Decoder: the TypeScript transformer is “checked against PyTorch fixtures, operation by operation, to within 1e-5”.

The check →

Deck library

The index hubs

Lecture-style slide decks go deeper than the sites. These indexes list them; the counts are taken from each index's README when this page is built.

LLMs

The main index: the interactive sites, then sub-hubs from transformer internals and GPU hardware to retrieval, agents, evaluations and safety.

41 sub-hubs · 275 decks

Hardware

RTL, RISC-V and Arm, SoC design, arithmetic units, optical technology, signal integrity and power electronics.

52 projects

Signal Integrity

One repository, five sections, a long-form PDF alongside.

17 decks · 188 slides

DSP & Music

Synthesisers, analysis and effects, audio plugins, signal-processing guides and neural audio synthesis.

50 projects · 8 areas

Software

CI/CD, Jenkins and GitHub Actions, identity and authorisation, cloud, web, algorithms and tooling.

110 projects

Mathematics

Cryptography, coding theory, quantitative finance, mathematics for machine learning and historical mathematicians.

39 projects

Method

How this is built

I choose the topics, write the specifications and set the rules for verification: every number on these pages comes from tested code or a cited, dated source, every browser port must reproduce its Python reference, and every model is checked against something independent of it. I check the numbers, and I own them.

The building is done with Claude (Anthropic's Claude Code) as an agentic engineering workflow. One session plans the work and writes a brief; another carries the brief out; the first then checks the result against the brief before anything is published. Every commit made this way carries a Co-Authored-By: Claude line, so the split is visible in each repository's history.