<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title><![CDATA[ Carlos&#039; Dev Stream - pckt ]]></title>
        <link><![CDATA[ https://dev-stream.pckt.blog ]]></link>
        <description><![CDATA[  ]]></description>
        <language>en</language>
        <pubDate>Wed, 05 Aug 2026 00:56:47 +0000</pubDate>

                    <item>
                <title>Stacked PRs explainer</title>
                <link>https://dev-stream.pckt.blog/stacked-prs-explainer-2npkbg2</link>
                <description><![CDATA[Stacked PRs are the new GitHub implementation of an already-existing concept: stacked changes or stacked diffs. Stacked changes are a method for split a big change into independent, incremental pieces. The typical example is a new feature that requires refactoring an existing system. We&#039;d like the refactor to be reviewed by itself for correctness, and the new feature to build on top of if, but simplify review by not having the refactoring changes dirtying focused work on the new feature.]]></description>
                <author>Carlos&#039; Dev Stream</author>
                <guid isPermaLink="false">stacked-prs-explainer-2npkbg2</guid>
                <pubDate>Tue, 21 Jul 2026 10:31:57 +0000</pubDate>
                            </item>
                    <item>
                <title>I think AI is swapping code debt for tooling debt</title>
                <link>https://dev-stream.pckt.blog/i-think-ai-is-swapping-code-debt-for-tooling-debt-em3b48c</link>
                <description><![CDATA[I talked with an engineer recently who told me he was single-handedly (or rather, Claude-handedly) paying down tech debt in his company&#039;s codebase. And, at the same time, implementing a bunch of tools in their CI to catch all the kinds of quality slop problems that vibe coding everything could bring with it. I am thinking that this is representative of switching to a new mode of thinking about tech debt. The classic tech debt is code. Code debt starts at 0, when you have 0 code. When you add mor...]]></description>
                <author>Carlos&#039; Dev Stream</author>
                <guid isPermaLink="false">i-think-ai-is-swapping-code-debt-for-tooling-debt-em3b48c</guid>
                <pubDate>Wed, 25 Feb 2026 14:24:06 +0000</pubDate>
                            </item>
                    <item>
                <title>APFS is case-sensitive on first write and case-insensitive afterwards</title>
                <link>https://dev-stream.pckt.blog/apfs-is-case-sensitive-on-first-write-and-case-insensitive-afterwards-4gra1tq</link>
                <description><![CDATA[APFS on macOS is case-insensitive by default. I guess this is done to keep traditions, since HFS+ (its predecessor) was case-insensitive by default too; and I actually think it is, in general, a good idea. Most persons, technical or not, would usually regard a document titled Financial results the same as Financial Results in the real world; so Apple translated that expectation to the computer world. The implementation is done like this: when you write a file for the first time, it will actually...]]></description>
                <author>Carlos&#039; Dev Stream</author>
                <guid isPermaLink="false">apfs-is-case-sensitive-on-first-write-and-case-insensitive-afterwards-4gra1tq</guid>
                <pubDate>Thu, 29 Jan 2026 09:11:59 +0000</pubDate>
                            </item>
                    <item>
                <title>TIL: `join` over `(-&gt;)`</title>
                <link>https://dev-stream.pckt.blog/til-join-over-dfm23ru</link>
                <description><![CDATA[I discovered a neat pattern: using join with the function arrow ((-)) as a Monad. When you join over functions, you get: This lets you pass the same argument twice: once to determine what to do, and another to actually do it. In , we have validators with the signature type Validator = input - Validation. Most of our validation helpers are written in a point-free, un-applied style, which works great, except recently when I needed to inspect the input to decide which validator to run.]]></description>
                <author>Carlos&#039; Dev Stream</author>
                <guid isPermaLink="false">til-join-over-dfm23ru</guid>
                <pubDate>Fri, 23 Jan 2026 09:41:41 +0000</pubDate>
                            </item>
                    <item>
                <title>TIL: AbortSignal.timeout</title>
                <link>https://dev-stream.pckt.blog/til-abortsignaltimeout-62fkgjz</link>
                <description><![CDATA[For Promise timeouts, I was overworrying about doing setTimeouts with an AbortController, and cleaning them up afterwards to avoid memory leaks: The gods of JS smiled in my favor this week when I found out about AbortSignal.timeout (thanks to ). It simplifies timeouts to a single call:]]></description>
                <author>Carlos&#039; Dev Stream</author>
                <guid isPermaLink="false">til-abortsignaltimeout-62fkgjz</guid>
                <pubDate>Fri, 23 Jan 2026 09:16:19 +0000</pubDate>
                            </item>
            </channel>
</rss>