O mnie

Nazywam się Tomasz Goljat i zawodowo zajmuję się tworzeniem stron internetowych.

Niezwykle ważne jest to, aby jeszcze przed nawiązeniem współpracy dowiedzieć się z kim ma się do czynienia. Z tego względu postanowiłem napisać o sobie trochę więcej, niż zazwyczaj udostępnia się na stronach typu “O mnie”.

Wstęp Link to heading

Moja przygoda z komputerami zaczęła się, od wydawanego pod koniec lat 90’, czasopisma “Twój Komputer bez tajemnic”. Była to gazetka z wkładkami do segregatora zawierającymi instrukcje, krok po kroku, jak wykonywać podstawowe czynności na komputerze. Dzięki temu, jeszcze zanim w domu pojawił się pierwszy komputer, nauczyłem się wiele z obsługi edytora tekstu czy samego systemu operacyjnego. Za kursor służył mi palec, a za ekran - wydrukowane printscreeny z programów.

Dzięki temu, gdy tylko PeCet pojawił się już w “dużym pokoju”, przystąpiłem do eksplorowania tego nowego cybernetycznego świata bez strachu, że coś popsuję. W razie czego miałem pod ręką intrukcję jak zainstalować wszystko od nowa, a w szufladzie leżała przygotowana już “dyskietka startowa”. Nie jestem w stanie zliczyć ile razy wpisywałem do konsoli komendę “format C:”, zarówno u siebie jak i u znajomych z osiedla.

Do dzisiaj, gdy na ekranie rytmicznie mruga kursor w terminalu, odczuwam coś z tamtego młodzieńczego zapału i ekscytacji towarzyszącej sterowaniu komputerem za pomocą słowa pisanego - ciągu komend i parametrów.

W pewnym sensie przeczytasz tutaj historię mojej przygody z komputerem. Staram się jak najlepiej odzwierciedlić umiejętności i doświadczenie jakie nabyłem przez ostatnie ćwierć wieku klikania w klawiaturę.

Najczęściej robiłem to z czystej pasji, zafascynowany tym co mogę osiągnąć przy użyciu przeróżnych narzędzi i technik. Czasami znajdowali się ludzie, którzy skłonni byli mi zapłacić za coś, co przecież i tak bym zrobił z czystej przyjemności płynącej z “klepania kodu”. Jestem im dozgonnie wdzięczny, bo w rzeczywistości nie płacili mi za pracę, a sponsorowali moją pasję.

Dziękuję.

Technologie Link to heading

Poniżej wymieniłem główne technologie z którymi pracowałem (lub obecnie pracuję). Uporządkowałem je malejąco, zaczynając od tych w których czuję się najpewniej, a kończąc na tych, do których wolałbym już nie wracać.

HTML, CSS, Markdown Link to heading

HTML zacząłem używać w momencie, gdy funkcja tworzenia stron internetowych w Microsoft Word 97 przestała mi wystarczać. Najczęściej były to hobbystyczne e-ziny (gazetki), którymi dzieliłem się na dyskietkach z kolegami z klasy. Z biegiem czasu coraz częściej chodziłem do kafejki internetować by wrzucać te “dzieła” na darmowe hostingi.

Dosyć szybko do HTML-a dołączył CSS, a wraz z nim pisana w JavaScript księga gości i licznik odwiedzin.

Po dosyć długiej przerwie i pracy z innymi technologiami powrót do tworzenia stron okazał się bolesny. Nagle layoutów nie tworzyło się już na bazie tabeli, a funkcjonalność CSS i JavaScript rozrosła się do niewyobrażalnych rozmiarów. Wiele musiałem nauczyć się od nowa, ale szybko doceniłem nowe możliwości. Szczególnie w zakresie responsywności (dostosowywania do różnych rozmiarów ekranów).

Stosunkowo niedawno odkryłem język znaczników markdown, który pozwala na zrezygnowanie z HTML-a podczas pisania artykułów. Przypomina mi to trochę edytory WYSIWYG (z ang. “What You See Is What You Get” - “Dostajesz to, co widzisz”) w CMS albo język znaczników BBCODE z dawnych forów internetowych. Generalnie świetna technologia, którą gorąco polecam nie tylko webmasterom, ale też wszystkim twórcom materiałów tekstowych.

Certyfikat pt.: Responsive Web Design wydany przez freecodecamp.org w 2023 roku

JavaScript, React Link to heading

Długo zwlekałem z nauką React, ale nie mogłem w nieszkończoność ignorować faktu, że pojawia się w większości ofert pracy dla deweloperów front-end. Początkowo planowałem poznać jedynie fundamentalne podstawy tej biblioteki, na poziomie umożliwiającym czytanie kodu źródłowego. W końcu, znaczna część współczesnego Internetu napisana jest z jej pomocą.

Z biegiem czasu zacząłem doceniać szybkość i wygodę pracy z Reactem. Zrozumiałem dlaczego jest tak popularny - pisanie aplikacji składających się z osobnych komponentów pozwala mi zachować przejrzystość kodu źródłowego, bez wprowadzania zbędnej “sztywności” rozwiązań, które zawsze odstraszały mnie od stosowania frameworków w PHP.

Jeżeli chodzi o czysty JS, to pomimo licznych wad tego języka, staram się używać go jak najczęściej. Przynajmniej do czasu, aż przesiądę się w pełni na TypeScript.

goLang, Hugo Link to heading

Nie bez powodu Hugo nosi miano najszybszego generatora statycznych stron internetowych. Za ten stan rzeczy odpowiada Go - niezwykle szybki język programowania. Niestety, nie miałem jeszcze okazji wykorzystania Go poza pracą przy blogach i portalach, ale z prędzej czy później znajdę wymówkę, by napisać w nim kod działający po stronie serwera.

Na dzień dzisiejszy poznaję i dopasowuję do własnych potrzeb rozbudowane skrypty, które na podstawie treści zredagowanej w Markdown oraz kilku plików z HTML i CSS generują setki postów w ułamek sekundy. Wszystko to, zachowując najwyższe wyniki w benchmarkach oceniających optymalizację stron internetowych.

Python Link to heading

Okładka książki "Automate the Boring Stuff with Python" przedstawiająca robota koszącego trawę kosiarką spalinową
Serdecznie polecam!

Poza krótką przygodą z Django, cała moja praca z Pythonem skupia się wokół automatyzacji. Początkową inspirację czerpałem z książki pod tytułem “Automate the Boring Stuff with Python”, która wprowadziła mnie w świat pisania skryptów do web scraping przy pomocy biblioteki Beautiful Soup. Zdarzało mi się również pisać boty do automatyzacji nudnych aspektów gier MMO.

Obecnie skupiam się bardziej na JavaScript, ale pisanie kodu w Pythonie to dla mnie czysta przyjemność.

Dart, Flutter Link to heading

Moje zainteresowanie tworzeniem aplikacji mobilnych pokrył się z powstawaniem Fluttera. Rozwiązania, które miało pozwolić osobom z awersją do Javy (takim jak ja) tworzenie projektów o osiągach zbliżonych do tych natywnych. Ponadto, obietnice tworzenia i utrzymywania jednego kodu, który działałby na iOS, Androidzie, Linuxie, WebAssembly i Windowsie sprawiała, że musiałem dać temu szansę.

Wtedy też miałem swoją pierwszą przygodę z Android Studio i emulatorami urządzeń mobilnych. których uruchomienie na używanym przeze mnie wtedy Arch Linuxie było wyzwaniem samym w sobie.

Niestety, po stworzeniu kilku aplikacji nadeszło nieuchronne zderzenie z rzeczywistością i odkrycie, że przed Flutterem jeszcze długa droga do dostarczenia obiecywanej funkcjonalności. Z drugiej strony - to właśnie moje porażki z tym produktem sprawiły, że na poważnie zainteresowałem się optymalizacją stron internetowych pod urządzenia mobilne i skupienie się na szybkości działania.

Ruby, Ruby on Rails i PHP Link to heading

Na szczęście nie korzystam już na co dzień z PHP, ale spoglądam na ten język nostalgicznym okiem. To w nim napisałem, na zlecenie, swój pierwszy System Zarządzania Treścią (CMS - chociaż na dzisiejsze standardy to był raczej system CRUD z autoryzacją) i to na wersji PHP 5.0 uczyłem się programowania obiektowego. To wszystko pozwoliło mi docenić niesamowitą innowacyjność (jak na tamte czasy) Ruby on Rails.

Samo nauczenie się składni Ruby nie trwało długo (przed PHP pisałem już krótkie gry tekstowe w QBasic i wykonywałem “wyzwania” w Pascalu), ale na pisanie w Rails potrzebowałem kilku(nastu) podejść. Wtedy też zrozumiałem jak ważne jest tworzenie przejrzystego kodu oraz jak dużo zajmuje wyszukiwanie i naprawianie błędów. Muszę przyznać, że RoR skutecznie zniechęcił mnie do pracy z frameworkami na długi czasu (głównie ze względu na doktrynę “Convention Over Configuration”).

Mój setup Link to heading

Narzędzie
System operacyjny Linux Mint
Edytor tekstu VIM
IDE Visual Studio Code
Grafika Figma, Canva
Optymalizacja PageSpeed Insights, Firefox Web Developer Tools
SEO Google Search Console

Jak każdy rzemieślnik, o swoich narzędziach mógłbym rozpisywać się bez końca. Tutaj postaram się ograniczyć do suchych faktów, by nie przedłużać, i tak już długiego, artykułu.

Po przetestowaniu niezliczonych dystrybucji wybór padł na Linux Mint ze względu na jego względną stabilność oraz swoje korzenie w Debianie z którym mam największe doświadczenie. Używam środowiska graficznego XFCE, ponieważ działa bezawaryjnie i szybko. Z Windowsem mam do czynienia bardzo rzadko, ale oczywiście nie mam problemu z jego obsługą.

Do edycji tekstu używam VIM-a, ze względu na to, że jest edytorem modalnym - oferuje różne tryby pracy. O przewadze takiego rozwiązania nad tradycyjnymi edytorami napisano już bardzo wiele, ale zatrzymajmy się na tym, że do jego obsługi nie potrzeba myszki. Sam fakt nieodrywania rąk od klawiatury diametralnie przyspiesza pracę z tekstem. Dodajmy do tego nagrywanie makr, wbudowane komendy, pluginy i masę innych funkcjonalności i otrzymujemy najbardziej wydajny sposób na pracę z tekstem. Poza tym, domyślnie zainstalowany jest na każdym serwerze Linuxa, więc jego znajomość znacznie ułatwia pracę zdalną.

Bardziej skomplikowany kod piszę w Visual Studio Code (oczywiście z wtyczką VIM). Testowałem wiele rozwiązań, ale ostatecznie wybór padł na to rozwiązanie, ze względu na stabilność działania oraz ilość dostępnych wtyczek, które pozwalają mi na dostosowanie tego narzędzia do swoich potrzeb.

Nie jestem grafikiem, więc najczęściej korzystam z najprostszych rozwiązań - Canvy oraz Figmy. Generalnie nie jestem zadowolony z Canvy, ale korzystam z niej tak rzadko, że nauka bardziej skomplikowanego narzędzia nie miałaby w moim przypadku sensu. Figma jest świetna i najczęściej tworzę prototypy layoutu. Korzystam też z bardzo wielu narzędzi online do optymalizacji grafiki.

Do optymalizacji stron używam PageSpeed Insights - zawsze staram się osiągnąć tam jak najwyższe noty. Do sprawdzania responsywności używam Web Developer Tools w Firefoxie. Często to właśnie ta część mojej pracy trwa najdłużej, ale daje też najwięcej satysfakcji.

Generalnie nie zajmuję się SEO, ale zawsze upewniam się, że wszystkie strony i podstrony zawierają wymagane meta tagi. Na życzenie klienta generuję i wrzucam sitemap do Google Search Console i wyłapuję ewentualne błędy w wewnętrznym linkowaniu strony.

Zakończenie Link to heading

Przy tworzeniu stron internetowych moim priorytetem jest to, aby działały płynnie na każdym urządzeniu i przy każdej prędkości pobierania. Już teraz znaczna większość materiałów w Internecie przeglądana jest z urządzeń mobilnych i to o nich powinniśmy przede wszystkim myśleć. Właśnie dlatego, tak bardzo skupiam się na optymalizacji każdego fragmentu strony.

Dodatkowo, znajomość biblioteki React, narzędzi do “scrapowania” (pozyskiwania danych ze stron internetowych) czy automatyzacji za pomocą Pythona pozwala mi na wdrażanie bardziej rozbudowanych projektów. Szczególnie w zakresie generowania treści opartych o zewnętrzne źródła.

Jeżeli jesteś zainteresowany współpracą ze mną, proszę zajrzyj na stronę Kontakt i zostaw tam swój adres email.