Sina Shariati

Backend Developer

image

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! Cab | May 2021 - present

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 | January 2021 - April 2021

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!

Open Source: Browse Codes

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

Open Source: Browse Codes

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

Open Source : Browse Codes

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

Open Source: Browse Codes

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

Open Source: Browse Codes

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

Open Source: Browse Codes

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