[go: up one dir, main page]

Béton brut

Xteink X4
⌜ Technologia ⌟

Jestem fatalnym recenzentem. Po pierwsze, w mojej arogancji, wydaje mi się, że moja idiosynkratyczna osobowość nie nadaje się do roli sprzedawcy, a moje powody dla lubienia lub nie lubienia czegoś są nieprzetłumaczalne i niepomocne. Po drugie, wstydzę się popełnienia grzechu gadżeciarstwa, kupowania czegoś, co jest mi zbyteczne. Jest to w moich oczach grzech ciężki, grzech, który nie raz piętnuję w tekstach. Ale skoro się grzech popełniło, to trzeba się wyspowiadać, a że czasy inne, nie prywatnie, a publicznie.

Kilka tygodni temu wszechmogący algorytm, pewnie na okoliczność nowego roku, podetknął mi pod nos wideo z podsumowaniem wydarzeń w świecie czytników, czy dokładniej, urządzeń z e-inkiem. Obejrzałem go z ciekawością, kilka interesujących rzeczy, ale nic, czego mi w życiu potrzeba. Oglądając, w głowie prowadziłem sobie prywatną narrację w trybie cynika, „ja mam już urządzenie do notowania, które daje odczucie pisania jak na papierze, papier”. Jakoś pod koniec pokazano urządzenia, które można by zakwalifikować jako kieszonkowe czytniki książek. Były w kształcie telefonów, długie i wąskie, a gdy pokazano na nich tekst, stukałem się w głowę. Cóż za okropny format, w linii kilka wyrazów, a tekst długi jak wydruk z drukarki fiskalnej. Prawdziwa bzdura dla gadżeciarza, który zamiast odłożyć telefon na szafkę i popatrzeć w sufit kupuje kolejne urządzenie, które pomoże mu w „cyfrowym detoksie”.

Na końcu, pewnie w ramach ciekawostki, pokazano jakieś chińskie ustrojstwo. Format wyświetlacza poprawny, ale całość nie mogła być większa niż kartka w A7. Do czego to komu, musiałbym mieć okulary jak lunety. Potem zademonstrowano jaka jest idea, idea kompletnie zmyślona przez jakiegoś marketera, któremu położono na biurko taką zabaweczkę w nadziei, że przy dobrze dorobionej historyjce da się ją sprzedać hipsterom. Do tyłu czytnika można przytroczyć mały magnes i tą metodą przyczepić do tyłu iPhone. Wtedy uzyskujemy 2-w-1, z jednej strony koszmarne urządzenie do niszczenia umysłów, a z drugiej urządzenie, które możemy pokazać w pracy demonstrując, że się temu procesowi opieramy. Bzdury znaczy.

Xteink: samo w sobie, pod kątem
A tak wygląda kupione przez jakiegoś idiotę.

Kilka dni później dowiedziałem się, że jakaś sprytna osoba zbudowała do niego własny, otwarty, a co najważniejsze — dramatycznie lepszy — firmware. Poszedłem przeglądać kod źródłowy i okazało się, że całe to urządzenie to nic więcej jak mikrokontroler spięty z wyświetlaczem, zamknięty w całkiem gustownym opakowaniu. Sam kod jest zadziwiająco czytelny, napisany w C++ i kompiluje się normalnym kompilatorem, nie jakimś wydumanym. Byłem trochę zaciekawiony. Od lat próbuję jakoś wejść w robienie czegoś z mikrokontrolerami, ale odbijam się od tego jak piłka od ściany. Może to będzie ciekawy kąt ataku? Potem dowiedziałem się, że otwarty firmware ma integracje z Calibre. Utrzymuję na domowym serwerze instancję Calibre-web i bardzo mi się spodobała idea, że mógłbym spiąć jedno z drugim. Poszedłem więc szukać samego urządzenia i ostatecznie nabyłem je za około dwieście nowych polskich złotych.

Xteink X4, tak brzmi nazwa katalogowa, wydaje się być bardzo dobrze zrobione, a przynajmniej takie sprawia wrażenie w ręce. Ma swoją masę, klawisze są wygodne i przyjemne się je wciska, ekran jest dokładnie obsadzony. Nie spodziewałem się niczego, więc byłem zaskoczony wyciągając je z pudełka. Oryginalny chiński firmware wyglądał okropnie, na szczęście autorzy otwartego przygotowali prostą metodę podmianki jednego na drugi, stronę, na której można zainstalować Crosspoint przy użyciu przeglądarki. Za jednym zamachem dowiedziałem się dwóch rzeczy: że jest coś takiego jak WebSerial API, które pozwala JS komunikować się z urządzeniami serialo-podobnymi oraz tego, że Firefoks go nie wspiera1. Mogłem oczywiście wgrać oprogramowanie manualnie, ale chciałem zobaczyć jak to działa. Wzułem więc buty i mimo choroby podążyłem do muzeum, bo wiem, że Piotrek używa Chrome.

Działa doskonale i po może dziesięciu minutach Xteink został uwolniony z okowów wcześniejszego oprogramowania. Spakowałem się i wróciłem do domu.

Pierwsza misja: wrzucić jakieś książki. Urządzenie można podłączyć do WiFi (tylko 2.4 GHz) i używając nadanego mu adresu IP dostać się do prościutkiego systemu zarządzania plikami. Pobrałem kilka książek w jedynym wspieranym formacie, tj. epub i podłączyłem się do domowej sieci. Wpisywanie hasła było prawdziwą mordęgą, wirtualna klawiatura jest wprawdzie w układzie QWERTY, ale nawigacja przy pomocy guzików jest irytująca. Na boku klawisze nawigacji ruszają kursor w górę i dół, klawisze na froncie za to w lewo i prawo. Idealne do poruszania się po menu i czytania, fatalne do wprowadzania skomplikowanego hasła. Na szczęście jest to operacja jednorazowa, po czterech próbach udało się. Ekran wyświetlił informację, że urządzenie jest dostępne pod takim-to-a-takim adresem IP oraz kod QR dla ludzi, których mózg nie pomieści czterech ośmiobitowych wartości. Stworzyłem katalog, wrzuciłem kilka pozycji, wybranych głównie pod kątem różnorodności. Takie łatwiejsze do wyświetlenia oraz takie, które pewnie będą sprawiały problemy.

Zmniejszyłem rozmiar fontu do momentu, w którym rozmiar linii wydawał mi się rozsądny, wlazłem do łóżka i zacząłem jedyny ważny test: czy z tego da się czytać? Pomyślałem, że na małym ekranie należy zacząć małą formą, wybrałem więc kolekcję haiku i historyjek Santōka Taneday. Natychmiast odbiłem się od niej, silnik nie wspiera wyświetlania grafik w tekście, a do tego skomplikowane formatowanie powoduje, że co chwila witają mnie puste strony. No trudno.

It is enough for Santōka to be Santōka; for Santōka to survive as Santōka.
That is the true way.

Wgrałem swoje Marginalia, bo wiedziałem, że nie siliłem się specjalnie na wodotryski, wizja czytania własnego pisania w łóżku była jednak zbyt blisko masturbacji, „przekartkowałem” więc tylko kilka opowiadań i wszystko wydawało się być w porządku.

Ostatecznie padło na kompletny zbiór esejów de Montaigne'a. Wybrałem jeden i zacząłem czytać. Trochę przewrócony na bok, trochę na plecach trzymając tego mikrusa na wysokości klatki piersiowej. Esej był okropny, ale Michel nie miał od kogo ściągać formułki, więc trzeba mu wybaczyć. A mogę wydać taki osąd, bo przeczytałem cały. Po kilku stronach zapomniałem, że patrzę w taki skrawek ekranu i zagłębiłem się w lekturze. Byłem autentycznie zdziwiony, bo ani nie mam sokolego wzroku, ani nie byłem jakoś szczególnie ergonomicznie ułożony. Punkt dla ustrojstwa.

Na drugi dzień zabrałem czytnik do biura i postanowiłem, że puszczę go w dwóch pokojach, aby uzyskać opinię ludzi, którzy nie są mną, najlepszych ludzi. Wróciła do mnie opinia składająca się z siedmiu głosów powtarzających wariację „bardzo dobrze się z tego czyta”. Być może ludzie nabrali się na uroczą estetykę i daliby się szybciej pokroić niż przeczytać książkę w taki sposób? A może po prostu rzeczywiście nie jest najgorzej.

Integracja z Calibre wymaga wtyczki, a że nie chce mi się grzebać na serwerze, postanowiłem odłożyć to ad rem. Ręczne wrzucanie przez przeglądarkę jest tak wygodne, że nie widziałem nagłej potrzeby.

Co jeszcze można zrobić? Wybrać kroje fontów, czas wygaszania, wgrać własne obrazki do użycia w tym właśnie wygaszaczu, skonfigurować skróty klawiszowe przyśpieszające nawigację, sprawdzić dostępność aktualizacji i ją pobrać (podczas pisania tego tekstu pierwszy raz zerknąłem w to, była dostępna aktualizacja i pobrała się bez problemu).

Urządzenie ładuje się przez USB3, więc wasze ładowarki do telefonów dadzą radę. Czas pracy ciężko ocenić, da się jednak zauważyć, że tryb WiFi agresywnie drenuje baterię. Jest podobno slot kart SD, ale posiadam tylko karty o małych pojemnościach, potrzebne w muzeum do różnych urządzeń udających rozmaite peryferia oraz ćwierć terabajtowe, których pakować do środka nie warto. Pamięć wewnętrzna na tę chwilę mi wystarcza, nie jestem fanem „posiadania” tysiąca książek na czytniku, paraliż wyboru nie jest zmyślonym problemem.

Xte vs. Kindle
Zobaczcie jaką mamy piękną A500, przeźroczysta obudowa, mechaniczna klawiatura. Na niej leży Kindle Paperwhite (na ekranie The Book of Japanese Folklore: An Encyclopedia of the Spirits, Monsters, and Yokai of Japanese Myth Tereski), a na nim Xteink; banana do skali nie miałem.

Werdykt? Nie kupujcie. Nie przyda wam się do niczego. Są lepsze, „normalniejsze” czytniki. Całość prezentuje się lepiej i działa lepiej niż mogłem sobie to wyobrazić, tradycyjnie, nie możemy pozwolić, aby plusy przysłoniły nam minusy. Oczywiście nie powstrzymam was, ale będzie mi przykro, że brodzicie ze mną w grzechu.

Mój Kindle zaczyna się psuć, być może to mnie lekko rozgrzesza. Może spróbuję używać Xteink jako mojego podstawowego czytnika i to złagodzi ból gadżeciarstwa? Ktoś bardzo ciekawy może mnie zapytać za miesiąc e-mailem, czy udało mi się skończyć jakiś dłuższy tekst. Choć tak po prawdzie, między nami, w tym roku przeczytałem siedem książek, wszystkie na papierze, jeśli Kindle nie znajduje miłości, ten mikrus też jej pewnie nie znajdzie.


Ten tekst sponsorowany jest przez grypę, pełnię i nieprzespaną noc. Grypa: prosto w płuco™! Zamów już dziś.

  1. Jest wtyczka, ale po chwili walki i przewidywalnych problemach („nie mogę pisać do USB”) postanowiłem, że nie chce mi się.

hu-ju
⌜ Technologia ⌟

All art is quite useless – Wilde

Posiadam wiele komputerów. Wydaje się, że za każdym razem, gdy się odwrócę, prowadzą one jakieś mroczne, potajemne życie seksualne i mnożą się w zastraszającym tempie. Rodzą się też między nimi jakieś dziwne powiązania, niby większość z nich ja wymyśliłem, ale nie jestem pewien. Czas i entropia spiskują przeciwko spokojowi mojego ducha.

Oczywiście sam sobie nie pomagam, traktując te kłębowisko kabli i krzemu jak poligon doświadczalny, miejsce, gdzie należy eksperymentalnie dowieść, że dom z trzema ścianami jest podatny na przeciąg, jednocześnie odrzucając w przedbiegach trójkąt jako figurę niedomową.

Większość moich komputerów ma identyczne narodziny: instaluję Debiana, klonuję moje repozytorium z konfiguracjami, wpisuję ./install.sh i czekam kilka minut. Prawie jednolite środowisko, wielki komfort. Bez względu na to, gdzie usiądę: przy laptopie, Raspberry Pi, tablecie czy desktopie, wszystko zachowuje się tak samo. Minusem jest to, że wszystko zachowuje się tak samo, więc będąc zalogowany przez SSH potrafię się mocno zamotać w niuansach. Raz prowadzi to do strzelenia się w czoło, raz robię sobie jakąś szkodę, małą, ale irytującą. Bo praktycznie nawet jak ten cały majdan się zepsuje, to świat się nie zawali. Nie będzie strony, na której to czytacie, kilka rzeczy się nie scali, może nie rozpylą się backupy.

Mimo to, za każdym razem, gdy zrobię poweroff na złym komputerze lub zaktualizuję trasy na głównym zawiadowcy ruchu i doświadczam sytuacji, w której kursor terminala nie przechodzi do nowej linii mimo mojego łomotania w Enter, czuję takie ukłucie frustracji połączone z profesjonalną ujmą. „Powinieneś wiedzieć lepiej!”, słyszę w głowie. No powinienem.

Dużą część lata spędzałem w wiosce M., oddalonej wystarczającą ilość kilometrów od domu, żeby podróż rowerową pomiędzy traktować poważniej. Miałem pisać opowiadania, ale pracowałem, bo tak jakoś wyszło. Jeden dzień, chyba jakiś czwartek, był tak piękny i zionął takim żarem, że postanowiłem porzucić wszystko i udać się w poszukiwaniu pobliskiego oczka wodnego, gdzie w cieniu drzew mógłbym kontemplować.

Oczko wodne
Znalazłem.

Piękny dzień, gorący, mimo tego pędziłem jak oszalały. Na dodatek w drodze powrotnej natknąłem się na młodego rowerzystę, który wyprzedził mnie z radością, postanowiłem więc gonić go całą trasę, żeby nigdy już nie mógł zwolnić. Takie letnie zabawy. Wróciłem, zaparkowałem i zerknąłem na skrzynkę. A tam e-mail od monitoringu, „Helo, Twój serwer zniknął.”. Próbuję się dostać, rzeczywiście, wszystkie ścieżki odcięte, czyli trup. Chodziłem po mieszkaniu jak zwariowany miś w zoo, lewa ściana, prawa ściana, znów lewa. Wracać? Nic ważnego nie potrzebuję, jutro weekend. Ale jak coś będzie? Nie będzie. Ale jak będzie. Zanim się zorientowałem, siedziałem już w siodełku i wbijałem w rowerowy GPS trasę do domu. Była 17:46.

Rozgrzany i zirytowany pokonałem 80 kilometrów w bardzo dobrym tempie, wpadłem do domu i nie rozglądając się, zresetowałem wszystko. Przy biurku potwierdziłem, że wszystko stoi na baczność i usnąłem jak stałem, brudny i w ubraniu. Obudziłem się w sumie zadowolony, bohaterstwo, nawet takie nieobserwowane, trzeba nagrodzić. Postanowiłem, że w sumie mogę wrócić. Sprawdzę tylko pocztę i zobaczę, czy może nie mam czegoś do załatwienia lokalnie. O, jest drugi e-mail z monitoringu, że wszystko już jest w porządku. No ba!

Ale, ale… patrzę dokładniej. E-mail o awarii dostałem o 17:11. Wyjechałem o 17:46 i nie mogłem być w domu wcześniej niż przed 23. Takie są fakty. Czytam e-mail jeszcze raz. „Twój system działa. Data ustania awarii: 17:37”. Śmieję się do siebie. Kiedy ja chodziłem z kąta w kąt wszystko się samo naprawiło, pewnie ISP miał krótką awarię. Byłem jednak zbyt zaangażowany i gdybym tylko przez następne kilka godzin choć raz spojrzał w pocztę wiedziałbym, że jadę bez sensu.

Nie byłem jednak zły, wiedziałem, że będę miał anegdotę do opowiedzenia w jakimś ledwie przystającym tekście! Myślę jednak, że naświetla ona mój stosunek do sytuacji, w której coś się psuje, z moim czy bez mojego udziału.

Wracając do mojego problemu, który można opisać w skrócie „z daleka wszystkie sesje SSH wyglądają tak samo”, wpadłem na głupi pomysł i pewnie bym go tak zostawił, gdyby dzisiejszy poranek nie przywitał mnie migreną z gatunku tych, gdzie trzask zamykanych powiek wywołuje nudności. Do tego lekka gorączka. Taki stan traktuję jako czek in blanco do produkowania rzeczy na które normalnie machnąłbym ręką. Deliryczna wolność.

Pomysł był prosty. Mógłbym zmodyfikować znak zachęty na każdym komputerze tak, żebym wiedział, na jaką sesję patrzę. Pewnie myślicie, że jednak ta deliryczna wolność jest przereklamowana, to nawet nie ćwierć pomysłu. Chciałem jednak trochę inaczej. Każdy komputer ma alternatywny PROMPT ale tylko przez kilka poleceń, a potem wraca do stanu standardowego. Czy to jest dobry i użyteczny pomysł? Absolutnie nie. Czy odkryłem coś ciekawego na przyszłość? Jak zawsze.

Pierwsza rzecz: potrzebuję mieć jakiś indywidualny ciąg znaków, żebym mógł z niego budować nazwę pliku do którego będę zapisywał stan. Doskonałym kandydatem okazała się zmienna SSH_CLIENT, która zawiera informacje o połączeniu, jest więc wystarczająco unikalna na moje potrzeby.

if [ "$SSH_CLIENT" == "" ]; then
    exit 0 # stop touching me!
else
    device=$(echo $SSH_CLIENT | sha1sum | awk '{print $1}')
fi

if [ ! $XDG_CACHE_HOME ]; then
    XDG_CACHE_HOME=/tmp 
fi

Ku mojemu zdziwieniu XDG_CACHE_HOME nie jest ustawione na żadnym z moich systemów, zatkałem więc to na szybko. OK. Mamy unikalny identyfikator naszego połączenia, a jeśli testujemy lokalnie, to dajemy sobie spokój.

filename="$XDG_CACHE_HOME/$device"_hu_ju.log

if [ -f $filename ]; then
    dec $filename
else
    echo 5 > $filename
    dec $filename
fi

Zbudujemy z niego ścieżkę do pliku ze stanem. Jeśli taki plik już istnieje, wywołamy na nim dec, a jak nie, to zainicjalizujemy go wartością.

dec() {
    cur=$(cat $1)
    if [ $cur -eq 0 ]; then
        exit 0 #we're done here
    else
        if [ -f $HOME/.unicode_icon ]; then
            cat $HOME/.unicode_icon
        else
            echo -ne "🐈"
        fi
    fi
    cur=$(($cur-1)) 
    echo $cur > $1
}

dec weźmie zawartość pliku, zobaczy, czy nie jest 0 (przestajemy modyfikować znak zachęty, wyczerpaliśmy ilość przypominajek), następnie sprawdzimy, czy mamy plik .unicode_icon z unikalną ikoną, a jeśli nie mamy, to będzie domyślny kotek (🐈).

Od obecnej wartości z pliku odejmujemy jeden i zapisujemy stan z powrotem.

Teraz pozostaje tylko użyć jednego z pliku konfiguracyjnego, czytanego przy starcie przez powłokę (ja lubię .profile, ale nie wiem czemu) i nadpisać definicję.

PROMPT='$(hu-ju.sh)'"$PROMPT"

Zrzut ekranu prezentujący hu-ju w działaniu.
Kim jestem? Skąd przychodzę, dokąd idę? Tak, truskawka to jedyne *berry w mojej wersji Unicode.

A jednak się kręci, mi w głowie głównie, ale to też. Czy zdobędę się na dodanie tego wynalazku do wiekowego ./install.sh? Pewnie nie, starczy mi, że działa jak sobie wyobrażałem.


Jest czas
⌜ Literatura ⌟

W pewnym mieście mieszkał facet, który miał czas. Nigdy i nigdzie się nie śpieszył. Gdy siadał do śniadania, pił do niego dwie letnie herbaty, zawsze cierpliwie czekając, aż wystygną po zalaniu wrzątkiem. Jajka na twardo gotował tak długo, aż pękała skorupka. Obierał je nad talerzem, metodycznie, łupinka po łupince. Wyciągnięte z lodówki masło ciął w małe kosteczki i układał na kromkach chleba z precyzją geodety, nigdy nie próbując rozsmarować ich zanim nie odtajały.

Gdy czytał gazetę, czytał ją całą. Każdy artykuł, każdy śródtytuł, szpalta po szpalcie, strona po stronie. Notowania giełdowe, prognozy pogody, horoskop, nie tylko dla siebie, ale i dla pozostałych znaków zodiaku, wyniki sportowe we wszystkich ligach, ploteczki o gwiazdach, ogłoszenia duże i małe, kroniki matrymonialne i wreszcie stopkę. Nie czytał tylko nekrologów. Człowiek, który ma czas, nie znajdzie niczego ciekawego w nekrologach.

Biblioteka słała mu oficjalnie brzmiącą korespondencję o niezwróconych książkach i kiedy wreszcie stawiał się w czytelni i płacił karę, musiał się nasłuchać zadziwiających bzdur opowiadanych mu przez bibliotekarkę.

— Nie, nie ma Pan czasu, termin minął 14 dni temu!

Gdy spodziewał się listu lub paczki, stawał przed bramą służbową budynku pocztowego wypatrując znajomej twarzy listonosza. Kiedy ten wreszcie się pojawił, nie ruszał do niego z wyciągniętą ręką. Pozwalał mu odejść kawałek, a potem szedł za nim jak cień przez cały rewir. W okolicach swojego domu wyprzedzał go wreszcie i usłużnie trzymał otwarte drzwi do klatki. Brał swoją przesyłkę i szedł po schodach. Choć nie był już młody, nigdy nie używał windy.

Pewnego jesiennego wieczora stał na przystanku i czekał na autobus. Nie na konkretną linię, wybierał godzinę, która mu się podobała, a potem oglądał jak autobusy zatrzymują się i odjeżdżają. Sięgnął do kieszeni płaszcza i wyciągnął zeń pudełeczko. Na jego wieczku napisane było uncjałą «Czas». Skrył je w dłoni, tak jak palacz skrywa zapałkę przed podmuchem wiatru i przyłożył ją do oka. Przejechał po brzegu wieka paznokciem, szukając miejsca, w którym można je podważyć. Wreszcie znalazł sposób, przysunął pudełko jeszcze bliżej oka i zerkał do środka przez cieniutką szparę.

W środku była stłoczona ciemność, nie wiedział, jak to inaczej wytłumaczyć, było jej więcej niż tylko w wyniku braku światła, ale wydawało się, że powoli się rozpręża, choć nie była to zmiana dostrzegalna okiem.

Rozległo się ciche syknięcie. Ścisnął pudełko w garści i wcisnął je do płaszcza. Drugie syknięcie. Podniósł głowę i zobaczył autobus, którego drzwi się zamykają. Zaczął iść szybko w jego kierunku, ale ten miał już włączone migacze do skrętu w lewo. „Hej!”, krzyknął w jego stronę, „Hej! Stój! Stój!”, teraz już biegł starając się znaleźć po lewej stronie pojazdu, gdzie, jak liczył, zostanie zauważony przez kierowcę. Autobus odtaczał się powoli z zatoczki. W wyrazie frustracji cisnął w jego stronę parasolem, ten nie sięgnął celu i smutno upadł kilka metrów dalej w kałużę zbierającą się w asfaltowej dziurze.

Światła zmieniły się raz i drugi, czas płynął dalej.


87°
⌜ Literatura ⌟

Ulice centrum są puste we wczesnych przedpołudniowych godzinach. Ludzie odpowiedzialni są już w pracy, małe restauracyjki jeszcze nie otwarte, ludzie zbyt ważni lub zbyt nieważni jeszcze śpią. Było mi to na rękę, gdyż zmierzałem szybkim krokiem w kierunku biura próbując dogonić minuty stracone w wyniku zaspania. Szefowie uważają spóźnialstwo za wadę charakteru, którą trzeba tępić. Biegomarsz był więc wskazany.

Będąc już przy samym budynku musiałem się zatrzymać, gdy zauważyłem parkujący samochód innego pracownika. Wprawdzie znam go tylko z widzenia, ale nie wypada kogoś wyprzedzać gdy się go zauważyło, poza tym jeśli obaj wejdziemy spóźnieni być może gniew przełożonych rozłoży się na pół.

Silnik zgasł, w kabinie samochodu nastąpiła krzątanina gdy pasażer zbierał, tak myślę, papiery z siedzeń, następnie, ku mojemu wielkiemu zdziwieniu, otworzyły się drzwi bagażnika. Na złożonych fotelach pojawiła się głowa mojego kolegi, a potem powoli cała jego reszta. Używał wężowych ruchów aby przesunąć się ku światu. Wyglądało to jak jakiś bluźnierczy, cyberpunkowy poród. Kiedy wreszcie osiągnął brzeg, obrócił się twarzą do ulicy, wsparł na rękach i wyciągnął kompletnie. Stanął zadowolony, otrzepał się i zamknął bagażnik.

— Jakieś problemy z samochodem? — zapytałem.

Spojrzał na mnie zdziwiony, zaprzeczył prostym „nie”, położył mi rękę na ramieniu i patrząc w stronę głównego wejścia rzucił komendę, „…lećmy!”.

Winda była na parterze i otworzyła się sekundę po naciśnięciu przywołującego ją guzika. Być może mamy dziś szczęście? Mieliśmy. Korytarz przed salą konferencyjną był wypełniony ludźmi, najwyraźniej spotkanie się jeszcze nie zaczęło. Wtopiłem się w tłum, a może zostałem weń wciągnięty przez te wszystkie ręce, które musiałem uścisnąć na powitanie. Wreszcie drzwi rozwarły się i zajęliśmy swoje miejsca. Zacząłem żmudny proces wypakowywania się: wydrukowane e-maile, jak dowody w sprawie w której jestem jednocześnie sądzonym i oskarżającym, telefon (wyciszony), laptop, jakieś papiery, które noszę chyba jako totem, bo nie wiem kiedy je otrzymałem, ani czemu miały służyć, ale jeżdżą w mojej aktówce od lat. Myślałem żeby je wyrzucić, ale nie mam odwagi.

Prowadzący spotkanie dyrektor przywitał wszystkich i natychmiast przeszedł do rzeczy pytając, „Czy mamy jakieś ważne sprawy do omówienia?”, poczekał kilka sekund, a następnie dodał „w takim razie nie ma co marnować sobie pięknego piątkowego dnia, miłego weekendu!”.

Dookoła mnie ludzie zaczęli gramolić się z foteli, a ja, jeszcze z ręką w torbie, szukając artefaktów, kompletnie sparaliżowany wydarzeniami, zmusiłem się żeby wyrzucić z siebie „Chwileczkę!”. Ruch ustał, ludzie zajęli ponownie miejsca. „A co z moją sprawą?”, zacząłem ją gorączkowo wyjaśniać. Dyrektor słuchał uważnie, a potem zapytał zgromadzonych, kto jest odpowiedzialny za nadzór mojej sprawy, wysłuchał posłusznie zgłaszającego się pracownika z innego działu a następnie zawyrokował, „No i dobrze. Umówcie się panowie na poniedziałek, nie ma chyba sensu żebyśmy siedzieli wszyscy tu i słuchali ustaleń. Macie przecież kompetencje.”

Na te dictum ludzie znów zaczęli się zbierać, ten, z którym miałem się rozmówić minął mój fotel pokazując gestem „zadzwonię do Ciebie”, chwilę później zostałem w sali sam.

Rozglądałem się po pustym pomieszczeniu. Jak to, mamy kompetencje? A gdzie dwugodzinna dyskusja z udziałem osób niezainteresowanych, gdzie oskarżenia o nieporadność, gdzie znudzone spojrzenia, gdzie jęki przypartego do ściany kierownika działu, jego zarzuty, „I Wy, Brutusy!”. Co to za spotkanie, myślałem, pakując się znów. Kiedy doszedłem do tych papierów, które nosiłem ze sobą, postanowiłem na nie zerknąć. Była to dokumentacja jakiegoś projektu. Data w rogu sugerowała, że jest sprzed dwóch lat. Teraz już pamiętam. Wszyscy z tego projektu zostali zwolnieni. Ułożyłem je w schludną kupkę i zostawiłem na stole, po czym wyszedłem.

Podarowano mi cały dzień, nie wiedziałem za bardzo co z nim zrobić. Poszedłem do pobliskiego parku i usiadłem na ławce obok kwietnika, w którym rosły bzy. Bez był niepokojąco dorodny, miał piękną, pastelową paletę lekko zawstydzonego fioletu i nieśmiałego antracytu. Gałęzie tańczyły delikatnie na nieodczuwalnym wietrze rozsiewając agresywnie zapach tak słodki i ciężki, przesadny i nieustępliwy, że mogłem go porównać tylko do tanich, syntetycznych perfum noszonych przez babcie. Zwabione nim owady zlatywały się do kwietnika w jakiś dziwnie spokojny sposób, poruszały się po sinusoidzie, jakby podskakując z zadowolenia. Ogarnęło mnie niejasne przeświadczenie, że gdybym przyjrzał się im z bliska zobaczyłbym, że nie mają czułek i szczęk, tylko uśmiechnięte buzie i że śpiewają cieniutkim głosem pochwalną piosenkę o zbieraniu pyłku.

Chciałem wstać, ale ostatecznie nie znalazłem powodu. Byłem przyszpilony ciszą i bezwładem, obdartym z obowiązków, z milczącym telefonem. Czekałem aż ktoś przejdzie obok zajmowanej przeze mnie ławki żebym mógł się zmotywować i podążyć, ale nikt nie nadchodził. Na brzegach parku poruszały się jakieś bezkształtne sylwetki. Małe psy nie szczekały na duże, nie było budki z lodami terroryzującej świat dżinglem, ani tej śmierdzącej przypaloną kawą.

Musiałem siedzieć tak długo i siedziałbym tam jeszcze, gdybym wreszcie nie poczuł głodu.

W sklepie stanąłem za panią, która właśnie płaciła i zaczynała się pakować. Ja oglądałem słodkości za szybą, być może coś takiego da mi energię, energię do robienia czegokolwiek. Pani utkała już wszystko do torby, ale zanim zdążyłem się przesunąć do kasy, wykonała zbyt dramatyczny gest strzelania się w czoło, popatrzyła na mnie przepraszająco i powiedziała do sprzedawczyni, „Przepraszam! Zapomniałam, jeszcze mleko!”. Mówiąc to grzebała w swojej podręcznej torebce skąd ostatecznie wyciągnęła małą szklankę w czerwonym koszyczku i postawiła ją na blacie. Na to pojawiła się sprzedawczyni z chochlą pełną mleka i zaczęła wlewać je do szklany. Obie patrzyły na podnoszący się poziom w szklance do momentu w którym padła komenda, „dobrze, starczy”. Kasjerka wbiła kwotę, a Pani uniosła szklankę w dłoni i zaczęła wychodzić, stanęła jednak przed drzwiami i zawołała do mnie, „otworzył by mi Pan, nie chcę ulać”.

Otwierając patrzyłem jej w głęboko w oczy, szukając podstępu lub szaleństwa, ale znalazłem w nich tylko zabieganą codzienność. „Dziękuję” przycięły zamykające się za nią drzwi.

Nie pytałem nawet o to, czy normą jest sprzedawanie mleka na szklanki. Oczywiście nie jest. Może to jakiś lokalizm, może to osoba, której nie stać na więcej, a sprzedawczyni ma dobre serce i parceluje jej. Może to nielegalne mleko, z kontrabandy, przemycone z jakiegoś powodu, sprzedawane spod lady. Wiem tylko, że nie mam odwagi zapytać. Mogę zapytać o to albo poprosić o słodką bułkę, a jestem już naprawdę głodny.

Sprzedawczyni przerywa moje rozważania, „Halo, halo? Ależ Pan zamyślony, ważne sprawy pewnie? Co podać?”. Wybrałem jakąś słodką bułkę i pozwoliłem jej wybrać nadzienie, nie miałem głowy do wybierania nadzienia. Może gdyby było nadzienie z bzu? Ostatecznie o tym śpiewały pszczoły? Co też ja wymyślam, skarciłem się w głowie. Wsadziłem ręce do kieszeni szukając pieniędzy. Sprzedawczyni zapakowała bułkę i przyglądała mi się, wreszcie skomentowała, że bardzo dziwnie wyglądam i może powinienem wrócić do domu, może to grypa, a grypa w lato jest okropna, więc trzeba się jej szybko pozbyć. Potakiwałem bezmyślnie nadal szukając pieniędzy.

Kiedy wreszcie zapłaciłem sprzedawczyni schowała monety do kasy i pokiwała na mnie konspiracyjnie palcem nachyliła się nieco za ladę. Nachyliłem się ku niej, półświadomie oczekując tajemnicy mleka sprzedawanego na chochle. Kiedy byłem już wystarczająco blisko sprzedawczyni pocałowała mnie w policzek.

Krzyknąłem i upuściłem zapakowaną słodką bułkę. Nie był to krzyk głośny, ani pełen paniki, ale wystarczająco niepokojący by wywołać z kanciapy innego pracownika sklepu, pana w średnim wieku, który wystawił głowę zza kotary i zapytał, co się stało.

Sprzedawczyni powiedziała: „Pocałowałam pana w policzek, a ten wrzasnął i znieruchomiał, bułkę upuścił”. Nowo przybyły spojrzał na mnie krytycznie i zaczął mówić idąc w moim kierunku, „Co pan się nie umie w sklepie zachować, sceny pan będziesz robić, kobiety straszyć?”, podniósł pakunek z podłogi, wcisnął mi go w dłonie i zaczął zdecydowanie prowadzić mnie ku wyjściu. Gdy do nich dotarliśmy pogroził mi palcem, kazał obiecać, że to ostatni raz się tak zachowuję, ucałował mnie w czoło i wyrzucił za drzwi.

Oniemiały stałem tak chwilę na chodniku trzymając słodką bułkę w ramionach jakby to było moje najukochańsze dziecko. Nie potrafiąc wytłumaczyć sobie już niczego postanowiłem wrócić do domu, choć była to bardziej rejterada.

Zamknąłem za sobą drzwi, przekręciłem zamek i dwa raz sprawdziłem klamkę. Przeszedłem się od okna do okna zaciągając zasłony. W kuchni zapaliłem światło. Sztuczne światło nigdy wcześniej nie było tak prawdziwe. Wstawiłem wodę, postawiłem filiżankę na spodku i czekając na wrzątek wsypałem do niej zbyt dużo kawy. Kiedy wlałem wodę po brzegu filiżanki pociekł strumień niezaparzonej kawy, brudząc ją i wypełniając spodeczek breją granulek. Już miałem się zganić za nieuwagę kiedy podczas bliższych oględzin okazało się, ze filiżanka stoi delikatnie przechylona na jeden brzeg. Docisnąłem ją delikatnie palcem. Stała tak, a gdy puściłem, wróciła do swojego lekkiego przechyłu. Podniosłem ją i przejechałem palcem po spodzie denka, brudząc się wcześniej ulaną kawą. Żadnych nierówności. Znów na spodek. Odstaje. Może spodek? Postawiłem ją na blat kuchenny.

Stoi przechylona. Uklęknąłem, jak niewierny Tomasz, wsadziłem mały palec pomiędzy blat a jej spód. Odstawiłem ją na spodek.

W łazienkowym lustrze patrzyłem sobie długo w oczy. Znany facet patrzył się na mnie obojętnie, choć wyglądał na zmęczonego. Dotknąłem swojego czoła, pociągnąłem się lekko za ucho, rozmasowałem nasadę nosa. Zauważyłem wreszcie, że koszula, którą założyłem na spotkanie leży na mnie nierówno. Przesunąłem palcem po plisie i trafiłem na samotny guzik. W pośpiechu musiałem przepuścić jeden. Rozpiąłem ją zupełnie, po czym zapiąłem się pod szyję, jakby dla testu. Wygładziłem materiał. Z kuchni doleciało ciche ceramiczne brzdęknięcie.


Głosy
⌜ Literatura ⌟

„Szybciej, szybciej. Wchodzimy!”, odźwierny naganiał osoby, które kręciły się jeszcze przed wejściem do teatru. W środku był już prawie komplet. Niedopalone papierosy tłamszono butem, pary brały się za dłonie, jedno ciągnęło drugie ku drzwiom. Kiedy na ulicy pozostali już tylko przechodnie drzwi zamknęły się z satysfakcjonującym trzaskiem i szczęknął w nich klucz.

Powoli gasły światła, ale nie kompletnie, jak to się ma w kinie. Przygasły nastrojowo, zatapiając widownię w świecie kształtów, nie detali. Ustawał ruch, fotele skrzypiały coraz rzadziej, coraz cięższą ciszę przerywało sporadyczne odchrząknięcie, a raz wysmarkanie nosa, które brzmiało jak solo na samym ustniku trąby.

Ze sceny, skąpanej dużo mocniej w świetle, można było zobaczyć tylko pierwsze rzędy, a o obecności ludzi w dalszych, domniemywać z ruchu cieni. Na przodzie siadali zawsze ludzie, którzy myśleli, że są częścią przedstawienia, niektórzy powiedzieliby nawet, że najważniejszą. Wybierają pomiędzy pragmatycznym miejscem nieco dalej, miejscem dużo lepszym do oglądania całości wydarzenia, a byciem widzianym i byciem pierwszym, który zobaczy co się dzieje, nawet jeśli te pierwszeństwo mierzone prędkością światła jest niepostrzegalne dla ludzkiego rozumu.

Wreszcie pojawili się bohaterowie, ona i on, po przeciwnych stronach. Ona ubrana w białą koszulę, kremową spódnicę, włosy zapięte w profesjonalny, ale lekko frywolny kok. On w turkusowej marynarce, dopasowanych spodniach. Oboje młodzi, czy też uchodzący za młodych we współczesnych czasach, profesjonalni, poukładani. Zaczęli iść w kierunku środka sceny by ostatecznie zająć miejsce przy swoich pulpitach oddalonych na tyle, żeby dramatyczna wymiana spojrzeń mogła mieć miejsce.

Oboje krzątali się nieco, rozkładając papiery, odkręcając i ponownie zakręcając butelkę z wodą, żeby potem podczas wystąpienia nie mocować się z korkiem, poprawiali kołnierzyki, mikrofony, a gdy byli gotowi, spojrzeli ku sobie i kiwnęli głowami na znak powitania, tak jak się wita przeciwnika przed pojedynkiem na pistolety.

Czy było to wcześniej umówione, czy też wynika to z konwentu, ona pierwsza pochyliła się nad mikrofonem. Przywitała się szybko, a następnie, wznosząc delikatnie rękę i wskazując drugiego mówcę ręką powiedziała do mikrofonu, „Ty chuju.”

Gdzieś z widowni rozległy się oklaski, ale te zostały uciszone natychmiast przez zawstydzonych sąsiadów, bez wątpienia ktoś nie zna etykiety debat, może to jego pierwszy raz i nie wie jeszcze, że to faux pas przerywać mówcom wyrazami aprobaty.

On, drugi mówca, obrócił się twarzą do widowni, omiótł ją spojrzeniem z lewa do prawa, obdarzając wszystkich serdecznym uśmiechem. Powiedział szybko do mikrofonu, „Ty kurwo.” — odpowiedziały mu pomruki zadowolenia i protestu, odgłosy podzielonej sali, znak dobrego środowiska do debaty.

Teraz ona, machnęła ręką w geście zbycia wypowiedzi adwersarza, pociągnęła szybki łyk wody, a następnie zaśpiewała melodycznie do mikrofonu, „Ty chuju!”. Należy dodać, że od „T” do wykrzyknika było bardzo daleko, gdyż był to niemal operowy zaśpiew, długie, snujące się „uuuu”, czyste w środku i zakończone sopranowym vibrato.

Widownia aż zamarła, a jeden spocony pan w pierwszym rzędzie musiał zdjąć okulary i przetrzeć je chusteczką.

On teraz, popatrzył na nią krytycznie, czekając aż wykrzyknik skończy się odbijać od ścian, złożył ręce w geście nabożnego skupienia i z miną godną sędziego, który skazuje kogoś na śmierć, kogoś, kto z litery prawa zasługuje wisieć, choć rozumie protesty moralistów, powiedział słodkim, basowym tonem, tonem męskim i pewnym siebie, „Ty kurwo!”.

I tak trwała ta debata godzinę, a może więcej. Widownia odwracała się z lewa na prawo i z prawa na lewo jak na meczu tenisa. Wszystko to było bardzo ekscytujące, aż do końca trzymające w napięciu. A po oklaskach, bisach i zapaleniu świateł widownia pierzchła do szatni bić się o swoje płaszcze, kurtki i czapki. Kto nie miał ostrych łokci ten musiał czekać. Pewna para widzów postanowiła, że nie ma ochoty na przepychanki, wyszli więc prawie ostatni. Stojąc na ulicy on rozłożył parasol, ona wzięła go pod rękę i kiedy tak odchodzili, on ją zapytał, „Pierdolą?”, a ona pokręciła głową, „Pierdolą!”.


1
⌜ Życie ⌟

Szopa stała w końcu ogrodu, przyklejona do ściany innego budynku. Miała najwyżej kilka metrów kwadratowych i wyglądała na samowolę budowlaną postawioną z desek odzyskanych z rozbiórek. Drzwi znajdowały się przy brzegu ściany frontowej, były prawie zawsze otwarte, gdyż stanowiły jedyne źródło słonecznego światła jako że budynek nie miał okien. Przez to, mimo niewielkich rozmiarów szopy, w jej rogach panowała absolutna ciemność.

Stałem przy tych drzwiach z butami w dłoniach i czekałem, aż siedzący na stołku starzec przeniesie na mnie swój wzrok. Kiedy wreszcie odwrócił się do mnie wzniosłem je jak podarek i powiedziałem „Mama prosiła żeby naprawić”. Prawdopodobnie coś odpowiedział, ale za nic nie mogę sobie przypomnieć jego głosu. W moich wspomnieniach nie ma nawet imienia. Miał brodę, każdy by się spodziewał brody, okulary o grubych szkłach, które non stop zdejmował, przekładał po stole, a czasem podnosił na czoło. Miał też grube palce, to pamiętam dokładnie, bo gdy naciągał materiał i kleił go robił to przy użyciu dłoni. Maczał palec w kleju i dokładnie aplikował w miejsce, które go potrzebowało.

Od szopy bił niesamowity smród butaprenu, ale tylko na kilka metrów, resztę pochłaniała woń ogrodu. Całkiem okazały ogród, jeśli wolno byłoby mi go ocenić. Z przodu, bliżej domu, obsiany kwiatami i w towarzystwie kilku niewielkich drzew owocowych, z tyłu, przy szopie, bardziej praktyczny z małymi grządkami marchwi, rzodkiewki i ziół. Czasem kradłem stąd marchewki, zwłaszcza gdy były jeszcze małe i smakowały słodko jak cukierki. Wyciągałem je z ziemi, wycierałem o materiał bluzy i kładąc do buzi przygryzałem zaraz przy naci. Nikt mnie nigdy nie złapał.

Kręciłem się więc tak starając się uniknąć syntetycznego zapachu, który dusił, ale co jakiś czas zaglądałem do środka monitorując postępy. Już teraz widziałem rozsypane na blacie małe gwoździki, cienkie i ostre jak zęby szczeniaka. Znaczy, że już zaraz koniec, nie odchodziłem więc, stałem i z wielką uwagą obserwowałem łuszczącą się na drzwiach pomarańczową farbę, która przez nierówności i pęknięcia ukazywały pierwotny seledynowy kolor. Bardziej podobałyby mi się seledynowe.

Oddał mi wreszcie buty i pewnie poradził żeby od razu w nich nie chodzić i żeby pozdrowić mamę. Wracając przez ogród, przez jego kwiecistą część, widać było otwarte okna domu, bardzo higienicznie mieć wywietrzone, w którym mieszkał. A przynajmniej tak zgaduję, widziałem go tylko w tym warsztacie, w tej szopie na końcu. Jego żona była kobietą o surowej twarzy, zaciśniętych ustach i fanatycznym oddaniu sprawom kościoła, nosiła szare ubrania, włosy spinała w kok i gdy mówiła to mówiła do twojej duszy grzesznika tonem łagodnym, ale z nutą rozczarowania. Miałem nadzieję, że nie pojawi się w drzwiach i nie zaprosi mnie na herbatę i ciastko. Nudziłem się z nią okropnie, poza tym wszystkie pokoje w tym mieszkaniu wyglądały jak przedpokój. Gołe, bielone ściany, żelazny krzyż, drewniana podłoga pomalowana na orzechowy kolor. Normalnie bym się wykręcił, ale ostatnio spłatałem jej figla, a może ona sobie spłatała, więc nie chciałem robić jej przykrości.

Któregoś ranka wpadłem na pomysł, że namydlę sobie całą twarz, od czoła po brodę, a później wyjdę tak na słońce i pozwolę pianie wyschnąć. Nie mam pojęcia czemu, to jedna z tych rzeczy, które się robi w nieskończone dni lata. Mydło zaschło w maskę okropieństwa nadając mi wygląd ofiary zarazy. Chodziłem więc tak po ulicy szukając czy ktoś się zainteresuje kiedy to wpadłem na nią. Wydała z siebie krzyk, rzuciła torby z zakupami i ruszyła biegiem nieść mi pomoc. Natychmiast zrobiło mi się głupio i zanim jeszcze dopadła mnie zacząłem się tłumaczyć z żartu. Nie było jej do śmiechu, kazała mi iść za sobą, nalała wodę do miednicy i kazała mi spłukać zeschnięte mydło.

Na szczęście nie zauważyła mnie. Zamknąłem za sobą bramę, odmachałem na pozdrowienie pani z budynku obok, która wyglądała przez okno na podwórze. Pani ta po godzinach zajmowała się strzyżeniem dzieci. Nie artystycznie, polecenie było głównie „skrócić”, więc chodziłem co jakiś czas siadać przy jej kuchennym stole, gdzie tworzyła tymczasowy salon urody i dawać się strzyc. Było to zawsze doświadczenie, gdyż rodzina, mąż i kilkoro dzieci nie przerywało swoich normalnych zajęć, oglądali telewizję, robili sobie kanapki czy herbatę, rozmawiali ze sobą, ale nigdy do mnie. Jak Samson słabłem i znikałem w ich oczach.

I tylko tyle działo się pod numerem jeden. A ja sobie o tym przypominam zasypiając z nosem w kolekcji esejów Wendella i myślę, że każdy ma swoje Kentucky.


blablabla
⌜ Literatura ⌟

Monitor świeci biało-niebieskim światłem, martwym światłem, hipnotyzującym światłem. Patrzę weń, a on patrzy przeze mnie. Nie czuję nawet, gdy zimna dłoń dotyka mojej kostki, jak jej palce próbują wyczuć granice mojej stopy. Wreszcie zaczyna pełznąć pajęczym krokiem po mojej łydce, powoli, na okrętkę, dookoła kolana i teraz po udzie, tu już szybciej, pewniej.

Dochodzi do anusa i pewnie wbija się w moje trzewia. Przechodzi mi dreszcz, ale niczego nie robię, biało-niebieskie światło otumania mnie jak morfina. Ręka drze na strzępy moje jelita i cały brud wylewa się ze mnie, zbiera się jak zatęchła woda na dnie miski. Ręka wprawnie chwyta się kręgosłupa i zaczyna piąć się wyżej i wyżej, ignoruje żołądek, ściska płuca, z tego powodu zaczynam brzydko kaszleć, ale zatykam dłonią usta żeby nie robić hałasu.

Teraz dochodzi do serca, chwyta je i trzyma, a to próbuje się wyślizgnąć i robić swoje. Na zewnątrz czuję się źle, bardzo źle. Przestaję widzieć ekran, ostatkiem sił pochylam się by podkręcić jasność, podkręcam też głośność, skoro już manewruję potencjometrami. Zagłuszam dudnienie dochodzące z wewnątrz.

Grdyka mi skoczyła jak piłka, to obca ręka z wyprostowanymi palcami czołga się przez moje gardło. Próbuję się odkrztusić, ale charczę tylko pośród krótkich, spanikowanych i płytkich wdechów.

A ręka jest już tam, gdzie być chciała, kciuk pod żuchwę, pozostałe palce w szczękę. Siedzę bez zrozumienia. Nagle moja gęba się otwiera. I klap, zamyka. Zamyka, otwiera. Klapię dziobem, język mam sztywny jak kołek. Znów otwieram ryja, język skacze, zamykam. Po kilku próbach ręka wreszcie złapała rytm.

Siedzę tak i dobywa się z mojego ryja monotonne „bla, bla, bla”. Próbuję szukać pomocy, ale mogę teraz tylko przewracać oczami, a gdy przewracam nimi wyglądam jak zepsuta lalka. Czekam więc, aż ktoś się zlituje.

Zza zorzy monitora pojawia się wreszcie jakaś inna twarz, nachyla się do mnie, znam tę twarz. Mówi do mnie „bla, bla, bla”. Jestem zdziwiony, nigdy wcześniej się nie zgadzaliśmy. Odpowiadam mu, że ”bla, bla, bla”. Oboje przewracamy oczami.


$0400.png
⌜ Technologia ⌟

Nie może być wątpliwości, jesień dobrała mi się do głowy i nakładła doń suszonych liści. Ilekroć poruszę głową słyszę ich chrzęst i nie mogę się skupić. Wszystko mnie irytuje i nie chce mi się niczego robić. Kiedy tylko rozpoznaję u siebie taką chandrę sięgam do mojej nieustannie wijącej się listy rzeczy, które mam zamiar zrobić. Nie znajduje się na niej ani jedna rzecz praktyczna, tylko takie niosące radość, a co może być lepszego na przygnębienie, jak mozolna i bezużyteczna praca dla nikogo? No, przynajmniej ja tak mam, że to właśnie pomaga.

Wydłubałem z listy jedną rzecz i naszła mnie zaduma: już kiedyś do tego siadałem, ale z jakiegoś powodu nigdy jej nie skończyłem. To głupotka, rzecz, którą kompetentny koder wystuka jedną ręką w kilka kwadransów. Moja wiedza jest rozległa, ale płytka, gdyby była taflą wody, to nawet najmarniejsze robaki nie musiałby wkładać kaloszy, więc pewnie zajmie mi dużo dłużej.

Miałem taki plan: zestaw znaków na C64 można dowolnie modyfikować. W systemie jeden znak to nic innego jak ciąg ośmiu bajtów z którego każdy bit odpowiada za piksel. Można używać tej właściwości praktycznie, zastępując bezużyteczne znaki potrzebnymi (na przykład symbol brytyjskiego funta jakimś polskim diakrytem), można też używać ich dla zabawy, w grach i demach, gdyż znak wyświetlony i dynamicznie modyfikowany może uchodzić za relatywnie tanią w cyklach procesora animację.

Mógłbym wziąć jakiś obrazek, skonwertować go do jednobitowej głębi koloru, przerobić na bajty, te bajty poukładać w znaki, wepchnąć do pamięci i w ten sposób uzyskać grafikę. Jest wiele lepszych sposobów, ale ten zawsze nęcił mnie z niezrozumiałego powodu. Może dlatego, że jestem terminalowym fanatykiem? Kto wie.

Zanim usiadłem do właściwej pracy postanowiłem zbudować sobie kilka pomocnych funkcji. Ponieważ nie mogę skanować obrazu linearnie i muszę upakować bity w bajty, a potem te bajty w kolejności gęsiego, postanowiłem wyodrębnić to wszystko z przyszłego kodu generatora, co do którego miałem podejrzenia, że jego jakość będzie fatalna, jak wszystko, co się robi ad hoc. Napisałem więc get_coord, które zwraca x i y górnego rogu konkretnego znaku, jego dziecko get_full_coord dające mi listę wszystkich bitów i wreszcie get_pixels zwracający mi listę pikseli, gdybyśmy patrzyli na źródłowy obrazek jako zwykły strumień bitów.

>>> pprint(
    {
      'coord': get_coord(43), 
      'pixels':get_pixels(43)[0:8], 
      'full':get_full_coord(43)[0:8]
    } # przycięte dla czytelności
)
{'coord': (24, 8),
 'full': [(24, 8),
          (25, 8),
          (26, 8),
          (27, 8),
          (28, 8),
          (29, 8),
          (30, 8),
          (31, 8)],
 'pixels': [2584, 2585, 2586, 2587, 2588, 2589, 2590, 2591]}

Przetestowałem rezultaty jednostkowo przy użyciu oka i tabliczki mnożenia, wyglądało zupełnie poprawnie. Teraz trzeba wybrać jakiś obrazek, na którym można testować. Tu nie było problemów, mam kilka gigabajtową kolekcję stron i paneli z komiksów. Czarno-biała manga jest idealnym kandydatem do konwersji na jeden bit głębokości. Niestety, nie mogłem się zdecydować i zmarnowałem resztę wieczoru przeglądając, macając, tnąc i skalując w GIMP-ie kandydatów.

Drugiego dnia po pracy miałem zamiar skończyć mój eksperyment. Pochyliłem się więc nad generatorem. Wpierw same znaki, zwłaszcza, że efekt takiej pracy można podglądać dzięki fantastycznemu edytorowi PETSCII dostępnemu online. Po godzinie wstrzyknąłem mój zestaw znaków i dostałem zielone światło, wszystko wstawiło się poprawnie. Fantastycznie, stąd już rzut kamieniem.

W trybie tekstowym pamięć ekranu zaczyna się od $0400 (po „naszemu”, 1024) i ciągnie się na tysiąc bajtów. Wpisanie w ten zakres adresów wartości reprezentującej znak wyświetli się natychmiast — można to bardzo łatwo przetestować:

POKE 1024,0: POKE 2023,0

Wstawi w pamięć ekranu 0, w mapie znaków odpowiadające za symbol @, odpowiednio w górny lewy róg i dolny prawy. Wystarczy pętla, która wpompuje nasze nowo zdefiniowane znaki i presto pronto, mamy grafikę!

Po chwili częściowych sukcesów, czyli kompletnych niepowodzeń, do mojej głowy wlały się wspomnienia z mojej poprzedniej sesji z tą zabawką. „Emil, Emil…!”, skarciłem się, „Ile jest 40x25 (rozdzielczość trybu tekstowego)? Tysiąc? A Emil, patrzysz w to tyle czasu, ile masz znaków? 256? I teraz, skup się, czy 256 znaków wystarczy żeby zapełnić 1000 miejsc w takiej naiwnej formie? Ostatnio zrobiłeś to samo!”

Ach, to dlatego wszystko mi wybucha po sześciu liniach. Nie bardzo rozumiem, jak udało mi się popełnić ten sam błąd dwa razy. Znam wszystkie fakty, ale widocznie nie chciały mi się one złożyć w kompletny obraz. Być może, to przez to etapowe myślenie, wszystkie części osobno funkcjonują poprawnie, ale nigdy nie zejdą się w działające ciało.

Nic, trudno. Pozostałem jednak w trybie dłubania z niewielkimi rozdzielczościami w nikłej ilości kolorów bo Piotrek naprawiał Maca Classic i skoro byłem tak mono-nastrojony wymyślałem co mu można dać na podkład.

Mac Classic
Jedyny niebrzydki komputer Apfel

Następnego dnia mieliśmy w muzeum zamkniętą imprezę. Ludzie próbowali zestawić turniej Quake'a na Amigach, a ja bujałem się na fotelu w kanciapie i rozmyślałem.

Monochromatyczne obrazki zasadniczo składają się w większości z pustych miejsc, zwłaszcza jeśli podczas konwersji nie użyjemy ditheringu, wszystkie detale trafił szlag. To znaczy, że mamy wiele miejsc, gdzie znak reprezentuje pustą przestrzeń. Dopisałem na szybko warunek, który pomijał w generatorze znaki, których bajty sumują się do zera. Wyglądało obiecująco, ale skoro już robię redukcję to mogę zrobić ją dla wszystkich elementów.

Dodałem więc następującą funkcjonalność: po wygenerowaniu zestawu znaków i mapy pamięci ekranu skanuję ten pierwszy w poszukiwaniu duplikatów (taki sam układ pikseli), usuwam je, następnie masuję reprezentację ekranu wstawiając wartość oryginalnego, indywidualnego znaku. Efekt? Z tysiąca unikalnych elementów zszedłem do dwustu siedemnastu.

W życiu tak już jest, że po zbyt łatwym sukcesie następuje zbyt bolesna porażka. Dane są już wygenerowane nawet kod źródłowy w BASIC-u wydaje się poprawny, gdy oglądam go w Vimie. Po transporcie do emulatora znów coś się psuje.

Moja leniwa, naiwna generacja, wypluła źródło, które, co prawda zamienia się na poprawne tokeny, ale ilość poleceń wykracza poza domyślnie przyznaną przestrzeń w pamięci dla programów w BASIC-u. Podciągnąłem portki i zamieniłem te wszystkie POKE na prawilne bloki DATA. Dochodziła już druga w nocy, Piotrek przyszedł się skarżyć, że jedna z Amig nadal nie chciała się podłączyć do serwera Quake1, a na moim ekranie pojawił się wreszcie obrazek. Odczułem ukłucie szczęścia, postanowiłem, że nagram wideo z pierwszego odpalenia na prawdziwym komputerze, a po nagraniu klipu, że napiszę też o tym. W tekst już patrzycie, zapraszam do obejrzenia wideo.


Czasem trafi się koincydencja szczęśliwa. Lain, statyczny szum kineskopowego ekranu, goniący raster, masa komputerów i kabli. Estetyka.

Majestatyczne. Obrazek wylewa się na ekran z prędkością melasy, ale całość ma przez to jakiś urok. Człowiek może prawie zobaczyć okiem jak poszczególne bajty snują się w pamięci. Mozolnie, ale do celu. Byłem zadowolony, uzyskałem to, co chciałem, choć jak przewidywałem kod generatora przypomina eksplozję w kloace.

Został jeszcze jeden dzień weekendu możemy dla zabawy dorobić generator wypluwający kod w assemblerze. Będzie szybciej, nie ma wątpliwości. Ale o ile szybciej? Chciałem dać wszelkie szanse BASIC-owi, zoptymalizowałem więc nieco część rysującą, a w assemblerze zamiast używać normalnej metody użyłem makra generującego niekończącą się wieżę mnemoników LDA i STA, symulując blok DATA.

Stworzyłem obraz dyskietki zawierający obie wersje, wysłałem ją sobie do domu, gdzie mogę zrzucić obraz bezpośrednio z komputera i złożyłem wideo z działaniem obu tak, abyście mogli porównać. Po lewej BASIC, po prawej assembler, ale pewnie byście zgadli.


Nie mrugaj, bo przegapisz.

Po lewej skończyło poniżej minuty, po prawej poniżej sekundy. Nawet ja byłem trochę zaskoczony, choć nie powinienem być.


Jeśli wszystko się dobrze ułoży, będę się ukrywał przez większość grudnia. W ramach „prezentu” zostawiłem automatowi cztery opowiadania do opublikowania, jedno na tydzień. Napisałem je latem, ale czułem jakąś awersję przed robieniem rzeczy w „Internecie”. Awersja mi nie minęła, ale idzie nowy rok, trzeba tekstowy budżet zbilansować.

Dwa opowiadania nawet mi się podobają. Które dwa? Przykro mi, będziecie musieli przeczytać cztery żeby to odkryć! Dostępne w dobrych czytnikach RSS. W złych też, bo my tu staramy się robić dostępny Internet, nie podstępny Internet.

  1. LAN i WiFi są w innych podsieciach, a nikt nie wiedział jak zrobić pomiędzy nimi trasę. Ja, jak widać, byłem zajęty

Ofrankowany
⌜ Życie ⌟

Działo się to bardzo, bardzo dawno temu w odległym kraju. Kilka tygodni temu i chyba w Danii, ale nie mam zamiaru weryfikować tych faktów, fakty są tu zbyteczne jak to ma miejsce w sprawach miłosnych, w każdym razie kraj ten ogłosił, że poczta nie będzie już dostarczała listów.

Ostatnie lata były pełne smutnych wydarzeń, ale to wstrząsnęło mną tak mocno, że aż sam się sobie dziwiłem, choć znam się całkiem nieźle, wiem, gdzie mieszkam i PESEL swój znam na pamięć. Łapałem się na tym, że przynajmniej raz dziennie siadałem, patrząc na nic i myślałem do siebie, „jak to, nie będzie listów?”.

Posługując się najbardziej wyrafinowanymi narzędziami antropologiczno-socjologicznymi umyśliłem kiedyś taką hipotezę: żywotność kraju można ocenić po tym jak działa jego poczta. Ile społecznego zaufania potrzeba, żeby powierzać komuś swoje myśli wierząc, że ta cieniutka linia kleju jest wystarczającym gwarantem bezpieczeństwa. Cała ta infrastruktura i logistyka, skrzynki, taryfy, kody pocztowe i listonosze z pękatymi torbami. Więc jak to, nie będzie listów? To co będzie?

Pewnego wiosennego, zimnego, poranka, a pamiętam dobrze, że był zimny, bo stałem boso na kamiennych schodach niecierpliwiąc się nieco na pnącego się w moim kierunku listonosza, przydarzył się taki dialog. Listonosz, gdy już się zameldował, patrzył na kopertę, którą miał mi wręczyć, potem na mnie i wreszcie zapytał:

— Nie mieszkał Pan może na Zgodnej?

Potwierdziłem, że tak.

— Ha! Dobrze myślałem, to był mój rejon kiedy był Pan młody, ile to już lat, z trzydzieści? Pamiętam nazwisko i Zgodną, bo tyle do Pana listów przychodziło.

Powspominaliśmy starą placówkę pocztową, ukrytą za dwoma rzędami żywopłotu, i od tej pory witamy się zawsze, gdy mijamy się na ulicy.

List jako forma komunikacji jest oczywiście z tak głębokiego lamusa, że nawet ja nie mam zamiaru was przekonywać do zmiany zachowań i skasowania komunikatorów. Jest jednak coś takiego, czego się nie da odtworzyć w elektronicznej domenie: czas i intymność. Czas nie tylko jako to oczekiwanie pomiędzy nadaniem a dostarczeniem, czas, który poświęca się na pisanie. I znów, nie dlatego, że odręcznie piszę się wolno, choć to prawda.

List można pisać na przykład cały weekend, tydzień, miesiąc. Dodając kartkę za kartką, zmieniając nastroje, tematy, klucząc szukając w głowie jakiegoś dobrego paragrafu. Porzucać go na noc albo, bo obiad stygnie. A kiedy list jest pisany to leży cierpliwie, nie ponagla, nie mruga powiadomieniami, nie straszy terminem. Mało kiedy mam coś ciekawego do powiedzenia w kwadrans, ale dajcie mi trzy dni, i wycisnę z tego kamienia tyle krwi, że kilka stron się pojawi.

Intymność jest towarem trudno dostępnym, dlatego tak cennym. Kiedy piszesz list, to piszesz go bez widowni, chyba że jesteś nieszczęsnym pisarzem, który w przyszłości osiągnie sławę i niechybnie zostawi po sobie listy, które jakiś student zbierze w małą książeczkę mającą przybliżyć czytelnikom ciebie jako człowieka. Zakładając jednak, że los nam nie zgotuje takiej tragedii, kiedy siadasz do listu piszesz do kogoś. I przez ten cały proces masz tę osobę w głowie. Monologujesz do niej, a co jakiś czas próbujesz zgadnąć jej reakcje.

Nikt inny nie istnieje, nawet jeśli piszesz o innych ludziach twoim jedynym celem jest ten lub ta, kto sięgnie do skrzynki. Poświęcasz jej całą swoją uwagę. Simone Weil napisała, że „[…] Uwaga, najbardziej namiętna, jest niczym innym jak modlitwą. Zakłada wiarę i miłość. Absolutna, niezachwiana uwaga jest modlitwą.” i ma rację, nawet jeśli popełniasz takie bałwochwalstwo i nawet jeśli twoje modlitwy nie będą wysłuchane.

List jest fizycznym artefaktem dającym świadectwo czyjejś nieobecności. Kiedy trzymasz go w ręku wiesz, że ktoś się nad nim pochylał, może zagiął róg niechcący i nie zdążył go wyprostować, a może nie zauważył, zmęczona ręka pisząca coraz mniej czytelnie pod koniec. A może w kopercie znajdzie się coś prócz słów, zdobyta podstępem zakładka z biblioteki, sprasowany liść, zdjęcie, dokładnie wybrane okruchy życia. Banalne i niepodrabialne, jak podpis.

Kiedyś wyślę ostatni list, mam nadzieję, że z powodu śmierci.

Biurko w lesie, świeczki, na biurku papiery i koperty
Ludzie listy piszą


Niech gra muzyka
⌜ Technologia ⌟

📻 Niech gra muzyka!

Wieszcz śpiewał w piosence, „Mój jest ten kawałek podłogi, nie mówcie mi więc, co mam robić” i jest to bardzo słuszna deklaracja. Wychowany na takim przesłaniu moją ulubioną częścią Internetu — moją podłogą — jest LAN. Rządzę się tam, panoszę, zostawiam metaforycznie brudne szklanki w zlewie, poleruję co mi się podoba. Mój zamek i moja piaskownica.

Jedną z moich pieszczotek jest radio, które ustawiłem w LAN-ie muzeum. Impulsem do jego zestawienia była oszczędność danych. W budynku muzeum nie mamy żadnego operatora Internetu, musimy więc posiłkować się modemem GSM. Słuchanie muzyki z lokalnej sieci jest darmowe. To praktyczne działanie miało też inne dobroczynne skutki. Radio gra losowe utwory, nie ma więc walki o to, co brzmi w głośnikach. Poddani losowi, słuchamy, co nam grają. Mimo zbieżnego gustu co do retro-muzyki moje i Piotrka preferencje rozchodzą się w kilku miejscach tak diametralnie, że tylko niemożność sterowania naszymi wyborami może nas pogodzić.

Przykładowo, wchodzę kiedyś do muzeum, te trzy piętra potrafią „domęczyć” człowieka, który zaczyna podróż na parterze już znużony. Otwieram drzwi i słyszę muzykę, a ta chwyta mnie za serce, ale nie by je pieścić, w drugiej ręce trzyma sztylet.

— „Co to jest?!” — pytam

— „A, to taki rap o Minecrafcie…” — odpowiada Piotrek

— „Wyłącz to, kurwa, natychmiast.”

Kolejnym małym plusikiem jest możliwość odpalenia tegoż radia na różnych starych komputerach. Jest pewna frajda, gdy można dłubać w jednym czy drugim pokoju, a muzyka żwawo akompaniuje dobywając się z XP, Amigi czy Maka G4.

Windows XP i WinAMP grają
Znany podkład, znany program — nieznana muzyka.

Odgrażałem się, że kiedyś „wyniosę” to radio do publicznego Internetu. Miesiące mijały, a moje pogróżki okazały się czcze. Do dzisiaj.

Radio WgraSię

8-bit, 16-bit, remiksy, demoscena, OST z gier. 19 GiB. Nieznormalizowane, niektóre krzywo przycięte, samo dobre (w tym kilka złych, które bez wątpienia wylosujecie testując i oburzeni tym nigdy nie wrócicie).

Bezpośrednio: Radio WgraSię.mp3

Playlista: Radio WgraSię.m3u

Zrobiłem też proxy po HTTPS dla tych, którzy cierpią uwięzieni w korporacyjnej klatce, ale przeglądarki Chromopodobne robią mi straszne kłopoty i za nic nie mogę sobie z tym poradzić.


Zaszyfrowane, na wieki wieków, amen
⌜ Technologia ⌟

Otworzyłem drzwi do sali konferencyjnej i wszedłem niezaproszony. Po lewo, koledzy. Na prawo starszy facet z siwą brodą, nowy klient, który przyleciał do nas z Kalifornii. Podchodzę do niego, kładę przed nim zadrukowaną kartkę A4, a na niej mój dowód osobisty. Facet przenosi na mnie wzrok, mówi entuzjastycznie: „Oh!”, wyciąga z kieszeni prawo jazdy i pokazuje mi ekran swojego laptopa. Potem jeszcze chwilę rozmawiamy, a koledzy po lewo siedzą w ciszy z oczami wielkimi jak talerze.

Wreszcie uczestniczący w obradach właściciel stracił cierpliwość i pyta: „Co wy robicie właściwie?”.

A my podpisywaliśmy swoje klucze PGP.

Przeglądając kiedyś strony w Internecie (pamiętacie jak kiedyś się przeglądało strony w Internecie, a nie odpalało pięć aplikacji na telefonie, z których trzy aplikacje zawierają zrzuty ekrany z dwóch pozostałych aplikacji? Mówiliśmy o tym, że serfujemy!) zobaczyłem u kogoś w stopce ciąg alfanumeryczny, który wyglądał jak Base64, może jakiś klucz? Popatrzyłem dokładniej. Rzeczywiście, był to klucz publiczny autora strony. Narzędzie, którego używał nazywało się age. Nigdy o nim nie słyszałem, ale rzadko kiedy słyszę o rzeczach.

Problem z PGP jest prosty: PGP nie jest prosty. Żeby go efektywnie używać trzeba mieć trochę wiedzy w palcach, a zarządzanie kluczami jest męczące, żmudne i podatne na element ludzki. Poza dobrze przetartymi ścieżkami (podpisywanie pakietów w dystrybucjach) ciężko sobie wyobrazić żebym kiedyś użył go ot tak, podsyłając komuś zaszyfrowany plik. Nie ma się co oszukiwać, nawet do osób technicznych raczej wyślę coś, co wypluło zip -er, choć to jak chować klucz pod wycieraczkę, a za framugę zamkniętych drzwi, wsadzić kartkę z „Klucz pod wycieraczką” (autentycznie działanie mojej matki). Popatrzyłem więc w ten age, mając nadzieję, że wreszcie znajdę coś, co mogę włączyć do swojego prywatnego arsenału i coś, co będzie wystarczająco proste żeby wciągnąć innych.

Age nie ma całego tego psycho-fizycznego narzutu PGP. To nie scyzoryk szwajcarski a deska z wbitym gwoździem. Potrafi wygenerować parę kluczy EdDSA, które są krótsze w swojej prezentacji niż klucze RSA, dzięki temu nadaje się do publikacji w stopce czy sygnaturze e-maila, potrafi szyfrować symetrycznie i asymetrycznie. Kiedy szyfruje asymetrycznie w łatwy sposób można wybrać wielu odbiorców (w tym z pliku). Bardzo skromny interface nie pozwala sobie strzelić w stopę. Idealnie wtapia się w skrypty, potrafi przyjąć dane z potoku do szyfrowania, potrafi przyjąć parametry.

I teraz najważniejsze! Można szyfrować asymetrycznie używając kluczy SSH. Praktycznie każdy z nas musi się opiekować ich pękiem, nie ma więc potrzeby tworzenia nowych tożsamości. Serwer ma Wasz klucz w authorized_keys? Serwer może zaszyfrować dla Was informacje. Czegoś takiego szukałem.

Nie pozwólmy jednak, żeby te wszystkie zalety nie przysłoniły nam wad. Age nie potrafi generować podpisów, co dla niektórych może być sporym ograniczeniem. Dla mnie, osoby która potrzebuje programu wygodnie szyfrującego dane asymetrycznie z użyciem już istniejących kluczy, jest to rzecz kompletnie pomijalna. Zakładam, że szyfruję te dane pomiędzy maszynami, które mają do siebie zaufanie. Poniżej zamieszczam wideo z demonstracją działania.

Reszta znajduje się w podręczniku użytkownika, wszystko jest tam takie proste, że szkoda się powtarzać.


Czy zrobiłem tę animację tylko żeby przetestować, czy ffmpeg umie zrobić hardsuby w GIF-ie? Być może.


neko48
⌜ Technologia ⌟

Jeżeli chodzi o mnie, mam dwa tryby życia. Tryb robotniczo-praktyczny, w którym można mnie obciążyć ciężarami i patrzeć jak radośnie wbiegam z nimi po piętrach, oraz tryb ezoteryczno-dłubacki, w którym spędzam nieskończone godziny wymyślając coraz mniej przydatne wynalazki, konstruując nikogo nie bawiące zabawki i ogólnie marnując czas. Gdyby ten potencjometr wbudowany we mnie nie przeskakiwał z jednej skrajności w drugą wiódłbym życie szacownego obywatela, męża, może też stanu, szanowanego pracownika biurowego w sile wieku.

Chwilę przed otwarciem muzeum Piotrek po raz kolejny zmieniał koncepcję regałów. Przyszedł do mnie i zapytał, czy dałoby się na jedną wolną półkę, widoczną zaraz po wejściu, wetknąć jakiś komputer i zrobić tak, żeby wyświetlał jakąś „naszą” animację. Pewnie się da. Ostatecznie drogą eliminacji padło na ZX Spectrum.

Kilka raz wcześniej patrzyłem na asembler Z80 i za każdym razem dochodziłem do wniosku, że nie będziemy przyjaciółmi. Jest w tych mnemonikach coś takiego, że podpieram się pod boki i kręcę głową niezadowolony. Na szczęście na wszystkie retro-platformy powstało oprzyrządowanie pozwalające programować je przy użyciu współcześniejszych narzędzi, całe kombajny pozwalające w jednym miejscu rysować, muzykować i kodować, lub SDK umożliwiające pisanie programów w C, które kompilują się do wykonywalnych aplikacji. C, które znam tylko trochę lepiej niż asembler Z80, wydawało mi się rozsądnym półśrodkiem, ściągnąłem więc z88dk, skompilowałem i wziąłem się za inspekcję.

z88dk to prawdziwy kombajn, można nim nie tylko zbudować programy dla popularnych w Polsce ośmiobitowców, ale też dla komputerów mniej znanych, jak japońskie MSX czy PC-88, nieudanych chwytów brzytwy jak Sam Coupé, współczesnych platform hobbistycznych czy też ostatecznie konsoli Sega Megadrive.

C nie jest językiem specjalnie przyjaznym ośmiobitowym komputerom z niewielką ilością pamięci, ale załączony kompilator wydaje się być dużo bardziej wierną implementacją niż ten dostępny w cc65. Jeżeli powstrzymacie się przed używaniem pamięci jak szuflady, w której trzymacie stare telefony, ładowarki i kable USB, i będziecie mieć pod kontrolą typy zmiennych to wszystko powinno ujść Wam płazem.

Dołączone biblioteki zawierają tradycyjnie (i spodziewanie) obsługę urządzeń wejścia-wyjścia, wsparcie dla grafiki, dźwięku, pomocnych typów danych, zarządzania pamięcią i matematyki.

Tak dozbrojony kompetentny programista powinien móc zrobić coś fajnego. Mi natomiast udało się przez kilka godzin napisać programik, który wypluwa binarne dane z PNG do struktury kompatybilnej z putsprite(), skonwertowałem więc logo muzeum. Znalazłem też załączoną bibliotekę pozwalającą rzutować serię wektorów na płaszczyznę, ukradłem całość i wmiksowałem do środka. I się kręciło.

Logo muzuem «wgrasię»
…a jednak się kręci!

Tryb monochromatyczny nie powala prędkością, a do tego wszystko, co narysujemy musimy sami zmazać, nie umiem też kontrolować pozycji rastra ani przerwań, całość więc działa na zasadzie „nakreśliłem ile mogłem, więcej nie potrafię”.

Na drugi dzień plan wstawiania komputera na półkę upadł, nikomu nie chciało się za pięć dwunasta wiercić dziury w dykcie, jego miejsce zajęła ekspozycja dziwacznych nośników informacji jak ośmiocalowe dyskietki, taśmy streamerów, tańczące na poduszce powietrznej SyQuesty, czy wreszcie – w porównaniu do nich praktycznie pospolite – dyskietki ZIP. Przyjąłem to ze wzruszeniem ramion i zająłem się czymś innym.


W dawnych czasach, kiedy komputery były osobiste, a Internet był miejscem nie przesiąkającym wszystko æther, ludzie musieli na własną rękę instalować różnego rodzaju nieprzyjazne oprogramowanie, wirusy i szpiegulce. Nie było tak łatwo jak teraz, kiedy dostaje się je wprost ze sklepu, co jest dużo łatwiejsze (nawet jeśli czasem trzeba uiszczać czynsz).

Niektóre paskudztwa zakładały maski „zabawek na biurko”, programów i programików pierdzących, skaczących i rozśmieszających znudzonych użytkowników. Jest klasyczne Xeyes1 dla naukowców przykutych do unixowej stacji roboczej, na Amidzie miałem „karaluchy”, które chowały się w podcieniach okien a po ich przesunięciu rozbiegały szukając nowego schronienia, miałem też „śnieg”, który osadzał się na tychże okien ramkach. Pracownicy biurowi mogli się zaprzyjaźnić z purpurowym gorylem (to nie jest slang dla narkomanów). Było wiele zabawy.

Ostatnio mignął mi w Internecie ktoś, kogo awatar przedstawiał kotka. Znam tego kotka! Skąd ja go znam? Oczywiście, to była kolejna zabawka: ganiał za kursorem, zasypiał gdy nic się nie działo, drapał brzegi ekranu. Pomyślałem, że pewnie nawet dobrze wyglądałby gdyby skonwertować go do jednobitowej głębokości. Znalazłem obrazek przestawiający wszystkie fazy ruchu i zacząłem mozolnie (używanie myszki uznaję za obrazę dla swojego majestatu) wycinać, szparować i konwertować poszczególne elementy. Nazywał się chyba Neko98.

Powinno się dać zamienić w programik na ZX Spectrum w chwilę. No, nie będzie latał za kursorem, bo kursora brak, ale niech sobie po prostu biega.

Przerobiłem wszystkie klatki i usiadłem do edytora. Wtedy okazało się, że po raz kolejny przeceniam swoje umiejętności. Kotek wybiegał poza ramki kaszaniąc pamięć, bo przecież przy liczeniu limitów trzeba zobaczyć czy x + dx > max_x, a poza tym klatki – mimo tego samego rozmiaru – nie mają zwierzaka w tym samym miejscu. Kiedy to naprawiłem okazało się, że gdy kotek dotknie nosem dolnego lewego rogu odbija się i leci tyłem do przodu. W bloku decyzji nie podałem dwa razy break i logika spadała mi piętro niżej, dosłownie odwracając kota ogonem w kierunku przeciwnym do kierunku jazdy.

A wszystko skomplikowało się jeszcze bardziej, gdy do czterech kardynalnych kierunków dodałem skosy. Dobry programista w C zrobiłby to jakąś mądrą strukturą, gdzie przesunięcie bitu w lewo zmieniłoby wektor z północnego zachodu na południowy wschód. Po kilku próbach poddałem się i zrobiłem serię if (dx == 0 && dy == 5) { //nosek do w dół }, bardzo efektywnie i w ogóle nie okropnie.

No i jeszcze losowość. Wy, siedzący i czytający to na urządzeniach, na których dzieje się miliard rzeczy, uzbrojonych w bezpieczne, kryptograficzne funkcje, bogatych w entropię (a w najgorszym przypadku w zegar czasu rzeczywistego), nie wiecie, jakim dla mnie bólem głowy jest zrobić, żeby ten kotek nie latał zawsze tak samo. Komputer ośmiobitowy po włączeniu jest praktycznie zawsze w tym samym stanie, co widać szczególnie dobrze podczas używania emulatora, więc źródła losowości są mniej losowe niż gra w trzy karty na rynku.

Ostatecznie machnąłem na to ręką. Dziś zatkałem jeszcze jeden błąd. I skompilowałem całość. Przetestowałem pod emulatorem, wyniosłem na prawdziwy model. Działa. Neko48.

Kotek sobie biega.
Przepraszam za jakość tego zrzutu, emulator i moje zrzucanie wideo ffmpeg nie chcą się ze sobą zejść. Na monitorze CRT2 jest ciut lepiej.

Kod zły? Zły. A kotek se biega. Czas zmarnowany? Zmarnowany z nawiązką. A kotek se biega. Dwie godziny pisać o tym, że kotek se biega? A kotek se biega.

  1. Kiedy zagooglałem, żeby znaleźć link do Wikipedii, pierwszym wynikiem było pytanie «what’s the purpose of xeyes»
  2. Mam wersję bez kątów oraz taką współcześniejszą, niestety miga+balans bieli, jak żyć.

«Zapraszamy»
⌜ Życie ⌟

Zapowiadali opady deszczu na popołudnie. To mi nawet odpowiadało, poprzedniego wieczoru nagrodziłem się zbyt szczodrze z okazji przejechania dużego odcinka trasy Świnoujście — Gdańsk. Był to trzeci dzień jazdy i w planach miałem jeszcze jeden nocleg, ale ostatecznie nie jestem na wyścigu, jeśli będę dalej taki ociężały, a groźba deszczu się spełni zakończę dzień wcześniej.

Jechałem więc nieśpiesznie, bez żadnej mapy, jazda wybrzeżem nie wymaga jakiejś szczególnej wyobraźni, a do tego trasa jest całkiem nieźle oznakowana. Nic specjalnego się nie działo i nic nie działo się tak długo, aż zdałem sobie sprawę, że jadę kilka godzin, deszcz się nie pojawił a w moje ciało wlało się chciejstwo. Jadę dalej, zgodnie z planem. Wyciągnąłem telefon i wbiłem adres wcześniej wybranego noclegu. Nim nastało późne popołudnie byłem już jakieś 10 kilometrów od celu. Telefon poprosił żebym skręcił w prawo. Po prawo znajdowała się uliczka, ale tak na serio leśna dróżka, co bardziej mnie zdziwiło, przez całą długość aż do linii lasu były na niej postawione drewniane konstrukcje wyglądające jak atrakcje dla deskorolkarzy. Sprawdziłem na mapie ile tego zielonego terenu jest przede mną. Wyszło, że kilka kilometrów, nie ma co panikować.

Wjechałem więc żwawo w ten zaułek zieleni i niemal natychmiast zrozumiałem czemu służą te drewniane konstrukcje. Ziemia była tak podmokła, że koła ślizgały się i zapadały na grząskim podłożu. Problem w tym, że podjazd pod te pomosty był wystarczająco wysoki, że trzeba było znacząco podbić koło, a wtedy tylne, obciążone bagażem, stękało uderzając o brzeg. Zjazd był identyczny, czyli zły i dramatyczny. Przeżyjemy, przejedziemy.

Rower na pomostku

Wyjechałem wreszcie na otwartą przestrzeń. Powitał mnie znak mówiący żółtymi literami: «Witamy na naszym torfowisku». Tu czytelnik musi wiedzieć, że była to jedyna droga do miasteczka, poczułem więc wielką irytację na taki jowialny tekst zapraszający mnie do uczestnictwa w potencjalnej katordze jakbym miał możliwość odmówienia. Napis mógłby równie dobrze mówić „Ładnie się wpierdoliłeś” i kończyć się emotikonką, która płacze ze śmiechu.

Zsiadłem z roweru i zacząłem pchać go w kierunku zarośli, które porastały całą okolicę. Kiedy wreszcie przedarłem się na „ścieżkę” przywitały mnie brązowo-zielone oczy brudnych kałuży, niedbale porozrzucane deski, które w zamyśle miały ułatwić przeprawę, ale były zbyt wąskie i śliskie, by spełniać swoje zadanie.

Mokradła odcięte od świata orszakiem krzaków miały własny klimat, było parno, stojąca woda parowała leniwie i śmierdziała zgniłymi liśćmi. Nie mogłem narzekać na samotność, gdyż szybko pojawiły się robale, które z wielkim zainteresowaniem zwiedzały mój kark, czoło i małżowiny uszne, bzycząc, kołując i smyrgając.

Droga miała tyle zakrętów, że człowiek nigdy nie wiedział co czeka za rogiem. Natura ma talent, ze zwykłych krzaków, błota i wody potrafi sklecić tyle konfiguracji cierpienia.

Kilka zakrętów przede mną usłyszałem ludzki głos. Nie mogłem zrozumieć słów, ale ton wydał się mówić całą historię. Krzyknąłem więc nad zieleniną: „Hej! Mam nadzieję, że tam, skąd idziecie jest lepiej niż skąd ja idę!”. Starałem się przyjąć ton nonszalancki, jeśli można taki ton uzyskać krzycząc balansując na przegniłej belce z rowerem na plecach.

Nikt mi nie odpowiedział, ale spotkanie było nieuniknione.

Wreszcie spotykamy się na prostej. To para emerytów-turystów. Ona cała na biało, oryginalnie. On w klapkach z białymi skarpetkami, które o dziwo nadal są tylko lekko uświnione. Jak i ja targają rowery. Pani jest cicha, Pan bluźni po niemiecku. Stanęliśmy wreszcie twarzą w twarz przy większym rozlewisku, którego nie da się przejść inaczej niż przez położoną deskę.

Przeszedłem więc ją w połowie, odebrałem rower od Pani, przeniosłem na drugą stronę, potem to samo z rowerem Pana, wróciłem po swój i znów spotkaliśmy się na środku, bo oni nie zaczekali aż przejdę na drugi brzeg. Będąc człowiekiem uprzejmym i dobrze wychowanym, ustąpiłem kobiecie pierwszeństwa schodząc z deski.

Kiedy stałem tak w zimnej, cuchnącej wodzie i czułem jak delikatnie zapadam się pod ciężarem roweru obserwowałem ich kolana. Rzuciłem im jeszcze "viel Glück", ale nie odpowiedzieli. Wygrzebałem się z bagna i lazłem dalej.

Po mniej niż pół godzinie poczułem, że ziemia staje się coraz solidniejsza, postawiłem więc rower na koła. Daje się jechać! Uśmiecham się do siebie i jadę. W sumie nie było tak źle, jestem trochę brudny, ale odpadnie do jutra. Widzę już las, a za lasem — nocleg! Wtedy spadł deszcz. Wygrażałem mu śmiejąc się, gdyby tylko zjawił się jak zapowiadał!

Buty ubrudzone błotem

Na brzegu torfowiska i lasu napotkałem dwóch osobników, którzy kryli się przed deszczem stojąc pod koroną rozłożystego drzewa. Raczyli się piwem i kontemplowali. Dołączyłem do nich żeby trochę się otrzepać i może też chwilę odsapnąć.

Jeden z nich zapytał mnie z uśmiechem „Fajnie, nie?”, a ręką wskazał na polanę, której uciekłem. Zgodziłem się, że rzeczywiście, ekscytacja jest. Drugi popatrzył na mnie krytycznie i dodał, „Ty to prawie bez szwanku wyszedłeś, godzinę temu wyczołgał się facet, lajkra, kolarka, ujebany w błocie po szyję”. Wybuchnęli śmiechem, a ja im wtórowałem.

Kiedy ich opuszczałem naszło mnie pytanie: czy oni tu siedzą dla własnej frajdy i oglądają głupich turystów panierowanych w błocie. I jeśli, to czemu nie ostrzegli tych idących w drugą stronę, których spotkałem. Pewnie nienawidzą Niemców.


Kiedy następnego dnia jechałem przez las, drogę zagrodziła mi grupa ludzi, która zebrała się w wielkie koło. Dzieci i kobiety pląsały ze świeżo oderwanymi gałązkami drzew i odprawiały jakieś pogańskie rytuały machając nimi nad czymś, a mężczyźni kibicowali. Postawiłem rower na nóżce i podszedłem dokładniej się przyjżeć.

Na środku drogi siedziała wielka ropucha i grzała się w słońcu, nie zważała na potencjalne zagrożenie ze strony samochodów. Dzieci pewnie chciały ją przegonić w krzaki. Wszedłem w środek koła i podniosłem gada w dłoniach, uklęknąłem żeby pokazać go dzieciom, ale tylko jedna dziewczyna skusiła się na bliższe oględziny, stuknęła ją palcem i uciekła. Powiedziałem zgromadzeniu, że to tylko ropucha i można ją bez lęku zabrać z drogi. Kiedy odłożyłem ją w bezpiecznej odległości i wróciłem do roweru mężczyźni z koła byli sceptyczni. „Czy to na pewno jest bezpieczne, brać takie gady do ręki?” zapytał jeden. Odpowiedziałem mu, że w Polsce gady są raczej niegroźne.

„Nawet węże?” dopytał jakiś niewierny Tomasz.

Potwierdziłem, że nawet węże. Wątpliwe, że ludzie, którzy boją się podnieść żabę z ulicy wpadną na żmiję zygzakowatą. Musieliby być jakimiś debilami, którzy czołgają się przez torfowiska…


Reszta trasy — po i przed — nie naraziła mnie na więcej przygód.

Powiedziałbym, że to najprzyjemniejsza trasa jaką zrobiłem i spisuję to teraz nie tylko dla Was, ale też żeby rozpalić w sobie chęć ruszenia dupy. Cały rok spędziłem z nosem w komputerze, siedem dni w tygodniu, nigdy mniej niż dziesięć godzin, wiem, że jakaś eskapada ożywi moją duszę, ale ciało jest niemrawe.

Wschodzące słońce w lesie

Kiedy ruszałem na wschód chwilę przed piątą w chłodny wrześniowy dzień miałem kilka obaw, ale bezpodstawnie. Wybrzeże zaraz po sezonie wakacyjnym jest spokojne i tanie, trasa łatwa (choć nie trzymałem się jej kompletnie), dobrze oznakowana i bezpieczna, powiedziałbym nawet że do zrobienia w trybie kompletnie amatorskim.

No, a teraz kiedy skończyły mi się dobre historie rowerowe nie pozostaje mi nic innego jak zaplanować coś na ten rok i zobaczyć, czy wpakuje się w jakąś zabawną sytuację.

Cztery zdjęcia połączone w jedno: cień na tle morza, mój termos podróżny z Totorkiem, selfie i zdjęcie pod metą w Gdańsku

Jeśli masz trochę wolnych monet możesz zrobić mi przyjemność i pomóc Kai.


socat — kot w skarpetkach
⌜ Technologia ⌟

Mówi się u mnie na dzielnicy, że rok nie wyrok. Rok z hakiem nawiedzam te pomieszczenia pełne starych komputerów i wreszcie dostałem cynk od egzorcysty1, że otwieramy i będę mógł wrócić do ucieleśnionej formy, formy która może pomóc w obsłudze gości.

Fakt, to czy tamto jeszcze nie działa, plakat jest krzywo, skończyły nam się kable, pieniądze — a do niektórych komputerów, cierpliwość.

Nie jest jednak nigdy tak, że ja nie znajdę sobie fałszywego zajęcia, które nas do finiszu nie przybliża. Jest kilkanaście rzeczy ciekawszych niż mycie lamp2 sufitowych. Myjąc je wymyśliłem, że skoro to muzeum starych komputerów to fajnie byłoby żeby nasza książka pamiątkowa udostępniona gościom odzwierciadlała ten etos. Miałem już napisany kod pseudo-BBSu dla C64, można go w chwilę przerobić.

Sprzedałem ten pomysł Piotrkowi i natychmiast się rozmyśliłem. Sytuacji z C64 nie da się łatwo zautomatyzować, mamy deficyt wartościowych monitorów CRT, musiałbym Piotrka nauczyć zaklęć AT, do tego sam modem WiFi potrafi mieć muchy w nosie. Nie ma polskich liter. Im dłużej myślałem tym słabiej wyglądała moja propozycja.

Zmodyfikowałem więc pomysł w następujący sposób: użyjemy starego PC-ta, wciśniemy nań Debiana, a on po włączeniu i napoceniu się nad rozruszania kernela połączy się automatycznie do telnetowego serwisu z aplikacją gościo-książkową. Mamy kilka czarno-białych monitorów, które są tylko dla lansu, wszystko będzie wyglądało jak przeglądanie rynku akcji wartościowych w 1983.

Usiadłem do pisania serwisu i natychmiast mi się odechciało. Ostatni rok tak obrzydził mi programowanie, że wizja zapasów z socketami w stanie surowym ostudziła mój wcześniejszy entuzjazm. Sockety są proste. Wrzucasz bajt, bajt wypływa po drugiej stronie. Wystarczy do tego dodać 60 lat historii terminali i może ze sto lat aparatów telegraficzny i nagle znajdujesz się w sytuacji, gdzie piszesz bezmyślnie kody kontrolne w nadziei, że któryś z nich łaskawie oswobodzi cię z sytuacji w której się znalazłeś.

Przypomniałem sobie, że kiedyś bawiłem się programem, który mógłby skrócić moje męki. O dziwo nazwa wpadła mi prawie natychmiast do głowy, zwykle w takich sytuacjach przypominam sobie kompletnie zmyśloną nazwę i szukam po omacku. To socat, potężne narzędzie pozwalające na przekazywanie danych pomiędzy różnego typu kanałami. Można spiąć porty TCP, UNIX-owe sockety, pliki, programy, potoki i co tam jeszcze istnieje. Co było najważniejsze dla mnie: można wskazać zwykły terminalowy program, przypisać do niego port i „wtelnetować” się weń bez zbytecznego tańca.

Dukając z dokumentacji utworzyłem takiego jednolinijkowca (pominąłem bind żeby każdy mógł skopiować do siebie).

socat TCP-LISTEN:9999,reuseaddr,fork EXEC:htop,pty,stderr,sigint,sane

Odpaliłem telnet pod port 9999 mojego komputera. I oto htop, przeszedłem się po wystawie, powyłączałem kilka komputerów, zastukałem do siebie. Wszędzie htop, zwykle w rozsypce, bo brak definicji terminala. Ale nasz odbiornik jest maszyną linuksową, nie ma więc z tym problemu.

Postawiłem komputer, nie bez problemów.3 Serwis odpaliłem na naszym lokalnym serwerze. Nie pozostaje nic innego niż zmodyfikować inittab i podmienić pierwszy wirtualny terminal na sesję telnetu. O, nie ma już czegoś takiego jak inittab. Okazało się, że takie rzeczy siedzą teraz w systemd, mogłem się tego spodziewać.

systemctl edit getty@tty1

[…]

[Unit]
Description=You are a dumb terminal now
After=network-online.target
Wants=network-online.target

[Install]
WantedBy=multi-user.target

[Service]
WorkingDirectory=/home/wgrasie/hello
ExecStart=
ExecStart=telnet 10.0.0.101 9999
User=wgrasie
StandardInput=tty
StandardOutput=tty

Kilka restartów komputera (literówki, to, że nie wskazałem mu żeby czekał na podłączenie do sieci i jakieś inne problemy, których nie pomnę) i wreszcie zobaczyłem htop przesyłany drogą radiową wprost na mój czarno-biały monitor.

A potem? Potem wreszcie usiadłem napisać tę książkę gości, choć gros czasu poświęciłem na rysowanie głupich ikonek. Textual-paint jest moją oazą spokoju. Cokolwiek tam nie zrobię to mi się podoba, bo niczego nie oczekuję, a coś wychodzi.

Wróciłem dziś do muzeum ekstremalnie zirytowany i postanowiłem, że nie będę robił pracy zawodowej i że złożę to wszystko do kupy. A kiedy to osiągnąłem postanowiłem, że co tam, kwartał niczego nie pisałem, może napiszę też notkę. Zanim napisałem notkę nagrałem też wideo z prawdziwego dema!

Jaki się stałem multimedialny!

  1. Możecie zobaczyć promkę, którą nam nakręcono.
  2. Dla niewrażliwych na robale: sytuacja przedstawiała się tak
  3. „Udało mi się” ściągnąć jakiś dziwaczny netinst, który miał tylko amerykańskie rzeczy, strefy czasowe i jak się okazało — częstotliwości WiFi. Dzięki temu dowiedziałem się o cfg80211 i ieee80211_regdom. Przydatna wiedza, ale nie cieszy gdy zdobywana jest o drugiej nad ranem

Do pałacu
⌜ Literatura ⌟

Mimo wczesnych godzin główna brama urzędu była już otwarta. Wyszli z niej zastępcy burmistrza niosący lektykę. Postawili ją na ziemi i przyjrzeli się jej krytycznie. Nikt nie chciał tego powiedzieć na głos, ale była to najmniej okazała lektyka na świecie. Zbita z pospolitego drewna, z fotelem bez podłokietników, niewysadzana drogimi kamieniami, nieobita szlachetnym suknem, w jej kącie leżał czarno-biały koc z nadrukiem tygrysa, jego lewe ucho zdobiła dziura wypalona papierosem przez poprzedniego burmistrza. Być może dystynkcja, jaką jest poruszanie się w lektyce, nie bierze się z tego, jak jest odszykowana, tylko z faktu, że człowiek w niej płynie nad grzbietami podwładnych. Nieefektywność tej formy podróżowania jest więc symbolem władzy. Nieefektywność jest przywilejem potężnych.

Największe wątpliwości miał jeden z najstarszych — rangą i wiekiem — zastępców burmistrza, gdyż to im przypadła zaszczytna rola tragarzy. Koledzy zapewniali go, że pomogą mu nieść, biorąc na siebie większy ciężar. Był on jednak sceptyczny co do tej obietnicy, bo lektyka nie może być niesiona trochę mniej z jednej strony. Reprezentuje demokratyczną solidarność, jeśli jedno skrzydło padnie to cała sprawa się rypnie, a pasażer rozbije sobie łeb.

Nie pocieszały go też słowa, mówione żartem: „Jeśli nasze wizyty w barach mogą dawać jakieś świadectwo toś nadal młody, jesteś jurny jak trzynastolatek”. Może i jest, ale trzynastolatkowie nie są znani z ich siły. Chwycił za jeden drąg i próbował unieść lektykę na wysokość kostek. Opuścił ją ostrożnie, odpiął spinki od mankietów i schował je do kieszeni. Pomyślał jeszcze chwilę i rozpiął dodatkowo trzy guziki od kamizelki.

Ze wszystkich stron budynku zaczynali wysypywać się urzędnicy. Zbierali się w małe grupy i patrzyli na czoło peletonu z pewnej odległości, dyskutowali ściszonymi głosami, pokazywali sobie dokumenty, które trzepotały na delikatnym wietrze. Zachowywali się więc dokładnie tak, jak zachowuje się urzędnik wygnany zza biurka. W jednym miejscu odbywało się coś pomiędzy pokazem mody a wykładem, każdy uczestnik mógł wygłosić mowę o zaletach ubierania się „pod pogodę” i zademonstrować zainteresowanym ilość warstw, w które się ubrał, motywując każdy wybór względami praktycznymi bądź estetycznymi.

Zgromadzenie rozstąpiło się, a przez tak powstałą wycinkę przemaszerowała Pani Burmistrz. Wyciągnęła rękę z mufki i pozdrawiała zgromadzonych, ci pochylali lekko głowy w geście powitania. Podeszła do lektyki i stuknęła czubkiem buta w jej bok.

„Czy to jest na pewno bezpieczne? Bezpieczne i konieczne?” — zapytała.

„«Chyba» i «tak» — to byłaby moje odpowiedzi” — odezwał się głos znajdującego się najbliżej zastępcy.

Burmistrzyni podeszła do najbliższej grupy i, biorąc pod pachę modnie ubranego mężczyznę w średnim wieku, poprowadziła go do lektyki. „Mecenas pozwoli”, dodała wyjmując mu aktówkę z rąk i popychając go na siedzisko.

„Co do licha!” — zawołał prawnik łapiąc się za burty, gdy nagle został wniesiony na ramionach tyczkarzy. Kiedy opuszczono go na ziemię, twarz miał białą a zdrętwiałe ręce nie potrafiły utrzymać zwróconej aktówki.

„Chyba mecenas nas nie pozwie, prawda?” — zażartowała Burmistrzyni, widząc jego wzburzenie.

„Ha, ha” — odpowiedział prawnik.


Spóźnialski pracownik kancelarii zbierał gorączkowo rzeczy z biurka, wpychał papiery do teczek aż stały się zbyt grube, by je zawiązać tasiemką. Szerokim gestem ręki zgarniał zawartość blatu do pudła: długopisy, ołówki, celofanowe papierki po cukierkach, dokumenty, które nie zmieściły się do teczek, okulary z oberwanym noskiem — leżące mu krzywo na nosie i noszone tylko w zaciszu gabinetu, gdyż był zbyt próżny, by przyznać się, że niedowidzi — oraz jedno opakowanie smakowej herbaty, które wyniósł ukradkiem z departamentowego spotkania. Starał się nie myśleć o tym jak o kradzieży, raczej jako o małej nagrodzie.

Gdy wreszcie skończył, wyszedł na schody, obładowany niczym muł. Oparł trzymane pudło o poręcz, podtrzymując wysypującą się brzegami zawartość brodą, i powoli, metodycznie, schodził schodek po schodku. Ludzie mijający go w pośpiechu nie kibicowali mu, targając swój sprawniej zapakowany dobytek, a on, jak parodia Syzyfa, toczy swój kamień w dół.

Dozorca patrzył z niepocieszoną miną na tłum gęstniejący przed bramą. Nie znosił nieporządku, a to był nieporządek najgorszego sortu — usankcjonowany przez pryncypałów. Pęk kluczy, który trzymał w ręku, był bezużyteczny — nie mógł zamknąć bramy, póki z tego zgromadzenia nie przestaną się odrywać pojedyncze osoby z okrzykiem «…jeszcze zapomniałem» lub «A kot? Kot? Kot!» biegiem kierujące się do głównego wejścia. Przez chwilę myślał żeby zamknąć bramę i im się postawić, powiedzieć, że za późno, że są konsekwencje, że trzeba pomyśleć nim się wybiegnie, że nie wypada, ale wtedy zaczęłoby się proszenie, a potem ktoś poszedłby po przełożonego, rozpocznie się pojedynek autorytetów, który z pewnością by wygrał, tylko on ma klucze, a to znów przerodzi się w skandal, a skandal w nieporządek. A nieporządku nie lubił najbardziej. Znosił więc to dzielnie, wiedząc, że po drugiej stronie tej całej sprawy czekają go miesiące ciszy. Pod biurkiem, owinięte w gazetę i ukryte, leżały jego domowe kapcie — bardzo wygodne i niegodne urzędu, który reprezentował. Kiedy już przekręci za nimi klucz, włoży je z pełnym ceremoniałem, a gałka głośności radia zostanie ustawiona na minimum 6.

W księgowości nigdy nie było pośpiechu, nawet gdy był wymagany — zaświadczą o tym ludzie wyczekujący piątkowymi popołudniami na korytarzach, uzbrojeni w niezapłacone rachunki. Główna księgowa podpisywała ostatnie dyspozycje, za jej plecami stał goniec i starał się okazywać opanowanie, ale gdy tylko się zapomniał, tupał niecierpliwie nogą. Ostatni podpisany dokument księgowa podniosła do góry, aby zaobserwować jak atrament zasycha w jej podpis. Następnie złożyła go na pół, na ćwierć i wsunęła do koperty. Z szuflady wyciągnęła urzędową pieczęć i sztabkę wosku. Do jej końca przyłożyła płomień zapalniczki i obserwowała, jak krople spadają w zwolnionym tempie na środek koperty. Odłożyła wosk i tym samym płomieniem odpaliła papierosa. Zaciągnęła się z zadowoleniem, po czym przyłożyła pieczęć. Zza jej pleców dobyło się chrząknięcie: „tu się nie pali”.

Odwróciła się na fotelu z kopertą w ręce podając ją posłańcowi.

„Nie pali się” — przyznała — „ale jesteśmy tu tylko my. Zbrodnia bez ofiar. No, leć już z tymi wypłatami”.

Zza okna zabrzmiało kilka taktów granych na trąbce, jakby dla próby. Księgowa złożyła księgę, ściągnęła kapelusz ze stojaka i wyszła.


Sprzątaczki zebrały się w grupkę, która za chwilę eksplodowała, wyrzucając je na wszystkie strony świata. Jedna szła żwawo przed siebie, pozostawiając czoło migracji za plecami, zdjęła z włosów chustę, uniosła ją nad głowę i upuściła, pogoda jednak nie miała tak z rana wyczucia dramatyzmu, dlatego wiatr nie porwał jej ze sobą, spadła bezkształtnie na bruk ulicy. Niedawna właścicielka odeszła kilka kroków, po czym zawróciła by podnieść chustę z ziemi. Następnie upchnęła ją do kieszeni płaszcza i ruszyła dalej. Dwie inne ścigały się do przeciwległej bramy, ukryły się w jej mroku, a gdyby ktoś je obserwował, zauważyłby, że co kilka minut wychylają się z niej, zerkając na pochód, mówiąc coś do siebie, śmiejąc się i kryjąc się ponownie. Ich hersztka, kobieta o kształcie kciuka i charakterze mafijnego capo, usiadła na rzeźbionej obojnicy obok dozorcy. Wyciągnęła z torby małą butelkę piwa, otworzyła ją sprawnie jednym ruchem. Kapsel wystrzelił w powietrze i upadł na chodnik, skąd, pod spojrzeniem jej kompana, podniosła go teatralnym gestem. Pociągnęła mały łyk, a potem powiedziała, nie oglądając się na niego: „Fajrant”. On, tak samo mając oczy utkwione w spektaklu odbywającym się przed nim, powiedział z krytyką w głosie: „Nie ma nawet siódmej”. Wypiła resztę duszkiem, podniosła się na równe nogi i stanęła przed nim.

— Fajrant przed siódmą, to najlepszy fajrant — dodała, wciskając mu pustą butelkę w dłoń — do zobaczenia na wiosnę.

Trębacz na przedzie chciał zagrać jakąś melodię, dającą sygnał, że czas zacząć pochód. Dmuchnął kilka taktów, ale przerwał, gdyż poczuł na sobie nienawistne spojrzenie. Dwa piętra wyżej, w kamienicy przylegającej do głównej ulicy, w oknie pojawił się upiór mieszkańca. Jego spojrzenie, pełne znużenia i pogardy, drążyło w potylicy kapelmistrza. Ten, zganiony tak bezsłownie, próbował zagrać nieco ciszej, ale na trąbce nie da się grać ciszej, a przynajmniej — nie warto. Zrezygnował więc, wspiął się niewysoko na słup, wykonał gest „na przód”, przedłużony przez trąbkę trzymaną w ręku.

Karawana ruszyła na południe.

Lektyka chybotała się tak bardzo, że burmistrzowa postanowiła położyć się na wznak, aby równo rozłożyć ciężar. Bała się, że przy kolejnym przechyle przesunie się zbyt daleko, a taka zmiana środka ciężkości doprowadzi do katastrofy. Pochód wyglądał jak czerep starszego mężczyzny, co i rusz prześwitywała łysina, wytarta przez pracowników departamentu, którzy postanowili zabrać dobytek: wszystkie akta, teczki, foldery; niektórzy zabrali ze sobą nawet kwiatki doniczkowe, nie wierząc w zapewnienia dozorcy, że się nimi zajmie. Nim wyruszyli w tę drogę, pytano ich wielokrotnie, czy wszystkie te akta są rzeczywiście potrzebne. Większość spraw i tak nie ruszy do wiosny, ci najbardziej służalczy twierdzili, że oczywiście, są. Czym jest biurokrata bez akt? Każdemu, który się przy upierał, uściśnięto dłoń, wręczono wózek i życzono powodzenia.

Małe kółka wózków skrzypiały, a gdy przestawały, można było usłyszeć strzępki dialogów: „…mogliśmy je przynajmniej wyjąć z szafek”, „zamknij się”.

Kilkaset kilometrów dalej kończono myć okna, zdejmowano pokrowce z mebli, pojawił się pierwszy ogień w kominku. Jeszcze zaspana służba przygotowywała odświętne ubrania. Urząd miasta zmierzał do zimowego pałacu.

Dozorca poruszył się, gdy ogon pochodu wreszcie wykonał krok do przodu. Pomachał im, a następnie zamknął lewe okno bramy, potem prawe, i przekręcił klucz. Westchnął na dźwięk zgrzytu mechanizmu. Chwilę później radio ryknęło muzyką.


Zakała
⌜ Technologia ⌟

Wszystko zaczęło się kilka tygodni temu. Piotrek zapytał mnie, czy „mogę zrobić, żeby SSL działał” na komputerze, który sobie właśnie postawił. Była to replika jego stacji roboczej z młodości, działającej pod kontrolą Mandrake Linux, o którym wiem mniej więcej tyle, że „chyba był na RPM-ach?”.

Niestety, przerabianie systemu, do którego nie można nawet znaleźć pakietów źródłowych wydawało mi się zajęciem żmudnym i praktycznie niemożliwym. Po kilku próbach powiedziałem mu, że się nie piszę na tę przygodę.

Sieć zmieniła się bardzo w ostatnich dwóch dekadach. TLS1.3, Unicode, współczesne style kaskadowe. To wszystko powoduje, że nawet taka prosta rzecz, jak odwiedzenie strony z opisem problemu nękającego stary komputer nad którym pracujesz staje się zadaniem nie do przeskoczenia.

Gdzie istnieje problem, tam istnieje półśrodek. Rozwiązanie ułomne, ale istniejące; niedopracowane, ale pracujące. A że miałem kilka godzin wolnego pomiędzy projektami postanowiłem spróbować swoich sił. Wpierw pomyślałem żeby napisać proste proxy, ale szybko porzuciłem ten pomysł: a) robienie MITM jest uciążliwe dla klikającego, gdyż każdą stronę trzeba potwierdzić jako wyjątek, do tego nie wszystkie przeglądarki będą potrafiły sobie dać radę z taką sytuacją i b) odpluskwianie TCP na starych komputerach będzie zbyt mocno irytujące na projekt robiony dla sztuki i frajdy po godzinach.

Ograniczyłem więc listę rzeczy, które chciałem osiągnąć: a) TLS bez walki b) odchudzanie w czasie rzeczywistym obrazków c) łatwe konfigurowanie dla specjalnych przypadków d) adaptacja kodowania znaków.

Napisałem więc serwis, który akceptuje w ścieżce pełne nazwy adresów, na przykład http://serwis/fuse.pl/beton/zakala.html, konsumuje HTML i adaptuje go na potrzeby starego komputera, następnie zwraca całość w sposób zjadliwy: bez względu na to, czy strona komunikuje się wyłącznie po TLS albo używa H2 my dostaniemy wszystko obrane, jak winogrona wkładane do ust cezara przez dworzanki.

Usuwam wszystkie odwołania do JS, a CSS renderuje tylko gdy użytkownik sobie tego zażyczy. Obrazki są przerabiane na GIF-y, a ich paleta redukowana jest zależnie od potrzeb do 4, 16, 64 lub 256 kolorów. Wszystkie odnośniki znalezione na wyrenderowanej stronie są przepisywane tak żeby można było je kliknąć i kontynuować pracę w kontekście Zakały — bo tak, bez powodu, nazwałem ten projekt.

Poza kilkoma potknięciami (przekodowanie znaków będzie źródłem zgryzot) projekt poszedł bardzo sprawnie i nim jeszcze umilkły wystrzały obwieszczające nadejście nowego roku chodziłem od jednego komputera do drugiego oglądając Zakałę w działaniu, szczerząc się jak narcyz przeglądałem własne teksty.

Ponieważ nie mam siły już tego usprawniać usiadłem do chwalipięckiej notki, kto mi zabroni. Wpierw dajmy demo, obraz wart tysiąca słów, a tu 24 FPS, więc ile to słów, drodzy państwo, ile słów.

A oto efekty na ekranach komputerów.

AmigaOS 3.2

Na AmigaOS 3.2 i antycznej przeglądarce IBrowse nie udało mi się uzyskać poprawnego kodowania, ale reszta działała bez problemu. Spędziłem ponad kwadrans ślęcząc nad klawiaturą, bo wpierw nie mogłem znaleźć niczego, co potrafi zrobić zrzut ekranu, a potem nie mogłem przekonać Amigi żeby wbiła się do naszego serwera FTP. Nigdy nie zgadniecie, co było problemem! Padł DNS.

MorphOS

Dla MorphOSa nadal powstają współczesne przeglądarki więc nie spodziewałem się niczego innego niż kompletnego sukcesu. Poniosłem kolejną porażkę próbując zrobić fotkę, znalazłem jakiś program, którego UI szpeci prawą stronę.

BeOS

Na BeOS 5.0.2 zrzut ekranu poszedł od ręki, jedno pacnięcie PrtScr zapisało obrazek w katalogu domowym. W formacie TGA, co było trochę niespodziewane, ale nie przewidywałem problemów. Te pojawiły się, gdy próbowałem wynieść go „do siebie”.

Wpierw kilka minut usuwałem nieistniejący konflikt adresów IP. Ten konflikt okazał się być wyciągniętym kablem ze switcha, co zrobiłem własnoręcznie kilka dni temu, sprzątając. Potem okazało się, że Piotr nie zainstalował niczego do Samby, a klient FTP dostępny na terminalu był tak stary i nierozumny, że za nic na świecie nie chciał się połączyć do naszego serwera w trybie anonimowym. Poszedłem więc do biurka ustawić jakiegoś użytkownika. Reset serwera FTP udał się tylko częściowo, gdyż umierający proces nie wypuścił z rąk portu, a nowy nie mógł się nań doczekać. Postanowiłem zresetować cały komputer (oto powód dla którego padły DNS-y), przetestowałem logowanie u siebie z sukcesem, ale BeOS nadal nie potrafił się dogadać.

Podniosłem komputer za frak do góry i znalazłem porty USB, dobrze, w takim razie obrazek wróci ze mną na USB. Wpiąłem urządzenie i czekałem na jakąś reakcje, ta nie miała zamiaru nastąpić. Postanowiłem szukać szczęścia przy innych maszynach, gdy wpadła mi w oko dyskietka! Może być i dyskietka!

Wsadziłem ją do stacji, poprzesuwałem okna żeby znaleźć ikonę, a tu nagle objawił się dysk USB. Dobrze, to praktyczniejsze. Nagrywam plik, pojawia się na liście, sięgam ręką zza komputer… pendrive nie jest wpięty. Fakt, zabrałem go do mojego komputera sprawdzić, czy działa.

Przyniosłem go więc znów, wsadziłem — cisza. Wiedziony intuicją popchnąłem palcem wyciągniętą wcześniej dyskietkę. Gdy tylko mechanizm szczęknął, na blacie pojawiła się ikona USB. Jak tu nie wierzyć w cuda?

MacOS 9.2

MacOS 9.2 posłusznie zapisał zrzut ekranu w formacie, do którego nie chciał się przyznać żaden program. Kiedy piszecie na terminalu file image i w odpowiedzi dostajecie image: data wiecie, że będzie krucho. Być może to efekt jednego z tych genialnych pomysłów myślących inaczej, ale ja się mało znam na tym. Zainstalowany Photoshop dał sobie radę z zapisaniem go w PNG.

w3m

Na terminalu w3m nie miał oczywiście problemu z niczym, ale co szkodzi zerknąć? Tym razem obyło się bez przygód.

Czy to się nam do czegoś przyda? Nie wiem, ale spędziłem kilka godzin zabawiając siebie, a teraz, mam nadzieję, Was. Czego więcej chcieć od Sylwestrowej nocy?


Wszystkiego
⌜ Literatura ⌟

Drzwi stacji benzynowej otworzyły się z cichym sykiem, wpuszczając grudniowe zimno i grubego pana w stroju Mikołaja. Nowo przybyły podszedł do regału z alkoholami, przemierzył go wzdłuż, zawrócił na początek, przyklęknął do najniższego rządku, na którym ustawiono najtańsze i najokropniejsze napitki. Wyglądał na zdecydowanego, wrócił po koszyk, a potem zaczął wkładać butelkę za butelką, a gdy skończył podniósł swój łup z wysiłkiem i podszedł powoli do kasy.

Wyciągnął jedną butelkę i powiedział: „Czternaście takich samych”.

Wbiłem je posłusznie bez liczenia, to był mój świąteczny akt wiary w ludzką uczciwość. Do tego ciężko ustawić tyle butelek na małej ladzie. Głęboko w duszy wiedziałem też, że jednym z powodów tak lekkiego podejścia do sprawy było to, że musiałem pracować w wigilię. Jeżeli w koszyku było siedemnaście butelek to niech to będzie kara dla właściciela. Jedyna kara, jaką mogłem mu wymierzyć.

Facet długo szukał pieniędzy oklepując wszystkie miejsca, w których kostium mógł mieć kieszenie. Wydobył wreszcie skórzany portfel wypchany, jak zauważyłem, plikiem pieniędzy w różnych walutach. Znalazł odpowiedni banknot i podał mi go.

— Czy mogę wyjść z koszykiem? Nie mam jak się z tym zabrać, zaraz wrócę.

Machnąłem ręką, „Oczywiście”.

Nie wracał wystarczająco długo, żebym zaczął dopisywać utratę koszyka do listy kar, które wymierzam właścicielowi, a kiedy wreszcie pojawił się znów w drzwiach, byłem prawie rozczarowany, że muszę ją wykreślić.

W jednej ręce niósł koszyk, który odstawił na miejsce przy wejściu, w drugiej trzymał okazały prezent, pięknie zapakowany w błyszczący, zielony papier i przepasany czerwoną wstążką, finezyjnie zawiązaną w kokardę.

Postawił go na ladzie, podszedł jeszcze raz do półki z alkoholem i wrócił z kilkoma butelkami.

„Prezent dla ciebie, butelki dla mnie” — zażartował, a wraz ze słowami dało się odczuć w jego oddechu, że podczas nieobecności opróżnił kilka wcześniej zakupionych. To by tłumaczyło czemu tak długo wracał z koszykiem.

„Nie no, nie musi pan…”, chciałem szybko odpowiedzieć, ale on przerwał mi — „Bierz pan i mnie nie wkurwiaj. Mam tego od chuja, nawet nie wiem co to jest, miałem listę, ale wywaliłem ją.”

— „Ciężki wieczór?”, zapytałem wcielając się w rolę barmana, który wysłucha z chęcią problemów pijanego klienta, rolę, której nie powinno się grać podczas dyżuru na całodobowej stacji benzynowej.

— Nawet pan nie pytaj. Postęp! Wie pan, że słowa «postęp» i «podstęp» pisze się prawie tymi samymi literami. Postęp-podstęp! I chuj, po zawodzie, gdzie kominy?!

— Kominy? — zdziwiłem się.

— Kominy, kominy. Widzi pan, teraz kurwa, centralne ogrzewanie wszędzie, albo gazowe, albo nie wiem co, a nawet jak komin, to kratki, regulacje, albo ślepy idzie gdzieś w pizdu.

— Aha — zgodziłem się.

— A ja przecież te prezenty wnoszę przez komin. To jest jasne, wszyscy o tym wiedzą. Wszyscy, tylko nie architekci tych domów z tektury, sklejki i płyty karton-gipsowej. Nie ma kominów, nie ma świąt, nie ma mnie. Nie wrzucę przecież prezentu do pieca na eko-groszek, wpierw musiałbym się włamać do piwnicy, a poza tym się spali, nie?

Otrzepał portki, zabrał z lady butelki i wyszedł. Po chwili dało się słyszeć dźwięk dzwoneczków, które po szybko ucichły. Wtedy zdałem sobie sprawę, że nie policzyłem Mikołajowi za drugi komplet flaszek, dopisałem więc to do listy szkód na rzecz właściciela, to był mój podarek. W tym zapakowanym był wóz strażacki, który migał światłami i wył syreną po naciśnięciu guzika. Nawet niezły prezent, choć ostatni, który zostanie podarowany.


Bez odpoczynku
⌜ Literatura ⌟

Dwoma krokami w przód i jednym krokiem w bok odmierzył prostokąt, ostrym brzegiem łopaty zaznaczył jego brzegi. To może zająć chwilę. Postawił lampę bliżej, jej światło odbijało się miękko od otaczającego go marmuru. Łopata dźwięczała uderzając w zmrożoną ziemię. Wpierw szło ciężko, ale wiedział, że to tylko kwestia czasu, nie kopał takiego dołu pierwszy raz.

Ziemia powoli pochłaniała go, wpierw zniknęły kostki, przerzucone kupki rosły, otwór skrył łydki, potem uda, kupki urosły jeszcze wyżej, niezabezpieczone osuwały się do dołu. Przesunął latarnię bliżej. Jeszcze jakieś pół metra, myślał, wzdrygając się, chłód w dole przenikał całe ciało, mroził kości i nerwy.

Setkę zamachnięć później łopata napotkała opór, a wykop odkrył swoje tajemnice. Kopał więc coraz ostrożniej, nabierając cienkie warstwy i grabiąc okolicę dookoła trumny.

W strzaskanej ciężarem trumnie leżało ciało, ubrane odświętnie, jak każe tradycja, skrzyżowane ręce, sztywne i chude palce obciągnięte szaro-siną skórą. W butonierce, złożona ze starannością, chusteczka koloru pudrowo-różowego, kontrast całej tej sceny. Głowa trupa była niemal kompletnie przykryta osypującą się ziemią, wystawał tylko kawałek brody.

Sięgnął za krawędź dołu po lampę, postawił ją w nogach denata, a sam przykląkł przy jego głowie. Zaczął usuwać piach delikatnymi ruchami, jak matka czyszcząca buzie urwisa ubrudzonego watą cukrową, wyjął ze swojego płaszcza mały pędzelek, którym z zacięciem usunął resztki piasku z oczodołów. Sięgnął po lampę i przy jej świetle ocenił swoją pracę. Następnie położył mu dłoń na czole, pochylił się jeszcze bliżej i zaczął mu szeptać na ucho słowa. Tylko do niego, tak jak zwierza się kochanek o świcie. Podniósł się wreszcie na sztywnych nogach i wspiął się po ścianie wykopu na wolność.

W dole coś się poruszyło. Rozeszło się stęknięcie a potem odgłos głęboko wciąganego powietrza. Sekundę później z dna dobył się rozdzierający, bolesny, pierwotny wrzask, tak gwałtowny, że nawet on, znający scenariusz spektaklu, który się przed nim odgrywa, cofnął się instynktownie. Z grobu wystrzeliły ręce, palce próbowały pochwycić coś, wreszcie wbiły się w ziemię po knykcie i całe ciało wspięło się po brzegu na otwarty świat, odczołgało się kawałek i zastygło. Minęło kilka bić serca. Wskrzeszeniec leżąc na boku przycisnął dłonie do uszu jakby chciał uciszyć uciążliwy hałas słyszalny tylko jemu. Zaczął powoli gramolić się do przyklęku, ślamazarny i skoordynowany, a gdy wreszcie osiągnął tę pozycję zadarł głowę i patrzył w niebo szeroko rozwartymi źrenicami. Oddychał powoli, głębokimi haustami, a jego dłonie spacerowały wzdłuż jego ciała starając się znaleźć granicę między nim a światem, który go otacza. Gdy dotarły do twarzy naciągnął skórę na policzkach jakby próbował sprawdzić, czy może ją zdjąć jak maskę. Wreszcie dłonie opadły bezładnie po bokach.

Nekromancer zbliżył się powoli niosąc lampę, zatrzymał się przy nim i kiedy wreszcie ich oczy się spotkały, przemówił:

„Byłeś już gdzie indziej, za kurtyną, ale teraz jesteś znów tu, jesteś potrzebny. Stań na nogi, to był zły sen, czarny sen bez wspomnień, łatwo o nim zapomnieć. No, wstań”

Podał mu rękę, a gdy ten jej nie wziął, złapał go pod ramiona i postawił do pionu, następne dalej trzymając go kontynuował:

„Czy pamiętasz kim jesteś? Pomyśl chwilę, całe życie wpłynie w ciebie jak tylko przypomnisz sobie kim jesteś. Czekaj, pomogę ci, możesz stać?” — skinięcie — Nekromancer wydobył z kieszeni woreczek i podał go chyboczącej się przed nim osobie, pytając — „wiesz, co to?”

To były narzędzia, narzędzia, których używał przez lata, obracał je w dłoniach jak relikwie, jego zmętniałe do tej pory oczy nabrały wyrazu. Wyjął jeden śrubokręt i przyjrzał się mu uważnie. „Niezbyt dobry jest”.

Nekromancer uśmiechnął się, sprawa zakończona.

„Nic innego nie mogłem znaleźć w sobotę o tej godzinie, w ogóle ta cała sprawa zaczęła się od tego, że jest sobota wieczór…”

— „Byłem ślusarzem!” — przerwał mu w pół słowa ślusarz

— „Nie, nie…” — poprawił ten, który oswobodził go ze śmierci — „Jesteś ślusarzem. Znów.”, wziął go pod rękę i zaczęli iść w kierunku wyjścia z cmentarza, Nekromancer podjął przerwane wcześniej zdanie:

„Wszystko, jak mówiłem, wzięło się z tego, że jest sobota i jest wieczór. Idealny czas na nekromancję, fatalny czas żeby zgubić klucze do domu”


Internet, czyli tam i z powrotem
⌜ Technologia ⌟

Miałem dobry pomysł na świąteczny prezent. Nic z niego nie wyszło, elektronika, nawet taka na poziomie mikrokontrolerów, wymaga trochę więcej uwagi niż mogłem poświęcić. Koniec końców projekt pójdzie do szuflady, zdobyta wiedza do główki, a wy jeszcze, w gratisie, macie z tego notkę.

Błoto w złoto.

W zamyśle mój projekt miał się komunikować z Internetem, co jest niestety wymogiem współczesnych czasów. Mógłbym wysyłać poprawki do mojego, pisanego mocno na czuja, kodu na dyskietkach 5¼, obawiam się jednak, że odbiorczyni takiego prezentu uznałaby mnie za większego wariata niźli jestem. Musi więc być Internet, przynajmniej tyle go żeby HTTP GET mogło nakapać trochę informacji do pamięci urządzenia.

Naszła mnie szybko wątpliwość. Jak dać komuś urządzenie, które musi się dobić do WiFi bez znania zawczasu hasła i nazwy AP? Dla testów mogę sobie wpisać na sztywno do kodu, ale nie mogę przecież napisać e-maila i zapytać, to zepsuje niespodziankę. Problem został oczywiście rozwiązany dawno temu.

Urządzenie po podłączeniu sprawdza, czy ma zapisane ustawienia, jeśli nie, przechodzi samo w tryb AP, możemy się do niego podłączyć telefonem czy komputerem, ono serwuje nam mikro-portal w którym wybieramy sieć do której ma się podłączyć. Jeśli negocjacje się udają, informacja zostaje zapisana, a urządzenie przełącza się w normalny tryb. Proste i przyjemne, jeszcze prostsze i przyjemniejsze z prostego powodu, że do stosu Arduino jest gotowa biblioteka, pięć minut roboty i sprawa rozwiązana.

Niestety, to był jeden z niewielu sukcesów podczas tej dłubaniny, odniesiony głównie dlatego, że całą pracę wykonał ktoś inny.

Przedwczoraj poddałem się ostatecznie, zgasiłem światło i usiadłem w kącie rozmyślając nad sensem robienia czegokolwiek. Sen nie nadchodził bo kawa, którą piłem kubek za kubkiem, trzymała mnie nadal do pionu. Wtedy zrodziło się pytanie: a czy taką sztuczkę można zrobić pod Linuksem? Znaczy, że można to jest wiadome, ale jak? Mam na przykład w plecaku RPi, idę do kawiarni, podłączam jej prąd, komputerek nie zna sieci, siedzi więc oniemiały. Jakby się do niego dostać. I tak, poprawna odpowiedź to „wyjmuję z plecaka skrętkę i podłączam do laptopa” ale myślmy jak ludzie-ludzie.

Kilka lat temu ustawiałem komuś tymczasowy bieda-router na RPi, pamiętałem więc o hostapd. Zainstalowałem go, pogubiłem się w konfiguracji i wszystko się rozwaliło. Miałem już gasić światło i wrócić do swojego kąta rozpaczy, gdy wpadła mi w oko nowa informacja. Używając konsolowego klienta Network-Managera można zrobić jedną komendą hotspot. Sprawdziłem. Ruszyło z miejsca. Teraz starczy to wsadzić gdzieś na start i wymyślić jakiś grep, który odkryje, czy interface sieciowy jest do czegoś podpięty.

Wpierw zmontowałem wersję, którą wetknąłem do rc.local, tu też pełen sukces, ale że apetyt rośnie w miarę jedzenia wymyśliłem jeszcze bardziej zagmatwaną, kompletnie hipotetyczną sytuację. A co jeśli stracę dostęp do WiFi kiedy system jest już włączony. Zostawiając to w rc.local muszę się pogodzić z wyciąganiem zasilania i żyć nadzieją, że karta SD nie zejdzie śmiertelnie. Kod powinien sprawdzać zmiany z lewa w prawo i na odwrót, dodałem więc pętlę i wstawiłem całość do Crona z @reboot.

sleep 60 # najlepsza metoda wykrywania czy system
         # już wstał, 50 lat tradycji
status="inet"
device=${1:-wlan0}
echo "Watching $device"
while true; do
        echo "Sleeping"
        sleep 30
        if ! ip addr show $device | grep -q "inet "; then
                if [ "$status" != "ap" ]; then
                        sudo nmcli d wifi hotspot ifname $device \ 
                                ssid PiOffline password czescczesc # złamałem, bo
                                                                   # wychodzi mi
                                                                   # za div :(
                        sudo systemctl start dnsmasq
                        status="ap"
                fi
        else
                if [ "$status" != "inet" ]; then
                        sudo systemctl stop dnsmasq
                        status="inet"
                fi
        fi
done

Wyłączyłem Internet w domu, włączyłem RPi, po kilku sekundach pojawiła się w trybie AP, zalogowałem się przez SSH, wskazałem inną sieć, połączenie SSH padło, RPi stała się widoczna w sieci. Brawo, brawo.

Nie zrobiłem jednej trudnej rzeczy, ale zrobiłem dwie łatwe, sumuje się to do ¾, co jest akceptowalnym wynikiem jak na piątek trzynastego.


Martwe gołębie
⌜ Życie ⌟

1

Wychodzę z brudnego przejścia podziemnego, takiego wyłożonego fałszywym marmurem, pełnego okruchów miejskiej egzystencji, piachu naniesionego przez śnieg, ubazgranych ścian i zapachu mokrego rozkładu.

Na ostatnich stopniach widzę dwa gołębie, tulą się do siebie, kiedy podchodzę bliżej widzę, że jeden nie żyje. Patrzę jak drugi pokłada na nim głowę i mówię na głos: „kolega ci umarł, co?”. Stoję tak kilka sekund patrząc.

Żywy gołąb zaczyna wyrywać pióra ze swojego kompana, metodycznie, jedno po drugim, żeby dostać się do jeszcze ciepłego mięsa. Pokonuję ostatnie stopnie, żółć podchodzi mi do gardła.

2

Na ścieżce okrągłego skwerku w parku, otoczonego ławkami z fontanną zajmującą centralną pozycję, leży martwy gołąb. Stoją nad nim dwaj chłopcy, jeden wielki i tłusty, z włosami przystrzyżonymi na krótko, obleczony w źle pasującą podkoszulkę, ma pudrowobladą twarz z policzkami rozpalonymi czerwonymi wypiekami, drugi mały, kudłaty, trzyma dwa plecaki.

Ten wielki ma dłonie pełne białych płatków, które oberwał z miejskich kwietników. Sypie nimi znad głowy, ma twarz zaciętą, skupioną jakby brał to zajęcie kompletnie poważnie. Płatki lądują misternie wokół martwego gołębia, a kilka na nim samym. Cała scena jest zamrożona, on z wyciągniętymi dłońmi, kolega z plecakami, nie mówią nic do siebie, nie ruszają się. Ruszają się tylko płatki, odbywa się prawdziwy obrzęd.

3

Koty, będąc biurową klasą średnią tygrysów i panter, są oportunistyczne z natury. Gołąb umierający na ulicy to doskonała igraszka. Skręcam w Dowborczyków i widzę na asfalcie dwa skrzydła, idealnie białe, połączone tylko kawałkiem zakrwawionych kości. Wyglądają jak część kostiumu, które dziecko założyłoby na ja jasełka gdyby przypadła mu rola aniołka.

A może anioły są w rzeczywistości małe, ostatecznie były te dyskusje ile ich zmieści się na łbie szpilki. Przybywają niezauważone uzdrowić tę chorą krainę by skończyć w kocich szponach? To tłumaczyłoby ogólną sytuację świata.

Raczej jednak martwy gołąb.


Na papierze
⌜ Życie ⌟

Wszystko zaczęło się od Koszałka Opałka.

Koszałek Opałek był krasnoludem o którego życiu dowiedziałem się z winylowej płyty. Choć nie pamiętam już szczegółów wiem, że był naiwny, siedział całe dnie na grzybie ze swoją księgą i zapisywał w niej rzeczy. Wydawało mi się to idealnym sposobem na życie, bo życie pięciolatka nie jest proste.

Właścicielka kamienicy w której mieszkaliśmy trzymała w ogródku kury, ta część dzielnicy Łódź-Górna różniła się od niedalekich wiosek tylko kodem pocztowym. Wyczekałem swój moment, wkradłem się na teren i zebrałem kilka kurzych piór, które wydawały mi się odpowiednie, długie, niepostrzępione, białe i brązowe. Gdy Ojciec wrócił wieczorem zapytałem jak by się zabrać do przerobienia takiego zwykłego kurzego pióra w takie warte skryby. Ojciec zmierzył mnie wzrokiem i powiedział, że muszę naciąć czubek pod kątem. Noża oczywiście mi nie wręczono, ale znalazłem gdzieś nożyczki i dokonałem dzieła.

Teraz atrament. Prawdziwego atramentu nigdy na oczy nie widziałem, ale miałem pomysł. Ukradłem szklankę, nalałem do niej wody z beczki, a potem pokruszyłem kawałek farby plakatowej firmy Astra. Prawdopodobnie granatowej. Całość wymieszałem i oto jest, atrament. Teraz tylko kawałek kartki wyrwanej z zeszytu. Położyłem się na brzuchu z całym zestawem w zasięgu ręki, zamoczyłem pióro i przytknąłem je do kartki. Postawiłem kilka bohomazów, bo przecież ani to nie był atrament, ani moje nacięcie nie było spływakiem prawdziwego pióra, a potem stanąłem przed odwiecznym problemem kronikarzy: nie mam o czym pisać. I drugim problemem gnębiącym wyłącznie młodych kronikarzy, znam litery, ale w jakiej kolejności stawia się je w wyrazach, już nie.

Minęło kilka lat. Zminimalizowałem mój zestaw do jednego zielonego zeszytu w linie, wyrwałem z niego kilka stron i został uznany przez matkę za nienadający się do szkoły. Być może był to świadomy sabotaż. Miałem już rzeczy do zapisywania, gdyż bakcyl komputerozy kompletnie rozprzestrzenił się w moim ciele i zaatakował mój dziecięcy mózg. Trzymałem tam głównie ciekawe adresy pamięci w C64, które można było użyć do imponowania kolegom („umiem zrobić tak żeby kursor nie migał”), kody na życia w grach (dla wszystkich platform, nigdy nie wiadomo kiedy trzeba będzie pomóc atarowcowi, który siedzi z Tobą w ławce), ogólne informacje wyjęte żywcem z Bajtka czy C64+4, oraz milion permutacji programów, które można zmajstrować przy użyciu PRINT, IF, GOTO, INPUT$ i POKE.

Indiana Jones to był gość. A jego ojciec miał fajny notatnik, byłem pod wrażeniem nie tylko tego, że można było wsadzić go do kieszeni płaszcza, ale też zawartości, wyglądał tak jak sobie wyobrażałem księgę Koszałka Opałka. Odręczne rysunki, ważne informacje mogące odmienić świat, zapisane pięknym charakterem pisma. W niczym nie przypominał mojego zielonego zeszytu. Może gdybym mógł nosić swój zeszyt wszędzie wtedy mógłbym zapisywać w nim rzeczy ważne, na które sam wpadłem? Ale skąd się bierze takie notesy, oprawione w skórę? Dumałem i dumałem aż wreszcie wymyśliłem. Gdyby wziąć zeszyt, taki, który trzyma się do kupy przy użyciu zszywek, odmierzyć połowę długości od jednej i wyciąć prostokąt to uzyskamy mikrusową wersję. Napociłem się z tym strasznie, a efekt był godny żalu, bardzo ciężko tępymi nożyczkami przeciąć 32 strony, dlatego brzegi były postrzępione i wyszedł mi kształt, który ktoś bardzo litościwy mógłby nazwać „prawie prostokątem”.

Dodatkowo dostałem w łeb kiedy matka znalazła truchło zeszytu-dawcy ukryte na dnie szuflady mojego biurka. Nie ma sztuki bez cierpienia.

Teraz miałem notatnik, który mógł być ze mną wszędzie. Ta część się sprawdziła, natomiast w środku nadal żyły tylko dyrdymały komputerowe, ani jednego szkicu reliktów antycznych cywilizacji, ani jednego zdania wartego srebrnego ekranu.

Mijały lata, zmieniałem szkoły, notatniki, odkryłem w sobie żyłkę do chuligaństwa i niechęć do edukacji, trzeba mi było ruszyć do pracy. Notatnik stał się utylitarystycznym narzędziem do zapisywania spraw budowlanych (choć nie tylko) i dopiero po latach wróciłem do nurtu stricte koszałko-opałkowego.


Teraz, kiedy ustaliłem już swoje notatnikowe bona fide mogę zacząć pisać o tym, o czym chciałem.

Notatniki są bardzo fajne. Można w nich pisać, rysować, można je zgubić, spalić, można używać ich jako podstawkę pod kubek, można nimi cisnąć o ścianę lub zmiąć je w kulkę, można je umazać szminką, akwarelami i najlepszym piórem wiecznym.

Być może rozczaruję część czytelników, którzy myślą, że wyłożę tu moją strategię na bycie zaawansowanym użytkownikiem notatnika, przez całe życie jedynym systemem, który wypracowałem jest wpisanie daty przed rozpoczęciem pisania. A raz w tygodniu wpisuję tę datę błędnie i następnego dnia otwieram „Nie, wczoraj był 24”.

A po co w ogóle pisać w notatniku? A tego to ja nie wiem, nie umiem się zdobyć na dawanie rad, mogę tylko wyjawić moje powody. Lubię pisać odręcznie, mam do tego kilka doskonałych piór i morze atramentu, cieszy mnie patrzenie jak ciecz zasycha w słowa. To takie ślamazarne, podatne na błędy i bezużyteczne. Przykładowo, siedzę w knajpie i czekam, aż mi podadzą michę, mam przed sobą notatnik. Obok mnie siedzi typ, ma nos w telefonie i kciuk mu pracuje jakby był najszybszym kowbojem w mieście, wysyłającym seryjnie bandytów na tamten świat. Nie ma słuchawek, więc słyszę tylko urywki słów i jeden takt muzyki z wideo zanim szybki ruch palce odsyła je w niebyt u góry ekranu. Ja w tym czasie, mozolnie piszę sobie „Na… me…czu… reze…rw wczo…raj [przerwa na zadumę] nie było… Yuya. Widział…em go na tryb…unie, kontu…zja?” i patrzę jak całość uwiecznia się na papierze. Produkt nieudolnej ręki i tępego umysłu, ale nadal mój ci on. Ustaliliśmy więc że lubię pisać bo lubię pisać, doskonale.

A co pisać? Cokolwiek. Dosłownie. W świadomości ludzi jest taki obraz notatnika jako powiernika dla wielkich ludzi, którzy mają powody by chwytać swoje myśli na bieżąco. Poeta oparty o lampę próbujący uchwycić rozgrywającą się przed jego oczami scenę, awanturnik rysujący mapę prowadzącą do skarbu, mafijny don kancelaryjnie zapisujący nazwisko człowieka, któremu wyświadcza przysługę, wpół-pijany autor walczy ze szczególnie dobrym zdaniem w zadymionej mordowni. I te wszystkie rzeczy się oczywiście zdarzają, czasem nawet mi, ale przez większość życia człowiek nie ma głowy pełnych idei wartych zapisania, co nie powinno nikogo powstrzymać przed ich zapisaniem. Jest dziwne, że tak wiele osób staje się neurotycznych w obliczu pustej kartki prywatnego notatnika, jeśli nie martwi cię, że w wolnych chwilach nachodzi cię myśl niegodna nagrody Nobla, na przykład „zjadłbym śledzia” to dlaczego miałoby cię martwić „zjadłem śledzia, był dobry” zapisane na drugi dzień?

Czasem dzieje się coś fajnego, czasem boli cię ząb lub głowa.

Wet all day. Toothache.
"The Journal of a Disappointed Man", W. N. P. Barbellion, 1919.

Can't sleep. Headache.
Z dzienników Kafki

Dobra, no ale na serio — po co? Notatnik jest przyjazny użytkownikowi. Nigdy nie wyświetlił mi reklam na przykład, ma zero otwartych portów zapewniając że tym, którzy chcieliby wykraść ci dane można strzelić w ryja. Wszystko, co w nim zapiszesz, służy wyłącznie tobie, nie jakimś firmom trzecim hodującym robota-gawędziarza chorego na e-imbecylizm. Brak ikony do łatwego dzielenia się wpisami naturalnie hamuje twój narcyzm i pomaga ci w zachowaniu godności w oczach własnych i opinii publicznej. Możesz wyrzucić swój obecny notatnik, kupić nowy i nie musisz się z tego tłumaczyć kartelowi Wielkiego Notatnika. Tak jak w przypadku pisania do Intenetu nikogo nie interesuje twoja twórczość, ale tym razem nie musisz się tym stresować, brak widowni jest wbudowany w proces, dzięki temu nigdy nie popadniesz w relacje parasocjalne z nieistniejącą widownią. Nie trzeba ładować go przed snem.

Tych kilka kartek spiętych lub zszytych do kupy, z gorszym czy lepszym papierem, z twardą bądź miękką okładką jest jednym z niewielu miejsc, gdzie mogę robić co mi się podoba. Obdarzony tą wolnością staję się demonem twórczości, rysuję kutasy, mewy w kształcie litery em i piszę większość tekstów, które tu czytacie.

Miało nie być o systemach, ale co to czym jest wolność bez zasad.

  1. Notatnik mam zawsze przy sobie
  2. Używam tylko jednego notatnika i zawsze do końca
  3. Wolna chwila? Można go wyciągnąć i coś napisać. Wolna chwila się przeciąga? Można napisać więcej
  4. W domu i w pracy notatnik leży otwarty
  5. Jedyny włam na życie: przed snem chowam laptopa do torby, a na biurku zostawiam zeszycik. Może rano napiszę coś zajmującego czekając aż sen się rozpłynie w dniu? Jeśli nie narysuję mewy lub poskreślam rzeczy z wczoraj

To bardzo ważne zasady, przestrzegam ich jak tradycji religijnej, kilka razy do roku. Tak na serio tylko punkt pierwszy jest ważny, reszta to kwestia smaku i stylu, które nie ma znaczenia jeśli pierwszy punkt nie jest spełniony.

Stół w bistro. Na stole świeżo podane jedzenie, za talerzem otwarty notatnik a na nim pióro Zanim przyjdzie miska, notatnik

Mam tylko jedną prośbę, jeśli zdecydujcie się spróbować prowadzić wasz żurnal nie dajcie się wkręcić w tryb, który nazywam „moim hobby jest kupowanie”. Z pogardą zerkam na różne grupy, gdzie teoretycznym tematem jest uprawianie hobby, ale praktycznie większość dyskusji skupia się dookoła tego, co ktoś kupił, co kupić następne oraz brzmiących fałszywie wyznań „kupiłem następną rzecz, oj ja biedny, tej poprzednio jeszcze nie użyłem, czyż to nie okropne? Do zobaczenia w następnym wpisie po tym jak kupię kolejną rzecz”.

Kupujcie notatniki tak jak kupujecie kalesony: wygodne i na miarę, tanie i nieostentacyjne, do noszenia z potrzeby i prywatnie, nie na pokazy.

Kto wie, może ktoś w przyszłości odnajdzie wasze zapiski i wyda je jako świadectwo świata, który już nie istnieje. Moje idą w ogień jak tylko poczuję pierwsze ukłucie lumbago.


Pstryk
⌜ Literatura ⌟

Ostatnie promienie ciepła wyparowały, ustał wszelki ruch, nastała wieczna, statyczna ciemność. Dookoła panował kompletny bałagan, nikt nie protestował, gdyż nieprzenikniony mrok ukrywał wszystko. Świadomość nie istniała, dźwięk nie istniał, gdyż dźwięk nie może istnieć bez ruchu, a świadomość bez pulsu.

Gdyby czas istniał trwałoby to wszystko bardzo, bardzo długo, a potem jeszcze kilka godzin dodatkowo.

Wreszcie gdzieś ze środka tej ciemności dobyło się stęknięcie, potem powolny szelest szorstkiego materiału, po nim skrzypnięcie pełne niezdecydowania i następne, dłuższe. Gdyby istniało lewo, dźwięk szurania przesunąłby się w tym kierunku.

Pstryk i stała się światłość, czas ruszył. Stał tak zakrywając nieprzyzwyczajone oczy dłońmi, twórca jesiennego poniedziałku, Demiurg.


Fauxmmodore
⌜ Technologia ⌟

Filozofia to nauka praktyczna wbrew temu, co sądzi się o niej potocznie. To nie tylko nieustanne deliberacje o rzeczach na które lepsze odpowiedzi znajduje nauka materialna, to szukanie odpowiedzi na pytania o to, co wypada, kiedy wypada, dlaczego wypada, czy ludzie, którzy mówią że wypada mają w tym jakieś ukryte cele oraz najważniejsze, po co to wszystko, gdy się tak głębiej zastanowić, jest. To są bardzo praktyczne pytania, nawet jeśli oduczyliśmy się myśleć o nich jako o takich.

Zeszłej jesieni D. poprosiła abym stawił się rankiem w Sieradzu. Mówiła potem, że podawała mi dokładnie powód1, ale ja upieram się, że nie wiedziałem. Okazało się, że jedziemy prawie pod samo Opole do Muzeum Radioodbiorników Lampowych znajdujące się w nieopodal położonej miejscowości Przecza.

Przecza nie odmówię, zwłaszcza D.

Już na miejscu minęliśmy się z ekipą lokalnej telewizji, która właśnie kręciła materiał do programu informacyjnego. Na widok kamery usunąłem się w kąt minimalizując szanse, że obecny prezenter postanowi zapytać mnie „a co pan o tym myśli”, zwłaszcza, że jedyna myśl, która miała priorytet brzmiała „trzysta kilometrów w samochodzie to dwieście siedemdziesiąt kilometrów za dużo, a musimy jeszcze wrócić…”. Kiedy telewizja odjechała miałem wreszcie okazję rzucić okiem na okazy radioodbiorników i porozmawiać z właścicielem. Poza krótkim wykładem, który wygłosił na moje życzenie, o funkcji lampy w układzie elektronicznym, rozmowa zeszła na tematy filozoficzne, a raczej ja ją na nie ściągnąłem.

Widząc takie piękne przedmioty użytkowe zapytałem, czy zdarza się, że wśród klientów nawinie się ktoś, kto przyjdzie i poprosi o włożenie jakiegoś Raspberry Pi do prawie stuletniej obudowy żeby mógł sobie postawić taki mebel w gustownie urządzonym mieszkaniu, grać TOP 100 z blutufa. Zanim zaczął odpowiadać odgadłem po minie, że tak, co o nich sądzi — i najgorsze, że może bierze mnie za osobnika, który za chwile wyciągnie zza pazuchy magnetofon typu jamnik i poprosi o transplantację ze szczególnym naciskiem na pozostawienie wszystkich kolorowych LED-ów w stanie dyskotekowo-działającym. Uprzedziłem go, dodając, że pytam, bo niejako funkcjonujemy w nieco podobnej hobby branży i że jest to pytanie, które zawsze mnie nurtuje: autentyczność czy funkcjonalność, coś pomiędzy, martwy eksponat czy część życia użytkownika2, czy statek Tezeusza byłby nadal statkiem Tezeusza, gdyby nie był pod jego kontrolą i czy byłby nawet gdyby mógł dawać nura pod fale albo lecieć w kosmos. Gdzie w świecie form istnieje ideał radia lampowego?

„Autentyczność” w rozumieniu rynkowym jest zupełnie inna od tej, którą czuje się sercem. Autentyczna może być markowa torebka i autentycznie może wyglądać stare radio z blutufowym głośnikiem, w tej torebce może być autentyczny list miłosny, a to radio może stać u kogoś, kto autentycznie uwielbia drewno i nienawidzi technologii. Dyskusja o autentyczności jest dla mnie zawsze ciekawa, ujawnia bardzo wiele, bo każde „tak, ale” powstaje na styku ideałów i materialnej rzeczywistości.

Szukaliśmy więc tej autentyczności rozmawiając. Frakensteinizacja odpadła. Współczesne komponenty zastępujące trudno dostępne oryginalne części, tu już tak. Głośniki, raczej nie, lepiej żeby się przynajmniej dało znaleźć odpowiednie epoką albo spróbować naprawić. Przestrojenie? Oczywiście. I tak element po elemencie ustalaliśmy naszą pozycję na mapie etyki.


Krzątałem się kiedyś na zapleczu naszego muzeum i próbowałem odklinować jeden z komputerów stojących na regale, ściśnięty jego współbraćmi. Ostatecznie postanowiłem, że nie brutalna siła, a praca u podstaw ma szanse na sukces, zacząłem więc zdejmować je jeden po drugim. Tak wpadła mi w ręce obudowa C64, trochę dziwna. Rzuciłem na nią okiem, obróciłem w dłoniach, zajrzałem w dziury portów, a potem zabrałem się za to, co miałem w planach, odnotowałem ją jednak w pamięci jako „do zbadania”.

Okazało się, że Piotrek został kiedyś poproszony o wsparcie przez autorów SUPERHOT. Pomysł był prosty, obudowa i klawiatura Commodore, pomalowana ekstrawagancko, służąca jako kontroler do demonstrowanej gry. Po wszystkim trafiła na regał, a ostatecznie w moje ręce.

Obudowa C64 pomalowana na biało z czerwoną spacją, klawiszami WASD

To był jeden z tych zbiegów okoliczności, w okolicach odnalezienia tej obudowy rozgryzłem także projekt BMC64. Gdybym tylko miał kontroler, który zamienia matrycę klawiszy C64 na HID USB! O, jest w środku. Zbieg okoliczności to często tylko taki inny kolor farta.

Sprawa wydawał się jasna. Wystarczy wsadzić do środka RPi i presto pronto, mamy wybitnie nieautentyczny eksponat. Niestety, ku wiecznemu zażenowaniu mojego Ojca, odziedziczyłem jedynie ¾ jego talentów, nie załapałem się na smykałkę do robienia rękoma. Do tego Piotr non stop mówił „przetnij, przewierć” na moje utyskiwania, że mi się coś nie mieści albo porusza się w środku. Oponowałem stanowczo, to musi być tak zrobione żeby można było wszystko wyrzucić i wkręcić prawdziwą płytę główną. To tylko trochę bardzo starego plastiku, ale ustaliliśmy już podczas rozmowy w Muzeum Radioodbiorników że mamy etyczne terytorium i będziemy bronić jego granic. Ostatecznie dokupiłem przedłużacz do portu karty SD, żeński port HDMI i kilka innych kabelków, przymocowałem je relatywnie mocną, ale łatwą do usunięcia taśmą dwustronną i ogłosiłem triumf czterem ścianom.

Trzy zdjęcia przedstawiające Fauxmmodore emulujące C64, C128 i VIC20

Trudno wyobrazić sobie coś bardziej praktycznego. Wszystkie ośmiobitowe C= pod jednym dachem, szybka emulacja stacji dyskietek, start z dowolnym kartridżem serwowanym z pliku, REU w takiej czy siakiej konfiguracji, obsługa oryginalnych dżojstików, DualSID, a wszystko można podłączyć do współczesnego monitora przez HDMI. Do tego wygląda z zewnątrz jak autentyczny model… bo nim jest. Jest autentyczny jak autentyczna jest markowa torebka, ale ja chcę żeby był autentyczny jak list miłosny.

Fauxmmodore gra Last Ninja

Kiedy chcę dłubać przy C64 wybieram ten w stanie czystym. Choć jest zawsze z czymś problem ale to zwykle ten sam problem który istniał kiedy go zaprojektowano. Jest autentyczny, problem i komputer.

No, OK, ma modem WiFi. I emulator stacji dyskietek. I kartdridż z wymazywalną pamięcią. Jest przestrojony na UKF.

  1. To też okazało się być zwykłą zasłoną dymną, gdyż po wizycie pod Opolem zostałem wywieziony do rezydencji D. „na herbatę”, co było bardzo uprzejme z jej strony, musiała dołożyć tyle kilometrów. Po herbacie okazało się, że ma akurat wielką, antyczną szafę, którą trzeba rozebrać, a na jej miejsce ustawić nową i że dobrze się złożyło, że akurat przyjechałem na herbatę. Zaiste dobrze!
  2. Pogłębiając niejako ten dylemat: piszę ten tekst na komputerze z Pentium III podłączonym do czarno białego ekranu, ale pod kontrolą współczesnego systemu operacyjnego. Czy byłby bardziej autentyczny z Windows 95 niż Debianem 12?

Wygląda pan na kogoś
⌜ Życie ⌟

Kiedy idę po ulicy, jestem odłączony od otaczającej mnie rzeczywistości. Im dłużej idę, tym bardziej świat traci kształt i kontrast, pozostaje tylko tunel ulic, którymi przeciskam się pomiędzy bryłami budynków. Wszystko nieoteksturowane, pewnie żeby się szybciej liczyło. Po mojej lewej ręce mógłby przejechać peleton nagich kobiet, po prawej rozpaczliwie machać ku mnie dawno stracony przyjaciel, a ja minąłbym ich z oczami duszy zwróconymi w głąb czaszki.

To jedna z rzeczy, na którą narzekałem, kiedy zamieniłem piesze podróże na rowerowe: dystans wydłużyłem, ale nigdy nie mogę się tak bardzo zagubić w myślach operując pojazdem.

Przechodziłem obok całodobowego sklepu alkoholowego, kiedy drogę zastąpił mi ktoś, kto oderwał się od grupki maruderów stojących nieopodal. Popatrzyłem w raczej nieznajomą twarz, zdjąłem słuchawki i używając doświadczenia danego mi przez lata zadałem jedno, kluczowe pytanie — „ile?”. Jeśli mam w kieszeni banknot 10- lub 20-złotowy to daję go automatycznie, a że miałem pięćdziesiątkę to musiałem ocenić, czy jestem w hojnym nastroju. Tamten zaprotestował i żacha się, że „nie, nie”. Byłem trochę zirytowany, bo to zwykle znaczy, że będzie jakaś historia, a po co mi je opowiadać kiedy ja jestem zawsze gotów postawić kolejkę współobywatelowi i tylko trzeba powiedzieć ile i nie przesadzić. Tamten się jednak zapierał, więc poddałem się i powiedziałem, że dobrze, wysłucham jego historii.

— Proszę pana — zaczął on — mam na USB taki serial i czy mógłby mi go pan przekodować na Xvida?

Wybałuszyłem nań oczy tak, że gdyby nie okulary to pewnie wypadłyby mi na ulicę i potoczyły się niehigienicznie do rynsztoka, skąd musiałbym je wyciągnąć kompletnie na ślepo i wytrzeć o portki.

— Hę?! — zgodziłem się, a może chciałem odpowiedzieć pytaniem na pytanie aby ukryć moją kompletną niekumację.

Mój rozmówca wyjaśnił mi dokładniej. Jest jakiś serial i ten serial jest w „mpeg” ale jego telewizor nie potrafi go otworzyć. Ten serial jest ogromnie ważny dla jego żony i on byłby rad, gdybym mógł zamienić je na Xvida, bo jest pewien, że jego telewizor będzie potrafił to odtworzyć.

Nadal zastanawiałem się, czy to jest jakiś żart, czy ktoś ze znajomych nie namówił lokalnego elementu żeby mi spłatać takiego figla, no bo jakie jest alternatywne wyjaśnienie, „z daleka wyglądał pan jak ktoś, kto ma ~/src/ffmpeg na komputerze”?

Dopiero po chwili mój umysł dogonił układ nerwowy i podpowiedział mi, że to chyba nocny stróż pracujący na terenie naszego biura. Rzeczywiście. OK, teraz wszystko ma większy sens, nie kompletny, bo dlaczego ja ze wszystkich ludzi, którzy się przewijają, może rzeczywiście z twarzy wyglądam na komputerowego kombinatora. Umówiliśmy się, że następnego ranka odwiedzę go i zobaczymy, co się da zrobić.

Pojawiłem się tak, jak się zapowiadałem. Wyciągnąłem z plecaka laptopa i przegrałem wskazane pliki. Potem porozmawialiśmy chwilę o kinie, to znaczy on mówił o filmach, a ja głównie mówiłem, że filmów nie oglądam, a telewizji to już w ogóle. Wlazłem do biura, zbadałem sprawę i zaiste, pliki serialu miały jakiś głupi kodek o którym nigdy wcześniej nie słyszałem. Przekodowałem je posłusznie i wychodząc przed świtem zwróciłem zamawiającemu.

Przez następne dwa dni byłem ciekaw, czy cała akcja się udała. Czy żona zadowolona i czy może dostanę jakiegoś sernika w nagrodę, a może jakiegoś dobrego rosołu, nie jestem interesowny, ale mam strasznego lenia w temacie gotowania zup.

Kiedy wjeżdżałem na teren dnia trzeciego zostałem wypatrzony z daleka. Pan podbiegł do mnie i już w połowie drogi zapewniał mnie, że żona była niezmiernie zadowolona i żebym chwilę zaczekał. Czekam więc na ten rosół. Pan wychodzi i wręcza mi kartkę papieru, a na niej listę filmów, które „…gdyby się udało” w przyszłości mi zdobyć to ona byłaby bardzo zadowolona.

Obiecałem, że jej nie zawiodę.

Kartka papieru z tytułami filmów leżąca na biurku


Razem
⌜ Literatura ⌟

Spontaniczne zgromadzenia obywateli zawsze wywołują zaniepokojenie wśród władz, kto wie czego tym razem może się domagać tłuszcza. Na szczęście tłum ten był wyjątkowo egalitarny, co uspokoiło przyglądającemu się wszystkiemu z bezpiecznej odległości funkcjonariuszowi prawa. Ludzie z tak różnych warstw społecznych nie spotykają się zwykle w sprawach stanu żołądka i kieszeni.

Kaszkiety, gołe głowy, marynarki, kombinezony robocze, lakierki i kalosze, siwe brody, bujne wąsy i zwykły zarost na okazję się nie golenia, ale też gładkie lica. Taksówkarz i prawnik, ramię w ramię, handlarz starzyzną w nadziei, że wydarzy się coś nowego, bark w bark z panem przyciskającym do piersi torbę z zakupami. Obok stoi pan zerkający nerwowo na zegarek, nie śmie spóźnić się tam dokąd zmierzał, jest jednak wystarczająco zaciekawiony by zaryzykować trucht i nadrobić stracony czas. Na nim delikatnie pokłada się pracownik fabryki, który po fajrancie reperuje swoje samopoczucie pociągając z butelki, a kiedy krzyżuje z kimś wzrok, oferuje ją w geście braterstwa, bez sukcesów.

Kieszonkowiec, który powinien być najbardziej zadowolony z zaistniałej sytuacji, waży swoje opcje. Na horyzoncie policjant, masa zbita ciasno, mniej wrażliwa na niespodziewany dotyk, ale wyczuwa się w niej większą bystrość i drapieżność niż wśród ludzi zsardynkowanych w tramwajach. Można tu nieźle zarobić: złoty zegarek na łańcuszku albo w zęby.

Kiedy z przodu chmary przylegającej do sklepowej witryny dobiegały oznaki ekscytacji, przez zgromadzenie przepływała fala na której wznosiły się głowy, ci wysocy pięli się na palce żeby spróbować spojrzeć dalej i odkryć samo sedno, ci o ostrych łokciach próbowali przeć do przodu, ci bez szans pytali równie niezorientowanych sąsiadów, „co się tam z przodu dzieje?”. Jedni odpowiadali opryskliwie, zniesmaczeni swoim położeniem, że nie wiedzą, inni, w wyniku wad charakteru, czy też po prostu szukając rozrywki, kłamali. Mówili, że ktoś umarł, a może umiera, co nie licowało z wybuchami śmiechu, albo że słynny poeta rozdaje swój nowy tomik i składał zamaszyste autografy, ale przecież słynnych poetów nie ma, a gdyby byli, to znaczna część tego zgromadzenia by ich nie czytała.

Co jakiś czas kilka osób, które dotarły przed szybę, opuszczało zebranie, jedni kręcili głowami, inni, zwykle ci odchodzący w parach, śmiali się i szeroko gestykulowali. Dało się też zauważyć jak tłum wypluwa sługę bożego, który minę miał kwaśną, stanął na uboczu i podparł się pod boki, ale nie powiedział słowa, choć widać było, że mógłby tu ex catedra wygłosić kazanie. Odszedł dziwnie sprężystym krokiem, może nawet się uśmiechnął kiedy już nikt go nie widział.

Ci najbliżej epicentrum, przy samej szybie, ale też pośrodku wiecu, widzieli dwie rzeczy. Swoje twarze odbijające się delikatnie w krystalicznie czystej szybie, a za nią, mały, czarno-biały odbiornik telewizyjny. Na ekranie tańczyły gołe baby.


Kreatywnie krótka kołdra
⌜ Technologia ⌟

Zdradzę wam tajemnicę. Tajemnicę, którą wam już pewnie kiedyś zdradzałem, ale kto w tych czasach czyta uważnie, do tego jestem pewien, że rozumiecie ją podświadomie, dlatego nie muszę się silić na udowadnianie jej prawdziwości. Macie jakiś projekt na dnie szuflady. Może wpadł wam do głowy w zeszłym roku, może w zeszłym tygodniu. Jest trochę ambitny, ale niezbyt, natomiast wystarczająco zaangażowany że nie możecie go po prostu zrobić. Może nawet próbujecie, ale wychodzi niechlujnie i niespójnie, a przecież nikt nie chce zapełniać kart Internetu bzdurami, od tego są dobrze opłacani specjaliści w wielkich firmach.

Co jakiś czas wracacie do niego myślami, ale nigdy do niego nie siadacie. I teraz rozwiązanie tego dylematu, ta „tajemnica” z pierwszego zdania. Zamiast próbować męczyć się z projektem możecie napisać krótki tekst o tym jak wam się nie udało go skończyć, a może nawet zacząć, możecie wymienić lekcje z płynące z tej sytuacji, a nawet nauczyć innych jak uniknąć takich problemów w przyszłości. Możecie też wsadzić jego skróconą, skorumpowaną wersję do innego projektu, który bardziej wam pasuje. Tym samym wygrywacie moralnie te zawody bez kibiców.

W dniach popularności Instagrama ustaliłem, będąc nieustającym internetowym skwaszeńcem, że robienie zdjęć i mącenie ich sepią jest zajęciem niegodnym prawdziwego intelektualisty i dużo ciekawszym wyzwaniem byłoby publikować paragraf tekstu wysokiej jakości dokładnej, a jednocześnie przepełnionej błyskotliwymi metaforami, prozy. Niestety, okazało się, że większość zdjęć nie napełnia mnie poetyckim duchem i jest skończona liczba słów, którymi można opisać „jesteśmy na wakacjach w Grecji” lub „ja i moja dziewczyna”. Porzucając ten pomysł (uwaga, jesteśmy w drugiej warstwie meta-narracji) potknąłem się o inny, bliższy mojemu sercu, mógłbym napisać trochę o kompresji stratnej używając do tego słów.

Przykładowo, po lewo dajemy zdjęcie, po prawo różne wariacje: „Kwiat”, „Kwiat na polu”, „Żółty kwiat na polu”, „Żółty kwiat na polu na tle niebieskiego nieba”, „Żółty kwiat na polu na tle niebieskiego nieba, na drugim planie ludzie, pulsujące światła karetki oświetlają wykolejony tramwaj linii 41, od strony Zgierza jedzie policja”. Tym samym zademonstrowałbym że kompresja obrazu polega na usuwaniu szczegółów i często te szczegóły nie są ważne, ale gdy się usunie za wiele, powstaje nierozpoznawalna breja pikseli. Z drugiej strony zbyt wiele szczegółów nie poprawia wrażenia, a czasem wręcz utrudnia odbiór. Kto widział łebdesignera wsadzającego 28 megabajtowe zdjęcie w <header> ten wie, że to prawda.

Rozciągając tę metaforę do granic absurdu: istnieje też kompresja bezstratna, kiedy to, co możemy zawrzeć w dziele ograniczone jest materiałem z którym pracuje artysta, ale nie tracimy przez to nic. Jest tylko tyle cykli procesora do zagospodarowania w demie na ośmiobitowce, tylko tyle słów zanim opowiadanie zamieni się w nowelę, tylko tyle metrów sześciennych granitu i tylko tyle centymetrów kwadratowych naklejki na dyskietce 5¼.

Chcąc się zrelaksować po kilku tygodniach ciężkiej pracy zabrałem się za przeglądanie pudełka z dyskietkami. Dyskietki są raczej materiałem dekoracyjnym w muzeum, bo we współczesnych czasach nawet najbardziej hardzi fani autentyczności mają trudność odmówić wygody rozmaitych urządzeń emulujących napędy. Przeglądałem je powoli i sumiennie i wtedy zostałem urzeczony, uwiedziony.

W czasach, gdy piractwo komputerowe było jedynym rozsądnym sposobem na zdobycie oprogramowania w tej części świata, każde miasto miało kilka sklepów komputerowych, kilka stoisk na giełdzie, gdzie można było spędzić godzinę przeglądając grymuar katalogujący dostępne gry, wypełniony wycinkami z prasy komputerowej i własnymi opisami sprzedawców starających się zachęcić do zakupu tego czy owego tytułu. Linijka, dwie linijki, gatunek, może opis bohatera, może do czego jest podobne, czasem do zrozumienia samo przez się, czasem mętne, trudno wymagać żeby nasz pirat-sprzedawca mógł być ekspertem we wszystkich grach z katalogu, mówimy tu o tysiącach tytułów.

Kiedy więc przeglądałem serię dyskietek pochodzących z takiego właśnie katalogu, a opisy gier przetrwały na naklejkach, przerwałem swoją pracę i rozkoszowałem się nimi. Próbowałem swoich sił: czy mógłbym napisać lepszy opis? A czy mógłbym, gdyby to była moja 50 gra, którą muszę opisać tego dnia. Z mojej głowy nie chciało wyjść zdanie przeczytane kiedyś na satyrycznej stronie, gdzie skracano sedno dzieł do kilku wyrazów — a brzmiało one „Roskolnikow zabija Lizawietę i jest mu z tego powodu bardzo przykro”, to byłby dobry przykład kompresji stratnej. To samo, ale w zdaniu, możliwie bezstratnie, o "Shadow Dancer 2"?

North & South — Gra strategiczna. Wojna secesyjna pmiędzy Północą a Południem. Zdobywasz kolonie aby zyskać pieniądze. Kupujesz nowe oddziały wojska. SHADOW DANCER — Gra typowo zręcznościowa. Zostałeś wysłany wraz ze swoim psem na teren wroga. Masz do wykoanania bojowe zadanie. Zbierasz pojemniki z tajemniczą substacją, którego potrzebuje twój szef. Powodzenia!

Zobaczcie takie zdanie: „Zdobywasz kolonie aby zyskać pieniądze. Kupujesz nowe oddziały wojska”. Toż to historia świata, tylko bez sztandarów, dat i nazw. I to „Powodzenia!” na końcu opisu "Shadow Dancer", kto grał, wie, że jest potrzebne, stąd ten bezpośredni apel sprzedawcy.

SHADOW DANCER 2 — znajdujesz się na terenie wroga wraz z twoim wiernym psem. Tu są potrzebne spryt, odwaga, męstwo i siła. Twój wierny przyjaciel pies nie odstępuje Cię ani na kork.

W drugiej części jeszcze lepiej, zdanie „Tu potrzebne są spryt, odwaga, męstwo i siła” brzmi jak jedna z tych patetycznych przemów trenera młodzików w przerwie meczu, która z niewiadomych powodów działa.

STREET FIGHTER — Walki karate w różnych miejscach na świecie. jako jeden z najlepszych pokazujesz czego nauczyłe się przez lata treningu. W tej grze grafika i animacja jest na wysokim poziomie. POWER AT SEA — Jeden z niewielu symulatorów okrętów wojennych. Twoje zadanie polega na odnalezieniu portów przeciwnika i zniszczenie jego baz.

Tu znów możemy wyczuć małą kulturalną hegemonię lat osiemdziesiątych. Jeśli ktoś się bije i nie jest to boks, to z pewnością jest karate. Karate było wszędzie, nawet filmy kung-fu płynące szeroką rzeką z Chin otrzymywały metkę karate. Street Fighter też musiał być karate.

SUPER CYCLE — Bezbłędne wyścigi potorów o pojemności 200, 250 i 500cm. Wielkie emocje czekaja tych, którzy wezmą udział w tym rajdzie, nie bojąc się niczego. TOM AND JERRY — Przygody sympatycznej myszki o imieniu JERRY i chciwego kota TOMA. W tej grze taj jak w fimie, kot goni uciekającą myszkę. Ty jesteś tą myszką więce staraj się uciec przed kotem.

Autor tego opisu ma silne przekonania moralne i chce je nam zaszczepić. Myszka Janusz jest sympatyczna, kot Tomasz chciwy. Wężykiem, wężykiem.

VENDETTA — „VENDETTA” znaczy zemsta. Jesteś bardzo mściwy. Nikt nie przejdzie obok Ciebie bez walki. Gra podobna do Last Ninja. Zbierasz broń i pomocne przedmioty. Grafika przestrzenna i animacja na wysokim poziomie. PITFIGHTER — Walki wręcz. Wraz z przyjacielem zostaliście zaproszeni na zakazany turniej walk karate. Wszystkie ciosy dozwolone. Pomimo iż jesteście najlepsi możecie mieć problemy z pokonaniem tylu przeciwników.

Karate to, karate tamto! Wszędzie karate. Ale też darmowa lekcja z mafijnego słownika, choć nie wiem, czy użyłbym słowa „mściwy” dla kogoś, obok kogo nikt nie może przejść bez walki. Nie wiem jak jest po włosku „rzezimieszek”. Już wiem, spietato. Nie, vendetta brzmi dużo lepiej.

PHM PEGASUS — Jesteś kapitanem niszczyciela. Gra bardzo dobrze symuluje okręt. Otrzymałeś rozkaz pretraktowania z wrogiem, jeśli odmówi, przystąp do ataku.

GAUNTLET 3 — Wspaniała gra przygodowo-zręcznościowa. Wraz z towarzyszem znajdujecie się w labiryncie. Zbieracie przedmioty potrzebne do walki z potworami, orkami, duchami, itp. Droga przez labirynt jest bardzo trunda.

NO MERCY — Ostra strzelanina. Akcja toczy się na lądzie. Jest dużo ognia, hałasu, dymu i krwi. SILENT SERVICE — Wspaniały symulator łodzi podwodnej. Jesteś kapitanem. Posiadasz określoną liczbę torped oraz pocisków. Postaraj się aby każdy strzał był celny. Uważaj na wroga, który nie śpi, ale czuwa.

„Jest dużo ognia, hałasu, dymu i krwi” mogłoby być na dowolnym plakacie z prężącym się Arnoldem. Z ciekawości wsadziłem ją do napędu. Moja recenzja: „Jak Cabal, tylko gorszy.”

CHAMPIONSHIP WRESLING — wspaniałe zawody wolnej amerykanki. Masz do wyboru różnych zawodników. Jednym z nich jest Hulk Hogan. Walcząc na ringu dostarczasz licznie zgromadzonym widzom emocji i rozrywki.

Kolejny przejaw kulturowej mocy. Jeśli wrestling to Hulk Hogan, tak się sprzedaje dyskietki.

TURBO OUT RUN. WYŚCIGI SAMOCHODOWE. BARDZO DOBRA ANIMACJA.

A czasem rzeczy się nie zmieniają. Czasem starczy powiedzieć, że gra ma bardzo dobrą grafikę.


Myślę czy nie przygotować własnego, fałszywego katalogu, który można by wyłożyć obok komputerów na stoiskach. To ostatecznie ważny element naszej historii cyfryzacji domów i szkół. Moja wizja na teraz: okropnie rymowane opisy. Outrun: jedziesz przed siebie, aż ci ktoś przyjebie. Prince of Persia: skaczesz, zabijasz bo wezyr żmija. IK+: lekcje karate nie poszły na stratę. Bubble Bobble: w bańkę zamknięci rywale przeklęci. Giana Sisters: z kraju Kwitnącej Wiśni prawnicy przyszli i nakazali byśmy o tym nie rymowali.


Światło
⌜ Literatura ⌟

Wpierw schody, kilka pięter. W budynku nie ma windy, a gdyby była byłaby zepsuta, a kartka to ogłaszająca miałaby numer telefonu, którego nikt nigdy nie odbiera. Zbiegam po kilka schodów, zeskakując na półpiętra na ugiętych kolanach, a potem szybki chwyt za poręcz, nadaję sobie nowy kierunek i pęd. Trzecie, drugie, pierwsze, drzwi.

Drzwi zawsze zaskakują mnie swoją wagą. Imponująca sprężyna staje do walki razem z drzwiami. Wszystko chce mnie powstrzymać. Napieram barkiem jednocześnie zerkając na zegarek. Pięć minut, może sześć. Wreszcie jestem na zewnątrz. Podwórka nie da się przebiec z dwóch powodów. Organ plotkarsko-sąsiedzki natychmiast podjąłby temat — „widziałaś, biegnie”, a jutro każdy by pytał, po co biegłem, a może jutro też się będę spieszył i nie będę się mógł tłumaczyć. To nie może być sprint, ale musi być slalom. Parkowane metodą kto pierwszy ten lepszy samochody, zabawki porozrzucane przez tornado dzieci. Spękany beton wypełniony brudną wodą. Tu nie ma drogi przed siebie.

Ulica. O tej godzinie nie ma wielkiego ruch, ale nie mam szczęścia, jadą trzy samochody, a ten ostatni to patrol policji, nie mogę skoczyć przez rów wprost na asfalt, a im przed maskę. Stoję więc i czekam, aż mnie ominą. Między mną, wzorowym obywatelem, a mną, przestępcą jest tylko jeden krok, bez potrzeby metafory. Mijają mnie wreszcie. Policjanci patrzą przed siebie, niezainteresowani, a może boją się spojrzeć mi w twarz? Ich tylne światła znikają w mroku, a ja słyszę jak wszechświat odcina sekundy od minut, cyk, ciach, cyk. Wskakuję na asfalt i biegnę, skok przez kanał po drugiej stronie ulicy.

Niespodziewanie grząskie zbocze nie pozwala mi zachować równowagi. Upadam na jedno kolano i czuję jak zimna woda sączy się przez materiał. To moje jedyne czyste portki. Umyję je pod kranem i może do jutra wyschną. Gdybym poszedł do pracy z jedną mokrą nogawką ludzie pytaliby — „a co się stało?” i czynili obserwacje — „masz mokre spodnie”, a gdy później wróciłbym do domu sąsiedzi pytaliby czemu wczoraj biegłem, a gdyby jakimś cudem nie wyschły mi te portki w pracy, zapytaliby i o to.

Odganiam tę myśl. Na końcu ulicy nadal świeci się światło. Podejmuję marszobieg. Tym razem schody do góry, mniejsze, drzwi lżejsze. Wpadam. Wita mnie „…dopiero myłam”, a reszty już nie słyszę, choć mogę zgadnąć. Padam na mokre płytki całą swoją długością i całą swoją wagą. Moje czoło delikatnie stuka o podłogę jakby w geście pokory. Leżę tak krzyżem przez pulpitem z którego obserwują mnie oczy. Obracam głowę policzkiem do ceramiki i mówię — „dwieście, nie z lodówki”. Wspieram się na ramionach, patrzę na ten cały świat z wysokości psa i dodaję — „dwie.”


Zrobić dobrze mokrym palcem
⌜ Technologia ⌟

Kiedy kota nie ma, myszy harcują. Piotrek wyjechał w delegację, a ja zostałem na włościach pomiędzy rzędami komputerów które czekają na ostatnie szlify przed otwarciem muzeum. Te ostatnie szlify przypominają czasem ostatnie namaszczenie, wszystko wydaje się działać póki się temu z bliska nie przyjrzeć. Weźmy takie Atari MEGA STE. Całkiem ładny komputer, włączony działa. Chcieliśmy puścić zeń trochę muzyki. Grał, grał, przestał. Reset. W ogóle przestał grać, od razu mówi, że nie ma pamięci, nie widać nawet wirtualnych twardych dysków. Nawet stacja dyskietek zniknęła.

Usiadłem przy nim jak ksiądz i spowiadałem go ze wszystkich grzechów, wynotowując te ciężkie i lekkie.1 Ostatecznie udało mi się ustalić jak go zawiesić za każdym razem: wirtualne twarde dyski serwowane z karty SD przez sprytne urządzonko chodzą pod kontrolą FAT12, a ten ma spore ograniczenia. Na przykład katalog z muzyką zawierający ponad pięć tysięcy elementów zdecydowanie przekracza jego możliwości, sterownik nic sobie jednak z tego nie robi i prawdopodobnie pisze po pamięci jak dziecko kredką po świeżo malowanych ścianach, zawieszając cały podsystem w efekcie.

Napisałem szybko kilka linijek które poukładały pliki w podfolderach zgodnie z pierwszą literą nazwy pliku. Problem rozwiązany.

Jeden dobry uczynek należy natychmiast wyzerować uczynkiem potencjalnie złym. Łażąc z miejsca na miejsce przypomniałem sobie o starym micie powtarzanym na szkolnych korytarzach zawierającym jednocześnie obietnicę i przestrogę: jeśli poślinisz palec i dotkniesz go do pierwszego portu dżojstika uzyskasz nieśmiertelność w niektórych grach, ale jeśli zrobisz to źle uszkodzisz swój komputer.

Była to prawda w obu przypadkach. Port dżojstika jest podłączony bezpośrednio do układu CIA w C642, jeśli się nie uziemimy możemy mu wysłać niespodziewany ładunek i doprowadzić do małej katastrofy. Faktem jest, że niektóre gry, najsłynniejszy przypadek to chyba Creatures II: Torture Trouble, reagowały na taką e-intymność obdarzając gracza nieśmiertelnością lub jakąś inną niespodzianką.

Niejasno pamiętam też, że przepisywałem z jakiegoś magazynu program, który reagował na to mizianie, pamiętam też, że od wstępu krzyczał żeby tego nie robić. Kiedy stałem więc przy C64 zamyśliłem się. Jak to działa, tak dokładnie? Teoretycznie może działa to tak, że zwierając port generujemy sygnał wychyłu dżojstika. Ale to chyba nie to. Zerknąłem na schemat portu. No tak, wiosełka.

Wszyscy wiedzą jak działa dżojstik. Wychylasz go w lewo, postać idzie w lewo. Jest to sygnał cyfrowy, albo zaistniał albo nie. W czasach, gdy światem gier elektronicznych rządził Pong i tysiące klonów i/lub wariacji na jego temat, popularnym kontrolerem były wiosełka. Możecie o nich myśleć jako o jednym lub dwóch rezystorach nastawnych (potencjometrach), które dawały kontrolę i płynność jakiej nie mógł dać drążki. Na potencjometr nadziewano ergonomiczną gałkę i już kręcąc nią z lewa w prawo i nazad mogliście przesuwać swoją pongową paletkę. Ponieważ zmiany w oporności można wyrazić w pewnym kontinuum, maksymalny wychył w jedną czy drugą stronę mógł być skorelowany z wyświetlaną grafiką, dzięki temu gracz może bardziej naturalnie reagować na wydarzenia (potencjometr na środku równa się paletka na środku pola gry).

Narysowany w PETSCII port dżojstika z opisanymi portami odpowiadającymi za wiosełka

C64 ma wsparcie dla wiosełek, piny 5 i 9 w obu portach są pinami analogowymi, a ich wartość zapisywana jest w dwóch jednobajtowych rejestrach, skąd można je odczytać: $D419 (X) i $D41A (Y). Z uwagi na ich naturę są bardziej „wrażliwe” na niewielkie zmiany w oporności (tu: pazur penetrujący port) i łatwiej jest wyłapać takie zdarzenie.

10 REM NIE ROBCIE TEGO W DOMU (ANI W MUZUEM)
20 IF PEEK(54298) < 255 OR PEEK(54297) < 255 THEN GOTO 100
30 GOTO 20
100 PRINT "MAM NADZIEJE, ZE NIE SPALILES CIA"

Dlaczego sprawdzamy 255? To maksymalna rezystancja oraz maksymalna wartość jaką możemy zapisać w bajcie rejestru, pin nie jest do niczego podłączony, nasz palec wystarczy aby obniżyć tę wartość i spełnić przynajmniej jeden z warunków.

A może jeszcze gorszy pomysł? Commodore 64 nie ma na standardowym wyposażeniu przycisku reset, można by dodać obsługę resetowania przez polizany palec. Dodajemy jednocześnie element rosyjskiej ruletki: czy udało nam się go zresetować, czy też zawiesił się zniszczony!

Można użyć do tego przerwań, podwiesimy naszą procedurę badającą rejestry i jeśli ich wartość ulegnie zmianie wywołamy procedurę resetu. Niestety, pisałem to bez dostępu do prawdziwego komputera, emulatory nie mają wbudowanej opcji ślinienia portów (choć na BMC64 jest to prawdopodobnie możliwe, wystarczy wyprowadzić port na GPIO), musiałem więc testować kolor tekstu ($0286, 14 to standardowy szaro-niebieski) żeby sprawdzić hipotezę. Ostatecznie to PoSC. Proof of Stupid Concept.

BasicUpstart2(main) // preambuła dla BASICa

* = $c000

finger_irq:
    pha // ponieważ używamy akumulatora
        // musimy się nim zająć sami
    // IF PEEK(54297) < 255
    lda $d419
    cmp #255
    bne goodbye_cruel_world
    lda $d41a
    cmp #255
    bne goodbye_cruel_world
    //lda $0286 // «debug»
    //cmp #14
    //bne goodbye_cruel_world
    pla // przywracamy wartość akumulatora
        // ze stosu
    jmp $ea31 // oddajemy kontrolę kernelowi
    rti

goodbye_cruel_world:
    jmp $fce2
    rts

main:
    sei // stop przerwaniom
    // instalujemy nasz własny wektor
    lda #<finger_irq
    sta $0314  
    lda #>finger_irq
    sta $0315  
    cli // przywracamy przerwania
    rts

Miło tak odkrywać na nowo rzeczy, które się już wiedziało, a które zostały wyparte przez ważniejszą wiedzę zawodową, na przykład że trzeba usuwać node_modules jak frontend nie działa. Pośliniony palec można wsadzić w oko frontendowcowi, może też się zresetuje?

  1. Choć wiemy, że Atari nie może iść do nieba
  2. co łatwo jest udowodnić, wystarczy podłączyć dżojstik do pierwszego portu i pokręcić nim. Bez wątpienia wyskoczy wam znak 2, i spacja, CIA dzieli linie pierwszego portu z matrycą klawiatury

Gwiazdkę z nieba
⌜ Literatura ⌟

Obiecał mi wiele, a każda z tych obietnic niosła w sobie obietnicę kolejnych obietnic. Może taki był jego plan, obiecać mi tak wiele że nie będę mogła go rozliczyć. Nie żebym go rozliczała, starczało mi to, co jest. Nasze wygłupy, soboty, godziny spędzone nad spisywaniem szczegółowej listy całotygodniowych zakupów, którą natychmiast gubiliśmy.

Siedzimy na dachu bloku. Ukradł klucze cieciowi. Mówi, że pożyczył, a wiem, że nasz dozorca nie należy do typów pomocnych, choć nie wynika to z jego charakteru tylko z lat doświadczenia. Mieszka w tym budynku od wieków, nie wiemy nawet, czy jest rzeczywiście pracownikiem administracji, czy też stał się po prostu częścią mechanizmu dzielnicy, zna numery telefonów, wie, gdzie są bezpieczniki, zawory i klucze do nich. Tak na górze, jak i na dole, klucze na dach są także pod jego opieką, a raczej były, do dzisiaj.

Siedzimy na środku dachu na plastikowych krzesełkach wciągniętych po niewygodnej metalowej drabince. Boję się podejść bliżej brzegu. Oglądamy panoramę miasta. Samochody odpływają smugą czerwonych świateł, co jakiś czas rozlega się przytłumiony trzask zamykanych drzwi do klatki, bawimy się w zgadywanie kiedy zgaśnie światło w tym czy tamtym oknie, wyłączyliśmy z niej światła kuchenne, o tej godzinie w kuchniach zapala się światło tylko na chwilę.

— Chodźmy już — powiedziałam — zaczyna się robić zimno.

— Zaczyna się tobie robić zimno! — podkreśli w odpowiedzi, starając się zawsze być dokładny w sprawach błahych.

— Dobrze, jest mi zimno. Możemy już iść? Boję się, że nas przyłapią, a nie jesteśmy już dziećmi żeby świecić oczami i spuszczać głowy w obliczu umocowanych dorosłych.

Podniósł się z krzesła, złożył je i podał mi rękę. A potem wstrzymał mnie gestem i podszedł do gzymsu budynku, oparł na nim jedną stopę jakby był kapitanem gotowym do odpłynięcia z całym blokiem. Podparł się pod boki i spojrzał w dół, a potem w górę.

— Nie stój tam, spadniesz. Boję się, że spadniesz, czemu mnie straszysz. Nie pobiegnę ci na pomoc jeśli zawiśniesz rozpaczliwie na brzegu. Chodź.

Odwrócił się do mnie mówiąc: Zrobię to dla ciebie, zrobię wszystko, dam ci gwiazdkę z nieba.

— Na co mi gwiazdka z nieba, co bym z nią robiła, to tylko taki punkcik na derce wszechświata, jak już to wolałabym księżyc, zawsze myślałam, że księżyc wygląda jak taka wyskubana, okrągła gąbka. Miałam taką w dzieciństwie, ale była jasnoniebieska, nie szara. Może księżyc to po prostu stara gąbka, którą ktoś tam cisnął? — gadałam bez sensu żeby nie myśleć o tej krawędzi.

— Księżyc? Jasne! — zgodził się. Podbiegł do drabiny i zanim zdążyłam coś powiedzieć zniknął w głębi klatki schodowej. Kilka minut później wrócił, stanął przede mną i uśmiechnął się szeroko. Miał w rękach wędkę, której używał jako rekwizytu by czasem znikać z przyjaciółmi na weekend. Ryby złowionej nigdy nie widziałam, mówił że jedli je na bieżąco bo jak je trzymać tyle czasu bez lodu. Brzmi jak kłamstwo.

— Zaraz załatwimy tę sprawę z księżycem, nie wiem tylko na co się je bierze, raczej nie na robaki?

Śmieję się, gdy odstawia pantomimę zarzucania wędki. Wreszcie wykonał zamaszysty ruch i cisnął dociążoną żyłkę w kierunku nieba, a potem zaczął energicznie kręcić kołowrotkiem. Z jakiegoś powodu żyłka nie opadała za ścianę budynku, była naprężona i lekko drgała.

Cały świat się potknął. A księżyc na niebie stawał się coraz większy i większy. Niebo trzeszczało jak nadwyrężona stalowa belka na chwilę przed pęknięciem.

— Wreszcie dotrzymałeś słowa… — wyszeptałam niedowierzając.

— To chyba ostatni raz. — odpowiedział


64 ÷ 8 = Commodore 64
⌜ Technologia ⌟

Ze wszystkich odruchów konsumpcjonizmu najgorszy jest konsumpcjonizm aspiracyjny. Jest jedną rzeczą kupować rzeczy ostentacyjne i zbyteczne, które błyszczą i szczerzą się zza mankietów kruszcem czy szlifem, inną rzeczą jest kupować rzeczy z myślą, że uczynią one z nas lepszych ludzi. Sztalugi i sztangi, notatniki i nici, gitary i garnki. Wszystkie w kącie, pokryte kurzem, nie zrobiły z nas malarzy, siłaczy, pisarzy, Slashy i kucharzy. Wszystkie te niezbyt drogie rzeczy, jedno kup teraz stąd, wyposażone w możliwość magiczną moc wyrwania tego lepszego ja z tego zwykłego. Łatwiej jest marzyć, marzenia są darmowe, z darmową dostawą.

Gdybym wszedł do Waszych domów pod ochroną uzbrojonej w niekonstytucjonalne narzędzia, tajnej policji i przeszukałbym Wasze szuflady, ile znalazłbym w nich Raspberry Pi, które kupiliście „do projektu”, ale brakowało Wam kabelka, czasu i wizji żeby go popchnąć dalej? Nie, nie zdążycie spuścić ich w kiblu, jesteśmy już na schodach.


Wrobiono mnie, czy też wrobiłem się sam, w ponowną próbę odpalenia naszego własnego muzeum komputerów w Łodzi. Minęło osiem lat odkąd wystartowaliśmy z wielkim hukiem, ale zabrakło mi zapału, życie się skomplikowało, wiele rzeczy mi zbrzydło i przestałem się udzielać. Ostatnio sprawa wróciła na wokandę i nadając sobie samozwańczy tytuł kustosza ośmiobitowców ruszyłem do pracy. Przebieram oprogramowanie, buduję listy, rozgryzam najlepsze sposoby serwowania tego wszystkiego gościom, próbuję pisać jakieś programy, z różnym skutkiem.

Podczas całonocnej, weekendowej, sesji przypomniałem sobie, że bawiłem się kiedyś emulatorem C64, portem VICE, który działa bezpośrednio na Raspberry Pi, bez pomocy kernela Linuksa. BMC64 startuje w sekundę, potrafi emulować całą gamę ośmiobitowców (C64, C128, C16, VIC20, PET), czyta obrazy dysków, kartridży, obsługuje pady pod USB, a na pinach GPIO można wyciągnąć sygnały kompatybilne z userportem i robić prototypy urządzeń bez obawy o spalenie leciwego i drogiego retro-komputera. Ogólnie, kawał doskonałego oprogramowania. Wyciągnąłem z szafki RPi 3 i 4, służące mi przez długi czas za domowy serwer i zabrałem je do muzeum.

Emulowane komputer vis-a-vis RPi3

Zestawienie C64 poszło mi szybko, ale gdy przełączyłem emulator w tryb C128 powitał mnie komunikat, że nie przegrałem odpowiednich plików. Kilka prób później udało mi się go uruchomić. Pomyślałem chwilę. Skoro ja się potknąłem to jaką szansę ma ktoś, kto chciałby może zaprząc swoje Maliny do szlachetnej pracy jaką jest emulacja Komody? Zwłaszcza ktoś bez znajomości nomenklatury. Albo ktoś leniwy. Musiałem myśleć o tych wszystkich ludziach, którzy podczas kontroli wcześniej wspomnianych jednostek tajnej policji będą mogli wskazać na RPi będące w użyciu, unikając kary lub znacząco ją opóźniając, do momentu w którym okdryją Arduino i ESP32 w stanie spoczynku.

Usiadłem więc i napisałem skrypt, który generuje gotowe do użycia archiwum (lub obraz, jeśli ktoś jest uzbrojony w dostęp do sudo i kpartx, o którym kiedyś już pisałem) zawierający firmware do wszystki1 emulowanych komputerów, wystarczy rozpakować je na kartę SD sformatowaną w FAT i wsadzić do RPi.

git clone https://git.sr.ht/~bronikowski/c64pi
cd c64pi
./build.sh # wszystkie artefakty znajdą się w bieżącym katalogu

Możecie też pobrać sam skrypt jeśli nie macie ochoty klonować repozytorium.

OK, ale co dalej? Możecie grać w stare, ale jare, gry. Możecie oglądać dema bez YouTube, możecie pouczyć się assemblera albo nawet BASIC-a2 Nie macie ograniczeń, poza niezbyt ciekawą paletą kolorów, ekstremalnie wolną stacją dysków (której emulację zgrzytania polecam włączyć, dopełnia iluzji) i anorektyczną ilością pamięci z perspektywy współczesnego użytkownika. Wystarczy jednak udać się na krótką przechadzkę po dziełach sztuki stworzonych przez współczesnych mistrzów żeby przekonać się, że bariery są tylko w Waszych głowach.

Skrypt w działaniu

Podczas pisania tego tekstu wpadł mi do głowy pomysł, mógłbym dodać kilka gier, dem i kartridżów do wygenerowanego obrazu żebyście mieli co robić prócz lampienia się w migający kursor zwisający spod READY. Jak postanowiłem tak zrobiłem. Skrypt, na wasza życzenie, pobierze przygotowane przeze mnie archiwum. Rzeczy wybrane pół na pół: z kompletnym rozmysłem i od dupy, mieszanka studencka i tanie wino.

Dobrej zabawy! A jeśli macie jakieś pytania o konfigurację, używanie BMC64 czy „w młodości grałem w taką grę, pamiętasz może” — możecie zawsze wysłać e-maila.

  1. Prócz C= PET, może w przyszłości, jak sam go rozgryzę, mam z nim zerowe doświadczenie i raczej za szybko nie pojawi się w muzeum
  2. Nomen omen, kilka miesięcy zacząłem pisać „książkę” o BASIC 2.0 w ramach walczenia z marazmem i depresją. W myśl zasady, że lek musi źle smakować. Jak ktoś mnie zmotywuje to może skończę. Mam na oko 15% i tyleż chęci obecnie.

timeout, czekając na Gotoa
⌜ Technologia ⌟

Powiedzcie mi, czy to znacie. Jest wieczór, Wasz zmęczony umysł zaczyna produkować głupie pomysły, cały pochód głupich pomysłów, niektóre trzymają się za ręce i wywijają fikołki próbując zwrócić na siebie uwagę, a gdy im się to udaje, podrywacie się z fotela z „HM!” i pędzicie do biurka.

Dziewięćset dziewięćdziesiąt dziewięć razy na tysiąc okaże się, że ten pomysł nie jest taki głupi i że dawno został rozwiązany przez osoby bystrzejsze, bardziej utalentowane, dobrze wyglądające w strojach wieczorowych, posiadające bogate życie wewnętrzne i miłosne. Jedyna szansa, że popełnili jakieś wykroczenie przeciwko Waszemu zmysłowi estetycznemu i macie w sobie dość pasji żeby wynaleźć na nowo lepsze koło, inaczej trzeba zaakceptować istniejącą sytuację i próbować obrócić sprawę w żart, na przykład pisząc notkę o Waszym „odkryciu”.

W wyniku zawirowań życiowych moim jedynym komputerem jest obecnie Thinkpad X61s. To dziarski siedemnastolatek i prawdopodobnie mój ulubiony laptop. Ma wszystko, czego pragnę. Kwadratowy ekran, wygodną klawiaturę, brak touchpada, łatwe do wykręcenia śrubki gdybym chciał coś zmienić w środku. Do tego działa pod kontrolą współczesnego systemu operacyjnego i nie robi z tego powodu żadnych problemów.

~: uname -r && cat /etc/issue.net
6.1.0-16-amd64
Debian GNU/Linux 12

Pod tymi wszystkimi poduszkami jest jednak małe ziarnko grochu, które uwiera mnie w tyłek: niektóre współczesne programy, zwłaszcza te z ciężkim I/O, ujawniają ograniczenia tak starego komputera. Na przykład Syncthing, bez którego nie mogę żyć, bardzo boleśnie daje o sobie znać podczas zmiany wielu plików. I tu urodził się pomysł: mam skrypt, który odpala się na starcie komputera, sprawdza on, czy jestem w domu1, a jeśli nie, wyłącza różne serwisy i zmienia trasy pakietów, spełnia różne moje paranoiczne fanaberie. Gdybym dopisał tam odpalenie Syncthinga i zabił proces po minucie czy dwóch, miałbym mały podatek wydajnościowy na początku, ale potem odzyskałbym zasoby i miał wszystkie/większość nowe plików.

Wystarczałoby odpalić proces, złapać PID, poczekać zadany czas i wysłać mu morderczy sygnał. Przesiadając się z fotela na fotel pomyślałem: pewnie ktoś już to zrobił. I miałem rację, programiści GNU Coreutils i nazwali to timeout.

timeout

W najczystszej formie timeout przyjmuje dwa parametry. Czas do którego ograniczamy uruchomienie programu, domyślnie w sekundach, co można zmienić przyrostkami: m, h, d — odpowiednio, minuty, godziny i dni. Niestety, nie można ich łączyć. Jeśli chcemy czekać przez godzinę i pięć minut podajemy 65m, 1h5m nie zadziała.

Drugim parametrem jest oczywiście polecenie.

Szast-prast. Dodałem timeout 200s syncthing i uznałem sprawę za zakończoną. Następnego wieczoru zadzwoniła do mnie A. abym jej pomógł rozczesać kołtun jakim są zwykle skrypty używane w praktyce zwanej DevOops. I co widzę w pierwszej linijce? Tak, timeout. Myślę, to znak, znak żeby dopisać kilka „jednakże!”.

Jeśli polecenie wykona się przed zadanym czasem timeout skopiuje kod wyjściowy odpalonego procesu. To pożądana sytuacja, często chcemy sprawdzić, czy wszystko się udało czy też program, któremu zadaliśmy limit został ubity.

$ timeout 5s ./sleep_and_die.sh 2 5
Sleep for 2, die with 5
$ echo $?
5

Skrypt wykonywał się 2 sekundy i zwrócił pięć, co zostało odzwierciedlone w zmiennej powłoki. A co w sytuacji, gdy zostanie ubity? Domyślnie timeout zwróci jeden ze swoich statusów, jeśli mamy obsługę sygnałów w naszym kodzie możemy chcieć zachować oryginalną informację do dalszego przetwarzania.

$ timeout 5s ./sleep_and_die.sh 6 5
Sleep for 6, die with 5
$ echo $?                          
124

Jeśli dodamy obsługę SIGTERM i zwrócimy tam własny kod wyjścia oraz użyjemy opcji --preserve-status otrzymamy oczekiwany rezultat.

$ timeout --preserve-status 5s ./sleep_and_die.sh 6 5
Sleep for 6, die with 5
Zakończony
$ echo $?                                            
5

Kiedy timeout osiąga limit zadanego czasu do procesu wysyłany jest SIGTERM, używając parametru -s możemy zdefiniować inny sygnał. W tym przykładzie obsługuję SIGTERM i SIGQUIT.

Zdarzają się sytuacje w których polecenie nie przestaje działać mimo wysłanego sygnału. Jak uczył nas film dokumentalny Zombieland w czasach snujących się zombie-procesów drugą zasadą przeżycia jest "DOUBLE TAP". Autorzy dostarczyli nam --kill-after przyjmujący dodatkowy czas po którym do procesu zostanie wysłany SIGKILL. Dla przykładu przechwycimy SIGTERM i nie porzucimy procesu.

I to tyle, teraz możecie czekać na Gotoa, choć uprzedzam, że on nie nadejdzie. Wesołego nowego roku. :*

  1. Dom jest tam, gdzie WiFi podłączyło się do sieci o znanym adresie MAC

Marginalia (II-VII)
⌜ Literatura ⌟

Ocean daleko od brzegów zdaje się nie mieć kierunków. Są tylko dwie połówki kuli złączone ze sobą linią horyzontu. Jedna mieni się niebieskoczarno, druga błękitnozielono. Tak postrzegał sytuację kawałek deski podskakującej delikatnie na powierzchni wody. Była niezadowolona ze swojej obecnej pozycji — bezwolnego pasażera tej pustki.

Pod deską tętniło życie, które zdawało się mieć pełną kontrolę nad swoim jestestwem. W głębinach ruch miał cel, tam igraszki i śmierć miały znaczenie, a to znaczyło, że tam istoty doznawały szczęścia, nawet jeśli tego nie rozumiały. Deska dryfowała.

Próbowała płynąć to tu, to tam, na wschód, na zachód, ale nie miała duszy, jej wszystkie modlitwy rozmieniały się na drobne. Niebo na nią mrugało świtem tyle razy, a ona pozostawała w miejscu, patrząc całą sobą ku chmurom, a drugą stroną w mrok głębi.

Pewnego dnia nastał ruch. Wpierw wolny i wydawałoby się — bezcelowy. Deska była przekazywana z rąk do rąk przez taki czy inny prąd, nadal bezwolna, ale odczuwająca cel. „Płynę”, myślała. Im dłużej płynęła, tym bardziej upewniała się, że podjęła słuszną decyzję co do kierunku, a jeśli kierunek nagle uległ zmianie, wierzyła, że poprawiła poprzednią, błędną decyzję.

Wszystko nabierało tempa. Świat, który znała deska, zmienił się, spienił i spiętrzył. Tym razem ocean podrzucał ją na wiwat! Hurra, hurra! A w oddali pojawiła się nowość, żółtosina linia plaży, która rosła i rosła, rozsadzając horyzont. Wreszcie zmiana, gwałtowny pęd, ocalenie.

Deska wylądowała na plaży, wyproszona przybojem. Wyschła w słońcu, spróchniała i przestała przejmować się wszystkim.


Marginalia (II-VI)
⌜ Literatura ⌟

Artyści umierają za swoją sztukę. Wiktor, czy też Niesamowity Viktor, umierał dziś kilkukrotnie. Sala klubu była wprawdzie wypełniona, ale nikt, kto przybył w ten czwartkowy wieczór do baru, nie planował oglądać jego występu, wieczorki artystyczne wiążą się z promocją na napoje alkoholowe. Cel jest jasny: napędzić widownię i ją spacyfikować. Niesamowity Viktor widział, że oczy tylko tych ludzi, którzy siedzieli najbliżej sceny, podążały za nim. Reszta, pozostając ukryta w ciemniejszej części baru, nie zwracała na niego uwagi. Drugą strona miłości nie jest nienawiść, tylko obojętność.

Kiedy kończył jedną sztuczkę, czekał chwilę na oklaski, a te nie nadchodziły. Wydawało mu się, że jego ręce są sztywne, niewprawne, niezdolne do ruchów pełnych gracji. Kiedy wyciągał z rękawa „niekończącą się” kolorową szarfę, czuł, jak ta przesuwa się pod jego niedopasowanym smokingiem, zawadzając o guziki, sprawiając, że co powinno być pokazem płynnych ruchów i pewności, staje się czkawką gestów. Za każdym razem, gdy materiał stawiał opór, nachodziły go mdłości.

Gdy ostatnie centymetry szarfy pojawiły się wreszcie, Wiktor uniósł ją w górę, pokazując widowni brak supłów. Następnie podszedł do stoliczka i sięgnął po talię kart. — Do tej sztuczki potrzebuję osoby z widowni — oznajmił, a gdy nikt nie drgnął z miejsca, podszedł do najbliższego stolika i zdobywając się na wyuczoną jowialność, powiedział do siedzącego przy nim człowieka: — Pan! Proszę wybrać kartę. — Wskazany osobnik wziął pierwszą kartę, po czym został poinstruowany, aby nie pokazywać jej wartości nikomu.

Wiktor zgrabnie wrócił na scenę i zaczął tasować talię. Robił to tysiące razy. Rozłożył karty w palcach w mały wachlarz, a następnie przesunął nim między oczami.

— Czwórka kier! Proszę sprawdzić! — zawołał do widza trzymającego kartę. Ten upewnił się i potwierdził, po czym podniósł się i zwrócił Niesamowitemu Viktorowi kartę, jakby bał się, że to jedyna talia, na którą go stać. Artysta odczytał to w duszy jako obelgę, ale w sercu jako prawdę.

Nadchodził koniec programu. Wiktor stanął na środku sceny i ściągnął z głowy cylinder. Włosy miał mokre od potu i przyklejone czoła, jakby obudził się w środku nocy z koszmaru.

Zaprezentował dno cylindra widowni, potem stuknął w niego kilka razy. Wreszcie sięgnął w głąb i wyciągnął za kark pięknego, białego królika. Obrócił się delikatnie od lewej do prawej, aby zobaczyła go cała widownia. Wypuścił go na deski estrady, sięgnął ponownie do cylindra i wyciągnął kolejnego. Widownia lekko się ożywiła, fala zainteresowania rozlała się do najodleglejszych zakątków lokalu. „Widziałeś? Dwa króliki”.

Potem były trzy króliki. Cztery króliki. Wiktor ukłonił się, rozległy się ciche brawa.

Zaciągnięto kurtynę i bar wypełnił się znów rozmowami.


Korytarz był tak wąski, że gdyby rozłożyć w nim ręce, dotykałoby się palcami obu ścian. Jego koniec ginął w mroku. Sufit zdobiły plamy i szczerbate oprawy lamp jarzeniowych. Podłogę wyłożono zielonym linoleum, które czas naznaczył pęknięciami, przetarciami i odbarwieniami, wyznaczając historyczne ścieżki, miejsca postojów i fantomowe lokalizacje wyniesionego sprzętu. Duchy poprzedniego artystycznego życia dawno już wyegzorcyzmowała codzienność.

Po lewej stronie co kilka kroków znajdowały się drzwi skrywające małe i martwe pokoje, składnice złomu, kurzu i występujących artystów. Spod czwartych drzwi sączy się światło, tam bez wątpienia przebywa obecnie Niesamowity Viktor. Postać w płaszczu podeszła do nich i zastukała cicho, niemal konspiracyjnie.

— Zaraz, przebieram się — odpowiedziały drzwi.

Postać zastukała ponownie i dodała: — Pan Viktor, Niesamowity?

— Zaraz, zaraz — za drzwiami było słychać ruch, gdy wreszcie się otworzyły, stanął w nich człowiek w średnim wieku, któremu przerwano naciągnie koszuli przez głowę — …tak, o co chodzi? — zapytał.

— Dzień dobry — powiedział gość — widziałem właśnie pańskie przedstawienie, reprezentuję organizację pozarządową, która ma na celu dobrostan zwierząt w przemyśle rozrywkowym. Nie jest w żaden sposób prawnie umocowane, aby przeprowadzić kontrolę, więc to Pana wybór.

— A jak Pana nie wpuszczę?

— Nic się nie stanie, poza tym, że napiszę o tym w raporcie, który jest dostępny dla zainteresowanych podmiotów w przemyśle rozrywkowym. Wie pan, „jeśli chcecie zatrudnić kogoś, kto nie uczy niedźwiedzi tańczyć, parząc im łapy, sprawdźcie naszą listę”.

Wiktor popatrzył na jego pogodną twarz. Człowiek wydawał się promieniować gorliwością i dobrocią. Ubrany był schludnie, jakby do baru zaszedł wprost ze swojej biurowej pracy bez przebierania się. Miał w ręku małą teczkę.

— Zapraszam — Niesamowity Viktor odsunął się od drzwi.

Wygląd pokoju był w kompletnej harmonii z tym, co można było zobaczyć na korytarzu. Żaden element nie był zniszczony, ale wszystkie były zmęczone. Biurko z lampką, na nim małe lustro oparte o ścianę. Kanapa służąca jako wieszak. Krzesło, kilka taboretów, na wprost drzwi okno wychodzące na fasadę budynku obok. Wiktor przerzucił zalegające na kanapie rzeczy na jedną stronę i wskazał gościowi miejsce do siedzenia. Ten, zanim je zajął, wyciągnął dłoń: — Proszę mi mówić Miron.

— Wiktor — odpowiedział Viktor.

Miron usiadł na kanapie, wyciągnął z teczki jednostronnicowy formularz, popatrzył na niego z uwagą, uzupełnił kilka rubryk, nazwisko kontrolera, nazwisko artysty, nazwę lokalu. Odhaczył kilka punktów i zwrócił się wreszcie do Wiktora.

— Króliki, dobra, klasyczna sztuczka. I jak mistrzowsko wykonana. Cztery króliki na ciasnej estradzie, hyc hyc, pomiędzy nogami. Piękne zwierzęta. Patrzę tak teraz tutaj i nigdzie ich nie widzę, czy trzyma pan je w klatkach? Może po występie pakuje je pan do samochodu? Chciałbym się dowiedzieć, jak są one traktowane, wie pan, wie pan, o co mi chodzi? — Miron tracił pewność z każdym słowem, patrząc na niewyrażające niczego oblicze magika.

— Nie ma żadnych królików. Dokładniej, to nie ma już żadnych królików. Odeszły.

— Odeszły? W sensie pan je najmuje od kogoś i ten ktoś je zabiera po?

— Odeszły. Nie ma ich.

Miron przybrał minę człowieka, który nie jest pewien, czy robią z niego idiotę, czy też on czegoś nie rozumie. Próba odczytania podpowiedzi z twarzy Wiktora nie przynosiła skutku, to było jak czytanie pustej strony. Ten wreszcie podniósł się, podszedł do sterty rzeczy leżących obok kontrolera, wziął cylinder, strzepnął z niego niewidzialny kurz, a następnie wyciągnął z niego królika. Popatrzył na niego krytycznie i postawił go na ziemi.

Królik pozostawiony sam sobie siedział przez chwilę w miejscu, a potem zaczął skakać po pokoju. Przesuwał się i zamierał, tak jak to robią zwierzęta w nowym środowisku. Kontroler chciał coś powiedzieć, ale Wiktor przerwał mu gestem ręki. — Czekaj — powiedział.

Po niecałej minucie królik dotarł do taboretu i hycnął pod niego. Zza drewnianej nogi wystawał jego pyszczek, różowy nos pozostający nieustannie w ruchu, uszy położone po sobie. Po drugiej stronie nogi, gdzie powinna się znajdować reszta tułowia, nie było niczego. Królik zastrzygł wąsami, odwrócił się i zniknął kompletnie.

Miron obszedł taboret, podniósł go na wysokość wzroku, przełożył palce przez wszystkie przestrzenie w bryle taboretu. Nie znalazł niczego. Postawił taboret na ziemi i usiadł na nim.

Wiktor patrzył z wyrozumiałym uśmiechem.

— Mówiłem. One zawsze odchodzą. Kurtyna opada, odchodzą. Wczołgują się pod koc, odchodzą. Wbiegają za szafę, odchodzą. Jeśli znikną na chwilę z wzroku, odchodzą. — Mówiąc, zwijał swoją garderobę, szykując się do wyjścia.


Tego samego wieczoru na rogu cichnącej ulicy Miron usiadł przy barowym stoliku. Rozłożył przed sobą formularz, wyprostował go kciukiem, następnie wyciągnął papierosa, wypalił go i wyciągnął następnego. Stukał długopisem w kartkę i szukał odpowiedniej rubryki. Nie znalazłszy niczego, co odpowiadałoby rzeczywistości, wpisał odręcznie na spodzie kartki:

„Uchybień nie stwierdzono.”


Marginalia (II-V)
⌜ Literatura ⌟

Wpadł na mnie, wychodząc zza rogu zaułka. Zatrzymałem się o krok przed jego bosymi stopami, zmierzyliśmy się wzrokiem. On wysoki, w białej, rozchełstanej szacie, mimo zimna i deszczu bosy. Ja zdziwiony, na wpół już wychylony, aby ominąć postać z „przepraszam” na ustach.

Wtedy chwycił mnie za ramiona, patrząc mi w twarz z taką zawziętością, że jego źrenice nieomal odgniotły się na moim czole, i powiedział podniesionym głosem, „I ty będziesz zbawiony!”. Zamarłem w tym jego uścisku, przeklinając zezowate szczęście, które wylosowało mi wariata tak późno wieczorem. „Przepraszam?” zapytałem i odsunąłem jego wyciągnięte ręce.

On klasnął w dłonie jak dziecko oczekujące prezentu i powtórzył, że będę zbawiony. Zbawiony, zbawiony, mówił z uśmiechem.

„Zbawiony od lęku, od tej pustki w Twojej duszy, wydobyty z dna na światło dzienne, uwolniony z pęt, otrzepany z kurzu, postawiony na nogi, abyś rękoma mógł sięgnąć nieba, zbawiony dla siebie, aby zbawiać innych! Rozwiniesz się jak kwiat pokryty szronem wiosennej nocy. Wzejdzie słońce, a ty otrzymasz życie i dasz życie”, powiedział z przekonaniem. Następnie uścisnął jeszcze raz moje ramiona, obrócił się na gołej pięcie i zaczął się oddalać.

Stałem tak z głupią miną, którą przyjmują ludzie, kiedy się ich nagle zakłopocze, pomiędzy lekkim wystrachem, rozbawieniem sytuacją oraz zadowoleniem z jej szybkiego rozwiązania. Wzruszyłem ramionami i wsadziłem ręce do kieszeni płaszcza, żeby osłonić je przed padającym deszczem. Odprowadziłem wzrokiem białą postać, która nagle rzuciła się do biegu i zniknęła za rogiem. „Ty skurwysynu!” rzuciłem jeszcze za nim, ale pewnie już nie usłyszał, a jak usłyszał, to pewnie się nie obruszył. Portfel mi ukradł.

I tego dnia byłem zbawiony. Nie upiłem się, nie poszedłem do baru grać w karty, nie proponowałem nura w degrengoladę ulicznicom. Wróciłem do domu i położyłem się spać, gdyż wszystkie moje występki i grzechy kosztują pieniądze. Nie mam naturalnych talentów ku popełniania zła, mogę je tylko kupić.


Marginalia (II-IV)
⌜ Literatura ⌟

(Drogi czytelniku, jeśli jesteś uzbrojony w specjalistyczne urządzenie do czytania e-książek możesz zrobić mi przyjemność i pobrać zbiór opowiadań «Marginalia», dziękuję!)

Do przeszklonych drzwi zastukała sekretarka i nie słysząc zaprosin, wsadziła głowę, żeby sprawdzić, czy szef nie jest przypadkiem zajęty. Nie był, chodził po pokoju i zdawał się nie zważać na podążającą za nim wzrokiem sekretarkę. Miał ręce założone z tyłu, a jego łysa głowa była pochylona do przodu, jakby stawiał czoła jakiemuś silnemu wiatrowi.

— Przepraszam! — powiedziała wreszcie.

— Ah! — żachnął się dyrektor i obrócił na pięcie. — Pani Marto, nie usłyszałem, jak Pani stukała, myślałem. O tej godzinie myślenie idzie mi bardzo powoli, więc muszę chodzić, a wtedy nie zwracam na nic uwagi — dodał przepraszającym tonem.

— Nie przeszkadzałabym już dziś, ale okazało się, że mamy jeszcze jedno spotkanie z kimś z branży, które nie było potwierdzone, ale pan pojawił się przed chwilą i chciałam zapytać, czy mam go umówić na inny czas i odprawić?

Dyrektor spojrzał do góry, jakby na suficie miał ściągę z bieżącym rozkładem zajęć. Wreszcie kiwnął głową, drzwi zamknęły się za sekretarką, a on zajął miejsce za swoim biurkiem.

Biurko stanowiło centrum dowodzenia, zawierało wszystko, co powinno zawierać biurko dyrektora, który uważa się za człowieka pracującego. Nie zielone sukno bankierów i prawników, lecz wielokrotnie malowany i lakierowany drewniany blat, tak wielki, że trzeba się podnieść z krzesła, by sięgnąć ku jego krańcom. Na nim zestaw papierów w różnym stadium przetworzenia, te ku brzegom w różnym stanie rozkładu, głównie rzeczy już nieważne, odepchnięte z niechęcią. Prawa szuflada, butelka czegoś mocniejszego na zimowe wieczory, ostatnio nieco zaniedbana, gdyż dyrektor postanowił, że powoli robi się zbyt stary na to, by wychodząc po pijaku z biura, odegrać przekonująco rolę odpowiedzialnego, szanowanego człowieka biznesu przed nocnym portierem, którego biuro obserwuje bezpośrednio windę. Oczywiście mógłby go zwolnić, gdyby zaczął siać plotki, ale czułby się fatalnie, przyłapany jak uczniak, więc to nie rozwiązałoby niczego.

W lewej szufladzie trzymał rewolwer, prezent od przyjaciół, sześciostrzałowy. Dyrektor wyciąga go z szafki co pół roku i zanosi do rusznikarza na przegląd. Sam nie wierzy, że mógłby go użyć, nie dlatego, że brzydzi się przemocą, raczej dlatego, że w złości nie radzi sobie z rzeczami wymagającymi gracji.

Znów rozległo się stukanie, drzwi otworzyły się i do pokoju wparował, nie czekając na zaproszenie, człowiek w średnim wieku. Żwawym krokiem przemierzył pokój i stanął przy biurku z wyciągniętą ręką. Wszystko stało się tak szybko, że twarz dyrektora nie zdążyła nawet zareagować.

Dyrektor uścisnął profesjonalnie dłoń nowoprzybyłego i wskazał mu krzesło, które ten zajął, nieomal zataczając piruet na pięcie, po czym postawił obok aktówkę, wygładził nieco swoje fiołkowe spodnie i założył nogę na nogę. Z wewnętrznej kieszeni marynarki koloru musztardowego wyjął coś, co zatrzymał w zamkniętej dłoni.

— Proszę — powiedział dyrektor — pan chciał się ze mną spotkać. Proszę wybaczyć to zamieszanie ze spotkaniem, czasami są takie tygodnie, że wszystko idzie nam na boki. Przez to wszystko nie wiem nawet, w jakiej pan sprawie, proszę więc.

— Panie dyrektorze, nazywam się Marcin J. i reprezentuję firmę produkującą elementy elektryczne. Elektryka jest przyszłością, tak naszą, jak i państwa. Słyszeliśmy, że rozpoczynacie prace nad nowymi pociągami na rynek niemiecki, gdzie będą jeździły z użyciem trakcji elektrycznej. Cieszymy się, że nasze lokalne przedsiębiorstwa tak szybko inwestują w pewny sukces.

Marcin poderwał się na równe nogi, podniósł aktówkę z podłogi i płynnym ruchem wydobył z niej katalog produktów. Odwrócił go w rękach i położył przed dyrektorem, który otworzył go niechętnie, bo zwykle nie był odpowiedzialny za kupowanie pojedynczych elementów; od tego jest dział w firmie. Skoro jednak nieopatrznie wpuścił sprzedawcę, odegra przynajmniej zainteresowanie, a sam katalog rzuci na biurko inżynierów, którzy lepiej wiedzą, czego potrzeba.

Na każdej kartce roiło się od rozmaitych przełączników, kontrolek, lamp rogowych, gniazdek, a każde z nich w rozmaitych fasonach i kolorach, każda kategoria komentowana przez Marcina w tylu detalach, na ile pozwalało tempo przerzucania kartek przez dyrektora.

Zakończył wreszcie kartowanie i powiedział, że dziękuje za prezentację i poda to dalej, z nadzieją, że może już iść do domu. Wtedy nad złożonym już katalogiem pojawiła się otwarta dłoń Marcina, która ujawniła małą lampkę koloru pomarańczowego, która gasła i zapalała się rytmicznie.

Sprzedawca wydawał się zadowolony z tak efektownego finiszu. Położył migającą lampkę na biurku i szybko dodał: — A to nasza nowość. Lampka informacyjna o kierunku, albo migacz, jeśli nikt nie wymyśli lepszej nazwy do czasu, aż rozpoczniemy pełną produkcję. Czas jest regulowany! — Marcin nie krył dumy.

— No bardzo ładne — przyznał dyrektor, przyglądając się pulsującemu gadżetowi. — Ale co to dokładnie robi?

— Och, to bardzo proste. Mocujemy dwa takie na każdym wagonie pociągu. Po obu stronach. Nasz elektryk montuje przełącznik, także dostępny w naszym katalogu, którym można zapalać jeden lub drugi…

— …i co się wtedy dzieje? — dyrektor wciąż nie rozumiał idei.

— Wtedy wiadomo, czy pociąg jedzie w lewo, czy w prawo! Już z daleka. Podwyższone bezpieczeństwo, reklama dla firmy, dba nie tylko o swoje, ale także o zwykłego człowieka, a to przecież zwykły człowiek kupuje bilety!

Dyrektor zrobił minę, jakby ktoś opowiedział mu żart, w opinii opowiadającego żart bardzo dobry, z puentą o jego matce.

— Drogi panie — oznajmił sztywno. — Pociągi, per se, nie skręcają. To nie jest karoca, pociągi jadą po szynach, bardzo rzadko zdarza się, żeby pociąg nieplanowanie skręcił. A gdy to się dzieje, potrzebne są karetki i ciężki sprzęt, nie migające lampki!

— W takim razie — niewzruszenie kontynuował Marcin — moglibyśmy dać przekaźniki w miejscach, gdzie postronnym osobom wydaje się, że pociąg skręca, wtedy maszynista nie musi nawet używać przełącznika, wszystko odbywałoby się automatycznie!

Dyrektor wsparł się na na dłoniach i wysapał: — Setki, nie, tysiące kilometrów mamy obstawić przekaźnikami, które nic nie robią? A nie, przepraszam, migają, że pociąg skręca, choć każdy widzi, że skręca? I pewnie oczekujecie państwo kontraktu na wymianę żaróweczek i, niech zgadnę, te żaróweczki się wypalają po tygodniach, zgadłem? — Tu dyrektor już krzyczał. — I pewnie te przekaźniczki też trzeba konserwować konsekwentnie, inaczej wszystko przestanie mrygać!

— Trzeba rozważyć przyszłość — odpowiedział spokojnie sprzedawca. — A gdyby w przyszłości pociągi mogły się wyprzedzać, w ramach konkurencji i walki o klienta jeden drugiemu dawałby znaki, o, zobacz, jaki jesteś wolny, minę cię po prawo!

Dyrektor schylił się w kierunku biurka i próbował drżącymi rękoma otworzyć lewą szufladę. Ta wysuwała się zaledwie na ósmą część swojej długości, trzasnął więc nią w złości. Porwał katalog, próbował zgnieść go w kulkę, ale zbyt wiele stron stawiało opór, ostatecznie cisnął nim, zwiniętym w rulon, w kierunku ratującego się ucieczką Marcina.

— Gałgany! Patafiany, krwiopijcy i najgorsze — dyrektor wziął oddech — kompletni idioci! Won, won, won, drzwi nie zamykaj nawet za sobą.

Dyrektor opadł na fotel, pogładził głowę i otworzył prawą szufladę. Następnego dnia firma dała ogłoszenie, że szuka nowego portiera.


Marginalia (II-III)
⌜ Literatura ⌟

— Kiedy tu do ciebie przychodzę, a to zawsze ja muszę, bo ty mnie już nie odwiedzasz, siedzisz na tym krześle taki ponury, ze zwieszoną głową. I zawsze w tym samym ubraniu, wymiętym i bezkształtnym. Nigdy nie proponujesz mi herbaty ani dobrego słowa. Czy ty się w ogóle dobrze odżywiasz? Pewnie nie jesz warzyw, twoja cera jest żółtoszara. Chcesz, żeby matka się martwiła?

Położyła dłonie na stole, czekając na odpowiedź. Wszystko w pokoju było nieruchome i nieme.

— Gdy zadzwonisz, raz na miesiąc, nie mówisz mi nic o tym, co się dzieje w twoim życiu. Kiedyś byłeś w gazetach, może nie na pierwszych stronach, ale ludzie pytali, czy to o moim synu.

— …mamo — odpowiedział więzień.


Marginalia (II-II)
⌜ Literatura ⌟

Spotkali się na tyłach lokalnego sklepu spożywczego. Wpierw przyszedł jeden, chwilę później jeszcze jeden. Obaj czekali chwilę, aż wreszcie przyszedł jeden, ostatni, który ich tu zwołał. Stanęli naprzeciwko siebie i wreszcie jeden przemówił. Był on najstarszy rangą, ale rangi nie grały roli w ich życiu, więc przyjmijmy, że ten jeden mówił po prostu pierwszy.

— Rzadko się zdarza, abyśmy się spotykali, zwłaszcza na wezwanie. Ani ja, ani drugi inny nie widzieliśmy powodu, ale skoro jesteśmy w tym samym miejscu, możemy. Może trzeci inny ma powód?

Inny przemówił zaraz po nim:

— I szybko, mamy rytuały do odprawienia, niebo kręci się nad nami bez względu na to, czy ktoś ma z tym faktem jakieś problemy. Rzeczywistość jest wystarczająco krucha, aby nie próbować cierpliwości Sił, tak wspierających nas, jak i tych będących przeciwko nam.

Trzeci inny odpowiedział im szybko:

— Drodzy my, moja dusza jest pełna niepewności. Każdego dnia zastanawiam się, po co my to robimy. I czy robimy to poprawnie? Czy nasz los jest przypieczętowany, los ludzi, którzy chronią ten świat, pozostając bez twarzy i imion?

— Nie rozumiem — wtrącił inny — czy chcesz sprawdzić metodą testu, jak prawdziwe są nasze metody? A co, gdy mamy rację? Jeśli my, najmądrzejsi, przepełnieni wiedzą sięgającą pradziadów spisujących dzieje na kościach zwierząt, przestaniemy robić, co robimy, i następnego dnia niebo stanie w ogniu, oceany zamienią się kamień, a góry wyparują, kiedy nastąpi zagłada, totalna i bezwzględna, co wtedy? Chcesz wtedy powiedzieć światu, z którego ucieka życie, „no wybaczcie, chciałem zobaczyć tylko, czy to ma sens, teraz widzę, że ma, można to odwrócić do jutra, kiedy wznowimy normalne usługi?”.

Inny zgodził się, sięgnął do kieszeni i wydobył z niego kolorowy proszek, który podrzucił do góry. Kolorowy dym opadał powoli ku ziemi, a oni uklękli, czekając. To był rytuał 10:38, jeden z 35 utrzymujących Siły w balansie.

Wszechświat istniał dalej, czego dowodem była pracownica sklepu, która właśnie wyłoniła się zza rogu, trzymając w rękach wielki worek pełen śmieci. Zmierzyła ich wzrokiem i burknęła, że spożywanie wyrobów alkoholowych w obrębie sklepu jest zabronione. Inny powiedział, że oczywiście. W tym czasie inny zasłonił otwartą butelkę połą płaszcza.

— Czy potrzeba nas trzech do tego wszystkiego? Czy nie możecie zwolnić mnie z tej służby? Na co mi znajomość wszystkich tajemnic wszechświata, wszystkich faktów, odpowiedzi, skoro nikt nie wie, kim jestem ani co robię?

„Próżność!” zawołał inny. „Upadek!” zawołał drugi inny.

I dodał:

— Chronisz każde życie i każdy atom, nie oczekuj niczego więcej, to nagroda sama w sobie. To skarb, który nosisz w sercu, niemożliwy do przebicia w złoto, za które możesz kupić inne życie. Porzuć tę ścieżkę, zaprowadzi cię ona tylko do nieszczęścia. Innych można zastąpić, gdy stają się nimi, ale dla nich nie ma powrotu.

— Wystarczy! — powiedział trzeci inny. — Mam dość. Odchodzę, mam gdzieś to życie bez nagrody, tę chwałę spisaną w eterze, ten niewidzialny ciężar. I nazywam się Bartosz. Do widzenia.

Inni pochylili głowy w geście rozpaczy.

Bartosz przyjął się w firmie publicystycznej, która produkowała książki kucharskie. Dzięki swojej wszechwiedzy otrzymał przydomek „Rebus”, gdyż znał odpowiedzi na nawet najbardziej podchwytliwe pytania. Mimo to wszystkie arkana ezoterycznej wiedzy nie pomogły Bartoszowi w zgłębieniu Excela, przez co jego kariera utknęła na szczeblu managera. Dorobił się emerytury, nienawidząc każdego dnia, a potem umarł, bojąc się śmierci.

A inni? Nic o nich nie wiemy, bo byli mądrzy.


Marginalia (II-I)
⌜ Literatura ⌟

Wisiałem przewieszony przez płot jak pranie. Jak pranie byłem wyduźdany, mokry, ale czysty. Oparłem brodę na jednej ze sztachet i patrzyłem na piaskową ścieżkę, która przebiegała obok i łączyła porozrzucane domki we wioskę. Dzień powoli chylił się ku końcowi i nawet letnie słońce opieszale zjeżdżało do zajezdni. Kompletną ciszę i bezruch przerwał ujadający pies tańczący na smyczy trzymanej przez sąsiada.

Przyjmuję bardziej godną pozycję, aby po ludzku wymienić kilka uprzejmości. Kiedy sąsiad jest wreszcie w zasięgu słuchu, witam go gromko i entuzjastycznie. Zatrzymuje się z uśmiechem i zaczyna mówić. O psie, o gorącu. O tym, jak zamknięto nasz lokalny sklep, mimo że wszystko było w nim droższe, i jaki to musiał być słabo prowadzony biznes, skoro się nie udał. O sąsiadach. Niewiele, malutkie ploteczki.

Ja potakiwałem. I mówiłby tak dalej, ale przerwał zdumiony, gdy z mojego podwórka rozniosło się donośne pianie koguta, powtórzone kilkukrotnie. Sąsiad skrzywił się i spojrzał na mnie zdziwiony.

— Kogut ci pieje o tej godzinie? — zaśmiał się.

Wzruszyłem ramionami. — Tokio? Tak.

— Nie tylko pieje w nocy, ale jeszcze ma imię? Kto jest tu dziwniejszy, ty, że nazywasz ptactwo, czy ptactwo, że jest pokręcone?

— Och, on się nazywa Tokio dlatego, że jak go kupiłem z drugiej ręki, to miał ustawioną strefę czasową na Japonię. Dlatego teraz pieje. Nie da się chyba z tym nic zrobić — machnąłem ręką w geście obojętnego zrezygnowania.

— Twój kogut ma strefy czasowe, jak to działa?!

— Kto wie, jak działają strefy czasowe, chyba nikt.

Odwróciłem się od płotu i, unosząc rękę na pożegnanie, udałem się do domu.


Podcast metodą chałupniczą
⌜ Technologia ⌟

Obudziłem się wczoraj o trzeciej w nocy. Postanowiłem napić się herbaty, a gdy ją piłem zdałem sobie sprawę, że nie zasnę ponownie. Włączyłem truchło mojego laptopa i wskoczyłem do katalogu ~/work, grobowiska pomysłów, ambicji i marzeń. Nie znalazłem tam niczego inspirującego, bo z kości tamże złożonych projektów można najwyżej złożyć makabryczny ksylofon.

Zabrałem się więc za prace ogrodnicze, wypieliłem grządkę z YAMLowych chwastów, przyciąłem krzewy skryptów powłoki, zgrabiłem logi, zamiotłem ścieżki żeby pakiety mniej się chybotały w drodze do stodoły serwerów i wreszcie uderzyło mnie: hej, ten skrypt, który periodycznie pobiera listę odtwarzania z YouTube i zamienia ją w wygodne pliki dźwiękowe, on mógłby zasadniczo produkować kanał RSS lub Atom. A taki można wpiąć w aplikację do słuchania podcastów i tym samym pozbyłbym się problemu dystrybucji (relatywnie mniej uciążliwego dzięki Syncthing) oraz problemu z tym, że odtwarzacze muzyki zwykle nie pamiętają miejsca w którym porzuciłem słuchanie, a aplikacje do podcastów już tak.

Poza tym zmarnowałbym czas do momentu w którym głowa znów mi opadnie na poduszkę.

Po kilku godzinach miałem już działający prototyp, ale zaraz przyszło kolejne olśnienie, razem ze wschodem słońca. Starczy dodać do tego dwa parametry i mógłbym ofiarować taką usługę ludziom, ludziom takim jak ja. Jeśli używasz „staromodnego” klienta podcastów, takiego który czyta kanały RSS i czujesz, że są na YouTube widea, które chciałbyś zmieścić do swojego prywatnego radiowego programu, wystarczy, że wyślesz mi e-mailem adres do publicznej lub ukrytej1 listy odtwarzania, a ja odeślę Ci link kanału pod którym będzie się tworzyła audycja. Każda nowo dodana do tej listy rzecz ostatecznie trafi do ciebie jako nowy odcinek.

Na teraz mamy następujące funkcje:

  1. tworzenie kanałów RSS i Atom (kanał RSS ma więcej funkcji, bo używam własnościowych notacji iTunes)
  2. jeśli wideo ma wbudowane rozdziały, plik audio będzie posiadał także
  3. meta dane takie jak opisy i miniaturki są prezentowane w kontekście „odcinka”
  4. u mnie działa

Trzy zrzuty ekranu przedstawiające wyżej opisane funkcje w działaniu

Panelu administracyjnego zrobić nie przewiduję, gdyż jest to projekt gośćwdombógwdomware, human scale, nie policzę ci za cukier do herbaty, ale jak zaczniesz się panoszyć to ci prywatnie zwrócę uwagę, a ostatecznie wskażę drzwi.

Zapraszam więc.


Dwie rzeczy organizacyjne. W wyniku cyfrowego procesu gnilnego musiałem wyłączyć tymczasowo njusletter. Usiądę do tego niedługo, obiecuję (sobie)2 . Dwa, w grudniu chciałem opublikować kilka małych opowiadanek, które pozbierałem z notatników, nie wiem jeszcze, czy będę kładł po jednym na tydzień, czy też może stworzę gdzieś osobną stronę z odnośnikami do nich żeby wam nie przynosić rozgardiaszu do czytników RSS.

  1. public lub unlisted
  2. Naprawione, częściowo!

Pracuję, mam na to dowody
⌜ Technologia ⌟

Telefony nas śledzą, komputery nas śledzą, ulice śledzą nas oczami CCTV, pracodawcy mierzą nam puls i liczą poruszenia myszką, sklepy patrzą nam przez ramię BLE, gdy zatrzymujemy się przy półce, serwisy społecznościowe nas śledzą i w zamian dają nam możliwość śledzenia innych. Śledzą nas „dla naszego dobra”, „dla ich dobra” oraz dla „wyższego dobra”. Jedyna osoba, która nie ma ochoty nas śledzić to nieopłacony prywatny detektyw.

Skoro jest to nieunikniona rzeczywistość może czas zacząć się śledzić samemu, jak bohater książki PKD, „Przez ciemne zwierciadło”. Podczas gdy normalni ludzie używający normalnych systemów operacyjnych otrzymują inwigilację w prezencie, użytkownicy Linuksa, w duchu DIY, muszą zbudować sobie swój własny panoptykon klecąc jakąś serię poleceń w Bashu z nadzieją, że im się to nie rozsypie.

Kilka dni temu sprzątałem swoje archiwum. Okazało się na przykład, że mam pół terabajta obrazów nieistniejącego już serwera, za które wystawiają mi rachunek co miesiąc. Pośród różnych plików znalazłem niewielką paczkę nazwaną x11.tar.gpg i po chwili przypomniałem sobie, co to jest. Kiedyś wymyśliłem że napiszę sobie program, który będzie logował nazwę aktywnego okna do pliku tekstowego i dzięki temu będę mógł wiedzieć, co robiłem. Zrobiłem, wstawiłem go do crontaba i zapomniałem. Potem znalazłem efekt, spakowałem go, zaszyfrowałem i wrzuciłem do zamrażarki.

Kodu samego programu nie zachowałem, a przynajmniej nie mogę znaleźć. Bez wątpienia był bezwartościowy. Byłem za to ciekawy jak szybko uda mi się odtworzyć go przy pomocy typowego skryptu-pająka. Mam zainstalowany xdotool i po tym jak zerknąłem w jego olbrzymi manpage widziałem, że się nada.

xdotool służy do automatyzacji X11. Można nim wysyłać wydarzenie takie jak wciśnięcie klawiszy, ruch myszki, zmieniać geometrię okien, statusy. Można też odczytać informacje o klasie, identyfiaktorze i innych atrybutach dostępnych dla rzeczy działających pod kontrolą X11.

Wpisałem xdotool getactivewindow getwindowname w terminalu i otrzymałem poprawną odpowiedź — zsh. Doskonale, możemy zacząć się śledzić samemu. Postanowiłem, że zamiast zapisywania dowodów do pliku tekstowego przez >> użyjemy prawdziwej bazy danych, wtedy możemy zarządać donosami na siebie w sposób wygodny, a co najważniejsze uzyskane zeznania będą dokładne.

Na początek sprawdzimy, czy nasza baza danych istnieje, a jeśli nie, utworzymy ją wraz z potrzebną tablicą. SQLite przyjmuje polecenia bezpośrednio z stdio, nie ma się więc o co martwić.

#!/bin/bash

if [ ! -f ispy.db ]; then
    echo "Database initialization"
    echo "CREATE TABLE ispy(id INTEGER PRIMARY KEY AUTOINCREMENT, created_at, window_title)" | sqlite3 ispy.db
fi

Teraz nie pozostaje nic innego jak kręcić się w nieskończoność i karmić nowopowstałą bazę informacjami.

while :
do
    echo "INSERT INTO ispy(created_at, window_title) VALUES (datetime('now'), '"$(xdotool getactivewindow getwindowname)"')" | sqlite3 ispy.db
    # tak, też widzę sql-injection przy użyciu spreparowanego
    # <title> ;) 
    sleep 5
done

Jeśli przyszłoby Wam na myśl odpalanie tego w cronie czy w supervisord musicie pamiętać że są one zwykle uruchomione poza kontekstem waszej sesji X11, musicie więc odpalić taki skrypt przekazując zmienną środowiskową DISPLAY (lub ustawiając ją w samym skrypcie).

Czyli na przykład DISPLAY=:0 ./ispy.bash.

Wielkiej magii tu nie odkryliśmy. Skoro już się szpiegujemy to powinniśmy dołożyć wszelkich starań aby z zebranych dowodów prokuratura mogła ugrać jak najcięższy wyrok. Obraz wart jest tysiaca słów. Dodajmy więc obraz.

Użyjemy scrot, aby zrzucić zawartość ekranu, mogrify aby dodać tekst do zrzuconej klatki, będzie on zawierał to samo, co u góry: nazwę okna. Następnie scalimy wszystkie te obrazy w bardzo poszatkowaną animację. Teraz możecie doświadczyć pełnej autoinwigilacji.

Zaczniemy od obsługi przerwania działania skrptu. Nie ma sensu za każdym razem przekodowywać wideo, starczy że będzie to ostatnia operacja.

#!/bin/bash

DISPLAY=:0
STORAGE_PATH="/tmp"

trap encode SIGINT

encode() {
    ffmpeg -r 2 -pattern_type glob -i "$STORAGE_PATH/*.png"  \
                    -an -vcodec libx264 -pix_fmt yuv420p  \
                    -profile:v baseline -level 3 \
                     $STORAGE_PATH/out.mp4
    exit 0
}

Potem ten sam taniec, pętla, obraz, modyfikacja obrazu, sen.

while :
do
    filename=`date +"%Y%m%d%H%M%S"`
    echo "Capturing $filename"
    r="text 0,0 \""$(xdotool getactivewindow getwindowname)"\""
    scrot -D $DISPLAY $STORAGE_PATH/$filename.png
    mogrify -pointsize 40 \
                -fill white \
                -undercolor black \
                -gravity south \
                -draw "$r" $STORAGE_PATH/$filename.png
    sleep 5
done

Cudo. I żeby było zupełnie fair postanowiłem, że nagram sam siebie pisząc pierwszą wersję tego tekstu. Będzie się ona pewnie różniła od tej opublikowanej, musicie mi wybaczyć prace edytorskie. Jeżeli z jakiegoś powodu nie wyskoczy Wam kontrolka wideo, możecie zerknąć bezpośrednio.

Muzykę jumano psych858o^Onslaught

W tym odcinku serialu „rzeczy, które są bezużyteczne ale podstępnie inspirują Was do eksperymentowania z komputerem” to chyba wszystko. Miłej paranoi.

Posłowie dla ludzi używających tmuxa: standardowe formatowanie tytułu okna jest nieco dzikie, zawiera identyfikator sesji i czasem ciężko się zorientować. Możecie dodać te dwie linie do konfiguracji, wtedy pozostaje tylko czysta nazwa procesu:

set-option -g set-titles on
set-option -g set-titles-string '#W'


Dzienniki (pod)różne
⌜ Literatura ⌟

Parawany pozwijane, budki z plastikowym badziewiem powoli się zamykają, lokalne ptactwo przechodzi na dietę, lato odchodzi. A ja, wbiegając na peron krzyczę za tym latem: proszę się zatrzymać, ja miałem napisać bardzo zaangażowaną notkę, która zainspirowałaby czytelników do popełniania przygód. I co teraz? Nic. Przygody są dozwolone we wszystkich porach roku, a jeśli będę siedział na tym pomyśle na tekst do kolejnego lata wtedy bez wątpienia utknie on w niebycie jako kilka zdań w notatniku, który jest już zarchiwizowany (wrzucony do szafy z trzydziestoma innymi, nie do odnalezienia w wyniku nieuniknionego ruchu Browna) i prawdopodobnie nigdy nie ujrzy światła dziennego.

Zanim zaczniemy ustalmy fakt o mnie. Lubię dzienniki, pisać i czytać. To niezmiernie frapująca forma literacka, nieustannie tańcząca pomiędzy szczerą autentycznością a kompletnym fałszem. Zawsze nadchodzi moment w którym autor dziennika widzi za swoim ramieniem fantomowego czytelnika i czując do niego, ale też do siebie, olbrzymią sympatię, ubarwia nieco karty. Jak przyjaciel opowiadający tę samą historię i dodający do niej kolejnych powalonych przeciwników i następne skąpo ubrane damy przez lata.

Nie mamy pamięci absolutnej, mamy za to absolutną fantazję.

Jakoś w maju stwierdziłem, że zupełnie przypadkowo cztery książki, które czytam to a) dzienniki b) o podróżach i wymyśliłem, że zrecenzuję je za jednym razem, kogoś może to zainteresuje, zainspiruje i ten ktoś w przyszłości wyśle mi swój własny dziennik i będę dumny z wkładu w kulturę. Chyba, że ten potencjalny dziennik będzie kiepsko napisany, wtedy odczuję tylko żal.

Bones bleaching in the fields, A pillgrimage to Kashima, Knapsack Notes, A Journey to Sarashina, The Narrow Road through the Hinterlands

Bashō wielkim poetą był. W czasach epoki Edo aby być wielkim poetą należy utrzymywać dobre kontakty z możnymi i arystokracją których dobre słowo może zamienić się w mecenat, spotkać się z „kolegami po fachu” oraz przekonać młodych ludzi do podążania tą samą ścieżką rozwijając szkołę krzewiąc styl mistrza, a to wymagało podróży po całym kraju.

Here I am, not dead
after many nights on the road—
at autumn's end.

Nie podróżował on jednak tylko dla sławy, w pierwszą długą podróż udał się szukając śmierci po serii niepowodzeń i nieszczęść z której Matsuo nie mógł się otrząsnąć. Zamiast tego znalazł na drodze radość i nową nadzieję, a podczas kolejnych, inspiracje i przyjaźnie. Jak przystało na poetę-wędrowca spisał on serię dzienników, często obecnie wydawanych pod jednym tytułem, pełnych widokówek, dialogów i oczywiście, wierszy, układanych pod gołym niebem, w knajpach i na salonach. Znajdziemy w dziennikach haiku, renga, ulubiony gatunek Bashō, wiersz układany przez wiele osób, wers za wersem, lirykę, okruchy zuihitsu.

A bee makes its way out,
from deep in the peony flower—
but with regrets.

Ta pozycja jest najtrudniejsza do polecenia, gdyż przygody spisane są iście mnisze, a szkielet dzienników składa się głównie z poezji, do tego niemal każde zdanie ma osobną historię ukrytą w bogatych przypisach (w moim wydaniu). To jedna z tych książek, którą mogę opisać jako „polecam wszystkim mnom”.

Mapa podróży opisanej w «Narrow Roads through the Hinterlands»

Full Tilt

Jedno słowo — „fantastyczne”. Autorka tego dziennika wsiadła na rower i pojechała z Dunkierki do Indii, zaczynając swoją podróż w styczniu, co wydaje się być fatalnym wyborem z praktycznego punktu widzenia, ale dobrym dla dziennika. Jest 1963. Świat wygląda zupełnie inaczej. Żelazna kurtyna. Jugosławia. Na granicy Afgańskiej służby nie mogły zrozumieć konceptu samotnej kobiety na rowerze, podróżującej przez świat, ostatecznie zamiast wydania jej wizy władze znalazły rozwiązanie iście „salomonowe”, wpisali Dervlę jako bagaż dwóch Niemieckich panów jadących samochodem w tym samym kierunku z przykazem żeby kobietę „oclić” po drugiej stronie.

Kombinuję jak tu wyłuszczać, że dziennik jest fantastycznie napisany, ale non-stop kasuję paragraf za paragrafem wracając do pierwszej tezy. Dziennik jest fantastycznie napisany, nie tak jak ten tekst.

Kiedy Dervla ma przygodę, bez względu na to jak niebezpieczną i w jakie tragiczne skutki może się ona obrócić, spisana jest ona dramatycznie ale, nie płaczliwie, a co najważniejsze — krótko. Kiedy złapałem gumę napisałem pięć tysięcy słów opisując lekko uciążliwą sytuację, która mnie spotkała. Dla porównania oto Dervla zaatakowana przez dzikie zwierzęta w lesie.

I stumbled, dropping the torch that I had been carrying, then recovered my balance, and found one animal hanging by its teeth from the left shoulder of my wind-cheater, another worrying at the trousers around my right ankle, and a third standing about two yards away, looking on, only its eyes visible in the starlight. Ironically enough, I had always thought that there was something faintly comical in the idea of being devoured by wolves. It had seemed to me the sort of thing that doesn’t really happen … So now, as I braced my body against the hanging weight, slipped off my glove, pulled my ·25 out of my pocket, flicked up the safety-catch and shot the first animal through the skull, I was possessed by the curious conviction that none of this was true, while at the same time all my actions were governed by sheer panic

Dervla nigdy nie pęka na trasie, jest pokorna wobec sytuacji które się jej wylosowały, posiada stalowy charakter i zaraźliwą beztroskę i dobroć wobec wszystkiego dookoła niej.

Dziennik ten czyta się lepiej niż większość nowelek przygodowych. Więcej akcji, lepsza proza i jeszcze się wydarzyło.

Of walking in ice

Kupiłem tę książkę kilka lat temu i przez te lata przejechała ze mną w plecaku setki kilometrów, ale nigdy nie miałem odwagi jej otworzyć i zacząć czytać. Myśl założycielska podróży Herzoga przez tytularny lód tej jest irracjonalna i znajoma, czułem niepokój myśląc o tym, co mogę tam znaleźć.

Na wieść o tym, że jego przyjaciółka, jest chora i umiera Werner postanawia, że aby powstrzymać los musi się udać pieszo z Monachium do Paryża. Jeśli jego misja się powiedzie życie przyjaciółki zostanie ocalone. Założył kurtkę, nowe buty i plecak i wyszedł w październikowy lód dotrzymać swojej części targu.

Być może nie wszyscy, ale część z was rozpozna pewnie tę niewymówioną chęć używania własnego cierpienia jako zastawu do niepodpisanego kontraktu z prawdopodobnie nieistniejącymi siłami posiadającymi nadludzkie możliwości odmieniania losu.

Moje obawy były częściowo słuszne. Dziennik zaczyna się jak podróżny dziennik powinien, od utyskiwania na małe niewygody, żywego opisywania okolicy, ludzi w wyszynku, małych przygód jak włamywanie się do domków wypoczynkowych na nocleg.

Im dłużej Herzog idzie tym bardziej z jego prozy zerka na czytelnika mania. Pomiędzy zdaniami o rzece pojawiają się krótkie historie o afrykańskich watażkach, pomiędzy paragrafami poutykane są bomby atomowe i anioły. Czasem zatrzymywałem się na tych dodanych kolorach i palcem wodziłem wstecz po stronie żeby znaleźć genezę, która być może mi umknęła, często bezskutecznie.

I kiedy Herzog stał wreszcie na przedmieściach Paryża nie odczułem żadnego katharsis tylko zmęczenie, jak on. Zdecydowanie polecam jako lekturę dla ludzi ceniących sobie udrękę, samotność i chłód.

Busy doing nothing

Gdy podróżuję stawiam na metody, które pozwalają mi zmienić zdanie. To odbywa się kosztem odległości, ale uważam, że jeśli ktoś nie potrafi odkryć fantastycznych światów 80 kilometrów od domu nie będzie mógł ich znaleźć 8000 kilometrów dalej. Jestem też skąpy i boję się samolotów, nie wiem więc, czy wymyśliłem tę ideologię na własne potrzeby, czy też na serio w nią wierzę.

Kiedy idę lub jadę rowerem w każdej sekundzie mogę zmienić zdanie, w lewo, w prawo, tu zostaję. Maksymalna rozdzielczość, najmniejszy dystans. Pociągiem mogę się rozmyślić tylko co stację, rozdzielczość się zmniejsza, zwiększa dystans. Nadal w granicach mojego komfortu. Samoloty i statki mają zbyt niską rozdzielczość. Trudno jest zmienić zdanie w samolocie i wysiąść. Ze statku można wysiąść choć jest to całkiem bezcelowe.

Kiedy dowiedziałem się, że mały kolektyw artystyczny 100r, który znałem wcześniej ze środowisk związanych z tworzeniem alternatywnej ścieżki technologicznej dla przyszłego, może niezbyt wygodnego, świata, wydał książkę o podróży żaglówką z Japonii do Kanady, zakupiłem ją natychmiast.

Czytanie dzienników upewniło mnie w moim uprzedzeniu do metod transportu o „niskiej rozdzielczości”, które wspominałem wcześniej. Długie dni niczego przeplatane są momentami ekscytacji, zwykle tego nieproszonego typu. Zaawansowana buchalteria: zarządzanie jedzeniem, wodą pitną, benzyną, energią elektryczną. Sztormy, omijanie kontenerowców, zimno, wilgoć. A pomiędzy tym wszystkich dwójka ludzi, którzy bez wątpienia muszą się bardzo kochać, bo żeby wysiedzieć w takiej podróży tysiąc godzin razem trzeba osiągnąć komfort współżycia znany tylko świętym.

Takie podróżowanie to maraton, fizyczny i psychologiczny, do którego nie jestem raczej zbudowany.

"Busy doing nothing" może służyć także za bardzo specjalną książkę kucharską, na ostatnich stronach znajdziemy przepisy na potrawy opisane na stronach. Z uwagi na środowisko w którym były przygotowywane są bardzo proste, więc jeśli ktoś jest drętwy w kuchni lub właśnie rusza w wielotygodniową podróż, porady mogą okazać się bardzo przydatne.

Ilustracja: Rekka, za zgodą autorki

I to już wszystko. Cztery książki, cztery metody podróżowania, cztery różne czasy, pięć osób, tysiące kilometrów i zdań. Teraz wasza kolej, do zimy jeszcze daleko.


Syncthing
⌜ Technologia ⌟

Niewiele jest programów, które nigdy nie sprawiły mi problemu, które odpalam z pełną pewnością, że mnie nie zawiodą i zawsze wykonają robotę dla której zostały stworzone. Mutt, Vim, ssh… i to chyba tyle. Kilka lat temu dodałem do tej listy chwały jeszcze jeden program: Syncthing.

Mam problem z pisaniem o aplikacjach, jestem pewien, że wszyscy, którzy to czytają nie tylko wiedzą to, co i ja, pewnie więcej, nie mają problemów z przeczytaniem dokumentacji, a bez problemu uwierzyłbym, że 90% z was mogłaby taką czy inną aplikację skompilować ze źródeł. Ciężko czasem zebrać się i napisać coś więcej niż jedno zdanie typu „zbadaj Syncthing, mi się podoba”.

Ponieważ jestem w lesie, napisałem już listy, odpisałem na e-maile, a poza laptopem jedyną technologią w której jestem obecnie posiadaniu, jest świeczka, zmarnuję wam i sobie trochę czasu przed świtem.

Syncthing jak pewnie można zgadnąć z nazwy służy do synchronizacji plików. Temat oklepany i w większości rozwiązany, często po łebkach, przez różne płatne serwisy. Ja nie mogę żyć z nimi w zgodzie z własnym sumieniem, tak jak rodzina jest podstawową jednostką społeczną, tak LAN jest dla mnie podstawową jednostką infrastruktury sieciowej. Poligamia Internetu jest moralnie szara, może nawet godna potępienia. Spędziłem dużo czasu żeby wszystko, co robię działało bez problemów bez względu na to, czy jestem podłączony do Internetu. Jak śpiewał poeta, „mój jest ten kawałek podłogi”.

Używając Syncthinga możemy sparować między sobą komputery, zarówno w LAN, jak i te dostępne poza granicami naszej infrastruktury, przy użyciu jednego UUID wygenerowanego podczas pierwszego startu aplikacji na komputerze. Dzielimy się identyfiaktorem z kimś i kiedy obie strony wyrażą zgodę, relacja zostanie ustanowiona i można wybrać zdefiniowane foldery, które zostaną rozdmuchane na wszystkie komputery. Poza tak oczywistą funkcją, jest kilka rzeczy wartych uwagi, których nie znajdziecie nigdzie indziej.

Zawartość udostępnionych folderów może być „wersjonowana” w kilku różnych trybach, instancja może traktować folder jako „tylko do niego piszę” (nie akceptuję zmian z innych instancji), „tylko z niego czytam” (synchronizuję folder, ignoruję lokalne zmiany), możemy ustawić limity oraz współdzielone hasło używane podczas transmisji. Rzeczą dla mnie najważniejszą jest to, że folder może być dzielony asymetrycznie. Jeśli masz w domu kilka komputerów na których chodzi Syncthing, możesz wybrać dowolną architekturę: kto od kogo synchronizuje i na jakich zasadach.

Zamiast opisywać prozą elementów UI, co zawsze wychodzi słabo, albo kręcić wideo ("don't forget to like & subscribe") opiszę wam jak praktycznie używam Syncthing każdego dnia.

Nie lubię telefonów

Powiem więcej, gardzę telefonami. Jest powód dla którego mój telefon leży teraz 90km stąd, wyłączony. Nie da się jednak zaprzeczyć, że są użyteczne. Mój gra podcasty i czasem robi zdjęcia. W wyniku działania klienta podcastu czy aplikacji aparatu na telefonie pojawiasię plik, a ten czasem chcę mieć od razu pod ręką, bez sięgania do telefonu lub polegania na zewnętrznej synchronizacji, która wymaga Internetu.

Syncthing na telefonie. Folder Photos i folder Podcasts udostępnione są w trybie „tylko do niego piszę”, to znaczy, że to jest jedyne źródło prawdy. Domowy serwer (czyli w mojej nomenklaturze, komputer, który prawie zawsze jest włączony i pradopodobnie ma dostęp do Internetu) synchronizuje oba te foldery na swój dysk w trybie „tylko z niego czytam”. Do tej pory jasne. Robię fotkę, Syncthing wysyła ją na serwer. Pojawia się nowy odcinek podcastu, Syncthing wysyła go na serwer. Teraz laptop. Źródłem danych do synchronizacji jest zarówno telefon jak i serwer. Co to znaczy?

Wyobraźmy sobie, że przez noc ściągnął się nowy odcinek. Telefon dogadał się z serwerem domowym. Ja wstaję, wyłączam telefon (to nie jest pogadanka moralna ani hipotetyczna historia, to wtorek w moim domu) bo na co mi telefon rano. Robię kawę, włączam laptopa. Laptop widzi zmiany na serwerze domowym i je do mnie synchronizuje. Mimo braku głównego źródła wszystko nadal działa jak trzeba. A takie choinki zależności możecie budować tak wysoko jak starczy wam kreatywności.

Raz wystarczy

W pracy często przydzielają mi (choć raczej ja przydzielam sobie, a nikt nie protestuje) prace archelogiczno-detektywistyczne. „Zobacz, co można uratować z SebixCMS, dostaliśmy od klienta jako jedyne źródło dokumentów”. Wtedy okazuje się, że struktura folderów jest oparta na znakach zodiaku i kalendarzu księżycowym, obrazki są w TIFF i BMP, wideo w MOV, a dane tabularyczne w formacie wymyślonym przez programistę, który odszedł z pracy przez to, że nie mógł zdzierżyć pracowania z tak okropnym formatem.

Siadam więc i piszę dziesiątki stron notatek, produkuję mniejsze lub większe skrypty, które grabią po tej stajni Augiasza. Problem z tym, że reszta ludzi pracujących w projekcie będzie miała problem z powtórzeniem moich sztuczek. Skąd ja wziąłem ten cruncher do PNG, pewnie ze źródeł jakiegoś zapomnianego projektu na SourceForge, czy da się zbudować żeby działał pod Windowsem? Nie wiem, nie chcę wiedzieć. Który z setek parametrów potrzebny jest do FFmpeg? Kto wie.

Mój komputer w pracy oraz laptop udostępniają więc innym ludziom (i serwerowi testowemu, ekstremalnie użyteczne. Syncthing nie potrzebuje UI, można więc namówić admina (albo ukraść jego id_rsa) żeby zainstalował) folder z samymi artefaktami po przetwarzaniu. Oni synchronizują się do serwera (po co mają wiedzieć UUID mojego prywatnego laptopa?), serwer synchronizuje się do komputera biurowego lub laptopa, a one między sobą.

Schemat opisany w poprzednim paragrafie

Git dla ubogich

Kocham moich przyjaciół, więc kiedy trzeba staram się im ułatwić życie. Piszemy obecnie grę z thungiem. On rysuje, ja koduję. Nikt z nas nie robi muzyki, dzięki bogom. Mógłbym go nauczyć podstaw Gita albo znaleźć jakiegoś biurkowego klienta dla niego, ale i tak praca szła by karkołomnie. Mój podstawowy serwer Gita to sr.ht, gdzie kooperacja w projekcie odbywa się przy pomocy list dyskusyjnych i dystrybucji patchsetów. Jak mówiłem, kocham swoich przyjaciół i nigdy bym im takiej krzywdy nie zrobił.

Mam też obiekcje przed dodawaniem plików binarnych do Gita. Być może jest to traumatyczna reakcja z czasu gdy przyjaciel frontendowiec dodał do projektu katalog „do pobrania” serwisu nad którym pracowaliśmy. W tym na przykład plik instalacyjny Quake3.exe. A ponieważ była to epoka Subversion spędziłem bardzo przyjemne popołudnie ręcznie wycinając jego bohaterstwo z pliku wyprodukowanego przez svnadmin dump.

Odpowiedzią oczywiście jest znów Syncthing! On pracuje jak człowiek, kompletnie nieświadomy mechaniki pod spodem, a ja robię commity. Wilk syty, owca cała. Boję się tylko dnia, gdy pomyśli, że fajnie jest posprzątać w projekcie i wywali jakiś bezużyteczny folder, na przykład .git, w nim same śmieci.

jutup premium

Ustaliliśmy już, że lubię jak wszystko w moim domu działa bez względu na to, czy mogę się dobić do Internetu, czy też nie. Listę "Watch Later" na YouTube traktuję bardzo poważnie, zgodnie z przeznaczeniem. Umieszczam tam filmy, które chcę zobaczyć, a potem je oglądam — jak szaleniec. Normalnie lista "Watch Later" traktowana jest ambicjonalnie, jak modlitwa, trafiają na nie filmy typu „80 kroków by być lepszym człowiekiem”, „Praca z drewnem, od amatora do własnego domu” i „Analiza analizy okropnego filmu niewartego uwagi (7h)” tylko po to by być usunięte po kilku latach.

Skoro traktuję ją poważnie, to znaczy, że chcę ją mieć na moim laptopie. Telefony i tablety mogą pobierać listy odtwarzania, ale a) trzeba za to płacić b) laptopa mam zawsze, telefon jest opcjonalny. Zgadliście, Syncthing.

Na domowym serwerze, w crontabie, siedzi sobie taki oto skrypt.

#!/bin/bash

p=${1:-download}
cd /media/muczoshito/shitube

if [ $p == "clean" ]; then
    rm *vtt *jpg *json *webp *mp4 *concat archive.txt .syncthing*
    exit
fi

/home/hive/.local/bin/yt-dlp --cookies /media/ssd/Syncthing/Sync/cookies.txt \
    --write-info-json \
    --write-thumbnail \
    --write-subs \
    --embed-subs \
    --sub-langs all \
    --embed-chapters \
    --download-archive archive.txt \
    --sponsorblock-remove default \
    -f "bestvideo[height<=1080][ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best" \
    https://www.youtube.com/playlist\?list\=WL
find ! -name '.stfolder' ! -name 'archive.txt' -ctime 15 -delete

On sobie siedzi tam, ja teraz w lesie, ale nadal mogę zobaczyć, co chciałem zobaczyć. Możecie też zauważyć, że plik cookies.txt także pochodzi z folderu Syncthing. Pobranie listy "Watch Later" wymaga autoryzacji, jako że ta jest zawsze prywatna, mam więc cookiejar z odpowiednimi ciastkami sesyjnymi, które mogę pobrać z laptopa.

~ ls /media/dump/Shitube/*.mp4
1983 in Film [Ab5LeWADtEU].mp4
How programmers flex on each other [r6tH55syq0o].mp4
That's No Ordinary iMac G3... [rvkaAqCaduE].mp4

Proszę, oto i wschód słońca. Znowu udało się doczekać końca.

Biurko w lesie, świeczki, papier


Do nieba
⌜ Literatura ⌟

Bez względu na to jak ciekawego życia intelektualnego bym nie prowadził i jak bogate jest moje życie wewnętrzne, ludzie najbardziej lubią słuchać historii o tym, jak się wywaliłem. Czasem metaforycznie, czasem faktycznie. Siedząc nad kilkoma tekstami, z którymi nie mogę sobie dać rady, a do tego pisząc w pracy karkołomną dokumentację-wampira, co wysysa mnie ze wszystkiego, postanowiłem, że zrobię sobie przerwę i napiszę coś łatwego i przyjemnego.

Pod koniec marca pojawiło się kilka niespodziewanie ciepłych dni. Spakowałem się więc i postanowiłem, że zrobię przyjemną trasę: pociągiem do Torunia, a potem już rowerem przez Grudziądz, Malbork i ostatecznie Jantar, pomachać morzu, zjechać do Gdańska i do pociągu. Bez pośpiechu, turystycznie. Pierwszy dzień przeszedł bez wydarzeń, zaparkowałem w przyjemnym hostelu na jednym z podjazdów do Grudziądza i spędziłem spokojną noc. Obudziłem się jeszcze przed świtem, pełen niesamowitej werwy. Padał deszcz, ale o ósmej miał przestać, czekałem więc paląc na werandzie i zastanawiając się jak i dokąd pojechać. Może przeskoczyć na drugą stronę Wisły? Nie mogąc się zdecydować postanowiłem, że dojadę do miejsca w którym mogę wybrać nowy kierunek, jakieś 40 km stąd, zobaczę jak się będę czuł i jak będzie się układał dzień.

Ostatecznie nie pozostało nic innego jak jechać, osiodłałem więc rower i zacząłem pedałować. Wyszło słońce, wszystko pachniało pięknie po deszczu, nic tylko się rozkoszować. To był pierwszy wypad tego roku, wyczuwałem więc euforię budującą się w moim sercu.

Miasto, miasteczka, wsie, kilka samochodów, matki z dziećmi, panowie na ławce przy sklepie spożywczym, skryci pod parasolką reklamującą nieprodukowane już piwo, ich pies, nieuwiązany, goni mnie dla ich uciechy, a ja dla uciechy psa przyśpieszam. Wszyscy się bawimy.

Co jakiś czas ciężarówka wojskowa, bez wątpienia należąca do jednostki logistycznej z Grudziądza. Wiem o niej, bo kiedyś chodząc po kątach wlazłem im na teren i choć nie byli z tego zadowoleni, nie zastrzelili mnie, ale dobrze mi zapadli w pamięć.

Mijam jakieś małe jeziorko i słyszę odgłosy radości. Oglądam się przez ramię i widzę jak dzieci paradują z jakimiś patykami przy plaży, po chwili ściskam hamulce i zawracam. Marzanna! Koresponduję listownie z Tereską z Uncanny Japan i kilka miesięcy temu opisywałem jej topienie Marzanny, pomyślałem, że mógłbym zrobić kilka zdjęć i wysłać jej reportaż z pierwszej ręki. Ku mojemu zdziwieniu pilnujące dziatwy panie przedszkolanki, kiedy już wytłumaczyłem im mój szczytny cel, pozwoliły mi robić zdjęcia, a ja, nie chcąc nadwyrężać cudzego zaufania zrobiłem ich kilka w kulminacyjnych momentach, podziękowałem i podjąłem podróż. Słońce było już całkiem wysoko, co mnie zastanowiło: gdzie ja w ogóle jestem?

Punkt w którym miałem się zatrzymać minąłem dawno temu, ale uznałem, że to widocznie dobry omen. Oceniłem swoją kondycję: doskonała. Samopoczucie: wyborne. Gdyby nie wcześnie zapadający zmierzch, bez wątpienia celowałbym bezpośrednio w morze, niestety, znam tą trasę i wiem że w nocy byłaby bardzo nieprzyjemna, muszę więc nieco powściągnąć wodze fantazji. Więc Malbork. Z Malborka niedaleko, relatywnie OK baza noclegowa, wydaje się, że to całkiem rozsądne miejsce docelowe.

Pojechałem trasą przy Wiśle, nie był to najlepszy wybór, bo tak wczesną wiosną rozlewiska wysysają ciepło z okolicy. Wszystko było delikatnie rozmazane, zamglone i wilgotne. Z drugiej strony moja zasada mówi, że dłuższa, nawet mniej przyjemna trasa, która ma minimalny ruch samochodowy jest lepsza od każdej wygodnej z TIR-ami wyprzedzającymi się na trzeciego na ulicy tak szerokiej, że można by nad nią splunąć.

Delta Wisły

Jechałem przez kompletne odludzie, w półtorej godziny minęło mnie tylko kilka samochodów i ani jeden człowiek. Kiedy zacząłem powoli odbijać na północny-wschód natknąłem się na samochód policyjny, który wyglądał jakby czatował na kierowców przekraczających prędkość. Oby moja dusza zawsze była natchniona równie silnym optymizmem.

Wioska, wioseczka, lasek, mosteczek, kulawa ławka, encore, jeszcze raz!

Wreszcie ludzie. I zielona tablica z napisem, «PIEKŁO 3». Trzy kilometry do piekła, hi hi. Jadę więc wprost w czarcią paszczę. Droga jest okropna. Podłoże składa się z dziur i wspomnień po betonowych płytach, nawet nie tych pełnych, a ażurowych. Po prawej ręce ukazuje się budynek z napisem «WELCOME TO PIEKŁO».

Witamy w Piekle

Zatrzymałem się na wprost niego i zrobiłem zdjęcie, które natychmiast rozesłałem do bliskich i dalekich. Zapaliłem, napiłem się wody. Już miałem ruszać gdy zatrzymała mnie wiadomość od G. — „kto jak kto, ale Ty nie zasługujesz na piekło”.

Kilkaset metrów dalej, jeszcze poprawiając się na siodełku po postoju czuję coraz bardziej wertepy. Wiem już co się stało, strzeliła mi tylna opona. Zeskoczyłem z roweru aby ocenić sytuację. Sytuacja była jasna, dziura. Nie miałem przy sobie ani zapasu, ani łaty. Pomyślicie, że jestem leniwym głupcem i może macie nawet rację, ale gdybym miał dętkę w sakwach to jak skończyła by się ta historia? „Naprawiłem dziurę i pojechałem dalej, osiągnąłem cel, białe Fin na czarnym podkładzie”?

Stanąłem znów i wyciągnąłem jabłko, od wielu lat przestałem reagować na niedogodności losu ze złością, jestem raczej zrelaksowany i ciekawy, co się z tego urodzi. Mina nieco mi zrzedła po konsultacji z mapą. Nagle 40 minutowa trasa do Malborka zmieniła się w ponad 3 godziny. Dwadzieścia kilometrów pchania roweru, głównie anonimową drogą. W takim razie na końcu tej trasy będę bardzo zmęczony, a to znaczy, że może dobrze będzie wrócić do domu, naprawić rower i wrócić na weekend? Sprawdziłem rozkład pociągów. Mam doskonałe połączenie za 3 godziny i dużo gorsze za pięć.

Nic, idziemy.

Idąc śpiewałem sobie piosenki, bo wraz z pierwszymi oznakami zmęczenia przesiąkały mi do mózgu blaski gniewu, ale te nie mogą przejąć kontroli kiedy z gęby wydobywa się „no żubrze, zróbże minę uprzejmą”. Po jakiś pięciu kilometrach wydobyłem się z lasu i trafiłem na asfalt, który prowadził do jakiejś miejscowości na zapleczu Malborka.

Co jakiś czas mijały mnie auta, a gdy słyszałem za sobą silnik myślałem „o, oto jedzie dobry Samarytanin, który rozpozna strudzenie po mojej lekko pochylonej pozie, zatrzyma się i jeśli nawet nie zabierze mnie ze sobą, to oferuje dobre słowo! A może nawet ja mu odmówię, ostatecznie nie idzie mi tak źle”. A potem auto mnie mijało nie zwalniając nawet, a ja przerywałem piosenkę żeby wymruczeć za nim „ty sukinsynu”.

Miasteczko nie zawierało nic wartego uwagi, zacząłem więc przecinać wielkie pola piaskową drogą. Zadzwoniłem do przyjaciela Bartosza, bo to taki zwyczaj, że dzwonimy do siebie kiedy jeden z nas się rozkraczy. Pośmialiśmy się, powyzywał mnie od najgorszych, co jest jego prawem i prawdą. Zgodził się zebrać mnie z miasteczka odległego o 40 km od Łodzi o pierwszej w nocy, jeśli zdecyduję się jechać tym drugim pociągiem. Tym samym straciłem ostatnią niewiadomą dzisiejszego dnia i mogłem się rozluźnić.

Kilka kilometrów później przyszła od niego wiadomość. „Ej, Malbork jest niedaleko. Zdążysz”. Jak mogę zdążyć, co za bzdury, nawet nie idę specjalnie szybko. Sprawdzam. Wygląda na to, że idąc tym tempem będę na dworcu 5 minut przed pociągiem! Musiałem sporo nadrobić. Przyśpieszmy więc!

Zapiąłem wszystkie rzeczy aby zrobić się jeszcze bardziej aerodynamiczny i ruszyłem z pełnym rozmachem. Kilometr, drugi. Bartosz coś pisze, bo telefon pika, ale nie zatrzymuję się, lecę. Pięć kilometrów, zegarek na ręku wibruje ostrzeżenia, że od długiego czasu mam tętno 150 i powinienem odpocząć. W piekle odpocznę, a że już tam byłem, nie ma lęku.

Teraz pcham pod górę, pod prąd, drogą wyjazdową z Malborka. Leje się ze mnie i nie mam w głowie żadnych myśli, prócz cichej determinacji. Kierowcy wymijają mnie łukiem, czekam aż ktoś mnie opierdoli. Pojawia się samochód policyjny. Wysyłam im mentalnie przekaz, że rozumiem, że obrałem nieortodoksyjną trasę ale niech mnie lepiej nie zatrzymują. Włączyli migacz i ominęli mnie jak inni, legitymizując moją krucjatę.

Za pięćset metrów skręt w prawo i jestem w Malborku. Nie wierzę. Zatrzymałem się na chwilę. Zyskałem ponad 20 minut. Absurd! Teraz tylko na dworzec. Byłem w Malborku raz i nawet nieźle poznałem jego układ, bo spędziłem dużo czasu spacerując, do tego obok mostu na którym stałem, miałem nocleg. Wiem orientacyjnie, gdzie znajduje się PKP ale czy warto ryzykować. Wpisuję PKP i klikam na wynik drżącymi palcami. Nie jest daleko.

Czym dłużej szedłem, tym bardziej napawały mnie wątpliwości. Ten róg pamiętałem, ten sklep, tę restaurację, ale gdy telefon powiedział „w lewo” rzeczy stały się mi obce. Na końcu ulicy widziałem jednak trakcję pociągów, być może to wejście od drugiej strony.

Staję wreszcie przed bramą i dostaję krótkiego ataku paniki. PKP… towarowy. Z rozpędu kliknąłem bez czytania podpowiedź na mapach. Z budki wychodzi pan strażnik, ma na nogach rozdeptane bambosze i idzie w moim kierunku. Bardzo powoli. Krok. Krok. Krok. Pytam go „panie, odjebałem, czy jest szansa, że puściłbyś mnie żebym przeleciał poboczem w kierunku osobowego?”. Zrobił kilka kroków, bardzo powoli, następnie odwrócił się w kierunku bramy i powiedział — „nie”.

No to koniec. Doznałem kilkusekundowego zaćmienia umysłu, wskoczyłem na rower i zacząłem jechać. Kompletnie nie wiem, co mi do łba strzeliło, ale zanim neurony odpaliły ciało już dawno ruszyło. Pięćdziesiąt metrów dalej kompletnie zaklinowało się tylne koło, co było do przewidzenia.

Usiadłem na śmietniku, oparłem rower o nogi i patrzyłem przed siebie. Jaki absurd. Tak się wypieprzyć przed metą. Nic, poddaję się. Siedziałem tak kilka minut patrząc na przechodniów. Nagle zerwałem się na nogi, zarzuciłem sobie rower na ramię, wraz z sakwami i wszystkim, pewnie z 35 kg i zacząłem iść w kierunku dworca. Moja brawura szybko ze mnie uleciała, gdy organizm przypomniał, że dopiero co zrobiliśmy 20 km marszobiegiem. Przechodziłem obok szkoły, z której wychodziła właśnie młodzież i postanowiłem dać sobie 30 sekund. Stacja III, Emil upada pod rowerem. Zbieram się w sobie, rower na ramię i idę. Na następnym skrzyżowaniu poznaję grupkę chłopaków, opuszczali budynek kiedy odpoczywałem. Stoją, palą, relaksują się. Kiedy ich mijam zaczynają wołać „dajesz pan, dajesz” i „dasz radę, kurwa!”. Wreszcie zapowiadani Samarytanie, nie mogę zawieść ich wiary we mnie.

Jak tylko znalazłem się poza zasięgiem ich wzroku, zrzuciłem rower z pełnym zamiarem zawiedzenia ich. Ciekawe, czy mogę rower pchać z tak zablokowanym kołem? Okazało się, że mogę.

Jakaś ładna uliczka, wczesne popołudnie, Malbork. Ludzie na spacerze, zakupach, siedzą w kawiarniach. Dwie strony ulicy blisko siebie, tworzą intymny klimat. I pośród tego ja, pchający rower, którego koło się nie kręci. Materia się opiera i wydaje okropne dźwięki, metal szczęka, opona szoruje, wszystko klekocze. Wreszcie dwupasmowa ulica, którą pamiętam. Po drugiej stronie widzę kobietę z bagażem podróżnym, stoimy na czerwonym. Krzyczę nad ruchem „CZY TĘDY NA DWORZEC?!” pokazując jednocześnie na jedną z dwóch ulic. Potakuje mi. Zrywam się z zielonym światłem, roztrwoniłem wszystkie wygrane minuty. Jakieś 400 metrów i 3 minuty do odjazdu.

Peron. O bogowie, schody. Nie mam siły podnieść już roweru z ziemi na ramię, ciągnę go trochę, trochę wnoszę. Platforma. Stawiam rower na nóżce i siadam w kucki, balansując na piętach. Patrzę bezpośrednio w brudny asfalt peronu, a na nim pojawiają się krople mojego potu, które kapią mi wprost z twarzy na ziemię.

Głośniki ogłaszają, że mój pociąg opóźni się kwadrans. Widocznie tego dnia los chciał mi dać wszystkie szanse.

Duże liczby

Osiemdziesiąt kilometrów na rowerze, dwadzieścia na pieszo, dwieście pięćdziesiąt pociągami i już mogłem usiąść w domu, nieco zmęczony, ale zadowolony.

Kurekta: Anna Matczak


Podszepty
⌜ Literatura ⌟

Działo się to w niedalekiej przyszłości. Pewnie w kwietniu, to miesiąc już ciepły, ale jeszcze niezatłoczony. Jestem w obcym mieście, a to miasto wydaje się być w obcym kraju. Zmierzam w kierunku części spacerowo-konsumpcyjnej, wyłożonej wymytym brukiem, obstawioną pastelowymi kamienicami, pod którymi zasadzono kwiaty i ławki.

W tym obcym miejscu jestem umówiony na kawę z kobietą. W celach niecnych lub skandalicznie niecnych, zależnie od szczęścia.

Kawiarnia znajduje się w bocznej uliczce, ma wielkie, czyste okna przez które widać wszystkie stoliki. Siedząc przy jednym z nich człowiek jest jak manekin wystawowy dla przechodniów, przechodnie tworzą teatralną scenę dla ludzi przy stolikach. Każdy wypełnia swoją rolę lokalnego kolorytu.

W kawiarni wszystko prócz kwiatów zwisających nad ladą jest białe. Białe krzesła, białe stoły, białe filiżanki na białych talerzach. Daje to ogólne wrażenie jakby właściciele nie mogli się zdecydować co do wystroju. Jakby lada chwila mieli pojawić się malarze i uzupełnić te meble o wybrane kolory, a ostrożnie, aby nie wychodzić za linie.

Kobieta siedzi już przy stoliku mimo, że jest jeszcze 30 minut do naszego spotkania. Jest po tej samej stronie punktualności, co ja. Nigdy za późno, zawsze dużo wcześniej by zirytować tych, którzy są punktualni. Jestem pewien, że gdyby zapytać ją o to, czy czekała długo, zaprzeczyłaby — tak jak i ja zawsze zaprzeczam. Zapytałbym, gdybym mógł, oboje nie mówimy w swoich językach. Jestem ostatecznie w obcym mieście, w obcym kraju.

Siadam naprzeciw niej i wyciągam telefon, wkładam słuchawkę i łączę się z serwisem, który potrafi tłumaczyć naszą mowę w czasie niemal rzeczywistym. Tylko uważna obserwacja ust pozwoli uchwycić lekkie opóźnienie między ich ruchem, a głosem w słuchawce. Na pierwszej kawie nie wypada intensywnie wpatrywać się w czyjeś usta.

Rozmawiamy o literaturze. Dzielę się wrażeniami o książce, którą niedawno skończyłem, znanej jej. Odpowiada mi:

— Nie mogę pojąć tego teatru rozpaczy, wydaje się, nieuniknionego w tego typu nowelach. Postać ma skończoną objętość, nie można w nią wlać żalu do całego świata i całego świata żalu do niej bo się przeleje brzegiem i wyjdzie niezamierzona komedia, czyli groteska. Książkę można kupić na Amazonie, dla posiadaczy kont typu Prime dostawa w jeden dzień roboczy!

Powiedziałem, że rozumiem i że nie potrzebuję własnej kopii bo wypożyczyłem ją z biblioteki, a lektury niszowe nie znikają z półek, co łatwo udowodnić obserwując stemple. Co rok, co dwa. Zawsze będzie na mnie czekała.

— Zamówmy coś, bo jeszcze nas wyrzucą — mówię pół żartem — ja wezmę zwykłą czarną kawę.

— Dla mnie za późno na kawę, napiję się wody — odpowiedziała — po chwili głos w mojej słuchawce dodał — Najlepiej spędza się czas pijąc Coca-Colę®. Coca-Cola: Taste The Feeling™

Jej usta były nieruchome.


Jak uratować Internet bez wychodzenia z domu
⌜ Literatura ⌟

Jest skończona ilość rzeczy, którymi można się przejmować, jeśli ograniczyć ją do rzeczy, którymi powinniśmy się przejmować, staje się ona tak mała, że można ją zapamiętać bez wytężania mózgownicy. Niestety, lista ta — szeroka, czy skrócona — nie jest uniwersalna, co powoduje tarcia na rozmaitych płaszczyznach społecznych. Tarcia te, zwłaszcza spowodowane przez rzeczy z kategorii nieważnych, zapychają Internet, który jest jak wiadomo serią rur, a nie trzeba być hydraulikiem żeby wiedzieć, że to zła sytuacja.

Sugerowanie wam abyście nie darli kota o to, czyj telefon lepiej otwiera aplikacje, a z tych aplikacji, które są gorsze i co to mówią o umiejscowieniu ich użytkowników na drabinie socjoekonomicznej i dlaczego są tak nisko, nie ma sensu. Anarchiści mają rację — ludzie potrafią się organizować bez udziału super-struktury państwa, problem z tym, że to jest częściej organizacja przeciwko czemuś niż po coś. Próba dogadania się z aniołem na waszym ramieniu też się nie uda, bo choć on i wysłucha, zamyśli się nad problemem to ostatecznie odpowie jakoś tak — „Zaiste, masz rację, że godność ludzka jest wartością nienaruszalną, a każdy zasługuje aby go wysłuchano, jednak jebać Legię”. Nie, trzeba otworzyć dialog z szatanem, ale w trybie szatańskim, podstępnie.

Wyobraź sobie, że następnym razem ktoś wygłasza opinie tak głupie jak i trywialne. Może chwali książkę, która jest oczywiście zła, albo gani dobrą, której nie zrozumiał. Może lubi paskudny kolor, a ty możesz naukowo udowodnić, że jest to bardzo nierozsądne i źle o nim świadczy. Nie daj boże słodzi lub nie słodzi czarnej kawy lub z mlekiem. Wszystko są to oczywiste przewiny, które powinny być ukarane z całkowitą surowością, publicznie i bez możliwości apelacji. Chcesz podjąć rękawicę, ale wiesz, że wojna będzie długa, morale może podupaść, może nawet dojść do nieprawości: zwycięstwa twojego oponenta. Czas zdradzić ci tajemnicę dzięki której uratujemy Internet: przedstawiam ci „cichą pogardę”.

Zamiast wdawać się w szarpaninę, przekrzykiwać się z wszelkiej maści głupcami dodając do kakofonii Internetu, spleć ramiona, popatrz na ekran niewidzącym wzrokiem, przekręć głowę delikatnie na bok jakby starając się spojrzeć na sprawę z czyjejś głupiej perspektywy (dla dodatkowego efektu możesz nią pokręcić, ale bardzo delikatnie, z niedowierzaniem), następnie wypuść powietrze przez nos i wypełnij serce cichą pogardą.

Na początku możesz nie czuć satysfakcji z takiego rozwiązania: inni nie widzą twojej cichej pogardy i nie mogą przez to włożyć ci laurów na skronie i obwołać, że zaiste się nie mylisz, ale co powinieneś czuć do ludzi, którzy w ogóle biorą pod uwagę opinie tak jaskrawo błędne, naturalnie obrzydliwe i wymawiane sztywnym językiem? Tak, cichą pogardę.

Odkryjesz, że dzięki takiej optymalizacji zyskałeś dużo czasu, a ten można zainwestować ze zwrotem: możesz czytać dobrą literaturę lub zmywać naczynia. Możesz wyjść na ulicę, stanąć na skrzyżowaniu i oferować każdej starszej pani swoje ramię, iść do parku, usiąść na ławce i machać wszystkim spacerującym psom na powitanie, zadzwonić do dalekich-bliskich i wysłuchać ich problemów. Możesz pojechać do nieodległego lasu i odkryć, że od tak dawna nie słyszałeś ciszy, w uszach i duszy.

A kiedy skończysz te wszystkie prace i wrócisz do domu, okaże się, że nie minął nawet ułamek czasu spalanego wcześniej na ołtarzu ekranu. Miną dni i jeśli wszystko dobrze pójdzie zapomnisz nawet mojej porady o „cichej pogardzie”, zrzucisz szaty komentariatu i staniesz się ponownie człowiekiem.

Emil idzie przez las


molly-guard i kontrolowane wyburzania
⌜ Technologia ⌟

Jest druga w nocy i nadal coś dłubiecie. Może wypiliście trzy kolejki dla kurażu. Prawdopodobnie jesteście zalogowani na cztery serwery. Pomiędzy próbą rozszyfrowania niejasnych notatek, przełączaniem się między panelami tmuxa i ogólną gonitwą myśli postanawiacie, że starczy już tej walki i wpisujecie sudo halt.

Connection to production-00 closed by remote host

Żółć podchodzi wam do gardła i to nie przez czwartą kolejkę wypitą przed końcem pierwszego paragrafu. To nie wasz laptop się wyłączył, byliście zalogowani na coś produkcyjnego, ważnego, najpewniej trudnego lub czasochłonnego do podniesienia i to coś właśnie parkuje i odpina się od sieci, żadne rzucone za wysłanymi pakietami bluźnierstwo nie zatrzyma tego procesu.

Jestem niekwestionowanym królem moich serwerów i jak każdy król domagam się kompletnej władzy i zerowej odpowiedzialności za podjęte decyzje, po kolejnej takiej pomyłce postanowiłem jednak poszukać jakiegoś rozwiązania, lękając się komentarzy rozmaitych stańczyków. Okazało się, że wystarczy zainstalować molly-guard i problem sam się rozwiązuje. Molly-guard nadpisuje standardowe destrukcyjne polecenia typu halt czy reboot i wymaga od operatora wpisania nazwy hosta na którym wydaje mu się, że je wykonuje. Ta chwila kontaktu z rzeczywistością wystarczy żeby powstrzymać moją ciężką, morderczą, dłoń.

Nieudana autoryzacja z molly-guard

Życie toczyłoby się dalej normalnie, gdyby nie moja patologiczna chęć do „ulepszania” mojej domowej rupieciarni. Zadecydowałem, że przywrócę do łask, przesuniętą wcześniej do demobilu, RPi3. Był tylko jeden problem: deficyt kabli zasilających. Jako zaprawiony partyzant wymyśliłem, że mogę zasilać RPi3 z portu USB RPi4!1 Jak wszystkie dobre technologiczne rozwiązania, przyszło to z przeciwwagą nowo powstałego problemu. Mianowicie zatrzymanie RPi4 odcina zasilanie do RPi3, która mogła robić coś bardzo ważnego.

Potrzebowałem „można teraz bezpiecznie wyłączyć komputer” dla nowego tysiąclecia.

I tak zawróciłem do molly-guard, szybka lektura manpage wyjaśniła mi, że warunkiem do wykonania polecenia chronionego przez ten program jest poprawne odpalenie wszystkich skryptów znajdujących się w /etc/molly-guard/run.d. Dodałem więc 35-calmyotits zawierający tylko jedną linię z exit o niezerowej wartości (równoważnik „ten skrypt się nie wykonał”), napisałem sudo halt i zgodnie z instrukcją procedura została przerwana.

Użyłem więc tej metody do „kontrolowanego wyburzenia” obu komputerów. Kiedy RPi4 dostaje halt, molly-guard wysyła halt do RPi3, a następnie wchodzi w fazę oczekiwania na zniknięcie ofiary z sieci. Następnie zamyka się sama.

Uwielbiam technologię, dzięki dekadom doświadczenia mogę rozwiązać prawie wszystkie spowodowane przeze mnie problemy! Powinienem odsunąć lodówkę, wymienić zasilacz na taki z dwoma portami, otworzyć szufladę z kablami, zakląć nad panującym tam burdelem, obiecać sobie, że kiedyś to sprzątnę, odnaleźć potrzebny kabel, dowiedzieć się że jest za krótki, odnaleźć odpowiednio długi potrzebny kabel, przesunąć lodówkę na miejsce, jak normalny człowiek.

#!/bin/bash

timeout=10 # liczba powtórzeń
result=0 # zainicjalzujemy rezultat PING-nięcia
echo "Sending halt to 3pi"

ssh emil@3pi sudo halt > /dev/null

while [ $result = 0 ]; do
        ping -c 1 3pi > /dev/null
        result=$?
        echo "Going $timeout"
        sleep 2
        ((timeout=timeout-1))
        if [ $timeout = 0 ]; then
                echo "Can't confirm that 3pi halted"
                exit 69
        fi
done

echo "3pi calmed down"
exit 0

I już!

RPi4 wyłącza RPi3

Z okazji 2023 życzę Wam dużo mniej bezsensu w życiu.

  1. Tak, wiem, że to za małe natężenie dla optymalnego działania, ale nadal działa™

Tak było, jest i będzie
⌜ Literatura ⌟

Nabyłem się dziwnej ułomności. Wielu literatów znam z ich esejów, listów, polemik i dzienników bardziej niż z nowel czy zbiorów poezji.

Do Tołstoja, Fauklnera, Bashō, Berry'ego, czy też Orwella dorzuciłem ostatnio Umberto Eco, którego trzy tomy (tomiki właściwie, sto parę stron) esejów opublikowanych w tygodniku L'Espresso na przełomie lat 1986-1996 znalazłem na półce biblioteki.

Nie będę podejmował próby recenzowania tego zbioru, bo mam do tego zero talentu, wystarczy powiedzieć, że kilka mi się podobało, większość była neutralna, a te dotyczące włoskiej polityki przeleciałyby mi kompletnie przez palce gdyby nie nazwisko Berlusconiego, dla Eco premiera rządu, dla mnie właściciela skandalicznie dobrej drużyny AC Milan. Czemu zajmuję więc Wam czas? Ostatni tom, z lat 1994-1996, zawiera kilka esejów dotyczących Internetu i komputerów ogólnie. O komputerach w tamtych czasach czytałem dużo, ale moimi źródłami były jedyne osoby, które w tamtych latach darzyłem zaufaniem: inni pojebani komputerowcy. Co też mógł myśleć, mający wówczas 62 lata, mediewista?

Już w pierwszym tomie Umberto ujawnił się jako ktoś, kto lubi technologię i ją rozumie, ale nie uważa, że samo jej istnienie jest wartością dodaną. Spędza jeden esej wertując katalog sklepu elektronicznego sprzedającego wysyłkowo rozmaite gadżety, w tym protoplastę smartłoczy1 — skomplikowany zestaw czujników pod postacią uprzęży i zegarka jako terminala, dla biegaczy. Eco zastanawia się jak dobrze mają Amerykanie, którzy mogą otrzymać audio-wizualne ostrzeżenie o zmęczeniu, gdy biegaczy w Afryce musi po prostu złapać kolka. Teraz byłaby to trywialna obserwacja, sam ją pewnie popełniłem, ale w 1982 jest ciekawą prognozą.

Dostało się też ikonom. Ikony, jak zauważa Umberto, są przydatne w momentach, kiedy musimy coś zakomunikować bez użycia języka. Toaleta na międzynarodowym lotnisku, znak STOP na granicy. Według autora każdy użytkownik komputera musi umieć czytać żeby móc coś ze swojej maszyny wydusić. Ikony same w sobie, zwłaszcza w czasach przed unifikacją interfaceów, były za każdym razem zgadywanką. Przykładowo panel wyszukiwania schowany pod ikoną przedstawiającą czapkę-uszatkę noszoną przez Holmesa. Sam pamiętam, że to gdzieś widziałem.

Tu naszła mnie myśl poboczna: przeszliśmy pewien cykl. Na początku ikony trzeba było odkryć, bo akcje, które reprezentowały nie były jasne, więc i one nie były. Potem osiągnęliśmy equilibrium, by ostatecznie ikony znów straciły kompletnie znaczenie. Czemu ikona z niebieskim i białym prostokątem zapisuje mój dokument „do chmury”?

Dwa teksty poświęcone były wyszukiwaniu. Pierwszy tekst dotyczy dziobaków i przypomina mi o czasach nieco bardziej sielskiego, zdecentralizowanego naturalnie dzięki braku obecności molochów i ich grawitacji, Internetu. Wynikami dyskutowanymi są strony Uniwersytetu w Illinois, prywatne zapiski fascynatów, lingwistyczna monografia na temat „jaka jest prawidłowa forma mnoga słowa «dziobak»”, katalog monet z wizerunkiem stworzenia oraz stronę poświęconą hipotezie jakoby dziobak, zwierze „anty-kantowskie, kolażem złożonym z cytatów z innych zwierząt”2, jest dowodem na akt stworzenia, bo ewolucja takiej rzeczy nie mogła „poskładać”.

Całkiem przyjemna podróż w przeszłość.

W drugim tekście o wyszukiwaniu jest o gołych paniach i niemożności odkrycia, gdzie się chowają w publicznym Internecie. Eco co chwila zachodzi, zaproszony linkami pełnymi obietnic na prywatne strony, które golizny nie zawierają. Poświęca więc chwilę na pracę detektywistyczną i odkrywa pracownika banku, który dorabia sobie utykając różne internetowe katalogi3 linkami do stron prywatnych opisanych jako golizna. SEO, pod różnymi nazwami, było zawsze przekleństwem, choć wykonane manualnie przez kogoś dorabiającego na piwo wydaje się szlachetniejsze niż to, które mamy obecnie.

Ostatnim odwiedzonym linkiem okazuje się być strona zawierająca purytańskie kazanie do poszukiwaczy pornografii, pełną ostrzeżeń co do szkód natury duchowej i cielesnej jakich można się nabyć przez konsumpcję. Tam kończy się esej, bez osiągnięcia ekstazy.

Zabawne, że składacz, wydawca lub tłumacz (a może wszyscy naraz) wykłada się za każdym razem, gdy w tekście znajduje się URL. Książka wydana w 1997, wydawałoby się, że sztuka stawiania dwukropków i slashy została opanowana w wystarczającym stopniu.

Zdjęcie książki ukazujące błędnie wydrukowany adres

Nie dało się uniknąć najważniejszego tematu lat dziewięćdziesiątych: świętych wojen między platformami. Uberto postuluje aby wojnę pomiędzy Macintoshem a PC-tem rozpatrywać w kategoriach sporu pomiędzy katolicyzmem a protestanckim kalwinizmem. Macintosh jest katolicki, spolegliwy, katechetyczny, prowadzi cię za rękę do zbawienia. PC jest protestancki, bo nie oferuje zbawienia każdemu, a tylko tym, którzy podejmują dobre dzieła, takie jak edytowanie autoexec.bat. Windows jawi się autorowi jako dzieło kontrreformacji.

My, amigowcy, byliśmy bez wątpienia jakimś odłamem buddyzmu. Uwięzieni w samsarze, skazani na wieczną śmierć i odrodzenie.

Ostatni tekst dotyka Internetu w najmniejszym możliwym stopniu, jako puenta. Jest jednak najbardziej, jeśli mogę to tak ująć, współczesny.

We włoskim mieście zebrała się grupa intelektualistów by spróbować stworzyć „esperanto tolerancji”, jedną pozycję, którą można pokazać dzieciom szkolnym i przez to dać im narzędzia do lepszego życia w społeczeństwie. Idea godna pochwały, choć wydaje się nieco naiwna. Nie jest to tylko moja opinia, sami zainteresowani polegli, bo wyprodukowanie kompletnego zbioru etycznych zachowań w oderwaniu od kultury jest trudne. Nie ma prostego sposobu na posortowanie tragedii według jakiegoś klucza, nie da się też ich wyabstrahować z przyczyn i skutków aby powstała Jedna Ludzka Tragedia jako miara niegodziwości.

Spisali więc kilka przykładów, potknięć i obaw w notce służbowej, a potem postanowili zmienić nieco kierunek. Notka wyciekła. Ludzie o dobrych i czystych sumieniach, wolni od grzechów głównych i pomniejszych przeczytali ją uważnie i bez kontekstu po czym rzucili się do swoich faksów by wyrazić niezadowolenie na skandaliczne przykłady w niej użyte. Eco zauważa, że tylko jedna płomienna skarga została złożona przez pracownika włoskiego uniwersytetu, a reszta przypłynęła ze świata, gdzie znajomość języka w której była spisana jest niska. Wysuwa więc hipotezę, że ktoś, gdzieś — może na usenecie, może gdzie indziej, umieścił jej treść. Przetłumaczoną lepiej lub gorzej, ale zatrzymującą uwagę. Jak inaczej wytłumaczyć taką błyskawiczną reakcję?

Czego więc dowiedziałem się o komputerach i Internecie z tekstów osoby postronnej? W sumie niczego, Internet nie zmienił się prawie w ogóle, ani ludzie, co nie jest dziwne, bo nawet amatorska lektura antycznych tekstów czy nawet naściennych bohomazów ujawni nam to szybko. Nadal można znaleźć teksty o dziobakach, prowadzić święte wojny o wyższości rzeczy, którą kupiłeś nad rzeczą, którą kupił ktoś inny, ikony też coraz gorsze, a może ich nawet nie ma, to tylko reszka tej samej monety. Jedyne, co się zmieniło to dostęp do golizny, ale nie będę z tego powodu klaskał.

  1. czy też „zegarków szpiegowskich”, ale nie że ty jesteś Jamesem na usługach jej Królewskiej Mości, tylko, że on Cię szpieguje
  2. Cytuję tu esej, nie zawartość strony
  3. Zanim wyszukiwarki potrafiły przeskanować i zinterpretować większość Internetu katalogi pełniły dobrą odskocznie dla niedzielnego internauty

Droga donikąd
⌜ Literatura ⌟

Roads go ever ever on,

Over rock and under tree,

By caves where never sun has shone,

By streams that never find the sea

— Bilbo Baggins

Rower przed Dworcem Fabryczna

Pierwszy akt tej historii był przyjemny i napawał nadzieją. Wstałem o świcie mając w planach kilkudniowy rajd przez Mazury. Plan nadrzędny: radość. Plan podrzędny: odnalezienie przyjaciół, którzy zaplanowali urodzinową imprezę gdzieś wśród niezliczonych jezior. Po mojej stronie, jak zwykle, wszystko było zapięte na ostatni guzik. Trasy wyznaczone, noclegowiska zamówione, umysł rześki, oczy bystre, skarpety czyste. Zabawę biorę śmiertelnie poważnie.

Wysiadłem w Olsztynie, odwróciłem się w kierunku wschodnio-północnym i zacząłem pedałować. Pierwszym przystankiem miało być Mrągowo, gdzie blisko dwadzieścia lat temu spędziłem bardzo dobre wakacje. Wymyśliłem sobie, że odwiedzę to czy tamto miejsce, a na drugi dzień spróbuję złapać się z przyjaciółmi. Dzień był piękny, droga prosta, nieuczęszczana przez TIR-y i głównie asfaltowa.

Krajobrazy przekradały się bokami, a ja pedałowałem w stanie zupełnej błogości. Dziesięć kilometrów, dwadzieścia kilometrów, pewnie nawet trzydzieści kilometrów i herbata z termosu na przystanku PKS, tymczasowym domu wszystkich wędrowców i włóczykijów. Tu popełniłem pierwszy błąd, sprzeniewierzając się bogom podróży — wyciągnąłem z sakwy telefon żeby zobaczyć jak mi idzie. Na ekranie była niebieska linia trasy, dobrze już zużyta. Zauważyłem też Biskupiec. Biskupiec brzmi jak „zawiera znaczne ilości średniowiecznej architektury” i choć sam architekturę oceniam tylko w kategoriach „czy wieje w nery na jesień i czy pada na głowę na wiosnę”, D. lubi zameczki i klasztory, a ja zawszę chcę się przypodobać D. — zapytałem więc jej, czy powinienem może odbić te kilka kilometrów z trasy i zbadać okolicę, może zrobić jakieś zdjęcia i jej wysłać. Powiedziała, że z pewnością byłoby jej przyjemnie gdybym znalazł jakieś zameczki. Dla mnie to wystarczająca motywacja. Odbiłem w lewo, podążając za znakami.

Biskupiec okazał się być dużo mniej zajmujący niż sobie to wyobraziłem. Było około dziesiątej rano, postanowiłem więc, że to dobry czas znaleźć miejsce na śniadanio-obiad i odpocząć chwilę. Zostało mi ile, dwadzieścia, może trzydzieści kilometrów. Nawet na pieszo nie robiłbym paniki. Knajpy były jeszcze zamknięte, ale bez wątpienia niedługo jakaś się otworzy.

Usiadłem w ogródku jednej z nich, pełnej poskładanych krzeseł przeciągniętych łańcuchem i złożonych parasoli, wyciągnąłem notatniczek i pióra i zacząłem sobie mazać bzdury. Po jakimś czasie pojawiła się Pani ze szmatą i oznajmiła, że jeszcze nieczynne. Na pytanie, czy przeszkadzam zaprzeczyła. Siedziałem więc dalej, aż do otwarcia.

Kiedy wyszedłem po śniadanio-obiedzie niebo było koloru stali i coś z niego ciekło. Nie wyglądało na wielki deszcz, postanowiłem więc poczekać chwilę pod już rozpiętymi parasolami. Towarzyszyła mi Pani, która zwierzyła mi się, że ma podobne nadzieje, co do deszczu. „Niedługo przejdzie” — skłamała. Przytaknąłem. Po pół godziny pojawili się jej znajomi z parasolem i zostawiła mnie samego.

Wydobyłem z plecaka płaszcz przeciwdeszczowy i postanowiłem toczyć się dalej, ale natychmiast popełniłem drugi błąd. Nienawidzę jeździć dwa razy tą samą trasą. Skoro zjechałem tu tędy, oczywiste jest, że jak pojadę tędy to ostatecznie wyjadę w tych samych okolicach. Miałem rację sensu stricto, gdyby świat był idealną płaszczyzną niepoprzecinaną produktami industrialnej rewolucji, takimi jak drogi szybkiego ruchu, płoty i inne naturalnie niewystępujące barykady.

Deszcz padał coraz mocniej. Ubranie kleiło się do mnie, tracę ciepłotę ciała i cierpliwość. Co gorsza, nie byłem pewien, czy uda mi się skręcić, S16 odcinała mnie od mojej pierwotnej trasy. Wreszcie widzę jakiś skręt. Telefon mówi: „skręć w lewo”. Ale jak to „w lewo”, przecież to podjazd na S16. A może się mylę? Podjeżdżam szybko żeby sprawdzić i oczywiście, niestety, się nie mylę. To Google Maps1 zwariowało. Dobrze, zrobię to po swojemu, pojadę boczną uliczką, będzie dobrze. Zawsze ostatecznie jest dobrze. Po kilku kilometrach widzę kolejną odnogę ulicy i znak zguby — T — ta droga prowadzi donikąd.

Szybko przekonuję siebie, że to jest tylko dla samochodów. Nawet jeśli droga się urywa, to pewnie jest to lasek, rzeczka, zarzucę rower na plecy i przejdę. Jestem tak przemoczony, że nic mi nie grozi. Dojeżdżam do skraju drogi.

Zaiste, droga jest nieprzejezdna dla samochodów. Niestety, także rowerów. W ogóle dla wszystkich, którzy nie posiadają na podorędziu lotni lub spadochronu. Droga kończy się skarpą. Zdyszana gonitwą świadomość mnie dogania: ładnie się wjebałeś. Wyciągam wreszcie telefon i chroniąc ekran od deszczu próbuję się zorientować w sytuacji. Jedyną drogą, którą mogę obrać jest skręt, który ominąłem. Jest to okrężna trasa, dodaje jakieś czterdzieści pięć kilometrów. To plus ile już przejechałem da finalnie jakieś sto dziesięć. Deszcz pada dalej. Zimna świadomość, że z geografią nie da się negocjować dosięga mojego umysłu, poddaję się i zaczynam jechać.

Niewiele z tej części zapamiętałem. Były tylko TIRy, chłód, absurdalne, niekończące się podjazdy i zjazdy, które nie wynagradzały mi wspinaczki. Zaczynało się powoli ściemniać, a do tego nad wszystkim zawisła mgła. Postanowiłem zrobić zdjęcie stając na szczycie jednego z podjazdów, ale przez deszcz zalewający telefon zrobiłem sobie selfie — najlepsze selfie.

Emil jest zmęczony

Zaprawdę obraz wart jest 1000 słów. Dobrze, że napisałem więcej, inaczej to wszystko nie miałoby sensu.

Powoli zbliżałem się do E600, a stąd już może siedem kilometrów do hotelu. Będzie dobrze. Zaczęło padać jeszcze mocniej. Już czuję smak zwycięstwa: nad przyrodą, topografią, samym sobą. Nie ujechałem trzech kilometrów, a drogę zagrodził mi funkcjonariusz. Stanąłem w korku. Minęło dziesięć minut, stojący obok mnie samochód uchylił szybę po stronie pasażera i kierowca krzyknął do mnie „Panie, nie wiesz Pan, co się dzieje. Ile tak można stać?” — popatrzyłem na niego zalewany strugami deszczu i powiedziałem, że nie wiem i że ogólnie też mi obecna sytuacja niezmiernie mało pasuje.

Wreszcie się wyjaśniło. Ruch wahadłowy. Lewy pas jest wylany nowym asfaltem. Nienawidzę ruchu wahadłowego. Znaczy on dla mnie tyle, że przez nieokreślony czas muszę pędzić jak szalony w towarzystwie samochodów, których kierowcy są równie zirytowani jak ja, tylko mogą utrzymać prędkość pozwalając przemknąć się przez zmianę świateł bez problemu kiedy ja nie bardzo.

Zielona tablica: Mrągowo. Znajduję hotel. Przypinam rower, melduję się. Pytam w recepcji: macie coś do jedzenia? Nie, protokół pandemiczny. A herbaty dacie? Nie, protokół pandemiczny. Potakuję ze zrozumieniem. Wchodzę do pokoju, rozbieram się z brudnego i cuchnącego od potu ubrania, otwieram okno, okno wychodzi na skrzyżowanie. Na czerwonych zatrzymuje się samochód z którego dobywa się jebjebjeb basu. Potakuję ze zrozumieniem.

Wychodzę poszukać czegoś do jedzenia, ale miasto jest puste i śpiące. Jedyny otwarty sklep w okolicy to sklep z alkoholem. Kupuję więc kilka butelek kolacji i wracam do pokoju. Próbuję się zrelaksować. W telewizji pokazują mecz reprezentacji z Holandią, przegrywamy go w fatalnym stylu. Omdlewam w sen bez snów.

Rano przyszło niespodziewanie i zupełnie nieproszone. Wymknąłem się z hotelu i wbiłem lokalizację, którą otrzymałem e-mailem. Miejsce spotkania z przyjaciółmi. Kiedy zobaczę ich pogodne, roześmiane twarze i opowiem im o wczorajszym dniu wszystko zamieni się w żart i zostanie zapomniane.

Jechałem bardzo wolno, zjadłem rogalika, dwa razy źle skręciłem. Powoli, ale nieuniknienie, zmierzałem do celu.

Wjechałem do miasteczka-celu. Nagle rower zrobił brzdęk, a moje siodełko zaczęło się kręcić tak bardzo, że natychmiast z niego zeskoczyłem. Śruba się poluzowała? W normalnej rzeczywistości to byłaby odpowiedź. W mojej rzeczywistości śruba po prostu pękła. Podniosłem siodełko z ziemi, wsadziłem je pod pachę i udałem się do knajpy. Byłem sześćset metrów od miejsca spotkania. Reszta się sama wyjaśni.

Zadzwoniłem do Oli żeby obwieścić moje przybycie. Powiedziała, że oni jeszcze nie wyjechali, norma. Ostrzegłem ją, że będę miał niesamowicie zabawną historię na wieczór. Powiedziała mi, że nie może się doczekać.

„A, jeszcze jedno. Musieliśmy zmienić lokalizację, bo w pierwotnym miejscu nie było miejsc dla nas wszystkich. Wyślę ci «pinezkę»” — dodała.

Aha. Aha. Ha ha. Patrzę, osiem kilometrów stąd. Próbuję zlutować pękniętą śrubę nienawistnym spojrzeniem, niestety nie osiągam temperatur topnienia. Pomysł prowadzenia roweru poboczem ruchliwej ulicy porzucam niemal natychmiast. Jadę bez siodełka. Kiedy mięśnie nóg przekonują mnie, że nie mogę tyle jechać na stojaka bolec, bodący mnie niespodziewanie w tyłek przypomina mi, że siodełko przypięte jest do bagażnika.

Trafiam na miejsce. Znów zaczyna padać. Dzwonię do przyjaciół z informacją, że jestem i czekam. „Jeszcze nie ruszyliśmy” — odpowiadają. Moi przyjaciele to dobrzy ludzie, ale nie można powiedzieć, że da się podług nich regulować zegarków. Najwyżej kalendarz i tylko pod warunkiem, że jest to kalendarz, który pokazuje tydzień na jednej stronie.

Siadam więc i czekam. Pada deszcz, gniazdka nie działają, herbata jest paskudna.

Jakieś miejsce w deszczu

Minęło ledwie siedem godzin i już byli!

Impreza urodzinowa była przednia, a moją tragiczną historię przebiła wielopoziomowa anegdota, poskładana niespodziewanie z naszych odrębnych obserwacji, praktycznie niewytłumaczalna tekstem, a przynajmniej nie przeze mnie. Była jednak tak zabawna, że kiedy tylko sobie o niej przypomnę wybucham autentycznym śmiechem, na głos, czasem ściągając na siebie wzrok postronnych obywateli.

Rano nie czułem się fantastycznie, wypiłem jeszcze więcej paskudnej herbaty i zjadłem równie paskudne parówki z budy-restauracji na obiekcie wypoczynkowym. Ponieważ moja przygoda musiała się tu zakończyć padła propozycja podrzucenia mnie na najbliższy dworzec, na co przystałem z radością. Truchło mojego roweru i truchło mnie zostało wpakowane do vana.

Wszystkie górki i krzywizny, zakręty i przyśpieszenia odkładały się w mojej głowie i żołądku. Zlał mnie zimny pot. Nienawidzę jeździć samochodem nawet w najlepszych czasach, a to nie był najlepszy czas.

Wreszcie zostałem porzucony na dworcu. Dumna nazwa dla betonowej platformy przyklejonej do pojedynczego toru z widokiem na nieużytki i skarlały las. Po dwóch dniach smagania mnie deszczem natura wymyśliła, że nagrodzi mnie równie intensywnym słońcem. Powietrze drgało od gorąca, ostatnią butelkę wody wypiłem dawno temu, herbata w termosie skończyła się wczoraj. Szumiało mi w głowie, aż do gardła podchodziła mi żółć, próbowałem się szybko otrzeźwić żwawym spacerem dookoła platformy, ale w wyniku niekompatybilności oprogramowania ze sprzętem moje nogi odmówiły posłuszeństwa i runąłem na tory.

Leżałem tak z głową na torach jak samobójca w romansach, zwinięty skurczem i marzyłem o pociągu, który skróciłby te męczarnie, choć wiedziałem, że przyszłoby czekać tak przynajmniej dwie godziny, a przez tyle czasu idzie się przeziębić. Spróbowałem podnieść się na rękach, bez skutku, wsparłem więc głowę o podkład kolejowy i zacząłem rzygać.

Wreszcie pozbierałem się, wsiadłem do pociągu, powiesiłem rower, w ustach czułem smak miedzi, a w głowie miałem tylko jedną myśl — „ile jeszcze”. Pani konduktorka wyjaśniła mi, że gdyby dziś nie było święta (a może weekendu?) to byłoby z jedną przesiadką. A że jest inaczej to najszybciej do Łodzi będzie mi tu i tak: cztery przesiadki.

Wysiadając przy domu pomyślałem, że nigdy więcej i myślałem tak aż do następnego piątku.

Widok na przedział

Jaką tu dać puentę? Nie śpijcie w soboty do południa, bo potem będziecie mieć całą noc do zmarnowania i zaczniecie pisać co Wam się podoba bez pytania o pozwolenie.

  1. Unikajcie Google Maps do jazdy w trasy na rowerze. Wyznaczcie sobie trasy w gpx, odmieniło moje życie

In Terminal Veritas
⌜ Technologia ⌟

TL;DR: wszystkie teksty na stronie można czytać na terminalu przy użyciu curla:

curl -s https://fuse.pl/beton/cegla.html | less
curl -s https://fuse.pl/beton/focu.sh.html | less

Jestem dinozaurem (technologii): potężny, kochany przez dzieci i dorosłych, źródło strachu i fascynacji, a także inspiracji. Prawdopodobnie nigdy nie porzucę idei, że klawiatura i terminal są najbardziej efektywną metodą komunikowania myśli i celów komputerowi.

Czasem zadaję sobie pytanie, czy lubię tak żyć dlatego, że potrafię tak żyć, czy też w drugą stronę — nauczyłem się tak żyć dlatego, że lubiłem tak żyć. Wydaje mi się, że fascynacja poprzedza komfort, a jeśli uda się tę fascynację utrzymać, to wszystko równoważy się w jakiś sposób, który trudno wytłumaczyć bez odwoływania się do ontologii.

Ponieważ wszystko nadal mnie bawi, uwielbiam budować różne pierdoły, karykatury prawdziwych technologii na marginesach notatników, bezużyteczne dla większości ludzi.

Dla przykładu: pomiędzy dwiema połowami piłkarskiego meczu odbywa się spektakl obrzydliwości zwany «studiem», w którym różni ludzie mówią o meczu, jak gdybym go przed chwilą nie doświadczył na własne oczy. To wszystko jest wsadzone między dwie kromki reklam. Piętnaście minut żenady. Wystrugałem sobie więc stfufor, który przyjmuje minuty jako parametr. Połączenie catt i at ścisza transmisję, a następnie podbija głośność nazad po zadanym czasie. Kiedy słyszę gwizdek kończący połowę, piszę po prostu stfufor 15.

Mój bojler wyłącza się, kiedy wychodzę z domu. Nie muszę o tym informować jakiegoś chińskiego operatora chmury, żeby łaskawie wydał callback do mojego gniazdka, RPi ma listę urządzeń i na podstawie arpinga stwierdza, że albo mnie nie ma, albo śpię — w każdym razie zmywanie raczej nie jest wysoko na liście priorytetów. Za każdym razem, gdy wracam do domu, słyszę po kilku minutach «klik» przekaźnika i uśmiecham się do siebie jak poskramiacz cherlawych lwów: dumny, choć świadomy braku po temu powodu.

Kilka lat temu przez social media przeleciał projekt tego rodzaju, serwis wyświetlający prognozę pogody na terminalu. Pobawiłem się, było to bardzo ładne, cudo technologicznego kiczu. Nie analizowałem jednak detali — być może jestem nadal pod wpływem traumy, gdy pokazałem jakiś „sprawdzacz pogody” mojemu ówczesnemu administratorowi, na którego serwerze gościłem. Powiedział: „opi, a nie możesz kurwa wyjrzeć za okno?”. Do dziś nie znalazłem odpowiedzi na takie dictum.


Sam jednak pomysł wydał mi się całkiem ciekawy, szczególnie ze względu na pewien dualizm: serwis działał tak samo w przeglądarce i terminalu. Postanowiłem odtworzyć ten efekt, przystosowując stronę, którą czytasz, do podobnego działania.

Pierwsze, co należało ustalić, to czy curl, który domyślnie wyświetla pobrane informacje na stdio, zachowuje wszystkie style, kiedy pobiera plik tekstowy z serwera HTTP. Stworzyłem przykładowy plik z testowymi formatowaniami: pogrubienie, czerwony kolor etc., po czym odpaliłem webfsd, mikro-serwer statycznych treści. Wszystko poszło bez problemu, połowa drogi przebyta.

Teraz trudniejsze pytanie: w jaki sposób odbywa się negocjacja treści? Wczytanie URI w przeglądarce i przez curl pokazuje HTML i tekst. Przeglądarka może negocjować za pomocą nagłówków, w przypadku curl musimy polegać na tym, co jest domyślnie wysyłane do serwera. Poszedłem tropem podglądania user-agent. Dodałem -A "Przeglądarka" do wywołania… i wrócił HTML. Aha, czyli pierwszy strzał od razu celny.

Dopisałem do konfiguracji nginx testową linijkę, która przekierowywałaby do dokumentu stworzonego wcześniej. Jeśli wszystko zadziała, to gdy robię curl https://fuse.pl/beton/cegla.html, powinienem zostać zawrócony, a na ekranie wyświetli się sformatowany plik.

Część logistyczno-infrastrukturalna rozwiązana. Co z treścią? Teksty źródłowe mam w „utylitarnym markdownie”: wszystko, co jest wygodne i praktyczne, jest w Markdownie, a reszta bezczelnie w HTML-u. Blog generuje Pelican wyposażony w system wtyczek. Moim pierwszym pomysłem było dopisanie wtyczki, która wygeneruje odpowiednie pliki .txt podczas normalnego działania. Niestety, dokumentacja dotycząca wtyczek to głównie proces czytania kodu źródłowego zarówno projektu, jak i jakichś losowych gotowców operujących w hipotetycznym sąsiedztwie tego, co chcę osiągnąć.

Po kilku godzinach prób na ślepo postanowiłem, że wrócę do tego później i napiszę minimalistyczny generator „na teraz”. Jedna z tych prowizorek, co ma potencjał przetrwać nas wszystkich.

Jest trzy tygodnie później, wyszło słońce, porzuciłem komputery na rzecz wygodnych butów i plecaka. Już wróciłem, ale zaraz wychodzę znów, spróbuję więc skończyć ten tekst teraz.

Jak postanowiłem, tak zrobiłem. Zgodnie z tradycją pierwsze 90% projektu zrealizowałem w godzinę — czytanie plików tekstowych z dysku i zapisywanie ich nie jest specjalnie trudne. Następne 10% pracy zajęło jakieś 400% czasu. Problemy były wielorakie.

Treści fatalnej jakości

Nie mówimy tu o wartości literackiej, lecz o starych tekstach przeniesionych z Wordpressa. To prawdziwy gar zupy z tagów, bulgoczący i pachnący niezbyt zachęcająco. Jakimś pomysłem było zadeklarowanie listy legalnych tagów, które będę mógł zinterpretować. Ostatecznie uznałem, że te teksty są tak słabe, że ich nieczytelność jest praktycznie przysługą. Problem, mhm, rozwiązany.

Przypisy

Przypisy w blogu generowane są przez wtyczkę, która używa własnego tagu REL w nawiasach kwadratowych jako znacznika przypisu. Bez specjalnej miłości w sercu udałem się do testera wyrażeń regularnych i próbowałem napisać coś, co wychwyci potrzebny fragment. Musicie wiedzieć, że jedyne wyrażenie używane przeze mnie regularnie, to „kurwa”, proces ten zajął mi zatem więcej czasu niż powinien. Po testach postanowiłem, że wstawię przypisy pod paragrafami je zawierającymi, a nie na końcu tekstu. Wyglądało bardzo profesjonalnie, jakbym był blogerem z sponsorowanymi wpisami.

Linki

Ten sam problem co z przypisami, pomnożony przez to, że w moim lenistwie często używam zarówno markera z Markdownu, jak i <a>. Musiałem użyć nie tylko wyrażenia regularnego — bezwstydnie skopiowanego z internetu po godzinie walki — ale także BeautifulSoup celem wyłowienia tagów HTML-a. Zadziałało.

Obrazki

Chciałem zamienić obrazki na kolorowe „piksele” terminala. Używając notacji RGB, mogę bez problemu wykorzystać Pillow do przekonwertowania obrazu na tryb indeksowanej palety i przeskalować go do szerokości 76 znaków — docelowej szerokości tekstu, który chcę generować.

Poszło szybko, ale… efekt pozostawia dużo do życzenia. Poza „heh, fajne”, użyteczność obrazów przeskalowanych do 72px szerokości wydaje się być znikoma. Prawdopodobnie zmienię generator tak, żeby zamiast obrazków wstawiał odnośniki do nich, aby czytelnik mógł kliknąć samodzielnie.

Aktualizacja: obrazki działały okropnie, wszystko zależało od definicji terminala czytającego, więc po namyśle wywaliłem całość.

Markdown, «ANSI»

Nie miałem już zapału w sercu, by siadać do pisania parsera, który wypluwałby odpowiednio „wyeskejpowane” kody dla terminala w miejsce pogrubień, nagłówków i całego tego bajzlu. Znalazłem bibliotekę wyposażoną w komplet narzędzi i kiedy już oswoiłem się z jej konceptami, zagnałem ją do pracy.


Po prawie dwóch miesiącach mogę wreszcie zadeklarować, niczym lider wolnego świata — “MISSION ACCOMPLISHED” — prawie wszystko się udało™. A rzeczy, które się nie udały, najwyraźniej były kiepskimi pomysłami i zostały porzucone nie z powodu braku cierpliwości, tylko w wyniku głębokiej, filozoficznej retrospekcji.

Poprawiała Kaja ❤️

PS. curl -s https://fuse.pl/beton/curl-blog.html | less, duh. ;-)


Od cegły do ziarnka
⌜ Literatura ⌟

Na gruzowiskach budynków bywam częściej niż na grobach bliskich. W grobach nie ma bliskich, są oni w mojej głowie. Gruzy budynków są rzeczą samą w sobie, gram do grama — budynkiem, tylko w stanie nieładu. W dzieciństwie łatwiej było znaleźć opuszczony budynek, teraz profesjonalizm, BHP, rzeczy nie rozpadają się samodzielnie, własnym tempem, jak to było w moim dzieciństwie. Są zsuwane w niebyt zębami koparek i spychaczy.

Na obrzeżach miasta nawet puste budynki miały swój cykl w ekosystemie biednej dzielnicy. Wpierw plac zabaw dla dzieci, wbrew protestom matek zdobywany kawałek po kawałku. Potem ktoś stłukł szybę, ktoś wszedł na dach po rynnie, wreszcie ktoś śrubokrętami ojczyma rozkręcił zamek i teren został przejęty. Meble, jeśli jeszcze jakieś zostały, były przeglądane dokładniej niż skrzynie pełne skarbów, każdy metr podłogi zbadany na obecność śladów potencjalnej przygody. Starsze dzieci dopowiadały legendę domu, wyssaną z palca o brudnym paznokciu. Poprzedni właściciele zwykle byli przestępcami, mordercami, ukrywali się przed organami państwa, a los dogonił ich tutaj: powiesili się na tym haku do lampy, skoczyli z tego okna na ten betonowy chodnik, zastrzelono ich na schodach. W tych opowieściach żaden były właściciel nie dożył godnego końca, wszyscy odchodzili w sile wieku i nigdy po cichu.

Później przychodziła zima i dom z powybijanymi oknami nie nęcił już tak jak latem. Na wiosnę rozpoczynał się proces niszczenia. Kto nie chciał zobaczyć, jak wielkie lustro pęka na tysiące części? Szuflady wyrwane z szafek uderzały o ściany tak mocno, że traciły swój kształt i stawały się kupą desek. Ostatnie okna kruszyły się na podłogi.

Latem miejsce przejmowali dorośli: zdejmowali metalowe elementy, darli kable, wystawiali lepiej zachowane framugi. Następnie ktoś przynosił młot i siekierkę. Czerwone cegły, jedna po drugiej, były oddzielane, czyszczone z resztek zaprawy i układane w małe stosiki, które można później sprzedać rolnikowi. Nadawały się nadal do budowy nieforemnych komórek na narzędzia lub niskich chlewików. I tak tydzień po tygodniu, miesiąc po miesiącu budynek bladł i kurczył się, by wreszcie któregoś dnia zostawić po sobie odcisk w ziemi, w którym zbiera się deszczowa woda.

Niedawno odkryłem, że jeden z budynków na trasie moich poobiednich spacerów jest przygotowany do obalenia. Stało się to tak szybko, że kiedy trafiłem po raz kolejny przed jego oblicze, był już tylko szkieletem rozciągniętym na podwórzu. Na moje szczęście miejsce nie było dobrze zabezpieczone i tylko znaki zakazu wstępu łypały na mnie niechętnie.

Dom obrócony w perzynę jest negacją wszystkich wartości zawartych w jego istocie. Okna we wciąż stojących ścianach kiedyś wpuszczały do mieszkań światło słoneczne, teraz przechodzień na ulicy może popatrzeć przez nie na puste niebo. Rzeczy oddzielone od siebie są razem. Pokoje ubrane w ściany chroniły prywatność, teraz są rozpoznawalne przez topologiczne badanie resztek podłogi. Drewniane klepki to pewnie mieszkanie, błękitne płytki pokryte grubą warstwą betonowego kurzu to bez wątpienia łazienka. Niewyraźne granice można odtworzyć, studiując inne geograficzne elementy: resztki niewyniesionej komody, ścięte węzły wodociągowe, liczba okien.

Wytrawny antropolog rozpadu znajdzie też komin. Na nosa. Umorusane sadzą cegły śmierdzą zimną spalenizną. Dekady gryzącego dymu nie ulecą w niepamięć w kilka miesięcy.

Po wschodniej stronie budynku kręci się chłopak. Zerka na mnie podejrzliwie. Ma w ręku siekierę, a na stosie przed nim leży wyzwolone drewno, przycięte na długość wygodną do transportu. Jest bardzo zimny, styczniowy dzień. Nie mogę po prostu podejść i powiedzieć: „nie martw się, jestem tu z tego samego powodu, co Ty. Chcę zabrać z tego budynku ostatnie wartościowe rzeczy”. Odsuwam się więc na bok i udaję, że go nie widzę. Niestety, spłoszony, pakuje się i odchodzi w kierunku niedalekiej kamienicy. Zostaję sam, odwiedzam wszystkie cztery strony budynku i wreszcie zadowolony wracam do domu.

Zburzony budynek
Za kilka miesięcy stanie tu nowoczesny budynek, bez kominów i drewnianych podłóg. Wbity pomiędzy pozostałe kamienice, będzie im przypominał o ich nieuniknionym losie.

Nad tekstem pochylała się Kaja/Nerdy Nocą


focu.sh
⌜ Technologia ⌟

Mody przychodzą i odchodzą. To dowód na to, że moda jest rzeczą fatalną. Nic dobrego nie psuje się kompletnie w miesiące, aż do momentu w którym trzeba całość wyrzucić. W świecie edytorów tekstowych dla pisarzy najnowsze mody sugerują, że jeśli nie możesz użyć maszyny do pisania, powinieneś przynajmniej naśladować jej zachowania: pozbyć się klawisza delete co uniemożliwi poprawianie tekstu na bieżąco, to samo z podróżowaniem pomiędzy paragrafami przy użyciu klawiszy kursora. Najlepiej też nie pokazywać tekstu poza obecnie pisanym kawałkiem, zaciemniając go lub nie wyświetlając go w ogóle.

Wszystko to ma jeden cel: nie kraść uwagi pisarza poprzednimi bohomazami i skierować go na jedną, słuszną drogę: drogę wiodącą do przodu.1

Będąc autorem amatorskim, o suchym pysku, pustej stronicy i drżących rękach, pomyślałem, że dam sobie szansę dołączyć do ludzi aktywnych pisarsko. Pobrałem taki i siaki edytor (słowa kluczowe "minimalism", "markdown", "focus"), większość nie ma wersji na Linuksa, a te, wydane dzięki technologii przeglądarka-vm2 zwykle nie przeżywają zetknięcia ze skąpymi w cykle procesora komputerami na których pracuję.

Przetestowałem też aplikacje mobilne. Tu jakościowo było znacznie lepiej, powstał jednak problem poboczny: część z tych edytorów domaga się comiesięcznej opłaty subskrypcyjnej. Jestem moralnie przeciwny takiej formie finansowania oprogramowania, co raczej nie powinno nikogo dziwić.

Zrobiłem więc następną dobrą rzecz: napisałem najbardziej hipsterski edytor dla prawdziwych artisanów, focu.sh3 — kilka linii w Bashu. Minimalistyczny edytor minimalistycznym nakładem sił.

focu.sh

Edytor składa się zasadniczo z jednego elementu: czytaniu stdin przy użyciu read i przekierowaniu (przez dopisanie) pobranej wartości do jakiegoś pliku wybranego przez użytkownika.

Wersja tylko fakty wyglądałaby tak:

while :
do
    read line
    echo $line >> "$1"
done

Już minimalistyczne, ale jeszcze nie hipsterskie. Musimy usunąć z ekranu wpisaną wcześniej treść i pokonać wewnętrznego Narcyza, zakochanego w już popełnionej prozie. Moglibyśmy wywołać clear, ale to zbyt agresywne i nieestetyczne. Musi być symetria jak u Kubrika i Wesa.

clear_and_align() {
    lines=`tput lines`
    half=`echo $lines/2-1 | bc`
    tput clear
    for i in $(seq 1 $half);
    do
        echo
    done
}

Dodałem funkcję clear_and_align() powodującą, że kursor jest zaparkowany na środku ekranu. Białe litery pośród morza ciemności, pięknie. Aby uzyskać ten efekt odczytuję ilość linii obecnego terminala używając tput, tnę je na pół używając kalkulatora bc, czyszczę ekran, a następnie „spuszczam” kursor odpowiednią głębokość kręcąc się po sekwencji 1…ekran/2. Całość wystarczy dodać do naszej głównej pętli while…do…done.

W pisaniu najważniejsza jest motywacja. Dobrze byłoby wyświetlić wiadomość pożegnalną wraz z ilością linii dodanych podczas sesji.

trap goodbye SIGINT
goodbye() {
    clear_and_align
    echo "W R I T I N G   S E S S I O N   T E R M I N A T E D."
    echo
    echo "$lines_added   L I N E S   A D D E D"
    exit
}

Dzięki użyciu trap możemy załapać sygnał SIGINT (wciśnięcie ^c) i wskazać funkcję do wywołania bezpośrednio po jego nadejściu. W funkcji wyświetlimy zmienną globalną lines_added, wartość której podbijamy oczywiście w głównej pętli. I proszę, po strachu.

I chciałbym móc Wam skłamać, że to właśnie ten cudowny edytor jest powodem mojej obecnej aktywności. Niestety, użyłem go raz i nie sprawiło mi to wielkiej przyjemności. Odkąd nauczyłem się wychodzić z Vima4 robię w nim wszystko. Nie napisałem może nowego edytora, ale za to mamy praktyczny przykład użycia „nieskończonego” while, seq, tput i trap.

Edytor w działaniu.

Wersja „finalna” w repozytorium.

Runda dodatkowa

Wymyśliłem, że mógłbym przypudrować nieco nosa funkcji goodbye. Moją wizję nazwałem „poprzeczny Matriks”: weźmiemy ciąg znaków i będziemy go wypisywali literka po literce używając pary kolorów (czy też własności: jak jasność i pogrubienie) wybieranych losowo zasymulujemy wyłanianie się napisu z mroku do maksymalnej jasności i wspak.

Byłem pewny i spokojny, a w mojej głowie odgrywało się jak to wszystko będzie wyglądać. Po godzinie z kawałkiem popatrzyłem na efekt i otrzepując ręce powiedziałem pod nosem „Jebać. I tak nie chciałem tego robić.”

END OF TRASMISSION

  1. próbując edytować to w kawiarni naszła mnie nagle przerażająca myśl. To wszystko jest log typu append-only. Czy jestem pierwszym człowiekiem, który wymyślił blokczejn-teknolodżi z zastosowaniem? TołstojPiniondż niedługo na rynku!
  2. Electron i jego bękarty
  3. Gdyby domena nie kosztowała $80 to bym zrobił sobie landingpage w bootstrapie
  4. alt-a tworzyło nową sesję na terminalu tekstowym, logowałem się i wydawałem polecenie kill

Się, nam
⌜ Życie ⌟

Czy jest bardziej polskie stwierdzenie niż „się załatwi”? Jest ono reprezentacją ducha narodu, jego najcenniejszych wartości: pomysłowości, zdolności organizacyjnych, słusznego sprzeciwu ikonoklasty i niedopowiedzeń godnych listów między kochankami.

Taki taniec godowy, nierozpoznawalny dla innych gatunków, wyewoluowany przez wieki, gdy tylko biedy było pod dostatkiem.

Kiedy Polak mówi Polakowi, że „się załatwi” dochodzi do niewerbalnego porozumienia, które wypowiedziane słowami, a nie daj bóg, zapisane na papierze, mogą być użyte jako źródło paszkwili. Strona, która mówi, że „się załatwi”, rozgrzesza stronę proszącą. Nikt nie jest pewien jak ta rzecz się stanie. Czy ktoś na tym ucierpi, czy zostaną nagięte przepisy, złamane prawa. Osoba w potrzebie, niemal jak w modlitwie, wypowiada swoje prośby do istniejącej gdzieś, niepoznanej, siły sprawczej. Odbiorca tej modlitwy też odżegluje się od bycia instrumentem stworzenia. Nigdy „ja załatwię”, zawsze „się załatwi”. Pasywnie, anonimowo, przed oblicze niewidzialnych sił natury.

Niesłychana jest również egalitarystyczna potęga tego porozumienia. Lekarz może powiedzieć do pacjenta, że „się załatwi”, ale też szatniarz do dyrektora. Choć moce sprawcze i rezultaty będą różnego kalibru, do paktu wszyscy podchodzą patrząc sobie w oczy, jak równy z równym, nasz własny wkład w urzeczywistnianie utopijnych wizji mutualizmu Kropotkina i Proudhona.

Dziś obrońcy statusu quo starają się wyrugować ten piękny zwyczaj, zaszczepić nam moralną pewność, że „się-zalatwizm” jest przywilejem przyznawanym wraz z wpisem w KRS. Apeluję abyśmy odrzucili te postulaty i nie dali się ograbić kulturowo, a jeśli już damy się ograbić kulturowo, to przynajmniej nie dajmy się ograbić materialnie.


10 PRINT
⌜ Technologia ⌟

Dyskusja na temat „czym jest sztuka, czym jest piękno” jest z nami tak długo jak długo istnieje klasa intelektualno-próżniacza, która mogła zadawać sobie takie pytania i szukać na nie odpowiedzi. Będąc bękartem tej klasy, odziedziczyłem tylko pół genotypu, jestem próżniakiem, dlatego na potrzeby dzisiejszego dnia zdefiniuję sztukę i piękno jako „to, co da się wyrazić jedną linijką w najgorszym1 BASIC-u”.

Najsłynniejszym przykładem „generowanej sztuki” jest 10 PRINT, jedna linijka w BASIC-u na C64, która generuje pseudolosowy labirynty. Jest możliwa tylko dzięki szczęśliwym zbiegom okoliczności. Prześledźmy ją krok po kroku.

10 PRINT CHR$(205.5 + RND(0)); : GOTO 10

PRINT nie trzeba nikomu tłumaczyć. Natomiast warto rozważyć dwa znaki interpunkcyjne. : pozwala na separacje poleceń, ; jest modyfikatorem dla PRINT i powoduje, że następne znaki nie będą wypisywane w nowej linii. CHR$() przyjmuje indeks i wypisuje znak znajdujący się pod nim w tabeli ASCII C642. Wartość 205 odpowiada /. RND() zwraca pseudolosową wartość w zakresie 0…1. GOTO zamyka pętle.

CHR$() jako parametr przyjmuje liczbę całkowitą. Jeśli podać mu liczbę zmiennoprzecinkową bezceremonialnie odrzuca wszystko po kropce bez zaokrąglania. To dla nas dobry zbieg okoliczności. Teraz rozważmy operację dodawania: 205.5 + [0…1] daje nam liczby z zbioru 205.5…206.5. Jak już ustaliliśmy CHR$() jest kompletnie nieczułe i widzi tylko dwie wartości. 205, które w tablicy ASCII odpowiada / i 206, kolejny szczęśliwy zbieg okoliczności, odpowiada \.

Ostatni pozytywny zbieg okoliczności? Piksele na 8-bitowych maszynach to materiał premium, twórcy komputera nie mieli luksusu martwienia się jak typografia „oddycha” na ekranie. Odstępy pomiędzy liniami nie są tego warte.

10 PRINT: wideo zrzucone z emulatora C64 demonstrujące efekt

I tyle: stawiamy znak \ lub / i pozwalamy naszemu mózgowi poukładać ten szum w kształty. Magiczne sztuczki wydają się głupie, gdy je wyjaśnić.

Dla zabawy „przeportowałem” ten kod na odpowiednik w Pythonie, niestety, Linuksowy terminal jest już bogaty w piksele i nie da się tak łatwo uzyskać jednolitych linii. Po ustawieniu fontu z C64 efekt był już całkiem zadowalający.

from random import choice
while True: print(choice(['/', '\\']), end='')

Szybka opowiastka o: random.choice zwraca losowy element z listy (tu dwuelementowa lista z \ i /, oczywiście), end='' do print() powoduje to samo, co średnik w BASIC-u, operacja nie kończy się nową linią.

10 PRINT: na Linuksie

Miałem w tym tygodniu opublikować inny tekst, ale chyba jestem kolejną ofiarą zarazy™ i nie mogę myśleć zbyt jasno. Widziałem wczoraj wideo w którym Robin optymalizuje 10 PRINT w asemblerze i pomyślałem, że to temat łatwy i przyjemny, a może ktoś z subskrybentów nie wie o fenomenie.

Kilka lat temu MIT wypuściło książkę o 10 PRINT, ma ona 324 strony, co jest pewną formą meta-sztuki nieosiągalnej dla zwykłych śmiertelników. Skłamałbym gdybym powiedział, że ją przeczytałem. Dość uważnie przekartkowałem ją spacją.

  1. TI/99 walczy zaciekle o koronę
  2. PETSCII, nie będę jednak dzielił włosa na czworo

asdf-vm
⌜ Technologia ⌟

Wszyscy lubią dobry sequel, choć szansa na niego jest znikoma. W zeszłym tygodniu pisałem o wygodnej metodzie instalacji programów napisanych w Pythonie, a dziś przedstawię Wam podobne rozwiązanie: z tą różnicą, że nie „programów w Pythonie” tylko „wszystkiego w sumie z naciskiem na języki programowania i narzędzia pomocnicze”. asdf-vm

W „Boskiej Komedii” Alighieri opisuje 9 kręgów piekła do którego może trafić grzeszna dusza. Wbrew religijnej ikonografii ostatni krąg nie ma gotującej się siarki i diabołów uzbrojonych w ostre narzędzia rolnicze tylko jezioro skute na wieki lodem, najbardziej oddalone od ciepła bożej miłości. Gdybym miał talent (no, więcej talentu) napisałbym pastisz w którym na końcu byłby asdf instalujący Pythona, instalujący pipx, instalujący docker-compose, w kontenerze. Dziewięć kręgów abstrakcji, prawdziwe piekło.

Żarty na bok, ale w zasięgu ręki.

W przeciwieństwie do pipx, który używa standardowych mechanizmów Pythona, asdf to bardzo lekka specyfikacja do skryptów instalacyjno-kompilacyjnych zarządzana przez super-polecenie.

Podczas pisania tego tekstu dostępne są 4201 specyfikacje, które w nomenklaturze asdf nazywamy pluginami. Większość z nich dostarczona jest przez osoby zewnętrzne, więc standardowe ostrzeżenie o „odpalasz czyjeś skrypty z Internetu” obowiązuje każdego dnia i każdej nocy.

Co do jakości samych wtyczek: jest różnie. Niektóre budują oprogramowanie wprost ze źródeł, inne znów pobierają skompilowane binarki. Podobnie jak w świecie kontenerów istnieje założenie, że końcowy odbiorca posiada komputer z x64. W chwili obecnej takowego nie posiadam, niektóre instalatory popełniają więc naiwne błędy: ściągają binarkę na x64, kładą ją do wirtualnego katalogu, zacierają ręce i mówią — „gotowe”, czy trochę lepiej, wywracają się od razu na kolana mówiąc „nie ma takiej architektury — armhf”. Innymi słowy, jeśli upstream nie rozwiązał problemów wieloplatformowości są niewielkie szanse, że autor wtyczki do asdf poświęcił czas na testowanie instalacji na nie-Intelach.

Jedna funkcja samego asdf jest mi szczególnie miła. Poza możliwością instalowania obok siebie kilku wersji tego samego programu istnieje też możliwość zadeklarowania jaka wersja jest globalna (widziana przez powłokę normalnie) a jaka jest lokalna (na przykład w katalogu projektu).

Uratowało to moją duszę przed wizytą w drugim kręgu, gdy odziedziczyłem po frontendowcach projekt, który potrafił się tylko zbudować jedną konkretną wersją nodejs. Dlaczego? Nikt nie wiedział, a ostatnia osoba, która mogła coś na to poradzić postanowiła sprzedawać łódki dłubane w korze na rogach jasno-oświetlonych domów handlowych.

Wystarczy przenieść się do katalogu projektu i wydać polecenie asdf local nodejs 12.18.3 (oczywiście po wcześniejszym zainstalowaniu) i za każdym razem gdy odwiedzimy nasz projekt wersja zmienia się magicznie pod naszymi stopami. Wersję ustawia zawartość pliku .tool-version, możemy go wciągnąć do repozytorium, co pomaga ludziom tak zapominalskim jak ja.

Instalacja

Polecaną metodą jest sklonowanie repozytorium do katalogu domowego. Kilka pakietów, które próbowałem na Arch instalowały do /opt czy też /usr/local, nie pamiętam, w każdym razie kłóciło się nieco z moją ideą żeby wszystko żyło w katalogu domowym, dlatego usunąłem je i użyłem ręcznej metody.

git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.8.1

Do skryptu uruchomieniowego powłoki należy dodać wywołanie ./$HOME/.asdf/asdf.sh rozpędzające machinerię. Jeśli używacie oh-my-zsh można dodać do jego konfiguracji plugins=(asdf git […]).

Używanie

Wpierw dobrze się rozejrzeć, co też dają w tej knajpie. Listę wszystkich dostępnych pluginów otrzymamy po wywołaniu:

asdf plugin list all

Jeśli nasza powłoka nie wspiera dopełnienia należy sprawdzić jakie wersje konkretnego pluginu możemy zainstalować:

asdf list all nodejs2

Obecnie doszedł uniwersalny tag latest aby ułatwić start. Niektóre pluginy zawierają też inne nazwy własne takie jak lts czy stable. Zainteresowani muszą zbadać sprawę na własną rękę.

Musimy dodać plugin do listy aktywnych:

asdf plugin add nodejs

By ostatecznie zainstalować rzecz samą w sobie. Dwie rzeczy na potrzeby demonstracji:

asdf install nodejs 12.18.3

asdf install nodejs latest

Kiedy (lub jeśli, build-essential + *-dev* będą nieodzowne) wybrany program się już zainstaluje możemy wybrać wersję do użycia. Domyślnie, bezpośrednio po instalacji, programy nie są aktywne.

asdf global nodejs 12.18.3 — wybierze nam domyślną wersję zainstalowanej aplikacji

asdf local nodejs latest — zadeklaruje wersję aplikacji do użycia w sytuacji, gdy znajdujemy się w danym katalogu.

W praniu

Poniższe wideo zawiera bardzo hipotetyczną sytuację.

Mam w Vimie wsparcie do fzf i chcę zainstalować program by móc z niej korzystać. Z jakiegoś powodu, być może na potrzeby demonstracji, ubzdurałem sobie, że chcę je zainstalować w wersji 0.22.0. Ta wersja ma gotową binarną dystrybucję, więc wszystko kończy się na pobieraniu do odpowiedniego katalogu.

Zadeklarowałem wersję 0.22.0 jako globalną i odpaliłem Vima. O nie, szelma, zostałem zdradzony, wtyczka do Vima potrzebuje nowszej wersji fzf. A ta nie ma binarnej dystrybucji. Na szczęście 0.29.0 buduje się używając go, nomen omen, zainstalowanego via asdf, i mogę zadeklarować tę wersję jako lokalną.

Animacja demonstrująca poprzedni paragraf tekstu

Przyznam, że znalezienie czegoś do demonstracji zajęło mi więcej czasu niż pisanie samego tekstu. Szrotowany powindowsowy „tablet” z mizernym Atomem nie jest idealną platformą do kompilowania LibreOffice i nagrywania z tego wideo.

  1. nice
  2. 622 wersje. Dżizas kurwa mać ja pierdolę,,,

pipx — bezbolesna instalacja programów w Pythonie
⌜ Technologia ⌟

Moje komputerowe życie umila zaskakująca liczba programów napisanych w Pythonie. Na przykład wspominany wcześniej catt, bardzo wygodne i praktyczne klienty do baz danych jak pgcli czy mycli. Niezastąpiony youtube-dl (a właściwie jego fork yt-dlp) pozwalający archwizować media, goobook integrującym książkę kontaktową Googla z muttem. Mógłbym tak wymieniać długo.

Programy w Pythonie pisze się niezwykle przyjemnie, prawdziwe schody zaczynają się w momencie dystrybucji efektu naszej pracy. Część chce się instalować przez curl | sh, inne znów posiadają własne instalery i metody aktualizacji, są też oderwane od rzeczywistości pakiety .deb i .rpm niesiące ze sobą obietnice katastrofalnego zakłopotania systemu.

Jeśli deweloperzy dystrybucji (lub ludzie tworzący „hobbistyczne” repozyoria przylgnięte do oficjalnych (AUR czy PPA)) nie przygotowali gotowego pakietu końcowy użytkownik jest pozostawiony samemu sobie.

Niewprawiony użytkownik może sobie szybko skomplikować życie instalując rzeczy bezpośrednio w trzewia systemu. Zaawansowany użytkownik może się szybko znudzić żonglowaniem pół-rozwiązaniami wymyślonymi na szybko, które trochę działają, trochę nie.1

Któregoś dnia „wdepnąłem” w pipx, program tworzący wirtualne środowiska per program jednocześnie zajmując się podlinkowaniem wykonywalnego skryptu. Dzięki temu możemy zainstalować wiele pożytecznych aplikacji bezpośrednio z PyPI bez większego bólu głowy, uzyskać dostęp do aktualizacji i możliwości usunięcia programu z systemu bez pozostawiania tradycyjnego kurzu i gruzu.

Instalacja

Użytkownicy bardziej konserwatywnych dystrybucji, więc i ja, nie mogą oczekiwać, że pipx będzie znajdował się w repozytorium. Znaczy to, że program przyjdzie nam zainstalować bezpośrednio z PyPI. Trzeba przyznać, że stajemy wtedy przed ciekawym problemem typu „jajko czy kura”. Dylemat ten pozostawię do rozważenia w Waszych sercach, osobiście proponuję pip3 install --user pipx i sprawdzenie, czy ~/.local/bin znajduje się w ścieżce (zmienna środowiskowa PATH).

Po instalacji możemy przetestować, czy wszystko poszło gładko wpisując pipx --version. Jeśli otrzymaliśmy numer wersji w odpowiedzi jesteśmy gotowi.

Używanie

pipx w akcji

Odpalenie pipx bez parametrów wyświetli nam listę dostępnych opcji. Część z nich tłumaczy się sama przez się, inne wymagają słowa objaśnienie.

Instalacja pakietu z PyPI:

pipx install yt-dlp

Instalacja pakietu bezpośrednio z repozytorium:

pipx install git+https://git.sr.ht/~bronikowski/pyswatch2

Usunięcie zainstalowanego pakietu:

pipx uninstall yt-dlp

Aktualizacja pakiet(ów):

pipx upgrade-all lub pipx upgrade yt-dlp dla ludzi o sercach miękkich wobec procesorów.

Uzyskanie listy już zainstalowanych pakietów:

pipx list

Przytrafiają się sytuacje, gdy zainstalowany pakiet nie chce się uruchomić. Jeśli problem spowodowany jest brakiem zależności lub jej niewłaściwą wersją, możemy naprawić taki problem „wstrzykując” zależność do wirtualnego środowiska zarządzanego przez pipx.

pipx inject yt-dlp <jakaś_biblioteka> lub użyć bezpośrednio pip w tymże środowisku pipx runpip yt-dpl <polecenie pip>.

Do Waszej dyspozycji pozostają też trzy zmienne środowiskowego:

PIPX_HOME — katalog w którym tworzone są wirtualne środowiska (domyślnie: ~/local/pipx/

PIPX_BIN_DIR – katalog w którym zostaną umieszczone symlinki do wykonywalnych poleceń. Oczywiście najlepiej taki, który znajduje się w ścieżce uruchomieniowej. Domyślnie ~/.local/bin.

PIPX_DEFAULT_PYTHON — jeśli chcecie używać innej wersji Pythona

Na zakończenie przypomnę tylko, że pipx nie rozwiązuje magicznie problemu pakietów, które wymagają dostępu do kompilatora i nagłówków — tu nadal musimy zapewnić wszystko przy użyciu pakietów -dev*.

  1. Staram się porzucić żywot człowieka używajcego Debian/oldstable żyjącego z 25GiB-towego katalog ~/src
  2. zob. „Umówiłem się z nią na dziewiątą

W 80 minut dookoła Łodzi
⌜ Życie ⌟

Cóż to za kropka na horyzoncie? Nad Starym Widzewem wisi sobie balon. Nie pamiętam kiedy widziałem taką bańkę zawieszoną na moim niebie, zmieniam więc trasę mając nadzieję, że przetnę jego ścieżkę.

Wpakowałem się niestety w jeden z trzydziestu czterech, odbywających się równocześnie, remontów. Postanowiłem trzymać go na wschodzie i jechać przed siebie.

Niebo jest nieoczekiwanie wielkie. Kilka kilometrów później zaczyna mi się kończyć miasto, ale nie wygląda jakbym zbliżał się do trasy balonu.

Widzę więcej balonów. To musi być jakaś zorganizowana akcja.

Przejazd kolejowy i czekamy aż przejedzie samotna ciuchcia PKP Cargo.

Balon, który śledziłem, znika za blokami. Znaczy, że usiadł, bo to zaledwie czteropiętrowe budynki. Skręcam pomiędzy nimi i zostaję nagrodzony. Na boisku do koszykówki przycupnął sobie balon z nieco zirytowanym operatorem.

Prosi o pomoc. Łapię za gondolę z dwoma innymi chłopami i niesiemy go w kierunku, który nam wskazuje. Balon jest zadziwiająco ciężki nawet z non-stop pracującym palnikiem, który pluje ogniem w jego brzuch.

Od środka jest całkiem pusto. Nawet tanich mebli z Ikei nie ma.


Patrzysz mi się na ręce. Ręce mi się trzęsą.
⌜ Życie ⌟

Wczoraj widziałem nowelkę wspomnień.1 Co zaczęło się jako wieczór ze sprawdzaniem stanu prywatnych archiwów, skończyło się na przeglądaniu starych zdjęć, a następnie znalezieniu konkretnego wycinka mojego życia i odbijania się po nim z lewa na prawo.

Szukanie wspomnień, przywoływanie kontekstu, ludzi, tematów rozmów prowadzonych do świtu, odtwarzanie dźwięków i smaków.

Refleksje wczepiły się tak bardzo w moją świadomość, że nawet po przebudzeniu się na drugi dzień nie mogłem się otrząsnąć z kilku emocji. Jak odgrzane resztki dawnej fiesty, nie wyglądały atrakcyjnie, ale smakowały wspaniale. Wyciągnąłem notatnik, pióro i postanowiłem, że poukładam sobie rzeczy na papierze. Nie ma lepszego piorunochronu na burzę myśli niż notatnik.

Napisałem może stronę, gdy telefon zrobił ping. Jestem podejrzliwy, bo mój telefon nie robi ping w normalnych warunkach, większość aplikacji jest poproszona o zamknięcie mordy. Patrzę w źródło powiadomienia. Google Photos ma dla mnie zajmujący kolaż! Tylko dla mnie, samo zrobiło!

Mając najgorsze przeczucie klikam.

Jak niekompletny szpieg, przekonany o swoich super-mocach i rentgenowskim wzroku, Google zauważyło, że oglądałem konkretny wycinek czasu i przygotowało mi prezentacje z tego właśnie.

A ponieważ nie posiada kontekstu, moich wspomnień, nie wie, że część tej wycieczki w przeszłość uzupełniałem zdjęciami z dysku to, co wybrało było kompletną bzdurą: kolekcja kilkunastu zdjęć kościołów.

Intelektualnie wiem i rozumiem, że jestem śledzony przez dziesiątki takich niekompetentnych szpiegów, którzy robią to dla „mojego dobra”. Udaje mi się jednak o tym zapomnieć. Co jakiś czas Sztuczna Indolencja, napędzana miliardami dolarów, wysyła swojego agenta by mi przypomnieć, że mogę kupić książkę, którą już kupiłem lub zobaczyć zdjęcia, które już widziałem.

Jest coś frustrującego w tym, że ktoś może przerwać mi osobistą kontemplację, zdemaskować się naruszając mój mir domowy i pełnym głosem, z wypiętą piersią oświadczyć: a wiesz, że ja umiem SELECT […] BETWEEN?.

No i co z tego, kurwa?


  1. Ze wzrou „obraz wart tysiąca słów” 


Marginalia (V)
⌜ Literatura ⌟

Piotr szedł nasypem przy brzegu rzeki. Na jednym z zakrętów zauważył na kamienistej plaży staruszka, który trzymał się pod boki i krytycznie przyglądał się rzece. Piotr nie odszedł jeszcze wystarczająco daleko, by stracić go z wzroku, gdy ten wykonał kilka energicznych skłonów po czym z impetem wskoczył obunóż do wody. Ta nie ustała się jeszcze po pierwszym ataku, a dziadek już był na brzegu, już obrócił się na pięcie i znów wbił się w impetem w wodę. Tym razem stał tak prze chwilę, gładząc łysą głowę by wreszcie potrząsnąć nią z zagniewaniem.

Zaintrygowany, Piotr postanowił poczekać i zobaczyć czy teatr, który właśnie ogląda ma jakiś epilog. Podszedł bliżej stromej skarpy i przystanął przy rosnącym tam krzaku. Gdy spojrzał na plażę, dziadka już na niej nie było. Jego łysa głowa pojawiła się na skraju skarpy, a za nią podążyła reszta ciała. Piotr podskoczył, przestraszony i zmieszany, przyłapany na gorącym uczynku.

— Ależ mnie pan przestraszył! — zawołał

Tu znów podskoczył dziadek, najwidoczniej pogrążony w myślach nie zauważył swojej ukrytej widowni.

— A pan mnie. Dzień dobry i przepraszam.

— Dzień dobry — odpowiedział Piotr, ale już do dziadkowych pleców, bo ten już przeprowadzał inspekcję krzaka.

Brał do ręki gałąź po gałęzi i oceniał je. Wreszcie podjął decyzję i ułamał jedną. Mierząc ją jeszcze w dłoni począł schodzić w kierunku plaży.

Piotr, już zdemaskowany, przyglądał się otwarcie drugiemu aktowi.

Patyk zatoczył koło w powietrzu i poleciał w kierunku wody. Po przepłynięciu kawałka został wyłowiony przez starca, który wydawał się być zadowolony z eksperymentu. Patrząc znów na płynącą wodę wzrokiem pełnym determinacji, dziadek wskoczył do wody trzymając patyk w prawej ręce i niemal natychmiast wypuścił go z ręki, pozwalając mu popłynąć ze strumieniem.

Sam wyskoczył z wody na piasek i podjął pościg za odpływającą gałęzią, przymierzając się całą drogę do skoku.

Skoczył wreszcie rozbryzgując wodę dookoła. Stał tak chwilę odprowadzając odpływający patyk wzrokiem. Potarł kark i z wyraźnym znużeniem wrócił na miejsce startowe. Położył się na brudnym piasku, zamknął oczy i złożył ręce na brzuchu.

— Przepraszam — zawołał Piotr — ale muszę pana zapytać, co pan do cholery robi? To jakieś ćwiczenia sportowe? Sztuka?

Starzec przewrócił się na bok aby mógł widzieć swojego rozmówcę i powiedział

— Znacie panie Heraklita?

Piotr potrząsnął głową przecząco.

— To taki filozof, myślał dużo o świecie, o zmianach. Jego najpopularniejsza sentencja to „Niepodobna wstąpić dwukrotnie do tej samej rzeki.” — próbuję obalić tę frazę.

— Dlaczego? — zapytał Piotr

— Bo, drogi panie, mam już dosyć zmian. Ułamże mi pan inny patyk, skoro już jesteś tam na górze.


Marginalia (IV)
⌜ Literatura ⌟

Słońce wpadające przez okno zostawiało na biurku pasy światła, jak linie demarkacyjne nieistniejących granic. Republika lampy, gubernia książek będąca w nieustającej wojnie z wielkim królestwem przyborów do pisania. Rzeczy migrowały wraz z pracą, a granice migrowały wraz z posuwającym się dniem, gdy słońce zaczynało chować się za gzymsem budynku na przeciwko.

W wyzwolonym terytorium stał kubek. Był to zwykły, aluminiowy kubek, bez historii, bez znaczenia, gdyż nie spełniał swojej jedynej funkcji jaką jest okiełznanie ciepłego napoju.

Miał tylko fusy.

Iwanowicz starał się go nie zauważać. Był jak wyrzut sumienia. W głębi duszy wiedział, że musi go umyć ale rzeczy proste wydawały się tak skomplikowane. Dużo łatwiej jest robić rzeczy trudne.

Rzeczy trudne pełne są zakamarków w których można ukryć znużenie. Rzeczy trudne są ruchome, mienią się kalejdoskopem problemów od których kręci się w głowie. Jeśli ktoś baruje się z rzeczą trudną, to wszyscy ze zrozumieniem akceptują że rozwiązanie może nie być doskonałe. Jeśli wyciosasz bale, postawisz z nich dom, a krzywo osadzisz drzwi to ludzie powiedzą: „To piękny dom, choć czasem przeciąg”.

Jeśli nie domyjesz kubka, nikt ci nic nie powie. Bo wszyscy, słusznie, będą tobą gardzić.

Więc Iwanowicz pisał, bo pisanie jest trudniejsze, więc prostsze. Poza tym wątpił, czy naprawdę chciał się napić herbaty. Może to tylko jedna z tych żądzy, która przyplątuje się około południa i zadamawia się w głowie. Być może odrzucenie kubka jako drogi do herbaty jest czynem godnym i on, przez to niemycie staje się człowiekiem moralnym, człowiekiem wyboru!

Czy nie zostaliśmy, myśli Iwanowicz, stworzeni do rzeczy większych. Czyż nie trzeba demonom mówić stop, walczyć z pokusą, nie dać kierować swoje życia zachciankami.

Herbata była zielona i smakowała dobrze.


Marginalia (III)
⌜ Literatura ⌟

Z mównicy płynął głos.

„Obywatele!” — zadudnił.

„Obywatele.” — powtórzył spokojniej, gdy zebrany tłum ucichł.

„Rozumiemy jak ważny jest dla Was chleb. Dlatego, jednomyślnie podjęliśmy decyzję o powołaniu komitetu do spraw organizacji parady chlebów. Planujemy szeroką reprezentację chlebów z całego świata: meksykański Conchas, japoński Pan, francuską Bagietkę i tak dalej. Uniwersytety otrzymają specjalne dotacje na badania naukowe dotyczące znaczenia chleba w kulturze. Do tego dofinansujemy sztuki teatralne ze szczególnym naciskiem na teatr muzyczny w oczekiwaniu na chwytliwą produkcję, która pokaże aspiracyjne znaczenie chleba. Lokalne samorządy otrzymają pozwolenie na zmianę jednej ulicy, która nazwana jest imieniem króla na Piekarzy.”

Wtrącił się głos z widowni — „A czy będzie chleb dla nas, do jedzenia?”

— „W tej chwili” — odpowiedział człowiek stojący za pulpitem — „planujemy tylko igrzyska.”