Sign in

Mikael Lirbank

@lirbank.com
45 followers 32 following 52 posts

I help companies build reliable software, focusing on AI and web technologies www.lirbank.com Author of www.npmjs.com/package/neon-testing

PostsRepliesMedia
Mikael Lirbank @lirbank.com · 30/06/2026
New article: Taming production database migrations How to use expand-and-contract to ship schema changes without downtime, broken clients, or permanent compatibility cruft. www.lirbank.com/taming-produ... Thanks @andrelandgraf.com and @neon.com for the backing!
lirbank.com
Taming production database migrations
Use expand-and-contract to ship database migrations with confidence.
111
Mikael Lirbank @lirbank.com · 17/06/2026
Neon Testing now supports Bun Test! v3.0.0 lets you run Bun and Vitest integration tests against isolated Neon Postgres branches, with automatic DATABASE_URL setup and cleanup. Get it here: www.npmjs.com/package/neon... Release notes: github.com/starmode-bas...
npmjs.com
000
Mikael Lirbank @lirbank.com · 29/04/2026
Let's gooooo!
000
Mikael Lirbank @lirbank.com · 07/04/2026
github.com/starmode-bas... 💥 Better error messages, right now! @andrelandgraf.com already knows, now you do too! 🎉
github.com
GitHub - starmode-base/neon-testing
Contribute to starmode-base/neon-testing development by creating an account on GitHub.
010
Mikael Lirbank @lirbank.com · 15/03/2026
Install it: npx skills add neondatabase/agent-skills Works with Claude Code, Cursor, Codex, and others. github.com/neondatabase...
github.com
001
Mikael Lirbank @lirbank.com · 15/03/2026
Built a new agent skill for @neon.com's agent-skills repo. It helps AI coding agents find the query patterns that quietly run up your Postgres egress bill.
110
Mikael Lirbank @lirbank.com · 07/03/2026
7/ Full benchmark — setup, raw data, summary stats: www.lirbank.com/liberate-you...
lirbank.com
Liberate yourself from infrastructure over-planning
Challenge conventional wisdom before making hard decisions. Some one-way doors open both ways.
000
Mikael Lirbank @lirbank.com · 07/03/2026
6/ The cross-provider penalty is effectively zero when both providers have data centers in the same metro. Provider boundaries and geographic proximity are not the same constraint.
100
Mikael Lirbank @lirbank.com · 07/03/2026
5/ The thing that doesn't matter: provider boundaries. Near Cloudflare Workers (internet) vs Vercel on AWS (internal network), same region: node-postgres: 31ms vs 32ms Postgres.js: 38ms vs 36ms In some configurations, crossing the internet was faster.
110
Mikael Lirbank @lirbank.com · 07/03/2026
4/ The thing that actually matters: geographic distance. Same Cloudflare infrastructure, same database, different regions: Far (San Jose → Virginia): 742ms Near (Ashburn → Virginia): 31ms That's 23x. Distance is real.
100
Mikael Lirbank @lirbank.com · 07/03/2026
3/ I was working on a Cloudflare Workers deployment with Postgres on AWS. No managed Postgres on Cloudflare — cross-provider was the only option. So I benchmarked it: 4 Postgres drivers × 3 connection strategies × 3 deployment targets, 25 iterations each.
100
Mikael Lirbank @lirbank.com · 07/03/2026
2/ Conventional wisdom: your database and application need to be on the same cloud provider. Cross-provider means crossing the internet, and crossing the internet means slow. It's the kind of thing that drives platform choices.
100
Mikael Lirbank @lirbank.com · 07/03/2026
1/ Some constraints are real. Some are assumptions that sound plausible and never get tested. It's worth knowing which is which before they shape your decisions. I had one recently. 🧵
100
Mikael Lirbank @lirbank.com · 14/02/2026
6. I wrote the full walkthrough with runnable code examples and a pattern for injecting barriers into our tests without touching production code. If you've ever worried about sneaky race conditions in your code, give it a read. www.lirbank.com/harnessing-p...
lirbank.com
Harnessing Postgres race conditions
Synchronization barriers let you test for race conditions with confidence.
010
Mikael Lirbank @lirbank.com · 14/02/2026
5b Lock present - test passes. Lock removed - test fails. That's proof.
100
Mikael Lirbank @lirbank.com · 14/02/2026
5a. Synchronization barriers let us test for this. A barrier is a coordination point - each task runs until it hits the barrier, then waits. When the last task arrives, all are released at once. We get the exact race condition interleaving we need for our tests, manufactured on demand.
120
Mikael Lirbank @lirbank.com · 14/02/2026
4. What we actually need is a write lock. The second transaction blocks until the first one commits, then reads the updated value. Race condition gone. But now we have a new problem - how do we prove the lock is actually doing its job?
100
Mikael Lirbank @lirbank.com · 14/02/2026
3. Wrapping it in a transaction doesn't help. Postgres's default isolation level is read committed, which guarantees each statement sees only committed data - that's a read guarantee, not a write guarantee. Both transactions can still read the stale value before either writes.
100
Mikael Lirbank @lirbank.com · 14/02/2026
2. Here's what that looks like. Two $50 credits hit an account with $100 at the same time. Both operations read the balance as 100. Both write 150. Final balance: $150 instead of $200. One credit vanished. No error. No rollback. Nothing in the logs.
100
Mikael Lirbank @lirbank.com · 14/02/2026
Good test coverage gives us confidence and prevents regressions. But testing for race conditions is hard. Even when tests run concurrently, the timing almost never lines up to trigger the bug. The test passes whether our code handles concurrency correctly or not.
120
Mikael Lirbank @lirbank.com · 18/01/2026
Neon Testing v2.4.0 is out! 🎉 A Vitest utility for integration tests with Neon Postgres, now with: - Multi-role support for testing row-level security (RLS) - Multi-database project support github.com/starmode-bas... Big thanks to francesco-carrella for the contribution!
github.com
Release v2.4.0 · starmode-base/neon-testing
What's Changed Role and database selection by @francesco-carrella in #10 New Contributors @francesco-carrella made their first contribution in #10 Full Changelog: v2.3.1...v2.4.0
010
Mikael Lirbank @lirbank.com · 23/12/2025
I knew I've been pretty productive this year, but yeah, this is more than I expected... while the stats are kind of exciting, it may be time for a day off... 305 Cursor days this year so far
000
Mikael Lirbank @lirbank.com · 16/12/2025
I'm using the tab completion in Cursor so much they are sending me a Cursor tab key! 😅
000
Mikael Lirbank @lirbank.com · 29/11/2025
...when test runs crash, stale branches can linger. The new 10-minute TTL safety net ensures automatic cleanup. Profit! 📦 www.npmjs.com/package/neon... 🔖 github.com/starmode-bas...
npmjs.com
000
Mikael Lirbank @lirbank.com · 29/11/2025
🎉 Black Friday special: 100% off Neon Testing - grab your copy today! Just released v2.3.0 with support for Neon's expiring branches. Neon Testing tears down branches immediately after tests complete. But...
npmjs.com
110
Mikael Lirbank @lirbank.com · 09/09/2025
🚀 My guest post for the Neon blog just went live! Want to make Postgres integration testing dead simple? Read on: neon.com/blog/neon-te... Big thanks to @andrelandgraf.com, Carlota Soto and Neon for the support!
neon.com
Neon Testing: a Vitest Library for Your Integration Tests - Neon
Try Neon Testing, an open-source utility for Vitest that turns Neon branches into disposable test environments.
021
Mikael Lirbank @lirbank.com · 29/08/2025
New neon-testing release! www.npmjs.com/package/neon...
npmjs.com
neon-testing
A Vitest utility for seamless integration tests with Neon Postgres. Latest version: 2.1.0, last published: 13 minutes ago. Start using neon-testing in your project by running `npm i neon-testing`. The...
000
Mikael Lirbank @lirbank.com · 25/08/2025
Just release neon-testing v1.1.0 with better support for WebSocket drivers, retries with exponential backoff, and more. A @vitest.dev utility for seamless integration tests with Neon Postgres www.npmjs.com/package/neon... github.com/starmode-bas...
npmjs.com
neon-testing
A Vitest utility for seamless integration tests with Neon Postgres. Latest version: 1.1.0, last published: 9 minutes ago. Start using neon-testing in your project by running `npm i neon-testing`. Ther...
000
Mikael Lirbank @lirbank.com · 09/06/2025
I just launched a new NPM package - a @vitest.dev utility for automated integration tests with Neon! It's really sweet. Check it out. www.npmjs.com/package/neon...
npmjs.com
neon-testing
A Vitest utility for automated integration tests with Neon. Latest version: 1.0.1, last published: 6 minutes ago. Start using neon-testing in your project by running `npm i neon-testing`. There are no...
031
Mikael Lirbank @lirbank.com · 07/02/2025
@vercel.com my dashboard looks like this, but www.vercel-status.com say all is dandy
010
Mikael Lirbank @lirbank.com · 06/02/2025
000
Mikael Lirbank @lirbank.com · 22/01/2025
Just started working magically! 🤘
100
Mikael Lirbank @lirbank.com · 22/01/2025
Hey @leerob.com is Bun 1.2 support something that needs to be done on the Vercel side?
110
Mikael Lirbank @lirbank.com · 17/01/2025
Let's gooo!
030
Mikael Lirbank @lirbank.com · 09/01/2025
This is pretty exciting! vercel.fyi/nextjs-spa bsky.app/profile/lirb...
vercel.fyi
Single-Page Applications with Next.js
Next.js fully supports building Single-Page Applications (SPAs).
010
Mikael Lirbank @lirbank.com · 08/01/2025
Let's goooo!
000
Mikael Lirbank @lirbank.com · 07/01/2025
@leerob.com I'd love to see @tannerlinsley.com's TanStack Start in the Vercel Frameworks. What can we in the community do to promote and support that to happen? 🙏
131
Mikael Lirbank @lirbank.com · 03/01/2025
Right now I am using Ably to send notifications from step run functions to the client, so it can display progress. ably.com Curious to try Server-sent events at some point too. I wonder how well it will work with Vercel edge functions though. developer.mozilla.org/en-US/docs/W...
developer.mozilla.org
Server-sent events - Web APIs | MDN
Traditionally, a web page has to send a request to the server to receive new data; that is, the page requests data from the server. With server-sent events, it's possible for a server to send new data...
010
Mikael Lirbank @lirbank.com · 03/01/2025
Inngest is so cool! ❤️ www.inngest.com
inngest.com
Inngest - Queuing and orchestration for modern software teams
Inngest's durable functions replace queues, state management, and scheduling to enable any developer to write reliable, multi-step code faster without touching infrastructure.
020
Mikael Lirbank @lirbank.com · 01/01/2025
@tannerlinsley.com you probably don't plan to, but plz don't integrate ESLint into TanStack Start. It's a great _standalone_ tool that I really like and use in every project.
110
Mikael Lirbank @lirbank.com · 18/12/2024
Ref docs.aws.amazon.com/AWSEC2/lates... vercel.com/docs/edge-ne... neon.tech/docs/introdu...
000
Mikael Lirbank @lirbank.com · 18/12/2024
So you know, these mean the same AWS data center: Vercel: Washington, D.C., USA (East) – iad1 Neon: AWS US East (N. Virginia) AWS Code: us-east-1 AWS Name: US East (N. Virginia) I find it especially helpful that @vercel.com name it "Washington, D.C" since AWS call it "N. Virginia".
110
Mikael Lirbank @lirbank.com · 17/12/2024
open.spotify.com/track/4pbzF8...
open.spotify.com
Oxygène, Pt. 4
Jean-Michel Jarre · Oxygène · Song · 1976
000
Mikael Lirbank @lirbank.com · 17/12/2024
I mean, so good! Classic, enduring, timeless.
100
Mikael Lirbank @lirbank.com · 14/12/2024
New website section, I am a talker 📢 www.lirbank.com#talks
lirbank.com
Mikael Lirbank
I help companies build better software, focusing on AI and web technologies.
000
Mikael Lirbank @lirbank.com · 13/12/2024
For websites and e-commerce it is critical to display content with no delay. For apps it is important that the app is fast. For example, code splitting (and network calls) are actually a bad thing here. Loading JS when the user open a panel is making UX worse.
000
Mikael Lirbank @lirbank.com · 13/12/2024
Let's make it easier to pick a meta framework for your next project: - Next.js is for websites (great for e-commerce, CMS) - TanStack Start is for webapps (great for Figma, Excalidraw style apps) @t3.gg @tannerlinsley.com @leerob.com agree?
120
Mikael Lirbank @lirbank.com · 30/11/2024
Just added a fallback PNG browser icon for older browsers. One example of an older browser is the latest Safari for macOS. Older browsers (AKA Safari) keep their icon cache forever so if you ever visited this site, you will still not see any icon. Just so you know. 🙃 www.lirbank.com
lirbank.com
Mikael Lirbank
I help companies build better software, focusing on AI and web technologies.
010
Mikael Lirbank @lirbank.com · 25/11/2024
It is fun to write SVG markup. Just made a new browser icon for www.airlab.io
airlab.io
Airlab
Airlab LLC
000
Mikael Lirbank @lirbank.com · 25/11/2024
That is so cute!
000