About Me

Hi! I'm Mohamed, and up until recently I wasn't sure what direction I wanted to take in life. I've delved into so many things, from medicine to theoretical physics, and I'm super curious about how things work. I also want to leave my mark somehow and I was never sure how. Do I aim for a high-salary position and use my wealth? What about living a modest life while giving back to my community? Or inventing some ground-breaking, life-changing contraption? Maybe cure cancer instead, that's an old reliable one.

For the longest time I could never settle on anything. A few years ago I wanted to be a doctor, while also coding in my free time, but I had this idea for a flying contraption so I decided to "go for it" and delved into the physics I needed to know. I've learned a few things since then - my flying contraption is almost impossible to implement, coding is really fun, and medicine is really impactful anywhere in the world. Although I was born and raised (and still living) in Canada, I also fell in love with my village in Lebanon, and I want to help make it even better. Lebanon is going through yet another crisis and I realize my passion for my country should lead me in my career. They need a tech sector, a reliable electrical grid, and many other solutions to ease their struggles. These things take time and I want to invest in my career so one day I may be able to give back to my home.

So What Is This Site?

I'm mostly a self-taught programmer, but I've taken a few courses here and there in high school and university. Much of my physics background is actually in physics simulations so I was able to put my coding skills to good use in completing my degree. I value clean, structured, and reusable code - perhaps a bit cliche, but after working on hundreds of my own little projects, I find it becomes time-consuming having to reparse and understand what I wrote a week earlier.

This site is more than just a programming project. I wanted to really dig into web dev, but I also wanted to produce a site that can scale. There are files I haven't looked at in months, but the structure of my back-end server code makes it so simple to adjust things when I need to. I plan to add a few more little minigames with multiplayer support, perhaps a first-person style game using WebGPU, and maybe a productivity-oriented webapp down the line. I've avoided doing an account system for now to simplify my database back-end costs, but I honestly feel no real benefit in doing so for a site like this. I've added support for duplicate nicknames, so there aren't any drawbacks either. Less passwords to remember as well :)

I also wanted to be able to showcase many of my projects that aren't web-oriented in one place. You're welcome to peruse my Github as well for a closer look.

Signed Distance Field (SDF) Rendering

A couple years ago I came across SDF rendering. I saw it as a beautiful alternative to raytracing, and the algorithms resembled what I was learning at the time in my numerical analysis class. You can find a brief overview from Inigo Quilez's site. He has so many amazing resources on SDF rendering. I would've stagnated a long time ago if I hadn't stumbled across his work. He also has many amazing YouTube tutorials.

I wanted to make my own custom graphics engine based on SDFs, so I took it upon myself to learn OpenGL, then Vulkan, and then Metal when I got tired of Vulkan's API. I followed along a few different tutorials to set up a basic triangle renderer for each of these APIs, and from there I developed my own fragment shaders. Many of the rendering algorithms are from external resources and best practices, with a little twist on my end. I also extended the usability beyond hard-coding SDF primitives in fragment shaders by creating a communication layer API between surface-level source code and my SDF fragment shaders. This allows SDFs to be treated as objects through class abstractions, rather than read-only shader-level primitives.

In the latest implementation, I added a physical lighting system with multiple light-bounces, as well as refractive properties.

Honours Thesis - Simulating Phase Slips in Quasi-Dimensional Superconducting Rings

I really love superconductors. It's the levitation aspect of them that excites me the most, because my little flying contraption idea was based on strong diamagnetism. Eventually I yielded myself to conservation of momentum, but I did say my idea was almost impossible - momentum with respect to electromagnetic fields can be held by the fields themselves, allowing particles to experience forces in the same direction rather than opposite directions. The details are very particular though, so any formulation of such a levitation device is far beyond our current technological capabilities. Besides, I don't think we're ready for levitation just yet...

So I did a thesis studying superconducting rings and their potential applications to quantum computing. They're actually fairly popular in this field, and the main idea I studied was taking after my supervisor's work in studying phase slips. Phase slips allow a qubit formulation for quantum computers if harnessed properly. I ran into numerous issues trying to simulate such a system - numerical instabilities being the most challenging. As an undergraduate, trying to expand on the PhD work of my supervisor, it was daunting to say the least, but I managed to rewrite from scratch (Swift and Python) and optimize his previous work (originally written in FORTRAN, that was an experience). My job was to expand the geometric dimensionality of the system, bringing the simulation closer to reality, although I fell short. Perhaps I could have done more, but by the end of it all, I was able to formulate a plan that would avoid all of the issues I had encountered. I mean, there has to be a reason, why my supervisor stopped at one dimension... It gets far too messy to deal with all of these issues in practice. Still, I really valued this experience and vowed to avoid doing a thesis in this light for the foreseeable future :)

You should check out my supervisor's work though, he does really cool stuff - Dr. Mikko Karttunen

Super Smash Pikachu

This was a project I worked on in my grade 12 computer science class. It's a little rendition of the super smash games I used to play growing up, written in C++ using SFML as a graphics library and Box2D for collisions and fancy hitboxes. I also managed to get a 3D effect going using some trigonometry and well-placed quads, and meshing this with the camera system I built. All of the sprites I drew myself with some obvious inspiration, and the game is limited to using one attack move, so it gets boring pretty quick but putting all of the game elements together was a big thing for me back then. The art, music, animation, and gameplay, coming together in one piece. The years I spent coding in high school were huge in helping me develop the skills I have now, and I find that I'm able to teach myself pretty much anything I take seriously.

Roblox Development

As a kid I also grew up playing Roblox, I started when I was 9 years old. A few years into it, my brother and a few cousins and I would make some of our own Roblox games for fun. I tried to learn Lua scripting at one point but gave up, but after my high school coding journey, my brother and I decided to put our skills to good use. We worked on a few different Roblox games, kind of hobbyist at first but at times we took it very seriously. I handled the coding and UI while he would plan things out and handle game design.
Our first real attempt was a simulator style game called Dab World (I'm cringing, just typing this out), an idea our little cousin came up with during the dab fad way back when. It's still live and playable if you want to share my cringe. We put a lot of effort into it - custom animations with my own workaround for rigs with props that de-rig, a UI system that is probably too colourful but pretty smooth, and tons of content. We abandoned it after we realized, the fad faded out during our time developing things, and our game wasn't really all that fun to progress through. The animations and stuff were cool but there wasn't really a point to the game. Sometimes there doesn't need to be a point, but dabbing is something you can do at home. Games usually take things that you can't do at home and allow you to do it on your computer. We were lacking that for the most part...
Still, it was a good experience for us. We also realized that a team of two handling so many different aspects of game dev was really straining, all while we were in school. Since then we started on another project with a larger, more diverse team. Things are stalled for now as we're all having our own existential crises and Roblox doesn't provide a solution for that. It's just too much of a risk to put our full effort into Roblox, and we've seen what failing can look like. It's a serious time in our lives and it's best to take calculated risks, this just isn't one of them at the moment.

You can check out other things I've worked on from my profile and the groups I work with there. One of the more sentimental games I've made is a card game my family plays with my grandpa, who we couldn't visit during COVID lockdown. We still play remotely from time to time when someone is sick. It's playable on mobile devices as well!

There's More?

I can't list everything here but you're free to peruse my Github. I haven't put everything up on there since some code is confidential, but there's some pretty diverse stuff. It's fun exporing new tech every now and then, and I'm looking to dig more into machine learning in the next few months. Not that I want to create my own ChatGPT or anything...

Feel free to contact me via:
- Github: https://github.com/fairuzguy
- LinkedIn: https://www.linkedin.com/in/mohamed-elsayed-8117b6264/
- email: elsayedm2000@hotmail.com