Writing Toy Software Is a Joy

90 todsacerdoti 19 6/15/2025, 7:02:17 PM jsbarretto.com ↗

Comments (19)

azhenley · 6h ago
I agree 100%.

Here’s why I prefer making “useless” stuff: https://austinhenley.com/blog/makinguselessstuff.html

And my list of similar projects: https://austinhenley.com/blog/challengingprojects.html

I want to do a database and then something involving genetic algorithms next. If I have infinite time, another video game emulator too.

zzo38computer · 4h ago
I had implemented some computer games in DOS.

I had wanted to implement a spreadsheet, although I intended a "zoned spreadsheet", which has a zone grid (separate from the data grid), and each zone row has a number of data rows and each zone column has a number of data columns, and some properties are then properties of zone cells and others are properties of data cells. I think this would be better than most existing spreadsheet programs.

I did not know of some of the things that are mentioned there.

QRY · 1h ago
Thank you for sharing these! I've been looking for something productive to do over the summer. Why not make some "useless" stuff, huh?
saulpw · 6h ago
Like most estimates, these seem off by about 3x. At least if you're writing it for the first time.
azhenley · 5h ago
What I like about these projects is that you can make them as simple or as complicated as you want.
mikebenfield · 6h ago
Or more. Actually some of them seem inverted. Simple compiler takes 3 months but a GameBoy emulator takes 2 weeks? That’s not my experience at all.
tatjam · 5h ago
IMO the difficulties are a bit off, if a 2D physics engine is 5/10, then orbital simulation cannot be 10/10 (even with the difficult stuff like J2 perturbation) ;)
jart · 4h ago
Also what's up with this 1 week to make a hash map? In C it's only slightly harder than creating a growable array.
Jtsummers · 4h ago
And a POSIX shell is only 3 days. It's an interesting list but the difficulty/time elements are all over the map.
layer8 · 3h ago
For some, it depends on the definition of “toy”.
ylee · 4h ago
I have never been paid to write code, and my formal CS education is limited to AP Computer Science, and a one-credit Java class in college.

I wrote 20 years ago a backup script implementing Mike Rubel's insight <http://www.mikerubel.org/computers/rsync_snapshots/> about using `rsync` and hard links to create snapshots backups. It's basically my own version of `rsnapshot`. I have deployed it across several of my machines. Every so often I fix a bug or add a feature. Do I need to do it given `rsnapshot`'s existence? No. Is it fun to work on it? Yes.

(I've over the years restored individual files/directories often enough from the resulting backups to have reasonable confidence in the script's effectiveness, but of course one never knows for certain until the day everything gets zapped.)

journal · 2h ago
https://3nsi2a2rf4.alternative-accounting.com/game

on mouse stop move over canvas

wont be available for long, that's my idea of toy software, vibe coded the smallest multiplayer game I could think of, about 75% complete. Just taking territories and there's a link to the IP address so you are on the team of the country ip address belongs to. Not smart enough for real game development so have to live within limits of my own abilities.

ulf-77723 · 5h ago
While the list includes tools which are at the most basic level - how many actually have built their own editor? - I do agree with the author. It teaches you skills, which are great for any software project.

Every time I learn a new language or concept, I try to apply the principle of achieving a basic task with it.

When the meteor framework came out, I created a bullshit bingo in multiplayer mode. People could create their own bingo cards or use predefined bingo cards with business bullshit terms. Anybody worked in a big corp and had a boring meeting? The multiplayer bingo for the win ;) It was never made public, just a proof of work and to get a grasp on how to use the framework, but had a few chuckles

grep_it · 5h ago
These are all great projects! When I find myself getting burnt out in my job I find that writing a little toy project usually helps be get back some spark. Some projects that weren't listed that I've enjoyed:

- GUI based bot for a small video game

- raft consensus algorithm

- ray casting

- simple b-tree or lsmtree storage engine

I'll also second chip8 emulator as being a good quick fun one! It helps there are ROMs that help quickly validate your implementation also (https://github.com/Timendus/chip8-test-suite)

JonnyReads · 5h ago
This list reminded me of Build-Your-Own-X (https://github.com/codecrafters-io/build-your-own-x)
Revisional_Sin · 5h ago
That's a great list!
zzo38computer · 4h ago
I had done a few related things to some of these, in some of the programs that I had written. I also think that there is a benefit of emulation especially if it is not overly complicated, that the program can run on many computers. I also think that there is the benefit for the computer to be understandable. I may later consider some of the other stuff, such as game that only persists 64-bits.

> Properly handling unicode, syntax highlighting, cursor movement, multi-buffer support, panes/windows, tabs, search/find functionality, LSP support, etc.

You do not need all of these things to make up a text editor. What I would like to have better is a text editor and GUI with better support for non-Unicode text. A feature they didn't mention, that I find useful, is being able to send some text to an external program and replace it with the result; I do sometimes use this feature in vi.

opticfluorine · 5h ago
This definitely resonates with me. One of my favorite pasttimes is to code away on a 2D multiplayer RPG engine, and I've ended up doing at least a few of the projects on this list as part of that (ECS framework, voxel renderer, physics engine). Integration with a scripting engine like Lua is another fun one for a list like this, especially if you try to do it in an idiomatic way for your main programming language and/or leverage code generation and metaprogramming.

One thing I've found I enjoy is working on a larger-scope toy project composed of many loosely coupled systems. It works well for me because no matter what type of project I'm interested in working on, I can usually find something applicable within the larger project. Currently on my to-do list are behavior trees and procedural terrain generation, and honestly I don't know how I'm going to decide which to do first.

spacecadet · 5h ago
Hell yeah! Ive been off and on working on a version of a 2D physics engine in the form of a zero-player game, been a great joy to hack away at over 2 years.