My photo here.


Print into PDF to get static document version.

Location: Belarus, Minsk

I create software, deliver correct functional and code in time, produce sustainable digital artifacts. I know many techs and use many tools, developed software frameworks and reusable libraries. Experienced in open source, .NET (with internals targeting unmanaged code integration), custom frameworks and API development, Windows, technical writing, server side development and enterprise environment (I delete more code than add), "technical" agility. In order to be effective and efficient I tune my thoughts, tools and actions continuously. Computer user since 1993, write programs since 2004, work in big companies since 2010, self learner since childhood. Applied machine learning is my interest, used against music. Proponent and practitioner of automation, machines should do work instead of humans, like: software generation,testing and deployment; information search and suggestion. From 2010 to 2017 worked at EPAM and Thomson Reuters.

Projects,I have been involved, and Education/Knowledge,I have obtained, are outlined according next scheme.


Legal eDiscovery server engine

e-Discovery product for the USA legal market , which is an end-to-end SaaS solution aimed to decrease the volume of information within a litigation to derive insights and create winning legal arguments. Developed server engine and intelligent distributed file system aimed for upload/processing/production/analysis/search/review of millions of documents.

Details: Developed orchestration and error handling of event driven services, HTTP API, billing, audit, reporting, LINQ provider to ElasticSearch, reusable infrastructure components, asynchronous data- and work-flows in ad hoc persisted finite state machine actor framework Optimized system scaling, data ingestion and access performance on 20TB+ of indexed data. Used several data storages(relational, document, files, queue, cache). Improved teams capability to produce better code and documentation to fill ongoing and future needs, coding practices across solution, distributed collaboration and communication by introduction and effective usage of modern tools. Created e-Discovery hardening data set in my free time. Communicated lock based flows into lock-free and event-sourced flows in try to deliver better performance and correctness, disentangled cases where we could use eventual consistency and approximations, and where not.

Position: Lead Software Engineer, Contractor.

Role: Developer.

Organization: Thomson Reuters.

Used: multi language proprietary cloud, SQL, Oracle Database 11.x, NHibernate 3-4, ElasticSearch 1.X-2.X, ASP.NET Web API 2, IIS 7.X, C#, .NET 4.5, TFS 2013, HTTP, JSON, NEST, NAS, NUIX, JIVE The Hub, Microsoft for Business (365, One Drive, Sharepoint, Outlook), Cisco WebEx, MS Test, gitlab, Oracle Coherence, F#, IBM MQ, IBM Watson Tone Analyzer.

Duration: 06.06.2015 - now

Accounting and practice management software platform for mid and large law firms

Maintained client-server application framework, which has technical part dated back to 2003 and previous implementation dated back to second half of 1990s.

Maintenance of custom database oriented IDE, custom ORM, GUI visualized out of XML, fault tolerant background task executions and notifications. Writing tests. Reverse engineering database.

Position: Lead Software Engineer, Contractor.

Role: Developer.

Organization: Thomson Reuters.

Used: MS SQL 2008-2012, IIS, XML, VB.NET, TFS 2012, Silverlight 5.1, FitNesse, Cisco WebEx, VUE

Duration: 07.07.2014-18.04.2015

MS Office add-ins suite and application framework for financial professionals. Stared as Advanced Analytics then merged into Eikon for Office

Developed financial and productivity tools integrated with MS Office, developed framework for integrated suite of office and desktop applications

Details: Developed software framework for creating unified customer experience across MS Office Add-ins and custom standalone applications used as basis by distributed teams. Integrated managed and native code, desktop and HTML and MS Office applications. Created documentation, did talks on customer side, coordinated with developers from several countries. Searched/refactored existing code, internal projects and solutions to satisfy new requirements as reusable components, did variability engineering, defined application programming interfaces. Evaluated, tuned and incorporated open source to speed up development. Developed custom module system capable loading modules in isolated asynchronous manner. Developed custom host for plugins running in separate service process accessed via local IPC. Implemented custom local IPC, settings storage, framework for user interface composition. Developed web data fetching, authentication; solved client side multiple login issues and auto-upgrade. Made fixes for thin client and multi user session scenarios, installed and used virtualization software to test on different setups, did automation. Made profiling and optimizations. Wrote code/logs/performance analysis scripts and diagnostics/productivity tools. Debugged multithreaded and multiprocess issues. Introduced BDD. Developed software for linking data between Excel and Word. Developed financial data charting tool integrated with web sources and PowerPoint.

Position: Software Engineer - Lead Software Engineer, Contractor

Role: developer, writer

Organization: Thomson Reuters

Team: Started from small end user functional team, become distributed framework team of changing size with many functional teams.

Used: .NET 3.5-4.0, C#, OOP, OOAD, Refactoring, native Windows programming technologies, WPF, MVVM, WinAPI, dependency injection(Unity and custom), XAML, C, COM, EntLib, MS Office extensibility (2003-2013, Word, PowerPoint, Excel) ,TDD, MS Tests, tests mocking, BDD, SpecFlow, multithreading, VSTO, source and bytecode analysis,IPC, WCF, MS-RPC, Moq, WinDbg, Windows XP-8, Scrum, Jive The Hub, UML, VirtualBox, plotting/charting(Visifire charts), TPL, Atlassian JIRA, Outlook, FreeMind, TortoiseSVN, XML,binary serialization,Visio, F#, Atlassian Confluence, packaging (WiX, NuGet, custom), Mono.Cecil, protobuf-net, ATL, C++,VBA, HTML, MS Server 2008 RemoteApp, Rhino.Mocks, ANTLR 3, AutoIt, OpenRepGrid, gtest.

Duration: 02.2010-06.2014, full-time

Open source

Contains various projects I did or participated. Long term open sources outlined more fully as separate items. Contains researchlets, code excersized and samples I did. Also I participate in different open source projects communication threads, raise issues, suggest changes, do donations.

Used: C#, .NET, C, code generation (T4, custom), F#, linear algebra, Octave, Rust, IKVM, git, Windows, XAML, XML, HTTP client, WPF, scripting, Linux, Python, COM, C++

Duration: 2009-now, part time

Website security/forensics audit from server side perspective

Reverse engineered web site and database. Wrote scripts for automated security checks running on server. Communicated and consulted with different specialists. Evaluated requirements and planned implementation.

Role: Auditor

Used: C#, .NET 4.0, PKI, ILSpy, MS SQL Server 2008, SharpDevelop 4, IIS, ASP.NET (Web Forms, Module, MVC), TrueCrypt, JS, VirtualBox, Tor, ProjectLibre

Duration: 07.2011-01.2013, freelance, part time

University works: Music Information Retrieval (visualization and analysis)

Implementing intellectual musical player which visualizes and organizes music collection onto 2 dimensional space using features obtained from audio content. Building engine which learns to undrestand what music is from audio content using Hierarchical Temporal Memory. Made report of work done.

Team: Supervisor Igor Heidorov (igorhmm at mail dot ru), idea and whole implementation are mine.

Used: MATLAB, scatter plot, PCA, Numenta HTM(Hierarchical temporal memory), MIRToolbox, Python, FFT, KNN, MATLAB Builder NE

Duration: 10.2008-06.2010, part time

Time Lapse Microscopy Capture Tool

Created and presented application for time-lapse microscopy during summer school.

Role: Developer

Organization: Institute of Physical Biology, merged into other

Team: 2 PhD students

Used: C#, .NET 3.5, Windows Forms, Olympus SDK, AForge, Visifire charts, NLog

Duration: 07.2008, 07.2009, intern

Social network data analysis and visualization

Creating application to get info from email server, process it and visualize as graph of communications. Implementing server side part.

Organization: Itransition

Role: junior developer

Team: 3 junior developers, manager

Used: Java EE5, EJB 3, JPA 1, MAVEN, MySQL 5.1, ClearCase, ClearQuest

Duration: 08-10.2008, part time

Woodworking machine controller

Created application connected to woodworking machine. Provided possibility to edit/store/execute sawing plans, change sawing machine setup and monitor sawing process.

Details: Created ad-hoc configuration file format parser, custom system event loop, custom text window system with edit boxes/menus/labels/help, communication protocol with hardware port.

Organization: Stroydetali Llc

Role: Programmer.

Team: Engineer, micro controller programmer.

Used: TMT Pascal 3, MS-DOS, ASM, LPT

Duration: 08-12.2006, part time

Graduate database

Created application for storing and reporting graduates data, with installer and user help. 2nd place on regional competition of school student’s software.

Organization: Vileika gymnasium 1

Used: Borland Delphi 7, Rave Reports, SQL, InstallShield, HTML

Duration: 09.2004-03.2005, part time


Knowledge management

Tagging Diigo, notes, mind and concept mapping, publishing Scribd Slideshare.

Duration: 2005-now

Lifelong learner


Finished Machine Learning, Model Thinking, Data Science, Functional Programming Principles in Scala

Duration: 04.2012-02.2014, part time

Stanford Programming Paradigms (CS 107)

Watched and worked through all lectures in course

Duration: year 2010, part time

Belorussian State University, Faculty of Radiophysics and Computer Technologies (was Radiophysics and Electronics)

Graduated university with Bachelor degree, Major Radiophysics - 01.04.03, GPA: 6/10;

Duration: 2005-2010, full time

Software engineering courses

ScienceSoft .NET Framework course

Finished course devoted to .NET. Implemented web site for creating custom entities by administrators and adding exemplars of them by users. Entities have had variable number of fields (images, strings and numbers).

Used: .NET 2.0, ADO.NET, ASP.NET, ASP.NET Membership, SQL Server

Duration: 11.2008, part time

Itransition Industrial software development course

Finished course devoted to testing, collaboration, Java, .NET, OOP, Design Patterns, ORM and web development.

Implemented test tasks and web site to add/store/search tagged technical documents.

Used: .NET 2.0, ASP.NET, ASP.NET Membership, NHibernate, SQL Server, tinyMCE text editor, MS AJAX, NUnit, CodeDom

Duration: 04.2008, part time