exupero's blog
RSSApps

Recent Posts

Tiny calendar redux

Art

Retro line art
Retro line art produces quadratic Bézier curves

Astronomy

Astronomical wall calendar

Babashka & obb

quickbb script for Babashka
Babashka script to serve stdin
Obb script to copy browser URL and paste Markdown link
Obb script to create new Obsidian file from browser URL
Obb script to execute JavaScript in an open browser
Babashka scripts to notify on stdin

Calculators

Calculator words
Four-function calculator behavior

Calendars

Calendar recurrence
Tiny annual calendar
Month recurrence
Recurrence intervals near non-leap year centennials
Tiny calendar redux

Clojure

Clojure-flavored JavaScript
A Clojure reader with string interpolation
Adventures in notebook programming
Nelson rules
Sum and product puzzle
Sum and product puzzle extra credit
Scraping an HTML dictionary with Babashka and Bootleg
DogBunny puzzle solver
HTTP server that watches files
Live reloading HTML that didn't ask for it
Live reloading Tampermonkey scripts
Tips for long-running nREPL jobs
Mapping regex matches
Topological sort in Clojure
Clojure scratch files
Manipulating SVGs in Clojure
EDN data DSL
Updating requires with rewrite-clj
HTMX versus ClojureScript
Improved re-map

Clojure Macros

ClojureDart macro for nested components
Simple macros
Debugging macros
Logging macros

Clojure Syntax

Clojure radix literals
Stacking Clojure's "ignore next form" reader macro
Clojure indentation commas

Clojure Transducers

Transducers
Workaday transducers
Specialty transducers
Exponential smoothing transducer
Lens transducer

Doomsday Algorithm

Doomsdays
Calculating anchor days
Calculating a date's day of the week

Earth Geometry

Distance to horizon
Horizon distance along ground
Apparent size above horizon

Fennel

Neovim with Fennel
Hammerspoon with Fennel

Gantt charts

Relative schedules
Gantt charts of diverging possibilities
Uncertain Gantt
Timeline of the patriarchs

GeoJSON

Geojson.io
Merging GeoJSON features

Geometry

Drawing an icosahedron
Drawing an icosphere
Circles on a hypotenuse problem
Great circle distance formulas

Hammerspoon

Hammerspoon with Fennel

Heating cold water

Heating cold water
Modeling a simple thermodynamics problem
Heating cold water in smaller batches
Analysis of incremental water heating

Identicons

Hand-drawn dungeon identicons
Divisibility graph identicons
Symmetrical identicons
Superformula identicons

Integer Divisibility

Divisibility graph of 7
Divisibility graphs and modulo tricks
Modulo tricks in other bases
Best base for modulo tricks?
Divisibility scatter plots

Island Generation

Basic island generation
Coastal variation
Recursive subdivision

Janet

Insta-parsing with Janet
Generating EDN from Janet

Jumping Higher

Jumping higher when the sun is overhead
Jumping higher when the sun and moon are overhead
Jumping higher when the sun is overhead on different planets

Lindenmeyer systems

Lindenmeyer fractals as data
More Lindenmeyer fractals
Generating Lindenmeyer fractals
Improving generated Lindenmeyer rules

Math

Lines dividing lines

Mental Math

Stack-based mental math
Improving a mental math stack algorithm
Rewriting stack algorithms programmatically
More flexible rewrite rules
Chunking stack-math operations
Stack-based square and cube roots
Stack-math compendium
Stack math revisited
New stack math compendium
Squaring double-digit numbers mentally

Meta

Blogging deep dives

Michigan

Michigan county boundary roads
Michigan big trees near you

Miscellaneous

Scaling stars on the flag
Mini Zettelkasten
Mid-ocean ridge trace
Semi-tessellation with a continuous line
Drawing the Mandelbrot set
Sunlight's distance through the atmosphere
Locker doors puzzle
Hour and minute hand alignment
On RSS
Counting on my fingers
The Palenque Code
Song recursion
Bike gear ratios
Read and write optimization of notation systems

Mnemonics

Finding mnemonics in a body of text
Major system mnemonics
Phonetic major system mnemonics
Constructing major system mnemonics with grammar
Major system mnemonics with a smaller vocabulary
Constructing major system mnemonics with Markov chains

Music

Musical temperament
Matching just intonation to equal temperament
Ratios between semitones under just intonation

(Neo)Vim

Vim syntax range plugin
Neovim with Fennel
Conjure plugin for Neovim

Nomograms

Rate, time, and distance nomogram
Manipulating nomographic matrices symbolically
Rate, time, and distance nomogram for shorter distances

Orbital Math

Mapping elliptical orbits
Mapping orbital positions
Orbits with the same period
Spirals from ellipses

Penny Game

The Penny Game
Penny game work in progress
Productivity improvements in the penny game
Constraining input in the penny game
Constraining input based on the current state
Utilization in the penny game
Time to completion in the penny game
Animated penny game
The penny game and Kingman's formula

Physics

View from a photon
Accelerating to oblivion?

Population growth

A sigmoidal population
Growth limited by interpersonal conflict?

Probabilities

Hiding strategies
Probabilities when hiding more items
Finding hide and seek probabilities analytically
Probabilities on U.S. presidential elections
Multiplying the expected value of a uniform distribution
Adding expected values of uniform distributions

Procedural Generation

Procedural generation by hand
Variations on hand-drawn dungeons
Terrain chess
Checkerboard islands
Self-intersecting designs
Random self-intersecting designs

Pull Requests

Exploratory testing on pull requests
Drafting pull requests

Python

An advantage of Python comprehensions

Refactoring

Refactoring Instaparse trees
Niche refactoring
Boolean flags hide two functions in one
Implicit stack climbing
Refactoring in different domains
Most compelling form

Science Fiction

A shorter walk in the sun
Nuances of a shorter walk in the sun

Scripts

quick script for Tmux

Shorthand

Shorthand
Gregg resources
Grascii generation
Handling stacked Grascii affixes
Handling multiple Grascii options

Simulation

Bus barn dequeueing
Saving time by speeding
Speeding and stop lights
Speeding and traffic
Choosing a speed to minimize passing
Driving fast but not fastest

Speeding Analysis

Saving time by speeding
Speeding and stop lights
Speeding and traffic
Choosing a speed to minimize passing
Driving fast but not fastest

Stack Math

Stack-based mental math
Improving a mental math stack algorithm
Rewriting stack algorithms programmatically
More flexible rewrite rules
Chunking stack-math operations
Stack-based square and cube roots
Stack-math compendium
Stack math revisited
New stack math compendium

Sunrise & Sunset

Rotation of the solar terminus
Sunrise, sunset, and the winter solstice
Sunrise, sunset, and latitude
XKCD's "Summer Solstice"
XKCD's latitude

Taxicab Geometry

Taxicab geometry
Ellipses in taxicab geometry
Point-line distance in taxicab geometry
Parabolas in taxicab geometry
Hyperbolas in taxicab geometry
Conic sections in taxicab geometry
Circumcenters in taxicab geometry
Angles in taxicab geometry
Angle bisection in taxicab geometry
Parallel line construction in taxicab geometry

The Bible

Timeline of the patriarchs
The 120 years of Genesis 6:3

Tmux

Tmux as development environment
Tmux session launcher
Tmux worktree scripts
Tmux session finder
Tmux window launcher
Get last command output from Tmux

Toroidal world

Toroidal world
An Earth-sized torus
Torus with Earth's area and volume
Toroidal poles
Toroidal interior
Day and night in the toroidal interior
Compass directions on a toroidal world
Mapmaking on a toroidal world