A simple Clojure macro using &env

I am slowly building up the ability to work with Clojure macros. This was my main motivation for learning the language, since I want to learn a new way of thinking.

Here's a simple macro I wrote as I was learning. It doesn't do much. It uses the built-in &env …

more ...


Implementing an Iseq-conforming linked list in Clojure

I write this article as I bumble around trying to wrap my head around Clojure. This article serves mostly to document my journey to accomplish the simple task of implementing a linked list. On the face, this is relatively simple:

(defrecord RListNode [value next])

(defn r-first [ln] (:value ln))
(defn …
more ...

Complexity

Complexity is a hot-topic and catchy phrase. Everyone agrees "Complexity is bad" and "simplicity is good", but the terms continue to be muddled in mixed meaning and over-use. This page serves as a series of notes on the terms. I don't agree with all the theories here, I'm just penning …

more ...

Thoughts on Spec-ulation (Rich Hickey)

In Rich Hickey's 2016 talk Speculation he argues that too often library authors break backwards compatibility. Instead library authors should aim to maintain backwards compatibility potentially indefinitely.

Much of the talk is spent creating a framework for understanding backwards compatibility when it comes to software (and specifically Clojure). This is …

more ...

Getting started with Reactor

Reactive programming offers a powerful paradigm for handling asynchronous and event-driven code. When working with reactive frameworks, it's important to understand the distinction between two key timelines: the Construction Timeline and the Subscription Timeline. In this article, we'll explore these timelines, their significance, and the potential bugs that can occur …

more ...

Webserver Load Testing: A first exposure

TL;DR:

A minimal webserver achieved less than 5k concurrent requests / second, much below expectations. The reason: the logging configuration was invisibly consuming cycles.

Context

Last night I stumbled upon this post which outlined a performance issue related to JVM webservers. The post you're reading contributes nothing, it just serves …

more ...

Hyperfixate

My sister: "You need a hyperfixation interest. I think everyone needs one, actually. You need a deep dive rabbit hole."

  1. Bird Watching
  2. Beekeeping
  3. Grilling
  4. Smoking (meats)
  5. Ted Cruz
  6. Gun collecting
  7. High-end Audio
  8. Home Brew Smart Home
  9. Coffee Roasting
  10. Chocolate Making
  11. Learn to recognize different species of cockroaches, so when someone …
more ...

Centralia, PA

On my drive across PA I visited the mythic Centralia. You can read up on the modern ghost town in any number of places. So here I'll share my photos and feelings of the place.

Centralia is an unassuming grid of overgrown streets tucked between the Pennsylvania hills. When I …

more ...

Gzipping UUIDs

UUIDs are generally uncompressable. This is because their values can be anything and multiple UUIDs generaly don't repeat in a payload. So you may be surprised to learn that a JSON list of UUIDs compresses to 56% of their original size. Here's an example:

[
  "572585559c5c4278b6947144d010dad3",
  "b97ec0750f67468d964519e18000ccf6",
  "c1c69970b9bc4c0a9266a3350a9b2ab1",
  "2eb10805db484db7a196f89882d32142",
  "4b3569aaac154195aaa5ea114eff6566",
  "e253f04c1f414b7291e682ea465e8e19 …
more ...