HNHacker News
TopNewBestAskShowJobs

tlarkworthy

5,770 karma · joined October 22, 2012

Software Developer with a passion for transparency.

Firebase -> Google -> Futurice -> Taktile

Now in Berlin.

submissionscomments
tlarkworthy··on MiMo-v2.6-Pro: Intelligence, Performance and Price Analysis
I am interested in flash, I think that would be my default model
tlarkworthy··on I asked astra to make playable 4D chess
I was expecting it more like a filled hypercube but its more like two surfaces? Probably better the way it is.
tlarkworthy··on Parallel development without the headaches using Git worktree
Yeah, but actually the agent recreates the folder structure, so work trees/task1 subfolder contains a sparse subset of work trees for task1 if it crosses repos. Yeah I have a skill for creating the isolated worktrees. The agents manage all this complexity and the complexity is isolated to the meta repository, it does not spill into the real code repos
tlarkworthy··on Petri Nets as a Music Sequencer
Oh thats great and makes so much sense and you can see how it could be extended, brilliant abstraction
tlarkworthy··on Gribouille 0.3.0: A Grammar of Graphics for Typst
HTML is human readable as a text file. It does lack abstraction though. I don't actually like markdown much but it is quicker for prose and when I want my images styled a certain way I drop to HTML
tlarkworthy··on Gribouille 0.3.0: A Grammar of Graphics for Typst
Ruby is extensible as well, these things flourish because their creators thought hard about escape hatches. The things that are not extensible we don't talk about because they already died.
tlarkworthy··on Gribouille 0.3.0: A Grammar of Graphics for Typst
Of course it's extensible, you can put HTML in it, and HTML is extensible.
tlarkworthy··on The Token Compression Illusion: Why I'm Skeptical of RTK
I tried it and it does not compress messages which was 90% of my context, so it only compresses a small part of my token usage. If you read it carefully you will realize that is exactly stated. If you look at /context you will probably see that tool calls are not where you are spending token on, so a proxy that compresses tool calls will not make much impact, whilst still being true that it compresses tool calls by 8x. Its just not that important for long coding sessions for me.

"native/built-in Read or cat tools, the data is not intercepted by RTK's shell hook"

tlarkworthy··on Open source AI must win
I think it's enough to use Open Router to encourage competition in the market place.
tlarkworthy··on "Stick" – A primitive/fun interactive demo of a tiny rig to animate layout
It kills drag scroll over the flow text on my android
tlarkworthy··on Bun Rust rewrite: "codebase fails basic miri checks, allows for UB in safe rust"
Maybe they want a quick switchover and the UB is replicating existing problems so it is net neutral for the codebase (but positive future coz developers can do future work on rust without synchronizing two codebase? ).
tlarkworthy··on RISC-V Linux BusyBox Single Board Notebook
It counts every instruction and blends the colours for the three active modes. Then the height represents idleness. So it's a pretty high resolution measure!
tlarkworthy··on RISC-V Linux BusyBox Single Board Notebook
I added a viz for that! Its cool! You can see the transition to user mode https://bsky.app/profile/larkworthy.bsky.social/post/3mjcpky...
tlarkworthy··on RISC-V Linux BusyBox Single Board Notebook
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?
tlarkworthy··on RISC-V Linux BusyBox Single Board Notebook
I just like the game Risk. It boots!
tlarkworthy··on RISC-V Linux BusyBox Single Board Notebook
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.
tlarkworthy··on RISC-V Linux BusyBox Single Board Notebook
Evergreens only. Yes it's a whole OS in there, 7mb.
tlarkworthy··on Show HN: GitAgent – An open standard that turns any Git repo into an AI agent
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.
tlarkworthy··on The Gay Tech Mafia
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.
tlarkworthy··on France dumps Zoom and Teams as Europe seeks digital autonomy from the US
It makes you download it but then a button appears saying join in browser. I have tons of zoom binary copies
tlarkworthy··on The browser is the sandbox
I have a pretty good one here https://observablehq.com/@tomlarkworthy/robocoop-2 and I have a port of opencode in-progress
tlarkworthy··on LLM Structured Outputs Handbook
Yeah, this upsert_cell tool does it

https://observablehq.com/@tomlarkworthy/forking-agent#upsert...

format: { type: "grammar", syntax: "regex", definition: cellsRegex },

Where cellRegex is

cellsRegex = { const CELL_OPEN = String.raw`<cell>\s`;

  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 + ")*$";
}

And the extraction logic is here https://observablehq.com/@tomlarkworthy/robocoop-2#process

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() }; }); }

BTW that agent is under development and not actually that good at programming. Its parent https://observablehq.com/@tomlarkworthy/robocoop-2 is actually very good at notebook programming

tlarkworthy··on LLM Structured Outputs Handbook
I use regex to force an XML schema and then use a normal XML parser to decode.

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.

OpenAI API lets you do regex structured output and it's much better than JSON for code.

tlarkworthy··on Show HN: 22 GB of Hacker News in SQLite
Parquet/iceberg
tlarkworthy··on GPT-5.2-Codex
We fixed this at work by instructing it to maximize coverage with minimal tests, which is closer to our coding style.
tlarkworthy··on Ask HN: How can I get better at using AI for programming?
also after you have a to-and-fro to course correct it on a task, run this self-reflection prompt

https://gist.github.com/a-c-m/f4cead5ca125d2eaad073dfd71efbc...

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.

tlarkworthy··on MinIO is now in maintenance-mode
It's better to link to a leading S3 compatible API docs page. You get a better measure of the essential complexity

https://developers.cloudflare.com/r2/api/s3/api/

It's not that much, most of weirder S3 APIs are optional, orthogonal APIs, which is good design.

tlarkworthy··on MinIO is now in maintenance-mode
?

Its like GET <namespace>/object, PUT <namespace>/object. To me its the most obvious mapping of HTTP to immutable object key value storage you could imagine.

It is bad that the control plane responses can be malformed XML (e.g keys are not escaped right if you put XML control characters in object paths) but that can be forgiven as an oversight.

Its not perfect but I don't think its a strange API at all.

tlarkworthy··on Claude Advanced Tool Use
Etag and cache control headers?
tlarkworthy··on The 1957 “Spaghetti-Grows-on-Trees” Hoax
My grandfather was still talking of this in the 90s. A very good joke!
Page 1 of 34Next →