41554 blogs · [ { "id": "01a07df2-0489-7373-bb3b-61bf26729575", "title": "A Tale of map and parseInt in Three Acts, or WAT You Will", "url": "https://blog.thecodewhisperer.com/permalink/a-tale-of-map-and-parseInt-in-three-acts", "published_at": "2026-03-19T03:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf26e16adb", "title": "Clarifying the Rule of Three in Refactoring", "url": "https://blog.thecodewhisperer.com/permalink/clarifying-the-rule-of-three-in-refactoring", "published_at": "2025-11-07T04:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf2781519f", "title": "Going Further with One Outcome Per Test", "url": "https://blog.thecodewhisperer.com/permalink/going-further-with-one-outcome-per-test", "published_at": "2025-10-19T03:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf27a8821a", "title": "Saff Squeeze: Example 1", "url": "https://blog.thecodewhisperer.com/permalink/saff-squeeze-example-1", "published_at": "2024-12-19T04:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf27ecfa0c", "title": "Refactoring Just Enough", "url": "https://blog.thecodewhisperer.com/permalink/refactoring-just-enough", "published_at": "2024-06-21T03:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf28414d7f", "title": "TDD: You're Probably Doing It Just Fine", "url": "https://blog.thecodewhisperer.com/permalink/tdd-youre-probably-doing-it-just-fine", "published_at": "2024-03-25T03:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf2859e333", "title": "TDD: For Those Who Don't Know How to Design Software", "url": "https://blog.thecodewhisperer.com/permalink/tdd-for-those-who-dont-know-how-to-design-software", "published_at": "2024-01-08T04:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf28e725fa", "title": "A Guard Clause Is Maybe a Tiny Parser", "url": "https://blog.thecodewhisperer.com/permalink/a-guard-clause-is-maybe-a-tiny-parser", "published_at": "2023-12-20T04:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf29d58834", "title": "Which Kinds of Tests Should I Write? Revisited", "url": "https://blog.thecodewhisperer.com/permalink/which-kinds-of-tests-should-i-write-revisited", "published_at": "2023-09-17T22:41:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf2a358b09", "title": "Revealing Intent: A Tiny Example", "url": "https://blog.thecodewhisperer.com/permalink/revealing-intent-a-tiny-example", "published_at": "2023-09-05T12:03:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf2ae22670", "title": "Refactoring Test Doubles: From Stubs to Parsing", "url": "https://blog.thecodewhisperer.com/permalink/from-stubs-to-parsers", "published_at": "2023-07-18T03:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf2b38d251", "title": "The Power of Precise Names: An Example", "url": "https://blog.thecodewhisperer.com/permalink/refactoring-by-focusing-on-names-example", "published_at": "2023-04-28T14:52:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf2c221913", "title": "How Tests Support Refactoring", "url": "https://blog.thecodewhisperer.com/permalink/how-tests-support-refactoring", "published_at": "2023-02-28T04:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf2d1bc4df", "title": "Investing Wisely in Architecture Through Refactoring", "url": "https://blog.thecodewhisperer.com/permalink/investing-wisely-in-architecture-through-refactoring", "published_at": "2023-01-09T04:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf2e0dbc1c", "title": "A Matter of Interpretation: Mock Objects", "url": "https://blog.thecodewhisperer.com/permalink/a-matter-of-interpretation-with-mock-objects", "published_at": "2022-12-27T04:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf2f06dbe5", "title": "What's Not To Like About This Code? An Experiment.", "url": "https://blog.thecodewhisperer.com/permalink/whats-not-to-like-about-this-code-1", "published_at": "2022-12-20T04:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf2fcb4fd2", "title": "What is 'the Right' Amount of Refactoring?", "url": "https://blog.thecodewhisperer.com/permalink/what-is-the-right-amount-of-refactoring", "published_at": "2022-08-22T03:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf30b30079", "title": "What is Refactoring?", "url": "https://blog.thecodewhisperer.com/permalink/what-is-refactoring", "published_at": "2022-07-29T03:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf3157a7f9", "title": "Why Refactoring Is Not Always a Code Smell", "url": "https://blog.thecodewhisperer.com/permalink/why-refactoring-is-not-always-a-code-smell", "published_at": "2022-06-08T15:49:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf31dcbeb9", "title": "Stepping Around a TDD Roadblock", "url": "https://blog.thecodewhisperer.com/permalink/stepping-around-a-tdd-roadblock", "published_at": "2022-04-11T03:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf321c194a", "title": "Which Kinds of Tests Should I Write?", "url": "https://blog.thecodewhisperer.com/permalink/which-kinds-of-tests-should-i-write", "published_at": "2022-04-03T03:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf32b5dad3", "title": "The Saff Squeeze", "url": "https://blog.thecodewhisperer.com/permalink/the-saff-squeeze", "published_at": "2022-03-28T03:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf331857e8", "title": "Polynomial Kata in 46 Commits", "url": "https://blog.thecodewhisperer.com/permalink/polynomial-kata", "published_at": "2022-02-04T04:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf33981954", "title": "Modularity and Performance", "url": "https://blog.thecodewhisperer.com/permalink/modularity-and-performance", "published_at": "2022-01-08T04:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf346d1a5f", "title": "Zero to nodejs on Linux", "url": "https://blog.thecodewhisperer.com/permalink/zero-to-nodejs-on-linux", "published_at": "2021-08-24T03:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf3497355b", "title": "Reading stdin and The Kotlin DSL for Gradle", "url": "https://blog.thecodewhisperer.com/permalink/stdin-gradle-kotlin-dsl", "published_at": "2021-08-14T03:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf355038cf", "title": "Breaking Through That First TDD Block", "url": "https://blog.thecodewhisperer.com/permalink/breaking-through-that-first-tdd-block", "published_at": "2021-08-12T03:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf363f9126", "title": "Edit, Then Execute", "url": "https://blog.thecodewhisperer.com/permalink/edit-then-execute", "published_at": "2021-07-16T03:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf372bffd6", "title": "How I Wish I Had Some Unit Tests! An Example", "url": "https://blog.thecodewhisperer.com/permalink/how-i-wish-i-had-some-unit-tests-an-example", "published_at": "2021-07-11T03:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf374c1dc7", "title": "How to Write Tests For Framework Extensions?", "url": "https://blog.thecodewhisperer.com/permalink/how-to-write-tests-for-framework-extensions", "published_at": "2021-03-14T04:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf379ee979", "title": "Abstract Test Cases, 20 Years Later", "url": "https://blog.thecodewhisperer.com/permalink/abstract-test-cases-20-years-later", "published_at": "2021-02-23T04:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf3841ee66", "title": "11ty By Intention", "url": "https://blog.thecodewhisperer.com/permalink/11ty-by-intention", "published_at": "2021-02-15T04:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf390dcfdb", "title": "Removing Duplication Deftly 1", "url": "https://blog.thecodewhisperer.com/permalink/removing-duplication-deftly-1", "published_at": "2021-02-08T04:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf3998bdb4", "title": "Deciphering An 11ty Error Message", "url": "https://blog.thecodewhisperer.com/permalink/deciphering-an-11ty-error-message", "published_at": "2021-02-01T04:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf39ce244b", "title": "Too Many Ifs? Maybe.", "url": "https://blog.thecodewhisperer.com/permalink/too-many-ifs", "published_at": "2021-01-20T04:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf39fc88ee", "title": "Simulating Failure in Collaboration Tests", "url": "https://blog.thecodewhisperer.com/permalink/limiting-beliefs-and-unstated-assumptions", "published_at": "2020-12-17T04:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf3a82be48", "title": "A Natural Microflow in TDD", "url": "https://blog.thecodewhisperer.com/permalink/a-natural-microflow-in-tdd", "published_at": "2020-08-03T03:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf3b49be43", "title": "Breaking Through Your Refactoring Rut", "url": "https://blog.thecodewhisperer.com/permalink/breaking-through-your-refactoring-rut", "published_at": "2020-05-13T15:30:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf3bdbf828", "title": "You Don't Hate Mocks; You Hate Side-Effects", "url": "https://blog.thecodewhisperer.com/permalink/you-dont-hate-mocks-you-hate-side-effects", "published_at": "2020-05-02T14:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf3c714ed4", "title": "Choosing Tools for Test Doubles", "url": "https://blog.thecodewhisperer.com/permalink/choosing-test-for-test-doubles", "published_at": "2020-04-08T13:25:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf3d396bde", "title": "Where the Hell Is My Port?! An Adventure in Elm", "url": "https://blog.thecodewhisperer.com/permalink/where-the-hell-is-my-port-an-adventure-in-elm", "published_at": "2020-01-30T20:30:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf3d67bb83", "title": "Emerging Implementations of An Emerging Interface: An Example", "url": "https://blog.thecodewhisperer.com/permalink/Emerging-Implementations-of-an-Emerging-Interface-An-Example", "published_at": "2019-06-20T03:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf3db9b79d", "title": "A Contract Is Just An Understanding", "url": "https://blog.thecodewhisperer.com/permalink/a-contract-is-just-an-understanding", "published_at": "2019-06-14T03:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf3e67f070", "title": "Gradle Won't Run My Spock Tests", "url": "https://blog.thecodewhisperer.com/permalink/gradle-wont-run-my-spock-tests", "published_at": "2018-11-15T05:11:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf3ee0b043", "title": "The World's Shortest Article on (test && commit) || revert", "url": "https://blog.thecodewhisperer.com/permalink/the-worlds-shortest-article-on-test-and-commit-otherwise-revert", "published_at": "2018-11-11T09:21:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf3f087759", "title": "From Zero To NUnit With Visual Studio Code", "url": "https://blog.thecodewhisperer.com/permalink/from-zero-to-nunit-with-visual-studio-code", "published_at": "2018-07-21T03:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf3f173a83", "title": "Removing RVM Completely", "url": "https://blog.thecodewhisperer.com/permalink/removing-rvm-completely", "published_at": "2018-07-14T03:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf3f2990f5", "title": "Who Tests the Contract Tests?", "url": "https://blog.thecodewhisperer.com/permalink/who-tests-the-contract-tests", "published_at": "2018-07-09T03:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf3ff5e2a2", "title": "I Learned Some sed", "url": "https://blog.thecodewhisperer.com/permalink/i-learned-some-sed", "published_at": "2017-12-22T04:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf403e71ac", "title": "Keep Dependency Injection Simple", "url": "https://blog.thecodewhisperer.com/permalink/keep-dependency-injection-simple", "published_at": "2017-12-10T11:42:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf41336701", "title": "Renaming Magically With zmv", "url": "https://blog.thecodewhisperer.com/permalink/renaming-magically-with-zmv", "published_at": "2017-11-23T05:20:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf41850876", "title": "The Myth of Advanced TDD", "url": "https://blog.thecodewhisperer.com/permalink/the-myth-of-advanced-tdd", "published_at": "2017-11-16T09:25:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf425fd3d6", "title": "Guard Rails, Not Prison Bars", "url": "https://blog.thecodewhisperer.com/permalink/guard-rails-not-prison-bars", "published_at": "2017-08-18T16:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf4312cf19", "title": "Getting Started with Contract Tests", "url": "https://blog.thecodewhisperer.com/permalink/getting-started-with-contract-tests", "published_at": "2017-06-25T17:03:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf438af804", "title": "When Subclasses Are Ready To Die", "url": "https://blog.thecodewhisperer.com/permalink/when-subclasses-are-ready-to-die", "published_at": "2017-05-10T17:22:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf4413d978", "title": "Taking a Pragmatic View of Isolated Tests", "url": "https://blog.thecodewhisperer.com/permalink/taking-a-pragmatic-view-of-isolated-tests", "published_at": "2017-03-17T18:38:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf4511abcb", "title": "Deploying Jekyll to Heroku using GitLab CI", "url": "https://blog.thecodewhisperer.com/permalink/deploying-jekyll-to-heroku-using-gitlab-ci", "published_at": "2017-02-13T23:16:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf451671a5", "title": "No More Boilerplate Code", "url": "https://blog.thecodewhisperer.com/permalink/no-more-boilerplate-code", "published_at": "2016-10-09T11:37:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf45390de9", "title": "How Not To Write Golden Master Tests", "url": "https://blog.thecodewhisperer.com/permalink/how-not-to-write-golden-master-tests", "published_at": "2016-03-01T16:30:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf45e97b48", "title": "A Tiny Cohesion Risk", "url": "https://blog.thecodewhisperer.com/permalink/a-tiny-cohesion-risk", "published_at": "2016-02-10T15:58:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf464ca451", "title": "How Reuse Happens", "url": "https://blog.thecodewhisperer.com/permalink/how-reuse-happens", "published_at": "2016-02-04T15:45:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf46c660c3", "title": "How a Smell in the Tests Points to a Risk in the Design", "url": "https://blog.thecodewhisperer.com/permalink/how-a-smell-in-the-tests-points-to-a-risk-in-the-design", "published_at": "2016-01-21T15:30:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf471fe5a4", "title": "Relative Include Paths and the Slow, Certain March Towards Legacy Code", "url": "https://blog.thecodewhisperer.com/permalink/relative-include-paths-and-the-slow-certain-march-towards-legacy-code", "published_at": "2016-01-12T13:30:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf47e7a48e", "title": "Clearing Up the Integrated Tests Scam", "url": "https://blog.thecodewhisperer.com/permalink/clearing-up-the-integrated-tests-scam", "published_at": "2015-12-08T12:30:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf48ce9083", "title": "Designing the Entry Point", "url": "https://blog.thecodewhisperer.com/permalink/designing-the-entry-point", "published_at": "2015-12-02T12:58:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf49386582", "title": "Injecting Dependencies, Partially Applying Functions, and It Really Doesn't Matter", "url": "https://blog.thecodewhisperer.com/permalink/injecting-dependencies", "published_at": "2015-11-13T07:30:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf496459d6", "title": "How To Recover From the Integrated Tests Scam", "url": "https://blog.thecodewhisperer.com/permalink/how-to-recover-from-the-integrated-tests-scam", "published_at": "2015-11-07T21:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf4a5ff6e9", "title": "Null: Design Tool", "url": "https://blog.thecodewhisperer.com/permalink/null-design-tool", "published_at": "2015-05-29T10:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf4aa4ad94", "title": "What Good is Subclass to Test, Anyway?", "url": "https://blog.thecodewhisperer.com/permalink/what-good-is-subclass-to-test", "published_at": "2015-04-07T06:30:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf4b645e0c", "title": "Your Tests Are Dragging You Down", "url": "https://blog.thecodewhisperer.com/permalink/your-tests-are-dragging-you-down", "published_at": "2015-03-28T06:30:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf4c26e304", "title": "Your Constructors are Completely Irrational", "url": "https://blog.thecodewhisperer.com/permalink/your-constructors-are-completely-irrational", "published_at": "2015-03-23T06:30:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf4ce4fa04", "title": "A Real-Life Contract Test", "url": "https://blog.thecodewhisperer.com/permalink/a-real-life-contract-test", "published_at": "2015-03-05T08:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf4d868d45", "title": "You Have To Know When To Stop", "url": "https://blog.thecodewhisperer.com/permalink/you-have-to-know-when-to-stop", "published_at": "2015-02-15T15:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf4e5fe50f", "title": "Learning Tests for POSTing Email from Mailgun", "url": "https://blog.thecodewhisperer.com/permalink/learning-tests-for-posting-email-from-mailgun", "published_at": "2014-10-27T00:26:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf4eb8931c", "title": "IDEA Crashes on Launch on Yosemite", "url": "https://blog.thecodewhisperer.com/permalink/idea-crashes-on-launch-on-yosemite", "published_at": "2014-10-19T12:35:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf4fa0766f", "title": "Gaining Confidence in Code that Generates HTML", "url": "https://blog.thecodewhisperer.com/permalink/gaining-confidence-in-code-that-generates-html", "published_at": "2014-10-12T16:18:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf4fdc874b", "title": "Clean Up Those Nasty Junk Drawers", "url": "https://blog.thecodewhisperer.com/permalink/clean-up-those-nasty-junk-drawers", "published_at": "2014-10-04T07:13:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf506c0bea", "title": "Surviving Legacy Code with Golden Master and Sampling", "url": "https://blog.thecodewhisperer.com/permalink/surviving-legacy-code-with-golden-master-and-sampling", "published_at": "2014-09-28T12:09:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf508676cd", "title": "\"I Like Mocks, But I Distrust Spies\"", "url": "https://blog.thecodewhisperer.com/permalink/i-like-mocks", "published_at": "2014-09-15T08:13:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf513aa56b", "title": "Let Code Flow Towards Better Design", "url": "https://blog.thecodewhisperer.com/permalink/let-code-flow-towards-encapsulation", "published_at": "2014-08-22T16:18:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf515ba81d", "title": "Abstraction: The Goal of Modular Design", "url": "https://blog.thecodewhisperer.com/permalink/abstraction-the-goal-of-modular-design", "published_at": "2014-08-01T16:16:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf515e774f", "title": "Refactoring CSS: Not Impossible", "url": "https://blog.thecodewhisperer.com/permalink/refactoring-css-not-impossible", "published_at": "2014-05-30T17:27:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf51cd87dc", "title": "How TDD Affects My Designs", "url": "https://blog.thecodewhisperer.com/permalink/how-tdd-affects-my-designs", "published_at": "2014-05-22T17:34:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf526097cd", "title": "The Curious Case of Tautological TDD", "url": "https://blog.thecodewhisperer.com/permalink/the-curious-case-of-tautological-tdd", "published_at": "2014-05-14T18:38:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf531d13c3", "title": "Musings on Refactoring as Waste", "url": "https://blog.thecodewhisperer.com/permalink/musings-on-refactoring-as-waste", "published_at": "2014-04-22T15:39:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf53fc0f7e", "title": "Google Spreadsheet as a Test-First Demo Environment", "url": "https://blog.thecodewhisperer.com/permalink/google-spreadsheet-as-a-test-first-demo-environment", "published_at": "2014-03-25T13:01:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf542c75d4", "title": "Putting An Age-Old Battle To Rest", "url": "https://blog.thecodewhisperer.com/permalink/putting-an-age-old-battle-to-rest", "published_at": "2013-12-07T07:50:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf54e8fdd2", "title": "Beyond Mock Objects", "url": "https://blog.thecodewhisperer.com/permalink/beyond-mock-objects", "published_at": "2013-11-23T11:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf552a044d", "title": "Losing time to Faraday", "url": "https://blog.thecodewhisperer.com/permalink/losing-time-to-faraday", "published_at": "2013-11-17T18:40:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf55d0f293", "title": "The Eternal Struggle Between Business and Programmers", "url": "https://blog.thecodewhisperer.com/permalink/the-eternal-struggle-between-business-and-programmers", "published_at": "2013-11-11T05:00:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf5623cabf", "title": "The Pain of Implicit Dependencies", "url": "https://blog.thecodewhisperer.com/permalink/the-pain-of-implicit-dependencies", "published_at": "2013-10-14T15:39:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf56c2967b", "title": "Listening to your code does not mean conducting a seance", "url": "https://blog.thecodewhisperer.com/permalink/listening-to-your-code-does-not-mean-conducting-a-seance", "published_at": "2013-06-27T14:28:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf56e44800", "title": "Primitive Obsession Obsession", "url": "https://blog.thecodewhisperer.com/permalink/primitive-obsession-obsession", "published_at": "2013-03-04T16:18:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf56f9808e", "title": "Modularity. Details. Pick One.", "url": "https://blog.thecodewhisperer.com/permalink/modularity-details-pick-one", "published_at": "2013-01-31T18:50:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf57a8ea0e", "title": "Demystifying the Dependency Inversion Principle", "url": "https://blog.thecodewhisperer.com/permalink/consequences-of-dependency-inversion-principle", "published_at": "2013-01-29T20:55:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf57aa4620", "title": "The Liskov Substitution Principle Demystified", "url": "https://blog.thecodewhisperer.com/permalink/liskov-substitution-principle-demystified", "published_at": "2013-01-08T18:03:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf5867d71f", "title": "Inquisition By Contract", "url": "https://blog.thecodewhisperer.com/permalink/inquisition-by-contract", "published_at": "2013-01-03T18:47:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf589fb4fb", "title": "Publish posts later with Jekyll/Octopress", "url": "https://blog.thecodewhisperer.com/permalink/publish-posts-later-with-jekyll-slash-octopress", "published_at": "2012-12-06T16:52:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf59137ecd", "title": "Announcing a New Book", "url": "https://blog.thecodewhisperer.com/permalink/announcing-a-new-book", "published_at": "2012-12-03T18:03:00+00:00" }, { "id": "01a07df2-0489-7373-bb3b-61bf59ee384b", "title": "A new twist on an old pattern", "url": "https://blog.thecodewhisperer.com/permalink/a-new-twist-on-an-old-pattern", "published_at": "2012-11-19T04:00:00+00:00" } ] posts Claim your blog
Back to The Code Whisperer
Blog · corpus.blog/blogs/blog.thecodewhisperer.com/posts

The Code Whisperer

blog.thecodewhisperer.com

2026

2025

2024

2023

2022

2021

2020

2019

2018

2017

2016

2015

2014

2013

2012