![](assets/photo.jpg)
I am a software engineer with interests in backend development, algorithms, data structures and security.
You can reach me via an email: firstname dot lastname at gmail dot com.
Experience
-
Software Engineer at Google
Since July 2021 I am a part of Dataplex Search team in GCP. We develop and maintain a GCP-wide metadata search service for various GCP resources processing billions of rows of data daily and serving thousands of QPS. I worked mainly on backend migrations without any downtime or service degradation.
Microsoft Internships
I was thrice interning at Security Services team of Cloud+AI Group at Microsoft in Redmond, USA. The team I was a part of created and maintained services dealing with high business impact cryptography.
All my internships at Microsoft were with the same team, which allowed us to pursue ambitious projects.
-
Summer 2019
I created a tool for diagnosing an insecure or faulty state of a system that is utilizing Virtualization Based Security (VBS) technologies.
This project was almost entirely self-driven and during my 3 months of the internship I had a chance to understand the problem, design a solution and go through a few cycles of internal shipping and subsequent improvements. I also had a chance to understand intricacies and interplays of many parts of the VBS such as the Hypervisor, HVCI, TPM and UEFI secure boot.
-
Summer 2018
I created a proof-of-concept work for moving one of our team's services from on-premises servers to Azure.
The main difficulty of the project laid in the service's heavy utilization of Hardware Security Modules (HSM) that was partly incompatible with Azure API's. I worked with Microsoft's cryptographic team to find a solution that would be usable on Azure. In the end, I created a fully working prototype that utilized Azure HSMs.
-
Summer 2017
I created an alternative logging solution for one of our team's services.
The project required me to understand workings of the service, of the logging solution already utilized and of the new logging solution. I created a working alternative solution ready to be used by the Data Intelligence team. This internship helped me understand how our services were built and allowed me to engage in more ambitious projects in later internships.
-
-
Sabre Internship
I was an intern at Sabre Kraków during four months of summer 2016.
Education
-
Bachelor's in Philosophy (2021-now)
As a hobby, I am pursuing a Bachelor's at the faculthy of Philosophy at Warsaw University.
My main interests are in formal logics, in particular in computability problems. See here for my work-in-progress solver of Non-Fregean logic SCI.
Master's degree (2018-2020)
I have completed my master's of Theoretical Computer Science at Jagiellonian University in Kraków.
In my master's thesis I programmed algorithms for recognizing and coloring perfect graphs. I implemented a recent research paper creating the first usable polynomial time program for recognizing perfect graphs. I also parallelized its most time-consuming parts using GPU, greatly improving its performance. In addition I explored practicality of the ellipsoid method for coloring perfect graphs.
Perfect Graph Recognition and Coloring
Perfect graphs are a subject of intense study since their introduction in 1961. Only in 2001 the famous perfect graph conjecture was proven to be true and in 2005 a polynomial method of determining if a graph is perfect was found. Since 1988 an algorithm is known for coloring perfect graphs, but it uses an ellipsoid method which is said to be complicated and impractical. As recently as in 2018 a polynomial algorithm that uses a combinatorial approach for coloring perfect graphs without squares was published.
We begin with basic definitions in Chapter 1. In Chapter 2 we introduce perfect graphs and Berge graphs, give an overview of the strong perfect graph theorem and talk about an algorithm for polynomial perfect graph recognition. Chapter 3 is a study of the ellipsoid method of coloring perfect graphs. In Chapter 4 we present our implementation of algorithms from Chapters 2 and 3, along with notes on optimization and parallelisation. Appendix A is a overview of the recent algorithm for coloring square-free perfect graphs.
-
Bachelor's degree (2015-2018)
In my bachelor's thesis I implemented a parallel CUDA algorithm for calculating Lowest Common Ancestors (LCA) of a tree.
Solving LCA Problem on GPU
Practical Algorithm with Theoretical Guarantees
The common knowledge is that classic PRAM graph algorithms do not fit well the GPU architecture. We show that it is not necessarily the case and investigate an Euler tour based algorithm for parallel LCA calculation on a modern GPU. Our experiments prove that the theoretically optimal PRAM algorithm is on par with a simple naïve solution on average, and outperforms it considerably in the worst-case scenarios.
Achievements
One of my programming-related hobbies is competing in programming contests. I have done so since middle school, with some success:
- Bronze medal in XXII Olympiad in Informatics,
- Finalist of PIZZA Team Programming Championship,
- 12th place in team in Algorithmic Engagements 2013 (Potyczki Algorytmiczne),
- Bronze medal in VI Olympiad in Informatics for middle school.
I also participate in Codeforces and CodinGame contests.
Skills
- Extensive knowledge of algorithms and data structures,
- Programming languages: C++, C#, Java, C and some Python and Haskell. I have worked professionally with the first four, and competed in many contests in C++,
- GCP. I am a part of GCP team at Google which allowed me to learn how to effectively use it to develop highly reliable distributed software with it.
- Azure/Windows/.NET stack. I worked on back end of web services both on Azure Cloud and on local servers during my time at Microsoft,
- Linux, Bash, Git, PowerShell,
- Languages: English, Polish, Russian.
Other Projects
-
Polarsteps Companion
A desktop application written in .NET for updating photos from a DSLR camera with a geolocation calculated using data from the Polarsteps Android app.
-
SquareRunner
A simple 2D Android game. I created my own basic 2D rendering engine, programmed simple physics and gameplay without any external library.
-
Minix Mutex Server
A server of mutexes and condition variables for Minix operating system.
-
MShell
A simple shell written in C. It features multiple pipelines in a single line, file redirections, background processes and taking input from a command line or a file.
Hobbies
I am interested in philosophy, mainly formal logic and non-classical logics.
Last update: April 2024