Béton bruthttps://fuse.pl/beton/2024-03-12T22:03:00+01:00Zrobić dobrze mokrym palcem2024-03-12T13:30:00+01:002024-03-12T22:03:00+01:00Emil Oppeln-Bronikowskitag:fuse.pl,2024-03-12:/beton/palcem.html<p>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 <span class="caps">MEGA</span> <span class="caps">STE</span>. Całkiem …</p><p>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 <span class="caps">MEGA</span> <span class="caps">STE</span>. 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.</p>
<p>Usiadłem przy nim jak ksiądz i spowiadałem go ze wszystkich grzechów, wynotowując te ciężkie i lekkie.<sup id="sf-palcem-1-back"><a href="#sf-palcem-1" class="simple-footnote" title="Choć wiemy, że Atari nie może iść do nieba">1</a></sup> Ostatecznie udało mi się ustalić jak go zawiesić za każdym razem: wirtualne twarde dyski serwowane z karty <span class="caps">SD</span> przez sprytne urządzonko chodzą pod kontrolą <a href="https://en.wikipedia.org/wiki/File_Allocation_Table#FAT12"><span class="caps">FAT12</span></a>, 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.</p>
<p>Napisałem szybko kilka linijek które poukładały pliki w podfolderach zgodnie z pierwszą literą nazwy pliku. Problem rozwiązany.</p>
<p>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. </p>
<p>Była to prawda w obu przypadkach. Port dżojstika jest podłączony bezpośrednio do układu <span class="caps">CIA</span> w C64<sup id="sf-palcem-2-back"><a href="#sf-palcem-2" class="simple-footnote" title="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">2</a></sup>, 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 <a href="https://en.wikipedia.org/wiki/Creatures_II:_Torture_Trouble#Cheats">Creatures <span class="caps">II</span>: Torture Trouble</a>, reagowały na taką e-intymność obdarzając gracza nieśmiertelnością lub jakąś inną niespodzianką.</p>
<p>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.</p>
<p>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).</p>
<p></p><center>
<img src="https://fuse.pl/beton/images/port/port.png" title="Port dżojstika" alt="Narysowany w PETSCII port dżojstika z opisanymi portami odpowiadającymi za wiosełka">
</center><p></p>
<p>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ć: <code>$D419</code> (X) i <code>$D41A</code> (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.</p>
<div class="highlight"><pre><span></span><code><span class="nl">10</span><span class="w"> </span><span class="c1">REM NIE ROBCIE TEGO W DOMU (ANI W MUZUEM)</span>
<span class="nl">20</span><span class="w"> </span><span class="kr">IF</span><span class="w"> </span><span class="kr">PEEK</span><span class="p">(</span><span class="il">54298</span><span class="p">)</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="il">255</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="kr">PEEK</span><span class="p">(</span><span class="il">54297</span><span class="p">)</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="il">255</span><span class="w"> </span><span class="kr">THEN</span><span class="w"> </span><span class="kr">GOTO</span><span class="w"> </span><span class="nl">100</span>
<span class="nl">30</span><span class="w"> </span><span class="kr">GOTO</span><span class="w"> </span><span class="nl">20</span>
<span class="nl">100</span><span class="w"> </span><span class="kr">PRINT</span><span class="w"> </span><span class="s2">"MAM NADZIEJE, ZE NIE SPALILES CIA"</span>
</code></pre></div>
<p>Dlaczego sprawdzamy <code>255</code>? 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.</p>
<p>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!</p>
<p>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 <a href="https://fuse.pl/beton/bmc64.html"><span class="caps">BMC64</span></a> jest to prawdopodobnie możliwe, wystarczy wyprowadzić port na <span class="caps">GPIO</span>), musiałem więc testować kolor tekstu (<code>$0286</code>, <code>14</code> to standardowy szaro-niebieski) żeby sprawdzić hipotezę. Ostatecznie to PoSC. <em>Proof of Stupid Concept</em>.</p>
<div class="highlight"><pre><span></span><code><span class="nf">BasicUpstart2</span><span class="p">(</span><span class="no">main</span><span class="p">)</span><span class="w"> </span><span class="c1">// preambuła dla BASICa</span>
<span class="err">*</span><span class="w"> </span><span class="err">=</span><span class="w"> </span><span class="nf">$c000</span>
<span class="nl">finger_irq:</span>
<span class="w"> </span><span class="nf">pha</span><span class="w"> </span><span class="c1">// ponieważ używamy akumulatora</span>
<span class="w"> </span><span class="c1">// musimy się nim zająć sami</span>
<span class="w"> </span><span class="c1">// IF PEEK(54297) < 255</span>
<span class="w"> </span><span class="nf">lda</span><span class="w"> </span><span class="no">$d419</span>
<span class="w"> </span><span class="nf">cmp</span><span class="w"> </span><span class="mi">#255</span>
<span class="w"> </span><span class="nf">bne</span><span class="w"> </span><span class="no">goodbye_cruel_world</span>
<span class="w"> </span><span class="nf">lda</span><span class="w"> </span><span class="no">$d41a</span>
<span class="w"> </span><span class="nf">cmp</span><span class="w"> </span><span class="mi">#255</span>
<span class="w"> </span><span class="nf">bne</span><span class="w"> </span><span class="no">goodbye_cruel_world</span>
<span class="w"> </span><span class="c1">//lda $0286 // «debug»</span>
<span class="w"> </span><span class="c1">//cmp #14</span>
<span class="w"> </span><span class="c1">//bne goodbye_cruel_world</span>
<span class="w"> </span><span class="nf">pla</span><span class="w"> </span><span class="c1">// przywracamy wartość akumulatora</span>
<span class="w"> </span><span class="c1">// ze stosu</span>
<span class="w"> </span><span class="nf">jmp</span><span class="w"> </span><span class="no">$ea31</span><span class="w"> </span><span class="c1">// oddajemy kontrolę kernelowi</span>
<span class="w"> </span><span class="nf">rti</span>
<span class="nl">goodbye_cruel_world:</span>
<span class="w"> </span><span class="nf">jmp</span><span class="w"> </span><span class="no">$fce2</span>
<span class="w"> </span><span class="nf">rts</span>
<span class="nl">main:</span>
<span class="w"> </span><span class="nf">sei</span><span class="w"> </span><span class="c1">// stop przerwaniom</span>
<span class="w"> </span><span class="c1">// instalujemy nasz własny wektor</span>
<span class="w"> </span><span class="nf">lda</span><span class="w"> </span><span class="c1">#<finger_irq</span>
<span class="w"> </span><span class="nf">sta</span><span class="w"> </span><span class="no">$0314</span><span class="w"> </span>
<span class="w"> </span><span class="no">lda</span><span class="w"> </span><span class="c1">#>finger_irq</span>
<span class="w"> </span><span class="nf">sta</span><span class="w"> </span><span class="no">$0315</span><span class="w"> </span>
<span class="w"> </span><span class="no">cli</span><span class="w"> </span><span class="c1">// przywracamy przerwania</span>
<span class="w"> </span><span class="nf">rts</span>
</code></pre></div>
<p>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ć <code>node_modules</code> jak frontend nie działa. Pośliniony palec można wsadzić w oko frontendowcowi, może też się zresetuje?</p><ol class="simple-footnotes"><li id="sf-palcem-1">Choć wiemy, że Atari nie może iść do nieba <a href="#sf-palcem-1-back" class="simple-footnote-back">↩</a></li><li id="sf-palcem-2">co łatwo jest udowodnić, wystarczy podłączyć dżojstik do pierwszego portu i pokręcić nim. Bez wątpienia wyskoczy wam znak <code>2</code>, <code>←</code> i spacja, <span class="caps">CIA</span> dzieli linie pierwszego portu z matrycą klawiatury <a href="#sf-palcem-2-back" class="simple-footnote-back">↩</a></li></ol>Gwiazdkę z nieba2024-03-01T16:29:00+01:002024-03-02T17:19:00+01:00Emil Oppeln-Bronikowskitag:fuse.pl,2024-03-01:/beton/gwiazdke-z-nieba.html<p>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ą …</p><p>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.</p>
<p>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.</p>
<p>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ę. </p>
<p>— Chodźmy już — powiedziałam — zaczyna się robić zimno.</p>
<p>— Zaczyna się Tobie robić zimno! — podkreśli w odpowiedzi, starając się zawsze być dokładny w sprawach błahych.</p>
<p>— 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.</p>
<p>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ę.</p>
<p>— 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ź.</p>
<p>Odwrócił się do mnie mówiąc: Zrobię to dla Ciebie, zrobię wszystko, dam Ci gwiazdkę z nieba.</p>
<p>— 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.</p>
<p>— 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.</p>
<p>— Zaraz załatwimy tę sprawę z księżycem, nie wiem tylko na co się je bierze, raczej nie na robaki?</p>
<p>Ś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.</p>
<p>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.</p>
<p>— Wreszcie dotrzymałeś słowa… — wyszeptałam niedowierzając.</p>
<p>— To chyba ostatni raz. — odpowiedział</p>64 ÷ 8 = Commodore 642024-02-22T03:33:00+01:002024-02-22T15:09:00+01:00Emil Oppeln-Bronikowskitag:fuse.pl,2024-02-22:/beton/bmc64.html<p>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 …</p><p>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ą.</p>
<p>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.</p>
<hr>
<p>Wrobiono mnie, czy też wrobiłem się sam, w ponowną próbę odpalenia naszego własnego muzeum komputerów w Łodzi. <a href="https://fuse.pl/beton/retroboat-2015-widok-z-okopu.html">Minęło osiem lat</a> 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.</p>
<p>Podczas całonocnej, weekendowej, sesji przypomniałem sobie, że bawiłem się kiedyś emulatorem C64, portem <span class="caps">VICE</span>, który działa bezpośrednio na Raspberry Pi, bez pomocy kernela Linuksa. <a href="https://accentual.com/bmc64/"><span class="caps">BMC64</span></a> startuje w sekundę, potrafi emulować całą gamę ośmiobitowców (C64, C128, C16, <span class="caps">VIC20</span>, <span class="caps">PET</span>), czyta obrazy dysków, kartridży, obsługuje pady pod <span class="caps">USB</span>, a na pinach <span class="caps">GPIO</span> można wyciągnąć sygnały kompatybilne z <a href="https://www.c64-wiki.com/wiki/User_Port">userportem</a> 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. </p>
<p></p><center>
<img src="https://fuse.pl/beton/images/c64pi/razem.jpg" alt="Emulowane komputer vis-a-vis RPi3" title="Emulowane komputer vis-a-vis RPi3">
</center><p></p>
<p>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 <span class="caps">ESP32</span> w stanie spoczynku.</p>
<p>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 <code>sudo</code> i <code>kpartx</code>, o którym kiedyś już <a href="https://fuse.pl/beton/raspberry-z-papierka-provisioning.html">pisałem</a>) zawierający firmware do wszystki<sup id="sf-bmc64-1-back"><a href="#sf-bmc64-1" class="simple-footnote" title="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">1</a></sup> emulowanych komputerów, wystarczy rozpakować je na kartę <span class="caps">SD</span> sformatowaną w <span class="caps">FAT</span> i wsadzić do RPi.</p>
<div class="highlight"><pre><span></span><code>git clone https://git.sr.ht/~bronikowski/c64pi
cd c64pi
./build.sh # wszystkie artefakty znajdą się w bieżącym katalogu
</code></pre></div>
<p>Możecie też <a href="https://git.sr.ht/~bronikowski/c64pi/blob/master/build.sh">pobrać sam skrypt</a> jeśli nie macie ochoty klonować repozytorium. </p>
<p><span class="caps">OK</span>, 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 <span class="caps">BASIC</span>-a<sup id="sf-bmc64-2-back"><a href="#sf-bmc64-2" class="simple-footnote" title="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.">2</a></sup> 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. </p>
<p></p><center>
<img src="https://fuse.pl/beton/images/c64pi/running.gif" alt="Skrypt w działaniu" title="Skrypt w działaniu">
</center><p></p>
<p>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 <span class="caps">READY</span>. 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. </p>
<p>Dobrej zabawy! A jeśli macie jakieś pytania o konfigurację, używanie <span class="caps">BMC64</span> czy „w młodości grałem w taką grę, pamiętasz może” — możecie zawsze wysłać e-maila.</p><ol class="simple-footnotes"><li id="sf-bmc64-1">Prócz C= <span class="caps">PET</span>, 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 <a href="#sf-bmc64-1-back" class="simple-footnote-back">↩</a></li><li id="sf-bmc64-2"><em>Nomen omen</em>, kilka miesięcy zacząłem pisać „książkę” o <span class="caps">BASIC</span> 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. <a href="#sf-bmc64-2-back" class="simple-footnote-back">↩</a></li></ol>timeout, czekając na Gotoa2023-12-30T11:49:00+01:002023-12-30T13:51:00+01:00Emil Oppeln-Bronikowskitag:fuse.pl,2023-12-30:/beton/timeout.html<p>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 „<span class="caps">HM</span>!” i pędzicie do biurka.</p>
<p>Dziewięćset dziewięćdziesiąt dziewięć …</p><p>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 „<span class="caps">HM</span>!” i pędzicie do biurka.</p>
<p>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”.</p>
<p>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.</p>
<div class="highlight"><pre><span></span><code>~: uname -r && cat /etc/issue.net
6.1.0-16-amd64
Debian GNU/Linux 12
</code></pre></div>
<p>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 <a href="https://fuse.pl/beton/syncthing.html">Syncthing</a>, 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 domu<sup id="sf-timeout-1-back"><a href="#sf-timeout-1" class="simple-footnote" title="Dom jest tam, gdzie WiFi podłączyło się do sieci o znanym adresie MAC">1</a></sup>, 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.</p>
<p>Wystarczałoby odpalić proces, złapać <span class="caps">PID</span>, 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 <span class="caps">GNU</span> Coreutils i nazwali to <code>timeout</code>.</p>
<h3><code>timeout</code></h3>
<p>W najczystszej formie <code>timeout</code> 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 <code>65m</code>, <code>1h5m</code> nie zadziała.</p>
<p>Drugim parametrem jest oczywiście polecenie.</p>
<p>Szast-prast. Dodałem <code>timeout 200s syncthing</code> 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 Dev<em>Oops</em>. I co widzę w pierwszej linijce? Tak, <code>timeout</code>. Myślę, to znak, znak żeby dopisać kilka „jednakże!”.</p>
<p>Jeśli polecenie wykona się przed zadanym czasem <code>timeout</code> 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.</p>
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>timeout<span class="w"> </span>5s<span class="w"> </span>./sleep_and_die.sh<span class="w"> </span><span class="m">2</span><span class="w"> </span><span class="m">5</span>
Sleep<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="m">2</span>,<span class="w"> </span>die<span class="w"> </span>with<span class="w"> </span><span class="m">5</span>
$<span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="nv">$?</span>
<span class="m">5</span>
</code></pre></div>
<p>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 <code>timeout</code> 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. </p>
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>timeout<span class="w"> </span>5s<span class="w"> </span>./sleep_and_die.sh<span class="w"> </span><span class="m">6</span><span class="w"> </span><span class="m">5</span>
Sleep<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="m">6</span>,<span class="w"> </span>die<span class="w"> </span>with<span class="w"> </span><span class="m">5</span>
$<span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="nv">$?</span><span class="w"> </span>
<span class="m">124</span>
</code></pre></div>
<p>Jeśli dodamy obsługę <code>SIGTERM</code> i zwrócimy tam własny kod wyjścia oraz użyjemy opcji <code>--preserve-status</code> otrzymamy oczekiwany rezultat.</p>
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>timeout<span class="w"> </span>--preserve-status<span class="w"> </span>5s<span class="w"> </span>./sleep_and_die.sh<span class="w"> </span><span class="m">6</span><span class="w"> </span><span class="m">5</span>
Sleep<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="m">6</span>,<span class="w"> </span>die<span class="w"> </span>with<span class="w"> </span><span class="m">5</span>
Zakończony
$<span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="nv">$?</span><span class="w"> </span>
<span class="m">5</span>
</code></pre></div>
<p>Kiedy <code>timeout</code> osiąga limit zadanego czasu do procesu wysyłany jest <code>SIGTERM</code>, używając parametru <code>-s</code> możemy zdefiniować inny sygnał. W tym przykładzie obsługuję <code>SIGTERM</code> i <code>SIGQUIT</code>.</p>
<p></p><center>
<img width="656" height="416" title="Czy jestem zadowolony z tego przykładu? Tak!" src="https://fuse.pl/beton/images/timeout/nanana.gif">
</center><p></p>
<p>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 <a href="https://en.wikipedia.org/wiki/Zombieland#The_rules">drugą zasadą przeżycia</a> jest “<span class="caps">DOUBLE</span> <span class="caps">TAP</span>”. Autorzy dostarczyli nam <code>--kill-after</code> przyjmujący dodatkowy czas po którym do procesu zostanie wysłany <code>SIGKILL</code>. Dla przykładu przechwycimy <code>SIGTERM</code> i nie porzucimy procesu.</p>
<p></p><center>
<img width="656" height="416" title="Czy jestem zadowolony z tego przykładu? Tak!" src="https://fuse.pl/beton/images/timeout/nazgul.gif">
</center><p></p>
<p>I to tyle, teraz możecie czekać na Gotoa, choć uprzedzam, że on nie nadejdzie. Wesołego nowego roku. :*</p><ol class="simple-footnotes"><li id="sf-timeout-1">Dom jest tam, gdzie WiFi podłączyło się do sieci o znanym adresie <span class="caps">MAC</span> <a href="#sf-timeout-1-back" class="simple-footnote-back">↩</a></li></ol>Marginalia (II-VII)2023-12-23T08:08:00+01:002023-12-23T08:08:00+01:00Emil Oppeln-Bronikowskitag:fuse.pl,2023-12-23:/beton/marginalia-ii-vii.html<p>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.</p>
<p>Pod deską tętniło życie, które …</p><p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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ę.</p>
<p>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.</p>
<p>Deska wylądowała na plaży, wyproszona przybojem. Wyschła w słońcu, spróchniała i przestała przejmować się wszystkim.</p>Marginalia (II-VI)2023-12-21T08:00:00+01:002023-12-21T08:00:00+01:00Emil Oppeln-Bronikowskitag:fuse.pl,2023-12-21:/beton/marginalia-ii-vi.html<p>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ć …</p><p>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ść.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>— 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ę.</p>
<p>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.</p>
<p>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”.</p>
<p>Potem były trzy króliki. Cztery króliki. Wiktor ukłonił się, rozległy się ciche brawa. </p>
<p>Zaciągnięto kurtynę i bar wypełnił się znów rozmowami.</p>
<hr>
<p>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ść.</p>
<p>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.</p>
<p>— Zaraz, przebieram się — odpowiedziały drzwi.</p>
<p>Postać zastukała ponownie i dodała: — Pan Viktor, Niesamowity?</p>
<p>— 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ł.</p>
<p>— 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.</p>
<p>— A jak Pana nie wpuszczę?</p>
<p>— 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ę”.</p>
<p>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ę.</p>
<p>— Zapraszam — Niesamowity Viktor odsunął się od drzwi.</p>
<p>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.</p>
<p>— Wiktor — odpowiedział Viktor.</p>
<p>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.</p>
<p>— 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.</p>
<p>— Nie ma żadnych królików. Dokładniej, to nie ma <em>już</em> żadnych królików. Odeszły.</p>
<p>— Odeszły? W sensie pan je najmuje od kogoś i ten ktoś je zabiera po?</p>
<p>— Odeszły. Nie ma ich.</p>
<p>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.</p>
<p>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ł.</p>
<p>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.</p>
<p>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.</p>
<p>Wiktor patrzył z wyrozumiałym uśmiechem.</p>
<p>— 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.</p>
<hr>
<p>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:</p>
<p>„Uchybień nie stwierdzono.”</p>Marginalia (II-V)2023-12-20T04:30:00+01:002023-12-20T04:30:00+01:00Emil Oppeln-Bronikowskitag:fuse.pl,2023-12-20:/beton/marginalia-ii-v.html<p>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.</p>
<p>Wtedy chwycił mnie za ramiona, patrząc mi w …</p><p>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.</p>
<p>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.</p>
<p>On klasnął w dłonie jak dziecko oczekujące prezentu i powtórzył, że będę zbawiony. Zbawiony, zbawiony, mówił z uśmiechem.</p>
<p>„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ć.</p>
<p>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ł.</p>
<p>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ć.</p>Marginalia (II-IV)2023-12-18T10:10:00+01:002023-12-18T15:45:00+01:00Emil Oppeln-Bronikowskitag:fuse.pl,2023-12-18:/beton/marginalia-ii-iv.html<p>(Drogi czytelniku, jeśli jesteś uzbrojony w specjalistyczne urządzenie do czytania e-książek możesz zrobić mi przyjemność i <a href="https://fuse.pl/writing/marginalia.epub">pobrać zbiór opowiadań «Marginalia»</a>, dziękuję!)</p>
<p>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ć …</p><p>(Drogi czytelniku, jeśli jesteś uzbrojony w specjalistyczne urządzenie do czytania e-książek możesz zrobić mi przyjemność i <a href="https://fuse.pl/writing/marginalia.epub">pobrać zbiór opowiadań «Marginalia»</a>, dziękuję!)</p>
<p>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.</p>
<p>— Przepraszam! — powiedziała wreszcie.</p>
<p>— 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.</p>
<p>— 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ć?</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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ć.</p>
<p>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.</p>
<p>— 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.</p>
<p>— 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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>— No bardzo ładne — przyznał dyrektor, przyglądając się pulsującemu gadżetowi. — Ale co to dokładnie robi?</p>
<p>— 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…</p>
<p>— …i co się wtedy dzieje? — dyrektor wciąż nie rozumiał idei.</p>
<p>— 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!</p>
<p>Dyrektor zrobił minę, jakby ktoś opowiedział mu żart, w opinii opowiadającego żart bardzo dobry, z puentą o jego matce.</p>
<p>— Drogi panie — oznajmił sztywno. — Pociągi, <em>per se</em>, 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!</p>
<p>— 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!</p>
<p>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ć!</p>
<p>— 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!</p>
<p>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.</p>
<p>— Gałgany! Patafiany, krwiopijcy i najgorsze — dyrektor wziął oddech — kompletni idioci! Won, won, won, drzwi nie zamykaj nawet za sobą.</p>
<p>Dyrektor opadł na fotel, pogładził głowę i otworzył prawą szufladę. Następnego dnia firma dała ogłoszenie, że szuka nowego portiera.</p>Marginalia (II-III)2023-12-15T08:08:00+01:002023-12-15T08:08:00+01:00Emil Oppeln-Bronikowskitag:fuse.pl,2023-12-15:/beton/marginalia-ii-iii.html<p>— 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 …</p><p>— 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?</p>
<p>Położyła dłonie na stole, czekając na odpowiedź. Wszystko w pokoju było nieruchome i nieme.</p>
<p>— 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.</p>
<p>— …mamo — odpowiedział więzień.</p>Marginalia (II-II)2023-12-13T08:54:00+01:002023-12-13T08:54:00+01:00Emil Oppeln-Bronikowskitag:fuse.pl,2023-12-13:/beton/marginalia-ii-ii.html<p>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 …</p><p>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.</p>
<p>— 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?</p>
<p>Inny przemówił zaraz po nim:</p>
<p>— 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.</p>
<p>Trzeci inny odpowiedział im szybko:</p>
<p>— 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?</p>
<p>— 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?”.</p>
<p>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.</p>
<p>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.</p>
<p>— 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ę?</p>
<p>„Próżność!” zawołał inny. „Upadek!” zawołał drugi inny.</p>
<p>I dodał:</p>
<p>— 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.</p>
<p>— 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.</p>
<p>Inni pochylili głowy w geście rozpaczy.</p>
<p>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. </p>
<p>A inni? Nic o nich nie wiemy, bo byli mądrzy.</p>Marginalia (II-I)2023-12-11T08:18:00+01:002023-12-11T08:18:00+01:00Emil Oppeln-Bronikowskitag:fuse.pl,2023-12-11:/beton/marginalia-ii-i.html<p>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 …</p><p>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. </p>
<p>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.</p>
<p>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.</p>
<p>— Kogut ci pieje o tej godzinie? — zaśmiał się.</p>
<p>Wzruszyłem ramionami. — Tokio? Tak.</p>
<p>— Nie tylko pieje w nocy, ale jeszcze ma imię? Kto jest tu dziwniejszy, ty, że nazywasz ptactwo, czy ptactwo, że jest pokręcone?</p>
<p>— 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.</p>
<p>— Twój kogut ma strefy czasowe, jak to działa?!</p>
<p>— Kto wie, jak działają strefy czasowe, chyba nikt.</p>
<p>Odwróciłem się od płotu i, unosząc rękę na pożegnanie, udałem się do domu.</p>Podcast metodą chałupniczą2023-11-17T16:12:00+01:002023-11-17T16:12:00+01:00Emil Oppeln-Bronikowskitag:fuse.pl,2023-11-17:/beton/podcast-youtube.html<p>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 <code>~/work</code>, 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ć …</p><p>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 <code>~/work</code>, 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. </p>
<p>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ł <span class="caps">RSS</span> 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 <a href="https://fuse.pl/beton/syncthing.html">Syncthing</a>) 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.</p>
<p>Poza tym zmarnowałbym czas do momentu w którym głowa znów mi opadnie na poduszkę.</p>
<p>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 <span class="caps">RSS</span> 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 ukrytej<sup id="sf-podcast-youtube-1-back"><a href="#sf-podcast-youtube-1" class="simple-footnote" title="public lub unlisted">1</a></sup> 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.</p>
<p>Na teraz mamy następujące funkcje:</p>
<ol>
<li>tworzenie kanałów <span class="caps">RSS</span> i Atom (kanał <span class="caps">RSS</span> ma więcej funkcji, bo używam własnościowych notacji iTunes)</li>
<li>jeśli wideo ma wbudowane rozdziały, plik audio będzie posiadał także</li>
<li>meta dane takie jak opisy i miniaturki są prezentowane w kontekście „odcinka”</li>
<li>u mnie działa</li>
</ol>
<p></p><center>
<img src="https://fuse.pl/beton/images/podcast/podcast.png" width="1350" heigh="975" title="Trzy zrzuty ekranu przedstawiające wyżej opisane funkcje w działaniu" alt="Trzy zrzuty ekranu przedstawiające wyżej opisane funkcje w działaniu">
</center><p></p>
<p>Panelu administracyjnego zrobić nie przewiduję, gdyż jest to projekt gośćwdombógwdomware, <em>human scale</em>, nie policzę ci za cukier do herbaty, ale jak zaczniesz się panoszyć to ci prywatnie zwrócę uwagę, a ostatecznie wskażę drzwi.</p>
<p>Zapraszam więc.</p>
<hr>
<p>Dwie rzeczy organizacyjne. <strike>W wyniku cyfrowego procesu gnilnego musiałem wyłączyć tymczasowo njusletter. Usiądę do tego niedługo, obiecuję (sobie)</strike><sup id="sf-podcast-youtube-2-back"><a href="#sf-podcast-youtube-2" class="simple-footnote" title="Naprawione, częściowo!">2</a></sup> . 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 <span class="caps">RSS</span>.</p><ol class="simple-footnotes"><li id="sf-podcast-youtube-1">public lub unlisted <a href="#sf-podcast-youtube-1-back" class="simple-footnote-back">↩</a></li><li id="sf-podcast-youtube-2">Naprawione, częściowo! <a href="#sf-podcast-youtube-2-back" class="simple-footnote-back">↩</a></li></ol>Pracuję, mam na to dowody2023-09-18T19:30:00+02:002023-09-18T22:05:00+02:00Emil Oppeln-Bronikowskitag:fuse.pl,2023-09-18:/beton/mam-na-to-dowody.html<p>Telefony nas śledzą, komputery nas śledzą, ulice śledzą nas oczami <span class="caps">CCTV</span>, pracodawcy mierzą nam puls i liczą poruszenia myszką, sklepy patrzą nam przez ramię <span class="caps">BLE</span>, 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 …</p><p>Telefony nas śledzą, komputery nas śledzą, ulice śledzą nas oczami <span class="caps">CCTV</span>, pracodawcy mierzą nam puls i liczą poruszenia myszką, sklepy patrzą nam przez ramię <span class="caps">BLE</span>, 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.</p>
<p>Skoro jest to nieunikniona rzeczywistość może czas zacząć się śledzić samemu, jak bohater książki <span class="caps">PKD</span>, „<a href="https://en.wikipedia.org/wiki/A_Scanner_Darkly">Przez ciemne zwierciadło</a>”. Podczas gdy normalni ludzie używający normalnych systemów operacyjnych otrzymują inwigilację w prezencie, użytkownicy Linuksa, w duchu <span class="caps">DIY</span>, muszą zbudować sobie swój własny panoptykon klecąc jakąś serię poleceń w Bashu z nadzieją, że im się to nie rozsypie.</p>
<p>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ą <code>x11.tar.gpg</code> 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.</p>
<p>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 <code>xdotool</code> i po tym jak <a href="https://manpages.ubuntu.com/manpages/trusty/man1/xdotool.1.html">zerknąłem w jego olbrzymi manpage</a> widziałem, że się nada.</p>
<p><code>xdotool</code> 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.</p>
<p>Wpisałem <code>xdotool getactivewindow getwindowname</code> w terminalu i otrzymałem poprawną odpowiedź — <code>zsh</code>. Doskonale, możemy zacząć się śledzić samemu. Postanowiłem, że zamiast zapisywania dowodów do pliku tekstowego przez <code>>></code> 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.</p>
<p>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 <code>stdio</code>, nie ma się więc o co martwić.</p>
<div class="highlight"><pre><span></span><code><span class="ch">#!/bin/bash</span>
<span class="k">if</span><span class="w"> </span><span class="o">[</span><span class="w"> </span>!<span class="w"> </span>-f<span class="w"> </span>ispy.db<span class="w"> </span><span class="o">]</span><span class="p">;</span><span class="w"> </span><span class="k">then</span>
<span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">"Database initialization"</span>
<span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">"CREATE TABLE ispy(id INTEGER PRIMARY KEY AUTOINCREMENT, created_at, window_title)"</span><span class="w"> </span><span class="p">|</span><span class="w"> </span>sqlite3<span class="w"> </span>ispy.db
<span class="k">fi</span>
</code></pre></div>
<p>Teraz nie pozostaje nic innego jak kręcić się w nieskończoność i karmić nowopowstałą bazę informacjami. </p>
<div class="highlight"><pre><span></span><code><span class="k">while</span><span class="w"> </span>:
<span class="k">do</span>
<span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">"INSERT INTO ispy(created_at, window_title) VALUES (datetime('now'), '"</span><span class="k">$(</span>xdotool<span class="w"> </span>getactivewindow<span class="w"> </span>getwindowname<span class="k">)</span><span class="s2">"')"</span><span class="w"> </span><span class="p">|</span><span class="w"> </span>sqlite3<span class="w"> </span>ispy.db
<span class="w"> </span><span class="c1"># tak, też widzę sql-injection przy użyciu spreparowanego</span>
<span class="w"> </span><span class="c1"># <title> ;) </span>
<span class="w"> </span>sleep<span class="w"> </span><span class="m">5</span>
<span class="k">done</span>
</code></pre></div>
<p>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ą <code>DISPLAY</code> (lub ustawiając ją w samym skrypcie).</p>
<p>Czyli na przykład <code>DISPLAY=:0 ./ispy.bash</code>.</p>
<p>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.</p>
<p>Użyjemy <code>scrot</code>, aby zrzucić zawartość ekranu, <code>mogrify</code> 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.</p>
<p>Zaczniemy od obsługi przerwania działania skrptu. Nie ma sensu za każdym razem przekodowywać wideo, starczy że będzie to ostatnia operacja.</p>
<div class="highlight"><pre><span></span><code><span class="ch">#!/bin/bash</span>
<span class="nv">DISPLAY</span><span class="o">=</span>:0
<span class="nv">STORAGE_PATH</span><span class="o">=</span><span class="s2">"/tmp"</span>
<span class="nb">trap</span><span class="w"> </span>encode<span class="w"> </span>SIGINT
encode<span class="o">()</span><span class="w"> </span><span class="o">{</span>
<span class="w"> </span>ffmpeg<span class="w"> </span>-r<span class="w"> </span><span class="m">2</span><span class="w"> </span>-pattern_type<span class="w"> </span>glob<span class="w"> </span>-i<span class="w"> </span><span class="s2">"</span><span class="nv">$STORAGE_PATH</span><span class="s2">/*.png"</span><span class="w"> </span><span class="se">\</span>
<span class="w"> </span>-an<span class="w"> </span>-vcodec<span class="w"> </span>libx264<span class="w"> </span>-pix_fmt<span class="w"> </span>yuv420p<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>-profile:v<span class="w"> </span>baseline<span class="w"> </span>-level<span class="w"> </span><span class="m">3</span><span class="w"> </span><span class="se">\</span>
<span class="w"> </span><span class="nv">$STORAGE_PATH</span>/out.mp4
<span class="w"> </span><span class="nb">exit</span><span class="w"> </span><span class="m">0</span>
<span class="o">}</span>
</code></pre></div>
<p>Potem ten sam taniec, pętla, obraz, modyfikacja obrazu, sen.</p>
<div class="highlight"><pre><span></span><code><span class="k">while</span><span class="w"> </span>:
<span class="k">do</span>
<span class="w"> </span><span class="nv">filename</span><span class="o">=</span><span class="sb">`</span>date<span class="w"> </span>+<span class="s2">"%Y%m%d%H%M%S"</span><span class="sb">`</span>
<span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">"Capturing </span><span class="nv">$filename</span><span class="s2">"</span>
<span class="w"> </span><span class="nv">r</span><span class="o">=</span><span class="s2">"text 0,0 \""</span><span class="k">$(</span>xdotool<span class="w"> </span>getactivewindow<span class="w"> </span>getwindowname<span class="k">)</span><span class="s2">"\""</span>
<span class="w"> </span>scrot<span class="w"> </span>-D<span class="w"> </span><span class="nv">$DISPLAY</span><span class="w"> </span><span class="nv">$STORAGE_PATH</span>/<span class="nv">$filename</span>.png
<span class="w"> </span>mogrify<span class="w"> </span>-pointsize<span class="w"> </span><span class="m">40</span><span class="w"> </span><span class="se">\</span>
<span class="w"> </span>-fill<span class="w"> </span>white<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>-undercolor<span class="w"> </span>black<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>-gravity<span class="w"> </span>south<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>-draw<span class="w"> </span><span class="s2">"</span><span class="nv">$r</span><span class="s2">"</span><span class="w"> </span><span class="nv">$STORAGE_PATH</span>/<span class="nv">$filename</span>.png
<span class="w"> </span>sleep<span class="w"> </span><span class="m">5</span>
<span class="k">done</span>
</code></pre></div>
<p>Cudo. I żeby było zupełnie <em>fair</em> 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, <a href="https://fuse.pl/beton/images/mam-na-to-dowody/ispy.mp4">możecie zerknąć bezpośrednio</a>.</p>
<p><center></p>
<video controls width="800">
<source src="https://fuse.pl/beton/images/mam-na-to-dowody/ispy.mp4" type="video/mp4" />
</video>
<p><small>Muzykę jumano <a href="https://csdb.dk/scener/?id=12931">psych858o</a>^Onslaught</small>
</center></p>
<p>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. </p>
<p><small>
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:</p>
<div class="highlight"><pre><span></span><code>set-option -g set-titles on
set-option -g set-titles-string '#W'
</code></pre></div>
<p></small></p>Dzienniki (pod)różne2023-09-05T21:12:00+02:002023-09-06T07:45:00+02:00Emil Oppeln-Bronikowskitag:fuse.pl,2023-09-05:/beton/dzienniki-podrozne.html<p>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 …</p><p>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.</p>
<p>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.</p>
<p>Nie mamy pamięci absolutnej, mamy za to absolutną fantazję.</p>
<p>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.</p>
<h4>Bones bleaching in the fields, A pillgrimage to Kashima, Knapsack Notes, A Journey to Sarashina, The Narrow Road through the Hinterlands</h4>
<p>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.</p>
<pre>
Here I am, not dead
after many nights on the road—
at autumn's end.
</pre>
<p>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, <a href="https://en.wikipedia.org/wiki/Renga">renga</a>, ulubiony gatunek Bashō, wiersz układany przez wiele osób, wers za wersem, lirykę, okruchy <a href="https://en.wikipedia.org/wiki/Zuihitsu">zuihitsu</a>. </p>
<pre>
A bee makes its way out,
from deep in the peony flower—
but with regrets.
</pre>
<p>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 (<a href="https://www.amazon.com/Travel-Writings-Matsuo-Basho-ebook/dp/B0882XMNY2">w moim wydaniu</a>). To jedna z tych książek, którą mogę opisać jako „polecam wszystkim mnom”.</p>
<p><a href="https://www.google.com/maps/d/viewer?mid=1Evwh-v0rvKcjtZTXeGCdBu6EjfY">Mapa podróży opisanej w «Narrow Roads through the Hinterlands»</a></p>
<h4>Full Tilt</h4>
<p>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.</p>
<p>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.</p>
<p>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 <a href="https://fuse.pl/beton/do-nieba.html">złapałem gumę</a> 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.</p>
<blockquote>
<p>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 <em>really</em> 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</p>
</blockquote>
<p>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. </p>
<p>Dziennik ten czyta się lepiej niż większość nowelek przygodowych. Więcej akcji, lepsza proza i jeszcze się wydarzyło.</p>
<h4>Of walking in ice</h4>
<p>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źć.</p>
<p>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.</p>
<p>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. </p>
<p>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.</p>
<p>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. </p>
<p>I kiedy Herzog stał wreszcie na przedmieściach Paryża nie odczułem żadnego <em>katharsis</em> tylko zmęczenie, jak on. Zdecydowanie polecam jako lekturę dla ludzi ceniących sobie udrękę, samotność i chłód.</p>
<p><center>
<img src="https://fuse.pl/beton/images/podrozne/of_walking_in_ice.jpg">
</center></p>
<h4>Busy doing nothing</h4>
<p>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ę.</p>
<p>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.</p>
<p>Kiedy dowiedziałem się, że mały kolektyw artystyczny <a href="https://100r.co/site/home.html">100r</a>, który znałem wcześniej ze środowisk związanych z <a href="https://100r.co/site/uxn.html">tworzeniem alternatywnej ścieżki technologicznej</a> dla przyszłego, może <a href="http://collapseos.org/">niezbyt wygodnego</a>, świata, <a href="https://100r.co/site/busy_doing_nothing.html">wydał książkę o podróży żaglówką z Japonii do Kanady</a>, zakupiłem ją natychmiast.</p>
<p>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.</p>
<p>Takie podróżowanie to maraton, fizyczny i psychologiczny, do którego nie jestem raczej zbudowany.</p>
<p><span class="dquo">“</span>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.</p>
<p><center>
<img src="https://fuse.pl/beton/images/podrozne/pino_by_rekka.jpg">
<small><em>Ilustracja: Rekka, za zgodą autorki</em></small>
</center></p>
<p>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.</p>Syncthing2023-08-14T15:30:00+02:002023-08-14T15:30:00+02:00Emil Oppeln-Bronikowskitag:fuse.pl,2023-08-14:/beton/syncthing.html<p>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: <a href="https://syncthing.net">Syncthing</a>.</p>
<p>Mam problem z pisaniem o …</p><p>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: <a href="https://syncthing.net">Syncthing</a>.</p>
<p>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”.</p>
<p>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.</p>
<p>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 <span class="caps">LAN</span> 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, „<a href="https://www.youtube.com/watch?v=lqbFWLKjlP4">mój jest ten kawałek podłogi</a>”.</p>
<p>Używając Syncthinga możemy sparować między sobą komputery, zarówno w <span class="caps">LAN</span>, jak i te dostępne poza granicami naszej infrastruktury, przy użyciu jednego <span class="caps">UUID</span> 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.</p>
<p>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.</p>
<p>Zamiast opisywać prozą elementów <span class="caps">UI</span>, co zawsze wychodzi słabo, albo kręcić wideo (“don’t forget to like <span class="amp">&</span> subscribe”) opiszę wam jak praktycznie używam Syncthing każdego dnia.</p>
<h3>Nie lubię telefonów</h3>
<p>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.</p>
<p><a href="https://play.google.com/store/apps/details?id=com.github.catfriend1.syncthingandroid&hl=en_US">Syncthing na telefonie</a>. Folder <code>Photos</code> i folder <code>Podcasts</code> 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?</p>
<p>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.</p>
<h3>Raz wystarczy</h3>
<p>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 <span class="caps">TIFF</span> i <span class="caps">BMP</span>, wideo w <span class="caps">MOV</span>, 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.</p>
<p>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 <span class="caps">PNG</span>, 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.</p>
<p>Mój komputer w pracy oraz laptop udostępniają więc innym ludziom (i serwerowi testowemu, ekstremalnie użyteczne. Syncthing nie potrzebuje <span class="caps">UI</span>, można więc namówić admina (albo ukraść jego <code>id_rsa</code>) żeby zainstalował) folder z samymi artefaktami po przetwarzaniu. Oni synchronizują się do serwera (po co mają wiedzieć <span class="caps">UUID</span> mojego prywatnego laptopa?), serwer synchronizuje się do komputera biurowego lub laptopa, a one między sobą.</p>
<p><center>
<img src="https://fuse.pl/beton/images/syncthing/syncthing_praca.png" alt="Schemat opisany w poprzednim paragrafie" title="Tak mi się nudziło, że zrobiłem wykres w Graphviz. Od razu odjęło mi chęć do robienia dalej" width="860" height="241">
</center></p>
<h3>Git dla ubogich</h3>
<p>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 <a href="https://sr.ht/">sr.ht</a>, 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ł.</p>
<p>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 <code>Quake3.exe</code>. A ponieważ była to epoka Subversion spędziłem bardzo przyjemne popołudnie ręcznie wycinając jego bohaterstwo z pliku wyprodukowanego przez <code>svnadmin dump</code>.</p>
<p>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 <code>.git</code>, w nim same śmieci.</p>
<h3>jutup premium</h3>
<p>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.</p>
<p>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.</p>
<p>Na domowym serwerze, w crontabie, siedzi sobie taki oto skrypt.</p>
<div class="highlight"><pre><span></span><code><span class="ch">#!/bin/bash</span>
<span class="nv">p</span><span class="o">=</span><span class="si">${</span><span class="nv">1</span><span class="k">:-</span><span class="nv">download</span><span class="si">}</span>
<span class="nb">cd</span><span class="w"> </span>/media/muczoshito/shitube
<span class="k">if</span><span class="w"> </span><span class="o">[</span><span class="w"> </span><span class="nv">$p</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="s2">"clean"</span><span class="w"> </span><span class="o">]</span><span class="p">;</span><span class="w"> </span><span class="k">then</span>
<span class="w"> </span>rm<span class="w"> </span>*vtt<span class="w"> </span>*jpg<span class="w"> </span>*json<span class="w"> </span>*webp<span class="w"> </span>*mp4<span class="w"> </span>*concat<span class="w"> </span>archive.txt<span class="w"> </span>.syncthing*
<span class="w"> </span><span class="nb">exit</span>
<span class="k">fi</span>
/home/hive/.local/bin/yt-dlp<span class="w"> </span>--cookies<span class="w"> </span>/media/ssd/Syncthing/Sync/cookies.txt<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>--write-info-json<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>--write-thumbnail<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>--write-subs<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>--embed-subs<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>--sub-langs<span class="w"> </span>all<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>--embed-chapters<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>--download-archive<span class="w"> </span>archive.txt<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>--sponsorblock-remove<span class="w"> </span>default<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>-f<span class="w"> </span><span class="s2">"bestvideo[height<=1080][ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best"</span><span class="w"> </span><span class="se">\</span>
<span class="w"> </span>https://www.youtube.com/playlist<span class="se">\?</span>list<span class="se">\=</span>WL
find<span class="w"> </span>!<span class="w"> </span>-name<span class="w"> </span><span class="s1">'.stfolder'</span><span class="w"> </span>!<span class="w"> </span>-name<span class="w"> </span><span class="s1">'archive.txt'</span><span class="w"> </span>-ctime<span class="w"> </span><span class="m">15</span><span class="w"> </span>-delete
</code></pre></div>
<p>On sobie siedzi tam, ja teraz w lesie, ale nadal mogę zobaczyć, co chciałem zobaczyć. Możecie też zauważyć, że plik <code>cookies.txt</code> 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.</p>
<pre>
~ 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
</pre>
<p>Proszę, oto i wschód słońca. Znowu udało się doczekać końca.</p>
<p><center>
<img src="https://fuse.pl/beton/images/syncthing/las.jpg" alt="Biurko w lesie, świeczki, papier" title="Pozdrowienia z lasu. Listownie." width="700" height="525">
</center></p>Do nieba2023-06-18T09:50:00+02:002023-06-18T09:50:00+02:00Emil Oppeln-Bronikowskitag:fuse.pl,2023-06-18:/beton/do-nieba.html<p>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, <a href="https://fuse.pl/beton/donikad.html">jak się wywaliłem</a>. 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ą …</p><p>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, <a href="https://fuse.pl/beton/donikad.html">jak się wywaliłem</a>. 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.</p>
<p>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ń. </p>
<p>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. </p>
<p>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.</p>
<p>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ęć.</p>
<p>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 <a href="https://uncannyjapan.com/">Uncanny Japan</a> 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?</p>
<p>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 <span class="caps">OK</span> baza noclegowa, wydaje się, że to całkiem rozsądne miejsce docelowe.</p>
<p>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 <span class="caps">TIR</span>-ami wyprzedzającymi się na trzeciego na ulicy tak szerokiej, że można by nad nią splunąć. </p>
<p><center>
<img src="https://fuse.pl/beton/images/pieklo/delta.jpg" width="800" height="600" alt="Delta Wisły" title="Delta Wisły">
</center></p>
<p>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.</p>
<p>Wioska, wioseczka, lasek, mosteczek, kulawa ławka, <em>encore</em>, jeszcze raz!</p>
<p>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 «<span class="caps">WELCOME</span> <span class="caps">TO</span> PIEKŁO».</p>
<p><center>
<img src="https://fuse.pl/beton/images/pieklo/welcome_to_pieklo.jpg" width="800" height="600" alt="Witamy w Piekle" title="Welcome to Piekło">
</center></p>
<p>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”.</p>
<p>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 <em>Fin</em> na czarnym podkładzie”?</p>
<p>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ęć.</p>
<p>Nic, idziemy. </p>
<p>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.</p>
<p>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”.</p>
<p>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ć.</p>
<p>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!</p>
<p>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. </p>
<p>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ę.</p>
<p>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ę <span class="caps">PKP</span> ale czy warto ryzykować. Wpisuję <span class="caps">PKP</span> i klikam na wynik drżącymi palcami. Nie jest daleko.</p>
<p>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.</p>
<p>Staję wreszcie przed bramą i dostaję krótkiego ataku paniki. <span class="caps">PKP</span>… 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”.</p>
<p>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.</p>
<p>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 <span class="caps">III</span>, 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.</p>
<p>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ę. </p>
<p>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 „<span class="caps">CZY</span> TĘDY <span class="caps">NA</span> <span class="caps">DWORZEC</span>?!” 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.</p>
<p>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ę.</p>
<p>Głośniki ogłaszają, że mój pociąg opóźni się kwadrans. Widocznie tego dnia los chciał mi dać wszystkie szanse.</p>
<p><center>
<img src="https://fuse.pl/beton/images/pieklo/zegarek.jpg" width="800" height="1067" alt="Duże liczby" title="Duże liczby">
</center></p>
<p>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.</p>
<p><small>Kurekta: Anna Matczak</small></p>Podszepty2023-03-17T18:14:00+01:002023-03-17T18:14:00+01:00Emil Oppeln-Bronikowskitag:fuse.pl,2023-03-17:/beton/podszepty.html<p>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.</p>
<p>W tym obcym miejscu …</p><p>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.</p>
<p>W tym obcym miejscu jestem umówiony na kawę z kobietą. W celach niecnych lub skandalicznie niecnych, zależnie od szczęścia. </p>
<p>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.</p>
<p>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. </p>
<p>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.</p>
<p>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.</p>
<p>Rozmawiamy o literaturze. Dzielę się wrażeniami o książce, którą niedawno skończyłem, znanej jej. Odpowiada mi:</p>
<p>— 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!</p>
<p>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.</p>
<p>— Zamówmy coś, bo jeszcze nas wyrzucą — mówię pół żartem — ja wezmę zwykłą czarną kawę.</p>
<p>— 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: <em>Taste The Feeling™</em></p>
<p>Jej usta były nieruchome.</p>Jak uratować Internet bez wychodzenia z domu2023-01-31T17:17:00+01:002023-01-31T17:17:00+01:00Emil Oppeln-Bronikowskitag:fuse.pl,2023-01-31:/beton/uratuj-internet.html<p>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 …</p><p>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 <a href="https://en.wikipedia.org/wiki/Series_of_tubes">serią rur</a>, a nie trzeba być hydraulikiem żeby wiedzieć, że to zła sytuacja.</p>
<p>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. </p>
<p>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ę”.</p>
<p>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ą.</p>
<p>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ę.</p>
<p>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. </p>
<p>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.</p>
<p><center>
<img src="https://fuse.pl/beton/images/uratuj/idzie.jpg" title="Emil idzie przez las" alt="Emil idzie przez las" width="800" height="450">
</center></p>molly-guard i kontrolowane wyburzania2022-12-31T11:06:00+01:002022-12-31T11:06:00+01:00Emil Oppeln-Bronikowskitag:fuse.pl,2022-12-31:/beton/molly.html<p>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 <code>sudo halt</code>.</p>
<p><code>Connection to production-00 closed by remote …</code></p><p>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 <code>sudo halt</code>.</p>
<p><code>Connection to production-00 closed by remote host</code></p>
<p>Żółć 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.</p>
<p>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ć <code>molly-guard</code> i problem sam się rozwiązuje. Molly-guard nadpisuje standardowe destrukcyjne polecenia typu <code>halt</code> czy <code>reboot</code> 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ń.</p>
<p></p><center>
<img alt="Nieudana autoryzacja z molly-guard" width="730" heigh="422" src="https://fuse.pl/beton/images/molly/chybaryba.webp">
</center><p></p>
<p>Ż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 <span class="caps">USB</span> RPi4!<sup id="sf-molly-1-back"><a href="#sf-molly-1" class="simple-footnote" title="Tak, wiem, że to za małe natężenie dla optymalnego działania, ale nadal działa™">1</a></sup> 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. </p>
<p>Potrzebowałem „można teraz bezpiecznie wyłączyć komputer” dla nowego tysiąclecia.</p>
<p>I tak zawróciłem do <code>molly-guard</code>, 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 <code>/etc/molly-guard/run.d</code>. Dodałem więc <code>35-calmyotits</code> zawierający tylko jedną linię z <code>exit</code> o niezerowej wartości (równoważnik „ten skrypt się nie wykonał”), napisałem <code>sudo halt</code> i zgodnie z instrukcją procedura została przerwana.</p>
<p>Użyłem więc tej metody do „kontrolowanego wyburzenia” obu komputerów. Kiedy RPi4 dostaje <code>halt</code>, <code>molly-guard</code> wysyła <code>halt</code> do RPi3, a następnie wchodzi w fazę oczekiwania na zniknięcie ofiary z sieci. Następnie zamyka się sama.</p>
<p>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. </p>
<div class="highlight"><pre><span></span><code><span class="ch">#!/bin/bash</span>
<span class="nv">timeout</span><span class="o">=</span><span class="m">10</span><span class="w"> </span><span class="c1"># liczba powtórzeń</span>
<span class="nv">result</span><span class="o">=</span><span class="m">0</span><span class="w"> </span><span class="c1"># zainicjalzujemy rezultat PING-nięcia</span>
<span class="nb">echo</span><span class="w"> </span><span class="s2">"Sending halt to 3pi"</span>
ssh<span class="w"> </span>emil@3pi<span class="w"> </span>sudo<span class="w"> </span>halt<span class="w"> </span>><span class="w"> </span>/dev/null
<span class="k">while</span><span class="w"> </span><span class="o">[</span><span class="w"> </span><span class="nv">$result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="w"> </span><span class="o">]</span><span class="p">;</span><span class="w"> </span><span class="k">do</span>
<span class="w"> </span>ping<span class="w"> </span>-c<span class="w"> </span><span class="m">1</span><span class="w"> </span>3pi<span class="w"> </span>><span class="w"> </span>/dev/null
<span class="w"> </span><span class="nv">result</span><span class="o">=</span><span class="nv">$?</span>
<span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">"Going </span><span class="nv">$timeout</span><span class="s2">"</span>
<span class="w"> </span>sleep<span class="w"> </span><span class="m">2</span>
<span class="w"> </span><span class="o">((</span><span class="nv">timeout</span><span class="o">=</span>timeout-1<span class="o">))</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="o">[</span><span class="w"> </span><span class="nv">$timeout</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="w"> </span><span class="o">]</span><span class="p">;</span><span class="w"> </span><span class="k">then</span>
<span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">"Can't confirm that 3pi halted"</span>
<span class="w"> </span><span class="nb">exit</span><span class="w"> </span><span class="m">69</span>
<span class="w"> </span><span class="k">fi</span>
<span class="k">done</span>
<span class="nb">echo</span><span class="w"> </span><span class="s2">"3pi calmed down"</span>
<span class="nb">exit</span><span class="w"> </span><span class="m">0</span>
</code></pre></div>
<p>I już!</p>
<p></p><center>
<img alt="RPi4 wyłącza RPi3" width="730" heigh="422" src="https://fuse.pl/beton/images/molly/molly.webp">
</center><p></p>
<p>Z okazji 2023 życzę Wam dużo mniej bezsensu w życiu.</p><ol class="simple-footnotes"><li id="sf-molly-1">Tak, wiem, że to za małe natężenie dla optymalnego działania, ale nadal działa™ <a href="#sf-molly-1-back" class="simple-footnote-back">↩</a></li></ol>Tak było, jest i będzie2022-11-14T09:45:00+01:002022-11-14T09:45:00+01:00Emil Oppeln-Bronikowskitag:fuse.pl,2022-11-14:/beton/umberto-eco.html<p>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. </p>
<p>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 …</p><p>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. </p>
<p>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.</p>
<p>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 <span class="caps">AC</span> 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?</p>
<p>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łoczy<sup id="sf-umberto-eco-1-back"><a href="#sf-umberto-eco-1" class="simple-footnote" title="czy też „zegarków szpiegowskich”, ale nie że ty jesteś Jamesem na usługach jej Królewskiej Mości, tylko, że on Cię szpieguje">1</a></sup> — 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ą.</p>
<p>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 <span class="caps">STOP</span> 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. </p>
<p>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 <em>equilibrium</em>, by ostatecznie ikony znów straciły kompletnie znaczenie. Czemu ikona z niebieskim i białym prostokątem zapisuje mój dokument „do chmury”?</p>
<p>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”<sup id="sf-umberto-eco-2-back"><a href="#sf-umberto-eco-2" class="simple-footnote" title="Cytuję tu esej, nie zawartość strony">2</a></sup>, jest dowodem na akt stworzenia, bo ewolucja takiej rzeczy nie mogła „poskładać”.</p>
<p>Całkiem przyjemna podróż w przeszłość. </p>
<p>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 katalogi<sup id="sf-umberto-eco-3-back"><a href="#sf-umberto-eco-3" class="simple-footnote" title="Zanim wyszukiwarki potrafiły przeskanować i zinterpretować większość Internetu katalogi pełniły dobrą odskocznie dla niedzielnego internauty">3</a></sup> linkami do stron prywatnych opisanych jako golizna. <span class="caps">SEO</span>, 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.</p>
<p>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. </p>
<p>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ę <span class="caps">URL</span>. Książka wydana w 1997, wydawałoby się, że sztuka stawiania dwukropków i slashy została opanowana w wystarczającym stopniu.</p>
<p><img src="https://fuse.pl/beton/images/eco/noxxx.png" width="900" height="214" alt="Zdjęcie książki ukazujące błędnie wydrukowany adres" title="Zdjęcie książki ukazujące błędnie wydrukowany adres"></p>
<p>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 <span class="caps">PC</span>-tem rozpatrywać w kategoriach sporu pomiędzy katolicyzmem a protestanckim kalwinizmem. Macintosh jest katolicki, spolegliwy, katechetyczny, prowadzi cię za rękę do zbawienia. <span class="caps">PC</span> jest protestancki, bo nie oferuje zbawienia każdemu, a tylko tym, którzy podejmują dobre dzieła, takie jak edytowanie <code>autoexec.bat</code>. Windows jawi się autorowi jako dzieło kontrreformacji.</p>
<p>My, amigowcy, byliśmy bez wątpienia jakimś odłamem buddyzmu. Uwięzieni w samsarze, skazani na wieczną śmierć i odrodzenie.</p>
<p>Ostatni tekst dotyka Internetu w najmniejszym możliwym stopniu, jako puenta. Jest jednak najbardziej, jeśli mogę to tak ująć, współczesny.</p>
<p>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.</p>
<p>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ę?</p>
<p>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 <a href="https://www.thecollector.com/roman-graffiti-painting-pompeii-herculaneum/">naściennych bohomazów</a> 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ł.</p><ol class="simple-footnotes"><li id="sf-umberto-eco-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 <a href="#sf-umberto-eco-1-back" class="simple-footnote-back">↩</a></li><li id="sf-umberto-eco-2">Cytuję tu esej, nie zawartość strony <a href="#sf-umberto-eco-2-back" class="simple-footnote-back">↩</a></li><li id="sf-umberto-eco-3">Zanim wyszukiwarki potrafiły przeskanować i zinterpretować większość Internetu katalogi pełniły dobrą odskocznie dla niedzielnego internauty <a href="#sf-umberto-eco-3-back" class="simple-footnote-back">↩</a></li></ol>