Blog
In-depth articles and explorations.
2026
Why Generic OCR Fails on Real-World Forms
Newest
2023
What 55 Trained Models Taught Me About Data Augmentation Building Deep Learning from Scratch, Part 3: A Transformer in PyTorch 2022
What Seven Failed Autoencoders Taught Me About Anomaly Detection Building Deep Learning from Scratch, Part 2: A Neural Network in 60 Lines of NumPy Building Deep Learning from Scratch, Part 1: An Autograd Engine in 80 Lines of Python Super-Resolution Research, Part 6: Implementing SRCNN from Scratch Super-Resolution Research, Part 5: Building the Dataset Pipeline Super-Resolution Research, Part 3: The Round-Trip Problem Super-Resolution Research, Part 7: How Preprocessing Choice Corrupts Training Super-Resolution Research, Part 4: Finding Sub-Images with SIFT Feature Matching Super-Resolution Research, Part 2: Why Resizing Libraries Disagree Super-Resolution Research, Part 1: Why PSNR Benchmarks Are Not Reproducible Super-Resolution Research, Part 8: The clean-fid Bug That Hid Behind Square Images