A working set
Open-source libraries I reach for, with the actual reason I keep reaching.
- drizzle-orm#database#typescript#orm
A TypeScript ORM that stays out of your way.
It is the first ORM that has not eventually made me want to write raw SQL instead. The query builder is thin, the types are honest, and the migrations are diffs you can read.
- hono#http#edge#typescript
A small, fast web framework for the edge.
It compiles to whatever runtime you point it at — Workers, Deno, Bun, Node — without pretending the differences do not exist. The middleware story is small enough to hold in your head.
- vitest#testing#tooling
A test runner that does not get in the way.
Watch mode is so fast it changes how you write tests. The fact that it shares Vite's config means there is one resolver to debug, not two.
- biome#linting#formatting#tooling
A formatter and linter written in Rust. One tool, no plugins.
Replaces eslint plus prettier plus their twelve plugins with a single binary. The opinions are sensible. The speed makes you stop noticing the tool exists, which is the goal.
- sst#devops#iac#typescript
Infrastructure as a TypeScript program.
The first IaC tool where the code you write and the code that runs are the same thing. The Pulumi-on-Workers rewrite made it feel like a serious production tool.
- k6#testing#performance
Load testing as a scriptable, observable thing.
Most load testing tools want you to learn a DSL. k6 wants you to write JavaScript and get back metrics that look like every other metric you already have.
- tigerbeetle#database#distributed-systems
A purpose-built database for financial transactions.
Reading their design docs is the single most educational thing I have done this year, even if I never deploy it. The discipline of writing software that cannot be wrong about money is something every backend engineer should sit with.
- neon#database#postgres#serverless
Serverless Postgres with branching.
Branching a database for every preview deploy used to be a wish. Now it is a default. The pooler is good enough that I have stopped thinking about connections for prototypes.
- tsx#tooling#typescript
Run TypeScript files directly, like node script.ts.
Removes the build step from the inner loop of writing small scripts. The amount of yak I no longer shave to run a one-off file has been transformative.
- zod#validation#typescript
Schema validation that the type system can read.
The right answer for the boundary between your code and the rest of the world. The fact that it doubles as a type generator means you stop maintaining two definitions of the same thing.