Clojure

On keys and their usage

In Clojure, you can namespace your keys — a seemingly trivial detail with major implications. Let’s explore how this helps with data modeling.

Walking is good for you

There’s a lot to enjoy in Clojure: pure functions, immutability, and the REPL, to name some of the big things. Today, let’s instead look at two tiny but very useful functions.

What's the domain of the frontend?

A prerequisite for hitting the mark with software design is having good control over the domain you operate in. But what exactly is the domain of your frontend code?

What Exactly Is a REPL?

The REPL breathes life into your program and lets you develop it from inside the running process. Join me as I try to explain exactly why a REPL is the essential tool you might not know you’re missing in your (work) life.

Achieve more by doing less

A short story about how a new feature in an open source library was scaled down and yet became more useful.

Partitioning data

Functions like map, filter, and reduce are useful tools that many developers keep in their toolbox. partition may not be as commonly known, but in this post I’ll show you why it should be.

Clojure in Production with tools.deps

A lean and fast setup for packaging Clojure applications for production using tools.deps

tools.deps, figwheel-main, Devcards, and Emacs

A primer on setting up a ClojureScript project with tools.deps, figwheel.main, devcards, and optionally Emacs.

A Unified Specification

An approach to describing the structure of data in ClojureScript applications in one place, and using it to power Datascript schemas, specs, and coercions for data from external sources.

Processing data with Clojure and Go

Porting some recent Go code to Clojure, and musing a little about the difference between these two languages when it comes to data processing (performance, typing, etc).

Optimized Optimus Asset Paths from ClojureScript

How to write a Clojure macro that exposes Optimus’ optimized paths to the client-side ClojureScript build.

Annotating Datomic transactions

Datomic creates a transaction entity every time you transact data. These entities can be freely extended for a multitude of use cases.

Querying across Datomic databases

Among its many, many unique and interesting features, Datomic supports datalog queries across multiple databases. I recently had a chance to actually use this feature, and thought I’d share an actual example of it.

Referentially transparent CRUD

Managing side-effects functionally with Datomic’s transaction data.

Clojure to die for

A selection of the details that makes Clojure such an enjoyable language to work with.

Building static sites in Clojure with Stasis

An in-depth code-along guide to building static web sites powered by the Stasis library.