56,966 blogs · [ { "id": "01a0875b-9bf1-7014-9ef4-6ef68820286d", "title": "Even less Human in the Loop", "url": "https://caines.ca/posts/2026-09-08-even-less-human-in-the-loop/", "published_at": "2026-09-08T00:00:00+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef68880b855", "title": "Parallelizability in Agentic Development", "url": "https://caines.ca/posts/2026-08-22-parallelizability-in-agentic-development/", "published_at": "2026-08-22T00:00:00+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef689477ee8", "title": "Return of the Spec", "url": "https://caines.ca/posts/2026-08-15-return-of-the-spec/", "published_at": "2026-08-15T00:00:00+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef68962d0d9", "title": "Agentic Bug Fixing: /undefect", "url": "https://caines.ca/posts/2026-06-17-agentic-bug-fixing-undefect/", "published_at": "2026-06-17T00:00:00+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef689af369a", "title": "Agentic Refactoring: /defrag", "url": "https://caines.ca/posts/2026-03-10-agentic-refactoring-defrag/", "published_at": "2026-03-10T00:00:00+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef68aa10990", "title": "Context Management: Why your AI Keeps Forgetting What You Said", "url": "https://caines.ca/posts/2026-02-12-managing-context/", "published_at": "2026-02-21T00:00:00+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef68b8c5136", "title": "Agentically Ambitious", "url": "https://caines.ca/posts/2026-02-09-agentically-ambitious/", "published_at": "2026-02-09T00:00:00+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef68bdb0061", "title": "Vibe Reviewing", "url": "https://caines.ca/posts/2026-01-26-vibe-reviewing/", "published_at": "2026-01-26T00:00:00+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef68be7a94b", "title": "The Reliable Org", "url": "https://caines.ca/posts/2024-10-14-the-reliable-org/", "published_at": "2024-10-14T08:00:00+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef68c4fe1af", "title": "Breaking It Down, Part IV", "url": "https://caines.ca/posts/2022-05-23-breaking-it-down-part-4/", "published_at": "2022-05-23T12:07:00+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef68cdb441c", "title": "Breaking It Down, Part III", "url": "https://caines.ca/posts/2022-05-9-breaking-it-down-part-3/", "published_at": "2022-05-19T15:46:00+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef68cfaa4b9", "title": "Breaking It Down, Part II", "url": "https://caines.ca/posts/2022-05-9-breaking-it-down-part-2/", "published_at": "2022-05-09T08:15:06+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef68d8cbdf4", "title": "Breaking It Down, Part I", "url": "https://caines.ca/posts/2022-04-30-breaking-it-down-part-1/", "published_at": "2022-04-30T11:51:06+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef68e83a978", "title": "Hey that seems longer than 2 weeks", "url": "https://caines.ca/posts/2022-04-28-hey-that-seems-longer-than-two-weeks/", "published_at": "2022-04-28T11:50:06+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef68f69a31b", "title": "Sometimes TDD", "url": "https://caines.ca/posts/2022-01-19-sometimes-tdd/", "published_at": "2022-01-19T11:50:06+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef68fb3476f", "title": "Block-Testing", "url": "https://caines.ca/posts/2020-11-01-block-testing/", "published_at": "2020-11-02T02:45:14+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef6903e0eda", "title": "The Downward Spiral of Test-Later Automated Testing", "url": "https://caines.ca/posts/2020-07-25-the-downward-spiral-of-test-later-automated-testing/", "published_at": "2020-07-25T15:29:55+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef690b9dcbf", "title": "The Trap of Solution-First Thinking", "url": "https://caines.ca/posts/2019-02-24-the-trap-of-solution-first-thinking/", "published_at": "2019-02-24T16:34:04+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef6919ea552", "title": "A Javascript to Typescript Conversion Case Study", "url": "https://caines.ca/posts/2018-12-11-a-javascript-to-typescript-conversion-case-study/", "published_at": "2018-12-11T15:01:43+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef6924ab325", "title": "Dynamic-Typing for Static-Typists", "url": "https://caines.ca/posts/2018-11-05-dynamic-typing-for-static-typists/", "published_at": "2018-11-05T17:54:37+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef69333bc42", "title": "Effective Technical Improvement", "url": "https://caines.ca/posts/2018-10-14-effective-technical-improvement/", "published_at": "2018-10-14T20:23:13+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef6942a2990", "title": "Cross-functionality is a Secret Weapon for Product Development Teams", "url": "https://caines.ca/posts/2018-10-03-cross-functionality-is-a-secret-weapon-for-product-development-teams/", "published_at": "2018-10-03T22:14:59+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef6944f765d", "title": "No Heroes in Tech Debt", "url": "https://caines.ca/posts/2018-09-20-no-heroes-in-tech-debt/", "published_at": "2018-09-20T13:04:35+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef694a10259", "title": "The Mathematics Behind Experience", "url": "https://caines.ca/posts/2018-07-15-the-mathematics-behind-experience/", "published_at": "2018-07-15T23:41:53+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef6952dfd5c", "title": "Zero Defect Policy", "url": "https://caines.ca/posts/2018-03-27-zero-defect-policy/", "published_at": "2018-03-28T00:32:11+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef695e252e1", "title": "Enterprise Iffing 3.0 for 10x Rockstar Programmers", "url": "https://caines.ca/posts/2017-10-27-enterprise-iffing-3-dot-0-for-10x-rockstar-programmers/", "published_at": "2017-10-27T14:57:02+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef695fd6b07", "title": "Working Without Estimates", "url": "https://caines.ca/posts/2017-10-21-working-without-estimates/", "published_at": "2017-10-22T01:17:00+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef696855e03", "title": "Why does Bad Waterfall Happen to Good People?", "url": "https://caines.ca/posts/2017-07-20-why-does-bad-waterfall-happen-to-good-people/", "published_at": "2017-07-20T22:35:31+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef6968bcb3a", "title": "So You Want to be a More Senior Engineer?", "url": "https://caines.ca/posts/2017-06-04-so-you-want-to-be-a-more-senior-engineer/", "published_at": "2017-06-04T17:22:43+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef696e8b9d8", "title": "The All-or-Nothing Principle", "url": "https://caines.ca/posts/2017-04-09-the-all-or-nothing-principle/", "published_at": "2017-04-09T16:07:00+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef6975e0ed9", "title": "So You Want to be a Manager?", "url": "https://caines.ca/posts/2017-03-06-so-you-want-to-be-a-manager/", "published_at": "2017-03-06T19:56:05+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef6978788c2", "title": "The Quality Feedback Loop", "url": "https://caines.ca/posts/2017-01-04-the-quality-feedback-loop/", "published_at": "2017-01-15T05:22:07+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef697f0167a", "title": "The Atomic Team Pattern", "url": "https://caines.ca/posts/2016-11-16-the-atomic-team-pattern/", "published_at": "2016-11-16T18:11:16+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef698b72a73", "title": "We're in the Stone Age of Software Engineering Management", "url": "https://caines.ca/posts/2015-06-14-were-in-the-stone-age-of-software-engineering-management/", "published_at": "2015-06-15T03:20:37+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef69908f773", "title": "Reclaiming Value from Bugs and Outages: Thoughts on Post-Mortems", "url": "https://caines.ca/posts/2015-03-08-reclaiming-value-from-bugs-and-outages/", "published_at": "2015-03-08T16:12:23+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef6996d1d4b", "title": "Continuous Testing", "url": "https://caines.ca/posts/2015-01-29-continuous-testing/", "published_at": "2015-01-30T04:40:51+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef69a63cedd", "title": "I Don't Miss The Sprint", "url": "https://caines.ca/posts/2014-12-02-i-dont-miss-the-sprint/", "published_at": "2014-12-02T19:00:23+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef69af9c87b", "title": "Production-Quality Node.js Web Apps : Part III, Preventing Defects", "url": "https://caines.ca/posts/2014-06-22-production-quality-node-dot-js-web-apps-part-iii/", "published_at": "2014-06-23T05:56:10+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef69b784a2d", "title": "Production-Quality Node.js Web Apps : Part II, Detecting Defects", "url": "https://caines.ca/posts/2014-06-02-production-quality-node-dot-js-web-apps-part-ii/", "published_at": "2014-06-03T00:41:31+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef69c75c5a6", "title": "Production-Quality Node.js Web Apps : Part I, The Basics", "url": "https://caines.ca/posts/2014-06-02-production-quality-node-dot-js-web-apps-part-i/", "published_at": "2014-06-01T17:09:00+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef69cecc0af", "title": "In Defence Of The Office", "url": "https://caines.ca/posts/2014-06-02-in-defence-of-the-office/", "published_at": "2014-01-11T22:51:15+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef69d7c9e6e", "title": "You probably don’t need to version your web API.", "url": "https://caines.ca/posts/2014-06-02-you-probably-dont-need-to-version-your-web-api/", "published_at": "2013-09-14T01:47:31+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef69e1f54f8", "title": "My Favourite New Ility", "url": "https://caines.ca/posts/2014-06-02-my-favourite-new-ility/", "published_at": "2013-06-10T04:21:46+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef69eb811db", "title": "A Requiem for a Team", "url": "https://caines.ca/posts/2014-06-02-a-requiem-for-a-team/", "published_at": "2013-05-08T04:27:20+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef69f6287d9", "title": "So I wrote a JSON API Framework and the Framework was the Least Interesting Part", "url": "https://caines.ca/posts/2014-06-02-so-i-wrote-a-json-api-framework-and-the-framework-was-the-least-interesting-part/", "published_at": "2013-04-30T04:45:09+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef6a05b55ab", "title": "3 Terrible Anti-patterns for Error-Handling in 'REST' APIs:", "url": "https://caines.ca/posts/2014-06-02-3-terrible-anti-patterns-for-error-handling-in-rest-apis/", "published_at": "2013-04-22T05:22:07+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef6a148b0d8", "title": "The Node.js Community is Quietly Changing the Face of Open Source", "url": "https://caines.ca/posts/2014-06-03-the-node-dot-js-community-is-quietly-changing-the-face-of-open-source/", "published_at": "2013-04-13T13:46:06+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef6a1c8e340", "title": "Release-ophobia", "url": "https://caines.ca/posts/2014-06-03-release-ophobia/", "published_at": "2013-03-16T14:33:09+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef6a2686067", "title": "Your Team Probably Doesn't have the Same DVCS Requirements as Linus", "url": "https://caines.ca/posts/2014-06-03-your-team-probably-doesnt-have-the-same-dvcs-requirements-as-linus/", "published_at": "2012-01-03T14:43:58+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef6a3478fb8", "title": "Agile: The Good Parts", "url": "https://caines.ca/posts/2014-06-03-yoagile-the-good-parts/", "published_at": "2011-09-14T14:51:37+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef6a3938c45", "title": "Quality is the Constraint", "url": "https://caines.ca/posts/2014-06-03-quality-is-the-constraint/", "published_at": "2010-12-05T22:33:50+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef6a3e1007d", "title": "The Lost Art of Prototyping", "url": "https://caines.ca/posts/2014-06-03-the-lost-art-of-prototyping/", "published_at": "2009-12-27T00:19:01+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef6a4bac457", "title": "The Future-Proofing Trap", "url": "https://caines.ca/posts/2014-06-03-the-future-proofing-trap/", "published_at": "2009-12-21T00:27:28+00:00" }, { "id": "01a0875b-9bf1-7014-9ef4-6ef6a57b1a55", "title": "Code Slower", "url": "https://caines.ca/posts/2014-06-03-code-slower/", "published_at": "2009-12-14T00:32:30+00:00" } ] posts Claim your blog
Back to caines.ca
Blog · corpus.blog/blogs/caines.ca/posts

caines.ca

caines.ca

2026

2024

2022

2020

2019

2018

2017

2016

2015

2014

2013

2012

2011

2010

2009