57,803 blogs · [ { "id": "01a0d501-769d-7152-98f7-8a7a69e05d3c", "title": "Zsh: find the largest files with the (OL) glob qualifier", "url": "https://adamj.eu/tech/2026/09/21/zsh-ol-glob-qualifiers/", "published_at": "2026-09-20T23:00:00+00:00" }, { "id": "01a0d501-769d-7152-98f7-8a7a6ad995cc", "title": "macOS: use caffeinate to keep your computer on", "url": "https://adamj.eu/tech/2026/09/20/macos-caffeinate/", "published_at": "2026-09-19T23:00:00+00:00" }, { "id": "01a0d501-769d-7152-98f7-8a7a6b6a97fb", "title": "Python: join my optimization workshop in Lisbon, 10th October", "url": "https://adamj.eu/tech/2026/09/19/python-optimization-workshop-lisbon/", "published_at": "2026-09-18T23:00:00+00:00" }, { "id": "01a0d501-769d-7152-98f7-8a7a6ba1e75e", "title": "Django: serve the change password well-known URL", "url": "https://adamj.eu/tech/2026/09/16/django-change-password-url/", "published_at": "2026-09-15T23:00:00+00:00" }, { "id": "01a0d501-769d-7152-98f7-8a7a6c43fc6b", "title": "Django: introducing django-mcpz, for making MCP servers", "url": "https://adamj.eu/tech/2026/09/15/introducing-django-mcpz/", "published_at": "2026-09-14T23:00:00+00:00" }, { "id": "01a0871f-89fb-7328-9a76-d5a4214a84ac", "title": "Zsh: manipulate filenames with modifiers like :r (root) and :e (extension)", "url": "https://adamj.eu/tech/2026/08/24/zsh-filename-modifiers/", "published_at": "2026-08-23T23:00:00+00:00" }, { "id": "01a0871f-89fb-7328-9a76-d5a4220a18b2", "title": "Django: django-upgrade 1.32.0 out now, with 44 AI-assisted bug fixes", "url": "https://adamj.eu/tech/2026/08/18/django-upgrade-1.32.0-44-bug-fixes/", "published_at": "2026-08-17T23:00:00+00:00" }, { "id": "01a0871f-89fb-7328-9a76-d5a422251ce0", "title": "Python: use re.prefixmatch() instead of re.match() from Python 3.15", "url": "https://adamj.eu/tech/2026/08/16/python-prefer-prefixmatch-to-match/", "published_at": "2026-08-15T23:00:00+00:00" }, { "id": "01a0871f-89fb-7328-9a76-d5a4229f4518", "title": "Python: fix SyntaxWarning: invalid octal escape sequence", "url": "https://adamj.eu/tech/2026/08/14/why-does-python-log-a-warning-for-invalid-octal-escape-sequence/", "published_at": "2026-08-13T23:00:00+00:00" }, { "id": "01a0871f-89fb-7328-9a76-d5a422ce7f43", "title": "Python: fix TypeError: NamedTuple() got an unexpected keyword argument", "url": "https://adamj.eu/tech/2026/08/13/python-fix-typeerror-namedtuple-got-an-unexpected-keyword-argument/", "published_at": "2026-08-12T23:00:00+00:00" }, { "id": "01a0871f-89fb-7328-9a76-d5a423a77d03", "title": "Python: introducing emojet, a fast emoji lookup library", "url": "https://adamj.eu/tech/2026/08/12/python-introducing-emojet/", "published_at": "2026-08-11T23:00:00+00:00" }, { "id": "01a0871f-89fb-7328-9a76-d5a4241addc7", "title": "Python: tprof 1.3.0: now with less overhead", "url": "https://adamj.eu/tech/2026/08/08/python-tprof-performance/", "published_at": "2026-08-07T23:00:00+00:00" }, { "id": "01a0871f-89fb-7328-9a76-d5a4242e472f", "title": "Django: introducing django-msgspec", "url": "https://adamj.eu/tech/2026/08/07/introducing-django-msgspec/", "published_at": "2026-08-07T21:24:00+00:00" }, { "id": "01a0871f-89fb-7328-9a76-d5a424ab035b", "title": "Git: my git stash -p optimization in Git 2.55", "url": "https://adamj.eu/tech/2026/08/07/git-stash-p-optimization-story/", "published_at": "2026-08-07T20:05:00+00:00" }, { "id": "01a0871f-89fb-7328-9a76-d5a42581efb2", "title": "Git: list files at a given commit with ls-tree", "url": "https://adamj.eu/tech/2026/08/07/git-list-files-at-commit/", "published_at": "2026-08-06T23:00:00+00:00" } ] posts Claim your blog
Back to Adam Johnson
Blog · corpus.blog/blogs/adamj.eu/posts

Adam Johnson

adamj.eu

2026