Mini Micro Fantasy Computer
103 points by nicoloren 4 hours ago | 45 comments

K0balt 2 hours ago
I’d love to see something like this but designed to run on esp32 or raspberry pi 2530. Either can handle basic HDMI and USB. Or a little <$100 laptop with a 7” display.

Easy to think raspberry pi, but with a full Linux you won’t get that intrinsic understanding that you fully control the hardware, you never control the “bare metal” unless you are a much more advanced user.

IMHO the feeling of not being in full control of your computing device is not a good starting point. I’m very fortunate to have started out on my 8kb BASIC machine.

reply
Lerc 10 minutes ago
I have been thinking along those lines myself.

I have been playing around with a per scanline generated display on a rp2350 outputting to a tiny LCD. I think there's potential for some pretty fancy stuff on HDMI. A 2350 with PSRAM, HDMI connector plus a MicroSD for bulk filesytem, and USB for input could be quite a fun micro PC.

I would be tempted to make somthing that had a second RP2350 with its own PSRAM sitting unutilized just as a temptation to users to figure out how to get more out of the gadget and learn about different multiprocessing architectures.

reply
jan_Sate 32 minutes ago
Not sure on the performance but it might be possible to port this Mini Micro to those platforms.
reply
prmoustache 49 minutes ago
why not just use a vintage computer or game console then?
reply
october8140 2 hours ago
Also check out Pico8 and Picotron.

https://www.lexaloffle.com/

reply
alex_x 4 hours ago
I wonder why all these easy-to-learn languages use indentation to denote scope, not something like curly braces. Isn't it actually harder to explain?
reply
Wowfunhappy 38 minutes ago
Fifth grade teacher here. Significant whitespace is a major reason I prefer Python for teaching programming.

1. I want kids to indent their code anyway; they may not realize it (or won't admit it), but this makes the code much easier for them to read. Kids will not do this unless they have to.

2. Unbalanced brackets are a major source of mistakes and confusion for my students. Relying purely on indentation resolves this problem—at the real cost of introducing indentation mistakes, but since I want kids to indent their code anyway, this is okay.

By the way, an adjacent recommendation is to configure the editor to indent with tabs instead of spaces (regardless of how you feel about tabs vs spaces in production code). Otherwise, kids will invariably end up with lines indented by 3 or 7 or some other wacky number of spaces. If possible, highlight the tabs in a different color so the kids don't use spaces by accident.

reply
christophilus 31 minutes ago
This is the job of a tool like go fmt. Obviously, it’s good discipline to indent, but I wouldn’t choose this as the deciding factor for picking a first programming language.
reply
Wowfunhappy 24 minutes ago
go fmt fixes #1, but not #2. It also doesn't help if the code is not syntactically valid in the first place.
reply
NooneAtAll3 50 minutes ago
while everyone already pointed out that this time it's not the case, I want to literally answer the question you asked

"easy-to-learn languages" use indentation because otherwise newbies would not indent at all

I you try teaching programming, you'll find that indentation is one of things students "optimize out" - it is not important to the program, it is opposite of lazy and it's not noticeably harmful on the tiny scale of programs you learn programming from

Indentation discipline only starts to matter when you need to work on the same code for quite some time and code itself takes a lot of space - the "read more then written" situation. And most study paths do not encounter this regime

reply
jim_lawless 3 hours ago
It looks like MiniScript uses the keyword "end" followed by another keyword to denote the end of a specific type of block.

From the Quick Reference guide here:

https://miniscript.org/files/MiniScript-QuickRef.pdf

"Indentation doesn't matter (except for readability)."

reply
graemep 3 hours ago
I think indentation is more intuitive. Even people using languages that use braces or similar usually use indentation to make code readable. If doing that you end up explaining both ideas (use braces and indent).
reply
Gormo 54 minutes ago
There's an important form/function distinction here, though. Indentation is useful for human readability, but braces function to give unambiguous direction to the compiler or interpreter. I think conflating these two different purposes together is a mistake: you shouldn't risk altering or breaking the logic flow of a program simply by adjusting its visual formatting.

The fact that we use whitespace for layout is precisely why it's a bad idea to assign it semantic value. I'm a fan of both braces and semicolons for that reason.

reply
Wowfunhappy 37 minutes ago
I think this is probably correct for an experienced programmer but incorrect for someone who is new.
reply
Gormo 11 minutes ago
I'm not sure I understand what you mean. How would the friction inherent in conflating layout and semantics together depend on the experience level the programmer? Different programmers might have different ways of dealing with that friction, but I'd think its existence would be a property of the language itself.
reply
Wowfunhappy 6 minutes ago
When you're starting out, the best form to express to other humans is probably the one you're expressing to the computer. This isn't literally always true—I don't think beginners should write in assembly—but a decent guideline. The nuance that you're writing for two different audiences is a higher level skill that takes time to develop.
reply
latexr 3 hours ago
I get why people like indentation for this. I don’t think there’s a right or wrong answer and it’s a matter of personal preference.

That said, my preference is curly braces (or whatever) because I’ve found indentation is often a bother. Yes, most of the time you use indentation together with braces, but not every time. There are many occasions where code is clearer without (or with custom) indentation. Furthermore, indentation-based parsing makes experimentation and finding issues more difficult. Sometimes you need to extract a small part of a larger block to bung in a REPL or something and now you’re fighting with stupid errors because of formatting, adding to the frustration.

Regarding intuitiveness, for beginners I have some doubts it makes much of a difference, and if it does I also doubt indentation wins. If you know how to write (which is a prerequisite), you know what parenthesis and quotation marks are, you understand they encapsulate something separate from the rest. Indentation is a different concept.

reply
btreecat 2 hours ago
I get why people blame indentation like this. I don't think it's right or wrong to ignore the tooling that directly addresses minor issues with indentation or matching braces honestly.

That said, my preference is to use the tools built into my editor and available on the CLI or web to assist and fix formatting and syntax. You get instant feedback on incorrect formatting, and I generally find that synthetic scope mistakes (regardless of method) are eliminated.

reply
layer8 2 hours ago
The language (MicroScript) doesn’t require indentation, it’s only used for readability, like in BASIC, FORTRAN, PASCAL, and similar languages. Blocks are delimited by key words (“end if” etc.).
reply
echoangle 4 hours ago
It makes sure the thing you use to judge scope (indentation) matches the think the computer uses.
reply
alex_x 3 hours ago
That's a fair point for students, but as a beginner who simply wants to tinker with fun stuff, you can go very far without knowing of a program stack.

I think I had the wrong audience in mind

reply
neomech 41 minutes ago
Shame there isn't a Raspberry Pi version available.
reply
Rohansi 26 minutes ago
It is built in Unity which doesn't let you build for ARM Linux without paying an unknown amount of money.
reply
jan_Sate 34 minutes ago
Couldn't someone just rebuild the source code for Raspberry Pi?
reply
janandonly 3 hours ago
I was a bit confused until I realized that https://miniscript.org/ isn't the same programming language as https://bitcoin.sipa.be/miniscript/.
reply
fivetomidnight 3 hours ago
Free but not Open Source? Did I miss that?
reply
helsinkiandrew 3 hours ago
> Free but not Open Source? Did I miss that?

The miniscript language itself is MIT License:

https://github.com/JoeStrout/miniscript

The Minimicro code doesn't seem to have any license in the repository or code:

https://github.com/JoeStrout/minimicro-sysdisk

reply
tokai 49 minutes ago
So Open Source but not Free (Libre).
reply
bmenrigh 3 hours ago
Mini Micro seems to be built on Unity. The MiniScript portion of it is open source https://github.com/JoeStrout/miniscript but the version packaged for use by Unity costs some money. I can't tell if the people behind MiniScript are the same people behind the Mini Micro.
reply
p2detar 3 hours ago
Looks cool. I most enjoyed the zombies game someone uploaded on itch.io. One thing to note is that game speeds feel very fast to me. I barely did anything in the asteroids game and the others also seem to run quite fast. It could be just me.
reply
layer8 2 hours ago
Apparently it’s high-level only, i.e. no underlying machine instruction set or addressable memory.
reply
Rohansi 2 hours ago
That's how most of these fantasy machines are. Most people are only going to want to use a high-level language so it makes more sense this way.
reply
pietje 3 hours ago
I wonder how hard it would be translate this to Dutch. I would like my kids to start experimenting but that’s a bit impractical if they need to learn English first..
reply
janandonly 3 hours ago
Ik denk dat Claude dat zo voor je doet in een paar minuten tijd.
reply
__natty__ 3 hours ago
Why not for 3 eur buy some basic arduino or other tiny hardware to tinker with and for another few eur, tiny i2c/oled display, wires and set of basic switches? You start programming with option to expand to the larger project in the future. You have constraints of real device, community is much larger and there are more learning resources.
reply
layer8 2 hours ago
Because those don’t boot into a fixed interactive programming environment with a BASIC-like language and REPL to easily do simple things on the same screen and using the same keyboard you also use for programming. Your proposed setup has more complexity and is less intuitive for a learner.
reply
Tepix 3 hours ago
For starters, there is way more friction both in buying hardware and waiting for it to arrive and developing on real hardware in general.

I agree however that it's super cool to have real hardware to run this on.

reply
newswasboring 3 hours ago
Because moving a sprite is much more exhilarating than blinking an LED.
reply
yard2010 3 hours ago
Well how about moving a sprite by blinking a few leds?
reply
boundless88 3 hours ago
I think that's really cool. I wonder when this started development?
reply
the_af 42 minutes ago
Is this a similar project to the existing Pico8?
reply
neomech 41 minutes ago
Probably more like Picotron. https://www.lexaloffle.com/picotron.php
reply
sibidharan 2 hours ago
This feels nostalgic!
reply
eliotthbyrnes 3 hours ago
Ah the nostalgia
reply
qsera 4 hours ago
Only virtual? That is sad!
reply