Michał Bartoszewski

Michał Bartoszewski

Dad of 2 | Principal Software Engineer | Tech Lead

About Me

Hi there !

My name is Michał but friends call me e1n (pronounced :/aɪn/ or "eye-n").
I am a Software Engineer with over 19 years of experience in the tech industry.
I have a strong background in software development particularly:
- distributed systems
- frameworks design and maintenance,
- software architecture
- clean code practices.
I am passionate about building scalable and efficient software solutions based on data-driven decisions that solve real-world problems.

Interests

  • Java | Python | Kotlin
  • Distributed Systems
  • Data Science
  • Software Architecture
  • Software Craftsmanship
  • All things AI !

Hobbies

  • Spending time with my family
  • Kitesurfing
  • Skiing
  • Gaming (PC, Switch 2)
  • Traveling

Work Experience

Principal Software Engineer | Tech Lead

Workday Inc.

Remote

July 2015 - Present

Centralized Job Dispatcher (CJD)

Came with idea / design and implementation of Workday's Job Framework new feature - Centralized Job Dispatcher (CJD).
Purpose of CJD is to provide a unified way to manage incoming Job requests to the system.
It aims to solve the problem of multiple entry points for Job requests and provide a single point of control for all Jobs dispatch.

As a result of CJD implementation we have achieved following benefits:
- Improved system performance and scalability by optimizing Job dispatching and resource allocation.
- Proper throttling of incoming Job requests to prevent system overload and ensure smooth operation.
- Better job balancing across available processing nodes.
- Elimination of transactional update conflicts related to Sequential Execution guardrail resolution.
- Enhanced monitoring and logging capabilities for better visibility into Job processing and troubleshooting.
- Greatly Simplified codebase as was able to shrink its size by 20-30% overall !
- Simplified OPS and support processes by providing a single point of control for Job dispatching and management.

Java Java
Apache Kafka Apache Kafka
MySQL MySQL
Junit 5 Junit 5

Remote Partition Processing (RPP)

Aim of this project was to horizontally scale processing of Workday's Job Framework tasks to idle servers in a cluster.
Feature came to existence as a result of cluster usage metrics analysis and finding out that
often there is spare processing capacity on some servers while others are overloaded.

Key pillars of RPP implementation were:
- Job Load protocol exposing information about cluster nodes capacity.
- API to distribute tasks between cluster nodes.
- Monitoring layer to intelligently cancel remote tasks when host node is getting its own dedicated traffic.
Results achieved by RPP implementation were:
- Improved system performance and scalability by optimizing Job processing and resource allocation across cluster nodes.

Java Java
MySQL MySQL
Junit 5 Junit 5

Auto Triage Tool (ATT)

ATT is a standalone CLI tool designed to automate process of log collection and analysis for many Workday's frameworks and services.

It collects structure and unstructured logs from various sources like:
- Elasticsearch,
- TeamCity,
- Jenkins,
- E2 instances,
- Stats Warehouse
- local env.
Then it presents it in a user-friendly way as a report with insights and recommendations for next steps.
This tool quickly became a go-to tool for Workday's support and SRE teams to troubleshoot issues faster and more efficiently.

Kotlin Kotlin
Elasticsearch Elasticsearch
Apache Hive Apache Hive
Jenkins Jenkins
Junit 5 Junit 5
Excel Excel

Adaptive Dynamic Partitioning (ADP)

One of the problems of batch processing frameworks within transactional systems is related to chunking step input
If input is too small we might have too many small tasks / transactions which can lead to significant overhead and performance degradation.
On the other hand if input is too big we might have long running tasks / transactions which can cause starvation of other tasks and lead to increased latency and reduced throughput.
ADP is a feature that dynamically adjusts partition / chunk sizes based on real-time data characteristics and processing requirements.
It aims to optimize performance and resource utilization by adapting partitioning approach to changing conditions.
Results achieved by ADP implementation were:
- Improved system performance and scalability by optimizing partitioning and resource allocation based on real-time data characteristics and processing requirements.
- Reduced latency and increased throughput by dynamically adjusting partition sizes to prevent starvation of other tasks and ensure efficient processing.
- Better fairness among tasks scheduled to run from different Jobs.

Java Java
MySQL MySQL
Junit 5 Junit 5

Senior Java Developer

International Business Machines Corporation (IBM)

Remote

May 2013 - Jun 2015

Managed Security Services solution

Comprehensive solution for companies that want to outsource their information security to leading Managed Security Services provider.
Service oriented, multi-module system which is capable of fetching and analyzing logs from customer network devices,
firewalls, intrusion detection systems, virus protection software etc.

Java Java
Spring Spring
BMC Remedy BMC Remedy
Bash Scripting Bash Scripting
JavaScript JavaScript
Cassandra Cassandra
Drools Drools
Grafana Grafana
Junit 5 Junit 5

Previous Role

Nokia Solutions and Networks

Wrocław, Poland

Apr 2012 - Apr 2013

Tool for troubleshooting and tracing GSM, GPRS, 3G and LTE networks

System that is able to trace and troubleshoot various protocols of digital cellular networks.
It is collecting and analyzing real time data from different Network Elements such as RNC, BTS, MME etc.
One of its main features is ability to generate various textual and graphical reports about traced network.
Target audience for this system are mobile phone network operator companies around the world.

Java Java
C++ C++
Python Python
Open JPA Open JPA
Active MQ Active MQ
Oracle 11g DB Oracle 11g DB
Ehcache Ehcache
JUnit 4 JUnit 4

Senior Java Developer

Allegro Group

Toruń, Poland

Apr 2008 - Apr 2012

Product Catalogue

Webservice allowing access to millions of product data including descriptions, assets (like photos, movies), parameters, categories etc.
Ready for extremely high traffic and scalable Supporting complex data mapping rules allowing merging data from different providers.
Complex pipeline of data processing (for example watermarking data, statistics)

Java Java
JavaScript JavaScript
PHP PHP
Cassandra Cassandra
MySQL MySQL
Spring Spring
Apache Thrift Apache Thrift
Symfony Framework Symfony Framework
JUnit 4 JUnit 4

Custom Application Server

Application server customised for clients needs.
It provided framework to create applications like background daemons, webservices, pages.

Among its core functionalities:
- Custom Classloader Graph:
- Dependency Resolution
- Dependency Separation
- Runtime Reloading free of Memory Leaks
- Log and Monitoring Management
- Resource Pooling

Java Java
JUnit 4 JUnit 4

Payment and Invoice Service

REST service allowing complicated basket-like operations with functionalities of internet payment and invoicing.
System was enabling customers to customize behaviours with plugin system.
With thesystem client was able to add complicated payment and invoice functionalities to their site in a matter of days.
Other important property of the system was security and logs.
Thanks to logs system was able to recreate scenarios and provide data about payment lifecycle. (Journaling)

Java Java
PHP PHP
Symfony Framework Symfony Framework
MySQL MySQL
JUnit 4 JUnit 4

Group of ECommerce Sites

Group of ecommerce sites with items like offers, products. opinions, jobs.
Optimized for high traffic. Allowing user registration and personalized interaction with the site.
Just to name a few:
- allegro.pl - biggest ecommerce site in Poland
- cokupic.pl - site for rating products and sharing it with friends
- otopraca.pl - job offers site
- oferia.pl - site for sharing offers and services

Java Java
PHP PHP
Symfony Framework Symfony Framework
MySQL MySQL
Memcached Memcached
Varnish Cache Varnish Cache
Solr Solr

Web developer & User Interface Architect

WikiDot.com

Toruń, Poland

Jul 2007 - May 2008

Wiki hosting service

Wikidot.com is the world's third-largest wiki farm,
with over 10 million users running 105 845 537 pages and serving millions of visitors per year.

JavaScript JavaScript
Docker Docker

Skills

Programming Languages

Java 100%
Kotlin 80%
Python3 60%
Bash 70%
PHP 80%
JavaScript 60%

Frameworks & Libraries

Spring Framework 60%
Google Guava 100%
Mockito 100%
Junit 5 100%
JPA 80%
JMS 80%
Java EE 90%
gRPC 70%
Thrift 70%
Avro 70%
SLF4J 100%
Log4j 100%
Apache Commons 100%
Ktor 90%
CLIKT 90%

Tools & Technologies

Jetty 80%
Docker 85%
SQL 95%
REST 95%
SOAP 95%
Redis 70%
Apache Kafka 70%
Rabbit MQ 70%
Hive 70%
Elasticsearch 70%
Grafana 70%
Jupyter Notebooks 60%
Claude Code 60%
Github Copilot 60%
Notebook LM 60%
Teamcity 70%
Jenkins 70%
Gradle 80%
Maven 80%
XSLT 100%
XSLT-FO 100%
XML 100%
XSD Schemas 100%
YAML 100%
CSV 100%
HTML 70%
CSS 40%
Git 90%
Slack 90%
MS Office 90%