Krótko o mnie:
Urodzony w 1983 roku, aktualnie mgr inż. Matematyki Stosowanej.
[Java-OCP] [SQL-OCE]
Oprogramowanie, którego używam lub polecam:

Systemy operacyjne:
[Linux] [FreeDOS]

Przeglądarki WWW:
[Firefox. I Sieć jest Twoja.] [Opera 10 - bezpieczna przeglądarka]

Poczta:
[Thunderbird - zapomnij o wirusach i spamie!] PINE

Komunikator:
Jabber (klient: Psi, dostępny z podanej strony), bo cenię sobie otwartość i bezpieczeństwo. [Jabber działa. ZAWSZE!]

Środowisko graficzne:
[KDE - K Desktop Environment]

Kryptografia i zabezpieczenia (poza przeglądarką, pocztą i komunikatorem):
OpenSSL
OpenSSH
GNU Privacy Guard (GnuPG)
Tor - anonimowość w sieci
FreeNet - sieć do anonimowej wymiany danych (plików, rozmów)
TrueCrypt
PortableSigner

Pakiet biurowy:
[LibreOffice]
[Openoffice.org]

Multimedia:
Inne:

Języki, w których programuję: asembler dla procesorów x86, C, Fortran 77 (dawniej), Java, PHP, Perl.
Kompilatory, których używam: NASM, FASM, kompilatory GNU, Java Sun/Oracle.
Moje działania na rzecz wolności oprogramowania (i nie tylko):
  1. Nie używam systemu Windows, bo nie respektuje on międzynarodowych standardów (i ma jeszcze wiele innych wad). Z tych samych przyczyn radzę opuścić przeglądarkę Internet Explorer, która jest zacofana w obsłudze standardów sieciowych.
  2. Nie używam wyszukiwarki Google, gdyż nie podoba mi się to, co ta firma robi w Chinach.
  3. Podpisałem petycję przeciw patentom na oprogramowanie oraz jej drugą wersję.
    [Stop Software Patents]
  4. Podpisałem petycję za powrotem komunikatora Tlen do rodziny Jabbera.
  5. Propaguję szyfrowane sposoby komunikacji (poczta, komunikator, www).
  6. Podpisałem list przeciw DRM
  7. Nie używam obrazków w formacie GIF ani JPG. Zamiast nich używam zalecanego przez W3C formatu PNG.
  8. Używam i promuję otwarte formaty plików: oraz międzynarodowe standardy:
  9. Podpisałem petycję o otwarcie sterowników nVidii
  10. Nie popieram pomysłu wyposażania komputerów w układy scalone Trusted Computing Platform, jako że technologia jest zamknięta, co grozi odbieraniem użytkownikom ich praw (jak choćby zmuszanie do wyboru konkretnego systemu operacyjnego). Zobacz stronę przeciw TCPA oraz film poświęcony temu zagadnieniu.
    [Nie dla TCPA]
  11. Podpisałem petycję o używanie otwartych formatów strumieniowych i kodeków w transmisjach obrad Rady Europy
  12. Podpisałem petycję przeciw OOXML i wysłałem w tej sprawie list do Polskiego Komitetu Normalizacyjnego. Potem podpisałem drugą petycję w tej sprawie.
    Nie dla OOXML!
  13. Podpisałem list otwarty w sprawie neutralności technologicznej serwisu iTVP.pl
  14. Podpisałem Kapsztadzką Deklarację Otwartej Edukacji (link w języku polskim).
  15. Podpisałem petycję o używanie otwartych technologii w Parlamencie Europejskim.
  16. Podpisałem Manifest dla klimatu.
  17. Podpisałem petycję przeciw cenzurze Internetu.
  18. Podpisałem petycję przeciw porozumieniu ACTA.
  19. Podpisałem Petycję o nieograniczanie dozwolonych systemów operacyjnych przy starcie.
  20. Podpisałem Petycję o nieumieszczanie mechanizmów DRM w HTML5.
    Zatrzymaj Hollyweb! Żadnego DRM w HTML5.
    Czytaj więcej o DRM
  21. Podpisałem Petycję o nieograniczaniu prawa do linkowania w Intenecie.


Popierane przeze mnie akcje:
  1. BrowseHappy - popularyzacja nowoczesnych przeglądarek i technologii sieciowych.
    browsehappy.pl
  2. Bykom STOP! - popularyzacja poprawnej ortografii w polskim internecie.
    [Bykom Stop!]
  3. Any Browser - popularyzacja pisania stron internetowych tak, by działały w każdej przeglądarce. Nigdy więcej komunikatów w stylu: Aby poprawnie oglądać tę stronę, musisz mieć Microsoft Internet Explorer!
    [Dla każdej przeglądarki]
  4. Pajacyk
  5. Polskie serce
  6. Darmowy ryż
    [Darmowy ryż]
  7. No CO2 - ograniczanie emisji dwutlenku węgla do atmosfery naszej ocieplającej się planety. Zasadziłem drzewo.
  8. Dzień otwartego dostępu
    [Dzień otwartego dostępu]
  9. Okruszek
  10. Wolność Dokumentów
    [Wolność Dokumentów]
  11. Podaruj Wodę
    [Podaruj Wodę]
  12. Sojusz Alternatywnych Przeglądarek
    [Sojusz Alternatywnych Przeglądarek]
  13. Poomoc.pl - kliknij i pomóż
    Kliknij i Pomóż
  14. Ochrona poczty elektronicznej z GnuPG - krótki kurs


Moje projekty Wolnego Oprogramowania (część można znaleźć na podstronie mojego oprogramowania):
  1. Skrypty Perla i makra, które można znaleźć na stronie programów (lub wersji angielskiej), związane z językiem asembler, łącznie 23 pliki:
  2. wipefreespace - program do czyszczenia pustego miejsca na partycjach ext2, ext3, ext4, NTFS, XFS, ReiserFSv3, ReiserFSv4, FAT12, FAT16, FAT32, MinixFSv1, MinixFSv2, JFS, HFS+ i OCFS.
    Dostępny także na SourceForge: wipefreespace.sourceforge.net
  3. LibSecRm - biblioteka przejmująca funkcje systemowe mogące prowadzić do kasowania danych. LibSecRm zastępuje je własnymi, które najpierw bezpiecznie (tak, by nie można ich było odzyskać) zamazują dane, które zostałyby skasowane.
    Dostępna także na SourceForge: libsecrm.sourceforge.net
  4. KonqSec - zestaw elementów menu kontekstowego Konquerora (w trybie menadżera plików), dający łatwy dostęp do funkcji: bezpiecznego usuwania plików i katalogów, szyfrowania i deszyfrowania za pomocą OpenSSL, montowania i odmontowywania zaszyfrowanych dysków za pomocą TrueCrypt, bezpiecznego zamazywania dysków oraz wolnego miejsca na nich.
  5. JYMAG - odpowiednik programu My Pictures and Sounds służącego do pobierania i wysyłania plików multimedialnych z/do telefonu komórkowego Sagem.
    Dostępny także na SourceForge: jymag.sourceforge.net
  6. LibHideIP - biblioteka przejmująca funkcje systemowe mogące prowadzić do ujawnienia adresu IP. LibHideIP zastępuje je własnymi, które uniemożliwiają poznanie lokalnego adresu IP komputera.
    Dostępna także na SourceForge: libhideip.sourceforge.net
  7. IMYplay - odtwarzacz dzwonków w formacie iMelody (plików IMY) i konwerter IMY na MIDI.
    Dostępny także na SourceForge: imyplay.sourceforge.net
  8. Generatory certyfikatów i kluczy - kilka skryptów (w Bashu, Perlu i PHP, interaktywne i nieinteraktywne) pomagających w wytwarzaniu certyfikatów cyfrowych oraz kluczy szyfrujących, na przykład do ochrony poczty elektronicznej.
  9. LibNetBlock - biblioteka przejmująca funkcje systemowe umozliwiające dostęp do sieci. LibHideIP zastępuje je własnymi, które uniemożliwiają skorzystanie z sieci przez kontrolowany program.
    Dostępna także na SourceForge: libnetblock.sourceforge.net
  10. Weryfikator adresów e-mail - sprawdza, czy podany adres e-mail istnieje (jest przyjmowany przez serwer odbiorcy).
  11. SOAP Service Tester - aplikacja Web pozwalająca przeprowadzać szerokie testy usług sieciowych (SOAP), pozwala na modyfikację surowych danych XML wysyłanych do usługi i podaje surową odpowiedź XML tej usługi.
  12. LastMod - skrypt Perla do wstawiania elementu META z nagłówkiem HTTP Last-Modified do plików HTML. Używany na podstronach strony głównej (łącznie z tą stroną).
  13. Atom2Rss - skrypt Perla do konwersji pliku XML kanału Atom na plik XML kanału RSS 2.0. Używany do generowania kanałów na stronie głównej.
  14. List2Atom - skrypt Perla generujący plik XML kanału Atom z listy plików (najnowsze pliki będą na górze). Używany do generowania kanałów na podstronie mojego oprogramowania i podstronie mojego oprogramowania dla asemblera.
  15. InSyTrack - oprogramowanie umożliwiające śledzenie przebiegu działania programów (przepływu kontroli i danych) między wątkami, bibliotekami, językami programowania, a nawet różnymi systemami na różnych maszynach.


Mój udział w innych projektach Wolnego Oprogramowania (poza ich promowaniem i raportami o błędach):
  1. Tor:
  2. Projekt LSCR - wysłałem im jeden plik z mojej biblioteki oraz link do moich skryptów Perla. Bardzo się ucieszyli.
  3. Kate/KWrite: Definicje kolorowania składni, które można znaleźć na stronie programów.
  4. TrueCrypt - kilka sugestii odnośnie wersji dla Linuksa, jedna chyba przyjęta.
  5. Poprawki w makrach AX_GCC_OPTION i AC_PROTOTYPE w archiwum makr dla Autoconfa
  6. Batik SVG Toolkit: 11 wysłanych poprawek kodu, na razie dwie przyjęte
  7. PortableSigner: osiem przyjętych (w całości lub części) poprawek kodu oraz polska wersja językowa
  8. Linux-NTFS / ntfs3g-ntfsprogs: 3 wysłane poprawki kodu (jedna przyjęta częściowo, jedna niepotrzebna, jedna przyjęta)
  9. HTML Validator dla Firefoksa: zgłoszenie błędu wraz ze sposobem rozwiązania
  10. FileZilla: poprawki w polskim tłumaczeniu, zgłoszenie błędu wraz z (nieprzyjętą) poprawką, poprawka na obsługę polskich znaków w SFTP
  11. Apache Commons Net: 18 wysłanych poprawek kodu, 14 przyjętych (dwie nieprzyjęte, rozwiązane inaczej) (NET-314, NET-320, NET-327, NET-333, NET-350, NET-351, NET-352, NET-353, NET-356, NET-357, NET-397, NET-462, NET-465, NET-468) oraz pomoc w rozwiązywaniu innych problemów
  12. libsafe: jedna poprawka kodu (umożliwiająca działanie restorecon z SELinuksa i Firefoksa z libsafe)
  13. SWIG: jedna wysłana poprawka kodu: 3531520 (dodanie asemblera do listy obsługiwanych języków)
  14. RxTx: instalator graficzny dla Windows (z wykorzystaniem Nullsoft Scriptable Install System) oraz instalator tekstowy dla Linuksa (i innych systemów)
  15. GNU core utilities: zgłoszenie problemu i łata na problem z obsługą buforów w programie shred
Część nieprzyjętych łat można znaleźć na anglojęzycznej stronie z moimi łatami.

Moje publikacje lub publikacje, w których brałem udział:
  1. XVII Konferencja Automatyzacja Dowodzenia
  2. Konferencja NATCon 2009 - Technika i uzbrojenie morskie
  3. Zagadnienie Transportowe a Problem układania planu zajęć (praca niezależna)
  4. Książka Bezpieczeństwo Aplikacji Windows w Szkole Hakerów


Ulubione sentencje o Wolnym Oprogramowaniu:
  1. In a world without fences and walls, who needs Gates and Windows?
  2. Linux is like a wigwam: no Gates, no Windows and Apache inside.
  3. Jeśli DOS to mono, a Windows - stereo, to Linux jest jak Dolby Sorround i cała muzyka jest za darmo.
  4. Wszyscy mamy przycisk RESET, ale niektórzy nie wiedzą po co. Linux.
  5. Perl: jedyny język, który wygląda tak samo przed i po szyfrowaniu RSA.

Dlaczego napisałem ten kurs?

Gdy ja się uczyłem asemblera, brakowało mi dobrych źródeł po polsku. Zaczynałem od różnych szczątkowych tutoriali po angielsku, kolejnym dużym krokiem była książka Art of Assembler autorstwa Randalla Hyde'a. Sporo się z niej nauczyłem, ale książka była dość długa i czasem ciężka w odbiorze. Miała rozdziały, które mnie, jako początkującego, nie interesowały, na przykład opis dyrektyw MASMa czy pisanie zaawansowanych procedur. A te polskie kursy, które znalazłem, były dość krótkie i nie rozwiewały wszystkich moich wątpliwości.
Ja chcę, aby czytając mój kurs, można było jak najszybciej zacząć pisać programy. Sucha teoria potrafi być zniechęcająca, więc zawsze staram się ją podpierać przykładami, aby wszyscy widzieli, jak daną rzecz można zrobić. W każdej części staram się wszystko tłumaczyć jak najdokładniej i jak najprostszym językiem, żeby trafić do jak największej liczby osób.
Jak ten kurs powstał?

Jakiś czas po tym, jak stwierdziłem, że chwilowo kończę naukę asemblera, powstała grupa dyskusyjna alt.pl.asm, którą od początku subskrybowałem.
Jednego dnia na grupie pojawił się pomysł na to, by stworzyć stronę WWW całej grupy. Strona już nie istnieje, ale ważne jest to, że zacząłem pisać dokument typu Najczęściej zadawane pytania (FAQ), który jednego dnia miał znaleźć się na stronie. Ostatecznie na jakiś czas wylądował gdzieś indziej, ale pisałem w nim odpowiedzi na pytania w stylu Co to jest asembler, Co to jest rejestr procesora itp.
Jednego dnia pomyślałem, że to moje FAQ wygląda prawie jak kurs asemblera. I tak się zaczęło - wtedy przestałem pisać FAQ, a zaczem pisać pełnowymiarowy kurs języka asembler.
Zacząłem oczywiście od DOSa. Nawet nie pamiętam, czy miałem wtedy Linuksa.
Czemu osobno kurs i jakieś mini-kursy?

Kurs ma służyć nauce języka, zaś mini-kursy mówią raczej jak wykonać jakieś zadanie w asemblerze. Można to porównać do oddzielenia nauki składni języka od nauki algorytmów. Oczywiście, są wyjątki (części: 9, 10, 11, 12), ale zawierają one tak istotne informacje, że zdecydowałem się umieścić je w głównym kursie.
Czemu napisałem swoją bibliotekę?

Na początku brakowało mi procedur wyświetlających liczby. Napisałem więc ze 2-3 sztuki i umieściłem w osobnym pliku źródłowym, który potem wklejałem do swoich programów. Jednego dnia po prostu wpadłem na pomysł, aby zrobić z tego osobny, skompilowany plik, a przy okazji nauczyć się pisania bibliotek (też na cele kursu). Po nauce napisałem o tym mini-kurs. Z czasem biblioteka rosła, by obsługiwać coraz więcej rodzajów liczb, potem doszły jeszcze napisy, liczby ułamkowe i cała reszta.
Poza tym, już w czasie pisania swoich pierwszych programów zauważyłem, że wyświetlanie liczb wcale nie było takie proste dla początkującego. Umieściłem więc swoją bibliotekę na swojej stronie, aby inni początkujący nie musieli być od razu rzucani na głęboką wodę. Biblioteka daje im szansę na pisanie programów bez zanurzania się w szczegóły wejścia i wyjścia programu.
Czemu tak bardzo dbam o standardy?

Bez standardów świat stałby w miejscu. Tylko dzięki standardom mamy Internet - TCP, HTTP, SMTP to standardy. Swój standard ma też język HTML, ale niewielu ludzi o tym wie, a jeszcze mniej go przestrzega. To smutne. Języki programowania mają swoją składnię i kompilatory odrzucają te napisane nieprawidłowo. Gdyby przeglądarki nagle zaczęły robić to samo, z dnia na dzień z Internetu zniknęłoby ponad 95% wszystkich stron, na czele z Google i innymi wielkimi portalami. To jest jedna z dwóch głównych przyczyn, dlaczego twórcy stron nie używają XHTML - po prostu nie toleruje on błędów (druga przyczyna to słaba obsługa XHTML w przeglądarkach, choć to na szczęście się zmienia).
Pisząc według standardów chcę dać innym przykład, że można tworzyć czytelne strony bez sprzeczności z językiem HTML i CSS. Jeśli moja strona wyświetli się u kogoś nieprawidłowo lub niezgodnie z oczekiwaniami, mogę śmiało odpowiedzieć, aby ta osoba zmieniła przeglądarkę na lepszą, bo moja strona jest prawidłowa. Miłe uczucie wiedzieć, że coś jest zrobione dobrze.
Natrafiłem ostatnio na stronie kampanii stron dla każdej przeglądarki na cytat, który powinien być mottem dla twórców nowych stron oraz spędzać sen z oczu tym, którzy piszą według własnych zasad, czyli byleby strona działała:
All browsers support the internet, and this internet site supports all browsers - Jacob Ozolins.
(czyli: Wszystkie przeglądarki obsługują internet, a ta strona internetowa obsługuje wszystkie przeglądarki).
Twierdzenie, że nie można zrobić strony jednocześnie zgodnej ze standardami i ładnej, to mit. Wystarczy spojrzeć na CSS Zen Garden. Strona ta jest prawidłowo napisana oraz ma jeden wspólny kod i jedną wspólną treść dla każdego wystroju, który można wybrać po prawej stronie okna.

Multimedia to jednak co innego niż HTML. Popieram wolne formaty, bo dają gwarancję, że nigdy żadna pojedyncza firma nie zmonopolizuje rynku - dla takiego formatu jak OGG Vorbis czy Theora każdy może napisać własny odtwarzacz.
Czemu tworzę Wolne Oprogramowanie?

Bo wierzę w nie. Wierzę, że będzie się stawać coraz lepsze. Nie musi przejmować coraz większej części rynku - wystarczy, że będzie się polepszać. Chcę się czuć częścią tego procesu. Wielu ludzi poświęciło tysiące godzin pracy za darmo, by stworzyć oprogramowanie, którego na co dzień używam. Myślę, że mogę się w ten sposób odwdzięczyć społeczeństwu i powiększyć bogactwo Wolnego Oprogramowania. Chcę, by każdy użytkownik i każda użytkowniczka mieli wybór i wiedzieli, że mogą wybrać Wolne Oprogramowanie zamiast zamkniętego, a nie że ich wybór ogranicza się tylko do dwóch możliwości: albo płacisz, albo idziesz do więzienia.
Z tworzenia Wolnego Oprogramowania są same zyski: zwiększa się liczba wolnych programów, obecne wolne programy rozwijają się, daję innym przykład, że tak można. Bardzo ważnym zyskiem jest też to, że sam się czegoś uczę. Język nieużywany to język zapomniany. Tworząc WO programuję na bieżąco i uczę się wielu nowych, przydatnych rzeczy.
Oczywiście, rozwój WO zmniejsza przychody dużych firm i nie są one z tego powodu zadowolone. Dlatego chcą dyskredytować Wolne Oprogramowanie w oczach społeczeństwa - twierdząc, że jest mniej wydajne (serwery, bazy danych), czy wmawiając, że narusza ich patenty jednocześnie nie umiejąc pokazać, które. Na szczęście każdy z nas może wierzyć, komu chce.
Nie zmuszam nikogo do przesiadki, mówię tylko, że warto. Wszystko na początku jest trudne, tyle że nikt już nie pamięta swoich pierwszych bojów z DOSem, Windowsem 3 / 9x / XP. Do innych systemów też można się przyzwyczaić.
Czy nie lubię JavaScriptu, Flasha i Javy, że nie używam ich na stronie?

Javę lubię. JavaScript niezbyt znam i nie lubię. Flasha raczej nie lubię. Ale nie o to chodzi, czy lubię te technologie, czy nie.
Głoszę teorię, że każdy język ma swoje zastosowania i swoje miejsce. Javę lubię ze względu na szybkie i łatwe tworzenie GUI, asemblera - za szybkość działania programów, Perla - za możliwości obróbki tekstu. Zadanie powinno wyznaczać język. Nie można pchać się z każdym językiem gdzie się da tylko dlatego, że się go zna. Co z tego, że na stronie WWW jest super menu w JS, skoro ja i wiele innych osób nie możemy go zobaczyć (brak lub wyłączony JS w przeglądarce). Taka strona staje się bezużyteczna, zwłaszcza dla osób niepełnosprawnych. Podobnie ze stronami napisanymi w całości w Flashu - autorowi się zdaje, że Flash jest w każdej przeglądarce i każdy go używa. Tym samym, odbiorca treści zmuszony jest do pobrania zamkniętego (a więc potencjalnie niebezpiecznego) oprogramowania, którego czasem w ogóle nie ma ochoty używać. Podobnie Java. Jeśli można coś zrobić w JS lub Javie to proszę bardzo, ale proszę dać alternatywną wersję tym, którzy nie mogą lub nie chcą korzystać z tych technologii. Języki te mają swoje zastosowania, na przykład Java do skomplikowanych apletów z danymi, których nie da się inaczej przedstawić. Nie mam nic przeciw aplikacjom sieciowym napisanym w AJAX, wręcz przeciwnie - dobrze, że są. Jestem przeciw upychaniu na siłę czegoś, co można zrobić inaczej.


Spis treści off-line (Alt+1)
Spis treści on-line (Alt+2)
Ułatwienia dla niepełnosprawnych (Alt+0)