Notes
Short pieces on how I structure systems — trust boundaries, data paths, and the trade-offs behind them.
- 4 minAIEngineeringMentoring
AI is leverage until it's the only muscle you have
Used well, AI should compress the years between not knowing and knowing. For a lot of newer developers it's doing the opposite — standing in for the understanding rather than speeding up the way there.
- 3 minReact NativeProduct
"Not possible" is rarely about the code
Every client has heard "this is technically not possible" from a developer, often when it wasn't true. Most of what gets called impossible is a framing problem, not a wall.
- 3 minAWSArchitectureSecurity
Private subnet by default, public by exception
Most of a serverless backend never needs to be reachable from the internet. Keep it in the private subnet, expose only the resolver, and let Cognito carry the trust you didn't have to build yourself.
- 4 minNext.jsReactSecurity
Next.js solved a problem, then added new ones
React alone meant hand-rolling server-side rendering — a custom server.ts and ReactDOMServer wired up by hand. Next.js was built to remove that pain, not create it. The trade is a framework with enough surface area that one wrong move in the wrong layer is a security bug, not just a bad request.
- 4 minArchitectureAWSSecurity
Verify at the edge, not in the handler
Where you put the identity check decides how much of your system has to be trusted. Proving the caller before compute runs collapses the surface you have to reason about.
- 5 minArchitectureGraphQLObservability
One path to data
Every read and write through a single observable pipeline. The value isn't purity — it's that you only have one place to look when something is slow, wrong, or leaking.