Mohamad Sadegh Mohamadi

Software engineer

image

Experienced Software and Data Engineer with three years of programming expertise, a knack for problem-solving, and exceptional communication skills. Proficient in collaborating seamlessly with cross-functional teams, I am dedicated to advancing technology and delivering outstanding results in the realms of software and data engineering. My capabilities encompass both the development and improvement of existing systems, with a strong emphasis on server-side development.


Work Experiences

Data Engineer

Bale Messenger | Esfand 1401 - present

Bale Messenger is a messaging and banking solution company based in Tehran/Iran. As a Junior Data Engineer at Bale Messenger, I have played a pivotal role in advancing the company's datadriven initiatives and ensuring the integrity and efficiency of our data systems. Here are some key contributions and responsibilities in this experience:

  • Golang and its concurrency patterns
  • Docker for containerization and Kubernetes for container orchestration
  • gRPC and Protobuf as our main RPC framework
  • Hadoop and hdfs for distributed processing
  • Apache Kafka as a distributed event store and stream-processing platform
  • Spark for analytics engine and Airflow as a workflow management platform
  • Data pipeline development for enabling timely and accurate data access

Projects

micro go

Open Source : Browse Codes

A project most for self-learning and working with micro-services and working with other technologies. this project has 5 different services that are using gRPC for more efficient and faster connections. for backward compatibility a http server will be listening for incoming requests of clients that can only send http request and also used rabbitMQ for message queue. Some technologies & techniques I worked with through this project were:

  • Channels / Locks / Mutex
  • gRPC / Protobuf
  • RabbitMQ for implementing an async architecture
  • Makefile / Docker
  • Chi framework
  • Postgres / Mongodb / Redis
  • Shell scripting

Twitter

Open Source: Browse Codes

A twitter-like app written in JAVA with Command line interface and user-friendly graphical interface with JavaFX for more easy usage. Some technologies & techniques I worked with through this project were:

  • JavaFX GUI
  • JSON format api
  • MySQL database
  • Socket powered chat rooms
  • Online realtime app using TCP/IP protocol

Load Balancer

Open Source : Browse Codes

A layer 7 load balancer that uses protocols such as http and https to make decisions based on the actual content of each message. Instead of merely forwarding traffic unread, the layer 7 load balancer will preform some actions before sending the request in this project I had to learn about concepts such as :

  • Load balancing algorithms such as Round-robin, Least-load, Ip-hash, Random
  • How to develop and maintain a simple reverse proxy
  • Proxy and reverse proxy based architectures
  • L7 vs L4 proxies and their use cases
  • TDD to ensure software quality
  • Different layers of the OSI model and their role in network communication
  • Go's native net/http package

go-redis

Open Source : Browse Codes

Here is an implementation of redis with a little twist. redis is an in-memory database so It's so fast and its usage is for caching.

  • Saving data using files
  • Echo framework
  • CORS

URL shortner

Open Source: Browse Codes

Here is a mini project for shortening your URLs by given name or randomly. This project shows how to write a simple Golang's project that contains Database, Configuration, and, etc. This project tries to be strongly typed, easy to read and easy to maintain. Some technologies & techniques I worked with through this project were:

  • Echo framework
  • Redis Caching
  • Docker and docker-compose