Programowanie
Tworzę głównie wolne oprogramowanie lub skrypty pomagające mi w powtarzalnych czynnościach administracyjnych. Lubię zajmować się przetwarzaniem języka naturalnego, kryptograficznym zabezpieczaniem zbiorów informacji i komunikacją sieciową. Pociąga mnie konstruowanie zwinnych komponentów (np. webowych API), które sprawnie realizują powierzone im zadania.
Ostatnimi czasy prawdziwą frajdę sprawia mi operowanie na teoretycznie nieskończonych strumieniach informacji i kaskadowe ich przetwarzanie z użyciem leniwych iteratorów i funkcji wyższego rzędu. Dużą zasługę ma tu społeczność programistów języka Clojure i innych dialektów języka Lisp, która hołduje dobrym praktykom przetwarzania dużych zbiorów danych.
Staram się wzorować na architektonicznych założeniach Uniksów, tzn. stosować generyczne interfejsy dostępu do danych i budować małe, wyspecjalizowane narzędzia, które architekt systemu czy aplikacji może łączyć ze sobą na różne sposoby.
Lubię czytelny i udokumentowany kod pozbawiony zbędnej magii.
Ruby
Programuję w języku Ruby, znam też środowisko Ruby on Rails, chociaż preferuję lżejsze frameworki (np. Padrino). Kilka z napisanych przeze mnie bibliotek dla Ruby’ego dostępnych jest publicznie:
Clojure
Programuję w Clojure i ciągle uczę się lepiej korzystać z tego języka. Aby pomóc zaciekawionym, tworzę na łamach tego serwisu podręcznik poświęcony temu dialektowi Lispa.
W wolnych chwilach pracuję nad wolnodostępnymi bibliotekami dla programistów. Jedna z
nich, gotowa do zastosowań produkcyjnych, nosi nazwę futils, a jej dokumentacja
jest opublikowana w podkatalogu software/futils
.
PHP
Dawno, dawno temu wytworzyłem kilka projektów w PHP, m.in.:
moduł PPP zabezpieczający kryptograficznie bazę danych MediaWiki;
moduły do systemu zarządzania zawartością Drupal:
Pozostałe
Znam również:
Perla – poza skryptami stworzyłem w nim aplikację webową, działającą pod kontrolą modułu
mod_perl
czy skrypty do uzupełniania słowników projektu PTM;języki skryptowe uniksowych powłok: Bash, Dash i PDKSH;
języki C i C++ (zastosowania sieciowe i programowanie systemowe);
Pythona i PowerShella, które przydają się w życiu zawodowym.
Miałem również przelotne kontakty z Javą (głównie poprawianie czegoś podczas wdrażania, aby nie budzić programisty) i z programowaniem dla systemu Android, jednak nie wyniknął z tego żaden dłuższy związek. Obecnie czytuję dokumentację klas Javy, żeby lepiej rozumieć Clojure.
Devops
Konfiguruję i zdalnie administruję systemami typu Unix (GNU/Linux, Solaris, HP-UX), również z użyciem narzędzi wirtualizacyjnych (Linux-VServer, KVM, OpenVZ). Potrafię zabezpieczać systemy na poziomie sieciowym, a także na poziomie usług i konkretnych aplikacji (tzw. utwardzanie, ang. hardening).
Lubię projektować architektury operacyjne i tworzyć zautomatyzowane narzędzia do zarządzania użytkownikami oraz uprawnieniami (np. w oparciu o LDAP czy dystrybucję plików haseł), a także skrypty do wprowadzania zmian w konfiguracji (z użyciem oprogramowanie Chef i Babushka).
Redagowanie tekstów
Potrafię poprawnie pisać w języku polskim. Wykonuję zlecenia polegające na tworzeniu i redagowaniu tekstów (raporty, artykuły, komunikaty prasowe, prezentacje, dokumentacje techniczne) dotyczących nowych technologii, bezpieczeństwa teleinformatycznego i programowania.
Współpracowałem z magazynami komputerowymi „CHIP” i „CHIP Special”, pisywałem też artykuły do serwisów „Interaktywnie.com” i „SerwisPrawa.pl”, a okazjonalnie do czasopism „Puls Biznesu”, „Tygodnik Powszechny” i „Wprost”. Publikacje dotyczyły głównie programowania i bezpieczeństwa teleinformatycznego.
Wystąpienia publiczne
Umiem komunikować się z publicznością, omawiać problemy i występować z prezentacjami na forum. Poza doświadczeniem w przestrzeni nowych technologii mam za sobą uczestnictwo w warsztatach filmowych (Akademia Sztuk Medialnych w Kolonii), teatralnych (Kronokosmos i Europazentrum Meißen), aktorskich i związanych z tworzeniem fotografii oraz plakatów (Begegnungszentrum im Dreieck e.V., obecnie Hillersche Villa).
Dzięki pracy z ciałem i występom w teatrach czy na ulicach ośmieliłem się trochę do publicznych wystąpień i poznałem sposoby na utrzymywanie dobrego kontaktu ze słuchaczami. Umiejętności miałem okazję ugruntować występując na konferencjach FreeCon, SecureCon, OpenCon i SEConference, jak również na zamkniętych wystąpieniach.
Nie korzystam z tzw. nowoczesnych technik wpływu, perswazji czy sztuczek NLP i nie wymachuję rękami czy nogami w nieskoordynowany z resztą ciała sposób! Myślę, że w przypadku publicznych wystąpień jest to dodatkowym atutem. :)
Kursy i szkolenia
Prowadziłem szkolenia poświęcone administrowaniu systemami i zabezpieczaniu systemów typu Unix, szkolenia dotyczące dobrych praktyk związanych z bezpieczeństwem teleinformatycznym, a także wykłady dotyczące wolnego oprogramowania.
Konsultacje i projekty
Mam doświadczenie w projektowaniu architektur operacyjnych dla złożonych systemów średniej i dużej skali, włączając w to planowanie struktury sieciowej i sposobów dystrybucji oraz serwowania zasobów.