I started my side project in about 1993. I lost it completely[1] some time around 2000 and decided to rewrite it starting in 2008. Since then I'm still only 20% of the way through it (I probably got to 60% before).
Right now it's dropped way down the priority list below: wife, 2 year old daughter, full-time job, part-time degree (now complete!) and startup (that will hopefully take over from full-time job some time in the future).
1. Long story, I had a backup but the primary and backup were destroyed independently within hours of each other such was my luck.
Are you willing to share more info on your side project? Sounds like it's something meaningful enough to work on for nearly 20 years (minus gaps), and yet it sounds like it's not your startup... very curious as to what it is.
Sure, it's nothing special, it's a Robot Arena type programming game. Yes there are lots of them about (that have existed for many years), but I'm trying to remain as faithful as I can to a version (by SPA Publishing) that appeared on the RM 380Z/480Z machines back in the late 80's. The robots were programmed in a LOGO style language (I still have photocopies of the manuals somewhere). All of this was going to be open source (if I'd released it earlier I'd be able to find a backup!).
Rather than implement a LOGO interpreter I wanted to do it a slightly different way to learn some useful stuff along the way, so I decided to implement robots as a program running on a virtual CPU. I designed an instruction set and corresponding assembly language, wrote a processing engine that could run multiple robot programs at once, wrote an assembler to go from assembly to compiled robots. Next on my list was a compiler that would do LOGO -> robot assembly.
There was a strong ARM/RISC influence to the instruction set/assembly language as I'd been using Acorn Archimedes machines at college in the early 90's.
I then built a control system on top of the game engine that would run all of the robots against each other in all combinations and provide a league table of which robot came out best. The end goal was to stick it all on a website and allow people to submit their own robots and see where they came in the league table. They'd also be a discussion forum on programming tips/tricks, and for people to write compilers that would take other languages as produce appropriate assembly language.
I definitely learned a lot whilst doing it first time. One of the assignments in my first year at University (Comp Sci) was to design an instruction set for a basic CPU that would be able to be programmed to perform a certain bunch of tasks. It's quite easy when you've got programming experience in Z80, 6502, 68000, x86 and ARM, and you've designed/implemented at least one of your own already.
Other things I remember that were useful were writing my own PRNG (there was an instruction to get a random number) so that I could have individual PRNGs for each robot (and the game engine) all derived from a single 'game' seed number which made each game (with random starting positions) deterministic and repeatable.
Creating a two-stage assembler (thanks to years of typing "FOR loop% = 0 TO 3 STEP 3", "[ OPT %loop", etc), compiler design (for LOGO -> assembly), maths for doing intersection of two lines, intersection of a line and a circle, integer instructions, floating point instructions (and implementing this in a portable way), etc.
In '94 I'd hacked both an X GUI and a linux SVGAlib interface onto it so you could watch the games play out. Later on I'd even came up with a dissertation proposal that used it as a fitness function for robots created by genetic algorithms but decided against it after discussion with the tutor (no less than Dr Noel Sharkey who later sat as a judge on the UK TV version of Robot Wars).
I may finish it one day, and 10 people may remember the game and be interested in writing robots for it, but that bit doesn't matter one bit. It's my side project and I kind of enjoy doing it (or even just thinking about it) probably more than the feeling I'd get if it was finished and done.
I dug around and found the latest version of my latest incantation, which is less developed than I thought. It only contains the source of the assembler; there's nothing of the game engine itself. But there's a description of the assembly language and its encoding.
Nothing is uploaded at the moment (I'll start to add things once I've cleaned it up and sorted it out) but I've created a github repository for it https://github.com/alexkus/robotarena if anyone wants to watch it and keep an eye on the (slow) progress.
I started my side project in about 1993. I lost it completely[1] some time around 2000 and decided to rewrite it starting in 2008. Since then I'm still only 20% of the way through it (I probably got to 60% before).
Right now it's dropped way down the priority list below: wife, 2 year old daughter, full-time job, part-time degree (now complete!) and startup (that will hopefully take over from full-time job some time in the future).
1. Long story, I had a backup but the primary and backup were destroyed independently within hours of each other such was my luck.