The Curious Engineer

All blogs / Software / engineering practice

Robert Heaton

robertheaton.com

Software engineer. One-track lover down a two-way lane

Software / engineering practiceSecurityEmulationEssays / personal

Posts
225 from 5 Jan 2013 to 11 Jun 2025
Posting
now and then
Kind
personal blog
Feed
https://robertheaton.com/feed.xml

2025 3

  1. diceomatic: a DSL for making children's dice games
  2. MinorMiner: we turn your kid's maths homework into Bitcoin
  3. It's not cheating if you write the video game solver yourself

2024 4

  1. PyMyFlySpy: track your flight using its headrest data
  2. Generating infinite, age-appropriate Cat Crimes puzzles
  3. PySkyWiFi: completely free, unbelievably stupid wi-fi on long-haul flights
  4. I've written a book about being a dad; now I want to get it published

2023 5

  1. Thousands of elderly twins assure me that my kids will be alright
  2. Hello Deep Learning
  3. How to pass a coding interview with me
  4. I thought I knew what I was doing this time: how our second son was born
  5. Gamebert: a Game Boy emulator built by Robert

2022 12

  1. How sad should I be about ChatGPT?
  2. Gameboy Doctor: debug and fix your gameboy emulator
  3. How to date a recording using background electrical noise
  4. Love the details
  5. I love him more and more every day on average
  6. Soon he’ll be three and soon he’ll be twenty-one
  7. I'm a security engineer and I still almost got scammed
  8. We're responsible for the Christmas magic now
  9. Off-The-Record Messaging part 1: the problem with PGP
  10. Off-The-Record Messaging part 2: deniability and forward secrecy
  11. Off-The-Record Messaging part 3: how OTR works
  12. Off-The-Record Messaging part 4: key insights

2021 8

  1. I wouldn't call my friends strong male role models but they'll have to do
  2. How to write better sentences: 6 examples
  3. Height: 2ft 10 inches. Occupation: baby
  4. Vulnerability in Bumble dating app reveals any user's exact location
  5. Another family without a backstory
  6. Reliable osquery deployment for the paranoid
  7. Deleting Facebook
  8. Don't worry son, all your friends are weirdos too

2020 36

  1. Buying a first home
  2. It can’t be for nothing: notes from The Last of Us Part 2
  3. Another RCE vulnerability in KensingtonWorks
  4. I got married and had kids so you don't have to
  5. Programming Projects for Advanced Beginners #7: Auto-project-builder
  6. What is an advanced beginner?
  7. PFAB #19: Working with raw bytes
  8. Preventing impossible game levels using cryptography
  9. PFAB #18: Adventures in shrinking serialized data
  10. PFAB #17: pre-computation sounds like cheating but isn't
  11. Remote code execution vulnerability in KensingtonWorks mouse manager
  12. PFAB #16: How to make your code faster and why you often shouldn't bother
  13. A blogging style guide, vol. 2
  14. PFAB #15: Don't overwork your functions
  15. The coronavirus and happy birthday edition
  16. PFAB #14: Evil `eval`
  17. How does a TCP Reset Attack work?
  18. PFAB #13: When code is too clever to be clean
  19. Hundreds of companies assert usage rights over all ideas sent through their services
  20. Systems design for advanced beginners
  21. How to make yourself happier by making your iPhone worse
  22. Smile by Papa (Gary Computer Remix)
  23. PFAB #11: Separating logic and data
  24. Interview on the Cyberwire podcast about Wacom data collection
  25. Re-rolling the dice
  26. Online tracking is about finding excuses to send HTTP requests
  27. PFAB #10: First-class functions and dependency injection
  28. Don't let "Magic Enhancer for YouTube" slurp up your browsing history
  29. PFAB #9: Batch vs Stream processing
  30. Send me your privacy abuse tipoffs
  31. Wacom drawing tablets track the name of every application that you open
  32. PFAB #8: Input validation - tradeoffs between convenience and surprise
  33. How to set up The Hive on AWS ElasticSearch
  34. Great cement ideas that will make your partner happy
  35. PFAB#7: How to write a library
  36. 2019 review

2019 38

  1. PFAB#6: Real-world debugging practice
  2. PFAB#5: How to make your programs shorter
  3. PFAB#4: Exception handling and coping with failure
  4. PFAB#3: How to rigorously analyze your journey to work
  5. Why I have office hours and why you should too
  6. PFAB#2: How to structure your programs
  7. How to man-in-the-middle proxy your IOT devices
  8. PFAB#1: Define your boundaries
  9. I will give you feedback on your code
  10. Programming Feedback for Advanced Beginners #0
  11. Untitled Potato Portrait
  12. How to come up with blog post ideas
  13. HP printers try to send data back to HP about your devices and what you print
  14. Oscar Heaton, quarterly baby review
  15. Programming Projects for Advanced Beginners #6: User Logins
  16. Real-World Programming Projects for Advanced Beginners
  17. Peeking through stock option exercise windows
  18. Programming Videos for Advanced Beginners #1: Battleships
  19. Maximizing profits and evaluating success as a Craigslist seller
  20. How to write an afl wrapper for any language
  21. Port scans and industrial fans
  22. I was 7 words away from being spear-phished
  23. Childbirth: a father's-eye view
  24. Endless Summer by The Midnight: a brief analysis
  25. Skeptical advice for programming jobseekers
  26. Synth1: an unofficial manual
  27. Open Source for Advanced Beginners #1: bashplotlib
  28. Open Source for Advanced Beginners
  29. How does Tor work?
  30. The Robot Reserve Army of Labor
  31. What beginner's mind is really like
  32. ROBERT: prove that your randomized trial really was random
  33. How to get to Silver in Rocket League 1v1s
  34. Making peace with Simpson's Paradox
  35. Introducing Afl-Ruby: fuzz your Ruby programs using afl
  36. It was all so easy
  37. Third-party dream cookies
  38. A brief history of wi-fi privacy vulnerabilities

2018 35

  1. The Wavefunction Collapse Algorithm explained very clearly
  2. Programming Projects for Advanced Beginners
  3. A blogging style guide
  4. Programming Projects for Advanced Beginners #5: Snake
  5. HTTPS in the real world
  6. The therapeutic properties and applications of Dark Souls
  7. Reproducible beliefs
  8. Programming Projects for Advanced Beginners #4: Photomosaics
  9. I Might Be Spartacus: a differential privacy marketplace
  10. /office-hours
  11. Programming Projects for Advanced Beginners #3a: Tic-Tac-Toe AI
  12. Programming Projects for Advanced Beginners #3b: Tic-Tac-Toe AI
  13. Lessons from my first 20 office hours
  14. What playing The Witness will teach my kid about problem solving
  15. How to build a TCP proxy
  16. How to build a TCP proxy #2: Fake DNS Server
  17. How to build a TCP proxy #3: Proxy Server
  18. How to build a TCP proxy #4: Fake Certificate Authority
  19. I'm giving feedback on blog posts
  20. Talk: Traits of Successful Software Developers
  21. How I kicked my email compulsion
  22. "Stylish" is back, and you still shouldn't use it
  23. What does a 0.01 increase in the Gini Coefficient actually look like?
  24. She wanted to do something better
  25. Programming Projects for Advanced Beginners #2: Game of Life
  26. I'm doing office hours
  27. How Tinder keeps your exact location (a bit) private
  28. I went to Skyrim, once
  29. "Stylish" browser extension steals all your internet history
  30. How to read
  31. Programming Projects for Advanced Beginners #1: ASCII art
  32. Why economists need bureaucracy
  33. Making YouTube less bad for you using CSS
  34. Re: all those regrettable posts that you thought were gone
  35. Let's grow the Richmond: SB827

2017 13

  1. Another 10 somewhat advanced Magic: The Gathering plays
  2. Identity Graphs: how online trackers follow you across devices
  3. Cookie Syncing: how online trackers talk about you behind your back
  4. How does online tracking actually work?
  5. A zero-knowledge proof for the existence of God
  6. What's the worst word you'd say to beat your in-laws at Boggle?
  7. What is a self-hosting compiler?
  8. WeSeeYou: Democratizing Deanonymization
  9. Tracking friends and strangers using WhatsApp
  10. Reverse engineering LogicPro synth files
  11. Confessions of an Economic Hitman - a review
  12. A small, security-adjacent bug in Instagram
  13. Notes from Rep. Jackie Speier's Town Hall

2016 13

  1. A tale of love, betrayal, social engineering and WhatsApp
  2. There were millions
  3. Building a Magic: The Gathering sealed deck AI
  4. 10 somewhat advanced Magic: The Gathering plays
  5. How to make Slack less bad for you
  6. Hide the internet
  7. Randomness-Driven Recruiting
  8. A delightful piece of spam from Xfinity
  9. Writing stories is not like programming
  10. In context
  11. There was only time like the present
  12. I am with the police
  13. He whispered, carelessly

2015 13

  1. How they solved True Detective Season 1
  2. A day at The Free Market
  3. How to value your startup stock options
  4. Why and how to make smaller pull requests
  5. American Prankster
  6. Three Body Problem by Cixin Liu - the Cultural Revolution, in space
  7. Robber Barons understand technical debt too
  8. Favorite bits from my insane, never-to-be-published novel
  9. Staying safe cycling San Francisco's Wiggle
  10. Migrating bajillions of database records at Stripe
  11. The SSL FREAK vulnerability explained
  12. Scientific debugging
  13. Something that I don't talk about much

2014 22

  1. Green Waves on an arbitrary Valencia Street
  2. Fun with your friend's Facebook and Tinder session tokens
  3. Why you should read Playing to Win by David Sirlin
  4. Tales from a San Francisco housing search (DELETED SCENES)
  5. Tales from a San Francisco housing search
  6. Lessons from a surprisingly successful blog
  7. Is Ruby pass-by-reference or pass-by-value?
  8. How to win friends and influence repos
  9. Getting Nothing Done: a misguided quest for productivity
  10. Why I love refactoring
  11. Code review without your glasses
  12. A beginners' guide to funemployment
  13. Jaccard Similarity and MinHash for winners
  14. 9 ways to get that engineer
  15. Why you should be vegetarian
  16. Downfall of a once readable blog post
  17. How does HTTPS actually work?
  18. Lessons from a Silicon Valley job search
  19. Is Python pass-by-reference or pass-by-value?
  20. Cookieless user tracking for douchebags
  21. Mathematicians hate civil liberties: 100 prisoners and 100 boxes
  22. The Blue-Eyed Islanders Puzzle

2013 17

  1. Kanban at London's National Gallery
  2. The hidden way Bootstrap saved your life
  3. The Padding Oracle Attack
  4. How to hack a Rails app using its secret_token
  5. When you have a nail in your eye, everything looks like a nail
  6. You should be a mentor
  7. Infinite monkeys and infinite repos
  8. Check you’re wearing trousers first
  9. Take pride or f--- it
  10. How chronic pain has made me happier
  11. Coding with gumption
  12. You are not getting any better
  13. Featurewhack
  14. Nothing new under the sun
  15. How to save 1 day/year of quality Rails time
  16. Quantum Annealing, or, Do Weird Stuff
  17. Why it’s the taxpayer’s fault we’ve got no money

Undated 6

  1. Office hours
  2. Programming Projects for Advanced Beginners
  3. Send me your privacy abuse tipoffs
  4. Open Source for Advanced Beginners: Intro
  5. Programming Projects for Advanced Beginners: Intro
  6. Dad book