Reflections on building software that lasts.

I tinker with different stacks and reflect on what holds up, drawing on 15+ years in the field. Follow along, take what helps, and tell me what you'd do differently.

Platform

The ground it all runs on.

InfrastructureSoon
As codeEnvironmentsEdge & DNSSecrets
SecuritySoon
Identity & authAccess controlEncryptionAudit logs
ObservabilitySoon
LogsMetricsTracesAlerts
Delivery & qualitySoon
CITestsLintingReleases

Services

The typed API core on top.

Schema & contractsSoon
ProtobufGraphQLOpenAPIVersioning
Generated SDKsSoon
Go SDKTypeScript SDKTyped clientsIn sync
GatewaysSoon
API gatewayMCP gatewayRoutingRate limits
WorkersSoon
QueuesConsumersSchedulesRetries

Data & AI

Memory and intelligence.

Data layerSoon
Relational storeTyped queriesMigrationsSoft deletes
SearchSoon
Full-textFiltersVector searchRanking
AnalyticsSoon
EventsMetricsDashboardsReports
AI foundationsSoon
Model gatewayRetrievalAgentsEvaluations

Product

The surfaces people use.

Client appsSoon
WebMobileAuth flowsOffline
Design systemSoon
Tokens & themingComponentsIconsDark mode
NotificationsSoon
EmailIn-appPushPreferences
BillingSoon
PlansProduct bundlesUsageInvoices

A few principles I keep coming back to

The specific tools are the easy part, and the first to change. What holds steady underneath matters more. These principles come from my own context, so if you'd approach something differently, I'd genuinely like to hear it.

Stack-agnostic

Good foundations translate to any language or framework.

Vendor-agnostic

Choose the providers that fit your context; the foundation holds.

A working prototype

Each foundation becomes a lightweight, working prototype, real code that shows the concept in action.

Transparent decisions

I share the trade-offs, the calls I make, and the ones I would revisit.