Dmytro Hrimov

Senior software engineer

I started as a Junior Software Engineer back in February 2013 when I was a student. Before I even started my career in a software development company, I did some small things during my mid-school years. I already knew some programming basics, so I created a PHP tool to parse a webpage and do simple math for a browser game.

Skills

A self-estimated skill set that I worked with in practice.

Backend Development

Java
Spring Core
Spring Security
Spring Data
JUnit
Mockito/EasyMock
Hibernate
Python

Build tools

Maven
Gradle
GitHub Actions

Cloud Technologies

AWS Lambda
AWS ECS
AWS API Gateway
AWS S3
AWS CloudWatch
AWS SNS
AWS SQS

Databases and Tools

SQL
PostgreSQL
MySQL
Snowflake
Flyway
Liquibase

Frontend Development

React
Angular
HTML
CSS
JavaScript
TypeScript

Infrastructure

Serverless
Terraform

Other

Redis
Jira
Confluence

Experience

dhrimov.dev
April 2021 - Now
This includes everything related to this website and everything you can and cannot see over here. Setting up the infrastructure, configuring everything, creating an admin tool (sort of a CMS), and writing the content.
Upside, Inc. (formely GetUpside)
January 2020 - Now
Working full-time remotely as a Software Engineer. Over the years, I have been a part of several great teams. I am primarily working with the following technologies and languages (prioritized by the amount of usage): Python, AWS (Lambdas, SNS, SQS, EventBridge, S3, DynamoDB, ECS/Fargate), Terraform, SQL, Java, GitHub Actions and other.
Key contributions:
  • Enhanced, extended, and supported merchant communications, including transactional performance emails and billing document emails with attachments. Collaborated on internal integrations with systems developed by other teams.
  • Contributed to developing, improving, extending, and supporting a billing system for invoicing and payouts, enabling various billing experiences for merchants.
  • Consistently updated, improved, and supported various background processes, adding guardrails, improving validations, and ensuring robustness, fail-safety, and efficiency.
  • Delivered high efficiency in fast-paced environments, collaborating with product owners on system updates and maintaining comprehensive documentation of system details and decisions.
Being part of distributed system development in a cloud environment. This includes:
  • Designing workflows
  • Working with messaging systems (SNS, SQS, EventBridge)
  • Balancing the system so it can work efficiently, handle the load, and not being throttled when handling user requests
  • Working with event-sourced systems and DDD
  • Creating, improving, and supporting cloud infrastructure using Terraform (infrastructure-as-a-code tool)
  • Other: dealing with concurrent updates, locks, caching, etc.
Noteworthy Achievements:
  • Developed an internal tool used by developers and operations to speed up certain routines.
  • Worked on creating Python libraries to ease rendering of PDF and XLSX documents per requirements. Also worked on invoice PDF and XLSX document rendering.
  • Providing on-call support and handling production issues that occur as system runs. Creating and maintaining on-call documentation to provide clear instructions on how to address various issues that come up.
Nasdaq (formely Adenza, AxiomSL)
August 2018 - Now
I started by adding a custom JS library and code to a Vaadin project (adding a custom JS chart as a widget).
The project grew into a bigger initiative, that includes:
  • The user-facing UI is composed of a variety of things, the main of which are dynamic page rendering based on the configuration, interactions between widgets (page elements), data loading, caching, and more. I helped set up a foundation that everything would be built upon later. Later, I supported this project, developed new features, fixed bugs, and made other improvements.
  • The admin configuration editor is a dashboard builder. I primarily developed this. The main part of the project is a drag-n-drop page editor with rich layout and configuration possibilities. The admin editor also includes an XML text editor with rich XML editing features, such as code completion, expand/collapse functionality, and validation.
Both projects use React as the main engine. The user-facing part uses Redux, and the admin is built using React Context instead. I have also worked with DnD, React Router, Lodash, React Hook Forms, and many other smaller libraries. I have developed a number of home-grown widgets (the best example is a multi-layered menu similar to how system menus work), custom input components, popups, overlays, and many more.
Performance is critical, so I also optimized app performance by reducing the number of re-renders by utilizing newer library versions, hooks, and memoization.
Maintained the project by rewriting some components from classes to functional style and utilizing React Hooks, including writing custom ones.
EPAM Systems
BlackBerry Inc.
January 2015 - December 2019
Migrating legacy pages from JSP to GWT and implementing various new functionality using GWT (forms, map integrations, layouting).
I was developing an internal tool from scratch. The development included architecting the solution, clarifying the requirements, documentation, and implementation. The tool was a full-stack project, that had a UI (Angular), backend API (Spring Boot, Core, Security, Data), SQL database. The tool used customer LDAP for user authentication. I also implemented a simple API with a token authentication.