I’m twenty-one years old and in my final year of computer science. I spend most of my time in terminal windows. My family thinks this is concerning. I think terminals are just more efficient than clicking things.

How This Started

My first program was supposed to print "Hello World" but it crashed instead. Missing semicolon. The compiler error was three paragraphs long and mentioned something called a “syntax tree.” A normal person would have added the semicolon and moved on.

I spent the next two hours reading about how compilers parse code.

That’s basically been the pattern ever since. I encounter something, I need to understand why it works that way, and suddenly it’s 4 AM and I’m reading kernel documentation.

Nah I’m bluffing, no sane person will belive this.

How I Actually Got Here

I started coding in high school because I was tired of doing math competition problems by hand. Wrote a Python script to brute-force combinatorics. It was inefficient, ugly, and crashed if you gave it more than 10 inputs. But it worked. The computer did what I told it to do.

That feeling is hard to explain to people who haven’t experienced it.

Then I bought a laptop, a very cheap one, just enough to write code. I tried making apps, games, sites, genetic algoriths in creative coding and god knows what not. Little did I know the only thing that promises a good career was writing those mathematical jargons with loops and conditionals. They term it “Data Structures and Algorithms”.

Competitive programming happened next. I like it because there’s a correct answer. Either your solution runs in time or it doesn’t. Either you found the pattern or you didn’t. No ambiguity. No “well it depends.” Just you, the problem, and the clock, and frustration.

I’m a Specialist on Codeforces now. Not because I’m particularly talented — I’m not — but because I’m stubborn. I will sit with a problem until I understand it. Sometimes that takes hours. Sometimes I give up and come back the next day. Eventually, it clicks.

How I Learn

I break things.

I’ve reinstalled Arch Linux maybe a dozen(consider multiples of dozen) times because I found a better rice/DE/WM/distro on unixporn. My dotfiles are a mess of abandoned experiments. But I always learn something new about how Linux works in the process.

Yeah in the process I sometimes break my system so badly I have to reinstall from scratch.

This is fine. This is how learning works.

I am a bit of a perfectionist. I like things to work well. So when I break something, I have to fix it. This leads to a lot of trial and error, but eventually I get to a point where I understand how the system works. and yeah sometimes I break it again.

Also unlike the normal people, I read documentation. A lot. Manuals, RFCs, design docs, source code comments. If I want to understand something deeply, I go to the source. and people ask me “which course did you learn X from?” or “How do you know so much about Y?” and the answer is always “I read the docs.”

Most of my projects are abandoned experiments. Things I built to answer a question, then stopped caring about once I got the answer. This website is different. This is where I write things down so I don’t forget them.

Currently

Final year. Interning as Data Scientist and prepping for systems roles, weird combinations. Working through MIT 6.824 because distributed consensus is interesting and nobody else wanted to implement Raft with me, so I’m doing it alone.

Writing here when I learn something worth documenting. A bug that took too long to find. An algorithm that finally made sense. A concept I had wrong for years.

Trying to get faster at competitive programming. Not for the rating — okay, a little bit for the rating — but can’t seem to find the time to practice regularly. I don’t even remember the last contest I participated in. Yeah except ICPC Regional, that was fun.

Setup

System: Arch Linux, Hyprland(HyDE), Kitty terminal, zsh

Editors: Neovim mostly. VS Code when I want AI assistance. Zed sometimes.

Languages: Golang(learning advanced now), C++ for performance, Python for quick scripts, Typescript/JavaScript for web stuff.

Database: PostgreSQL. Or SQLite if it’s small.

I change my setup a lot. Not for productivity. I just get curious about how different tools work.

Contact

@screenager on GitHub, Codeforces, X.

I like talking about:

Fair warning: I will get excited about computer science fundamentals. This is not something I can control.