Aref Moqadam Mehr

I am an avid learner and technology enthusiast.

About

As a Software Engineer with over five years of experience, I have successfully completed an array of projects in varied fields such as web applications, enterprise software, and SaaS products. Additionally, I have a Master's degree in Computer Science and I enthusiastically follow the advances in machine learning.

When it comes to software development, I take an active approach by stepping up to tackle any challenges that may arise and assisting my teammates when needed. One of my core values is pair programming, and I find great pleasure in collaborating with others. In fact, I even introduced my previous team to mob programming. Additionally, I enjoy facilitating discussions within my team, both technical and non-technical, and helping to find solutions to any issues that arise.

Throughout my career, I've been a part of both successful and unsuccessful projects. I've worked in different robotics competitions, co-founded a tech startup, and been employed at various enterprises and large-scale companies. Overall I appreciate the startup culture and challenges, equally I find fulfillment in working at larger companies.

When I'm not at work, I like to stay current with the latest technology trends. I'm particularly interested in the integration of artificial intelligence with automobiles and aircrafts, and I enjoy spending my free time developing an autopilot system for my RC aircraft.

For more about me, check out my online resume below, or download the pdf version.

Resume

Please find below my education, skillset, and my previous experiences in the chronological order.

Education

Master of Computer Science

Shahid Beheshti University, Tehran, Iran.

Bachelor's of Computer Engineering - Software

Qazvin Azad University, Qazvin, Iran

Skills

  • Core skills:

    Python, C/C++, C#, Java
  • Machine Learning:

    PyTorch, Keras, TensorFlow, PySpark, OpenCV
  • Backend:

    FastAPI, Django, Flask Docker, Kubernetes, Nginx
  • Frontend:

    React.js, Vue.js, ES6, jQuery, Bootstrap
  • Database:

    MySQL, SQLAlchemy, PostgreSQL, Redis, MongoDB, Celery, RabbitMQ, ElasticSearch

Projects

Gesture Recognition via Spike-Convolutional Neural Networks

2020
Master Thesis, Shahid Beheshti University Read more

During my master's project, I was able to delve into the fascinating world of Spiking Neural Networks (SNNs). These networks are a subfield of neural networks that emulate biological cells' behavior, which produces electrical pulse outputs instead of continuous real-valued numbers. The use of SNNs in this research allowed me to explore how these unique neural networks can be applied in real-world applications.

To gather data for this research, we opted for DVS sensors instead of conventional cameras. This decision was made because DVS sensors inherently provide spikes trains instead of the pixel value.

Working on this project provided me with an opportunity to implement essential tools required for building neural networks from scratch since traditional tools like Keras or PyTorch do not support SNNs initially. By implementing these tools myself, I gained a deeper understanding of how neural networks work and the underlying principles behind them.

Overall, working on this project has been an incredibly enriching experience that has expanded my knowledge base significantly. Not only did it allow me to explore new areas within AI research but also gave me practical experience in developing cutting-edge technologies that could.

Fully Automated Rescue Robot

2019
Robotic Summer School, ETH Zürich Read more

In this summer school, we worked on a four-wheeled rescue robot platform. We were given a disaster scenario and tasked with finding and identifying victims in a wrecked building. Our team focused on modeling, localization, and behavior modules of the robot while developing a module on ROS to work with these scenarios. Thanks to the innovative approaches we used, we became the first team in this summer school to win the prize.

Autonomous Vehicle

2019
Hackathon Project, Cafe Bazaar Video Github

The project that we worked on was an exciting and challenging hackathon event organized by CafeBazaar. Our team's goal was to create a autonomous system capable of driving a modified vehicle with minimal or no human intervention. We were determined to achieve this task by developing a machine learning algorithm that could interpret the surrounding environment and provide accurate steering inputs.

To accomplish our objective, we used a pre-trained ResNet as the base structure for our project. This deep neural network allowed us to create semantic-segmentation images from the input camera, which helped us identify different objects in the car's surroundings accurately. After generating these images, we trained an MLP (multi-layer perceptron) network on top of it, which provided corresponding steering outputs based on what it detected in the image.

The result of this project was unbelievable. Although it was a naive driving system, achieving such a result in just a few days was astonishing. The autonomous car manage to drove several miles down an open street without any issues.

Overall, participating in this hackathon event gave us valuable experience working under pressure while also allowing us to develop new skills in artificial intelligence and machine learning techniques.

Microservices Refactor

2018
Cafe Bazaar

As a Tech Lead at CafeBazaar, my most significant achievement was improving our search functionality. When I joined the team, we had a monolithic system that caused numerous issues due to its unnecessary complexity. Maintaining and debugging it became increasingly difficult. Additionally, implementing an appropriate cache and scaling instances proved challenging.

What we did was break apart the monolith into multiple micro-services and deploy them on Kubernetes instances. The primary challenge in this project involved determining the architecture and where to split the monolith. To accomplish this, I organized meetings where everyone shared their thoughts and concerns. We then researched best practices for this situation and discussed them together. Ultimately, we consulted with senior members from other products within our company to make a final decision on the architecture.

Afterwards, we refactored and implemented a microservice for each part. We shipped them to the product and connected them with the existing stack. I implemented sensible metrics for each service to ensure they worked as intended. We replaced these services one by one until the entire monolith was obsolete.

We added a multi-layered caching system using Redis to store results dynamically. We encode various parameters in the cache key and save the page result as the cache value. Each docker has a sidecar pod that stores its local cache, and we have a larger Redis instance on Kubernetes to store caches for longer periods. Finally, we implemented a persistent instance to store the cache in case of cache pod restarts. Each layer of caching refreshes its value after some time when there is a new inquiry.

Fast Soccer Ball Detection with Deep Learning

2017
Bachelor Thesis, Qazvin Azad University Github

The purpose of this project is to enhance the accuracy of object recognition in soccer fields, particularly for NAO bipedal robots that are involved in the RoboCup humanoid and SPL environment. We understand that detecting objects such as a soccer ball can be quite challenging due to several factors. As a result, we have developed various modules that utilize Convolutional Neural Networks (CNNs) to detect these objects with greater precision.

One major difficulty we encountered during this project was accounting for varying light conditions on the soccer field. The lighting on a soccer field can change dramatically depending on weather conditions or time of day, which makes it difficult for our system to recognize objects consistently. Additionally, another challenge we faced was dealing with the dynamic nature of a soccer field environment where players move around rapidly while playing.

Moreover, One crucial factor we considered when designing this system is the limited processing power available on these robots. Despite the difficulties, we developed solutions that enabled our system to perform well in various circumstances.

Camera/Gyro Displacement CalibrationCamera

2016
MRL Biped-Lab

This project is a specialized calibration tool designed for robot cameras and gyro sensor displacement. We place the robot on a calibration board, project checker-board markers based on its kinematics, and compare them to detect marks in the actual image. Using Gauss-Newton optimization techniques, we minimize errors between these two measurements to identify potential displacements in sensors or cameras. By comparing multiple image-kinematic pairs using this method, we pinpoint even small discrepancies in their positioning.

This allows us to make more precise calculations of distance from objects in the field, improving both the robot world belief system and self-localization module results.This project is a specialized calibration tool designed for robot cameras and gyro sensor displacement. We place the robot on a calibration board, project checker-board markers based on its kinematics, and compare them to detect marks in the actual image. Using Gauss-Newton optimization techniques, we minimize errors between these two measurements to identify potential displacements in sensors or cameras. By comparing multiple image-kinematic pairs using this method, we pinpoint even small discrepancies in their positioning. This allows us to make more precise calculations of distance from objects in the field, improving both the robot world belief system and self-localization module results.

Professional Experience

Sr. Software Engineer

2023 - Present
Automata Tech, London, UK Website
  • Automata provides automated robotic solutions for laboratories to streamline lab processes and reduce the need for human intervention.
  • My primary contribution involved the development of high-level drivers for the lab instruments and establishing integration with the backend software.

Software Engineer

2022 - 2023
Sprout AI, London, UK Website
  • Sprout AI offers insurance companies advanced machine learning technology to quickly process and respond to claims. These tools range from basic OCR models to more advanced automated claim handler tools that process entire claims.
  • As a backend software engineer at Sprout, my main focus was on developing and maintaining the APIs necessary for serving the ML models provided by our data scientists. The majority of these models were developed in PyTorch. I ensured proper testing and implemented caching and API endpoints. Then add monitoring, and served them on AWS using kserve.

Technical Lead

2018 - 2020
Cafe Bazaar, Tehran, Iran
  • CafeBazaar is a marketplace for Iranian apps. It was the most used and downloaded Android app in Iran. I worked on the search team, handling over a million daily requests through both the search API and word prediction API.
  • As a Tech Lead at CafeBazaar, I improved our search functionality by breaking apart the monolithic system into multiple micro-services and deploying them on Kubernetes instances. We organized meetings to determine the architecture and refactored each part into a service with sensible metrics. We added a multi-layered caching system using Redis to store results dynamically with various parameters encoded in the cache key. Finally, we implemented a persistent instance to store the cache in case of restarts.
  • At CafeBazaar, we created the Process Coordinator role as a type of agile coach with an emphasis on learning. I served as my team's PC and facilitated necessary meetings and agile ceremonies. Weekly, all PCs gathered to discuss team problems and new approaches introduced globally, including those presented at GoTo meetings. Additionally, I ran retrospectives to resolve issues raised in those meetings. I also conducted engagement surveys for my team, compiled results, and shared them with both the team and managers.
  • As part of my role on the team, I conducted code and peer reviews. We required approval from someone other than the author before merging a branch. We also, enjoyed a lot of pair programming in the office as this was pre-pandemic time.

Sr. Software Engineer

2017 - 2018
Cafe Bazaar, Tehran, Iran
  • I began working as a Software Engineer in CafeBazaar's Search-Functionality team. Our team goal was to displayed relevant applications from our store to users, while also handling monetization. We utilized Python Django for our stack and connected our API via gRPC to the mobile client. Nginx balanced load between different dockers on the server, each running a Gunicorn to process Django.To store apps, we used Elasticsearch. The engine indexed apps by their name and description.

Co-Founder and Developer

2015 - 2016
Negar Afarin Barajin, Qazvin, Iran Website
  • I co-founded NAB, a startup that launched the To3D.net website. We developed an automated 3D reconstruction engine using photogrammetry techniques to create 3D models from sets of images or videos taken from an object. This publicly accessible tool can reconstruct objects on any scale.
  • We provided two major exclusive services: first, we aimed to provide reconstruction models for 3D printers by modeling and rescaling the object and creating a PLY file. Second, we used aerial photography to model large landscapes. As a demonstration example of our work, we generated several historical landscapes including Masuleh, an ancient city in northern Iran.
  • At NAB, I faced the challenge of creating a speedy web-based visualizer for our 3D landscape maps. The point cloud we were working with was massive, and there was no dependable web-based 3D engine available at that time. To solve this issue, I developed a custom shader engine using JavaScript. Our engine incorporated various levels of optimization to render the point cloud into visible surfaces and display them in real-time.
  • Working at this startup taught me about challenges and opportunities in photogrammetry and computer vision while giving me valuable experience founding and managing startups (even if ours ultimately failed due to not finding a proper market).
  • The to3D brand continue to exist and later on, it became To3D Canada which solely focuses on GIS mapping and can be accessible via the http://To3D.ca/ website.

Team Leader

2015 - 2016
Nao Biped Lab., Qazvin, Iran
  • The Mechatronics Research Laboratory (MRL) is a small organization supervised by QIAU University. It consists of several research laboratories focused on robotic technologies with the goal of participating in the World RoboCup Championship. The lab I worked in was named NAO-Biped Lab after the humanoid robot we used to participate in the Soccer League at RoboCup events.
  • After four years, I became the team leader for the 2016 team and participated in that year's RoboCup event. This position provided valuable experience managing a team.
  • Our team was divided into three divisions: the Vision, Behavior, and Locomotion & Kinematics teams. One challenge we faced was coordinating tasks between these teams. At the time, we didn't use any agile principles across the whole MRL. So I adapted SCRUM and XP methodologies to organize tasks, facilitate processes, and bring subteams closer together. This implementation was so successful that other MRL Labs followed suit.
  • Additionally, I revised our recruitment procedure which previously relied heavily on interviewer bias. Instead, I implemented a systematic approach to holistically evaluate candidates in order to select the best person for each position.

Research Assistant

2011 - 2015
Nao Biped Lab., Qazvin, Iran
  • In the NAO-bipedal lab, I worked with the Vision team. Our goal was to scan input images and identify objects in a soccer environment while creating an accurate world model of all objects on the field.
  • The main challenge was solving computer vision problems as efficiently as possible due to limited processing power and time constraints during matches. For instance, we calculated the horizon from the robot's point of view and sampled more points near it and less from part of the image closer to the robot's feet. We then processed these sampled points instead of analyzing the entire image. Additionally, we used YCrCb color space for image processing since it has a better green separation (the color of soccer fields).
  • In addition, we developed a module that calculates the best direction to look and go, based on previous observations and information from other teammates using. We used grid-based optimization methods on a shared belief of the soccer environment between the team of robots. We also estimated, tracked, and predicted the state of each object with Bayesian approaches. And we used Mont Carlo Particle Filter to track the robot's self-location accurately.
  • Another project I worked on, was a calibration tool for robot cameras and gyro sensor displacement. This tool ran a Gauss-Newton optimization to find these displacements based on comparing several image-kinematic pairs using. As a result, we could have determined the object's position with more accuracy.