My Story About Programming

I would like to introduce myself. My name is Arkan, and I’m a passionate programmer. My interest in computers began when I was about 10 years old, when I got an Atari that had simple games—like a tennis game with two bars and a moving point. You had to hit the point with your side bar, and if you missed, the other player or the computer would win. 🙂
Later, I got a computer that had the “Basic” programming language, which I didn’t understand at the time. Eventually, I bought a book with some sample programs written in Basic that could draw shapes like circles and stars using the ‘*’ character. I was fascinated by how simple code could create something visual.
When I was 17 years old (in 1995), I got a Commodore Amiga 500, which was based on the Motorola 68000 processor. I really enjoyed its games. There was a shop that sold Amiga games by making copies, but they used a copy protection system that prevented me from duplicating them using XCopy. This made me curious—how could this protection system stop XCopy from working?
That curiosity led me to a book on assembly language for the Motorola processor used in the Amiga. It was difficult to understand, so I put it on the shelf. Some time later, the same shop offered an assembly language course, taught by a medical student in his fifth year. He taught us half of the book I had, and I was thrilled to finally understand how assembly language worked. 🙂
I eventually finished the book and started experimenting. I saw my teacher using “Amiga Monitor” to load a game into memory without running it, then execute it manually. I found this very interesting and began learning more about “Amiga Monitor.”
A friend of mine had a list of protection systems used to prevent game copying. I was excited to get it because I spent my time trying to add protection to programs and then break it using Amiga Monitor.
Later, I found another Amiga book that explained how Amiga interrupts work, how to control the disk reader head motors, how to encode/decode disk tracks, and how Amiga executable files are structured. After studying this, I started cracking protected programs, reconstructing their executable files in memory, and saving them to disk without any protection.
On the Amiga, there were two main ways to store data:
- By files (standard file system)
- Without a file system (non-DOS disks), using raw disk tracks—starting from the boot sector and loading data directly from disk sectors.
I created an assembly program that could detect the type of protection used and break it if recognized.
Eventually, I bought a PC with an Intel processor and learned x86 assembly for DOS and Windows (Win32 API). I then learned C++, including object-oriented programming, polymorphism, and multiple inheritance. I also explored Visual C++, and in 2003, I developed a CD copy protection system that prevented an executable file from being copied by tools like CloneCD, hardware duplicators, or virtual CD drives.
The idea was to store part of the executable’s data in sector 7 of the CD, then create invalid sectors before and after it. This made it hard for copying tools to read the sectors properly, often skipping sector 7. A loader was injected into the executable, which retrieved data from sector 7 to decode the rest of the file in memory before launching it. That same year, I stopped working on software cracking.
After that, I explored many topics such as DirectX programming, ADO.NET, and more. In 2007, I earned a diploma (Module I) from the Game Institute.
In 2006, I began web programming, got my first job in 2009, and continued learning many new technologies.
I love programming—and I always will.
Thanks for your blog, nice to read. Do not stop.
You are welcome