About Me
Hi, my name’s Amir and I’m a software developer. With a vast computer programming and engineering background, problems have always fascinated me to keep solving them in the best and the most correct way I knew at the time.
I am most skilled in C#
, .NET
, T-SQL
and Web Security
.
Skills
- Proficient in C#
- Proficient in .NET Framework and Core
- Proficient in T-SQL (SQL Server)
- Proficient in English and technical doc comprehension
- Good knowledge of Entity Framework 6 and Core
- Solid understanding of Clean Architecture & Domain-Driven Design
- Good knowledge of Microservices and related architectural patterns like ES and CQRS
- Good knowledge of Design Patterns & SOLID Principles
- Good knowledge of web security concepts
- Experience with RESTful Web APIs and classic SOAP Web Services
- Experience with oAuth, OpenID Connect and Identity Server
- Experience with TFS and Git
- Experience with ASP.NET MVC, Web Forms and Windows Forms
- Experience with CSS, HTML, JavaScript, Angular & TypeScript
- Familiar with new Web and browser technologies in HTML5, CSS3 and new ECMAScript standards
- Vast experience of Visual Studio, VS Code and debugging
- Excellent at Terminal
- Familiar with Docker
- Familiar with Ionic Framework
Projects
A software infrastructure for modern and scalable application hosting
It’s the most recent work-in-progress project of mine in which I’m going through a series of research and development in order to choose the most appropriate and state-of-the-art software components and solutions required for an infrastructure capable of hosting a handful of line-of-business applications company already has which are scattered and buried deep down in legacy code and some other closed-source completely-bought solutions. The main targets are scalability
and flexibility
which have led me to Domain-Driven Design and Clean Architecture alongside selecting the most reliable versions of frameworks, software stacks and solutions that are available for use. This .NET Core-based project can be divided into three logical parts:
- A Central AuthN / AuthZ System (CAS) based on the state-of-the-art principles of web security following oAuth 2.0 and OIDC-based components like Identity Server 4.
- A backend designed as a
modular monolith
at first, but designed in a way to make the transition toMicroservices
architecture as easy as possible in case it was inevitable in future. I’m considering best practices of DDD and SOLID, trying to use state-of-the-art solutions for required building blocks namely EventFlow.NET, Elasticsearch, Serilog, OpenTelemetry, Azure Vault, Jaeger, Eureka, RabbitMQ, Redis, OpenAPI (Swagger) and so on. Also following best practices in using ASP.NET Core Web API technology like API versioning, HATEOAS, rate limiting etc. - All types of clients / front-ends considered to be located in this section. An Angular-based Ionic Framework solution is the first choice as the power of Angular in managing large client applications and also Ionic’s Capacitor-based capabilities in run-everywhere approaches are undeniable, reducing costs for not developing a dedicated app for each mobile platform. Also, PWAs - Progressive Web Apps - are considered from day one in this approach which I, among so many others, believe to have a brilliant future potential.
A contract, loan and payment management system
An ASP.NET Web Forms-based application using Forms Authentication, SQL Server database using Entity Framework 6 and communicating with dozens of web services in order to integrate into other systems.
A sales system for special kind of products or services provided to stakeholders based on their credit or capital. Debts are to be payed off though a couple of ways, including:
- using their capital
- paying installments on a monthly-basis personally through an online payment gateway or using a POS device
- deducting from their monthly salary till their contracts are settled.
Moreover, I participated in improving performance of some batch payment operations using EF 6. I also was responsible for improving performance of database views and stored procedures.
A finance (stocks) management system
A Windows Forms application created based on a custom-made fairly nice and solid framework mostly using ADO.NET (for SQL Server), inherited custom Forms and Controls for special tasks related to the financial nature of the application and tons of reflection in C#. At the heart, it uses some sort of engine for handling financial transactions including increase, decrease (similar to deposit and withdraw) and many other kinds. Results of calculation of transactions are all committed to the database using Stored Procedures.
A few biometrics solutions
It was an interesting experience for me creating some facade APIs for a relatively low-level and generally hard-to-work library which could drive a series of biometric fingerprint scanners made by Suprema manufacturer company. The provided features are:
- Enrolment : Scans and creates a couple of standard signatures from the fingerprint for later use
- Verification : Checks if a newly scanned fingerprint is of enough similarity to the previously saved one for the claimed identity.
- Identification : Gets one fingerprint and compares it to a collection of previously saved ones in database to figure out if there is any match among them or not.
Furthermore, I created some Windows Forms libraries to make it simply usable for a typical application developer in Windows Forms applications we had. The plan was to gather stakeholders’ fingerprints gradually over time and to verify or identify them later on serious financial transactions they are ought to, specially withdrawals. We also made use of the identification capability of the system on some Windows Forms apps like Access Control on special occasions.
As the second phase, I designed a couple of Nancy-based Web APIs and Windows Services making it ready-to-use in web-based applications of company.
A customer loyalty club
Designing and implementing required business blocks for the batch-processing mechanisms of the company customers' loyalty club
using mostly database and stored procedure-based approaches. A system user could define various types of so-called promotion plans
based on business transactions and financial behavior of customers. Next according to each plan’s configuration, system assigns customers some points in each plan. Also the system has the responsibility for generation of customers’ lottery codes to be used in a specific kind of lottery with prizes.
Experience
A holding engaged in financial activities as long as services, to a large extents for the main investors / stakeholders of the mother company. My job, in the IT department of mother company, is mainly maintaining, improving and redesigning so-called legacy code-base & databases which are mostly in the fields of finance, sales, loans and accounting. I also designed / contributed in the design of some off-the-main-topics systems in-use for special purposes / occasions.
Education
K. N. Toosi University of Technology
MSc Mechatronics Engineering
2010 - 2016
My thesis was focused on evaluating some intelligence (AI) based algorithms for training some special kinds of oscillating networks (CPGs) which had shown outstanding abilities in imitating repetitive movements e.g. in walking of vertebrates, in my case for human walking gaits. I used some setups to check that ability using simulation-based version of a humanoid robot made by Fujitsu (HOAP-2).
Guilan University
BSc Electronics Engineering
2015 - 2010
I was into digital signal processing (DSP) back in those times and tried to pursue my vision using a simple frequency analysis algorithm (FFT) for comparing frequency bands of some recorded inputs to those of a pre-recorded commands containing mere numbers 1-9, in order to trigger some command in case one of them is detected.
A Little More About Me
In my spare time, I also try to play with new and old technologies and create some funny and useful things out of them. Things like:
- Python for AI and Face Recognition
- Telegram bots
- Linux & Terminal
- Extra bits!
I also like doing calligraphy ( نستعلیق ), traveling, playing Ping-Pong and reading about economy if I can create more time :)