Gabriel Pereira
Jun 2026·AI·6 min read

Shipping AI features that don't feel like AI features

The AI features users trust are the ones that don't announce themselves.

May 2026·craft·5 min read

The environment gap

There's a class of bugs that only exist between your machine and production. They require a different debugging mindset.

Apr 2026·product·5 min read

Onboarding is a product, not an afterthought

Onboarding is the first time a user sees whether your product is coherent. Most teams build it last.

Apr 2026·product·5 min read

The parts of a product nobody wants to build

Billing flows, deletion with grace periods, subscription sync. Invisible when done well, damaging when skipped.

Mar 2026·craft·5 min read

The cost of a schema decision you can't take back

Code is reversible. A schema, once in production with real user data, mostly isn't.

Mar 2026·work·9 min read

One year in: what production code taught me that tutorials didn't

Notes from twelve months of shipping code that actual customers run, after two years of tutorials, courses and personal projects.

Feb 2026·craft·5 min read

Notes on shipping a feature you inherited

What it takes to deliver something you didn't design, in a codebase you didn't build.

Jan 2026·craft·4 min read

Reading the codebase before reading the ticket

A different order of operations that changed how fast I move.

Dec 2025·work·4 min read

Small teams, fewer meetings, more questions

What works in a small team that doesn't scale, and why that's fine.

Nov 2025·process·3 min read

Why I log decisions as I make them

A running record of decisions that answers the question you'll have in three months.