exupero's blog
Productivity improvements in the penny game
more output, more WIP
Penny game work in progress
revenue and expenses
The Penny Game
simple manufacturing simulation
Adding expected values of uniform distributions
a complication
Multiplying the expected value of a uniform distribution
more and more dice
Merging GeoJSON features
brevity vs. familiarity
various uses
Parallel line construction in taxicab geometry
two circles, not a cheat
Angle bisection in taxicab geometry
the Euclidean construction doesn't work
Angles in taxicab geometry
changes with orientation
Circumcenters in taxicab geometry
perpendiculars as "midsets"
Conic sections in taxicab geometry
1, maybe 2, out of 4
Hyperbolas in taxicab geometry
lots of edge cases
Parabolas in taxicab geometry
Point-line distance in taxicab geometry
growing a circle
Ellipses in taxicab geometry
non-degenerate circles
Taxicab geometry
square circles
Lines dividing lines
hyperbola in disguise
Random self-intersecting designs
balancing randomness with regularity
Self-intersecting designs
what's the proper name?
Babashka scripts to notify on stdin
notify, notify-on, and moreutils
Bike gear ratios
overlapping ranges
Implicit stack climbing
idiom-level anti-pattern
Boolean flags hide two functions in one
refactor early, refactor often
HTMX versus ClojureScript
small but needs a server
Song recursion
illustrating tail-call optimization and infinite recursion
XKCD's latitude
narrowing the location down
XKCD's "Summer Solstice"
blame our tilt, not our orbit
Niche refactoring
team-, project-, and library-specific refactors
Refactoring Instaparse trees
generic zippers
Updating requires with rewrite-clj
specialty zippers
Clojure indentation commas
narrower code, no extra line breaks, works with Parinfer
Stacking Clojure's "ignore next form" reader macro
a tip I actually use every day
Clojure radix literals
Clojure's sneaky infix operator
EDN data DSL
a DSL for generating hash-maps
Ratios between semitones under just intonation
less resonant pairwise ratios
Matching just intonation to equal temperament
within 1% is good enough for me
Musical temperament
equal or just?
Manipulating SVGs in Clojure
tree walking, rewriting nodes, adding nodes
The Palenque Code
unconvincing but a fun attempt
Generating EDN from Janet
use byte buffers, not strings
Insta-parsing with Janet
tagging matches
Clojure scratch files
a history of prototyping
Counting on my fingers
zero to sixty on one hand
Topological sort in Clojure
small enough to Tweet
Recurrence intervals near non-leap year centennials
intervals of 5, 6, 7, 11, 12, 28, and 40 years
Month recurrence
intervals of 5, 6, 11, and 28 years
Logging macros
logging code and its result
Debugging macros
locals, let bindings, and an interactive REPL
Simple macros
cond-let, parallel hash-map values, key/value symbols
Tiny annual calendar
habit tracking, planning, and reflection
Great circle distance formulas
comprehension versus computation
Mapping regex matches
breaking out of a string
Tips for long-running nREPL jobs
Nuances of a shorter walk in the sun
the rare time/longitude plot
A shorter walk in the sun
shorter, but riskier
Probabilities on U.S. presidential elections
narrative fallacies on a small data set
Live reloading Tampermonkey scripts
live reloading on other people's websites
Live reloading HTML that didn't ask for it
injecting JavaScript
HTTP server that watches files
live reloading
Four-function calculator behavior
difference when chaining operations
it lightens the mental load
Obb script to execute JavaScript in an open browser
automating a WebCatalog app
Obb script to create new Obsidian file from browser URL
go go gadget Templater
Obb script to copy browser URL and paste Markdown link
simpler keystrokes
Spirals from ellipses
more art than science
Orbits with the same period
DogBunny puzzle solver
taking the fun out of it
Hour and minute hand alignment
the kids are learning analog
Hammerspoon with Fennel
embed it
Neovim with Fennel
quickfix and tree-sitter
Circles on a hypotenuse problem
seems simple, isn't
Retro line art
bored in middle school
ClojureDart macro for nested components
adding complexity
Driving fast but not fastest
less safe but more tedious
Choosing a speed to minimize passing
safe but tedious
Speeding and traffic
hurry up and wait
Speeding and stop lights
time cancels out luck
Saving time by speeding
doesn't save much
Astronomical wall calendar
data visualization a day
Scraping an HTML dictionary with Babashka and Bootleg
quick and simple
Constructing major system mnemonics with Markov chains
imitating grammar
Major system mnemonics with a smaller vocabulary
less is more
Constructing major system mnemonics with grammar
thanks, English
Phonetic major system mnemonics
easier for a human, harder for a computer
Major system mnemonics
minor improvement
Finding mnemonics in a body of text
harder than just remembering the digits
Superformula identicons
infinite possibility, tiny utility
Symmetrical identicons
infinite possibility space × 3
Divisibility graph identicons
a small possibility space
Hand-drawn dungeon identicons
a large possibility space
Mapping orbital positions
a little numerical approximation
Mapping elliptical orbits
a little matrix multiplication
Locker doors puzzle
slightly magical
Lens transducer
Exponential smoothing transducer
introductory signal processing
Specialty transducers
e.g. take-until-repeat, interpolate, spillover
Workaday transducers
e.g. tap, dedupe-by, parallel
list processing
Bus barn dequeueing
better strategies?
Jumping higher when the sun is overhead on different planets
as expected
Jumping higher when the sun and moon are overhead
less than I expected
Jumping higher when the sun is overhead
more than I expected
Divisibility scatter plots
tricks for smallish primes
Best base for modulo tricks?
possibly base 9
Modulo tricks in other bases
special behavior around the choice of base
Divisibility graphs and modulo tricks
explaining a couple small mysteries
Divisibility graph of 7
a starting point
Calculating a date's day of the week
the final step
Calculating anchor days
simple math and memorization
not as scary as it sounds
Recursive subdivision
a generic function to only subdivide as needed
Coastal variation
add some regional parameters
Basic island generation
polygon to irregular fractal
Sunlight's distance through the atmosphere
influence on color?
Mapmaking on a toroidal world
sometimes the simpler option is actually pretty good
Compass directions on a toroidal world
facing unusual choices
Day and night in the toroidal interior
it keeps switching
Toroidal interior
dark and eerie
Toroidal poles
double horizon
Torus with Earth's area and volume
two equations, two unknowns
An Earth-sized torus
mostly hollow
Toroidal world
worldbuilding in genus one
Calculator words
a simple amusement
Apparent size above horizon
just one triangle inside another
Finding hide and seek probabilities analytically
reinventing the choose function
Probabilities when hiding more items
less computation, more exact
Hiding strategies
overanalyzing the task
Timeline of the patriarchs
less certain than usually shown
Uncertain Gantt
fuzzy at the edges
Gantt charts of diverging possibilities
Relative schedules
a simple start
Sum and product puzzle extra credit
doesn't help
Sum and product puzzle
re-encoding the problem
Drawing the Mandelbrot set
it's the negative space
Semi-tessellation with a continuous line
a (minor) dilemma
Growth limited by interpersonal conflict?
or just reading too much into a cubic term?
A sigmoidal population
resource contention over an idea?
Nelson rules
leveraging a small set of Clojure's collection functions
Rate, time, and distance nomogram for shorter distances
after feedback from the kids
Manipulating nomographic matrices symbolically
data as code
Rate, time, and distance nomogram
for the children
Horizon distance along ground
more work to get the same result
Distance to horizon
surprisingly simple
Adventures in notebook programming
some different approaches
Vim syntax range plugin
convenient for mixing Clojure and Markdown
A Clojure reader with string interpolation
forking tools.reader to add a dispatch macro
Mid-ocean ridge trace
extracting geographical coordinates from an image
Stack-math compendium
for future reference
Stack-based square and cube roots
could be worse
Chunking stack-math operations
a vocabulary
More flexible rewrite rules
wading into a broader solution space
Rewriting stack algorithms programmatically
find and replace
Improving a mental math stack algorithm
some numbers are easier to multiply than others
Stack-based mental math
leveraging small working memory but big(ger) long-term memory
Mini Zettelkasten
130 lines of Clojure, 1.9 kilobytes of JavaScript
Clojure-flavored JavaScript
macro expand, compile, and minify
Accelerating to oblivion?
is there a relativistic barrier below the speed of light?
View from a photon
is everything flat?
Michigan big trees near you
group hug
Drawing an icosphere
divide and inflate
Drawing an icosahedron
spherical coordinates for the win
Michigan county boundary roads
three naming conventions
Babashka script to serve stdin
for those who prefer the command line to setting up a webserver
Analysis of incremental water heating
writing math to avoid tedious computation
Heating cold water in smaller batches
writing code to avoid tedious arithmetic
Modeling a simple thermodynamics problem
setup for further experiments
Heating cold water
feels paradoxical
Calendar recurrence
when you'd rather store old calendars than buy new ones
Checkerboard islands
don't go cross-eyed
Terrain chess
because war is also senseless
Variations on hand-drawn dungeons
not a major development
Procedural generation by hand
invented in a meeting
Scaling stars on the flag
not hoping to need it, just an occupational hazard
`quickbb` script for Babashka
saving rework with an nREPL
`quick` script for Tmux
entr Joe
Improving generated Lindenmeyer rules
using something like a state machine
Generating Lindenmeyer fractals
from random data definitions
More Lindenmeyer fractals
for the pretty pictures
Lindenmeyer fractals as data
revisiting old code to turn logic into data
Sunrise, sunset, and latitude
sunrise and sunset at the extremes
Sunrise, sunset, and the winter solstice
in which the earliest sunset and latest sunrise don't happen on the same day
Rotation of the solar terminus
days are longer than we realize