Math ∩ Programming
CKKS — Key Switching and Relinearization
CKKS — Addition and Multiplication
Hotword detection in FHE on GPU in 350ms
CKKS — Encryption and Decryption
Updates on HEIR, the homomorphic encryption compiler project
More whimsical OEIS sequences
CKKS — Polynomials, the Canonical Embedding, and Encoding
Unusual uses of OEIS sequences on GitHub
The OEIS meta sequence and subway stations
The Irrational Decision—A Book Review
Bicyclic Matrix-Matrix Multiplication in Fully Homomorphic Encryption
Integer Set Library (ISL) - A Primer
FHE@PDX 2025
Frequently Asked Questions about FHE
Leibniz's Dream and Dijkstra's nightmare
My Graduate Career in Math
HEIR talk at FHE.org
Does Baby Have Hat
My 4-year-old declares 36 the best number
Anyone know of an approachable proof of the Caratheodory-Fejer theorem?
Explainable Linear Programs
I'll be at the JMM
Epiphanies from Tape Measures
Fully Homomorphic Encryption and the Public
The last few months in HEIR
Attention spans for math and stories
Carnival of Mathematics #233
How This Blog Does IndieWeb
LWE Attack Benchmarking Project
Dynamic Programming Fail
Packing Matrix-Vector Multiplication in Fully Homomorphic Encryption
Shift Networks
Webmentions and POSSE improvements
MLIR — Defining Patterns with PDLL
Polynomial dialect and mlir-opt tutorial upstreamed
Fully Homomorphic Encryption in Production Systems
Ben Recht on Meehl's Philosophical Psychology
Detecting field names with C++ metaprogramming
Barycentric Lagrange Interpolation
Random life updates
Math databases
Experiments with POSSE
Remez and function approximations
A High-Level Technical Overview of Fully Homomorphic Encryption
Unusual Tips for Parenting Toddlers
Tabletop Games Based on Math Problems
MLIR — A Global Optimization and Dataflow Analysis
MLIR — Lowering through LLVM
MLIR — Dialect Conversion
Socks, a matching game based on an additive combinatorics problem
MLIR — Canonicalizers and Declarative Rewrite Patterns
Encoding Schemes in FHE
MLIR — Verifiers
MLIR — Folders and Constant Propagation
MLIR — Using Traits
Computing Percentages Easier
MLIR — Defining a New Dialect
MLIR — Using Tablegen for Passes
MLIR — Writing Our First Pass
MLIR — Running and Testing a Lowering
MLIR — Getting Started
Google's Recent FHE work, and starting HEIR
Two's Complement and Group Theory
We're Knot Friends
Sample Extraction from RLWE to LWE
Google's Fully Homomorphic Encryption Compiler — A Primer
Estimating the Security of Ring Learning with Errors (RLWE)
Negacyclic Polynomial Multiplication
Polynomial Multiplication Using the FFT
Carnival of Mathematics #209
Key Switching in LWE
Modulus Switching in LWE
"Practical Math" Preview: Collect Sensitive Survey Responses Privately
Cocktails
Silent Duels—Constructing the Solution part 2
My next book will be "Practical Math for Programmers"
The Gadget Decomposition in FHE
Group Actions and Hashing Unordered Multisets
Carnival of Mathematics #197
Searching for RH Counterexamples — Exploring Data
Regression and Linear Combinations
Searching for RH Counterexamples — Productionizing
Searching for RH Counterexamples — Scaling Up
Searching for RH Counterexamples — Performance Profiling
Searching for RH Counterexamples — Deploying with Docker
Optimization Models for Subset Cover
Searching for RH Counterexamples — Unbounded Integers
Searching for RH Counterexamples — Search Strategies
Searching for RH Counterexamples — Adding a Database
Searching for RH Counterexamples — Setting up Pytest
Taylor Series and Accelerometers
Contextual Symbols in Math
Musings on A New Interface for Mathematics
Second Edition of A Programmer's Introduction to Mathematics
The Communicative Value of Using Git Well
A Good Year for "A Programmer's Introduction to Mathematics"
Silent Duels—Constructing the Solution part 1
Math Versus Dirty Data
A Working Mathematician's Guide to Parsing
Silent Duels—Parsing the Construction
Silent Duels and an Old Paper of Restrepo
A Programmer's Introduction to Mathematics
Hanabi: a card game for logicians
Visualizing an Assassin Puzzle
For mathematicians, = does not mean equality
A parlor trick for SET
Earthmover Distance
NP-hard does not mean hard
Binary Search on Graphs
Linear Programming and Healthy Diets — Part 2
Notes on Math and Gerrymandering
Boolean Logic in Polynomials
Mathematical Genealogy
Duality for the SVM
Formulating the Support Vector Machine Optimization Problem
The Inner Product as a Decision Rule
Testing Polynomial Equality
Bayesian Ranking for Rated Items
The Reasonable Effectiveness of the Multiplicative Weights Update Algorithm
A Spectral Analysis of Moore Graphs
Voltage, Temperature, and Harmonic Functions
Guest post, "What's up with graph Laplacians?"
Zero-Knowledge: Definitions and Theory
Zero Knowledge Proofs for NP
The Blum-Blum-Shub Pseudorandom Generator
Zero Knowledge Proofs — A Primer
Singular Value Decomposition Part 2: Theorem, Proof, Algorithm
Singular Value Decomposition Part 1: Perspectives on Linear Algebra
Tensorphobia and the Outer Product
Big Dimensions, and What You Can Do About It
Concrete Examples of Quantum Gates
Hashing to Estimate the Size of a Stream
Load Balancing and the Power of Hashing
The Inequality
A Quasipolynomial Time Algorithm for Graph Isomorphism: The Details
Serial Dictatorships and House Allocation
One definition of algorithmic fairness: statistical parity
The Boosting Margin, or Why Boosting Doesn't Overfit
The Welch-Berlekamp Algorithm for Correcting Errors in Data
The Čech Complex and the Vietoris-Rips Complex
What does it mean for an algorithm to be fair?
Methods of Proof — Diagonalization
Weak Learning, Boosting, and the AdaBoost algorithm
The Many Faces of Set Cover
Markov Chain Monte Carlo Without all the Bullshit
The Codes of Solomon, Reed, and Muller
Finding the majority element of a stream
Hamming's Code
A Proofless Introduction to Information Theory
Zero-One Laws for Random Graphs
The Giant Component and Explosive Percolation
Multiple Qubits and the Quantum Circuit
The Quantum Bit
A Motivation for Quantum Computing
Linear Programming and the Simplex Algorithm
Learning a single-variable polynomial, or the power of adaptive queries
The Complexity of Communication
On the Computational Complexity of MapReduce
Making Hybrid Images
Occam's Razor and PAC-learning
A Rook Game
When Greedy Algorithms are Perfect: the Matroid
Parameterizing the Vertex Cover Problem
An Update on "Coloring Resilient Graphs"
When Greedy Algorithms are Good Enough: Submodularity and the (1—1/e)-Approximation
The Mathematics of Secret Sharing
Linear Programming and Healthy Diets — Part 1
Learning to Love Complex Numbers
Community Detection in Graphs — a Casual Tour
A problem that is not (properly) PAC-learnable
Sending and Authenticating Messages with Elliptic Curves
Stable Marriages and Designing Markets
Elliptic Curve Diffie-Hellman
Connecting Elliptic Curves with Finite Fields
Want to make a great puzzle game? Get inspired by theoretical computer science.
Programming with Finite Fields
Martingales and the Optional Stopping Theorem
(Finite) Fields — A Primer
Elliptic Curves as Python Objects
On Coloring Resilient Graphs
Elliptic Curves as Algebraic Structures
Simulating a Biased Coin with a Fair Coin
Elliptic Curves as Elementary Equations
Simulating a Fair Coin with a Biased Coin
Introducing Elliptic Curves
Fixing Bugs in "Computing Homology"
RealityMining, a Case Study in the Woes of Data Processing
How to Conquer Tensorphobia
Probably Approximately Correct — a Formal Theory of Learning
The Two-Dimensional Fourier Transform and Digital Watermarking
Bandits and Stocks
Lagrangians for the Amnesiac
Adversarial Bandits and the Exp3 Algorithm
Optimism in the Face of Uncertainty: the UCB1 Algorithm
The Universal Properties of Map, Fold, and Filter
Anti-Coordination Games and Stable Graph Colorings
The Erdős-Rényi Random Graph
Linear Regression
Cauchy-Schwarz Inequality (and Amplification)
Functoriality
Reservoir Sampling
Guest Post: Torus-Knotted Baklava
Miller-Rabin Primality Test
Why Theoretical Computer Scientists Aren't Worried About Privacy
Conferences, Summer Work, and an Advisor
Rings — A Second Primer
Universal Properties
Properties of Morphisms
Bezier Curves and Picasso
Categories as Types
Rings — A Primer
Introducing Categories
Categories, What's the Point?
Probabilistic Bounds — A Primer
Computing Homology
A Sample of Standard ML, the TreeSort Algorithm, and Monoids
Homology Theory — A Primer
Conditional (Partitioned) Probability — A Primer
Methods of Proof — Induction
Seam Carving for Content-Aware Image Scaling
Methods of Proof — Contradiction
Methods of Proof — Contrapositive
Methods of Proof — Direct Implication
Why there is no Hitchhiker's Guide to Mathematics for Programmers
k-Means Clustering and Birth Rates
Depth- and Breadth-First Search
The Fundamental Group — A Primer
Probability Theory — A Primer
Groups — A Second Primer
Neural Networks and the Backpropagation Algorithm
Groups — A Primer
Information Distance — A Primer
Ramsey Number Lower Bound
Constructing Topological Spaces — A Primer
There are Infinitely Many Primes (Erdős)
Topological Spaces — A Primer
Decision Trees and Political Party Classification
Complete Sequences and Magic Tricks
Infinitely Many Primes (Using Topology)
Trees—A Primer
K-Nearest-Neighbors and Handwritten Digit Classification
Metric Spaces — A Primer
Machine Learning — Introduction
The Cellular Automaton Method for Cave Generation
Dynamic Time Warping for Sequence Comparison
The Fast Fourier Transform
Principal Component Analysis
The Discrete Fourier Transform — A Primer
Streaming Median
Thoughts after a Year of Math ∩ Programming
Generalized Functions — A Primer
The Fourier Transform — A Primer
Double Angle Trigonometric Formulas
False Proof – 2 = 4, As the Limit of an Infinite Power Tower
The Fourier Series—A Primer
Kolmogorov Complexity—A Primer
Optimally Stacking the Deck—Texas Hold 'Em
Classic Nintendo Games are NP-Hard
Caching (and Memoization)
In Place Uniform Shuffle
Learning Programming — Finger-Painting and Killing Zombies
Other Complexity Classes
P vs. NP, A Primer (And a Proof Written in Racket)
Busy Beavers, and the Quest for Big Numbers
Fundamental Theorem of Algebra (With Picard's Little Theorem)
Cryptanalysis with N-Grams
The Fundamental Theorem of Algebra (with Galois Theory)
Handshake Lemma
The Fundamental Theorem of Algebra (with the Fundamental Group)
The Fundamental Theorem of Algebra (with Liouville)
Word Segmentation, or Makingsenseofthis
A Spoonful of Python (and Dynamic Programming)
Numerical Integration
Random (Psychedelic) Art
Row Reduction Over A Field
Metrics on Words
Holidays and Homicide
Tiling a Chessboard with Dominoes (Opposite Colors Removed)
Z[√2] has Infinitely Many Units
Conway's Game of Life in Conway's Game of Life
False Proof: 1 = 2 (with Calculus)
The Smallest Non-Cyclic Simple Group has Order 60
A Taste of Racket
N Choose 2 is the Sum of the First N-1 Integers
n-Colorability is Equivalent to Finite n-Colorability (A Formal Logic Proof)
Graduate Studies
The Square Root of 2 is Irrational (Geometric Proof)
The Perceptron, and All the Things it Can't Perceive
A Dash of Python
Programming Primers—An Introduction
Number Theory—A Primer
Encryption & RSA
False Proof—All Numbers are Describable in at Most Twenty Words
Eigenfaces, for Facial Recognition
Inner Product Spaces—A Primer
Möbius Transformations are Isometries of a Sphere
Hunting Serial Killers
False Proof—The Reals are Countable
False Proof—All Horses are the Same Color
Graph Coloring, or Proof by Crayon
Three Circles and Collinear Centers of Dilation
Optimally Stacking the Deck—Kicsi Poker
Set Theory—A Primer
False Proof—31.5 = 32.5
False Proof—There are Finitely Many Primes
False Proof—1 = 2
Geometric Series with Geometric Proofs
Turing Machines—A Primer
Determinism and Finite Automata—A Primer
Sums of k Powers
Turing Machines and Conway's Dreams
The Wild World of Cellular Automata
Tiling a Chessboard
Teaching Mathematics—Graph Theory
Area of a Triangle
Sums of the first n numbers, squares
The Party Problem
Number of Games in a Tournament
Google's Page Rank—Why it Doesn't Work Anymore
Google's Page Rank—The Final Product
Featured Posts
Linear Algebra—A Primer
Google's PageRank—A First Attempt
Big-O Notation—A Primer
Well Orderings and Search
Prime Design
Google's PageRank—Introduction