This is the printed version. Please visit online at http://cv.amirkarimi.me for better experience.

Amir Karimi

19 years of programming

Born
1985
Email
a.karimi.k@gmail.com
Social Networks

Bio

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 the projects section.

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

Programming Languages

  • Scala
  • Java
  • C#
  • HTML/CSS
  • C/C++
  • Go
  • Ruby
  • Python
  • JavaScript
  • Rust
  • Swift

Technologies and Libraries

  • AWS EC2, ECS, Lambda, Kinesis, etc.
  • Docker
  • NoSQL
  • Kafka
  • Redis
  • Play Framework
  • Akka
  • Rails
  • Django
  • MFC (C++)

Principles and Practices

  • Agile
  • TDD
  • Reactive Programming
  • Event-sourcing
  • Serverless Architecture
  • OOP & Design Patterns
  • Functional Programming

Education

B.S in Software Engineering

2005 - 2007

Azad University of Arak

  • Created a compelete messegner system with a custom binary protocol written in C++
  • Started working as a contractor

2 years college in Computer Software

2003 - 2004

Elmi-Karbordi

  • ACM west-asia contest
  • Presented an official seminar about Computer Networks & Socket Programming
  • Created a boot sector and a boot loader written in Assembly and C/C++
  • Part time job (software developer) in a company in the city where I was studying

Courses

Neural Networks and Deep Learning

Sep 2017
Coursera - License: UQH3GDCTTGTH

AWS Certified Developer - Associate

Jun 2017 - Jun 2019
AWS - License: F4YBGRB2KNV11PWB

Principle of Reactive Programming

Dec 2013

Positions

Software Engineer

Cake Solutions LTD

Apr 2017 - Now
Worked on the BAMTech media platform. Developed reliable and scalable microservices which are capable of handling tens of thousands of requests per second. Technologies: Scala, Play, DynamoDB, AWS Lambda, Kinesis, SQS, S3, etc.

Tech Lead (Remote)

Acceptto

Aug 2016 - Now

Senior Software Engineer (Remote)

Acceptto

Aug 2014 - Aug 2016
Mainly focused on Acceptto Multi-factor authentication app on both backend and Andriod application.

Software Designer and Developer

Self-employed

May 2006 - Apr 2017
Designed and developed a wide variety of software applications, from high-performance desktop applications written in C++ to highly scalable web application written in Scala. It's a long story, please see more details at Projects section.

Back-end Lead (Part-time)

Parspal Kish Co.

Aug 2015 - Nov 2016
Developed healthypal application back-end a high-velocity backend on top of Scala, Play, Akka, etc. The main product is a health application connecting people to doctors and instructors providing a different kind of services from medical to fitness.

Senior Software Developer (Part-time)

Rastinware Co.

Jul 2014 - Aug 2015
Worked as a part-time employee and project-based contractor on various projects. You can see the list of projects in the projects section.

Software Developer (Part-time)

Shaar Co. LTD

Oct 2008 - Feb 2013
Worked as a part-time employee and project-based contractor on various projects. You can see the list of projects in the projects section.

Software Developer (Part-time)

Behsad Co. LTD

Feb 2003 – Dec 2005
Worked as a part-time employee and project-based contractor on various projects. You can see the list of projects in the projects section.

Commercial Projects

Healthypal

May 2016
This is a health application which connects people to advisors and doctors to help them to achieve their goals.
Employer:  Parspal Kish Co.
Scala Play ReactiveMongo MongoDB Akka

Book Coupon Distribution System

May 2016
This system allows students and other eligible persons to buy book coupons for famous Iranian fairs. This application has a large number of financial transactions $2,000,000 within two weeks for Tehran Internation Book Fair. Regarding the financial transactions, this is probably the largest independent project on top of Scala ecosystem in Iran.
Employer:  Self-employed
Scala Play ReactiveMongo MongoDB Akka

Pluggable Authentication Module (PAM) for Acceptto MFA service

May 2016
Developed a Pluggable Authentication Module (PMA) which integrates with Acceptto multi-factor authentication service. This allows adding MFA to services which support PAM like SSH.
Employer:  Acceptto
C Linux

Pishgaman ISP Integration Software Robot

Oct 2015
Some software applications only support human interfaces and there is no web services or any other way for a machine to machine communication! In this case, we developed a robot which works as a human operator and enabled the machine to machine integration. This way we removed human errors and make significant performance improvements.
Employer:  Rastinware Co.
Python Django PostgreSQL Bash

Fair Registration and Management System

Dec 2014
A complete and custom made fair registration system. More than 40 provincial book fairs took place and handled using this software. The number of publishers for Tehran International Book Fair was more than 2,000. It also contains a dynamic form builder which enables supporting online registration process of a wide variety of fairs.
Employer:  Self-employed
Scala Play ReactiveMongo MongoDB Akka

TCT Salary Management System

Jul 2014
This system allows employees of TCT (Telecommunication Company of Tehran) to get their payment checks report electronically. It is actively under the use and replaced the old paper-based system.
Employer:  Rastinware Co.
Ruby on Rails Postgres

Tehran International Book Fair CMS

Apr 2014
Tehran International Book Fair is the most important cultural event in Iran and the region. Alexa rank of TIBF website, at fair times, goes bellow 500 among Iranian websites. This is a complete custom-made CMS. It's also integrated with other systems to allow visitors to search for books and find the location of the publishers. At the peak time, there are more than 400 concurrent HTTP requests on the server while system load is below 1 on a 6 core x64 CPU and only 2.5GB of RAM is used. Most importantly its the first official web site in Iran implemented using Scala, Play Framework and ReactiveMongo.
Employer:  Self-employed
Scala Play ReactiveMongo MongoDB

Iran Cultural Fairs Institute CMS

Mar 2014
A custom made CMS with is very lightweight and fast implemented using Scala. This website allows visitors to browse and search among the books in the various book fairs in various cities of Iran.
Employer:  Self-employed
Scala Play ReactiveMongo MongoDB

Custom-Made Content Management Systems

Feb 2014 - Aug 2015

I've created several custom-made content management systems on top of my favorite stack; Scala. They are very solid, performant and simple to use. Even non-technical people can easily create and update the content of the website.

Some of them:

Employer:  Self-employed
Scala Play ReactiveMongo MongoDB

Acceptto ™ multi-factor authentication

Sep 2014
Acceptto ™ is a multi-factor authentication solution. I worked as a developer on its server side API as well as Android app.
Employer:  Acceptto
Android Java Ruby Rails Postgres

Aircraft Accidents Procedure to Gathering Information

Feb 2014
Automation of "Procedure to Gathering Information" that accelerates the process for the organization.
Employer:  Self-employed
C# .NET 4.5 EF 5 ASP.NET MVC 5

Vermicompost Production Automation System

Mar 2013
A custom-made automation system (contracts and financial processes) for a Vermicompost production business. It is implemented on top of Xoqal (see bellow) application framework.
Employer:  Self-employed
C# .NET 4.0 EF 5 ASP.NET MVC 3

Online Print Order Management System

Mar 2013
Allows users to register their print orders, do the payments and track the orders online.
Employer:  Self-employed
C# .NET 4.0 EF 4.4 ASP.NET MVC 3

Online Car Insurance Sale System

Aug 2012
A simple to use registration and payment system that allows people to buy insurance for their car. It also automates the process at seller side.
Employer:  Self-employed
C# .NET 4.0 EF 4.4 ASP.NET MVC 3

Graphical Harbor Yard Management System Architecture

Feb 2013
The out put of this project is a comprehensive documentation which explains:
  • Software UX
  • Database design
  • Communication between other systems
Employer:  Shaar Co. LTD

Online Utilities Payment System

Jun 2013
Users can easily pay their utilities online with this system. It's also been integrated with several external systems.
Employer:  Self-employed
C# .NET 4 EF 4 ASP.NET MVC 3

Marine Services Management

Mar 2012
A desktop application based on WPF implemented using MVVM and SOLID principles. It also includes a backend. The desktop can work in offline mode and will be synced with the backend whenever the internet connection is available. Moreover, It has a licensing system which allows my employer to easily sell this software to several customers.
Employer:  Shaar Co. LTD
C# .NET 4.0 EF 4 WPF WCF

Market Monitoring System

Feb 2012
This is a SAAS. Users can virtually buy/sell products or shares and then see their cost-benefit analysis. It also aggregates the users analyzed information and gives a broader analysis of the users' behavior and their cost-benefit.
Employer:  Self-employed
C# .NET 4 EF 4 ASP.NET MVC 3

Flight Information System

Jan 2012
A web application system including an integration sub-system that collects airlines flight information from other systems, normalize and show them in a beautiful way.
Employer:  Self-employed
C# .NET 4 EF 4 ASP.NET MVC 3

Online Survey System

Oct 2011
This is a SaaS. It allows users to create survey forms with various data input elements and reports.
Employer:  Self-employed
C# .NET 4 EF 4 ASP.NET MVC 3

Online Custom-made CRM (Silverlight)

Nov 2011
A lightweight custom-made CRM. We used Silverlight and RIA services for implementing this project and all communications are non-blocking.
Employer:  Self-employed
C# .NET 4 EF 4 Silverlight

Custom-made Inventory Management System

May 2011
An inventory management system desktop application implemented specifically based on the customer needs. Used the latest technologies and best practices at the time, like MVVM and WPF.
Employer:  Self-employed
C# .NET 4 EF 4 WPF

Steam Boiler Simulation Software

Mar 2011
In a partnership with a team of Mapna Group engineers implemented this simulation software which helps engineers to virtually build and test a steam boiler to be used in power stations. It allows the user to add and arrange the boiler elements in an elegant graphical environment using drag-and-drop, specify the elements relations and parameters, then run the simulation and receive various reports.
Employer:  Shaar Co. LTD
C# .NET 4 WPF Fortran

Invoicing Business Integration System

Jul 2010
This system allows users to define a workflow to collect accounting information of customers and then generates some invoices based on the received information. I've learned a lot about accounting during the development of this project. It's implemented using MS Workflow framework to allow business users to define the flows according to their needs.
Employer:  Shaar Co. LTD
C# .NET 4 EF 4 WF PLINQ

Kaveh Maritime Container Transportation Order and Management System

Jun 2010
A workflow system with online payment facilities for managing the maritime transportation businesses.
Employer:  Shaar Co. LTD
C# .NET 3.5 LINQ2SQL WebForms

Custom-made Enterprise Report Builder

Feb 2010
This project has started base on IRISL need for a report builder that allows users to build highly customized reports. They weren't able to produce their custom reports using the existing report builders on the market. This is a unique and creative highly customizable report builder that allows users to build their reports using Microsoft Office tools like Word and Excel.
Employer:  Shaar Co. LTD
C# .NET 3.5 LINQ2SQL WebForms WinForms

Balanced Scorecard System

Mar 2009
A balanced scorecard system built for IRISL which allows the user to define and schedule projects, with the support of resource assignment for various data inputs, rescheduling, scoring, etc. It generates reports from different perspectives; quantitative vs quality evaluation.
Employer:  Shaar Co. LTD
C# .NET 3.5 LINQ2SQL WebForms Silverlight

Automation of Tehran Municipality Job Organization

Sep 2008
This project automates the process of job organization under the supervision of Tehran municipality. It supports multiple centers and has a ticketing system for processing the requests from other centers.
Employer:  Shaar Co. LTD
C# .NET 3.5 LINQ2SQL WebForms

Online Education System of Arak University of Medical Sciences

Jul 2007
An online education system with facilities like defining the exams, questions, online exam registration, issuing certificates based on the exam results, etc. This system has been used to facilitate the process of physicians continues education.
Employer:  Self-employed
PHP MySQL

HEPCO After-Sales Services Software

Apr 2006
Participated in the development team as a part-time employee. About HEPCO: https://en.wikipedia.org/wiki/HEPCO
Employer:  Behsad Co. LTD
PL/SQL Oracle

2D Cutting-Stock Problem Solving Software

Sep 2003
This was my first commercial project and basically start of my career. This software was the first of its kind in Iran. Using C++ and genetic algorithm we could produce at least 95% efficiency in general 2D cutting-stock.
Employer:  Behsad Co. LTD
C++ MFC