- Here is the direct link to his project page: https://www.sunrise-ev.com/z80.htm. Lots of technical details. It's $80 for the full kit.
The kit is very cool, it has a lot of features in such a small size. But I have to wonder about its usefulness, even as a teaching device.
If a student wanted to learn about microcontrollers and a little bit about electronics, I'd probably point them to an 8-bit Arduino these days (e.g. an Arduino Nano, or my preference, a SparkFun Micro). There are so many display devices, input devices, and sensor devices to choose from, with readily available device drivers. After the initial learning period, they can graduate to the 32-bit Arduino-compatible devices (ESP8266, ESP32, STM32, SAMD21, SAMD51, etc). If the Arduino-flavored C++ is too much, they can use one of the boards that support MicroPython.
If on the other hand, they were interested in the software side of the embedded world, the easiest and cheapest entry into Z80 assembly language programming is an old TI calculator using the Z80 processor: i.e. the TI-83+ or TI-84+ (but not the TI-84+ CE). Those can be had for $20-$40 on eBay. The development environment on the host computer (Z80 assembler, firmware uploader, host emulator) can be tricky to set up, but using a full-featured assembler on a desktop computer is so much easier than doing hand assembly into hex code and punching in those numbers on tiny buttons. Yes, this is what we had to do in the 70s and 80s, but that gets old quickly after the assembly program grows bigger than a few hundred bytes.
If on the third hand, if I wanted to re-live the look and feel of the old retro computers, and re-experience how much effort it took to program those things, I think I'd want to get a real vintage computer from that era: a C64, Apple II, ZX-81, an Amiga, an Atari ST. Or, are those old computers too rare and expensive now? Heh, maybe those high prices are actually a good thing, knocking some sense into me, telling me that, no, I don't actually want to re-live those programming days.
- This is a cool feature, but I feel like it's open to abuse and spam. Which makes me wonder, do you have plans for handling moderation and spam prevention in the future?
When a website is small, this is not a problem. As the website becomes popular, it will attract the lowlifes who have nothing better to do with their lives other than scamming, spamming, and trolling. I would hate to see this site overrun by those people.
- I've been reading about Forth on and off for 30-40 years, and this is indeed a well-written article. Let me write a contrarian opinion about the Forth language itself though.
As far as I can tell, the Forth community spends most of its time doing 2 things: 1) Explaining how Forth works, and 2) Writing new Forth interpreters. I have never seen it used to create something useful. I've worked on tiny 8-bit microprocessors, 16-bit DOS programs, 32-bit desktop GUI apps, and 64-bit cloud applications running on thousands of servers. I've seen hundreds of apps pass through my computers over the years. Those apps have been written in assembly language, C, C++, Fortran, Java, Python, JavaScript, Go, and others. Never Forth.
The article has a quote: "To understand Forth, you have to implement a Forth". I think this severely limits the usefulness of Forth. What other programming language imposes such a mountain of cognitive overhead? Do we need to write a C compiler to understand and write C applications? Do we need to write a Python interpreter to understand Python? Do we need to write a Z80 assembler to write Z80 assembly language? No. Yet Forth claims to be "simple".
Forth is unreadable. I say this as someone who has written maybe thousands of lines of RPN code on HP calculators. I love RPN calculators, but Forth is unreadable, because 6 months from now, I would not be able to read my own code. Building non-trivial applications requires building on top of the works of others, including my previous self. Forth programs are not compatible with other Forth programs. As the article says, "Chuck Moore rejects the standardization of Forth". Forth seems unsuitable for building substantial applications, especially ones that require teams of engineers instead of a single person.
Forth is apparently suited for resource constrained environments, like microcontrollers. One of the most successful microcontroller projects is Arduino, supporting hundreds of different microprocessors. Does Arduino use Forth? Nope, it uses assembly language, C, and C++. Hobbyists with almost no programming experience can understand C, write C, and create useful applications. They don't want to write a Forth interpreter to blink a few LEDs, read some GPIO pins, and send some packets over WiFi on an ESP32 chip.
I rather think of Forth, not as a programming language, but as a technique, similar to binary trees, regular expressions, or recursive descent parsing. It is seems worthwhile to have in your toolbox. But it is not something that seems reasonable for building applications of substantial complexity.
Having said all that, I would love to hear about anyone's success at using Forth for their projects (I mean, something other than, "I built my own Forth interpreter").
- I agree with everything you have written but I will say this, Factor looks like you can write “useful” programs with it. I was watching a presentation on Factor on YT and I was thinking that’s cool and all but how do you make an HTTP request and parse the response and almost immediately after that the presenter showed it.
- The only significant program I know of written in Forth is the 80s game Starflight. You fly around the galaxy, exploring planets (each procedurally generated) and eventually solving a mystery. And ... I can't think of any other program.
- Can you take a look at the rendering of the site on mobile phones when you get a chance? On Android/Firefox, the upvote arrow is so small, it is unclickable unless I zoom-in by a lot. Also, the font size of the top header bar is far too small. The original HN site does not have these problems.
- Yes, I know. It sucks. It's being worked on. I just committed support for tags (https://twostopbits.com/item?id=474) and my next task is to make the mobile experience useable.
Yes, I am aware of the scale of abuse. I fought it back when I was doing anti-spam and I see it every day at Cloudflare. The site has a bunch of moderation and anti-spam tools already built in and I plan to use them!