Przez całe życie pasjonowałem się informatyką, a w szczególności programowaniem. Zacząłem naukę w technikum informatycznym w Krakowie z zamiarem zdawania rozszerzonej informatyki na maturze. W przygotowaniach do niej przez pierwsze 3 lata nauki korzystaliśmy z języka C++, a w ostatni rok poznaliśmy także język Java. Po zetknięciu z nowym językiem, szybko opanowałem go. Doszedłem do wniosku, że uważam Javę za przyjemniejszy język do programowania i podjąłem decyzję by na ostatni rok zmienić język, w którym będę pisał maturę na Javę pomimo większego doświadczenia w C++. Uważam to za dobrą decyzję, ponieważ maturę zdałem z wysokim poziomem i dostałem się na wymarzone wtedy studia na Politechnice Krakowskiej. W trakcie swojej edukacji poznałem także inne języki takie jak PHP oraz Python, które do lepszego zrozumienia porównywałem z Javą oraz elementami w niej zawartymi. Do poznania komercyjnej strony programowania także wykorzystałem Javę i wykonałem kursy takie jak Kurs Spring, jednak nie wykluczam pracy w innym języku, ponieważ umiem się dostosować, tak jak zrobiłem to w start-upie, w którym pisaliśmy stronę internetową z wykorzystaniem PHP oraz frameworka Laravel. W życiu prywatnym interesuję się polityką w aspekcie społeczno-gospodarczym, przez co lubię współpracę oraz kooperację z innymi. Przez większość swojego życia uważałem się za introwertyka, jednak na przestrzeni ostatnich lat, po lepszym poznaniu siebie uważam, że jestem połączeniem jego z ekstrawertykiem.
Umiejętności i kursy
Programowanie
Narzędzia programistyczne
Projekty
Streams
W pogoni za rozwojem postanowiłem lepiej poznać Java Stream API i doszkolić się z jego zakresu. Aby tego dokonać podjąłem się wykonania serii zadań, które udało mi się znaleźć w internecie. Projekt podzielony jest na 3 repozytoria zawierające kilkadziesiąt zadań, w których zagłębiam się w strumieniach. Czytaj więcej, jeżeli jesteś zainteresowany poszczególnymi zadaniami.
Portfolio
Mimo zainteresowania backendem zawsze chciałem mieć własną stronę internetową, gdzie mogę napisać parę zdań o sobie oraz opisać projekty które wykonałem, ponieważ sam kod na portalu GitHub nie zawsze wystarcza. Uważam, że pomimo zainteresowania backendem znajomość, chociaż podstawowego frontu jest pomocna, dlatego projekt ten ma zapoznać mnie z nim bardziej oraz zaprezentować moje umiejętności w deploymencie przy którym wykorzystuje Dockera. Serwer strony napisany jest w Javie w frameworku Spring z wykorzystaniem Thymeleafa.
RecipesManager
Myśl, aby napisać aplikację internetową do przechowywania przepisów kuchennych zrodziła się w mojej głowie, gdy byłem w sklepie spożywczym. Nie mając domowej książki kuchennej pod ręką, potrzebowałem sprawdzić co dokładnie potrzebuję do upieczenia ciasta. Z czasem wykiełkowała ona do pomysłu, aby napisać projekt z wykorzystaniem technologii, które już znam, oraz z tymi z którymi jeszcze nie było dane mi się zetknąć. Projekt oparłem o najlepiej znaną mi Javę oraz framework Spring. Do zarządzania schematami bazy danych wykorzystałem Liquibase, a do mapowania ich w kodzie skorzystałem z frameworku Hibernate. Backend aplikacji połączyłem z frontendem za pomocą Thymeleafa. Do wygodnego pisania strony internetowej skorzystałem z nowego dla mnie Bootstrapa. Na koniec projekt połączyłem z platformą dostarczania wiadomości email (Mailtrap), co wymagało ode mnie zapoznania się z dokumentacją ich API. Projekt napisałem w celu utrwalenia wiedzy i wystawienia się na nowe wyzwania, aby poszerzyć swoje kompetencje.
MinesweeperServer
Ta aplikacja to pierwsza część większego projektu, w których chcę zaprezentować m.in. swoje umiejętności z łączeniem się z API. Jest ona serwerem postawionym na springu, z wystawionym 1 endpointem. Na zapytanie GET z parametrami: length, height oraz mines (gdzie wszystkie są intami) zwraca wygenerowaną na ich podstawie mapę do grania w Sapera. Dla zwiększenia ciekawości projektu i zaawansowania go algorytmicznie wykorzystuje w nim tablicę 1-wymiarową, w której kolejne wiersze układają się jeden za drugim. Ponadto w tym projekcie nauczyłem się jak powinno się prawidłowo obsługiwać wyjątki w Springu, za pomocą @ExceptionHandler. Do testów aplikacji wykorzystałem bibliotekę JUnit 5 oraz AssertJ.
Java Spring Course Project
Aplikacja webowa napisana podczas wykonywania kursu Spring. Projekt był wykonywany i rozbudowywany w każdym kolejnym etapie kursu. Nauczył mnie on wykorzystywania wiedzy teoretycznej poznanej na lekcjach w większym projekcie, a nie tylko na odrębnych zadaniach. Dzięki niemu poznałem komercyjną stronę projektów pisanych w Java Spring. W projekcie zetknąłem się z wieloma nowymi dla mnie elementami programowania jak m.in. standard JPA, Hibernate, Liquibase, CrudRepository, API a także elementami Spring Security. Aplikacja, którą napisałem jest serwisem filmowym, w którym możemy logować się do kont z różnymi rolami. Rola ADMIN bądź EDITOR pozwala nam na dodawanie gatunków filmowych a także same filmy. Będąc zwykłym użytkownikiem z rolą USER nasze uprawnienia są ograniczone i nie możemy dostać się do panelu z obsługą serwisu. Jednak zalogowany klient może wciąż oceniać filmy poprzez dawanie im odpowiedniej ilości gwiazdek.
ChatGPTGuesser
Każdy z nas grał kiedyś w 20 pytań, chęć odwzorowania tej gry zrodziła się u mnie już dawno temu ze względu na to, że strasznie lubiłem tą grę. Problemem na jaki się zetknąłem przy pierwszych próbach zaimplementowania tej gry w kodzie to nieprzewidywalność użytkownika i jakie pytania może zadać. Jednak, gdy AI zaczęło się rozwijać, a ChatGPT podbił internet zrozumiałem, że ten problem właśnie został rozwiązany. Program wykorzystuje API oprogramowania firmy OpenAI i wysyła zapytania do ich sztucznej inteligencji, z którą możemy podtrzymywać konwersację oraz zagrać w zgadywanie. Jednak sama sztuczna inteligencja nie jest idealna i czasem uniemożliwia grę. Projekt wystawił mnie na kolejne doświadczenie pracowania z dokumentacją techniczną innych aplikacji oraz integrowania swojego oprogramowania z zewnętrznym API.
API GitHub
Projekt API, który korzystający z zewnętrznego API GitHuba. Dostępny mamy tylko jeden endpoint GET /github/{username}, który po wywołaniu łączy się z GitHubem i pobiera z serwera dane na temat repozytoriów użytkownika. Tworzy kolekcję z ich nazw, loginów właścicieli oraz dla każdego brancha jego nazwę oraz SHA ostatniego commita. Wymaga posiadania w headerze requesta własności „Accept” ustawionej na „Application/Json” aby poprawnie działać. W projekcie po raz pierwszy operowałem w Javie z zewnętrznym API oraz jak się z nim łączyć i obsługiwać odpowiedzi. A także było to moje pierwsze komercyjne zetknięcie się z pisaniem własnego API i operowanie wyjątkami. Jednak nie byłem zadowolony z obu tych rzeczy. Dlatego w ramach nauki obsługiwania zewnętrznego API poszerzyłem wiedzę na ten temat i stworzyłem projekt ChatGPTGuesser. Pisanie własnego API i operowanie w nim wyjątków zostawiłem sobie na później i opanowałem ten element w projekcie MinesweeperServer.
Kraje JavaFX
Jest to druga odsłona aplikacji edukacyjnej przeze mnie stworzonej do nauki nazw państw. Zdecydowałem się na stworzenie jej, ponieważ nie mogłem znaleźć na internecie gry, która spełniałaby moje oczekiwania względem listy państw. W grze znajdują się państwa uznawane na arenie międzynarodowej, jednak stworzyłem osobną kategorię z państwami, które są tylko częściowo uznawane. Mapa nie jest odzwierciedleniem moich przekonań politycznych. W projekcie skorzystałem z technologii JavaFX aby stworzyć okienkową aplikację. Jako urozmaicenie nauki i próbę zachęty dodałem system punktów zależny od ilości odgadniętych państw oraz czasu rozgrywki. Dla graczy lubiących rywalizację jest także stworzona lista z najlepszą 10, która jest serializowana przed zamknięciem aplikacji by nie tracić wyników przy wyłączeniu aplikacji.
EDI
Projekt napisany na zaliczenie zajęć na studiach. Naszym zadaniem było napisanie aplikacji korzystającej z API Mockaroo do tworzenia randomowych danych na podstawie szablonu. Po otrzymaniu ich z serwera musieliśmy je przedstawić w przyjazny dla oka sposób. Ostatecznie projekt musiał być uruchomiony za pomocą GitHub Pages. Na koniec mieliśmy rozmowy 1 na 1 z profesorem podczas której tłumaczyliśmy, dlaczego napisaliśmy ją w taki sposób i co odpowiada za co na stronie.
Kraje konsola
Pierwszy projekt związany z nauką nazw państw. Powstał, kiedy zacząłem interesować się mapą świata oraz jakie położenie geologiczne na świecie każe z państwa ma. Lista państw nie jest odzwierciedleniem moich przekonań politycznych, wybrałem państwa powszechnie uznawane na arenie międzynarodowej. Jest to prosta aplikacja konsolowa wykorzystująca elementy Javy, które poznzłem i nauczyłem się na kursie. Do projektu dodałem także system punktów oraz listę najlepszych wyników, która jest serializowana przed zamknięciem aplikacji aby nie tracić wyników przy ponownym uruchomieniu.
Java Course Project
Aplikacja napisana w Javie w trakcie wykonywania kursu Java. Projekt rozbudowywany o kolejne elementy w trakcje nauki nowych elementów. Mimo nauki i znajomości Javy zdecydowałem się na wykonanie tego kursu wraz z projektem, ponieważ chciałem jeszcze raz od podstaw ugruntować swoją wiedzę. Dzięki niemu poznałem elementu których w szkole ani na studiach mnie nie nauczono jak np. serializacja, która przydała mi się w innych projektach. Projekt zawiera aplikację do zarządzania biblioteką. Wykorzystuję w nim serializację danych, operowanie na plikach, obsługę wyjątków, strumienie oraz wiele innych aspektów obiektowego programowania.