Get the latest tech news

Poor man's bitemporal data system in SQLite and Clojure


On trying to mash up SQLite with ideas stolen from Accountants, Clojure, Datomic, XTDB, Rama, and Local-first-ers, to satisfy Henderson's Tenth Law. Viz., to make a sufficiently complicated data system containing an ad-hoc, informally-specified, bug-ridden, slow implementation of half of a bitemporal database. Because? Because laying about on a hammock, contemplating hopelessly complected objects like Current Databases isn't just for the Rich man.

Never-ending process is the beating heart, the whistling wind, the pulsing quasar, the furious procreation, the tectonic Subduction, the whispered good-bye, the thermodynamic survival instinct of all things. I have been warned that attempting temporal queries with SQL will cause obnoxious joins, strange indexing schemes, finicky triggers, stored procedures from hell, and non-standard shenanigans specific to the database engine in question. A friendly generous wise needlessly self-effacing gentleman and scholar of infinite patience—you know who you are 🍻—who's simple requirement (really it's a day's worth of vibe-coding) precipitated this months long (and ongoing) detour across temporal data rabbit holes.

Get the Android app

Or read this on Hacker News

Read more on:

Photo of SQLite

SQLite

Photo of Clojure

Clojure

Photo of poor man

poor man

Related news:

News photo

SQLite's documentation about its durability properties is unclear

News photo

Lessons learned from building a sync-engine and reactivity system with SQLite

News photo

Structuring large Clojure codebases with Biff