Mam 21 lat i mieszkam w Starym Mieście niedaleko Konina, a na co dzień przebywam także w Poznaniu. Studiuję na
Politechnice Poznańskiej, gdzie
rozwijam swoją pasję do technologii i jej praktycznych zastosowań w różnych projektach. Moje
zainteresowania obejmują programowanie, nowe technologie, które zmieniają nasz świat (w tym AI), a także sport.
Wierzę, że kluczem do sukcesu w dynamicznie zmieniającym się świecie
jest ciągły rozwój i zdobywanie nowych doświadczeń.
FutRank to internetowa aplikacja stworzona w Laravelu, pozwalająca użytkownikom
oceniać zawodników piłkarskich, przeglądać komentarze i wiele więcej – wszystko w przyjaznym i nowoczesnym interfejsie.
Ponadto umożliwia użytkownikom rejestrację, logowanie, weryfikację e-mail, resetowanie hasła oraz zarządzanie kontem.
Kluczową funkcjonalnością aplikacji jest lista zawodników z możliwością oceniania (w skali 1–5 gwiazdek),
komentowania, filtrowania po klubie, pozycji, miejscu urodzenia, nazwie i komentarzach oraz sortowania po
nazwie i średniej ocenie. Portal oferuje zaawansowane wyszukiwanie komentarzy, ranking zawodników na podstawie
ocen, dashboard użytkownika, a także opcję edycji i usuwania własnych ocen. Zaimplementowano również integrację
z API Hugging Face, umożliwiającą analizę sentymentu komentarzy w języku polskim przy użyciu modelu
cardiffnlp/twitter-xlm-roberta-base-sentiment. Projekt wykorzystuje Blade i Tailwind CSS po stronie frontendowej,
a także Alpine.js dla interaktywności. Dzięki middleware Laravel Breeze dostępna jest autoryzacja z pełną ochroną
i wymogiem weryfikacji adresu e-mail.
Aplikacja współpracuje z bazą danych MySQL i umożliwia przeglądanie listy zawodników bez konieczności logowania.
Koktajlove to nowoczesna aplikacja mobilna dla miłośników drinków i koktajli, stworzona z użyciem Jetpack Compose i Firebase.
Użytkownicy mogą przeglądać bogatą bazę koktajli, dodawać własne przepisy do ulubionych, filtrować je po kategoriach oraz przeglądać szczegóły dotyczące składników i sposobu przygotowania.
Jednym z kluczowych elementów jest AI Barman – funkcja umożliwiająca generowanie drinków na podstawie składników lub preferencji użytkownika,
zintegrowana z modelem językowym przez API.
Aplikacja wspiera tryb ciemny i jasny, posiada dynamiczny layout z obsługą tabletów, zachowanie stanu zakładek, podział na kategorie (alkoholowe / bezalkoholowe) oraz detekcję połączenia z internetem.
Projekt opiera się na Firebase Firestore jako backendzie do przechowywania danych o koktajlach, ulubionych oraz globalnych polubieniach.
Wdrożono logowanie za pomocą Firebase Auth oraz routing do odpowiednich ekranów.
Interfejs został zoptymalizowany pod kątem UX – zawiera zwijane paski aplikacji, responsywny układ grid, przełączanie zakładek gestem oraz animacje kart.
Wygładzanie obrazu metodą cepstralną z użyciem DCT
Przykładowy input i output dla zdjęcia
Celem projektu jest porównanie wydajności algorytmu wygładzania obrazu opartego na dyskretnej transformacie cosinusowej (DCT),
realizowanego w trzech wariantach: sekwencyjnym, z użyciem OpenMP oraz z wykorzystaniem platformy CUDA. Algorytm
polega na przekształceniu każdego wiersza obrazu z dziedziny przestrzennej do częstotliwościowej, odcięciu wysokich
częstotliwości (współczynników DCT), a następnie odwrotnym przekształceniu, co skutkuje efektem wygładzenia obrazu i
redukcji szumów.
Projekt skupia się na analizie czasu wykonania dla każdego wariantu oraz ocenie jakości przetworzonego obrazu.
Projekt polegał na stworzeniu zaawansowanej wizualizacji trójwymiarowego, eksplodującego wulkanu, który został zaprezentowany w ramach przedmiotu Grafika Komputerowa i Wizualizacja.
W realizacji wykorzystano narzędzia i technologie, takie jak OpenGL, GLM, Assimp oraz Blender.
Użyto autorski system cząsteczek do dymu i lawy. W fizyce lawy i opadających kamieni zastosowano technikę rzutu ukośnego,
co pozwoliło na realistyczne odwzorowanie ruchu i interakcji tych elementów w przestrzeni 3D.
PUT Pharmacy - aplikacja dla aptek
Aplikacja PUT Pharmacy została opracowana w środowisku Oracle APEX w ramach projektu z baz danych.
Jej celem było umożliwienie użytkownikowi definiowania, przeglądania i edytowania danych.
Projekt rozpoczął się od stworzenia diagramu ERD, diagramu relacyjnego i skryptów DDL, a następnie
aplikacja została wdrożona jako w pełni funkcjonalny interfejs CRUD. Rozwiązanie pozwala na intuicyjne zarządzanie
bazą danych leków, dostawców i zamówień w środowisku przyjaznym dla użytkownika niezaawansowanego.
Gra Pong dla dwóch graczy - Raspberry Pi
Projekt zakładał implementację klasycznej gry "Pong" dla dwóch graczy z wykorzystaniem Raspberry Pi.
Gracze sterują paletkami za pomocą potencjometrów, a rozgrywka prezentowana jest na wyświetlaczu LED RGB.
Gra została wzbogacona o efekty dźwiękowe i losowe zdarzenia wpływające na mechanikę. Celem było połączenie
programowania gier w Pythonie z obsługą sprzętowych interfejsów analogowych i cyfrowych oraz integracja z
fizycznym środowiskiem, co czyni projekt idealnym połączeniem elektroniki i programowania.
Projekt regułowy systemu eksperckiego oparty na wyborze prezentu! Projekt ten wykorzystuje CLIPS
jako rdzeń systemu regułowego oraz Python jako interfejs użytkownika i narzędzie do integracji.
Skrypt przyjmuje listę katalogów jako argument i przetwarza obrazy znajdujące
się bezpośrednio w tych katalogach. Dla każdego obrazu tworzy miniaturę o określonym rozmiarze,
którą umieszcza w podkatalogu o nazwie tn w tym samym katalogu co oryginalny plik.
Dodatkowo, skrypt synchronizuje czasy modyfikacji, zmiany i dostępu
miniatur z odpowiednimi czasami oryginalnych obrazów, zapewniając zgodność metadanych
i uporządkowanie plików.
Wyszukiwanie tekstu
Rekurencyjne wyszukiwanie tekstu w katalogach.
Skrypt przyjmuje jako pierwszy argument tekst do wyszukania oraz
listę katalogów jako kolejne argumenty. Przeszukuje pliki w tych katalogach rekurencyjnie,
aby znaleźć podany tekst. Wypisuje ścieżki do plików zawierających szukany tekst na standardowe wyjście,
bez wyświetlania komunikatów o braku dostępu do plików.
Celem projektu była implementacja systemu przekazywania (rozgłaszania)
wiadomości do wszystkich procesów, które zasubskrybowały dany typ wiadomości
(zarejestrowały się na ich odbiór). Tworzona aplikacja wykorzystuje
mechanizm kolejek komunikatów. W ramach realizacji projektu konieczne
było opracowanie protokołu komunikacyjnego i 2 programów: klienta i
serwera. Każdy klient może wysyłać i otrzymywać wiadomości do/od pozostałych
użytkowników systemu. W wymianie wiadomości pomiędzy klientami zawsze
pośredniczy serwer (bezpośrednia komunikacja pomiędzy klientami jest zabroniona).
Otrzymywane wiadomości wyświetlane są na ekranie.
Prosta gra przygodowa napisana w języku C używając biblioteki SFML. Gra polega na odwiedzaniu przyjaciół i zdobywaniu punktów,
uwzględniono mechanikę kolizji. Zawiera ścieżkę dźwiękową, której odtwarzanie można w każdej chwili włączyć lub wyłączyć.
Po zdobyciu wymaganej liczby punktów pojawia się jumpscare z krzykiem (nawiązanie do gry "Straszny labirynt"),
następnie można kontynuować dalej grę.
Problem marszrutyzacji z ograniczeniami pojemności i oknami czasowymi - optymalizacja
Problem rozwiązano używając algorytmu GRASP (Greedy randomized adaptive search procedure) oraz Tabu Search. Rozwiązanie używające algorytmu
Tabu Search pobiło najlepszy wynik na Politechnice Poznańskiej. Problem ten polega na optymalnym planowaniu tras dla floty pojazdów,
które muszą dostarczyć towary do zestawu klientów, przy uwzględnieniu wielu ograniczeń.
Aplikacja desktopowa rozwiązująca problem marszrutyzacji, który dotyczy spedytorów.
Została stworzona w paradygmacie programowania obiektowego. Backend w języku C++ oraz frontend przy użyciu Qt Creator.
Algorytmy i Struktury Danych
W ramach zajęć z algorytmów i struktur danych realizowałem projekty w językach C++ oraz Python. Zadania obejmowały
implementację różnych metod sortowania, zaawansowanych struktur danych (m.in. drzewa, grafy, kolejki priorytetowe),
a także algorytmów grafowych, takich jak BFS, DFS, znajdowanie cyklu Eulera i Hamiltona. Dodatkowo zajmowałem się
problemami optymalizacyjnymi, takimi jak problem plecakowy (knapsack), z zastosowaniem technik przeszukiwania i
programowania dynamicznego. Projekty miały na celu rozwój myślenia algorytmicznego i optymalizacji kodu pod kątem złożoności obliczeniowej.
Programowanie i konstrukcja robotów opartych na mikrokontrolerach
Zaprojektowałem i zbudowałem dwa autonomiczne pojazdy. Pierwszy z nich oparty był na platformie Arduino UNO,
natomiast drugi powstał w oparciu o własnoręcznie zaprojektowaną i wytrawioną płytkę PCB z mikrokontrolerem ATmega.
Projekt wymagał zarówno wiedzy z zakresu elektroniki, jak i praktycznych umiejętności montażu komponentów i lutowania. Szczególnym wyzwaniem było samodzielne przygotowanie działającej płytki drukowanej oraz integracja wszystkich elementów.
Poniżej znajduje się film prezentujący cały proces budowy.
W ramach studiów realizowałem różnorodne projekty programistyczne — od aplikacji w Swift, przez proste programy w językach C, C++, Pythonie, aż po problemy logiczne rozwiązane w Prologu.
Mam również doświadczenie z językiem SQL oraz R, wykorzystywanym do statystyki i analizy danych.
Niniejsza strona stanowi mój autorski projekt, wykonany w HTML, CSS oraz JS. W trakcie zajęć z inżynierii oprogramowania poznałem język Java oraz metodykę Scrum, w której aktywnie uczestniczyłem jako Scrum Master.
Potrafię także tworzyć podstawowe programy sieciowe — m.in. serwer w języku C++ z wykorzystaniem BSD socket API
działający w sieci rozległej. Większość moich projektów znajduje się na moim GitHubie, a najważniejsze z nich opisałem w sekcji „Projekty”.