Daniel Janus, a programmer, writes about Clojure, databases like Datomic, LLMs in programming, the web, and his GPD Micro PC.
HN links it for his post on Datomic not supporting branching from the past, his Web of Documents essay, and his GPD Micro PC review.
Daniel Janus had written about it here: http://blog.danieljanus.pl/2019/10/07/web-of-documents/
I am fairly certain I have written about it as well, here or on my blog somewhere.
My ideas are a bit more pragmatic maybe: I hope Mozilla or someone else will make a html version of asm.js - an extremely performant renderer for a subset of html and css.
This could solve the bootstrapping dilemma since it would work in every other browser as well - only hopefully even faster in browsers that supports it - and make real headway in as little as a few years while working from day 1.
My suggestions:
- a meta field in the header indicating html document
- a free validation service
- if a document signals it is a modern document, send it down the fast path
- if the document doesn't follow the rules, restart with ordinary rules
- js is forbidden except for a number of vetted common libraries for things like autocomplete
Surprisingly, no it does not. Datomic has a more limited feature that lets you make an in-memory clone of the latest copy of the db for speculative writes, which might be useful for tests, but you can't take an arbitrary version of the db with as-of and use it as the basis for a new version on disk. See: https://blog.danieljanus.pl/2025/04/22/datomic-forking-the-past/
There's nothing technically that should prevent this if they are using HAMTs underneath, so I'm guessing they just didn't care about the feature. With HAMT, cloning any part of the data structure, no matter how nested, is just a pointer copy. This is more useful than you'd think but hardly any database makes it possible.
I like the structure of the game 2048 https://github.com/gabrielecirulli/2048 and I think it will be highly instructive for you since it implements the MVC pattern without using a framework, and you want to be framework agnostic. 2048 is simple enough that it's an accessible introduction to software design.
Daniel Janus wrote a great analysis of the source code and architecture; I highly recommend reading it: http://blog.danieljanus.pl/blog/2014/04/02/2048/
Surprisingly, neither Datomic nor XTDB support branching. See: https://blog.danieljanus.pl/datomic-forking-the-past/
I actually built my own immutable database which does support branching (see profile), so it seems like a huge miss that these ones don't. It's pretty much the main reason I would want an immutable database.
GPDs used to be much cheaper[1], and IMO made much more sense that way. Unfortunately, GPD indeed seems to have caught the expensive bug.
[1] https://blog.danieljanus.pl/2022/08/18/i-love-my-gpd-micro-pc/
Similar vibes as my GPD Micro PC: https://blog.danieljanus.pl/i-love-my-gpd-micro-pc/