There's a 300-page MIT Press book analyzing exactly this line of code: 10 PRINT CHR$(205.5+RND(1)); :GOTO 10. It's free as a PDF and covers the mathematics (Truchet tilings), the C64 hardware, and the cultural history. The article doesn't mention it.
python3 -c 'import random, time, itertools; any(time.sleep(0.01) or print(random.choice("\u2571\u2572"), end="", flush=True) for x in itertools.repeat(None))'
Note that only Python standard modules are imported, no third-party libraries.
The “random” module is needed, because Python does not have a built-in replacement for BASIC’s RND(). The “time” module is merely to add delays, to emulate the style of normal BASIC interpreters on old – i.e. very slow – computers. You could remove it without any change in output. And lastly, the “itertools” module is used to get an infinite loop on a Python one-liner; Python, with its whitespace-based block structure, has a hard time doing anything significant in a single line otherwise.
It takes 40 seconds to precompute the lookup table.
Robin released at least 2 faster/improved versions that run in a couple of seconds - less string concatenation which is slow in BASIC https://www.youtube.com/watch?v=Dw2hvtF95Qw
Gun nut on the side, he had a rather ill-informed (at best) video on AI a while ago (before the current LLM craze), and has once done a pretty reckless attempt at repairing a unique IBM machine – as in, opening the PSU with a dremel tool and then then bridging a circuit with a paperclip.
I think it’s an embarrassing mistake that I probably would have entirely edited out if I were him. But I don’t watch his hardware restoration videos because he’s a source of electrical knowledge. They’re pure entertainment.
A lot of vintage restorers don't like him and people like him because he goes Wow! Look at This! and then suddenly a bunch of middle aged men with beards have that exact thing on their shelf. And those of us doing preservation and restoration suddenly are priced out of the hobby we've been in for decades.
Also, his technical "work" is not great. In fact, it's really bad. Even his successful fixes show a lack of attention to detail.
It's worth noting that he started his career as a computer scrapper.
The attention thing he can't be blamed for, and it's in any case a mixed blessing (more popularity of a specific retro computer can also have upsides for the existing enthusiasts).
He's definitively not the best hardware restorer. But his historical videos, his games and his X16 project are pretty nice.
Gun nut is fine. One can be a gun nut without supporting the awful ideas/people within that domain. It's the support of awful ideas/people in that domain them that make him "controversial" (a.k.a. anti-social asshole, that insist being an anti-social asshole is simply a personality trait, immune to criticism)
Oh that -- I used to print those out from my C64 to my Star Micronics dot-matrix printer and add selected white-out / ink to make them more interesting.
Basically, folks compete to write the best, most interesting, most inspiring 10 lines of BASIC code imaginable .. and ooh boy, has there ever been some truly amazing stuff! A dynamically generated dungeon crawler, a full implementation of lunar lander, countless arcade-style games, an implementation of Brainfuck .. the list goes on and on .. all in just 10 LINES OF BASIC!
Another source of BASIC inspiration, I find, is in the synthesis one-liner scene - which of course, is dominated by the C64 for its synth goodness, but there are other examples out there where, in just a single line of code, entire techno and other electronic-music tracks are generated, on the fly, by ye' olde 8-bit computer of choice (C64, mostly, though..) The bytebeat techniques in use by some synth-one-liner hackers seem to be continually producing extraordinary results.
I think there is a lot of value in learning BASIC using these kinds of techniques in this day and age. I know for sure I'd struggle to have a full Lunar Lander or Asteroids implementation of just 10 lines of javascript, if that is even feasible .. but seeing so many BASIC implementations is just truly inspiring.
What we have lost in the rush for shiny bloat, eh folks?
The old adage that limits produce wonders, is never truer than in the 10 Line BASIC competition entries ...
https://10print.org/10_PRINT_121114.pdf
2019 (142 points, 60 comments) https://news.ycombinator.com/item?id=19481207
Original/2012 (153 points, 89 comments) https://news.ycombinator.com/item?id=4856207
The “random” module is needed, because Python does not have a built-in replacement for BASIC’s RND(). The “time” module is merely to add delays, to emulate the style of normal BASIC interpreters on old – i.e. very slow – computers. You could remove it without any change in output. And lastly, the “itertools” module is used to get an infinite loop on a Python one-liner; Python, with its whitespace-based block structure, has a hard time doing anything significant in a single line otherwise.
Robin released at least 2 faster/improved versions that run in a couple of seconds - less string concatenation which is slow in BASIC https://www.youtube.com/watch?v=Dw2hvtF95Qw
https://bunsen.itch.io/the-snake-temple-by-rax
with an even faster implementation in BASIC (much lowers startup time).
Instead of deleting the video and owning up to his mistake, he just deactivated the comments...
I still enjoy his videos.
Also, his technical "work" is not great. In fact, it's really bad. Even his successful fixes show a lack of attention to detail.
It's worth noting that he started his career as a computer scrapper.
He's definitively not the best hardware restorer. But his historical videos, his games and his X16 project are pretty nice.
I like his history videos, though, for instance the ones that talk about graphics modes for a given computer.
Also, your bio says you don't shave. Sure you're not one of those bearded, middle-aged men?
Are there some hidden depths to formatting/converting that I'm missing? And yes. I know not to use floats
When there was an issue on the motherboard, he almost always outsourced to his more tech-savy friends to fix it for him.
Hate to be that guy, but a line you enter at the prompt is still a line, even if it's not part of an "actual" (stored) program.
My favourite example is the annual BASIC 10 liner competition:
https://basic10liner.com/
Basically, folks compete to write the best, most interesting, most inspiring 10 lines of BASIC code imaginable .. and ooh boy, has there ever been some truly amazing stuff! A dynamically generated dungeon crawler, a full implementation of lunar lander, countless arcade-style games, an implementation of Brainfuck .. the list goes on and on .. all in just 10 LINES OF BASIC!
Another source of BASIC inspiration, I find, is in the synthesis one-liner scene - which of course, is dominated by the C64 for its synth goodness, but there are other examples out there where, in just a single line of code, entire techno and other electronic-music tracks are generated, on the fly, by ye' olde 8-bit computer of choice (C64, mostly, though..) The bytebeat techniques in use by some synth-one-liner hackers seem to be continually producing extraordinary results.
For example:
https://replicate.com/andreasjansson/synth-one-liner/readme
.. and a good treatise on the various techniques:
https://countercomplex.blogspot.com/2011/10/algorithmic-symp...
I think there is a lot of value in learning BASIC using these kinds of techniques in this day and age. I know for sure I'd struggle to have a full Lunar Lander or Asteroids implementation of just 10 lines of javascript, if that is even feasible .. but seeing so many BASIC implementations is just truly inspiring.
What we have lost in the rush for shiny bloat, eh folks?
The old adage that limits produce wonders, is never truer than in the 10 Line BASIC competition entries ...
Also, now different people are pitching in with their own takes, so it turned into a bit of friendly competition.