Or played Doom, for that matter.
There's a bad apple demo on the datastar site. Datastar's[1] streaming hypermedia is what makes this possible, that and good old Clojure and sqlite.
Once everything clicks it becomes a force multiplier and a joy to work with, something that helped me in that regard is throwing a "data-json-signals" on an element so its easier to keep an eye on things.
I put this together in a day and wasn't planning on it being on HN. So there's definitely some jank/UX polish.
For example the typing experience is nicer on chrome as the field sizes to the text.
andersmurphy•7mo ago
Happy to answer any questions.
andersmurphy•7mo ago
konsalexee•7mo ago
andersmurphy•7mo ago
The scaling was preemptive as it was hitting 150% CPU (out of 200%). Needed to power down to rescale.
Now it's hovering at around 200% (out of 400%). About 80kb/s and 10 disk iops.
Everything goes via a sqlite db.
daymanstep•7mo ago
andersmurphy•7mo ago
But because it's sqlite it's a single writer. Everything gets batched as one transaction every 100ms. The operations on a single chunk gets squashed into a single write.
Even without the squashing sqlite can handle 10000-20000+ updates/s because of the transaction batching.
With the chunk based squashing all edits to a chunk in that 100ms window become one update, so it can scale quite well.
matsemann•7mo ago
andersmurphy•7mo ago
matsemann•7mo ago
Btw, if I add a ' to the string, it's impossible to override by othrs. At least in the UI on Firefox, the snake still ate it.
ac50hz•7mo ago
andersmurphy•7mo ago
I'm planning on doing a write up on th se billion-foo style games at some point. It's been a fantastic learning experience.
ac50hz•6mo ago