My first computer was a .386 (12MHz) with 2MB of RAM running MS-DOS in 1994 when I was about 9 years old.

My first experience of programming started with building text animations using MS-DOS .BAT files. The need for a more advanced tool led me to QBasic and to writing many simple programs, such as simple games (at “SCREEN 13” mode + Some basic physics engines), viruses (yes! computer virus) and some useful applications.

After a year of programming with Basic, I got to know other programming languages such as C, Pascal, VB, FoxPro, C++, Assembly, etc. Learned a bit about each I chose C. This allowed me to experience a bit of low-level programming, like creating a bootloader using Assembly and C. I even found the screen video memory address (0xA000) by trial and error!

The first real programming job that I was paid for, was developing a cutting optimization software in C++ (MFC) in 2003. I wrote my first web application in PHP around 2004 and immediately moved toward C# and .NET 2.0 and started building my career on top of Microsoft platforms. Since then, I developed tons of application using almost all MS technologies, from Desktop to Web.

In Dec 2013, I made a big decision. I moved to the wild and free world of the open source and completely moved my career to the open source ecosystem and never looked back. Scala helped me a lot in this journey; not only it offered me all the features of C# but also introduced me to the Functional Programming paradigm.

I’ve always worked as a contractor or a part-time employee. It gave me the chances to work with various technologies and platforms in different scales using Scala, C#, C/C++, Java, Ruby, Python, Javascript, etc. Check out my resume and the projects I’ve done at cv.amirkarimi.me.

I left my home country and moved to the UK to join Cake Solutions in Apr 2017.