New Posts

Life and Investment Through the Lens of Uncertainty

Life and Investment Through the Lens of Uncertainty

Judge decisions, not outcomes: why holding longer makes a loss less likely, why the past was uncertain too, and why you must avoid getting wiped out.

Navigating Shell for Productivity and Profit

Navigating Shell for Productivity and Profit

Shell tricks and my setup: brace expansion, process substitution, heredocs, aliases, fzf history search, and zsh with oh-my-zsh and powerlevel10k.

The Good, Bad, and Ugly: Istio for Short-lived Pods

The Good, Bad, and Ugly: Istio for Short-lived Pods

Envoy sidecars keep Istio Job Pods alive and may lag app startup. A webhook-injected wrapper waits for proxy readiness; a controller stops Envoy when done.

DNS, UDP, IP Anycast, and All That

DNS, UDP, IP Anycast, and All That

Why DNS prefers UDP: BGP anycast route changes can break TCP connections, and a UDP query takes 2 packets versus 11 for TCP, with no connection state.

Lessons from Scaling GKE: L4 ILB Tops at 250 Nodes

Lessons from Scaling GKE: L4 ILB Tops at 250 Nodes

GKE's internal load balancer health-checks only 250 nodes. With externalTrafficPolicy Local, only Nginx nodes pass, so a subset lacking them broke ingress.

Parameters with Defaults in Go: Functional Options

Parameters with Defaults in Go: Functional Options

Option structs can't tell zero from unset, pointer fields are clumsy, and variadics cover one parameter. Functional options give Go overridable defaults.