[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)