Pierwszy kontakt z komputerem przydarzył mi się około roku 1986 i polegał na obserwowaniu interpretera języka Basic i napisanej w nim gry zatytułowanej roboczo „Zbijanie muru”. Po kilku latach przepisywałem z „Bajtka” listingi programów w Basicu i języku C (kompilator firmy HiSoft) dla ZX Spectrum. Nie były to własne maszyny – należały do wujka, Jerzego Szczepańskiego, który pozwalał mi przychodzić i bawić się w ich obsługę.
8 bitów
Pierwszym własnym ośmiobitowcem był Unipolbrit 2086 (ze sprzętowym
emulatorem Spectruma), którego uszkodzonego odkupiłem od kumpla ze szkoły.
Pisałem w nim proste programy w języku Basic, zatwierdzając linie z użyciem
mikroprzełącznika wlutowanego w miejsce, gdzie powinien był znajdować się
klawisz [ENTER]
.
Jakiś czas potem przez kilka tygodni gościłem w domu pożyczonego ośmiobitowca Commodore 16, aby następnie znaleźć pod świąteczną choinką komputer Commodore 64. Na tym ostatnim programowałem trochę w Assemblerze, bawiąc się rejestrami rastrowymi i grafiką tzw. duszków (ang. sprites), chociaż głównie służył do gier, oglądania dem i rysowania w programie Koala Paint. Dużą frajdę sprawiało mi tłumaczenie gier na język polski z użyciem mechanizmów cartridge’a Action Replay. Po dotknięciu magicznego przycisku freeze można było w nim dokonywać inspekcji i modyfikacji przestrzeni pamięciowych wczytanego programu, a następnie zapisać zmienioną zawartość RAM-u do pliku umieszczonego na dyskietce lub kasecie magnetofonowej.
PC
W roku 1993 w moim życiu pojawił się pierwszy komputer klasy PC AT
z procesorem 80206 i 1MB pamięci RAM na pokładzie. Był wyposażony
w monochromatyczny monitor i kartę graficzną marki Hercules, a kompresowane
oprogramowaniem Stacker dane przechowywane były na dwóch twardych dyskach
o sumarycznej pojemności 60MB. Kontakt z informacjami pochodzącymi z zewnątrz
zapewniała stacja dyskietek o wymiarach 5,25 cala, które z użyciem programu
rezydentnego 800.com
mogły pomieścić nawet 1,4MB danych.
Pod kontrolą systemu DOS zacząłem pisać proste programy w Turbo C, Turbo Pascalu, a następnie w środowisku Borland C++ (i Turbo Vision). Pierwszy użyteczny program, który stworzyłem na tym komputerze, był napisany w języku C i służył do liczenia statystyk występowania liczb w losowaniach Totolotka. Kod był bardzo imperatywny, składał się z brzydkich, pozagnieżdżanych pętli i dużych funkcji używanych w roli procedur. Jako nastolatek nie miałem wcale pojęcia o dobrych praktykach programowania, a język C znałem przede wszystkim z książek Bieleckiego. Celowo gmatwałem kod, żeby wyglądał profesjonalnie.
Programując na pierwszym pececie robiłem czasem wstawki w Assemblerze, żeby jakoś wywoływać przerwania DOS-a i BIOS-u, co pozwalało na obsługę myszki, dorysowywanie ogonków do liter w trybie graficznym bądź kontrolowanie stanu wyjść portu równoległego.
Komputer miałem zamiar upgrade’ować do poziomu, który pozwoliłby wyposażyć go w procesor Intel 80486, ale zanim skompletowałem wszystko, mogłem już kupić peceta z AMD K5.
GNU/Linux
Rok 1997 to pierwszy kontakt z systemem GNU/Linux, a wcześniej z Mini
Linuksem, przyniesionym na dyskietkach przez mojego nauczyciela ze szkoły
średniej – Adama Turczyna (tatarek
).
Rok później byłem już zaangażowany w Projekt Tłumaczenia Manuali (podręczników ekranowych), a wkrótce dołączyłem do zespołu PLD Linux (polskiej dystrybucji systemu GNU/Linux) i zacząłem pomagać w robieniu pakietów RPM, a także programować sieciowo w języku C.
Przy okazji zbliżenia się do kultury Free Software złapałem kontakt
z administratorami i programistami systemowymi, od których sporo się
nauczyłem. W zrozumieniu środowiska wolnego oprogramowania, Uniksów i sieci IP
pomogli mi przede wszystkim Richard M. Stallman (rms
), Tomek Kłoczko
(kloczek
), Artur Frysiak (wiget
), Michał Zalewski (lcamtuf
),
Sam Varshavchik (mrsam
), Przemek Borys (pborys
), Sergiusz
Pawłowicz (ser
), Wojtek Ślusarczyk i wielu innych kolegów, których poznałem
korzystając m.in. z systemów dione.ids.pl
, ep09.kernel.pl
, rudy.mif.pg.gda.pl
,
fencepost.gnu.org
czy serek.arch.pwr.wroc.pl
.
Profesja
W roku 2000 stałem się orędownikiem projektu GNU,
podjąłem też pierwszą pracę, jako specjalista ds bezpieczeństwa sieci w portalu
Poland.com. Czułem, że chcę robić coś praktycznego, czego można użyć. Poznałem
tam m.in. Michała Rolskiego (haron
) i Jacka Surażskiego (sigma
), którzy
pracowali nad wyszukiwarką Netoskop. W ramach jednopokojowej, koleżeńskiej
współpracy zrobiłem system podpowiedzi kontekstowych dla Netoskopa, którego wulgarną
nazwę projektową znają tylko wtajemniczeni.
Z upadającego portalu trafiłem do serwisu Bankier.pl, gdzie po doprowadzeniu do użyteczności serwera poczty elektronicznej i wprowadzeniu współdzielenia zasobów między maszynami pracowałem przez około 2 lata jako administrator.
Następnie przez prawie rok w firmie Supermedia pełniłem funkcję specjalisty ds. bezpieczeństwa sieci, a potem pracowałem w Credit Agricole jako administrator i lider zespołu IT Integracja RB. W banku poznałem systemy Solaris i HP-UX, dowiedziałem się też nieco na temat sposobów pracy nad projektami w większych grupach (ITIL, testy, podziały środowiskowe, zarządzanie zmianami).
Po kilku latach dostałem propozycję współtworzenia polskiego wydania serwisu internetowego heise online. Wspólnie z kilkoma byłymi redaktorami magazynu komputerowego „CHIP” i korektorką, która również miała okazję współpracować z wydawcą tego czasopisma, budowaliśmy odpowiednik niemieckiego serwisu tematycznego poświęconego komputerom i sieciom. Przypadła mi rola redaktora kanału Security.
Dzięki Ani Wawryszuk i kolegom z redakcji (Adamowi Chabińskiemu, Krzyśkowi Sokołowskiemu i Adamowi Rudzińskiemu) podszkoliłem się trochę w pisaniu w języku naturalnym – przynajmniej na tyle, żeby nie popełniać tylu błędów (nad stylem wciąż pracuję).
Po zakończeniu przygody z heise online postanowiłem nie podejmować stałej pracy
najemnej, zaangażowałem się za to w tworzenie poświęconego bezpieczeństwu serwisu
BAD[SECTOR].PL i inne projekty, związane
m.in. z programowaniem, testami bezpieczeństwa czy informatyką śledczą. Wsparciem
i dobrą radą służyli mi m.in. Maurycy Prodeus (z33d
), Janusz Niewiadomski
(ph_nk
), Piotr Szeptyński (cepter
), Borys Łącki (kanedaa
),
Marek Piotr Stolarski (xargs
) i Marcin Miśta (snoop
).
Po kilku latach, podczas których uczyłem się programować w Clojure, podjąłem kolejną stałą pracę, w sekcji Forensic firmy doradczej Deloitte. Moją rolą była opieka nad warszawskim laboratorium informatyki śledczej i zamiana danych w informacje, których mogą użyć prawnicy. Wspaniały klimat w zespole prowadzonym przez Rafała Turczyna sprawił, że ciężko było mi pożegnać się z firmą.
Obecnie zajmuję się eDiscovery w zespole eDTS szwajcarskiego banku inwestycyjnego UBS, gdzie staram się łączyć umiejętność programowania ze znajomością informatyki śledczej.