Seth Larson
Python, open source, and the internet
- Posts
- 199 from 14 Apr 2001 to 29 Oct 2026
- Posting
- weekly (54 in the last year)
- Kind
- personal blog
- Feed
- https://sethmlarson.dev/feed
2026 40
- Bowser’s Fury outshines Sunshine, SA2B, and Billy Hatcher
- Documenting certificate distribution pain points for the Python ecosystem
- Gaming’s all-digital future doesn’t include “Sonic the Hedgehog 3” and “Pikmin 2”
- Blogging for the Python Language Summit
- Buying GameCube games from other regions
- When str.lower() is a security vulnerability in Python
- Let’s Play “htmx 4: the game”
- Extracting “Ocarina of Time: Master Quest” ROM from the Legend of Zelda: Wind Waker bonus disc
- recently purchased from Kraków, Poland
- EuroPython 2026: Learning from the “not-so-secret” Python security cabal
- Playing the “Second Quest” of Legend of Zelda: Four Swords Adventures
- Mario Kart World and “seamless” media
- United Nations Open Source Week 2026
- TIL “@here” only notifies online users on Discord and Slack
- Linting is important for code review: screen included
- Are insecure code completions a vulnerability?
- Is the Super Smash Bros. Brawl donut from Mister Donut?
- How much “Super Mario” per year?
- Using Epilogue Retrace app with iPhone 13 Pro and Ubuntu
- Library dependency version specifiers aren't for fixing vulnerabilities
- The Frog for Whom the Bell Tolls
- pip v26.1 adds support for relative dependency cooldowns
- More thoughts on Nintendo Switch 2 storage prices
- LAN Party Calculator (Mario Kart, Kirby Air Riders, F-Zero)
- Delta emulator
- Python library “Requests” needs you to test type hints
- I’ve added human.json to my website
- published a blog post
- finished Link’s Awakening
- Deprecate confusing APIs like “os.path.commonprefix()”
- Respecting maintainer time should be in security policies
- Automated public shaming of open source maintainers
- Cooler Analytics
- Dumping Nintendo e‑Reader Card “ROMs”
- Use “\A...\z”, not “^...$” with Python regular expressions
- mGBA → Dolphin not working? You need a GBA BIOS
- “urllib3 in 2025” available on Illia Volochii’s new blog
- hours staring at sprite-sheets
- New ROM dumping tool for SNES & Super Famicom from Epilogue
- Cutting spritesheets like cookies with Python & Pillow 🍪
2025 56
- Nintendo GameCube and Switch “Wrapped” 2025 🎮🎁
- Getting started with Playdate on Ubuntu 🟨
- SMS BCC tool
- PEP 770 Software Bill-of-Materials (SBOM) data from PyPI, Fedora, and Red Hat
- Delta emulator adds support for SEGA Genesis games
- Nintendo Switch, Switch 2
- Deprecations via warnings don’t work for Python libraries
- One weird trick for cheaper physical Switch 2 games?
- WebKit browsers see telephone numbers everywhere
- BrotliCFFI has two new maintainers
- Blogrolls are the Best(rolls)
- Ice Pikmin and difficulty of Pikmin Bloom event decor sets
- GameCube Nintendo Classics and storage size
- RSS feed for new Nintendo Classics games
- Easily create co-authored commits with GitHub handles
- Drawing an ASCII TIE fighter for post-quantum cryptography
- Re(blog, tweet, toot, skoot, skeеt, post)
- Is the "Nintendo Classics" collection a good value?
- Winning a bet about “six”, the Python 2 compatibility shim
- GZipped files and streams may contain names
- SCREAM CIPHER (“ǠĂȦẶAẦ ĂǍÄẴẶȦ”)
- Infinite Precision CVSS Calculator
- Extracting NES & N64 ROMs from Zelda Collector's Edition
- Draft SMS and iMessage from any computer keyboard
- The vulnerability might be in the proof-of-concept
- SMS URLs
- Extracting genesis and game gear roms from sega gamecube collections
- How many RSS subscribers do I have?
- What first-party GameCube titles are available on Nintendo Switch Online?
- Transferring “UTF8.XYZ”
- Extracting nes and famicom roms from animal crossing
- $200 USD in July 2025
- Email has algorithmic curation, too
- Nintendo GameCube
- Open Source Security work isn't “Special”
- Hand-drawn QR codes
- UN Open Source Week 2025: Security for the Long-Haul
- Pikmin 2 International Treasure Hoard
- Volunteer Responsibility Amnesty Day (Spring 2025)
- Animal CrosSCII
- Voicemail for notifications
- whichprovides: an abstraction of "yum provides"
- Better boosting on Mastodon with smart clients
- Quick Mastodon toot templates for event hashtags
- Everything Security at PyCon US 2025 🐍🛡️
- Nintendo Switch 2: DRM, expensive, and GameCube
- Don't bring slop to a slop fight
- I fear for the unauthenticated web
- #FediDonutFriday
- Post Malone Oreos
- Your GitHub Copilot access has been renewed 🤡
- Building software for connection (#2: Consensus)
- Building software for connection (#1: Local-First)
- Significant whitespace
- How to disable Copilot in GitHub?
- Quickly visualizing an SBOM document
2024 35
- New experimental Debian package for Cosign (Sigstore)
- slop vulnerability reports
- How do I pay the publisher of a web page?
- Visualizing the Python package SBOM data flow
- SEGA Genesis & Mega Drive games and ROMs from Steam
- Early promising results with SBOMs and Python packages
- Writing a blog on the internet
- Python and Sigstore
- EuroPython 2024 talks about security
- PyCon Taiwan 2024 Keynote
- 2024 Minnesota State Fair foods
- YouTube without YouTube Shorts
- Lockdown Mode for Apple devices
- CPython vulnerability data infrastructure (CVE and OSV)
- PyCon US 2024 as Security Developer-in-Residence
- Bringing supply chain security to PyCon US 2024
- Backup Game Boy ROMs and saves on Ubuntu
- Isolating risk in the CPython release process
- Open Source Summit North America 2024
- Microsoft supports urllib3 with FOSS Fund 2024
- CPython release automation, more Windows SBOMs
- Security Developer-in-Residence Weekly Report #32
- I blogged about this behavior
- Regex character “$” doesn't mean “end-of-string”
- Security Developer-in-Residence Weekly Report #31
- Windows SBOM work and Alpha-Omega 2023 annual report
- Websites without servers or networking
- Challenges while building SBOM infrastructure for CPython
- CPython 3.12.2 is SBOM-ified!
- Security Developer-in-Residence Weekly Report #27
- Releases on the Python Package Index are never “done”
- Removing maintainers from open source projects
- Defending against the PyTorch supply chain attack PoC
- urllib3 is fundraising for HTTP/2 support
- Security Developer-in-Residence Weekly Report #24
2023 35
- 2023 year in review
- Security Developer-in-Residence Weekly Report #23
- AI and Wonder
- Security Developer-in-Residence Weekly Report #22
- Mahjong tiles and Unicode variation selectors
- Python listed as memory-safe language in latest CISA recommendations
- Review of the Security Developer-in-Residence role in 2023
- Proposal for Software Bill-of-Materials for CPython
- Querying every file in every release on the Python Package Index
- OSS Security RFI, Guide to become a CNA, and PEP 639
- “For You” is not for me
- Patching the libwebp vulnerability across the Python ecosystem
- Quarterly report for Q3 2023 on the PSF Blog
- Reproducible builds for CPython source tarballs
- Python 3.12.0 from a supply chain security perspective
- Starting on Software Bill-of-Materials (SBOM) for CPython
- CPython vulnerabilities are now published to the Open Source Vulnerability Database
- Security Developer in Residence Weekly Report #10
- Visualizing the CPython Release Process
- Python Security Response Team handling of CVE-2023-40217
- Reconciling elegance and secure-by-design in APIs
- Security Developer-in-Residence – Weekly Report #7
- Security Developer-in-Residence – Weekly Report #6
- Quirks of Python package versioning
- Security Developer-in-Residence – Weekly Report #5
- Security Developer-in-Residence – Weekly Report #4
- Security Developer-in-Residence – Weekly Report #3
- Security Developer-in-Residence – Weekly Report #2
- Security Developer-in-Residence – Weekly Report #1
- I am the first PSF Security Developer-in-Residence
- urllib3 v2.0.0 is now generally available
- Google Assured OSS
- Python and SLSA 💃
- Testing multiple Python versions with nox and pyenv
- urllib3 in 2022
2022 12
- Working on urllib3 full-time for one week
- Ubuntu 22.10 on Dell XPS 15 9520
- Switching git back to GPG signing
- Preparing for the wave of open source funding
- Help us test system trust stores in Python
- Get paid to contribute to urllib3 (Newsletter #7)
- People in your software supply chain
- Security for package maintainers
- Move or recover your Wordle statistics
- How does UTF-8 turn “😂” into “F09F9882”?
- Strict Python function parameters
- Problems with testing Python pre-releases and pip caching
2021 7
- urllib3 raised $15,000 in 2021 (Newsletter #6)
- Experimental APIs in Python 3.10 and the future of trust stores
- Tests aren’t enough: Case study after adding type hints to urllib3
- The problem with Flask async views and async globals
- Everything to know about Requests v2.26.0
- urllib3 Newsletter #5
- urllib3 Newsletter #4