Tomáš Janoušek, Developer in Guildford, United Kingdom
Tomáš is available for hire
Hire Tomáš

Tomáš Janoušek

Verified Expert  in Engineering

Software Developer

Guildford, United Kingdom

Toptal member since December 8, 2021

Bio

Tomáš is a polyglot programmer with almost two decades of industry experience. He has worked with databases (including a columnar database startup), networks, CI infrastructure, package management, operating systems (contributed fixes to the Linux kernel), digital typesetting, and more. Tomáš is a free and open-source software enthusiast, maintainer of the xmonad window manager, and frequent contributor to many other projects.

Portfolio

Altworx
Elixir, PostgreSQL, Apache Kafka, Docker, Jenkins, Databases
GoodData
Perl, Python, Bash, Jenkins, Zuul, Groovy, Java, Docker, Puppet, RPM, Jira...
SQLdep (Acquired by Collibra)
Scala, Perl, SQL, Jenkins, Ansible, Docker, Continuous Integration (CI)...

Experience

  • C - 20 years
  • Linux - 19 years
  • Haskell - 15 years
  • Git - 14 years
  • Docker - 5 years
  • Erlang - 4 years
  • Python - 3 years
  • Elixir - 2 years

Availability

Part-time

Preferred Environment

Linux, Vim Text Editor, IRC, Slack, Git, GitHub

The most amazing...

...thing I've developed is the second-generation analytical query engine at GoodData, an optimizing compiler from MAQL to SQL serving millions of BI reports daily.

Work Experience

Software Engineer

2019 - 2020
Altworx
  • Collaborated on a real-time event processing system with physical and cybersecurity applications.
  • Prototyped a 100X faster storage engine for the Reality Network—a time-traveling graph database.
  • Discovered, investigated, and fixed several fundamental issues in the event processing pipeline.
  • Addressed technical debt using static analysis tools (linting and types) and a custom testing framework.
Technologies: Elixir, PostgreSQL, Apache Kafka, Docker, Jenkins, Databases

Principal Software Engineer

2017 - 2019
GoodData
  • Ran the continuous integration and deployment infrastructure and build tooling for 100 engineers.
  • Reviewed and merged hundreds of pull requests across multiple repositories.
  • Sped up our Jira deployment so much that I got thank-you emails from the grumpiest engineers.
  • Contributed patches to Jenkins Job Builder and Python-Jenkins and co-maintained both.
  • Made the builds of dozens of components more reproducible, secure, and scalable using Docker.
  • Set up a merge queue for the legacy monolith with 4-hour integration tests, saving its developers hours of wasted time every week.
  • Built a tool for tracking individual test failures in Jira, which helped developers of shared codebases.
Technologies: Perl, Python, Bash, Jenkins, Zuul, Groovy, Java, Docker, Puppet, RPM, Jira, Continuous Integration (CI), Continuous Deployment, Integration Testing

Back-end Software Engineer

2015 - 2016
SQLdep (Acquired by Collibra)
  • Collaborated on a multi-dialect SQL parser and visual data flow (lineage) analyzer.
  • Administered the CI infrastructure and introduced continuous deployment for the back end.
  • Scaled the analyzer using parallel workers and a job queue. Set up logging and monitoring.
  • Prototyped on-premise deployment of the cloud-first product for customers in regulated industries.
  • Tackled technical debt by refactoring the codebase into independent components, which sped up tests and builds.
Technologies: Scala, Perl, SQL, Jenkins, Ansible, Docker, Continuous Integration (CI), Continuous Deployment, Prototyping, Databases

Technical Co-founder

2014 - 2014
Briskat
  • Developed a prototype of a high-performance, interactive database primarily intended for online analytical processing and capable of processing millions of rows in milliseconds on commodity hardware.
  • Used caching and data compression (with some pre and post-processing tricks to improve compression effectiveness) to reduce CPU work and improve memory bandwidth utilization.
  • Designed data structures and algorithms for efficient data storage, sorting, joining, and querying.
Technologies: C, Assembler x86, Erlang, GNU Make, Data Compression, Property-based Testing, Unit Testing, Sorting Algorithms, Algorithms, Git, Pair Programming, Prototyping, Databases

Senior Software Engineer

2011 - 2014
GoodData
  • Developed a second-generation Extensible Analytics Engine (XAE), the core of GoodData platform.
  • Built an optimizing compiler from Multi-Dimension Analytical Query Language to SQL.
  • Tested the SQL backend against a reference implementation of the semantics using QuickCheck.
  • Set up regression testing infrastructure using both synthetic and production data. This ensured correctness, prevented performance regressions and allowed us to run performance experiments.
  • Pioneered CI (test results within a minute of git push) and CD (using Erlang hot code reloading).
  • Had my sleep interrupted due to production incidents less than 5 times: XAE uses small workers (microservices) with almost no moving parts, serving millions of reports daily.
  • Promoted to Senior Software Engineer after we fully migrated to the second generation XAE.
Technologies: Perl, Erlang, Haskell, PostgreSQL, MySQL, Jenkins, Puppet, Splunk, Abstract Algebra, REST, Databases

Software Engineer

2006 - 2008
Red Hat
  • Maintained RHEL and Fedora packages for Bash, Dovecot, Cyrus IMAP, and BRLTTY.
  • Fixed Xorg freezing after 49.7 days. Windows 95 and 98 famously had that issue a few years earlier.
  • Added the boot-based timer into the Linux kernel to fix uptime and process start times after sleep.
  • Fixed a hard-to-reproduce race in nss_ldap, which led to users seeing another user’s data (emails).
  • Received a promotion from associate software engineer to software engineer within six months.
Technologies: C, Linux, Bash, RPM, CVS, Git, RHEL, Fedora

Programmer

2002 - 2006
QNet CZ
  • Built an ISP portal back end that configured iptables and traffic control (shaping) and showed live per-customer traffic statistics.
  • Implemented a flexible, role-based access control framework for the front end.
  • Shadowed the network administrator and technicians and later used the knowledge while volunteering for the CZFree.Net community network.
  • Developed a call-pricing plugin for the Asterisk VoIP gateway.
Technologies: C++, Linux, TCP/IP, Networks, PHP, Asterisk

xmonad

https://xmonad.org/
A dynamically tiling X11 window manager for Linux and BSD that's written and configured in Haskell and has tens of thousands of users. Beginning in 2009, I contributed patches to the project and became a core maintainer in 2020. Since then, I've been helping to get the project unstuck and raise money via crowdfunding to ensure that it can be maintained into the future.

eLearning at Masaryk University

https://is.muni.cz/help/elearning/testy?lang=en
Automated typesetting of multiple-choice test sheets for student exams. In 2009, I completely redesigned the software for typesetting the test sheets, improving the output considerably. The improvements included making it harder to misinterpret or misunderstand the test questions and adding support for advanced formatting, images, and mathematical formulas. The system is still in use today.

Strava-map-switcher

https://github.com/liskin/strava-map-switcher
A browser extension that extends the Strava.com website with additional map layers. As of late 2021, there were over 4,000 users. I am the author and maintainer of this open-source project. Five other people have contributed fixes and improvements.
2006 - 2013

Bachelor's Degree | Master's Degree Coursework in Computer Science

Masaryk University - Brno, Czech Republic

2010 - 2010

Erasmus Student Exchange in Scientific Computing

Universität Wien - Vienna, Austria

Libraries/APIs

WebExtensions API

Tools

Git, GNU Make, LaTeX, Vim Text Editor, Jenkins, GitHub, Ansible, Slack, RPM, CVS, Puppet, Splunk, Zuul, Asterisk, Jira

Languages

Bash, TeX, Haskell, Elixir, Erlang, Perl, C, SQL, Scala, Python, C++, JavaScript, Java, Assembler x86, PHP, Groovy

Platforms

Linux, Docker, Apache Kafka, Fedora

Paradigms

Functional Programming, Unit Testing, Parallel Programming, Pair Programming, REST, Continuous Integration (CI), Continuous Deployment

Storage

PostgreSQL, Databases, MySQL

Other

IRC, Algorithms, X11, Networks, Operating Systems, Property-based Testing, TCP/IP, Leadership, Formal Methods, Abstract Algebra, Cryptography, Graph Theory, English, Complexity Theory, Mathematical Modeling, Neural Networks, Linear Algebra, Data Compression, Sorting Algorithms, Integration Testing, Prototyping, RHEL

Collaboration That Works

How to Work with Toptal

Toptal matches you directly with global industry experts from our network in hours—not weeks or months.

1

Share your needs

Discuss your requirements and refine your scope in a call with a Toptal domain expert.
2

Choose your talent

Get a short list of expertly matched talent within 24 hours to review, interview, and choose from.
3

Start your risk-free talent trial

Work with your chosen talent on a trial basis for up to two weeks. Pay only if you decide to hire them.

Top talent is in high demand.

Start hiring