rntz @rntz.net · 16/03/2026A little haskell command-line script to calculate good, small rational approximations of real numbers. Eg: approximating 0.13 yields 1/7 ≈ 0.1429, 1/8 = .125, 3/23 ≈ 0.1304, 13/100 = 0.13 in that order. Useful more often than I expected. gist.github.com/rntz/6713db2... 171
rntz @rntz.net · 02/02/2026the atreus keyboard layout I've landed on as a {emacs,mac,latex,lisp} user 010
rntz @rntz.net · 28/12/2025(Martinique is part of France fyi) I suspect overzealous enforcement by the airline. I couldn't find any info about this on their website but did later get pointed to a Facebook post (!?!) that looked like the thing the airline rep briefly waved in my face to justify it. 010
rntz @rntz.net · 13/12/2025I have decided to have fun with the section titles in my paper-to-be, at least while I'm writing it. 060
rntz @rntz.net · 16/11/2025a geometric visualization of factorized delta queries by @jcreed.bsky.social, representing Δ(R ∧ S ∧ T) = (ΔR ∧ S ∧ T) ∨ (R' ∧ ΔS ∧ T) ∨ (R' ∧ S' ∧ ΔT) where R' = R ∨ ΔR etc. 030
rntz @rntz.net · 31/10/2025My miniKanren 2025 paper, "Fair intersection of seekable iterators", about an efficient, compositional way to implement relational joins on sorted data structures, and how it (sorta) requires "fairness", is now on arXiv: arxiv.org/abs/2510.26016 talk slides: www.rntz.net/files/minika... 160
rntz @rntz.net · 13/10/2025Slides for my HOPE 2025 presentation, "Finite Functional Programming via Graded Effects & Relevance Types": www.rntz.net/files/hope-2... 3143
rntz @rntz.net · 11/10/2025i go halfway around the world for a conference in a famous tourist city and first day what do I do? go to a bookstore 010
rntz @rntz.net · 25/09/2025just a bit onward Hansen cites Dijkstra 1971b, "Hierarchical Ordering of Sequential Processes", which invokes a fairness property ("each process... is guaranteed to proceed with some unknown, but finite speed") but reserves the actual term "fair" only for a much stronger property 010
rntz @rntz.net · 15/09/2025I got irritated at how tightly spaced EB Garamond 08 (the version intended for use at smaller sizes) is, so I tried my hand at re-spacing the 26 lower-case letters manually in FontForge. Here's the result (original spacing first, then my adjustments). github.com/georgd/EB-Ga... 000
rntz @rntz.net · 09/09/2025the All-Seeing Eye has fallen up on my work and deemed it good (implications status: uncomfortable. spotted by @mwillsey.com.) 020
rntz @rntz.net · 09/08/2025btw, the "better version" of the linear merge-intersection is leapfrog intersection: keep pointers into each list, starting at front. repeatedly "leapfrog" the pointer whose element is smaller by searching it forward toward the larger element. binary search will work, but galloping search is better. 120
rntz @rntz.net · 07/08/2025I do not understand inlining in Rust. Even with #[inline(always)], I get worse performance than if I inline manually. Wat? 110
rntz @rntz.net · 07/08/2025full code, including the seekable iterators with worst-case optimal/fair intersection, here: gist.github.com/rntz/9c10db3... 010
rntz @rntz.net · 07/08/2025I tried optimizing my worst-case optimal seekable iterators in Rust and thought I did pretty good. Then I tried hand-optimizing a little "count the intersection" loop and discovered it's 2x as fast as the iterators. Feh! 140
rntz @rntz.net · 17/06/2025signature of elements for completeness: fn elements<X: Ord + Copy>(elems: &[X]) -> Elements<X> 000
rntz @rntz.net · 17/06/2025I figured it out by blindly stumbling around until I added the right lifetime annotations to seek(). 200
rntz @rntz.net · 17/06/2025ran into my first true Rust borrow-checker head-scratcher, trying to implement transitive closure in my nascent query engine... 110
rntz @rntz.net · 14/06/2025I was told Rust's declarative macros had hygiene. I was lied to. I seriously can't export a declarative macro that uses other un-exported declarative macros and have it work? wtf? 160
rntz @rntz.net · 12/06/2025I have spent entirely too much time this week writing sorted list search algorithms (>2x speedup over binary search on triangle-finding with this one, though!). Time to go write some parsers instead. 000
rntz @rntz.net · 04/06/2025> error[E0277]: the trait bound `!: iter::Seek` is not satisfied cursed error messages 000
rntz @rntz.net · 22/05/2025unifying inner, outer, left outer, and right outer joins; credit to @mwillsey.com for the idea. source at github.com/rntz/dijkstr... 020
rntz @rntz.net · 21/05/2025I'll start using code autoformatters when code autoformatters can actually align parallel constructions 150
rntz @rntz.net · 21/05/2025reimplemented this in Python using coroutines because why not: gist.github.com/rntz/4c012fc... 130
rntz @rntz.net · 20/05/2025Seekable sorted iterators with worst-case optimal intersection and union in ~60 lines of Haskell. Gist: gist.github.com/rntz/da1f004... more commented & complete version in repo: github.com/rntz/dijkstr... 2101
rntz @rntz.net · 08/05/2025why does this need UndecidableInstances? class Seek iter k v | iter -> k, iter -> v where ... data Merge iter = ... instance Seek iter k v => Seek (Merge iter) k v where ... ghc claims Merge iter doesn't determine the type k. But it does, since iter -> k in (Seek iter k v). 000
rntz @rntz.net · 03/05/2025today's ride: up into the Berkeley hills, down through twisty Pinehurst Road, east to Mount Diablo and up up up to the summit. The road to the top is very fun, highly recommend. 050
rntz @rntz.net · 17/02/2025Today's ride: over the Richmond Bridge to San Rafael, grab bagel at Pink Owl Cafe & read paper. Finish reading at Bon Tempe lake. Twisty Fairfax-Bolinas Road to Highway 1, south to Stinson Beach; buy these postcards at bookshop. Hwy 1 to Sausalito then back over the bridge & home. 030
rntz @rntz.net · 15/02/2025obviously you just need to fully commit to the bit and buy this $1000 pre-computer-age adjustable-height adjustable-tilt reading/writing desk www.etsy.com/listing/1766... 110
rntz @rntz.net · 07/02/2025fast approaching the funkiest set of typing rules in the history of PL theory... 050