The 8-Bit Boy
A fake NES led me to programming.
I was born in Hangzhou, China, in late 1980.
I learned to read and write early, but I struggled with sports and making friends. I spent most of my time indoors, and the NES became my constant companion.
But it wasn’t really an NES.
In 1990s China, an actual NES was far beyond what most families could afford. It cost more than a year’s salary for the average worker, and the cartridges weren’t cheap either. So the market filled up with unofficial NES clones. The most famous of them was the Subor, a machine that nearly every Chinese kid from that era seems to remember.
Its ads were everywhere. They claimed children could use it to “learn typing,” since it came with a built-in keyboard. Of course, everyone knew that “learning” was just the excuse. The real reason to buy one was to play games.
I spent countless hours playing on it, even though I was terrible. I never managed to finish most of the games. Years later, with the help of an emulator, I finally went back and beat all the bosses that had defeated me as a kid.
But what fascinated me most about the Subor wasn’t the games themselves. It was BASIC.
The machine came with a built-in BASIC environment, and to me, that felt like the most powerful thing in the world. A cartridge might contain 4 games or 64, but no matter what the label said, the number was always finite. BASIC was different. BASIC meant possibility. It meant that instead of being limited to whatever someone else had made, I could try making my own — even if the graphics were ugly and the results were crude.
Get EtherDream’s stories in your inbox
Join Medium for free to get updates from this writer.
Whenever I found BASIC code printed in newspapers or magazines, I copied it down and typed it in at home just to see what it would do. At first, I didn’t really understand how it worked. The code felt mysterious, almost magical. Sometimes I changed numbers or commands just to see what would happen. That curiosity gradually turned into understanding. BASIC wasn’t hard to learn, and little by little, I began to understand the language.
Back then, I didn’t want to make simple little programs with lines and blocks. I wanted to build something real — something like Super Mario or Contra.
That desire led me to the library. After digging through every book I could find, I discovered an important fact: games like that weren’t made in BASIC. They were written in assembly language for a processor called the 6502. That was the first time I had ever encountered the word “assembly.” Before then, I didn’t even know what a CPU actually did.
What I learned next was not exactly encouraging. The 6502 was already an old processor from the 1970s — outdated, complicated, and, according to what I read, not really worth studying. Still, the name stayed with me.
More than ten years later, when I started exploring compiler techniques, I found myself returning to the 6502 instruction set again and again. It became my favorite playground for experiments. At one point, I even hid a 6502 virtual machine inside an anti-bot component and used it for encryption. With a few tricks, I made it extremely hard to debug, and nobody noticed what was really inside for years. I’ll write about that story another time.
In the late 1990s, my family opened a small home printing business and finally bought a personal computer. It wasn’t mine, but I was allowed to use it whenever no one else needed it. Because of my earlier experience with BASIC, I was immediately drawn to Visual Basic. The idea felt almost miraculous: you could build a Windows application just by dragging controls onto a form and writing a bit of code.
We still didn’t have internet access at home. At the time, it was both expensive and painfully slow. So whenever I ran into a problem, I had no choice but to write it down and come back to it later. If the computer was busy, I would draft code on paper, “debug” it in my head, and wait until I had a chance to test it on the machine.
In some ways, I still work like that today.
Give me a quiet room, a notebook, and a pen, and I’m comfortable. By the time my hands reach the keyboard, most of the real work is already done. Typing is often just the final step — the act of transferring code from my mind to the screen.
Originally written in Chinese, December 2022.






