I was born in Opava, which is a town located near Ostrava in the Czech Republic. Until I went to college, I lived with my family in Mokré Lazce, which is a small village near Opava. From 2001 to 2005, I attended Mendel Grammar School in Opava, from which I have graduated. After my graduation in 2005, I moved to Brno, where I studied at the Faculty of Information Technology, Brno University of Technology (FIT BUT). I finished my MSc. studies in 2010 and got my Ph.D. in September 2014.
During my studies at FIT BUT, I started to enjoy theoretical aspects of computer science. The person who brought me into the magical world of theoretical computer science was prof. Alexander Meduna. His lectures about the basics of formal language theory woke my interest in this research area. Basically, formal language theory is a branch of mathematics that formalizes languages, such as natural or programming languages, and devices that define them strictly rigorously. I have done my bachelor’s thesis, master’s thesis, and dissertation thesis under his supervision. Jointly with prof. Meduna, I have written and published two books, eleven journal papers, and many other publications, such as conference contributions. For more details, see the Publications page.
I have started with serious programming right after I entered FIT BUT – that is, in late 2005. Until then, I only did some basic Pascal and HTML/CSS/JS coding. I can say with certainty that college ignited my passion for software development. I switched from Windows to Linux and started to learn shell and systems programming. When I think about it now (February 2014), the switch to Linux has been one of the best professional decisions I have ever made. As many other beginners, I started with Fedora and Kubuntu. After a few years, I moved to Debian, and since 2010, I have been happy with Arch Linux. I also switched from KDE to Fluxbox and from Kate to Vim. I do not regret any of these switches and I wonder what will be the next change.
From 2011 to 2016, I was employed by AVG Technologies, where I participated on the development of a retargetable decompiler used for platform-independent malware analysis of executable files. Together with my colleagues, we published many conference papers on reverse engineering, with focus on decompilation. It is a process of converting binary files into high-level code, such as C. If you understand Czech, be sure to check out my talk on decompilation, entitled “From hamburger to cow or how to get source code from binary files”.
In 2016, AVG Technologies was acquired by Avast Software. For six years, I led the development of services and tools used for threat intelligence, such as a service for automatic clustering (grouping) of similar files together, a service for automatic labelling of files and detections (e.g. this file is a banker named Zeus or this detection detects ransomware named WannaCry), or a service providing threat-related data reports. At Avast, I held various roles, such as a senior individual contributor, team lead, engineering manager, and a tech lead.
At the end of 2022, Avast merged with NortonLifeLock and formed Gen™. I have been employed there since October 2022.
If you wish to read more about my career, take a look here ;-).
Apart from my day job, I enjoy writing posts to my English and Czech blogs, giving talks, developing open-source software, and reading technical stuff.
Professional Career
-
Gen™, Brno, CZ (10/2022 – *)
Staff+ engineer (senior-manager-level IC) in the CTO organization.- part of a core cloudification group leading the migration of the CTO organization into Google Cloud
- technical leader and architect for Threat Intelligence Systems (26 people, three teams)
- Google Cloud: GKE, GCE, GCS, BigQuery, Cloud SQL, AlloyDB, MongoDB Atlas, Memorystore, Cloud Monitoring/Logging, Prometheus, Terraform
- Linux, Python, Rust, Git, MongoDB, PostgreSQL, Redis, RabbitMQ, Docker, Kubernetes, TeamCity, Grafana
-
Avast Software, Brno, CZ (10/2016 – 09/2022)
Leading the development of services and tools used for threat intelligence.- technical leadership, team management (2-7 people), as well as individual-level development
- Linux, Python, C++, Git, MongoDB, PostgreSQL, Redis, RabbitMQ
- DevOps, CI (TeamCity), Docker, Kubernetes, Grafana, Kibana
- systems design, infrastructure administration and monitoring
- threat-related data management (Hadoop, Hive, Azkaban)
- leading an on-call team and participating in on-call rotations (VictorOps/Splunk)
- leading bachelor’s and master’s theses of students at BUT FIT
-
AVG Technologies, Brno, CZ (04/2011 – 09/2016)
Development of a retargetable decompiler (RetDec) used for platform-independent malware analysis of executable files.- decompiler development (C++, Python, Git, Bash, CMake)
- development of an online decompilation web service in AWS (PHP, Python, MySQL)
- leading bachelor’s and master’s theses of students at BUT FIT
- server administration (Linux)
-
Faculty of Information Technology BUT, Brno, CZ (07/2012 – 09/2014)
Research at the Research Centre of Information Technology, within the National Supercomputing Center (IT4I).Research areas:
- regulated formal models (grammars, automata, and grammar systems)
- reverse compilation (decompilation), malware analysis
-
Faculty of Information Technology BUT, Brno, CZ (11/2010 – 10/2014)
Teaching and research.Taught classes:
- Formal languages and compilers
- Introduction to programming systems
- Principles of programming languages
- Graph algorithms
Research areas:
- formal language theory, especially regulated grammars and automata
- reverse engineering, especially reverse compilation (decompilation)
-
Fituška – A Private FIT BUT Student Forum (fituska.eu) (09/2006 – 08/2010)
Administration, moderation, and development of a private forum for over 2 400 students at the Faculty of Information Technology, Brno University of Technology.- PHP, MySQL, HTML, CSS
- phpBB
-
Calitko Project (calitko.org) (06/2007 – 10/2007)
Development of an extensible software P2P framework for resource discovery and resource acquisition.
Education
-
Ph.D. @ Faculty of Information Technology BUT, Brno, CZ (2010 – 2014)
- Study specialization: Computer Science and Engineering
- Dissertation topic: One-Sided Random Context Grammars (theoretical computer science)
- Dissertation thesis defended in September 2014
-
Master’s Degree @ Faculty of Information Technology BUT, Brno, CZ (2008 – 2010)
- Study specialization: Information Systems
- Thesis topic: On Erasing Rules in Regulated Grammars (theoretical computer science)
- Final state examination, passed with honors (red diploma)
-
Bachelor’s Degree @ Faculty of Information Technology BUT, Brno, CZ (2005 – 2008)
- Study specialization: Information Technology
- Thesis topic: Canonical Derivations in Programmed Grammars (theoretical computer science)
- Final state examination, passed with honors (red diploma)
-
Mendel Grammar School, Opava, CZ (2001 – 2005)
- Graduation exam
Research
My main research interests are
- formal language theory, especially regulated grammars and automata
- reverse engineering, especially reverse compilation (decompilation)
I have published (authored or co-authored)
- 2 books
- 2 book chapters
- 16 international journal papers
- 10 international conference papers
- 3 international conference posters
- 5 student competition contributions
- 3 theses
For more details, see the Publications page. Also, see my researchgate.net profile.
Awards
- Dean’s award for an excellent dissertation thesis and Ph.D. study results, FIT BUT, Brno, 2014
- Rector’s award for excellent results obtained during the Ph.D. study, BUT, Brno, 2013
- Joseph Fourier Prize, Prague, 2013, 5th place (computer science, student competition)
- Student EEICT 2013, Brno, 1st place (computer science, student competition)
- Student EEICT 2012, Brno, 1st place (computer science, student competition)
- Student EEICT 2011, Brno, 1st place (computer science, student competition)
- Dean’s award for an excellent master’s thesis, FIT BUT, Brno, 2010
- Student EEICT 2010, Brno, 3rd place (computer science, student competition)
- Dean’s award for an excellent bachelor’s thesis, FIT BUT, Brno, 2008
- Student EEICT 2008, Brno, 2nd place (computer science, student competition)
- International Young Physicists’ Tournament, Leoben, Austria, 2004, 3rd place (physics, team competition)
- Becario Challenge, Prague, 2003, 3rd place (physics, team competition)
Leading of Student Works
I have led (either directly supervised or consulted) the following student works at the Faculty of Information Technology, Brno University of Technology:
- Matúš Jasnický: Multi-criteria clustering of files, master’s thesis, 2021 (consultant)
- Patrik Holop: Real-time detection of malware campaigns, master’s thesis, 2021 (consultant)
- Matúš Jasnický: Improving an existing system for clustering of files, bachelor’s thesis, 2019 (consultant)
- Michal Planička: Analysis of scripts for use in clustering, bachelor’s thesis, 2019 (consultant)
- Pavol Plaskoň: High-performance platform for malware research, master’s thesis, 2019 (consultant)
- Patrik Holop: Classification of potentially malicious file clusters via machine learning, bachelor’s thesis, 2019 (consultant)
- Pavol Plaskoň: Improving an existing system for clustering binary files, bachelor’s thesis, 2017 (consultant)
- Viktor Dítě: Analysis of C code for testing of decompilation, bachelor’s thesis, 2017 (consultant)
- Tomáš Porwolik: Code structuring in decompiler back-end, master’s thesis, 2016 (consultant)
- Petr Rek: C language source files similarity detection, bachelor’s thesis, 2016 (consultant)
- Jaroslav Kollár: LLVM IR optimizations for decompilation, master’s thesis, 2015 (consultant)
- David Hrbek: Code structuring in decompiler back-end, bachelor’s thesis, 2014 (supervisor)
- Tomáš Korec: Source-code migration using decompilation, master’s thesis, 2014 (supervisor)
- Jaroslav Kollár: Optimizations in the decompiler’s back-end, bachelor’s thesis, 2013 (supervisor)
- Mária Krajčovičová: Compiler warnings filter, bachelor’s thesis, 2013 (supervisor)
- Martin Urban: C Back-end for a decompiler, bachelor’s thesis, 2012 (supervisor)
- Mirka Klapuchová: Transformation of grammars into normal forms, bachelor’s thesis, 2012 (supervisor)
Skills and Experience
An overview of my skills and experience.
General
- Software development – procedural and object-oriented programming, version control systems, wiki and issue tracking systems, code review, testing, writing specifications and documentation, build automation, continuous integration, deployment, monitoring
- Systems development – back-end systems, distributed systems, systems design and architecture, data engineering, monitoring and incident handling (including on-calls)
- Development methodologies – agile development, test-driven development, DevOps
- Leadership – leading the development of projects and teams as a technical leader (tech lead), team leader, and engineering manager
- Writing – blog posts (English, Czech), technically oriented papers
- Presentation – giving talks, preparing screencasts
- Open source – participating in the open-source community (list of projects, GitHub profile)
- Research – Ph.D., background in formal language theory and reverse engineering (publications)
- Hiring – hiring on various positions (software engineering, systems engineering, data analysis, engineering management), interviewed 50+ people
- Background and domain knowledge – security, compilers and decompilers, threat intelligence
- Qualities – detail-oriented, organized, highly reliable, hardworking, gets things done
- Other – mentoring, onboarding of new team members, leading student works (bachelor’s or master’s theses)
Technologies
- Version control systems – Git, GitHub, GitLab
- Documentation – LaTeX (papers, presentations), Markdown, wikis, Confluence, Sphinx, Doxygen
- Issue tracking systems – Jira, GitHub, GitLab, Redmine
- Databases – SQL (MySQL, PostgreSQL), NoSQL (MongoDB, Redis), BigData (BigQuery, Hadoop, Hive)
- Messaging systems – RabbitMQ, Kafka
- Continuous integration – TeamCity, GitHub Actions
- Containerization and orchestration – Docker, Kubernetes
- Monitoring – Grafana, Kibana, Icinga
- Incident management – Splunk On-Call (VictorOps), xMatters
- Automation – Ansible, Terraform
- Cloud – GCP, basics of AWS
- Operating systems – Linux (user and server admin), Microsoft Windows (user), Android (user)
- Web – HTML, CSS, JavaScript, jQuery
- Programming environment – Arch Linux (personal) and Debian/Ubuntu (work), Fluxbox, Alacritty + Tmux, Bash, Neovim, Firefox + Tridactyl (primary browser) and Chromium (secondary browser). My configuration files are available on GitHub
Programming Languages
- Python – advanced (up to 3.13)
- C++ – intermediate (up to C+17)
- Rust – basics (up to edition 2021)
- Bash – basics (up to 5.x)
- C – basics (up to C11)
- Go – basics (1.15 around 2020)
- PHP – basics (5.x around 2005-2010)
- JavaScript – basics – infrequent use for web development
- Lua – basics (up to 5.4) – primarily for configuring Neovim
- Vimscript – basics (up to 9.x) – for configuring Vim/Neovim and writing plugins
- Java – basics (Java SE 6 around 2008) – student projects
- Haskell – basics (Haskell 98 and GHC 6.8 around 2009) – student projects
- Prolog – basics (SWI-Prolog around 2009) – student projects
Natural Languages
- Czech – native speaker
- English – full professional proficiency
- German – elementary proficiency
Contact
You can reach me via s3rvac@petrzemek.net. Or, try AMA ;-)