Toronto, Canada  ·  self-taught since 2020

I take things apart to find out how they work.

I'm Ibrahim — a self-taught programmer on a gap year in Toronto, heading into computer science. I got curious about how Python runs, so I wrote my own language to find out. That's more or less the pattern.

About

It started with a lesson that went badly.

After my SSC exams, before I started 11th grade, my father enrolled me in a three-month ICT course. I didn't own a computer. The only device in our house was a PlayStation. The first class was on web design — HTML, URLs, domains, hosting — and every other student answered the teacher like they already knew all of it. I'd always been a good student. I sat there realising I knew nothing, went home, and cried.

My mother calmed me down. My father called my home tutor, who came over with his laptop and showed me the basics properly — things I could watch happen on a screen instead of just hearing about. That was enough to start. That night I borrowed my mother's phone, found HTML tutorials on YouTube, and didn't sleep. By morning I'd picked up some CSS as well and built a small website, entirely on a phone.

I've never been able to trust that I understand something until I've opened it up myself.

I've never really stopped since. I was the kid who broke open a toy car to work out how the wheels turned, and programming turned out to be the same thing with an undo button. I came up through school in Bangladesh, spent a year in a maths degree I hadn't chosen, and moved to Canada to study computer science properly.

Right now I'm in the gap year before university — working, studying, and building. I finished Harvard's CS50P, I write mostly Python and JavaScript, and I'm working through data structures and algorithms. Outside the editor I speak English, Bengali and Hindi, and I solve a Rubik's cube in about thirty seconds.

Selected work

Things I built to answer a question.

Whisper

Programming language · on PyPI

A programming language with conversational English syntax — you write whisper "hello" and when age greater than 18: instead of symbols. It also has story objects, so you can declare a character or an item in a sentence and build interactive fiction and games out of them. I started it after finding out CPython is written in C, which raised a question I couldn't let go of: what actually happens between my source file and the output? Answering that meant writing my own lexer, parser and interpreter.

It's installable with pip install whisper-lang, has a VS Code extension for syntax highlighting, and documentation with a tutorial and examples. Python 3.7+, no dependencies, MIT licensed.

# a greeting
ask "What is your name?" into name
whisper "Hello, " + name + "!"

let age be 25
when age greater than 18:
    whisper "You are an adult!"

there is a dragon with health 150, attack 25, treasure 500

The hardest part was story objects — the feature that makes Whisper feel like Whisper. there is a dragon with health 150, attack 25 reads beautifully, but underneath, attributes kept leaking between objects: I'd ask for the player's health and get the dragon's. Every fix surfaced another one. I came close to deleting the feature entirely. What fixed it was giving each object its own namespace instead of resolving every name against one shared table — obvious in hindsight, and the reason scope stopped being a word I'd only read about.

PythonLexerParserInterpreterPyPIVS Code extension

Grocery Split

Web app · in daily use

A shared expense tracker for splitting grocery bills, built for a real problem — a friend and I kept losing track of who owed what. Both of us can add an expense and it updates on the other person's phone straight away. We still use it every week, which has been the most useful thing about it: I keep finding bugs by being a user.

The hard part wasn't the interface — it was the data. Two people adding expenses from different phones means the database is the app, and I hadn't thought about how to structure it, keep it in sync, or handle both of us writing at once. Firebase gave me the real-time part for free, but designing the shape of the data was the first problem I couldn't solve by reading documentation faster, and it's the thing I most want to learn properly.

JavaScriptHTMLCSSFirebase

Online Diary

Web app

A private journalling app with entry creation, sorting, organisation and password authentication. My first project with a real backend behind it, and the one that taught me the difference between "it works on my machine" and "it works when someone else logs in".

JavaScriptFirebaseAuthCSS

Everything else I've built

Skills

What I can actually be asked about.

Confident
HTMLCSSJavaScript PythonGitResponsive layout
Working with
FirebaseCC++ Data structuresAlgorithmsspaCy / NLP
Next up
ReactTypeScriptSQLTesting

Now

Where I am, currently.

  • 2026 Gap year in Toronto. Working, saving, and looking for the right next job.
  • Learning Data structures and algorithms, and Harvard's CS50x. Working to a roadmap that covers DSA, C and C++, and discrete math before university.
  • Shipped Whisper 1.0 — published on PyPI, with a VS Code extension and full documentation.
  • Open to Junior and entry-level development work, and conversations with anyone building something interesting.