Design tokens are fundamental design decisions represented as data. Andreas Kutschmann explains how they work and how to organize them to balance scalability, maintainability and developer experience. more…
Once we've designed our initial data products, Kiran Prakash finishes his article by leading us through the next steps: identifying common patterns, improving the developer experience, and handling governance. more…
Having got an initial data product, Kiran Prakash leads us through the next steps: covering similar uses cases to generalize the data product, determining which domains the products fit into, and considering service level objectives. more…
A very powerful new coding assistance feature made its way into GitHub Copilot at the end of October. This new “multi-file editing” capability expands the scope of AI assistance from small, localized suggestions to larger implementations across multiple files. Birgitta Böckeler tries out this new capability and...
With the recent uptick in tech activity on Bluesky, I've decided that I will start posting there in addition to my current locations. I've also put together my general thoughts on the state of social media, and how I'm using it, now that it's two years since The Muskover. more…
Matthew Foster and John Mikel Amiel Regida finish their account of how they incrementally modernized a mobile application by looking at the results of their work. They achieved a significant shortening of time to new value, and found that changes in the new application could be prepared in about half the time it...
Matthew Foster and John Mikel Amiel Regida dive into the details of incrementally modernizing a legacy mobile application. They look at how to implant the strangler fig into the existing app, setting up bi-directional communication between the new app and the legacy, and ensuring effective regression testing on...
I was interviewed on the Book Overflow podcast about the Refactoring book. We talked about the origins of the book, the relationship between refactoring, testing, and extreme programming, how refactoring is used in the wild, and the role of books and long-form prose today. more…
Alessio Ferri, Tom Coggrave, and Shodhan Sheth complete their article on what they have learned from using GenAI with legacy systems. They describe how GenAI's ability to process unstructured information makes it much easier to build a capability map of a legacy system, tying the capabilities of a system to the...
Decentralized data management requires automation to scale governance effectively. Fitness functions are a powerful automated governance technique my colleagues have applied to data products within the context of a Data Mesh. Since data products serve as the foundational building blocks of a data strategy, ensuring...
Cycle Time is a measure of how long it takes to get a new feature in a software system from idea to running in production. In Agile circles, we try to minimize cycle time. We do this by defining and implementing very small features and minimizing delays in the development process. Although the rough notion of cycle time, and the...
Two decades ago, I posted that I found that the strangler fig plant was an interesting metaphor for the gradual replacement of a legacy system. I didn’t refer to the metaphor since, but meanwhile it grew a life of its own. Other people increasingly referred to the strangler fig approach to modernization, and traffic to that post steadily...
From time to time I take a look at my site analytics to see how much traffic various bits of this site get. When doing this I saw that I continue to get a lot of traffic to the Catalog of Patterns of Enterprise Application Architecture. I put this together not long after writing the book, and it’s rather minimal. Since it still gets traffic I...
There's a lot of discussion about using regulation to restrict the use of AI and other software algorithms. I think that the better regulation would be to ensure that decisions made by software must be explainable. more…
Matteo Vaccari completes his article on testing template-generated HTML, by looking at how to use TDD with pages that make calls to the server. more…
Juntao Qiu's completes his set of data fetching patterns for single-page applications. Prefetching involves fetching data before it's called for in the application flow. Although this can mean data is fetched unnecessarily, it reduces latency should the data be needed. more…
Last week I added a small feature to this website, changing the way it renders footnotes. That prompted me to write this quick note about how I use footnotes, and how that influences the best way to render them. more…