Przejdź do treści

Full Stack Developer

Bartosz Bryniarski

Cześć! Nazywam się Bartosz Bryniarski, jestem doświadczonym Full Stack Web Developerem z ponad 20-letnim stażem w branży IT. Posiadam umiejętności w technologiach frontendowych (HTML, CSS, vanilla JavaScript, AJAX) oraz backendowych (PHP, Symfony, Laravel, Python, Java, Spring Boot). Tworzę również aplikacje mobilne na Androida i iOS w React Native (Expo) oraz Flutterze. Specjalizuję się także w pracy z różnymi bazami danych, takimi jak PostgreSQL, MySQL i SQLite, w konteneryzacji (Docker) oraz skalowaniu aplikacji, a także w zarządzaniu systemami sieciowymi opartymi na Windows, Linux i Unix.

Jestem absolwentem studiów inżynierskich z inżynierii komputerowej, a także studiów magisterskich na specjalności Internet rzeczy i sieci przyszłości. Ukończyłem również kilka studiów podyplomowych związanych z programowaniem, testowaniem oprogramowania, cyberbezpieczeństwem i informatyką śledczą. Dzielę się swoją wiedzą jako wykładowca akademicki, nauczyciel programowania w szkole średniej oraz prywatnej.

Wolny czas lubię spędzać jako przewodnik górski, a moje pasje to turystyka górska, biegi ultra, motoryzacja i fotografia. Na moim blogu dzielę się wiedzą i doświadczeniem z zakresu programowania, systemów operacyjnych i cyberbezpieczeństwa. Pomagam czytelnikom lepiej zrozumieć te zagadnienia i stawiać czoła wyzwaniom technologicznym. Jeśli interesujesz się tematyką IT, to zapraszam do odwiedzenia mojego bloga i poznania mnie bliżej.

bartosz@bryniarski.pl

Najnowsze wpisy

Wszystkie wpisy →

Jak sortuje twój język: TimSort, Powersort, pdqsort i reszta

algorytmyPythonJavaScript

Ostatnia część cyklu o sortowaniu: co naprawdę dzieje się po wywołaniu sorted() w Pythonie, Arrays.sort w Javie, std::sort w C++, sort() w PHP i JavaScripcie oraz sort_unstable w Ruście. Powersort od CPythona 3.11, dual-pivot quicksort dla typów prostych, stabilność wymuszona specyfikacją, sortowanie zewnętrzne, quickselect zamiast sortowania i klasyczne pułapki: sortowanie liczb jak napisów oraz niespójny komparator.

Czytaj dalej →

Sortowanie bez porównań: zliczanie, pozycyjne i kubełkowe

algorytmyPythonmatematyka

Trzecia część cyklu o algorytmach sortowania. Skąd bierze się granica n log n dla wszystkich algorytmów porównawczych, dlaczego jest nieprzekraczalna i jak sortowanie przez zliczanie, pozycyjne i kubełkowe przechodzą pod nią suchą stopą, nie porównując ani razu dwóch elementów. Implementacje w Pythonie, animacje z licznikiem porównań ustawionym na zero oraz uczciwy rachunek kosztów: pamięć, zakres kluczy i rozkład danych.

Czytaj dalej →

Dziel i zwyciężaj: Merge, Quick, Heap, Tree, IntroSort i TimSort

algorytmyPython

Druga część cyklu o algorytmach sortowania: sortowanie przez scalanie, szybkie, przez kopcowanie i drzewiaste, a potem hybrydy, które naprawdę pracują w bibliotekach – IntroSort z C++ i TimSort z Pythona oraz Javy. Implementacje w Pythonie, animacje, wybór pivota, przypadek pesymistyczny quicksorta na żywo i pytanie, dlaczego szybkie bije scalanie mimo identycznej złożoności.

Czytaj dalej →

Algorytmy sortowania w akcji: od bąbelkowego do Shella

algorytmyPython

Wyścig dziewięciu algorytmów sortowania na żywo w przeglądarce, a potem spokojny rozbiór tych najprostszych: bąbelkowego, koktajlowego, grzebieniowego, gnoma, przez wybieranie, przez wstawianie i Shella. Implementacje w Pythonie, liczniki porównań i zapisów, stabilność, sortowanie w miejscu i adaptacyjność. Oraz to, o czym podręczniki milczą: kiedy O(n kwadrat) naprawdę wygrywa.

Czytaj dalej →

Dlaczego godzina ma 60 minut, a doba 24 godziny

matematykaPythonJavaScript

W kieszeni nosisz babiloński kalkulator sprzed czterech tysięcy lat. Skąd wziął się system sześćdziesiątkowy i liczenie na paliczkach, czemu 60 i 12 wygrywają z 10 liczbą dzielników, jak Egipcjanie podzielili noc na 12 godzin, skąd pochodzą słowa minuta i sekunda – i dlaczego rewolucyjna Francja przegrała z 10-godzinną dobą, choć jej dziesiętny czas przeżył w uniksowym timestampie.

Czytaj dalej →

Cyfry kontrolne – jak PESEL, NIP, IBAN i numer karty łapią literówki

matematykaJavaScriptPython

Ostatnia cyfra PESEL-u, NIP-u, numeru karty płatniczej i dwie cyfry w IBAN-ie nie są losowe – to sumy kontrolne oparte na arytmetyce modularnej. Jakie błędy człowiek robi najczęściej, dlaczego wagi i moduł pierwszy łapią przestawione cyfry, algorytm Luhna w 15 linijkach oraz implementacje walidacji PESEL, NIP i IBAN w Pythonie, PHP i JavaScript.

Czytaj dalej →

Portfolio

Autorskie platformy edukacyjne i projekty Full Stack – od egzaminów zawodowych po narzędzia matematyczne.

Zobacz portfolio →