You start with a "What if", and it tends to nibble at the back of your brain. Then it evolves to "Why not?"
You hack it and see the light, or more specifically you fail to find a reason for the "not" part, and you make it.
And yes, there's an immense satisfaction for doing it. Not from "look at me" angle, but from "ach, it was possible, and I made it. It turned out I was capable enough to make it work. Let me get some tea" angle.
I like feats like this. Honestly kudos to them. Both impressive and fun. Delightful, more precisely.
Along the way, I learned that when "what if?" becomes "I have to", the drive in me just dies. So I've had to learn how to stay in "what if?" mindset even when I have a deliverable I have committed to.
Sometimes, this means picking at a totally unimportant part of a project, getting it working and then—while in the same mental groove—shift to delivering the core feature.
Also, thanks for the kind words!
I once ported Quake 1 to the Rockbox operating system for MP3 players, which enabled it to run on the Apple iPod: https://www.youtube.com/watch?v=r6V-4AZ7pkA
The whole world of software ports basically boils down to "anything is possible, given enough memory, pixels, and time". The actual process of porting anything is sometimes incredibly tedious (e.g. "scour the entire source code for unaligned memory accesses, and manually rewrite all of them"), but also gives a chance to do some very clever things (like, "use the piezo speaker to beep out the address of a fault, because nothing else works on the device after a crash").
What made me do it was 1) the satisfaction I got from seeing my work produce something which, at first glance, shouldn't exist (Quake... on an MP3 player?), all while 2) learning deeply about software close to the bare metal, which is fairly hard to do early in one's career. There's of course also the factor of having lots of free time - I did my port when I was still a student with not very many responsibilities, so I could afford to spend entire evenings and weekends poring through mountains of C code. Nowadays, not so much...
How do people do that?
When you take small consistent steps, you can go very long distances at relatively short time.
Asking seriously. Those kind of feats are amazing :)
As you take small steps, you need to start with small targets.
In my second internship, my mentor shown me a PC, and said "This is yours". Then produced a Nokia 7110 and a serial cable for said phone. He continued: "We need this phone to send SMS messages, via an application on this PC". Catch: The PC had no OS, and the software he wanted was nonexistent.
I said OK, and he asked: You know Linux, right? I truthfully said "Installed a couple of times, spent time with it." He produced a Debian 3.0 CD from a drawer, and said "Let's see whether you can install this" (Debian was hard, then).
My first target was to get Debian run on that system, then make it connect to the network.
Then, I learnt how to install and manage packages on it via "dselect".
Next, I managed to found the user manual of the phone to find out that it has a serial modem on it. I also found the AT reference guide for the phone the same day IIRC.
Next day I managed to connect it via minicom, talk with it and send a couple of SMS messages to myself.
With the knowledge I had, I found how to talk with that phone over C (Thanks Beej, and his guides). In 6th day, I was sending messages. In 8th day, the tool was a daemon waiting for messages via a specified port in a specified format.
The IT department written file watching daemons and embedded to their systems, allowing them to create many many "wire traps" inside system to detect when something went wrong. That system worked for 6 years and saved enormous effort by notifying from the right place, at the right time.
This experience allowed me to discover Debian from top to bottom. I still use Debian, still do the research same way, and move step by step, because I built the confidence over that week.
The key is proverbially "not looking down", and just "thinking the current mile", like a marathon runner. You're a web developer? I don't care. If you start from the edge of your knowledge and just walk, you can go great distances. The target is incidental here. A Quake port, an SMS daemon, something bigger/smaller... Doesn't matter.
What matters is going somewhere new, learning something you don't know. Then you can build upon this. One day, you may find yourself beyond the people who inspired you, which happened to me without noticing, but it's a story for another time.
If you want to talk on this further, you can also reach me via my webpage (see my profile), or we can continue via here.
P.S.: I still have the AT Reference Guide, both digital and in printed and bounded form. :)
The first step of displaying a test pattern, sending test bytes between devices, etc. is the biggest one, and in my case usually involves finding an open-source program that is capable of doing the thing and butchering it until it only does the thing. Every step after that is incremental, just like any other development.
For the second point on persistence, this guy must have a lot of patience. I've struggled on this actually. If the initial push is strong enough I sit through 3-4 days but at least for me I can't seem to come back and finish it if I put it away for more than a day.
Truly impressive considering all this.
Some people build hot rods or fix old tractors, some people collect all 7,341 achievements in some game, some people catch up on the complete available catalog of Doctor Who, some people go out and bag peaks or train for better times on their marathon, some people grind on their karaoke performance of Tainted Love, some people devote themselves to being close with and available to their kids.
This is a beautiful project, but what makes you feel like the motivation is somehow different here than it is for those?