←back to thread

241 points nokonoko | 8 comments | | HN request time: 0.528s | source | bottom
1. herodoturtle ◴[] No.45138777[source]
This article was such a cool trip down memory lane, and as an old-timer that hasn’t looked at this stuff since the early 90s (mode13h anyone?) I am so happy to see how strong the scene is today.
replies(2): >>45139164 #>>45139700 #
2. ErneX ◴[] No.45139164[source]
His live set demo is pretty neat

https://youtu.be/3lOptjAeA2w

Repo: https://github.com/0b5vr/0mix

replies(1): >>45139235 #
3. skrebbel ◴[] No.45139235[source]
Just to clarify for readers who didn't read the interview, not a live set, it’s a 64kb demo that looks and feels like a recording of a livecoding competition. So “live set demo” is technically correct because it’s a “live set” themed demo. But it’s not actually a live set :-)
replies(2): >>45141766 #>>45142514 #
4. carra ◴[] No.45139700[source]
Mode 13H was pretty nice. But mode 13X, hacked to have square pixels, was the coolest!
replies(1): >>45140924 #
5. thibaut_barrere ◴[] No.45140924[source]
Mode X allowed pretty cool stuff, like fake true color with interlaced lines (R,G,B), double buffering etc!

Fond memories.

Here is a YouTube rendition of a demo I implemented in 96, showing those techniques https://m.youtube.com/watch?v=t8o-uuq73UU&pp=ygUQTmlra2kgaml...

6. slickytail ◴[] No.45141766{3}[source]
In what sense is this 64KB? Clearly there's more than 64KB of code in the repo. And since it's typescript it's not like there's a binary that could be 64KB.
replies(1): >>45142534 #
7. genezeta ◴[] No.45142514{3}[source]
I don't know why the sibling comment is dead (edit: was). I mean, it is a valid concern, if one doesn't know.

So, for slickytail and anyone who has the same question:

The code is actually compressed into a binary blob. You can see it if you just look at the source of https://0b5vr.com/0mix/0mix.html

A small script loads the blob and uncompresses it before running it through eval:

  fetch("#").then(t=>t.blob()).then(t=>new Response(t.slice(156).stream().pipeThrough(new DecompressionStream("deflate"))).text()).then(eval)
This is a common approach in browser demos and what is counted as "less than 64Kb" is that final html. A similar technique compresses it into a PNG.
8. skrebbel ◴[] No.45142534{4}[source]
The html file with all assets and js bundled in is under 64kb.