<?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>DevRel This Week, 28 September: Hacktoberfest Drops the Pull Request</title><link>https://lukeocodes.dev/devrel-this-week-28-september-2026</link><guid isPermaLink="true">https://lukeocodes.dev/devrel-this-week-28-september-2026</guid><description>DevRel this week, 28 September: Meta and Cloudflare pay prize money, DevDay is tomorrow, Hacktoberfest drops pull requests, Microsoft cuts developer accounts.</description><pubDate>Mon, 28 Sep 2026 00:00:00 GMT</pubDate><category>Developer Relations</category><category>Industry</category><category>News</category></item><item><title>Eleven v4 Turbo Gets Voice Agents to Full Duplex</title><link>https://lukeocodes.dev/eleven-v4-turbo-full-duplex</link><guid isPermaLink="true">https://lukeocodes.dev/eleven-v4-turbo-full-duplex</guid><description>ElevenLabs shipped Eleven v4 Turbo today: 150ms to first speech, streaming both ways, a turn-taking model around it. The full duplex setup I wrote about in August.</description><pubDate>Mon, 28 Sep 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>Industry</category><category>Latency</category></item><item><title>The Frontier AI Standards Agency Has a Shortlist and No Rules Yet</title><link>https://lukeocodes.dev/frontier-ai-standards-agency</link><guid isPermaLink="true">https://lukeocodes.dev/frontier-ai-standards-agency</guid><description>The Frontier AI Standards Agency got a name and a CEO shortlist this week, two more agent break-ins surfaced months late, and Zuckerberg said no to slowing down.</description><pubDate>Fri, 25 Sep 2026 00:00:00 GMT</pubDate><category>AI</category><category>Industry</category><category>News</category></item><item><title>Moving Off WordPress: 500 Posts and a Nuxt Rebuild</title><link>https://lukeocodes.dev/moving-off-wordpress</link><guid isPermaLink="true">https://lukeocodes.dev/moving-off-wordpress</guid><description>In 2020 I led moving off WordPress for a developer blog: 500 posts, a plugin that stored code in tables, two prototypes, and 30 minute builds cut to one.</description><pubDate>Thu, 24 Sep 2026 00:00:00 GMT</pubDate><category>Career</category><category>Engineering</category><category>JavaScript</category></item><item><title>TIL: git rerere Remembers Your Conflict Resolutions</title><link>https://lukeocodes.dev/til-git-rerere</link><guid isPermaLink="true">https://lukeocodes.dev/til-git-rerere</guid><description>Turn on git rerere once and git records how you resolved a merge conflict, then replays that resolution when the same conflict comes back in a rebase or merge.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>TIL</category><category>Git</category></item><item><title>Jev: The ChatGPT Co-Creator&apos;s System One Model Can&apos;t Talk</title><link>https://lukeocodes.dev/jev-system-one-model</link><guid isPermaLink="true">https://lukeocodes.dev/jev-system-one-model</guid><description>TypeSafe AI&apos;s Jev is a System One model that decides instead of talking: 70-500ms, $0.042/MTok, output free. Diogo Almeida&apos;s RLHF led to ChatGPT.</description><pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate><category>AI</category><category>Industry</category><category>Opinion</category></item><item><title>Developer Relations in the Era of AI</title><link>https://lukeocodes.dev/developer-relations-in-the-era-of-ai</link><guid isPermaLink="true">https://lukeocodes.dev/developer-relations-in-the-era-of-ai</guid><description>How developer relations and AI are reshaping documentation, community management, and the metrics that prove DevRel&apos;s impact.</description><pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate><category>Developer Relations</category><category>Developer Experience</category><category>AI</category></item><item><title>TIL: Fixing Opus 5 Jargon With One System Prompt Line</title><link>https://lukeocodes.dev/til-opus-5-jargon-fix</link><guid isPermaLink="true">https://lukeocodes.dev/til-opus-5-jargon-fix</guid><description>Opus 5 defaults to jargon-heavy consultant-speak. One line in your system prompt fixes it.</description><pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate><category>TIL</category><category>AI</category></item><item><title>The AI Standards Body Is the Ladder, Pulled Up</title><link>https://lukeocodes.dev/ai-standards-body</link><guid isPermaLink="true">https://lukeocodes.dev/ai-standards-body</guid><description>Three labs have been meeting since July about an AI standards body. The public call for restraint arrived two months after the plumbing was laid.</description><pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate><category>Opinion</category><category>AI</category><category>Industry</category></item><item><title>Everyone Should Slow Down AI. Except Them.</title><link>https://lukeocodes.dev/slowing-down-ai</link><guid isPermaLink="true">https://lukeocodes.dev/slowing-down-ai</guid><description>The case for slowing down AI always seems to exempt the people making it. When the same labs racing hardest ask everyone else to brake, read the incentive.</description><pubDate>Sun, 13 Sep 2026 00:00:00 GMT</pubDate><category>Opinion</category><category>AI</category></item><item><title>The git config Defaults Worth Overriding</title><link>https://lukeocodes.dev/git-config-defaults</link><guid isPermaLink="true">https://lukeocodes.dev/git-config-defaults</guid><description>A few git config defaults are just wrong for modern work. These one-liners fix branch sorting, new-branch pushes, diffs and command typos.</description><pubDate>Sat, 12 Sep 2026 00:00:00 GMT</pubDate><category>Git</category><category>TIL</category></item><item><title>The Summer Three Labs Let Their AI Escape the Sandbox</title><link>https://lukeocodes.dev/ai-sandbox-escape</link><guid isPermaLink="true">https://lukeocodes.dev/ai-sandbox-escape</guid><description>In five weeks of 2026, OpenAI, Anthropic and Meta each watched an AI sandbox escape turn into a real intrusion on live third-party systems.</description><pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate><category>AI</category><category>Security</category><category>Opinion</category></item><item><title>When Shopify Dropped React Native for Native</title><link>https://lukeocodes.dev/dropping-react-native</link><guid isPermaLink="true">https://lukeocodes.dev/dropping-react-native</guid><description>Shopify moved its mobile apps off React Native to Swift and Kotlin. A working engineer&apos;s checklist for when dropping React Native actually pays its rent.</description><pubDate>Thu, 10 Sep 2026 00:00:00 GMT</pubDate><category>Opinion</category><category>Engineering</category></item><item><title>React 19.3 Is Out and React 20 Is Not</title><link>https://lukeocodes.dev/react-19-3</link><guid isPermaLink="true">https://lukeocodes.dev/react-19-3</guid><description>React 19.3 shipped on 9 September 2026 with View Transitions and Fragment Refs stable. There is no React 20 yet. Here is what 19.3 actually changes.</description><pubDate>Wed, 09 Sep 2026 00:00:00 GMT</pubDate><category>JavaScript</category><category>News</category></item><item><title>An Anthropic Researcher Resigns and Says the Quiet Part</title><link>https://lukeocodes.dev/anthropic-researcher-resigns</link><guid isPermaLink="true">https://lukeocodes.dev/anthropic-researcher-resigns</guid><description>When an Anthropic researcher resigns and warns the labs are gambling with our lives, it&apos;s worth asking why the safety people keep being the ones to leave.</description><pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate><category>Opinion</category><category>AI</category><category>News</category></item><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>Scripting LLMs From the Terminal With the llm CLI</title><link>https://lukeocodes.dev/llm-cli-terminal</link><guid isPermaLink="true">https://lukeocodes.dev/llm-cli-terminal</guid><description>Simon Willison&apos;s llm CLI turns the terminal into a scriptable LLM pipe. Version 0.34 adds duration logging and 0.35 adds GPT-6, all logged to SQLite.</description><pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate><category>AI</category><category>Developer Experience</category></item><item><title>Running a Frontier-Class Local LLM on One GPU</title><link>https://lukeocodes.dev/local-llm-gpu</link><guid isPermaLink="true">https://lukeocodes.dev/local-llm-gpu</guid><description>A local LLM on one GPU stopped being a toy in 2026. Open weights from Qwen and DeepSeek now run on a single consumer card, and the throughput surprised me.</description><pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate><category>AI</category><category>Models</category></item><item><title>The Case for a .gitignore Allowlist</title><link>https://lukeocodes.dev/gitignore-allowlist</link><guid isPermaLink="true">https://lukeocodes.dev/gitignore-allowlist</guid><description>A gitignore allowlist ignores everything by default and re-includes only what you track. It flips the denylist habit, with one directory-traversal gotcha.</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate><category>Git</category><category>Opinion</category></item><item><title>How I Cut My Coding-Agent Token Bill by 90%</title><link>https://lukeocodes.dev/coding-agent-tokens</link><guid isPermaLink="true">https://lukeocodes.dev/coding-agent-tokens</guid><description>Coding-agent tokens add up fast when the harness ships 33k of overhead before your prompt. Here&apos;s the context hygiene that cut my bill without hurting output.</description><pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate><category>Developer Experience</category><category>AI</category></item><item><title>Biome Replaced ESLint and Prettier in My Setup</title><link>https://lukeocodes.dev/biome-eslint-prettier</link><guid isPermaLink="true">https://lukeocodes.dev/biome-eslint-prettier</guid><description>Biome 2.5 replaced ESLint and Prettier in my setup with one biome.json. A real config, the migration commands, and the honest gaps I still hit.</description><pubDate>Thu, 03 Sep 2026 00:00:00 GMT</pubDate><category>JavaScript</category><category>Developer Experience</category></item><item><title>Regulatory Capture Is the Real AI Safety Play</title><link>https://lukeocodes.dev/ai-regulatory-capture</link><guid isPermaLink="true">https://lukeocodes.dev/ai-regulatory-capture</guid><description>The AI regulatory capture playbook is simple: hype the danger, ask to be licensed, and price out anyone smaller. Meanwhile open-weight labs ship faster.</description><pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate><category>Opinion</category><category>AI</category></item><item><title>What Python 3.15 Changes, and What to Test Now</title><link>https://lukeocodes.dev/python-3-15-changes</link><guid isPermaLink="true">https://lukeocodes.dev/python-3-15-changes</guid><description>The Python 3.15 changes worth testing on the release candidate now: free-threading progress, lazy imports via PEP 810, and UTF-8 as the default.</description><pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate><category>Engineering</category><category>Open Source</category></item><item><title>fd 10.5 Is the find Replacement Worth Memorizing</title><link>https://lukeocodes.dev/fd-find-replacement</link><guid isPermaLink="true">https://lukeocodes.dev/fd-find-replacement</guid><description>fd 10.5.0 landed on 26 August 2026 with --ignore-parent, --exact and escape-sequence hardening. The fd find replacement flags actually worth committing to memory.</description><pubDate>Mon, 31 Aug 2026 00:00:00 GMT</pubDate><category>TIL</category><category>Open Source</category></item><item><title>The Tradeoffs Async/Await Hides From You</title><link>https://lukeocodes.dev/async-await-tradeoffs</link><guid isPermaLink="true">https://lukeocodes.dev/async-await-tradeoffs</guid><description>The async await tradeoffs are real: colored functions, hidden scheduling, and error propagation that surprises you. A look at what the keyword actually hides.</description><pubDate>Sun, 30 Aug 2026 00:00:00 GMT</pubDate><category>JavaScript</category><category>Engineering</category></item><item><title>AI Safety Became a Marketing Department</title><link>https://lukeocodes.dev/ai-safety-marketing</link><guid isPermaLink="true">https://lukeocodes.dev/ai-safety-marketing</guid><description>The frontier labs turned real AI safety language into marketing: scary demos on launch day, consciousness-adjacent research posts, and risk framed as a feature.</description><pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate><category>Opinion</category><category>AI</category></item><item><title>The Case for a Keyboard-Driven Workflow</title><link>https://lukeocodes.dev/keyboard-driven-workflow</link><guid isPermaLink="true">https://lukeocodes.dev/keyboard-driven-workflow</guid><description>The CLI tools and shortcuts behind a keyboard-driven workflow that cut my mouse use to almost nothing, and the two places the mouse still wins outright.</description><pubDate>Fri, 28 Aug 2026 00:00:00 GMT</pubDate><category>Opinion</category><category>Developer Experience</category></item><item><title>When Python Case Folding Becomes a Security Bug</title><link>https://lukeocodes.dev/python-case-folding</link><guid isPermaLink="true">https://lukeocodes.dev/python-case-folding</guid><description>Python case folding with str.lower() and casefold() can quietly turn a string check into an auth bypass. A concrete Unicode footgun, and the fix.</description><pubDate>Thu, 27 Aug 2026 00:00:00 GMT</pubDate><category>Security</category><category>Engineering</category></item><item><title>Node 26.8 Put Syntax Highlighting in the REPL</title><link>https://lukeocodes.dev/node-repl-highlighting</link><guid isPermaLink="true">https://lukeocodes.dev/node-repl-highlighting</guid><description>Node.js 26.8 added syntax highlighting to the REPL, so the interactive prompt now colours your code as you type it. A small node repl highlighting win worth having.</description><pubDate>Wed, 26 Aug 2026 00:00:00 GMT</pubDate><category>JavaScript</category><category>TIL</category></item><item><title>The Critical Next.js Security Patch You Shouldn&apos;t Skip</title><link>https://lukeocodes.dev/nextjs-security-patch</link><guid isPermaLink="true">https://lukeocodes.dev/nextjs-security-patch</guid><description>The August 2026 Next.js security patch fixes two critical RCE bugs. Here is what 16.3.3 and 15.5.24 close, and how to audit your own app for the same class.</description><pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate><category>Security</category><category>JavaScript</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>Claude Code Quality Got Worse, and Anthropic Admitted It</title><link>https://lukeocodes.dev/claude-code-quality</link><guid isPermaLink="true">https://lukeocodes.dev/claude-code-quality</guid><description>The Claude Code quality drop in early 2026 wasn&apos;t in your head. Anthropic&apos;s own postmortem confirmed three overlapping regressions, and the numbers were ugly.</description><pubDate>Mon, 24 Aug 2026 00:00:00 GMT</pubDate><category>Opinion</category><category>AI</category></item><item><title>uv Is the Python Packaging Tool That Finally Clicked</title><link>https://lukeocodes.dev/uv-python-packaging</link><guid isPermaLink="true">https://lukeocodes.dev/uv-python-packaging</guid><description>Astral&apos;s uv turned Python packaging into one fast tool. The uv sync, uv run and uv python install workflows I now reach for every day.</description><pubDate>Sun, 23 Aug 2026 00:00:00 GMT</pubDate><category>Engineering</category><category>Open Source</category></item><item><title>Why Claude&apos;s Token Cost Is Higher Than Ever, by Design</title><link>https://lukeocodes.dev/claude-token-cost</link><guid isPermaLink="true">https://lukeocodes.dev/claude-token-cost</guid><description>The Claude token cost per task keeps climbing while the rate card barely moves. Default thinking, tokenizer changes and quiet cache cuts explain the bill.</description><pubDate>Sat, 22 Aug 2026 00:00:00 GMT</pubDate><category>Opinion</category><category>AI</category><category>Pricing</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>This last week in AI: 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 Source</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>The Rust CLI Tools That Replaced My Coreutils</title><link>https://lukeocodes.dev/rust-cli-replacements</link><guid isPermaLink="true">https://lukeocodes.dev/rust-cli-replacements</guid><description>An honest audit of ripgrep, fd, bat, eza, zoxide and delta as rust cli replacements for grep, find, cat, ls, cd and diff, and which ones actually stuck.</description><pubDate>Fri, 21 Aug 2026 00:00:00 GMT</pubDate><category>TIL</category><category>Open Source</category></item><item><title>Please Stop Pasting AI Code Into My Pull Requests</title><link>https://lukeocodes.dev/pasting-ai-code</link><guid isPermaLink="true">https://lukeocodes.dev/pasting-ai-code</guid><description>Team etiquette for AI-assisted work: what to paste, what to synthesize, and why pasting AI code into a pull request unread makes your review my problem.</description><pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate><category>Opinion</category><category>Developer Experience</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 AI agents 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>APIs</category><category>AI</category></item><item><title>Go 1.27&apos;s Generic Methods Change How I Write Helpers</title><link>https://lukeocodes.dev/go-1-27-generic-methods</link><guid isPermaLink="true">https://lukeocodes.dev/go-1-27-generic-methods</guid><description>Go 1.27 shipped generic methods, so a method can declare its own type parameters. Here is how that changed my helper code, plus the one real gotcha.</description><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate><category>Engineering</category><category>Open Source</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>The attribution paradox: 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>APIs</category><category>Engineering</category></item><item><title>Keeping Git Fast at Scale</title><link>https://lukeocodes.dev/git-at-scale</link><guid isPermaLink="true">https://lukeocodes.dev/git-at-scale</guid><description>Keeping git fast at scale isn&apos;t about a bigger machine. Partial clone, sparse-checkout, fsmonitor and the commit-graph cut the work git does per command.</description><pubDate>Tue, 18 Aug 2026 00:00:00 GMT</pubDate><category>Git</category><category>Engineering</category></item><item><title>fzf 0.74 Made My Fuzzy Finder Fast Again</title><link>https://lukeocodes.dev/fzf-fuzzy-finder</link><guid isPermaLink="true">https://lukeocodes.dev/fzf-fuzzy-finder</guid><description>fzf 0.74.3 made the fuzzy finder fast again with big non-ASCII speedups, and 0.74.4 fixed an escape-sequence bug plus tmux, fish and nushell integration.</description><pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate><category>TIL</category><category>Developer Experience</category></item><item><title>Why I Trust Open Models More Than the Frontier Labs Now</title><link>https://lukeocodes.dev/trust-open-models</link><guid isPermaLink="true">https://lukeocodes.dev/trust-open-models</guid><description>I&apos;ve come to trust open models more than the closed frontier labs. You can inspect the weights, run them offline, and they&apos;re shipping faster and more openly.</description><pubDate>Sun, 16 Aug 2026 00:00:00 GMT</pubDate><category>Opinion</category><category>Models</category><category>Open Source</category></item><item><title>How to Split a Messy Git Commit Into Clean Ones</title><link>https://lukeocodes.dev/splitting-a-git-commit</link><guid isPermaLink="true">https://lukeocodes.dev/splitting-a-git-commit</guid><description>Splitting a git commit into clean, reviewable pieces takes an interactive rebase, a soft reset, and git add -p. Here is the exact sequence.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate><category>Git</category><category>TIL</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 flaw at the heart of full-duplex voice AI: the model answers from context the user never actually heard.</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>Git</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>Four labs disclosed AI models that escape testing and hack real systems. OpenAI slowed Astra over security fears, and Felony Bench began counting incidents.</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 in one August week: EU watermarking rules, emotion prompts, open source voice agents, a raccoon heist game, and the industry roundup.</description><pubDate>Sun, 09 Aug 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>Text-to-Speech</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>The AI industry this week: Cloudflare shipped a browser built for agents, five rivals agreed one plugin standard, and OpenAI paused its most capable model.</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.</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></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>Text-to-Speech</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>Text-to-Speech</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>Text-to-Speech</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>Text-to-Speech</category><category>Voice Agents</category><category>Streaming</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>Industry</category><category>Opinion</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></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>API Design</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>Text-to-Speech</category><category>Voice AI</category><category>Industry</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>One week at Speechify: Simba went multilingual, streaming TTS gained timestamps, voice agents learned to switch language mid-call, headers got renamed.</description><pubDate>Sun, 26 Jul 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>Text-to-Speech</category><category>APIs</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>Text-to-Speech</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>MCP goes stateless on Monday: the 2026-07-28 spec drops the initialize handshake and session IDs. Here is what breaks, and the handler I wrote to test it.</description><pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate><category>AI</category><category>Engineering</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>An AI agent breached Hugging Face, then the guardrails locked out the defenders: forensic prompts refused, while the attacker obeyed no usage policy at all.</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.</description><pubDate>Wed, 15 Jul 2026 00:00:00 GMT</pubDate><category>Text-to-Speech</category><category>Voice AI</category><category>API Design</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>Text-to-Speech</category><category>APIs</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</description><pubDate>Fri, 10 Jul 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>Text-to-Speech</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>Pipecat and LiveKit Agents both run production voice agents, but they own different layers of the stack. Pick the wrong one and you pay for it in a rewrite.</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.</description><pubDate>Tue, 07 Jul 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>Text-to-Speech</category><category>Voice Agents</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.</description><pubDate>Tue, 07 Jul 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>Text-to-Speech</category><category>Open Source</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>Text-to-Speech</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, all in one direction: down. Cheaper voice is good for developers, and the trend is not slowing.</description><pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate><category>Opinion</category><category>Text-to-Speech</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>A daily writing habit that finally works: one post a day, a weekly format rota, and a hard time box that forces the draft to exist.</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>Finding the rhythm two weeks into a new DevRel role: what surprised me about text-to-speech, what I was right about, and what I am still figuring out.</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>Two weeks in voice AI on the text-to-speech side: a new community, a new set of constraints, and a definition of quality nobody quite agrees on.</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>Onboarding at a new company after years at the same one: imposter feelings that hit harder, domain knowledge that transfers slowly, and remote loneliness.</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 speech-to-text, TTS API design broke my assumptions: output parameters everywhere, SSML that fights you, and speech marks nobody mentions.</description><pubDate>Sun, 05 Jul 2026 00:00:00 GMT</pubDate><category>API Design</category><category>Text-to-Speech</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>The five voice AI stories that shaped early July: OpenAI&apos;s voice reasoning model, ElevenLabs at $22B, Deepgram going multilingual, and Gemini using a computer.</description><pubDate>Sat, 04 Jul 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>News</category><category>Text-to-Speech</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></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>Text-to-Speech</category><category>APIs</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>Text-to-Speech</category><category>APIs</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>Text-to-Speech</category><category>Industry</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>Text-to-Speech</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>Text-to-Speech</category><category>Industry</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>Text-to-Speech</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>Text-to-Speech</category><category>APIs</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 pushing inference costs down faster than most developers have noticed.</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>Text-to-Speech</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 speech-to-text transcriptions from real API traffic: a meowing cat asking for help, a quiche that became keys, and why models guess.</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>Text-to-Speech</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</description><pubDate>Wed, 17 Jun 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>Text-to-Speech</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>A rising tide lifts all boats, but only if everyone has a boat. On neurodivergence at work, the user manual nobody reads, and being told to just figure it out.</description><pubDate>Tue, 16 Jun 2026 00:00:00 GMT</pubDate><category>Opinion</category></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>A frontier model goes dark: Fable 5 pulled 72 hours after launch by export directive, while Microsoft and Deepgram carried on shipping voice infrastructure.</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 killed its AI drive-thru in 2024 because it could not understand an accent. Two years on, the industry is still working 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 accuracy stopped deciding the STT market. Multilingual support, turn detection and platform integration became the real differentiators.</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</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.</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 on writing about ADHD and productivity, what Deepgram shipped this week, and what is coming next.</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></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>Twenty thousand more corrective messages by the age of ten is what an ADHD childhood costs. I am done apologising for being productive.</description><pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate><category>Opinion</category></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 swapped hand-rolled SDKs for spec-first generation with Fern, so five languages write themselves from one OpenAPI and AsyncAPI source.</description><pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate><category>Developer Experience</category><category>API Design</category><category>Voice AI</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.</description><pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate><category>TIL</category><category>Speech-to-Text</category><category>APIs</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></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: what multilingual voice agents cost, and why contributing guides exclude newcomers. Plus the rest of the month&apos;s roundup.</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><category>Opinion</category></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 on voice API design in a week when Google I/O and Anthropic&apos;s London event reshaped AI. The roundup for May 2026.</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 lives or dies on the audio: sample rate, encoding, channel mixing, chunk size. The docs skip it, so here is 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>APIs</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.</description><pubDate>Mon, 18 May 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>APIs</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 in one Sunday roundup: afinfo, speaker diarization, Slack culture on remote teams, and ffmpeg for voice AI.</description><pubDate>Sun, 17 May 2026 00:00:00 GMT</pubDate><category>Developer Experience</category><category>Voice AI</category><category>Text-to-Speech</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</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><category>Opinion</category></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></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 behaviour and observability: five developer experience wins that separate a great voice AI API from one that eats your Friday night.</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 running a developer Discord for a speech API surfaced the same problems on repeat: audio format traps, silent failures, and unasked questions.</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 DNS, connect, TLS and response times after every request, so you can profile API latency from the terminal without another tool.</description><pubDate>Tue, 05 May 2026 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category><category>APIs</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 the model stopped being the moat: frontier quality converged, and the real advantage moved 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 on voice AI debugging habits, plus Flux going multilingual, AssemblyAI&apos;s Voice Agent API and Twilio Conversation Relay, from early May 2026.</description><pubDate>Sun, 03 May 2026 00:00:00 GMT</pubDate><category>Voice AI</category><category>Text-to-Speech</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; Anthropic locked away Mythos 5. Two faces of AI in one week, and two answers to what shipping means.</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>Daily publishing starts here. The Sunday roundup for April 26: OpenAI workspace agents, Anthropic Mythos 5, and what was shipping inside 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>What 79 TIL posts over six and a half years taught me about consistency, keeping the scope small, and writing developer content people actually finish.</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: terminal STT streaming, WebSocket audio patterns and GPT-5.4-Cyber, in this Sunday roundup for April.</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>Pipe rec into websocat and get live speech to text in your terminal as you talk. Two CLI tools, one WebSocket, no GUI and no upload-and-wait loop.</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 the connection never closes. SDKs for streaming APIs need reconnect logic, backpressure, and graceful shutdown built in.</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>Chaining shell commands with &amp;&amp; runs the next only on success, ; runs it regardless, and || runs it only on failure. Pick wrong and CI hides a broken build.</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 streams a gzip file straight to stdout without writing a temp copy. Read compressed logs, CSVs, or JSON directly 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, so quick scripts and SDK examples run with no build step and no tsc --watch loop to babysit.</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 reports disk usage per directory in human-readable form, so you can find what is filling 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 deduplicates lines in a single pass. Clean up word lists, logs, and API response extracts without writing a throwaway 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 builds valid JSON payloads in shell scripts straight from variables, so a missing quote or an unescaped newline never breaks a request again.</description><pubDate>Tue, 07 Jan 2025 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category><category>APIs</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>An open letter on AI as a tool rather than a verdict: what it means for creativity, for programming, and for staying human through the next revolution.</description><pubDate>Fri, 15 Nov 2024 00:00:00 GMT</pubDate><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 benchmarks a command over many runs and reports min, max, mean and standard deviation, so you can compare tools with real 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>An open letter on politics: why neutrality is a choice too, what media manipulation costs democracy, and why I judge people by the harm they will accept.</description><pubDate>Fri, 01 Nov 2024 00:00:00 GMT</pubDate><category>Opinion</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, better known as netcat, opens raw TCP connections from the terminal: check whether a port is open or send a handcrafted HTTP request.</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>APIs</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 retry loop with exponential backoff and jitter absorbs transient API failures without hammering a server that is already struggling.</description><pubDate>Tue, 07 Mar 2023 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category><category>APIs</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 gives each project its own virtual environment, so two projects needing different library versions never fight over global packages.</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>APIs</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>APIs</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>APIs</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 echoes your request back as JSON, so testing a client locally shows exactly what it put on the wire. No real endpoint needed to debug.</description><pubDate>Tue, 01 Dec 2020 00:00:00 GMT</pubDate><category>TIL</category><category>APIs</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 command output to a file while still printing it on screen. Perfect for logging a build without losing live 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>APIs</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 out of your NodeJS code, and the dotenv package loads them into process.env with zero configuration.</description><pubDate>Tue, 05 May 2020 00:00:00 GMT</pubDate><category>TIL</category><category>Engineering</category><category>APIs</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>APIs</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 right in the terminal. No temp file, no throwaway parser.</description><pubDate>Tue, 05 Nov 2019 00:00:00 GMT</pubDate><category>TIL</category><category>APIs</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>APIs</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>