All posts
Build a Desktop App with Wails #2: Project Structure and the Dev Loop — wails dev and Bindings
Walking through what each of main.go, app.go, frontend, and wails.json does in a project created by wails init. Covers the hot-reload dev loop and how the auto-generated binding code flows.
EC2 Instance Families Compared: Choosing Between t, m, c, and r
A working standard for choosing EC2 instance types: how to read type names (family, generation, attributes), when the t burstable model fits and when it backfires, the vCPU-to-memory ratios behind m, c, and r with large-size price comparisons, choosing between Graviton, Intel, and AMD, and sizing from CloudWatch and Compute Optimizer measurements.
How to Read NVIDIA GPU Names — Architecture Generations and Product Lines
Reading H100, B200, GB300, L40S, and RTX 5090 as a system rather than a code: the scientist-named architecture axis and the datacenter/inference/consumer product-line axis, what the digits and prefixes mean, and the generation landscape and roadmap as of mid-2026.
Microsoft Graph in Practice #6: Teams — Reading Messages, and the Three Routes for Sending Notifications
Facing the most famous wall in Graph's Teams integration head-on: reading teams, channels, and messages; why application permissions can't post to channels (migration-only), and the three alternative routes — a delegated automation account, Workflows incoming webhooks, and bots — with selection criteria.
Recovering Deleted Git Commits and Branches with reflog
How to recover commits wiped by git reset --hard and branches deleted with -D, using the reflog. Covers what the reflog records, what it does not, and the cases where recovery is impossible.
Build a Desktop App with Wails #1: What Wails Is — Lightweight Desktop Apps in Go
Getting started with Wails, the framework for building desktop apps with Go and a web frontend. From how it differs from Electron and Tauri, through installation and the wails doctor check, to running your first app.
GPU Servers vs. General Servers — Architecture, Power, Cooling, Price
Where a GPU server stops being a regular server with a graphics card in it: the inverted architecture and interconnects, power density an order of magnitude higher and the arrival of liquid cooling, the price structure, the driver stack, and why utilization management becomes the job.
Microsoft Graph in Practice #5: Files in OneDrive and SharePoint — Upload Sessions and Sharing
Automating files with Graph: the shared drive/driveItem model, the path differences between personal OneDrive and SharePoint site drives, downloads and simple uploads up to 250MB, upload sessions for large files (320KiB-multiple chunks, resume), creating sharing links, and narrowing permissions with Sites.Selected.
Practical Git Workflows #7: Monorepos and Git — sparse-checkout, Submodules, and LFS
Why Git slows down as a repository grows, and when to reach for partial clone, sparse-checkout, submodules, and Git LFS. The final part of the Practical Git Workflows series.
gp3 vs io2 — How to Choose an EBS Volume Type
A working standard for choosing EBS volume types: the legacy of gp2's size-coupled, burst-credit model, gp3's independent provisioning and raised ceilings (80,000 IOPS, 2,000MB/s), the conditions that actually justify io2 Block Express, sizing IOPS from measurements, and converting gp2 to gp3 with no downtime.
Microsoft Graph in Practice #4: Automating Mail and Calendar — Reading, Sending, Creating Events
Automating Outlook mail and calendar with Graph: inbox queries with filters, report delivery via sendMail and the cautions around bulk sending, attachments, creating meetings with invitations, availability lookups with getSchedule, and the classic trap of time zones — all in working code.
Practical Git Workflows #6: stash, cherry-pick, bisect — Everyday Tools
stash to absorb urgent context switches, cherry-pick to move a single commit to another branch, and bisect to find the commit that introduced a bug by binary search. Three tools that are hard to do without at the moment you need them.