Personal Information
Full name: Dmitry Katsubo
Birth date and place: 4th of September 1980, Gomel, Belarus
Nationality: Dutch, Belarus
Family status: married
Years of work experience in IT: 22
Education Degree: Master of ScienceContact Information
E-mail: dmitry.katsubo@gmail.comEmployment Objective
I am a software engineer with the focus on RESTful services development, continuous delivery and deployment. I possess a great experience in programming in different languages, but main focus is on Java. With initiative I take part in the project development from its design and coding till delivery, maintenance and post-installation support. I am an active contributor to opensource projects (JAXB @XmlElementWrapper Plugin, OSRA, DokuWiki ([1], [2], [3]), Spring ([1], [2]), openMosix, Linux Kernel). I have participated in development of backend, middle layer and frontend layers and have some experience in project deployment to Kubernetis cluster.Summary of qualifications
- Continuous integration and delivery (Git, Jenkins, Docker, Kubernetis)
- Major experience in Java programming: WebServices: RESTful (JAX-RS) / SOA (SOAP/SAAJ), JAXP/JAXB/JAX-WS, ORM (Hibernate), IoC (Spring Core, Spring Boot, Spring JDBC, Spring Data, Spring Test, Spring MVC, Spring Batch),
- Some experience in C/C++ programming: Win32 API, MFC
- Some experience in Perl programming: DBI/SQL, xCGI, XML
- Some experience in Web design (AngularJS, JQuery, CSS)
- Experienced Linux system administrator, knowledge in services administration
- Professional experience in design, implementation and administration of multiplatform enterprise-level LANs and WANs
- Spoken languages: English (upper intermediate), Dutch (basic), German (very basic), Russian (native), Belarusian (native)
Hardware/Software Summary
- Programming and scripting languages: C++, CSS, Delphi, Java, Javascript, Perl, RDF, XML, XSLT/XPath, bash, docbook
- Application servers: JBoss, Jetty, Kubernetis, Tomcat
- Development tools: Ant, CVS, Eclipse Memory Analyser, Git, GitHub Enterprise Server, Hudson, Jenkins, Maven, Mercurial, SVN, Visual SourceSave, debuild, gdb, jMeter, make, oXygen XML, rpmbuild, valgrind
- Development environments: Borland Delphi, Borland Kylix, Eclipse, EclipseSTS, IntelliJ IDEA, MS Visual Studio
- Design tools: ErWin, Model Maker, Rational Rose
- Databases: DB2, Elasticsearch, HSQL, MSSQL, MongoDB, MySQL, Oracle, SQL Server, SQLBase, Sesame
- Operation systems: ALTLinux, Debian, RedHat Linux, SLES, SuSE, Sun Solaris, Windows 2000 Advanced Server, Windows NT
Skill Experience (years) Last used (year) Programming and scripting languages Java 23.5 2024 XML 20.0 2024 XSLT/XPath 5.5 2016 Javascript 5.5 2014 Perl 6.0 2014 C++ 3.0 2011 docbook 4.0 2011 CSS 2.5 2009 RDF 0.5 2009 Delphi 0.5 2003 bash 0.5 2000 Application servers Kubernetis 3.5 2024 JBoss 13.5 2020 Jetty 5.5 2016 Tomcat 0.5 2009 Development tools Git 3.5 2024 GitHub Enterprise Server 3.5 2024 Maven 18.5 2024 Jenkins 10.5 2020 SVN 12.5 2020 Eclipse Memory Analyser 3.0 2016 jMeter 3.0 2016 Mercurial 2.0 2012 oXygen XML 2.0 2012 debuild 1.0 2011 gdb 2.0 2011 make 4.0 2011 rpmbuild 1.0 2011 valgrind 2.0 2011 CVS 5.5 2009 Hudson 0.5 2007 Ant 2.5 2006 Visual SourceSave 1.0 2001 Development environments IntelliJ IDEA 2.0 2024 EclipseSTS 2.5 2022 Eclipse 17.5 2020 Borland Delphi 0.5 2003 Borland Kylix 0.5 2003 MS Visual Studio 1.0 2001 Design tools ErWin 1.5 2003 Model Maker 0.5 2003 Rational Rose 0.5 2003 Databases Elasticsearch 2.0 2024 MongoDB 5.5 2022 HSQL 4.5 2014 SQL Server 3.0 2014 DB2 2.0 2012 Sesame 0.5 2009 MySQL 1.0 2006 Oracle 1.0 2003 MSSQL 1.0 2001 SQLBase 1.0 2001 Operation systems SLES 10.5 2020 Debian 1.0 2011 SuSE 1.5 2011 ALTLinux 1.0 2005 Sun Solaris 1.0 2005 RedHat Linux 0.5 2002 Windows NT 1.0 2001 Windows 2000 Advanced Server 0.5 2000 Professional Experience
January 2017 – July 2022: EPO, Rijswijk, The Netherlands
Position: Development Analyst/Programmer
Contact person: please, do not call my current employer
Projects:
BSS: The projects consists of different services that support the patent search phase. In particular:
- Classification service – provides API to access CPC/IPC/FI classes
- Search API services – a facade service for Elasticsearch
- Elasticsearch – customized version of popular search and indexing engine
Achievements:
- Integrated latest classification schemes
- Improved PQL parsing performance by introducing local caches
- Add "highlighting mode" flag to disable backtracking limitations when highlighting query is executed
- Proximity constraints engine bugfixing (slop verification, anti-proximity matching, incremental verification)
- Documents which took too long to evaluate are placed to a separate group
Tools/techniques used: Java 16 (Spring), XML, Kubernetis 1.28.5, Git 2.39.2, Maven 3.9.4, GitHub Enterprise Server 3.11.5, IntelliJ IDEA 2023.2.4, Elasticsearch 7.17.9 Annotations Service: Annotations service is a backend service that stores user annotations which are created for a particular patent document or part of the document (selected text). Backend supports:
- Creation/updating/deleting of the different types of annotations (note, underline, tag, deficiency, classification, rectangle, circle, line)
- Conversion of annotations from one type to another
- Copy annotations from one document section to a new / modified version of the section
- Different aggregation and statistical endpoints
- Export of annotations into XML TEI format
- Import of annotations from CSV format
Achievements:
- About 20 versions of the service have been delivered.
Tools/techniques used: Java 11 (Spring, RESTEasy, Jackson, Hystrix, JUnit, Mockito, Gatling), XML, Kubernetis 1.28.5, Git 2.39.2, Maven 3.9.4, GitHub Enterprise Server 3.11.5, EclipseSTS 4.22.x, MongoDB 6.0.12 SSL: SSL provides common search services that can be used by internal and external EPO applications. It plays an integral part in inter-office SOA architecture: hides varies data access services under unified API as well as combines several underlying services (service mashup) to provide composite data to the client thus making the communication with backend easy to implement.
- Laid out overall project structure
- Implemented common service components:
- Transparent proxy
- "Dry run" mode
- Request logging and correlation
- Self-call interceptor that redirects the calls to controller in the same JVM
- KERBEROS authenticator
- JWT authenticator
- EPO ARM integration
- Bootification and dockerization of existing services
- Migration to Kubernetis cluster
- Annotations backend
- Implemented services:
- PQL conversion and validation
- Patent application biblio extended with citations
- Image annotations
- Thumbnails sprites
- GROBID connector
- Project releases and dependencies management
- Apache HTTP server tuning in particular HTTPS setup
- Performance and integration tests implementation
Achievements:
- Several milestones of the service have been delivered including beweekly releases.
Tools/techniques used: Java 8 (Spring, RESTEasy, JAXB, Jackson, Hystrix, JUnit, Mockito, RestAssured, Gatling), XML, JBoss 6.x, SVN, Maven 3.5.4, Jenkins 2.138, Eclipse 4.8.x, MongoDB 4.0.x, Apache 2.2.x (mod_jk, mod_rewrite)February 2014 – December 2016: EPO, Rijswijk, The Netherlands
Position: Development Analyst/Programmer
Contact person: Alexander Khval
Projects:
OPS: OPS gives the users access to the EPO's raw data via a standardized RESTful interface (XML/JSON). The data is extracted from the EPO's databases and includes patent bibliographic, legal status, full-text description and images as well as European Register data and classifications.
- Adapted data providers in response to format specification changes and added new functionality:
- Integrated Hystrix to improve service resilience / reliability
- Extended monitoring facilities
- Improved XSLT stylesheets for XML endpoints
- Improved citations parser
- Priority claims merge algorithm implementation
- CQL improvements and fixes
- Automatic CPC data refresh, new CPC schema integration, FI/F-term parser implementation
- CPC Combi/c-set and CPCNO implementation
- TIFF-to-PNG image transformer
- Backend console GUI
- Project release management
- Memory leaks investigation, memory usage optimization
- JBoss 6.0 / Java 7 migration
- Canoo integration tests implementation
- OPS documentation maintenance
- Jenkins jobs maintenance
- jMeter performance measurements
- Apache HTTP server tuning
- Interviewed candidates for open positions in the team
Achievements:See LinkedIn recommendations.
- New features where delivered according to plan (approximately 5 releases per year)
- A lot of issues from backlog have been solved
Tools/techniques used: Java 7 (Spring, RESTEasy, JAXB, JIBX, Hystrix, ANTLR, JAI, AspectJ, JUnit, Canoo, EasyMock), XML, XSLT/XPath 1.0, JBoss 6.x, Jetty 8.1.14, SVN, Maven 3.3.x, Jenkins 1.518, jMeter 2.12, Eclipse Memory Analyser 1.4.0, Eclipse 4.2.x, Apache 2.2.x (mod_jk, mod_rewrite)April 2010 – September 2014: EPO, Rijswijk, The Netherlands
Position: Development Analyst/Programmer
Contact person: Marcellinus Van Vuren
Projects:
SLiCE: Sequence LIsting Comparison Engine. Designed to parse, align and compare biological sequences.
- Development of core backend functionality (ST.25 parser, ST.25 renderer) and RESTful services
- UI bugfixing and improving
- Project release management
- Maintenance & documentation
Achievements:See recommendation by Marcellinus Van Vuren. Also check LinkedIn recommendations.
- Developed the services for comparison job management and job results retrieval from DB level up to RESTful services.
- Implemented maven profiles for automatic project deployment, versioning and releasing.
- Mavenized and created ecosystem for Javascript projects.
Tools/techniques used: Java 7 (Spring, JAXB, Jackson, Tesseract, iText PDF, Apache POI, JUnit, EasyMock, Selenium), XML, Javascript (Simile Timeline, Mustache, jQuery, jQuery UI, jQuery throttle, Colorbox, DataTables), Perl (DBI, DBD::Sybase), JBoss 6.x, Jetty 8.1.14, SVN, Maven 3.3.x, Jenkins 1.518, Eclipse 4.2.x, SQL Server 2005, HSQL 2.2.8, Google Image Charts SLING: Chemical data mining engine.
- Mine biological related data from patent collection.
- Feed internal databases with patent biological related information.
- Automate the provision of data to third parties.
Achievements:See recommendation by Stéphane Nauche.
- Developed the EPO Chemistry RESTful service, that provided services for chemical formulas text-mining and chemical structure recognition service in patent images.
- Contributed into OSRA project.
Tools/techniques used: Java 6 (JAX-WS, JAXB, Hibernate, Spring, Spring Batch, Vaadin, JUnit, EasyMock, JNI), XML, JBoss 4.3.x, SVN, Mercurial 1.6.4, Maven 3.0.x, Jenkins 1.518, oXygen XML 14.0, Eclipse 3.6.x, DB2 9.x, HSQL 2.2.5 OSRA: OSRA is a utility designed to convert graphical representations of chemical structures into SMILES or SDF.Achievements:Also check Igor Fillipov supporting letter.
- autotools-driven compilation process, which allowed to tune and perform the build process in a standard way (./configure; make; make install)
- packaging OSRA for Debian and SuSE
- creation of the OSRA C++ library (libosra), and the Java-library (libosra_java) which allows accessing OSRA functionality from Java via JNI bridge and from other third party software projects
- addition of the new output options for the embedded structure descriptors such as InChI and InChI-key and SMILES, and for molecular image box coordinates.
- improving of the underlying OCR engines such as GOCR, OCRAD, and Cuneiform
- contributions to testing, debugging, memory-leak detection
- creation of the project's Wiki page, contribution to the code documentation and manual page, code beautification and refactoring
Tools/techniques used: C++, docbook, SVN, make, gdb, valgrind, rpmbuild, debuild, Eclipse 3.6.x, MediaWikiJuly 2009 – March 2010: NBIC, Rotterdam, The Netherlands
Position: Scientific programmer
Contact person: Rob Hooft (+31 62 703-43-19)
Projects:
A coordinator of proteomics platform: The Netherlands Bioinformatics for Proteomics Platform is one of the task forces of NBIC's BioAssist programme. Its main goal is to build a software platform that will make it possible for non-experts to run a typical proteomics analysis, and for experts to experiment with different variations of the analysis. eu-ADR Storage Web Service: This webservice runs on top of a triple store and provides a number of pre-cooked queries to the store. The triple store has been filled by mining texts from PubMed, Drugbank, DailyMed for the relations. Also this is a complete web service to get all targets (genes, proteins, enzymes, etc.) that are related to a drug-event pair. Source databases are: Meyler’s Side Effects of Drugs, Martindale, DRUGDEX, SPCs, and Physician Desk Reference.
- Find relation pairs between drugs and adverse events
Given either the drug, the adverse event or both the pairs from the database are returned that contain the information. In addition, the web service provides functionality to retrieve per relation annotations (references from which the pair has been obtained).- Find Relations from DB
To a given drug and event, find all targets related on literature and databases.Achievements: This Web Service has been implemented and used as a part of Web Service cloud to provide more high-level information data.Tools/techniques used: Java 6 (JAX-WS, JAXB, Hibernate, Spring, JUnit), XML, RDF, Tomcat 6.0, SVN, Maven 2.x, Eclipse 3.5.x, Sesame 2.3.0 Peregrine: The main goal of this project is to parse the input text and search for predefined terms. The term may refer one or several concepts and Peregrine tries to disambiguate them. On the last stage Peregrine builds the semantic relations based on position in the sentence.Achievements: The following has been made:See recommendation by Rob Hooft.
- The architecture was improved
- The project was prepared for public releases (open source project)
- Maven builds were introduced
Tools/techniques used: Java 6 (Spring, JAX-WS, JAXB, JUnit, EasyMock), XML, SVN, Maven 2.x, Eclipse 3.5.xMay 2009 – June 2009: EPO, München, Germany
Position: Software Developer
Contact person: Seymen Akin (+49 16 38 3-99-446)
Duties:Projects:
- GUI development.
- Requirements gathering.
- Integration of Martha component, core Martha improvements in collaboration with RealObjects team.
CASAP: Aims at streamlining the creation of decisions and other appeal related documents within the Boards of Appeal and their processing in the Registries and for document retrieval purposes. CASAP combines and streamlines functionality for appeal related document processing in one single system.Achievements: Several core functionalities have been implemented for CASAP Editor:
- Multi-sectioned form templates
- PDF and XML export
- Maven builds
Tools/techniques used: Java 6 (Velocity, iText, JAXB, Spring, JUnit), XML, CSS 2.1, CVS, Maven 2.0.10, Eclipse 3.4.xMarch 2007 – April 2009: EPO, Rijswijk, The Netherlands
Position: Software Developer
Contact person: Auke Hoekstra (+31 64 272-46-56)
Duties:Projects:
- GUI development.
- Communication with user's side, requirements gathering, specification updates.
- Integration of Martha component, core Martha improvements in collaboration with RealObjects team.
Trimaran: It is a project to replace legacy CAESAR and CASEX applications with a single application that serves the needs of the examiners during search, examination and opposition phases.Achievements: The Trimaran project was successfully delivered and released to production in April 2009. It was developed in 3 years with approx 30 man/year with a total budget about 10 mio euro.
See recommendation by Auke Hoekstra.Tools/techniques used: Java (Digester, Spring, JUnit), XML, CSS 2.1, CVS, Eclipse 3.3.x
Martha component integration and customization: Martha is pure Java DOM-based WYSIWYG editor for XML and XHTML documents that supports CSS 2.1 and XHTML 1.0. It is a standard Swing component and can be easily embedded into any Swing-compatible GUI framework. Standard Clauses Manager: The component, that manages standard clauses (i.e. introduction clauses) in Trimaran. Standard clauses may contain system and user defined parameters, as well as references to other standard clauses. They are organised into hierarchical structure and can be shared among users.October 2002 – February 2007: Generation_P Consulting Ltd., Minsk, Belarus
Position: Lead developer / Team leader
Contact person: Sergey Zubekhin (+375 29 673-74-35)
Projects:
Flight reservation system for Ypsilon AG: Online flight reservation system for both charter and scheduled flights. I was responsible for the following:
- Coordination of a team with approximately 4 persons
- Architectural design of core modules (unit-test driven development)
- Implementation of search and booking modules
Achievements: The pilot version was successfully delivered according the schedule. The application showed the good response times during the search and had the high level of customisation abilities.Tools/techniques used: Java 6 (JAXB, SAAJ, Spring, JUnit, XMLUnit, DBUnit), JBoss 4.0.x, SVN 1.1.3, Maven 2.0, Hudson, Eclipse 3.2.x OTA Sabre Library, OTA Sabre Proxy: I was responsible for the following:
- Architectural design and implementation
- Technical documentation and customer support
Achievements: The library was successfully used in subsequent projects.Tools/techniques used: Java 6 (JAXB, SAAJ, JUnit, XMLUnit), SVN 1.1.3, Maven 2.0, Eclipse 3.2.x UTE: It's an Internet booking engine, developed in corporation with Travel24.com. Build on EJB technology, UTE is an application, deployed on JBoss cluster and using its ability for load balancing.Achievements: The application was successfully installed and used in production for two years until it was sold to Inovasoft AG. The testimonial is available here.Tools/techniques used: JBoss 4.0.x, Ant, Maven, make, CVS, Eclipse 3.1.x, Apache 2.2.x (mod_jk, mod_rewrite)
UTE Booking module: The backend module, that provides availability and booking functionality via Computer Reservation Systems.Tools/techniques used: Java (EJB, Castor, JUnit) HotelMappingTool: The Web-based tool, used by touristics to map hotels from different modules.Tools/techniques used: Java (JSP, EJB, Struts, Hibernate), MySQL 4.1 (InnoDB) UTE LastMinute module: The backend module, that provides Lastminute trips.Tools/techniques used: Java (EJB, JDBC) Hotelinfo import & Hotelinfo service: Hotel information import script was developed that imports data from CSV/XML format into MySQL database. The data was previously adopted and unified. The backend modules working under the upper-level service loaded the information via Hibernate and produced XML output, which was later transformed into HTML page on the frontend.Tools/techniques used: XSLT/XPath 1.0, XML, Javascript, Java (EJB, xdoclet, Hibernate), Perl (DBI, DBD::mysql, RTF::Parser, HTML::Parser, LWP, Image::Magick, Archive::Zip, XML::Parser) Documentation: Project documentation.Tools/techniques used: docbook, MediaWiki INFX import: The set of bash and awk scripts to import the data from INFX format into MySQL database. Airgate: The XML backend for different computer reservation systems (DCS, RIO, GALILEO), that support the STADIUS protocol. I was maintaining it and enchanting.Tools/techniques used: C++ (POSIX RegEx, STL), gdb, valgrind SEA (Search Engine Analyser): This project was aimed to help Web business oriented companies to control their resource ratings by collecting the ratings of the specified resources from the world-famous search engines (Google, Yahoo, Webcrawler, etc) and producing the human-friendly statistics and reports.Achievements: The project was successfully used by our customer to collect the statistics of search rates/hits of his web projects.Tools/techniques used: Perl (CGI, GD::Graph, DBI, DBD::mysql, HTML::Parser, LWP, WWW::Search, Spreadsheet::WriteExcel), MySQL, Apache 2.x (mod_ldap) Reporter: This system was designed and developed for internal use to store and analyse the teams' work during the projects' lifetime. Using this system one can easily compare the activity of the team members or projects.Achievements: The project was successfully used for few years internally in the company.Tools/techniques used: Perl (CGI, GD::Graph, DBI, DBD::Oracle, MIME::Parser, XML::Parser, Spreadsheet::WriteExcel), Oracle 8i, Apache (FastCGI, mod_ldap) PAnwalt: The aim of the project is automating the work of patent companies: registration, storing and managing patents in different spheres of life.Tools/techniques used: Delphi, Borland Kylix, Borland Delphi 6.0 System and network administration:Tools/techniques used: sendmail, postfix, Apache 2.x, squid, bind, ProFTPd, xinetd, samba, dhcpd, NFS, NIS, ucd-snmp, pppd, OpenSSH, OpenLDAP, nntpd, VNCSeptember 2001 – September 2002: InterVelopers, Minsk, Belarus
Position: System and network administrator
Contact person: Eugene Kisly (+375 29 623-26-46)
Duties:Projects:
- Maintaining and extending the internal network with about 30 computers and 2 Linux servers, running mail, LDAP, Samba and IRC servers.
- Maintenance of the corporate site InterVelopers.com.
- Installing and adopting the development software (CVS, Bugzilla, web-based administration tools).
- Linux and Windows workstations' backups using amanda backup system.
- Company's software installation on client's servers, pre- and post- installation support.
- Remote administration and online monitoring on client's request.
- Additional utilities development (database, filesystem and web server benches).
System and network administration:Tools/techniques used: sendmail 8.11.x, postfix, Apache 1.3, squid, bind, ProFTPd, xinetd, samba, dhcpd, NFS, pppd, OpenSSH, nntpd, VNC, amanda
HTTPGetter: the HTTP benchmark program. AdRevolver.com: Installation and backup scripts for AdRevolver. Start.nu: administration ISPCheck.com: support AdCorps.com: remote administration PCHost.com: supportJuly 2000 – August 2001: CIT, Minsk, Belarus
Position: C++ developer, Database developer, Perl developer
Contact person: Vladimir Evgenevich Neselovsky (+375 17 239-84-82)
Projects:
DWARF: Oracle-oriented software and database development for document management system (DWARF).
Additional plug-ins for DWARF have been implemented in MS VS.
Legislative act import script was maintained and enhanced by me.Achievements: DWARF application was successfully delivered to customers.Tools/techniques used: C++, Visual SourceSave, MS Visual Studio 6.0, Oracle 7.x, SQLBase, MSSQL BIPC: Juridical database development for Byelorussian Interbank Payment Center.
I have written the basic utilities for converting, importing/exporting the data from/into XML/SQL format and statistical report forms.Tools/techniques used: C++, Perl, MS Visual Studio 6.0, Oracle 8i VPN: Development of VPN with several levels of protection (authentication / SSL / PGP) for the Office of Public Prosecutor.Tools/techniques used: bash, stunnel, sendmail, UUCPEducation
In 2016 I have passed NT2-I Dutch language exam got the appropriate certificate.
In 2010 I have made a half-year course for Dutch language in Volksuniversiteit with the mark "good" (54 points out of 70) and got the appropriate certificate.
In 2005 I have passed the basic examination in German language in Minsk Goethe institute with the mark "good" (261 points out of 300) and got the appropriate certificate.
In 2004 I have graduated from the magistracy of Byelorussian State University.
In 2003 I have graduated from the faculty of Applied Mathematics and Informatics of Byelorussian State University with speciality "mathematician - system programmer". I've got the diploma with honours (the average mark is 4.83 of 5.0 according to the results of 10 terms). My diploma topic was "Using openMosix clustering system for the distributed computations". Later I was the maintainer of the Russian openMosix mirror.
Personal Achievements
In May, 2018 I became SSI-certified Advanced Adventurer Diver and got the appropriate certificate.
In June, 2017
I have passed Oracle Certified Expert Java EE 6 Web Services Developer certification exam and got the appropriate certificate.
In November, 2016 I have passed Java SE 7 Programmer II certification exam (score 75%) and got the appropriate certificate.
In August, 2013 I have passed Java SE 7 Programmer I certification exam (score 98%) and got the appropriate certificate.
In 2005 I have received the driving license (category B).
In April, 2000 I've passed the Linux system and network administration course in IATP and got the appropriate certificate.
Personal Information
I started interested in computer science at the age of 15. In the beginning I took a deep interest in system administration and Web technologies. Later I've started my carrier as a programmer.
I am considered to be very reliable and responsible person. I am capable to perform difficult long-term tasks cause I possess such qualities as diligence and industriousness. I work in team with pleasure, ready to help colleagues and easy to communicate with.