41554 blogs · [ { "id": "01a0e4f1-2c32-71ee-87b2-3109ce7e78a7", "title": "Complexity is fixed only the shape moved", "url": "https://blog.officefloor.net/2026/09/complexity-is-fixed-only-shape-moved.html", "published_at": "2026-09-25T09:32:19+00:00" }, { "id": "01a0d5af-a4de-71f2-97ed-8901ec5d7f45", "title": "What it cost and whether it stayed correct", "url": "https://blog.officefloor.net/2026/09/what-it-cost-and-whether-it-stayed.html", "published_at": "2026-09-22T17:34:20+00:00" }, { "id": "01a0d5af-a4de-71f2-97ed-8901ecfab37f", "title": "How much complexity there is", "url": "https://blog.officefloor.net/2026/09/how-much-complexity-there-is.html", "published_at": "2026-09-22T17:32:56+00:00" }, { "id": "01a0d5af-a4de-71f2-97ed-8901ed0224db", "title": "Where the complexity sits", "url": "https://blog.officefloor.net/2026/09/where-complexity-sits.html", "published_at": "2026-09-22T17:31:16+00:00" }, { "id": "01a0d5af-a4de-71f2-97ed-8901ed834692", "title": "What you must understand to change one rule", "url": "https://blog.officefloor.net/2026/09/what-you-must-understand-to-change-one.html", "published_at": "2026-09-22T17:29:49+00:00" }, { "id": "01a0d5af-a4de-71f2-97ed-8901ee230e02", "title": "How much existing code each rule disturbs", "url": "https://blog.officefloor.net/2026/09/how-much-existing-code-each-rule.html", "published_at": "2026-09-22T17:28:14+00:00" }, { "id": "01a0d5af-a4de-71f2-97ed-8901ee9d1125", "title": "The structural-impact score", "url": "https://blog.officefloor.net/2026/09/the-structural-impact-score.html", "published_at": "2026-09-22T17:26:07+00:00" }, { "id": "01a0d5af-a4de-71f2-97ed-8901ef777eb6", "title": "Cohesion: does a class do one thing", "url": "https://blog.officefloor.net/2026/09/cohesion-does-class-do-one-thing.html", "published_at": "2026-09-22T17:24:31+00:00" }, { "id": "01a0d5af-a4de-71f2-97ed-8901efe28ec7", "title": "The price of distributing", "url": "https://blog.officefloor.net/2026/09/the-price-of-distributing.html", "published_at": "2026-09-22T17:23:05+00:00" }, { "id": "01a0d5af-a4de-71f2-97ed-8901f097433e", "title": "Duplication and boilerplate", "url": "https://blog.officefloor.net/2026/09/duplication-and-boilerplate.html", "published_at": "2026-09-22T17:21:23+00:00" }, { "id": "01a0d5af-a4de-71f2-97ed-8901f14e3a58", "title": "Validity Guards", "url": "https://blog.officefloor.net/2026/09/validity-guards.html", "published_at": "2026-09-22T17:18:35+00:00" }, { "id": "01a0d5af-a4de-71f2-97ed-8901f190eb97", "title": "We asked nicely and it cost 23 percent", "url": "https://blog.officefloor.net/2026/09/we-asked-nicely-and-it-cost-23-percent.html", "published_at": "2026-09-21T23:33:32+00:00" }, { "id": "01a0d5af-a4de-71f2-97ed-8901f28c1fac", "title": "Spending the Cost Function Without Telling It", "url": "https://blog.officefloor.net/2026/09/spending-cost-function-without-telling_0961136879.html", "published_at": "2026-09-21T23:13:37+00:00" }, { "id": "01a0d5af-a4de-71f2-97ed-8901f3435b49", "title": "The decay you cannot see: what we measured and the one thing we will not claim", "url": "https://blog.officefloor.net/2026/09/the-decay-you-cannot-see-what-we.html", "published_at": "2026-09-16T08:03:24+00:00" }, { "id": "01a0d5af-a4de-71f2-97ed-8901f390355a", "title": "The Number the AI Never Saw: We Spent the Change Impact With a Tool", "url": "https://blog.officefloor.net/2026/09/the-number-ai-never-saw-we-spent-change.html", "published_at": "2026-09-13T00:13:33+00:00" }, { "id": "01a0d5af-a4de-71f2-97ed-8901f45a4554", "title": "Spending the Cost Function Without Telling the Agent", "url": "https://blog.officefloor.net/2026/09/spending-cost-function-without-telling.html", "published_at": "2026-09-13T00:11:32+00:00" }, { "id": "01a08751-9bd1-727c-9b13-b0a7a79f454c", "title": "The refactor run halfway", "url": "https://blog.officefloor.net/2026/09/the-refactor-run-halfway.html", "published_at": "2026-09-07T09:11:34+00:00" }, { "id": "01a08751-9bd1-727c-9b13-b0a7a86891a0", "title": "We told the AI about the Change Impact", "url": "https://blog.officefloor.net/2026/09/we-told-ai-about-change-impact.html", "published_at": "2026-09-06T09:42:35+00:00" }, { "id": "01a08751-9bd1-727c-9b13-b0a7a95cab4b", "title": "Telling the Agent the Cost Function", "url": "https://blog.officefloor.net/2026/09/telling-agent-cost-function.html", "published_at": "2026-09-06T03:00:04+00:00" }, { "id": "01a08751-9bd1-727c-9b13-b0a7aa02c355", "title": "I took the metric away", "url": "https://blog.officefloor.net/2026/09/i-took-metric-away.html", "published_at": "2026-09-04T03:48:22+00:00" }, { "id": "01a08751-9bd1-727c-9b13-b0a7aaae4b81", "title": "We Gave the Agent the Metric", "url": "https://blog.officefloor.net/2026/09/we-gave-agent-metric.html", "published_at": "2026-09-02T22:27:11+00:00" }, { "id": "01a08751-9bd1-727c-9b13-b0a7aba7be46", "title": "Give the AI the formula: prompting or architecture?", "url": "https://blog.officefloor.net/2026/08/give-the-ai-the-formula-prompting-or-architecture.html", "published_at": "2026-08-31T00:41:35+00:00" }, { "id": "01a08751-9bd1-727c-9b13-b0a7ac9631e5", "title": "Change Impact in the Wild: A Defect Predictor Undone by File Size", "url": "https://blog.officefloor.net/2026/08/change-impact-in-wild-defect-predictor.html", "published_at": "2026-08-24T17:02:35+00:00" }, { "id": "01a08751-9bd1-727c-9b13-b0a7ad61f247", "title": "We Tested Our Complexity Metric Against Real Bugs. File Size Won.", "url": "https://blog.officefloor.net/2026/08/we-tested-our-complexity-metric-against.html", "published_at": "2026-08-24T16:40:55+00:00" }, { "id": "01a08751-9bd1-727c-9b13-b0a7ae5d6a0b", "title": "The Same Complexity. One Unit or Twenty-Two.", "url": "https://blog.officefloor.net/2026/08/the-same-complexity-one-unit-or-twenty.html", "published_at": "2026-08-23T16:06:28+00:00" }, { "id": "01a08751-9bd1-727c-9b13-b0a7aed50113", "title": "The Cold Reader Understood Spring Better", "url": "https://blog.officefloor.net/2026/08/the-cold-reader-understood-spring-better.html", "published_at": "2026-08-23T15:55:47+00:00" }, { "id": "01a08751-9bd1-727c-9b13-b0a7af0e9426", "title": "Tests Are Not How the AI Gets It Right. They Are How You Find Out It Didn't.", "url": "https://blog.officefloor.net/2026/08/tests-are-not-how-ai-gets-it-right-they.html", "published_at": "2026-08-23T15:46:46+00:00" }, { "id": "01a08751-9bd1-727c-9b13-b0a7b005b90e", "title": "We Showed the Agent Every Test. It Wrote the Same Code.", "url": "https://blog.officefloor.net/2026/08/we-showed-agent-every-test-it-wrote.html", "published_at": "2026-08-23T15:17:14+00:00" }, { "id": "01a08751-9bd1-727c-9b13-b0a7b0148609", "title": "The Test Suite Crashed. The Harness Called It Regression", "url": "https://blog.officefloor.net/2026/08/the-test-suite-crashed-harness-called.html", "published_at": "2026-08-22T12:45:38+00:00" }, { "id": "01a08751-9bd1-727c-9b13-b0a7b041ba10", "title": "Think a Better AI Would Change the Result? The Experiment Is Yours to Run", "url": "https://blog.officefloor.net/2026/08/think-better-ai-would-change-result.html", "published_at": "2026-08-22T02:23:12+00:00" }, { "id": "01a08751-9bd1-727c-9b13-b0a7b0dfc002", "title": "The Metrics, Revisited", "url": "https://blog.officefloor.net/2026/08/the-metrics-revisited.html", "published_at": "2026-08-21T18:47:04+00:00" }, { "id": "01a08751-9bd1-727c-9b13-b0a7b10b5342", "title": "Adding Features Is Easy. Changing Them Is the Test.", "url": "https://blog.officefloor.net/2026/08/adding-features-is-easy-changing-them.html", "published_at": "2026-08-21T18:07:17+00:00" }, { "id": "01a08751-9bd1-727c-9b13-b0a7b162e7c0", "title": "Measuring the Blast Radius of Change", "url": "https://blog.officefloor.net/2026/08/measuring-blast-radius-of-change.html", "published_at": "2026-08-21T17:34:20+00:00" }, { "id": "01a08751-9bd1-727c-9b13-b0a7b16f401f", "title": "Complexity Is Not the Metric. Cohesion Is.", "url": "https://blog.officefloor.net/2026/08/complexity-is-not-metric-cohesion-is.html", "published_at": "2026-08-21T16:57:14+00:00" }, { "id": "01a08751-9bd1-727c-9b13-b0a7b20d5ec5", "title": "Architecture as the Independent Variable, Run 2: The Signal Was Real", "url": "https://blog.officefloor.net/2026/08/architecture-as-independent-variable_02036487085.html", "published_at": "2026-08-21T16:43:17+00:00" }, { "id": "01a08751-9bd1-727c-9b13-b0a7b30a4676", "title": "Why \"Erosion\" Washed Out: The Leaf-Function Trap", "url": "https://blog.officefloor.net/2026/08/why-erosion-washed-out-leaf-function.html", "published_at": "2026-08-21T16:05:23+00:00" }, { "id": "01a08751-9bd1-727c-9b13-b0a7b3623888", "title": "AI graded its own homework", "url": "https://blog.officefloor.net/2026/08/ai-graded-its-own-homework.html", "published_at": "2026-08-10T15:49:17+00:00" }, { "id": "01a08751-9bd1-727c-9b13-b0a7b3e620b7", "title": "God Methods, Small Functions, and Who Gets to Maintain the Code", "url": "https://blog.officefloor.net/2026/08/god-methods-small-functions-and-who.html", "published_at": "2026-08-09T04:28:16+00:00" }, { "id": "01a08751-9bd1-727c-9b13-b0a7b415abc1", "title": "Beyond the Source. When an AI Coding Agent Searches Outside Your Project", "url": "https://blog.officefloor.net/2026/08/beyond-source-when-ai-coding-agent.html", "published_at": "2026-08-08T16:32:32+00:00" }, { "id": "01a08751-9bd1-727c-9b13-b0a7b4464eeb", "title": "Mutation of existing logic showing to cause erosion", "url": "https://blog.officefloor.net/2026/08/mutation-of-existing-logic-showing-to.html", "published_at": "2026-08-07T13:13:39+00:00" }, { "id": "01a08751-9bd1-727c-9b13-b0a7b5094a60", "title": "Improvements to experiment: more checkpoints, mutative checkpoints, blind regression measurements", "url": "https://blog.officefloor.net/2026/08/this-is-between-experiments-post.html", "published_at": "2026-08-06T22:22:59+00:00" }, { "id": "01a0e50a-be47-7106-ba7b-9577be2bb859", "title": "Measuring AI-driven code degradation", "url": "https://blog.officefloor.net/2026/08/measuring-ai-driven-code-degradation.html", "published_at": "2026-08-04T01:01:22+00:00" }, { "id": "01a0e50a-be47-7106-ba7b-9577bf122d3f", "title": "Architecture as the independent variable", "url": "https://blog.officefloor.net/2026/08/architecture-as-independent-variable.html", "published_at": "2026-08-03T17:28:12+00:00" }, { "id": "01a0e50a-be47-7106-ba7b-9577bfe8577c", "title": "Initial findings on multiple chained changes", "url": "https://blog.officefloor.net/2026/07/initial-findings-on-multiple-chained.html", "published_at": "2026-07-30T09:52:32+00:00" }, { "id": "01a0e50a-be47-7106-ba7b-9577c09b667b", "title": "Can a composed function architecture give AI a better map of your code?", "url": "https://blog.officefloor.net/2026/07/can-composed-function-architecture-give.html", "published_at": "2026-07-26T16:15:05+00:00" }, { "id": "01a0e50a-be47-7106-ba7b-9577c190feb1", "title": "PetClinic Converted Again, This Time All The Way To Functions", "url": "https://blog.officefloor.net/2026/07/petclinic-converted-again-this-time-all.html", "published_at": "2026-07-19T09:21:40+00:00" }, { "id": "01a0e50a-be47-7106-ba7b-9577c1bdfecd", "title": "Layers are the symptom of Methods", "url": "https://blog.officefloor.net/2026/07/layers-are-symptom-of-methods.html", "published_at": "2026-07-10T14:49:31+00:00" }, { "id": "01a0e50a-be47-7106-ba7b-9577c1d4b42e", "title": "Whoever Sets the Default Sets the Architecture", "url": "https://blog.officefloor.net/2026/06/whoever-sets-default-sets-architecture.html", "published_at": "2026-06-29T03:43:53+00:00" }, { "id": "01a0e50a-be47-7106-ba7b-9577c21dcd53", "title": "Will AI keep us stuck in 2020 architectures?", "url": "https://blog.officefloor.net/2026/06/will-ai-keep-us-stuck-in-2020.html", "published_at": "2026-06-28T05:55:26+00:00" }, { "id": "01a0e50a-be47-7106-ba7b-9577c26d7dcb", "title": "OfficeFloor v4: from one graphical file to one YAML file per endpoint", "url": "https://blog.officefloor.net/2026/06/officefloor-v4-from-one-graphical-file.html", "published_at": "2026-06-27T16:16:01+00:00" }, { "id": "01a0e51c-cf1f-711d-a956-4cd9be8560a5", "title": "Performance Improvements for TechEmpower Round 20", "url": "https://blog.officefloor.net/2021/01/performance-improvements.html", "published_at": "2021-01-06T03:09:00+00:00" }, { "id": "01a0e51c-cf1f-711d-a956-4cd9bf358c17", "title": "OfficeFloor: going beyond Dependency Injection", "url": "https://blog.officefloor.net/2020/11/officefloor-going-beyond-dependency.html", "published_at": "2020-11-15T07:20:00+00:00" }, { "id": "01a0e51c-cf1f-711d-a956-4cd9c0107eb6", "title": "Migrating Spring Application to OfficeFloor", "url": "https://blog.officefloor.net/2020/03/migrating-spring-application-to.html", "published_at": "2020-03-29T01:30:00+00:00" }, { "id": "01a0e51c-cf1f-711d-a956-4cd9c07727f5", "title": "DDD Perth 2019 Presentation", "url": "https://blog.officefloor.net/2020/02/ddd-perth-2019-presentation.html", "published_at": "2020-02-11T09:02:00+00:00" }, { "id": "01a0e51c-cf1f-711d-a956-4cd9c0f381a9", "title": "Monad with IoCC provides Process/Thread model", "url": "https://blog.officefloor.net/2020/01/monad-with-iocc-provides-processthread.html", "published_at": "2020-01-26T02:21:00+00:00" }, { "id": "01a0e51c-cf1f-711d-a956-4cd9c1486eae", "title": "compose Cats, Reactor, ZIO, ... Effects", "url": "https://blog.officefloor.net/2020/01/compose-cats-reactor-zio-effects.html", "published_at": "2020-01-14T19:30:00+00:00" }, { "id": "01a0e51c-cf1f-711d-a956-4cd9c232e657", "title": "First-Class Module", "url": "https://blog.officefloor.net/2019/12/first-class-module-type-system-for.html", "published_at": "2019-12-26T02:27:00+00:00" }, { "id": "01a0e51c-cf1f-711d-a956-4cd9c2b201f1", "title": "First-Class Procedure Type System for Composition", "url": "https://blog.officefloor.net/2019/11/first-class-procedure-type-system-for.html", "published_at": "2019-11-21T15:28:00+00:00" }, { "id": "01a0e51c-cf1f-711d-a956-4cd9c344f7ba", "title": "OfficeFloor IntelliJ Plugin", "url": "https://blog.officefloor.net/2019/10/officefloor-intellij-plugin.html", "published_at": "2019-10-16T04:34:00+00:00" }, { "id": "01a0e51c-cf1f-711d-a956-4cd9c388b335", "title": "Inverting Functions: Effect Thread binding for Stateless Actors", "url": "https://blog.officefloor.net/2019/09/inverting-functions-effect-thread.html", "published_at": "2019-09-10T04:23:00+00:00" }, { "id": "01a0e51c-cf1f-711d-a956-4cd9c415f73b", "title": "What is The OO Matrix?", "url": "https://blog.officefloor.net/2019/08/what-is-oo-matrix.html", "published_at": "2019-08-08T23:29:00+00:00" }, { "id": "01a0e51c-cf1f-711d-a956-4cd9c48cff58", "title": "DDD Perth 2019 Preview", "url": "https://blog.officefloor.net/2019/07/ddd-perth-2019-preview.html", "published_at": "2019-07-01T15:37:00+00:00" }, { "id": "01a0e51c-cf1f-711d-a956-4cd9c4b54fd3", "title": "Local Microservices: First-Class Procedures", "url": "https://blog.officefloor.net/2019/06/local-microservices-first-class.html", "published_at": "2019-06-19T05:13:00+00:00" }, { "id": "01a0e51c-cf1f-711d-a956-4cd9c586e9e7", "title": "Local Microservices: Breaking up the Jigsaw", "url": "https://blog.officefloor.net/2019/06/local-microservices-breaking-up-jigsaw.html", "published_at": "2019-06-07T05:05:00+00:00" }, { "id": "01a0e51c-cf1f-711d-a956-4cd9c6635bb7", "title": "Local Microservices: Object Orientation Behaviour Coupling Problem", "url": "https://blog.officefloor.net/2019/05/local-microservices-object-orientation.html", "published_at": "2019-05-29T03:53:00+00:00" }, { "id": "01a0e51c-cf1f-711d-a956-4cd9c761d4ca", "title": "Function IoC for First Class Procedure", "url": "https://blog.officefloor.net/2019/04/function-ioc-for-first-class-procedure.html", "published_at": "2019-04-29T02:16:00+00:00" }, { "id": "01a0e51c-cf1f-711d-a956-4cd9c8536ed3", "title": "OO Functional Imperative Reactive weaved together", "url": "https://blog.officefloor.net/2019/04/oo-functional-imperative-reactive.html", "published_at": "2019-04-28T05:51:00+00:00" }, { "id": "01a0e51c-cf1f-711d-a956-4cd9c9457d36", "title": "IT \"Floor Plan\"", "url": "https://blog.officefloor.net/2019/04/it-floor-plan.html", "published_at": "2019-04-08T11:16:00+00:00" }, { "id": "01a0e51c-cf1f-711d-a956-4cd9c97385df", "title": "Perils of opinionated frameworks, like Spring Boot. Inverting for opinionated code.", "url": "https://blog.officefloor.net/2019/03/perils-of-opinionated-frameworks-like.html", "published_at": "2019-03-11T09:04:00+00:00" }, { "id": "01a0e51c-cf1f-711d-a956-4cd9c980ea7f", "title": "Inversion of Control (explained non-technically)", "url": "https://blog.officefloor.net/2019/03/inversion-of-control-explained-non.html", "published_at": "2019-03-07T05:39:00+00:00" }, { "id": "01a0e51c-cf1f-711d-a956-4cd9ca364e0b", "title": "Reactive frameworks \"rob Peter to pay Paul\"! Avoiding the problem with Dependency Contexts", "url": "https://blog.officefloor.net/2019/03/functional-languages-and-reactive.html", "published_at": "2019-03-04T09:43:00+00:00" }, { "id": "01a0e51c-cf1f-711d-a956-4cd9cadb9865", "title": "Is Spring Reactive already obsolete? Inversion of Thread Coupling", "url": "https://blog.officefloor.net/2019/02/is-spring-reactive-already-obsolete.html", "published_at": "2019-02-26T07:01:00+00:00" }, { "id": "01a0e51c-cf1f-711d-a956-4cd9cae1d528", "title": "Inversion of (Coupling) Control", "url": "https://blog.officefloor.net/2019/02/inversion-of-coupling-control.html", "published_at": "2019-02-26T04:36:00+00:00" } ] posts Claim your blog
Back to blog.officefloor.net
Blog · corpus.blog/blogs/blog.officefloor.net/posts

blog.officefloor.net

blog.officefloor.net

2026

2021

2020

2019