My Tech

Software Engineering, Javascript, Typescript, React, React Native, NodeJS, Restful services, serverless, Redux, FSM and Statecharts. GraphQL, Elm and ReasonML are into my Radar.

SKILLS

Languages: J​avascript, Typescript, ReasonML (beginner), Elm (beginner) Golang (beginner), HTML, CSS

Web Development Technologies: React, React Native, Redux, Mobx, Xstate, Nodejs, Express, AWS cloud services, Restful services, GraphQL, Gatsby, Angularjs, Firebase, Jest, Babel, Webpack, Styled Components, Sass/Scss, Rxjs, CI systems, Docker, Redis, RabbitMQ

Mobile Development: React Native (Android and iOS), Cordova (Ionic, Phonegap), Flutter (willing to learn)

Databases: MySQL, PostgreSQL, MongoDB, DynamoDB

Others: TDD, Heroku, Netlify, Git, Git Flow, WebSockets, Continuous Delivery, Continuous Integration, Design Patterns, Pair Programming, Agile

Soft skills: Very Good at communication, International Technical Speaker, Team player, Open Sourcerer , Technical Blogger.

Currently looking into ​Distributed Systems, Microservices, Serverless, Software Architectures and Functional Reactive Programming.

EDUCATION

BSc in Aerospace Engineering, Sharif University of Technology in Tehran

Python programming, Duke University

PROFESSIONAL EXPERIENCE

Senior Software engineer at Futurice

Nov 2018 - Present

Full-stack engineering on Frontend, Backend, Cloud and Mobile using Javascript, Typescript, Restful services, GraphQL, AWS, serverless and Nodejs.

Employer and personal branding by constructing and giving technical talks at internal events, meetups and conferences.

Senior Software Engineer at Smarp

May 2018 - Nov 2018

Using Angularjs and React

Maintaining a legacy product (Social Network) and Developing the new product, migrating logical parts.

Migrate legacy code into new codebase (React, Redux, Webpack)

Create API Client abstraction on top of Smarp’s core API to handle API data models, data interfaces, custom data selectors/transformers, Testability

Refactoring proposal for i18n mechanism on the web and mobile clients on Smarp product

New notification system into an Event sourcing mechanism

Proposal for the new design system, working tightly with Design and UX team for better E2E and integration testing coverage, solid design components, documentation, and right abstractions.

Scrum, Kanban, Agile values, Teamwork, Internal tech events

Project manager of Engineering blog

A member of hiring process

[CONTRACT]​ ​Lead Javascript Engineer and Consultant at Beeptunes

​Oct 2017 - May 2018

Tech leading and developing on a shared mobile-web React application (similar to Spotify), meant to play and stream audio tracks, albums, artists.

Written in React and Redux, uses a core package which shares logic and components - between React and, React Native, and probably Electron (in future). Uses modern Javascript development environment.

Teaching React, Redux, Modern Javascript and Testing best practices to the tech team.

Senior Frontend Engineer at Talos Digital

Jul 2017 - May 2018

Maintaining the US and Mexican based company's online digital service for managing the whole Real Estate industry including All the legal access roles, legal document management, and legal process audit

AngularJS, PhantomJS, Karma, Jasmine.

Passenger1 flight and accommodation booking system using React, Redux, Firebase, Jest, and Enzyme.

Agile, Scrum

Lead Javascript Engineer and ScrumMaster at PersianGig

Sep 2016 - Sep 2017

Rewrote multiple B2C and B2B cloud services (cloud storage, cloud-ware) from Dojo Toolkit to React and Redux. Because of better UX, being responsive for mobile users and increase in performance, our customers grew up to 1 million and 450 thousand. (45% growth)

Upgraded a direct HTTP upload service to a Node.js, concurrent, chunk enabled uploader. Since the service is more reliable and supports link resumes, drag and drop and folder upload, our upload instances grew up to almost 20,000 instances per day and decreased the number of tickets complaining about failed uploads, hence caused a better situation for our customer support team. (logs indicate a 60% growth in upload usage).

Add testing to projects up to a reasonable code coverage to increase consistency and avoid common mistakes. Before that, the codebase didn’t have any.

Brought Git Flow to the dev team that decreased the number of conflicts and increased development speed on the codebase.

Gathered a small team of developers to run daily workshops on tech topics such as CI, DevOps, ... to make sure everybody learns as a team.

Mentored a junior frontend developer through a solid educational program (which I designed) and prepared them for team projects.

Enhanced the CI pipeline to cache none-updated assets that decreased the frontend build duration up to 50%.

Integrated upload interface with the native camera to increase UX.

Designed and developed an embedding system for cloud-based files.

Came up with an ACL system on projects that helped the company to reuse code base and extend its business model from B2C to B2B that eventually led to a 200,000 Euros contract with the main telecommunication service in Iran called Irancell.

Rewrote file preview/download service to Node.js server-side rendered pages.

A member of the hiring process.

Web Developer at Bertina Co

Dec 2014 - Sep 2016

Developed Employees Portal using AngularJS, a service to manage employees, monitor their activities, request for vacations, etc

Developed Minisite, a service to provide minimal, responsive personal portals with many themes and live management service using AngularJS, jQuery, SCSS

Developed Chia, an Android application with a gamification approach to learning the English Language, including different levels, payments, live competitions using jQuery, Cordova, Socket.io and Node.js

Developed Hamkalam, an IM application for Android devices providing an anonymous chat service to the public using AngularJS, Node.jS, and MySQL

Developed CartoonLand, an Android application providing cartoons for kids, streaming online videos with multiple qualities, download manager to cache downloaded videos, user management, IAB for payments using jQuery, Cordova, PHP, MySQL

Developed multiple enterprises and personal responsive websites using Wordpress, jQuery, AngularJS

A member of the hiring process.

Talks

Explicitness and Consistency in UI

A talk about hidden complexities of UI, proper domain modelling and how we underestimate this complexity.

Watch the talk on Youtube

Loading talk video

React Hooks vs Reactive Statecharts @ React Helsinki June, 2019

A talk comparing React Hooks to Reactive statecharts in developing a service called HSLZone

Watch the talk on Youtube

Loading talk video

Abstract component modeling in React @ React Finland 2019

Often when we need to develop user interfaces, we model the interface behaviour based on a visual design or the platform we ship onto. However, since the behaviour of the component is the same, it would be beneficial to find a practical way to share this behaviour between different platforms, styling systems, state containers, data transmitters and any other sort of integrations.In this talk, I'll be showing a set of techniques to model a semi complicated React component, independent from the common integrations.

Watch the talk on Youtube

Loading talk video

Statecharts driven UI development

A talk about why UI development is hard and how Statecharts can help us with that

Boost state containment with Redux Observables

A talk about RxJS, Redux observables and their benefits

Watch the talk on Youtube

Loading talk video

Headless React

A talk about developing Headless React components in order to boost reusability and composability of UI components

React without React

A talk about Using React or any other UI library on development and wipe them out on compile time in order to save bundle size and a boost in performance on runtime

Watch the talk on Youtube

Loading talk video

Test Driven Development (Software Talks)

A talk about TDD on Youtube show SoftwareTalks

The state of Frontend development (Software Talks)

A talk about State of Frontend development on Youtube show SoftwareTalks

The life of a software developer in Finland

A talk about State of The life of a software developer in Finland

Contributions

XState: Statecharts implementation in JavascriptXstate VisualizerReact Native OfflineAutomated accessibility testsPaypal universal video playerReact power-plug Headless statefull declarative react components to manage side effectsAlveron (old: React woodworm) Elm & Reason inspired state management for ReactCarbon Online code screenshots toolingReact Static A progressive static site generator for ReactGraphPack A minimalistic zero-config GraphQL serverReact native card flip Card flip animation for React NativeCo-created open source Persian technical blog PullRequest.irActive member on Stackoverflow with 1600+ reputation