<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Laurent Direr's blog</title>
        <link>https://ldirer.com/blog</link>
        <description>Posts about programming</description>
        <lastBuildDate>Thu, 05 Mar 2026 19:58:09 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <atom:link href="https://ldirer.com/rss.xml" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[A Practical Introduction to the Python Abstract Syntax Tree]]></title>
            <link>https://ldirer.com/blog/posts/practical-introduction-python-ast</link>
            <guid>https://ldirer.com/blog/posts/practical-introduction-python-ast</guid>
            <pubDate>Thu, 05 Mar 2026 19:58:09 GMT</pubDate>
            <description><![CDATA[Looking at how Python represents code internally, and how pytest rewrites assert statements behind the scenes.]]></description>
        </item>
        <item>
            <title><![CDATA[Notes on AI coding workflows: two recent Armin Ronacher videos]]></title>
            <link>https://ldirer.com/blog/posts/armin-ronacher-on-agents-2025-07</link>
            <guid>https://ldirer.com/blog/posts/armin-ronacher-on-agents-2025-07</guid>
            <pubDate>Mon, 07 Jul 2025 14:12:38 GMT</pubDate>
            <description><![CDATA[Notes from a 3-hour vibe coding session and a new talk on agent workflows.]]></description>
        </item>
        <item>
            <title><![CDATA[Notes on Mitchell Hashimoto's AI workflow]]></title>
            <link>https://ldirer.com/blog/posts/mitchell-hashimoto-zed-agents-2025</link>
            <guid>https://ldirer.com/blog/posts/mitchell-hashimoto-zed-agents-2025</guid>
            <pubDate>Fri, 04 Jul 2025 18:46:12 GMT</pubDate>
            <description><![CDATA[Notes on a recent interview with the Zed team.]]></description>
        </item>
        <item>
            <title><![CDATA[The browser can store gigabytes of data]]></title>
            <link>https://ldirer.com/blog/posts/the-browser-can-store-gigabytes-of-data</link>
            <guid>https://ldirer.com/blog/posts/the-browser-can-store-gigabytes-of-data</guid>
            <pubDate>Mon, 31 Mar 2025 19:11:14 GMT</pubDate>
            <description><![CDATA[A building block for local-first applications.]]></description>
        </item>
        <item>
            <title><![CDATA[Reading Structure and Interpretation of Computer Programs in 2025]]></title>
            <link>https://ldirer.com/blog/posts/sicp-review</link>
            <guid>https://ldirer.com/blog/posts/sicp-review</guid>
            <pubDate>Mon, 17 Mar 2025 10:01:04 GMT</pubDate>
            <description><![CDATA[One year of wizardry.]]></description>
        </item>
        <item>
            <title><![CDATA[Debugging ORM queries with database logs]]></title>
            <link>https://ldirer.com/blog/posts/debugging-orm-queries-with-database-logs</link>
            <guid>https://ldirer.com/blog/posts/debugging-orm-queries-with-database-logs</guid>
            <pubDate>Fri, 28 Feb 2025 17:58:36 GMT</pubDate>
            <description><![CDATA[Log database queries directly instead of relying on ORM logging options.]]></description>
        </item>
        <item>
            <title><![CDATA[Rate-limiting Sentry issues on the client]]></title>
            <link>https://ldirer.com/blog/posts/sentry-client-side-rate-limiting</link>
            <guid>https://ldirer.com/blog/posts/sentry-client-side-rate-limiting</guid>
            <pubDate>Fri, 14 Feb 2025 15:45:35 GMT</pubDate>
            <description><![CDATA[A client-side rate limiter to prevent noisy errors from consuming your Sentry quota.]]></description>
        </item>
        <item>
            <title><![CDATA[A review of CSS for JavaScript developers and Joy of React]]></title>
            <link>https://ldirer.com/blog/posts/css-for-js-and-joy-of-react-a-review</link>
            <guid>https://ldirer.com/blog/posts/css-for-js-and-joy-of-react-a-review</guid>
            <pubDate>Tue, 28 Jan 2025 17:44:44 GMT</pubDate>
            <description><![CDATA[In 2024 I took these two courses from Josh Comeau. TLDR: loved it.]]></description>
        </item>
        <item>
            <title><![CDATA[A use case for margin in css flexbox]]></title>
            <link>https://ldirer.com/blog/posts/margin-inside-css-flexbox</link>
            <guid>https://ldirer.com/blog/posts/margin-inside-css-flexbox</guid>
            <pubDate>Wed, 08 Jan 2025 19:45:44 GMT</pubDate>
            <description><![CDATA[Four attempts at a simple header layout to build frontend intuition.]]></description>
        </item>
        <item>
            <title><![CDATA[Practical checks when working with alembic migrations]]></title>
            <link>https://ldirer.com/blog/posts/practical-checks-alembic-migrations</link>
            <guid>https://ldirer.com/blog/posts/practical-checks-alembic-migrations</guid>
            <pubDate>Tue, 17 Dec 2024 17:41:49 GMT</pubDate>
            <description><![CDATA[Keep your team efficient by catching migration issues early.]]></description>
        </item>
        <item>
            <title><![CDATA[Debugging FastAPI routes with pdb]]></title>
            <link>https://ldirer.com/blog/posts/fastapi-pdb-on-exception</link>
            <guid>https://ldirer.com/blog/posts/fastapi-pdb-on-exception</guid>
            <pubDate>Mon, 02 Dec 2024 17:35:07 GMT</pubDate>
            <description><![CDATA[Get a breakpoint on exception without guessing where things went wrong.]]></description>
        </item>
        <item>
            <title><![CDATA[Some PyCharm tips]]></title>
            <link>https://ldirer.com/blog/posts/pycharm-tips</link>
            <guid>https://ldirer.com/blog/posts/pycharm-tips</guid>
            <pubDate>Fri, 14 Jun 2024 17:35:07 GMT</pubDate>
            <description><![CDATA[PyCharm shortcuts and tips I sometimes share with coworkers.]]></description>
        </item>
        <item>
            <title><![CDATA[Automatically disabling noise cancelling on Bose QC35 headphones]]></title>
            <link>https://ldirer.com/blog/posts/bose-qc35-noise-cancelling-off</link>
            <guid>https://ldirer.com/blog/posts/bose-qc35-noise-cancelling-off</guid>
            <pubDate>Thu, 30 May 2024 09:35:07 GMT</pubDate>
            <description><![CDATA[Using udev and systemd to disable noise cancelling when the QC35 connects over bluetooth.]]></description>
        </item>
        <item>
            <title><![CDATA[Deploy your app with docker and docker-compose - Part 2]]></title>
            <link>https://ldirer.com/blog/posts/deploy-docker-app-part-2</link>
            <guid>https://ldirer.com/blog/posts/deploy-docker-app-part-2</guid>
            <pubDate>Wed, 14 Mar 2018 05:35:07 GMT</pubDate>
            <description><![CDATA[So we developed that app locally. It's pretty! Or maybe it's not. Let's deploy it anyway!]]></description>
        </item>
        <item>
            <title><![CDATA[Deploy your app with docker and docker-compose - Part 1]]></title>
            <link>https://ldirer.com/blog/posts/deploy-docker-app</link>
            <guid>https://ldirer.com/blog/posts/deploy-docker-app</guid>
            <pubDate>Mon, 19 Feb 2018 05:35:07 GMT</pubDate>
            <description><![CDATA[This tutorial will walk you through creating a dockerized development environment for a single page application.]]></description>
        </item>
    </channel>
</rss>