I’m a software engineer with over 10 years of experience in web development and a master’s degree in computer science.

Experience

Product FeedbackCTO & 1st software engineer
Jul 2020 – Sep 2021

Building Product Feedback was an exceptional opportunity as well as a great challenge for me. I was lucky to be given the task of building a whole product from scratch. I learned a lot ― new technologies, approaches, tools, and challenges.

I made the technological choices, set up the whole project, infrastructure, development flow, CI pipelines, and implemented most of the product itself.

The project was designed as a full-stack TypeScript monorepo, infrastructure hosted in AWS. The main used technologies were:

  • Frontend ― React, GraphQL, styled-components, RadixUI
  • Backend ― Node.js, NestJS, GraphQL, MikroORM, PostgreSQL
  • Infrastructure ― AWS, Kubernetes, Docker, Terraform

Some of the interesting projects I worked on include a Notion-like text editor with taggable highlights, workspaces, projects, team management, user invitations, user roles, mailing, Typeform data synchronization, worker processes, and more.

MailPoetfull-stack engineer
Nov 2018 – Jul 2020

Working at MailPoet was a great experience ― my first time in a fully remote team, learning a lot about WordPress as well as React and Node.js development.

I joined the team with a strong backend and PHP background and expanded my JavaScript knowledge. I worked on WordPress plugins, React frontends, and a shop written in Node.js.

Together with new product features, some interesting projects I worked on at MailPoet include:

  • Doctrine ― I introduced Doctrine ORM to the MailPoet codebase and initiated the migration from an old ORM. A task that gets challenging in the WordPress world due to plugin conflicts, old PHP versions, and limited plugin size.
  • Static code analysis ― I introduced static code analysis to the PHP codebase using PHPStan.
  • Webpack ― I refactored an old extensive Webpack configuration and managed to significantly reduce the resulting bundle size.
  • Docker ― I created an initial version of Docker-based environment for the development of MailPoet plugins and later kept improving the experience.
  • Release automation ― I participated in automating MailPoet release flow ― changelog generation, release branch creation, tagging, build publishing, Slack notifications, etc.
  • Stable end-to-end tests ― I refactored an old acceptance test setup and significatnly reduced random failures by isolating test runs from each other without loosing performance.
Tripomatic (Sygic Travel)CTO, backend and infrastructure engineer
Aug 2014 – Oct 2018

I joined Tripomatic as a backend developer. It was a first time working in a startup for me and I acquired a lot of essential engineering knowledge. In Tripomatic I had the chance to learn all the time, work autonomously on large projects, lead them, and eventually become a CTO.

I implemented and led many exciting projects, some of which took months to complete. Among the most interesting are:

  • Elasticsearch ― I integrated Elasticsearch to our technological stack, developed a rich places API on top of it, and designed a multilingual fuzzy location-aware fulltext search. Our Elasticsearch cluster contained over 25 million places and served more than 100 requests per second. In 2015 I attended an intensive 2-day "Core Elasticsearch" training that was led by Elasticsearch core developers in Berlin.
  • OpenStreetMap ― I researched, designed, and implemented OpenStreetMap data integration into the product. The project increased our places coverage from about 50 thousand to more than 25 million. I worked on a pipeline for processing the whole planet database, filtering data, computing geometric relationships, removing duplicities, etc. I was digging in Nominatim source codes, forking Imposm, and used advanced PostGIS features. I also implemented a live minute-sync from OpenStreetMap to our database.
  • Public transport ― I implemented public transport routing API using GTFS data. I experimented with Navitia, OpenTripPlanner, and GraphHopper, and decided to build the solution on top of Navitia components as it suited our use case the best. I also created automated jobs for GTFS data download and merging, OpenStreetMap data fetching and clipping, and their deployment to the transport API.
  • MySQL to PostgreSQL migration ― I prepared and performed a near-zero-downtime migration of the whole backend database from MySQL to PostgreSQL. We decided for this due to poor support of GIS and JSON features in MySQL at that time. I created new database schema in PostgreSQL, migrated incompatible SQL queries, and used AWS Database Migration Service together with custom triggers to make geometries compatible on the binary level.
  • Localization ―I led a localization project whose aim was to bring multilinguality to all parts of the product. Everything, including place names, descriptions, tags, and other attributes, had to be made multilingual. We integrated Google Translate API and developed our own interface for human translators. I worked on most of the backend part.
  • Docker ― I started the Dockerization of our backend stack and helped expand it further.
Freelancerfull-stack web developer
2008 – 2014

During my studies I worked on various projects that I implemented end-to-end ― from server setup to UI design. Some of the interesting ones are:

  • Mimoni, z. s. organization website ― A presentational website with administration. Built with Nette Framework, Doctrine, and jQuery.
  • A practical guide to microbiology ― A web system with administration, account management, database management, PDF generating, and more. Built with Nette Framework, MySQL, jQuery.
  • First aid e-learning system ― A complete e-learning system and its administration with abilities to create units, lessons, include images and videos, communicate with students, etc. Built with Nette Framework, jQuery.

Education

Master’s degree in Computer Science
Faculty of Information Technology, Brno University of Technology
2011 – 2014
Research in Computer Vision and Machine Learning
University of California, San Diego
2013 – 2014
Erasmus programme
University of Avignon
2011 – 2012
Bachelor’s degree in Computer Science
Faculty of Information Technology, Brno University of Technology
2008 – 2011