ENOSUCHBLOG
Programming, philosophy, pedaling.
- Posts
- 208 from 10 Feb 2015 to 31 Aug 2026
- Posting
- monthly (10 in the last year)
- Kind
- personal blog
- Feed
- https://blog.yossarian.net/feed.xml
- Also at
- https://yossarian.net/
2026 7
2025 11
- Some flexibility with Go’s sumdb
- Dependency cooldowns, redux
- We should all be using dependency cooldowns
- Sep 22 - Dear GitHub: no YAML anchors, please
- Sep 14 - One year of zizmor
- Aug 14 - Fun with finite state transducers
- Jun 17 - A new adventure
- Jun 11 - Bypassing GitHub Actions policies in the dumbest way possible
- May 7 - A Discord server and new GitHub organization for zizmor
- Jan 10 - Be aware of the Makefile effect
- Jan 2 - zizmor 1.0
2024 11
- Dec 6 - zizmor would have caught the Ultralytics workflow vulnerability
- Nov 18 - Security means securing people where they are
- Oct 27 - Introducing zizmor: now you can have beautiful clean workflows
- Sep 10 - YAML feature extraction with yamlpath
- Aug 18 - Tracking and publishing my TILs
- Aug 12 - Approximating sum types in Python with Pydantic
- Jun 12 - Python wheel filenames have no canonical form
- Apr 30 - Reducing my blogging cadence
- Mar 20 - More thoughts on vulnerabilities and misaligned incentives
- Feb 26 - High-quality Rust data models for GitHub Actions
- Jan 23 - A new release of ff2mpv
2023 13
- Dec 24 - You don't need analytics on your blog
- Nov 19 - Function interposition in Rust with upgrayedd
- Oct 18 - Some concerns with OpenPubKey
- Sep 22 - GitHub Actions could be so much better
- Aug 20 - Two quick hacks for laptop in-flight Delta Wi-Fi with T-Mobile
- Jul 27 - Introducing shaq, a CLI for Shazam
- Jul 16 - Looking for additional maintainers on a few projects
- Jun 27 - Software-defined (Internet) radio with Liquidsoap
- May 21 - PGP signatures on PyPI: worse than useless
- Apr 14 - Introducing pgpkeydump
- Mar 20 - Introducing awair-local-api.rs
- Feb 11 - The unsafe language doom principle
- Jan 9 - A few small PulseAudio configuration tricks
2022 14
- Dec 28 - ReDoS "vulnerabilities" and misaligned incentives
- Dec 14 - Going write-only on Twitter (and introducing autopost)
- Nov 7 - Modernizing my 1980s sound system
- Oct 4 - This blog is now automatically deployed
- Sep 14 - Tornado Cash and bullets
- Aug 20 - Why don't we do email verification in reverse?
- Jul 25 - age encryption in Python with pyrage
- Jun 29 - kbs2 0.6.x
- May 9 - A most vexing parse, but for Python packaging
- Apr 30 - LLVM internals, part 5: a very brief update
- Mar 10 - Things I hate about Rust, redux
- Feb 21 - Enjoying music curation again
- Feb 2 - Setting up Navidrome with Nginx as a reverse proxy
- Jan 23 - ff2mpv now supports Chromium-based browsers
2021 13
- Dec 12 - Calculating my open source blast radius
- Dec 5 - Blockchains don't solve problems that are interesting to me
- Nov 29 - LLVM internals, part 4: attributes and attribute groups
- Oct 25 - A small DOCUMERICA Twitter bot
- Sep 14 - LLVM internals, part 3: from bitcode to IR
- Aug 10 - LLVM internals, part 2: parsing the bitstream
- Jul 19 - LLVM internals, part 1: the bitcode format
- Jun 1 - Playing with Apple's weird compression formats
- May 3 - kbs2 0.3.x
- Apr 13 - Tools that I want
- Mar 16 - totally_safe_transmute, line-by-line
- Feb 28 - Weird architectures weren't supported to begin with
- Jan 21 - Introducing usb-ids.rs
2020 20
- Dec 24 - A few HiDPI tricks for Linux
- Dec 16 - Static calls in Linux 5.10
- Dec 6 - kbs2 0.2.x
- Nov 30 - How many registers does an x86-64 CPU have?
- Nov 5 - Towards an automated changelog workflow
- Oct 23 - Understanding static single assignment forms
- Sep 19 - LLVM's getelementptr, by example
- Aug 16 - Hiding messages in x86 binaries using semantic duals
- Aug 2 - Writing and publishing a Python module in Rust
- Jul 18 - kbs2 0.1.x
- Jun 20 - Goodbye KBSecret, hello kbs2
- Jun 13 - How x86_64 addresses memory
- Jun 3 - You may not use my projects in a military or law enforcement context
- May 20 - Things I hate about Rust
- May 7 - Locating a compiler bug with git bisection
- Apr 12 - Developing an intuition for soundness and completeness
- Mar 9 - Implementing the Clipper chip cipher in Rust
- Mar 2 - Totally ordered enums in Python with ordered_enum
- Feb 3 - Finding treacherous encoding permutations with baseperm
- Jan 23 - Anybody can write good bash (with a little effort)
2019 13
- Dec 25 - A (shallow) dive into the American banking system
- Nov 2 - Hacktoberfest Wrapup
- Oct 23 - Flexible Travis CI stages with YAML references
- Sep 26 - Introducing llvm-passgen
- Aug 18 - Introducing cazart
- Aug 10 - Exploring Square's S6 reader at DEF CON
- Jul 24 - Reasoning about faithless actors with undercutting semantics
- Jun 9 - Pipelines in Ruby with Open3
- May 18 - Basic disassembly with libopcodes
- Apr 23 - Make is (probably) fine
- Mar 7 - Self-encrypted mail in NeoMutt (with GPGme)
- Feb 23 - Thoughts on Perpetual Peace
- Jan 20 - General Project Updates and Thanks
2018 27
- Dec 18 - Kernelspace syscall interception, or: How to write a rootkit without really trying
- Nov 11 - Scanning the .nyc gTLD
- Oct 10 - Introducing netstring.cr
- Oct 3 - A Month of Robocalls
- Sep 20 - Kant, Happiness, Moral Worthiness
- Sep 1 - yossarian.net now supports IPv6!
- Aug 25 - Introducing bindef, a DSL for defining binary files
- Aug 20 - Disagreement: Language and Metalanguage
- Jul 5 - ruby-macho 2.0.0
- Jun 18 - Introducing notify.cr
- May 26 - How many GDPR notices did I get?
- May 14 - Introducing abbrev.cr
- May 8 - CMSC389R: A Wrapup
- May 5 - How I Write
- Apr 27 - KBSecret 1.6.x
- Apr 8 - Introducing qrencode.cr
- Apr 4 - KBSecret 1.3.x
- Apr 1 - Code coverage with SimpleCov across multiple processes
- Mar 26 - Thoughts on building better (online) communities
- Mar 24 - What does Facebook have on me?
- Mar 15 - blog.yossarian.net is now self-hosted
- Mar 3 - Moral Worth in Arpaly's Philanthropic Cases, from a Kantian Perspective
- Feb 10 - KBSecret has a new website
- Jan 22 - Reading Manpages Like a Pro
- Jan 17 - KBSecret 1.0
- Jan 6 - Introducing i3.cr
- Jan 3 - Megabus: A Study in Guessability
2017 31
- Dec 30 - Introducing x_do.cr
- Dec 18 - Installing Pi-hole on a Pi
- Dec 11 - KBSecret 0.9.x: Many, Many Things
- Nov 27 - Announcing CMSC389R — "Introduction to Ethical Hacking"
- Nov 21 - The Zone of Indifference Should be Pretty Small
- Nov 1 - Hacktoberfest Wrapup
- Oct 26 - Keybase on the CI
- Oct 17 - Thoughts on Thoughts on Motive
- Oct 3 - A Programmer's Programmer
- Sep 5 - Philosophy Summarized: The Euthyphro Dilemma
- Aug 18 - KBSecret has a website now
- Jul 21 - Introducing ruby-inih
- Jul 19 - KBSecret 0.7.x: Secret Generators, Internal Fields, and Session Notifications
- Jul 5 - KBSecret 0.6.x: Sensitive Fields, Error Handling, and DRYer Sessions
- Jun 28 - Spotify is (Still) Violating CAN-SPAM
- Jun 25 - Fragments, 1
- Jun 23 - KBSecret 0.5.x: Packages, Typed Arguments, and More
- Jun 7 - KBSecret is Maturing
- May 30 - One Month with the Pebble Time
- May 16 - Is Stasis Possible?
- May 5 - Cleaner Function Wrapping in C
- Apr 27 - Team Photos are Here
- Apr 24 - Proxying ZNC Without a Subdomain
- Apr 16 - Task Management with kbsecret
- Apr 8 - Augmenting my Workflow with kbsecret
- Apr 5 - Ballad of a D Racer
- Mar 5 - Random Mosaics with ffmpeg and Ruby
- Feb 2 - Thoughts on Aristotelian Determinism and Future Contingents
- Jan 22 - Mini-post: New Domain and More
- Jan 16 - Mini-post: Introducing ruby-mpv
- Jan 2 - Muzak, Week 5
2016 19
- Dec 25 - Muzak, Week 4
- Dec 19 - Muzak, Week 3
- Dec 12 - Muzak, Week 2
- Dec 5 - Muzak, Week 1
- Nov 29 - Introducing Muzak - A "Metamusic" Player
- Oct 15 - Mini-post: Switching to i3 on Ubuntu
- Oct 7 - Decoding the MetroCard, Part 2.5: Early Results
- Aug 20 - State of ruby-macho, GSoC 2016 Wrap-Up Edition
- Aug 13 - State of ruby-macho, Weeks of 8/1 and 8/8
- Jul 31 - State of ruby-macho, Weeks of 7/11, 7/18 and 7/25
- Jul 17 - Decoding the MetroCard, Part 2: Research and Past Attempts
- Jul 7 - State of ruby-macho, Weeks of 6/27 and 7/4
- Jun 26 - State of ruby-macho, Weeks of 6/13 and 6/20
- Jun 12 - State of ruby-macho, Weeks of 5/30 and 6/6
- May 18 - Neat Things I've Found This Week
- May 13 - Moving woodruffw.us to Let's Encrypt
- Mar 13 - My School Wants My Palm Print
- Feb 13 - An rwx Theory of Programming Languages
- Jan 20 - Mini post: Testing Out Multiprocess Firefox
2015 29
- Dec 29 - Thoughts on the "Universality" of Consciousness
- Dec 19 - Analyzing UMD Arrest Data
- Dec 7 - Mini-post: Abusing to_s for Brevity in Ruby
- Nov 9 - Mini rant: Emoji and Git
- Nov 1 - Session Management in Sublime Text
- Oct 5 - Death To Clickers
- Sep 28 - Five Things I Hate About Ruby
- Sep 1 - Thoughts on Motive
- Aug 23 - A Week On Dialup
- Aug 13 - String Formatting With Ruby Dynamic Hashes
- Jul 22 - The Dismal State of HTML
- Jul 14 - Abusing Signals for Shell Synchronization
- Jul 2 - CAN-SPAM Compliance is Important
- Jun 29 - Mini-post: Glitch Art with RMagick
- Jun 24 - Decoding the Metrocard, Part 1: Introduction and History
- Jun 9 - Mini-post: Dates That Don't Exist
- May 28 - IRC Phishing with Typosquatting
- May 8 - The 'Death' of IRC
- Apr 26 - Administrivia: RSS and Google Analytics
- Apr 23 - Mini-post: More Power User Tools
- Apr 6 - Amazon Dash: Those Who Cannot Remember The Past...
- Apr 2 - Mini-post: Digraphs and Trigraphs
- Mar 20 - Identifying and Enumerating IRC bots with IBIP
- Mar 14 - Who Needs Toolkits When You Have Xlib?
- Mar 9 - Mini-post: Introduction to Pointers
- Mar 3 - Paste Scraping: Lessons (Not) Learned
- Feb 27 - The Problem with $PATH
- Feb 18 - Mini-post: ++x++
- Feb 10 - Configuration for Fun and Profit