Blog
Featured
The Infrastructure Decisions You Cannot Take Back
Most infrastructure mistakes are recoverable. You chose the wrong instance type — resize it. You picked the wrong logging library — swap it. You underprov…
Brazil, Buck2, Bazel, and Gradle: Four Build Systems, Three Philosophies
Build systems age poorly in public comparisons because the comparison degenerates into a feature matrix. This post starts instead with what each tool opti…
Stripe Card Validation: A Four-Part HackerRank Take-Home in Python
Stripe's take-home assessment builds a card validation system across four escalating parts. Part 1 checks a Luhn checksum on Visa cards. Part 2 adds netwo…
CI/CD with Argo CD, Flux, and GitHub Actions: What Each Tool Actually Controls
Teams adopting Kubernetes land on one of two confusions: they try to use GitHub Actions to deploy directly to their cluster — a push model that creates cr…
Getting Build Cache Keys Right: Why Cache Invalidation is (mostly) a Hashing Problem
"There are only two hard things in computer science: cache invalidation and naming things." It's a joke that build engineers hear constantly and mostly ag…
Three Kubernetes Deploy Scenarios That Will Test You in Production
Rolling back a partial deploy across 40 replicas, handling a mid-deploy NotReady node, and choosing between push-based CI and GitOps for regulated environments.
Three Perspectives on Modernizing a Technical Blog: A Multi-Agent Sprint
A Designer, a Principal SWE, and a Product Manager walk into a codebase. This is what they found, what they fixed, and where they disagreed.
How Kruskal's Algorithm Works
Kruskal's is a greedy minimum spanning tree algorithm: sort all edges by weight -> repeatedly add the cheapest unconnected edge -> do unitl you have no mo…
Project Shadow: C2C Marketplace Mock
I'll be walking you through a mock project I created. I wanted to build a local test environment that mimicked one of the products I've worked on professi…
gRPC Services in Kotlin
gRPC is a high-performance *remote procedure call framework* built on HTTP/2 and Protocol Buffers. In a microservices architecture, it's the natural choic…
Custom OpenTelemetry Interceptors for Temporal SDK
*Or: what to do when `io.temporal:temporal-opentelemetry` just... isn't there.*
Cloud Native Architecture Patterns - 2026 Reference
Each pattern below: the problem it solves, what's actually used to build it in 2026, and the best practices that separate a working implementation from a…
DevOps Helper Tool
----
Monorepo Tooling Strategies
---
Documenting evaluating `kotlinx-datetime`
**Importing Required Libraries**
Debugging
Observe the behavior of the program—errors, crashes, incorrect output, or performance issues.
Web application architectures and components
Here is a breakdown of each major component layer:
A Day in the Life
Trying to fix the website so that things don't look like trash.
Behavioral Questions
It's good to have these behavioral questions handy when interviewing. Sometimes my mind goes blank when I'm asked questions under pressure, so it's nice t…
Kotlin Cheatsheet
---
Algorithms That Interest Me
<!-- Numerical: * Euclid's algorithms * Gaussian elimination * Fourier-Motzkin elimination * Fast Fourier Transform Data structures: * Binary trees * Hash…
Guide To Data Mining
* Manhattan Distance: {% highlight python %} def manhattan(user1, user2): # in python distance = 0 for key in user1: if key in user2: distance += abs(user…
Competitive Programming Practice
* array of numbers * jolly or not jolly flag * if all numbers between 1 ... (n-1) contained between abs(n - n + 1) for all n in array * boolean array of s…
Searching and Sorting - Binary Search
The idea behind binary search is that if the array is sorted already then we can minimize the number of comparisons we need to do. We can ignore half of t…
Recent
Leet Code Practice
Given a string `s` and an integer `k`, return the length of the longest substring containing the same letter you can get after performing a change to any…
Prep Problems
Some leet problems that I've solved to prep for August's interviews. All of these have a Python solution but there's not much preventing me from solving i…
Wiring CircleCI into Datadog: Pipeline Visibility Without the Guesswork
Most teams instrument their production services in Datadog and stop. Their CI pipeline runs blind: they know a build failed, but not why it was slow yeste…
Teaching Bazel at Scale
Interview Prep
- Data Structures & Algorithms - medium leetcode difficulty - Array/Hash Table/Binary Search/Sorting/String topics at a 4-Easy/14-Medium/2-Hard split. - H…
Three Perspectives
`
Step-by-Step Kubernetes Deployment Debugging
1. A Deployment’s rollout is stuck at 80% — - new pods aren’t becoming Ready. - Walk through your diagnostic steps (readiness probe config, resource reque…
Practice Problems - Best Time to Buy and Sell Stock
Given an array `prices` where `prices[i]` is the price of a given stock on day `i`, find the maximum profit you can achieve by making at most one transact…
Practice Problems - Two Sum
Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.
Nord Interview and Studies
Bazel is a powerful build and test tool from Google that supports projects in multiple languages and platforms. This cookbook provides 30 essential recipe…
Financial Calculations for Fun and Profit
Financial calculations are essential in personal finance, business, and investment decisions. Here are some common financial calculations:
Job Stuff
Description *Position at SoFi* **[Employee Applicant Privacy Notice](https://www.sofi.com/sofi-employee-applicant-privacy-notice/)**
Deleting index from array
I'm saving this in case I need to refer back to it later. This is an example of removing an item from an array of pointers to objects in C++.
Forge and Prep
Balance of responsibility between the client and the server in a client-server architecture.
Forge notes
This class diagram represents the key components of the Legacy Player Builder system. The main relationships and responsibilities:
Practice Makes Perfect
MacOS Notarization tool CMake to Bazel JavaScript conversion Blitz monorepo integration into monolithic codebase Gradle desktop Server split Badger Maple
Algorithms in a Nutshell
Blah, blah, blah. The big stuff is here. Challenging your mind with all sorts of knowledges and whatnot. When I first started computer science I came acro…
AI
agents rationality observability
Computer Science Rant
Computer Science. Where do I start? Basics? Algorithms? Languages? Theory? Hardware? Software? API? Design Patterns? The lists go on and on. But I think t…