2

What have you failed to build?

 3 years ago
source link: https://lobste.rs/s/fgt5zm/what_have_you_failed_build
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

What have you failed to build?

Some time ago I got bitten with the roguelike craze and was heavily into different roguelikes (Dwarf Fortress, Stone Soup, Nethack). I decided I’d take a stab at building my own (in Rust, of course, because it’s the best language on earth).

Unfortunately, I got a bit carried away with designing the game. Instead of trimming the specification down to what I could handle, I stupidly went ahead and tried to implement that monstrosity (the mapgen code was, what, 3k lines?). I had all kinds of fancy plans for keeping track of each tile’s temperature, atmospheric makeup, air density, etc. and even for modeling each monster’s thoughts (similar to Dwarf Fortress). I can’t even bear to look at that code anymore, so it’s unlikely I’ll pick it up.

x64k

edited 5 hours ago

| link

Oh God, I haven’t finished so many things that I’ve long lost count of them. I have a long series of projects in various states of unfinished. I don’t really regret it, most of them are unfinished because there was something I really wanted to do, and I did it, and the rest of the project was just an excuse to do that particular thing. Others, especially those that I did in a professional context, were cut short by budget and/or time constraints. But it’s fun to reminisce about them. In no particular order, some of the things I started and never finished in the last 15 years or so include:

  • Single-board computers, based on various processors (6809, Z80, 8086, we-don’t-need-no-stinking-microprocessor-I’ll-just-wire-my-own – the Z80-based one is that sorta made it to the breadboard stage). But I did build/play with various parts that I didn’t understand well enough – like clock generators or the most expensive programmable interrupt controller in history, an 8259-ish clone that “ran” on a Zynq-7000 development board because that’s what I had lying around at work. Honestly, the biggest reason why none of these got finished is that I didn’t really want to build a whole computer, I just wanted something with front-panel switches. I have some killer front panel designs, I just don’t have a computer to plug them into :-D.
  • Sort of in the same vein, an emulator. I must have started dozens of them but never finished one. It’s one of those goals I never accomplished but one day it’s gonna happen.
  • A debugger/monitor for small (e.g. MSP430) systems (context: I was working on an operating system for that kind of devices at the time – that one was actually finished, put in boxes and sold and all – and I wanted to test/prototype various pieces of peripheral code/drivers without the whole OS behind me, but I also wanted to be able to poke at things in memory in an interactive manner and so on, and debugger support at the time was really bad on some of the platforms we needed, including the MSP430). It sort of happened but I never used it enough to polish the rough edges. It was actually useful and interesting – at the expense of a little flash space, you got an interactive debugger of sorts over a serial port that allowed you to “load” (eh) run and edit small programs off of a primitive filesystem. Realistically, it was mostly a waste of time: this wasn’t a microcomputer, it “ran” on MCUs inside various gadgets. The time it took to “port” it to a new one vs. what you got in return just wasn’t worth it.
  • A SDR-based radiotelescope. I had a pair of Ettus Research SDR boxes more or less all to myself for a few months and I could play with them more or less at will as long as I didn’t break them, but the company I was at went under before I got to try anything (my knowledge of antennae was, uh, I’d say rudimentary but that would probably be overselling it). I did get to write some antenna positioning code that I later integrated into some real-life firmware at $work so it wasn’t all wasted.
  • A Star Trek meets Rogue, uh, I’d say rogue-like? Unfortunately implementing all the cool things (random story generators! random races with political intrigue and all! Gandalf-like figures roaming the galaxy!) was way more fun than implementing the actual game so I ended up with 40,000 lines of Java that spit galaxy news in a log file and nothing else. I learned a lot about sparse matrices though – that was actually the whole reason why I wanted to get into it in the first place (tl;dr I wanted to model something that supported tens of thousands of star systems with millions of ships and so on) – and of all the projects in this list, it’s the one that would’ve probably been easier to make into something cool. I tried to restart it at some point, then I learned about Dward Fortress and I honestly couldn’t see the point anymore :-).
  • A software synthesiser that tried to use some pretty advanced physical models to generate wind instrument sounds. Unfortunately I got so bogged down into the modelling side of things that by the time I had some basic prototypes, integrating them into a program worth using wasn’t really fun anymore, and I also couldn’t (still can’t…) really play any wind instrument so my understanding of these things was limited. I later tried to do a more ambitious synthesiser for a harp (tl;dr also software-driven but it used lasers instead of strings) for my final year university project but that never happened, and while I have a crude hardware prototype tucked in a closet somewhere, I never got around to writing any of the hard parts of the software. The biggest problem I had, and the main reason why this didn’t get anywhere, is that I just didn’t understand enough about real-time audio processing to get something useful. I still don’t.
  • An Amiga Workbench clone for Wayland. By the time enough of the cool features got implemented (e.g. multiple screens) I got so fed up with Wayland and Linux in general that I never wanted to finish it. Various bits and pieces, like an Amidock clone, got to a usable(-ish) state. This is the only project in this list that I didn’t really enjoy. I was already fed up with these things when I started it, I just didn’t really want to admit it. I don’t want to say anything about how this one could be improved and why I failed at it because I’m quite bitter over these things, but tl;dr I’d rather have all my teeth pulled out and swallow them than touch any of that stuff again.

There were others, much smaller, these are the cool ones.

All in all I think I finished very few of the side projects I started but I learned a lot out of all of them and many of them came in handy when doing stuff I actually got paid for. I have zero regrets for not finishing them. It’s important to finish some things but not all of them.

Reading a long list of projects that failed sounds a bit like a long list of failures but really, they weren’t. I achieved most of my goals. If I had an infinite supply of free time I could probably finish the ones that were never finished because they were too ambitious for my level of knowledge at the time (e.g. the wind instruments thingie) but there are so many cool things that I don’t know how to make that it kindda feels pointless to use my free time doing the ones that I now know how to make.

(Edit: I guess the point I’m trying to make is that no time spent hacking on something cool is truly lost, no matter what comes out of it in the end, and no matter how modest or grand the ambitions behind them. There’s a whole side project hustle mill going on these days and this whole “don’t send us a resume show us your Github profile” thing and I think it’s a con, and all it’s doing is making people afraid on doing things in their spare time, because they treat these things the way they treat projects they do at work. Computing was my hobby long before it became my profession, and it still is; finishing something “successfully” is besides the point when it comes to these things – their function is fulfilled as soon as a line of code is written or a piece of schematic is drawn, that brings me joy all by itself. Don’t fall into the trap of taking these things more seriously than you ought to. Most of us spend at least 8 hours/day agonising over whether something will be finished successfully or not – unless you enjoy that part of the job, there’s no reason to take it home with you.)


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK