Shayan Khorsandi

Software Engineer | Research Scientist

Email: shn.khorsandi@gmail.com

Phone: +98 - 912 084 3547

Web: www.abradat.github.io

About Me

Hi, my name’s Shayan, and I’ve recently graduated with a Bachelor of Science in Computer Engineering from Iran University of Science and Technology. Right now, I am a software engineer at Informatics Services Corporation (ISC). I was a research assistant at the Bio-Inspired System Design lab under the supervision of Prof. Soroush Sadeghnejad at the Amirkabir University of Technology. Before that, I was a research assistant at the Robotics lab under the supervision of Prof. Mohsen Bahrami at the Amirkabir University of Technology.

Projects

Due to policies, I am not able to provide code that is being used as production at Informatics Services Corporation. However, I have provided sample ones which I have implemented during the development.

Central Securities Depository (CSD) V2

Informatics Services Corporation, May 2020 - Present

A new version of Central Bank of Iran’s CSD system. The project is based on the microservices architecture. As a member of team, I am reponsible for:

  • Back-End services development based on Spring Boot and Spring frameworks.
  • Implemented a non-blocking API gateway using Spring Cloud Gateway based on Netty.
  • Secured services through Keycloak based on OpenID Connect.
  • Migrate the previous admin dashboard to a new one based on Angular framework.

Iranian Instant Payment (IIP)

Informatics Services Corporation, August 2019 - Present

IIP is Central Bank of Iran’s newest inter-bank payment system. IIP services are available all-around-the clock and should result in the immediate or close to immediate crediting of the Beneficiary’s account. The project is based on microservice architecture. As a member of team, I:

  • Developed a Socket.IO client based on Spring Boot for pre-defined communication between IIP and consumer banks. The client receives from and send messages to consumer banks using IBM MQ and communicates with Socket.IO server.
  • Developed a terminal for real-time communication between the Angular application and the server’s command line using WebSocket and Xterm.js.
  • Zuul gateway implementation for receving messages from clients based on REST endpoints and delivering them to destination services using Apache Kafka. For service discovery, Eureka server is used. [code]

Central Securities Depository (CSD) V1

Informatics Services Corporation, August 2018 - August 2019

Central Bank of Iran’s service for providing inter-bank security market and communication with Tehran Exchange Market. The project was implemented based on microservice architecture. During the development, I:

  • Developed back-end services based on Spring Boot and Spring frameworks.
  • Developed Angular application components based on material design.
  • Implemented microservice architecture patterns including:
    • Orchestration-based Saga pattern for managing distributed transactions. [code]
    • Redis Sentinel for automatic failover, monitoring, and notification service. [code]
    • IBM MQ messaging [code] and Apache Kafka streaming [code].

AUTMan Teen Size Humanoid Robot

Bio-Inspired System Design Lab

As a member of AUTMan team, I developed:

  • Ball Trajectory Predictor: Intented for solving Robocup’s humanoid robots league’s roll and kick challenge. Implemented in Python. Simulation’s data captured from ROS platform’s simulator Gazebo. [code] [Paper]
  • Motion Editor: a PyQt application for monitoring and configurating Herkulex servo motors and motion generation using pre-defined sequences. [code]
  • Walk Tuner [code] and Offset Tuner[code] PyQt applications for walking calibration. Communication with robot is done using Arduino boards.

PS5 News Crawler

Fall 2020

An application for crawling and saving recent news from CNN and recent tweets about Playstation 5 console. Selenium is used for crawling CNN and recent tweets are crawled using Twitter Developer API. Crawled data is persisted into a PostgreSQL database. An angular application is used for presenting crawled data and requesting for re-crawl. Tweets’ sentiments are analyzed by Stanford Core NLP and labeled in the angular application. [code]

Unity Game with Hand Gesture Recognition

Fall 2019

A 2D puzzle game written in Unity game engine, focused on guessing words by connecting letters together. Player can interact with the game either by matching the letters via mouse (or touch screen) or using pre-defined hand gestures that is recognized by image processing algorithm written in OpenCV framework. Game and image processing programs communicate through WebSocket. [code]

Linux Kernel Module

Fall 2019

Linux kernel module which hooks read and write system calls using ftrace and performs encrypt/decrypt actions with ROT13. [code]

English to Persian Subtitle Translation

Spring 2018

A Seq2Seq LSTM network to translate english to persian Subtitles. [code]

AUTCup Application

Winter 2018 & Fall 2016

AUTCup international competition’s application for committee members in order to manage leagues, teams, scores, and notifying participants for two years:

  • 2018: a web application written in Beego framework (Go language). [code]
  • 2016: PyQt offline application. (Python Language) [code]

S&P Stock Index Prediction

Fall 2017

Implemented the prediction of S&P index by feed forward neural networks based on the Tensorflow framework. [code][Report]

Boxing with Q-Learning

Fall 2017

Implemented an agent learns how to box based on Reinforcement Learning. It is implemented in two phases. In the first phase, Naive Q-Learning is used. Then, the Deep-Q Network for improving the performance as the second phase. [code]

Process Scheduler in NachOS

Fall 2017

Completing the implementation of NachOS schedulers (NachOS is an educational operating system.) [code]

Search Engine

Spring 2016

Implemented a search engine using the Inverted Index algorithm, and also A web-scrapper in Python, flask, SQLite & Scrapy. [code]

Experience

Informatics Services Corporation (ISC)

en.isc.co.ir

Software Engineer

May 2018 - Present

ISC is the market leading provider of banking systems to almost all commercial banks of Iran as well as many financial institutions

I am a software engineer in the “National Payment Systems Development” group. Nowadays, I am engaged in two national banking projects, Central Securities Depository (CSD)and Iranian Instant Payment (IIP).

I develop back-end services mainly through Spring Boot and Spring frameworks based on microservice and monolithic architectures. Also, I develop front-end applications with Angular framework. In terms of DevOps, I am responsible for dockerizing our services and using Jenkins for CI/CD.

Bio-Inspired System Design Lab

autman.aut.ac.ir

Research Assistant

Amirkabir University of Technology
June 2016 - February 2020

I was mainly responsible for solving the Robocup’s competition Roll and Kick challenge. We designed a method for predicting ball’s trajectory by combining k-NN Regression and Autoregression methods. Also, I developed Motion Editor, Offset Tuner, and Walk Tuner softwares for our teen-size humanoid robots and Iranian standard platform robot, Kiarash. In addition, I developed, modularized, and migrated our codes to the ROS platform.

Robotics Lab

Research Assistant

Amirkabir University of Technology
October 2013 - July 2014

I got deeper into robotics and artificial intelligence concepts by researching on Q-Learning method and developing the stand-up motion for our humanoid robot based on the ROS platform.

Education

Iran University of Science and Technology

B.Sc. Computer Engineering

2015 - 2020
GPA 17.32/20 (3.72/4)

A Little More About Me

Alongside my academic and professional life, some of my hobbies are: