41554 blogs · [ { "id": "01a08c55-14aa-7008-a9ee-bc4cf56c2899", "title": "Pavlov for the Web", "url": "https://thomascothran.tech/2026/04/pavlov-for-the-web/", "published_at": "2026-04-17T00:00:00+00:00" }, { "id": "01a08c55-14aa-7008-a9ee-bc4cf6671d73", "title": "Avoid with-redefs in tests", "url": "https://thomascothran.tech/2025/04/avoid-with-redefs/", "published_at": "2025-04-07T00:00:00+00:00" }, { "id": "01a08c55-14aa-7008-a9ee-bc4cf673b19b", "title": "What do I want from a codebase?", "url": "https://thomascothran.tech/2024/11/what-do-i-want-from-a-codebase/", "published_at": "2024-11-27T00:00:00+00:00" }, { "id": "01a08c55-14aa-7008-a9ee-bc4cf733f9c0", "title": "Bthreads: A Simple and Easy Paradigm for Clojure", "url": "https://thomascothran.tech/2024/10/a-new-paradigm/", "published_at": "2024-10-30T00:00:00+00:00" }, { "id": "01a08c55-14aa-7008-a9ee-bc4cf7931e88", "title": "Behavioral Programming in Clojure", "url": "https://thomascothran.tech/2024/09/in-clojure/", "published_at": "2024-09-24T00:00:00+00:00" }, { "id": "01a08c55-14aa-7008-a9ee-bc4cf816892f", "title": "The Ocelot Game", "url": "https://thomascothran.tech/2024/09/the-ocelot-game/", "published_at": "2024-09-11T00:00:00+00:00" }, { "id": "01a08c55-14aa-7008-a9ee-bc4cf90a6bf0", "title": "Top-Down Imperative Clojure Architectures", "url": "https://thomascothran.tech/2024/07/top-down-imperative-clojure-architectures/", "published_at": "2024-07-22T00:00:00+00:00" }, { "id": "01a08c55-14aa-7008-a9ee-bc4cf948e4ea", "title": "MPAs vs SPAs: The False Dichotomy", "url": "https://thomascothran.tech/2024/01/the-false-dichotomy-mpas-spas/", "published_at": "2024-01-28T00:00:00+00:00" }, { "id": "01a08c55-14aa-7008-a9ee-bc4cf97dcc8a", "title": "Have Clojure UIs Taken the Wrong Path? Part 1", "url": "https://thomascothran.tech/2023/11/clojure-uis-hypermedia-and-rpc-1/", "published_at": "2023-11-24T00:00:00+00:00" }, { "id": "01a08c55-14aa-7008-a9ee-bc4cf99914a0", "title": "The Wrong Kind of Readability", "url": "https://thomascothran.tech/2023/11/readability/", "published_at": "2023-11-05T00:00:00+00:00" }, { "id": "01a08c55-14aa-7008-a9ee-bc4cfa893f22", "title": "The Library Locker - An Antipattern", "url": "https://thomascothran.tech/2023/08/library-locker/", "published_at": "2023-08-20T00:00:00+00:00" }, { "id": "01a08c55-14aa-7008-a9ee-bc4cfb795243", "title": "Brittle Clojure: Creating Legacy Clojure Systems", "url": "https://thomascothran.tech/2023/07/brittle-clojure/", "published_at": "2023-07-23T00:00:00+00:00" }, { "id": "01a08c55-14aa-7008-a9ee-bc4cfc22456d", "title": "Distributed Merges and Continuous Integration", "url": "https://thomascothran.tech/2023/07/distributed-merges/", "published_at": "2023-07-14T00:00:00+00:00" }, { "id": "01a08c55-14aa-7008-a9ee-bc4cfcdb9d62", "title": "Don't Be a Cremonini", "url": "https://thomascothran.tech/2023/07/dont-be-cremonini/", "published_at": "2023-07-09T00:00:00+00:00" }, { "id": "01a08c55-14aa-7008-a9ee-bc4cfd65a5bb", "title": "Haskell's Triangle", "url": "https://thomascothran.tech/2017/07/haskells-triangle/", "published_at": "2017-07-17T00:00:00+00:00" }, { "id": "01a08c55-14aa-7008-a9ee-bc4cfd7d7754", "title": "Recursion Made Simple with Roman Numerals", "url": "https://thomascothran.tech/2017/07/recursion-with-roman-numerals/", "published_at": "2017-07-17T00:00:00+00:00" } ] posts Claim your blog
Back to thomascothran.tech
Blog · corpus.blog/blogs/thomascothran.tech/posts

thomascothran.tech

thomascothran.tech

2026

2025

2024

2023

2017