Gusta

28 VII 2006, 18:54:52

Problem z lubieniem czegokolwiek jest taki, że zanim się zacznie coś lubić, to trzeba na to albo przez przypadek wpaść, albo się naszukać. Np. -- żeby wiedzieć co lubię czytać, pierw muszę się przedrzeć przez dwie półki książek (a to i tak ledwie pewien procent tego, co powinienem sprawdzić).

Jeszcze gorzej -- czego lubię słuchać? Dzięki "Spider's Web" Katie Meluy i "Is Jesus Your Pal" Emiliany Torrini (no, niech jeszcze będzie "Gollum's Song" tejże) wiem, że lubię tego typu mocne kobiece głosy do dobrej linii melodycznej.

Ale to tylko czubek góry lodowej. Muzyki wszelakiej jest w pi... w cholerę :/

Hipermarket Real to the Rescue! Właśnie zakupiłem sobie dziewięć płyt, z czego osiem z muzyką klasyczną (kolekcja jest dziesięciopłytowa, ale niestety dwóch nie mieli), a jedna z pieśniami Żydowskimi. Ledwie 10zł za płytę! Nawet jeśli się okaże, że przy 99% klasycznej będę ziewał (a zapewne będę), to może przynajmniej znajdę sobie jakiegoś autora, który mi się jednak spodoba (a wtedy wrócę do w/w Reala, bo są tam też płyty poszczególnych autorów, też po 10zł za sztukę :)

(A płyty postawię w jakimś widocznym miejscu dla szpanu, har har. Hmm, albo nie, bo to obciachowo tak ostentacyjnie szpanować. Postawię tylko te, które mi się spodobają, o.)

A, właśnie, ani w Realu ani w Media Markcie nie było płyty Katie Meluy. Buuuu.

Wyrzucanie książek

27 VII 2006, 22:54:26

Ponieważ ostatnio zanabyłem byłem sporą ilość książek (jadę po klasykach sf i fantasy; jak teraz tak na to patrzę, to chyba do końca roku mi się nie uda wszystkiego przeczytać, a tyle jeszcze do kupienia...), postanowiłem zrobić lekkie przemeblowanie, robiąc z owych książek podstawową zawartość półek w meblach. Przy okazji trzeba było przejrzeć pewną szafę ze starymi książkami, czy może tam nie będzie czegoś ciekawego do wystawienia.

Teraz po przejrzeniu tej szafy mam dwa problemy. Pierwszy związany z usuwaniem niepotrzebnych książek, czyli "co wywalić"? Na pewno idą do kosza wszystkie podręczniki szkolne, wliczając w to jakieś moje niedobitki oraz całkiem pokaźny zbiorek podręczników moich rodziców. No bo na co komu podręcznik do języka francuskiego sprzed trzydziestu lat. Albo, tym bardziej, do jedynie słusznej robotniczej i antyburżuazyjnej historii tego wielkiego kraju (do kupy z po wieki umiłowaną mateczką rosją; starych pierdzieli to czytających z góry przepraszam za nieumiejętne odzwierciedlenie stylu pisarskiego epoki i przy okazji życzę jak najszybszej śmierci, bo jak widzę w gazecie IPN to mnie trzepie; jak was nie będzie, to problemu też nie będzie :). So far so good.

Powstaje problem z innymi książkami "o wiedzy". Podręczników uniwersyteckich jakoś nie wypada wywalać i rzeczywiście, za wywalenie do kosza trzytomowej "Historii filozofii" Władysława Tatarkiewicza pewnie bym się smażył w piekle (w takim specjalnym miejscu piekła przeznaczonym dla pedofili i ludzi gadających na głos w teatrze). Takoż książki z matematyki, czy też fizyki raczej za bardzo na aktualności nie tracą (Newtona chyba nikt przez ostatnie 30 lat nie obalił; acz i tak raczej wolałbym się uczyć z czegoś aktualniejszego). Ale już książki techniczne? Wyobrażacie sobie o czym muszą być "podstawy elektroniki" z lat siedemdziesiątych? Albo, erm, prepe, prope, eee, chwila, pójdę sprawdzić... "Propedeutyka informatyki" (wtf?). Tam jest spora ilość pozycji tak humanistycznych, jak i inżynierskich, ale za cholerę nie widzę, żeby to było przydatne do czegokolwiek poza makulaturą.

Ale to raz, że jednak tak dziwnie wywalać książki, a dwa -- twardy jestem, wywalić wywalę (skoro wywaliłem parę lat temu sporą kolekcję Secret Service'ów, to nie ma dla mnie rzeczy niemożliwych), ale nie chciałbym wywalić czegoś, co się jednak może komuś przydać.

Drugi problem mam z beletrystyką (mądre słowo, muszę kiedyś sprawdzić w jakimś słowniku, czy znaczy to, co rzeczywiście myślę, że znaczy). Jest tam sporo klasyków, London, Hemingway, (Karol May :), jakiśtam poczet pisarzy polskich (niektóre pozycje w całkiem dobrym stanie, chyba nawet sobie wstawię na półkę) -- ok, niech sobie będą. Z góry wiem, że przez wiersze Różewicza się przedzierał nie będę, takoż przez Pana Tadeusza, więc niech sobie leży. Ale co z pozostałymi pozycjami?

Niektóre (ba, większość) pewnie są do dupy i bym się przy nich zanudził na śmierć (kiedyś spróbowałem szans z jakąś powieścią nibysensacyjną dziejącą się zaraz po tym, jak ruskie wyzwoliły Europę; po kilkunastu stronach mój mózg odmówił dalszej współpracy z powodów... ideologicznych; niekończących się akapitów powodów ideologicznych). Jak człowiek nie jest już dzieckiem, to nie ma niestety nieskończonych zasobów czasu (i ochoty) na czytanie, a wypadałoby choćby się przez tych klasyków sf i fantasy jednak przedrzeć w ciągu najbliższych kilku lat. Ale...

Ale to jest jednak takie zakładanie sobie klapek na oczy. "Klasycy" wcale nie mają patentu na dobre książki, a już zwłaszcza biorąc pod uwagę, że nie interesuję się i nie planuję interesować literaturą inną, niż wspomniana już fantastyka. Więc... nie wiem jak to ująć. Więc "wypada" (?), żebym jednak choćby spróbował zobaczyć czym też interesowali się moi rodzice?

Bo gdyby nie takie buszowanie w starociach, to ominęłyby mnie przygody różnych zabijaków podczas gorączki złota w ameryce, nie wiedziałbym nic o "Samotnym rejsie Opty", nie poznałbym pewnych sybiraków opisywanych przez Igora Neverly'ego, etc, etc.

Czas jednak powinien być z gumy.

Ja i mój kernel

25 VII 2006, 17:31:52

Grzebanie po różnych tekstach odnośnie szybkiego czytania, mind mapów i takich tam oczywiście musiało się skończyć wpadnięciem na przynajmniej kilka tekstów z zakresu ogólnie pojętego self development. Ich przydatność jest zależna od tego, co dany człowiek potrzebuje akurat w danej chwili, ale muszę przyznać, że przez przypadek udało mi się znaleźć prawdziwą perełkę (i to nie tyle ze względu na treść, ile na formę; zaraz wytłumaczę :).

Generalnie rzecz biorąc spora część "bycia dorosłym" (idiotyczne określenie, no ale co tam) sprowadza się do zaakceptowania faktu, że ja wcale nie składam się ze mnie, tylko z mojego ciała, mojego mózgu wraz z ośrodkiem nerwowym i małej części mojego mózgu odpowiedzialnej za myślenie wysokiego poziomu (czyli to, co większość ludzi ma na myśli mówiąc "ja"). Ponieważ "z natury" jestem przyzwyczajony do rozwiązywania problemów, a na dodatek obsługując coś (włączając w to siebie) lubię wiedzieć na jakiej zasadzie owo coś działa, więc nie miałem większych problemów z zaakceptowaniem takiego podejścia (ba, było ono wręcz zbawienne). Skutek ogólnie jest taki, że do samego siebie mam stosunek mocno instrumentalny, w szczególności zaś dotyczy to ciała i tych "pierwotnych" funkcji mózgu. W praktyce sprowadza się to do posiadania znacznego dystansu do sporej ilości spraw dotyczących mnie samego i mojego otoczenia. Można powiedzieć, że jestem dosyć beznamiętny w tych kwestiach. Jeśli coś mi sprawia przyjemność i jestem happy, no to... no to jestem happy. Jeśli zaś moje emocje zaczynają działać nie tak, jakbym chciał (ditto jeśli chodzi o zachowanie mojego ciała), to jest to dla mnie głównie powód do irytacji, gdyż oznacza, że teraz muszę znowu spędzić czas próbując wykombinować jakiś sprytny sposób na spacyfikowanie tego niekorzystnego zachowania. A jak wiadomo jestem leniem.

Ale nie o sobie chciałem pisać. Chodzi mi o opis podejścia do tych rzeczy. Otóż udało mi się trafić na tekst w którym jakiś facet opisuje to samo, ale w znacznie większej ilości słów. I pewnie nie przeczytałbym więcej, jak paru akapitów, gdyby nie zastosowana terminologia wyciągnięta z teorii systemów operacyjnych i programowania :) Ten facet powinien dostać Pulitzera, czy coś, bo czyta się to po prostu świetnie. Polecam choćby dla rozrywki :)

Czytać, czytać, czytać

25 VII 2006, 00:38:16

Jakby to fajnie było, gdyby można było przygotować kompendium tekstów "Jak to przeczytasz, to będziesz bardzo mądry i będziesz bardzo dużo wiedział". Ale się nie da, a nawet jakby się dało, to wątpliwą moralnie (?) jest próba masowej produkcji intelektualnych klonów osoby odpowiedzialnej za dobór tekstów.

Żeby rzeczywiście dużo wiedzieć i mieć szerokie horyzonty trzeba po prostu dużo czytać. Trzeba znaleźć sobie źródła tekstów nie schodzących poniżej pewnego poziomu, po czym sukcesywnie się przez nie przedzierać. Jedne będą lepsze, inne gorsze, czasami trafi się perełka. Ale żadna osoba nie jest w stanie za nas dokonać tego wyboru. Oczywiście, powinniśmy się sugerować zdaniem odpowiednich ludzi, bo za dużo jest liter na świecie, żeby przeczytać wszystkie co do jednej, ale to od naszych doświadczeń, od naszego gustu (od tego jak sobie ów gust wyrobimy) zależy, które z przeczytanych tekstów uznamy za wartościowe i które wywrą na nas jakiś wpływ.

Tak, ja wiem, po raz kolejny odkrywam amerykę, ale... ale na tym właśnie polega piękno i przekleństwo uczenia -- to co wiesz ty jest tylko i wyłącznie twoją własnością. Ty tak naprawdę nie możesz mi tej wiedzy "przekazać". Ona jest tylko i wyłącznie w tobie. Możesz jedynie sprawić, żebym sam był w stanie odkryć coś podobnego do twojej wiedzy. Owszem, w moim odkryciu będą echa twojej wiedzy, ale to już nie będzie twoja wiedza. Ona będzie moja -- widziana moimi oczami, przesiana przez sito moich doświadczeń i mojego charakteru.

Chcę przez to powiedzieć, że jeśli tylko przeczytasz powyższy akapit, to do niczego ci się on tak naprawdę nie przyda. Nic się z niego nie dowiesz. Za pół godziny nawet nie będziesz pamiętał, że coś czytałeś.

Żeby rzeczywiście czegoś się z niego dowiedzieć, najlepiej, gdybyś w trakcie czytania był w stanie go odnieść do jakiś konkretnych swoich doświadczeń, gdyż dzięki temu miałbyś pewność, że zapamiętasz wnioski z niego płynące. W przypadku braku takich odniesień, musiałbyś przynajmniej trochę posiedzieć w spokoju i porozważać implikacje płynące z tego, co właśnie przeczytałeś. Ale efekt i tak pewnie byłby gorszy, niż w pierwszym przypadku. Cóż, człowiek tak już jest skonstruowany, że żeby rzeczywiście się czegoś nauczyć potrzebuje połączeń z czymś, co już przeżył -- czegoś, co nazywamy doświadczeniem.

I właśnie dlatego, drogi czytelniku, tak ważne jest dla mnie odkrywanie ameryki. Z każdą nową ameryką rzeczywiście czegoś się uczę. A ten wpis? On jest jednym ze sposobów zwiększenia szansy na to, że tę swoją naukę rzeczywiście zapamiętam na jakiś dłuższy czas.

(Nawiasem mówiąc -- powyższy tekst jest przykładem eseju, którego wnioski nie były mi jeszcze znane, gdy zabierałem się za jego pisanie. Innymi słowy pisząc pierwsze zdania w ogóle jeszcze nie byłem świadom tego kawałka o odkrywaniu ameryk.)

Przy okazji -- sensem pisania bezwzrokowego jest możliwość przekazywania "czystych" myśli bezpośrednio na elektroniczny papier. Nie trzeba świadomie skupiać się na klawiaturze, albo na literowaniu wyrazów, które się pisze. Po prostu myślę, palce mi chodzą, a na ekranie komputera w cudowny sposób pojawia się dokładnie to, o czym myślę. Bez żadnego dodatkowego wysiłku intelektualnego z mojej strony. Tak jak z mówieniem -- dzieje się to automatycznie.

Ale co z komunikacją w drugą stronę, tzn. czytaniem. Ja dużo czytam, a chciałbym jeszcze więcej, więc czytanie, erm, bezmyślowe (bezmyślne :) byłoby mi bardzo przydatne. Wiem, że są kursy szybkiego czytania, ale one są zoptymalizowane pod kątem martwych drzew. Ja nie chcę znać "technik" szybkiego czytania i obejmowania wzrokiem pięciu kartek A4 na raz, ja chcę po prostu być w stanie czytać bez przetwarzania w myślach każdego przeczytanego słowa. Trza będzie coś pogooglać.

(A, szkoła Jedi najprawdopodobniej zostaje zawieszona. Z przyczyn, hmm, niezależnych.)

Lepsze wybory

24 VII 2006, 02:34:17

Wpadła mi do głowa jedna rzecz -- o ile rozumiem, obecnie ordynacja wyborcza do sejmu jest tak zrobiona, że się po prostu głosuje na określonych ludzi ze swojego okręgu i jak wygrają, to niby reprezentują ów region.

Problem -- jak to się ma do "grup zainteresowań" innych, niż regionalne. Wraz z popularyzacją internetu można założyć, że coraz więcej osób będzie chciało głosować na ludzi rzeczywiście reprezentujących ich poglądy, a nie zlokalizowanych niedaleko w sensie geograficznym i będących najmniejszym złem. I pewnie gdzieś tak w ciągu najbliższych dwudziestu lat, gdy pokolenie już w pełni zinternetyzowane wejdzie w dorosłe życie, będzie trzeba wykombinować co z tym fantem zrobić (albo i nie, bo skoro mamy system partyjny, to takie głosowanie będzie bez sensu, bo co niby taki biedny parlamentarzysta miałby w tym sejmie sam robić bez żadnego wsparcia).

Odpowiem sam sobie -- jak to co, wytykać wszystkim innym posłom co robią źle. A skoro nie byłby partyjny i miałby stały elektorat, to mógłby to robić 'bezkarnie' :)

Honej na posła!

Peeldziany Instytut Statystyczny (PIS)

23 VII 2006, 22:56:26

Czy ktoś potrafiłby oszacować ilość doświadczonych (w sensie -- tych, to potrafią odpowiadać konkretnie na pytania związane z dystrybucją, a nie tylko je zadawać) użytkowników PLD nie będących deweloperami?

(To jest głównie pytanie do tych czytelników, którzy używają albo naszego forum wuwuwu, ale którejś z maillist dla userów, a najlepiej jednego i drugiego i to od dłuższego czasu. Chodzi mi o tych ludzi, którzy się gdzieś internetowo udzielają.)

Note to self: trzymanie wiatraka w szafie podczas takich upałów powinno być karalne z paragrafu o głupocie. Wreszcie jestem w stanie jakoś oddychać!

Szkoła Jedi, część druga

17 VII 2006, 19:13:40

Tym razem będzie krócej.

Do pojęcia 'numeru komputera' (adres IP) dodałem jeszcze koncepcję portu, połączenia port-port oraz słuchania przez dany program na porcie. Do tego łopatologiczne wytłumaczenie co to jest protokół (sposób gadania o danej rzeczy przez dwa programy; komendy typu 'wyślij maila', 'pobierz plik', 'zmień status na gg') i domyślny port tegoż, a to wszystko pokazane na przykładzie urla w przeglądarce (tzn. http[s]://adres[:port]/). Pozwoliło mi to też wytłumaczyć, że własnie przez błędy w obsłudze protokołu można na przykład wrzucić komuś trojana i że windows domyślnie ma kilka portów otwartych z różnymi usługami. I że firewall to jest coś, co siedzi pomiędzy 'połączeniem', a otwartym portem i pozwala blokować owo połączenie nawet wtedy, gdy port jest otwarty (co w konsekwencji chroni przez błędami bezpieczeństwa). A zrozumienie zasad działania protokołów internetowych pozwala na znacznie pewniejsze i sensowniejsze korzystanie z firewalli.

Wspomniałem co to są grupy dyskusyjne i że używają swojego własnego protokołu, przez co wymagają osobnego programu, do tego pokazałem jak w googlu przeszukiwać owe grupy dyskusyjne i jak używać keyworda "site:" w celu przeszukiwania tylko określonego serwisu (jest to wybitnie przydatne, przynajmniej mi).

Następnym razem spora dawka umiejętności praktycznej w postaci zaorania i postawienia od nowa windowsa okraszona jakimiś teoretycznymi ogólnikami związanymi z tym, co akurat będziemy robić.

I do tego chyba przydałoby się opisać głębiej zagadnienia bezpieczeństwa. Ale to na jeszcze później, ewentualnie w trakcie instalacji windy. A, i jeszcze pokazać prostą 'pogadankę' httpową (GET cośtam) via telnet, żeby pojęcie protokołu nabrało jakiś realnych skojarzeń..

Przegląd prasy

16 VII 2006, 15:19:25

Dlaczego konkursy programistyczne (w obecnie najpopularniejszej formie) nie są najlepszym pomysłem. [1] W skrócie argumentacja sprowadza się do tego, że różnej maści konkursy programistyczne promują dużą wiedzę algorytmiczną pozwalającą na intuicyjne dopasowywanie algorytmu do zadania, pisanie na czas, czyli najpaskudniejszy kod przejdzie, byle się go szybko pisało oraz dopasowywanie algorytmu do małej ilości danych testowych.

W rzeczywistości zaś najważniejszy jest bardzo dobry design, czytelny i dobrze udokumentowany kod oraz obiektywnie sprawdzone na zazwyczaj dużej ilości danych wejściowych, a nie intuicyjnie przypasowane algorytmy (gdzie znowu wychodzi zaleta dobrego designu, który pozwala na łatwe podczepienie jakiś automatów do sprawdzania rzeczywistej wydajności proponowanych rozwiązań; w praktyce liczenie tylko na swoją intuicję w zakresie optymalizacji jest bardzo często bardzo bolesne).

Autor bardzo uważa, żeby nie sprawiać wrażenia, że osób dobrze sobie radzących w takich konkursach uważa za istoty niższe i w sumie chwała mu za to, bo faktem jest, że umiejętność szybkiego pisania kodu i duża wiedza algorytmiczna to też jest powód do dumy, już niezależnie od tego, że w praktyce istnieje niewielka szansa na jakieś sensowne użycie tych umiejętności.

(Ja tam intuicyjnie nigdy nie "szanowałem" takich konkursów, ale u mnie to wynikało i wynika z tego, że (a) uczenie się algorytmów uważam za nudne i trudne i (b) wiem, że w takim konkursie wypadłbym zapewne dosyć blado, więc moja motywacja do startowania w nich nigdy nie była jakoś specjalnie duża. Teraz przynajmniej mam o wiele lepsze i mądrzej brzmiące wytłumaczenie mojej niechęci, niż "to jest trudne, a poza tym nie lubię przegrywać". Hehehe.)

Zapewne spora część z was już słyszała wypowiedź Stewarda Butterfielda, współzałożyciela flickra, w której zapowiada, że flickr będzie udostępniał zestawy api do pełnej migracji danych użytkowników, ale tylko do serwisów, które również będą dysponowały takimi api (innymi słowy wolny rynek, ale tylko wśród tych, którzy też wolny rynek wspierają).

Ja bym chciał tu zwrócić uwagę na (oczywiście optymistyczny, a odnoszący się bezpośrednio do wpisu jakiegoś Sunowca, który w sumie też warto przeczytać) komentarz Iana Murdocka w którym zaznacza, że korzysta z del.icio.us właśnie dlatego, że w dowolnym momencie może zabrać swoje dane i pójść gdzie indziej.

Ciekawa uwaga w kontekście joggera2 która jak widzę nadal nie dorobił się eksportu danych. Osobiście jestem zdania, że, hmm, "porażka" nią nie jest pod warunkiem, że człowiek wcześniej przewidział ewentualne ryzyko i je zaakceptował (tzn. pożyczając ci rower godzę się z faktem, że ktoś ci go może rąbnąć, trzymając bloga na joggerze godzę się z faktem, że może wyniknąć dziwna sytuacja w wyniku której go utracę wraz z archiwami, etc.). Dla mnie "przegrana" jest dopiero wtedy, jeśli zdarzy się coś, co weźmie mnie z zaskoczenia. Coś czego nie przewidziałem.

(Uprzedzając zarzuty -- nie, to nie jest atak na sparrowa. Jeśli ktoś z was nie rozumie dlaczego jogger2 powinien mieć eksport danych i to w ogóle abstrahując od osoby sparrowa, to najprawdopodobniej nie jestem tego w stanie wytłumaczyć. Musicie trochę poczekać, przyjdzie samo, wraz z doświadczeniem.)

I jeszcze mała uwaga w kontekście mojego wpisu sprzed dwóch tygodni o tym co jest fajnego w opiece nad czyimiś programami.

Nigdy nie przepadałem za programowaniem, więc moje doświadczenia, choć niezerowe, nigdy nie były jakieś specjalnie duże. Dłubałem w kilku różnych programach, w jednych mniej, w drugich więcej, nic specjalnego. Ale dopiero przy obecnym projekcie dotarło do mnie jak dużo na temat prawidłowego designu można się nauczyć czytając czyiś kod. Gdy zaczynasz rozumieć dlaczego te kawałki są bardzo dobrze zrobione, zaczynasz dostrzegać miejsca, w których oryginalnym autorom jednak nie wyszło i zaczyna ci się w głowie kształtować prawidłowe rozwiązanie... W tym momencie trudno mi sobie wyobrazić, żeby istniał lepszy sposób na naukę takich rzeczy, niż właśnie czytanie i grzebanie w gotowym kodzie.

Cóż, może programowanie wcale nie jest takie złe :)

[1] Nawiasem mówiąc jest to przykład tekstu, z którego możnaby wygolić sporo objętości nie tracąc treści.

Szkoła Jedi, część pierwsza

15 VII 2006, 23:30:51

Co jakiś czas smęcę tutaj swoje teorie na temat edukacji, informatyzowania młodzieży i takich tam, więc możecie sobie chyba wyobrazić moją radość z faktu, że udało mi się znaleźć obiekt chętny do poddania się paru eksperymentom. Ech, młody, niewinny umysł. Cały mój. Mogę go zmieniać, kształtować, popychać w wybranym przeze mnie kierunku.

Zgnieść na miazgę, gdy tylko przyjdzie mi na to ochota.

Poezja!

Fuj, cały się zaśliniłem. Dobra, wracając do konkretów (ostrzegam, że to są nudy pisane dla samego siebie, żebym mógł później do tego zajrzeć i stwierdzić ile z własnych wniosków udało mi się zapamiętać) -- mój padawan studiuje na kierunku humanistycznym i opanował obsługę komputera w stopniu podstawowym, tzn. potrafi intuicyjnie poruszać się w środowisku graficznym (przyciski, pola tekstowe, okienka i reszta tego kramu), natomiast nie ma żadnego zrozumienia zasad ich działania. Standardowy Użytkownik Komputera.

Zrobienie z kogoś takiego 'informatyka' (tzn. docelowo zawodowego) ma obiektywnie bardzo małe szanse powodzenia, dlatego też skupić się należy na czymś zupełnie innym. Pomijając już fakt, że nie da się z kogoś 'zrobić' 'informatyka'. Można jedynie dojść do takiego poziomu wiedzy i zainteresowania tematem, żeby delikwent czuł chęć dalszego zagłębiania się w szczegóły i co równie ważne -- potrafił sobie sam poradzić (a nawet jeśli nie będzie się dalej interesował, to i tak wyniesiona wiedza pozwoli na znacznie sprawniejsze korzystanie z komputera).

Jakiekolwiek linuksy, programowanie, assemblery i takie tam od razu poszły do kosza. Na studiach to działa tak, że należy wyryć książkę na pamięć, a może coś wam się później z niej przyda w praktyce. W rzeczywistości nikt się tak nie uczy. Człowiek musi pierw dojrzeć potrzebę zrobienia czegoś, po czym zaopatrzyć się w minimalną ilość wiedzy potrzebną do wykonania zadania. Na początku jest to często wiedza bardzo ogólna i mechaniczna, z czasem natomiast zwiększa się ilość detali i widzenie zagadnienia w szerszym kontekście.

Bla, bla, dobra, konkrety -- najważniejszą rzeczą jest uświadomić padawanowi, że komputer to narzędzie służące automatyzacji pracy. Im człowiek lepiej opanuje to narzędzie, tym wydajniej (i możliwe, że bardziej kreatywnie) jest w stanie wykonywać swoją robotę. Czyli -- żadnych rewolucji -- uczymy padawana jak wydajniej korzystać z narzędzi, których już używa oraz uczymy zawsze zastanawiać się nad tym, czy obecny sposób wykonywania danej czynności oby na pewno jest optymalny.

W praktyce przełożyło się to na:

Pisanie bezwrokowe. I tu uwaga -- różne Mistrze Klawiatury i takie tam są przydatne do wyrobienia w sobie 'świadomości' gdzie są poszczególne klawisze. Ale należy jak najszybciej pokazać, że pisanie bezwrokowe wcale nie polega na trzymaniu trzech palców na klawiaturze, podczas gdy czwarty rusza się. W rzeczywistości tak się nie da. W praktyce, zależnie od tego, na co pozwala nam klawiatura, można trzymać wszystkie palce zawsze w powietrzu, można trzymać tylko jeden na klawiszu wyjściowym w celu łatwego powrotu, a resztę trzymać w powietrzu podczas ruchu (tzn. małym chcę coś nacisnąć, to wskazujący zostawiam na 'j', po czym resztę palców odrywam i ruszam całą dłonią by w jak najbardziej naturalny sposób owym małym palcem nacisnąć wybrany klawisz). W odpowiednich przypadkach (np. backspace) za ten 'palec kotwiczący' może robić nawet kciuk pod spacją. Pisząc te słowa w ogóle wszystkie palce mam w powietrzu, a to dlatego, że klawiatura jest na tyle mała, że mogę nie odrywać rąk nadgarstków od podłoża, skutkiem czego dłonie mam zawsze w tej samej pozycji. Konfiguracji jest kilka. (Poza tym zaznaczyć teorię, czyli że pisząc bezwrokowo się nie literuje, tak jak nie literuje się pisząc ręcznie. Jest to czynność bardziej automatyczna i dlatego szybka.)

Podstawowe usprawnienia w pracy z windowsem, czyli "w Wordzie nie pozycjonujemy horyzontalnie przy pomocy spacji", kilka skrótów (winkey+d, alt+f4, alt+tab) i wytłumaczenie, że programy mają pełną dowolność w tym jak wyglądają (mogą pokazywać się na pasku zadań, nie muszą, mogą pokazywać się na tacce, nie muszą, mogą się w ogóle pokazywać, nie muszą) i jak reagują na akcje użytkownika, co w praktyce przydatne jest do zrozumienia dlaczego 95% programów po naciśnięciu krzyżyka się wyłącza, a pozostałe 5% (przeważnie p2p i inne programy mające działać w tle) tylko się minimalizuje do tacki.

No i tutaj mały dziwoląg -- minimalna wiedza praktyczna i teoretyczna potrzebna do zdiagnozowania dlaczego akurat mi nie działa internet (padło połączenie do bramki, co to jest bramka, padło połączenie od bramki do internetu, padły dnsy, co to są dnsy). Wszystko w jak najprostszych słowach oczywiście. I okraszone konkretnymi programami do diagnozy i jak z nich korzystać (ping, ipconfig, co właściwie robi ping). Chyba popełniłem błąd, że sam używałem tych programów, zamiast dać padawanowi klepać komendy. Najprawdopodobniej lepiej by wtedy zapamiętał.

A -- i spostrzeżenie związane z "przecież to się nie da tymi palcami tak manewrować" (nie da, bo się nie manewruje palcami, tylko całą dłonią) -- trzeba jak najszybciej pokonać wbudowany opór, że to jest magia, ja nigdy nie będę w stanie, bo kilkawymyślonychnaprędzcepowodów, etc, etc. Nie ma to jak zobaczyć kogoś, kto po kilku uwagach technicznych odnośnie ruszania dłońmi nagle jest w stanie pisać bezwzrokowo i to z całkiem sensowną prędkością. O, jednak się da.

Na następny raz najprawdopodobniej pójdzie wytłumaczenie sposobów korzystania z internetu (tzn. jakie są najpopularniejsze usługi), umiejętność efektywnego korzystania z tego wszystkiego w celu łatwego i szybkiego znajdowania poszukiwanych informacji i jeśli się zmieści, to podstawy zasad działania internetu (że komputery w sieci mają 'numerki' już wytłumaczyłem, bo inaczej bym nie wytłumaczył o co chodzi z pingowaniem bramki i onetu, teraz trza jeszcze dodać, że każdy taki numerek ma porty i pakiety lecą na porty i takie tam; może nawet dlaczego wcześniej omówiony 'ping' portów nie potrzebuje.

Hyyrrr, na niego!

15 VII 2006, 02:39:44

W kontekście blogowych świętych wojen z ostatniego tygodnia (jak raczyła zauważyć Yaal -- sezon ogórkowy w pełni) oraz w duchu mojego własnego wpisu sprzed paru miesięcu i stosując się do rad tam zawartych -- prezentuję krótkie kazanie. Proszę powstać.

Jest zrozumiałe, że człowiek widząc jakieś bred... jakieś opinie z którymi się nie zgadza może zapałać chęcią opier... publicznego zwrócenia na ten fakt uwagi. Jego prawo i w konkretnych przypadkach jak najbardziej słuszna decyzja. Z małym zastrzeżeniem -- wygłaszając te swoje opinie starajcie się jednak robić lepsze wrażenie, niż osoba, którą krytykujecie. Albo chociaż starajcie się nie robić gorszego.

Najważniejsza kwestia -- wygłaszający opinię powinien sobie zdawać sprawę z tego, że jego opinia jest mało ważna, mało kogo interesuje, a na dodatek prawie na pewno nie ma w niej nic odkrywczego (w końcu jesteśmy tylko bandą małp).

Co za tym idzie -- należy dołożyć wszelkich starań, by wyrażać się jasno, zwięźle, precyzyjnie i, kwestia najważniejsza -- z jak najmniejszą ilością powtórzeń. Dlaczego? Bo im więcej gadasz, tym mniejsza jest szansa, że gadasz coś ciekawego. Większość tej naszej blogosfery to maksymalnie dwudziestokilkuletnie podlotki, które choćby nie wiem jak się sprężały, nie dysponują jakąś większą ilością ciekawych przemyśleń. Czyli jeśli widzę po piętnaście twoich komentarzy w co drugim wpisie na dany temat, to jest to dla mnie jasny sygnał, że nie masz nic, ale to absolutnie nic ciekawego do powiedzenia.

Co oczywiście skutkuje tym, że stapiasz mi się w jedną całość z resztą twoich cierpiących na klawiaturowe ADHD towarzyszy.

Klucz do sukcesu -- krótko, zwięźle i na temat. Bez powtarzania. Tylko w ten sposób signal to noise ratio twoich wypowiedzi będzie na tyle wysoki, że jakaś większa ilość osób może pokusi się o zainteresowanie twoimi opiniami i zacznie cię w jakiś sposób dostrzegać w tłumie.

I drugi grzech -- brak umiaru. Człowieka inteligentnego poznać po tym, że wie jaka reakcja jest adekwatna do przewiny. Chcesz obalić czyjeś twierdzenia? Krótko, zwięźle, na temat i bez argumentów ad personam. Owe "twierdzenia" nawet obalenia nie godne, więc chcesz po prostu autorowi publicznie powiedzieć, że jest głupi? To zrób to w sposób humorystyczny, żaluzyjny, czy też jakikolwiek inny nie wprost (i nie mówię tu o stosowaniu rot13). Jeśli nie potrafisz, to siedź cicho, bo od przerzucania się mięsem, patosu z dramatyzmem i generowania flejmów opinia o tobie samym może wylądować jeszcze niżej, niż o osobie, którą chciałeś zdyskredytować.

Dziękuję za uwagę.

ldd vs nm

10 VII 2006, 01:49:59

Ciekawe, ciekawe, jak to długo można żyć w nieświadomości. Programik 'ldd', o czym trudno wywnioskować z mana (przynajmniej w wersji gnu, frizbi ma mana bardziej explicite napisanego), nie pokazuje jeno libów linkowanych do z danej binarki, ale jedzie rekursywnie i pokazuje wszystkie wymagane do jej odpalenia. A jak ktoś chce sprawdzać do czego konkretnie linkuje się ta i tylko ta binarka, to mu narzędzia 'nm' używać.

Szokujące czego to się człowiek może dowiedzieć na stare lata.

10 VII 2006, 01:20:09

Zainteresowania, przyjemności zamieniają się w obowiązki. Nieobowiązkowe, ale obowiązki, bo obiecałem, bo ludzie oczekują, bo przecież nie mogę nie zrobić. Bo przecież ja chcę zrobić, zabrać mi się tylko trudno, ale tak naprawdę chcę, już nie wspominając o tym, że jak w końcu zrobię, to mnie nie będzie gryzło, że nie zrobiłem.

Te obowiązkowe obowiązki z kolei, nawet jeśli obiektywnie całkiem znośne, ba, wręcz ciekawe, dobrze płatne i w ogóle, nadal pozostają obowiązkami. A obowiązki ciążą.

Ludzie. Ludzi jest cholernie mało, są cholernie różni, cholernie niekompatybilni z introwertykami, a przez to cholernie męczący.

A myślenie przeszkadza. Znaczy może nie tyle myślenie samo w sobie, ile poczucia. Poczuwanie się do tego. Poczuwanie się do tamtego. Tego nie zrobię, bo to. Tamtego, bo tamto. Micromanagement samego siebie.

A może by to tak wszystko pierdolnąć i po prostu gdzieś przepaść? Kuszące, jak wszystko, ale, jak wszystko, nie bo to i nie bo tamto. Musiałbym to pierdolnięcie z przepadnięciem dokładnie zaplanować, żeby mi z niczym nie kolidowało i wyznaczyć sobie jakąś granicę, tzn. powiedzmy że mógłbym przez tydzień utrzymać jakieś 95% przepadnięcia i 80-90% pierdolnięcia. Zakładając, że bym się odpowiednio zawczasu przygotował.

Which kind of missess the point.

Dzieci to jednak mają kurwa fajnie.

Dlaczego lenie wolą maintenance programming

03 VII 2006, 04:53:55

Krótki esej sprzed paru tygodni o tym dlaczego najlepiej by było, gdyby przeciętni programiści nie istnieli. W tym konkretnym przypadku tłumaczący jak bardzo stymulującym intelektualnie zajęciem jest opiekowanie się czyimś kodem.

Pierwsza reakcja -- iiiijasne, przecież wszyscy wiedzą, że ci Najlepsi Programiści kochają Wolność i możliwość Nieskrępowanego Tworzenia robiących Różne Cudowne Rzeczy kawałków kodu, a nie zajmowanie się paskudnym kodem jakiś śmiertelników!

Hmm. To ja się chyba muszę od razu przyznać bez bicia, że z archetypicznym romantycznym hakerem (najlepiej z brodą i zacinającą się drukarką z zamkniętymi sterownikami) nie mam nic wspólnego. Nie lubię i nigdy nie lubiłem dłubania dla samego dłubania, tylko po to, żeby sprawdzić jak coś działa, czy też czy da się coś osiągnąć. Jawi mi się to jako strata czasu. Prawda jest taka, że kodowanie samo w sobie jest zajęciem nudnym (podobnie jak pisanie tekstów :) i jedyną rzeczą, dzięki której jestem w stanie w sobie utrzymać motywację, jest perspektywa (jak najszybszego) otrzymania gotowego systemu (za który później mi zapłacą kupę kasy, bądź też który jest mi potrzebny w innym celu). I nie chodzi tu o na prędce sklecony kod, codename "Frankenstein's monster", przy którym później będę sobie wypruwał żyły próbując coś dopisać/poprawić, ale rzecz na tyle dobrze przemyślaną i czysto napisaną, żebym na późniejszych zmianach tracił minimalne ilości czasu (i nerwów).

I właśnie w tym miejscu ujawniają się same plusy przejmowania po kimś kodu. To nie ja spędziłem czas rozgryzając jakiś protokół, klnąć na nieścisłości w implementacji, etc. To nie ja ryzykowałem, że w końcu się okaże, iż całość nie działa, bo nie. I szefie, to nie jest moja wina, że ten program działa tak, a nie inaczej, ale bardzo chętnie wezmę trochę pieniędzy za poprawienie go.

Oczywiście pierwszą rzeczą, jaką muszę w tym wypadku zrobić, jest zapoznanie się z kodem i wykombinowanie jak on w ogóle działa. Jeśli oryginalni autorzy się spieszyli, to najprawdopodobniej nie mam do dyspozycji nawet jakiegoś krótkiego tekstu tłumaczącego strukturę kodu i ogólne założenia projektowe. Ale w rzeczywistości to nie jest aż taki wielki problem. Na pierwszą linię idzie grep, dzięki któremu jestem w stanie prześledzić ścieżki wywołań funkcji, a przy okazji zaglądania w źródła wywalić zakomentowany kod (który z mojego punktu widzenia tylko przeszkadza w czytaniu i grepowaniu, a jeśli rzeczywiście kiedykolwiek będę się musiał do niego odwołać, to od tego jest SCM), dostosować formatowanie do moich preferencji i generalnie nie zmieniając w ogóle funkcjonalności spowodować, że jestem w stanie względnie komfortowo poruszać się po całości.

Brzmi potencjalnie groźnie, ale o ile oryginalnym autorem nie był jakiś totalny patałach, to wcale nie ma się czego bać, gdyż w rzeczywistości nie ma żadnej gwarancji, że gdybym to ja pisał ów kod od początku, to ostatecznie wyglądałby lepiej, niż to co otrzymałem po zastosowaniu zabiegów kosmetycznych na kodzie odziedziczonym. Ba, nie mam nawet gwarancji, że udałoby mi się stworzyć coś działającego (równie dobrze), a w tym konkretnym wypadku jestem panisko, bo dostaję coś, co już działa, a ja mam tylko dodawać jakieś inkrementalne zmiany i wyłapywać ewentualne problemy.

(Oczywiście podstawową wadą nie bycia oryginalnym autorem jest to, że nie zna się powodów, dla których coś jest zakodowane w ten, a nie inny sposób, a co za tym idzie trzeba być bardzo ostrożnym przy wprowadzaniu zmian. Bardzo ostrożnym.)

W tym momencie warto wspomnieć o chyba klasycznym tekście Joela Spolsky'ego poruszającym ten temat (głównie na przykładzie firmy Netscape i tego jak przekichała sprawę tworząc Mozillę od zera i nie będąc w stanie przez kilka lat pokazać klientom czegoś, co nadawałoby się do użytku).

No dobra, ale co w takim razie z tymi magikami kodu, którzy w pojedynkę potrafią w rekordowym czasie tworzyć cuda na kiju?

No cóż. Jeśli mają szczęście, to znajdą dla siebie jakąś niszę, ale prawda jest taka, że ogólnie pojęta informatyka (programiści, administratorzy i tacy tam) ze względu na złożoność systemów komputerowych już dawno temu stała się sportem zespołowym i w związku z tym promuje pewne określone cechy. Znowu odwołam się tu do Spolsky'ego, który dobrze to ujął:

Różnica pomiędzy miernymi, a świetnymi programistami nie leży w tym, ile języków którzy znają, czy też w ich preferencjach względem Pythona, albo Javy. Leży ona w tym, czy potrafią oni przekazywać swoje pomysły. Przekonując innych ludzi, uzyskują oni wpływ na różne rzeczy. Pisząc jasne komentarze i specyfikacje techniczne, pozwalają innym programistom zrozumieć ich kod, dzięki czemu owi programiści zaczynają go używać, zamiast pisać od nowa. Bez tego, ów kod byłby prawie bezwartościowy. Pisząc klarowną dokumentację dla użytkowników, pozwalają innym ludziom na zrozumienie co ich kod ma robić, dzięki czemu mogą oni docenić jego wartość. Jest wiele wartościowego i przydatnego kodu zagrzebanego gdzieś na sourceforge'u, którego nikt nigdy nie używa, ponieważ jego autorzy nie potrafili jasno pisać (albo w ogóle nie potrafili pisać), skutkiem czego nikt się nie dowiedział czego dokonali, a ich błyskotliwy kod obumiera.

Bill Gates nie napisał całego Windowsa, on tylko wytłumaczył ludziom, których zatrudnił, czego od nich oczekuje. Linus nie napisał całego Linuksa, on tylko dogadał się z resztą deweloperów jak co ma wyglądać i jakie standardy należy ustalić. (A malekithowe Nemerle pozostałoby pewnie tylko zabawką paru osób, gdyby nie otwarty model rozwoju i dokumentacja.)

Takie przykłady można mnożyć. Moce przerobowe pojedyńczego człowieka są bardzo ograniczone, więc jedyna szansa, żeby mógł on coś osiągnąć, to wymyślenie czegoś sensownego i przedstawienie swoich planów innym ludziom w taki sposób, żeby przy ich pomocy (docelowo zapewne znacznie przewyższającej wkład własny) móc stworzyć coś ciekawego, pod czym później można się podpisać.

I na koniec dodam jeszcze bardzo dobry tekst o tym, jak duże znaczenie ma metodologia pracy wypracowana przy tworzeniu Linuksa na postrzeganie rozwoju oprogramowania w ogóle (zwłaszcza w kontekście open source). Oczywiście to całe oczernianie SVNa i CVSa jest sporym uproszczeniem, ale sama esensja tego tekstu to coś, z czego naprawdę warto sobie zdawać sprawę.

Ajć, piąta rano. Dobranoc.

« | »