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 playing with Basic, I got to know other programming languages such as C, Pascal, VB, FoxPro, C++, Assembly, etc. Learned a bit about each and found C is my favorite. This allowed me to discover more about low-level programming, like creating a bootloader linking Assembly and C. I even found the screen video memory address (0xA000) by trial and error, so that I was able to create simple video games with awesome performance!

The first real programming job that I was paid for, was developing a cutting optimization software using C++ (MFC) in 2003. I wrote my first web application in PHP around 2004 and immediately moved to C# and .NET 2.0 and started building my career on top of Microsoft platforms. For the next decade, I developed tons of applications 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 C# features but also introduced me to a deeper level of Functional Programming paradigm.

Through most 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 in different scales using Scala, C#, C/C++, Java, Ruby, Python, Javascript, etc. Check out my resume and the projects I’ve done at