[HN Gopher] Writing Toy Software Is a Joy
       ___________________________________________________________________
        
       Writing Toy Software Is a Joy
        
       Author : todsacerdoti
       Score  : 79 points
       Date   : 2025-06-15 19:02 UTC (3 hours ago)
        
 (HTM) web link (www.jsbarretto.com)
 (TXT) w3m dump (www.jsbarretto.com)
        
       | azhenley wrote:
       | 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 wrote:
         | 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.
        
       | saulpw wrote:
       | Like most estimates, these seem off by about 3x. At least if
       | you're writing it for the first time.
        
         | mikebenfield wrote:
         | 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.
        
         | azhenley wrote:
         | What I like about these projects is that you can make them as
         | simple or as complicated as you want.
        
         | tatjam wrote:
         | 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 wrote:
         | 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 wrote:
           | And a POSIX shell is only 3 days. It's an interesting list
           | but the difficulty/time elements are all over the map.
        
         | layer8 wrote:
         | For some, it depends on the definition of "toy".
        
       | JonnyReads wrote:
       | This list reminded me of Build-Your-Own-X
       | (https://github.com/codecrafters-io/build-your-own-x)
        
         | Revisional_Sin wrote:
         | That's a great list!
        
       | spacecadet wrote:
       | 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.
        
       | grep_it wrote:
       | 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)
        
       | opticfluorine wrote:
       | 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.
        
       | ulf-77723 wrote:
       | 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
        
       | zzo38computer wrote:
       | 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.
        
       | ylee wrote:
       | 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.)
        
       ___________________________________________________________________
       (page generated 2025-06-15 23:01 UTC)