<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: tlarkworthy</title><link>https://news.ycombinator.com/user?id=tlarkworthy</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 09 Apr 2026 15:14:19 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=tlarkworthy" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by tlarkworthy in "RISC-V Linux BusyBox Single Board Notebook"]]></title><description><![CDATA[
<p>OK fixed! As you clearly know this space well, what do think would make this project better? I was thinking I wanted to see a heatmap of memory access (pages?), and more detailed explaination of the opcodes, but getting the thing working took quite a while so I got a bit tired and stopped at the booting milestone, but I like the project a lot and now it is in a notebook I can basically probe any part of the system with dataviz tools to make it more tangible. Do you have anything you think would be helpful or cool for learners that you have not seen before in an emulator?</p>
]]></description><pubDate>Thu, 09 Apr 2026 05:15:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=47699537</link><dc:creator>tlarkworthy</dc:creator><comments>https://news.ycombinator.com/item?id=47699537</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47699537</guid></item><item><title><![CDATA[New comment by tlarkworthy in "RISC-V Linux BusyBox Single Board Notebook"]]></title><description><![CDATA[
<p>I just like the game Risk. It boots!</p>
]]></description><pubDate>Wed, 08 Apr 2026 20:50:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=47696080</link><dc:creator>tlarkworthy</dc:creator><comments>https://news.ycombinator.com/item?id=47696080</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47696080</guid></item><item><title><![CDATA[New comment by tlarkworthy in "RISC-V Linux BusyBox Single Board Notebook"]]></title><description><![CDATA[
<p>This is an app, the file works from a file:// domain without a local Webserver. It's a different thing than other things you have seen.</p>
]]></description><pubDate>Mon, 06 Apr 2026 15:22:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=47662108</link><dc:creator>tlarkworthy</dc:creator><comments>https://news.ycombinator.com/item?id=47662108</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47662108</guid></item><item><title><![CDATA[New comment by tlarkworthy in "RISC-V Linux BusyBox Single Board Notebook"]]></title><description><![CDATA[
<p>Evergreens only. Yes it's a whole OS in there, 7mb.</p>
]]></description><pubDate>Mon, 06 Apr 2026 11:10:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=47659364</link><dc:creator>tlarkworthy</dc:creator><comments>https://news.ycombinator.com/item?id=47659364</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47659364</guid></item><item><title><![CDATA[RISC-V Linux BusyBox Single Board Notebook]]></title><description><![CDATA[
<p>Article URL: <a href="https://tomlarkworthy.github.io/lopebooks/notebooks/@tomlarkworthy_linux-sbc.html">https://tomlarkworthy.github.io/lopebooks/notebooks/@tomlarkworthy_linux-sbc.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47658554">https://news.ycombinator.com/item?id=47658554</a></p>
<p>Points: 2</p>
<p># Comments: 10</p>
]]></description><pubDate>Mon, 06 Apr 2026 09:14:47 +0000</pubDate><link>https://tomlarkworthy.github.io/lopebooks/notebooks/@tomlarkworthy_linux-sbc.html</link><dc:creator>tlarkworthy</dc:creator><comments>https://news.ycombinator.com/item?id=47658554</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47658554</guid></item><item><title><![CDATA[New comment by tlarkworthy in "Show HN: GitAgent – An open standard that turns any Git repo into an AI agent"]]></title><description><![CDATA[
<p>We do something similar at work, called metadev. It sits above all repos and git submodules othe repos in, and works with multiple changes with multiple sessions with worktrees, and stores long term knowledge in /learnings. Our trick has been to put domain specific prompts in the submodules, and developer process in metadev. Because of the way Claude hierarchically includes context, the top repo is not polluted with too much domain specifics.</p>
]]></description><pubDate>Sat, 14 Mar 2026 17:00:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=47378658</link><dc:creator>tlarkworthy</dc:creator><comments>https://news.ycombinator.com/item?id=47378658</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47378658</guid></item><item><title><![CDATA[Realistic Benchmarks for Financial AI]]></title><description><![CDATA[
<p>Article URL: <a href="https://labs.taktile.com/benchmarks">https://labs.taktile.com/benchmarks</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47377932">https://news.ycombinator.com/item?id=47377932</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Sat, 14 Mar 2026 15:56:42 +0000</pubDate><link>https://labs.taktile.com/benchmarks</link><dc:creator>tlarkworthy</dc:creator><comments>https://news.ycombinator.com/item?id=47377932</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47377932</guid></item><item><title><![CDATA[New comment by tlarkworthy in "The Gay Tech Mafia"]]></title><description><![CDATA[
<p>Two husbands without kids, working in tech, have a huge amount of cash, time capacity and ideation opportunity. I felt these added up to a huge advantage for getting quality shit done and taking risks. Fair play.</p>
]]></description><pubDate>Fri, 20 Feb 2026 17:08:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=47090712</link><dc:creator>tlarkworthy</dc:creator><comments>https://news.ycombinator.com/item?id=47090712</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47090712</guid></item><item><title><![CDATA[Show HN: The Lopecode Tour]]></title><description><![CDATA[
<p>Article URL: <a href="https://tomlarkworthy.github.io/lopecode/notebooks/@tomlarkworthy_lopecode-tour.html">https://tomlarkworthy.github.io/lopecode/notebooks/@tomlarkworthy_lopecode-tour.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47074609">https://news.ycombinator.com/item?id=47074609</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 19 Feb 2026 15:10:10 +0000</pubDate><link>https://tomlarkworthy.github.io/lopecode/notebooks/@tomlarkworthy_lopecode-tour.html</link><dc:creator>tlarkworthy</dc:creator><comments>https://news.ycombinator.com/item?id=47074609</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47074609</guid></item><item><title><![CDATA[New comment by tlarkworthy in "France dumps Zoom and Teams as Europe seeks digital autonomy from the US"]]></title><description><![CDATA[
<p>It makes you download it but then a button appears saying join in browser. I have tons of zoom binary copies</p>
]]></description><pubDate>Tue, 03 Feb 2026 22:44:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=46878464</link><dc:creator>tlarkworthy</dc:creator><comments>https://news.ycombinator.com/item?id=46878464</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46878464</guid></item><item><title><![CDATA[New comment by tlarkworthy in "The browser is the sandbox"]]></title><description><![CDATA[
<p>I have a pretty good one here <a href="https://observablehq.com/@tomlarkworthy/robocoop-2" rel="nofollow">https://observablehq.com/@tomlarkworthy/robocoop-2</a> and I have a port of opencode in-progress</p>
]]></description><pubDate>Mon, 26 Jan 2026 09:05:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=46763379</link><dc:creator>tlarkworthy</dc:creator><comments>https://news.ycombinator.com/item?id=46763379</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46763379</guid></item><item><title><![CDATA[New comment by tlarkworthy in "LLM Structured Outputs Handbook"]]></title><description><![CDATA[
<p>Yeah, this upsert_cell tool does it<p><a href="https://observablehq.com/@tomlarkworthy/forking-agent#upsert_cellsTool" rel="nofollow">https://observablehq.com/@tomlarkworthy/forking-agent#upsert...</a><p>format: {
    type: "grammar",
    syntax: "regex",
    definition: cellsRegex
},<p>Where cellRegex is<p>cellsRegex = {
  const CELL_OPEN = String.raw`<cell>\s<i>`;<p><pre><code>  const INPUTS_BLOCK = String.raw`<inputs>.*<\/inputs>\s*`;

  const CODE_BLOCK = String.raw`<code><!\[CDATA\[[\s\S]*\]\]>\s*<\/code>\s*`;

  const CELL_CLOSE = String.raw`<\/cell>`;

  return "^(" + CELL_OPEN + INPUTS_BLOCK + CODE_BLOCK + CELL_CLOSE + ")*$";</code></pre>
}<p>And the extraction logic is here
<a href="https://observablehq.com/@tomlarkworthy/robocoop-2#process" rel="nofollow">https://observablehq.com/@tomlarkworthy/robocoop-2#process</a><p>function process(content) {
  const doc = domParser.parseFromString(
    "<response>" + content + "</response>",
    "text/xml"
  );
  const cells = [...doc.querySelectorAll("cell")];
  return cells.map((cell) => {
    const inputsContent = cell.querySelector("inputs")?.textContent || "";
    return {
      inputs:
        inputsContent.length > 0
          ? inputsContent.split(",").map((s) => s.trim())
          : [],
      code: (cell.querySelector("code")?.textContent || "").trim()
    };
  });
}<p>BTW that agent is under development and not actually that good at programming. Its parent <a href="https://observablehq.com/@tomlarkworthy/robocoop-2" rel="nofollow">https://observablehq.com/@tomlarkworthy/robocoop-2</a> is actually very good at notebook programming</i></p>
]]></description><pubDate>Sat, 17 Jan 2026 14:17:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=46658247</link><dc:creator>tlarkworthy</dc:creator><comments>https://news.ycombinator.com/item?id=46658247</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46658247</guid></item><item><title><![CDATA[New comment by tlarkworthy in "LLM Structured Outputs Handbook"]]></title><description><![CDATA[
<p>I use regex to force an XML schema and then use a normal XML parser to decode.<p>XML is better for code, and for code parts in particular I enforce a cdata[[ part so there LLM is pretty free to do anything without escaping.<p>OpenAI API lets you do regex structured output and it's much better than JSON for code.</p>
]]></description><pubDate>Sat, 17 Jan 2026 00:18:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=46653982</link><dc:creator>tlarkworthy</dc:creator><comments>https://news.ycombinator.com/item?id=46653982</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46653982</guid></item><item><title><![CDATA[New comment by tlarkworthy in "Show HN: 22 GB of Hacker News in SQLite"]]></title><description><![CDATA[
<p>Parquet/iceberg</p>
]]></description><pubDate>Wed, 31 Dec 2025 04:28:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=46441269</link><dc:creator>tlarkworthy</dc:creator><comments>https://news.ycombinator.com/item?id=46441269</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46441269</guid></item><item><title><![CDATA[New comment by tlarkworthy in "GPT-5.2-Codex"]]></title><description><![CDATA[
<p>We fixed this at work by instructing it to maximize coverage with minimal tests, which is closer to our coding style.</p>
]]></description><pubDate>Fri, 19 Dec 2025 05:57:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=46322681</link><dc:creator>tlarkworthy</dc:creator><comments>https://news.ycombinator.com/item?id=46322681</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46322681</guid></item><item><title><![CDATA[New comment by tlarkworthy in "Ask HN: How can I get better at using AI for programming?"]]></title><description><![CDATA[
<p>also after you have a to-and-fro to course correct it on a task, run this self-reflection prompt<p><a href="https://gist.github.com/a-c-m/f4cead5ca125d2eaad073dfd71efbcfc" rel="nofollow">https://gist.github.com/a-c-m/f4cead5ca125d2eaad073dfd71efbc...</a><p>That will moves stuff that required manually clarifying back into the claude.md (or a useful subset you pick). It does a much better job of authoring claude.md than I do.</p>
]]></description><pubDate>Sat, 13 Dec 2025 21:23:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=46258203</link><dc:creator>tlarkworthy</dc:creator><comments>https://news.ycombinator.com/item?id=46258203</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46258203</guid></item><item><title><![CDATA[Measuring Agents in Production]]></title><description><![CDATA[
<p>Article URL: <a href="https://arxiv.org/abs/2512.04123">https://arxiv.org/abs/2512.04123</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46185219">https://news.ycombinator.com/item?id=46185219</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Sun, 07 Dec 2025 21:14:28 +0000</pubDate><link>https://arxiv.org/abs/2512.04123</link><dc:creator>tlarkworthy</dc:creator><comments>https://news.ycombinator.com/item?id=46185219</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46185219</guid></item><item><title><![CDATA[Dynamic Dataflow Templating: the missing semantic for dataflow programming]]></title><description><![CDATA[
<p>Article URL: <a href="https://observablehq.com/@tomlarkworthy/dataflow-templating">https://observablehq.com/@tomlarkworthy/dataflow-templating</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46184990">https://news.ycombinator.com/item?id=46184990</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Sun, 07 Dec 2025 20:46:34 +0000</pubDate><link>https://observablehq.com/@tomlarkworthy/dataflow-templating</link><dc:creator>tlarkworthy</dc:creator><comments>https://news.ycombinator.com/item?id=46184990</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46184990</guid></item><item><title><![CDATA[The Resonant Computing Manifesto]]></title><description><![CDATA[
<p>Article URL: <a href="https://resonantcomputing.org/">https://resonantcomputing.org/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46177631">https://news.ycombinator.com/item?id=46177631</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Sat, 06 Dec 2025 23:36:28 +0000</pubDate><link>https://resonantcomputing.org/</link><dc:creator>tlarkworthy</dc:creator><comments>https://news.ycombinator.com/item?id=46177631</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46177631</guid></item><item><title><![CDATA[Unaggregating Cloud Watch Metrics]]></title><description><![CDATA[
<p>Article URL: <a href="https://tomlarkworthy.github.io/lopebooks/notebooks/@tomlarkworthy_unaggregating-cloudwatch-metrics.html">https://tomlarkworthy.github.io/lopebooks/notebooks/@tomlarkworthy_unaggregating-cloudwatch-metrics.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46174278">https://news.ycombinator.com/item?id=46174278</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Sat, 06 Dec 2025 15:56:19 +0000</pubDate><link>https://tomlarkworthy.github.io/lopebooks/notebooks/@tomlarkworthy_unaggregating-cloudwatch-metrics.html</link><dc:creator>tlarkworthy</dc:creator><comments>https://news.ycombinator.com/item?id=46174278</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46174278</guid></item></channel></rss>