Archiwum | emil@fuse.pl && crypto

1000+

Umarł król, niech żyją książęta. Książęta i lokalni wasale, gentlemani z własnymi armiami, przyszli zdobywcy wypalonych pól i wieśniaków, którym z podartych portek wystają brudne tyłki.

Mówię oczywiście o nadchodzącej śmierci króla, wyłączeniu Google Readera. Kiedy Google ogłosiło datę pogrzebu, internetowi komentatorzy wylali morza hypertekstowego atramentu: dlaczego i czy to dobrze, czemu darmowe produkty będą naszym końcem, paralele między Microsoftem wczesnych lat dziewięćdziesiątych a współczesnym mordercą czytnika, ostatecznie wystawiono scenę i przegoniono przez nią paradę pretendentów do tytułu królewskiego. Były rozczarowania, sukcesy, obietnice, stroje wieczorowe i bikini.

W reportażu z pogrzebu pojawił się też jeszcze jeden wątek. Pytano, czy w ogóle potrzebujemy takich koślawych agregatorów treści. Dlaczego nie iść na Twittera, dodać do swojej listy ludzi znanych i szanowanych, otrzymywać od nich linki i aktualizacje o bułkach z masłem? Dorzućmy do tego aplikację na tablet, która generuje „magazyn” na podstawie naszego konta w społecznościówce i już możemy konsumować treści tak, jak się powinno w 2013: obrazek, lead-in i spierdalać.

Prawie się z nimi zgadzam, ale w ogóle to jednak nie. Zacznijmy od małej anegdoty z mojego życia. Kiedy nie mogę już oglądać biura albo zawaliłem kolejny termin i wolę się schować przed światem do czasu naprostowania wyrządzonych krzywd, zaszywam się w domowym biurze Piotrka, gdzie siedzę przysypany Amigami i próbuję pracować. Przynajmniej raz dziennie z drugiej strony biurka pada „Kurwa, co za głupoty piszą na tym [wstaw popularny portal z wiadomościami]!”. Pytam wtedy, co zmusza go do czytania portali (bo zaczynam podejrzewać, że to jakiś pies Pawłowa siedzi i wczytuje mu te strony, czekając aż się mój tymczasowy współlokator oślini) i czy nie może po prostu raz dziennie zerknąć na BBC, a potem już olać?

Zwykle pada odpowiedź, że nie, bo na BBC nie ma nic o wydarzeniach w Polsce. I za każdym razem muszę mu przypominać, że się myli. Myli się w kluczowej sprawie: na BBC nie ma informacji o Polsce dzień w dzień, ponieważ dzień w dzień w kraju nie dzieje się nic ekstremalnie ważnego czy szczególnego. W ogóle na świecie dzieje się bardzo mało ciekawych i wartych uwagi rzeczy.

Tak więc zgadzam się ze stwierdzeniem, że może nie potrzebujemy czytników zdolnych do śledzenia tysiąca blogów rzygających dwudziestoma wpisami dziennie. Nie uważam jednak, że należy je wymienić na linki od celebrytów zamienione w magazyn TL;DR. Co natomiast należy, to oznajmić wam, że nie musicie wiedzieć o każdym starciu polityków, o każdej iteracji telefonu komórkowego, o każdej dramie rozgrywanej się w każdej niszy.

Wasza uwaga i wasz czas jest waszą walutą w Internecie. Nie chodzicie do knajpy, żeby kelner napierdział wam w twarz za dychę, czemu więc subskrybujecie blog, który jest jelitem cienkim dla oświadczeń prasowych?

Nie byłem smutny, kiedy ogłosili, że król zejdzie. Nie dlatego, że jestem przeciwny czytnikom. Jestem w tej całej grze bezpaństwowcem od wielu, wielu lat. Czytniki irytowały mnie zawsze tak, jak irytuje picie ze szlauchu. Interwał pomiędzy „Przeczytałem wszystko” a „o, są nowe” jest zdecydowanie za krótki. Kiedy postanowiłem złożyć paszport obywatela Google Readera, postawiłem sobie za cel stworzenie środowiska, w którym czytałbym dużo fajnych rzeczy, ale bez ciśnienia i dla siebie.

Zacząłem od przygotowania listy serwisów wartych mojej uwagi. Metoda eliminacji była prosta: patrzę na URL i pytam się „Kiedy i co ciekawego ostatnio tam przeczytałem?”. Jeżeli przez kilka sekund nie potrafiłem sobie odpowiedzieć na to pytanie, serwis trafiał do śmieci. Po selekcji zacząłem rozmyślać o czytniku. Jak wspominałem wcześniej, mam właściwie dwa oczekiwania co do takiego programu:

  • Nie musi być „na bieżąco” z nowinkami i kusić mnie,
  • Musi się integrować z moim trybem życia.

Po krótkiej debacie „napisać czy poszukać” znalazłem wybitnie znakomity program rss2email, który, jak sama nazwa wskazuje, wysyła nowinki e-mailem. Biorę swoją skrzynkę bardzo serio, dlatego nie pozwolę jej zagracać głupotami, co znów w teorii podkręci jakość dostarczanych treści!

Ustawiłem wszystko na domowym serwerze i kazałem Cronowi wysyłać mi komplet raz dziennie, o piątej rano. Ostatecznie zrezygnowałem z automatyzacji (może dziś nie jestem w ogóle zainteresowany światem, nawet jego najlepszymi częściami?) i logując się na serwer, stukam po prostu r2e run.

E-maile przychodzą, a ja je czytam, najczęściej pijąc pierwszą albo trzecią kawę 1 i kiedy skończę to… nie ma już nic więcej. Mogę spokojnie zająć się swoimi sprawami. Czasem nawet myślę sobie „ciekawe, co będzie jutro!” i jestem zadowolony, że mogę się dowiedzieć jutro. To bardzo ważne, umieć odkładać przyjemności na później 2

Chwileczkę, oszukuję. Części wiadomości nie czytam od razu. Wkładam je sobie do kieszonki i konsumuję w weekendy. Te dłuższe, ważniejsze, te nad którymi warto pomyśleć.

E-mail, Pocket i weekend

rss

Nie piszę tego, żeby chwalić się swoim hipsterskim stosem do RSS-ów, chcę wam powiedzieć, że śmierć Google Readera jest nie tylko okazją do ożywienia tej niszy branży, jest to niebywała okazja żeby skonfrontować swoje nawyki ze swoimi potrzebami. Ile razy przytłoczony komunikatem 1000+ zadeklarowałeś bankructwo, przyznając „Mark all as read”, skazując tym samym te kilka wartych uwagi perełek na śmierć z tonami błota? Może to, z czego byliśmy tak dumni - fakt, że utykamy na godziny na Wikipedii, klikając bez sensu, że czytamy z wypiekami wątek na trzysta siedemnaście komentarzy w którym osoby, których nie znamy, kłócą się o rzeczy, które nas tak na serio niezbyt interesują, nie jest czymś wartym pochwały?

Informacyjny bufet „all-you-can-eat” ugina się pod setkami paragrafów treści, wszystkie oblepione tłuszczem reklam i wypalcowane przez edytorów szukających jeszcze bardziej kłamliwych nazw dla potraw. Akurat zmieniają zastawy. Macie dobrą okazję rozważyć dietę.

  1. pierwsza kawa w domu, trzecia to pierwsza w biurze
  2. Stanford karmi słodyczami.

Krótki wstęp do osobistej kryptografii

Tu lepszy wstęp

Internet wydoroślał. Nie ma już w nim miejsca na zaufanie i nadzieję, że nikt nie czai się za ścianą z zamiarem dziabnięcia nas. Czasem tym kimś jest morderca nieświadomy swojej ofiary, skrypt, który szuka dziur, automat.

Na szczęście możemy się uzbroić.

Możemy użyć szyfrowania asymetrycznego! Ha, sama nazwa wystarczy, żeby nastoletniemu odpalaczowi skryptów zmiękły kolana. Niestety, jest to broń obosieczna, pistolet z dwoma lufami, granat z doczepioną gumką-recepturką; dobre narzędzie kryptograficzne jest po prostu skomplikowane. Wymaga nie tylko zrozumienia (choćby pobieżnego) kilku idei związanych z kryptografią, wymaga też odpowiedniej higieny: gdzie i jak przetrzymujemy swoje informacje, których programów używamy do szyfrowania informacji, kiedy, komu i będącemu gdzie ufamy.

Symetrycznie nie jest ślicznie

Może jednak nie warto się tyle kłopotać? Prawie każdy program do archiwizacji danych (ZIP, RAR, 7Zip, etc.) ma możliwość założenia hasła na utworzony plik. Wydawałoby się, że jest to wystarczająca ochrona dla informacji. I jest to prawda, o ile w archiwum czyhają jakieś krępujące materiały pornograficzne, wypożyczone z największej wypożyczalni na świecie pliki muzyczne czy kolekcja limeryków. Rzeczy, które – gdyby wyciekły – zażenowałyby znajomych. Może załatwiły wydanie jakiegoś tomiku wierszy. No wiecie: nic, czego potrzebujecie, ale też nic, co zniszczy Wam życie.

Hasło jest drugim co do słabości ogniwem w łańcuchu bezpieczeństwa. Pierwszym jesteś Ty, wymyślający hasło. Jedno wynika z drugiego. Przytoczę anegdotkę: pisałem kiedyś oprogramowanie dla pewnej firmy, która zażyczyła sobie poziomów dostępu dla swoich pracowników. W miarę standardowa robota: X może Y, Z nie może B. Kiedyś, podczas aplikowania zmian w bazie, moją uwagę przykuł pewien fakt – napisałem odpowiednie zapytanie, które zgrupowało mi skróty haseł: wszyscy pracownicy mieli takie same. Co oznaczało, że wszyscy mieli to samo hasło, będące numerem telefonu do biura. 1

Wyobraźmy sobie jednak sytuację w której autor archiwum poświęcił chwilkę na wymyślenie w miarę „ciężkiego”, unikalnego hasła. Teraz pozostaje nam przetransportowanie tak utworzonego pliku do celu. Dajemy go więc znajomemu na przenośnej pamięci USB lub wysyłamy e-mailem. Gotowe! A, chwileczkę, co z hasłem? Zadzwonić i powiedzieć przez telefon? Może wyślę drugim e-mailem hasło, będzie łatwiej?

Znów: załóżmy, że zrobiłeś najlepsze co mogłeś i wyszeptałeś odbiorcy hasło wprost do ucha. Jaką masz pewność, że nie zostanie zapisane na „przylepnej karteczce”? Praktycznie zerową, kontrola nad dostępem do hasła (czyli, de facto, zawartości pliku) została przekazana drugiej osobie.

„Dwie osoby są w stanie dochować tajemnicy o ile jedna z nich jest martwa.”

Teraz – naciągając naszą sytuację do ram fantastyki – przyjmijmy, że jesteście akurat dwiema najbardziej odpowiedzialnymi osobami na świecie, hasło nigdy nie zostało zapisane i siedzi tylko w Waszych głowach. Pozostaje nadal sprawa dostępu do pliku: plik może zostać wykradziony. Nie mówimy tu o nocnym ataku zakonu ninja, którego członkowie wpełzną po suficie i zwisając z elastycznych lin ukradną twardy dysk. Mówimy o kimś, kto wyśle go sobie e-mailem z Twojego komputera gdy będziesz w toalecie.

Teraz między nim a dostępem do Twoich danych stoi tylko hasło.

Jak widzicie proste metody ukrywania informacji stają się skomplikowane gdy tylko zaczniemy brać bezpieczeństwo na poważnie. Dodatkowo wszystkie procedury zabezpieczające wykorzystują elementy, które prawie zawsze padają jako pierwsze.

Podsumujmy więc problemy z tradycyjnym modelem „przesyłam Ci archiwum z hasłem”:

  • pojedyncze hasło umożliwia uzyskanie dostępu do archiwum,
  • każdy może skopiować archiwum i próbować wymusić do niego dostęp,
  • archiwum można podmienić, a odbiorca nie będzie tego świadomy.

Przejdźmy do meritum tego tekstu – jak poprawić bezpieczeństwo naszych danych i jak zmniejszyć szanse na wpadnięcie ich w niepowołane ręce. Zanim jednak rozpoczniemy zabawę z pakietem GPG musimy pomówić trochę o teorii.

Czy hasło to tylko znaki?

Zanim przejdziemy do kluczy prywatnych i publicznych porozmawiajmy przez chwilę o hasłach. Co jest takiego złego w prostych hasłach, jak się je zwykle zapisuje i na jakie problemy z tym możemy się natknąć w systemach informatycznych?

Każdego dnia logujemy się do wielu systemów. Od poczty, przez intranetowy system w pracy, kończąc na Facebooku. Większość z tych czynności sprowadza się do podania identyfikatora (zwykle adresu e-mail lub nazwy użytkownika) i hasła. Te wartości są sprawdzane w bazie danych i jeżeli para się zgadza, system zaczyna udostępniać dane.

Dobrą (jedyną!) praktyką jest składowanie tzw. skrótu hasła, matematycznie wyliczonej wartości przedstawionej najczęściej w zapisie szesnastkowym o stałej „długości”. Powodem używania tej metody jest ograniczenie dostępu do samego hasła zarówno dla administratorów, jak i w przypadku włamania do systemu.

Co to znaczy, że skrót jest wyliczany? Zróbmy własny, okrutnie zły i niepraktyczny skrót; jego koszmarne założenia pozwolą mi zademonstrować jeszcze jeden problem, ale po kolei.

Jeżeli A = 1, Ą = 2, B = 3, C =4, to Z = 35, jasne? Nie rozróżniamy wielkości liter. Teraz zapiszmy wyraz:

EMIL = 
  E[7] + 
  M[17] + 
  I[12] + 
  L[15] = 
  51 = 
  0x33

Czyli nasz „algorytm” to dodawanie wartości pozycji liter w alfabecie. Teraz, gdy ktoś będzie się próbował zalogować hasłem EMIL, mogę policzyć skrót hasła i sprawdzić, czy w bazie mam zapisane 0x33. „Nikt” nie wie, czym jest ten ciąg i hasło jest „bezpieczne”.

Czy potraficie zgadnąć jaki jest z nim problem?

GOAAAAAL = 
  G[10] + 
  O[20] + 
  A[1] + 
  A[1] + 
  A[1] + 
  A[1] + 
  A[1] + 
  A[1] + 
  L[15] = 
  51 = 
  0x33

Jak to? Co to znaczy, że EMIL = GOAAAAAAL? Tak, nazywamy to konfliktem w skrócie, czyli takim wypadku, gdy więcej niż jeden ciąg generuje tą samą wartość skrótu. Ktoś, kto widzi 0x33 i zna metodę liczenia może przygotować hasło, które nie jest hasłem użytkownika a mimo to można go używać do logowania.

Płynie z tego pewna nauka: jeżeli myślisz, że możesz napisać sobie własne „skracanie” to mylisz się (o ile nie jesteś jednym z dwustu-trzystu matematyków, którzy zajmują się tym zawodowo). Jeśli jesteś jednym z tych matematyków to bardzo mi przyjemnie, że czytasz ten tekst!

Co jeszcze? Kolejną dobrą praktyką jest „solenie” skrótu. Oznacza to, że do hasła dodawane jest jeszcze coś, tajemnica pozwalająca na zmianę standardowego skrótu. Czemu się to robi? Hakerzy to sprytne bestie, wzięli słownik i przepuścili go przez popularne metody skracania uzyskując wieeeelką tablelę ze skrótami. Teraz, w przypadku nieposolonych skrótów, wykradziona baza danych z użytkownikami o hasłach takich jak „kot”, „pies” i„herbata” jest czytelna niemal automatycznie. Wystarczy porównać tabelkę już przeliczonych skrótów z tymi w bazie, hop i już mamy! Stąd tylko krok do wypróbowania haseł w innych serwisach.

Kiedy posolimy hasło „pies” naszą T4J3MN1C0M, skrót wyliczony z ciągu „piesT4J3MN1C0M” nie ma nic wspólnego ze skrótem ciągu „pies” i unikamy możliwości łatwego odkrycia hasła.

Klucz prywatny, klucz publiczny

Widzieliście pewnie jakiś film o piratach. W filmach o piratach chodzi głównie o to, kto pierwszy odkopie skrzynię ze skarbami. I czy ma do niej klucz, a jeśli nie klucz, czy skrzynia wytrzyma uderzenia łopatą. Taka skrzynia reprezentuje szyfrowanie symetryczne. Jest skrzynia (archiwum) i klucz (hasło) w którego posiadanie może wejść każdy: na drodze rozboju, dziedziczenia czy też fantastycznego zbiegu okoliczności. Jest też ostra część łopaty, która służy za metaforyczny dostęp nieautoryzowany.

Właśnie zdałem sobie sprawę, że strzeliłem sobie w stopę piracką metaforą. Z armaty. Szyfrowanie symetryczne nie ma łatwej analogii w rzeczywistym świecie, a wynika to właśnie z natury fizyczności; każdy dostatecznie skomplikowany zamek ma liczbę n łopat, która go wreszcie rozwali.

Niech będzie, że nasi piraci poza korsarskim rzemiosłem parają się też czarną magią. I skrzynia jest magiczna. (Jęczenie, które teraz słyszycie, to analogia rozciągana jak guma w starych gaciach).

Ojej, z przykrością zawiadamiam, że piraci nie żyją. Wypadek przy pracy. Nie wiedzieli, że armata jest załadowana. Zginęli w słusznej sprawie. Dzięki ich śmierci mogą uniknąć dalszego męczenia tej anegdoty!

Kryptografia asymetryczna sprowadza się do posiadania pary kluczy; treści zaszyfrowane jednym z nich można odszyfrować tylko drugim i odwrotnie. Jeden z tych kluczy nazywamy prywatnym i w jego posiadaniu jesteśmy wyłącznie my (a każda z osób, z którymi przychodzi nam się wymieniać zaszyfrowanym informacjami, jest w posiadaniu własnego); drugi nazywamy publicznym i udostępniamy reszcie świata. Jeżeli ktoś chciałby przekazać mi plik dostępny tylko dla mnie, musiałby pobrać mój klucz publiczny i dodać do swojego „pęku kluczy”. Podczas szyfrowania archiwum wskazałby mój klucz publiczny, i tylko ja byłbym w stanie odszyfrować zabezpieczone archiwum (bo odszyfrować je można tylko moim kluczem prywatnym).

Klucz prywatny i publiczny tworzą nierozłączoną parę, która umożliwia osobom będącym w posiadaniu naszego klucza publicznego wygenerować zaszyfrowane informacje dostępne tylko dla nas. Nie musimy się umawiać „na hasło”, nie musimy się nawet widzieć czy też uprzednio informować o fakcie. Każdy, kto ma mój publiczny klucz może przysłać mi swoje tajemnice z pewną dozą pewności, że nikt postronny nie będzie mógł z łatwością dostać się „do środka”. Klucz prywatny jest (a przynajmniej: powinien być) dodatkowo zabezpieczony hasłem, tak więc odkodowanie informacji od nadawcy wymaga nie tylko posiadania specjalnego pliku w postaci klucza prywatnego, ale także znania hasła.

Jest to pewien szczególny wypadek „two factor authenitcation”, modelu autoryzacji który polega na „tym co wiesz” (tu: haśle do klucza prywatnego) i „tym, co masz” (tu: pliku zawierającego klucz prywatny). W podobny sposób działają tokeny, które niektórzy z Was otrzymali z banków. Autoryzacja odbywa się na podstawie skrótu RSA generowanego algorytmicznie („to, co masz”) i hasła („to, co wiesz”).

Starczy może suchej teorii. Może to niewielka dawka, ale kto próbował zjeść łyżkę cynamonu ten wie, że nawet niewielkie dawki czasem ciężko przełknąć.

W części praktycznej zainstalujemy pakiet GNU Privacy Guard, który jest otwartym odpowiednikiem PGP. GPG jest oczywiście dostępny na większość systemów operacyjnych, tych płynących w głównym nurcie jak i tych hobbistycznych. Potęga otwartego kodu.

W tekście posługuję się klientem terminalowym. Jest on wspólny dla wszystkich wersji, a i dużo łatwiej uczyć się wydając świadomie polecenia, a nie klikając guziory w interfejsie graficznym. Gdybym miał władzę nad światem to zabroniłbym w ogóle guzików. OK, może grafikom bym pozwolił, ale reszta z Was może zapomnieć. Na wasze szczęście moje dyktatorskie zapędy stępiłem grając w The Sims 2, gdzie prowadziłem postać powoli starzejącego się faceta, który pracował jako programista i czasami mdlał ze zmęczenia w kałuży własnego moczu. Lubię odmianę.

Rozkład zajęć:

  1. Wygenerowanie własnej pary kluczy
  2. Import klucza publicznego dostępnego na stronie
  3. Import klucza z serwera
  4. Eksport własnego klucza publicznego
  5. Podpisanie pliku i weryfikacja sygnatury
  6. Szyfrowanie pliku i jego odszyfrowanie
  7. Szyfrowanie symetryczne

Wygenerowanie własnej pary kluczy

— gpg --gen-key 2

gpg (GnuPG) 2.0.19; Copyright (C) 2012 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Proszę wybrać rodzaj klucza:
  (1) RSA i RSA (domyślne)
  (2) DSA i Elgamala
  (3) DSA (tylko do podpisywania)
  (4) RSA (tylko do podpisywania)

Klucze RSA będą miały od 1024 do 4096 bitów długości.
Jakiej długości klucz wygenerować? (2048)

Żądana długość klucza to 2048 bitów.

Okres ważności klucza.

        0 = klucz nie ma określonego terminu ważności
       = termin ważności klucza upływa za n dni
     w = termin ważności klucza upływa za n tygodni
     m = termin ważności klucza upływa za n miesięcy
     y = termin ważności klucza upływa za n lat
Okres ważności klucza? (0) 2y

Klucz traci ważność sob, 13 cze 2015, 16:35:36 CEST

Czy wszystko się zgadza (t/N)? t

Odpalenie gpg z parametrem —gen-key rozpoczyna procedurę generowania klucza. W pierwszym kroku wybieramy domyślną pozycję, tj. parę kluczy RSA, dzięki czemu możemy szyfrować i podpisywać informacje.

Długość klucza jest wprost proporcjonalna do jego “siły”. Możemy przez to rozumieć jego odporność na najbardziej prymitywne (ale często zaskakująco skuteczne) metody łamania haseł. Długość klucza wpływa też na czas, który będzie potrzebny na zaszyfrowanie/odszyfrowanie wiadomości. Dla większości zastosowań można spokojnie wybrać maksymalną długość.

Okres ważności klucza to czas po którym klucz stanie się bezużyteczny. Teoretycznie, gdyż informację tę możemy zmienić w dowolnej chwili edytując klucz. Pole to służy bardziej jako element higieny.

GnuPG musi utworzyć identyfikator użytkownika do identyfikacji klucza.

Imię i nazwisko: Emil Oppeln-Bronikowski
Adres poczty elektronicznej: emil@adrespoczty.pl
Komentarz: Testowa parka
Twój identyfikator użytkownika będzie wyglądał tak:
    "Emil Oppeln-Bronikowski (Testowa parka) "
Zmienić (I)mię/nazwisko, (K)omentarz, adres (E)mail, przejść (D)alej,
czy (W)yjść z programu? d

Musisz podać długie, skomplikowane hasło aby ochronić swój klucz prywatny.

[...]

Musimy wygenerować dużo losowych bajtów. Dobrym pomysłem aby pomóc komputerowi
podczas generowania kluczy jest wykonywanie w tym czasie innych
działań (pisanie na klawiaturze, poruszanie myszką, odwołanie się do dysków);
dzięki temu generator liczb losowych ma możliwość zebrania odpowiedniej ilości
entropii.

gpg: sprawdzanie bazy zaufania
gpg: potrzeba 3 marginalnych, 1 pełnych, model zaufania PGP
gpg: poziom: 0 poprawnych:   1 podpisanych:   0 zaufanie: 0-,0q,0n,0m,0f,1u
gpg: następne sprawdzanie bazy odbędzie się 2015-06-13

pub   2048R/EFB571A3 2013-06-13 [wygasa: 2015-06-13]
      Odcisk klucza = 6D42 0F8B E9EA 0100 A5A8  5F82 F0F6 7FBF EFB5 71A3
uid                  Emil Oppeln-Bronikowski (Testowa parka) 
sub   2048R/693FF3FC 2013-06-13 [wygasa: 2015-06-13]

W tym kroku nie ma niczego magicznego, podajemy dane idetyfikacyjne i czekamy, aż generator liczb losowych zdobędzie się na odwagę wygenerowania dla nasz kluczy. Kiedy wreszcie gpg odda kontrolę konsoli możemy zacząć zabawę w szyfrowanie.

Import klucza publicznego dostępnego na stronie

Zacznijmy od zaimportowania mojego klucza, dostępnego na serwerze HTTP.

 wget http://bronikowski.com/emil.gpg
--2013-06-13 16:41:40--  http://bronikowski.com/emil.gpg
Translacja bronikowski.com (bronikowski.com)... 46.248.176.108
Łączenie się z bronikowski.com (bronikowski.com)|46.248.176.108|:80... połączono.

Żądanie HTTP wysłano, oczekiwanie na odpowiedź... 200 OK

Długość: 2170 (2,1K) [text/plain]
Zapis do: `emil.gpg'

[...]

2013-06-13 16:41:40 (52,5 MB/s) - zapisano `emil.gpg' [2170/2170]
 gpg --import < emil.gpg
gpg: klucz 96769184: klucz publiczny ,,Emil Oppeln-Bronikowski '' wczytano do zbioru
gpg: Ogółem przetworzonych kluczy: 1
gpg:          dołączono do zbioru: 1
Pobrany plik zawiera mój klucz publiczny. Parametr --import odpowiada za dopięcie mojego klucza do pęku twoich kluczy.

 gpg --list-keys

pub   2048R/EFB571A3 2013-06-13 [wygasa: 2015-06-13]
uid                  Emil Oppeln-Bronikowski (Testowa parka) 
sub   2048R/693FF3FC 2013-06-13 [wygasa: 2015-06-13]
pub   1024D/96769184 2011-05-10
uid                  Emil Oppeln-Bronikowski 
uid                  Emil Oppeln-Bronikowski 
sub   2048g/F8FE0300 2011-05-10

Import klucza z serwera

Dzięki —list-keys możesz zobaczyć detale swojego pęku kluczy i dowiedzieć się, że mój odpowiada za dwa adresy e-mail. No dobrze, masz mój klucz bo ci powiedziałem gdzie dokładnie jest. Co w przypadku ludzi, których znasz tylko z nazwiska lub znasz ich adres e-mail? Na szczęście klucze można wysłać do specjalnego serwera zajmującego się ich dystrybucją. Klucz umieszczony w katalogu można odnaleźć bez większego problemu przy pomocy parametrów —keyserver i —search—keys

— gpg --keyserver pgp.mit.edu --search-keys marks@ubuntu.com

gpg: poszukiwanie ,,marks@ubuntu.com'' z serwera hkp pgp.mit.edu

(1)     Martin M Marks (sobankiithsa@UBUNTU.CASTER) 
       Mark Shuttleworth 
       Mark Shuttleworth 
       Mark Shuttleworth 
       Mark Shuttleworth 
       Mark Shuttleworth 
         1024 bit DSA key D54F0847, utworzono: 2004-02-18
Keys 1-2 of 2 for "marks@ubuntu.com".  Wprowadź numer(y), N)astępny lub Q)uit > 2

gpg: zapytanie o klucz D54F0847 z serwera hkp pgp.mit.edu
gpg: klucz D54F0847: klucz publiczny ,,Mark Shuttleworth '' wczytano do zbioru
gpg: potrzeba 3 marginalnych, 1 pełnych, model zaufania PGP
gpg: poziom: 0 poprawnych:   1 podpisanych:   0 zaufanie: 0-,0q,0n,0m,0f,1u
gpg: następne sprawdzanie bazy odbędzie się 2015-06-13
gpg: Ogółem przetworzonych kluczy: 1
gpg:          dołączono do zbioru: 1

— gpg --list-keys

pub   2048R/EFB571A3 2013-06-13 [wygasa: 2015-06-13]
uid                  Emil Oppeln-Bronikowski (Testowa parka) 
sub   2048R/693FF3FC 2013-06-13 [wygasa: 2015-06-13]
pub   1024D/96769184 2011-05-10
uid                  Emil Oppeln-Bronikowski 
uid                  Emil Oppeln-Bronikowski 
sub   2048g/F8FE0300 2011-05-10
pub   1024D/D54F0847 2004-02-18
uid                  Mark Shuttleworth 
uid                  Mark Shuttleworth 
uid                  Mark Shuttleworth 
uid                  Mark Shuttleworth 
uid                  Mark Shuttleworth 
uid                  Mark Shuttleworth 
sub   1024g/9DE743C9 2004-02-18

I już, Mark Shuttleworth został odnaleziony a jego publiczny klucz umieszczony w naszym pęku. Zanim przejdziemy dalej: aby wyeksportować klucz (w przykładzie poniżej: mój publiczny) możemy użyć parametry —export i idetyfikatora klucza. Opcja -armor powoduje, że wyeksportowany plik ma formę pliku ASCII, a nie jak standardowo, binarną.

— gpg --export -armor emil@adrespoczty.pl >/tmp/emil-at-adrespoczty.gpg

I już. Plik /tmp/emil-at-adrespoczty.gpg mogę wysłać komuś e-mailem, umieścić na serwerze lub wydrukować. 3

Podpisanie pliku i weryfikacja sygnatury

Termin „podpis elektroniczny” jest wam z pewnością znany, prawda? Zwykle myślimy o kwalifikowanym podpisie elektronicznym, który jest równoznaczy z podpisem i pozwala nam na załatwianie spraw drogą elektroniczną.

Podpisanie dokumentu to procedura w której użytkownik używając swojego klucza prywatnego (który znajduje się na karcie przy podpisie kwalifikowanym) tworzy unikalny skrót z dokumentu co pozwala nam, odbiorcom, potwierdzić:

  • że podpisujący znał hasło do klucza prywatnego użytkownika (czyli „był nim” lub „bił go aż zdradził”),
  • że dokument od tego czasu nie uległ modyfikacji (modyfikacja psuje skrót),
  • datę podpisu.

Podpiszmy więc Code of Conduct.

— xhtml2pdf http://www.ubuntu.com/about/about-ubuntu/conduct

Converting www.ubuntu.com-about-about-ubuntu-conduct to /home/emil/www.ubuntu.com-about-about-ubuntu-conduct.pdf...

Zrobimy sobie z tej strony dokument PDF, a następnie, używając —sign, podpiszemy go.

— gpg --sign www.ubuntu.com-about-about-ubuntu-conduct.pdf

Musisz podać hasło aby odbezpieczyć klucz prywatny użytkownika:

,,Emil Oppeln-Bronikowski (Testowa parka) ''
długość 2048 bitów, typ RSA, numer EFB571A3, stworzony 2013-06-13

— l www.ubuntu.com-about-about-ubuntu-conduct.pdf*

-rw-r--r-- 1 emil users 19596 06-13 17:10 www.ubuntu.com-about-about-ubuntu-conduct.pdf
-rw-r--r-- 1 emil users 11244 06-13 17:10 www.ubuntu.com-about-about-ubuntu-conduct.pdf.gpg

Do wygenerowanego dokumentu dołączony został podpis. Każdy, kto otrzyma tę parę plików może zweryfikować ich autora i czas powstania.

— gpg --verify www.ubuntu.com-about-about-ubuntu-conduct.pdf.gpg

gpg: Podpisano w czw, 13 cze 2013, 17:10:42 CEST kluczem RSA o numerze EFB571A3
gpg: Poprawny podpis złożony przez ,,Emil Oppeln-Bronikowski (Testowa parka) ''

Szyfrowanie pliku i jego odszyfrowanie

Czas wreszcie się zakonspirować. Mam dokument, który chcę przekazać temu innemu sobie (z prawdziwym kluczem). Podaję więc parametr -e (szyfruj) i -r, po którym podaję listę odbiorców, a na końcu sam plik, który ma zostać zaszyfrowany.

— gpg -e -r emil@fuse.pl ubuntu.com.pdf

gpg: F8FE0300: Nie ma żadnej pewności, czy ten klucz należy do tej osoby
pub  2048g/F8FE0300 2011-05-10 Emil Oppeln-Bronikowski

Odcisk klucza głównego: 820F D398 6D48 4BF3 3F3F  23CF 4276 4910 9676 9184
      Odcisk podklucza: 74BA 5DEF A968 0D74 0C4D  3197 76A2 538A F8FE 0300

NIE MA pewności, czy klucz należy do osoby wymienionej w identyfikatorze.
Jeśli nie masz co do tego żadnych wątpliwości i *naprawdę* wiesz co robisz,
możesz odpowiedzieć ,,tak'' na następne pytanie.

Użyć tego klucza pomimo to? (t/N)

Przyznam, że sam byłem zaskoczony tą wiadomością. Oczywiście zaraz strzeliłem się w czoło i przypomniałem sobie o tym, o czym nigdy nie chcę pamiętać: o poświadczaniu posiadania klucza. Widzicie, każdy może stworzyć sobie dowolny klucz i użyć w nim danych jakich mu się podoba. Nic nie stoi na przeszkodzie żebym wygenerował sobie klucz z fałszywymi informacjami i namówił ludzi do zaimportowania takiego klucza do ich systemów.

Jeżeli ktoś zaimportuje mój klucz, który mówi, że jestem billg@microsoft.com to w komunikacji z taką osobą mogę nie tylko udawać Billa, mogę używać tego klucza jako podpisu pod plikami.

Aby prawidłowo poświadczyć autentyczność pary klucz/osoba należałoby umówić się z drugą osobą na piwo, mieć przy sobie wydrukowany odcisk swojego klucza publicznego, wymienić się swoimi wydrukami, potwierdzić tożsamość i po stwierdzeniu poprawności, powrocie do domu i kacu wyedytować zaimportowany klucz i zwiększyć (lub zmiejszyć jeśli współpiwoszowi źle z oczu patrzyło) zaufanie do jego klucza, po czym ostatecznie podpisać jego klucz publiczny swoim kluczem prywatnym.

To chyba najgorsza część tej całej zabawy. Jeżeli na serio chcemy pewność korespondencji nie możemy po prostu zaufać elektronicznym drogom komunikacji. Zdaję sobie sprawę, że chodzenie z wydrukiem heksów i zmuszanie przyjaciół do składania na nich podpisów stawia nas pomiędzy zwolennikami teorii o tym, że Żydzi wysadzili WTC, a ludźmi którzy odbierają radio AM dzięki plombom. Kryptografia jest bardzo łatwa póki nie jest ciężka.

— gpg --edit-key emil@fuse.pl

gpg> trust

pub  1024D/96769184  utworzono: 2011-05-10  wygasa: nigdy       użycie: SC  
                    zaufanie: marginalne    poprawność: nieznany

sub  2048g/F8FE0300  utworzono: 2011-05-10  wygasa: nigdy       użycie: E   
[    nieznane   ] (1). Emil Oppeln-Bronikowski 
[    nieznane   ] (2)  Emil Oppeln-Bronikowski

Zastanów się jak bardzo ufasz temu użytkownikowi w kwestii sprawdzania
tożsamości innych użytkowników (czy sprawdzi on odciski kluczy pobrane
z różnych źródeł, dokumenty potwierdzające tożsamość, itd.).
 1 = nie wiem albo nie powiem
 2 = NIE ufam
 3 = mam ograniczone zaufanie
 4 = mam pełne zaufanie
 5 = ufam absolutnie
 m = powrót do głównego menu

Twoja decyzja? 3

pub  1024D/96769184  utworzono: 2011-05-10  wygasa: nigdy       użycie: SC  
                    zaufanie: marginalne    poprawność: nieznany
sub  2048g/F8FE0300  utworzono: 2011-05-10  wygasa: nigdy       użycie: E   
[    nieznane   ] (1). Emil Oppeln-Bronikowski 
[    nieznane   ] (2)  Emil Oppeln-Bronikowski 
gpg> sign

Czy na pewno podpisać wszystkie identyfikatory użytkownika? (t/N) t
pub  1024D/96769184  utworzono: 2011-05-10  wygasa: nigdy       użycie: SC  
                    zaufanie: marginalne    poprawność: nieznany

Odcisk klucza głównego: 820F D398 6D48 4BF3 3F3F  23CF 4276 4910 9676 9184
    Emil Oppeln-Bronikowski 
    Emil Oppeln-Bronikowski

Czy jesteś naprawdę pewien, że chcesz podpisać ten klucz
swoim kluczem ,,Emil Oppeln-Bronikowski (Testowa parka) '' (EFB571A3)

Czy na pewno podpisać? (t/N) t

Po tym jak wyedytowałem klucz i zadeklarowałem do niego pewne zaufanie, a ostatecznie podpisałem go swoim, wcześniej występujący komunikat nie powinien się już pojawiać.

— touch tajnydokument
— gpg -r emil@fuse.pl -e tajnydokument
— l tajnydokument*

-rw-r--r-- 1 emil users   0 06-13 17:20 tajnydokument
-rw-r--r-- 1 emil users 603 06-13 17:20 tajnydokument.gpg

Szyfrowanie symetryczne

Jeżeli po przeczytaniu tego całego tekstu poczułeś nienawiść do ludzi, którzy próbują skomplikować ci życie — nie rozpaczaj — GPG/PGP potrafi szyfrować też pliki „na hasło”, wystarczy, że użyjeszcz parametru -c i podasz unikalne hasło, które dowolny inny użytkownik, bez względu czy jest w posiadaniu twojego klucza, czy też nie może odszyfrować używając hasła.

— gpg -c test.pdf

Koniec

Tekst ten przeleżał kwartał na dysku i właściwie miał już nigdy nie trafić do edytora, ale ostatnie doniesienia o tym, że amerykańskie służby szpiegowskie szpiegują wystraszyły niemało ludzi, którzy używają wszędzie tego samego hasła i pomyślałem, że to czas żeby poodcinać trochę kuponów od nowej fali paranoi.

Mówiąc już zupełnie serio. Jeżeli używacie komputerów tak jak ja to są duże szanse, że macie na dyskach wiele ważnych dokumentów. Dokumentów, które może wkładacie do Dropboksa? Albo trzymacie na pulpicie? Wystarczy, że wygenerujecie dla siebie tę parę kluczy i zaczniecie przepuszczać te pliki przez gpg -e -r . Bams. Nie musicie się z nikim wymieniać kluczami prywatnymi, nie musicie ustawiać swoich klientów pocztowych, po prostu od czasu do czasu zaszyfrujcie „sami na siebie” ten dump bazy danych.

Dodatkowo

Piotr Szotkowski, który robił mi kurektę, poleca także następujące teksty:

  1. Co nie powinno się zdarzyć. Działo się to dawno temu kiedy jeszcze nie wiedziałem o czymś, co nazywamy „soleniem haseł”.
  2. Wytłuszczam komendy i klawisze
  3. wydrukować? Tak, o tym trochę później

Dobre intencje

Nie ma dla mnie nic bardziej niepokojącego niż Internet unoszący dłonie w geście zwycięstwa. Naturą Internetu jest to, że „wygrana” nie musi być wygraną obiektywną i mierzalną, uczciwym zwycięstwem nad jasno określonym przeciwnikiem według zasad. Tłum nie jest sumą głów. Tłum jest sumą odbytów i pięści.

Jeszcze niedawno takie zjawisko żyło w popkulturze dzięki wieśniakom dokonującym szturmu na zamek Doktora Frankensteina. Żyło też jako piętno publicznych linczów. Internet ukrył sznur i zamiast pochodni ma latarkę z LED. Internet przyczepił sobie też gwiazdę szeryfa, wystawił licencję na zabijanie, a za Fedorę zatknął przepustkę prasową.

Wydarzenia w Bostonie wstrząsnęły mną w sposób, jakiego nie byłem w stanie przewidzieć. Pomiędzy moją sympatią do miasta i podziwem dla maratońskiego wysiłku, pomiędzy zdjęciami z ludźmi, którzy rzucają się do pomocy i mną, wracającym na lekkim podpiciu do domu, wszystko nabrało dla mnie hiper-realności, której nie było w stanie przegonić kolejne piwo wypite już w pozycji leżącej. Spałem mało, o piątej wyszedłem do biura by przykleić się ekranu i czytać.

Czym więcej czytałem, tym bardziej rosła we mnie nienawiść. Na moich oczach powtarzał się cykl szaleństwa: garbage-in, garbage-out. Niesprawdzone, fantastyczne teorie wyprodukowane przez internetowych Batmanów uzbrojonych w kompletny brak empatii i MS Paint trafiały do szerszej konsumpcji, a po trawieniu zamieniały się w gówno, w którym taplali się spece od spiskowych teorii. Tempo produkcji oskarżycielskich obrazków rosło wraz z uczuciem podniecenia wśród klawiaturowych detektywów. Kulminacyjnym punktem był pościg bostońskiej policji za podejrzanymi. Stwierdzono deficyt rąk wśród tłumu poklepującego się po plecach, aż wreszcie ogłoszono ex cathedra, że oto jesteśmy światkami ostatecznego triumfu posiadaczy telefonów komórkowych z aparatami i stałego dostępu do sieci nad mediami tradycyjnymi. Jeden z użytkowników reddita z dumą rozdawał linka każdemu, kto chciał słuchać. Odgadł on słusznie, że zamachowcem będzie dwudziestoparolatek. Nie, że będzie ich dwóch i że 26 i 19 lat ledwie mieści się w jego przepowiedni. „Remember the hits, forget the misses”.

Pośród tego pościgu o dowody jeszcze mętniejsze, jeszcze lepiej korelujące z wyznawanym przez wskazującego smakiem rasizmu zdjęcia „potencjalnych podejrzanych”, hipotez o rządzie, który wysadził obywateli żeby ukryć to lub tamto, przepchnąć taką a nie inną ustawę, nikt nie wziął nawet oddechu by przystanąć i zastanowić się nad skutkami takich działań.

Internet stał się repozytorium głupoty, z której garściami czerpać może każdy, kto ma akurat ochotę na usztywnienie poglądów, jakie już wyznaje. Na tragediach budowane są kariery, które wspierają się o mantrę „ja tylko zadaję pytania!”.

I nie piszę tego żeby „bronić” mediów tradycyjnych. One też przykładają się do kociokwiku, legitymizując czasem te bajdurzenia. Piszę o tym dlatego, że czuję obrzydzenie do ludzi, którzy widzą się jako bohaterów, ponieważ mają konto w popularnym serwisie i potrafią narysować czerwoną linię na zdjęciu. Nie jesteście dziennikarzami śledczymi, nie jesteście Batmanami, nie jesteście bystrymi obserwatorami. Macie dostęp do Internetu.


git branch five-stages-of-fuckup

Popełniłem błąd w kodzie. Strasznie głupi, amatorski, „PHP w dwa tygodnie” błąd. Taki, którego się nie popełnia. Pominąłem jedną z warstw autoryzacji aplikacji i „wyciekłem” dane.

Zaprzeczenie

Nie ma szans, żeby był błąd. Dopisywałem wprawdzie w piątek poprawkę niedaleko middleware, ale przecież ona nie mogła wpłynąć na działanie warstwę niżej. Dzwonię do zgłaszającego błąd. Weryfikuję zgłoszenie. Użytkownik, który widzi niepoprawne informacje został dodany bez nadania roli. Ha ha. Nie ma błędu. Wysyłam głośnego e-maila, dwa razy używam wytłuszczenia. Moje na wierzchu, hurra.

Godzinę później otrzymuję paczkę e-maili od pracowników, którzy błąd znaleźli. Jest. Akurat w tym samym miejscu. Popełniłem błąd.

Gniew

Kurwa! Kurwa jebana mać. Ja pierdolę. To dlatego, że nigdy nie mam czasu. I w ogóle wszystko o kant dupy potłuc. Przecież to głupie. Pierdolę, nie robię.

Targowanie się

Może jednak nic się nie stało? O, praktycznie tylko jeden widok cieknie, a reszta i tak będzie rzucała wyjątkiem podczas filtrowania. Wezmę logi i sprawdzę.

Jeden grep, trzeci. -v lokalne_adresy. Wygląda normalnie. Może się jednak nic nie stało, prawda? No i ktoś musiałby świadomie wpisać cały URL. Nie ma szans, nie ma szans.

Depresja

Tyle lat to robię i nadal sadzę takie kwiatki. Może ja tylko świetnie gram światłego nerda ku uciesze internetowej gawiedzi? Nic dziwnego, że nic nie osiągnąłem i jestem zupełnie nikim, tak spieprzyć. W czym ja w ogóle jestem dobry? Stare meble nieźle rozwalam na kawałki. Może powinienem się zająć czymś prostszym tak żeby nie nieść zagrożenia?

Pogodzenie się

Jeszcze czekam.


中国银

Obudziłem się na podłodze w biurze. Dzień tak rozpoczęty nie może być dobry, prawda? Zerknąłem w pocztę firmową, potem w prywatną. W prywatnej natknąłem się na e-mail, który teoretycznie powinien był zostać zjedzony przez spam-maszynę. Zaśmiałem się do siebie i przekleiłem propozycję na socjalweb, żeby inni mogli się pośmiać ze mną. Oto treść pierwszego e-maila:

(It’s very urgent, Please transfer this email to your CEO or appropriate person, thanks)

Dear CEO,
We are the department of asian domain registration service in China. Here I have something to confirm with you. We formally received an application on January 18, 2013 that a company claimed ”VTCC Intl Company” were applying to register”bronikowski”as their Net Brand and some “bronikowski” domain names through us.

Now we are handling this registration, and after our initial checking, we found the name were similar to your company’s, so we need to check with you whether your company has authorized that company to register these names. If you authorized this, we would finish the registration at once. If you did not authorize, please let us know within 5 workdays, so that we could handle this issue better. After the deadline we will unconditionally finish the registration for ”VTCC Intl Company”.

Looking forward to your prompt reply.

Popatrzyłem w swoją listę zadań na dziś. Powinienem pracować. Z drugiej strony istnieje zagrożenie, że stracę swoją sieciową markę w Chinach, a pomocny pracownik firmy patrzy w przód na moją natychmiastową odpowiedź.

Odpisałem więc, że to przerażające. Dodałem, że po otrzymaniu dokumentów natychmiast poinformuję Radę Starszyzny, która to Rada zarządza ogólnoświatową marką bronikowski. Zanim wysłałem list, przełączyłem szybko From: z adresu prywatnego (w domenie bronikowski.com) na adres firmowo-pracowy (w domenie fuse.pl).

Otrzymałem następującą odpowiedź:

At present, we haven’t passed their application, we need your opinion.If your company consider these names of importance to your company’s business or interest, we suggest that your company register these names first so as to avoid confusion or speculation.If you don’t think their application will affect
your company,then we will finish registering for VTCC Intl Company as per our duty. we will not bear any responsibility in future because we had informed you.

Kindly inform us your company’s decision as soon as possible in order to handle this issue better.

Muszę przyznać, że doceniłem zagrywkę. „Róbcie jak chcecie, ale jeżeli wiecie, co robicie, to zajmiecie się tematem, prawda?”. Postanowiłem dopytać, czym jest ten Net Brand. Domeny? Marki? Proszę powiedzieć, nie mogę iść do Starszyzny z pustymi rękami.

Odpisano mi niemal natychmiast:

They wants to register “fuse” net brand and following domain names:

fuse.my
fuse.ae
fuse.com.my
fuse.sg

Ojej, ale jak to „fuse”? Przecież pierwszy e-mail dotyczył marki „bronikowski”. Wytłuściłem moje wątpliwości, zaznaczając, że początkowo korespondencja dotyczyła innej marki i pytając, czy ma to jakiś związek z faktem, że piszę z innego adresu e-mail? Mój chiński rozmówca nawet nie mrugnął okiem i odpisał:

Yes,plus the “bronikowski” net brand and following domain names:

bronikowski.asia
bronikowski.cn
bronikowski.co.in
bronikowski.com.cn
bronikowski.com.hk
bronikowski.com.tw
bronikowski.hk
bronikowski.in
bronikowski.net.cn
bronikowski.org.cn
bronikowski.tw

Pokiwałem głową i zachwyciłem się kompleksową obsługą. Potwierdziłem, że mam już klucz do skarbca i poprosiłem o wycenę ww. domen. Dopytałem też, czy przypadkiem podstępni piraci marek internetowych nie zaczaili się na AntyWeb. Dmucham na zimne.

Nie uwierzycie w moje szczęście: AntyWeb też był do przejęcia. No, w takim razie nie pozostało mi nic innego, jak uratować siebie i polski Internet! Tylko nie mam specjalnie pieniędzy na przelewy. Przeprosiłem i dodałem, że jeżeli przyjmą srebro, które mój pradziad ukradł żydowskim 1 rodzinom, to z pewnością się jakoś dogadamy.

Do tej pory nie otrzymałem odpowiedzi z adresem, gdzie mam przesłać monety. Wygląda na to, że moja przyszłość na rynku chińskiego blogerstwa została przekreślona.

  1. nie, ale historia równie wiarygodna jak firmy polujące na bronikowski

2013

Życie odmierzane jest coraz krótszymi odcinkami czasu. Kiedy porzuciliśmy zbieractwo i polowanie na rzecz rolnictwa i hodowli zwierząt, nasz czas przecinały pory roku. Kiedy sadzić, kiedy zbierać. Na krańcach zmian pór roku rozmaite religie umieściły swoje obrządki; jeśli nie przebłagamy bogów, którzy wciągają słońce na maszt nieba, to zima może się nigdy nie skończyć. Wtedy nie wiedzieliśmy jeszcze o tym, że nieba nie da się przekonać, przebłagać i przestraszyć. Że kręci się jednostajnie, z uporem, że po zimie przychodzi wiosna bez całopalnych ofiar.

Mijały lata, nauczyliśmy się oswajać zimno, postawiliśmy trwałe budynki, przez okna których nie wciskał się wiatr. Sztuczne światło zastąpiło oczekiwanie na równonoc, ciepło pieców rozproszyło mordercze mrozy zimy. Byliśmy miejskimi zwierzętami, nasz cykl pomiędzy życiem a śmiercią zamykał się teraz w miesiącu. Pomiędzy wypłatą a wypłatą.

Zbudowaliśmy jeszcze lepszy świat. Świat nagradzający tych, którzy oddali się mu umysłem i ciałem. Odmierzaliśmy pięć dni i dawaliśmy nura w hedonizm. Weekenders.

Uzbroiliśmy się w telefony. Decyzje zapadają w godzinę. Faksujemy umowy, przemierzamy kraje. Potem godzina telewizji przed snem.

Systemy informatyczne odpowiadają pięć razy szybciej niż trwa mrugnięcie okiem, 400 milisekund.

Za następne 4,40646031 × 10^16^ mrugnięć.


Chciałbym powiadomić

Czy powinno się naśladować „realny świat” podczas projektowania aplikacji? Ofiary programów obitych „skórą”, których nawigacja jest „rozsypana” po wyłożonej panelami podłodze, które dotykają idealnie płaskiego ekranu celem „przekręcenia potencjometru na 11”, zawołają głośno, że nie, nie wolno. Potem dostaną coś na uspokojenie i będą mogły wrócić na terapię.

Poprawną odpowiedzią na to pytanie jest: „To zależy.”

Podczas udzielania tak głębokiej odpowiedzi najlepiej jest pocierać brodę i patrzeć wzrokiem widzącym sto lat do przodu. Nadaje to odpowiedniej powagi stwierdzeniu, które jest odpowiednikiem „nie wiem” dla tchórzy.

Do rzeczy: potrzebuję czasem stuknąć użytkownika w ramię i powiedzieć mu coś na ucho. Zostawić mu liścik, przesłać całusa. No, wysłać powiadomienie. W projektowaniu systemu powiadomień nie ma niczego skomplikowanego, prawda? Treść, do kogo i czy już była widziana. Proste. Banał. Zrobiłem.

Czasem przytrafi się sytuacja, kiedy napisany przeze mnie system oszaleje i nie potrafi sobie już sam pomóc. Kiedyś wyświetlałem błąd w nadziei, że zanim ja skoczę na ratunek, użytkownik wyciągnie wniosek z komunikatu i spróbuje iść dalej bez mojej asysty. Moje marzenia zostały przecięte serią e-maili o tym, że „jak klikam, to wyskakują bzdury”. Teraz zawracam nieszczęśnika na stronę główną, wysyłam sobie e-mail z trackbackiem i stosem, a użytkownika uspokajam przez powiadomienie, że już wiem, żeby napił się kawy i że w ogóle jest w dobrych rękach.

Nie minęło nawet kilka dni, kiedy podczas jednej z poprawek udało mi się doprowadzić do sytuacji, w której kod obsługujący wyjątki miał wyjątek. To oczywiście zbudowało fantastyczną kolejkę powiadomień zawierających informację o tym, że „nic się nie stało”.

Część użytkowników czekało sto kliknięć (lub po 30 sekund na automatyczne wygaszenie się informacji razy sto), żeby mogli się pozbyć żółtej ramki mówiącej, że nic się nie stało. Słabo. I teraz dochodzimy do tezy o „projektowaniu jakbyśmy byli w pubie”.

Gdyby podczas naszej wizyty w toalecie znajomy pytał się o ciebie innego znajomego kilka razy, to czy po powrocie przekazanie tej wiadomości wyglądałoby tak:

„Hej, był tu jakiś łoś, z pięć razy się o ciebie pytał”

czy

„Hej, był tu jakiś łoś”
„Hej, był tu jakiś łoś”
„Hej, był tu jakiś łoś”
„Hej, był tu jakiś łoś”
„Hej, był tu jakiś łoś”

Pierwszą modyfikacją kodu było grupowanie zdarzeń.

Kiedy napisałem nowy moduł komunikacji, wymyśliłem sobie, że można informować o wysłanych wiadomościach. Wcześniejsza modyfikacja okazała się trafić na wyboiste skały mojego braku wyobraźni i kompetencji. Przenieśmy się do naszego hipotetycznego pubu. Tym razem, walcząc z fobią społeczną, jesteśmy przedstawiani grupie osób.

„Poznajcie się: to Pan X, Pan X′ i Pan X″”
W mojej wersji byłoby to:

„Poznajcie się: to Pan X”
„Poznajcie się: to Pan X′”
„Poznajcie się: to Pan X″”

Żeby zrobić to dobrze, nie wystarczy po prostu sprawdzać, czy treść komunikatu, który chcemy zapisać, nie jest identyczna z ostatnią. Nie w sytuacji gdy mamy zmienną. Dodałem do kodu obsługę tagów dla zdarzeń i teraz, grupując, widzę serię E_HELLO i jako treść część zmienną — nazwiska. Mogę już przedstawić się jednym tchem.

Byłem zadowolony. Dopisałem sobie malutkie narzędzie, którego mogę używać do powiadomienia użytkowników o różnych rzeczach: „Za kwadrans konserwacja, baza będzie niedostępna”, „Proszę zamykać stare wydarzenia, bo mi się indeks urwie”, etc.

Moje pierwsze użycie było związane z przenosinami serwera. Ostrzegłem, że od 18. do dnia następnego system jest martwy i już. Pisałem to w piątek, prawdopodobnie po 17. Część ludzi pracuje do 16.

Zgadliście już? Tak, w poniedziałek rano otrzymali informację o tym, że dziś po 18. nie ma systemu do jutra. Byli słusznie oburzeni, że im się w poniedziałek i wtorek takie rzeczy robi.

Jeżeli informacja ma jakąś logiczną datę przydatności do spożycia, to powinno się ją po cichu schować po tej dacie. Ludzi po powrocie z urlopu nie interesuje brak dostępności sieci spowodowany faktem, że operator ISP się opił i wpadł w kable.

Z tym nie pójdziemy już do hipotetycznego pubu; sytuacja wymknęła się spod kontroli. Jesteśmy na hipotetycznym pogrzebie. Twoim własnym. Wypadek samochodowy. Ktoś informuje zebranych:

„Dwa tygodnie temu też wsiadł pijany”
„Hej, był tu jakiś łoś”
„Hej, był tu jakiś łoś”


Skutki bycia ekstremalnie zajętym

To był bardzo męczący rok. Z wielką radością złożę jego truchło na stos i rzucę zapałkę. Siedzę teraz przy komputerze i próbuję ogarnąć ostatnie tematy zanim ludzie rozejdą się do domu, a ja będę mógł w spokoju przycupnąć sobie z drinkiem, wyobrażam sobie pierwszych pijanych wujków i kolejki po karpia w których utknęliście.

Mam kilka marzeń. Jednym z nich jest napisanie bardzo dobrej gry tekstowej. Rysuję sobie czasem schematy takiego silnika do tekstówek 1 i marzę, że znajdę czas. Dziś moje zmęczenie i zniechęcenie osiągnęło apogeum, uciekłem więc w bezmyślne „googlanie” różnych problemów, których rozwiązania nie szukam.

Jak sprawdzić rozmiary terminala bez używania curses? Aha, ciekawe czy działa. Działa. To dopiszę jeszcze coś. Ha ha.

I tak z minuty na minutę zrobiłem to, co zrobiłem. Najlepiej zmarnowane 30 minut tego tygodnia.

ssh hi@tiny.magt.pl [hasło: hello]

screenshot_ssh_blog

PS. pluje w UTF8, ale bez kontroli, mój developerski serwer dostał ciężkiego zapalenie locales i jestem w trybie idontknowwhatimdoing.jgp

  1. wiem, że są. Chcę tego użyć jako zaczepki do nauki nowego języka programowania, więc NIH jest zupełnie usprawiedliwiony!

Znikające e-maile

Przepraszam wszystkich, którzy pisali do mnie e-maile w przeciągu ostatnich dwóch tygodni. Przyszło ich więcej niż zwykle, a ja — będąc obecnie cyfrowym nomadem — wpadłem na pomysł złapania wszystkich moich kont pocztowych w brzuchu Thunderbirda. Zawsze mogłem znaleźć czas na odpisywanie w autobusie czy pociągu. Niestety, ustaliłem właśnie, że znaczna część tych e-maili wyparowała, prawdopodobnie w wyniku konfliktu konfiguracji, którą składuję w Dropboksie.

Przeczołgałem się przez IMAP-owy śmietnik i wyciągnąłem to, co mi się nawinęło. Jeżeli nie otrzymasz odpowiedzi do jutrzejszego popołudnia to znaczy, że Ameba się nażarła. Proszę więc o powtórkę i natarcie mi uszu.

PS. Tak rzadko używam blożka do komunikowania się ze światem, że czuję niemal dreszcz emocji pisząc taki krótki tekst, który nie ma wartości dla postronnego obserwatora i nie został przepuszczony przez baczność Szanowną Panią Redaktor /baczność.


Non_omnis_moriar.doc.gpg

Obchodziliśmy niedawno święto ciętej dyni i gumowych masek. To dobry czas, żeby porozmawiać o umieraniu. Nie śmierci kulturowej, nie śmierci w wymiarze metafizycznym, nawet nie o samym fakcie gnicia. Porozmawiajmy o tym, co się dzieje, kiedy wyciągniesz nogi, a jesteś jednym z nas, szczęśliwców - kowalem własnego losu, samozatrudnionym ekspertem, wolną lancą, szybkim jak strzała blogerem.

W oczach świata składasz się ze starszego i młodszego bitu, z cyfrowych pierdnięć w światłowód, jesteś trochę domeną wpisaną w system nazw, odrobinę - profilową fotką. Dla większości z was ja nie jestem niczym więcej, wy nie jesteście niczym więcej dla mnie.

Zanim przyjdą futuryści i podłączą nasze martwe głowy do Internetu, w którym przyjdzie nam śmigać po wsze czasy, musimy jakoś zmierzyć się z faktem, że nigdy wcześniej nasze zejście nie dezintegrowało tylu naszych utworów. Jako wychowanek komputerów powierzyłem wszystkie myśli, wspomnienia, całą pracę zawodową, swoje hobby kawałkom metalu, w których kręcą się magnetyczne krążki. Nie ma listów do kobiet, które kochałem. Są e-maile, które znikną wraz z pierwszym nieopłaconym rachunkiem mojego operatora. Żaden bawidamek w przyszłości nie przeczyta antologii moich listów, by poznać surowe piękno kontaktów międzyludzkich na przełomie tysiąclecia.

Byliśmy tacy dumni, że Internet pozwolił nam wszystkim stać się autorami dzieł, tymczasem za trzydzieści lat okaże się, że przejedzie nas walec głównego nurtu kultury. Wypromowaliśmy sposób przekazu, który wymaga nieustannego karmienia monetami, a nawet nakarmiony może się obalić chromą nogą tej czy innej firmy.

Porzućmy jednak ten wątek. Wątek długiego życia, podczas którego możecie się przygotować, stać się kimś na tyle ważnym, żeby te okruszki życia nie zostały sprzątnięte. Możecie zginąć spektakularnie i niespodziewanie: zadławicie się papierosem, zostaniecie postrzeleni na konferencji, komuś z balkonu spadnie działo argonowe i rozłupie wasz łeb. Co wtedy? Czy któryś z przyjaciół może opłacić Waszą domenę? Napisać ostatnią notkę? Zgrać kopię zdjęć? Co z tymi wszystkimi książkami, filmami i muzyką, które kupiliście? Te DRM-owe na podpałkę, a te bez? Jedyny przypadek, w którym można podzielić między wszystkich tak, że każdy otrzyma komplet.

Jaką politykę obsługi sztywnych klientów ma Twój operator? Czy można wypłakać u Googla nowelkę, którą pisałeś przed śmiercią, schowaną „na sieci” w brzuszku Docsów?

No i rzecz równie ważna. Może najważniejsza, bo to od niej rozpocząłem dumanie nad kwestią śmiertelności w czasach e-wszystkiego. Jest duża szansa, że jesteś jednym z tych kowbojów Internetu. Opiekujesz się sygnaturami elektronicznego bydła twoich klientów. Gdybym teraz skoczył przez okno, pociągnąłbym z sobą kilka firm. Nie dlatego, że spadłbym na ich parking ubrany w kamizelkę z trotylem; w moich rękach witalne są części ich infrastruktury. Przykładowo: dziennie produkuje się około 4GiB różnych backupów, które trafiają do mojego prywatnego kuferka. Wszystkie są zaszyfrowane przy użyciu klucza GPG. Nawet gdyby ktoś wyrwał dysk z mojego laptopa, to wszystkie kopie bezpieczeństwa nie zdadzą się na wiele.

Ten tekst wyszedł troszkę zbyt kpiarsko jak na temat, który chciałem poruszyć. Zawsze jest ten pierwszy raz, kiedy położysz produkcyjną bazę, potkniesz się o kabel, prawie wszystko jest pierwszy raz, a nauczyć się unikać podobnych błędów macie szansę dopiero, gdy popełnicie je po raz trzeci lub siedemnasty. Umiera się tylko raz, dlatego trzeba się do tego przygotować z wyprzedzeniem. Zróbcie sobie, moi admini, moi programiści, moi technologiczni spece od wszystkiego, rachunek sumienia. Usuńcie się z równania i zobaczcie, co znika razem z wami.


Grają dramat na ekranach

Jadłem kanapkę z jajkiem, kiedy otworzyły się drzwi od wagonu. Wsiadł on: ubrany w dwie kurtki, z brudnymi, przyklejonymi do czaszki włosami. W ręku trzymał zielony, wiklinowy koszyk. Farba zdawała się być nałożona zbyt entuzjastycznie, być może był to taki model koszyka z wikliny, jaki zamawia się u jakiegoś artysty. Sprawiał wrażenie zaniedbanego i zwariowanego. Okrążył wagon, w którym miałem zamiar spędzić samotne dwie godziny, poświęcając się kontemplacji słowa pisanego. Przycupnął wreszcie na rozkładanych krzesłach używanych na zatłoczonych trasach. Zerwał się dopiero na widok konduktora. Aha, typ bez biletu? Może chciał przemknąć tylko między Kaliską a Widzewem?

Mój współpasażer wyciągnął z wewnętrznej kieszeni jednej z dwóch kurtek portfel i zapłacił za bilet. Kiedy zostaliśmy sami, poprawił się znów na fotelu i wyciągnął z wiklinowego koszyka lewy but. Typ sportowy. Położył go na podłodze i przymierzył do swojej nogi. Ściągnął but, a ja automatycznie odwróciłem wzrok. Cóż może się kryć w bucie dwukurtkowego posiadacza wiklinowych koszyków?

Śnieżnobiała skarpetka. But niestety nie pasował i został ponownie wtrącony do koszykowego więzienia. Uwaga współpasażera przeniosła się na telewizor. Taki, na którym odtwarzane są trzy reklamy. Bez przerwy. Próbował bez powodzenia zmienić kanał.

Nasz wagon był wagonem użytkowym. Miał wieszaki na rowery, podesty dla użytkowników wózków inwalidzkich i toaletę. Toaletę, której drzwi zamykają się i otwierają na dotknięcie świecącego guzika. Towarzysz podróży obszedł ją z zainteresowaniem, nacisnął guzik i zniknął w środku.

Ucieszyłem się. Próbowałem czytać, ale wszystkie jego zachowania mój umysł rejestrował jako „warte uwagi” – jeżeli nie ze względu na noszenie zapasowych lewych butów w plecionym koszyku, to dlatego, że mam lęk przed byciem dziabniętym zardzewiałym nożem.

Po pewnym czasie wyszedł i zadowolony zajął miejsce naprzeciw kabiny. Nie musiał czekać długo, podróż trwała już jakiś czas, pierwszy gość w „jego toalecie” pojawił się w kilka minut po zamachu stanu, którego dokonał na nikim, a dzięki któremu stał się samozwańczym tyranem WC na trasie Łódź-Warszawa.

Goście ustawiali się karnie w kolejce. Otrzymywali instrukcje co do funkcjonowania toalety, jak ją otworzyć, zamknąć, znów otworzyć. Kilka osób podjęło grę. Zadało dodatkowe pytania i otrzymało odpowiedzi. Profesjonalnie. Podejmujesz grę albo spuszczasz oczy i czekasz na koniec instruktażu.

Zbliżaliśmy się powoli do końca naszej wspólnej przygody. Ja, próbujący czytać człowiek z notatnikiem i on, imperator doglądający swoich włości z fotela przy toalecie. Jaki Gal Anonim takie pierwsze królestwo.

Drzwi ubikacji otworzyły się i wyszedł z nich starszy, dystyngowany pan. Ładny płaszcz, stalowe włosy, utrzymany zarost. Nie wyglądał na osobę, która zwykła przyjmować połajanki. Nie od kogoś, kto tuli wiklinowy koszyk, a już z pewnością nie w sprawie zaniechania zamknięcia drzwi od toalety, które zamykają się automatycznie.

Krzyczeli do siebie przez chwilę, a ja oglądałem pantomimę, wygłuszając przedział słuchawkami. Stalowowłosy spojrzał nad fotelem swojego wroga i popatrzył mi w oczy. Bezgłośnie prosił o wsparcie. Wzruszyłem ramionami i odpatrzyłem mu: „Nie moja jurysdykcja, sukinsynu.”

Sytuacja uspokoiła się. Bohaterski obrońca toalety podszedł do telewizora i próbował znów zmienić kanał. Kolejna porażka. Tym razem nie miało się na tym skończyć. Chwycił brzegi ekranu i próbował zerwać go ze ściany.

Ekran po chwili zgasł. Jeżeli nie potrafimy się zachowywać, to nie będzie oglądania telewizji. Zniknął na Zachodnim.

Wysiadł albo nigdy nie istniał.


e-glina

Na początku ustalmy kilka faktów. Nie jestem dobrym recenzentem i nie lubię pisać recenzji. Moje opinie zbieżne są z opiniami garstki ludzi, którzy zwykle nie potrzebują zewnętrznych potwierdzeń dla wybranego oprogramowania bądź sprzętu.

Nienawidzę wydawać pieniędzy na gadżety. I komputery. Jest coś obrzydliwego w płaceniu za wygląd i markę. Za punkt honoru stawiam sobie wyduszenie z ledwie żywego złomu każdej kropelki elektronicznego potu przed jej śmiercią.

Nie jest to objaw skąpstwa. To kwestia mojej filozofii pracy z komputerami. One mają pracować dla mnie, nie ja dla nich. Możecie z mojego profilu odjąć punkty w pozycji „racjonalność”. Kiedy mówię: „skaczcie!”, one mają odpowiadać: „jak wysoko? (aplikacja nie odpowiada)”.

Tyle w kwestii formalnej.

Kupiłem sobie tablet. Nie z wewnętrznej potrzeby posiadania urządzenia do picia kawy w modnych miejscach. Chciałem zobaczyć, co można wcisnąć w kawałek plastiku za 360 PLN. Nie jestem nowym użytkownikiem takiego urządzenia - w 2004 klikałem w SIMPada SL4, a od 2008 noszę ze sobą N800, która dziś nie załapałaby się na definicję tabletu. Nie miałem wielkich oczekiwań, moje wymogi zamykały się w odtwarzaniu radia last.fm, czytniku komiksów i wyświetlaniu plików wideo. Minął tydzień (a może dwa? Czas nie płynie liniowo podczas nadchodzącej linii śmierci) i mogę podzielić się uwagami.

Depudełkacja

Depudełkacja zwana też unboksingiem jest przeżyciem religijnym, a mnie, jako ateiście, nie jest dane go dostąpić. Rozerwałem pudełko i wysypałem zawartość na biurko. Ze środka, prócz tabletu, wypadły: zasilacz, instrukcja, przewód USB i żeńska przejściówka USB, która pozwala podłączyć urządzenia zewnętrzne. Tablet wyglądał dokładnie jak 360 PLN. Był ciężkawy, plastikowy, a z jednego z boków wystawało trochę nadmiarowego plastiku, milimetr poza obudowę. Ludzie z internetowym OCD 1 od razu wrzuciliby takie urządzenie do śmietnika. Kwadrans później miałem do nich dołączyć.

Pierwsze włączenie, wybrałem WiFi, zalogowałem się do konta na Google i pozwoliłem się mu zsynchronizować. Kiedy uznałem, że upłynęło wystarczająco dużo czasu, przesunąłem sobie tablet pod nos i odblokowałem ekran. Chwilę później tablet zdecydował, że rejestrowanie dotyku jest rzeczą zbyteczną, więc każde moje dotknięcie powodowało akcję w zupełnie innej części ekranu. Sfrustrowany i wypłukany już z repertuaru wulgaryzmów cisnąłem go w kąt i tak zostawiłem na godzinę lub dwie. Wtedy urządzenie porzuciło swój bunt i już nigdy nie próbowało rewolucji w temacie koordynatów.

Sprzęt

Tablet ma siedem cali, ekran pojemnościowy z kilkoma aktywnymi punktami. Nie wiem, ile waży. Ma port na kartę SD, wyjście HDMI, port zasilania, port USB, klawisze regulacji głośności i włącznik. Poza tym „na dole” znajdują się trzy dodatkowe guziki dotykowe: menu, home i back. Duplikują idealnie te, które znajdują się w Androidzie 4.0, ale nie będę narzekał.

Opiszę tu jedyną rzecz wartą odnotowania: ekran. Tablet składa się głównie z niego, a reszta to elementy dodatkowe. Zasilacz zasila, USB się komunikuje, tyle.

Ekran jest królewsko okropny. Jest tak okropny, że ściąłbym mu głowę. To chyba pierwszy ekran, który sprawił, że byłem smutny. Pisze to człowiek, który pracował na Amidze w trybie interlace, niszczącym wzrok skuteczniej niż przecieranie oczu wapnem gaszonym. Podświetlanie jest nierówne, daje to efekt „pogiętego papieru” w niektórych aplikacjach, gdzie autorzy niefortunnie dobrali paletę kolorów. Nie mogę też pominąć tego, że na moje oko system pracuje w palecie 16-, a może 15-bitowej. Efekt przejść kolorów w Reddit is Fun powoduje, że nic nie jest fun. O dziwo, najbardziej komfortowe warunki uzyskałem w aplikacji Kindle, która pozwala na inwersję kolorów. Białe litery z czarnego czyta się zdecydowanie lepiej.

Procesor jest. Boxchip A10 taktowany zegarem 1.5 Ghz. 1GiB pamięci. Mimo wysokiego taktowania wydaje się powolny. Nie udało mi się wygooglać żadnych ciekawych informacji (poza tym wiem niewiele o rdzeniach ARM-a), musicie więc polegać na mojej nienaukowej opinii. Wolny procesor w połączeniu z gigabajtem pamięci prowadzi do większej liczby nieszczęść, niż mogłem przewidzieć. Wszystko zostaje w tle, zjadając cykle procesora. Podejrzewam, że urwanie jednej kostki pamięci spowodowałoby znaczne przyspieszenie poprzez wymuszenie pracy wewnętrznego OOMK.

Bateria nie jest jeszcze do końca przetestowana. Wczoraj w nocy wrzuciłem w pełni naładowane urządzonko i chciałem zobaczyć, ile baterii zejdzie do rana. Po pięciu godzinach snu wskaźnik baterii pokazywał dziewięćdziesiąt pięć procent. Niestety, ten niski spadek wynika z bardzo agresywnego usypiania. Sieć bezprzewodowa jest odcinana równocześnie z wygaszeniem ekranu, więc aplikacje działające w tle nie poinformują Was o nowych wiadomościach. Z pewnością da się przestawić, ale absolutnie mi to nie przeszkadza - nie jestem fanem powiadomień.

Do tej pory miałem tylko jedną dłuższą sesję z tabletem. Po 4 godz. czytania Reddita i odpisywania na e-maile bateria pokazywała 56 proc. Myślę, że spokojnie można liczyć na sześć godzin ciągłego użycia. Spodziewałem się dużo gorszego wyniku.

Oprogramowanie

Tablet przychodzi z Androidem 4.0.3. Ku mojej radości nie zostałem skazany na jeden z „alternatywnych” sklepów z aplikacjami i mogłem używać oryginalnego Play Store, dzięki czemu moje zakupione aplikacje oraz „firmówki” takie jak Gmail i Google Maps były dostępne mimo braku „błogosławieństwa” dla produktu od Wielkiego G.

Zainstalowałem mnóstwo różnego śmiecia. Kilka gier, które nie były kłopotliwe i chodziły bardzo ładnie. Jedynym odstępstwem była gra „Cut the Rope”, zarówno wersja darmowa, jak i płatna. Na moje oko (i po odcyfrowaniu komunikatu błędu) system nie zawiera jakiegoś kodeka, który odpowiada za odtwarzanie animacji z intra.

Aplikacje użytkowe także nie sprawiały większego problemu. Comixology wyświetla Batmany, Twitter wyświetla łebskie wpisy znanych i światłych, Last.fm gra moją muzykę, VLC gra moje filmy - lokalnie i ze źródła streamu (oglądałem połowę meczu LM), a nawet via Samba z serwera ukrytego pod stołem kuchennym. Niestety, aplikacje, które potrzebują chwili na osiągnięcie stanu używalności (Flipboard aktualizujący kanały wiadomości), potrafią zatrzymać cały system. Czasem nawet doprowadzić do stanu, w którym zielony robot wyrzuca dłonie w górę, mówiąc „Nie wiem? Może zacznij z początku”, a tablet się restartuje.

Tak, miałem kilka twardych wywrotek. Najgorsze w nich jest to, że nie mogę odkryć dokładnego powodu. Kombinacja aplikacji? Stan baterii? Liczba rzeczy w tle? Jest to chyba najbardziej irytująca rzecz w tej całej zabawie. Mogę przeżyć ten okropny ekran, ale restarty psują całą zabawę w „urządzenie konsumpcyjne” i ciągnie mnie w stronę laptopa.

No i?

Moja opinia jest następująca: zabawka zdecydowanie przebiła moje oczekiwania w kontekście ceny. Oczekiwałem, że cisnę je w kąt po dniu, tymczasem jeździ ze mną non stop. Choć nie zostanie nigdy moim docelowym elektronicznym gadżetem 2, to całkiem polubiłem krótkie sesje z Redditem i Readability. Moja N800 może wreszcie odejść na zasłużoną emeryturę. Gdyby wyeliminować te losowe zwieszki (może czas rozejrzeć się za jakąś zewnętrzną dystrybucją?), powiedziałbym, że jest to najlepsza rzecz, jaką można nabyć za 360 PLN.

Niestety, moja opinia jest pokolorowana faktami, o których wspomniałem na początku. Jeżeli chcesz być majnstrimowym użytkownikiem tabletów, to polecam dorzucić jeszcze sto dolarów i kupić Nexusa 7.

W tym tygodniu wykonam factory reset i pożyczę tablet przyjacielowi. Jeżeli jego opinia będzie diametralnie różna od mojej, to poproszę go, żeby zostawił komentarz pod tą notką.

PS Dwa miesiące bez tekstu. Życie nie chce, żebym został popularnym blogerem! Mam w lodówce pięć tekstów, które obiecuję sobie napisać. Tekstów ważnych, rzeczowych – takich, z których jestem znany 3. Ba, dwa opowiadania! Za kilka dni zostanę „bezrobotny”, linia śmierci przetnie moje dni i może wreszcie będę mógł cieszyć się rzeczywistością, w której nie jestem zawsze spóźniony dwa dni w stosunku do tego, co mówi kalendarz.

  1. fałszywe OCD, które powoduje, że jesteś fajniejszy w oczach followersów na socjalmediach; nie prawdziwe schorzenie niszczące życie
  2. wątpię, czy w ogóle jest taki tablet na rynku, mój laptop ma klawiaturę, 8 godz. baterii i waży kilogram. Mam też drugą baterię, która ciągnie kolejne 4 godz.
  3. ha ha

Problem z dzięciołem

Gdyby architekci stawiali budynki tak, jak programiści piszą programy, to jeden dzięcioł rozwaliłby całą naszą cywilizację

„Piękny budynek. Doskonały. Te kształty, basen przy ogródku. Podoba mi się. Naprawdę mi się podoba. Niestety, wnuczek jednej z pań powiedział nam, że w tym sezonie sensowniej byłoby zbudować igloo i martwić się letnimi problemami w lecie. Za ile możemy mieć igloo? Nie znam się na architekturze, ale wygląda mi to na kilka dni roboty.”

Rozmawiałem ostatnio z kilkoma inżynierami. A raczej słuchałem, jak odmieniali cytat z góry przez różne przypadki. Własne przypadki przeżyć podczas używania bardzo złego oprogramowania. Potakiwałem. Nie oszukujmy się, jest cała masa przykładów usprawiedliwiających ich drwiny. Sam, częściej niż bym chciał, produkuję kod, którego jakość można zakwestionować. Nie będąc wtedy w stanie wymyślić jakiejś sensownej linii obrony własnej pracy, zapisałem sobie w notatniku, żeby zmierzyć się z tym problemem w wolnym czasie.

Nie mam niestety wolnego czasu, więc spróbuję podumać „na głos” dziś.

Pierwszym problemem w porównaniu pracy programisty z pracą inżyniera jest końcowy efekt. Życie aplikacji, choć zwykle krótsze niż w przypadku budynku, mostu czy nowego modelu silnika, nie ma końca. Oczywiście pojawiają się nowe, stabilne wersje, ale programista jest zmuszony ciągle odgadywać przyszłe intencje klienta czy też użytkowników. Czasem jedna decyzja technologiczna podjęta w wersji n może okazać się niesamowitym źródłem problemów podczas dopisywania nowej funkcjonalności w wersji n+1. Ten permanentny stan niewiadomej jest źródłem frustracji i mnożenia się błędów i niedociągnięć. Prawię słyszę, jak krzyczycie do mnie o specyfikacji projektowej. Błogosławieni ci, którzy mają specyfikację i klienta, który się jej trzyma. Z mojego doświadczenia wynika, że specyfikacja często jest (jeżeli jest) ogólnym dokumentem, do którego nikt się nie modli. Skoro można pisać poprawki do konstytucji, to czemu nie można zmieniać specyfikacji? I zmienia się specyfikacje aż do momentu, gdy programiści osiągają stan apatii, w którym, często pod wpływem aresztu finansowego, zgadzają się na wszystko jak leci.

Przykład z mojego życia. Klient przychodzi i pragnie sklepu internetowego. Piszemy. Po wykonaniu trzech czwartych projektu następuje piwot, ponieważ klient klienta zmienił zapotrzebowanie. Na podstawie wykonanej pracy mamy zrobić platformę serwującą filmy na żądanie. Niby można, wystarczy ubić koszyk, zmienić profile użytkowników, przerobić trochę kategorie. Da się, są pieniądze. Mijają miesiące. W międzyczasie otrzymujemy przykaz, żeby używać FreeBSD jako platformy. Administrator klienta nie przepada za Linuksem.

Co dalej? Piwot. Klient klienta zbankrutował. Nie można wyrzucić tyle pracy. Przeróbmy to na chmurową platformę, która będzie spięta z Google Apps i będzie potrafiła odpalać oprogramowanie Windowsa przez serwer Citriksa. Aha, zmieńmy też platformę na Windows 2003 i IIS.

Po dwóch latach napisałem, że już dłużej nie mogę, że nie wiem już, co się dzieje w kodzie. Projekt, który zeżarł wiele tysięcy dolarów i wepchnął mnie w zawodową depresję, zostaje spuszczony w kiblu.

Łatwość modyfikacji oprogramowania powoduje, że programiści wszelkiej maści muszą posiadać zmyślone moce Nostradamusa albo być twardzielami, którzy potrafią utrzymać świętość specyfikacji. Koderzy dużo lepiej kodują niż negocjują, dlatego mamy całe masy niespełnionych Nostradamusów i oprogramowanie, które zaciągnęło taki dług technologiczny, że najłatwiej spłacić go butelką benzyny i zapałką.

Ile lat buduje się mosty, stawia domy? Kilka. Inne branże miały czas zakumulować know-how. Programiści chorują chronicznie na brak dobrych wzorców projektowych i ich nieznajomość połączoną z ostrym zapaleniem wyrostka Nie Wynaleziono Tutaj. Dodatkowym problemem jest ciągłe wywracanie technologii do góry nogami. Wczoraj zdecentralizowane dziś się centralizuje, by pojutrze rozproszyć. I choć teoria leżąca u podstaw pisania kodu jest w miarę jednolita, to zmieniają się miejsca, w których wychodzą problemy. Warstwy abstrakcji przykrywają poprzednie warstwy abstrakcji, powodując totalne rozwarstwienie pomiędzy wcześniejszą generacją programistów a generacją obecną. Dorzućmy do tego nieprawdopodobny (nie bez powodów) konserwatyzm wśród zawodowych klikaczy i mamy sytuację, w której dwóch programistów może posiadać sześć rozwiązań problemu. Każdy z nich nie mrugnie nawet okiem, usprawiedliwiając swój wybór. Dodajmy do mikstury świeżych autorów programów, którzy nie zakrzepli jeszcze w swoich schematach i każdy problem rozwiązują, dodając do stosu modne, nieprzetestowane technologie i uzyskujemy totalny kociokwik bibliotek, serwerów i metodologii przebijających swoim spektakularnym końcem dziewiczy rejs Titanica.

Przez pięćdziesiąt lat programowanie zmieniło się tak bardzo, że nie zmieniło się w ogóle. To znów urodziło eksperymentatorów z ciągotami do konserwatyzmu. Tymczasem stała grawitacyjna, wzory na objętość i materiałoznawstwo zdają się trwać. Oni mają ewolucję, a my krwawe rewolucje, które niosą na sztandarach hasło, że „Tym Razem Będzie Dobrze”.

Wiedza. Nie oszukujmy się, można być programistą, kompletnie ignorując jakiekolwiek dziedziny nauki. Kilkuset niezmiernie łebskich gości pisze narzędzia dla niedomytych mas. Niedomyte masy są tak dobre w rozwiązywaniu problemu, jak dobre narzędzia otrzymają od łebskiej elity. Wystarczy jednak wykonać jeden krok poza sferę kompetencji narzędzi, aby przekonać się, jak bardzo przeciętny programista jest w dupie. Bycie w ciemnej dupie nie jest fantastycznym doświadczeniem, dlatego też reakcją obronną jest naginanie dostępnych narzędzi do problemów. Człowiek krojący chleb piłą łańcuchową, człowiek, który ma bazę danych i wszystkie problemy potrafi przydusić tak, aby zamknęły się w SELECT/INSERT/DELETE/UPDATE. Jeden jest najedzony, a drugi ma rozwiązany problem, ale z szerszej perspektywy obaj wyglądają na durnych i lekko zagubionych.

Napisałem fantastyczną bibliotekę do obsługi aplikacji typu data-driven. Schemat bazy jest ekstremalnie generyczny, wszystko można zostawić użytkownikowi. Potem pojawiły się pierwsze problemy: jak rozpoznać, że grupa rekordów już istnieje i należy ją zaktualizować? Trzeba dodać unikalne indeksy. A co z polami o konkretnym typie, które topią się w bezpłciowym schemacie? Trzeba je ewaluować i trzymać cztery kopie tak, żeby dało się wykonać operacje via wbudowany ORM. Zanim się ocknąłem, reimplementowałem bazę danych w bazie danych, w kodzie we frameworku. Wyświetlenie głupiej tabelki zajmuje ORM-owi wieki i generuje kilka trylionów zapytań. Nie rozumiałem problemu, miałem młotek, dookoła mnie same gwoździe. Powbijałem je trzonkiem młotka i uznałem, że wszystko jest w jak najlepszym porządku.

Mimo to uważam, że nie jestem totalnym kretynem. Jestem produktem środowiska, mód i narzędzi. Ostatecznie doczytałem trochę teorii i ponaprawiałem (z pomocą [Patrysa](http://room-303.com/blog/[/ref] bardziej porąbane miejsca. Kod nie szedł jeszcze na produkcję, ale przecież mógł.

Łatwość, z jaką przychodzi nam budowanie rozwiązań dla oczywistych problemów, włącza nam tunelowe widzenie i wiąże ręce.

Czyli co, nie ma ani krzty nauki, metodologii i dobrych wzorców w całym programistycznym świecie? Skądże, jest coraz lepiej. Coraz lepsze narzędzia, coraz większy zasób wiedzy i metodologie projektowe pomagają nam wydźwignąć się z bagna niekompetencji. Nauczymy się rozwiązywać problemy, przed którymi stajemy zupełnie na golasa, będziemy bohaterami własnych historii.

Do czasu, aż przyjdzie kolejna rewolucja. Wtedy będziemy znów w dupie. I mogę poradzić tylko naukę gry na harmonijce i metalowy kubek, którym będziemy wybijać rytm o nasze superlekkie laptopy, śpiewając:

Nobody knows the trouble I’ve seen

Nobody knows my sorrow

Nobody knows the trouble I’ve seen

Glory hallelujah!

Sometimes I’m up, sometimes I’m down

Oh, yes, Lord

Sometimes I’m almost to the ground

Oh, yes, Lord


Star Wars

Miałem wujka Andrzeja. Kiedyś do wszystkich sąsiadów mówiło się per „wujku” i „ciociu”. Rzeczywistość życia w końcówce PRL-u powodowała, że kontakty między obcymi sobie ludźmi były bliższe, wszyscy musieli kombinować, a kombinowanie w grupie dawało lepsze rezultaty.

Zanim wujek Andrzej przesiadł się do TIR-a 1, jeździł Starem. Imponująca ciężarówka, której podnosiła się kipa. Czasem zabierał mnie do pracy. Odwiedzaliśmy wysypisko śmieci pod Łodzią, czy też częstochowskie centrum przeładunkowe. Podczas tych podróży miałem okazję pierwszy raz słuchać reggae. 2

Star zawładnął moim umysłem. Nigdy nie prosiłem o prezenty - byłem jednym z tych fałszywie skromnych dzieci, które żywią się samym faktem moralnego kopniaka, jaki daje im świadomość, że w pewien pokręcony, dziecinny sposób są lepsze od rówieśników. Mimo to tym razem poprosiłem matkę o zakup Stara. Wydawało mi się oczywiste, że posiadanie Stara jest prawem każdego człowieka, zwłaszcza sześciolatka. Matka się zgodziła. Lata odmawiania prezentów wreszcie skumulowały się w jedną wielką, karmiczną wypłatę!

Przejawiając dawno utracony zmysł biznesowy, rozpocząłem systematyczne wizyty w domach sąsiadów. Proponowałem moje usługi w przewożeniu rzeczy Starem, którego dumnym posiadaczem wkrótce miałem się stać. Wszyscy się zgadzali, gładzili mnie po główce i mówili, że oczywiście.

Marketing, bitches!

Przyszedł dzień, w którym miałem otrzymać to, co mi obiecano. Stałem na podwórku i czekałem. Matka otworzyła bramę i widząc mnie, zaczęła iść do mnie z uśmiechem na twarzy. Za sobą ciągnęła pięknego zabawkowego Stara.

Blednę na samo wspomnienie nienawiści, którą czułem. Żalu. Uczucia bycia oszukanym, świadomości, że wszyscy wiedzieli i grali sobie na moich uczuciach do Stara. Zacząłem biec w kierunku matki, ominąłem jej wyciągniętą rękę i wyjebałem Starowi z kopa. Wybiegłem przez otwartą bramę. Finału nie pamiętam. Pamiętam tylko emocje związane z obezwładniającą złością i bezradnością.

Mijają lata, a ja nadal nie potrafię odróżnić wizji, które roztaczam, od rzeczywistości, która przytelepała się na bardzo małych, drewnianych kółkach.

  1. awans zawodowy na miarę czasów wykluwającego się kapitalizmu
  2. To były jakieś okropne covery jamajskich standardów wykonywane przez germańskie kapele. Zasiały jednak ziarenko. To dygresja, po prostu przewinęło mi się przez głowę, kiedy pierwszy raz usłyszałem „Pass the kutchie” 

Brukowanie piekła

Ojciec nigdy nie interesował się moimi pracami domowymi. Pracował ciężko, a i ja nie ułatwiałem mu zadania, nie mając nigdy „nic zadane”. Nie była to sprawka nauczycieli rozumiejących moją potrzebę posiadania wolnego czasu, w którym mógłbym oddać się swoim pasjom pozaszkolnym; kłamałem jak każdy dziesięcioletni leń mający w perspektywie dzień przeznaczony na aktywność fizyczną, czy też przechodzenie Bionic Commando.

Zapytany raz o moje postępy w nauce i stan prac domowych z dumą odparłem, że pracę z polskiego już zrobiłem. Z perspektywy czasu wiem, że kłamstwo przyniosłoby lepszy skutek.

Na lekcji przerabialiśmy czytankę o robocie Alu. Robot ten był, może miał jakieś przygody, nic ważnego. Znałem jego historię na wylot, bo kilka lat wcześniej wszedłem w posiadanie książek do języka polskiego i zmusiłem matkę do przeczytania mi wszystkich historii, które zawierały roboty, wojny i futurystykę. Moja przebiegłość opłaciła się nie tyko w przypadku historii o Alu, dostałem też piątkę z czytania na głos czytanki „Świat za sto lat”, którą znałem na pamięć, co zaowocowało teatralną deklamacją.

Wróćmy jednak do pracy domowej. Ponieważ nie skończyliśmy opracowywać tekstu na tablicy, naszym zadaniem było dopisanie zakończenia. Kiedy wróciłem do domu, postanowiłem, że będę dobrym chłopcem i dopiszę. Otworzyłem zeszyt, przeczytałem tekst ustalony w klasie i stwierdziłem, że skupiliśmy się głównie na opisie wyglądu zewnętrznego robota.

„Channelingując” połączone moce Vonneguta i Hemingwaya, postanowiłem iść w maksymalny przekaz uzyskany minimalną ilością środków artystycznych. Dopisałem jedno zdanie:

„Taki był Al.”

Byłem z siebie dumny. Nie tylko zrobiłem pierwszą pracę domową w roku szkolnym, ale udało mi się ująć sens całej naszej pracy w sposób zwięzły i dosadny. Duma ta miała przyczynić się do mojej zguby.

Pokazałem zeszyt Ojcu i wytłumaczyłem, co zrobiłem. Ojciec zmarszczył czoło i powiedział, że to się nie godzi, że na skróty, że olewam. Stanął nade mną i kazał chwycić za długopis. Była 19 z minutami. Wspólnymi siłami dokonaliśmy rozbioru czytanki na części pierwsze i już o 22 miałem zakończenie. Było to prawdopodobnie jedyne zakończenie dłuższe niż tekst źródłowy, zeszyt zawierał dziesiątki wykreśleń, a moje, już wtedy fatalne pismo, pod koniec zamieniło się w zestaw zagadek, jakich nie powstydziłby się mechanizm Captchy.

Kiedy na drugi dzień oddałem zeszyt do sprawdzenia, oczekiwałem najgorszego. I to właśnie otrzymałem: dwa plus, dziesiątki czerwonych „ó”, „int.”, „rz” i innych, niezrozumiałych dla mnie wskazówek dotyczących moich braków. Kiedy, będąc na granicy płaczu, zaprotestowałem i wspomniałem, że „chciałem tylko napisać, że taki był Al” nauczycielka powiedziała, że to doskonałe zakończenie i kazała reszcie dzieci dopisać to zdanie jako oficjalne podsumowanie poprzedniej lekcji.

Ojciec przyjął odpowiedzialność za swoją literacką działalność, a ja zyskałem dodatkowy dowód anegdotyczny o bezsensowności odrabiania prac domowych. Na moje szczęście było to jego jedyne przewinienie jako Ojca. Dałbym mu pokojową nagrodę Nobla za znoszenie mnie przez tyle lat, ale tylko pod warunkiem, że zakończy swoje przemówienie na gali słowami „taki był Al”.


Ja, Kłopot

Błędy poznawcze, a raczej świadomość ich istnienia, są bardzo pomocne. Przykładowo: ilu z Was, zaraz po nauczeniu się nowego słowa, zaczyna zauważać zwiększoną ilość jego wystąpień? Tak jakby razem z Wami o słowie dowiedział się cały świat i uparł się na używanie go non-stop. Doświadczacie wtedy „fenomenu Baader-Meinhof”. To nie świat nagle zawziął się na używanie słowa lub faktu, to Wasz mózg zaczął „rozpoznawać” informację, którą wcześniej pomijał, nie znajdując dla niej miejsca w sensie, który interpretowaliście.

Przez ostatni tydzień, wystawiony na przemian na książkę „Roboty i Imperium” Asimova, subreddity dyskutujące o futurologii, socjologii i antropologii, karmiony przez mój zestaw kanałów RSS, zacząłem coraz bardziej dumać nad etyką mojej pracy, a może bardziej nad przyszłością mojego zawodu i jego znaczeniem dla rozwoju cywilizacji, który niechybnie ustawia go na pozycji kolizyjnej z dylematami moralnymi i etycznymi.

W drodze do elektronicznego piekła

Czym jest program komputerowy? Niczym więcej niż zestawem poleceń wykonywanych w pewnej kolejności, która może się zmienić pod wpływem ewaluacji dostarczonych danych. Najprostszym programem dostarczonym wraz z mózgiem dorastającego człowieka jest algorytm KarmieniaSięSingla. Można go zapisać następująco:

„Jeżeli jesteś głodny: otwórz lodówkę. Czy lodówka jest pusta? Wróć za pięć minut, sprawdź, czy jest pusta. Jest w niej coś? Usmaż to na oleju”.

Algorytm zrozumiały dla każdego, kto paradował w bieliźnie w sobotnie popołudnie aż do momentu, w którym ignorowanie głodu staje się niemożliwe. Na szczęście nasze oprogramowanie jest na tyle doskonałe, że wyżej wspomniany algorytm nie doprowadzi do naszej zagłady. Gdyby lodówka pozostawała ciągle pusta, a my nie otrzymalibyśmy od mózgu informacji o bezcelowości ciągłego zaglądania do niej, z pewnością czekałaby nas śmierć głodowa.

Proste algorytmy mogą zawierać skomplikowane błędy, a algorytmy skomplikowane zawierają wiele skomplikowanych błędów. Może trochę inaczej: nie algorytmy zawierają błędy (choć mogą), ale nasza implementacja jest niedoskonała. Czasem nie jesteśmy w stanie przewidzieć wszystkich stanów, jakie może przyjąć nasz algorytm, innym znów razem możemy przewidzieć, ale nie jesteśmy sobie w stanie wyobrazić, że „coś takiego może się stać”.

Czas na anegdotę. Może to miejska legenda? Nie wiem, czytałem ją gdzieś-kiedyś i nie weryfikowałem faktów, ale sama przypowiastka ilustruje pewien sposób, w jaki nieustannie strzelamy sobie w stopę.

Izraelczycy kupili sobie samoloty. Piękne, nowe samoloty, które strzelają. Pif-paf i w ogóle. Niestety, podczas testów wyszło na jaw, że samoloty te lubią sobie spaść z nieba. Ot tak, „pierdolę, nie lecę”. Inspekcja oprogramowania wykazała, że autorzy programu przyjęli sobie bazową na podstawie wysokości nad poziomem morza. Część Izraela znajduje się poniżej poziomu morza, komputer się pogubił i katastrofa gotowa.

Nie wydaje mi się, że historyjka jest prawdziwa, ale nadal ładnie nadaje się jako ilustracja naszej zdolności przewidywania. Zwykle nasze przewidywania zdolności przewidywania są błędne. Błędnie błędne.

Gdzie w tym wszystkim etyka, gdzie moralność? Jeszcze nigdzie. Wprawdzie błędnie zaprojektowany program, który zsyła z nieba tony żelastwa mogące uderzyć w obiekty cywilne, nie jest powodem do dumy, ale ilość przepisów i kontroli powodują, że „wina” się rozmywa.

Wspominałem na początku książkę „Roboty i Imperium”. Jest to powieść spinająca dwie serie kluczowe w twórczości Isaaca Asimova: „Roboty” i „Fundacja”. Seria książek o robotach wniosła do literatury i kultury popularnej ideę „Trzech Praw Robotyki”, które stanowiły moralne wzorce dla robotów zasiedlających wszechświat Asimova.

  1. Robot nie może skrzywdzić człowieka lub przez zaniechanie doprowadzić do jego krzywdy
  2. Robot musi wykonywać polecenia człowieka z wyjątkiem tych, które naruszałyby pierwsze prawo
  3. Robot musi chronić własne istnienie, o ile nie koliduje to z pierwszym i drugim prawem

Te jasne zasady stały u podstaw zaprogramowanej moralności. Jeżeli robot stawał przed sytuacją, w której nie istniało proste rozwiązanie zgodne z literą prawa (wybór „mniejszego zła” nie istniał w słowniku prymitywnych robotów), to istniało ryzyko awarii i zniszczenia jego sztucznego mózgu.

Prawa te powstały na potrzeby historii, jaką autor chciał opowiedzieć czytelnikom. Choć proste i oczywiste, nie przystają one do rzeczywistości. Dzięki temu stały się żywą częścią opowieści i elementem narracji.

While Zbrodnia Then Kara

Do robotów, jakie znamy z fantastyki, jeszcze daleko. Choć może bliżej niźli się nam wydaje. Mimo braku dwunożnych humanoidów nasz świat powoli wypełnia się automatyką z wyższej półki. Wiecie, lodówka zamawiająca jedzenie, ekspres strzelający prądem do tego drania, który osusza dzbanek i odchodzi bez zrobienia nowej kawy, autonomiczne samochody Googla czy też sprzęt do ćwiczeń regulujący obciążenie i tempo zależnie od historii naszych treningów i obecnych danych biometrycznych.

Urządzenia te, pozbawione kiedyś elementu „inteligencji”, mogły nas skrzywdzić dzięki zgromadzonym zasobom energii kinetycznej, potencjalnej, braku troski w eksploatacji: ogólnie, mechanicznie. Wraz z postępem wszystkie te urządzenia są komputerami, które uruchamiają czyjś program.

Może nie będzie buntu maszyn jak ze świata Terminatora, może nie zostaniesz zamieniony w baterię jak w Matriksie, może twój żywot dokona się na automatycznej bieżni, której algorytm zignorował anomalię w danych, jaką wyprodukował zawał twojego serca? Może programista systemu dietetycznego do twojej lodówki nakarmi cię produktami, na które masz uczulenie?

Dziennikarka CNET Molly Wood przetestowała samochód Googla, „wskakując” mu pod maskę. Nastąpiło efektowne hamowanie, programiści przybili sobie piątki, wpisując w rubrykę „potrąceni dziennikarze” wielkie, tłuste zero. Co by się jednak stało,gdyby taka sytuacja zdarzyła się na drodze z innymi uczestnikami ruchu, w warunkach pogodowych, w których próba wyminięcia przeszkody może spowodować większe zagrożenie dla życia niż kolizja? Ktoś będzie musiał zająć się ważeniem ryzyka na podstawie różnych danych i zadecydować, czy samochód w takich warunkach ma uderzyć w osobę, czy może wykonać manewr i „ryzykować” zderzenie. Ocenić szanse na przeżycie człowieka biorącego udział w kolizji przy szybkości X, wziąć pod uwagę fakt wyposażenia samochodu w system poduszek powietrznych.

Takie decyzje kierowca samochodu podejmuje podczas zdarzenia. Gorsze, lepsze, wynikające z doświadczenia lub jego braku. Sekundy i już. Programista takiego systemu ma miesiące, lata. W pewnym sensie unika wypadków, które wydarzą się w przyszłości.

Nie tylko jakość programu i potencjalne rozwiązania z dziedziny sztucznej inteligencji, nawet coś takiego jak wydajność systemu może być kluczowe. Im więcej opcji uda się przeanalizować, tym większe są szanse na wybranie tej najtrafniejszej. Tu znów kolejny problem: jeżeli mamy na decyzję czas T, to decyzja uzyskana w T*.5 może być najlepsza, ale niewykonalna ze względu na czas, który upłynął.

Wyobraźcie sobie dwunożnego robota 1, który roznosi drinki. Wyobraźmy go sobie jako nogi, czujniki odległości, żyroskop i może jakiś głośnik, który wydaje odgłosy zapraszające do korzystania. Robot przemieszcza się między gośćmi, wtem!

Obciążenie systemu nie pozwala mu nadal wykonywać wszystkich operacji 2 i w takiej sytuacji system czasu rzeczywistego, o którym tu niechlujnie chcę wspomnieć, ma zadeklarowane zadania mające priorytet w sytuacji kryzysowej. Robot ma ustać na nogach, przestać się poruszać i nie rozlać za wiele. Może przez to zignorować czujniki zbliżeniowe i kogoś popchnąć, może zacząć wydawać z siebie chrypliwe dźwięki. Trudno, alternatywa, w której automat nadal zaprasza na drinka, przewalając się na gości, jest mniej pożądana.

Te dylematy były rozwiązywane przez lata i czytelnicy mogą powiedzieć, że siedzę tu i wykrzykuję o tym, jak mi niebo na głowę leci, szerząc panikę.

Moja wizja problemów związanych z programowalną automatyką wiążę się z faktem jej wyjścia z hal produkcyjnych i laboratoriów wprost do kuchni i sypialni. Oznacza to, że część z nich trafi do programistów, którzy może nie będą świadomi tej całej problematyki powstającej na styku interakcji człowieka z maszyną.

Boję się, bo jeszcze wczoraj mój błąd mógł (i kosztował, nie raz) czyjeś pieniądze. Źle naliczone wypłaty, opóźnienia, małe tragedie. Pojutrze, siedząc w niedzielę w biurze, będę mógł nie tylko źle naliczyć twoją wypłatę, ale też podbić ci oko budzikiem.

Programistyczna bandyterka na odległość, bez zysków dla mnie, ze stratą dla ciebie.

  1. wiadomo, że na kołach byłby lepszy, ale na potrzeby demonstracji systemów czasu rzeczywistego nóżki są lepsze
  2. fachowo: się zamuliło

Jutro nie będzie dziś

Historia w służbie ludzkości

Odwiedzając muzeum historii naturalnej, trafiłem na ekspozycję „butelek”. Były to różne wazy, karafki i inne flakony, mniej lub bardziej przypominające to, co dziś nazywamy butelką. Nic spektakularnego. Chodząc między nimi, zdałem sobie sprawę, jak wielką rewolucję musiała wywołać tania i bezpieczna metoda transportu płynów.

Odległość między źródłem wody pitnej a miejscem pobytu straciła trochę na znaczeniu, można było fermentować zgniłe owoce i utopić żal spowodowany Czarną Śmiercią w tak powstałym winie. Rynek otworzył się na nowe produkty: mleczko w dzbaneczku i oliwę z oliwek w urnie.

Tak spekulował sobie mój młodzieńczy móżdżek.

Świadomość historii jest potrzebna, bo historia nie toczy się kołem, ale z pewnością się rymuje. Historia człowieka pisana jest w dużej części przez technologiczne zmiany. Może przesadzam, ale z mojego punktu widzenia dzieje krojone są na kawałeczki przez prasę drukarską, Pasteura, samopowtarzalną broń, bombę atomową, akwedukt czy dzbanek właśnie. Socjolog mógłby wykazać, że prądy w kulturze, że wpływy religijne, ale ja będę twardo stał przy swojej opinii laika. Technologia zmienia świat, ewoluując. Żeby debatować na temat naszego świata, trzeba wiedzieć o tym, skąd wyskoczył Homo Erectus, jak i kiedy pierwszy raz położył łapę na ruchomej czcionce.

Nigdy wcześniej tak znacząca część technologii nie znajdowała się w rękach konsumentów, służąc za silnik napędzający przemysł rozrywkowy.

I czasem się boję, że jutro nie będzie wczoraj.

Od razu odrzucam wszelkie oskarżenia o „konserwatyzm” i „było lepiej, gdy byłem młody, teraz wszystko jest inne i gorsze”. Nie chcę argumentować za nostalgią, chcę argumentować za historią.

Stoimy dziś przed, powiedzmy, czterdziestoma latami historii mikrokomputerów i wszystkiego, co zrodziło się wraz z udoskonalaniem układów scalonych. Większość z wyprodukowanych wtedy mikrokomputerów i urządzeń towarzyszących jest dostępna w oryginalnym stanie. Pozwala to nam, fascynatom historii, bawić się i badać rzeczy takimi, jakie były.

Czasem antropolodzy natrafią na „zaginione plemię” i stają przed dylematem moralnym: czy lepiej zaburzyć życie ludzi nieświadomych zewnętrznego świata przez dokonanie badania, czy też pozbawić swoją gałąź nauki obserwacji i wniosków, na które z każdym dziesięcioleciem szanse są coraz mniejsze.

Mamy szczęście, prawda? Duża część materiału badawczego jest dostępna w zasięgu ręki, do tego nasz brak moralności (hej, jesteśmy fanami komputerów) idealnie współgra z brakiem wyzwań etycznych.

Jutro nie będzie dziś

Każdego dnia spędzam kilka minut, obijając się o różne strony i kanały, na których dyskutuje się o komputerowych zabytkach. Prawdą jest, że większość z tych miejsc to zagłębia nostalgii. Można wbić metaforyczny szpadel w dowolne miejsce i wyciągnąć na powierzchnię dziesiątki wspomnień. Bez względu na motywację, wszystkie te źródła mają dla mnie wartość edukacyjną. Nie tylko lepiej rozumiem obecny rozwój, ale przez pryzmat plastiku i silikonu dane jest mi obserwować inne kultury.
Oglądałem ostatnio recenzję X68000 - komputera, o którym dowiedziałem się zupełnie niedawno. Każdy wie, że Motorola 68k była sercem Amigi, dużego Atari i Apple; niewielu wie o X68000. Kiedy tak otwierałem nowe zakładki, szukając więcej informacji o tej zabawce z kraju kwitnącej wiśni, coś mnie uderzyło.

Czy Wasze dzieci będą mogły w przyszłości zobaczyć działającego Xboxa 360 czy PS3? Zagrać w popularną teraz strzelankę, aby zrozumieć kontekst punktu w rozwoju, w jakim się znalazły? Czy konsola odpali gry wymagające autoryzacji u twórcy, który dawno temu zbankrutował? A nawet jeśli jeszcze istnieje, to jakie są szanse, że będzie utrzymywał serwer dla gry, którą księgowość rozliczyła trzydzieści lat temu?

Ekosystemy, które ułatwiły (może nawet umożliwiły) ekspansję użytkowej elektroniki, wymuszają na nas życie w pewnym cyklu, który usuwa „stare” przedmioty i zastępuje je nowymi. Być może nie warto zachowywać dla historii każdego budżetowego telefonu z Androidem, może nie każda gra powinna być sztandarem początku tysiąclecia, ale w obecnej sytuacji to nie my, amatorzy-historycy od scalaków, decydujemy o tym, co warto zachować. Decyduje o tym dostępność serwera DRM z kluczami.

Nigdy wcześniej ludzie nie tworzyli tak wiele. Każdy zrobi fotkę, wrzuci ją gdzieś, niektórzy nagrają cover ulubionego utworu i umieszczą na YouTube. Większość tych rzeczy to amatorszczyzna, której zniknięcie nie uszczknie niczego z naszych zasobów kultury. Niestety, wraz z łatwością tworzenia zrodziła się sytuacja, w której równie łatwo „zniknąć” tysiące cyfrowych malowideł skalnych. Wystarczy, że jutro zostanę rozjechany przez pijanego kierowcę i około grudnia blożek ten zniknie z Internetu. Może nawet wcześniej. Dwieście tysięcy wyrazów zrobi cyfrowe poof.

Żyjemy w pierwszym okresie kultury, za którą antropolog, archeolog i historyk daliby się pociąć. Każdy nasz ruch, każda myśl, każdy konflikt i sukces są nieustannie rejestrowane. Obrazem, dźwiękiem, w setkach języków. A im łatwiej ta rejestracja następuje, tym trudniej ją zachować.

W tej chwili produkujemy więcej informacji niż jesteśmy w stanie składować. Ulewa nam się, nie tylko z powodu braku miejsca, ale także dlatego, że ekosystemy którym zaufaliśmy, znikają.

Wrócę na chwilę do komputerów, bo zwiało mnie na kierunki ogólne. Prawdą jest, że ludzie będą mieli coraz mniej ciągot do bycia specjalistami w sprawach okołokomputerowych. Być może nikt nie będzie chciał demonstrować pierwszego iPada i opowiadać o nim tak, jak ludzie opowiadają teraz o TRS-80 czy Commodore 64. Osobiście, wierząc w magię technologii pod każdą postacią, nie kupuję tego. Gdzieś teraz jakieś dziecko kompiluje pierwszą aplikację na swój przenośny gadżet. W obecnej sytuacji, za dziesięć lat, nie będzie miało jak pochwalić się swoimi pierwszymi krokami.

Technologia jest integralną częścią kultury. Technologia umożliwia tworzenie, przetwarzanie i publikację na skalę wcześniej nieznaną. W idealnym świecie domagałbym się, aby firmy „trzymały łapy precz od mojego pióra”, ale nie wierząc w rewolucje, a chyląc się ku rozwiązaniom ewolucyjnym i edukacyjnym, apeluję: od Was, ludzi rozumiejących, o czym tu piszę, wymagam świadomości tego, że sprzedając wszystko za własną wygodę, pozbawiamy naszych następców ich historii.

Ci, którzy nie znają historii, są skazani na jej powtarzanie. DRM to będzie permanentne „ustawianie głowicy”, bez szansy na sukces.

PS. #okazałosię, że czwartego maja wypada „Dzień Przeciwko DRM”. Niechcący wpisuję się w jakąś szerszą debatę. Idę założyć monokl.


Windows 8: bebechy

Prolog

Kilka dni temu obchodziliśmy rocznicę zatonięcia Titanica. Jego tragedia jest wypadkową przywar, które towarzyszą ludzkości od zarania dziejów: arogancja, buta, ignorancja i bezgraniczna pewność siebie. Jeżeli nadajesz sobie ksywkę „Niezatapialny”, to w karmicznym rachunku pozerstwa jesteś poślubiony dnu.

„Nikt nie został zwolniony za kupowanie od Microsoftu” to unowocześniona wersja starego powiedzenia o Wielkim Niebieskim. Powiedzenie to nie straciło na ważności, ale ostatnio stało się coś ciekawego: „nikt nie zostanie przyjęty za znajomość narzędzi Microsoftu”.

Piszę tu oczywiście o małym wycinku świata, który znam. Mimo to, pamiętając początek lat dziewięćdziesiątych, coś się zmieniło: Microsoft stracił hobbistów, do których kiedyś apelował sam Bill. Ostatnie piętnaście lat przyniosło rewolucję w sieci, na którą gigant z Redmond zaspał – a kiedy wreszcie obudził się z letargu zza rogu wypadła zgraja programistów pisząca mikro-programy i sprzedająca je za dziewięćdziesiąt dziewięć centów.

Dorosły i bezpiecznie osadzony w rynku Microsoft mógł odrzucić nóż i zdjąć kolczugę – nie było już potrzeby ścierać na proszek producentów edytorów tekstu, arkuszy kalkulacyjnych czy niszowych systemów operacyjnych. Wtem: barbarzyńcy u wrót.

Moja historia z Microsoftem jest niezbyt długa. W czasach Windows 3.1, 3.11, 95, 98 i Me śmiałem się z Microsoftu siedząc za klawiaturą Amigi. Puszczałem sobie nieustannie filmiki o cieście 1, które trafia Billa w twarz i o podłączaniu urządzeń pod PnP. W 2002 kupiłem pierwszego PC i zainstalowałem na nim Windows 2000; niestety przejście z systemu, który znałem wybitnie dobrze, na system totalnie mi obcy wywołało głęboką niechęć. Poza śmiesznymi filmikami z Internetu miałem też dowody anegdotyczne na to, jakim koszmarem jest Windows. Zimą tego samego roku zainstalowałem na swoim komputerze Debiana i tu możemy od razu przeskoczyć do 2008, ponieważ nic się nie zmieniło w moich nawykach. Wtedy też zacząłem niebezpieczną zabawę z podcastami. Nie wiedziałem, że tak szybko się uzależnię. Czym więcej słuchałem, tym więcej chciałem słuchać. W napadzie szaleństwa dodałem dwa podcasty, którymi nie byłem zupełnie zainteresowany: Windows Weekly i MacBreak Weekly.

Prowadzącym Windows Weekly jest Paul Thurrott – fan, który nie jest ścierwojadem. Zabawny, krytyczny dla swojej platformy, będący jednocześnie w środku wydarzeń związanych z Microsoftem i unikający polityki. Facet, z którym mogę iść na piwo gdy tylko zadzwoni. Windows Weekly stał się moim ulubionym podcastem. Sam Paul, dzięki sile swojej radiowej osobowości, zmiękczył moje serce. Zacząłem po raz pierwszy zaglądać do jaskini Ballmera.

Dlatego, kiedy dostałem (nie wiem, z jakiej okazji, ale) zaproszenie na briefing Windows 8 zorganizowany przez polski oddział MS postanowiłem wpaść i zobaczyć jak się mają sprawy. Mimo, że zaproszenie przyszło dla Emila-blogera (ktokolwiek widział, ktokolwiek wie), postanowiłem podejść do tego poważnie – przynajmniej tak poważnie jak potrafię. Przed wyjazdem przeczytałem z 60 stron dokumentacji i tekstów opublikowanych przez developerów Windows 8. Zamiast pisać recenzję imprezy, spróbuję skumulować tu rzeczy, których się dowiedziałem. Nie mam zamiaru pisać encyklopedii systemu, ale zaznaczyć rzeczy, które są w jakiś sposób wyjątkowe lub ciekawe.

Na początku zastanówmy się nad sytuacją, w jakiej znajduje się producent nowych Okienek. Ponad miliard instalacji, dominacja w firmach i długa tradycja wstecznej kompatybilności. Sukces smakuje słodko-kwaśnie; to, co może zrobić konkurencja jest niemożliwe dla kogoś, kto swój sukces zawdzięcza technologicznemu konserwatyzmowi.

Kiedy student wpada nagi na wykłady, to pewnie się ochlał i może stać się internetową sensacją; kiedy zajęcia poprowadzi nagi profesor nagle robi się z tego zwolnienie dyscyplinarne.

Domyślne zachowanie jest zakodowane kulturowo: profesorowi nie wypada świecić jajkami, Microsoft nie może ubić Win16, IE6 i FAT16. Pewnie, tylko promil użytkowników jest przywiązany do tych technologii, ale przy miliardzie użytkowników promile to o wiele za dużo.

Windows 8: w środku

Ile cukru w cukrze?

Zacznijmy od wymagań. Microsoft wraz z wydaniem Windows 7 po raz pierwszy podjął kroki mające na celu zmniejszenie wymagań sprzętowych stawianych przez system. Pomysł ten kontynuowano także w Windows 8; system ze względu na swoje przeznaczenie odpali się nie tylko na komputerach, na których bez problemu startowała poprzednia wersja, ale „zmieści się” także na tabletach (i, w przyszłości, na telefonach).

Aby zredukować obciążenie pamięci, prócz standardowych zabiegów programistycznych podjęto też kilka działań na poziomie kernela i samego systemu. Pierwszą zmianą jest współdzielenie zasobów takich jak biblioteki; nie jest to nic nowego, inne systemy operacyjne od dawna posiadały współdzielone zasoby (czyli takie, w których kawałek kodu wczytuje się raz do pamięci i następne odwołania do niego są kierowane „do pamięci” z pierwszą kopią). Implementacja w Windows 8 różni się jednak od tej znanej choćby z AmigaOS: tu program jest izolowany od innych i musi prosić o zgodę systemowego brokera.

Drugą zmianą jest wprowadzenie pamięci o niskim priorytecie. Pamięć tak zadeklarowana przy alokacji będzie pierwszą, która zostanie zwolniona w przypadku osiągnięcia limitu pamięci. Jest to, moim zdaniem, lepsze rozwiązanie niż „pamięć nieaktywna” w OS X. Wszystko siedzi jednak w implementacji: pozostawianie decyzji developerom nie zawsze wychodziło na zdrowie Windowsowi; nie dowiedziałem się, czy są jakieś twarde zasady co do konkretnych elementów, które powinny być tak zadeklarowane (na przykład dane aplikacji, nie sam kod aplikacji). Oba skrajne przypadki: deklarowania wszystkiego jako pamięć wysokiego priorytetu, czy też deklarowanie każdej zajętej pamięci jako tej z niskim priorytetem może doprowadzić do zwolnienia systemu lub aplikacji (czy nawet jej kompletnego zejścia).

Ostatnią wartą odnotowania zmianą są modyfikacje w usługach systemowych. Ograniczono nie tylko listę usług, które odpalają się domyślnie przy starcie, zamieniając część z nich na uruchomiane „na żądanie”; doszedł też nowy typ windowsowych „daemonów w przestrzeni użytkownika” – usług, które po uruchomieniu odczekują pewien czas i jeżeli nie będzie więcej żądań, przejdą w stan spoczynku zwalniając pamięć.

Zawsze świeży

Tyle o pamięci. To nie są zmiany, które powodują palpitację serca nerda, ale jak pokazuje Windows 7 programiści pracujący nad nimi wiedzą, co robią.

Wydajność komputera jest nie tylko wypadkową oprogramowania przygotowanego przez producenta – minie rok czy dwa i stajemy się świadkiem binarnej biodegradacji. Nawet najlepszy producent nie powstrzyma użytkownika przed sypaniem piachu w tryby maszyny. Współczesny trend mający na celu minimalizowania zniszczeń, których może dokonać mityczny zwykły użytkownik, nie spowodował znaczącego spadku niewytłumaczalnych sytuacji w których pozostaje tylko „spróbować wyłączyć i włączyć z powrotem” – co w tej sytuacji oznacza zwykle reinstalację systemu.

Poprzednie wersje Windows miały możliwość uruchomienia się z ostatniej konfiguracji, którą wewnętrzni audytorzy uznali za poprawną. Ósemka dodała coś, co jest zdecydowanie lepszym rozwiązaniem.

Dwie nowe opcje: „odśwież” i „odtwórz” powodują, odpowiednio, reinstalację systemu z zachowaniem danych użytkownika oraz kompletną reinstalację systemu. Przy wybraniu trybu odświeżania nie zostaną zainstalowane aplikacje (bo przecież to one mogą być powodem spadku wydajności, czy też kompletnej katastrofy). Moim zdaniem to idealne rozwiązania dla potencjalnych użytkowników tabletów.

I like Metro. Metro-like

Jeszcze chwilę o tym, co widać: język wizualny, w którym komunikuje się Windows 8, to jest to zdecydowana zmiana jakości. Zdania co do kierunku tej zmiany są podzielone, ale nauczony latami obserwowania ludzi buntującym się przeciwko zmianom interfejsu użytkownika robiłbym odczyty nastrojów panujących wśród użytkowników rok po wydaniu. Kto dziś pamięta o każdym z dramatów użytkowników Facebooka spowodowanych dodaniem tego, czy ujęciem tamtego?

Trzeba oddać Microsoftowi jedno: krytykowany przez wielu za brak innowacyjności, odtwórczość i brak pomysłów pokazał wiodącym platformom mobilnym, że pozbycie się „problemu” miliarda użytkowników zdecydowanie uwalnia kreatywne soki płynące w autorach najpopularniejszego systemu operacyjnego.

Android i iOS są jak stare kapcie. Wygodne, znane i zupełnie nudne. Elementy UI, siatka z ikonami, przyciski. Ostatnie zmiany w iOS (i OS X) przyniosły jeszcze większe rozczarowanie pod postacią skeumorfizmu promowanego w niektórych aplikacjach systemowych.

Windows Phone 7 – i dziedziczący jego język graficzny Windows 8 – wypadają tu doskonale. Interfejs nie tylko prezentuje się nowocześnie, ale zdaje się rozumieć środowisko w którym jest używany. Anglosasi mają takie ładne powiedzenie na to, co prezentuje sobą Metro: glanceable information; po naszemu napisałbym „informacje podatne na zerknięcia”.

Zmiana warstwy prezentacyjnej pociąga za sobą pewne skutki. Pierwszym z nich jest niedostępność nowego produktu na – całkiem niedawno jeszcze bardzo popularnych – netbookach z dziesięciocalowym ekranem i rozdzielczością 1024×600. Minimalne wymagania co do rozdzielczości to 1024×768 dla aplikacji w trybie pełnoekranowym i 1366×767 dla widoku w którym jedna aplikacja jest „zwinięta” do swojej zminimalizowanej postaci, a druga zajmuje większość ekranu.

Po raz pierwszy autorzy systemu stają przed problemem, który do niedawna można było w miarę bezpiecznie zignorować: niezależność prezentacji od rozdzielczości (ang. resolution independence). Nowe tablety, idąc za marketingowym sukcesem iPada, będą posiadały wyświetlacze o gęstości pikseli dotychczas niespotykanej na ekranach komputerów.

Zacznijmy od tego, czym jest ta gęstość czy też DPI. DPI (ang. dots per inch) to liczba, która mówi nam ile punktów możemy zaświecić na calu wyświetlacza (2.54 centymetra). Jeżeli narysujemy kwadrat o boku ośmiu pikseli na wyświetlaczu z 90 DPI, to jego obraz zajmie 1/10 cala – problem w tym, że ten sam obraz na „gęściejszym” wyświetlaczu tabletu może być dużo mniejszym (mimo zachowania swoich wymiarów w pikselach). Powoduje to, że współczesne systemy muszą używać jednostek, które nie są powiązane z liczbą punktów dostępnych na ekranie.

Ze względu na elementy użyte w interfejsie użytkownika samo uzyskanie resolution independence jest dużo łatwiejsze niż w przypadku „tradycyjnych” interfejsów; do tego dochodzi możliwość wykorzystywania grafiki wektorowej (SVG) i możliwość utworzenia bitmapowych elementów graficznych w różnych rozdzielczościach, co w efekcie pozwala otrzymać lepsze efekty podczas skalowania.

Największą niespodzianką dla mnie było jednak miejsce jakie zajmują HTML, CSS i JS w przyborniku projektanta. Różne systemy próbowały zaprząc te webowe technologie do pracy na rzecz powiększania bazy aplikacji, nigdy jednak nie skończyło się to czymś więcej niż garścią bezużytecznych widżetów lub – jak w przypadku Chrome OS – zupełnie niczym konkretnym.

W Windows 8 UI zaprojektowane w HTML-u jest równoprawne z wyklikanym dla „binarnej aplikacji”. Kod w JS ma dostęp do API systemu na tych samych prawach, na jakich dostęp uzyskuje aplikacja napisana w .NET/C#. Nie chcę tu niczego wieszczyć, ale znam kilku łebskich ludzi, którzy są świetnymi projektantami, ale nigdy nie będą chcieli brnąć przez VisualStudio; po raz pierwszy widzę dla nich realną opcję pisania pełnoprawnych aplikacji bez pomocy „prawdziwego programisty”.

Windows 8 Briefing

Jak wspominałem na początku tekstu, zostałem zaproszony na promocyjne spotkanie dotyczące Windows 8 i to dzięki temu udało mi się dowiedzieć kilku rzeczy z pierwszej ręki. Ponieważ takie spotkania mają charakter marketingowy, zdecydowałem się nie zanudzać Was szczegółowym raportem; na szczęście wystąpienia marketerów nie były irytujące (standardowe zagrania, które każdy z odrobiną krytycznego myślenia potrafi przełożyć na rzeczywistość), a prezentacje technologiczne zdecydowanie przebiły moje oczekiwania. Warto wspomnieć o dwóch rzeczach, które nie leżą bezpośrednio w technologicznym zagonie.

MetroOne

Microsoft odpalił platformę dla obecnych i przyszłych developerów aplikacji dla Windows 8. Muszę przyznać, że jest to pomysł trafny i powinien przełożyć się na zainteresowanie wszelkiej maści klikaczy. Mamy tu giełdę pomysłów (można uzyskać dowód społeczny, choć w świecie starup-ów nie jest to może dowód ostateczny i przekonywający), możemy zbierać się w grupy i próbować zamieniać pomysły w produkty.

Całość zamyka się między portalem randkowym dla technicznie obdarzonych (zdolny grafik poszukuje programisty domatora, cel apptrymonialny) i społecznościówką.

Sklep

Sklep z aplikacjami, jak na debiutującą platformę, ma pełen zestaw modeli biznesowych dla autorów. Można wydawać aplikacje darmowe, płatne, aplikacje z modelem subskrypcji, reklamy (własne lub z sieci MS) oraz freemium.

Pieniędzmi dzielimy się z operatorem sklepu w „standardowej” skali 30% do 70%, a w przypadku aplikacji, które zarobiły ponad \$25K – 20% do 80% dla sprzedawcy.

Konto developerskie kosztuje około 140 PLN i jest płatne jednokrotnie.

Obsług sklepu wbudowana jest wprost w VisualStudio 11.1, można z niego nie tylko dokonać rejestracji, ale także zarezerwować nazwę aplikacji. Nie wiem jeszcze jak MS poradzi sobie ze squatersami, ale z pewnością niedługo usłyszymy o jakiejś spektakularnej bójce pomiędzy producentami przycisków do wydawania odgłosów pierdów.

Podziękowania

Szczególne podziękowania dla Daniela Biesiady i Tomasza Kopacza, za niemal stoickie podejście do gościa, który atakuje ich z notatnikiem. („O boże, masz cały notatnik pytań?” i „O rany, papier”). Korektę wykonał niezastąpiony Piotr Wojciech Szotkowski.

Jeżeli jesteś posiadaczem Kindla możesz zapisać się na listę dystrybucyjną i otrzymywać te same teksty! Czyż to nie wspaniałe? ;-)

  1. komentarz telewizyjny jest zabójczy, siriusbiznes

38911

Historia zaczyna się wiele lat temu. Były żołnierz amerykańskiej armii zostaje taksówkarzem, a żeby dorobić jeszcze kilka dolarów, otwiera biznes naprawiający i importujący maszyny do pisania. Kiedy rynek maszyn do pisania obumiera, firma, którą założył, zaczyna produkować kalkulatory naukowe. Tak jak wcześniej, nie jest mu dane spocząć na laurach. Na rynku pojawiają się kalkulatory firmy Texas Instrument, które są bezkonkurencyjne cenowo. TI ma dostęp do tanich układów scalonych i nasz bohater widzi tylko jedno rozwiązanie: należy znaleźć firmę produkującą procesory i ją wykupić.

W 1976 firma MOS zostaje wykupiona. Jeden z łebskich pracowników nowo przejętej firmy zaprojektował właśnie nowy, obiecujący układ. Tym inżynierem jest Chuck Peddle, a układ, który okazał się strzałem w dziesiątkę, to MOS 6502.

Tak rodzi się firma Commodore, którą znamy. Commodore, producent komputerów osobistych dla mas, nie dla klas.

Pierwszym hitem jest Commodore VIC-20.

Nigdy wcześniej komputer nie sprzedał się w takich ilościach. Milion sztuk VIC-20 trafiło do szkół i prywatnych domów. Pośród miliona użytkowników komputera w kształcie chlebaka znaleźli się między innymi Linus 1 i Theo. Możecie ich znać jako autorów Linuksa i OpenBSD.

Późnym latem 1982 roku Commodore wypuściło na rynek następcę VIC-20. Oparty na tym samym procesorze, ze zdecydowanie ulepszonym układem dźwiękowym i graficznym, z ceną uderzającą w konkurencyjne produkty Atari i Apple, Commodore 64 okazał się ogólnoświatowym hitem.

Jak fantastycznym i przełomowym komputerem był Commodore 64? Tak fantastycznym i przełomowym, że nie muszę pisać nawet zdania na usprawiedliwienie tej tezy. O C64 napisano wiele i nie sądzę, abym mógł oddać sprawiedliwość tej kultowej maszynie w jednym krótkim tekście.

I znów, jak we wcześniejszym wcieleniu Commodore – producenta kalkulatorów naukowych, a scenę wkracza Texas Instrument, który zaczyna zdobywać rynek tanich komputerów. Rok po wydaniu C64 firma jest na skraju bankructwa. Zarząd się piekli. Jack Tramiel odchodzi.

Odchodzi z Commodore, ale nie schodzi ze sceny. Wykupuje udziały Atari i w 1987 świat otrzymuje kolejny prezent, linię Atari ST, pieszczotliwie zwaną przez fanów „Jackintoshami”.

To wszystko, z odnośnikami i cytatami, mogliście przeczytać na Wikipedii lub w jednym z setek tekstów, które pojawiły się po niedawnej śmierci Tramiela. Nie odkrywam przed wami tajemnic, nie zdążyłem zrobić lepszego przeglądu źródeł, nie jestem dziennikarzem,
nie umiem.

Medium pozwala mi jednak na coś, czego nie robi się w poważnych publikacjach o śmierci notabli. Napiszę coś od siebie.

Nie potrafię sobie wyobrazić siebie bez Commodore. Ten Emil, który tu teraz pisze, o 4:47 w sobotę, nigdy nie byłby fascynatem komputerów, gdyby któregoś wiosennego dnia Tata nie przywiózł z Universalu C64.

Zanim o samym komputerze, trochę o drodze. Od „zawsze” (kiedy kolega z klasy pożyczył mi instrukcję do swojego Timeksa 2048) wiedziałem, że chcę być „komputerowcem”. Niestety, w domu się raczej nie przelewało, a i czasy były takie, że nie zawsze można było po prostu wyjść i coś kupić.

Nie było komputerów, nie było słodyczy.

Słodycze były ważne w życiu każdego dziecka, dlatego też stałem się
bohaterem domu, kiedy to na święta otrzymałem w paczce żywnościowej 2 wielkiego Mikołaja z czekolady. Cała rodzina, włącznie z dorosłymi, przebierała nogami i czekała, kiedy odwinę sreberko z tego rogu obfitości.

Ruszony jakimś nieludzkim odruchem, który teraz byłby rozpoznany jako terroryzm, umiejscowiłem Mikołaja za szybką w segmencie i powiedziałem:

— Mikołaja zjemy, jak dostanę komputer.

To było wyzwanie, wyrzeczenie. Niemal religijna asceza, której nie spodziewałbym się po kilkulatku, a której teraz nie mógłbym podołać.

Półtora roku później, w okolicach Świąt Wielkanocnych, zjedliśmy Mikołaja. Był przeterminowany, ale smak zwycięstwa pobija smak mlecznej czekolady.

Ponieważ nic w moim życiu nie może iść normalnym torem, okazało się, że nie możemy wgrać żadnej gry. Studiowałem z Ojcem instrukcję do popularnego kartridża 3 i za nic na świecie nie mogliśmy uzyskać poziomej kreski, która poprzedzała „L”. Próbowaliśmy minusa, znaków w trybie graficznym. Nic nie dawało rady.

Następnego dnia, w sobotę, udałem się na boisko przygotowywać się do bycia piłkarzem. 4 Kiedy wróciłem, z pokoju dochodziły trzaski i piski. Wpadłem do mieszkania i zobaczyłem, że Ojciec „gra” na C64. Na ekranie były klawisze pianina, pewnie jedna oktawa, i dało się grać przy użyciu QWERTY. Byłem zszokowany. Dopytywałem, jak to możliwe i która pozioma kreska zadziałała!

To nie była „gra z kasety”, Ojciec przepisał program z niemieckiej instrukcji obsługi, kiedy ja grałem w piłkę. Moje uczucia, których teraz nie potrafię ująć w słowa, zamykały się w okolicach „cokurwaco”.

I tak zostałem programistą.

A pozioma kreska? Okazało się, że instrukcja na ksero była źle odbita i pozioma kreska zgubiła grot. Strzałkaelreturn zdecydowanie odbiła się na moich stopniach.

Minęło kilka dni i rozpoczęły się rekolekcje. Byłem dzieckiem mocno religijnym, zafascynowanym biblijnymi historiami. Do kościoła zabrałem tę samą książkę, z której Ojciec przepisał „pianino”. W połowie mszy zostałem przyłapany przez siostrę zakonną, która zwróciła się do mnie tymi słowami:

— To bardzo miło, że uczysz się matematyki 5, ale to jest dom boży i musisz uczestniczyć we mszy świętej albo wyjść.

Więc wyszedłem. Bóg bogiem, ale animacja duszków była dużo bardziej
namacalna i fascynująca.

I tak zostałem ateistą.

Za to wszystko „dzięki tobie składają”, Jacku Trzmielu.

Komputerowcy z drugiej be: Marcin (Atari 65XL), Radek (Timex 2048), Emil (C64)

  1. tu polecę „Just for fun”, biografię Linusa
  2. dla młodszych czytelników: pracownicy dostawali paczki świąteczne dla dzieci. Cukierki, może pomarańcza, ciastka. To jeden z powodów dla których nienawidzę „Michałków”, próbowaliście jeść „Michałki” i tylko „Michałki” przez trzy miesiące?
  3. borze, borze; co to za słowo
  4. Ojej, to były marzenia
  5. książka otwarta na bloku DATA

Słuchawki marki Zajebistość i Zasobność

Najważniejszą rzeczą we współczesnym świecie jest osobisty branding. Markowe ubranie z metką, okulary, model telefonu, ilość przerzutek czy tatuaż mówią o tobie więcej niż twoje dokonania. W świecie wizualnych bodźców dużo łatwiej dobierać się w grupy po zgodności markowych indykatorów niż inwestować w bolesny i czasochłonny proces poznawania opinii i idei przyświecających współobywatelom.

Nie macie się co zapierać nogami; mechanizm działa w świecie zwierząt, musi działać i z nami, erektusami. Pawia nikt nie pyta o opinię na temat reformy emerytalnej, ale jak rozwinie ogon to wiemy: kiep czy alpha.

Od czasu, kiedy na rynek odtwarzaczy audio trafił produkt firmy Apple, iPod, słuchawki stały się jednym z ważnych wskaźników pozwalających rozpoznać ludzi. Idąc tym tropem i mając dożywotnio przestawioną wajchę w pozycję au contriare zakupiłem słuchawki, który wysyłają konkretny przekaz.

Zacznijmy od koloru. Są czerwone. Jak krew, jak sportowe samochody. Jak zachody słońca i czerwone maki spod Monte Casino. Jak miejska sygnalizacja świetlna zdają się wołać: stój i patrz na mnie, nie chcesz chyba wpaść pod samochód banalności na skrzyżowaniu życia?

Krótki przewód powoduje, że nie mogę schować swojego telefonu do kieszeni w spodniach. Porzucę fałszywą skromność, telefon będzie od tej pory w przedniej kieszeni mojej koszuli, a cienka, czerwona linia poprowadzi twój wzrok wprost do uzmysłowienia sobie, że nie tylko mam sprytnotelefon, ale słucham na nim podcastów o startapach; jestem nowoczesny i dwa kroki przed tobą!

Jakość dźwięku jest rozpoznawalna tylko dla koneserów. Słuchawki nie są w stanie przenosić niskich tonów dzięki czemu mogę przesłuchać dowolną kompilację dubstepu i wydać miażdżącą opinię o bankructwie muzyki popularnej:

— Bez dropu to tylko takie disko z Casio.

Nie należy też pomijać kraju producenta. Chiny mają rozwijającą się ekonomię i w niedalekiej przyszłości mogą zacząć produkować elektronikę użytkową dla całego świata, a dzięki temu uzyskają ekonomiczną skalę pozwalającą utrzymywać niskie ceny. Może nie dziś, może nie jutro: niedługo wszyscy będziecie mieć coś, co pochodzi z chińskiej fabryki. Wtedy uderzę się w uda i zawołam: miałem chińskie słuchawki zanim się to stało modne.

Ostatecznym argumentem, który przeważył i skłonił mnie do zakupu był design. Słuchawki nie tylko pasują do uszu, ale dzięki zastosowaniu gumowych końcówek wiesz, że je nosisz. Nie ma minuty w której nie czułbyś ich w uszach.

Pozostawię was ze zdjęciem pozwoli zrozumieć jak doskonałego zakupu dokonałem. Proszę, nie kopiujcie mojego unikalnego stylu i gustu.

Miało nie być notek. Miałem pisać listy. Wysłałem jeden. Nie mam czasu, serio. Notki też bym nie pisał, gdyby nie fakt, że jest ranek i jestem zirytowany. Notka bez kurekty. Fotografia Aleksandra Korszuń.