Motivation
The computers of today are too complex to understand. To the uninitiated, they feel overwhelming. They take a long time to boot. They offer cluttered interfaces with lots of icons, buttons, and options. They are built on dozens of layers of abstraction. And because of these reasons, they feel fragile and not something that can be experimented with.
If you want to learn to code today, you face a steep learning curve. You need to understand how to open and operate an editor. You need to understand the file system so that you can navigate to the files you create. And you need to understand the basics of the command line to maybe-compile and run whatever you wrote in the editor. This is tedious and incurs a ton of mental overhead just to get started.
But it doesn’t have to be this way. In fact, it didn’t use to be this way.
If we look back to the 1980s, computing was much more approachable and discoverable—even if it did not look like so. I have pretty fond memories of my Amstrad CPC 6128 and its Locomotive BASIC 1.1 interface. The experience offered by that computer was common back in the day but unique for today’s standards: the computer booted and was ready to accept commands in a couple of seconds; the computer was resilient to mistakes thanks to the system being stored in ROM; and you could control the full computer from the built-in language. Changing colors, drawing figures, playing sounds… were all at your fingertips. And once you learned a few commands on the command line, stitching them together to form full-fledged programs was a breeze.
With the move to a PC and MS-DOS a few years later, the essence of this experience was already lost: booting was slower; the computer could be “damaged” by modifying the wrong files; and the command line’s interface didn’t match the language of the programs you wrote. Sure, you could write batch programs, but that language was very limiting. That said, MS-DOS was still reasonably simple and shipped with the QBASIC integrated environment, which gave you all you needed to develop programs quickly.
Fast-forward to 2021. For most, computers have become content consumption devices. But the possibility of excitement is still there. I set up a Raspberry Pi that booted directly into DOSBox with QuickBASIC 4.5 and I could witness how my kids showed a different kind of interest in the machine than they had had before just with games. I only had to type a bunch of PRINT
and COLOR
commands to make them want to try stuff on their own. So I thought… this is cool, but it’s awkward to be confined to such an old environment. How hard would it be to bring such an experience to the modern era? Hence “E. and D.’s BASIC” was born. Or, simply put, EndBASIC.
EndBASIC is a modern take at implementing an integrated environment that offers instant gratification to the user/learner/programmer. The environment and the language are intentionally modeled after the experience that computers offered back in the 1980s—but don’t assume that those interfaces were too limiting: simplicity is powerful. EndBASIC is modern because the environment targets the web for ease of access, allows interacting with the Raspberry Pi as a learning device, and integrates with a cloud service for fun file sharing. Furthermore, EndBASIC is fully written in Rust, so whenever you are ready to make the leap into a “real language”, you can poke into its internals and tweak it to your own needs.
With that, I hope you enjoy EndBASIC as much as I have enjoyed creating it. I do not expect you to write shiny new programs in a language that is considered a dead end by most. No. My hope is that you use EndBASIC to learn or teach the foundations of programming and computing in an environment that is fun to interact with and that is tolerant of mistakes. Because, if you truly master the foundations, the specifics of the language or the operating system won’t matter as much.
Thank you for reading!
PS: Sounds interesting? Don’t forget to subscribe to news about launches and other interesting content by filing the form right below.