Field notes
from the team.
How we build, what we're shipping, and the engineering trade-offs behind Kanject Core, the BaaS platform, and everything we put our name on.
Building a serverless analytics engine that scales to zero
Most analytics products solve the dashboard latency problem with an always-on OLAP cluster. We solved the same problem differently — Lambda + DynamoDB + S3 Express + EventBridge in your AWS account. Here's the architecture brief.
Everything we've shipped notes on.
Six analytics patterns. Zero SQL. Introducing Kanject Insights.
We shipped a click-to-insight engine that supports the six analytics patterns every product team needs — funnels, cohorts, correlations, and more — without writing a line of SQL.
Parallel.ForEachAsync wasn't enough. So we built our own.
The four things every batched-I/O workload needs — scoped DI, retry policy, per-partition timeout, and partial-batch acknowledgement — none of which the BCL gives you in one place. Here's why we shipped Kanject.Core.Parallel.
How we ship source generators that survive refactors
Lessons from two years of building Roslyn generators that don't silently break when downstream code moves.
Cadence belongs on the method, not in startup
Why we built drift-corrected, attribute-driven recurring tasks with three call-site overloads — and why we don't think you should reach for Timer, PeriodicTimer, or BackgroundService directly anymore.
From Console.WriteLine to ILogger without changing a single call site
Developers love Console.WriteLine. Production hates it. We built a compile-time severity inference + interceptor system so the same call sites route through ILogger when you ship — zero refactoring.
Deploying Lambda services into customer AWS accounts
The CloudFormation patterns we use to deploy the same .NET service into dozens of isolated customer environments — without managing them.
What I wish my .NET timezone library handled
Five recurring footguns in .NET timezone code — and the operations we shipped to make them disappear. Including the one where 02:30 AM doesn't exist.