<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Luke Oliff</title><description>Writing about developer relations, AI, and the voice industry.</description><link>https://lukeocodes.dev/</link><language>en</language><item><title>GPT-6 Astra: OpenAI Declares the AGI Era</title><link>https://lukeocodes.dev/gpt-6-astra-agi-era</link><guid isPermaLink="true">https://lukeocodes.dev/gpt-6-astra-agi-era</guid><description>OpenAI shipped GPT-6 Astra, its first model to clear the critical cybersecurity bar, and declared the AGI era open as three rivals launched the same week.</description><pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate><category>AI</category><category>Industry</category><category>News</category></item><item><title>TIL: Finding Files Fast With fd</title><link>https://lukeocodes.dev/til-finding-files-fast-with-fd</link><guid isPermaLink="true">https://lukeocodes.dev/til-finding-files-fast-with-fd</guid><description>fd is a gitignore-aware, colourful replacement for find. One command locates files by name, type, or extension, and it runs fast out of the box.</description><pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate><category>TIL</category><category>Developer Experience</category><category>Open Source</category></item><item><title>This Last Week in AI: 6 moves from August 22, 2026</title><link>https://lukeocodes.dev/this-last-week-in-ai-august-22-2026</link><guid isPermaLink="true">https://lukeocodes.dev/this-last-week-in-ai-august-22-2026</guid><description>The week of August 22, 2026 brought MIT-licensed open frontier weights, sovereign inference, and live US and EU AI rules.</description><pubDate>Sat, 22 Aug 2026 00:00:00 GMT</pubDate><category>AI</category><category>News</category><category>Open Weights</category></item><item><title>Friday fun: the AI agent that deleted the database in 9s</title><link>https://lukeocodes.dev/cursor-agent-deleted-production-database</link><guid isPermaLink="true">https://lukeocodes.dev/cursor-agent-deleted-production-database</guid><description>A Cursor agent hit a credential error, grabbed an unrelated token, and deleted a production database and all backups in 9 seconds. Then it confessed.</description><pubDate>Fri, 21 Aug 2026 00:00:00 GMT</pubDate><category>AI</category><category>Developer Experience</category><category>Security</category></item><item><title>When AI agents started reading your docs</title><link>https://lukeocodes.dev/when-ai-agents-started-reading-your-docs</link><guid isPermaLink="true">https://lukeocodes.dev/when-ai-agents-started-reading-your-docs</guid><description>Docs-as-code served one reader for a decade: developers. Then the LLM started reading first. How llms.txt and MCP rewrote the rulebook, and what survived.</description><pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate><category>Developer Experience</category><category>API</category><category>AI</category></item><item><title>The Attribution Paradox: Measure Before You Scale</title><link>https://lukeocodes.dev/the-attribution-paradox</link><guid isPermaLink="true">https://lukeocodes.dev/the-attribution-paradox</guid><description>Platform teams that spend all capacity executing and none measuring get wound down as experiments. Instrumentation is a launch requirement.</description><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate><category>Developer Experience</category><category>API</category><category>Engineering</category></item><item><title>Friday fun: the chatbot that killed a farmer&apos;s crop, then diagnosed itself</title><link>https://lukeocodes.dev/friday-fun-chatbot-farmer-crops</link><guid isPermaLink="true">https://lukeocodes.dev/friday-fun-chatbot-farmer-crops</guid><description>A Chinese farmer asked a chatbot how to protect his sesame crop. It prescribed a broadleaf herbicide. Sesame is a broadleaf. 100,000 square meters gone.</description><pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate><category>AI</category><category>Fun</category></item><item><title>I Thought I Knew APIs. Then I Met Audio.</title><link>https://lukeocodes.dev/i-thought-i-knew-apis-then-i-met-audio</link><guid isPermaLink="true">https://lukeocodes.dev/i-thought-i-knew-apis-then-i-met-audio</guid><description>REST APIs felt easy, even with HATEOAS. Streaming audio broke that. The destination is HTTP/2 bidirectional streaming: feedback while you still get audio.</description><pubDate>Thu, 13 Aug 2026 00:00:00 GMT</pubDate><category>Career</category><category>Developer Experience</category><category>Voice AI</category></item><item><title>Full-Duplex Voice AI Needs a New Architecture</title><link>https://lukeocodes.dev/full-duplex-voice-ai-new-architecture</link><guid isPermaLink="true">https://lukeocodes.dev/full-duplex-voice-ai-new-architecture</guid><description>The PACE paper exposes a fundamental flaw in LLM voice dialogue: the model sees context the user never heard. Full-duplex voice needs a new architecture, not just faster TTS.</description><pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>Engineering</category><category>Latency</category></item><item><title>TIL: GitHub Actions $/ Self-Reference Syntax</title><link>https://lukeocodes.dev/til-github-actions-self-reference-syntax</link><guid isPermaLink="true">https://lukeocodes.dev/til-github-actions-self-reference-syntax</guid><description>Reference actions and workflows in the same repo using $/ syntax. Sibling actions match the running commit automatically, no hardcoded versions.</description><pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate><category>TIL</category><category>GitHub</category><category>Engineering</category></item><item><title>AI Models Keep Escaping Their Cages: Aug 10</title><link>https://lukeocodes.dev/ai-models-escape-testing</link><guid isPermaLink="true">https://lukeocodes.dev/ai-models-escape-testing</guid><description>OpenAI slowed Astra over security fears. Meta, Anthropic, and Moonshot all disclosed models that hacked real systems. A tracker called Felony Bench appeared.</description><pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate><category>AI</category><category>News</category><category>Security</category></item><item><title>Sunday roundup: six posts from a week in voice AI</title><link>https://lukeocodes.dev/sunday-roundup-august-3-8-2026</link><guid isPermaLink="true">https://lukeocodes.dev/sunday-roundup-august-3-8-2026</guid><description>Six posts this week. EU watermarking, emotion prompts, open source voice agents, AI coding one year on, a raccoon heist game, and the AI industry roundup.</description><pubDate>Sun, 09 Aug 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>TTS</category><category>AI</category></item><item><title>This Last Week in AI: Aug 8, 2026</title><link>https://lukeocodes.dev/ai-industry-this-week-new-browsers-new-standards</link><guid isPermaLink="true">https://lukeocodes.dev/ai-industry-this-week-new-browsers-new-standards</guid><description>Cloudflare launched a browser for AI agents. Amazon and OpenAI unified plugin packaging. Five stories from This Last Week in AI.</description><pubDate>Sat, 08 Aug 2026 00:00:00 GMT</pubDate><category>AI</category><category>News</category><category>Opinion</category></item><item><title>Claude Fable 5 Built a Raccoon Heist Game From a Tweet</title><link>https://lukeocodes.dev/claude-fable-5-raccoon-heist-game</link><guid isPermaLink="true">https://lukeocodes.dev/claude-fable-5-raccoon-heist-game</guid><description>Simon Willison built a raccoon heist game with Claude Fable 5 from a 2022 tweet. One prompt, two images, and the model shipped a full 3D browser game.</description><pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate><category>AI</category><category>Engineering</category></item><item><title>AI Coding, One Year Later: What August 2025 Didn&apos;t See Coming</title><link>https://lukeocodes.dev/ai-coding-one-year-later</link><guid isPermaLink="true">https://lukeocodes.dev/ai-coding-one-year-later</guid><description>Throwback Thursday. A year ago the best coding model had 200K context and scored 49% on SWE-bench. Today Claude Fable 5 scores 95% with 1M context. Here&apos;s the gap model by model.</description><pubDate>Thu, 06 Aug 2026 00:00:00 GMT</pubDate><category>AI</category><category>Engineering</category><category>Opinion</category></item><item><title>Open Source Voice Agents Get Real-Time Speech in Hermes v0.20.0</title><link>https://lukeocodes.dev/open-source-voice-agents-hermes-v020</link><guid isPermaLink="true">https://lukeocodes.dev/open-source-voice-agents-hermes-v020</guid><description>Hermes Agent v0.20.0 brings streaming TTS, barge-in, on-device wake words, and pluggable STT/TTS to open source voice agents. Released August 3, 2026.</description><pubDate>Wed, 05 Aug 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>Voice Agents</category><category>Open Source</category><category>Release</category></item><item><title>TIL: Generating Audio Waveform Images With ffmpeg</title><link>https://lukeocodes.dev/til-ffmpeg-waveform-visualisation</link><guid isPermaLink="true">https://lukeocodes.dev/til-ffmpeg-waveform-visualisation</guid><description>ffmpeg generates a waveform PNG from any audio file. Visualise silence gaps, volume levels, and speech patterns without a DAW.</description><pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category><category>TTS</category></item><item><title>Voice Emotion Control Moves From SSML to Prompts</title><link>https://lukeocodes.dev/voice-emotion-control-kakao-kanana-o</link><guid isPermaLink="true">https://lukeocodes.dev/voice-emotion-control-kakao-kanana-o</guid><description>Voice emotion control is moving to natural language prompts. Kakao&apos;s Kanana-o scores 94.50 on the Korean InstructTTSEval benchmark.</description><pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>TTS</category><category>Opinion</category></item><item><title>EU AI Act Voice Watermarking: What TTS Builders Must Know</title><link>https://lukeocodes.dev/eu-ai-act-voice-watermarking</link><guid isPermaLink="true">https://lukeocodes.dev/eu-ai-act-voice-watermarking</guid><description>EU AI Act voice watermarking rules took effect August 2, 2026. What TTS providers and voice developers must do to stay compliant.</description><pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>Security</category><category>TTS</category></item><item><title>WebSocket vs REST TTS APIs for Voice Agents</title><link>https://lukeocodes.dev/websocket-vs-rest-tts-voice-agents</link><guid isPermaLink="true">https://lukeocodes.dev/websocket-vs-rest-tts-voice-agents</guid><description>Choosing between WebSocket and REST for your streaming TTS API changes your voice agent&apos;s latency floor. Here is how to pick the right protocol.</description><pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate><category>TTS</category><category>Voice Agents</category><category>Streaming</category><category>API Design</category><category>Latency</category></item><item><title>Smallest.ai Raises $13M to Split Voice Agents in Two</title><link>https://lukeocodes.dev/smallest-ai-series-a-voice-4-0</link><guid isPermaLink="true">https://lukeocodes.dev/smallest-ai-series-a-voice-4-0</guid><description>Smallest.ai closed a $13M Series A for Voice 4.0 and Hydra. Their bet is that fast real-time agents need small speech models, not big LLMs.</description><pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>Funding</category><category>Speech-to-Speech</category><category>Opinion</category><category>TTS</category></item><item><title>GPT-Transcribe Makes Context the New ASR Feature</title><link>https://lukeocodes.dev/gpt-transcribe-context-hints</link><guid isPermaLink="true">https://lukeocodes.dev/gpt-transcribe-context-hints</guid><description>OpenAI&apos;s GPT-Transcribe launched July 29, 2026 with prompt, keyword, and language hints. Free-form context lifted accuracy from 38.5% to 44.6%.</description><pubDate>Fri, 31 Jul 2026 00:00:00 GMT</pubDate><category>Speech-to-Text</category><category>Voice AI</category><category>API Design</category><category>OpenAI</category><category>Opinion</category></item><item><title>Grok Voice 2.0 Ships With a Quiet 60% Price Rise</title><link>https://lukeocodes.dev/grok-voice-2-price-rise</link><guid isPermaLink="true">https://lukeocodes.dev/grok-voice-2-price-rise</guid><description>Grok Voice Think Fast 2.0 launched July 29, 2026 at $0.08/min, up from $0.05. On August 5 the grok-voice-latest alias migrates you automatically.</description><pubDate>Thu, 30 Jul 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>Voice Agents</category><category>Speech-to-Speech</category><category>API Design</category><category>Opinion</category></item><item><title>Fish Audio&apos;s $52M Seed: Open Weights Got Them Here</title><link>https://lukeocodes.dev/fish-audio-52m-seed-s21-pro</link><guid isPermaLink="true">https://lukeocodes.dev/fish-audio-52m-seed-s21-pro</guid><description>Fish Audio raised a $52M seed on July 28, 2026 with $21M ARR and 8M users. Its new S2.1 Pro model is closed, API-only. What that shift means for TTS.</description><pubDate>Wed, 29 Jul 2026 00:00:00 GMT</pubDate><category>TTS</category><category>Voice AI</category><category>Funding</category><category>Open Weights</category><category>Opinion</category></item><item><title>TIL: git history fixup replaces the autosquash dance</title><link>https://lukeocodes.dev/git-history-fixup</link><guid isPermaLink="true">https://lukeocodes.dev/git-history-fixup</guid><description>Git 2.55&apos;s experimental git history fixup folds staged changes into an earlier commit in one command. I built it from source and ran it.</description><pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate><category>TIL</category><category>Git</category><category>Engineering</category></item><item><title>OpenAI Presence: Voice Agents You Can&apos;t Self-Serve</title><link>https://lukeocodes.dev/openai-presence-voice-agents</link><guid isPermaLink="true">https://lukeocodes.dev/openai-presence-voice-agents</guid><description>OpenAI Presence deploys enterprise voice and chat agents, but only via OpenAI&apos;s own engineers. No API, no pricing, no self-serve. What that means.</description><pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>Voice Agents</category><category>Opinion</category></item><item><title>AgentForger: One Link Forges an AI Insider in Your Org</title><link>https://lukeocodes.dev/agentforger-one-link-forges-insider</link><guid isPermaLink="true">https://lukeocodes.dev/agentforger-one-link-forges-insider</guid><description>Zenity disclosed AgentForger, a ChatGPT Workspace Agents flaw where one phishing link forged a persistent AI insider. OpenAI fixed it in four days.</description><pubDate>Mon, 27 Jul 2026 00:00:00 GMT</pubDate><category>AI</category><category>Security</category><category>Opinion</category></item><item><title>Kimi K3 Weights Drop as Washington Argues Distillation</title><link>https://lukeocodes.dev/k3-weights-drop-washington-distillation</link><guid isPermaLink="true">https://lukeocodes.dev/k3-weights-drop-washington-distillation</guid><description>Moonshot ships Kimi K3&apos;s 2.8 trillion parameter weights days after the US floated a ban and accused it of distilling Anthropic&apos;s Fable.</description><pubDate>Mon, 27 Jul 2026 00:00:00 GMT</pubDate><category>AI</category><category>Opinion</category></item><item><title>What a Week at Speechify</title><link>https://lukeocodes.dev/what-a-week-at-speechify</link><guid isPermaLink="true">https://lukeocodes.dev/what-a-week-at-speechify</guid><description>Simba went multilingual, streaming got timestamps, voice agents learned to switch languages mid-call. Qwen took the crown. MCP broke everything.</description><pubDate>Sun, 26 Jul 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>TTS</category><category>API</category></item><item><title>MAI-Voice-Flash, Opus 5, and a Red Line</title><link>https://lukeocodes.dev/mai-voice-flash-opus-5-and-a-red-line</link><guid isPermaLink="true">https://lukeocodes.dev/mai-voice-flash-opus-5-and-a-red-line</guid><description>Microsoft MAI-Voice-2-Flash enters TTS at $15/M. Anthropic ships Opus 5 at half Fable&apos;s cost. OpenAI faces red-line questions after Hugging Face.</description><pubDate>Sat, 25 Jul 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>TTS</category><category>Industry</category></item><item><title>MCP Goes Stateless on Monday: What Breaks and Why</title><link>https://lukeocodes.dev/mcp-goes-stateless</link><guid isPermaLink="true">https://lukeocodes.dev/mcp-goes-stateless</guid><description>The MCP 2026-07-28 spec removes the initialize handshake and session IDs. I read the release candidate and wrote a stateless handler.</description><pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate><category>AI</category><category>Engineering</category><category>MCP</category></item><item><title>The Guardrails Worked on Exactly the Wrong People</title><link>https://lukeocodes.dev/guardrails-locked-out-the-defenders</link><guid isPermaLink="true">https://lukeocodes.dev/guardrails-locked-out-the-defenders</guid><description>When an AI agent breached Hugging Face, responders reached for frontier models to analyse the attack and got refused. The attacker didn&apos;t.</description><pubDate>Thu, 23 Jul 2026 00:00:00 GMT</pubDate><category>AI</category><category>Security</category><category>Opinion</category></item><item><title>The 7 Best Open TTS Models as Open Weights Eat AI</title><link>https://lukeocodes.dev/open-weights-eating-ai-best-open-tts-models</link><guid isPermaLink="true">https://lukeocodes.dev/open-weights-eating-ai-best-open-tts-models</guid><description>DeepSeek V4 and Kimi K3 made this the biggest open-weight week AI has had. Here are the 7 best open TTS models, and the gap nobody mentions.</description><pubDate>Thu, 23 Jul 2026 00:00:00 GMT</pubDate><category>Voice AI</category></item><item><title>Fortnite Is About to Be Gaming&apos;s Biggest TTS Deployment</title><link>https://lukeocodes.dev/fortnite-real-time-tts-deployment-gaming</link><guid isPermaLink="true">https://lukeocodes.dev/fortnite-real-time-tts-deployment-gaming</guid><description>Epic Games gives 36 Fortnite characters AI voices on July 30, 2026, making it the biggest real-time TTS deployment gaming has seen.</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate><category>Voice AI</category></item><item><title>Five Voice AI Stories from July 2026 That Matter</title><link>https://lukeocodes.dev/five-voice-ai-stories-mid-july-2026</link><guid isPermaLink="true">https://lukeocodes.dev/five-voice-ai-stories-mid-july-2026</guid><description>Mid-July 2026 gave voice AI a new leaderboard king, a 70% Google price cut, a $22 billion valuation rumour, and an AI Gene Wilder.</description><pubDate>Tue, 21 Jul 2026 00:00:00 GMT</pubDate><category>Voice AI</category></item><item><title>Qwen-Audio-3.0-TTS Plus Review: What #1 Bought Alibaba</title><link>https://lukeocodes.dev/qwen-audio-3-0-tts-plus-review</link><guid isPermaLink="true">https://lukeocodes.dev/qwen-audio-3-0-tts-plus-review</guid><description>Alibaba&apos;s Qwen-Audio-3.0-TTS-Plus tops the Artificial Analysis Speech Arena at 1,236 Elo from 1,305 blind votes. A review of what that buys.</description><pubDate>Tue, 21 Jul 2026 00:00:00 GMT</pubDate><category>Voice AI</category></item><item><title>Synthetic Voice Rules Arrived from Three Directions</title><link>https://lukeocodes.dev/the-rules-for-synthetic-voices</link><guid isPermaLink="true">https://lukeocodes.dev/the-rules-for-synthetic-voices</guid><description>In one week, synthetic voices got rules at three layers of the stack: a TikTok Shop ban, platform policy, and government regulation.</description><pubDate>Mon, 20 Jul 2026 00:00:00 GMT</pubDate><category>Voice AI</category></item><item><title>Brussels Just Gave Voice Assistants the Keys to Android</title><link>https://lukeocodes.dev/brussels-handed-voice-assistant-google-would-never-sell</link><guid isPermaLink="true">https://lukeocodes.dev/brussels-handed-voice-assistant-google-would-never-sell</guid><description>The EU&apos;s Digital Markets Act decisions of July 16, 2026 order Google to open Android to rival AI assistants, with certified voice access.</description><pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate><category>Voice AI</category></item><item><title>AMD Just Put Text-to-Speech in the Local AI Stack by Default</title><link>https://lukeocodes.dev/amd-text-to-speech-local-ai-stack</link><guid isPermaLink="true">https://lukeocodes.dev/amd-text-to-speech-local-ai-stack</guid><description>AMD&apos;s Lemonade 11.0 puts text-to-speech in the local AI stack by default: an OpenMOSS backend, voice cloning, and a dedicated TTS panel.</description><pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate><category>Voice AI</category></item><item><title>Listeners Voted and the AI Voices Won</title><link>https://lukeocodes.dev/listeners-voted-ai-voices-won</link><guid isPermaLink="true">https://lukeocodes.dev/listeners-voted-ai-voices-won</guid><description>Two mid-July 2026 studies found ordinary listeners can&apos;t reliably tell AI voices from human ones, and sometimes prefer the synthetic option.</description><pubDate>Thu, 16 Jul 2026 00:00:00 GMT</pubDate><category>Voice AI</category></item><item><title>TTS Quality Has No Single Number Yet</title><link>https://lukeocodes.dev/tts-quality-no-single-number</link><guid isPermaLink="true">https://lukeocodes.dev/tts-quality-no-single-number</guid><description>TTS quality has no single metric. MOS scores cluster, Elo only tests short English clips, and TTS WER measures a different thing than STT. Here is how to actually evaluate.</description><pubDate>Wed, 15 Jul 2026 00:00:00 GMT</pubDate><category>TTS</category><category>Voice AI</category><category>API Design</category><category>Developer Experience</category><category>Opinion</category></item><item><title>TIL: Test TTS Voices With Curl</title><link>https://lukeocodes.dev/til-tts-voices-curl</link><guid isPermaLink="true">https://lukeocodes.dev/til-tts-voices-curl</guid><description>One curl command to compare TTS voice output side by side before you write any integration code. Handy for prototyping or auditing voice quality.</description><pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate><category>TIL</category><category>TTS</category><category>API</category></item><item><title>UN Geneva and GPT-5.6: AI governance enters a new phase</title><link>https://lukeocodes.dev/un-geneva-gpt-5-6-ai-governance</link><guid isPermaLink="true">https://lukeocodes.dev/un-geneva-gpt-5-6-ai-governance</guid><description>The first UN AI governance dialogue brought 169 countries to Geneva as GPT-5.6 went public. Meta launched Muse Image and immediately faced a privacy backlash.</description><pubDate>Mon, 13 Jul 2026 00:00:00 GMT</pubDate><category>AI</category><category>Industry</category><category>News</category></item><item><title>Voice AI Is Worth Billions While Speech Is Nearly Free</title><link>https://lukeocodes.dev/voice-ai-worth-billions-speech-nearly-free</link><guid isPermaLink="true">https://lukeocodes.dev/voice-ai-worth-billions-speech-nearly-free</guid><description>In two weeks of July 2026, ElevenLabs talked a $22 billion tender offer and Gradium raised $100 million while speech itself got nearly free.</description><pubDate>Sun, 12 Jul 2026 00:00:00 GMT</pubDate><category>Voice AI</category></item><item><title>Gene Wilder&apos;s AI Voice: The Paperwork Is the Story</title><link>https://lukeocodes.dev/gene-wilder-voice-back-paperwork</link><guid isPermaLink="true">https://lukeocodes.dev/gene-wilder-voice-back-paperwork</guid><description>Netflix is using an AI recreation of Gene Wilder’s voice in “Wonka’s The Golden Ticket,” a nine-episode reality competition [premiering September 23,…</description><pubDate>Sat, 11 Jul 2026 00:00:00 GMT</pubDate><category>Voice AI</category></item><item><title>GPT-Live Failed Its First Viral Test in 12 Seconds</title><link>https://lukeocodes.dev/gpt-live-failed-first-viral-test</link><guid isPermaLink="true">https://lukeocodes.dev/gpt-live-failed-first-viral-test</guid><description>OpenAI&apos;s GPT-Live launched July 8 and the internet found its weak spot in hours. TikToker Husk broke it with a spelling test, and the full-duplex interruptions are already a meme.</description><pubDate>Fri, 10 Jul 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>TTS</category><category>Opinion</category></item><item><title>OpenAI&apos;s Best Voice Model Is Locked Away from Developers</title><link>https://lukeocodes.dev/openai-best-voice-model-developers-cant-touch</link><guid isPermaLink="true">https://lukeocodes.dev/openai-best-voice-model-developers-cant-touch</guid><description>OpenAI&apos;s GPT-Live-1 full-duplex voice models replaced Advanced Voice Mode in ChatGPT on July 8, 2026, but developers get no API access.</description><pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate><category>Voice AI</category></item><item><title>Pipecat vs LiveKit Agents: The Trade-offs That Lock You In</title><link>https://lukeocodes.dev/pipecat-vs-livekit-agents-comparison</link><guid isPermaLink="true">https://lukeocodes.dev/pipecat-vs-livekit-agents-comparison</guid><description>Two open-source frameworks dominate production voice agents. They solve different stack layers and picking wrong means a rewrite. Here is how to decide.</description><pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>Voice Agents</category><category>Developer Experience</category></item><item><title>Grok Voice Gets 21 New Voices. The Price Is the Point</title><link>https://lukeocodes.dev/grok-voice-21-new-voices-price-point</link><guid isPermaLink="true">https://lukeocodes.dev/grok-voice-21-new-voices-price-point</guid><description>xAI added 21 multilingual voices, voice cloning from one minute of audio, and a no-code agent builder to Grok Voice at $0.05 per minute of audio. Here&apos;s what that means for the voice AI market.</description><pubDate>Tue, 07 Jul 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>TTS</category><category>Voice Agents</category><category>Opinion</category></item><item><title>An Open Source TTS Model That Edits Words After Recording</title><link>https://lukeocodes.dev/open-source-tts-edits-words-after-recording</link><guid isPermaLink="true">https://lukeocodes.dev/open-source-tts-edits-words-after-recording</guid><description>ViiTorVoice-NAR is an open-source TTS model that can replace individual words inside finished audio without regenerating the surrounding content. It also clones voices without needing a transcript.</description><pubDate>Tue, 07 Jul 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>TTS</category><category>Open Source</category><category>Security</category></item><item><title>TIL: Playing Audio From the Terminal With SoX Play</title><link>https://lukeocodes.dev/til-sox-play-terminal-audio</link><guid isPermaLink="true">https://lukeocodes.dev/til-sox-play-terminal-audio</guid><description>play (from SoX) plays any audio file through your speakers with one command. No media player needed when you are already in the terminal.</description><pubDate>Tue, 07 Jul 2026 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category><category>TTS</category></item><item><title>Pricing wars are good for developers</title><link>https://lukeocodes.dev/pricing-wars-are-good-for-developers</link><guid isPermaLink="true">https://lukeocodes.dev/pricing-wars-are-good-for-developers</guid><description>Three TTS providers changed pricing in the same week. The trend is clear and it benefits everyone building with voice AI.</description><pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate><category>Opinion</category><category>TTS</category></item><item><title>Building a writing routine that actually sticks</title><link>https://lukeocodes.dev/building-a-writing-routine-that-works</link><guid isPermaLink="true">https://lukeocodes.dev/building-a-writing-routine-that-works</guid><description>After years of inconsistent publishing, a daily writing habit finally clicked. Here is what changed.</description><pubDate>Sun, 05 Jul 2026 00:00:00 GMT</pubDate><category>Developer Experience</category></item><item><title>Finding the rhythm: first impressions of a new role in a new corner of AI</title><link>https://lukeocodes.dev/finding-the-rhythm-first-impressions</link><guid isPermaLink="true">https://lukeocodes.dev/finding-the-rhythm-first-impressions</guid><description>Two weeks in, the patterns are becoming visible. What surprised me, what I was right about, and what I&apos;m still figuring out about developer relations in a new AI domain.</description><pubDate>Sun, 05 Jul 2026 00:00:00 GMT</pubDate><category>Developer Experience</category><category>Opinion</category></item><item><title>Lessons from my first two weeks in a new corner of AI</title><link>https://lukeocodes.dev/lessons-from-my-first-two-weeks-in-voice-ai</link><guid isPermaLink="true">https://lukeocodes.dev/lessons-from-my-first-two-weeks-in-voice-ai</guid><description>Switching from speech-to-text to text-to-speech meant learning a new community, a new set of constraints, and a new definition of quality.</description><pubDate>Sun, 05 Jul 2026 00:00:00 GMT</pubDate><category>Developer Experience</category><category>Opinion</category></item><item><title>Onboarding at a new company: what I wish I had known</title><link>https://lukeocodes.dev/onboarding-at-a-new-company-what-i-wish-id-known</link><guid isPermaLink="true">https://lukeocodes.dev/onboarding-at-a-new-company-what-i-wish-id-known</guid><description>Starting a new DevRel role after years at the same company comes with a specific set of challenges nobody warns you about.</description><pubDate>Sun, 05 Jul 2026 00:00:00 GMT</pubDate><category>Developer Experience</category><category>Career</category></item><item><title>Voice AI mid-2026: the trends I am watching</title><link>https://lukeocodes.dev/voice-ai-industry-thoughts-mid-2026</link><guid isPermaLink="true">https://lukeocodes.dev/voice-ai-industry-thoughts-mid-2026</guid><description>Quality convergence, pricing pressure, open-weight models, and the regulatory shift. The voice AI landscape halfway through 2026.</description><pubDate>Sun, 05 Jul 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>Opinion</category></item><item><title>What surprised me about TTS API design after years of STT</title><link>https://lukeocodes.dev/what-surprised-me-about-tts-api-design</link><guid isPermaLink="true">https://lukeocodes.dev/what-surprised-me-about-tts-api-design</guid><description>After years of building with speech-to-text APIs, switching to text-to-speech revealed design patterns I had never thought about.</description><pubDate>Sun, 05 Jul 2026 00:00:00 GMT</pubDate><category>API Design</category><category>TTS</category></item><item><title>Working in public vs working in private</title><link>https://lukeocodes.dev/working-in-public-vs-working-in-private</link><guid isPermaLink="true">https://lukeocodes.dev/working-in-public-vs-working-in-private</guid><description>Developer relations means producing content in public while the product is being built in private. That tension is harder to manage than I expected.</description><pubDate>Sun, 05 Jul 2026 00:00:00 GMT</pubDate><category>Developer Experience</category><category>Career</category></item><item><title>5 voice AI stories that shaped the start of July</title><link>https://lukeocodes.dev/five-voice-ai-stories-start-of-july-2026</link><guid isPermaLink="true">https://lukeocodes.dev/five-voice-ai-stories-start-of-july-2026</guid><description>OpenAI shipped voice reasoning, Anthropic models returned, ElevenLabs hit $22B, Deepgram went multilingual, and Google taught Gemini to use a computer.</description><pubDate>Sat, 04 Jul 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>News</category><category>TTS</category><category>API</category></item><item><title>Someone Asked ChatGPT to Scream. It Did.</title><link>https://lukeocodes.dev/someone-asked-chatgpt-to-scream</link><guid isPermaLink="true">https://lukeocodes.dev/someone-asked-chatgpt-to-scream</guid><description>A viral TikTok showed ChatGPT&apos;s Advanced Voice Mode screaming on command. Two screeches, one awkward silence, and a lot of questions about what we just watched.</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate><category>AI</category><category>Voice AI</category></item><item><title>What Voice Agent Pricing Reveals About the Platform</title><link>https://lukeocodes.dev/what-voice-agent-pricing-reveals</link><guid isPermaLink="true">https://lukeocodes.dev/what-voice-agent-pricing-reveals</guid><description>Voice agent platform pricing tells you more than cost. The pricing model reveals which layer of the stack each platform owns and what trade-offs you inherit.</description><pubDate>Thu, 02 Jul 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>Voice Agents</category><category>API Design</category><category>Industry</category><category>Opinion</category></item><item><title>Qwen-Audio-3.0-TTS Flash Comes for Real-Time Voice</title><link>https://lukeocodes.dev/qwen-audio-3-0-tts-flash-alibaba</link><guid isPermaLink="true">https://lukeocodes.dev/qwen-audio-3-0-tts-flash-alibaba</guid><description>Alibaba&apos;s Qwen-Audio-3.0-TTS Flash targets the real-time TTS market on price and latency. What it means for voice developers and the API field.</description><pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate><category>AI</category><category>TTS</category><category>API</category></item><item><title>TIL: Clone a voice in one API call with Speechify</title><link>https://lukeocodes.dev/til-clone-voice-speechify-api</link><guid isPermaLink="true">https://lukeocodes.dev/til-clone-voice-speechify-api</guid><description>The Speechify API creates a cloned voice from a 10-second audio sample with a single POST, returning a voice ID that works on any speech endpoint you already use.</description><pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate><category>TIL</category><category>TTS</category><category>API</category></item><item><title>Frontier models now launch under government review</title><link>https://lukeocodes.dev/frontier-models-now-under-government-review</link><guid isPermaLink="true">https://lukeocodes.dev/frontier-models-now-under-government-review</guid><description>OpenAI released GPT-5.6 to 20 government-approved partners, Anthropic restored Mythos 5 to critical infrastructure, and a new AI review regime went live.</description><pubDate>Mon, 29 Jun 2026 00:00:00 GMT</pubDate><category>AI</category><category>Industry</category><category>News</category></item><item><title>Notes from my first week at Speechify</title><link>https://lukeocodes.dev/notes-from-my-first-week-at-speechify</link><guid isPermaLink="true">https://lukeocodes.dev/notes-from-my-first-week-at-speechify</guid><description>First week as Speechify&apos;s Head of DevRel: a TTS cookbook, two developer guides, and watching AI shift to government-gated releases.</description><pubDate>Sun, 28 Jun 2026 00:00:00 GMT</pubDate><category>Developer Experience</category><category>Voice AI</category><category>Industry</category></item><item><title>Voice cloning goes open source, voice agents go enterprise</title><link>https://lukeocodes.dev/voice-cloning-open-source-enterprise-voice-agents</link><guid isPermaLink="true">https://lukeocodes.dev/voice-cloning-open-source-enterprise-voice-agents</guid><description>NetEase open-sourced voice cloning from 3 seconds of audio. ElevenLabs partnered with IBM and added SynthID. Coval raised $28M. UK laws are unfit.</description><pubDate>Sat, 27 Jun 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>TTS</category><category>Industry</category><category>Announcement</category></item><item><title>My Voice Was Cloned Before Lunch on Day One</title><link>https://lukeocodes.dev/my-voice-cloned-day-one-speechify</link><guid isPermaLink="true">https://lukeocodes.dev/my-voice-cloned-day-one-speechify</guid><description>Day one at Speechify and my voice was cloned before I finished onboarding. Hearing yourself through a TTS engine is a rite of passage I was not ready for.</description><pubDate>Fri, 26 Jun 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>TTS</category></item><item><title>Voice AI&apos;s Real Competition Shifted From Models to Platforms</title><link>https://lukeocodes.dev/voice-ai-competition-shifted-from-models-to-platforms</link><guid isPermaLink="true">https://lukeocodes.dev/voice-ai-competition-shifted-from-models-to-platforms</guid><description>TTS model quality converged by June 2026. The real competitive moat shifted to developer experience, platform integration, and compliance tooling.</description><pubDate>Thu, 25 Jun 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>TTS</category><category>Industry</category><category>Developer Experience</category></item><item><title>TTS Latency: How Time to First Audio Actually Works</title><link>https://lukeocodes.dev/tts-latency-time-to-first-audio</link><guid isPermaLink="true">https://lukeocodes.dev/tts-latency-time-to-first-audio</guid><description>A deep dive into Time to First Audio, the metric that defines voice agent responsiveness, and what happens in the latency pipeline from text to speech.</description><pubDate>Wed, 24 Jun 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>TTS</category><category>Developer Experience</category></item><item><title>TIL: Read speech marks from the Speechify API response</title><link>https://lukeocodes.dev/til-speech-marks-speechify-api</link><guid isPermaLink="true">https://lukeocodes.dev/til-speech-marks-speechify-api</guid><description>Every Speechify TTS response includes word-level timing data alongside the audio. Here is how to read speech marks and what you can do with them.</description><pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate><category>TIL</category><category>TTS</category><category>API</category><category>Developer Experience</category></item><item><title>Inference costs are dropping and that changes everything</title><link>https://lukeocodes.dev/inference-costs-dropping-changes-everything</link><guid isPermaLink="true">https://lukeocodes.dev/inference-costs-dropping-changes-everything</guid><description>OpenAI&apos;s custom chip, SpaceX compute deals, and falling token prices are driving down the cost of running AI models faster than most developers realise.</description><pubDate>Mon, 22 Jun 2026 00:00:00 GMT</pubDate><category>AI</category><category>Industry</category><category>News</category></item><item><title>Six stories shaping voice AI in mid-June 2026</title><link>https://lukeocodes.dev/six-stories-shaping-voice-ai-mid-june-2026</link><guid isPermaLink="true">https://lukeocodes.dev/six-stories-shaping-voice-ai-mid-june-2026</guid><description>Microsoft MAI-Voice-2, Google live translation, DeepL bought Mixhalo, and open-weight TTS models kept shrinking. Six stories from a busy month in voice AI.</description><pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>TTS</category><category>Industry</category></item><item><title>When speech-to-text hears something else entirely</title><link>https://lukeocodes.dev/when-speech-to-text-hears-something-else</link><guid isPermaLink="true">https://lukeocodes.dev/when-speech-to-text-hears-something-else</guid><description>The funniest and weirdest STT transcriptions from real Deepgram API usage. Some are bugs, some are features, and every single one made me laugh.</description><pubDate>Fri, 19 Jun 2026 00:00:00 GMT</pubDate><category>Developer Experience</category><category>Voice AI</category></item><item><title>Voice data residency decides where your agent runs</title><link>https://lukeocodes.dev/voice-data-residency-decides-where-your-agent-runs</link><guid isPermaLink="true">https://lukeocodes.dev/voice-data-residency-decides-where-your-agent-runs</guid><description>Voice data residency decides where speech APIs process audio. Deepgram Australia went live June 17, 2026, shaping how teams pick STT and TTS providers.</description><pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>Speech-to-Text</category><category>TTS</category><category>Industry</category></item><item><title>Streaming TTS: Rethinking the Voice Audio Pipeline</title><link>https://lukeocodes.dev/streaming-tts-rethinking-audio-pipeline</link><guid isPermaLink="true">https://lukeocodes.dev/streaming-tts-rethinking-audio-pipeline</guid><description>Streaming TTS changes what voice applications expect from audio APIs. Time-to-first-byte drops, complexity moves into buffer management and chunk boundaries, and knowing when streaming isn&apos;t the answer matters just as much.</description><pubDate>Wed, 17 Jun 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>TTS</category><category>Developer Experience</category></item><item><title>A Rising Tide Lifts All Boats</title><link>https://lukeocodes.dev/a-rising-tide-lifts-all-boats</link><guid isPermaLink="true">https://lukeocodes.dev/a-rising-tide-lifts-all-boats</guid><description>I used AI to help edit this article. The experiences, arguments, disappointments, and frustrations are mine. Every example is real.</description><pubDate>Tue, 16 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Export Controls Took Down Claude Fable 5</title><link>https://lukeocodes.dev/export-controls-took-down-claude-fable-5</link><guid isPermaLink="true">https://lukeocodes.dev/export-controls-took-down-claude-fable-5</guid><description>An export control directive shut down Claude Fable 5 globally. The first government shutdown of a deployed AI model and what developers should know.</description><pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate><category>AI</category><category>Industry</category><category>News</category></item><item><title>A Frontier Model Goes Dark, Voice AI Keeps Moving</title><link>https://lukeocodes.dev/a-frontier-model-goes-dark-voice-ai-keeps-moving</link><guid isPermaLink="true">https://lukeocodes.dev/a-frontier-model-goes-dark-voice-ai-keeps-moving</guid><description>Claude Fable 5 was shut down by government directive 72 hours after launch. Microsoft&apos;s voice stack shipped at Build. Deepgram kept shipping infrastructure. A roundup of the week.</description><pubDate>Sun, 14 Jun 2026 00:00:00 GMT</pubDate><category>AI</category><category>Industry</category><category>News</category></item><item><title>Anthropic&apos;s IPO, NVIDIA open-weights, and AI&apos;s $36B bet</title><link>https://lukeocodes.dev/anthropic-ipo-nvidia-open-weights-ai-36b-bet</link><guid isPermaLink="true">https://lukeocodes.dev/anthropic-ipo-nvidia-open-weights-ai-36b-bet</guid><description>Fable 5 ate the news cycle, but that same week saw Anthropic&apos;s IPO, NVIDIA&apos;s open model, and a chip deal reshaping AI finance.</description><pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate><category>AI</category><category>Industry</category><category>News</category></item><item><title>When Your Drive-Thru AI Can&apos;t Understand an Accent</title><link>https://lukeocodes.dev/when-your-voice-agent-cant-understand-an-accent</link><guid isPermaLink="true">https://lukeocodes.dev/when-your-voice-agent-cant-understand-an-accent</guid><description>McDonald&apos;s pulled its AI drive-thru pilot in 2024 because it couldn&apos;t handle regional accents. By mid-2026, the industry was still figuring out why.</description><pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>Developer Experience</category><category>Opinion</category></item><item><title>Three STT Strategies, One Market</title><link>https://lukeocodes.dev/three-stt-strategies-one-market</link><guid isPermaLink="true">https://lukeocodes.dev/three-stt-strategies-one-market</guid><description>By June 2026 every major STT provider hit acceptable accuracy. The real competition moved to multilingual support, turn detection and platform integration.</description><pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>Speech-to-Text</category><category>Industry</category></item><item><title>Inside the Voice Agent Pipeline: STT, LLM, and Streaming TTS</title><link>https://lukeocodes.dev/inside-the-voice-agent-pipeline</link><guid isPermaLink="true">https://lukeocodes.dev/inside-the-voice-agent-pipeline</guid><description>How STT transcribes audio, an LLM generates responses, and streaming TTS speaks them back. A technical breakdown of the real-time pipeline behind voice agents in 2026.</description><pubDate>Wed, 10 Jun 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>Developer Experience</category></item><item><title>TIL: Flux natively knows when a caller finishes speaking</title><link>https://lukeocodes.dev/til-flux-turn-detection-deepgram</link><guid isPermaLink="true">https://lukeocodes.dev/til-flux-turn-detection-deepgram</guid><description>Deepgram Flux turn detection replaces VAD and silence timeouts with model-native EndOfTurn events. A single WebSocket config parameter simplifies voice agent turn-taking.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>Speech-to-Text</category><category>TIL</category></item><item><title>Microsoft shipped 7 MAI models and AI hit $580B</title><link>https://lukeocodes.dev/microsoft-mai-stanford-ai-index-580-billion</link><guid isPermaLink="true">https://lukeocodes.dev/microsoft-mai-stanford-ai-index-580-billion</guid><description>AI funding hit $581.7B in 2025. Microsoft shipped 7 MAI models. Apple chose privacy at WWDC. Deepgram kept shipping. Stories from a week that shifted AI.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate><category>AI</category><category>News</category><category>Industry</category></item><item><title>Sunday roundup: afterthoughts on productivity and pace</title><link>https://lukeocodes.dev/sunday-roundup-afterthoughts-on-productivity-and-pace</link><guid isPermaLink="true">https://lukeocodes.dev/sunday-roundup-afterthoughts-on-productivity-and-pace</guid><description>A short Sunday roundup reflecting on this week&apos;s post about ADHD and productivity, what Deepgram shipped, and what&apos;s coming next week on lukeocodes.dev.</description><pubDate>Sun, 07 Jun 2026 00:00:00 GMT</pubDate><category>Developer Experience</category><category>Career</category></item><item><title>Six tools that power production voice agents</title><link>https://lukeocodes.dev/six-tools-production-voice-agents</link><guid isPermaLink="true">https://lukeocodes.dev/six-tools-production-voice-agents</guid><description>Building a production voice agent takes more than an API key. Here are six tools I reached for daily at Deepgram, from streaming STT to async Python.</description><pubDate>Sat, 06 Jun 2026 00:00:00 GMT</pubDate><category>Developer Experience</category><category>Engineering</category><category>AI</category><category>API</category></item><item><title>Testing Voice AI Means Talking to Yourself in Public</title><link>https://lukeocodes.dev/testing-voice-ai-public</link><guid isPermaLink="true">https://lukeocodes.dev/testing-voice-ai-public</guid><description>Building voice AI means reading test sentences aloud in coffee shops, on trains, and in meetings you forgot to mute. It looks as ridiculous as it sounds.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>Developer Experience</category></item><item><title>I&apos;m not apologising for being productive</title><link>https://lukeocodes.dev/im-not-apologising-for-being-productive</link><guid isPermaLink="true">https://lukeocodes.dev/im-not-apologising-for-being-productive</guid><description>By age ten, a child with ADHD has received an estimated 20,000 more corrective or negative messages than their neurotypical peers.</description><pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate></item><item><title>When SDKs Write Themselves: Voice API Code Generation</title><link>https://lukeocodes.dev/when-sdks-write-themselves</link><guid isPermaLink="true">https://lukeocodes.dev/when-sdks-write-themselves</guid><description>Deepgram switched from hand-rolled SDKs to spec-first generation with Fern. Here is what that looked like across five languages and how it changed shipping voice APIs.</description><pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate><category>Developer Experience</category><category>API Design</category><category>Voice AI</category><category>Engineering</category></item><item><title>TIL: Encoding Files as Base64 in the Terminal</title><link>https://lukeocodes.dev/til-base64-inline-audio</link><guid isPermaLink="true">https://lukeocodes.dev/til-base64-inline-audio</guid><description>base64 encodes any file into text-safe output. Embed small audio clips or images inline in JSON payloads without hosting them somewhere.</description><pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Deepgram keyterm prompting for accurate transcription</title><link>https://lukeocodes.dev/til-deepgram-keyterm-prompting</link><guid isPermaLink="true">https://lukeocodes.dev/til-deepgram-keyterm-prompting</guid><description>Improve transcription accuracy for specialised terminology, product names, and technical jargon using Deepgram&apos;s keyterm prompting. One parameter that changes what the model hears.</description><pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate><category>TIL</category><category>Speech-to-Text</category><category>API</category></item><item><title>Enterprise AI Spending Passes $37 Billion</title><link>https://lukeocodes.dev/enterprise-ai-spending-37b</link><guid isPermaLink="true">https://lukeocodes.dev/enterprise-ai-spending-37b</guid><description>Enterprise generative AI spending hit $37 billion in 2025, up 3.2x from the prior year. The trend reshaping the industry faster than any model release.</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate><category>AI</category><category>Industry</category><category>Funding</category></item><item><title>Sunday roundup: a quiet publishing week in voice AI</title><link>https://lukeocodes.dev/sunday-roundup-may-25-31-2026</link><guid isPermaLink="true">https://lukeocodes.dev/sunday-roundup-may-25-31-2026</guid><description>Two posts from late May: multilingual voice agent costs and why contribution guides exclude new contributors. Plus what else was happening in AI that week.</description><pubDate>Sun, 31 May 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>Developer Experience</category><category>AI</category></item><item><title>5 command-line tools for shipping voice agents</title><link>https://lukeocodes.dev/5-command-line-tools-for-shipping-voice-agents</link><guid isPermaLink="true">https://lukeocodes.dev/5-command-line-tools-for-shipping-voice-agents</guid><description>Building voice agents means living in a terminal. Here are five CLI tools I use every day for audio debugging, API testing, and latency measurement.</description><pubDate>Sat, 30 May 2026 00:00:00 GMT</pubDate><category>Developer Experience</category><category>Voice AI</category><category>Engineering</category></item><item><title>Friday fun: my .zshrc has more aliases than I have memory</title><link>https://lukeocodes.dev/my-zshrc-has-more-aliases</link><guid isPermaLink="true">https://lukeocodes.dev/my-zshrc-has-more-aliases</guid><description>I opened my .zshrc for the first time in months and found aliases I don&apos;t remember writing, for tools I don&apos;t remember installing. This is what I found.</description><pubDate>Fri, 29 May 2026 00:00:00 GMT</pubDate><category>Developer Experience</category><category>Engineering</category></item><item><title>The inequity of contributing guides</title><link>https://lukeocodes.dev/the-inequity-of-contributing-guides</link><guid isPermaLink="true">https://lukeocodes.dev/the-inequity-of-contributing-guides</guid><description>Your CONTRIBUTING.md isn&apos;t welcoming. It&apos;s a gatekeeping document. Most open source contribution guides exclude the people they claim to want.</description><pubDate>Thu, 28 May 2026 00:00:00 GMT</pubDate></item><item><title>What multilingual voice agents cost: latency and complexity</title><link>https://lukeocodes.dev/what-multilingual-voice-agents-cost</link><guid isPermaLink="true">https://lukeocodes.dev/what-multilingual-voice-agents-cost</guid><description>Building a voice agent that handles ten languages without falling over is harder than it sounds. Here&apos;s what the architecture actually costs.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>Engineering</category><category>Developer Experience</category></item><item><title>TIL: Debugging Pipelines With the tee Command</title><link>https://lukeocodes.dev/til-debugging-pipelines-tee</link><guid isPermaLink="true">https://lukeocodes.dev/til-debugging-pipelines-tee</guid><description>tee reads from stdin and writes to stdout and files at the same time. Debug complex shell pipelines and save intermediate data without breaking the chain.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>When AI development tools stopped being optional</title><link>https://lukeocodes.dev/when-ai-development-tools-stopped-being-optional</link><guid isPermaLink="true">https://lukeocodes.dev/when-ai-development-tools-stopped-being-optional</guid><description>Google I/O, Anthropic&apos;s London event, and OpenAI GPT-5.5 all landed in the same window. AI development tools crossed from experimental to essential.</description><pubDate>Mon, 25 May 2026 00:00:00 GMT</pubDate><category>AI</category><category>Industry</category><category>Developer Experience</category></item><item><title>Sunday roundup: API design, I/O, Anthropic</title><link>https://lukeocodes.dev/sunday-roundup-may-18-24-2026</link><guid isPermaLink="true">https://lukeocodes.dev/sunday-roundup-may-18-24-2026</guid><description>One post this week about voice API design. Google I/O and Anthropic&apos;s London event reshaped the AI landscape. Here is the roundup.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>Developer Experience</category><category>API Design</category><category>Voice AI</category></item><item><title>5 API design decisions that shape voice AI dev experience</title><link>https://lukeocodes.dev/5-api-design-decisions-shape-voice-ai-devx</link><guid isPermaLink="true">https://lukeocodes.dev/5-api-design-decisions-shape-voice-ai-devx</guid><description>Error payloads, streaming edge cases, and latency limits all shape how developers interact with voice APIs. Here are five patterns I have seen matter most.</description><pubDate>Sat, 23 May 2026 00:00:00 GMT</pubDate><category>Developer Experience</category><category>API Design</category><category>Voice AI</category></item><item><title>Testing 10 languages with one macOS command</title><link>https://lukeocodes.dev/testing-10-languages-macos-say</link><guid isPermaLink="true">https://lukeocodes.dev/testing-10-languages-macos-say</guid><description>The macOS say command generates speech in ten languages. I used it to test a multilingual STT model without installing any audio tooling.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category><category>Voice AI</category></item><item><title>Five SDKs, one streaming API: a maintenance retrospective</title><link>https://lukeocodes.dev/five-sdks-one-streaming-api-maintenance-retrospective</link><guid isPermaLink="true">https://lukeocodes.dev/five-sdks-one-streaming-api-maintenance-retrospective</guid><description>Maintaining five SDKs for one streaming voice API taught me things about developer experience that no spec review ever could. Here is what I learned.</description><pubDate>Thu, 21 May 2026 00:00:00 GMT</pubDate><category>Developer Experience</category><category>Engineering</category><category>Open Source</category></item><item><title>What nobody tells you about audio in speech-to-text</title><link>https://lukeocodes.dev/what-nobody-tells-you-about-audio-speech-to-text</link><guid isPermaLink="true">https://lukeocodes.dev/what-nobody-tells-you-about-audio-speech-to-text</guid><description>Production speech-to-text needs preprocessing sample rate, encoding, and chunk sizes. The docs skip these. Years debugging production STT taught me what matters.</description><pubDate>Wed, 20 May 2026 00:00:00 GMT</pubDate><category>Developer Experience</category><category>Engineering</category><category>Voice AI</category></item><item><title>TIL: Testing speech-to-text with curl</title><link>https://lukeocodes.dev/til-stt-curl</link><guid isPermaLink="true">https://lukeocodes.dev/til-stt-curl</guid><description>One curl command transcribes audio through any REST-based STT API. No SDK, no imports, just your audio file and an API key.</description><pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate><category>TIL</category><category>Speech-to-Text</category><category>API</category></item><item><title>Voice AI APIs Converged Into Single-Call Platforms</title><link>https://lukeocodes.dev/voice-ai-apis-single-call-platform</link><guid isPermaLink="true">https://lukeocodes.dev/voice-ai-apis-single-call-platform</guid><description>The week of May 11, 2026, three separate announcements pushed voice AI from multi-service pipelines toward unified single-call APIs. Here is what changed and why it matters for developers.</description><pubDate>Mon, 18 May 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>API</category><category>Industry</category></item><item><title>Sunday roundup: four posts on audio debugging and work culture</title><link>https://lukeocodes.dev/sunday-roundup-may-11-16-2026</link><guid isPermaLink="true">https://lukeocodes.dev/sunday-roundup-may-11-16-2026</guid><description>Four posts from the week of May 11: TIL on afinfo, speaker diarization deep dive, Slack culture in remote teams, and ffmpeg for voice AI debugging. Plus what else was happening.</description><pubDate>Sun, 17 May 2026 00:00:00 GMT</pubDate><category>Developer Experience</category><category>Voice AI</category><category>TTS</category></item><item><title>5 SDK anti-patterns I keep fixing in voice AI</title><link>https://lukeocodes.dev/5-sdk-anti-patterns-voice-ai</link><guid isPermaLink="true">https://lukeocodes.dev/5-sdk-anti-patterns-voice-ai</guid><description>Maintaining SDKs across five languages taught me the same mistakes appear every time. Here are the five patterns I&apos;d redesign first, and why they matter for voice AI.</description><pubDate>Sat, 16 May 2026 00:00:00 GMT</pubDate><category>Developer Experience</category><category>API Design</category><category>Voice AI</category></item><item><title>ffmpeg taught me more about voice AI than the docs did</title><link>https://lukeocodes.dev/ffmpeg-voice-ai-debugger</link><guid isPermaLink="true">https://lukeocodes.dev/ffmpeg-voice-ai-debugger</guid><description>The first time I debugged a voice AI integration, ffmpeg saved me. It is still the most useful tool in my kit, and it is not even designed for voice.</description><pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate><category>Developer Experience</category><category>Voice AI</category><category>Engineering</category></item><item><title>Slack is your remote team&apos;s social media. Treat it like it.</title><link>https://lukeocodes.dev/slack-is-your-remote-teams-social-media</link><guid isPermaLink="true">https://lukeocodes.dev/slack-is-your-remote-teams-social-media</guid><description>I&apos;ve worked remotely for nine years, four and a half at Deepgram. Slack is your remote team&apos;s social media, and you should treat it that way.</description><pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate></item><item><title>Why Speaker Diarization Is the Hardest Problem in Voice AI</title><link>https://lukeocodes.dev/why-speaker-diarization-hardest-problem-voice-ai</link><guid isPermaLink="true">https://lukeocodes.dev/why-speaker-diarization-hardest-problem-voice-ai</guid><description>Speaker diarization figures out who spoke when. It sounds simple. It is not. Here is why it breaks, and what it takes to get right.</description><pubDate>Wed, 13 May 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>Speech-to-Text</category><category>Developer Experience</category><category>Engineering</category></item><item><title>TIL: What afinfo Reveals About Your Audio Files</title><link>https://lukeocodes.dev/til-afinfo-audio-inspection</link><guid isPermaLink="true">https://lukeocodes.dev/til-afinfo-audio-inspection</guid><description>afinfo prints every audio file property macOS knows about: sample rate, channels, bit depth, duration, and codec. Essential for debugging STT pipeline issues.</description><pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate><category>TIL</category><category>Voice AI</category><category>Engineering</category></item><item><title>The Infrastructure Race Is Changing How We Use AI</title><link>https://lukeocodes.dev/infrastructure-race-changing-ai-use</link><guid isPermaLink="true">https://lukeocodes.dev/infrastructure-race-changing-ai-use</guid><description>Anthropic&apos;s SpaceX deal, OpenAI&apos;s new voice models, and record venture funding made the week of May 11 the moment AI infrastructure became the story.</description><pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate><category>AI</category><category>Industry</category><category>News</category></item><item><title>Sunday roundup: from curl -w to Colossus</title><link>https://lukeocodes.dev/sunday-roundup-may-4-10-2026</link><guid isPermaLink="true">https://lukeocodes.dev/sunday-roundup-may-4-10-2026</guid><description>One TIL post went up this week. A landmark compute deal reshaped AI infrastructure. Here is the Sunday roundup for May 4-10, 2026.</description><pubDate>Sun, 10 May 2026 00:00:00 GMT</pubDate><category>AI</category><category>Industry</category><category>Opinion</category></item><item><title>5 developer experience wins in voice AI tooling</title><link>https://lukeocodes.dev/5-developer-experience-wins-voice-ai-tooling</link><guid isPermaLink="true">https://lukeocodes.dev/5-developer-experience-wins-voice-ai-tooling</guid><description>Error messages, timeout behavior, and observability patterns separate great voice APIs from frustrating ones. Here are five patterns that matter.</description><pubDate>Sat, 09 May 2026 00:00:00 GMT</pubDate><category>Developer Experience</category><category>API Design</category><category>Voice AI</category></item><item><title>Friday fun: inspecting audio files from my terminal</title><link>https://lukeocodes.dev/friday-fun-inspecting-audio-files-terminal</link><guid isPermaLink="true">https://lukeocodes.dev/friday-fun-inspecting-audio-files-terminal</guid><description>soxi shows audio file metadata like sample rate, duration, and channels from the command line. Inspect files before sending them to any voice API.</description><pubDate>Fri, 08 May 2026 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category><category>Voice AI</category></item><item><title>What running a developer Discord taught me about voice AI</title><link>https://lukeocodes.dev/developer-discord-voice-ai-lessons</link><guid isPermaLink="true">https://lukeocodes.dev/developer-discord-voice-ai-lessons</guid><description>Four years in a voice AI developer community showed me the same problems again and again. Audio format issues, silent failures, and the questions nobody puts in the docs.</description><pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate><category>Developer Experience</category><category>Voice AI</category><category>Community</category></item><item><title>How voice AI SDKs handle things REST clients never have to</title><link>https://lukeocodes.dev/what-makes-voice-ai-sdks-different</link><guid isPermaLink="true">https://lukeocodes.dev/what-makes-voice-ai-sdks-different</guid><description>Building SDKs for streaming voice APIs means managing WebSocket state, audio buffers, reconnection, and backpressure. REST client patterns break immediately.</description><pubDate>Wed, 06 May 2026 00:00:00 GMT</pubDate><category>Developer Experience</category><category>Voice AI</category><category>Engineering</category></item><item><title>TIL: Measuring API Response Times With curl -w</title><link>https://lukeocodes.dev/til-curl-w-response-times</link><guid isPermaLink="true">https://lukeocodes.dev/til-curl-w-response-times</guid><description>curl -w prints timing details like time_total, time_connect, and time_starttransfer after every request. Profile API latency from the terminal.</description><pubDate>Tue, 05 May 2026 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category><category>API</category></item><item><title>When the model stopped being the moat</title><link>https://lukeocodes.dev/ai-model-moat-end</link><guid isPermaLink="true">https://lukeocodes.dev/ai-model-moat-end</guid><description>By spring 2026, frontier model quality had converged enough that the real competitive advantage shifted to developer experience and API design.</description><pubDate>Mon, 04 May 2026 00:00:00 GMT</pubDate><category>AI</category><category>Industry</category><category>API Design</category></item><item><title>Sunday roundup: debugging habits and multilingual speech</title><link>https://lukeocodes.dev/sunday-roundup-may-3-2026</link><guid isPermaLink="true">https://lukeocodes.dev/sunday-roundup-may-3-2026</guid><description>One post this week on voice AI debugging. Around it: Flux went multilingual, AssemblyAI launched a Voice Agent API, Twilio updated Conversation Relay, and the daily cadence began.</description><pubDate>Sun, 03 May 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>TTS</category><category>Developer Experience</category></item><item><title>5 habits that reduce voice AI debugging</title><link>https://lukeocodes.dev/5-habits-voice-ai-debugging</link><guid isPermaLink="true">https://lukeocodes.dev/5-habits-voice-ai-debugging</guid><description>Most voice AI debugging time goes to problems that follow a pattern. Here are five habits I built at Deepgram that catch those patterns before they become incidents.</description><pubDate>Sat, 02 May 2026 00:00:00 GMT</pubDate><category>Engineering</category><category>Developer Experience</category><category>Voice AI</category></item><item><title>Friday fun: bat is cat with syntax highlighting</title><link>https://lukeocodes.dev/bat-is-cat-with-syntax-highlighting</link><guid isPermaLink="true">https://lukeocodes.dev/bat-is-cat-with-syntax-highlighting</guid><description>bat shows file contents with syntax highlighting, line numbers, and a pager. It replaces cat with the same muscle memory and a lot more useful output.</description><pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category><category>Open Source</category></item><item><title>The invisible work of voice AI SDKs</title><link>https://lukeocodes.dev/invisible-work-voice-ai-sdks</link><guid isPermaLink="true">https://lukeocodes.dev/invisible-work-voice-ai-sdks</guid><description>Four years of maintaining voice AI SDKs across half a dozen languages. The work that never makes the changelog.</description><pubDate>Thu, 30 Apr 2026 00:00:00 GMT</pubDate><category>Developer Experience</category><category>Open Source</category><category>Engineering</category></item><item><title>How streaming speech recognition works</title><link>https://lukeocodes.dev/how-streaming-speech-recognition-works</link><guid isPermaLink="true">https://lukeocodes.dev/how-streaming-speech-recognition-works</guid><description>Streaming speech-to-text sends audio chunks over WebSocket. Acoustic models, language models, and decoders explain the latency-accuracy tradeoff.</description><pubDate>Wed, 29 Apr 2026 00:00:00 GMT</pubDate><category>Engineering</category><category>AI</category><category>Speech-to-Text</category></item><item><title>TIL: ffprobe for audio file inspection</title><link>https://lukeocodes.dev/til-ffprobe-audio-inspection</link><guid isPermaLink="true">https://lukeocodes.dev/til-ffprobe-audio-inspection</guid><description>ffprobe shows sample rate, channels, duration, and codec of any audio file. Check audio format before sending it to a speech-to-text API.</description><pubDate>Tue, 28 Apr 2026 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>Two faces of AI progress</title><link>https://lukeocodes.dev/two-faces-of-ai-progress</link><guid isPermaLink="true">https://lukeocodes.dev/two-faces-of-ai-progress</guid><description>OpenAI shipped persistent workspace agents into production. Anthropic held back Mythos 5. Two answers to the same question: what counts as shipping AI.</description><pubDate>Mon, 27 Apr 2026 00:00:00 GMT</pubDate><category>AI</category><category>Industry</category><category>Opinion</category></item><item><title>Sunday roundup: starting fresh, April 26</title><link>https://lukeocodes.dev/sunday-roundup-april-26-2026</link><guid isPermaLink="true">https://lukeocodes.dev/sunday-roundup-april-26-2026</guid><description>Announcing the start of daily publishing on lukeocodes.dev. Plus OpenAI workspace agents, Anthropic Mythos 5, and what was happening at Deepgram.</description><pubDate>Sun, 26 Apr 2026 00:00:00 GMT</pubDate><category>Developer Experience</category><category>Voice AI</category><category>AI</category></item><item><title>5 questions I ask before integrating a streaming API</title><link>https://lukeocodes.dev/5-questions-streaming-api-integration</link><guid isPermaLink="true">https://lukeocodes.dev/5-questions-streaming-api-integration</guid><description>Connection drops, backpressure, and wire formats. Five questions I ask every streaming API before building on it, learned from voice AI integrations.</description><pubDate>Sat, 25 Apr 2026 00:00:00 GMT</pubDate><category>Developer Experience</category><category>API Design</category><category>Engineering</category></item><item><title>Friday fun: generating test tones for voice AI pipelines</title><link>https://lukeocodes.dev/friday-fun-generating-test-tones-voice-ai</link><guid isPermaLink="true">https://lukeocodes.dev/friday-fun-generating-test-tones-voice-ai</guid><description>sox synth generates test audio files from scratch at any sample rate and duration. No microphone needed for speech API development.</description><pubDate>Fri, 24 Apr 2026 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category><category>Voice AI</category></item><item><title>What 79 TIL posts taught me about developer content</title><link>https://lukeocodes.dev/79-til-posts-later</link><guid isPermaLink="true">https://lukeocodes.dev/79-til-posts-later</guid><description>Six and a half years of publishing a TIL every month taught me about consistency and developer education in a way no course ever could.</description><pubDate>Thu, 23 Apr 2026 00:00:00 GMT</pubDate><category>Developer Experience</category><category>Career</category></item><item><title>Inside the Streaming Cascade Powering Voice AI</title><link>https://lukeocodes.dev/inside-the-streaming-cascade-powering-voice-ai</link><guid isPermaLink="true">https://lukeocodes.dev/inside-the-streaming-cascade-powering-voice-ai</guid><description>Real-time voice agents chain three models over streaming connections. Here&apos;s how the cascade architecture works and where every millisecond goes.</description><pubDate>Wed, 22 Apr 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>Engineering</category><category>Streaming</category></item><item><title>TIL: pv shows you what is flowing through your pipes</title><link>https://lukeocodes.dev/til-pv-pipe-viewer</link><guid isPermaLink="true">https://lukeocodes.dev/til-pv-pipe-viewer</guid><description>pv (Pipe Viewer) sits between two commands in a pipeline and reports how fast data is moving. It is a progress bar for pipes.</description><pubDate>Tue, 21 Apr 2026 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>AI&apos;s Release Cadence Is Now a Developer Problem</title><link>https://lukeocodes.dev/ai-release-cadence-developer-problem</link><guid isPermaLink="true">https://lukeocodes.dev/ai-release-cadence-developer-problem</guid><description>Three frontier models in two weeks. The release cadence creates evaluation churn, integration instability, and fatigue for developers building on AI.</description><pubDate>Mon, 20 Apr 2026 00:00:00 GMT</pubDate><category>AI</category><category>Developer Experience</category><category>Industry</category></item><item><title>Sunday roundup: two posts, a fresh start</title><link>https://lukeocodes.dev/sunday-roundup-april-19-2026</link><guid isPermaLink="true">https://lukeocodes.dev/sunday-roundup-april-19-2026</guid><description>Two posts from the first weekend of daily writing on lukeocodes.dev. Terminal STT streaming, WebSocket audio patterns, and GPT-5.4-Cyber.</description><pubDate>Sun, 19 Apr 2026 00:00:00 GMT</pubDate><category>Developer Experience</category><category>Engineering</category><category>Voice AI</category></item><item><title>Five WebSocket patterns for real-time audio streaming</title><link>https://lukeocodes.dev/five-websocket-patterns-real-time-audio-streaming</link><guid isPermaLink="true">https://lukeocodes.dev/five-websocket-patterns-real-time-audio-streaming</guid><description>Streaming audio WebSockets need reconnect logic, backpressure, heartbeats, and graceful shutdown. Five patterns covering the full connection lifecycle.</description><pubDate>Sat, 18 Apr 2026 00:00:00 GMT</pubDate><category>Engineering</category><category>Streaming</category><category>Voice AI</category></item><item><title>Friday fun: live speech to text from the terminal</title><link>https://lukeocodes.dev/friday-fun-live-speech-to-text-terminal</link><guid isPermaLink="true">https://lukeocodes.dev/friday-fun-live-speech-to-text-terminal</guid><description>rec captures mic audio, websocat streams it to a WebSocket STT API, and the terminal shows the transcript in real time. No GUI needed.</description><pubDate>Fri, 17 Apr 2026 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category><category>Voice AI</category></item><item><title>SDKs for Streaming APIs Are Different</title><link>https://lukeocodes.dev/sdks-for-streaming-apis-are-different</link><guid isPermaLink="true">https://lukeocodes.dev/sdks-for-streaming-apis-are-different</guid><description>REST SDK patterns stop working when your API never closes the connection. Streaming audio needs reconnect logic, backpressure, and graceful shutdown baked in from day one.</description><pubDate>Thu, 16 Apr 2026 00:00:00 GMT</pubDate><category>Engineering</category><category>API Design</category><category>Streaming</category></item><item><title>TIL: Comparing Files Side By Side With diff -y</title><link>https://lukeocodes.dev/til-diff-y-side-by-side</link><guid isPermaLink="true">https://lukeocodes.dev/til-diff-y-side-by-side</guid><description>diff -y prints two files side by side with differences highlighted. Spot what changed in a config file without looking at two separate tabs.</description><pubDate>Tue, 07 Apr 2026 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Testing Network Latency With ping Custom Payload Sizes</title><link>https://lukeocodes.dev/til-ping-latency-testing</link><guid isPermaLink="true">https://lukeocodes.dev/til-ping-latency-testing</guid><description>ping -s sends packets larger than the default 56 bytes. Test how your connection handles audio-sized payloads before blaming the API.</description><pubDate>Tue, 03 Mar 2026 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Running TypeScript Directly With tsx</title><link>https://lukeocodes.dev/til-tsx-typescript-node</link><guid isPermaLink="true">https://lukeocodes.dev/til-tsx-typescript-node</guid><description>tsx executes TypeScript files with zero config using esbuild under the hood. Faster than ts-node and handles ESM and CJS automatically.</description><pubDate>Tue, 03 Feb 2026 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Chaining Shell Commands With &amp;&amp; vs ; vs ||</title><link>https://lukeocodes.dev/til-shell-chaining-operators</link><guid isPermaLink="true">https://lukeocodes.dev/til-shell-chaining-operators</guid><description>&amp;&amp; runs next only on success, ; runs unconditionally, || runs only on failure. Choosing the right operator prevents silent cascade failures in CI.</description><pubDate>Tue, 06 Jan 2026 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Finding Processes on a Port With lsof -i</title><link>https://lukeocodes.dev/til-lsof-listening-ports</link><guid isPermaLink="true">https://lukeocodes.dev/til-lsof-listening-ports</guid><description>lsof -i :PORT shows which process is holding a port. End the &apos;what is already running on 3000&apos; guessing game for good.</description><pubDate>Tue, 02 Dec 2025 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Reading Gzip Files Without Decompressing With zcat</title><link>https://lukeocodes.dev/til-zcat-gzip-streaming</link><guid isPermaLink="true">https://lukeocodes.dev/til-zcat-gzip-streaming</guid><description>zcat pipes decompressed content to stdout without writing a temp file. Read compressed logs, CSVs, or JSON straight into your pipeline.</description><pubDate>Tue, 04 Nov 2025 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Comparing Directory Trees With diff -r</title><link>https://lukeocodes.dev/til-diff-r-directory-comparison</link><guid isPermaLink="true">https://lukeocodes.dev/til-diff-r-directory-comparison</guid><description>diff -r compares two directories recursively, showing every file that differs. Verify that a build output matches between two branches.</description><pubDate>Tue, 07 Oct 2025 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Generating Trusted Local HTTPS Certs With mkcert</title><link>https://lukeocodes.dev/til-mkcert-local-https</link><guid isPermaLink="true">https://lukeocodes.dev/til-mkcert-local-https</guid><description>mkcert creates locally-trusted TLS certificates in one command. Your browser trusts them instantly — no more self-signed cert warnings.</description><pubDate>Tue, 02 Sep 2025 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category><category>Security</category></item><item><title>TIL: Running TypeScript Directly With ts-node</title><link>https://lukeocodes.dev/til-ts-node-watch-mode</link><guid isPermaLink="true">https://lukeocodes.dev/til-ts-node-watch-mode</guid><description>ts-node compiles and executes TypeScript in memory. No build step needed for quick scripts, REPL sessions, or SDK example testing.</description><pubDate>Tue, 05 Aug 2025 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Finding Disk Usage Per Directory With du -sh</title><link>https://lukeocodes.dev/til-du-disk-usage</link><guid isPermaLink="true">https://lukeocodes.dev/til-du-disk-usage</guid><description>du -sh gives a human-readable total per directory. Find the largest space hogs on a drive without clicking through a GUI.</description><pubDate>Tue, 01 Jul 2025 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Deduplicating Lines With sort -u</title><link>https://lukeocodes.dev/til-sort-u-deduplicate</link><guid isPermaLink="true">https://lukeocodes.dev/til-sort-u-deduplicate</guid><description>sort -u sorts and removes duplicate lines in one pass. Clean up word lists, logs, and API response extracts without writing a script.</description><pubDate>Tue, 03 Jun 2025 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Formatting Terminal Output Into Tables With column</title><link>https://lukeocodes.dev/til-column-terminal-tables</link><guid isPermaLink="true">https://lukeocodes.dev/til-column-terminal-tables</guid><description>column -t aligns whitespace-separated data into clean columns. Pipe any command output through it for instantly readable tables.</description><pubDate>Tue, 06 May 2025 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Mirroring Sites With wget Recursive Mode</title><link>https://lukeocodes.dev/til-wget-recursive-download</link><guid isPermaLink="true">https://lukeocodes.dev/til-wget-recursive-download</guid><description>wget -r downloads an entire site recursively. Useful for offline reference copies of documentation when you are without internet.</description><pubDate>Tue, 01 Apr 2025 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Structuring Monorepos With TypeScript Project References</title><link>https://lukeocodes.dev/til-typescript-project-references</link><guid isPermaLink="true">https://lukeocodes.dev/til-typescript-project-references</guid><description>TypeScript project references let you split a codebase into composable packages. Each reference builds independently and incremental builds get faster.</description><pubDate>Tue, 04 Mar 2025 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Speeding Up GitHub Operations With gh Aliases</title><link>https://lukeocodes.dev/til-gh-aliases-github-workflows</link><guid isPermaLink="true">https://lukeocodes.dev/til-gh-aliases-github-workflows</guid><description>gh alias set maps custom shortcuts to any gh command. Common workflows become two-word commands instead of multi-flag incantations.</description><pubDate>Tue, 04 Feb 2025 00:00:00 GMT</pubDate><category>TIL</category><category>Git</category><category>Engineering</category></item><item><title>TIL: Building JSON Payloads in Shell Scripts With jq</title><link>https://lukeocodes.dev/til-jq-json-payloads-shell</link><guid isPermaLink="true">https://lukeocodes.dev/til-jq-json-payloads-shell</guid><description>jq constructs valid JSON from variables without string concatenation. No more broken payloads from missing quotes or unescaped characters.</description><pubDate>Tue, 07 Jan 2025 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category><category>API</category></item><item><title>TIL: Checking SSL Certificate Expiry With openssl</title><link>https://lukeocodes.dev/til-openssl-certificate-expiry</link><guid isPermaLink="true">https://lukeocodes.dev/til-openssl-certificate-expiry</guid><description>openssl connects to any TLS endpoint and prints the certificate details including expiry date. Automate cert monitoring in a cron job.</description><pubDate>Tue, 03 Dec 2024 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category><category>Security</category></item><item><title>An open letter on AI</title><link>https://lukeocodes.dev/open-letter-ai</link><guid isPermaLink="true">https://lukeocodes.dev/open-letter-ai</guid><description>AI is a tool, a hammer. It&apos;s not good or bad; it&apos;s how we use it. On creativity, programming, and staying human through the next revolution.</description><pubDate>Fri, 15 Nov 2024 00:00:00 GMT</pubDate><category>Open letter</category><category>AI</category></item><item><title>TIL: Benchmarking Commands With hyperfine</title><link>https://lukeocodes.dev/til-hyperfine-benchmarking</link><guid isPermaLink="true">https://lukeocodes.dev/til-hyperfine-benchmarking</guid><description>hyperfine runs a command multiple times and reports min, max, mean, and standard deviation. Compare tool performance with statistical confidence.</description><pubDate>Tue, 05 Nov 2024 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>An open letter on politics</title><link>https://lukeocodes.dev/open-letter-politics</link><guid isPermaLink="true">https://lukeocodes.dev/open-letter-politics</guid><description>Why I judge people by their politics, and why staying neutral is a choice too. On democracy, media, and raising two kids in this world.</description><pubDate>Fri, 01 Nov 2024 00:00:00 GMT</pubDate><category>Open letter</category><category>Politics</category></item><item><title>TIL: Visualising Directory Structures With tree</title><link>https://lukeocodes.dev/til-tree-directory-structure</link><guid isPermaLink="true">https://lukeocodes.dev/til-tree-directory-structure</guid><description>tree prints a directory as a nested tree diagram. Perfect for documenting project layouts in READMEs or during onboarding walkthroughs.</description><pubDate>Tue, 01 Oct 2024 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Interactive Staging With git add -p</title><link>https://lukeocodes.dev/til-git-add-p-interactive</link><guid isPermaLink="true">https://lukeocodes.dev/til-git-add-p-interactive</guid><description>git add -p shows each change hunk by hunk and asks whether to stage it. Commit only the relevant parts of a messy working tree.</description><pubDate>Tue, 03 Sep 2024 00:00:00 GMT</pubDate><category>TIL</category><category>Git</category><category>Engineering</category></item><item><title>TIL: Auto-Running Commands on File Change With entr</title><link>https://lukeocodes.dev/til-entr-auto-commands</link><guid isPermaLink="true">https://lukeocodes.dev/til-entr-auto-commands</guid><description>entr runs a command every time a watched file changes. Pipe a list of files in, get automatic re-runs out. Lighter than nodemon.</description><pubDate>Tue, 06 Aug 2024 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Running Containers Without Docker With Podman</title><link>https://lukeocodes.dev/til-podman-docker-alternative</link><guid isPermaLink="true">https://lukeocodes.dev/til-podman-docker-alternative</guid><description>Podman runs OCI containers with the same CLI as Docker but daemonless and rootless by default. No Docker Desktop needed.</description><pubDate>Tue, 02 Jul 2024 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category><category>Open Source</category></item><item><title>TIL: Quick Network Debugging With nc (netcat)</title><link>https://lukeocodes.dev/til-nc-netcat-network-debugging</link><guid isPermaLink="true">https://lukeocodes.dev/til-nc-netcat-network-debugging</guid><description>nc opens raw TCP connections from the terminal. Test if a port is open, send raw HTTP requests, or set up a one-off chat between machines.</description><pubDate>Tue, 04 Jun 2024 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Converting Markdown to PDF With pandoc</title><link>https://lukeocodes.dev/til-pandoc-markdown-to-pdf</link><guid isPermaLink="true">https://lukeocodes.dev/til-pandoc-markdown-to-pdf</guid><description>pandoc turns any Markdown file into a styled PDF with one command. Great for generating docs that non-technical stakeholders can open.</description><pubDate>Tue, 07 May 2024 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Using grep -P for Perl-Compatible Regex in the Terminal</title><link>https://lukeocodes.dev/til-grep-perl-regex</link><guid isPermaLink="true">https://lukeocodes.dev/til-grep-perl-regex</guid><description>grep -P gives you full Perl regex syntax — lookaheads, non-capturing groups, and character class shortcuts the basic syntax lacks.</description><pubDate>Tue, 02 Apr 2024 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Scripting WebSocket Tests With websocat</title><link>https://lukeocodes.dev/til-websocat-websocket-testing</link><guid isPermaLink="true">https://lukeocodes.dev/til-websocat-websocket-testing</guid><description>websocat connects to WebSocket servers from the terminal and pipes data in both directions. Better than wscat for automated testing.</description><pubDate>Tue, 05 Mar 2024 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Creating Python Packages With pyproject.toml</title><link>https://lukeocodes.dev/til-pyproject-toml-python-packaging</link><guid isPermaLink="true">https://lukeocodes.dev/til-pyproject-toml-python-packaging</guid><description>pyproject.toml replaces setup.py as the standard Python packaging config. One file declares dependencies, build system, and metadata.</description><pubDate>Tue, 06 Feb 2024 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category><category>Open Source</category></item><item><title>TIL: Testing npm Packages Locally With npm link</title><link>https://lukeocodes.dev/til-npm-link-local-testing</link><guid isPermaLink="true">https://lukeocodes.dev/til-npm-link-local-testing</guid><description>npm link creates a symlink so your local package behaves like an installed one. Test SDK changes in a real project before publishing.</description><pubDate>Tue, 02 Jan 2024 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category><category>Open Source</category></item><item><title>TIL: Managing Processes With pgrep and pkill</title><link>https://lukeocodes.dev/til-pgrep-pkill-process-management</link><guid isPermaLink="true">https://lukeocodes.dev/til-pgrep-pkill-process-management</guid><description>pgrep finds processes by name. pkill kills them. No more ps aux | grep to find and kill a runaway Node process.</description><pubDate>Tue, 05 Dec 2023 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Installing Specific Tool Versions With asdf</title><link>https://lukeocodes.dev/til-asdf-version-manager</link><guid isPermaLink="true">https://lukeocodes.dev/til-asdf-version-manager</guid><description>asdf manages multiple language runtimes from one tool. A single .tool-versions file pins Node.js, Python, and everything else per project.</description><pubDate>Tue, 07 Nov 2023 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Monitoring File Changes With inotifywait on Linux</title><link>https://lukeocodes.dev/til-inotifywait-file-monitoring</link><guid isPermaLink="true">https://lukeocodes.dev/til-inotifywait-file-monitoring</guid><description>inotifywait blocks until a file or directory changes, then exits. Use it in scripts to trigger actions when new files appear.</description><pubDate>Tue, 03 Oct 2023 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Debugging APIs With httpie</title><link>https://lukeocodes.dev/til-httpie-api-debugging</link><guid isPermaLink="true">https://lukeocodes.dev/til-httpie-api-debugging</guid><description>httpie formats JSON responses, highlights syntax, and shows headers by default. One command is often clearer than curl for exploratory API work.</description><pubDate>Tue, 05 Sep 2023 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category><category>API</category></item><item><title>TIL: Recording Terminal Sessions as SVGs With termtosvg</title><link>https://lukeocodes.dev/til-termtosvg-terminal-gifs</link><guid isPermaLink="true">https://lukeocodes.dev/til-termtosvg-terminal-gifs</guid><description>termtosvg records your terminal session and outputs an SVG file. Embeddable in docs, zoomable, and smaller than a GIF.</description><pubDate>Tue, 01 Aug 2023 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Parallel Processing in Node.js With worker_threads</title><link>https://lukeocodes.dev/til-worker-threads-nodejs</link><guid isPermaLink="true">https://lukeocodes.dev/til-worker-threads-nodejs</guid><description>worker_threads runs JavaScript in parallel without the overhead of child processes. Distribute CPU-heavy work across available cores.</description><pubDate>Tue, 04 Jul 2023 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Generating WAV Files at a Specific Sample Rate With SoX</title><link>https://lukeocodes.dev/til-sox-sample-rate-wav</link><guid isPermaLink="true">https://lukeocodes.dev/til-sox-sample-rate-wav</guid><description>sox generates or converts audio to any sample rate, bit depth, and channel count. Create test fixtures that match your API&apos;s exact requirements.</description><pubDate>Tue, 06 Jun 2023 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Batch File Operations With find -exec</title><link>https://lukeocodes.dev/til-find-exec-batch-operations</link><guid isPermaLink="true">https://lukeocodes.dev/til-find-exec-batch-operations</guid><description>find -exec runs any command on every matching file. Bulk rename, convert, or delete without writing a loop or a script.</description><pubDate>Tue, 02 May 2023 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Merging PDF Files With pdfunite</title><link>https://lukeocodes.dev/til-pdfunite-merge-pdfs</link><guid isPermaLink="true">https://lukeocodes.dev/til-pdfunite-merge-pdfs</guid><description>pdfunite combines multiple PDFs into one in a single command. No Adobe subscription, no drag-and-drop, just file paths.</description><pubDate>Tue, 04 Apr 2023 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Implementing Exponential Backoff in TypeScript</title><link>https://lukeocodes.dev/til-exponential-backoff-typescript</link><guid isPermaLink="true">https://lukeocodes.dev/til-exponential-backoff-typescript</guid><description>A simple retry loop with exponentially increasing delays handles transient API failures. Add jitter to avoid thundering herd on recovery.</description><pubDate>Tue, 07 Mar 2023 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category><category>API</category></item><item><title>TIL: Finding Duplicate Files With fdupes</title><link>https://lukeocodes.dev/til-fdupes-duplicate-files</link><guid isPermaLink="true">https://lukeocodes.dev/til-fdupes-duplicate-files</guid><description>fdupes scans a directory tree for duplicate files by comparing checksums. Reclaim disk space from accidental copies and repeated downloads.</description><pubDate>Tue, 07 Feb 2023 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Processing STT Word Timestamps With awk</title><link>https://lukeocodes.dev/til-awk-stt-timestamps</link><guid isPermaLink="true">https://lukeocodes.dev/til-awk-stt-timestamps</guid><description>awk parses word-level timestamps from STT output in one line. Extract, filter, and reformat without importing a CSV library.</description><pubDate>Tue, 03 Jan 2023 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category><category>Speech-to-Text</category></item><item><title>TIL: Using set -e and set -x in Bash Scripts</title><link>https://lukeocodes.dev/til-set-e-set-x-bash</link><guid isPermaLink="true">https://lukeocodes.dev/til-set-e-set-x-bash</guid><description>set -e exits on any error. set -x prints every command before running it. Together they make shell scripts fail fast and show their work.</description><pubDate>Tue, 06 Dec 2022 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Trimming Silence From Audio Files With SoX</title><link>https://lukeocodes.dev/til-sox-trim-audio-silence</link><guid isPermaLink="true">https://lukeocodes.dev/til-sox-trim-audio-silence</guid><description>sox detects and removes silence from audio files automatically. Clean up recordings before processing without a GUI editor.</description><pubDate>Tue, 01 Nov 2022 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Creating Python Virtual Environments With venv</title><link>https://lukeocodes.dev/til-python-virtual-environments-venv</link><guid isPermaLink="true">https://lukeocodes.dev/til-python-virtual-environments-venv</guid><description>python -m venv creates an isolated environment with its own packages. No more conflicts between projects needing different library versions.</description><pubDate>Tue, 04 Oct 2022 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Auto-Restarting Node.js Processes With nodemon</title><link>https://lukeocodes.dev/til-nodemon-watch-mode</link><guid isPermaLink="true">https://lukeocodes.dev/til-nodemon-watch-mode</guid><description>nodemon watches your source files and restarts the process on any change. No manual Ctrl-C up-arrow-enter cycle during development.</description><pubDate>Tue, 06 Sep 2022 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Parsing Command-Line Arguments With Python&apos;s argparse</title><link>https://lukeocodes.dev/til-argparse-python-cli</link><guid isPermaLink="true">https://lukeocodes.dev/til-argparse-python-cli</guid><description>argparse generates --help text, validates types, and parses positional and optional arguments. Built into Python, no third-party deps.</description><pubDate>Tue, 02 Aug 2022 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Using tmux for Persistent Terminal Sessions</title><link>https://lukeocodes.dev/til-tmux-persistent-sessions</link><guid isPermaLink="true">https://lukeocodes.dev/til-tmux-persistent-sessions</guid><description>tmux keeps your terminal session alive when you disconnect. Reattach from anywhere — long-running processes survive SSH drops.</description><pubDate>Tue, 05 Jul 2022 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Checking File Integrity With shasum</title><link>https://lukeocodes.dev/til-shasum-file-integrity</link><guid isPermaLink="true">https://lukeocodes.dev/til-shasum-file-integrity</guid><description>shasum computes a SHA hash of any file. Compare hashes before and after transfer to catch corruption — no extra tools needed.</description><pubDate>Tue, 07 Jun 2022 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Configuring pre-commit Hooks for Python and Node Repos</title><link>https://lukeocodes.dev/til-pre-commit-hooks-python-node</link><guid isPermaLink="true">https://lukeocodes.dev/til-pre-commit-hooks-python-node</guid><description>pre-commit runs linters and formatters on every git commit. A .pre-commit-config.yaml enforces the same checks across every contributor.</description><pubDate>Tue, 03 May 2022 00:00:00 GMT</pubDate><category>TIL</category><category>Git</category><category>Engineering</category></item><item><title>TIL: Testing CLI Tools With pytest in Python</title><link>https://lukeocodes.dev/til-pytest-cli-testing</link><guid isPermaLink="true">https://lukeocodes.dev/til-pytest-cli-testing</guid><description>pytest with subprocess or click&apos;s test runner validates CLI output, exit codes, and error messages without manual terminal checks.</description><pubDate>Tue, 05 Apr 2022 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Semantic Versioning With the semver CLI</title><link>https://lukeocodes.dev/til-semver-cli-versioning</link><guid isPermaLink="true">https://lukeocodes.dev/til-semver-cli-versioning</guid><description>The semver CLI validates, compares, and increments version strings from the terminal. No more manual math on MAJOR.MINOR.PATCH.</description><pubDate>Tue, 01 Mar 2022 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category><category>Open Source</category></item><item><title>TIL: Concurrent API Calls With asyncio in Python</title><link>https://lukeocodes.dev/til-asyncio-concurrent-python</link><guid isPermaLink="true">https://lukeocodes.dev/til-asyncio-concurrent-python</guid><description>asyncio runs multiple network requests concurrently without threads. gather() collects results as they finish, cutting wall-clock time dramatically.</description><pubDate>Tue, 01 Feb 2022 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category><category>API</category></item><item><title>TIL: Building a CLI Tool With commander.js in Node.js</title><link>https://lukeocodes.dev/til-commander-js-cli-node</link><guid isPermaLink="true">https://lukeocodes.dev/til-commander-js-cli-node</guid><description>commander.js parses flags, subcommands, and help text from a declarative config. A working CLI takes about ten lines of setup.</description><pubDate>Tue, 04 Jan 2022 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category><category>Open Source</category></item><item><title>TIL: Streaming JSON Parsing With ijson for Large Responses</title><link>https://lukeocodes.dev/til-streaming-json-ijson</link><guid isPermaLink="true">https://lukeocodes.dev/til-streaming-json-ijson</guid><description>ijson parses JSON as it streams in, skipping the full parse. Handles multi-gigabyte responses without running out of memory.</description><pubDate>Tue, 07 Dec 2021 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category><category>API</category></item><item><title>TIL: Converting Audio Formats With ffmpeg in One Command</title><link>https://lukeocodes.dev/til-ffmpeg-audio-conversion</link><guid isPermaLink="true">https://lukeocodes.dev/til-ffmpeg-audio-conversion</guid><description>ffmpeg converts between any audio format with a single command. WAV to MP3, FLAC to OGG, sample rate changes, channel mapping — all in one line.</description><pubDate>Tue, 02 Nov 2021 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Handling WebSocket Streams With the websockets Library in Python</title><link>https://lukeocodes.dev/til-websockets-python-streaming</link><guid isPermaLink="true">https://lukeocodes.dev/til-websockets-python-streaming</guid><description>Python&apos;s websockets library opens a persistent connection in a few lines of async code. No polling, no HTTP overhead, just messages in both directions.</description><pubDate>Tue, 05 Oct 2021 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Running GitHub Actions Locally With act</title><link>https://lukeocodes.dev/til-act-github-actions-local</link><guid isPermaLink="true">https://lukeocodes.dev/til-act-github-actions-local</guid><description>act runs your GitHub Actions workflows on your machine using Docker. No push-and-pray, iterate locally first.</description><pubDate>Tue, 07 Sep 2021 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category><category>Open Source</category></item><item><title>TIL: Creating Tarballs With tar for Deployment Packages</title><link>https://lukeocodes.dev/til-tar-deployment-packages</link><guid isPermaLink="true">https://lukeocodes.dev/til-tar-deployment-packages</guid><description>tar bundles a directory into a single file preserving permissions and structure. One command packages your entire deployable artifact.</description><pubDate>Tue, 03 Aug 2021 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Using git bisect To Find the Commit That Broke a Build</title><link>https://lukeocodes.dev/til-git-bisect-find-breaking-commit</link><guid isPermaLink="true">https://lukeocodes.dev/til-git-bisect-find-breaking-commit</guid><description>git bisect does a binary search through your history to find the exact commit that introduced a bug. Mark good and bad, it does the rest.</description><pubDate>Tue, 06 Jul 2021 00:00:00 GMT</pubDate><category>TIL</category><category>Git</category><category>Engineering</category></item><item><title>TIL: Redirect and Rewrite Rules With Plain _redirects Files</title><link>https://lukeocodes.dev/til-redirect-rules-redirects-file</link><guid isPermaLink="true">https://lukeocodes.dev/til-redirect-rules-redirects-file</guid><description>A _redirects file maps old paths to new ones with one rule per line. No config parser, no build step, just deploy and it works.</description><pubDate>Tue, 01 Jun 2021 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Profiling Node.js Build Performance With node --prof</title><link>https://lukeocodes.dev/til-node-profiling-build-performance</link><guid isPermaLink="true">https://lukeocodes.dev/til-node-profiling-build-performance</guid><description>node --prof generates a V8 tick profile of your script. Process it with --prof-process and see exactly where every millisecond went.</description><pubDate>Tue, 04 May 2021 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Using diff and patch for Incremental File Changes</title><link>https://lukeocodes.dev/til-diff-patch-file-changes</link><guid isPermaLink="true">https://lukeocodes.dev/til-diff-patch-file-changes</guid><description>diff produces a patch file describing what changed. patch applies it elsewhere. No git required for sharing small fixes between environments.</description><pubDate>Tue, 06 Apr 2021 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Validating JSON Schemas With Ajv in Node.js</title><link>https://lukeocodes.dev/til-json-schema-validation-ajv</link><guid isPermaLink="true">https://lukeocodes.dev/til-json-schema-validation-ajv</guid><description>Ajv validates JSON payloads against a schema in milliseconds. Define your shape once and reject bad data before it reaches your logic.</description><pubDate>Tue, 02 Mar 2021 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category><category>API</category></item><item><title>TIL: Creating Named Pipes With mkfifo for IPC</title><link>https://lukeocodes.dev/til-named-pipes-mkfifo</link><guid isPermaLink="true">https://lukeocodes.dev/til-named-pipes-mkfifo</guid><description>mkfifo creates a named pipe that acts like a file but connects two processes. One writes, the other reads, zero network overhead.</description><pubDate>Tue, 02 Feb 2021 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Stripping ANSI Escape Codes From Terminal Output</title><link>https://lukeocodes.dev/til-strip-ansi-terminal-output</link><guid isPermaLink="true">https://lukeocodes.dev/til-strip-ansi-terminal-output</guid><description>Coloured terminal output looks great until you pipe it to a file. The sed command strips ANSI codes cleanly, leaving plain text.</description><pubDate>Tue, 05 Jan 2021 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Testing HTTP Endpoints Locally With httpbin</title><link>https://lukeocodes.dev/til-testing-httpbin-locally</link><guid isPermaLink="true">https://lukeocodes.dev/til-testing-httpbin-locally</guid><description>httpbin returns request data as JSON so you can see exactly what your client is sending. No real endpoint needed for debugging.</description><pubDate>Tue, 01 Dec 2020 00:00:00 GMT</pubDate><category>TIL</category><category>API</category><category>Engineering</category></item><item><title>TIL: Using tee To Split Command Output to File and Terminal</title><link>https://lukeocodes.dev/til-tee-split-output</link><guid isPermaLink="true">https://lukeocodes.dev/til-tee-split-output</guid><description>The tee command writes stdout to a file while still showing it on screen. Perfect for logging builds without losing visibility.</description><pubDate>Tue, 03 Nov 2020 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Generating QR Codes in the Terminal With qrencode</title><link>https://lukeocodes.dev/til-qr-codes-terminal-qrencode</link><guid isPermaLink="true">https://lukeocodes.dev/til-qr-codes-terminal-qrencode</guid><description>qrencode turns any text into a QR code in one command. Pipe it to a PNG or straight to the terminal for quick mobile tests.</description><pubDate>Tue, 06 Oct 2020 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Scheduling Recurring Tasks With node-cron</title><link>https://lukeocodes.dev/til-node-cron-scheduling</link><guid isPermaLink="true">https://lukeocodes.dev/til-node-cron-scheduling</guid><description>A cron expression and a callback is all node-cron needs to run tasks on a schedule. No system cron, no external dependencies.</description><pubDate>Tue, 01 Sep 2020 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Conditional Git Hooks With core.hooksPath</title><link>https://lukeocodes.dev/til-git-hooks-core-hookspath</link><guid isPermaLink="true">https://lukeocodes.dev/til-git-hooks-core-hookspath</guid><description>Git&apos;s core.hooksPath lets each repo use its own hooks directory. No more symlinks or global hook collisions across projects.</description><pubDate>Tue, 04 Aug 2020 00:00:00 GMT</pubDate><category>TIL</category><category>Git</category><category>Engineering</category></item><item><title>TIL: Rate-Limiting API Requests With Bottleneck</title><link>https://lukeocodes.dev/til-rate-limiting-bottleneck</link><guid isPermaLink="true">https://lukeocodes.dev/til-rate-limiting-bottleneck</guid><description>Bottleneck queues API calls to stay under rate limits without losing data. Set max concurrent and min delay, then forget it.</description><pubDate>Tue, 07 Jul 2020 00:00:00 GMT</pubDate><category>TIL</category><category>API</category><category>Engineering</category></item><item><title>TIL: Creating an HTTP Server With the Node.js http Module</title><link>https://lukeocodes.dev/til-node-http-server</link><guid isPermaLink="true">https://lukeocodes.dev/til-node-http-server</guid><description>Node&apos;s built-in http module creates a working server in five lines. No Express, no dependencies, just a callback and a port.</description><pubDate>Tue, 02 Jun 2020 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Managing Environment Variables With .env Files in Node.js</title><link>https://lukeocodes.dev/til-dotenv-nodejs</link><guid isPermaLink="true">https://lukeocodes.dev/til-dotenv-nodejs</guid><description>A .env file keeps API keys and config out of your code. The dotenv package loads them into process.env with zero config.</description><pubDate>Tue, 05 May 2020 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category><category>API</category></item><item><title>TIL: Testing Webhooks With curl</title><link>https://lukeocodes.dev/til-curl-webhook-testing</link><guid isPermaLink="true">https://lukeocodes.dev/til-curl-webhook-testing</guid><description>A curl POST to your webhook endpoint with a JSON body simulates any provider. No dashboard, no test suite, just response codes and latency.</description><pubDate>Tue, 07 Apr 2020 00:00:00 GMT</pubDate><category>TIL</category><category>API</category><category>Engineering</category></item><item><title>TIL: Debugging Node.js With the Built-in Inspector</title><link>https://lukeocodes.dev/til-node-inspector-debugging</link><guid isPermaLink="true">https://lukeocodes.dev/til-node-inspector-debugging</guid><description>node --inspect opens Chrome DevTools for your server process. Breakpoints, heap snapshots, profiling — no console.log needed.</description><pubDate>Tue, 03 Mar 2020 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Lazy Loading Vue Router Routes With Dynamic Imports</title><link>https://lukeocodes.dev/til-vue-router-lazy-loading</link><guid isPermaLink="true">https://lukeocodes.dev/til-vue-router-lazy-loading</guid><description>A dynamic import in your router config splits your Vue bundle per route. Pages load on demand instead of all at once.</description><pubDate>Tue, 04 Feb 2020 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Chaining Promises With Async Await in Node.js</title><link>https://lukeocodes.dev/til-async-await-nodejs</link><guid isPermaLink="true">https://lukeocodes.dev/til-async-await-nodejs</guid><description>Async await turns nested .then chains into flat readable code. One async function wrapper is all it takes to clean up any Node.js callback mess.</description><pubDate>Tue, 07 Jan 2020 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Recording Terminal Sessions With script and scriptreplay</title><link>https://lukeocodes.dev/til-recording-terminal-sessions-script</link><guid isPermaLink="true">https://lukeocodes.dev/til-recording-terminal-sessions-script</guid><description>The script command records everything in your terminal to a file. scriptreplay plays it back. Built into macOS and Linux, zero install.</description><pubDate>Tue, 03 Dec 2019 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item><item><title>TIL: Parsing JSON API Responses With jq in the Terminal</title><link>https://lukeocodes.dev/til-parsing-json-jq-terminal</link><guid isPermaLink="true">https://lukeocodes.dev/til-parsing-json-jq-terminal</guid><description>Pipe any JSON response into jq and get coloured, filtered, transformed output without opening a file or writing a parser.</description><pubDate>Tue, 05 Nov 2019 00:00:00 GMT</pubDate><category>TIL</category><category>API</category><category>Engineering</category></item><item><title>TIL: Forwarding Localhost With ngrok for Webhook Dev</title><link>https://lukeocodes.dev/til-forwarding-localhost-ngrok</link><guid isPermaLink="true">https://lukeocodes.dev/til-forwarding-localhost-ngrok</guid><description>One ngrok command gives any local server a public HTTPS URL. Webhook testing goes from impossible to trivial in under five seconds.</description><pubDate>Tue, 01 Oct 2019 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category><category>API</category></item><item><title>TIL: Testing WebSocket Connections With wscat</title><link>https://lukeocodes.dev/til-testing-websockets-wscat</link><guid isPermaLink="true">https://lukeocodes.dev/til-testing-websockets-wscat</guid><description>A single wscat command opens an interactive WebSocket session to any endpoint. No browser, no boilerplate, just connect and send messages.</description><pubDate>Tue, 03 Sep 2019 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category></item></channel></rss>