picture

Marcin Ziąbek

Technology enthusiast loving software development since the age of 10. Now interested in the hardest programming challenges, development optimization, machine learning and open-source movement.

Trying to expand his knowledge in various programming-related areas, understand and properly apply patterns and practices, see the bigger picture and create new technologies which not only improve the software itself but also make users experience better.

Technical skills

paradigms

Preferred paradigms

Functional programming, fluent API, immutability, complex data structures, configuration over convention, library packages, reflection, reducing cognitive complexity

Over many years, I have been improving my software development capabilities and choosing paradigms which produce the best outcome. Code conventions, that I usually use, rely mostly on the functional programming style.

Additionally, while creating new libraries and frameworks, I tend to prepare fluent APIs with expressive configuration. I consider reflection (with expression trees) as a powerful tool to build highly generic and reusable software. I think that many developers do not use proper data structures (even ones offered by the standard library) even though choosing wisely is a key to the best performance.

software development tools

Preferred tools

JetBrains developer tools (Rider, ReSharper, WebStorm, DataGrip, etc.), Azure DevOps, GIT version control

I am a person who enjoys learning and using new tools to simplify daily tasks. It can be as easy as choosing a fast enough programming environment that does not distract me, shows me useful information about the code or reduces the pain to traverse the codebase. Over the last 3 years, I found JetBrains products as tools worth every penny.

backend software development

Backend development stack

Azure, C#, .NET 5, ASP Core, LINQ, Entity Framework, Dependency Injection, NUnit, NLog, Moq, FluentAssertions, AutoMapper, Microsoft SQL Server, ElasticSearch

Creating new software is great, but preparing tools to increase the efficiency of other developers is even better. Thinking about code quality, API stability, version distribution, sharing knowledge, gathering feedback, achieving genericness and analysing internal mechanisms inside the most popular libraries - all those activities are greatly improving my skills.

frontend software development

Frontend development stack

VueJS, Vuex, Vuetify, Webpack, Angular, Ionic, JavaScript, TypeScript

Currently, I am working on several projects that are distributed as reusable libraries within the company. I not only like such tasks from a programming perspective - learning, experimenting and applying new UI / UX patterns is something that I enjoy the most. I consider the frontend part of an application as a way to promote and emphasize the professionalism behind the product.

other software development technologies

Other technologies

Python, Django, Django REST Framework, Unity3D, MongoDB, SQLite, embedded systems (e.g. Raspberry Pi, STM32, Beaglebone)

While working on several bigger projects, I tend to limit the size of the technology stack and choose the most reliable solutions. This allows me to achieve a higher level of expertise and become fluent. I am aware that my knowledge can be sometimes outdated, however, it does not take too much time to familiarize myself with all changes that happened over time.

Open-source

QuestPDF library

QuestPDF

PDF generation library for .NET

Generating PDF documents is never easy. There are several existing solutions such as HTML-to-PDF converters. My solution is significantly different. The library offers fluent API to easily describe documents content, and then, by using special layouting engine, the content is properly rendered into a target file. This project is not only about software development process but mainly about being a part of the fantastic open-source community and helping others with creating world-changing software.

Official webpage
Message.Router library

Message.Router

Messages routing for NetMQ

This project is my first attempt to create a reusable library that solves a real programming problem. I learned how to properly design architecture, create documentation and test all important use-cases. Although the solved problem is a niche, the library is still actively used.

Official documentation

Experience

01.2018 - present

Company owner

CodeFlint

Starting a software development company was my dream for many years. Beginnings are always hard but I am doing my best to finally reach success. Right now I am working on various projects, creating bigger and smaller applications, working on open-source solutions, as well as thinking about founding an own SaaS.

Example mobile project

12.2017 - present

Senior Software Engineer

Jacobs (previously CH2M)

Over years, I have been working on several major capabilities. My biggest accomplishment was recognizing multiple patterns in the team's workflow and taking a chance to optimize them. As a result, I created a couple of libraries that significantly simplified the development process of creating data-analysis webpages, preparing edit forms or generating reports. Now, the mentioned tasks are taking hours instead of days, and the overall results are more consistent and work better.

Additionally, I developed libraries for rendering maps, packaging content into ZIP files or executing GIS calculations. Currently, I am trying to improve existing libraries, add new features and improve performance. Moreover, I am helping with the development process of new, complex dashboards.

04.2017 – 01.2018

Programming teacher

Strefa Kursów

Created three video courses about game development in the Unity3D engine. This courses not only show the editor itself but also teach how to properly design a game, use assets and create high-quality scripts in the C# language using modern techniques.

Show video courses

05.2017 – 11.2017

Software Engineer

Motorola Solutions

Developing software used for programming and configuring Motorola radios. Main responsibilities: adding new features, investigating existing functionalities, code quality and performance improvements, preparing documentation, creating tests. The team used several common approaches such as a continues delivery system or advanced agile process.

08.2014 – 11.2018

Software Developer, Team Leader

Jagiellonian University in Cracow

Designing and developing software solutions for various research projects as a part of my collaboration with Experimental Computer Physics Department (at the Jagiellonian University). All my projects have been physics-related and based on the data measurement process.

One of my biggest challenges was to create a software for data acquisition and analysis from gamma spectroscopy experiments. This project involved native communication with the measuring device, storing data in an optimized format (capable to handle millions of events per second, billions in total), providing real-time statistical and visualization features, as well as being able to perform calibration operation or export gathered data as a report.

In another project, I designed and implemented architecture of Universal Measurement Network - an Internet of Things project created for constructing measurement devices (based on IoT embedded platforms such as Raspberry Pi), with various sensors and measurement algorithms. All data was sent and then collected on the server (Python, Django, MongoDB), capable of storing hundreds of billions of measurement points (time, location, voltage, air quality, temperature, etc.) and providing cached data for accessing, filtering and analysing time series. Both platforms, measurement stations and servers, have implemented plugin capabilities. That means, based on the type of measurement network and specific needs, the system could be extended to handle required tasks.

03.2010 – present

Hobbyist, Freelancer

Game developer, Website developer

Working on various projects to improve personal skills. Example projects: designed machine learning algorithms for speaker recognition problem, implemented image compression algorithm based on matrix decomposition into two orthogonal vectors combined by predefined operation, developed a webpage and a set of plugins for a Minecraft servers network with payment capabilities, created a mobile game targeting the casual audience that was downloaded from the Google Play store over 20 thousand times.
Speaker recognition project

06.2014 – 10.2016

Editor

Mobilestage.in

Creating articles about mobile technology. I described how the Android OS is working internally, for example how different task schedulers may safe battery life or significantly improve performance. I have also prepared a game development video course that is the most popular, free knowledge source in Poland on the YouTube platform (polish name: "Kurs Tworzenia Gier") - up to now it was viewed over 750 thousand times.

Show YouTube playlist

Education

2016 - 2018

Master's degree in Applied Computer Science

Jagiellonian University in Cracow

Graduated with honours (grade: 5 out of 5).

Thesis: "Development and implementation of the software bundle for impulse-shape analyser for ionizing radiation detectors"

2013 - 2016

Bachelor’s degree in Computer Science

Jagiellonian University in Cracow

Graduated with honours (grade: 5 out of 5).

Thesis: "Development and implementation of specialized software for acquisition and visualization data from the ADC cards"

Awards

2017 / 18

National Science Centre of Poland

Contractor of projects funded by grants

I performed this effort was as a part of my cooperation with the Experimental Computer Physics Department (at the Jagiellonian University).

2017 / 18

Foundation for Polish Science

Contractor of projects funded by grants

I performed this effort was a part of my cooperation with the Experimental Computer Physics Department (at the Jagiellonian University).

2015 / 16
2017 / 18

Minister for Science Scholarship

For young researchers

This scholarship is given for university students with outstanding achievements in research and development. During my cooperation with the Experimental Computer Physics Department (at the Jagiellonian University), I have been able to take part with various research projects and therefore develop the required software. This effort, and very high average grade, gave me the honour of being one of a few who awarded this scholarship.

2017 / 18
2016 / 17
2015 / 16
2014 / 15

Rector's Scholarship

For the 10% of best students

2016 / 17

IUVENES – KNOW Scholarship

For students with the highest average grade

2013 / 14

Scholarship of the Prime Minister

For high school students

This scholarship is given for a limited number of high school students with outstanding achievements. Each school can propose only one student each year.

Personal

cycling

Cyclist

Over 6500 km in 2020

Finding solutions for complex programming problems is never easy. Sometimes, standing up and going away from the computer is the best way to rethink everything. For me, cycling is a perfect activity when I can not only take care of my body, admire breathtaking views but also reconsider my design decisions to improve the final product.

Profile on Strava
piano playing

Piano player

I am not a professional, I do not know any famous songs, I just sit in front of the piano and improvise a little, feeling the pleasure of being here and now, of being able to flow my feelings through my fingers, hearing something beautiful.

My composition
languages

Languages

Polish (native), English (fluent)

Although English is not my native language, I am using it on my everyday basis to communicate with teammates, read the documentation and even in my spare time, listening to audiobooks and watching videos.

Contact

e-mail address

[email protected]

E-mail address

phone number

+48 733 059 680

Phone number

github profile

github.com/MarcinZiabek

GitHub profile

For over 3 years, I have been trying to constantly improve my skills and work on my side projects every day. Currently, working full time, I have significantly less spare time. However, I still consider such activities as very valuable.