But the joy of working on a machine that's part of your life, without the need to please end users (which is cool too but sometimes induce pressure), well, that's basically coding like when I was a kid. Except that now I have a TON more knowledge to work with !
And, while working on disk emulation I had the pleasure ot discover those many copy protections that "prevented" me to get many games :-)
And the other thing I love about it is the communities are typically super open and collaborative. I remember back when I first got into GBA development, there was a ton of docs, tools, libraries, and other things that folks had put together and then shared with one another. It's a lot of very passionate people sharing some very niche interests, which can be incredibly fun (of course it can also be a drama filled nightmare but such is life with passionate people).
Namely passion, curiosity and probably not having much more other hobbies beside programming or hacking stuff around.
I recently went to try to improve a Linux kernel input device driver for a USB headphone: adding unit tests (whose execution is nearly instant). I have learned a ton of things about Linux development, C (I don't know C at all), input devices driver system (hid), the USB protocol and my device specifications.
I have never managed to boot it live to test with my actual device. That is despite spending probably despite spending probably 40 hours including a 10pm - 4am session on a Saturday night. But I had lot of fun doing it and I think that was the point.
I guess you can't beat passion and curiosity.
I guess in my case, I had to find a hobby that was not exactly like work, even if it was work-adjacent.
When I was more junior, or not doing programming as a full time job, I was more motivated to work on personal projects. Now I am more senior and programming/managing people full time, I can't get motivated to work on code-related projects in my downtime. It sucks :/
I just use my free time to code. I see it as a relaxing activity
In terms of where to find the time, there are 24 hours in the day, at least 8 for working the 9-5.
Personal projects are often embedded coding of some sort, though I spent some time poking at the PS3 firmware when that was first cracked too.
Spending months reversing and emulating a console… that takes dedication I don’t have though. I guess these guys are really itchy? Or it’s in a really hard to reach spot?
I think keeping a schedule that way has prevented me from every souring on programming in my free time.
These things excites me but i never got to start
youtube.com/@lauriewired
Self-promotion I know, but I hope someone finds it useful
Start making a game, and you'll soon realise how the CPU works, and making a simple emulator will start to seem very possible.
"Blue Fox: Arm Assembly Internals and Reverse Engineering" by Maria Markstedter
https://www.wiley.com/en-us/Blue+Fox%3A+Arm+Assembly+Interna...
https://www.theregister.com/2023/08/31/a_star_star_domains/
"Maria Markstedter – a noted author, assembly language expert, and security researcher who's written extensively about Arm at the websites she operates – received a cease-and-desist demand from Arm's lawyers. Her offense? According to the letter she shared on Xitter, using the trademark "Arm" in the domain name arm-assembly.com that she used to promote a book she wrote about the ISA."
And software reverse engineering is just grunt work. I'd start with a very well known existing hardware platform with a very simple CPU design--the GBA is actually a really nice platform as the ARM has a very sane ISA and it's all memory mapped I/O--and get a devkit and start experimenting by writing software to run in an emulator so you can get a feel for how the hardware works.