Mohamad Sadegh Mohamadi
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 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
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
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
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
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
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