Umiejętności
Przez lata programowania komercyjnego i hobbystycznego poznałem wiele technologii i rozwiązywałem
szeroki wachlarz problemów w różnorodnych branżach
(Robotyka, E-commerce,
Telco, Cybersecurity).
Ale moja ekspertyza najbardziej obejmuje:
-
C++
Projektowanie systemów wysokowydajnych, osadzonych blisko sprzętu z zaawansowaną obsługą pamięci. W robotyce, telekomunikacji i gamedevie.
-
Python
Systemy skalowalne, przetwarzanie dużych danych, aplikacje internetowe, narzędzia, skrypty i prototypowanie.
-
HTML, CSS,
JavaScript / TypeScriptInterfejsy użytkownika, strony internetowe. Często wykorzystuję razem z frameworkami (Bootstrap, VueJS, AngularJS, itd.). Dla przykładu - ta strona jest zrealizowana przy pomocy Jekylla.
-
Docker, Kubernetes,
AnsibleKonteneryzacja, orkiestracja i systemy wdrożeniowe.
-
ELK, PostgreSQL,
RedisSystemy bazodanowe, CRUD, Mechanizmy cacheowania i kolejkowania.
-
Linux, NGINX
Systemy operacyjne, zabezpieczenia, segmentacja zasobów, fine-tuning wydajnościowy, load balancing.
-
Stos TCP/IP
Protokoły sieciowe, topologia i konfiguracja.
Dev stack:
spacemacs, git, zsh, tmux,
Sporadycznie generatywne AI.
Doświadczenie zawodowe
-
sierpień 2021 - sierpień 2024EXATEL - Senior / Lead Software Engineer
Firma telekomunikacyjna działająca również w branży cybersecurity oraz R&D. Dołączyłem jako Senior Software Engineer do projektu TAMA - skalowalnego i wysokowydajnego rozproszonego systemu AntyDDoS. Po pół roku przejąłem rolę głównego programisty w projekcie i brałem udział w wytyczaniu dalszego kierunku rozwoju.
Specjalizowałem się w implementacji niskopoziomowych części systemu (tych będących na styku sieci) wymagających wydajnego zarządzania pamięcią oraz nierzadko kreatywnego podejścia do rozwiązywanych problemów. Konieczne było utrzymanie wysokiej wydajności i cech low-latency przy jednoczesnej implementacji nowego, bezpiecznego kodu obsługującego nowe protokoły sieciowe i funkcjonalności. Praca wymagała dużej uwagi i częstej pracy z niskopoziomowymi narzędziami (assembler, profiler, fuzzer).
Rozwijałem również serce systemu, czyli horyzontalnie skalowalny klaster przetwarzający dane spływające z jednostek stykowych. Tworzyłem skomplikowane interfejsy użytkownika przedstawiające stan sieci w czasie rzeczywistym i przeprowadzałem integracje z innymi wewnętrznymi systemami.
Kierowałem procesem wydań oraz wdrożeń na środowiska produkcyjne. Wiązało się to z czynnym nadzorowaniem stanu jakości kodu (code review, automatyczne testy jednostkowego, integracyjne i e2e, CI/CD), procesu manualnych testów oraz synchronizacji prac pomiędzy zespołami. Przygotowywałem nowe wersje systemu i bezprzerwowe kroki wdrożeniowe (częściowo automatyczne). Byłem odpowiedzialny również za rekrutację nowych członków zespołu.
Mój zespół podczas pracy w TAMA zrealizował od początku do końca kompletny projekt nowego systemu chroniącego przed atakami na warstwy aplikacyjne (L7).Umiejętności: C++, Python, Vue, ELK, Docker, Kubernetes, TCP/IP, Linux, low-latency -
lipiec 2020 - lipiec 2021Zespół roboczy ds. USOS - Software Developer
Zespół zajmujący się rozwijaniem Uniwersyteckiego Systemu Obsługi Studentów (USOS) stanowiącego system informatyczny obsługujący większość uczelni w Polsce oraz innych krajach europejskich. Zajmowałem się rozwojem aplikacji webowych wchodzących w skład systemu: Archiwum Prac Dyplomowych (APD) oraz Internetowa Rejestracja Kandydatów (IRK). Moje kompetencje obejmowały development backendowy, frontendowy oraz procesy wydawania nowych wersji oprogramowania.
Czas mojego udziału w projekcie przypadał na najbardziej intensywny okres pandemii COVID-19, co wiązało się z dynamiczną cyfryzacją procesów, aby umożliwić zdalne funkcjonowanie uczelni. Brałem udział w tworzeniu zdalnej procedury egzaminu dyplomowego w APD. Utworzyłem moduł systemu pozwalający studentom na przeglądanie tematów prac dyplomowych, komunikację z potencjalnymi promotorami oraz wypełnianie wieloetapowych wniosków elektronicznych o zdalne zatwierdzenie tematu. Całość opisałem w swojej pracy magisterskiej - tutaj. Procesy przeprowadzane podczas mojego egzaminu dyplomowego wykorzystywały kod, który... napisałem podczas realizacji samej pracy dyplomowej.
W IRK rozwijałem mechanizmy oficjalnego doręczania elektronicznych dokumentów oraz stworzyłem osobny system dla zagranicznych osób odwiedzających uczelnie - Internetową Rejestrację Gości. System był modyfikacją bazowego IRK i pozwalał na zapewnianie tymczasowym osobom dostępu do systemów i usług na Uniwersytecie Warszawskim.Umiejętności: Python, Django, JavaScript, Oracle Database -
lipiec 2018 - wrzesień 2019VersaBox - Software Engineer
Polski startup (aktualnie już przedsiębiorstwo) wprowadzający na rynek w pełni autonomiczne przemysłowe roboty mobilne. W zwinnym interdyscyplinarnym zespole (ówcześnie firma liczyła poniżej 10 programistów) zajmowałem się przede wszystkim projektowaniem algorytmów nawigacyjnych. Byłem współautorem algorytmu przesuwania ścieżki - wydajnego rozwiązania pozwalającego na stabilną i przewidywalną autonomiczną jazdę dużych jednostek (do 1.5 tony) w chaotycznych przemysłowych warunkach. Zrealizowałem projekt algorytmu precyzyjnego dokowania do stacji pośrednich dla robotów o dużej bezwładności. Zajmowałem się też usprawnianiem systemów kontrolujących tor jazdy.
Poza algorytmami nawigacyjnymi moje obowiązki sięgały również systemów komunikacyjnych. Zaprojektowałem na komputerach pokładowych robotów platformę VBarWeb pozwalającą na zdalną konfigurację najniższych modułów elektronicznych za pomocą elastycznego interfejsu webowego. Całość odbywała się przy wykorzystaniu protokołu komunikacyjnego zaimplementowanego na magistrali CAN i bezprzewodowego interfejsu WiFi. Projekt został opisany szerzej w sekcji Realizacje oraz mojej pracy inżynierskiej.
Razem z zespołem projektowałem też system wielorobotowy (MRS) - flotę w pełni autonomicznych jednostek komunikujących się i współpracujących ze sobą w celu optymalizacji realizowanych zadań.Umiejętności: C++, Python, JavaScript, ROS, Linux, low-level -
listopad 2017 - czerwiec 2018V8 Automatyka - Projektant
Firma z branży automatyki przemysłowej. Zajmowałem się doborem sterowników i osprzętu elektrycznego do realizacji zbiorników i mieszadeł. Projektowałem schematy elektryczne i połączenia przewodowe. Przygotowywałem też oprogramowanie do sterowników PLC.
Umiejętności: ePLAN, Siemens PLC -
lipiec 2016 - wrzesień 2016STEICO - Pomocnik Automatyka Elektryka
Pierwsza styczność z prawdziwym przemysłem - praktyki w dużym zakładzie produkcyjnym z branży drewnianej. Zajmowałem się wyszywaniem szaf sterowniczych, prowadzeniem przewodów i programowaniem sterowników PLC. Brałem też udział w uruchamianiu linii produkcyjnych.
Umiejętności: śrubokręt, Siemens PLC
ThermoState 2000
System do zarządzania inteligentną instalacją grzewczą
SmallTalks
Prototyp inteligentnej zabawki konwersacyjnej
APD
Moduł do ogłaszania, negocjowania i zatwierdzania tematów prac dyplomowych
Ogrodnictwo Łangowscy 2.0
Unowocześniona wersja strony dla lokalnej szkółki roślin
TwojeWnętrza
Sklep internetowy z materiałami łazienkowymi
VBarWeb
Aplikacja do zdalnej konfiguracji modułów elektronicznych robotów
Ogrodnictwo Łangowscy
Pierwsza wersja strony dla lokalnej Szkółki Roślin.
KNR
Strona internetowa Koła Naukowego Robotyków
Scorise
Projekty stron realizowane we współpracy z firmą Scorise
Zadania OIG
Projekty zadań algorytmicznych przygotowujących do olimpiad
Argarden
Strona firmy produkującej meble ogrodowe
Better Billy Bass
Animatroniczny głośnik Bluetooth
RAG3
Retro strzelanka (single/multiplayer) z mechaniką manipulacji czasem
x64_life
Gra w życie Conwaya napisana w asemblerze x86
Beatsy
Konfigurowalny trójwymiarowy wizualizer muzyczny
Turinger
Interpreter niedeterministycznych maszyn Turinga
SAT Solver
Optymalne rozwiązanie problemu spełnialności logicznej napisany w Haskellu
CountReduce
Implementacja problemu zliczalności za pomocą minimalnego MapReduce
Latte Compiler
Kompilator języka obiektowego Latte do x86 ASM
SmoothCTRL
Kontroler do gier z żyroskopem oparty na STM32
Gravity
Interaktywny symulator międzyplanetarnych sił grawitacji
Vehicles Evolution
Algorytm ewolucyjny z UI na przykładzie pojazdów
Standy
Mobilny robot balansujący na dwóch kołach
Spirit Runner
Dynamiczna, zręcznościowa gra platformowa