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