<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://treyhunner.com/2026/02/on-the-enviromental-impact-of-llms-for-coding/</loc>
<lastmod>2026-02-20T14:30:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2025/12/my-favorite-reads-of-2025/</loc>
<lastmod>2025-12-31T13:00:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2025/12/default-apps-of-2025/</loc>
<lastmod>2025-12-22T20:32:27-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2025/11/python-black-friday-and-cyber-monday-sales-2025/</loc>
<lastmod>2025-11-24T09:00:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2025/11/lifetime-access-sale-2025/</loc>
<lastmod>2025-11-21T14:42:36-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2025/10/handy-python-repl-modifications/</loc>
<lastmod>2025-10-08T19:59:20-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2025/09/customizing-your-python-repl-color-scheme/</loc>
<lastmod>2025-09-04T14:00:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2025/06/pycon-us-2025-recap/</loc>
<lastmod>2025-06-11T16:45:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2025/05/lets-end-kidney-deaths/</loc>
<lastmod>2025-05-26T13:00:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2025/05/make-a-cutting-room-floor/</loc>
<lastmod>2025-05-22T07:40:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2025/05/how-to-give-a-great-pycon-tutorial/</loc>
<lastmod>2025-05-01T16:00:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2025/04/which-social-network-are-we-using-for-pycon/</loc>
<lastmod>2025-04-18T11:45:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2025/03/django-components-sometimes-an-include-doesnt-cut-it/</loc>
<lastmod>2025-03-15T21:00:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2025/01/my-default-apps-of-2024/</loc>
<lastmod>2025-01-22T14:30:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2024/12/my-favorite-audiobooks-of-2024/</loc>
<lastmod>2024-12-31T08:30:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2024/12/lazy-self-installing-python-scripts-with-uv/</loc>
<lastmod>2024-12-09T11:15:10-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2024/11/new-python-jumpstart-course/</loc>
<lastmod>2024-11-25T08:08:08-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2024/11/python-black-friday-and-cyber-monday-sales-2024/</loc>
<lastmod>2024-11-20T11:00:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2024/10/adding-keyboard-shortcuts-to-the-python-repl/</loc>
<lastmod>2024-10-28T07:15:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2024/10/django-and-the-new-python-3-dot-13-repl/</loc>
<lastmod>2024-10-13T21:03:32-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2024/10/switching-from-virtualenvwrapper-to-direnv-starship-and-uv/</loc>
<lastmod>2024-10-03T14:00:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2024/08/python-high-five/</loc>
<lastmod>2024-08-20T14:20:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2024/08/find-the-datetime-format-code-for-your-date/</loc>
<lastmod>2024-08-05T11:30:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2024/08/why-does-python-m-json-not-work/</loc>
<lastmod>2024-08-01T14:00:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2024/07/chatgpt-and-claude-from-your-browser-url-bar/</loc>
<lastmod>2024-07-11T09:00:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2024/06/a-beautiful-python-monstrosity/</loc>
<lastmod>2024-06-08T14:30:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2024/05/pycon-2024-reflection/</loc>
<lastmod>2024-05-28T13:00:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2024/05/my-favorite-python-3-dot-13-feature/</loc>
<lastmod>2024-05-08T13:30:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2024/05/installing-a-custom-python-build-with-pyenv/</loc>
<lastmod>2024-05-03T21:26:23-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2024/04/10-years-of-python-conferences/</loc>
<lastmod>2024-04-27T11:45:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2023/11/python-black-friday-and-cyber-monday-sales-2023/</loc>
<lastmod>2023-11-20T08:00:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2022/11/python-morsels-cyber-monday-sale/</loc>
<lastmod>2022-11-25T08:30:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2022/11/python-black-friday-and-cyber-monday-sales-2022/</loc>
<lastmod>2022-11-22T10:15:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2022/03/variables-objects-and-pointers-in-python/</loc>
<lastmod>2022-03-29T08:00:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2021/11/python-black-friday-and-cyber-monday-sales-2021/</loc>
<lastmod>2021-11-22T21:00:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2021/11/how-to-sort-a-dictionary-in-python/</loc>
<lastmod>2021-11-17T07:30:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2021/11/how-to-flatten-a-list-in-python/</loc>
<lastmod>2021-11-01T08:00:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2021/10/whats-great-about-python-3-dot-10/</loc>
<lastmod>2021-10-08T08:30:30-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2020/11/python-cyber-monday-sales/</loc>
<lastmod>2020-11-27T13:20:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2020/11/short-python-screencasts-for-$50-slash-year/</loc>
<lastmod>2020-11-25T09:00:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2020/01/passing-functions-as-arguments/</loc>
<lastmod>2020-01-14T08:00:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2019/12/cyber-monday-python-sales/</loc>
<lastmod>2019-12-02T02:00:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2019/11/black-friday-sale-gift-python-morsels-to-a-friend/</loc>
<lastmod>2019-11-29T15:00:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2019/06/loop-better-a-deeper-look-at-iteration-in-python/</loc>
<lastmod>2019-06-18T09:15:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2019/05/python-builtins-worth-learning/</loc>
<lastmod>2019-05-21T08:40:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2019/04/is-it-a-class-or-a-function-its-a-callable/</loc>
<lastmod>2019-04-16T10:20:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2019/04/why-you-shouldnt-inherit-from-list-and-dict-in-python/</loc>
<lastmod>2019-04-09T07:00:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2019/04/making-the-most-of-the-pycon-sprints/</loc>
<lastmod>2019-04-02T09:45:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2019/03/abusing-and-overusing-list-comprehensions-in-python/</loc>
<lastmod>2019-03-26T13:30:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2019/03/unique-and-sentinel-values-in-python/</loc>
<lastmod>2019-03-20T07:30:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2019/03/python-deep-comparisons-and-code-readability/</loc>
<lastmod>2019-03-13T07:30:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2019/01/no-really-pathlib-is-great/</loc>
<lastmod>2019-01-15T11:20:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2018/12/why-you-should-be-using-pathlib/</loc>
<lastmod>2018-12-21T14:00:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2018/11/python-cyber-monday-sales/</loc>
<lastmod>2018-11-26T07:45:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2018/11/python-morsels-sale-52-weeks-of-python/</loc>
<lastmod>2018-11-21T11:00:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2018/10/asterisks-in-python-what-they-are-and-how-to-use-them/</loc>
<lastmod>2018-10-11T07:30:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2018/09/stop-writing-lambda-expressions/</loc>
<lastmod>2018-09-27T07:30:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2018/06/how-to-make-an-iterator-in-python/</loc>
<lastmod>2018-06-21T16:00:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2018/04/how-to-make-the-most-of-your-first-pycon/</loc>
<lastmod>2018-04-30T08:00:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2018/04/keyword-arguments-in-python/</loc>
<lastmod>2018-04-04T08:00:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2018/03/tuple-unpacking-improves-python-code-readability/</loc>
<lastmod>2018-03-07T16:30:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2018/02/python-range-is-not-an-iterator/</loc>
<lastmod>2018-02-28T16:00:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2018/02/python-3-s-range-better-than-python-2-s-xrange/</loc>
<lastmod>2018-02-15T08:00:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2017/07/craft-your-python-like-poetry/</loc>
<lastmod>2017-07-23T10:00:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2017/01/my-favorite-audiobooks-of-2016/</loc>
<lastmod>2017-01-01T17:00:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2016/12/python-iterator-protocol-how-for-loops-work/</loc>
<lastmod>2016-12-28T11:00:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2016/11/check-whether-all-items-match-a-condition-in-python/</loc>
<lastmod>2016-11-29T09:45:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2016/05/weekly-python-chat-live-from-pycon/</loc>
<lastmod>2016-05-23T09:00:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2016/04/how-to-loop-with-indexes-in-python/</loc>
<lastmod>2016-04-25T09:00:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2016/03/regular-expressions-in-python-webinar/</loc>
<lastmod>2016-03-15T15:07:32-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2016/02/how-to-merge-dictionaries-in-python/</loc>
<lastmod>2016-02-23T10:00:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2015/12/my-favorite-audiobooks-of-2015/</loc>
<lastmod>2015-12-31T07:30:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2015/12/python-list-comprehensions-now-in-color/</loc>
<lastmod>2015-12-01T10:30:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2015/11/counting-things-in-python/</loc>
<lastmod>2015-11-09T12:30:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2015/06/cabo-card-game/</loc>
<lastmod>2015-06-04T11:30:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2015/03/deploying-an-ember-cli-application-via-ssh/</loc>
<lastmod>2015-03-10T12:30:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2015/02/creating-a-custom-bootstrap-build/</loc>
<lastmod>2015-02-25T16:20:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2015/02/ecmascript-5-the-future-is-now/</loc>
<lastmod>2015-02-09T00:00:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2014/12/top-6-books-of-2014/</loc>
<lastmod>2014-12-20T12:00:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2014/10/the-many-flavors-of-mock-dot-patch/</loc>
<lastmod>2014-10-13T21:00:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2014/09/adding-css-classes-to-django-form-fields/</loc>
<lastmod>2014-09-30T11:00:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2014/05/cli-for-finding-drm-free-audiobooks/</loc>
<lastmod>2014-05-14T12:31:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2014/03/migrating-to-django-1-dot-7/</loc>
<lastmod>2014-03-27T13:05:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2013/11/tdd-with-django-workshop/</loc>
<lastmod>2013-11-04T00:00:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2013/10/visual-integration-tests-for-django/</loc>
<lastmod>2013-10-03T15:19:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2013/09/singledispatch-json-serializer/</loc>
<lastmod>2013-09-27T00:00:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2013/07/test-inspired-development/</loc>
<lastmod>2013-07-28T00:00:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2013/07/maintaining-an-open-source-project/</loc>
<lastmod>2013-07-21T00:00:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2013/05/django-email-log/</loc>
<lastmod>2013-05-20T00:00:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2013/05/django-simple-history/</loc>
<lastmod>2013-05-01T00:00:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2013/03/pseudorandom.name/</loc>
<lastmod>2013-03-10T00:00:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2013/02/random-name-generator/</loc>
<lastmod>2013-02-17T00:00:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2012/12/tmuxstart/</loc>
<lastmod>2012-12-15T00:00:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2012/02/editorconfig/</loc>
<lastmod>2012-02-17T00:00:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2011/11/migrating-from-subversion-to-git/</loc>
<lastmod>2011-11-17T00:00:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2011/09/django-and-model-history/</loc>
<lastmod>2011-09-29T00:00:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2011/04/sharing-screenshots-in-linux/</loc>
<lastmod>2011-04-03T00:00:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2010/12/encrypted-private-keys-in-django/</loc>
<lastmod>2010-12-11T00:00:00-08:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2010/10/replacement-for-jquery-alphanumeric-plugin/</loc>
<lastmod>2010-10-18T00:00:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2009/06/multiple-monitors-with-multiple-workspaces/</loc>
<lastmod>2009-06-15T00:00:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/2009/05/ubuntu-now-boots-in-10-seconds/</loc>
<lastmod>2009-05-01T00:00:00-07:00</lastmod>
</url>
<url>
<loc>https://treyhunner.com/404.html</loc>
</url>
<url>
<loc>https://treyhunner.com/blog/archives/</loc>
</url>
<url>
<loc>https://treyhunner.com/</loc>
</url>
<url>
<loc>https://treyhunner.com/talks/</loc>
</url>
<url>
<loc>https://treyhunner.com/about/</loc>
</url>
<url>
<loc>https://treyhunner.com/pycon/</loc>
</url>
<url>
<loc>https://treyhunner.com/privacy/</loc>
</url>
<url>
<loc>https://treyhunner.com/projects/</loc>
</url>
<url>
<loc>https://treyhunner.com/blog/categories/linux/</loc>
</url>
<url>
<loc>https://treyhunner.com/blog/categories/javascript/</loc>
</url>
<url>
<loc>https://treyhunner.com/blog/categories/django/</loc>
</url>
<url>
<loc>https://treyhunner.com/blog/categories/python/</loc>
</url>
<url>
<loc>https://treyhunner.com/blog/categories/git/</loc>
</url>
<url>
<loc>https://treyhunner.com/blog/categories/editorconfig/</loc>
</url>
<url>
<loc>https://treyhunner.com/blog/categories/open-source/</loc>
</url>
<url>
<loc>https://treyhunner.com/blog/categories/testing/</loc>
</url>
<url>
<loc>https://treyhunner.com/blog/categories/audiobooks/</loc>
</url>
<url>
<loc>https://treyhunner.com/blog/categories/favorite/</loc>
</url>
<url>
<loc>https://treyhunner.com/blog/categories/css/</loc>
</url>
<url>
<loc>https://treyhunner.com/blog/categories/readability/</loc>
</url>
<url>
<loc>https://treyhunner.com/blog/categories/tuples/</loc>
</url>
<url>
<loc>https://treyhunner.com/blog/categories/pycon/</loc>
</url>
<url>
<loc>https://treyhunner.com/blog/categories/sales/</loc>
</url>
<url>
<loc>https://treyhunner.com/blog/categories/repl/</loc>
</url>
<url>
<loc>https://treyhunner.com/blog/categories/llm/</loc>
</url>
<url>
<loc>https://treyhunner.com/blog/categories/direnv/</loc>
</url>
<url>
<loc>https://treyhunner.com/blog/categories/uv/</loc>
</url>
<url>
<loc>https://treyhunner.com/blog/categories/starship/</loc>
</url>
<url>
<loc>https://treyhunner.com/blog/categories/dotfiles/</loc>
</url>
<url>
<loc>https://treyhunner.com/blog/categories/writing/</loc>
</url>
<url>
<loc>https://treyhunner.com/blog/categories/politics/</loc>
</url>
</urlset>
