# Blogs

**URL:** https://clojureverse.org/c/learning-resources/blogs/42.md

[Latest](https://clojureverse.org/latest.md) · [Categories](https://clojureverse.org/categories.md) · [Tags](https://clojureverse.org/tags.md)

---

## [About the Blogs category](https://clojureverse.org/t/about-the-blogs-category/654)

<div class="topic-metadata">

**Author:** [@plexus](https://clojureverse.org/u/plexus)\
**Replies:** 0\
**Last updated:** [November 5, 2017, 4:24pm UTC](https://clojureverse.org/t/about-the-blogs-category/654 "2017-11-05T16:24:13Z")

</div>

This is the place to announce your blog, share blog posts, or talk about blogging.

---

## [The power of the :deps alias](https://clojureverse.org/t/the-power-of-the-deps-alias/14606)

<div class="topic-metadata">

**Author:** [@seancorfield](https://clojureverse.org/u/seancorfield)\
**Replies:** 0\
**Last updated:** [August 10, 2025, 6:16pm UTC](https://clojureverse.org/t/the-power-of-the-deps-alias/14606 "2025-08-10T18:16:27Z")

</div>

Maybe you’ve seen clojure -X:deps tree? What else can -X:deps do for you? It’s all built into the Clojure CLI: An Architect’s View: The power of the :deps alias

---

## [End-to-end tests in Clojure with Etaoin and Testcontainers](https://clojureverse.org/t/end-to-end-tests-in-clojure-with-etaoin-and-testcontainers/11165)

<div class="topic-metadata">

**Author:** [@abogoyavlensky](https://clojureverse.org/u/abogoyavlensky)\
**Replies:** 0\
**Last updated:** [January 25, 2025, 2:10am UTC](https://clojureverse.org/t/end-to-end-tests-in-clojure-with-etaoin-and-testcontainers/11165 "2025-01-25T02:10:24Z")

</div>

---

## [Behavioral Programming in Clojure](https://clojureverse.org/t/behavioral-programming-in-clojure/10956)

<div class="topic-metadata">

**Author:** [@thomascothran](https://clojureverse.org/u/thomascothran)\
**Replies:** 1\
**Last updated:** [October 7, 2024, 4:06am UTC](https://clojureverse.org/t/behavioral-programming-in-clojure/10956 "2024-10-07T04:06:56Z")

</div>

Behavioral programming is a relatively new programming paradigm pioneered by David Harel, the creator statecharts. It has very solid theoretical foundations, and lends itself to formal proofs. But it also is intended to …

---

## [Top-Down, Imperative Clojure Architectures](https://clojureverse.org/t/top-down-imperative-clojure-architectures/10844)

<div class="topic-metadata">

**Author:** [@thomascothran](https://clojureverse.org/u/thomascothran)\
**Replies:** 6\
**Last updated:** [August 1, 2024, 1:15pm UTC](https://clojureverse.org/t/top-down-imperative-clojure-architectures/10844 "2024-08-01T13:15:23Z")

</div>

I’ve written an article on the problem with imperative-style architectures in Clojure. A preview: When I first became interested in functional programming, a more experienced engineer told me: “you know functional pro…

---

## [New Blog Post: Lisp's grandfather paradox](https://clojureverse.org/t/new-blog-post-lisps-grandfather-paradox/10861)

<div class="topic-metadata">

**Author:** [@Daniel\_Szmulewicz](https://clojureverse.org/u/Daniel_Szmulewicz)\
**Replies:** 0\
**Last updated:** [July 30, 2024, 5:38pm UTC](https://clojureverse.org/t/new-blog-post-lisps-grandfather-paradox/10861 "2024-07-30T17:38:17Z")

</div>

Can we leverage Lisp to build an intuition about mathematical theories? I think so. If we translate the formulas of a mathematical system in Lisp code, we gain in at least two ways: 1, Readability: S-expressions are mor…

---

## [Deploying a full-stack Clojure app with Kamal on a single server](https://clojureverse.org/t/deploying-a-full-stack-clojure-app-with-kamal-on-a-single-server/10756)

<div class="topic-metadata">

**Author:** [@abogoyavlensky](https://clojureverse.org/u/abogoyavlensky)\
**Replies:** 0\
**Last updated:** [May 29, 2024, 11:12pm UTC](https://clojureverse.org/t/deploying-a-full-stack-clojure-app-with-kamal-on-a-single-server/10756 "2024-05-29T23:12:43Z")

</div>

---

## [Clojure: managing throughput with virtual threads](https://clojureverse.org/t/clojure-managing-throughput-with-virtual-threads/10720)

<div class="topic-metadata">

**Author:** [@andersmurphy](https://clojureverse.org/u/andersmurphy)\
**Replies:** 0\
**Last updated:** [May 6, 2024, 10:32am UTC](https://clojureverse.org/t/clojure-managing-throughput-with-virtual-threads/10720 "2024-05-06T10:32:56Z")

</div>

Wrote this blog post over the weekend. Virtual threads are actualy quite fun to work with. I’m using CompletionService to implement unordered paralelism and Semaphore to implement token bucket rate limiting. So far it’…

---

## [Signals vs Streams](https://clojureverse.org/t/signals-vs-streams/9840)

<div class="topic-metadata">

**Author:** [@dustingetz](https://clojureverse.org/u/dustingetz)\
**Replies:** 6\
**Last updated:** [July 22, 2023, 7:21pm UTC](https://clojureverse.org/t/signals-vs-streams/9840 "2023-07-22T19:21:32Z")

</div>

Blog post - Signals vs Streams I actually wrote this for HN but thought it might make a good discussion here. Tons of stuff didn’t make the cut, such as discussion of discrete/continuous mental models, how to convert be…

---

## [Found this juxt/xtdb blog on repl + minecraft](https://clojureverse.org/t/found-this-juxt-xtdb-blog-on-repl-minecraft/9359)

<div class="topic-metadata">

**Author:** [@magnus0re](https://clojureverse.org/u/magnus0re)\
**Replies:** 0\
**Last updated:** [September 16, 2022, 8:01pm UTC](https://clojureverse.org/t/found-this-juxt-xtdb-blog-on-repl-minecraft/9359 "2022-09-16T20:01:22Z")

</div>

Didn’t see this one on here from before, so I though I should share it: JUXT Blog - REPL Driven Minecraft I’m having fun reading it. Quick, simple, to the point, just a bit lacking in the conclusion…

---

## [A hydrated SPA architecture using Rum](https://clojureverse.org/t/a-hydrated-spa-architecture-using-rum/8544)

<div class="topic-metadata">

**Author:** [@simongray](https://clojureverse.org/u/simongray)\
**Replies:** 1\
**Last updated:** [January 23, 2022, 5:30pm UTC](https://clojureverse.org/t/a-hydrated-spa-architecture-using-rum/8544 "2022-01-23T17:30:01Z")

</div>

I recently implemented a “hydrated” single-page application for the first time using the excellent Rum library, so I thought other people doing frontend web development might appreciate reading a little about how it was …

---

## [Some re-frame patterns for composability](https://clojureverse.org/t/some-re-frame-patterns-for-composability/8515)

<div class="topic-metadata">

**Author:** [@vvvvalvalval](https://clojureverse.org/u/vvvvalvalval)\
**Replies:** 1\
**Last updated:** [January 15, 2022, 4:42am UTC](https://clojureverse.org/t/some-re-frame-patterns-for-composability/8515 "2022-01-15T04:42:49Z")

</div>

https://vvvvalvalval.github.io/posts/some-re-frame-patterns-for-composability.html

---

## [An introduction to handling nested data with Specter](https://clojureverse.org/t/an-introduction-to-handling-nested-data-with-specter/8456)

<div class="topic-metadata">

**Author:** [@Futurile](https://clojureverse.org/u/Futurile)\
**Replies:** 2\
**Last updated:** [January 3, 2022, 7:03am UTC](https://clojureverse.org/t/an-introduction-to-handling-nested-data-with-specter/8456 "2022-01-03T07:03:55Z")

</div>

Want to be a :mage: when handling nested data? Specter is a library for Clojure/ClojureScript that makes it simple to navigate through and change nested data. It’s a ‘swiss army knife’ for handling complex data structur…

---

## [Dependency injection in Clojure webapps](https://clojureverse.org/t/dependency-injection-in-clojure-webapps/8108)

<div class="topic-metadata">

**Author:** [@slipset](https://clojureverse.org/u/slipset)\
**Replies:** 1\
**Last updated:** [September 11, 2021, 9:28pm UTC](https://clojureverse.org/t/dependency-injection-in-clojure-webapps/8108 "2021-09-11T21:28:18Z")

</div>

I’m writing a series which could be seen as a critique of Stuart Sierras Component system, which it is not. https://slipset.github.io/posts/dependency-injection-perhaps https://slipset.github.io/posts/config The next …

---

## [The Classpath is a Lie](https://clojureverse.org/t/the-classpath-is-a-lie/8093)

<div class="topic-metadata">

**Author:** [@plexus](https://clojureverse.org/u/plexus)\
**Replies:** 5\
**Last updated:** [August 30, 2021, 8:41am UTC](https://clojureverse.org/t/the-classpath-is-a-lie/8093 "2021-08-30T08:41:42Z")

</div>

Three years ago I wrote here about some frustrations and questions I had when trying to deal with the classpath and class loaders. Back in May @Daniel\_Szmulewicz blogged about this topic, finally answering a question …

---

## [Down the rabbit hole with Clojure, defrecord, and macros](https://clojureverse.org/t/down-the-rabbit-hole-with-clojure-defrecord-and-macros/8060)

<div class="topic-metadata">

**Author:** [@hlship](https://clojureverse.org/u/hlship)\
**Replies:** 3\
**Last updated:** [August 23, 2021, 8:53pm UTC](https://clojureverse.org/t/down-the-rabbit-hole-with-clojure-defrecord-and-macros/8060 "2021-08-23T20:53:19Z")

</div>

I’ve been trying to get back in the habit of blogging about my Clojure development experience more; here’s a little article about performance optimization at scale I put together.

---

## [Performance comparison of Clojurescript date/time libraries](https://clojureverse.org/t/performance-comparison-of-clojurescript-date-time-libraries/8046)

<div class="topic-metadata">

**Author:** [@henry\_w](https://clojureverse.org/u/henry_w)\
**Replies:** 0\
**Last updated:** [August 16, 2021, 9:40am UTC](https://clojureverse.org/t/performance-comparison-of-clojurescript-date-time-libraries/8046 "2021-08-16T09:40:39Z")

</div>

In this post I am compare the performance of two Clojurescript date-time libraries, in the context of a typical single-page web application. The main take-away I would hope readers get from this is that that cljc.java…

---

## [Jive for Artisanal Software](https://clojureverse.org/t/jive-for-artisanal-software/7748)

<div class="topic-metadata">

**Author:** [@den](https://clojureverse.org/u/den)\
**Replies:** 8\
**Last updated:** [June 22, 2021, 5:22am UTC](https://clojureverse.org/t/jive-for-artisanal-software/7748 "2021-06-22T05:22:34Z")

</div>

Hi everyone! I wrote a blogpost about an architecture where UI code is server-rendered but still web-based. This enables native backends with the reach of web. Give it a read and share your thoughts! https://kalavox.med…

---

## [PF4J and Clojure](https://clojureverse.org/t/pf4j-and-clojure/7483)

<div class="topic-metadata">

**Author:** [@andreyorst](https://clojureverse.org/u/andreyorst)\
**Replies:** 0\
**Last updated:** [April 10, 2021, 3:25pm UTC](https://clojureverse.org/t/pf4j-and-clojure/7483 "2021-04-10T15:25:59Z")

</div>

Hi everyone! Recently I’ve needed to figure out how to use PF4J library from Clojure, and it was not very straightforward in some aspects. There were almost no information on using PF4J from Clojure, besides one or two…

---

## [My Journey To Understanding Function Composition](https://clojureverse.org/t/my-journey-to-understanding-function-composition/7329)

<div class="topic-metadata">

**Author:** [@savo](https://clojureverse.org/u/savo)\
**Replies:** 0\
**Last updated:** [March 9, 2021, 11:05pm UTC](https://clojureverse.org/t/my-journey-to-understanding-function-composition/7329 "2021-03-09T23:05:57Z")

</div>

---

## [Re-Writing an OpenConnect VPN Connect script in Babashka](https://clojureverse.org/t/re-writing-an-openconnect-vpn-connect-script-in-babashka/7310)

<div class="topic-metadata">

**Author:** [@Webdev\_Tory](https://clojureverse.org/u/Webdev_Tory)\
**Replies:** 0\
**Last updated:** [March 6, 2021, 5:37pm UTC](https://clojureverse.org/t/re-writing-an-openconnect-vpn-connect-script-in-babashka/7310 "2021-03-06T17:37:17Z")

</div>

---

## [Wrapper-free Firebase starter project](https://clojureverse.org/t/wrapper-free-firebase-starter-project/7236)

<div class="topic-metadata">

**Author:** [@henry\_w](https://clojureverse.org/u/henry_w)\
**Replies:** 1\
**Last updated:** [February 22, 2021, 1:27pm UTC](https://clojureverse.org/t/wrapper-free-firebase-starter-project/7236 "2021-02-22T13:27:02Z")

</div>

I made this small project https://github.com/henryw374/firerebase-clojurescript-todo-list because I couldn’t find a basic getting started guide for cljs+firebase on the web. What I did find was wrapper libraries that I w…

---

## [Is this sentence a question?](https://clojureverse.org/t/is-this-sentence-a-question/6889)

<div class="topic-metadata">

**Author:** [@Daniel\_Szmulewicz](https://clojureverse.org/u/Daniel_Szmulewicz)\
**Replies:** 1\
**Last updated:** [December 8, 2020, 10:35pm UTC](https://clojureverse.org/t/is-this-sentence-a-question/6889 "2020-12-08T22:35:42Z")

</div>

Part of Speech tagging (PoS) is a way to solve this type of problem. Stanford’s coreNLP returns specialized data structures with a Java API. However, their string representation is a list. What is a Lisper to do? To the…

---

## [Capturing key-presses in Clojurescript with Closure](https://clojureverse.org/t/capturing-key-presses-in-clojurescript-with-closure/6731)

<div class="topic-metadata">

**Author:** [@Webdev\_Tory](https://clojureverse.org/u/Webdev_Tory)\
**Replies:** 4\
**Last updated:** [November 2, 2020, 12:19pm UTC](https://clojureverse.org/t/capturing-key-presses-in-clojurescript-with-closure/6731 "2020-11-02T12:19:26Z")

</div>

---

## [Clojure formatting with cljstyle](https://clojureverse.org/t/clojure-formatting-with-cljstyle/6743)

<div class="topic-metadata">

**Author:** [@abogoyavlensky](https://clojureverse.org/u/abogoyavlensky)\
**Replies:** 2\
**Last updated:** [October 26, 2020, 3:51pm UTC](https://clojureverse.org/t/clojure-formatting-with-cljstyle/6743 "2020-10-26T15:51:27Z")

</div>

Hi! Once I found an interesting discussion about Clojure formatters. I think the idea of universal Clojure formatting is really useful. In the post, I described a way to get it with minimal effort right now using cljstyl…

---

## [Progress update on the Clojure(Script) date-time libraries](https://clojureverse.org/t/progress-update-on-the-clojure-script-date-time-libraries/5344)

<div class="topic-metadata">

**Author:** [@henry\_w](https://clojureverse.org/u/henry_w)\
**Replies:** 10\
**Last updated:** [September 22, 2020, 1:50pm UTC](https://clojureverse.org/t/progress-update-on-the-clojure-script-date-time-libraries/5344 "2020-09-22T13:50:33Z")

</div>

An update on what’s happened since I gave a talk last April. AMA here, thanks

---

## [Porting a macOS Clojure Dev Setup to Windows WSL2](https://clojureverse.org/t/porting-a-macos-clojure-dev-setup-to-windows-wsl2/6298)

<div class="topic-metadata">

**Author:** [@borkdude](https://clojureverse.org/u/borkdude)\
**Replies:** 3\
**Last updated:** [August 25, 2020, 4:44pm UTC](https://clojureverse.org/t/porting-a-macos-clojure-dev-setup-to-windows-wsl2/6298 "2020-08-25T16:44:49Z")

</div>

I wrote a blog about configuring a Windows machine for remote Clojure development usage based on my old macOS dev setup: https://blog.michielborkent.nl/2020/07/26/remote-wsl2-clojure/

---

## [(N)vim for Clojure development](https://clojureverse.org/t/n-vim-for-clojure-development/6441)

<div class="topic-metadata">

**Author:** [@tomekw](https://clojureverse.org/u/tomekw)\
**Replies:** 0\
**Last updated:** [August 25, 2020, 3:19pm UTC](https://clojureverse.org/t/n-vim-for-clojure-development/6441 "2020-08-25T15:19:04Z")

</div>

Hey! :wave: Everything you need to write Clojure using (N)vim. I decided to share my new (minimal) setup to efficiently write Clojure. I hope you like it. Looking forward to any tips or your custom workflows.

---

## [A Lesson in the Beauty of Data - XML Parsing on the Front End: to CLJS or not](https://clojureverse.org/t/a-lesson-in-the-beauty-of-data-xml-parsing-on-the-front-end-to-cljs-or-not/6395)

<div class="topic-metadata">

**Author:** [@Webdev\_Tory](https://clojureverse.org/u/Webdev_Tory)\
**Replies:** 0\
**Last updated:** [August 12, 2020, 10:45pm UTC](https://clojureverse.org/t/a-lesson-in-the-beauty-of-data-xml-parsing-on-the-front-end-to-cljs-or-not/6395 "2020-08-12T22:45:41Z")

</div>

---

## [An Architecture for Community Contribution, Speed and Modularity](https://clojureverse.org/t/an-architecture-for-community-contribution-speed-and-modularity/6377)

<div class="topic-metadata">

**Author:** [@Jponline](https://clojureverse.org/u/Jponline)\
**Replies:** 0\
**Last updated:** [August 10, 2020, 2:25pm UTC](https://clojureverse.org/t/an-architecture-for-community-contribution-speed-and-modularity/6377 "2020-08-10T14:25:54Z")

</div>

A software architect should let options open as what database or framework to use. But would be possible to have the programming language as an option?

[Next page](https://clojureverse.org/c/learning-resources/blogs/42.md?page=1)
