WRITING ARCHIVE
2023
210 published posts.
- Redis in Voiceware: Small Manifest, Central Dependencyperspectives
- OpenSIPS Metrics Availability Is Separate from OpenSIPS Availabilitywriting
- An RTP Timestamp Is Not Wall-Clock Timewriting
- Stale Telemetry Should Not Render as Healthywriting
- V132A Taught Me That Binary Truth and Source Truth Are Differentwriting
- What a “Deployment Platform” Meant in Voicewareperspectives
- GraphRAG Is Useful When the Question Is About Relationships, Not Similarityperspectives
- Pigs (Three Different Ones) — Power Exposed Through Caricaturemusic
- One Image, Multiple Processes: Voiceware’s Celery Patternperspectives
- Why Voice Processing and Web Serving Should Fail Independentlyperspectives
- The Philosophical Problem Hidden Inside Intelligenceperspectives
- Time Through a Systems Architect's Eyesperspectives
- Downsampling 16 kHz Microphone Audio to 8 kHz PCMAwriting
- When the Chorus Sounds Bigger Than the Songmusic
- In the Flesh? — Performance, Identity, and the Question Mark After the Personamusic
- Backup Job Exit Status Belongs in Prometheuswriting
- Another Brick in the Wall (Part 2) — Education Is Not the Same as Obediencemusic
- Why Worker Scaling Must Follow Queue Behaviorperspectives
- The Signing Private Key Does Not Belong on the OTA Runtime Hostwriting
- How I Know Caddy Is Healthy but One Upstream Is Notwriting
- Public and Internal Probes Answer Different Availability Questionswriting
- River Discharge and Water Level Are Not the Same Measurementwriting
- Authelia Sessions Needed Durable State, Not Just Longer Cookieswriting
- Temperature Monitoring Belongs Beside Loadwriting
- The Philosophical Problem Hidden Inside Entropyperspectives
- The Thin Ice — How Fragility Can Exist Before a Person Knows Its Namemusic
- When a Docker Service Name Does Not Resolve from Caddywriting
- What an ArgoCD Application Actually Did for Voicewareperspectives
- A 168 by 384 E-Paper Screen Changes the UI Grammarwriting
- Empty Spaces — The Need to Fill a Gap That May Not Be Fillablemusic
- One Missing Semicolon Broke HTML Escaping in the Command Centerwriting
- How We Learned to See Cancer as a Systems Failureperspectives
- Notification Endpoint Health Needs Direct Monitoringwriting
- Jet Pilot — Speed, Militarism, and Images That Refuse to Sit Stillmusic
- Cymbaline — Anxiety That Feels Like Being Watchedmusic
- How I Separate Confirmed Facts, Inferences and Failed Experimentswriting
- The Server Cannot Report Its Own Deathwriting
- Where the protocol Analogy Breaksperspectives
- See-Saw — Emotional Motion That Never Quite Settlesmusic
- Absolutely Curtains — Closure That Opens Into Another Culture and Texturemusic
- Release ID Is Stronger Than a Version Stringwriting
- Canary to Cohort to Stable Is a Feedback Loopwriting
- How We Learned to See Networksperspectives
- Seismic Waves as Evidence of Earthquakesperspectives
- Why systemd Stop, Disable, and Mask Are Differentwriting
- A 422 Can Be Healthier Than a 302 for a Device APIwriting
- One-Way Audio Is Usually a Directional Problemwriting
- SIP and 5G Core Troubleshooting Started Converging for Mewriting
- The Biggest Voiceware Lesson: Platform Engineering Is Contract Engineeringperspectives
- War? — How a Question Mark Changes a Word We Think We Understandmusic
- E-Paper UI Design Forced Me to Treat Refreshes as a Resourcewriting
- Canary and Stable Are Different Release Stateswriting
- Cigaro — Power Exposed by Making Its Boast Ridiculousmusic
- Inbound and Outbound Calls Are Not Two Names for the Same Testwriting
- RTPengine Naming Drift Was a Monitoring Bug, Not a Media Bugwriting
- Redis maxmemory Is Not a Capacity Setting — It Is a Data-Loss Policywriting
- A Wi-Fi MAC Address Is Not a Device Credentialwriting
- Manufacturer Scope and Firmware Scope Need a Written Interfacewriting
- Kubernetes Gateway API Is Not Just a New Ingress YAMLperspectives
- The Observability Tax on a 7.1 GiB Linux Serverwriting
- Where the request trace Analogy Breaksperspectives
- Similar Patterns Do Not Prove the Same Processperspectives
- A Jitter Buffer Should Absorb Arrival Variation, Not Become a Delay Bucketwriting
- The EVT Toggle Switch Should Not Define the Production Power UXwriting
- A Reference Softphone Is Valuable Because It Is Not the Device Under Testwriting
- Dance Rhythms Inside Heavy Musicmusic
- Critical Container Log Spikes Are a Triage Signalwriting
- Number Through a Systems Architect's Eyesperspectives
- The ESL Service as an Explicit Integration Boundaryperspectives
- Clock Synchronization Is an Availability Dependencywriting
- Small Reversible Changes Beat Large Confident Changeswriting
- Where the control loop Analogy Breaksperspectives
- A Watchdog Should Observe Progress, Not Just a Timerwriting
- How We Learned to See The Cellperspectives
- RTPengine Timeout Reasons Tell Different Media Storieswriting
- One-Time Enrollment Turns Factory State into Fleet Statewriting
- Why Immutable Tags Make Rollback Boringperspectives
- The Most Useful Artifact in Voiceware Was the Deployment Historyperspectives
- How Voiceware Grew From a Web-App Chart Into a Multi-Service Deployment Repositoryperspectives
- Where the resource scheduler Analogy Breaksperspectives
- The Philosophical Problem Hidden Inside Languageperspectives
- Alert Fatigue Is an Architecture Bugwriting
- Why More Jitter Buffer Was Not Automatically Betterwriting
- A Newer Binary Does Not Mean a Device Should Updatewriting
- Terraform State Is Not a Cache — It Is the Binding Databasewriting
- Gene Regulation Through a Systems Architect's Eyesperspectives
- Building a NOC Dashboard for a Phone Screenwriting
- Psychological Safety Improves Telemetrywriting
- Build Once, Promote the Same Imageperspectives
- Power Loss Has Multiple OTA Failure Windowswriting
- Shimmy — Discipline, Scheduling, and the Absurdity of a Life Over-Programmedmusic
- Linux Routing Tables: The Moment `ip route` Replaced Guessingwriting
- Why System of a Down Choruses Often Feel Like Public Speechmusic
- Every Alert Should Suggest the Next Investigationwriting
- AEC Only Worked Once the Reference Signal Was Actually the Far-End Audiowriting
- Monitoring TCP Retransmission on a Server That Also Runs VoIPwriting
- An Active SIP Call Has Priority over OTAwriting
- Swap Usage Alone Is a Bad Memory Alertwriting
- Building a Small Home Lab from an Old PC and a Cheap Switchwriting
- GPIO17 Was Not Enough to Explain the Speaker PA Controlwriting
- Documentation Should Preserve the Path From Claim to Evidencewriting
- sngrep Became the Fastest Way to Answer the First SIP Questionwriting
- Who Monitors the Monitoring System?writing
- Why Voiceware Needed More Than Docker Compose Thinkingperspectives
- The Antenna Does Not End at the Edge of the Boardwriting
- Why I Mapped the Host Device to /dev/rnodewriting
- Burning Bridges — Letting Go Before You Know What Comes Nextmusic
- Journald Cursor Persistence Prevents Duplicate or Missing Logswriting
- Radio/Video — When a Happy Song Remembers Something Sadmusic
- Backend-Delivered SIP Configuration Keeps Secrets Out of Factory Imageswriting
- Static Routing in a Three-Router Labwriting
- Where the universal identifier Analogy Breaksperspectives
- Open Data Still Comes With Responsibilities to Its Sourceperspectives
- The Philosophical Problem Hidden Inside Computationperspectives
- Terminal OTA Events Need a Release IDwriting
- Information Density Without Dashboard Wall Artwriting
- A Stable /dev/serial/by-id Path Is Part of Radio Reliabilitywriting
- Upsampling 8 kHz Voice to 16 kHz Can Add Its Own Gritwriting
- How a Neuronal Signal Beginsperspectives
- Sysyphus, Parts 1-4 — The Absurd Labor of Building and Starting Againmusic
- The Exact CF CF C0 05 01 17 Command Was a Compatibility Probewriting
- Some Boot Bugs Exist Before app_main Ever Runswriting
- Voice AI Latency Is a Waterfall, Not One Numberperspectives
- Where the optimization engine Analogy Breaksperspectives
- Using Redis Beside Kamailio Without Making Redis the Whole Architecturewriting
- Mother — Protection That Slowly Becomes a Wallmusic
- Redis used_memory Can Look Fine While RSS Keeps Growingwriting
- The PBX Adapter Keeps Product Identity Out of Dialplan Fileswriting
- Why a 302 Redirect Can Mean the Service Is Healthywriting
- Preamble Detected but No Header Was Better Than “Nothing Happened”writing
- Runtime Probes Beat Human-Friendly Channel Nameswriting
- Watchdogs Are Useful Only After the Firmware Has a Recovery Storywriting
- PBX Timer Underrun Can Sound Like an Endpoint Bugwriting
- AEC Acceptance Should Include Double-Talkwriting
- Rule Evaluation Failures Mean Monitoring Logic Is Brokenwriting
- Set the Controls for the Heart of the Sun — Direction Without a Mapmusic
- If the Same Button Is Pressed Twice, Should the Work Run Twice?writing
- Container Ports Are Documentation and a Runtime Contractperspectives
- Reading the ESP32-S3 Memory Map Before Blaming Firmwarewriting
- The Philosophical Problem Hidden Inside The Brainperspectives
- Do Not Trust a User Identity Header Just Because Caddy Forwarded Itwriting
- Terraform Provider Aliases Are Part of a Module's Public Interfacewriting
- A Counter Reset Changes the Story in the Graphwriting
- Session Inactivity, Expiration and Remember Me Solve Different Problemswriting
- A TCP Database Probe Is Not a Database Health Checkwriting
- Using HEAD in ArgoCD: Fast for Iteration, Risky Without Promotion Rulesperspectives
- Proteins Through a Systems Architect's Eyesperspectives
- Building a Dead-Man Monitor Outside the Machine It Watcheswriting
- SSH, sudo, Authelia and Docker Errors as One Security Telemetry Planewriting
- The Narrow Way, Parts 1-3 — A Journey That Changes Form While You Are Inside Itmusic
- The Nervous System Through a Systems Architect's Eyesperspectives
- Climate Through a Systems Architect's Eyesperspectives
- My Layered Debugging Model for Voiceware on Kubernetesperspectives
- Call, Volume and Mute Deserve Dedicated Controlswriting
- Suite-Pee — Faith, Mockery, and the Violence of Certaintymusic
- Terraform -target Is an Emergency Tool, Not a Deployment Strategywriting
- Variable Names Preserve the Meaning of Statewriting
- Buffer Hits, Disk Reads and the Shape of PostgreSQL Cache Pressurewriting
- Nobody Home — Private Inventory as Evidence of Disconnectionmusic
- AEC Startup Needs a Defined Statewriting
- Pigs on the Wing, Part 1 — A Small Private Shelter Before the Public Argumentmusic
- The Philosophical Problem Hidden Inside Informationperspectives
- Audit Tables Must Be Boring and Correctwriting
- Where the feature flags Analogy Breaksperspectives
- A Green Dashboard Can Still Be Wrongwriting
- Aliasing and the Apparently Backward Wheelperspectives
- Geometry Through a Systems Architect's Eyesperspectives
- What Natural Selection Really Isperspectives
- External Runtimes Still Need an Owner Even If They Live in Another Repositorywriting
- What replicaCount Really Means in a Voiceware Helm Chartperspectives
- Extension 3004 and 3005 Became Reference Endpointswriting
- Clocked Playout Fixed a Class of Problems Packet-Driven Playback Could Notwriting
- Router-on-a-Stick Was My First Clean Inter-VLAN Routing Labwriting
- Partial Refresh Is a Product Resourcewriting
- Observability Needs a Source of Truth and an Acceptance Artifactwriting
- A Kubernetes Service Can Be Healthy While the App Is Brokenperspectives
- Why handle_errors Does Not Catch the 502 Your Upstream Returnedwriting
- The Edge Voice Device Architecture Finally Connected Firmware, SIP and Backend Workwriting
- Prometheus Is My Metrics Control Plane, Not Just a Scraperwriting
- Dual OTA Slots Need an Acceptance Statewriting
- The Voice Product Stack Was Finally One System, Not Three Projectswriting
- PostgreSQL Connection Utilization Needs a Denominatorwriting
- 27.5k Active Series on a Small Server: What That Number Actually Meanswriting
- Deep Database Collection Did Not Need Copied Passwordswriting
- Chop Suey! — Judgment, Death, and the Unequal Sympathy We Give the Deadmusic
- V117 Was Useful Because It Failed Clearlywriting
- Memory Limit Utilization vs Working Set: Which One Should Page Me?writing
- Chapter 24 — Cycles, Chance, and the Desire to Find Ordermusic
- UNKNOWN and FAIL Mean Different Things in Backup Monitoringwriting
- Entrypoint Assumptions Are Hidden Dependencieswriting
- The Philosophical Problem Hidden Inside Complexityperspectives
- A 5G Registration Trace Is Easier When I Follow the State Machinewriting
- What Bandwidth Actually Limitsperspectives
- Docker Daemon Error Bursts Need a Separate Alertwriting
- Is There Anybody Out There? — The Smallest Possible Question From Inside a Large Wallmusic
- Monitor Notification Success, Failure and Resolution Separatelywriting
- A Reticulum Interface Is Not the Same Thing as the Internetwriting
- A Sticky Heartbeat Result Almost Became a False OTA Rollbackwriting
- My ESP32 Wi-Fi Lab Started with Reconnects, Not Featureswriting
- Local PBX Testing Removes the Internet Before It Removes Complexitywriting
- A Green Badge Needs an Expiration Timewriting
- Clock Synchronization Is Part of the Authentication Systemwriting
- AEC Debugging Started with Channel Mapping, Not DSP Tuningwriting
- Do Not Turn Source IP into a High-Cardinality Metric Labelwriting
- A Post-Deploy Inventory Snapshot Is Forensic Evidencewriting
- Redis Cluster Hash Tags Are a Data-Model Decision, Not a Syntax Trickwriting
- Hypnotize — Media, Attention, and the Problem of Watching While Being Shapedmusic
- NC on the Schematic Does Not Mean the Regulator Is Disabledwriting
- OOM Events Are Better Evidence Than “High Memory” Alonewriting
- APNs, PGW Selection and the Path to the Data Networkwriting