Michał Górny
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
2025 3
2024 11
- Poetry(-core), or the ultimate footgun
- The peculiar world of Gentoo package testing
- Testing the safe time64 transition path
- The perils of transition to 64-bit time_t
- Overview of cross-architecture portability problems
- Gentoo: profiles and keywords rather than releases
- Optimizing distutils-r1.eclass via wheel reuse
- The review-work balance, and other dilemmas
- The dead weight of packages in Gentoo
- Optimizing parallel extension builds in PEP517 builds
- The story of distutils build directory in Gentoo
2023 8
- A format that does one thing well or one-size-fits-all?
- A script to set file timestamps based on filenames
- My thin wrapper for emerge(1)
- Problems faced when downstream testing Python packages
- X-alpha hexadecimal notation
- Naming standards compliance of PEP517 backends
- The inconsistencies around Python package naming and the new policy
- Handy commands to clean up old ~arch-only packages
2022 2
2021 12
- The future of Python build systems and Gentoo
- The stablereq workflow for Python packages
- Getting DTS 5.1+ sound via S/PDIF or HDMI using PulseAudio
- The ultimate guide to EAPI 8
- Retiring the multilib project
- From build-dir to venv — testing Python packages in Gentoo
- 10 Years’ Perspective on Python in Gentoo
- Moving commits between independent git histories
- Why not rely on app developer to handle security?
- The modern packager’s security nightmare
- lzip decompression support for xz-utils
- Distribution Kernels: module rebuilds, better ZFS support and UEFI executables
2020 12
- OpenSSL, LibreSSL, LibreTLS and all the terminological irony
- How Debuggers Work: Getting and Setting x86 Registers, Part 2: XSAVE
- How Debuggers Work: Getting and Setting x86 Registers, Part 1
- DISTUTILS_USE_SETUPTOOLS, QA spam and… more QA spam?
- Speeding up emerge depgraph calculation using PyPy3
- Sleeping and waking up
- New vulnerability fixes in Python 2.7 (and PyPy)
- New tools to help with package cleanups
- Is an umbrella organization a good choice for Gentoo?
- Why proactively clean Python 2 up?
- Gentoo Python Guide
- No more PYTHON_TARGETS in single-r1
2019 12
- Handling PEP 517 (pyproject.toml) packages in Gentoo
- A distribution kernel for Gentoo
- A better ebuild workflow with pure git and pkgcheck
- Gentoo eclass design pitfalls
- Improving distfile mirror structure
- The gruesome MediaWiki API
- Verifying Gentoo election results via Votrify
- SKS poisoning, keys.openpgp.org / Hagrid and other non-solutions
- gen-revoke: extending revocation certificates to subkeys
- Evolution: UID trust extrapolation attack on OpenPGP signatures
- Identity with OpenPGP trust model
- Attack on git signature verification via crafting multiple signatures
2018 15
- Portability of tar features
- New copyright policy explained
- Overriding misreported screen dimensions with KMS-backed drivers
- Securing google-authenticator-libpam against reading secrets
- new* helpers can read from stdin
- We mostly protect against script kiddie attacks
- OpenPGP key expiration is not a security measure
- Inlining path_exists
- Verifying repo/gentoo.git with gverify
- The story of Gentoo management
- Empty directories, *into, dodir, keepdir and tmpfiles.d
- A short history of Gentoo copyright
- On OpenPGP (GnuPG) key management
- Copyright 101 for Gentoo contributors
- The ultimate guide to EAPI 7
2017 4
2016 11
- Few notes on locale craziness
- Common filesystem I/O pitfalls
- Dependency classes and allowed dependency types
- Dependency pitfalls regarding slots, slot ops and any-of deps
- On good metadata.xml maintainer descriptions
- bugs.gentoo.org: bug assignment UserJS
- How LINGUAS are thrice wrong!
- Why automated gentoo-mirror commits are not signed and how to verify them
- A quick note on portable shebangs
- Mangling shell options in ebuilds
- GLEP67, or how packages are going to be maintained
2015 2
2014 9
- pshs — the awesome file sharing tool
- PyPy is back, and for real this time!
- Password security in network applications
- Bash pitfalls: globbing everywhere!
- The Council and the Community
- Inlining -march=native for distcc
- Reducing SquashFS delta size through partial decompression
- A few words on lzip compressor
- Using deltas to speed up SquashFS updates
2013 5
2012 9
- A few words on the topic of optimization
- The impact of C++ templates on library ABI
- Research question: integral type sizes on various platforms
- GitHub — or how to re-centralize a DVCS
- vim: smart C/C++ boilerplate templates
- A C API for C++ and Python ones — or making of libh2o
- Five commandments for XML format designers
- The suggested dependencies problem
- Moving systemd into /usr — the technical side
2011 13
- Why there’s no IUSE=systemd, logrotate, bash-completion…
- Cleaning up /boot with eclean-kernel
- 027 umask — a compromise between security and simplicity
- Eclasses, Portage and PMS
- Building Mozilla plugins without Mozilla
- libtinynotify — a smaller implementation of Desktop Notifications
- PMS Test Suite: D-Bus → …?
- uam can now mount CDs and DVDs!
- PMS Test Suite: getting the test results
- systemd.eclass: use it in your packages!
- PMS Test Suite: the project design
- PMS Test Suite: choosing the test library format
- A few words of introduction