Alex Gaynor
Hi, I'm Alex. I'm a software resilience engineer. I care about building systems that work. I've worked for the government, in the private sector, and on open source. I'm based in Washington, DC.
- Posts
- 270 from 3 Nov 2008 to 7 Sep 2026
- Posting
- now and then (5 in the last year)
- Kind
- personal blog
- Feed
- https://alexgaynor.net/feed.xml
2026 3
2025 15
- Unsafe Defaults in Statutory Severability Analysis
- Relish: A new serialization format
- Motion to Dismiss for Failure to State a Vulnerability
- So you want to serialize some DER?
- What is a Benchmark?
- Standard Libraries and their Discontents
- Putting a Price Tag on Open Source
- Postel's Law and the Three Ring Circus
- Notes on coreutils in Rust
- Things have reasons
- Generality
- Do tech workers have a reason to love monopolies?
- The SSO Tax is Smart Business, and Bad Security
- Stop Demanding Performance
- Challenges to funding open source
2024 5
2023 1
2022 1
2021 1
2020 5
2019 10
- 2019 Security Wish List In Review
- On Safety Critical Software
- A Memory Safety Research Agenda
- Introduction to Memory Unsafety for VPs of Engineering
- Read code more
- Modern C++ Won't Save Us
- Notes on the challenges to the adoption of security keys
- Chrome + Windows Exploit: Security Beyond Bugfixes
- Notes on fuzzing ImageMagick and GraphicsMagick
- Security wish list for 2019
2018 5
2017 8
- A vulnerability by any other name
- Response to Deputy Attorney General Rosenstein's remarks on Encryption
- Surviving Apache Struts CVE-2017-5638
- Categorizing Security Engineering Work
- Forward secrecy is the most important thing
- Introduction to Certificate Transparency for Server Operators
- A year of tracking my HTTP requests
- SHA1 and Richard Feynman
2016 6
2015 10
- Shrinking your code review
- 5 critically important security projects
- Telemetry for Open Source
- Rust: A modern programming environment
- Tips for Improving Your Company's Security
- Tips for Scaling Web Apps
- Introduction to Fuzzing in Python with AFL
- Red Hat and the Open Source Community
- DevOps vs. Platform Engineering
- Software Of the People, By the People, For the People
2014 36
- The State of the News and TLS: Part II
- The West Wing Revisited: Let Bartlet Be Bartlet
- The State of the News and TLS
- I Hope Twitter Goes Away
- My Ideal Development Environment
- The West Wing Revisited: Six Meetings Before Lunch
- The West Wing Revisited: The White House Pro-Am
- The West Wing Revisited: 20 Hours in L.A.
- The West Wing Revisited: Celestial Navigation
- The West Wing Revisited: Take this Sabbath Day
- The West Wing Revisited: Take out the Trash Day
- Advocating for the Devil
- The West Wing Revisited: He Shall, From Time to Time?
- The West Wing Revisited: Lord John Marbury
- The West Wing Revisited: In Excelsis Deo
- The West Wing Revisited: The Short List
- The West Wing Revisited: Enemies
- The West Wing Revisited: The State Dinner
- The West Wing Revisited: Mr. Willis of Ohio
- How to Code Review Without Being a Jerk
- HTTP Considered Unethical
- The West Wing Revisisted: The Crackpots and These Women
- The West Wing Revisited: Five Votes Down
- The West Wing Revisited: A Proportional Response
- The West Wing Revisited: Post Hoc Ergo Propter Hoc
- Python for Ada
- The West Wing Revisited
- Math Games
- There is a flash of light! Your PYTHON has evolved into ...
- Quo Vadimus?
- Service
- Best of PyCon 2014
- House and Twitter
- Why Crypto
- Why Travis CI is great for the Python community
- PyPI Download Statistics
2013 21
- About Python 3
- Gender neutral language - An FAQ
- Affirmative action
- Security process for Open Source Projects
- Meritocracy
- Thoughts on Lavabit
- Effective Code Review
- Being negative
- Doing a release is too hard
- You guys know who Philo Farnsworth was?
- Your project doesn't mean your playground
- Why I support diversity
- An open letter to the security community
- You don't have to be a jerk to code review
- Your tests are not a benchmark
- Thoughts on OpenStack
- Weekly Updates
- Moving to Rackspace
- Perception
- Disambiguating BSON and msgpack
- Software Design: 80/20 libraries
2012 4
2011 12
- The perils of polyglot programming
- Why del defaultdict()[k] should raise an error
- RCOS NumPy Talk
- The run-time distinction
- So you want to write a fast Python?
- DjangoCon Europe 2011 Slides
- This Summer
- My experience with the computer language shootout
- PyPy San Francisco Tour Recap
- Django and Python 3 (Take 2)
- Announcing VCS Translator
- PyCon 2011 is going to be Awesome
2010 44
- 2010 in Review
- Getting the most out of tox
- Programming Languages Terminology
- Symptoms and Diseases
- A statically typed language I'd actually want to use
- Not everything sucks
- The continuous integration I want
- National Blog Post Month
- Priorities
- Cui Bono
- Prohibition doesn't Work
- The Pakistan Problem
- US Interventionism and its Fallout
- Dynamic and Static Programming Languages and Teaching
- US Counterinsurgency and Terrorism Policy
- Afghani Elections
- django-taggit 0.9 Released
- Political Religion
- Democracy in Colonial Areas
- Upcoming Content
- DjangoCon 2010 Slides
- Education Slides
- PyOhio Slides
- Testing Utilities in Django
- MultiMethods for Python
- Hey, could someone write this app for me
- DjangoCon.eu slides
- PyPy is the Future of Python
- A Tour of the django-taggit Internals
- Why Utilitarianism Fails
- Cool New django-taggit API
- Making Django and PyPy Play Nice (Part 1)
- Designer Developer Relations
- Towards Application Objects in Django
- Languages Don't Have Speeds, Or Do They?
- PyCon Roundup - Days 2-4
- PyCon Roundup - Days 0 and 1
- Committer Models of Unladen Swallow, PyPy, and Django
- Thoughts on HipHop PHP
- Why Open Source Works
- I Have Talent
- Dive into Python 3 Review
- Hot Django on WSGI Action (announcing django-wsgi)
- A New Home
2009 48
- A few thoughts on education
- A month in review
- You Built a Metaclass for *what*?
- Getting Started with Testing in Django
- Django and Python 3
- Why Meta.using was removed
- Just a Small Update
- Final Review of Python Essential Reference
- Filing a Good Ticket
- Using PLY for Parsing Without Using it for Lexing
- A Bit of Benchmarking
- Things College Taught me that the "Real World" Didn't
- Announcing django-admin-histograms
- Another Pair of Unladen Swallow Optimizations
- Writing a Lexer
- My Next Blog
- Initial Review: Python Essential Reference
- Why jQuery shouldn't be in the admin
- Syntax Matters
- Why I'm not very excited about Go
- When Django Fails? (A response)
- The State of MultiDB (in Django)
- Software that deserves a thank you
- Another Unladen Swallow Optimization
- My Workflow
- Towards a Better Template Tag Definition Syntax
- The Pycon Program Committee and my PyCon Talk
- Django's ManyToMany Refactoring
- Diving into Unladen Swallow's Optimizations
- Introduction to Unladen Swallow
- Another month of blogging?
- Optimising compilers are there so that you can be a better programmer
- Django-filter 0.5 released!
- pyvcs .2 released
- Announcing pyvcs, django-vcs, and piano-man
- A response to "Python sucks"
- EuroDjangoCon 2009
- Ajax Validation Aministrivia
- ORM Panel Recap
- PyCon Wrapup
- Google Moderator for PyCon ORM Panel
- Announcing django-filter
- A Second Look at Inheritance and Polymorphism with Django
- Building a Magic Manager
- Django Ajax Validation 0.1.0 Released
- Optimizing a View
- New Admin URLs
- 2008 and 2009
2008 35
- Building a Read Only Field in Django
- Building a Function Templatetag
- Many Thanks to Webfaction
- PyCon '09, Here I come!
- Playing with Polymorphism in Django
- A month in review
- A Few More Thoughts on the Identity Mapper
- Fixing up our identity mapper
- Building a simple identity map in Django
- Other ORM Goodies
- Some thoughts on Blogging
- What aggregates are going to look like
- Home Sweet Home
- A timeline view in Django
- A quick update
- Thinking about netbooks
- My Programming Language - Status Update
- Why I don't use easy_install
- Uncoupled code is good, but doesn't exist
- What Python learned from economics
- Running the Django Test Suite
- What I'm excited about in Django 1.1
- Python Things
- And now for the disclaimer
- Django Models - Digging a Little Deeper
- What software do I use?
- Getting Started With PLY - Part 3
- How the Heck do Django Models Work
- Getting Started With PLY - Part 2
- Getting Started With PLY
- That's not change we can believe in
- Building a Programming Language with Python
- PyGTK and Multiprocessing
- More Laziness with Foreign Keys
- Lazy User Foreign Keys