<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Clojure on Thomas Cothran</title><link>https://thomascothran.tech/categories/clojure/</link><description>Recent content in Clojure on Thomas Cothran</description><generator>Hugo</generator><language>en</language><copyright>2023, Thomas Cothran</copyright><lastBuildDate>Fri, 17 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thomascothran.tech/categories/clojure/index.xml" rel="self" type="application/rss+xml"/><item><title>Pavlov for the Web</title><link>https://thomascothran.tech/2026/04/pavlov-for-the-web/</link><pubDate>Fri, 17 Apr 2026 00:00:00 +0000</pubDate><guid>https://thomascothran.tech/2026/04/pavlov-for-the-web/</guid><description>Pavlov brings behavioral programming to web development</description></item><item><title>Avoid with-redefs in tests</title><link>https://thomascothran.tech/2025/04/avoid-with-redefs/</link><pubDate>Mon, 07 Apr 2025 00:00:00 +0000</pubDate><guid>https://thomascothran.tech/2025/04/avoid-with-redefs/</guid><description>The use of with-redefs in tests indicates a poor understanding of good testing practices</description></item><item><title>Top-Down Imperative Clojure Architectures</title><link>https://thomascothran.tech/2024/07/top-down-imperative-clojure-architectures/</link><pubDate>Mon, 22 Jul 2024 00:00:00 +0000</pubDate><guid>https://thomascothran.tech/2024/07/top-down-imperative-clojure-architectures/</guid><description>&lt;p&gt;When I first became interested in functional programming, a more experienced engineer told me: &amp;ldquo;you know functional programming doesn&amp;rsquo;t really amount to much more than procedural programming.&amp;rdquo; As I insisted on the benefits of &lt;code&gt;map&lt;/code&gt;, &lt;code&gt;filter&lt;/code&gt; and &lt;code&gt;reduce&lt;/code&gt;, he simply shook his head. &amp;ldquo;You&amp;rsquo;re thinking in the small. Go look at a large real-world application.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;It took some time for me to see what he meant. My preferred language, Clojure, is a functional language. But too often it is used to build top-down, imperative applications. This negates the value proposition of functional programming: isolating side effects, local reasoning, and system composition.&lt;/p&gt;</description></item><item><title>MPAs vs SPAs: The False Dichotomy</title><link>https://thomascothran.tech/2024/01/the-false-dichotomy-mpas-spas/</link><pubDate>Sun, 28 Jan 2024 00:00:00 +0000</pubDate><guid>https://thomascothran.tech/2024/01/the-false-dichotomy-mpas-spas/</guid><description>&lt;p&gt;&lt;em&gt;This is the second post in the series &amp;ldquo;Have Clojure UIs Taken the Wrong Path?&amp;rdquo;. The first post is &lt;a href="https://thomascothran.tech/2023/11/clojure-uis-hypermedia-and-rpc-1/"&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;How do we choose between building an application using a hypermedia approach versus the client-side SPA? This post won&amp;rsquo;t answer that question. But it will say how &lt;em&gt;not&lt;/em&gt; to make that choice.&lt;/p&gt;
&lt;p&gt;A common heuristic is the spectrum that stretches between old fashioned &amp;ldquo;Multi Page Apps&amp;rdquo; (MPAs) for basic use cases, to Single Page Applications for rich client interactivity.&lt;/p&gt;</description></item><item><title>Have Clojure UIs Taken the Wrong Path? Part 1</title><link>https://thomascothran.tech/2023/11/clojure-uis-hypermedia-and-rpc-1/</link><pubDate>Fri, 24 Nov 2023 00:00:00 +0000</pubDate><guid>https://thomascothran.tech/2023/11/clojure-uis-hypermedia-and-rpc-1/</guid><description>&lt;p&gt;The Clojure community has focused on React-based solutions for complex front-end clients such as Reagent, Rum, Om, Re-frame, and Fulcro.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;But is this the right choice?&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;</description></item><item><title>The Wrong Kind of Readability</title><link>https://thomascothran.tech/2023/11/readability/</link><pubDate>Sun, 05 Nov 2023 00:00:00 +0000</pubDate><guid>https://thomascothran.tech/2023/11/readability/</guid><description>Andy Hunt and Dave Thomas tell us: &amp;#39;it’s critical that you write code that is readable and easy to reason about.&amp;#39; This seems uncontroversial; it is the rare point on which software engineers typically agree. Or do they?</description></item><item><title>Brittle Clojure: Creating Legacy Clojure Systems</title><link>https://thomascothran.tech/2023/07/brittle-clojure/</link><pubDate>Sun, 23 Jul 2023 00:00:00 +0000</pubDate><guid>https://thomascothran.tech/2023/07/brittle-clojure/</guid><description>Avoid writing brittle Clojure with tactics for flexibility and robustness.</description></item></channel></rss>