- notes from the bay
- Posts
- June 16, 2025
June 16, 2025
Hey all! Been a minute. I’m Pierce and at one time you subscribed to my newsletter. Welcome back (or welcome aboard).
Summer in San Francisco is off to a roaring start: farmers market stone fruit, stern grove concerts, and more people coffee-shop vibe-coding than having 1:1 meetings. Is nature finally healing?
Language servers
A language server is half lexer and half server. The server part is trivial: it just implements a common spec for how to communicate linting errors in a way that all IDEs can implement to standard. The lexer is where the magic happens. When you modify a file, the language server parses the code into an Abstract Syntax Tree (AST), analyzes the semantic relationships, and applies a set of rules to detect issues.
No one’s spending much time talking about language servers, even though they’ve become nearly ubiquitous. I imagine you’d be hard pressed to find a developer environment that doesn’t have one set up by default. They provide syntax highlighting, style conventions, and increasingly detailed warnings about incorrect code. As AI-based coding workflows become increasingly asynchronous, they’re going to become an even more integral part of the engineering stack.
I wrote up a detailed look at how language server parsers are implemented under the hood. I walked through an example with Python - both because its AST parser is really first class and because an interpreted language is a great example of static analysis providing guardrails for LLM code generation.
The ergonomics of Rails
I want to turn the clock back for a second. To understand why Rails felt revolutionary, we need to remind ourselves of what it replaced. I spent this last weekend refamiliarizing myself with some of the old projects I built around 2004. Boy was web-dev a mess.
I’ve spent a lot of time thinking about webapp ergonomics over the last two years, ever since I sketched the original draft of the Mountaineer API on a plane flight to Utah. Since then I’ve shipped five separate products using it, which has been beyond helpful in pointing out its strengths and areas to improve. There’s nothing like the cold start problem to make you reconsider your documentation. With its recent v0.10.0 release I’m really starting to feel like it’s growing up fast.
Developing for the web is a much better place than it was even 5 years ago. Your average 4-core server is blazing fast. PaaS is once again a hot category with the addition of Vercel, Render, and Fly. OpenTelemetry lets you debug remotely even easier than locally. But I think we can push it to be even better.
I spent a bit of time thinking about the web framework that started it all and still holds a special place in my heart.
Unfortunately SEO still matters
Everyone's saying SEO is done and dusted. It's over. GEO (generative engine optimization) is the name of the game now. If more people are using LLMs for product recommendations, having your product rank first there is as important as showing above the fold on Google.
But is it so different really?
In the swirl of information & disinformation about AI, fear mongering has come for GEO. I’m sure it’s a coincidence that the same SEO agencies that have made billions in the past 15 years are all orienting to the new world order.
Information retrieval still backs any of the chatbot systems that rely on web search, so the differences are more nuanced than the influencers would lead you to believe. Yes - Goodhart’s law (when a measure becomes a target, it ceases to become a good measure) inherently applies to any blackbox system that exposes its outputs to end users. But LLMs have proven better able to sort through the garbage that usually crowds out valuable search results. My sense is optimizing specifically for the current model architectures is going to be a losing game. Writing good quality content that has some natural authority is increasingly the way to go. Whether you want to call that GEO or SEO or just plain writing is up to you.
Until next time. May the tensors be good to you.
Pierce