profile photo

CEO at theWhite, founder at wicando.io, founder at timerra.io

My current activity:

Open Source Projects:

Articles for CEO / founders / owners

Sales and business development

Как найти и сформулировать УТП(уникальное торговое предложение) (Russian) russian

Что такое УТП, зачем это вам нужно, и как сформулировать уникальную ценность для успешного продвижения вашего продукта.

Как быстро составить смету проекта, так чтобы точно заработать на нем (8 эффективных правил) (Russian) russian

Топ 8 инструментов, чтобы сделать хорошую смету на айти проект. В статье - все что нужно знать о том как систематизировать работу со сметами и упростить жизнь не только отделу продаж, но и разработчикам.

Как сэкономить миллионы вашей компании, немного снизив текучесть кадров. И сколько вообще вам стоит увольнение сотрудника (Russian) russian

Сколько компания тратит на замену уволившихся сотрудников, из каких статей расходов складывается эта сумма и как можно ее сократить.

Technical Articles and Blog Posts:

Testing:

How to set dynamic value of properties in spring boot tests (Russian) russian

Как задать динамические значения spring properties для теста.

Support @TestPropertySource as a repeatable annotation (Russian) russian

История моего очередного коммита в Spring Framework, в этот раз исправляем поведение аннотации TestPropertySource так, чтобы можно было ее использовать одновременно в своих мета-аннотациях и локально над тестовыми классами.

How to use the JUnit5 in the Spring Framework 4 (English) english

The workaround for using a modern version of Junit (the JUnit5 Jupiter) with a Spring Framework version older than 5, or SpringBoot version earlier than 2.0.

How to use the Parallel Execution of tests in the JUnit5 (English) english

Example of usage the JUnit5 5.3.0-RC1 to run tests in parallel execution mode.

Asynchronous tests, the Awaitility and uncaught exceptions from other threads (English) english

The story of my research of fragile asynchronous tests in the Spring Framework and uncaught exceptions handling by the Awaitility.

Spring State Machine:

Spring State machine workshop (English) english

Example of using a spring state machine for an automatization of a different kinds of business process.

Spring State machine workshop (Russian) russian

Использование spring state machine для автоматизации бизнес-процессов

Persisting a spring state machine (English) english

How to store a current state of a state machine in the MongoDb and how to test it with the Docker by the testcontainers framework.

Error handling (English) english

How to work with errors that occur in a different parts of the state machine logics.

CI/CD with Github Actions

How to make CI/CD pipeline with GitHub Actions for Java projects (Russian) russian

A full cycle of continues integration and deployment with GitHub Actions. We consider how to integrate poject with the JIRA, how to show test coverage in pull-requests and we will talk about release managment and deployment project in the docker registry(github packages).

Spring Cloud:

How to use JUnit5 and Spring Cloud Contract (English) english

Example of using a Spring Cloud Contract for testing of the contract between pair of microservices. We consider how to make a full circle of using a Spring Cloud Contract with JUnit5, we will talk about a using TeamCity to build a project and Artifactory for deploy binary of contracts.

Spring Configuration:

Spring auto-configuration & conditional (English) english

Write you own auto-configuration classes with a ConditionalOnBean dependency

Hibernate:

Choosing the right way to initialize a fields of the entity (Russian) english

Варианты инициализации полей сущности, значениями поумолчанию, а так же типичные ошибки при работе с ними. Эта статья послужила материалом для Детективной истории от Баруха Садогурского и Евгения Борисова на конференции jpoint 2018.

разворачиваем прокси (hibernate покажи личико) (Russian) english

Как получить из hibernate proxy сам объект.

Reflection:

создаем новый объект через reflection (Russian) english

Тонкости implicit параметров при создании нового экземпляра объекта.

Concurrency & Garbage Collector:

Soft, Weak & Phantom References in Java (English) english

Consider the differences between the types of references in Java. And look at examples of using a WeakReference, SoftReference & PhantomReference.

Auto-deletable temporary files in Java (English) english

How to make automatically deleted temporary files in Java, a real example of using the PhantomReference.

Автоматически удаляемые temp файлы в java (Russian) russian

Как сделать автоматическое удаление временных файлов в java на базе PhantomReference ссылок.

Synchronized by the value of the object (English) english

An example of the use of WeakReference for the synchronization by value of object. Also a comparing of benchmark for different ConcurrentMap implementations.

Different

Intellij IDEA Little tricks (English) english

How to open files in IDEA from a browser link.

Code conventions:

Code style conventions (English) english

Code style conventions

Annotation processing:

Как подружить lombok и mapstruct (Russian) english

Как использовать сразу два кодо-генератора, да так чтобы задать определенную последовательность их запуска.

Public Talks:

Heisenbug Moscow 2019 - IoT, Where is my Garbage collector - 5.12.2019 russian

 

Heisenbug Piter 2019 - Microservice wars (slides) - 18.05.2019 russian

 

Highload++ 2019 (slides) - 9.04.2019 russian

heisenbug

 

Intro to the Spring Cloud (Live Workshop) - 16.11.2018 russian

 

Spring Cloud Contract - API контракты микросервисов - 12.10.2018 english

 

State machine workshop live video - 18.05.2018 english