About

Hi 👋

My name is Amir. Born and raised in Tehran, currently living in Vancouver, BC.

My first computer was a .386 (12MHz) with 2MB of RAM running MS-DOS and Windows 3.1. It had so much RAM that the programs weren't able to use it all without enabling something called EMS!

My coding journey started by building text animations using MS-DOS .BAT files when I was about 9 years old. Lots of echo commands followed by cls for each frame. The need for more advanced tools led me to QBasic. It let me write small but real programs like simple games with basic physics engine at SCREEN 13 mode (with 256 colors!), a stupid malware (its only victim was myself), and of course slightly more useful applications such as a phone book.

After a year of playing with QBasic, I realized that it's limited enough that you probably can't write an OS with it. So I get to know about a whole lot of other programming languages such as C, Pascal, VB, FoxPro, C++, Assembly, etc. Learned a bit about each and fell in love with C. It opened the door for me to low-level programming. One of the works that I'd be proud of was a bootloader deployed on a floppy disk. I wrote it in C with a little bit of help from Assembly.

I didn't have access to internet at the time because I was suppose to study for Konkour. So I had to figure out stuff either using books (if I was lucky to find a good Persian translation) or by trial and error. In fact, it's how I found the memory address of the video screen (0xA000), trial and error. After which I was able to render graphics and animations much faster compared to the slow INT 10H!

I got admitted to a university for computer software engineering in 2003. Thanks to one of my professors I got my first real programming job offer in the first semester. I was about 17 years old so it was a big deal for me. The job was about developing a cutting optimization software using C++. I wrote my first web application in PHP around 2004 and immediately moved to C# and .NET. Over the next decade, I only worked as a contractor and consultant. It's a long story but I developed tons of software using almost all MS technologies, from Desktop to Web.

In Dec 2013, I made a big decision: to stop being obsessed with MS! I moved to the wild and free world of open source and completely transformed my career to be on top of the open source ecosystem. It turned out to be the best decision of my career! Scala helped me a lot in this journey; not only it offered me all C# features but also gave me a better understanding of Functional Programming paradigms.

For the majority of my career, I worked as a contractor or a part-time employee. It gave me the chance to work with various technologies and platforms at different scales using Scala, C#, C/C++, Java, Ruby, Python, Go, Javascript, etc. Check out my resume if you would like to know more details.

This website is built using my own DIY static website builder. You can find the source code here.