All posts
Committed a Large File to Git? History Cleanup and Migrating to LFS
What to do when a push is rejected by the 100 MB limit or the repository has swollen to several GB. From the diagnosis that finds the largest blobs, through filter-repo history cleanup, to migrating still-needed files to Git LFS.
S3 Storage Classes Compared: Standard to Glacier Deep Archive
A working standard for choosing S3 storage classes: the full map of storage rates versus retrieval fees and minimum durations, the three traps in Standard-IA (retrieval fees, 30 days, 128KB), the real differences between the three Glacier classes (instant, hours, 12+ hours), why Intelligent-Tiering is the answer when access patterns are unknown, and when lifecycle transition fees eat the savings.
When a Pod Is Stuck in Pending — 7 Causes and the Order to Check Them
The causes of Kubernetes Pods stuck in Pending, ordered by real-world frequency: reading the Events in describe, insufficient resources, oversized requests, nodeSelector and affinity mismatches, taints, PVC binding waits, ResourceQuota, and the cases where Cluster Autoscaler refuses to scale up.
Build a Desktop App with Wails #4: System Integration — Dialogs, Menus, and Window Control
Native file dialogs, application menus with shortcuts, window control, and the clipboard — integrating with the OS through the Wails runtime API. This is where a web frontend starts to feel like a desktop app.
Committed a Secret to Git? Rotate the Key First, Then Clean History with filter-repo
A response procedure for the incident where an AWS key, an API token, or a .env file was committed and pushed. Priority one is not cleaning history but invalidating the key. We also cover rewriting history with filter-repo and the prevention tooling.
ECS Fargate vs EC2: Spec Combinations and Price Compared
A working standard for choosing ECS compute: the structural difference between per-task billing (Fargate) and per-instance billing (EC2), the vCPU/memory grid Fargate allows (0.25-16 vCPU, up to 120GB), what the premium actually amounts to at equal specs, the point where utilization and bin packing flip the comparison, and the levers that cut the bill — ARM, Spot, and Savings Plans.
Sizing Servers for Self-Hosted LLMs — From VRAM Math to Concurrent Users
A repeatable order for estimating the GPU scale a self-hosted LLM needs: computing VRAM from parameter count and precision, the KV cache and its relationship to concurrency, memory bandwidth and token speed, example configurations by scenario, and the break-even against API pricing.
AI Training Servers vs. Inference Servers — Where the Requirements Diverge
Why the same "AI server" question has two very different answers: batch versus request-serving workload shapes, GPU interconnect versus memory bandwidth as the bottleneck, precision and quantization, cost structures, and the trap of trying to share one fleet for both.
Build a Desktop App with Wails #3: Connecting Go and the Frontend — Method Bindings and Events
Pinning down the binding rules in a table, building a todo-list backend in Go, and wiring it to a React frontend. Covers auto-generated TypeScript models for structs and the event system that pushes data from Go to the UI.
Getting Out of Git Detached HEAD — Causes and Recovering Commits
What the "You are in detached HEAD state" warning actually means, explained through its structure, with an escape route for each situation. Includes how to keep commits made in this state by putting a branch on them.
Microsoft Graph in Practice #7: Operations — Throttling, Pagination, Delta Queries, Change Notifications
Raising Graph automation to operational grade: retries that honor 429 and Retry-After, the pagination (@odata.nextLink) that silently truncates data when missed, delta queries replacing polling (deltaLink state management), change notification subscriptions (validation handshake, renewal, lifecycleNotificationUrl), and JSON batching — closing the series.
RDS Instance Classes Compared: db.t vs db.m vs db.r
A working standard for choosing RDS instance classes: the db. prefix on EC2 naming rules, why the same hardware costs roughly twice as much (management included, Multi-AZ extra), why db.t does not belong in production, the buffer-pool criterion that separates db.m from db.r, and why moving to Graviton is easier on RDS than on EC2.