When you're building your first portfolio project, the advice is usually the same: start simple. Build a todo app. Build a calculator. Build something you've seen a hundred times before.
I didn't do that. I only wanted to spend my time building something I would be proud of. Something I was struggling with—so that even if I failed to make it a commercial success, it would still be a tool I could use to solve my own problems.
The problem I chose to solve was my own. I was preparing for technical interviews and drowning in LeetCode problems with no way to know if I was actually retaining what I learned. Every tool I tried felt like it was built for someone else's brain, not mine.
People might ask why make your first real project so complicated. It didn't start out that way. But I realized that building something I genuinely needed meant I'd actually finish it. If it failed commercially, I'd still have a tool that solved my problem. That made it worth the complexity.
The Problem I Had
When I started practicing LeetCode seriously, I quickly realized I had a problem. Not with solving problems—but with knowing if I was actually improving.
At first I just went over random easy problems—that was just me spinning my wheels for a couple weeks. Then I found the LeetCode Patterns curated list made by seanprashad. It was helpful because it let me study related topics together. I had a route I could follow.
But I still felt like I was behind. I had no system. No way to track what I was getting better at. No way to know if I was actually improving or just staying busy. I couldn't tell you which patterns I had mastered and which ones I was still struggling with.
That was the problem.
Why Not Use Existing Tools?
There are a lot of tools out there for LeetCode practice. Problem trackers. Progress dashboards. Study plans.
But none of them worked the way my brain did.
I needed something that would:
- Track my actual retention, not just whether I completed a problem once
- Adapt to my weaknesses, showing me more of the patterns I struggled with
- Use spaced repetition, so I wasn't just grinding problems but actually learning them
- Integrate with LeetCode directly, so I didn't have to manage two separate systems
Every day I practiced, I wished it existed. So I built it.
Why a Chrome Extension?
A Chrome extension made sense because:
- It lives where I study: Right on LeetCode, not in another tab I have to remember to open
- It's always accessible: Whenever I'm solving a problem, CodeMaster is there
- It felt challenging: I hadn't built a Chrome extension before, and I wanted to prove I could learn something new
I didn't want to build another todo app because I don't need another todo app. I needed something that would help me get better at the one thing standing between me and the career I wanted.
Why This Mattered
The goal wasn't just to track problems. It was to build a system that would help me actually get better, not just feel busy.
Before CodeMaster, I would solve a problem, feel good about it, and then completely forget the solution two weeks later. I needed a system that would force me to revisit problems at the right intervals—not so soon that I was just memorizing, but not so late that I'd forgotten everything.
That's what spaced repetition does. It's not just tracking—it's actively reinforcing what you've learned at the exact moment your brain is about to forget it.
What You Work On Matters
What do you do for work? Most people answer with their profession or a job they're currently working, like it's the all-encompassing answer. The question is answered as if it's the only work that matters.
The economic pressure of life decides what work we take on based on how much money we can make and how painful the work is to complete.
But I decided in 2022 to take the other work I do in my life seriously. What that means is acknowledging and taking seriously my own aspirations and goals.
I can't force my success in the world. And while I have monetary goals, if I am able to prioritize my own work, my own creations, money will follow.
CodeMaster isn't just a portfolio project. It's proof that I can identify a problem, build a solution, and ship something real.
And that's why I didn't build another todo app.
Next post: The Features That Make CodeMaster Work