Patryk Kisielewski

Software Engineer

Projektuję i rozwijam oprogramowanie ze szczególnym uwzględnieniem bibliotek C++, szyfrowania end-to-end, integracji wieloplatformowych oraz systemów bezpiecznie uruchamiających i oceniających kod.

Toruń, Polska

Patryk Kisielewski w plenerze w Toruniu

Engineering focus

Obszary, na których się skupiam

Łączę programowanie niskopoziomowe z projektowaniem systemów, które muszą działać w różnych językach, środowiskach i modelach wdrożenia.

Biblioteki natywne, E2EE i WebAssembly

Rozwój bibliotek C++, komunikacja szyfrowana end-to-end, portowanie natywnego kodu do WebAssembly oraz integracje z aplikacjami webowymi, mobilnymi i desktopowymi.

  • C++
  • E2EE
  • WebAssembly
  • Emscripten
  • WebRTC

Bezpieczne wykonywanie i ocenianie kodu

Systemy uruchamiające niezweryfikowany kod, izolacja procesów, limity zasobów, automatyczna ocena rozwiązań oraz architektura systemów online judge.

  • isolation
  • containers
  • runners
  • online judge
  • automated evaluation

Architektura, nauczanie i praca zespołowa

Projektowanie podziału odpowiedzialności w systemach, prowadzenie projektów technicznych, praca ze studentami oraz przekazywanie wiedzy podczas zajęć i wystąpień.

  • architecture
  • teaching
  • Scrum
  • technical speaking
  • teamwork

Featured work

Wybrane projekty

Projekty zawodowe, akademickie i zespołowe pokazujące różne obszary mojej pracy inżynierskiej.

PrivMX

Projekt zawodowy · Simplito

Rozwijany

Platforma dla programistów do budowania aplikacji z komunikacją, przechowywaniem danych i udostępnianiem treści chronionymi szyfrowaniem end-to-end w środowiskach webowych, mobilnych, desktopowych i XR.

Rola
Software Engineer w zespole Simplito rozwijającym bibliotekę C++ i integracje wieloplatformowe

Najważniejsze elementy

  • modułowa biblioteka Endpoint w C++
  • szyfrowanie end-to-end po stronie klienta
  • integracja C++ z przeglądarką przez WebAssembly
  • biblioteki i wrappery dla wielu języków i platform
  • szyfrowane strumienie audio, wideo i udostępniania ekranu
  • komunikacja, przechowywanie plików i własne zdarzenia

Technologie

  • C++
  • E2EE
  • WebAssembly
  • Emscripten
  • WebRTC
  • TypeScript
  • CMake

VEM

Projekt zawodowy · Simplito · zwycięzca Open Call CORTEX²

Etap CORTEX² zakończony

Virtual Encrypted Meetings — projekt zwiększający prywatność i bezpieczeństwo komunikacji w środowiskach VR dzięki kompleksowemu szyfrowaniu end-to-end wiadomości i ochronie danych.

Rola
Software Developer w zespole Simplito

Najważniejsze elementy

  • bezpieczna komunikacja w środowiskach VR
  • szyfrowanie wiadomości end-to-end
  • ochrona danych użytkowników
  • integracja z szerszym ekosystemem XR

Technologie

  • E2EE
  • VR
  • XR
  • secure communication

VEM został wybrany do grona 10 zwycięskich projektów Open Call #2 programu CORTEX². Simplito było organizacją wiodącą projektu i jedynym polskim finalistą tej edycji.

AlgoJudge

Open source · projekt akademicki i edukacyjny

Rozwijany

Rozszerzalna platforma do organizowania zawodów programistycznych, kursów i laboratoriów oraz do automatycznego uruchamiania i oceniania przesyłanych rozwiązań.

Rola
Inicjator projektu, prowadzący zajęcia i programista

Najważniejsze elementy

  • architektura Client–Server–Runner
  • różne typy aktywności
  • rozszerzalne typy zadań
  • bezpieczne wykonywanie kodu
  • wykorzystanie podczas zawodów i kursów
  • konta tymczasowe dla krótkoterminowych aktywności

Technologie

  • C#
  • ASP.NET Core
  • TypeScript
  • React

Podstawy badawcze

Od badań i proof of concept do obecnego systemu

Zanim powstał obecny system AlgoJudge, jego założenia były rozwijane w ramach badań i rozwiązań proof of concept przygotowanych podczas studiów oraz do prac dyplomowych. Dotyczyły one bezpieczeństwa w procesie uruchamiania zewnętrznego kodu bez jego weryfikacji oraz integracji zewnętrznego systemu sprawdzającego z Moodle.

Noxmap

Projekt zespołowy · projekt studencki

Zakończony · obecnie nierozwijany

Konfigurowalne narzędzie do organizowania wydarzeń opartych na mapie i lokalizacji, takich jak gry miejskie, wydarzenia terenowe i marsze na orientację.

Okres
2019/2020
Rola
Kierownik zespołu i programista backendu serwera

Najważniejsze elementy

  • rejestracja uczestników
  • konfiguracja punktów na mapie
  • automatyczne sprawdzanie odpowiedzi
  • raporty
  • komunikacja w czasie rzeczywistym
  • mechanizmy zwiększające bezpieczeństwo uczestników

Technologie

  • ASP.NET Core
  • SignalR
  • Blazor WebAssembly

Projekt wyróżniony w konkursie WMiI UMK w kategoriach potencjału biznesowego i społecznego.

Professional experience

Doświadczenie inżynierskie

Od niskopoziomowego kodu i procesu budowania po bezpieczne, wieloplatformowe API — pracuję na granicach języków, systemów i modeli wykonania.

Biblioteki C++, E2EE i integracje wieloplatformowe

Rozwijam natywne biblioteki od konfiguracji procesu budowania po stabilne API i integracje z aplikacjami. Łączę C++ z WebAssembly oraz środowiskami webowymi, mobilnymi i desktopowymi, pracując przy tym ze współbieżnością, protokołami komunikacyjnymi i mechanizmami kryptograficznymi używanymi w rozwiązaniach E2EE.

Języki i środowiska

  • C
  • C++
  • CMake
  • OpenSSL
  • SubtleCrypto
  • pthreads
  • E2EE
  • WebAssembly
  • Emscripten
  • WebRTC
  • JSON-RPC
  • JavaScript
  • TypeScript
  • Java
  • Kotlin
  • C#
  • Android
  • iOS
  • Electron

SYSTEM MAP

Zakres techniczny

Obszary, które łączę podczas projektowania, rozwijania i integrowania bibliotek.

  1. Build, toolchain i architektury

    Konfiguracja procesów budowania, praca z kompilatorami i toolchainami, kroskompilacja oraz przygotowywanie kodu dla różnych systemów i architektur.

    • build systems
    • compilers
    • cross-compilation
    • CMake
  2. Biblioteki natywne i kontrakty binarne

    Biblioteki statyczne i dynamiczne, linkowanie, projektowanie publicznego API oraz dbanie o kompatybilność źródłową i binarną.

    • static libraries
    • shared libraries
    • API
    • ABI
  3. Współbieżność i model wykonania

    Wątki natywne, pthreads, synchronizacja i bezpieczna praca ze współdzielonym stanem, a w przeglądarce także Web Workery.

    • threads
    • pthreads
    • synchronisation
    • Web Workers
  4. Integracje między środowiskami

    Warstwy integracyjne i bindingi udostępniające kod C++ aplikacjom webowym, mobilnym i desktopowym, w tym portowanie przez Emscripten do WebAssembly.

    • bindings
    • WebAssembly
    • Emscripten
    • multi-platform
  5. Kryptografia i E2EE

    Szyfrowanie symetryczne i asymetryczne, tryby pracy szyfrów blokowych, wektory inicjalizujące oraz zarządzanie kluczami, parami kluczy i współdzielonymi sekretami.

    • OpenSSL
    • SubtleCrypto
    • keys
    • IV
    • shared secrets
  6. Protokoły, dane i bezpieczeństwo

    Projektowanie komunikacji, serializacja danych i JSON-RPC, walidacja granic systemu oraz świadome korzystanie z bibliotek zewnętrznych w kodzie związanym z bezpieczeństwem.

    • serialisation
    • JSON-RPC
    • validation
    • third-party C++

Speaking & teaching

Wystąpienia i prowadzone zajęcia

Praktyczna wiedza inżynierska przekazywana podczas prelekcji oraz długoterminowej pracy projektowej ze studentami.

Wyróżniona prelekcja

Niskopoziomowe biblioteki w nowoczesnych aplikacjach

Prelekcja wygłoszona jako przedstawiciel Simplito, poświęcona praktycznym problemom związanym z wykorzystywaniem natywnej biblioteki C++ w aplikacjach tworzonych w różnych językach oraz działających na wielu platformach.

Data
Miejsce
Wydział Matematyki i Informatyki UMK w Toruniu
  • C++
  • Java
  • Kotlin
  • Swift
  • JavaScript
  • TypeScript
  • Android
  • iOS
  • Electron
  • web

Działalność dydaktyczna

Zajęcia projektowe AlgoJudge

Prowadzenie długoterminowych zajęć projektowych, podczas których studenci rozwijali system do automatycznego sprawdzania zadań programistycznych, pracując w tygodniowych sprintach i łącząc analizę wymagań, projektowanie, implementację, testowanie, automatyzację oraz dokumentację techniczną.

ZajęciaOkres
AlgoJudgerok akademicki 2023/2024
AlgoJudge2rok akademicki 2024/2025

Zajęcia ze studentami były realizowane dzięki grantowi „Ścieżki rozszerzone” UMK z programu „Inicjatywa doskonałości – uczelnia badawcza” (IDUB).

Zajęcia AlgoJudge(otwiera się w nowej karcie) oraz AlgoJudge2(otwiera się w nowej karcie) w katalogu UMK

Działalność popularyzatorska

Toruński Festiwal Nauki i Sztuki

Od 2017 roku przygotowuję na festiwal własne projekty-eksponaty i prezentuję je podczas wystaw — początkowo jako wolontariusz, a od 2024 roku jako prowadzący.

  1. Przestrzeń Zmiennych

  2. Innowacje: technologia w akcji

  3. Przełam z nami granice nauki! Piknik naukowy

About

O mnie

Jestem Software Engineerem w Simplito i magistrem informatyki Uniwersytetu Mikołaja Kopernika w Toruniu. Moje doświadczenie zawodowe obejmuje pracę przy rozwoju biblioteki C++ do komunikacji szyfrowanej end-to-end oraz jej integracji z WebAssembly (Emscripten) i WebRTC.

Od wielu lat interesuję się również systemami automatycznie uruchamiającymi i oceniającymi kod. Tematyka ta połączyła mój udział w zawodach programistycznych, prace dyplomowe, rozwój projektu AlgoJudge oraz prowadzone przeze mnie zajęcia.

Poza tworzeniem oprogramowania angażowałem się w działalność akademicką i społeczność informatyczną: prowadziłem zajęcia projektowe, przygotowywałem wystąpienia techniczne, kierowałem zespołem projektu Noxmap i pełniłem funkcję przewodniczącego Koła Naukowego Informatyków UMK.

Swoje umiejętności projektowania i analizy algorytmów oraz rozwiązywania złożonych problemów programistycznych rozwijałem m.in. dzięki udziałowi w programach grantowych Ministerstwa Nauki i Szkolnictwa Wyższego Najlepsi z najlepszych! 3.0(otwiera się w nowej karcie)Najlepsi z najlepszych! 4.0(otwiera się w nowej karcie), wspierających wybitnych studentów informatyki WMiI UMK startujących w międzynarodowych konkursach programistycznych.

Publiczne profile

Znajdź mnie w sieci

Projekty, kod i dodatkowe informacje o moim doświadczeniu znajdziesz na GitHubie i LinkedInie.