Ólafur Páll Geirsson

Ó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

639 followers724 following280 posts

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).

Sonnet 3.7 is the only model I've seen that delivers the perfect solution, it replaces the tokens for `.` and `apply` and nothing else. All other models I've tested use the worse tree replacement APIs.

On a second iteration, it seems like it's the web tool that's causing troubles. Disabling the web tool makes Claude 4 reach the right syntactic solution although not with the optimal token edits. Goes to show that you need to be careful with what tools you're exposing. Less is more.

View full thread

The Dwarkesh episode still gave a fresh perspective on how these models work, and I have probably underestimated how powerful they will become. If you're still judging AI capabilities by today's products and today's models then you are probably also underestimating how weird things are going to get.

Last note, even with code that can be unit tested, I still think most of the tests that AI generates is crap. And the AI generated commit messages also miss the point. I'm seeing lots of PRs now where people add AI generated tests that aren't even testing anything meaningful.

View full thread

Even components that can be unit tested or e2e tested via behavioral assertions have lots of implicit constraints wrt. latency or how features interact with each other in long-running user sessions that are impractical to tests in an automated fashion.

I keep shaking my head hearing AI folks claiming software engineering will be automated this year. After listening to this conversation, I better understand what they at least mean by this. These AI researchers are super smart, but they're also sort of clueless over what "software engineering" is.

The fallacy is thinking that all software engineers do is deliver code that can be tested in isolation, and AI is very good at doing that now. The problem is that tests only cover maybe 0-50% of real-world constraints.

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.

Working on Amp makes it clear that Observables is really all you need, no requests, no notifications, no promises. Wire it straight into Svelte readable and everything becomes magically reactive. Beautiful.

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.

Feels like a ticking timebomb that the tech industry is seemingly moving towards monorepos and git does not scale well beyond the size of Linux. I speculate Mercurial will have a comeback. Reading up on Mercurial and it has a lot going for it compared to git in common scenarios like rebasing.

tig is very good for working with git locally, highly recommend. Triggered because I just discovered the [] shortcuts to expand the context lines in the diff view, which you can't do via the git cli