Krótko o mnie:
Urodzony w 1983 roku, aktualnie mgr inż. Matematyki Stosowanej zatrudniony jako programista.
Oprogramowanie, którego używam lub polecam:
Systemy operacyjne:
![[FreeDOS]](rys/freedoslogo.png)
Przeglądarki WWW:
,
Poczta:
,
PINE
Komunikator:
Jabber (klient: Psi, dostępny z podanej strony),
bo cenię sobie otwartość i bezpieczeństwo.
Środowisko graficzne:
Kryptografia i zabezpieczenia (poza przeglądarką, pocztą i komunikatorem):
OpenSSL
OpenSSH
GNU Privacy Guard
- anonimowość w sieci
FreeNet
- sieć do anonimowej wymiany danych (plików, rozmów)
TrueCrypt
PortableSigner
Pakiet biurowy:
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):
- 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.
- Nie używam wyszukiwarki Google,
gdyż nie podoba mi się to, co ta firma robi w Chinach.
- Podpisałem petycję przeciw patentom na oprogramowanie oraz jej drugą wersję.
- Podpisałem petycję za powrotem komunikatora Tlen do rodziny Jabbera.
- Propaguję szyfrowane sposoby komunikacji (poczta, komunikator, www).
- Podpisałem list przeciw DRM
- Nie używam obrazków w formacie
GIF ani JPG. Zamiast nich używam zalecanego przez W3C
formatu PNG.
- Używam i promuję otwarte formaty plików:
- ISO-26300
ODF zamiast DOC
- OGG Vorbis zamiast MP3. Nie dość, że
OGG Vorbis jest otwarty, to jeszcze ma lepszy stosunek jakości do rozmiaru.
Zobacz stronę Xiph, by poczytać o innych otwartych formatach.
- Tar+Gzip/Bzip2 oraz 7zip,
czy nawet zwykły ZIP zamiast RAR
- Theora - otwarta kompresja filmów.
Zobacz też stronę Xiph, by poczytać o innych otwartych formatach.
- Musepack (MPC)
oraz międzynarodowe standardy:
- ISO-8859-2 dla kodowania polskich znaków diakrytycznych
- ISO-8601 do zapisu dat kalendarzowych (RRRR-MM-DD)
- zaaprobowany przez IETF (czytaj RFC) protokół
XMPP/Jabber
do komunikacji
- tworzę w prawidłowych
HTML,
CSS,
XML.
- Podpisałem petycję o otwarcie sterowników nVidii
- 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.
- Podpisałem petycję o używanie otwartych formatów strumieniowych i kodeków w
transmisjach obrad Rady Europy
- 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.
- Podpisałem list otwarty w sprawie
neutralności technologicznej serwisu iTVP.pl
- Podpisałem Kapsztadzką Deklarację Otwartej Edukacji (link w języku polskim).
- Podpisałem petycję o używanie otwartych technologii w Parlamencie Europejskim.
- Podpisałem Manifest dla klimatu.
- Podpisałem petycję przeciw cenzurze Internetu.
Popierane przeze mnie akcje:
- BrowseHappy - popularyzacja
nowoczesnych przeglądarek i technologii sieciowych.

- Bykom STOP! - popularyzacja poprawnej
ortografii w polskim internecie.
![[Bykom Stop!]](rys/bykomstop2.png)
- 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
!
- Pajacyk
- Polskie serce
- Darmowy ryż
![[Darmowy ryż]](rys/FreeRice.png)
- No CO2 - ograniczanie
emisji dwutlenku węgla do atmosfery naszej ocieplającej się planety.
Zasadziłem drzewo.
- Dzień otwartego dostępu
![[Dzień otwartego dostępu]](rys/openaccessday.png)
- Okruszek
Moje projekty Wolnego Oprogramowania:
- 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:
- AsmDoc - generator dokumentacji HTML z plików asemblera
- Konwertery plików nagłówkowych języka C na pliki asemblera
- Konwertery programów między składniami kompilatorów FASM, NASM i GNU as
- Makra dla FASMa
- Generator plików Makefile dla FASMa
- Skrypt wspomagający pisanie modułów jądra Linuksa 2.6 w asemblerze
- Zestaw makr dla
Autoconfa, sprawdzające obecność kompilatorów asemblera i ich opcje.
- Asm4Doxy - Skrypt przerabiający pliki źródłowe asemblera z odpowiednimi komentarzami
na składnię pseudo-C, by program Doxygen mógł wygenerować dla nich dokumentację.
- wipefreespace - program do
czyszczenia pustego miejsca na partycjach ext2, ext3, ext4, NTFS,
XFS, ReiserFSv3, ReiserFSv4, FAT12, FAT16, FAT32, MinixFSv1 i MinixFSv2.
Dostępny także na SourceForge: wipefreespace.sourceforge.net
- LibSecRm - biblioteka przejmująca funkcje
systemowe mogące prowadzić do kasowania danych i zastępująca 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
- 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.
- 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
- LibHideIP - biblioteka przejmująca funkcje
systemowe mogące prowadzić do ujawnienia adresu IP i zastępująca je własnymi, które
uniemożliwiają poznanie lokalnego adresu IP komputera.
- IMYplay - odtwarzacz dzwonków w formacie
iMelody (plików IMY) i konwerter IMY na MIDI.
- 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.
Mój udział w innych projektach Wolnego Oprogramowania (poza ich promowaniem i raportami o błędach):
- Tor:
- tłumaczenie większości stron WWW
- jeden program
- poprawki na ich stronach WWW
- znalezienie serwera WWW dla Windows (Savant)
- wiele wpisów (Thunderbird; SVN; Gadu-Gadu; KDE; Yum; FTP, później
też we współpracy z autorem 3proxy)
na stronie Torify HOWTO opisującej, jak konfigurować różne programy tak,
by korzystały z Tora.
- Projekt LSCR - wysłałem im
jeden plik z mojej biblioteki oraz link do moich skryptów Perla. Bardzo się ucieszyli.
- Kate/KWrite: Definicje kolorowania składni,
które można znaleźć na stronie programów.
- TrueCrypt - kilka sugestii odnośnie
wersji dla Linuksa, jedna chyba przyjęta.
- Poprawki w makrach AX_GCC_OPTION i AC_PROTOTYPE
dla Autoconfa
- Batik
SVG
Toolkit:
11 wysłanych poprawek kodu, na razie dwie przyjęte
- PortableSigner:
trzy przyjęte (w całości lub części) poprawki kodu oraz polska wersja językowa
- Linux-NTFS: 3 wysłane poprawki kodu
- HTML Validator dla Firefoksa:
zgłoszenie błędu wraz ze sposobem rozwiązania
- FileZilla:
poprawki w polskim tłumaczeniu oraz zgłoszenie błędu wraz z (nieprzyjętą) poprawką
Ulubione sentencje o Wolnym Oprogramowaniu:
In a world without fences and walls, who needs Gates and Windows?
Linux is like a wigwame: no Gates, no Windows and Apache inside.
Jeśli DOS to mono, a Windows - stereo, to Linux jest jak Dolby Sorround i cała muzyka
jest za darmo.
Wszyscy mamy przycisk RESET, ale niektórzy nie wiedzą po co. Linux.
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, np. 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 chciałem, aby czytając mój kurs, można było jak najszybciej zacząć pisać programy. Sucha teoria
potrafi być dość zniechęcająca, więc zawsze staram się ją podpierać przykładami, aby wszyscy
widzieli, jak daną rzecz 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 istnieje po dziś dzień (orangekiller.piwko.pl), ale nie jest już rozwijana. 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 Linuksa, gdy zaczynałem pisać kurs.
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 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 - czy to twierdząc, że
jest mniej wydajne (serwery, bazy danych), czy to wmawiając, że narusza ich patenty jednocześnie
nie umiejąc pokazać, jakie. 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.