Tomasz Wozniak

Software Engineer

Career Summary

Software engineer & architect. When I'm thinking about my job I have in mind two words: passion and efficiency. Over twenty years of experience in Java, Groovy and TypeScript development. Engaged in projects in different areas like public, telecommunication, tele-health, automotive. Open source contributor.

Certificates

CKAD Certified Kubernetes Application Developer

AWS Certified Solutions Architect – Associate

First Certificate in English

Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0

Skills & Tools

Programming languages

  • Java
  • Groovy
  • JavaScript/ECMAScript 6
  • Typescript
  • SQL

DBMS

  • Oracle
  • MySQL
  • Postgres
  • MS SQL Server
  • H2
  • MongoDB
  • ELK

Frameworks & Libraries

  • Hibernate
  • EclipseLink
  • Spring
  • ActiveMQ
  • AngularJS
  • ReactJS
  • Redux

Containerisation

  • Docker
  • Docker compose
  • Kubernetes
  • Helm

Monitoring

  • Elasticsearch/Kibana
  • Datadog

Cloud platforms

  • Amazon Web Services (AWS)

Application servers

  • JBoss/Wildfly
  • Glassfish
  • Tomcat
  • Undertow
  • Keycloak Identity provider
  • OSGi Apache Karaf

Standard APIs

  • JDBC
  • JPA
  • JNDI
  • JDO
  • Java NIO
  • OSGi spec

Protocols

  • HTTP1.1/2
  • OAuth
  • SAML

Test frameworks

  • JUnit
  • Mockito
  • Spock
  • Geb
  • Jest
  • Enzyme
  • fetch-mock

Build tools

  • Maven
  • Gradle
  • Webpack

Other tools

  • IntelliJ Idea
  • vi
  • git
  • Bitbucket
  • Bamboo
  • Jenkins
  • JIRA
  • SonarQube

Operating systems

  • Linux
  • Windows

Achievements

Olympiad of technical knowledge

Laureate XXI countrywide competition in electronics “Olimpiada wiedzy technicznej” organised by NOT (Naczelna Organizacja Techniczna - Polish Engineering Association). Ninth awarded place in group of 17 000 competitors.

Education

Wroclaw University of Economics

DepartmentDepartment of Strategy and Management Methods

The post-graduate studies Managing Business, conducted in English language, are providing students with theoretical-practical knowledge concerning tangible and intangible (connected with human capital) management issues as management methods, team building, communication, negotiation, motivating people

Wroclaw University of Technology

Department of Electronics Science

Field of studyComputer Science

SpecializationComputer Systems and Networks

ThesisComponent based development

DegreeMaster of Science

Technical college of electronics “Stanisława Staszica” in Zduńska Wola

Work Experience

Equal Experts

Software engineer
wayfair.com

Decoupled PayKit BFF service for wayfair.com

Migration of PayKit BFF functionality from monolith PHP implementation to Java service

  • Java 11
  • Gradle
  • Spring Boot
  • WebFlux
  • Kubernetes
  • Helm
  • Datadog
  • Elasticsearch/Kibana
  • Git
  • Buildkite

Adaptavist

Tech lead

ScriptRunner for Bitbucket and Bamboo

New functionalities and bug fixing

  • Groovy
  • Gradle
  • Spock
  • Geb
  • ReactJs
  • Redux
  • OSGi
  • Git
  • Bitbucket
  • Bamboo
Software Developer

ScriptRunner for Bitbucket and Bamboo

New functionalities and bug fixing

  • Groovy
  • Gradle
  • Spock
  • Geb
  • ReactJs
  • Redux
  • OSGi
  • Git
  • Bitbucket
  • Bamboo
Software Developer

ScriptRunner for JIRA

New functionalities and bug fixing

  • Groovy
  • Gradle
  • Spock
  • Geb
  • OSGi
  • JIRA

blue veery Gmbh

Software Architect & Developer
AMSonline.de

Measurement-data Distributed File System [MDFS]

MDFS it is a file system dedicated for a big data applications, which takes into account measurement data specific characteristics. Its main task is to connect many hard drives connected to different machines into one file system visible under one path namespace.

  • Client access aligned with Java NIO FileSystem API
  • Unix path style
  • Mounting, unmounting MDFS hard drives in live system without breaking client code
  • MDFS Java NIO client has ability to discover if it is running on the same machine on which there is Hard Drive which contains desired file, if it is MDFS opens direct IO stream to file without TCPIP stack, for reading as well for updating file content
  • File replication, applied mainly to have broader possibility to select FsNode for computation which has not overloaded CPU & IO and have local access to required file. Replication is also useful if some hard drives needs to be disconnected from MDFS instance
  • File grouping, measurement data sometimes are spread across few related files, to speed up computation over such data set there is a possibility to keep such files together on hard drive during first file creation and during replication. Thanks to that computation can be executed without network streaming
  • Possibility to group hard drive in space types, each space type with different replication settings
  • Integration with other distributed file systems like S3 or HDFS which are available by java NIO API
  • Background operation which allows to reduce MDFS Hard Drive occupied space or provide equal file distribution between all hard drives, operation helpful after connecting new hard drives to MDFS instance
  • Time scheduler, there is possibility to define working hours per each week day and executes replication and background operations in off office hours
  • Email notifications on lost hard drive or missing hard drive space
  • Admin web application to manage MDFS instance
  • Java8
  • Java NIO API
  • Multithreading
  • Distributed computing
  • ReactJs
  • TypeScript
Main contributor

Spring rest2ts generator

Typescript code generator generates typescript code based on Spring MVC REST and FasterXML/Jackson annotations. Main goal is to have in frontend application compile time dependency on backend, frontend handwritten code reduction and errors during refactoring. Generator functionality overcomes other similar projects

  • Java model to Typescript Interfaces
  • Java REST controllers to Typescript services
  • Java Generics to Typescript Generics mapping
  • Jackson Annotations
  • Spring MVC Annotations
  • Spring data support
  • Custom type mapping
  • Package to TS module mapping strategies
  • Imports generation
  • Support for Spring Data
  • Support for Angular
  • Support for React

Generator is able to generate about 20% of frontend code

Software Architect
PURTEL

Admin Portal

PURTEL is wholesaler of IPTV & VOIP services, the task was to renew its Admin portal without breaking current running system.

Challenges:
  • 130 functionalities developed over 10 years
  • Integration between Server Side Rendering and Single Page Application
  • Modern ORM mapping for legacy database
Software Architect
PURTEL

Customer Portal

PURTEL is warehouse seller of IPTV & VOIP services, the task was to renew its End Customer portal without breaking current running system.

Challenges:
  • Getting into 10-years old system
  • Technology evaluation
  • Web application navigability
  • White labelling based on CSS semantic classes, BEM
Software Architect
Roche

Roche Assets Inventory [RAI]

Warehouse management system integrated with online shop. Web application for warehouse management and web online shop, mobile application for warehouse assistants 6 business processes divided in 21 functionalities

  • System setup
  • Storage management
  • Product management
  • Warehouse stocktaking
  • Online shop
  • Orders management

Main challenges:

  • Integration with corporate ActiveDirectory [AD]
  • Dynamic user roles & mapping between AD user groups
  • Product Dynamic Attributes – generic search engine
  • Product description staging
  • Mobile offline mode – central SQL DB synchronization with mobile NoSQL DB
  • Integration with external devices - scanners and printers
  • Java8
  • Spring MVC
  • MS SQL Server
  • Wildfly11
  • Angular4
  • React native
  • Realm DB
Software Architect & Developer
AMSonline.de

jBEAM Cluster

jBEAM Cluster for AMSonline is a software to parallel calculation over big measurement data by connecting many hosts in one computation engine. It is multithreading, multi process and multisystem solution. Cluster was presented at automotive exhibition in Stuttgart, June 2017 and now is distributed as product

  • Java7
  • Multithreading
  • Distributed computing
  • AngularJs
  • TypeScript
Software Architect & Developer

Chemotaxis and Migration Tool

Chemotaxis and Migration Tool is a plugin for ImageJ that provides graphs and statistical tests for analysis of experimental data. After cell tracking, the cells‘ paths can be plotted and analysed for chemotactical effects.

  • Java8
  • JavaFX
  • ImageJ
Software Architect & Developer

JSON Scopes

JSON Scopes is an open source project conceptually similar to GraphQL. Main target is to get rid of Data Transfer Objects [DTO] to avoid code duplications. Library provides for Spring MVC additional annotation which allows to describe which entities should be serialized, such list of entities types is called serialization scope

During serialization, objects which are out of serialization scope are terminated by special proxy notation in JSON, which allows to stop serialization at end of the specified scope. During deserialization proxies in JSON are deserialized into Hibernate lazy proxies. Result of such deserialization is detached entities network which could be merged by call to JPA EntityManager.merge() method. Library solves also problem with cyclic references which are common in JPA. Library has deep integration with Spring Framework and Hibernate. Library reduce backend code only to real business code and eliminates simple getter & setter calls between entities and DTO

  • Eliminates CRUD operations mistakes
  • One data model
  • Solve problem with cyclic dependencies in entities
  • Significant backend code reduction
  • Carry development weight more on frontend side
  • Hibernate, Spring and Gson compatibility
  • Proven in 3 projects
  • Java
  • Spring MVC
  • Hibernate
Software Architect
Roche

Java to SAP integration for Roche - PoC

The purpose of this project was to check integration possibilities between Java and SAP system with usage of SAP Java Connector (JCo 3).

  • SAP NetWeaver 7.0
  • Wildfly 10
  • Spring MVC for REST API
  • Keycloak 2.5 for OAuth 2.0 authentication
  • AWS
  • Docker

S3 group

Staff Enterprise Architect
Merck Serono

Chronic Treatment Solution Platform

For this project I've designed and implemented library which allows to use Spring Dependency Injection in OSGi environment in totally transparent way. It allows for clean Spring code not bound to OSGi environment and preservers OSGi dynamism so it is an advantage to existing solutions like Spring Dynamic Modules or OSGi Blueprint spec.

  • Java
  • OSGi
  • Karaf
  • Spring
  • PostgreSQL
Chief Architect

MSdialog wave 3

Release extended with new localisations and redesigned UI

Senior Enterprise Architect
Merck Serono

MSdialog wave 3

MSdialog wave 2. Release extended with new localisations and integration with cognitive games provider.

Senior Enterprise Architect
Merck Serono

MSdialog wave 1.

MSdialog is a system supporting patients with multiple sclerosis, health care professionals and nurses in their daily activities. System developed as medical device, multinational (many languages e.g. Arabic), worldwide (patients could be in different time zones, system without midnight). Project takeover from Cognizant Technology

in five months with my team we did:

  • Redesigned project structure
  • Reduced size of project from 130 K lines of code to 80 K
  • Implemented new functionalities
  • Introduced JBoss domain and cluster
  • Moved localization from resource based to Infinispan cache/database. It enabled hot fixes for translations and gives possibility to check current state of it (missing translations from translations agency)
  • Redesigned use of JPA
  • Boosted performance 4,5 times in terms of simultaneous users and reduced response times
  • Correct time zones implementation on JBoss and database side
  • Correct implementation for medication reminders (sms & emails) which works in all time zones worldwide
  • Java
  • JBoss EAP 6.1
  • Infinispan 5.3
  • Hibernate 4.2.0
  • Oracle 11g
  • Spring
Senior Enterprise Architect
Merck Serono

MSdialog CE marking

MSdialog is a system supporting patients with Multiple sclerosis, health care professionals and nurses in their daily activities. System developed as medical device, multinational (many languages e.g. Arabic), worldwide (patients could be in different time zones, system without midnight). MSdialog has web and mobile UI. System was powered by JBoss 6.1 EAP and Oracle 11. System was developed by Cognizant Technology Solutions CTS, Merck-Serono hired S3group to monitor project quality. I was responsible for weekly technical reports which measured technical debt and pointed out different problems in system architecture and implementation. I also supported our customer on sight in Cognizant offices (Pune - India)

Senior Software Developer

Remote Telemonitoring Managed Service Northern Ireland (RTNI)

The large-scale implementation of a Remote Telemonitoring service in Northern Ireland with a target of 5000 people with long-term conditions having access to this service. This clinical design framework sets out the key elements of NI Remote Telemonitoring Managed Service. I developed integration services in BlueIntgrator server.

Senior Software Architect

Chronic Related Groups for Lombardia region [CReG]

Chronic disease management in primary care, aims at providing a framework for the role of the case manager to better address chronic patients' needs across the healthcare continuum. CreG are expected to help creating a support organization for chronic disease management in the territory and to give an economic value to the case manager's work in established diagnostic and therapeutic paths. As system architect I advised our customer in the integration part of the system based on ESB and HL7 standards.

Nokia Siemens Networks

Senior Software Developer

License Manager

License Manager part of the Netact system License manager is an application to manage licenses which activates different functions in GSM and LTE networks. I was responsible for extending core functionality

Senior Software Developer

Call Control Application CCA

Call Control Application CCA was a is based on JAIN SLEE standard and is intended to control call flow and communicate with charging server via diameter protocol to charge subscribers. In the CCA are included following services MOC, USSD. Target runtime environment for that application was OpenCloud Rhino server compliant with JAIN SLEE standard. CGIN resource adapter was used to exchange CAP events whit MSC (Mobile Switching Center)

Software Architect

Events database on MySQL Cluster and Oracle

Feasibility study - with the following requirements:

  • 30 mln subscribers
  • 60 mln events per hour
  • 50 TB data in a retention period
  • MySQL
  • Oracle
Software Architect

Glassfish vs. JBoss evaluation.

The goal of this project was to choose an application server for the NSN. The evaluation was based on long running performance tests, which tested all JEE aspects

  • JBoss
  • Glassfish
  • JMeter

temporary subcontractor work

Software developer

Lucene Projections

Lucene Projections it was algorithm for large Lucene indexes, which was based on fact that queries composed of terms conjunction are expensive to evaluate. Algorithm pointed out most frequent terms conjunction and stored them. When in query terms conjunction appears (projection) it transformed query in such a way that Lucene was using projections sum instead of conjunction. Solution was based on specialized Lucene query.

Software Developer

Minimal Perfect Hash Function

Minimal perfect hash function maps a static set of N keys into a set of M integer numbers without collisions, where M is greater than N or equal to N. If M is equal to N, the function is called minimal.

Solution was based on Jenkins hash function, which distributes keys into buckets up to 256 keys, this functions has low level of collisions. Mapping in buckets was made by algorithm, which was based on random graphs. Random graphs allow on small amount of data to record huge amount of information. Solution had to be very compact because this algorithm was used to create graphs. These graphs were used to described Internet sides and edges showed links between sides. Number of vertexes were about several billions.

Software Developer

Carmel Algorithm for Lucene

Carmel Algorithm was an algorithm for optimizing Lucene index size. Algorithm was based on fact that queries were composed of term’s sums; user is mostly interested in N-first results. This algorithm was pruning algorithm and its main goal was to reduce index size. Solution was based on writing new derived classes from Lucene framework classes.

Winuel

Senior Software Developer
Polish Ministry of Justice

SIP Information system for public prosecutor's offices in Poland

This system allows prosecutors to collect all needed information about cases, crimes, exhibits and gives also access to external systems like REGON, PESEL, CEPIK, KCIK and KRK

My main task in this project was to start-up and develop module which allows user to generate dynamic queries to system, user pointed out interesting data fields and conditions. This two things creates graph in which vertexes were tables and edges were connections between tables. Using this graph and shortest path query was generated. This module allows users unfamiliar with SQL to generate complex queries

  • Hibernate
  • Spring
  • Db2
  • Ant
Senior Software Developer
Polish Post

Information system for Polish Post [WIEMPost]

WIEMPost is used to control parcel delivery. I was responsible for

  • communication system between post office departments based on IBM MQ
  • communication with external systems
  • modules to control parcels sorting machines
  • Java
  • Oracle DB
  • Hibernate
  • Spring
  • IBM MQ
Senior Software Developer
PANOPA

Control system for automatic warehouse - PANOPA

Control system for automatic warehouse for PANOPA, company which cooperates with VW in Swarzedz. I was responsible for communication system between VW and PANOPA based on the IBM MQ

  • Java
  • Oracle DB
  • IBM MQ

ABG S.A.

Senior Software Developer, Team Leader
Ministry of Interior and Administration

Central Register of Vehicles and Drivers [CEPiK ]

Central database storing information about all vehicles, their owners and drivers in Poland. Large scale system - 3500 clients, 4 TB of data, 20 developers. Multi-tier application with thick Java Swing-based client and clustered server environment powered by Weblogic servers and Oracle Database. I was responsible for team which had to create client layer of this system.

  • Java
  • Oracle DB
  • Swing UI
  • Weblogic
Senior Software Developer
Agency for Restructuring and Modernization of Agriculture

Integrated Administration and Control System [IACS]

Integrated Administration and Control System (IACS) has following key objectives: Authorisation, execution and accounting of direct payments for agricultural producers (farmers), in accordance with the terms specified by the EU in the Common Agricultural Policy Identification and registration of farm animals (cattle, sheep, goats, pigs) in accordance with the veterinary requirements of the EU. It is a distributed system with multi-layered architecture. Some information about scale of the system:

  • 8 500 users
  • 350 locations
  • 2 000 000 farmers
  • 30 000 000 agriculture parcels
  • 8 600 000 animals
  • 25 000 000 documents per year

My main responsibility in this project was to create transaction manager which has to operate on client(Swing UI technology), the most important features:

  • Detecting changes in entity objects on client and during committing changes only modified objects were sent to server, it greatly optimized transfer between clients and server and gave huge speed advantage.
  • Optimistic lock - it increased concurrent work
  • Nested transactions - it gave comfort work programmers with nested windows in client’s applications
  • One entity in one business object on client even despite multiple reads from server - improved serialisation’s mechanism.
  • Reads on demand

It was a fundamental component of this system and all business cases are realised using this component. This solution is similar to Hibernate library but without part which refers to mapping object to database tables.

Furthermore I realized mass farmers spotting procedure. Spotting was based on risk factors (e.g. number of errors on applications, farm size, subsidy size, size of period without control). 10% of farmers who reached the best results in this procedure were controlled. This procedure collected tremendous amounts of data from the whole system and was the most demanding calculation in IACS. Proper spotting was the most important condition during system acceptance by EU.

  • J2EE
  • Java
  • Swing
  • Oracle DB
  • PL/SQL

POTIS SDT

Solution Specialist
Agency for Restructuring and Modernization of Agriculture

Integrated Administration and Control System [IACS]

I was hired by ABG company to make early stage system requirements analysis.

Software Developer

HaHu

Project for petrol wholesaler. It was used to control ordering and selling petrol as well as in the production process.

  • Java
  • Swing
  • SQL Server 2000
  • TOPLink 3.5
Software Developer

TANGO - Project for AICE Poland

Project was dedicated for a car dealer to enable servicing and purchasing cars via internet.

  • Java
  • Swing
  • Java ObjectStore6.0
Software Developer

POTIS Delphi Synchronizer

It was project of code synchronizer which generates code from UML project (SelectEnterprise6.2) and reverses code (Delphi) to repository.

  • C++
  • C++ Builder4.0
  • SelectEnterpise6