Konstantin Golub, Developer in Santiago, Chile
Konstantin is available for hire
Hire Konstantin

Konstantin Golub

Verified Expert  in Engineering

Software Developer

Location
Santiago, Chile
Toptal Member Since
October 12, 2017

Konstantin has been a professional software developer since 2007, and since 2010 has enjoyed working as a freelancer. With a Master’s degree in Robotics and Automatics from Omsk State Technical University, he applies his expertise when developing dynamic web applications.

Portfolio

Automation Anywhere
Spring Boot, ANTLR, ELK (Elastic Stack), Microservices, Java
Fiinlab
Angular, Java, Spring Boot, REST
Kandu
Microservices, Docker, Restito, Web Security, Spring, JSON Web Tokens (JWT)...

Experience

Availability

Part-time

Preferred Environment

Eclipse, IntelliJ IDEA, Linux

The most amazing...

...thing I’ve learned is the understanding that the only constant thing in client requirements is their changeability.

Work Experience

Senior Software Engineer

2017 - 2020
Automation Anywhere
  • Developed an API Gateway for IQ Bot microservices.
  • Developed a logging system based on ELK (Elasticsearch, Logstash, Kibana).
  • Developed the Slushbox/Pipeline Engine scripting language.
  • Designed a complex workflow for the team's continuous integration (CI) platform.
  • Reviewed the code, improved the code quality, and code test coverage.
  • Developed the V8-engine bot command for the Automation Anywhere Enterprise Platform.
Technologies: Spring Boot, ANTLR, ELK (Elastic Stack), Microservices, Java

Java/Spring Framework Back-end Developer

2017 - 2017
Fiinlab
  • Implemented the importer tool.
  • Implemented the automated DB dumping.
  • Implemented a set of REST endpoints to allow installing a Dropbox daemon remotely on a headless host.
  • Fixed and improved existing REST endpoints.
  • Enhanced the system stability by implementing integration tests.
Technologies: Angular, Java, Spring Boot, REST

Senior Software Developer

2017 - 2017
Kandu
  • Implemented the gateway microservices, short living key manager, client token generator, and a framework for functional testing of microservices.
  • Improvements and enhancements of the front-end web application.
Technologies: Microservices, Docker, Restito, Web Security, Spring, JSON Web Tokens (JWT), OAuth, Spring Boot

Lead Software Developer

2015 - 2017
ATX Systems
  • Designed and developed the back-end application.
  • Set up the project build infrastructure.
  • Reviewed code of other developers.
  • Interviewed candidates on opened positions for the project.
Technologies: MySQL, JDBC, Hibernate, Spring, RESTEasy

Senior Software Developer

2014 - 2015
GreenKey Tech
  • Developed a chat tool of the TVB application.
  • Redesigned and improved the caller panel.
  • Implemented the application auto updater tool.
  • Developed a conversation recording uploader tool.
Technologies: SIP, OSGi, Swing

Lead Software Developer

2014 - 2015
InfoRisk
  • Designed and implemented the Sender and Daemon nodes of the Grid.
  • Implemented a data transport library and web services client modules.
  • Implemented Compressed and Repeating measures of an OLAP server.
Technologies: IBM Db2, Web Services, Spring, JGroups, Spotfire, TIBCO

Senior Software Developer

2013 - 2014
Refinary29
  • Designed and implemented a RESTful API.
  • Implemented the data extraction tool.
  • Improved the admin control.
  • Enhanced the predicate editor.
  • Set up the project build infrastructure.
Technologies: Apache Stanbol, OWL, spray, Scala, Akka

Senior Software Developer

2010 - 2014
2-Plan
  • Developed action interceptors.
  • Designed and developed service and persistence layers of the Work 2-gether application.
  • Built mindmap plug-in.
  • Created a swim lane layout manager.
  • Developed RPC sub system.
  • Improved the architecture of the 2-Plan application.
Technologies: Hibernate, HornetQ, RESTEasy, Spring, GWT, Eclipse Zest, Prefuse, Eclipse Modeling Framework (EMF), SWT, Eclipse RCP

Senior Software Developer

2012 - 2013
IntuneInvestor
  • Implemented an RPC module.
  • Developed the user interface of the web application.
  • Implemented lots of functional tests.
Technologies: RESTEasy, Spring, jQuery, Backbone.js, Microsoft SQL Server, Azure

Lead Software Developer

2010 - 2012
Yambina LTD
  • Created unit and functional tests.
  • Designed the architecture of EDMUI.
  • Developed EDMUI application.
  • Built portlets of General Security web app.
  • Enhanced EDMEngine and GeneralSecurity.
Technologies: H2, Jetty, JBoss Drools, jBPM, JAX-RS, Hibernate, CDO, DWR, TIBCO, Eclipse Modeling Framework (EMF), Eclipse RCP

Senior Software Engineer

2009 - 2010
EPAM (Kharkiv, Ukraine)
  • Implemented SalesRegion functionality.
  • Improved existing features.
Technologies: IBM Db2, Oracle Database, WebSphere, JBoss, YUI, Oracle Java Cloud Services SaaS Extension (JCS-SX), Hibernate, Apache Struts, Enterprise Java Beans (EJB)

Senior Software Developer

2008 - 2009
EclipseSP
  • Developed a report portlet and a report generation service layer.
  • Integrated BIRT into the Negentis Platform server.
  • Implemented Document Management Portlet.
  • Created document type and document attachment upload services.
  • Built GWT-to-EJB communications and cash flow projection import/export services.
  • Integrated Cash Flow Entry tool into Evolv system.
  • Developed an excel based test framework.
Technologies: Oracle Database, JBoss, GXT, GWT, SWT, Eclipse RCP, YUI, jQuery, Liferay, Apache Struts, Spring, JDBC, Enterprise Java Beans (EJB)

Software Developer

2008 - 2008
Paragon Software Group (Moscow, Russia)
  • Made performance enhancements.
  • Refactored layout generation for 6 sites.
Technologies: MySQL, Resin, Jakarta Server Pages (JSP), JSF

Software Developer

2007 - 2008
Luxoft (Moscow, Russia)
  • Developed several Jython scripts to test performance of the system.
  • Created Jasper based report generation tool.
  • Built message queue measurement library.
  • Developed SAP Portlets.
  • Refactored and improved the server side code.
Technologies: MDM, SAP, WebSphere MQ, SLAMD, JBoss, JMS, Jython, JasperReports, Enterprise Java Beans (EJB), CORBA

Junior Software Developer

2007 - 2007
Luxoft (Omsk, Russia)
  • Implemented JavaScript controllers and Struts Actions for an air traffic management application.
  • Contributed to development of FIR/UIR control panel.
  • Developed most of the dialogs and panels of the warehouse, product, and customer management tools for an eCommerce application.
  • Updated unit tests of the business controller components.
Technologies: Spring, JFace, SWT, Eclipse RCP, Hibernate, Apache Struts, Enterprise Java Beans (EJB), Servlet, Jakarta Server Pages (JSP)

V8 Engine Bot Command for the AutomationAnywhere Enterprise Platform

A Java-based component for the AutomationAnywhere Enterprise Platform. The component allows the optical content recognition of documents and then extracts data like invoice items, prices, dates, and more. I developed the bot command and integrated the ABBYY OCR engine and the V8 engine into the bot command.

Pipeline Engine

Pipeline Engine is an integration framework used to integrate the IQ Bot platform with machine learning solutions.
My responsibility was to design and to develop the Pipeline Engine domain specific language (aka Slaushbox). At the end we got a scripting language that allows to define a JMS interface to listen to. When a message arrives a pipeline gets selected to handle the message. While the pipeline executes it may invoke several components which connect the pipeline with a particular machine learning solution.

We supported Java connectors to call Java libraries. Thus we got a possibility to run a java code without the need to build explicitly a Java application. We were able just to inline a Java snippet inside our DSL to call a third party library, mainly for image pre processing.

Our REST connector supports the retry behaviour with a backoff strategy and allows calling third party APIs, e.g. Google Vision API.

Python connectors allows to inline a Python code in the pipeline engine DSL.

Application connector allows executing external applications and reading their output for further analysis and parsing in a component.

Gateway-2 for IQ Bot

IQ Bot version I worked with is based on the microservice architecture. One of the crucial system components is the API gateway service. The previous implementation was very simplistic and didn't support data aggregation.

For the new version the hexagonal design pattern, also know as ports-and-adapters, was chosen. This approach allowed to separate the domain model from controllers and repositories and to achieve a more clean and flexible aggregation of data originating from other microservices.

Apart from the business data aggregation, the gateway is able to collect status details of each microservice with their dependencies to provide the whole system health state.
Another issue with the previous implementation was that it didn't support model validation nor API versioning. A set of custom annotations was implemented to allow the input and output model validation against the model schema.

This way the system API became cleaner and what is also very important, now it's easier to extend and to maintain this API.

Mifos for Fiinlab

Mifos is a comprehensive, configurable, open-source core banking platform for financial inclusion, providing affordable, adaptable, accessible, and secure core banking solutions. The client used this platform to build their loan management portal on top of it.

The client has a SAP based system which allows them to export loan details into XLS documents. I implemented a tool which extracts client and loan details from XLS documents, transforms the data to make them suitable for Mifos and then loads the data into Mifos. The tool provides detailed error information for further analysis. The error reporting was a crucial requirement since Mifos like any financial tool has very sophisticated validation algorithms and incoming data may not every time be compliant with the requirements. For that reason I tried to implement a tool that would report errors in the most descriptive way providing as much details as possible.

I also develop an automated DB dumping to make Mifos store its DB on a schedule and upload the dumps to a third party storage. The client decided to store 10 latest DB dumps on their Dropbox account.

Kandu Internet Shop

This system is based on the microservice architecture when different functions of the system are spread across different standalone applications. I was involved in the implementation of three nodes of the system. One of them is the client application which runs in a user's browser and on a remote server. It's main goal is to provide an interface to end users. Despite that the application makes use of a template engine (Spring Thymeleaf) as all modern and sophisticated applications it also enables asynchronous communications.

The client application itself doesn't talk to a data storage and is not responsible for any data manipulation, instead it connects to a gateway application. This is another part of the system I also worked on. It's goal is to redirect incoming requests to appropriate dedicated services (microservices). One of such services is the Question module. This module provides a functionality to review products available on the shop. Other modules have their own specific functionality.
All parts of the system are connected to each other by RESTful APIs based on Spring MVC.

RiskPass Portal

RiskPass is a big system, it started as one portal but finally we developed four different portals: a portal for clients to manage other people or company contact details, a portal for customers to allow managing their own contact details, a portal for reviewers to verify contact details entered by customers, and a portal for correspondent banks. The main idea of the system is to estimate risks related to contacts based on the information entered by bank managers, by contact owners themselves or based on the information retrieved from third party systems. For example, RiskPass portal is also able to verify a contact whether the contact is under sanctions or is wanted, for example, by Interpol. The system is highly flexible since it allows to set up risk templates based on many different risk metrics and this is not limited by the system but by client managers or correspondent bank managers. Thus using the same data we can estimate risks in different ways, and even more, this way correspondent banks do not depend on the risk templates prepared by respondent banks while the contact details still remain isolated and accessible only by appropriate respondent banks.

InfoRisk OLAP Server

OLAP Server allows slicing and dicing huge amount of data, it is available as a JDBC server but the result sets it provides can be used to represent the data as drilldown tables.

One of the server features is the repeating measures. They allow to save some memory in case if loaded data blocks satisfy some conditions. It supports data ranking to allow associating ranks with particular data. Expression distillates allow to inject java code in the configuration. And that makes the aggregations (used by ranking as well) highly flexible.

Trader Voice Box

TVB is a SIP client application used by traders and brokers, it's like Skype but much better. Skype is a general tool and is not very convenient for day-to-day use, while TVB has some features (like hoots and ringdowns) which make the work of traders and brokers much easier.

It also has a chat feature, which allows to send messages over the TVB network or using external Jabber, AIM or Yahoo networks. There are many IM clients but this one is more comfortable for traders and brokers.

Babel

Babel is a web application and an IT infrastructure design tool. Not only does it allow you to create diagrams describing different technologies like clustering, load balancing, data recovery but it also can be used to run simulations.

It consists of two applications, a simple server application running in Jetty environment (but can be deployed into any Java web container or application server) and a very sophisticated JavaScript application which manipulates DOM and SVG.

Grid

Grid, as the name says, is a network of several nodes (daemons) connected to a master node (sender). The grid is used to distribute tasks depending on the node availability and loading. This allows to optimize the execution of risk analysis tasks performed by a third party software. This is a pure server side system, it uses web services to fetch the tasks from the third party system, that's why there is no UI and that's why there are so many unit tests.

Initially it was based on JGroups, but that didn't fit our needs, so a custom transport layer based on Java NIO was developed and that seems to be a good solutions since it gave the independence of third-party software, total control and high flexibility.

Work 2-Gether

This is a web application used as an online project management tool which you could access from any point of the world. It consists of two applications: a server app running in a web container environment and a client application running in the user's browser.

Main features of the application are the swim lane task planner and the project board.

EDM Designer

EDM Designer is a standalone application built on top of the Eclipse RCP platform and as a result is able to run on Windows, Linux or Mac. It is used as a metadata editor, a front-end for the EDM engine. (EDM stands for enterprise data management.) The application allows the user to prepare rules how the real data will be transformed by the engine. It can be used to set up different types of data sources and destinations which later will be used by the engine to extract, transform the data and to output it to the other data storage. And all this metadata manipulations are done visually using intuitive editors (BPM editor, transformation editor) and various wizards and dialogs.

2-Plan

This is a standalone RCP application which helps to manage large teams and individuals working on different projects.
It is based on the plugin architecture, so depending in the project needs you may add different functionality that helps you to manager your project in the most comfortable manner.
The most used plugins are the Kanban and the Waterfall plugin.

Besides that it has several graphical editors that help building and managing project and team dependencies.

CashflowEntry plugin

The main goal of the plugin is to help entering and editing of financial data. This tool integrates into the Evolv system. The data entered by operators are then transmitted as cash flow projections into the Evolv system.

It also allows exporting data from Evolv and displaying financial information related to each loan split on either obligator or instrument level.

QMX

The main goal of the application is development of document management subsystem for Negentis Platform. This subsystem consists of a web part that is integrated into Negentis Platform web application and RCP part that is integrated into Negentis Platform administrative tool. Web portlet provides document creation and manipulation operations. Administrative tool performs document life cycle maintenance.

I-Synd

I-Synd is a very famous web application used by a large number of financial institutions. The main goal of the application is to perform investment deals online. The application provides functionality to execute operations splitting them by several tranches. Another notable part of the application, Termsheet allows arranging of deal terms and conditions.

BAM

This is a report generation subsystem for Negentis Platform. Web part is represented by Report Portlet integrated into Negentis Platform web application. It provides functionality for creation and automatic execution of reports. Administrative part is integrated into Negentis Platform RCP application, it helps preparing and generating reports to system administrators.

WebGenerator

This is an internal corporate content management system. This CMS provides functionality of the site generation and automatic deployment.

SAP Enterprise Portlet

This portlet provides functionality to manage counterpart information. The main goal is to visualize and then to allow editing of relationships between companies that your company may work with.

The plugin also allows associating different company details with graph nodes which then can be used to filter companies. That helps to simplify the graph structure and to make it easier to read and edit.

Biometria

The goal of the project is to develop an environment for performance testing of a third party application. The testing environment includes testing server and a set of test scripts and libraries. It provides functionality for automatic test execution, third party application performance parameter measurement and report generation.

ElasticPath Administrative Tool

The goal of the project is to develop an administrative tool for an eCommerce system. The tool provides functionality to manage warehouses, products, customers, product providers, and so forth

AirPlan

The main goal of the project is the development of a web application for flight planning and flight briefing requirements. AirPlan is accessed over company network or the Internet, via dedicated windows application (AirLink), which can be installed on as many workstations as required.

CachingSession.java

This is a session interface implementation of a custom data mapper.

The session defines and maintains the connection lifecycle: every connection should be acquired, used, and released or invalidated within its session. If, during connection usage, an error happens within the connection, this connection should be invalidated rather than released. Several connections may exist within the same session.

Sessions are introduced and are only used by the default transaction implementation. Other transaction implementations may use their own approaches to maintain connection lifecycles.

Languages

Java, SCSS, SQL, HTML5, CSS, TypeScript, JavaScript, Python, Jython, Scala, OWL

Paradigms

REST, Microservices, Design Patterns, Kanban

Platforms

Linux, Docker, Kubernetes, Eclipse, JBoss, WebSphere MQ, Oracle Database, WebSphere, Azure

Frameworks

Spring, Spring Boot, Redux, Jakarta Server Pages (JSP), Apache Struts, Hibernate, OSGi, Restito, JSF, GWT, Eclipse Modeling Framework (EMF), Akka, Angular, Swing, Jersey, JSON Web Tokens (JWT), jBPM

Tools

ELK (Elastic Stack), Gradle, Jenkins, ANTLR, Git, Apache Ant, Eclipse RCP, Apache Tomcat, Ivy, Jetty, Apache Maven, Eclipse IDE, IntelliJ IDEA, Servlet, JFace, SLAMD, GXT, Spotfire, JBoss Drools

Storage

PostgreSQL, MySQL, SQL Server 2017, IBM Db2, Microsoft SQL Server, Apache Derby, H2

Other

OOP Designs, Mailchimp API, SIP, OAuth, Web Security, CORBA, SAP, MDM, Resin, Liferay, TIBCO, CDO, Prefuse, Eclipse Zest, Web Services, SVG, Agile Sprints, HornetQ, Enterprise Java Beans (EJB)

Libraries/APIs

React, JDBC, JMS, jQuery, YUI, Oracle Java Cloud Services SaaS Extension (JCS-SX), DWR, JAX-RS, Backbone.js, spray, Apache Stanbol, JGroups, JasperReports, Java Servlets, D3.js, SWT, RESTEasy

2000 - 2005

Master's Degree in Robotics and Automatics

Omsk State Technical University - Omsk, Russian Federation

Collaboration That Works

How to Work with Toptal

Toptal matches you directly with global industry experts from our network in hours—not weeks or months.

1

Share your needs

Discuss your requirements and refine your scope in a call with a Toptal domain expert.
2

Choose your talent

Get a short list of expertly matched talent within 24 hours to review, interview, and choose from.
3

Start your risk-free talent trial

Work with your chosen talent on a trial basis for up to two weeks. Pay only if you decide to hire them.

Top talent is in high demand.

Start hiring