exupero's blog
RSS
Apps
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
require
s 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