All project posts

University milestones

The moment my programming skills really began to evolve was during university. I was learning a lot, mainly because we often spent Saturdays and Sundays there, developing concepts together. The first year started with simple projects, such as recreating standard C library functions like printf and strlen.

At that point, I wasn’t very confident with Linux systems yet, but I had already developed the (in)famous Racedriver title in C++. This gave me a slight edge, and the tasks weren’t as challenging for me as they were for some of my peers.

The first significant project we tackled was math-based. The objective was to calculate the angle of a ball hitting a paddle in a Pong game. There was even a bonus point for developing a complete Pong game—and of course, I went all in. I ended up putting way too much effort into making that game, simply because I loved making games. It thrilled me that game development was now part of my academic journey.

Now add some germans and guns, and you're there!

A few weeks later, we faced a new challenge: creating a project inspired by a legendary id Software game, Wolfenstein 3D. Aptly named wolf3d, the project required us to implement ray tracing to project walls onto a grid map. I was stunned—this was how developers in the early days created 3D games with minimal resources and basic renderers. In just a few lines of code, I had the foundation of a Doom-like experience. That project shifted my perspective on game creation and opened the door to the world of graphics programming.

Although I didn’t delve deeply into raw graphics after that and eventually transitioned to game engines, learning those fundamentals was amazing.
The journey continued with projects that explored the inner workings of systems. One standout was coding a Bash-like shell from scratch in C++. Through this, I discovered the intricacies of file descriptors, output/input piping, and shell behavior. It was a thrilling experience and one that later motivated me to start my StbxEngine project.

Another fascinating project was called CoreWar. It was a battle between two programs, each attempting to overwrite the other’s memory. The concept was—and still is—widely popular online, with communities continually developing AI for it.

I’m sure I’ve forgotten some projects, but these are the ones that left a lasting impression on me. They were milestones in shaping my understanding of programming and igniting my passion for creating.

Learning programming as a teenager... with C++ and cyphering

It’s been a wild ride since the days when declaring a variable and assigning it felt like an insurmountable challenge. Let’s throw it back to the very first day I learned programming.

I was in high school, the year 2011, and we had quite a lot of free time. While most kids spent their breaks playing outside, my friends and I chose a different path—we gathered in the school library to teach ourselves programming. They decided to start with Java. At that age, with zero knowledge of any programming language, I couldn’t bring myself to be interested in it. Instead, I began experimenting with something simpler: creating interactive prompts using the Windows Batch scripting language.

A good example of a very bad UI

After tinkering around for a while, I realized it was time to challenge myself further. Around the same time, my friends had finished their metaphorical cup of coffee (finally), and we all agreed to focus on a new deity of programming: C++. We turned to a well-known French website called "Site du Zéro" created by Matthieu Nebra. It was brilliantly written and provided a thorough introduction to C++ programming fundamentals.

I still remember summarizing the course on A5 cardboard notes, with 4-colour penballs. Remarkably, I still have those notes in my office drawer to this day, like a “lucky charm” of sorts!

If only I was this dedicated at school at that time!

Armed with our newfound knowledge, my friends and I set out to write our very first program: a substitution cipher utility. Looking back, it was hilariously bad, but it worked!
The project was a simple "choice menu" that, believe it or not, was incredibly inconvenient to use because it required a ridiculous number of inputs just to encrypt a file. It used multiple encryption methods, all based on substitution.

One method swapped all the ASCII alphanumeric and special characters with integer values, which were written as 3-character sequences (yes, the output was three times bigger. I definitely wasn’t planning on encrypting my entire drive back then). Other methods just replaced characters with random garbage symbols.
The real problem with the code, despite all the attention I paid in the C++ course, was that any complexity was handled using switch cases: one for each character supported by the method.
It was... not pretty. Just plain bad code. But, for the record, I’m oddly proud of it. I still have a copy tucked away in a private repository, mostly for the sake of nostalgia (and a bit of embarrassment).