jonas hvid

Programming can still be magical

Computers used to be fun. Programming felt magical – it gave you the ability to create something out of nothing. Over the last few decades, personal computers have become increasingly impersonal, and programming has lost much of that magic.

But some still recognize that programming can be a creative endeavor, undertaken for its own sake. In fact, there are thriving communities working to create elegant, empowering tools for the next generation of tinkerers. In this article, I want to highlight some of my favorite projects that are working to bring magic back to programming.

PICO-8 is a fantasy console – an emulator for a Commodore 64-era computer that never existed. You can just boot it up and start typing in commands from the manual. PICO-8 is perfect for people who are new to programming, and its constraints make it a fun challenge even for experienced programmers.

Pharo is a living descendant of the legendary Smalltalk-80 system. Describing it as a programming language would be inadequate – it's like a world inside a computer. Pharo is expansive, yet playing around in it feels cozy. Spending a few weekends with this environment has enriched my appreciation for what programming can be.

Few things are more satisfying than bootstrapping an entire programming language from scratch. Jonesforth is a complete implementation of the Forth programming language in a couple thousand lines of thoroughly commented assembly code. Forth sits somewhere in the space between genius and insanity. It's weird and beautiful, and well worth tinkering with.

If you want to go a level deeper, Andreas Kling is documenting the process of building an entire operating system in C++. His videos about SerenityOS show just how much work goes into building an operating system – but also demonstrate that such a feat is remarkably achievable.

Modern computers are complicated, but the principles behind them don't have to be. Ben Eater's video series in which he builds his own computer on a breadboard is a must watch, even if you're not planning to follow along yourself. He explains the process so elegantly that it almost seems obvious.

But you don't need an interest in electronics or operating systems to enjoy programming. Web development has a reputation for being needlessly obtuse, but at its best, the Web is one of the most amazing technologies we have. It lets you create something that anyone, anywhere can start using the moment you put it out there just by clicking a link.

Glitch boils Web development down to its basics. With one button click, you get your own little server on the web where you can build anything you want. There's no deployment, source control or build pipelines – just code.

And the Small Web is home to hundreds of little communities, existing outside the big bubble of commercial social media. If you want your own space on the Web, there's Neocities, and Special Fish to name a few. Why should you have to sell your data just because you want to connect with people?

If programming is getting stale, I encourage you to check out some of the projects on this list. Try to create something unoriginal, useless and unfinished – and have fun doing it. You don't need a reason to write a program or build a website. It's okay to create something just because it's fun to create. An app can be a home-cooked meal. Programming can still be magical.

Thanks for reading! If you found my work curating this list valuable and want to show your support, you're welcome to send a small tip to my Monero address: 84aWRTVRX8mTLbBbYh3qqZXdxG4GYjiuXVxcAsyvj4FFSprBaH96dxm4DREGybFJraCnLNrXEoMCBZrLcuQk98wwCxnMDFj