Archives
Every post, organised by year and month.
- Series · From F# to Clojure
From F# to Clojure > 9: From Quotations to Macros
Contrast F# quotations with Clojure's code-as-data model, then build safe macros with quoting, splicing, and hygienic names.
- Series · From F# to Clojure
From F# to Clojure > 8: From Pipelines to Transducers
Take the F# pipeline instinct further by separating Clojure transformations from their input, output, and reduction context.
- Series · From F# to Clojure
From F# to Clojure > 7: State and Concurrency
Move from F# reference cells and synchronization to Clojure's explicit identity model with atoms, refs, and transactions.
- Series · From F# to Clojure
From F# to Clojure > 6: From Discriminated Unions to Open Polymorphism
Compare F# discriminated unions and interfaces with Clojure protocols, records, and data-driven multimethod dispatch.
- Series · From F# to Clojure
From F# to Clojure > 5: Namespaces and REPL-Driven Development
Move from F# projects and modules to Clojure namespaces, classpaths, Vars, and a live REPL-driven development loop.
- Series · From F# to Clojure
From F# to Clojure > 4: Sequence Pipelines
Translate F# collection pipelines into Clojure's sequence functions, lazy values, and thread-last macro.
- Series · From F# to Clojure
From F# to Clojure > 3: Functions, Bindings, and Destructuring
Carry F# function composition into Clojure while adapting to explicit parameter vectors, local bindings, and map destructuring.
- Series · From F# to Clojure
From F# to Clojure > 2: Immutable Data Without Static Types
Translate F# records, lists, maps, and immutable updates into Clojure's persistent collections and data-oriented style.
- Series · From F# to Clojure
From F# to Clojure > 1: Forms and the REPL
A practical bridge from F# to Clojure, translating familiar functional ideas while learning Lisp syntax, dynamic values, and the REPL.
- Series · After Free Will
Doing Our Best in a Caused World
How to live fully with emotion, uncertainty, meaning, compassion, and practical agency in a world shaped by causes.
- Series · After Free Will
Can Justice Survive Without Free Will?
How accountability, protection, repair, and rehabilitation can support justice without retribution.
- Series · After Free Will
The Battle of Information
How facts, stories, repetition, trust, power, and information environments become causes that shape minds and societies.
- Series · After Free Will
Choice Still Matters
Why causation is not fatalism, and why deliberation, effort, reasons, and practical agency still change what happens.
- Series · After Free Will
Every Choice Has a History
How biology, experience, culture, and the immediate moment accumulate behind every decision we make.
- Series · After Free Will
What Would Free Will Have to Be?
What kind of control would free will require, and which forms of agency survive without ultimate self-authorship?
- Series · After Free Will
I Don't Think We Have Free Will
Why I think our choices are caused rather than freely authored, and why that leaves more room for compassion.
- Series · Learning Neovim
Learning Neovim > 1: Normal Mode Navigation
A practical introduction to moving through files efficiently with Normal mode motions, counts, and line-level jumps.
- Series · Learning Neovim
Learning Neovim > 2: Editing Operators
How Neovim combines operators and motions to make deleting, changing, copying, undoing, and pasting composable.
- Series · Learning Neovim
Learning Neovim > 3: Insert & Visual Modes
A practical guide to switching between Insert, Visual, Replace, and Command modes without losing your flow.
- Series · Learning Neovim
Learning Neovim > 4: Search & Replace
How to search, replace, configure match behaviour, and run quick shell commands without leaving Neovim.