.ryuga / notesRetrospective

Semester Zero: Everything Before College

This essay covers my whole journey that I’ve had since I started coding, till today.

AUG 15, 20266 min readC · Web · Systems
Contents

    My journey begins from when I was eleven years old, I remember watching an advertisement of white hat junior, and asking my parents to get me into the program. They refused, and I am glad they did, mostly because the program turned out to be garbage, and also because I later learnt stuff from other places that I wouldn’t have in their program. After being introduced to the idea of programming and creating apps, it was the only thing on my mind; I researched about programming languages, frameworks, and similar stuff. I had this vague idea - don’t just play games, make them. And that’s when I first heard about Java.spoiler alert: I started to hate Java, and still do I looked for resources to learn the language, but I couldn’t find any that were actually good. That’s when my father came in clutch, he was in connection with a computer science professor from a university. He ran classes for students, something like tuition but for undergraduate students learning programming. I remember the first thing I asked him: Can you teach me Java? Will I be able to make apps? He giggled in amusement and talked to me and my dad; said that instead of Java, start with C, he said that language was more foundational, and oh boy did I misunderstand foundational for easy. We started with C the very next day, I remember sitting with first and second year undergraduates, learning C. I started in turbo C, with print and input statements, moved to conditionals, functions, and eventually basic memory management and making data structures from scratch. The initial learning was very, very slow, and a few concepts towards the end were harder than anything I had expected. It took me over a year to cover that, and then I finally moved to learning Java. It was terrible. I hated typing those long public static void main clauses and classes that I hadn’t used in C. I had a terrible first impression of object oriented programming. Eventually, I left the classes, the professor, and my friends there, before I could get deeper into Java. Following my departure, I took a long break from programming.

    When I did get back, I hopped from technology to technology, from C++, Python, Haskell, and operating systems and IDEs.I still can’t explain what a monoid is by the way I never got too deep and serious into anything, until I decided to lock in. I decided to start with web dev, I moved quickly through HTML, CSS, Javascript, React, Express and other rather foundational pieces, I built a few projects in the MERN stack, nothing very notable per say, a blogging site, a collaboration site, a notion clone, cloud storage, time capsule sites, etc.can we all pronounce it yavascript please Somewhere along the way I bought Harkirat Singh’s web dev cohort (cohort 2), and I believe that to a pivot in how seriously I worked through the technology, it gave me a roadmap, a structure, and most of all, it was paced decently enough for me, I speedran the whole thing in a little over a month, learnt relatively advanced stuff, on a rather surface level. After that, there was no stopping, and everything since then has been a blur. I learned Go, moved to systems programming with Rust and C++, functional programming with Elixir, etc. I built a lot of projects spanning a lot of surfaces. But I knew that wouldn’t be enough, I need flagship projects that are actually impressive and put a lot of my knowledge to actual use. So I planned for it, but before I got started, I built a quick API client TUI and a cross platform FSRS scheduled flashcard application.

    First flagship project: TrueMetaverse. This one was hard, had a lot of breadth, and I had a fun time building this one. I won’t go in depth about its features or tech stack, that is for the README. What I do want to talk about is how important this project was for me, I actually felt the fun and the art of programming when building this, it reinforced a lot of things I already knew, and also thought me a lot of things I didn’t, I loved decomposing problems, finding alternate solutions for unscalable architecture, drawing boxes on excalidraw, playing hidenseek on the app with my friends, it was a blast.

    Second flagship project: TrueCoder. This was a very different kind of project. I wanted to build my own terminal native coding agent, something in the same general world as Claude Code and Codex, but actually understand what went into making one instead of treating the whole thing as some magical LLM wrapper. It very quickly became much bigger than that. I built the agent loop, streaming, sessions that could be resumed, context management, project instructions, planning, file editing tools, approval boundaries, and eventually an entire shell execution platform underneath it. That last part was probably my favourite; suddenly I was thinking about process groups, killing child processes properly, time and memory limits, output limits, environment variable filtering, filesystem boundaries, network policies, containers, cancellation, and keeping an audit trail of what the agent actually did. The codebase ended up crossing thirty thousand lines with a pretty ridiculous number of regression tests. There was something very satisfying about using TrueCoder to work on real code and seeing all these different systems I had built cooperate: the model deciding what it wanted to do, the tool layer deciding whether it could, the policy layer deciding whether it should, the execution backend actually doing it, and the TUI showing me what happened. TrueMetaverse taught me how much I enjoyed building large products with lots of moving pieces; TrueCoder made me realise how much I enjoy building the machinery underneath them. It was probably the first project where I looked at the architecture afterwards and thought, holy shit, I actually built all of this, and could barely keep all the moving parts in my head.

    My “Don’t just play games, make them” eventually, and maybe subconsciously, over the years, has turned to something I admire in myself: don’t just use software, ask how it works, don’t just read abstractions and abstractions, understand what things are like underneath, and most of, it’s not magic, don’t treat complicated systems as magic, open the box.

    I do love programming, and you know what they say, do something you love and you’ll never have to work a day in your life. I suppose I don’t just want to document software, but also document, well, me.