May 13, 2026 · 5 min read
Notes from contributing to Google's open-source Spanner Migration Tool (HarbourBridge). Where to start reading the codebase, where the load-bearing logic lives, and the parts that look simple but aren't.
SpannerOpen SourceGoDatabase Migration
May 12, 2026 · 4 min read
Spanner partitions by primary-key range. A monotonically-increasing PK like a timestamp or UUID-v1 funnels all writes to one server. The fix changes everything from your sequence strategy to your tenant model.
SpannerDatabase DesignPerformanceGo
May 11, 2026 · 4 min read
Interleaving a child table into its parent co-locates the rows for fast joins. It also tightens coupling in ways that bite you on the next schema migration. A practitioner's decision matrix.
SpannerDatabase DesignSchema
May 10, 2026 · 5 min read
A bulk migration takes hours; the application can't be offline that long. CDC keeps the source and destination in sync while the bulk runs, and a quick cutover swaps traffic. The handoff between bulk and CDC is where most migrations go wrong.
SpannerDatastreamPub/SubDataflowMigration
May 9, 2026 · 4 min read
Notes from contributing to Bloom — SC Ventures / Standard Chartered's policy-driven secure cloud provisioning platform. Push-to-deploy self-service for bank engineering teams, with the audit controls baked in.
TerraformBankingSOC 2ISO 27001AWSAzure
May 7, 2026 · 4 min read
Notes from integrating OpenTelemetry into airshipit, an open-source bare-metal Kubernetes lifecycle project with contributions from Ericsson, AT&T, Microsoft, and others. The hard part wasn't OTel; it was making distributed traces useful across foreign code.
OpenTelemetryKubernetesOpen SourceObservability
May 6, 2026 · 4 min read
The azure-service-operator project lets you declare Azure resources as Kubernetes objects. Notes from the multi-vendor collaboration shape: how decisions got made, what slowed us down, what shipped despite it.
AzureKubernetesOpen SourceOperators
May 5, 2026 · 5 min read
The Picnic social platform served 1M+ users across a graph of Go microservices behind a GraphQL gateway. The latency win came from a counter-intuitive move: fewer services, tighter contracts.
GogRPCGraphQLMicroservicesPerformance
May 4, 2026 · 5 min read
Test coverage and observability are the boring infrastructure that makes the interesting changes safe. Notes on how the Picnic team built both, and the on-call experience they enabled.
TestingPrometheusObservabilityGoSRE
May 3, 2026 · 5 min read
The transaction engine had to absorb 30K+ TPS across partner integrations, never lose a transaction, and survive partial failures. The architecture: Go, Kafka, Pub/Sub, Redis, K8s, with idempotency at every layer.
KubernetesKafkaGoRedisPaymentsPCI
May 2, 2026 · 5 min read
A single layer of idempotency will eventually fail. Three independent layers gives you a margin. Here is the pattern that worked across ingest, worker, and emit boundaries.
IdempotencyDistributed SystemsPaymentsGo
May 1, 2026 · 4 min read
Status-code-based dispatch made every worker grow a longer and longer switch. Normalising every partner-specific error into an enumerated set let the orchestration logic stop changing as new partners landed.
GoDistributed SystemsArchitecture
April 30, 2026 · 4 min read
5K+ loans per month. Three credit bureaus. Multiple payment gateways. The thing that has to be right is the ledger. Notes on what invariants the database enforces vs what the application enforces.
GoPostgreSQLFinTechLendingAccounting
April 29, 2026 · 4 min read
Borrower onboarding is the most fraud-prone moment in a P2P platform. The shape that worked: deterministic KYC, parallel bureau pulls with fallback, real-time fraud signals, and a maker-checker approval for every disbursement.
KYCAMLLendingFraudRBACFinTech
April 28, 2026 · 4 min read
100K+ votes, 10K+ concurrent users during a live AFL Brownlow Medal broadcast. The architecture: Go on Cloud Run, GraphQL + gRPC behind a CDN, vote integrity through Cloud KMS + Security Command Center. Notes on what makes a live-broadcast load shape unusual.
Cloud RunGoGraphQLgRPCKMSLive Events
April 27, 2026 · 5 min read
30 minutes on stage. The talk title looked tactical; the talk underneath was about why most microservices migrations fail and how to set up the one that doesn't.
SpeakingMicroservicesGoogle Cloud NextArchitecture
April 26, 2026 · 5 min read
Seven cycles. Ten-plus students. Most shipped, a few didn't, all of them taught me something about engineering culture. Notes on what works for mentors and what works for students.
GSoCOpen SourceMentorship
April 25, 2026 · 4 min read
What it actually takes to build a unified cloud API library — and why "write once, run anywhere" still doesn't quite work, even for the patterns where it almost does.
GoMulti-CloudOpen SourceAPI Design
February 2, 2026 · 3 min read
Vote integrity needed two things the platform team couldn't fake even by accident: signing keys we couldn't access, and continuous security monitoring we couldn't silence. KMS + SCC delivered both.
Cloud KMSSecurity Command CenterGCPVoting