Post Job Free

Resume

Sign in

Software Development Back End

Location:
Ottobrunn, Bavaria, Germany
Posted:
February 13, 2024

Contact this candidate

Resume:

Dmitry Kulikov

Ottobrunn, *****, Germany

cell, WhatsApp: +49-151-****-****

ad3k6s@r.postjobfree.com

Searched Position:

Senior Full-Stack or Back-End Ruby on Rails

Developer/Architect

SUMMARY

More than 15 years of solid software development.

More than 15 full-stack projects implemented.

Great experience in web development alone as well as in a team.

More than 15 years of SQL queries creation and optimization.

Great experience in code refactoring.

Strong skills in software architecture design, including multi-tier and multi-threaded architecture.

The degree in Computer Science. Deep knowledge in the theory of computations, graph theory.

I use Linux on all my machines.

Driver licence class B, free German; free English.

My github is https://github.com/dima4p

Technologies: Ruby on rails full stack: haml, jbuilder, sass, coffeescript, jquery, Vue.js, other js frameworks.

Gems: A log of the popular gems used now

BDD/TDD Rspec, capybara, shoulda, factory_bot, guard, jest.

Administration AWS, Docker, Apache, nginx, Postfix, Exim, etc.

Databases: ORACLE, PostgreSQL, MySQL, Elasticsearch, others. Query optimization.

Bug Tracking: RedMine, Jira, Trac, Pivotal, others.

Development tools: git, gem, rvm, rake, bundle, bash.

Bug Reporting: Easy to understand and easy to reproduce bug reports.

Programming languages used: More than 20 not counting assemblers, including ruby, python, c, c++, golang, javascript, coffeescript, ES6, php.

UI experience I participated in UI design on almost all my projects.

Start-ups Participated in some start-up projects.

Excellent writing and verbal communication skills. Strong analytical and problem-solving skills. EMPLOYMENT

September 2023 – now: Developer in LOUIS INTERNET GmbH

The task is to organize the communications with (potential) customers through the messengers such as WhatsApp.

The task was to refactor the WhatsappNotificationsJob that receives the requests from WhatsApp API that send new messages and/or notifications about the changes of the states of the existing messages. All business logic was moved from the delayed job into a new class WhatsappNotificationProcessor. Before the refactoring I had had to create Rspecs for the code.

The task was to create the bot that automatizes the dialogue of registering of customers. The procedure is that he/she scans a QR-code with a link, that allows him/her to appear in the system with sending a message with the code that a service agent generated for that. The bot sends the greeting message following with the message with the contacts of the agent and a request to send the own contacts. After the receiving the contacts the system asks for the confirmation the received contacts to save. After the customer confirms that is the task of the bot finished.

The task was to refactor the code that communicates with the messengers platform (WhatsApp). The goal was to make the code DRY and to make the main methods to be platform independent. Dmitry Kulikov page 1

The task was to implement the ability for a service agent to tell the system about the absence so that during the period a Bot answers to any message with the corresponding information once a day.

During the implementation of the previous task I discovered that the scaffold generator does not have code to produce the code related to pundit and/or graphiti. To cover the hole I’ve created 2 gems: pundit_scaffold_generator and graphiti_scaffold_generator.

Ruby 3.2, Rails 7.0, rspec, puma, pundit, graphiti-rails, GraphQL, haml, sass, vue.js, ES6, postgresql, que, guard, TDD.

June 2020 – March 2023: Softwareentwickler in FAST LTA, GmbH

The task was to create a web application that simplifies the analyse of the Logs – LogAnalyzer (LA). It is required to debug our main products, storage systems of huge capacity.

There are 2 sources of log, each of them is connected with a ticket tracker and has own server where the logs are being kept. The task was to implement the ability of LA to connect to the corresponding servers and mount them onto own filesystem.

The task was to implement the detection of a new ticket of the each tracker.

The task was at the appearance of a new ticket to create an own ticket connected with the original, then find all the log sets of the ticket. There can be more than one log set of a ticket and each of them may be an archive as well as a directory.

The task was to copy all log sets to the local file system creating the corresponding object and unpack all the archives that can be there.

The task was for each log after creating an object, parse the file and for each line save the offset of the line in the file and the timestamp if it exists.

The task was to detect the log files that are the rotated parts of one log and bind them together, so that a user can see and manipulate them as one log. But the download can be performed as for the whole log as well as for any part.

The task was to implement on the front-end the interface that allows to open one or more logs so that they can be seen simultaneously on one page.

The task was to implement the scrolling and jumping to the arbitrary line of the log without remarkable delay, and uncontrolled growth of the used memory on the browser. For that I have had to upgrade to the latest versions: ruby - 3.1 (3.2 appeared later), rails - 7.0 and vue.js – 3.1.

The task was to implement the ability to search for an arbitrary content inside the log, highlight the occurrences of the search, and enable to go through them forth and back.

The task was to implement the ability to request to show only the lines with the occurrences of a search with the optionally requested amount lines above and below the target line (this is the current task).

The task was to implement to add comments/bookmarks to lines of logs. A bookmark (Note) can be bound to more than one line and always have an author. It can have an optional name and comment. The list of bookmarks can be opened in one click of the mouse, and then be scrolled. The user can jump on the line than corresponds to a bookmark.

The task was to represent the state of all logs and searches in the URL-field, so that the pasting it in a new tab gives the same result.

The task was to detect when the original Ticket is closed and represent the state on the corresponding own model of Ticket.

The task was after the defined period of time (there is a lot of settings in LA) to clean the ticket. That means to remove all the files from the file system, and the information about offsets and timestamps in the database, releasing the space. The information about the tickets themselves, LogSets, Logs, and Notes is being kept, as they take quite a little amount of space.

The task was to allow the main lists of Tickets, LogSets, and Logs to be sorted and filtered by every reasonable field. In particular filter allows to create links from every original ticket to the corresponding one in the LA.

The task was to monitor the used spaces of the disk and database and report the admins by email when the threshold is exceeded.

Ruby 3.1, Rails 7.0, rspec, puma, cancancan, haml, sass, webpacker, vue.js, ES6, coffeescript, jest, postgresql, que, guard, TDD, bash. Dmitry Kulikov page 2

June 2018 – December 2019: Engineering Consultant in ALTEN, GmbH

Organisation of the whole development process with establishing a git repository, and fixing for the team the rules of how pull requests and code review must be done.

Implementation of the processor that compares two json files produced by the computer vision algorithms. One of them contains the information of the labels of the objects detected by the algorithms, while the second ground truth labels made by a human. The goal is to calculate the KPI for 8 different detection modules and save the results in the PostgreSQL database.

Implementation of a high-performance object tracking solution.

Design and implementation of the project infrastructure for more efficient code integration and higher video processing speed.

Composing of the docker image able to run a lot of specialized software packages using NVIDIA GPU with Python 3.6.

Development of the original tracker to monitor the positions of objects and their movement.

Optimization of the frame rate of each module.

Development of the simple web application to display the objects to be tracked and the integral information about them onto the streaming video, supplied via nanomessage and Protobuf protocols.

Development of the Aggregation module that summarizes the tracking data from different cameras

(Docker machines) and delivers the overall data.

Development of the orchestrating scripts and the configuration file to run the required docker images in production mode as well as in the benchmarking mode.

Development of a prototype of a technology chain on block-chain with Hyperledger Fabric.

Further improvement in machine learning.

The related technologies are:

C++, Google Test, Python, Golang, Vue.js, TensorFlow, Neural Networks, Deep Learning, Recurrent Neural Networks, Decision Trees, Regression, YOLO, Nanomsg, Protobuf, PostgreSQL, Docker, bash.

February 2016 – February 2018: Senior software developer in MICE Portal, GmbH

I’ve created from scratch a server that collects data on hotels from the resources provided by the hotel holders and delivers the information to the existing hotel database. The heart of the system is the XML parser that converts an xml into the hash of the attributes and inserts it in the database.

I’ve performed the huge refactoring of several services moving the functionality residing within two services and into a new one. A new server was created with all the functionality implemented. Then 6 of 7 existing servers were refactored, so that they can access data depending on a feature flag from the existing server and from the new one as the preparation to the roll-out.

The technologies used are:

ruby on rails, haml, kaminari, jbuilder, sass, simple_form, cancan, javascript, coffee-rails, react.js, rspec, factory_girl_rails, guard, shoulda, rswag, paperclip, traco, activeresource, puma, resque, whenever, annotate, spring, mysql, postgresql, elasticsearch, redis, jira, jenkins, docker, github, TDD, bash. Jun 2009 – February 2016: Senior software developer as Freelancer.

I have managed a lot of projects, among them the following:

The API back-end for a start-up utilizing VoIP technology provided by VoxImplant was developed. It allows the authorized persons to monitor the data via http front-end and create user registrations from web. The sidekiq gem is used for queues processing.

A back-end for video processing uploaded from mobile applications files was implemented.

A Web site for the tourist Agency was developed from scratch. It allows online booking and ad-hoc search of the tours from different tour operators using the other party’s integration service.

Web application of the Personal Cabinet for clients for a Forex company was developed from scratch It is integrated with some trading and accounting systems.

Some plug-ins for Redmine were created. They extends the functionality introducing the concepts of scrum development. One of them utilizes complicated ajax interactions.

A prototype of a desktop client that communicates with the above server was developed with ruby-qt. Dmitry Kulikov page 3

The technologies used are:

ruby on rails, haml, kaminari, jbuilder, sass, simple_form, cancan, javascript, jquery, coffee-rails, rspec, factory_girl_rails, guard, shoulda, paperclip, traco, activeresource, puma, resque, whenever, annotate, spring, mysql, postgresql, redis, github, TDD, bash.

EDUCATION

Faculty of Applied Mathematics

Master Degree with Minor in System(s) Analysis

Postgraduate school

Ph. D. in Technical Cybernetics and Information Theory

Ten years of active participation in the working group “Artificial intelligence and Computer Science”.

Continues learning of new technologies and languages by myslef. PERSONAL

Highly motivated individual with professional attitude and work/human ethics. Professional growth minded.

Energetic and persistent in a goal achieving.

Able to successfully resolve stressful production issues.

The full responsibility for all the tasks and projects I’m working with. EXCELLENT PROFESSIONAL AND PERSONAL REFERENCES AVAILABLE Dmitry Kulikov page 4



Contact this candidate