Thomas Ahle

Thomas Dybdahl Ahle

Head of Machine Learning, Normal Computing · Copenhagen

My work combines AI and theory. On the AI side, I build agents that design, formalize and verify chips. On the theory side, I work on hashing with machine-checked guarantees, fast polynomial evaluation, optimization theory, and the foundations of massive data: similarity search, sketching and high-dimensional geometry.

A drawing of me

Manuscripts

All manuscripts

Coauthors: Mikkel Abrahamsen, Maxwell Aifer, Martin Aumüller, Suhaas M. Bhat, Yaroslav Bulatov, Derek Christ, Patrick J. Coles, Gavin E. Crooks, Kaelan Donatella, Sam Duffield, Jan Ole Ernst, Max Hunter Gordon, Matthias Jung, Michael Kapralov, Sahar Karimi, Mohammad Abu Khater, Phoebe Klett, Jakob Bæk Tejs Knudsen, Stanislav Levental, Antonio J. Martinez, Denis Melanson, Rasmus Pagh, Peter M. R. Rasmussen, Ilya Razenshteyn, Christopher Ré, Christopher De Sa, Dmitri Michelangelo Saberi, Rajath Salegame, Faris Sbahi, Francesco Silvestri, Daniel Simpson, Peter Tang, Mikkel Thorup, Henry Ling-Hei Tsang, Ameya Velingker, David P. Woodruff, Amir Zandieh, Thomas Zimmermann, Anders Åmand.

From the Blog

All posts

Adversarial Examples for Fast Hash Functions

Explicit colliding inputs for komihash, a5hash, MuseAir, t1ha2, HighwayHash and others under random seeds, measured as worst-case collision bits, next to hash functions with proven bounds and their speed.

Read more

Recent Posts

Bluesky Twitter

Most of my day-to-day posting happens on Bluesky and Twitter.

Software & Games

Software

tensorgrad [source] [cookbook]
Symbolic tensor manipulation and derivatives using tensor diagrams. Companion to The Tensor Cookbook.
ChainHash [source] [benchmarks]
A fast universal hash function with a machine-checked collision bound.
Fast polynomials [source] [try it]
Compiles a polynomial into a chain with about half the multiplications of Horner's method.
Trace Taxi [source] [open]
An interactive viewer for AI agent traces.
latex2png [source] [use it]
Converts LaTeX equations to PNG, JPEG or SVG images.
RIES Online [source] [use it]
An inverse symbolic calculator that finds equations matching a given number.

Games

Lichess [profile]
Challenge me to a game of chess.
Sunfish [source] [play]
A minimalist chess engine, playing as a bot on Lichess.
PyChess [website] [play]
A chess engine and Internet chess client.
Liar's Dice [source] [play] [blog post]
A bluffing dice game with an AI based on Neural Counterfactual Regret.
TrainBox [play]
A train-based puzzle game.
numberlink [source] [play]
A generator and a fast solver for numberlink puzzles.
codenames [source]
An AI that plays Codenames using word embeddings.
fastchess [source]
Predicts chess moves with a single matrix multiplication.

Media

Machine Learning Street TalkJun 2026

The Thermodynamic AI Chip

Podcast interview on using swarms of AI agents to design and formally verify chips, and on Normal Computing's thermodynamic computing work.

Semiconductor EngineeringJun 2026

Can AI Create Missing Models?

Quoted on training surrogate models versus steering real systems end-to-end with AI.

ProsaMay 2021

En ulv i fåreklæder

I was interviewed by the IT workers union on Google's FLoC system and the use of SimHash.

Teaching & Other

Teaching

Practical Concurrent and Parallel Programming
MSc course on correct and efficient concurrent and parallel software, primarily using Java, on standard shared-memory multicore hardware.
Algorithms and Data Structures
Teaching assistant for Thore Husfeldt's BSc course at ITU in 2015, where I contributed to the lab exercises.
Programming problems
Challenges I set on the Sphere Online Judge: POWTOW, TRANSFER, REALROOT, NANO, WAYHOME, VFRIENDS, VFRIEND2.
ICPC team notebook [source]
The algorithms reference my team, Lambdabamserne, brought to the 2015 ICPC World Finals.

Other

Wikipedia [contributions]
I created the articles on Tensor sketch and Pagh's problem, wrote most of Polynomial evaluation, and added substantially to Count sketch, Tabulation hashing, k-independent hashing, CUR matrix approximation, Cantelli's and Khintchine inequalities, and the Marchenko–Pastur, Wishart and super-Poissonian distributions.
Q&A [stackoverflow] [math.se] [mathoverflow] [cstheory]
About 200 answers on Stack Overflow, mostly on Python, Java and Android, and about 100 on Math.SE on probability, inequalities and algorithms, plus MathOverflow and cstheory. On Chess.SE I worked out the average length of a chess game from 731,000 games.
OEIS [profile]
Integer sequences I added: A188668 and A188816 (the Irwin–Hall distribution), A217595 (polyominoes without holes), A239288 (a maximal composition sum) and A255192 (connected subgraphs of K(n,n)).
Juleflet [website] [source]
A designer and templates for Danish woven Christmas hearts.
Danish course [memrise]
Learn Danish through its 500 most common words, taken from film subtitles. Memrise has since retired its community courses, so this links to an archived copy.
Spejdrpedia [website]
An online scout handbook.