41554 blogs · [ { "id": "01a08797-f42e-7319-a7ea-2d420cecf3cf", "title": "Letting AI Debug Production", "url": "https://lackofimagination.org/2026/09/letting-ai-debug-production/", "published_at": "2026-09-04T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d420db5feca", "title": "Mocks are the Little-Death: Escaping the Mirage of Green Tests", "url": "https://lackofimagination.org/2026/05/mocks-are-the-little-death-escaping-the-mirage-of-green-tests/", "published_at": "2026-05-28T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d420e56d8e7", "title": "Beyond the README: Enforcing Application Guardrails at Runtime", "url": "https://lackofimagination.org/2026/03/beyond-the-readme-enforcing-application-guardrails-at-runtime/", "published_at": "2026-03-31T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d420e67750e", "title": "Time-Travel Debugging: Replaying Production Bugs Locally", "url": "https://lackofimagination.org/2026/02/time-travel-debugging-replaying-production-bugs-locally/", "published_at": "2026-02-24T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d420e79e0ae", "title": "Testing Side Effects Without the Side Effects", "url": "https://lackofimagination.org/2025/12/testing-side-effects-without-the-side-effects/", "published_at": "2025-12-27T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d420eaa28bd", "title": "Managing Side Effects: A JavaScript Effect System in 30 Lines or Less", "url": "https://lackofimagination.org/2025/11/managing-side-effects-a-javascript-effect-system-in-30-lines-or-less/", "published_at": "2025-11-24T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d420fa92f68", "title": "Little Big Line Array Build", "url": "https://lackofimagination.org/2025/06/little-big-line-array-build/", "published_at": "2025-06-17T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d4210485967", "title": "The Innocent Loop", "url": "https://lackofimagination.org/2025/04/the-innocent-loop/", "published_at": "2025-04-30T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d421064395d", "title": "Little Big 18\" Subwoofer Build", "url": "https://lackofimagination.org/2025/03/little-big-18-subwoofer-build/", "published_at": "2025-03-28T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d42106da1bc", "title": "Lessons from David Lynch: A Software Developer's Perspective", "url": "https://lackofimagination.org/2025/02/lessons-from-david-lynch-a-software-developers-perspective/", "published_at": "2025-02-15T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d4211194c8f", "title": "Runtime Diagnostics: Catching Bugs as They Happen", "url": "https://lackofimagination.org/2025/01/runtime-diagnostics-catching-bugs-as-they-happen/", "published_at": "2025-01-13T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d421154bfbd", "title": "Building Valkyrie: A Compact High-Output Speaker with Smooth Directivity", "url": "https://lackofimagination.org/2024/12/building-valkyrie-a-compact-high-output-speaker-with-smooth-directivity/", "published_at": "2024-12-12T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d4212129278", "title": "Writing Composable SQL using Knex and Pipelines", "url": "https://lackofimagination.org/2024/11/writing-composable-sql-using-knex-and-pipelines/", "published_at": "2024-11-25T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d4212277bb6", "title": "Self-documenting Code", "url": "https://lackofimagination.org/2024/10/self-documenting-code/", "published_at": "2024-10-20T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d4212ef2ed9", "title": "Avoiding if-else Hell: The Functional Style", "url": "https://lackofimagination.org/2024/09/avoiding-if-else-hell-the-functional-style/", "published_at": "2024-09-23T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d4213460e44", "title": "Firewalling Your Code", "url": "https://lackofimagination.org/2024/08/firewalling-your-code/", "published_at": "2024-08-20T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d421437b51f", "title": "Building Valeria: A Compact Horn-Loaded Speaker", "url": "https://lackofimagination.org/2024/07/building-valeria-a-compact-horn-loaded-speaker/", "published_at": "2024-07-27T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d421513fab8", "title": "Teaching Programming with BASIC", "url": "https://lackofimagination.org/2024/07/teaching-programming-with-basic/", "published_at": "2024-07-14T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d4215d5d377", "title": "I Don't Trust My Own Code", "url": "https://lackofimagination.org/2024/05/i-dont-trust-my-own-code/", "published_at": "2024-05-27T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d4216c185be", "title": "Easy Application Deployments with Linux", "url": "https://lackofimagination.org/2024/05/easy-application-deployments-with-linux/", "published_at": "2024-05-19T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d421766ad86", "title": "Back to Basics in Web Apps", "url": "https://lackofimagination.org/2024/04/back-to-basics-in-web-apps/", "published_at": "2024-04-24T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d4217fd4bd2", "title": "Beyond Foreign Keys", "url": "https://lackofimagination.org/2024/04/beyond-foreign-keys/", "published_at": "2024-04-05T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d4218b088c2", "title": "Software Architectures in a Nutshell", "url": "https://lackofimagination.org/2024/03/software-architectures-in-a-nutshell/", "published_at": "2024-03-26T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d421966244b", "title": "Making Technical Decisions", "url": "https://lackofimagination.org/2024/03/making-technical-decisions/", "published_at": "2024-03-05T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d4219dedd17", "title": "Economics of Bugs", "url": "https://lackofimagination.org/2024/02/economics-of-bugs/", "published_at": "2024-02-20T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d421ac44baf", "title": "Works On My Machine", "url": "https://lackofimagination.org/2024/02/works-on-my-machine/", "published_at": "2024-02-07T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d421b85f758", "title": "Decoding Complex-Sounding Programming Terms with Examples", "url": "https://lackofimagination.org/2024/01/decoding-complex-sounding-programming-terms-with-examples/", "published_at": "2024-01-24T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d421c2db5d0", "title": "On Unix Philosophy", "url": "https://lackofimagination.org/2024/01/on-unix-philosophy/", "published_at": "2024-01-14T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d421c88d9e8", "title": "DIY Dual Column Speaker Stands", "url": "https://lackofimagination.org/2024/01/diy-dual-column-speaker-stands/", "published_at": "2024-01-07T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d421cd55720", "title": "One Function Per Line", "url": "https://lackofimagination.org/2023/12/one-function-per-line/", "published_at": "2023-12-20T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d421dc0ca7b", "title": "Writing Robust Code via Idempotence", "url": "https://lackofimagination.org/2023/12/writing-robust-code-via-idempotence/", "published_at": "2023-12-14T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d421e06abad", "title": "Common SQL Mistakes Developers Make", "url": "https://lackofimagination.org/2023/12/common-sql-mistakes-developers-make/", "published_at": "2023-12-05T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d421e4ec8be", "title": "Practical Defensive Programming", "url": "https://lackofimagination.org/2023/11/practical-defensive-programming/", "published_at": "2023-11-26T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d421e72b32f", "title": "Making a KEF LS50 Clone", "url": "https://lackofimagination.org/2023/11/making-a-kef-ls50-clone/", "published_at": "2023-11-17T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d421f552293", "title": "Design Patterns vs. First Class Functions", "url": "https://lackofimagination.org/2023/11/design-patterns-vs.-first-class-functions/", "published_at": "2023-11-15T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d421fb55cfb", "title": "Debugging is Programming", "url": "https://lackofimagination.org/2023/11/debugging-is-programming/", "published_at": "2023-11-07T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d422034e436", "title": "Writing Testable Code: A Simpler Way", "url": "https://lackofimagination.org/2023/10/writing-testable-code-a-simpler-way/", "published_at": "2023-10-30T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d4220e5ec37", "title": "Three Aspects of B2B Software Development", "url": "https://lackofimagination.org/2023/10/three-aspects-of-b2b-software-development/", "published_at": "2023-10-23T00:00:00+00:00" }, { "id": "01a08797-f42e-7319-a7ea-2d4221202a61", "title": "Small Software Development Team Structure", "url": "https://lackofimagination.org/2023/10/small-software-development-team-structure/", "published_at": "2023-10-15T00:00:00+00:00" }, { "id": "01a08797-f42f-70f6-bf53-522bc0b04e55", "title": "Three Power Amp Fan Mods", "url": "https://lackofimagination.org/2023/09/three-power-amp-fan-mods/", "published_at": "2023-09-29T00:00:00+00:00" }, { "id": "01a08797-f42f-70f6-bf53-522bc1404f55", "title": "CNC Router Control Box Wiring", "url": "https://lackofimagination.org/2023/09/cnc-router-control-box-wiring/", "published_at": "2023-09-24T00:00:00+00:00" }, { "id": "01a08797-f42f-70f6-bf53-522bc18984c5", "title": "Three Stages of Software Development", "url": "https://lackofimagination.org/2023/09/three-stages-of-software-development/", "published_at": "2023-09-20T00:00:00+00:00" }, { "id": "01a08797-f42f-70f6-bf53-522bc19b7d03", "title": "Subwoofers for Home Use: An In-depth Guide", "url": "https://lackofimagination.org/2023/02/subwoofers-for-home-use-an-in-depth-guide/", "published_at": "2023-02-12T00:00:00+00:00" }, { "id": "01a08797-f42f-70f6-bf53-522bc27941b5", "title": "All Software have Bugs", "url": "https://lackofimagination.org/2022/10/all-software-have-bugs/", "published_at": "2022-10-13T00:00:00+00:00" }, { "id": "01a08797-f42f-70f6-bf53-522bc360623b", "title": "Favorite Exercise", "url": "https://lackofimagination.org/2022/06/favorite-exercise/", "published_at": "2022-06-23T00:00:00+00:00" }, { "id": "01a08797-f42f-70f6-bf53-522bc39c41ad", "title": "Lodash, a Middle Ground between JavaScript and TypeScript", "url": "https://lackofimagination.org/2022/06/lodash-a-middle-ground-between-javascript-and-typescript/", "published_at": "2022-06-19T00:00:00+00:00" }, { "id": "01a08797-f42f-70f6-bf53-522bc3a9ddff", "title": "Writing from a Software Developer's Perspective", "url": "https://lackofimagination.org/2022/04/writing-from-a-software-developers-perspective/", "published_at": "2022-04-23T00:00:00+00:00" }, { "id": "01a08797-f42f-70f6-bf53-522bc41c091e", "title": "Our Experience with PostgreSQL on ZFS", "url": "https://lackofimagination.org/2022/04/our-experience-with-postgresql-on-zfs/", "published_at": "2022-04-16T00:00:00+00:00" }, { "id": "01a08797-f42f-70f6-bf53-522bc4accaeb", "title": "Choose Your Cloud Dependencies Wisely", "url": "https://lackofimagination.org/2022/04/choose-your-cloud-dependencies-wisely/", "published_at": "2022-04-15T00:00:00+00:00" }, { "id": "01a08797-f42f-70f6-bf53-522bc4b03fbe", "title": "About Lack of Imagination", "url": "https://lackofimagination.org/2022/04/about-lack-of-imagination/", "published_at": "2022-04-14T00:00:00+00:00" } ] posts Claim your blog
Back to Lack of Imagination
Blog · corpus.blog/blogs/lackofimagination.org/posts

Lack of Imagination

lackofimagination.org

2026

2025

2024

2023

2022