<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom">
  <title>Atoms  — brandur.org</title>
  <id>tag:brandur.org,2019:atoms</id>
  <updated>2026-06-06T13:15:27+02:00</updated>
  <link rel="self" type="application/atom+xml" href="https://brandur.org/atoms.atom"></link>
  <link rel="alternate" type="text/html" href="https://brandur.org"></link>
  <entry>
    <title>Atom #hcm24ns</title>
    <content type="html"><![CDATA[<p>Published fragment <a href="/fragments/sqlc-sqlite-bulk-insert">SQLite bulk insert with sqlc</a>, on using <code>json_each</code> and <code>json_extract</code> to achieve this end.</p>
]]></content>
    <published>2026-06-06T13:15:27+02:00</published>
    <updated>2026-06-06T13:15:27+02:00</updated>
    <link href="https://brandur.org/atoms/hcm24ns"></link>
    <id>tag:brandur.org,2026-06-06:atoms:hcm24ns</id>
    <author>
      <name>Brandur Leach</name>
      <uri>https://brandur.org</uri>
    </author>
  </entry>
  <entry>
    <title>Atom #hcll7yk</title>
    <content type="html"><![CDATA[<p>Published fragment <a href="/fragments/keep-them-short">Generating words? Keep them short.</a>.</p>
]]></content>
    <published>2026-06-05T20:18:34+02:00</published>
    <updated>2026-06-05T20:18:34+02:00</updated>
    <link href="https://brandur.org/atoms/hcll7yk"></link>
    <id>tag:brandur.org,2026-06-05:atoms:hcll7yk</id>
    <author>
      <name>Brandur Leach</name>
      <uri>https://brandur.org</uri>
    </author>
  </entry>
  <entry>
    <title>Atom #hcithzk</title>
    <content type="html"><![CDATA[<p>We shipped and <a href="https://riverqueue.com/blog/river-typescript">insert-only TypeScript package for River</a>. Like the equivalents for Python and Ruby, it&rsquo;ll emit jobs from a TypeScript project that&rsquo;ll be worked over in Go code.</p>
]]></content>
    <published>2026-06-01T16:28:14+02:00</published>
    <updated>2026-06-01T16:28:14+02:00</updated>
    <link href="https://brandur.org/atoms/hcithzk"></link>
    <id>tag:brandur.org,2026-06-01:atoms:hcithzk</id>
    <author>
      <name>Brandur Leach</name>
      <uri>https://brandur.org</uri>
    </author>
  </entry>
  <entry>
    <title>Atom #hcipo2c</title>
    <content type="html"><![CDATA[<p><a href="/nanoglyphs/052-adrift"><em>Nanoglyph 052</em></a> is published, on life after acquisition, the minimum viable unit of saleable software and whether River can qualify, Balkan Ruby in Sofia, and hiking in the Vitosha mountains.</p>
<a href="/photographs/atoms/hcipo2c/marker_large@2x.jpg">
    <img loading="lazy" src="/photographs/atoms/hcipo2c/marker_large.jpg"
        srcset="/photographs/atoms/hcipo2c/marker_large@2x.jpg 2x,
                                /photographs/atoms/hcipo2c/marker_large.jpg 1x">
</a>]]></content>
    <published>2026-06-01T12:08:01+02:00</published>
    <updated>2026-06-01T12:08:01+02:00</updated>
    <link href="https://brandur.org/atoms/hcipo2c"></link>
    <id>tag:brandur.org,2026-06-01:atoms:hcipo2c</id>
    <author>
      <name>Brandur Leach</name>
      <uri>https://brandur.org</uri>
    </author>
  </entry>
  <entry>
    <title>Atom #hcidx6c</title>
    <content type="html"><![CDATA[<p>See <a href="https://www.jeffgeerling.com/blog/2026/its-hard-to-justify-framework-12/">It&rsquo;s hard to justify buying a Framework 12</a>, which argues that the MacBook Neo is a better buy for value, performance, fan noise, and screen quality.</p>

<p>I don&rsquo;t own a MacBook Neo, but I like that it&rsquo;s an option. This is Apple at its best: a lightweight, playful computer that&rsquo;s great value for the money and which will make its buyers fall in love the ecosystem, possibly even becoming lifelong converts. I would&rsquo;ve loved to have a Neo back in college when budget was distantly more important than system specs. We had our own version of it in the form of the &ldquo;CrackBook&rdquo; (plastic MacBook circa 2006). It had its problems, but was cheap, and I got years of use out of mine.</p>
]]></content>
    <published>2026-05-31T22:48:17+02:00</published>
    <updated>2026-05-31T22:48:17+02:00</updated>
    <link href="https://brandur.org/atoms/hcidx6c"></link>
    <id>tag:brandur.org,2026-05-31:atoms:hcidx6c</id>
    <author>
      <name>Brandur Leach</name>
      <uri>https://brandur.org</uri>
    </author>
  </entry>
  <entry>
    <title>Atom #hci32sk</title>
    <content type="html"><![CDATA[<p>Published <a href="/minimum-viable-unit"><em>The Minimum Viable Unit of Saleable Software</em></a>, on buy vs. build in the LLM age and the pricing zone where small software businesses can still survive.</p>
<a href="/photographs/atoms/hci32sk/marker_large@2x.jpg">
    <img loading="lazy" src="/photographs/atoms/hci32sk/marker_large.jpg"
        srcset="/photographs/atoms/hci32sk/marker_large@2x.jpg 2x,
                                /photographs/atoms/hci32sk/marker_large.jpg 1x">
</a>]]></content>
    <published>2026-05-31T12:41:38+02:00</published>
    <updated>2026-05-31T12:41:38+02:00</updated>
    <link href="https://brandur.org/atoms/hci32sk"></link>
    <id>tag:brandur.org,2026-05-31:atoms:hci32sk</id>
    <author>
      <name>Brandur Leach</name>
      <uri>https://brandur.org</uri>
    </author>
  </entry>
  <entry>
    <title>Atom #hca2u72</title>
    <content type="html"><![CDATA[<p>Codex TUI for <a href="https://github.com/openai/codex/issues/2020#issuecomment-4483947603">light-colored terminals is fixed</a>. I hope this is one of the positive side effects of LLM use: software is more malleable, so chronic bugs that aren&rsquo;t particularly high priority get fixed instead of lingering forever at the bottom of a kanban board.</p>
]]></content>
    <published>2026-05-19T09:11:16+02:00</published>
    <updated>2026-05-19T09:11:16+02:00</updated>
    <link href="https://brandur.org/atoms/hca2u72"></link>
    <id>tag:brandur.org,2026-05-19:atoms:hca2u72</id>
    <author>
      <name>Brandur Leach</name>
      <uri>https://brandur.org</uri>
    </author>
  </entry>
  <entry>
    <title>Atom #hc7ptp2</title>
    <content type="html"><![CDATA[<p><a href="/nanoglyphs/051-that-was-fast"><em>Nanoglyph 051</em></a> is published, on being acquired for the second time in a year, and walking the perimeter of Manhattan.</p>
<a href="/photographs/atoms/hc7ptp2/marker_large@2x.jpg">
    <img loading="lazy" src="/photographs/atoms/hc7ptp2/marker_large.jpg"
        srcset="/photographs/atoms/hc7ptp2/marker_large@2x.jpg 2x,
                                /photographs/atoms/hc7ptp2/marker_large.jpg 1x">
</a>]]></content>
    <published>2026-05-18T20:39:16+02:00</published>
    <updated>2026-05-18T20:39:16+02:00</updated>
    <link href="https://brandur.org/atoms/hc7ptp2"></link>
    <id>tag:brandur.org,2026-05-18:atoms:hc7ptp2</id>
    <author>
      <name>Brandur Leach</name>
      <uri>https://brandur.org</uri>
    </author>
  </entry>
  <entry>
    <title>Atom #hbowqk2</title>
    <content type="html"><![CDATA[<p>Published fragment <a href="/fragments/competition">Turns out, competition works</a>, on gigabit fiber for less money using this one weird trick: move to Austin.</p>
]]></content>
    <published>2026-04-23T02:33:20-05:00</published>
    <updated>2026-04-23T02:33:20-05:00</updated>
    <link href="https://brandur.org/atoms/hbowqk2"></link>
    <id>tag:brandur.org,2026-04-23:atoms:hbowqk2</id>
    <author>
      <name>Brandur Leach</name>
      <uri>https://brandur.org</uri>
    </author>
  </entry>
  <entry>
    <title>Atom #hbmnhyc</title>
    <content type="html"><![CDATA[<p>Post from Ian McCrystal (an ex-colleague at Stripe): <a href="https://www.linkedin.com/pulse/world-needs-100x-more-apis-ian-mccrystal-o9ecc/">&ldquo;The world needs 100x more APIs&rdquo;</a>.</p>

<p>Quote:</p>

<blockquote>
<p>I don&rsquo;t know about you, but my tolerance for logging into domain-specific web apps to push buttons is, to vastly understate it, waning. I want to do all of my work from whatever AI agent I like best</p>
</blockquote>

<p>With any luck, the increasingly unnavigable web portals of our day-to-day services will be one of the first casualties of the LLM age.</p>
]]></content>
    <published>2026-04-19T15:11:37-05:00</published>
    <updated>2026-04-19T15:11:37-05:00</updated>
    <link href="https://brandur.org/atoms/hbmnhyc"></link>
    <id>tag:brandur.org,2026-04-19:atoms:hbmnhyc</id>
    <author>
      <name>Brandur Leach</name>
      <uri>https://brandur.org</uri>
    </author>
  </entry>
  <entry>
    <title>Atom #hbmnfoc</title>
    <content type="html"><![CDATA[<p>Salesforce introduced <a href="https://www.salesforce.com/news/stories/salesforce-headless-360-announcement/">&ldquo;Headless 360&rdquo;</a>, which purports to have made every Salesforce feature accessible by API, MCP, or CLI command. I&rsquo;ve updated my article <a href="/second-wave-api-first">The second wave of the API-first economy</a> to include it in my list of samples.</p>
]]></content>
    <published>2026-04-19T15:06:41-05:00</published>
    <updated>2026-04-19T15:06:41-05:00</updated>
    <link href="https://brandur.org/atoms/hbmnfoc"></link>
    <id>tag:brandur.org,2026-04-19:atoms:hbmnfoc</id>
    <author>
      <name>Brandur Leach</name>
      <uri>https://brandur.org</uri>
    </author>
  </entry>
  <entry>
    <title>Atom #hbhwqbs</title>
    <content type="html"><![CDATA[<p>Published fragment <a href="/fragments/caveman"><em>Caveman</em></a>. In 1980, Michael Crichton characters in <em>Congo</em> spoke like cavemen to save satellite bandwidth. It was absurd. Ridiculous! Forty-five years later, we&rsquo;re doing the same thing with LLMs to save tokens.</p>
]]></content>
    <published>2026-04-12T11:41:03-05:00</published>
    <updated>2026-04-12T11:41:03-05:00</updated>
    <link href="https://brandur.org/atoms/hbhwqbs"></link>
    <id>tag:brandur.org,2026-04-12:atoms:hbhwqbs</id>
    <author>
      <name>Brandur Leach</name>
      <uri>https://brandur.org</uri>
    </author>
  </entry>
  <entry>
    <title>Atom #hbhbdhc</title>
    <content type="html"><![CDATA[<p>A <a href="https://planetscale.com/blog/keeping-a-postgres-queue-healthy">good article from Planet Scale</a> on a product they&rsquo;re introducing called &ldquo;Database Traffic Control&rdquo;. It talks about putting queues in Postgres as a potential source of pain and references my <a href="/postgres-queues">old blog post on failure by MVCC</a> as an example.</p>

<p>I continue to think about <a href="https://riverqueue.com">Postgres queues</a> a lot, and as much as I wish the problem I&rsquo;d discussed was resolved by <code>SKIP LOCKED</code> and more contemporary Postgres advances, the fact of the matter is that the underlying root cause of dead tuple accumulation due to Postgres&rsquo; MVCC model was never fixed, and can still very much lead to major knock-on impact even today.</p>

<p>The Planet Scale proposed fix is a form of supervisor that terminates queries that are degrading database health and reschedules them for a more appropriate time. <code>SKIP LOCKED</code> helps, <code>REINDEX CONCURRENTLY</code> helps, years of B-tree optimizations help, but to guarantee real production stability, a component of this shape is probably wise.</p>
]]></content>
    <published>2026-04-11T11:20:05-05:00</published>
    <updated>2026-04-11T11:20:05-05:00</updated>
    <link href="https://brandur.org/atoms/hbhbdhc"></link>
    <id>tag:brandur.org,2026-04-11:atoms:hbhbdhc</id>
    <author>
      <name>Brandur Leach</name>
      <uri>https://brandur.org</uri>
    </author>
  </entry>
  <entry>
    <title>Atom #hbe6qm2</title>
    <content type="html"><![CDATA[<p>Published fragment <a href="/fragments/somewhere"><em>Somewhere</em></a>, a short review of Sofia Coppola&rsquo;s 2010 movie <em>Somewhere</em>. Unless I miss my mark, it&rsquo;s the same movie as <em>Lost in Translation</em>?</p>
]]></content>
    <published>2026-04-06T19:09:44-05:00</published>
    <updated>2026-04-06T19:09:44-05:00</updated>
    <link href="https://brandur.org/atoms/hbe6qm2"></link>
    <id>tag:brandur.org,2026-04-06:atoms:hbe6qm2</id>
    <author>
      <name>Brandur Leach</name>
      <uri>https://brandur.org</uri>
    </author>
  </entry>
  <entry>
    <title>Atom #hbe5tz2</title>
    <content type="html"><![CDATA[<p><a href="https://tonsky.me/blog/tahoe-icons/">This article on icons</a> is excellent. It makes the point that Tahoe, which endeavored to add an icon for every menu item, regressed in that icons are no longer as distinctive, aren&rsquo;t consistent between apps, and lose recognizability as they&rsquo;re made too small (12x12).</p>

<p>This is the story again and again when it comes to modern Apple, which operates on mantra-based methodology: more icons, more whitespace, wider margins, more transparency, less character. Make it flat and boring!</p>

<p>Ironically, despite our technology today being superior in every way, UI design was better understood back in the 90s.</p>
<a href="/photographs/atoms/hbe5tz2/sequoia-tahoe-textedit_large@2x.webp">
    <img loading="lazy" src="/photographs/atoms/hbe5tz2/sequoia-tahoe-textedit_large.webp"
        srcset="/photographs/atoms/hbe5tz2/sequoia-tahoe-textedit_large@2x.webp 2x,
                                /photographs/atoms/hbe5tz2/sequoia-tahoe-textedit_large.webp 1x">
</a><a href="/photographs/atoms/hbe5tz2/menu-cleanup_large@2x.webp">
    <img loading="lazy" src="/photographs/atoms/hbe5tz2/menu-cleanup_large.webp"
        srcset="/photographs/atoms/hbe5tz2/menu-cleanup_large@2x.webp 2x,
                                /photographs/atoms/hbe5tz2/menu-cleanup_large.webp 1x">
</a>]]></content>
    <published>2026-04-06T18:08:44-05:00</published>
    <updated>2026-04-06T18:08:44-05:00</updated>
    <link href="https://brandur.org/atoms/hbe5tz2"></link>
    <id>tag:brandur.org,2026-04-06:atoms:hbe5tz2</id>
    <author>
      <name>Brandur Leach</name>
      <uri>https://brandur.org</uri>
    </author>
  </entry>
  <entry>
    <title>Atom #hb6qm2s</title>
    <content type="html"><![CDATA[<p><a href="/nanoglyphs/050-api-spring"><em>Nanoglyph 050</em></a> is published, on the second wave of the API-first economy, and a few last photos from Piaynemo Geosite in Raja Ampat.</p>
<a href="/photographs/atoms/hb6qm2s/marker_large@2x.jpg">
    <img loading="lazy" src="/photographs/atoms/hb6qm2s/marker_large.jpg"
        srcset="/photographs/atoms/hb6qm2s/marker_large@2x.jpg 2x,
                                /photographs/atoms/hb6qm2s/marker_large.jpg 1x">
</a>]]></content>
    <published>2026-03-29T11:01:39-07:00</published>
    <updated>2026-03-29T11:01:39-07:00</updated>
    <link href="https://brandur.org/atoms/hb6qm2s"></link>
    <id>tag:brandur.org,2026-03-29:atoms:hb6qm2s</id>
    <author>
      <name>Brandur Leach</name>
      <uri>https://brandur.org</uri>
    </author>
  </entry>
  <entry>
    <title>Atom #hb6dolc</title>
    <content type="html"><![CDATA[<p>Added a GitHub-style contribution graph to <a href="/atoms">the atoms page</a>. I tried to add one when I first put atoms in years ago, but gave up after not being able to style it satisfactorily within the few hours I&rsquo;d allotted. Today, I iterated with an LLM for 30 minutes, and got it. Incredible. Scary.</p>
]]></content>
    <published>2026-03-28T20:19:33-07:00</published>
    <updated>2026-03-28T20:19:33-07:00</updated>
    <link href="https://brandur.org/atoms/hb6dolc"></link>
    <id>tag:brandur.org,2026-03-28:atoms:hb6dolc</id>
    <author>
      <name>Brandur Leach</name>
      <uri>https://brandur.org</uri>
    </author>
  </entry>
  <entry>
    <title>Atom #hb6ahhs</title>
    <content type="html"><![CDATA[<p>I can recommend <a href="https://chromewebstore.google.com/detail/web-site-blocker/aoabjfoanlljmgnohepbkimcekolejjn">Web Site Blocker</a> as a basic, ad-free, payment-free blocker for Chrome and compatible browsers like Brave.</p>

<p>I&rsquo;ve tried a couple alternatives, but they all upsell too hard. I&rsquo;m not against paying for software on principle, but paying for a browser extension whose only job is to block a couple URLs is a step too far, especially when it&rsquo;s a subscription.</p>

<p>The main thing I use Web Site Blocker for is to block Reddit. Not during certain hours, not over a certain time threshold, but to ban it fully and permanently. There used to be some utility to this website, but it&rsquo;s evolved into the most malignant cesspool of partisan extremism and propaganda imaginable. I used to need it available to click the occasional programming link, but these days LLMs provide superior answers in every case. It&rsquo;s not worth wasting one more second of consciousness on this thing.</p>
]]></content>
    <published>2026-03-28T16:39:35-07:00</published>
    <updated>2026-03-28T16:39:35-07:00</updated>
    <link href="https://brandur.org/atoms/hb6ahhs"></link>
    <id>tag:brandur.org,2026-03-28:atoms:hb6ahhs</id>
    <author>
      <name>Brandur Leach</name>
      <uri>https://brandur.org</uri>
    </author>
  </entry>
  <entry>
    <title>Atom #hb5dw52</title>
    <content type="html"><![CDATA[<p>Published my first article in a while, <a href="/second-wave-api-first"><em>The Second Wave of the API-first Economy</em></a>.</p>

<p>APIs were meant to make the web programmable and interoperable. A combination of revenue chasing, security concerns, and abuse reversed the trend for a decade as walls went up instead of down. Today, LLMs are changing the equation. People want agents that act on their behalf, and the services that ship APIs will have a decisive edge over those that don&rsquo;t.</p>
]]></content>
    <published>2026-03-27T08:11:08-07:00</published>
    <updated>2026-03-27T08:11:08-07:00</updated>
    <link href="https://brandur.org/atoms/hb5dw52"></link>
    <id>tag:brandur.org,2026-03-27:atoms:hb5dw52</id>
    <author>
      <name>Brandur Leach</name>
      <uri>https://brandur.org</uri>
    </author>
  </entry>
  <entry>
    <title>Atom #hawycgk</title>
    <content type="html"><![CDATA[<p>River is <a href="https://riverqueue.com/blog/soc-2-type-ii">SOC 2 Type II compliant</a>.</p>
]]></content>
    <published>2026-03-17T16:30:58-07:00</published>
    <updated>2026-03-17T16:30:58-07:00</updated>
    <link href="https://brandur.org/atoms/hawycgk"></link>
    <id>tag:brandur.org,2026-03-17:atoms:hawycgk</id>
    <author>
      <name>Brandur Leach</name>
      <uri>https://brandur.org</uri>
    </author>
  </entry>
</feed>