Sina Shariati
Backend developer with 2 plus years of experience able to build web applications from the ground up. Extremely passionate towards software architecture and design combined and using cloud computing paradigms to serve the needs of the business balanced with delivery of high quality solutions.
Work Experiences
Software Engineer
Snapp is the first and leading ride-hailing application in Iran. As a member of the offering team, I was responsible for designing, developing, and deploying services related to offering rides to drivers. With the help of wonderful co-workers, I was able to:
- analyze and enhance the performance of several services to be able to scale for more than 70 million users
- Refactor and cleanup services code and make them more readable using different design patterns such as visitor patterns
skills: Docker, Helm, OpenShift, Kubernetes , gRPC, Grafana, Golang
Golang Backend Trainee
Bale messenger is a messaging and banking solution company in Tehran/Iran. I attended their golang backend developer trainee program at Bahman 1400, and was able to finish their on-boarding process twice faster than anticipated and was awarded as one of their prime trainees and was able to join their production team. In bale, I work alongside a talented team to further enhance the stability and performance of our microservice architecture. I have hands-on experience working with:
- Golang and it's concurrency patterns
- Git for versioning
- gRPC and Protobuf as our main RPC framework
- Docker for containerization and Kubernetes for container orchestration
- Load testing and Stress testing and its tools such as: k6
- Envoy being implemented as a sidecar and gateway proxy and rate limitter
skills: Golang, Kubernetes, Helm, Docker, Envoy, Grafana, K6(load testing), Prometheus
Projects
colossus of rhodes: scheduling algorithms arena!
As a part of a research project I was tasked to implement a simulator of operating systems and underlying hardware that you can define new scheduling algorithms and test them. This project aims to be a framework for implementing and testing different scheduling algorithms and be a basis for comparison of them, also in addition to that there is the possibility to expand the framework to have multiple dispatchers, queues, long-term & mid-term scheduler etc. As a part of this project I got familiar with:
- FIFO, LIFO, round-robin process scheduling algorithms
- Hardware simulation by software
- Basic Os and process scheduling concepts
Message Broker
In Bale Messenger's golang backend trainee program, as our final project, we were tasked ot implement a gRPC message broker. Some technologies & techniques I worked with through this project were:
- Channels / Locks / Mutex
- gRPC / Protobuf
- Load testing
- Performance monitoring using prometheus and custom-built grafana dashboards
- Performance optimization using insert batching and caching
- Global and Local rate limiting
- Containerization and container orchestration
Pronto: Reliable Blog For Personal Use
Alongside a team of other developers I was responsible to develop and unit test a RESTFUL api of a weblog for personal use using Php/Laravel. In this project I had hands on experience with:
- Restful API
- oAuth2
- Advanced Search through Algolia
- Test Driven Development
- Role permission system
Clash Royal: The Javafx Clone
In spring 2020, in Amirkabir University of Technology, for advanced
programming class, me and my team of one other developer were tasked to
implement a clash royal
clone using Javafx and java-core.
In this game online offline modes have been implemented. The offline mode
contains
two bots, normal bot and clever bot.
I was the lead architect
and logic implementer of the game.
We built this project from ground up without using any game engine or
frameworks and we had to come up with solutions for many problems, such as:
- How to create a real time client/server game using sockets
- How to optimize data flow through sockets for lower game latency
- How to come up with scalable architecture to model game entities such as towers and troops
- How to manage game state across multiple users or in offline mode
- How to implement a more clever robot that tries to guess the opponents next move
Blog: The Fast Api
A TDD implementation of a fast, secure, easy-to-maintain weblog RESTful API. In this project I had hands on experience working with:
- Redis and caching
- Unit testing using pest framework
- Query and eloquent optimization for better DB performance
- Implementing a simple authentication system from ground up
Mafia: Socket Based Game
In spring 2021, in Amirkabir University of Technology, I was tasked to implement a command line version of Mafia game with chat room using socket servers. In this project I had to design and implement features such as:
- Socket powered chat rooms
- Citizens roles such as inspector, doctor and etc
- Mafia roles such as God father and Doctor lector and etc
- Online realtime game using TCP/IP protocol with support for more than 10 players in each room