Post Job Free
Sign in

Software Development Class B

Location:
Ottobrunn, Bavaria, Germany
Salary:
80..100k€
Posted:
May 24, 2024

Contact this candidate

Resume:

Dmitry Kulikov

Ottobrunn, *****, Germany

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

ad5xor@r.postjobfree.com

Searched Position:

Software 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 from Moscow University of Electronic Engineering. Deep knowledge in the theory of computations, graph theory.

I use Linux on all my machines.

Driver licence class B, Unrestricted Germany residence permit, B1 German Certificate, free German; free English, native Russian.

Travel readiness: up to 3-4 days/week.

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. Dmitry Kulikov page 1

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.

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.

Resource for organization of education process in the all the schools in the city Moscow.

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. Dmitry Kulikov page 3

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

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.

Dec 2007 – Jun 2009: Senior software developer/team lead in the 'BrainHouse' outsourcing company.

Development of the Inventory Management System with the extensive usage of AJAX and other JS libraries that explores different TCP/IP based protocols based on RoR.

Development of the CRM system with the functionality of creating contracts/invoices working in conjunction with a bookkeeping system based on RoR.

The technologies used are:

ruby on rails, haml, kaminari, jbuilder, sass, simple_form, cancan, javascript, jquery, coffee-rails, rspec, factory_girl, guard, shoulda, paperclip, activeresource, mysql, postgresql, xml, xslt, github, TDD, bash. Dec 2006 – Dec 2007: Senior software developer RIA Novosti, Moscow, Russia (http://rian.ru)

Development of the system for on-line payment acceptance via different payment systems (RoR, Oracle).

Implementation of the digital pictures processing system including meta data with storing/retrieval from database (ror, Oracle).

Development of the system for mass sending data via ftp-protocol (perl).

Installation and tuning of the redMine bug tracking system (Apache, PostgreSQL, RoR).

Maintenance and amendment of the existing engine running http://rian.ru (perl, Oracle).

The technologies used are:

ruby on rails, perl, WebEngine, html, css, javascript, ext.js, mysql, postgresql, svn, CSV.

Mar 2006 – Sept 2006 Head of IT in Rusrating company, Moscow, Russia (http://rusrating.ru)

Leading in the development of several projects such as web sites (php, xslt, mysql) and including a specialized system of bank rating estimation based on the PostgreSQL database and OpenOffice.org package. The team size was up to 5 persons: 2-3 programmers, designer, content manager.

Installation and maintenance of a CRM system.

Network administration.

Mail server administration.

The technologies used are:

php, html, css, javascript, prototype.js, SQL, postgresql, mysql, OpenOffice, xml, xslt, svn, bash.

Apr 2005 – Mar 2006 Senior software developer in Yandex company, Moscow, Russia

(http://yandex.ru)

Maintenance and improvement of the Yandex internal statistic system (perl, php, Oracle).

Processing of the large scale data

Revising and building complicated SQL queries.

Development of web based representation of the statistics.

The technologies used are:

perl, php, bash, html, css, javascript, SQL, Oracle, mysql, CSV. EDUCATION

Moscow University of Electronic Machinery, Moscow, Russia, Faculty of Applied Mathematics Master Degree with Minor in System(s) Analysis

Dmitry Kulikov page 4

Postgraduate school in the Academy of Sciences, Moscow, Russia 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.

Enjoy working as a member of a result-oriented team being able to lead projects. Get along well with coworkers. Complete assignments on schedule. Able to work overtime.

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 5



Contact this candidate