My photo here.

Contacts

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 (internals, unmanaged code integration), custom frameworks and API development, Windows, desktop, writing, server side development and enterprise environment (I delete more code than add), technical agility, data. 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 companies since 2010, self learner since childhood, do active learning and incremental reading. 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. IT encyclopedist. Like transparency and science. My titles and roles are - developer, lead software engineer, technical writer, programmer. Sometimes I do - architect, tech lead, team lead, "person who says hard things".

Projects

2018.12.7-9, funtime. Won 1st Minsk Legal Tech Hackaton.

Automatically recognize and highlight covenants clauses within contracts and put these into database. Organized team, found business, bootstrapped solution and guided development.

Used .NET Core, LibreOffice, MongoDb, React.

2018.10 - now, full-time. Mobile First Person Shooter.

For meta part of game, bootstrapped actor based solution with websocket frontend from scratch, and automated deployment. For realtime part of game, facilitated migration from bad `OOP` to DOD ECS-like design, reduced copying and GC; coded realtime synchronization and compression; convenient and very fast serialization; improved coding of features using latest(and future) language features. Facilitated improvement of code organization at large, introduced full stack low cost structured logging and vertical semantic namespacing, cross IDE builds. Facilities migration from paper based workflow to digital one, organization of hierarchy of Kanban boards. Overall, did much to improve our development velocity; but same time developed some game features, but not touched visuals yet.

Used Orleans, SignarR, ASP.NET, C# 7.3, UDP, ECS, SSH, Jira, Github, Unity, Google Docs, Slack, Kanban.

2017.10 - 2018.10, full-time. Measurement data analyzer

Developed desktop application to show and analyze measurement data from car sensors.

Improved code practices and performance. Deleted many lines of code. Making synchronous blocking mutable state components into asynchronous reactive non blocking immutable. Maintained custom controls. Shared practices with team, regarding testing, process, collaboration, documentation. Reviewed our and other team components for performance, usability, stability, concurrency and scalability, reported in various forms. Fixed bugs in in-memory data synchronization within engineering instruments and in custom plugin system. Worked with teams from Germany and visited them regularly.

Used WPF, 2 custom immutable databases, C# 7.2, .NET 4.6.2, VS 2017, ZeroIce, Atlassian(Jira, Confluence), Git, Gerrit/Jenkins, Markdown, MatterMost.

02.2017-now, part-time, freelance. Web sites for professionals, personal businesses and relatives

Coded small low cost ownership static web sites for optimized for search and discovery. Woodworking, ancestry, personal. Talked to people who does actual business so right clients will reach them.

Used: Schema.org, SEO, CSS3+, HTML5, Jamstack, JavaScript, design, Jimp, Netlify, Visual Studio Code, GitLab, ads.

06.06.2015 - 31.08.2017, full-time. Legal eDiscovery server engine at Thomson Reuters

e-Discovery was an end-to-end SaaS solution for the USA legal market aimed to decrease the volume of information within a litigation to derive insights and create winning legal arguments. Developed asynchronous micro service data intensive engine and intelligent multi-tenant distributed file system aimed for upload/ processing/production/analysis/search/review of millions of documents on custom cloud.

Developed orchestration with error handling of event driven services, HTTP API, billing, audit, reporting, query provider to NoSql database, 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. Did work to replace distributed lock based flows into lock-free event-sourced flows to deliver better performance and correctness, disentangled cases where we could use eventual consistency and approximations, and where not. Thought up, elaborated and managed prototyping of document relationships visualization presented to customer. Articulated several cross team inneficients up to resolutions. Planned and tasked month long features. Shared knowledge via documentation and technical reports and reviews, withing distributed team of 30 developers.

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, LINQ, 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.

07.07.2014-18.04.2015, full-time. 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.

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

02.2010-06.2014, full-time. MS Office add-ins suite and application framework for financial professionals. Stared as Advanced Analytics and Eikon for Office

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

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 50+ 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.

Started from small end user functional team, become distributed framework team of changing size with many functional teams. Visited France to collaborate.

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.

2009-now, part time. Open source

I work with Github and Gitlab.

Contains various projects I did or participated. Long term open sources outlined more fully as separate items. Contains researchlets, code exercises and samples I did. Also I participate in different open source projects communication threads, raise issues, suggest changes, do donations. Have some pushes to cool .NET mainstream frameworks and packages.

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++

2011.07-2013.01, freelance, 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. Audited site for possibility of hacking and manipulation. Code tool for testing holes.

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

10.2008-06.2010, part time. 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.

With zero supervision, idea and whole implementation are mine.

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

07.2008, 07.2009, internship. Time Lapse Microscopy Capture Tool,

Developed and presented application for time-lapse microscopy during summer school which allows continual shooting of photos via camera attached to microscope, measuring photo quality and tuning camera settings. At Institute of Physical Biology with guidance of 2 PhD students

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

2008.08-10, internship. Social network data analysis and visualization at Itransition

As junior developer was creating application to get info from email server, process it and visualize as graph of communications. Implementing server side part. Worked with 3 junior developers and manager

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

08-12.2006, part time. Woodworking machine controller for Stroydetali Llc

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

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

Worked and communicated with micro controller programmer.

Used TMT Pascal 3, ASM

09.2004-03.2005, 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, in-for Vileika gymnasium 1

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

Education and Knowledge

2005-now. Knowledge management

Tagged 5000+ sites, did mind mapping and various forms of publishing. Need to publish that stuff in organzied form some day.

04.2012-02.2014, part time. Coursera

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

2010, part time. Stanford Programming Paradigms (CS 107),

Watched and worked through all lectures in course

2005-2010, full time. Belorussian State University, Faculty of Radiophysics and Computer Technologies

Graduated university with Bachelor degree, Major Radiophysics - 01.04.03, GPA: 6/10. Unfortunately I and our country education system had great mismatch.

04.2008, 11.2008, part time. Software engineering courses at ScienceSoft .NET Framework course and Itransition Industrial software development course

Finished courses(and coding tasks) devoted to .NET, testing, collaboration, Java, .NET, OOP, Design Patterns, ORM and web development. 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). Implemented test tasks and web site to add/store/search tagged technical documents.

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

Languages