Ó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).
Amp Tab is coming along nicely, it's not too far from being able to replace Cursor Tab as my daily driver.
The Dwarkesh episode on Claude 4 is the most in-depth, balanced, and (almost) non-hype conversation I have heard on why AI researchers believe AGI is around the corner open.spotify.com/episode/3H46...
How Does Claude 4 Think? — Sholto Douglas & Trenton Bricken
Dwarkesh Podcast · Episode
open.spotify.com
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.
After starting working on Amp (ampcode.com ): - No meetings - No code review, just push to main - Take responsibility for your changes - Rarely need to create a branch off main - Auto-release every few hours - Prioritize user bug reports whenever possible
Amp
Everything will change.
ampcode.com
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.
Sprinkling Copilot dependencies across the VS Code codebase is a great technique to make it more annoying to keep a fork up-to-date. Well played, Microsoft.
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.
Move to a place where neighbors randomly invite you to enjoy freshly baked cinnamon buns on a Thursday morning
So Claude Code has token-based pricing unless you subscribe to Max for a flat rate. Meanwhile, Cursor has a flat rate unless you use the MAX models, which have token-based pricing.
I once sent an email with some copy-pasted text from ChatGPT and realized afterwards you can tell from the HTML formatting. I’m still embarrassed by this.
OpenAI and Microsoft must have a sour relationship when OpenAI acquires a VS Code fork to compete against Copilot.
Date-based versioning is underused. I love how JetBrains IDEs have easy to remember versions like 2019.3. Meanwhile, we have Gemini Pro 2.5 Experimental (New).
Feature request: testing library that automatically re-runs new tests N times to catch flakes.
Highly recommend using o3 to geoguess screenshots of random images from your personal photo library. It's been off by ~30km on the two examples I've tried so far.
Apple buying Anthropic would make a lot of sense. Strong win-win vibes.
It feels very good being able to develop on the main branch and pushing straight to origin. No branching, no PR. Every dev should try to at least experience this.
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.