41554 blogs · [ { "id": "01a08797-81c6-71dc-b6d7-efcb2fa273e6", "title": "Upcoming site changes", "url": "https://kurtmckee.org/2026/06/upcoming-site-changes/", "published_at": "2026-06-19T17:25:00+00:00" }, { "id": "01a08797-81c6-71dc-b6d7-efcb2fbc49a0", "title": "Revitalizing stalled open source projects", "url": "https://kurtmckee.org/2023/08/revitalizing-stalled-open-source-projects/", "published_at": "2023-08-24T21:43:00+00:00" }, { "id": "01a08797-81c6-71dc-b6d7-efcb3023c21a", "title": "Test suite performance: Build wheels to go faster", "url": "https://kurtmckee.org/2023/05/build-wheels-to-go-faster/", "published_at": "2023-05-24T12:35:00+00:00" }, { "id": "01a08797-81c6-71dc-b6d7-efcb302b018f", "title": "dotbot-firefox 1.1.0", "url": "https://kurtmckee.org/2023/05/dotbot-firefox-1-1-0/", "published_at": "2023-05-23T13:59:00+00:00" }, { "id": "01a08797-81c6-71dc-b6d7-efcb306c2c60", "title": "pelican-precompress 2.2.0", "url": "https://kurtmckee.org/2023/05/pelican-precompress-2-2-0/", "published_at": "2023-05-23T11:50:00+00:00" }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea62ef9906b", "title": "pelican-granular-signals 1.1.0", "url": "https://kurtmckee.org/2023/05/pelican-granular-signals-1-1-0/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea62f65603f", "title": "Enabling vigilant mode on GitHub", "url": "https://kurtmckee.org/2022/12/github-vigilant-mode/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea62fc9dc4d", "title": "Announcing dotbot-firefox", "url": "https://kurtmckee.org/2022/10/announcing-dotbot-firefox/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea63008fd57", "title": "Fixing a missing Python REPL history", "url": "https://kurtmckee.org/2022/06/fixing-a-missing-python-repl-history/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea630c18c60", "title": "Managing your git config using dotbot", "url": "https://kurtmckee.org/2022/06/managing-your-git-config-using-dotbot/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea63146a78c", "title": "listparser 0.19", "url": "https://kurtmckee.org/2022/06/listparser-0.19/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea631bcea15", "title": "pelican-granular-signals 1.0.1", "url": "https://kurtmckee.org/2022/04/pelican-granular-signals-1-0-1/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea631c2c212", "title": "pelican-precompress 2.1.1", "url": "https://kurtmckee.org/2022/04/pelican-precompress-2-1-1/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea631e214a1", "title": "Announcing pelican-granular-signals", "url": "https://kurtmckee.org/2021/08/announcing-pelican-granular-signals/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea6329fd728", "title": "pelican-precompress 2.1.0", "url": "https://kurtmckee.org/2021/08/pelican-precompress-2-1-0/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea6332f2357", "title": "Keep code style out of code reviews", "url": "https://kurtmckee.org/2021/07/keep-code-style-out-of-code-reviews/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea633ddfbda", "title": "Monkeypatching: Retrieving data from the parent scope", "url": "https://kurtmckee.org/2020/10/monkeypatching-retrieving-data-from-the-parent-scope/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea634cfc4b9", "title": "Monkeypatching: The basics", "url": "https://kurtmckee.org/2020/07/monkeypatching-basics/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea6355494e3", "title": "pelican_precompress 1.1.1", "url": "https://kurtmckee.org/2020/07/pelican-precompress-1-1-1/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea635f133ff", "title": "Design for \"and\" and \"or\"", "url": "https://kurtmckee.org/2020/06/design-for-and-and-or/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea635f96187", "title": "Why you should document your test assertions", "url": "https://kurtmckee.org/2020/05/document-your-test-assertions/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea636ecefcd", "title": "Sitemap now included!", "url": "https://kurtmckee.org/2020/04/sitemap-now-included/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea6375dc850", "title": "JSON output from CLI commands", "url": "https://kurtmckee.org/2020/04/json-output-from-cli-commands/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea63817242e", "title": "Now available: my oldest posts!", "url": "https://kurtmckee.org/2020/04/now-available-my-oldest-posts/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea638ddb3f0", "title": "Friends with robots", "url": "https://kurtmckee.org/2020/03/friends-with-robots/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea639b27ea1", "title": "Redirecting www", "url": "https://kurtmckee.org/2020/03/redirecting-www/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea63a3f0728", "title": "Announcing pelican_precompress", "url": "https://kurtmckee.org/2020/02/announcing-pelican-precompress/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea63af94e57", "title": "Qotom Q350G4Y: My new router", "url": "https://kurtmckee.org/2020/01/qotom-q350g4y/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea63b714eba", "title": "Content attribution", "url": "https://kurtmckee.org/2020/01/content-attribution/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea63bbfb974", "title": "Enabling Brotli compression", "url": "https://kurtmckee.org/2020/01/enabling-brotli-compression/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea63bdd904f", "title": "Self-documenting code", "url": "https://kurtmckee.org/2019/12/self-documenting-code/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea63ccca9ed", "title": "Handling automatic favicon requests", "url": "https://kurtmckee.org/2019/12/handling-automatic-favicon-requests/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea63d19183c", "title": "CSS minification and cache busting", "url": "https://kurtmckee.org/2019/12/css-minification-and-cache-busting/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea63d347fb1", "title": "TLSv1.3 and caching", "url": "https://kurtmckee.org/2019/12/tls-1.3-and-caching/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea63dbf6798", "title": "Upgrading the site's HTTPS and TLS", "url": "https://kurtmckee.org/2019/12/upgrading-https-and-tls/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea63e59cff0", "title": "Moving, part 9", "url": "https://kurtmckee.org/2019/12/moving-part-9/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea63ef7591d", "title": "Tera Term subroutines", "url": "https://kurtmckee.org/2015/05/tera-term-subroutines/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea63f7ba888", "title": "listparser 0.18", "url": "https://kurtmckee.org/2015/04/listparser-0.18/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea63fb8757a", "title": "feedparser 5.2.0", "url": "https://kurtmckee.org/2015/04/feedparser-5.2.0/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea63fce52fa", "title": "Twelve days later", "url": "https://kurtmckee.org/2015/04/twelve-days-later/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea6400099e7", "title": "Moving, part 8", "url": "https://kurtmckee.org/2015/02/moving-part-8/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea640a029db", "title": "Moving, part 7", "url": "https://kurtmckee.org/2015/02/moving-part-7/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea640d82cf5", "title": "Moving, part 6", "url": "https://kurtmckee.org/2015/02/moving-part-6/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea6418f5897", "title": "Moving, part 5", "url": "https://kurtmckee.org/2015/02/moving-part-5/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea642889dfb", "title": "Moving, part 4", "url": "https://kurtmckee.org/2015/01/moving-part-4/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea642ed46d5", "title": "Moving, part 3", "url": "https://kurtmckee.org/2015/01/moving-part-3/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea642f79e16", "title": "Moving, part 2", "url": "https://kurtmckee.org/2015/01/moving-part-2/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea6437a7b09", "title": "Moving, part 1", "url": "https://kurtmckee.org/2015/01/moving-part-1/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea64472fcbd", "title": "The state of feedparser", "url": "https://kurtmckee.org/2015/01/the-state-of-feedparser/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea644903a13", "title": "In the beginning", "url": "https://kurtmckee.org/2014/10/in-the-beginning/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea64559aeb8", "title": "Caller ID blocking options", "url": "https://kurtmckee.org/2014/09/caller-id-blocking-options/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea645e1c7df", "title": "The Debris Cathedral", "url": "https://kurtmckee.org/2014/09/the-debris-cathedral/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea64623c149", "title": null, "url": "https://kurtmckee.org/2014/06/a-change-of-scenery/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea646527171", "title": null, "url": "https://kurtmckee.org/2014/05/raspberry-pi-benchmarks/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea6469dc7de", "title": null, "url": "https://kurtmckee.org/2013/10/raspberry-pi-server/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea6473116fc", "title": null, "url": "https://kurtmckee.org/2012/12/date-parsing/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea647722150", "title": null, "url": "https://kurtmckee.org/2012/12/listparser-0.17/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea647b8497a", "title": null, "url": "https://kurtmckee.org/2012/12/feedparser-5.1.3/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea6486d6568", "title": null, "url": "https://kurtmckee.org/2012/11/getting-back-into-it-part-6/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea64887aba0", "title": null, "url": "https://kurtmckee.org/2012/11/getting-back-into-it-part-5/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea648dcb104", "title": null, "url": "https://kurtmckee.org/2012/11/getting-back-into-it-part-4/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea648f2f2d5", "title": null, "url": "https://kurtmckee.org/2012/10/getting-back-into-it-part-3/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea64944d187", "title": null, "url": "https://kurtmckee.org/2012/10/getting-back-into-it-part-2/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea649e67bb1", "title": null, "url": "https://kurtmckee.org/2012/10/getting-back-into-it-part-1/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea64a8423b8", "title": null, "url": "https://kurtmckee.org/2012/10/and-now-i-look-around/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea64ab48830", "title": null, "url": "https://kurtmckee.org/2012/08/leveling-up-my-tech/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea64ba1a7b6", "title": null, "url": "https://kurtmckee.org/2012/07/maintaining-my-humanity/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea64c0245d0", "title": null, "url": "https://kurtmckee.org/2012/05/feedparser-5.1.2/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea64c4bfd9a", "title": null, "url": "https://kurtmckee.org/2012/04/customizing-websites-using-a-scalpel/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea64ca4d912", "title": null, "url": "https://kurtmckee.org/2012/04/listparser-now-has-a-unified-codebase/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea64d16e571", "title": null, "url": "https://kurtmckee.org/2012/03/feedparser-5.1.1/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea64de2f59d", "title": null, "url": "https://kurtmckee.org/2012/02/a-case-for-forgetting/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea64ec86b28", "title": null, "url": "https://kurtmckee.org/2012/02/book-burning/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea64f373e05", "title": null, "url": "https://kurtmckee.org/2012/02/how-old-am-i/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea64ff368f3", "title": null, "url": "https://kurtmckee.org/2012/01/fixing-more-things/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea65021e1bd", "title": null, "url": "https://kurtmckee.org/2012/01/fixed-it/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea65033011c", "title": null, "url": "https://kurtmckee.org/2012/01/pdb-post-mortem-debugging/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea6510a11b4", "title": null, "url": "https://kurtmckee.org/2012/01/youtube-for-the-xbox-360/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea651c7449f", "title": null, "url": "https://kurtmckee.org/2012/01/gifts-and-surprises/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea6526d4c43", "title": null, "url": "https://kurtmckee.org/2011/12/listparser-0.16/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea652764b5a", "title": null, "url": "https://kurtmckee.org/2011/12/feedparser-5.1/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea6531211a6", "title": null, "url": "https://kurtmckee.org/2011/09/photo-managers/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea653c58721", "title": null, "url": "https://kurtmckee.org/2011/05/my-opinion-of-hulu-plus/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea654273c6c", "title": null, "url": "https://kurtmckee.org/2011/04/revisiting-windows/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea6549673a2", "title": null, "url": "https://kurtmckee.org/2011/03/predictions-and-facts/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea654bc6606", "title": null, "url": "https://kurtmckee.org/2011/03/it-is-the-truth/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea655966fe3", "title": null, "url": "https://kurtmckee.org/2011/02/feedparser-5.0.1/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea655f78795", "title": null, "url": "https://kurtmckee.org/2011/01/feedparser-5.0/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea65600f652", "title": null, "url": "https://kurtmckee.org/2011/01/the-problem-with-mercurial/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea656116cb0", "title": null, "url": "https://kurtmckee.org/2011/01/improving-feedparser-unit-tests/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea656ea54f9", "title": null, "url": "https://kurtmckee.org/2011/01/supporting-a-timeout-in-feedparser/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea657e82ce5", "title": null, "url": "https://kurtmckee.org/2010/12/goodbye-liferea/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea658cd671f", "title": null, "url": "https://kurtmckee.org/2010/12/extending-feedparser-using-dynamic-inheritance/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea6599b198d", "title": null, "url": "https://kurtmckee.org/2010/12/bash-extglob-option/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea65a713c28", "title": null, "url": "https://kurtmckee.org/2010/12/a-git-svn-reminder/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea65ab8c9c2", "title": null, "url": "https://kurtmckee.org/2010/11/feedparser-porting-status-thanksgiving-edition/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea65b315a7a", "title": null, "url": "https://kurtmckee.org/2010/11/feedparser-porting-status/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea65b4a2d15", "title": null, "url": "https://kurtmckee.org/2010/11/porting-feedparser-to-python-3/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea65b757180", "title": null, "url": "https://kurtmckee.org/2010/11/do-not-just-trust-backup-your-data/", "published_at": null }, { "id": "01a0d3dc-0e2a-7163-afc5-6ea65be4aba5", "title": null, "url": "https://kurtmckee.org/2010/11/listparser-0.15/", "published_at": null } ] posts Claim your blog
Back to Kurt McKee
Blog · corpus.blog/blogs/kurtmckee.org/posts

Kurt McKee

kurtmckee.org

2026

2023

Undated