41554 blogs · [ { "id": "01a08755-0c85-7232-9836-d7d7e92db59c", "title": "Assessing the Latest AI Coding Hotness", "url": "https://blog.thepete.net/blog/2026/01/29/assessing-the-latest-ai-coding-hotness/", "published_at": "2026-01-29T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-905564525560", "title": "Same Model, Different Results: Why Coding Agents Aren't Interchangeable", "url": "https://blog.thepete.net/blog/2025/12/10/same-model-different-results-why-coding-agents-arent-interchangeable/", "published_at": "2025-12-10T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-90556539f3e0", "title": "Claude Code System Prompt", "url": "https://blog.thepete.net/claude-code-system-prompt/", "published_at": "2025-12-09T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-905565643bb6", "title": "Claude Code Tools", "url": "https://blog.thepete.net/claude-code-tools/", "published_at": "2025-12-09T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-9055659e557b", "title": "AI Coding: Managing Context", "url": "https://blog.thepete.net/blog/2025/10/29/ai-coding-managing-context/", "published_at": "2025-10-29T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-905565d74f36", "title": "Leading your engineers towards an AI-assisted future", "url": "https://blog.thepete.net/blog/2025/06/26/leading-your-engineers-towards-an-ai-assisted-future/", "published_at": "2025-06-26T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-9055661bc10c", "title": "Your CEO Should Not Be Slacking Your Coding Agent", "url": "https://blog.thepete.net/blog/2025/06/04/your-ceo-should-not-be-slacking-your-coding-agent/", "published_at": "2025-06-04T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-90556640f1db", "title": "Why Your AI Coding Assistant Keeps Doing It Wrong, and How To Fix It", "url": "https://blog.thepete.net/blog/2025/05/22/why-your-ai-coding-assistant-keeps-doing-it-wrong-and-how-to-fix-it/", "published_at": "2025-05-22T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-9055672820ce", "title": "Product Strategy: a Cheatsheet for Engineering Leaders", "url": "https://blog.thepete.net/blog/2025/04/21/product-strategy-a-cheatsheet-for-engineering-leaders/", "published_at": "2025-04-21T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-9055675b3803", "title": "Chain-of-Vibes", "url": "https://blog.thepete.net/blog/2025/04/14/chain-of-vibes/", "published_at": "2025-04-14T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-905567f9b169", "title": "Vibe-coding 101", "url": "https://blog.thepete.net/blog/2025/03/10/vibe-coding-101/", "published_at": "2025-03-10T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-905568acb520", "title": "Getting AI-powered features past the post-MVP slump", "url": "https://blog.thepete.net/blog/2024/12/01/getting-ai-powered-features-past-the-post-mvp-slump/", "published_at": "2024-12-01T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-9055698ac0eb", "title": "Expand/Contract: making a breaking change without a big bang", "url": "https://blog.thepete.net/blog/2023/12/05/expand/contract-making-a-breaking-change-without-a-big-bang/", "published_at": "2023-12-05T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-905569d7e08c", "title": "Five Minutes to Feature Flags", "url": "https://blog.thepete.net/blog/2023/03/02/five-minutes-to-feature-flags/", "published_at": "2023-03-02T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-90556a0c718e", "title": "OpenFeature - a standard for feature flagging", "url": "https://blog.thepete.net/blog/2022/05/19/openfeature-a-standard-for-feature-flagging/", "published_at": "2022-05-19T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-90556ae82601", "title": "Explaining Variable", "url": "https://blog.thepete.net/blog/2021/06/24/explaining-variable/", "published_at": "2021-06-24T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-90556bbffd4a", "title": "Patterns of cross-team collaboration", "url": "https://blog.thepete.net/blog/2021/06/17/patterns-of-cross-team-collaboration/", "published_at": "2021-06-18T06:25:50+00:00" }, { "id": "01a08755-0c86-7257-b97b-90556c56b287", "title": "Your Platform is a Product", "url": "https://blog.thepete.net/blog/2021/01/28/your-platform-is-a-product/", "published_at": "2021-01-28T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-90556d4d1be2", "title": "Engineering Values and Architectural Principles", "url": "https://blog.thepete.net/blog/2021/01/18/engineering-values-and-architectural-principles/", "published_at": "2021-01-18T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-90556dad3704", "title": "Tech Debt Walls", "url": "https://blog.thepete.net/blog/2020/12/01/tech-debt-walls/", "published_at": "2020-12-01T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-90556e37b9ab", "title": "Roadtrip!", "url": "https://blog.thepete.net/blog/2020/10/29/roadtrip-product-engineering-planning/", "published_at": "2020-10-29T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-90556ebb4787", "title": "Service Templates and Service Chassis", "url": "https://blog.thepete.net/blog/2020/09/25/service-templates-service-chassis/", "published_at": "2020-09-25T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-90556f06bbfa", "title": "Testing a feature-flagged change", "url": "https://blog.thepete.net/blog/2020/02/09/testing-a-feature-flagged-change/", "published_at": "2020-02-09T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-90556f408aa7", "title": "Creating and sharing Strategic Architectural Initiatives", "url": "https://blog.thepete.net/blog/2020/01/09/creating-and-sharing-strategic-architectural-initiatives/", "published_at": "2020-01-09T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-90556fde0823", "title": "Delivering on an architecture strategy", "url": "https://blog.thepete.net/blog/2019/12/09/delivering-on-an-architecture-strategy/", "published_at": "2019-12-09T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-9055706303da", "title": "Hello, production", "url": "https://blog.thepete.net/blog/2019/10/04/hello-production/", "published_at": "2019-10-04T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-905570e4063c", "title": "Story Tests - clear, expressive testing for redux reducers", "url": "https://blog.thepete.net/blog/2019/08/08/story-tests-clear-expressive-testing-for-redux-reducers/", "published_at": "2019-08-08T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-90557196a995", "title": "Testing redux reducers - leveraging selectors", "url": "https://blog.thepete.net/blog/2019/08/07/testing-redux-reducers-leveraging-selectors/", "published_at": "2019-08-07T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-905571f1cf1e", "title": "A nice way to test redux reducers and actions - part I", "url": "https://blog.thepete.net/blog/2019/07/15/a-nice-way-to-test-redux-reducers-and-actions-part-i/", "published_at": "2019-07-15T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-9055721ddcb4", "title": "Day-One Deploys", "url": "https://blog.thepete.net/blog/2019/06/04/day-one-deploys/", "published_at": "2019-06-04T13:42:01+00:00" }, { "id": "01a08755-0c86-7257-b97b-90557316e0e2", "title": "6 Practices for Effective Pull Requests", "url": "https://blog.thepete.net/blog/2019/05/10/6-practices-for-effective-pull-requests/", "published_at": "2019-05-10T21:06:10+00:00" }, { "id": "01a08755-0c86-7257-b97b-905573cc3d5a", "title": "Mission Command: enabling autonomous software teams", "url": "https://blog.thepete.net/blog/2019/02/08/mission-command-enabling-autonomous-software-teams/", "published_at": "2019-02-09T05:25:13+00:00" }, { "id": "01a08755-0c86-7257-b97b-9055740a9e42", "title": "Advice for the Founding Engineer, part 3", "url": "https://blog.thepete.net/blog/2018/03/08/advice-for-the-founding-engineer-part-3/", "published_at": "2018-03-08T21:08:14+00:00" }, { "id": "01a08755-0c86-7257-b97b-905574ddda51", "title": "Continuous Delivery for Static Sites", "url": "https://blog.thepete.net/blog/2017/11/06/continuous-delivery-for-static-websites/", "published_at": "2017-11-06T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-905575a29589", "title": "Advice for the Founding Engineer, part 2", "url": "https://blog.thepete.net/blog/2017/08/14/advice-for-the-founding-engineer-part-two/", "published_at": "2017-08-14T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-905575fc333d", "title": "Advice for the Founding Engineer, part 1", "url": "https://blog.thepete.net/blog/2017/04/23/advice-for-the-founding-engineer-part-one/", "published_at": "2017-04-23T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-90557697aa8b", "title": "The JS testing ecosystem needs a standard matcher library", "url": "https://blog.thepete.net/blog/2017/03/29/the-js-testing-ecosystem-needs-a-standard-matcher-library/", "published_at": "2017-03-29T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-905576abce42", "title": "Articles & Talks", "url": "https://blog.thepete.net/about/articles-and-talks/", "published_at": "2017-03-10T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-905576baa262", "title": "The Symbol-Keyed State Accessor pattern", "url": "https://blog.thepete.net/blog/2016/11/20/the-symbol-keyed-state-accessor-pattern/", "published_at": "2016-11-20T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-9055777dcb28", "title": "DIY stir plate for homebrew yeast starters", "url": "https://blog.thepete.net/blog/2015/12/03/diy-stir-plate-for-homebrew-yeast-starters/", "published_at": "2015-12-03T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-9055784baa8a", "title": "The Ultimate Traveler's Coffee Kit", "url": "https://blog.thepete.net/blog/2015/06/21/the-ultimate-travelers-coffee-kit/", "published_at": "2015-06-21T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-9055785e1568", "title": "video for my different.js talk", "url": "https://blog.thepete.net/blog/2014/09/02/video-for-my-different-dot-js-talk/", "published_at": "2014-09-02T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-90557884cdfd", "title": "optimizing 3rd party JavaScript loading", "url": "https://blog.thepete.net/blog/2014/08/27/optimizing-3rd-party-javascript-loading/", "published_at": "2014-08-27T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-905578b72e6c", "title": "Rails as an SOA Client", "url": "https://blog.thepete.net/blog/2014/05/15/rails-as-an-soa-client/", "published_at": "2014-05-15T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-9055797743bc", "title": "the 5 rules of an awesome dev toolchain", "url": "https://blog.thepete.net/blog/2014/03/28/_-attributes-of-an-amazing-dev-toolchain/", "published_at": "2014-03-28T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-90557a63be81", "title": "Microstatic: radically simple static microsites", "url": "https://blog.thepete.net/blog/2014/01/17/microstatic-radically-simple-static-microsites/", "published_at": "2014-01-17T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-90557ade362c", "title": "Assertions in Page Objects", "url": "https://blog.thepete.net/blog/2013/09/13/assertions-in-page-objects/", "published_at": "2013-09-13T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-90557b64137d", "title": "introducing rack-flags", "url": "https://blog.thepete.net/blog/2013/08/24/introducing-rack-flags/", "published_at": "2013-08-24T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-90557b9aa860", "title": "iOS Unit Testing Workshop", "url": "https://blog.thepete.net/blog/2013/08/06/ios-unit-testing-workshop/", "published_at": "2013-08-06T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-90557c6aefa5", "title": "Using Travis CI and xctool to build and test iOS apps", "url": "https://blog.thepete.net/blog/2013/05/07/using-travis-ci-and-xctool-to-build-and-test-ios/", "published_at": "2013-05-07T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-90557cfad245", "title": "Test-driven Backbone.js - Part Three", "url": "https://blog.thepete.net/blog/2013/02/24/test-driven-backbone-dot-js-part-three/", "published_at": "2013-02-24T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-90557d40c1c4", "title": "Test-driven Backbone.js - Part One", "url": "https://blog.thepete.net/blog/2013/01/23/test-driven-backbone-dot-js-part-one/", "published_at": "2013-01-23T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-90557e04aa04", "title": "Test-driven Backbone.js - Part Two", "url": "https://blog.thepete.net/blog/2013/01/23/test-driven-backbone-dot-js-part-two/", "published_at": "2013-01-23T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-90557e439533", "title": "Deploying to Heroku from CI - the gory details", "url": "https://blog.thepete.net/blog/2013/01/22/deploying-to-heroku-from-ci-the-gory-details/", "published_at": "2013-01-22T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-90557f1250b0", "title": "Deploying to Heroku from CI", "url": "https://blog.thepete.net/blog/2013/01/21/deploying-to-heroku-from-ci/", "published_at": "2013-01-21T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-90557fe3ef20", "title": "Writing iOS acceptance tests using Kiwi", "url": "https://blog.thepete.net/blog/2012/11/18/writing-ios-acceptance-tests-using-kiwi/", "published_at": "2012-11-18T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-90558030ee51", "title": "Cookie-based feature flag overrides", "url": "https://blog.thepete.net/blog/2012/11/06/cookie-based-feature-flag-overrides/", "published_at": "2012-11-06T00:00:00+00:00" }, { "id": "01a08755-0c86-7257-b97b-905580c3f085", "title": "Frank with CocoaPods", "url": "https://blog.thepete.net/blog/2012/10/16/frank-with-cocoapods/", "published_at": "2012-10-16T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd45812442", "title": "Towards Frank 1.0", "url": "https://blog.thepete.net/blog/2012/09/06/towards-frank-1-point-0/", "published_at": "2012-09-06T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd461fef12", "title": "Introducing PublicAutomation", "url": "https://blog.thepete.net/blog/2012/08/20/introducing-publicautomation/", "published_at": "2012-08-20T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd470b5f5a", "title": "marker branches in git", "url": "https://blog.thepete.net/blog/2012/08/09/marker-branches-in-git/", "published_at": "2012-08-09T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd47b01491", "title": "Octopress deployment pipeline", "url": "https://blog.thepete.net/blog/2012/08/02/octopress-deployment-pipeline/", "published_at": "2012-08-02T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd48a958bb", "title": "Running Frank as part of iOS CI", "url": "https://blog.thepete.net/blog/2012/07/22/running-frank-as-part-of-ios-ci/", "published_at": "2012-07-22T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd49030f19", "title": "Using the UIAutomation private framework", "url": "https://blog.thepete.net/blog/2012/07/11/using-the-uiautomation-private-framework/", "published_at": "2012-07-11T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd4930d742", "title": "writing your first Frank test", "url": "https://blog.thepete.net/blog/2012/06/24/writing-your-first-frank-test/", "published_at": "2012-06-24T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd49f5e62b", "title": "Lowering Frank's barrier to entry", "url": "https://blog.thepete.net/blog/2012/06/16/lowering-franks-barrier-to-entry/", "published_at": "2012-06-16T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd4ab64c4a", "title": "The Birth Of a Domain Object In Ruby", "url": "https://blog.thepete.net/blog/2012/06/09/the-birth-of-a-domain-object-in-ruby/", "published_at": "2012-06-09T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd4b2f3276", "title": "Feature Flags in JavaScript", "url": "https://blog.thepete.net/blog/2012/05/09/javascript-feature-flags/", "published_at": "2012-05-09T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd4b9a526a", "title": "Moving from Blogger to Octopress", "url": "https://blog.thepete.net/blog/2012/02/08/blogger-to-octopress/", "published_at": "2012-02-08T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd4be31e5e", "title": "Class-less javascript", "url": "https://blog.thepete.net/blog/2012/02/06/class-less-javascript/", "published_at": "2012-02-06T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd4ca3b058", "title": "Testing Mobile Web Apps With WebDriver", "url": "https://blog.thepete.net/blog/2011/09/02/testing-mobile-web-apps-with-webdriver/", "published_at": "2011-09-02T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd4d30686e", "title": "Javascript Promises", "url": "https://blog.thepete.net/blog/2011/07/02/javascript-promises/", "published_at": "2011-07-02T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd4dd1990c", "title": "retroactive quality metrics with git", "url": "https://blog.thepete.net/blog/2011/05/08/retroactive-quality-metrics-with-git/", "published_at": "2011-05-08T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd4ec344a2", "title": "Inspect the state of your running iOS app's UI with Symbiote", "url": "https://blog.thepete.net/blog/2011/05/01/inspect-state-of-our-running-ios-apps/", "published_at": "2011-05-01T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd4f9b662b", "title": "Tutorial screencast on Frankifying your app", "url": "https://blog.thepete.net/blog/2011/04/19/tutoral-creencast-on-frankifying-your/", "published_at": "2011-04-19T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd5073e932", "title": "Working with Indirect Input and Output in Unit Tests", "url": "https://blog.thepete.net/blog/2011/01/04/working-with-indirect-input-and-output/", "published_at": "2011-01-04T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd5077cb80", "title": "Creating and publishing your first ruby gem", "url": "https://blog.thepete.net/blog/2010/11/20/creating-and-publishing-your-first-ruby/", "published_at": "2010-11-20T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd514f3b44", "title": "timestamped-scenarios, a custom Cucumber formatter", "url": "https://blog.thepete.net/blog/2010/11/20/timestamped-scenarios-custom-cucumber/", "published_at": "2010-11-20T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd521238ce", "title": "Objective C memory errors pt II - Dangling Pointers", "url": "https://blog.thepete.net/blog/2010/10/12/objective-c-memory-errors-pt-ii/", "published_at": "2010-10-12T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd52aa0149", "title": "Common Objective-C memory management errors, Part I", "url": "https://blog.thepete.net/blog/2010/10/11/common-objective-c-memory-management/", "published_at": "2010-10-11T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd52f5a1ed", "title": "Podcast about Frank and test automation on iOS", "url": "https://blog.thepete.net/blog/2010/08/07/podcast-about-frank-and-test-automation/", "published_at": "2010-08-07T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd53811b8d", "title": "Frank: Automated Acceptance Tests for iPhone and iPad", "url": "https://blog.thepete.net/blog/2010/07/23/frank-automated-acceptance-tests-for/", "published_at": "2010-07-23T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd540469d0", "title": "TDD, Emergent Design, and Punctuated Equilibrium", "url": "https://blog.thepete.net/blog/2010/04/22/tdd-emergent-design-and-punctuated/", "published_at": "2010-04-22T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd54bc72df", "title": "Introducing Noguchi", "url": "https://blog.thepete.net/blog/2010/04/05/introducing-noguchi/", "published_at": "2010-04-05T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd54f03c5b", "title": "Stormcloud will watch over the unicorns.", "url": "https://blog.thepete.net/blog/2010/04/03/stormcloud-will-watch-over-unicorns/", "published_at": "2010-04-03T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd552c7d8f", "title": "TickTock: A dirt-simple stopwatch class for actionscript", "url": "https://blog.thepete.net/blog/2010/03/09/ticktock-dirt-simple-stopwatch-class/", "published_at": "2010-03-09T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd5541c4d7", "title": "Why do we estimate effort?", "url": "https://blog.thepete.net/blog/2010/03/07/why-do-we-estimate-effort/", "published_at": "2010-03-07T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd55e0904b", "title": "Primitive Obsession obsessions", "url": "https://blog.thepete.net/blog/2010/02/22/primitive-obsession-obsessions/", "published_at": "2010-02-22T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd5630aa9f", "title": "Encapsulating user interaction events in Flex", "url": "https://blog.thepete.net/blog/2010/02/19/encapsulating-user-interaction-events/", "published_at": "2010-02-19T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd56a97ca1", "title": "Ruby Facets: the mash method", "url": "https://blog.thepete.net/blog/2010/02/18/ruby-facets-mash-method/", "published_at": "2010-02-18T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd570037c3", "title": "Partial commits with git", "url": "https://blog.thepete.net/blog/2010/02/03/partial-commits-with-git/", "published_at": "2010-02-03T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd57f0b172", "title": "an inverted include? for ruby", "url": "https://blog.thepete.net/blog/2010/01/31/inverted-include-for-ruby/", "published_at": "2010-01-31T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd582ac1c7", "title": "Flex Patterns: Presentation Adapter", "url": "https://blog.thepete.net/blog/2010/01/17/flex-patterns-presentation-adapter/", "published_at": "2010-01-17T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd58b7d710", "title": "How much code did I just delete?", "url": "https://blog.thepete.net/blog/2009/11/17/how-much-code-did-i-just-delete/", "published_at": "2009-11-17T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd595849df", "title": "Introducing Gimme: a lightweight ruby Registry", "url": "https://blog.thepete.net/blog/2009/11/16/introducing-gimme-lightweight-ruby/", "published_at": "2009-11-16T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd597388d3", "title": "Adding hamcrest-as matchers to mock4as", "url": "https://blog.thepete.net/blog/2009/06/28/adding-hamcrest-as-matchers-to-mock4as/", "published_at": "2009-06-28T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd5a46560a", "title": "Presentation Model Pattern", "url": "https://blog.thepete.net/blog/2009/06/14/presentation-model-pattern/", "published_at": "2009-06-14T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd5add5c02", "title": "REST: 'There aren't enough verbs'", "url": "https://blog.thepete.net/blog/2009/04/19/rest-there-arent-enough-verbs/", "published_at": "2009-04-19T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd5b82601e", "title": "mock.willExecute(...) in mock4as", "url": "https://blog.thepete.net/blog/2009/04/02/mockwillexecute-in-mock4as/", "published_at": "2009-04-02T00:00:00+00:00" }, { "id": "01a08755-0c87-710f-bbc4-eebd5c092e86", "title": "fun with Symbol#to_proc", "url": "https://blog.thepete.net/blog/2009/04/01/fun-with-symboltoproc/", "published_at": "2009-04-01T00:00:00+00:00" } ] posts Claim your blog
Back to blog.thepete.net
Blog · corpus.blog/blogs/blog.thepete.net/posts

blog.thepete.net

blog.thepete.net

2026

2025

2024

2023

2022

2021

2020

2019

2018

2017

2016

2015

2014

2013

2012

2011

2010

2009