The Curious Engineer

All blogs / Linux / Unix

Michał Górny

blogs.gentoo.org/mgorny

Retroactively fixing the world

Linux / UnixPythonSoftware / engineering practiceDev tools / editors / IDEs

Posts
136 from 18 May 2011 to 27 Oct 2026
Posting
monthly (9 in the last year)
Kind
personal blog
Feed
https://blogs.gentoo.org/mgorny/feed/

2026 8

  1. The next circle of security hell
  2. A plea not to use uv-build
  3. How hard is it to get a jobserver client right?
  4. pkgbump: from a dumb tool to an irreplaceable helper
  5. 2026 Council Manifesto
  6. Why Gentoo?
  7. The pinnacle of enshittification, or Large Language Models
  8. Money isn’t going to solve the burnout problem

2025 3

  1. One jobserver to rule them all
  2. How we incidentally uncovered a 7-year old bug in gentoo-ci
  3. EPYTEST_PLUGINS and other goodies now in Gentoo

2024 11

  1. Poetry(-core), or the ultimate footgun
  2. The peculiar world of Gentoo package testing
  3. Testing the safe time64 transition path
  4. The perils of transition to 64-bit time_t
  5. Overview of cross-architecture portability problems
  6. Gentoo: profiles and keywords rather than releases
  7. Optimizing distutils-r1.eclass via wheel reuse
  8. The review-work balance, and other dilemmas
  9. The dead weight of packages in Gentoo
  10. Optimizing parallel extension builds in PEP517 builds
  11. The story of distutils build directory in Gentoo

2023 8

  1. A format that does one thing well or one-size-fits-all?
  2. A script to set file timestamps based on filenames
  3. My thin wrapper for emerge(1)
  4. Problems faced when downstream testing Python packages
  5. X-alpha hexadecimal notation
  6. Naming standards compliance of PEP517 backends
  7. The inconsistencies around Python package naming and the new policy
  8. Handy commands to clean up old ~arch-only packages

2022 2

  1. .tar sorting vs .xz compression ratio
  2. Clang in Gentoo now sets default runtimes via config file

2021 12

  1. The future of Python build systems and Gentoo
  2. The stablereq workflow for Python packages
  3. Getting DTS 5.1+ sound via S/PDIF or HDMI using PulseAudio
  4. The ultimate guide to EAPI 8
  5. Retiring the multilib project
  6. From build-dir to venv — testing Python packages in Gentoo
  7. 10 Years’ Perspective on Python in Gentoo
  8. Moving commits between independent git histories
  9. Why not rely on app developer to handle security?
  10. The modern packager’s security nightmare
  11. lzip decompression support for xz-utils
  12. Distribution Kernels: module rebuilds, better ZFS support and UEFI executables

2020 12

  1. OpenSSL, LibreSSL, LibreTLS and all the terminological irony
  2. How Debuggers Work: Getting and Setting x86 Registers, Part 2: XSAVE
  3. How Debuggers Work: Getting and Setting x86 Registers, Part 1
  4. DISTUTILS_USE_SETUPTOOLS, QA spam and… more QA spam?
  5. Speeding up emerge depgraph calculation using PyPy3
  6. Sleeping and waking up
  7. New vulnerability fixes in Python 2.7 (and PyPy)
  8. New tools to help with package cleanups
  9. Is an umbrella organization a good choice for Gentoo?
  10. Why proactively clean Python 2 up?
  11. Gentoo Python Guide
  12. No more PYTHON_TARGETS in single-r1

2019 12

  1. Handling PEP 517 (pyproject.toml) packages in Gentoo
  2. A distribution kernel for Gentoo
  3. A better ebuild workflow with pure git and pkgcheck
  4. Gentoo eclass design pitfalls
  5. Improving distfile mirror structure
  6. The gruesome MediaWiki API
  7. Verifying Gentoo election results via Votrify
  8. SKS poisoning, keys.openpgp.org / Hagrid and other non-solutions
  9. gen-revoke: extending revocation certificates to subkeys
  10. Evolution: UID trust extrapolation attack on OpenPGP signatures
  11. Identity with OpenPGP trust model
  12. Attack on git signature verification via crafting multiple signatures

2018 15

  1. Portability of tar features
  2. New copyright policy explained
  3. Overriding misreported screen dimensions with KMS-backed drivers
  4. Securing google-authenticator-libpam against reading secrets
  5. new* helpers can read from stdin
  6. We mostly protect against script kiddie attacks
  7. OpenPGP key expiration is not a security measure
  8. Inlining path_exists
  9. Verifying repo/gentoo.git with gverify
  10. The story of Gentoo management
  11. Empty directories, *into, dodir, keepdir and tmpfiles.d
  12. A short history of Gentoo copyright
  13. On OpenPGP (GnuPG) key management
  14. Copyright 101 for Gentoo contributors
  15. The ultimate guide to EAPI 7

2017 4

  1. Optimizing ccache using per-package caches
  2. GLEP 73 check results explained
  3. Why you can’t rely on repository format (PMS)
  4. The Tale of Pythonia

2016 11

  1. Few notes on locale craziness
  2. Common filesystem I/O pitfalls
  3. Dependency classes and allowed dependency types
  4. Dependency pitfalls regarding slots, slot ops and any-of deps
  5. On good metadata.xml maintainer descriptions
  6. bugs.gentoo.org: bug assignment UserJS
  7. How LINGUAS are thrice wrong!
  8. Why automated gentoo-mirror commits are not signed and how to verify them
  9. A quick note on portable shebangs
  10. Mangling shell options in ebuilds
  11. GLEP67, or how packages are going to be maintained

2015 2

  1. The Ultimate Guide to EAPI 6
  2. Surround sound over network with Windows 8

2014 9

  1. pshs — the awesome file sharing tool
  2. PyPy is back, and for real this time!
  3. Password security in network applications
  4. Bash pitfalls: globbing everywhere!
  5. The Council and the Community
  6. Inlining -march=native for distcc
  7. Reducing SquashFS delta size through partial decompression
  8. A few words on lzip compressor
  9. Using deltas to speed up SquashFS updates

2013 5

  1. Getting tokens for verification
  2. SSL certificate login for okupy
  3. Keeping the majority happy
  4. Local device access — from plugdev to logind
  5. The pointless art of subslots

2012 9

  1. A few words on the topic of optimization
  2. The impact of C++ templates on library ABI
  3. Research question: integral type sizes on various platforms
  4. GitHub — or how to re-centralize a DVCS
  5. vim: smart C/C++ boilerplate templates
  6. A C API for C++ and Python ones — or making of libh2o
  7. Five commandments for XML format designers
  8. The suggested dependencies problem
  9. Moving systemd into /usr — the technical side

2011 13

  1. Why there’s no IUSE=systemd, logrotate, bash-completion…
  2. Cleaning up /boot with eclean-kernel
  3. 027 umask — a compromise between security and simplicity
  4. Eclasses, Portage and PMS
  5. Building Mozilla plugins without Mozilla
  6. libtinynotify — a smaller implementation of Desktop Notifications
  7. PMS Test Suite: D-Bus → …?
  8. uam can now mount CDs and DVDs!
  9. PMS Test Suite: getting the test results
  10. systemd.eclass: use it in your packages!
  11. PMS Test Suite: the project design
  12. PMS Test Suite: choosing the test library format
  13. A few words of introduction