What do I want from a codebase?

Carson Gross’ “Codin’ Dirty” essay is designed to provoke controversy. Although I will critique the essay, I want to make it clear that I am (on this Thanksgiving eve) grateful for Carson Gross’s work. Gross writes: I’m … not trying to convince you to code dirty with this essay. Rather, I want to show that it is possible to write reasonably successful software this way and, I hope, offer some balance around software methodology discussions. ...

2024-11-27 · 9 min · 1728 words · Thomas Cothran

MPAs vs SPAs: The False Dichotomy

This is the second post in the series “Have Clojure UIs Taken the Wrong Path?”. The first post is here. How do we choose between building an application using a hypermedia approach versus the client-side SPA? This post won’t answer that question. But it will say how not to make that choice. A common heuristic is the spectrum that stretches between old fashioned “Multi Page Apps” (MPAs) for basic use cases, to Single Page Applications for rich client interactivity. ...

2024-01-28 · 9 min · 1818 words · Thomas Cothran

Have Clojure UIs Taken the Wrong Path? Part 1

The Clojure community has focused on React-based solutions for complex front-end clients such as Reagent, Rum, Om, Re-frame, and Fulcro. For all their differences, they follow a very similar architecture, making heavy use of client-side state and using RPC for client-server communication. We will call this the “React+” approach. But is this the right choice? I will suggest the answer may be negative. My suspicion is that as web UI libraries advance, the problems they solve are not essential. Rather, the problems are accidental; they are generated by the React+ architecture. ...

2023-11-24 · 9 min · 1780 words · Thomas Cothran

Distributed Merges and Continuous Integration

Among DORA’s more controversial findings is that trunk based development is superior to feature branching. Teams achieve higher levels of software delivery and operational performance (delivery speed, stability, and availability) if they follow these practices: Have three or fewer active branches in the application’s code repository. Merge branches to trunk at least once a day. Don’t have code freezes and don’t have integration phases. Since we know not to be Cremoninis, we won’t be distracted by whether trunk-based development meets the HN trendiness standard, and we’ll be skeptical of anectdotal appeals to experience ...

2023-07-14 · 5 min · 885 words · Thomas Cothran