Leo Sjöberg

Leo Sjöberg

@phroggyy.dev

Product Engineer @incident.io, previously CTO @jobilla. Balance whisky and wine with triathlons. Love buying domains, bad at using them.

98 followers193 following84 posts

Claude code is by far the most fun way to vibe code something, and the quickest way to burn through money - spent 20 mins at the airport vibe coding a UI and API for myself, and managed to burn through $5 doing it 💸

It's always refreshing being back in Sweden, knowing I can be on-call while driving through forest and open landscapes in the middle of nowhere, because there's still perfect 5G coverage here

Absolute nightmare happened this evening: my watch wasn't charged and I had to do a workout without tracking it. Worse yet, it meant I couldn't upload it to Strava so everyone I know can see how much better I am

All you need is Postgres

Phil Eaton@eatonphil.bsky.social

Inspired by the post on HN yesterday about running graph queries on Postgres with recursive CTEs, my coworker installed the SQL/PGQ patches locally and ported all the examples to this native graph query language coming (eventually) to Postgres! www.enterprisedb.com/blog/represe...

Have confirmed it's over the top and absolutely delicious

Leo Sjöberg@phroggyy.dev

Love having first Friday of every month off - means I can do things like travel to Bath and find the wankiest cafe possible to match my energy

Love having first Friday of every month off - means I can do things like travel to Bath and find the wankiest cafe possible to match my energy

The problem with "move fast and break things" is that most people underestimate the cost and probability of "break things" occurring. Works well when you're a startup, I suspect less so when you're the literal government processing a few trillion dollars annually, but let's see

Josh Marshall@joshtpm.bsky.social

New Exclusive building on Wired's reporting: Musk operatives have already pushed live to production extensive code changes to the Treasury Department payment system which makes 95% of fed govs payments. talkingpointsmemo.com/edblog/musk-...

I really wish Strava's Athlete Intelligence was better. They have all my training data across ~10 years. Yet, all it can tell me is that I had consistent pace in my run? Feels like a tool that has so much potential to become great, but which right now is quite useless

Naming a wine bar with clear Italian inspiration and then serving mostly French wines feels wrong. I feel cheated and happy at the same time - I would've wanted French anyway, but walked in expecting Italian. Someone tell me how to feel.

Been spending some time this holiday season creating a project from scratch using Cursor. 90% of the code is written by me chatting to the IDE, and a core part of the workflow has become to update the `.cursorrules` file when I want to change how code is written!

I'd highly encourage everyone to do some coding with AI this holiday season - it's like when you have a couple drinks with a coworker and tell them how to build an app, except the coworker is sober and know what they're doing. Perfectly suited for these Swedish winter ales is all I'm saying 🍻

Playing with Cursor a bit more this holiday and it really is a delight to tell it a really big thing like "build an admin dashboard to view all orgs", and watch it go off and run like 30 prompts on its own

And like, it's good. It's replaced the entire backend with Goa now, and made sure it runs. I don't know if the code is *good*, but it's incredible that I can write a single prompt and have it refactor everything

The AI makes mistakes, but what I love is that you can just tell it in human words what it got wrong, and it'll just fix it, and do a pretty damn good job at it

AI to refactor and duplicate code is *so good*. We have an interactive command that's been a bit flaky due to state management. I'll definitely fix that, but my first step is to build a non-interactive version of the terminal UI, and AI is great at "write a non-interactive version of this" 🏎️

I'm really looking forward to Christmas, but I'm *also* really excited to get back to work in January after my two weeks off. @incident.io's gonna be building some incredible stuff next year and I can't wait 🔥

I got paged this morning for a queue build-up, and I'm so happy that we shipped alert insights recently. Instead of having to rely on my (quite bad) memory, we now have actual data on how often these alerts fire, and how much time it takes 📊

Leo Sjöberg reposted

This week, we launched Scribe — an AI agent for incident calls, that: 1️⃣ transcribes in real time 2️⃣ shows the current topic in Slack/Web so you always know what's being discussed 3️⃣ surfaces key points and actions, and summaries on the go Genuinely one of the best things we’ve shipped this year! 🚀

I've quite enjoyed using the cursor IDE for small simple tasks, like "write me tests for this bit of code I just wrote". However, back when I first tried it a few months back, I also tried out "Composer" - the thing that's meant to operate across your whole codebase and make changes all over 🤖

It wasn't good. It did loads of hallucinating for what was a relatively simple task (a bunch of mundane refactoring that involved copy-pasting the same bit of code to 25 places, and changing one variable).

Well, I just tried Cursor Composer again and *holy shit*. Now that they've shipped the "agent" mode, it's explaining what it's doing along the way, and it *got everything right*. I've been pretty skeptical of AI code tools, but with agents + claude-3.5-sonnet, it's really really good 🤯

Whenever I tell people I work on a paging product, I inevitable get asked a variation of "but if you use your own product, how do you get paged when it breaks?" It's a fun problem to solve, and Lawrence wrote a great post about how we do it 🔥

Lawrence Jones@lawrencejones.dev

"Who watches the watchers?" is funny as a phrase, less so as a problem you need to solve, which it became when building on-call. It's possible for us to receive a page saying "paging is broken" and while I hope we never do, thought it would be fun to share how it works. incident.io/blog/who-wat...

Moving logic from the frontend to the backend is so satisfying: way easier to write tests, and means the frontend has to do less work with complex data structures.

Underrated feature: Strava sending you a notification when your running shoes are getting worn out! I'd completely lost track of how much I've used them.

I've found AI to be really good at reviewing code, and writing tests. In the last week, I've done a bit of work on some fairly critical code. For those changes, I've first asked AI to review it for bugs, and then to write tests for the functionality I've added, and it does a remarkably good job!

Thorsten Ball@thorstenball.com

Past few days we've been doing TDD using LLMs. One LLM grades the output of the other and it's... amazing. It works incredibly well and it really helps write some tests that I usually wouldn't have because the criteria was too fuzzy ("make sure the text includes a mention of Anna and her car")

Feeling vindicated that Strava gave me 3 fitness points for an hour-long run today, after feeling cheated yesterday when I only gained one point for an hour and a half on the bike. What's the point of exercise if you don't earn virtual points??

The Bluesky team has done such an incredible job, particularly over the last few weeks. They keep gaining millions of users and you never even notice it as a user, truly a testament to the calibre of their team

hailey@hailey.at

bluesky engineers: perhaps today it’ll be a little slower, we’ll catch our breath the internet: MORE!!

One thing DataDog *does* do really well is its universal service tagging, and its tracing libraries. My takeaway is that if you're an org that doesn't know a lot about o11y, or just don't want to allocate any resources to it, DD is really good. It gets you from 0 to 1 really fast.

View full thread

The APM service overview is pretty sick - you get your latency, wall time, profiles, traces, most expensive endpoints, all in one page, with zero work.

Where DD is less good is if your team is already really good at o11y. The custom dashboards lack the flexibility of grafana, and you find yourself fighting it half the time. But for teams that have nothing, you could get your service(s) instrumented with traces and profiles in a day of work.

One thing DataDog *does* do really well is its universal service tagging, and its tracing libraries. My takeaway is that if you're an org that doesn't know a lot about o11y, or just don't want to allocate any resources to it, DD is really good. It gets you from 0 to 1 really fast.

If you install their tracing component (or even let the k8s admission controller auto-inject it if you're writing code in a compatible language), and correctly tag your services with labels and env vars, you get **a lot** for free...

Playing around with DataDog and learning how the dashboards there work (we use Grafana at work, so I'm curious), and my god, building dashboards in DD is bad 😬 Can't reorder columns, can't rename group keys, and can't have derived cols display before queries

i.e you can't show CPU usage as a % before CPU usage in mcores, which is really useful if you want to tune k8s CPU requests. I *want* service | CPU % of requested | Actual CPU usage in mcores But DD won't let you order cols like that 😭

This is ridiculous. I can't have "Mem usage" next to "% Mem requests", because the % ones are functions, and queries can't come before functions. Insane.