People are obsolete

29 VI 2005, 02:44:33

Ciekawy wywiad (warning: w moim konquerorze nie działa, acz firefox nie ma z nim problemu) i trudno się nie zgodzić przynajmniej ze sporą częścią tego, co mówi ten człowiek. Bo co to za postęp, skoro od ostatnich kilku lat Internet żyje od jednego robaka do drugiego i nikt nie ma pomysłu co z tym zrobić. Firewalle na każdym pececie to nie jest rozwiązanie, bo żeby używać firewalla, to trzeba wiedzieć co się robi. Żaden program nie jest w stanie myśleć za użytkownika i w jakiś magiczny sposób odróżniać te dobre programy od różnej maści trojanów. Więc w momencie, w którym trzeba o coś użytkownika zapytać, to całe security idzie do kosza, bo skąd też ten biedny użytkownik ma wiedzieć o co chodzi?

Zastanowiła mnie inna sprawa. Zasadniczo rzecz biorąc, jeśli domowy system wymaga stałej opieki specjalisty, to możemy to uznać za porażkę technologii, gdyż przestaje on być w tym momencie domowy. Ale do jakiego stopnia technologia może "odpowiadać" za siebie samą i gdzie leży granica oddzielająca możliwości technologii od konieczności ludzkiej interwencji? Personal firewall, niezależnie od tego, jak byłby zaawansowany, nie posiada inteligencji i nie jest w stanie podejmować niczego, poza prostymi decyzjami. To wszystko jest po prostu zbyt skomplikowane, żeby zwykli użytkownicy mogli korzystać ze swoich urządzeń kompletnie w oderwaniu od specjalistów. Wystarczy się rozejrzeć, żeby stwierdzić, że nasycenie rynku rozwiązaniami informatycznymi jest u nas nikłe. Możliwości jest dużo. Ale ile z tych nisz mogą zapełnić po prostu wystarczająco zmyślne gadżety, a gdzie będzie potrzeba zatrudniania ludzi? Gdzie leży granica?

Jak to pisałem, to przyszła mi do głowy pewna analogia. Samochód, urządzenie bardzo zaawansowane technicznie, oddajemy pod opiekę specjalisty, gdy (a) się zepsuje i (b) minie jakiśtam określony czas użytkowania. Drugie jest związane z dbaniem o bezpieczeństwo nasze i innych kierowców, gdyż nie chcielibyśmy, żeby na środku autostrady oderwała nam się kierownica. Pierwsze natomiast dotyczy chyba wszystkich możliwych urządzeń technicznych. Zepsute -- dzwonimy po fachowca. Problem z komputerami jest taki, że to, że są "zepsute", jeszcze nie oznacza, że nie możemy z nich korzystać, bądź, że w ogóle zdajemy sobie sprawę z istnienia "usterki". Jeśli nasz komputer co jakiś czas rozsyła porcję spamu, to my najprawdopodobniej nic o tym nie wiemy. Co się dzieje, gdy łapiemy gumę w samochodzie (albo stłuczemy sobie światło)? Ano nie możemy specjalnie dalej jechać, póki nie naprawimy czego trzeba. Więc co się powinno dziać, gdy nasz komputer zaczyna rozsyłać spamy? Ano nie powinniśmy być w stanie specjalnie korzystać z internetu, póki nie naprawimy czego trzeba. Niestety wprowadzanie takich rozwiązań leży już w gestii ispów. (Inna sprawa, że w ogóle nie powinno być tak, że komputer rozsyła spam, a my o tym nie wiemy, ale o tym w następnym akapicie)

Inna sprawa -- "80% korporacyjnych desktopów jest zainfekowanych spywarem". Z czego wynika to, że możemy mieć w komputerze szpiega i nic o tym nie wiedzieć, albo mieć jakiś durny programik z pornostronami i nie być w stanie go wyłączyć? Z cholernego skomplikowania tak prostej czynności, jaką jest odpalenie programu. Pomyślcie o nowoczesnym linuksowym desktopie -- powiedzmy KDE. Ile procesów spawnuje zalogowanie się? Ile procesów może spawnować odpalenie jednego głupiego programu? Ile jesteście w stanie wymyślić sposobów na dodanie do sesji użytkownika jakiegoś automatycznie się odpalającego przy zalogowaniu pornonamawiacza? No właśnie. Póki będziemy robić systemy, które tylko udają przed użytkownikiem, że są nieskomplikowane, póty tenże użytkownik nie będzie się mógł w nich czuć pewnie.

Statsy

28 VI 2005, 02:19:23

Czy nie istnieje porządny (co najmniej liczenie dziennych unikalnych wejść i pokazywanie wejść z wyszukiwarek), niekomercyjny (bez żadnych 'zgadzam się na wykakiwanie popupów na mojej stronie') serwis ze statsami dla www? A jeśli nawet nie, to choćby skrypty zapewniające odpowiednią funkcjonalność, które mogę sobie gdzieś postawić i mieć prywatne stat4u?

Dlaczego struktura jest ważna

26 VI 2005, 03:32:59

Grzebiąc po blogu Bruce'a Eckela wpadłem na tekst dotyczący sposobu przekazywania informacji. W sumie dotyka on tylko czubka góry lodowej, ale zasadniczo dobrze opisuje mechanizmy publikowania w Internecie. Polecam przeczytanie całości, ale w kontekście mojego ostatniego wpisu o sposobach zdobywania wiedzy, bardzo pasuje mi ten cytat: "I think that there are two ways that we locate information in a resource: search and structure. (...) structure is essential, especially when you don't really know what you're trying to find, or you are learning material for the first time.". Czyli, żeby szukać, trzeba wiedzieć czego się szuka, natomiast żeby stworzyć sobie jakieś wyobrażenie o danym temacie (które później powoduje, że wiemy czego szukać, bo "wiemy, czego nie wiemy"), wskazany jest odpowiednio przemyślany i przygotowany materiał (i dlatego w szkole nie uczy się z googla, tylko z odpowiednio przygotowanych podręczników :).

Poprzeglądałem wczoraj różne strony dla początkujących programistów/linuksiarzy/informatykówwogólności i niektórzy autorzy, może bardziej intuicyjnie, niż świadomie, postarali się też o trochę szersze podejście do omawianego tematu. Tutaj chyba najbardziej rzuciły mi się w oczy pierwsze części tego kursu programowania, gdyż autor nie tylko wytłumaczył jak klepać kod, ale też postarał się o to, by czytelnik zrozumiał jakie mechanizmy rządzą jego środowiskiem i w związku z tym jak najlepiej szukać pomocy. Kontrastuje to z przytłaczającą większością stron o podobnej tematyce, które poza opisami stricte technicznymi, mają do zaoferowania co najwyżej skróconą wersję netykiety, lub link do RTFM (a jeśli nawet jest coś więcej, to pierw trzeba się do tego dokopać, czego mi się nie udało). Na nic, co przypominałoby moją wymarzoną stronę dla początkujących, nie trafiłem.

Ciekawa rzecz -- strony dla początkujących programistów windowsowych (a przynajmniej te, na które ja natrafiłem), skupiają się przeważnie na pisaniu gier. Domyślam się, że wynika to z tego, że nie ma czegoś takiego jak "początkujący programista korporacyjny", bo tych produkują uczelnie, natomiast programista amator nie ma dostępu do źródeł żadnego z używanych programów, każdą jego zachciankę może spełnić 50 różnych freeware'ów i shareware'ów, więc jeśli chce zrobić coś amitniejszego w grupie, to najlepszym wyjściem jest napisanie jakiejś gry (oczywiście nie cytujcie mnie, bo wysoce prawdopodobne, że bredzę :).

BUUUUUUUUUUUUUUUUUUUUUUUUUM

25 VI 2005, 22:43:46
30 metrów ode mnie walnął piorun (sąsiednia, dwa piętra niższa klatka (dach jest kilka metrów wyżej, niż moje mieszkanie)). Ale huk. Telewizora nie popsuło mimo, że chodził. Komputera chyba by nie popsuło, nawet gdyby chodził, ale mi monitor namagnetyzowało i teraz mam część obrazu na zielono :)

Trza edukować

24 VI 2005, 03:15:14

Są ludzie, którzy sprawiają wrażenie, jak gdyby wiedzieli wszystko na jakiś temat. I nie chodzi mi tu o profesorów historii, czy prawa, którzy rzucają różnymi liczbami jak z karabinu (co, swoją drogą, robi wrażenie), ale o poniekąd zwykłych ludzi, których jednak chętnie słuchamy, traktujemy jako źródło dobrych rad, konstruktywnej krytyki, etc. Skąd oni się tak właściwie biorą? Słuchając takich guru możnaby sądzić, że znają się na wszystkim, bo wszystkiego kiedyś próbowali. I do pewnego stopnia jest to prawdą, gdyż muszą oni mieć spory bagaż własnych doświadczeń. Ale spory bagaż niekoniecznie zawiera w sobie cały możliwy dobytek.

Człowiek uczy się wyciągając wnioski z tego, co zrobił sam oraz z tego, co powiedzieli mu inni. I choć do nabycia umiejętności praktycznych niezbędne są bezpośrednie doświadczenia z 'fizycznej' pracy nad czymś, to już wyrobienie w sobie analitycznego podejścia do rozwiązywania problemów oraz odpowiednio szerokiej perspektywy przy patrzeniu na różne zagadnienia wymaga zaznajamiania się z poglądami różnych ludzi. Czyli mówiąc po polsku -- trzeba dużo czytać i to rzeczy wartościowych. Nie wiem jak to dokładnie działa, ale człowiek inteligentny chyba potrzebuje nieustannego stymulowania mięśnia mózgowego, który dzięki temu cały czas produkuje nowe wnioski i nawet jeśli nie jesteśmy w stanie później świadomie dokopać się do konkretnych informacji, które kiedyś 'przyswoiliśmy', czy też wniosków jakie wtedy wysnuliśmy, to nasz mózg na pewnym poziomie świadomości 'pamięta' (bo sobie podorabiał kilka nowych ścieżek neuronowych) i dzięki temu lepiej działa przy analizowaniu nowych zagadnień. W praktyce oznacza to, że podziwiany przez nas analityczny i twórczy umysł, jaki mają np. różnej maści publicyści (czy tam pisarze), można w sobie najzwyczajniej w świecie wyrobić (pisanie bloga pomaga, bo człowiek po pewnym czasie wpada w nawyk analizowania wszystkiego pod kątem opisania na blogu, a późniejsze opisanie czegoś wymaga dokładnego przemyślenia i uporządkowania informacji i wniosków).

Dlatego też taką popularnością cieszą się blogi ludzi, którzy nie piszą o tym, co jedli na śniadanie, ale raczej opisują swój tok myślowy na jakiś, nawet kompletnie przypadkowy (acz przydałoby się, żeby będący w naszym kręgu zainteresowań), temat. Czytając takiego kogoś możemy pomyśleć, że "nie zgadzam się z nim, bo", a może "o! dokładnie do tych samych wniosków doszedłem", a nawet "cholera, właściwie to myślę dokładnie tak samo, mimo, że nigdy świadomie się nad tym tematem nie zastanawiałem", lecz cokolwiek sobie nie pomyślimy, faktem jest, że dzięki temu myśleniu rozwijamy się sami i dlatego lubimy takich ludzi czytać (za to też ludzie cenią hard science-fiction).

Nasz guru w swoim życiu zrobił już dużo rzeczy, przeczytał masę tekstów, ma w głowie dużą ilość szczegółów (praktyka) i wystarczającą ogółów (podstawy teoretyczne poszczególnych zagadnień), by, nawet jeśli trafi na nowe zagadnienie, mógł w bardzo krótkim czasie uzupełnić swój stan wiedzy tak, by być w stanie sprostać postawionemu zadaniu. No i oczywiście wie jak i gdzie szukać interesujących go informacji (choćby te blogi).

A początkujący nie wie prawie nic, nie zna dobrych źródeł (szuka na oślep), zna kilka szczegółów (np. wie jak klepać w htmlu) i ma praktycznie zerową wiedzę ogólną (w miarę działającą stronę zrobi, ale o w3c to już nie słyszał). I właściwie nie ma co liczyć na nasz system edukacji, bo (a) pasjonaci przeważnie ujawniają się kilka lat przed studiami, kiedy to nie mają jeszcze szans na jakieś sensowne wsparcie i (b) studia też nie zapewniają gruntownej wiedzy na wszystkie niezbędne tematy (a często skupiają się na pierdołach pomijając rzeczy ważne).

Uświadomił mi to Zgoda niedawnym wpisem. Ja wiem kto to Spolsky, ja go czytam, ja czasami grzebię po jego archiwach w poszukiwaniu ciekawych rzeczy, ja znam jeszcze kilka źródeł dobrych tekstów (na różne tematy) i przez ostatnie kilka lat przeczytałem ich już niezliczoną ilość (i nadal wyszukuję nowe). A początkujący?

Problemów z tymi tekstami jest kilka -- po pierwsze, jeśli czytać mają je ludzie kompletnie nieopierzeni, to często przydałoby się choćby klika zdań komentarza. Poza tym są one porozsiewane po całym internecie i trzeba je pierw znaleźć. I na koniec -- są po angielsku. Tak, dużo młodych osób zna angielski, ale znać, a swobodnie się czuć w danym języku, to są dwie różne rzeczy, co uświadomił mi niedawno pewien znajomy licealista.

Przydałby się serwis z zebranymi, przetłumaczonymi (bądź napisanymi własnoręcznie) i okomentowanymi najważniejszymi tekstami dla informatyków, oj przydał...

Dosyć surowy ten tekst, ale nie chce mi się go już dopieszczać i ciachać co dłuższych zdań na jakieś bardziej zjadliwe kawałki. Dobranoc.

OpenSolaris przybywa!

15 VI 2005, 18:47:29

Już jest! A przynajmniej częściowo, gdyż zgodnie z planem w miarę kompletnej funkcjonalności możemy się spodziewać gdzieś tak za rok. Samym Solarisem to ja się raczej niespecjalnie interesuję, zaś to, co mi się rzuciło w oczy, to wygląd strony głównej. Sunowcy (słoneczniki? :) postawili wszystko na umiejętność stworzenia community. To, że już spory czas temu zidentyfikowali blogi jako chyba najsprawniejszy internetowy substytut konferencji środowiskowych [1], to jeszcze nic. Oni wygrzebali właściwie wszystko, co jest używane przez środowisko open source do komunikacji i autoidentyfikacji. Mamy więc: blogi, kanał ircowy na freenodzie, blogi, sekcję na del.icio.us, blogi, sekcję na Technorati, ichnią wersję cvsweba, blogi, maillisty (per project), blogi, fora (też chyba per project, acz ciekawym, czy zmuszają deweloperów do korzystania z nich; nie znam właściwie żadnego projektu poza Yoperem w którym deweloperzy by korzystali intensywnie z tychże), blogi i nawet 'oficjalnego' buttona! (Wiecie, takie śmieszne małe prostokąciki, które zajmują połowę menu u marcoosa ;) I to 90% z tego jest od razu podlinkowane z głównej strony (mimo, że jest osobny Community Portal).

Do czego piję? W zasadzie do niczego, zastanawia mnie tylko, czy Sunowi rzeczywiście uda się wykręcić taki numer. Na zrobienie z tego drugiego Linuksa to ja bym nie liczył (w sensie -- stworzenie społeczności), ale afaik cały ich Java community ma się całkiem dobrze, więc potrafić, potrafią. A jeśli już im się uda (a wolałbym, żeby im się nie udało :), to czy Linux pójdzie do /dev/null? Oczywista odpowiedź brzmi 'nie', ale z drugiej strony lepiej nie lekceważyć doświadczonego gracza korporacyjnego (Javę w końcu wypromowali).

[1] Blogi techniczne to chyba obecnie najlepszy sposób na wydajną wymianę myśli 'ponad granicami' poszczególnych projektów. (A właściwie to nawet niekoniecznie ponad granicami -- częściej na tematy PLDowe piszę tutaj, niż się odzywam na adekwatnych maillistach.) Zamiast raz na jakiś czas szukać, czy może nie znajdziemy kogoś interesującego do pogadania/posłuchania na konferencji, dzięki blogom można być na bieżąco z interesującymi nas ludźmi i ich projektami/pomysłami. Eric Sink wręcz napisał kupując jakiś produkt od pewnej firmy, że mogliby sobie założyć jakiegoś bloga, czy coś, coby ludzie mieli wgląd w życie projektu. Cytując...

When I am a customer of another ISV, I want to see weblogs:

  • I don't want a traditional sanitized marketing voice. I want to hear real people speaking in the first person about their company and its products.
  • I'm not interested in a press release that contains one small quote from the CEO. I want the entire thing to be a quote from the CEO.
  • I don't want to hear from people whose job it is to talk to me. I want to read stuff written by the actual developers working on the product.
Weblogs give me a way to see the people behind the products.

Tak nawiasem mówiąc, to miło by było, gdyby Zgoda się poświęcił dla dobra ludzkości i był w miarę wokalny na temat tej swojej nowej firemki.

Głupie C#

15 VI 2005, 02:22:18

Musiałem napisać pewną rzecz, niestety musiało toto działać pod windowsem. Kombinować z różnymi py2exe mi się nie chciało, bo (a) pewnie by wyszła ogromna binarka i (b) cholera wie jak by to w praktyce działało i ile czasu bym na uruchamianiu tego spędził. Poszedłem więc po najmniejszej linii oporu, czyli skorzystałem z faktu, że mam w systemie zainstalowane mono i kompilator c#. Oj.

Pomijam już standardowe upierdliwości tego typu języków -- np. musiałem sobie 'emulować' zwykły język z nieobiektowymi funkcjami deklarując wszystkie metody głównej klasy jako statyczne (gdzieś kiedyś czytałem, że do kursu podstaw programowania obiektowego wybrali C++ właśnie dlatego, że tam można po prostu napisać main() i mieć zwykły, nieklasowy kod), albo wkurzająca ilość klepania w klawisze, jaka jest wymagana. To jeszcze nic. Zabił mnie standardowy framework .netowy. Python został pomyślany tak, żeby te kilka wbudowanych typów danych dawało się połączyć ze sobą tak, że wystarczają w 99% zastosowań. Na dodatek daleko posunięta standaryzacja interfejsów do komunikacji z różnymi obiektami spodowowała, że praktycznie zawsze wiem jak czegoś użyć. No i ta łatwość ciachania stringów. A w .necie? Szukałem w standardowym typie tablicowym jakiegoś odpowiednika appenda. SetValue wyglądał obiecująco, ale w końcu nie doszedłem do tego, jak to działa. Na szczęście znalazłem typ ArrayList, który miał metodę Add. W trakcie kodowania była zabawa. Rozmiar tablicy (System.Array) się sprawdza nazwatablicy.Length. Rozmiar ArrayLista się sprawdza nazwaarraylista.Count. Tablicę się sortuje System.Array.Sort(nazwatablicy). ArrayLista się sortuje nazwaarraylista.Sort(). Ja nie wykluczam, że to na jakimś poziomie abstrakcji kieruje się jakąś logiką, ale dla mnie to jest zwykłe (wkurwiające) marnowanie mojego czasu. Każdy cholerny typ muszę obmacać, żeby się dowiedzieć w jaki sposób implementuje podstawową funkcjonalność. Pewnie się jeszcze okaże, że gdzieś tam istnieje głęboko ukryty typ, który łączy najwygodniejsze cechy ArrayLista i Arraya. Nikt tym baranom nigdy nie powiedział, że żeby obiekty były rzeczywiście wygodne w użyciu, to muszą być jak najbardziej intuicyjne?

Muszę jednak pochwalić za zrobienie instrukcji foreach. Dla mnie, przyzwyczajonego obecnie do pythonowego fora, było to właściwie jedyne światełko w tunelu. Jednak cała reszta... brrrr. Jak patrzę na ten kod, w którym 50% zawartości to tylko literki zadowalające kompilator (no i oczywiście trzeba pilnować, żeby co chwilę użyć jakiejś dużej litery, bo taki tu jest styl nazewnictwa), ale nie wnoszące nic do funkcjonalności, to mnie trzepie. Ani to czytelne, ani wygodne w użyciu. "Powinni tego zabronić."

Administrativia

14 VI 2005, 12:26:46
Jakby ktoś się zastanawiał -- builder th-{amd64,athlon} (znany także jako estel) ma grzankę zamiast dysku. Trochę potrwa zanim gaus to poprawi.

Hack yes!

13 VI 2005, 03:34:19

Klepiąc się z pehapowym koszmarem (muszę co jakiś czas coś w tym pogrzebać, bo mnie wreszcie wywalą z roboty za obijanie się) nie mogę wyjść ze zdziwienia, że ten potworek jednak działa. Niespecjalnie skoordynowana grupa przeważnie niezbyt doświadczonych programistów jest w stanie stworzyć coś, co, choć wygląda bardziej przerażająco, niż uśmiechający się Roman Giertych, spełnia swoje zadanie. Patrząc na ten kod ma się ochotę zastrzelić tego, który powinien był zatrudnić jakiegoś doświadczonego projektanta, a tego nie zrobił. Nie wpłynęłoby to jakoś szczególnie na jakość pracy poszczególnych programistów, ale przynajmniej dałoby im w miarę szczegółowe wytyczne odnośnie tego co wolno, a czego nie wolno (no i zawsze byłoby się kogoś zapytać o to, w jaki sposób coś zaimplementować). Chodzi mi tu głównie o jawne zdefiniowanie zasad komunikacji pomiędzy poszczególnymi modułami. Bo o ile przy pomocy grepa mogę szybko sprawdzić jak moja zmiana wpłynie na funkcjonowanie reszty modułu (no a samą zmianę mogę później szybko przetestować), to już nigdy nie wiem, czy (teoretycznie) mała poprawka nie będzie sprzeczna z założeniami jakiejś odległej części systemu. Oczywiście mogę pisać kod asekurancko, ale wszystkich możliwości i tak nie jestem w stanie przewidzieć. Nie sposób tu nie docenić 'ciężko' obiektowych języków, gdzie istnieje wymóg zdefiniowania interfejsów do komunikacji, a kompilator programistów jednak pilnuje. Zakładam, że dzięki temu projektant jest w stanie zapewnić, że ogólna jakość projektu nie spadnie poniżej pewnego poziomu.

Szczególną (i nie zawsze oczywistą) cechą oprogramowania open source jest znacznie większa jakość kodu niż w przypadku systemów zamkniętych. Można spokojnie założyć, że nie jest to żaden cud, a jedynie prosta konsekwencja założenia przedstawionego powyżej — w open source kod jest produktem w sposób jawny i oczywisty. Myślę, że również ten fakt (oprócz zwiększonej ilości testów) przyczynia się do dużo mniejszej awaryjności oprogramowania z gatunku FLOSS.

Pomijając stwierdzenia o 'zwiększonej ilości testów' i 'mniejszej awaryjności', które wydają mi się mocno przesadzone, to trudno się jednak nie zgodzić z tym, że w open source sam kod jest produktem, co w konsekwencji przekłada się na jego jakość. Pytanie -- to gdzie tu jest miejsce na projektowanie? W przypadku zamkniętego projektu komercyjnego nie mogę odżałować, że nikt nigdy nie zrobił jakiegoś porządnego projektu. Jednocześnie w przypadku projektów open source strzelałbym do każdego, kto próbowałby ustalać cokolwiek na sztywno (acz tutaj jest kwestia wyznaczenia granicy -- jakiś projekt zawsze musi być, pytanie jak bardzo 'sztywny' i skodyfikowany). Czy KDE ma jakąś formalną dokumentację projektową? Albo GNOME? Może sam Linux? A może jednak jeśli sam kod traktuje się jako produkt, to jest on także sam w sobie designem? Gdzieś ostatnio czytałem, że każdy projekt dochodzi kiedyś do takiego momentu, gdzie istnieje już tylko i wyłącznie kod...

Hmm. Gdzieś mi się tu plątała jakaś pointa, ale pewnie spadła za biurko, a że ciemno już, to nie chce mi się szukać, wolę iść spać. Kurde, muszę gdzieś pójść na jakieś praktyki i zobaczyć jak formalne procesy zarządzania tworzeniem oprogramowania wyglądają, bo się zateoretyzuję na śmierć. Dobranoc.

Jak najlepiej uczyć programistów?

07 VI 2005, 00:20:14

Wykorzystawszy wszystkie możliwości, jakie oferowały pliki *.bat w dosie, jakimś cudem wszedłem w posiadanie książki o podstawach C/C++. Autorowi powinno się połamać palce za pisanie takiego szmelcu i może właśnie ogólny poziom tego produktu książkodpodobnego był powodem tego, że przez dłuższy czas nie mogłem zrozumieć pewnych rzeczy (i dałem sobie z nimi spokój na jakiś czas), ale w końcu co nieco załapałem (wskaźniki to jest bardzo prosta rzecz, ale dopiero wtedy, gdy się je już rozumie). Inna sprawa, że młody byłem. Tak, czy siak, później przyszła pora na assembler, no a dalej całość już się jakoś potoczyłą (gdzie gigantyczny skok jakościowy przyszedł wraz ze stałką i dołączeniem do załogi G... znaczy -- PLD).

Do czego zmierzam? Otóż znajomość niskopoziomowych rzeczy jest praktycznie niezbędna do pełnego zrozumienia jak działa system, ale ze względu na jednak dosyć wysoko ustawioną poprzeczkę na wejściu (jak ja się namęczyłem z załapaniem tych pointerów) i tendencję młodych ludzi do popadania w skrajność (premature optimization is the root of all evil, ale niestety nie zrozumie tego ktoś, kto nie ma odpowiedniej perspektywy, bo zna tylko tę jedną rzecz; assssembler my presssssciousssss; i mówię to tak z obserwacji innych, jak i z własnego doświadczenia), doszedłem do wniosku, że naukę powinno się zaczynać od czegoś, co nie wymaga zagłębiania się w niskopoziomowe meandry. Java? C#? Python? (Python na pewno :). Zrozumienie tych języków pozwala na wydajne pisanie działających programów, które coś robią. Później można się doszkolić w szczegółach działania stosu, rejestrach, null termination, prymitywnych dziurach w stdlibie C, wskaźnikach i hgw czym jeszcze. Ale to dopiero jako dodatek po opanowaniu wysokopoziomowych podstaw.

Jednak Joel Spolsky twierdzi, że takie myślenie jest błędne i żeby programista rzeczywiście się do czegoś nadawał, to powinien zaczynać właśnie od rzeczy niskopoziomowych (sam stawia na "Język C" K&R co dla mnie jest wręcz bluźnierstwem, bo ja z tego klocka nie korzystam, bo jest zbyt ciężkostrawny, mimo, że C znam). Cholernie kłóci się to z moimi własnymi wnioskami i "podstawami pedagogiki", że tak powiem (uczy się od ogółu do szczegółu, a nie vice versa), ale może on ma rację? Ja nie zaczynałem od Javy. Znajomego licealistę uważam za obiecującego właśnie dlatego, że zna assemblera (i pomimo negatywnych tego efektów), a nie dlatego, że cośtam tłucze w Pascalu. A wy? Od czego wyście zaczynali? (znaczy, to jest pytanie retoryczne, bo większość dobrych programistów mnie czytających jest pewnie za starych, by zaczynać od czegoś innego, niż assembler 86 i C; więc zapytam inaczej -- jakie jest wasze zdanie o tym, od czego powinno się zaczynać naukę?)

Stało się

06 VI 2005, 20:12:53
Apple wybiera Intela.

RPM Status Report

06 VI 2005, 17:25:04

Dzisiaj przyszło na (nireredhatowe) rpm-devel.

The operant development paradigm in RPM has always been to implement, wait two years and then honk loudly.

On that note, it's time to announce the fork between the "RedHat Package Manager" and the "RPM Package Manager" that was taken two years ago publically.

This list is now devoted to the vendor neutral, OSS branch of the fork, henceforth known as the "RPM Package Manager". The other branch of the fork is controlled by Red Hat. Bound to confuse everyone, can't be helped.

So if you want the "RedHat Package Manager", you are on the wrong mailing list here.

My rpm sources will be distributed through ftp://jbj.org, and I will be setting up a CVS repository, bugzilla, distribution packages, a release roadmap, and web site as I no longer have any say in the running of <rpm-list@redhat.com> or rpm.org itself.

I fully intend to continue developing RPM as maintainer and primary architect. If that's not to your likinbg, I will hand you a tar ball and show you the door. I wrote this code, and I'd rather fix existing problems than worry about known issues in other already released versions of rpm that I cannot change.

Life's too short to rehash, say, +/- NPTL issues with Berkeley DB, or diagnose build systems ad nauseum.

rpm-4.4.2 will be the last version that I release that promises interoperability with the Red Hat version of rpm.

I hope this starts to clarify a rather muddled situation.

-- Jeff Johnson

The truth is out there

05 VI 2005, 16:45:16

Kim była żabcia? Czy to tylko jakiś kumpel robił sobie jaja? A może Jajcuś był o krok od śmierci z rąk jakiejś psychopatki? Kim była osoba z zastrzeżonym numerem, która dzwoniła do mnie niedawno na komórkę? Kim jest Monika chcąca ode mnie zaproszenie na grono? Czy Fox Mulder był gejem?

Ile tego typu sytuacji zdażyło wam się w życiu i czy kiedykolwiek dowiedzieliście się o co w rzeczywistości chodziło?

Obieg informacji u nieinformatyków

04 VI 2005, 17:20:16

Zespół radiowy doszedł do tego momentu, w którym nie wystarczy robić, ale trzeba się skupić na organizacij robienia (wymyślić i wdrożyć jak najoptymalniejsze struktury zarządzania, żeby umożliwić robienie innym). Podstawowy problem -- jak zapewnić sprawny obieg informacji. Dla informatyka (mnie) jest to rzecz po prostu straszna, jak potwornie niewydajny może być zespół tylko dlatego, że nie jest zapewniony odpowiedni poziom komunikacji. Na codzień stykam się z "optymalizacją" zespołu informatyków, gdzie np. używanie wuwowych for dyskusyjnych uważam za cholernie niewygodne i niewydajne (z punktu widzenia deweloperów czegośtam), ale jest to i tak kilka rzędów wielkości do przodu w porównaniu z ludźmi kompletnie nieinformatycznymi. Zaryzykowałbym stwierdzenie, że specjalista z jakiejś dziedziny, który nie potrafi posługiwać się nowoczesnymi środkami komunikacyjnymi, będzie wybitną kulą u nogi dla zespołu, nawet w porównaniu z wysoce przeciętnymi pracownikami (którzy jednak potrafią się posługiwać komputerem czy komórką).

Generalnie rzecz biorąc pełną informatyzację całego radia mogę sobie wybić z głowy. Jest to po prostu kompletnie awykonalne. Są poważne braki w podstawowych umiejętnościach technicznych (nie przygotujesz wywiadu, jak nie potrafisz obsługiwać zestawu reporterskiego), a co tutaj myśleć o używaniu komputerów do czegokolwiek poważniejszego (ludzie też często w ogóle nie mają komputerów albo internetu, a jak mają, to niekoniecznie z tego korzystają; maile w ogóle czyta niecała połowa osób). Zostaje więc "tradycyjny" sposób zarządzania (w przeciwieństwie do np. PLD, gdzie hierarchia jest płaska poza pojedyńczymi przypadkami), czyli zrobienie zarządu, podział na sekcje i dążenie do tego, żeby zarządzający wiedzieli co się na ich poletkach dzieje, a jednocześnie byli w stanie wydajnie koordynować się między sobą (co, ze względu na niewielki rozmiar samego zarządu, będzie pozwalało na obligatoryjną informatyzację).

Obecny zarząd będzie miał do przemyślenia sporo rzeczy i wprowadzenia sporą ilość zmian. Wnioski z dotychczasowej działalności wyciągają, kombinować próbują. Pytanie tylko na ile 'wciągnie' ich zarządzanie i czy (co tyczy się zwłaszcza rednacza) uda im się skonstruować jakąś spójną wizję zmian, które chcą wprowadzać. Weźmy na przykład kwestię 'przesiania' kadr. W PLD (czy w ogóle w projektach open source) obowiązuje zasada, że jak człowiek raz na rok wprowadzi jedną poprawkę, to i tak jest lepiej, niż gdyby jej nie wprowadził, więc nie należy mu utrudniać życia, czy wywierać na niego presji. Ale (z czego zdałem sobie sprawę wczoraj podczas małego radiowego brainstormu) działalność radia ma sens w odniesieniu do czasu. Tzn. w PLD (pomijając kilka funkcji typu Release Manager), jeśli coś zrobię za miesiąc, a nie już, to nie zrobi nikomu większej różnicy (a jak ktoś chce mieć wcześniej, to niech zrobi sam). Natomiast w radiu nie mogę powiedzieć, że zrobię audycję za miesiąc, bo teraz mi się nie chce/nie mam czasu, bo to by oznaczało, że właśnie rozwaliłem ramówkę radia.

Różnych kwestii do rozważenia, zaplanowania, wprowadzenia i przetestowania jest sporo, ale są na to całe wakacje (+ jeszcze z dwa tygodnie, bo obecny rednacz, właśnie ze względu na chęć dopięcia wszystkiego na ostatni guzik, nie chce startować równo z następnym rokiem akademickim). Mnie strasznie ciągnie do posiadania władzy decyzyjnej (jaką zapewne ma rednacz), bo wtedy mógłbym właściwie do woli sprawdzać własne pomysły na to, jak taka organizacja powinna działać, ale fizycznie nie jestem w stanie być rednaczem, bo niestety tutaj trzeba siedzieć na dupie w tym radiu ileśtam godzin w tygodniu i na dodatek się trochę nalatać. A w tym momencie moje projekty informatyczne, "zaniedbywany" pracodawca no i oczywiście mój Wewnętrzny Leń, mają priorytet. Zaangażuję się więc inaczej -- spróbuję zostać osobą, która zbiera wszystkie pomysły, filtruje i dostarcza gotowych rozwiązań (lub wąskiego zakresu alternatyw do wybierania z). Będzie to o tyle ciekawe, że będę analizował pomysły i obecną sytuację, ale (dla odmiany) to nie do mnie będzie należało podejmowanie ostatecznych decyzji. Mam wrażenie, że umiejętność 'sprzedawania' pomysłów innym (inaczej myślącym) ludziom, to jest coś, w czego trening warto będzie zaangażować sporo czasu.

Dziwne

02 VI 2005, 01:37:18
Zawsze uważałem za dziwne, że niektórzy moi znajomi chcą uciec z domu (tzn. uciec na studia gdzieś daleko od rodziców). A właściwie, to chyba nawet więcej, niż 'niektórzy'. Weird.

Ochrona przez normy społeczne

01 VI 2005, 19:37:00
O tym, że obecna nagonka na pedofilów jest współczesną odmianą polowania na czarownice nie trzeba nikogo przekonywać.

Niebezpieczna strona. A z łażenia po linkach wynika, że jedna z wielu takich. W skrócie rzecz sprowadza się do tego, że istnieją ludzie... preferujący dzieci. Nie chodzi tu o osoby molestujące dzieci (tzn. heteroseksualista nie jest od razu gwałcicielem), ale... khm... kochające dzieci (taka jakby orientacja seksualna). Gdzie do fizycznych kontaktów dochodzi za obopólną zgodą (jak ktoś oglądał film (czytał książkę) Lolita, to wie o co chodzi). Ble, samo pisanie o tym jest dla mnie co najmniej nieprzyjemne.

Tak, czy siak, strona jest temu niebezpieczna, że próbuje dowieść istnienia 'dobrych' pedofilów, którzy są (a) niesłusznie napiętnowani społecznie, (b) niesłusznie ścigani przez prawo i (c) pozytywnie nastawieni do dzieci. Jak uczy nas przykład Endera (który, przypomnijmy, zabił na zimno dwie osoby po czym wysiekł całą rasę inteligentnych istot; Hitler i Stalin to mały pikuś w porównaniu), każdego można przedstawić w takim świetle, że nic, tylko mu współczuć, niezależnie czego by nie zrobił. Więc lepiej dla ogółu społeczeństwa by było, gdyby potencjalnie tak niebezpiecznych skłonności nie próbowano tłumaczyć w kategoriach pedofila-ofiary.

No właśnie -- ogół społeczeństwa. Daleki jestem od stwierdzenia, że kontakty seksualne dorosłych z nieletnimi zawsze są ze szkodą dla tych ostatnich (weźmy znowu ową "Lolitę" Nabokowa, czy choćby Polańskiego, którego już od dawna dorosła 'ofiara' afair mówiła parukrotnie, że nie ma mu nic do zarzucenia), zresztą nawet legislacja jest w tej kwestii zgodna i nieletni powyżej nastu lat (zależnie od ustawodawstwa poszczególnych krajów) może podejmować wiążące prawnie decyzje w tych sprawach. Ale zadaniem prawa bezwzględnie karającego czyny pedofilskie nie jest autorytarne stwierdzenie, że każdy pedofil to potwór z piekła rodem. Ono ma na celu wyznaczenie granicy bezpieczeństwa dla dzieci, bezwzględnie chroniącej je przed jakimikolwiek potencjalnymi zagrożeniami. Właśnie -- potencjalnym. Jest to jeden z tych kawałków ustawodawstwa, gdzie uznaje się, że potencjalna krzywda dla ofiary jest zbyt wielka, a sama ofiara zbyt bezbronna, żeby można było podejmować jakiekolwiek ryzyko (nadal drażni mnie pisanie w tych kategoriach... jak sobie wyobrażę... coś obrzydliwego). I to jest chyba najmniej kontrowersyjny przypadek uzasadnienia takiego prawa, z wszystkich możliwych. Weźmy amerykańskie uniwersytety -- za kontakty seksualne pracownika ze studentem, ten pierwszy bezwzględnie wylatuje z pracy. Nawet w przypadku dorosłych ludzi uznaje się, że w tej konkretnej sytuacji student jest zbyt podatny na wpływy, a wykładowca ma zbyt duże możliwości manipulowania, żeby dopuszczać jakiekolwiek wyjątki. Że już nie wspomnę o szkołach średnich (nadal opieram się na wiedzy wyniesionej z amerykańskich filmów) -- nauczyciel, jako osoba dorosła, może zgodnie z prawem współżyć z nieletnim od lat iluśtamnastu, ale nie z uczniem własnego liceum (a uczeń jego liceum przecież wcale nie musi być nieletni).

Jak w takim razie ktoś może uważać, że akurat prawo chroniące tych, którymi najłatwiej manipulować i którym można zrobić największą krzywdę, powinno zostać zmienione, dla mnie jest niepojęte. Autor strony o której piszę na początku, pomijając, że ewidentnie jest inteligentny, to jest także skończonym egoistą -- ludzie w mniej kontrowersyjnych sytuacjach muszą sobie małego zawiązać na supełek, a temu się rewolucji zachciewa.

Disclaimer (jakby ktoś nie zauważył uwag na początku tekstu): ja kompletnie abstrahuję od tego, że dla mnie czymś obrzydliwym jest seks z dzieckiem, które nawet fizycznie nie jest dojrzałe.

Btw: do tego stopnia mi ten temat nie leży, że sam nie wiem po jaką cholerę ten tekst napisałem i (co ważniejsze) po co go publikuję.
« | »