Ibrahim Fadel

About Me

I am a highschool student who loves to make things. I haven't figured out which area i'm most interested in yet, but so far I've been dabbling in webdev, game design, compiler design as well as just random projects :) Aside from coding, I love global politics and writing.

Projects


Here are some things I've worked on so far

Pi-lang

This project started off as a way for me to learn C++. I was bored by all the example projects online, so I decided I would try to make a programming language (because I heard people did those in C++). Originally, it was just a simple interpreted language that looked sort of like Typescript. It wasn't very interesting, but it had variables, functions, and some basic control flow.

Eventually, I decided to take it a step forward and make it compiled. I came across LLVM -- a super incredible project that can handle all the codegen. Using LLVM, I built my first attempt at a compiler. I've been rewriting and rewriting for a long time now trying to land on a version i'm happy with (still not there). Just (very) recently, I started rewriting it in Go .

This whole project ended up leading me down the rabbit whole of lower level programming. In general, i've become much more interested in the low level aspects of computers and compilers in general, and it' been nice exploring those.

A Pi-lang code snippet

RorkeJS

When I first got into programming, I made a lot of basic games with a framework called Phaser. After a while, I got bored and decided to try to make my own game framework. RorkeJS is quite similar to Phaser -- it uses the PixiJS webGL renderer, and has a similar design in general.

Much like most of my projects, I've rewritten it too many times to count. I haven't touched the project in a while though. This project can handle physics, animations, input and all the other tools you need to make an extremely basic game in the browser.

A game made with RorkeJS

SIRC

SIRC (Simple IRC) is just a basic IRC client. I initially took inspiration from birch -- I had never heard of IRC and it intrigued me. I decided to take a crack at it and make a terminal based client.

I made it in Typescript because I'd been meaning to start using it more. After figuring out how to establish a connection to an IRC server and how to send commands, I basically just implemented some of the IRC protocol (not very much of it). Basically all you can do is connect to a server, join & leave channels, and send messages. It's not very exciting, but it works and I think it looks decent.

If you check out the codebase, you might find remnants of times I tried making it into a TUI, and other parts that I never ended up cleaning up. I definitely want to go back and refactor it a bunch when I get the time.

Example SIRC usage

Minecraft Clone

I recently got interested in OpenGL and as a project to learn, I started building a minecraft clone. Right now it's essentially just a very simple voxel engine. There is infinite procedural terrain with stone, grass and water blocks. It's quite minimal right now, but I'd like to continue developing it into something playable.

Screenshot taken in game

Interactive Network Plot

This is another recent project. It's essentially an interactive network made with Typescript and D3 that can help you take notes, or make graphs to help you visualize things. It's still in quite an early stage of development, but it's quite fun to use already.

Example network plot

Some other Experience

I, along with a few friends, run the Amnesty International club at my highschool. There, we learn and spread awareness about humanitarian crises and indigenous issues in Canada. We also write and publish articles for students at our school.

I am also the Head of Technology at WAC, an annual student-led conference. At the tech team, we've been building the website and registration system. This year (2021), we hosted the event online for the first time ever, and we were able to get attendees from all over the world.

Work Experience


Alice Insights

From January 2020 to June of 2021, I worked at Alice Insights as a software development intern. I worked on modelling geo-spatial data on maps, general web development, and other random things here and there (all in JS/TS or Python).

Tulip

During the summer of 2021, I worked at Tulip as an engineering intern migrating parts of the code-base to React.

UofT i2c Lab

During the summer of 2021, I worked with a team at UofT on a project for Calgary Transit.

Resume