Ólafur Páll Geirsson

@geirsson.com

Building Agents at Sourcegraph. Posts about coding, AI, and family (3 kids). @olafurpg elsewhere. Based in Oslo, Norway. https://geirsson.com

The best mental model for buying strollers is to think of renting them by the month. The resale value holds pretty high so the final cost isn’t so bad even for the $2k premium twin strollers.

The usual answer is “no” whenever people ask whether LSP can be used in a novel way. The protocol’s strength is also its weakness, it’s very much optimized around a single human user interacting with an IDE.

Anthropic is the king of function calling and deserves their incredible revenue growth. They’ve paved the way for AI agents, not OpenAI or Google. It’s only a matter of time before Google gets the memo and Gemini starts taking function calling more seriously.

Surprisingly, Sonnet and Opus 4 both fail on one of my go-to codegen tests for new models > Implement a Scalafix rule that converts foo.apply(...) to foo(...) and explain why it's semantic or syntactic They both think it needs to be semantic (aka. have access to types and symbol).

Memory in AI chatbots is overrated, it turns the LLM into a sycophant by tying every response with random pieces of information that got extracted from past conversations. I’m sure memory is great for engagements/likability, but it’s turned me off ChatGPT personally.

At the risk of being pedantic, when many people say “one shot” the actually mean zero shot pass@1. Technically, one shot means including one example output in the prompt, and most prompts don’t do that. Not blaming, I even catch myself saying one shot meaning pass@1.

There’s a different trajectory for the people who are excited about AI because it enables them to build more expertise, or skip building expertise. Concrete example, I love AI because it helps me learn CSS faster, not because AI writes all my CSS so I don’t have to learn it.

git worktrees are overrated, they're a performance optimization that only makes sense when working in a repo that's super slow to clone. For normal repos, just clone twice and enjoy benefits like being able to check out the main branch in both clones at the same time.

Got o3 to think for a record-breaking amount of time (4m54s) with this prompt. “How many songs in the Eurovision finals are in English? I have a feeling there are unusually few this year.” It enumerated the songs and classified the lyrics, very cool. Answer was 11 out of 26 songs were in English.

It’s naive to believe that tech companies are slowing down hiring due to AI productivity gains. Only a small fraction of people in tech work on projects with meaningful revenue generation, and it’s a better investment to buy GPUs for the winning projects than to employ people for losing projects.

Hand-rolled a JSON-RPC like protocol with JSONL on the wire and it’s so simple that it’s almost a crime that LSP popularized the complicated Content-Length based format on the wire.

Nix is so appealing on the surface but I always get turned off quickly after trying to use it. I get maybe 98% of the benefits via mise/direnv with none of the complexity. I must be missing something.

ArkType is absolute TypeScript sorcery. Very glad to see a strong zod competitor enter the market of runtime validation with a focus on performance and developer ergonomics. Runtime validation has always been a weak spot in the JS ecosystem, and ArkType might just fix that important gap for me.

Maybe file-based issue tracking will have a comeback with agents checking off their TODOs. Wiring OAuth to something like JIRA/Linear feels heavy-weight when the files are just lying there and LLMs are good at editing files.

First day today working with git-branchless. It takes some time getting used to, but I can already see how this workflow is greatly superior to the manual branch+rebase workflow that I've been using for years.