Archiwalia dla 09.2005

Wyższa Szkoła Informatyki i Zarządzania - Copernicus

Model biznesowy mojej nieszczęsnej szkoły (a traktuję ją bardziej jak miejsce ucieczki przed armią naszą niepokonaną, niż jako źródło jakiejkolwiek wiedzy) z całą pewnością jeszcze niejednokrotnie mnie w życiu zaskoczy, choć przyznać muszę, że ich ostatni wybryk powalił mnie na kolana.

Jako całkiem niezły (uchwalono decyzją jednoosobowej komisji ze mną w składzie) informatyk w ogólnym tego słowa znaczeniu, z przedmiotami kierunkowymi daję sobie radę całkiem nieźle. Pozostałe, jak mikroekonomia, makroekonomia, podstawy prawa Unii Europejskiej, czy marketing, zaliczam w okolicach oceny dostatecznej. Niestety, ostatnio noga powinęła mi się na egzaminie z podstaw i metod zarządzania. Cóż - zdarza się - pomyślałem i zacząłem przygotowania do egzaminu poprawkowego. Główna bolączka tej sytuacji to utrata uprawnień do pobierania stypendium, ale nie przejąłem się tym specjalnie po informacji, że stypendium za lipiec otrzymam najwcześniej w listopadzie. Niechybnie pieniądze za kolejny semestr wpłynęłyby już na konto moich wnuków (a nadmienić należy, że póki co nic nie wiadomo mi o ich istnieniu).

Na egzamin poprawkowy wyruszyłem pewny siebie i całkowicie odstresowany - nie ma co się bać na zapas, a - w razie czego - został mi jeszcze jeden termin. Zapłaciłem też z dwudniowym wyprzedzeniem 50 PLN za możliwość przystąpienia do wyżej wspomnianego. Jak każdy cywilizowany informatyk, pieniądze puściłem eliksirem przez internet. Jakież było moje zdziwienie, gdy okazało się, że szalenie miła (czytaj: arogancka) pani w dziekanacie stanowczo odmówiła mi wydania potwierdzenia dokonania opłaty (a biurokracja w owej placówce oświaty stanowi, że bez owego świstka nie powinienem nawet pokazywać się na oczy egzaminatorowi). Otóż pani skarbnik niefartownie udała się na zaplanowany urlop wypoczynkowy, toteż na uczelni zapanował nieopisany wprost chaos, a najtęższe nawet umysły bez jej pomocy nie były w stanie określić, czy faktycznie zapłaciłem. Trzeba było iść zapłacić na poczcie - usłyszałem na pociechę. Do egzaminu nie może pan przystąpić, ale za to nie potrącimy panu opłaty za drugi termin, bo do pierwszego pan nie przystępuje. Cóż, dobre i to.

Drugi termin egzaminu wypadł w sobotę, 24. września. Z głową pełną wiedzy na temat strategii, taktyki i planowania, a także więcej niż świadom zagadnień związanych z różnymi stylami zarządzania, wyruszyłem dziarsko w kierunku uczelni. Prewencyjnie przyjechałem z lekkim wyprzedzeniem, by odebrać zaległą karteczkę - swoją przepustkę do krainy szczęścia. Niczym klapa od sedesu w podmiejskim szalecie, szczęka moja opadła w pobliże obuwia, kiedy to ta sama pani przekazała mi kolejny radosny komunikat. Nie może pan przystąpić do egzaminu, przecież zapłacił pan tylko za pierwszy termin. Drugi ma pan nieopłacony.

To niesamowite, jak ludzkie poglądy potrafią się zreformować na przestrzeni zaledwie dwóch miesięcy. Przypomniałem jej tedy zeznania, jakie złożyła w mojej obecności, a o których mowa w poprzednim akapicie. To z pewnością nie byłam ja, to pewnie moja koleżanka się nie zna i tak panu powiedziała. Powstrzymałem się z trudem, aby nie dodać tak, pewnie dzwoniła do mnie z urlopu. Pani posunęła się w swych żartach dalej i zasugerowała mi, że mogę jeszcze zapłacić w kwesturze, a w ogóle to trzeba było w pierwszym terminie iść zapłacić na poczcie. W związku z tym, że pod koniec miesiąca rzadko miewam nadmiarowe fundusze, gotówki do szkoły nie noszę, kwestura kart nie akceptuje, a ja już zapłaciłem za ten egzamin, podziękowałem i za tę opcję.

Dowiedziałem się, że moja niesubordynacja spowoduje konieczność powtarzania przedmiotu w kolejnym semestrze, co wiąże się z koniecznością zapłacenia dodatkowo 200 PLN. Niestety, do dziś nie wiem, za co zapłaciłem poprzednich 50, bo jeśli traktować układ pomiędzy mną a szkołą jak tradycyjną relację klient-dostawca usług, to żadnej usługi w zamian nie uświadczyłem, nie licząc oczywiście humorów pracownicy dziekanatu. Uśmiechnąłem się wtedy tak sztucznie, jak tylko byłem w stanie się uśmiechnąć i udałem się w kierunku drzwi. Pani zawołała za mną jeszcze: i co, zamierza pan iść na egzamin bez zezwolenia? Bez wahania odpowiedziałem zatem: nie, zamierzam napisać na panią skargę. Na jej pełne zdziwienia słucham? wyrwało mi się (przy rektorze) już tylko głośne p!3#dol się.

Gdybym ja w ten sposób traktował swoich klientów, to dziś jedyne płyty, jakich bym słuchał, byłyby jednocześnie elementami nośnymi któregoś z wrocławskich mostów. Nie mówię już o tym, że żywiłbym się wyłącznie produktami w stu procentach naturalnymi, jak gąsienice, gołębie i niedopałki. Niestety, zasada płacisz-wymagasz nie obowiązuje w szkolnictwie.

Krótko o zbyt nowoczesnych technologiach

Jeśli decydujesz się na używanie XHTML, to wybierz wersję 1.0. Wszystko jedno, czy zdecydujesz się na wersję przejściową (transitional) czy ścisłą (strict), będzie to lepszy wybór niż wersja 1.1. Przeżyłem dziś starcie z jednym z naszych kontraktowych współpracowników (pisałem już, że ostatnio większość szablonów trafia do pocięcia na outsourcing) i chciałbym swoje argumenty przytoczyć również poniżej.

Powodów preferowania wersji 1.0 może być kilka, przede wszystkim XHTML 1.1 wymaga serwowania jako typ MIME application/xhtml+xml. Typ ten nie jest obsługiwany przez przeglądarkę Internet Explorer i powoduje w niej wyświetlenie kodu źródłowego dokumentu.

Po drugie, XHTML 1.1 wymaga ścisłej kontroli składni XML i jakikolwiek błąd zatrzymuje caly proces przetwarzania strony. O ile z naszego punktu widzenia (jako programistów), poprawna składnia języka jest jak najbardziej pożądana, o tyle różne systemy publikacji treści pozwalają końcowemu użytkownikowi na zepsucie kodu w większym lub mniejszym stopniu. Z punktu marketingowego nie wygląda to najlepiej - klient wkleja tekst z Worda i strona umiera, a u konkurencji wszystko działa. Szczerze mówiąc, boję się, że to właśnie będzie największy problem przy szerszej popularyzacji formatów opartych na XML - nie potrafią wybaczać błędów (świat byłby dziś rajem, gdyby było to regułą już przy pierwszych wersjach HTML).

Poza tym, jedyna przewaga wersji 1.1 nad poprzedniczką jest możliwość łatwego rozszerzania języka, co przy braku wsparcia ze strony powszechnie używanych agentów nie jest żadnym argumentem.

Mówiąc krócej - nie zawsze warto żyć na krawędzi i chwytać się wszystkich nowości, warto poczekać, aż dostęp do nich uzyska przynajmniej zadowalająca część z naszych potencjalnych odbiorców.

Nie mów nie Explorerowi

Nie popierałem i nie popieram akcji takich jak DesignHappy. Dlaczego? Dają leniwym i niedouczonym webmasterom pretekst do kiepskiego budowania serwisów. Spora grupa ludzi zupełnie nie pojmuje założeń tego typu akcji i buduje strony, które rozjeżdżają się zupełnie w przeglądarkach innych niż Firefox i Opera.

Jednym z głównych argumentów kampanii promującej tandem XHTML + CSS jest zwiększone wsparcie dla przeglądarek tak przyszłych, jak i obecnych. Cóż to za wsparcie, jeśli dla 90% użytkowników sieci serwis wygląda jak efekt zabawy trzylatka z nożyczkami. To dostarcza tylko kolejnych głosów przeciwko standardom - obiecywali lepsze serwisy, a najprostszego układu się nie da zrobić. Sam coraz częściej słyszę: Wy poważnie używanie czystego CSS? Przecież tam nic nie działa!

Sam chętnie przerwałbym wsparcie dla IE (a wspieramy go wstecz do wersji 5.5), jednak z pewnością nie do momentu, kiedy przestaną go używać odwiedzający serwisy użytkownicy. Standardy to między innymi większa dostępność, a lenistwo nie jest usprawiedliwieniem dla serwowania większości użytkowników sieczki.

Co się zaś tyczy stron prywatnych, to świadomi standardów sami zdecydują, jak zakodować swoje strony domowe. Wątpię też, żeby czyjakolwiek strona zachęciła większą grupę ludzi do przesiadki na nowoczesną przeglądarkę. W dużo przyjaźniejszym tonie jest zakodować stronę tak, by działała wszędzie i umieścić na niej napis: jeżeli używasz przeglądarki Internet Explorer w wersji 6 lub starszej, to wiedz, że ze względu na jej przestarzałość, włożyłem dodatkową pracę, by witryna ta wyświetlała się prawidłowo. Zrób nam obu przysługę i przesiądź się na jedną z nowocześniejszych alternatyw. Będziesz zadowolony, słowo, a dzięki tobie sieć stanie się lepszym miejscem.

Strony wielojęzyczne

Jako, że przyjęliśmy Europę w poczet krajów słowiańskich, coraz większą popularnością cieszą się witryny wielojęzyczne. Wiąże się z tym kilka problemów, które dobrze jest rozwiązać już na etapie planowania i projektowania, gdyż późniejsze radzenie sobie z nimi rodzi coraz więcej kłopotów.

Pierwsza sprawa to domyślna wersja językowa - wielu ludzi zastanawia się, czy stronę domyślnie wyświetlać po polsku, gdyż większość odbiorców operuje tym właśnie językiem, czy może po angielsku, by obcokrajowcy nie uciekli na widok krzaczków i szlaczków. Odpowiedź jest prosta - należy skorzystać z mechanizmów negocjacji zawartości dostarczanych przez sam protokół HTTP. Przeglądarka wraz z żądaniem wysłania dokumentu podaje również listę języków i stopień ich preferowania (parametr q, podawany w skali od 0 do 1). Różne przeglądarki zachowują się różnie - niektóre nie podają listy preferencji wcale, inne nie definiują stopnia preferowania danego języka lub jego odmiany (bo en jest czym innym niż en-US, o czym za chwilę). Standard mówi, że jeśli nie jest używana skala preferencji, to obowiązująca jest kolejność, w jakiej języki zostały podane - od najważniejszego, do najmniej ważnego. Podobnie jest, jeśli kilka języków posiada taki sam współczynnik q.

Przed wybraniem wersji językowej należy więc przesortować języki według ich zadeklarowanego stopnia preferowania (nie jest określona kolejność, w jakiej przeglądarki wysyłają listę języków, więc te o najniższym współczynniku preferencji mogą pojawić się równie dobrze na początku, w środku, jak i na końcu listy). Następnie iterując po elementach listy należy sprawdzić, czy nasz serwis oferuje daną wersję i - jeśli tak, wysłać ją do przeglądarki i przerwać dalsze testy. Specjalna uwaga dotyczy języków o q równym 0 - zerowy współczynnik q oznacza, że internauta pod żadnym pozorem nie życzy sobie oglądać stron w danym języku. Druga uwaga jest na temat odmian języka - jeśli agent wysłał sam identyfikator języka, bez podtypu, to jako pasującą uznaje się każdą odmianę danego języka (na przykład en pasuje tak do en-us, jak do en-gb, jeśli akurat te dwie odmiany oferujemy) - zasada ta nie ma zastosowania w drugą stronę, jeśli internauta domaga się konkretnej odmiany języka, to jako pasującą uznaje się tylko tę jedną konkretną.

Co jeśli żadna z oferowanych przez nas wersji nie pasuje do listy wysłanej w nagłówkach przez agenta? Powinniśmy wybrać ten język, którego będzie używać największa grupa naszych odwiedzających. Oczywiście, dla niektórych (na przykład tych z nieprawidłowo skonfigurowanymi przeglądarkami) będzie to błędny wybór, jednak tutaj znajduje zastosowanie inny mechanizm - przełączanie języków w locie.

Z przełączaniem w locie (za pomocą linków na stronie) wiąże się najwięcej problemów. Oczywiście metoda ta musi mieć pierwszeństwo przed negocjacją języka (wyobraźmy sobie Polaka, który ogląda nasz serwis za pośrednictwem komputera w niemieckiej kafejce i jego frustrację, kiedy okazuje się, że sklep, który ma pod domem, uparcie uszczęśliwia go stroną w języku obcym). Najpopularniejszą metodą jest zastosowanie ciasteczek i zapisywanie w nich tłumaczenia, jak jednak zmienić wersję językową? Część rynku zaskarbiły sobie szkaradne ikonki z flagami państw, choć same tworzą więcej problemów niż rozwiązują.

Ikona flagi z definicji przywiązana jest do konkretnego kraju (lub regionu, jak nadużywana powszechnie ikona Zjednoczonego Królestwa, mylnie nazywana flagą Anglii). Problem polega na tym, że języki do krajów przywiązane nie są, stąd frustracja sporej części mieszkańców Kanady, którzy nawykli już do klikania ikonki symbolizującej małe państwo żabojadów, o którym słyszeli kiedyś, że leży na drugim końcu świata. Nie wszystkie kraje darzą się sympatią, a konieczność klikania flagi sąsiada kłóci się u niektórych z odczuciami patriotycznymi. Dlatego właśnie najlepszym rozwiązaniem jest użycie linków tekstowych. Co na nich napisać? Nazwę danego języka w danym języku (chyba, że cieszy cię wizja odwiedzenia strony międzynarodowej korporacji z siedzibą w RPA i poszukiwanie angielskiej wersji pośród dwudziestu linków na oko wyglądających jak jedno z afrykańskich narzeczy. Jedno jest pewne, każdy zna nazwę własnego języka, choć nie każdy musi znać jej wszystkie tłumaczenia.

Kolejna rzecz to sam mechanizm przełączania wersji - popularna metoda polega na zapisaniu ciasteczka i przerzuceniu agenta na tę samą stronę, która w zależności od zawartości ciasteczka wyświetli się w jednym bądź drugim języku. O ile metoda ta działa dla żywych odwiedzających, o tyle nie sprawdza się w przypadku robotów i wyszukiwarek. Nieraz już zdarzało nam się poprawiać serwisy, których klienci skarżyli się, że Google zaindeksował trzy czwarte podstron po arabsku. Najlepiej, gdyby każdy dokument posiadał unikalny URI - to zapewni pełne indeksowanie zawartości dla każdego z języków i zaowocuje znacznie lepszą pozycją w wynikach wyszukiwania.

Oprócz problemów czysto technicznych, istnieje jeszcze cała masa problemów logicznych. Są to między innymi:

  • format wyświetlania dat (zależy to od kraju i niezależnie od wybranego formatu, część ludzi będzie się zastanawiać, czy chodzi o pierwszego lutego, czy drugiego stycznia)
  • sposób podawania godzin (konieczne jest wybranie i podanie strefy czasowej)
  • dostosowanie formularzy (na zachodzie modne jest pytanie o tytuł, z jakim należy się do klienta zwracać - niestety, tytuły takie nie funkcjonują we wszystkich kręgach kultorowych, a tam gdzie działają, ich liczba jest różna; amerykanie często popełniają błąd prosząc o zipcode w angielskiej wersji serwisów, podczas gdy reszta świata używa kodów pocztowych)

Problemy te jednak znacznie odbiegają od głównej treści notki, więc jeśli będę o nich pisał szerzej, to zdecydowanie przy innej okazji.

Rant

Nic mnie tak nie denerwuje, jak przeczesywanie statystyk w poszukiwaniu komentarzy do swoich notek. Po to istnieje możliwość komentowania ich na miejscu, żeby zostawianie swoich opinii nie wymagało zewnętrznych serwisów. Rozumiem, że niektórych irytuje brak obsługi HTML, że pole jest małe. Oczywiście, można napisać odpowiedź w formie notki na własnym blogu, ale przy braku wsparcia dla łączy typu trackback i pingback, etykieta każe zostawić URI odpowiedzi w komentarzach na stronie z oryginalnym tekstem. W ten sposób śledzenie dyskusji nie wymaga talentów telepatycznych. Jest to tym bardziej trudne, że denne statystyki stat.pl z nieznanych mi przyczyn nie logują query string, więc w przypadku większości for internetowych mogę tylko pomarzyć o zlokalizowaniu wątku.

Standardy i standardy w sieci

O ile robię wszystko, co w mojej mocy, żeby popularyzować wsparcie dla standardów i poprawianie usability w sieci, nie każdy przypadek jest taki sam i nie zawsze można ślepo stosować te same reguły.

W większości przypadków faktycznie, powinno się ograniczyć technologie wspierające (czyli tak naprawdę wszystko poza HTML) do minimum, zapewniając tym samym jak najlepszą dostępność do informacji dla osób korzystających z różnych urządzeń i oprogramowania. Nie chcemy przecież któregoś dnia zalogować się do swojego systemu bankowego tylko po to, żeby dowiedzieć się, że brakuje nam 16 wtyczek, z czego 8 nie jest dostępnych dla naszej platformy (co jest coraz powszechniejszym problemem, nie dotyczy już tylko urządzeń przenośnych, ale także komputerów pracujących na procesorach rodzin AMD64 i PPC). Wszystko jest jednak warunkowane przez target, dla którego przeznaczony jest nasz produkt.

Głupotą byłoby zrezygnowanie z technologii takich jak Flash, czy zagnieżdżone wideo na stronach reklamujących najnowszą grę komputerową - serwis tego typu jest przeznaczony dla wąskiej grupy odbiorców, raczej nie grozi nam nawał użytkowników uzbrojonych w telefony komórkowe, PDA czy konsolowe przeglądarki pracujące pod kontrolą systemów uniksowych. Zwłaszcza, jeśli gra przeznaczona jest dla jednej konkretnej platformy. Jej podstawową funkcją jest pokazanie odwiedzającym namiastki tego, co znajdą w reklamowanym produkcie, stąd zastosowanie znajdą tam najnowsze technologie multimedialne.

Podobna sytuacja ma miejsce w przypadku aplikacji webowych. Zamknięte systemy, wymagające logowania, takie jak intranety, ekstranety czy panele kontrolne CMS służą jedynie swoim użytkownikom. Nie musimy martwić się tym, że zostaną nieprawidłowo zaindeksowane przez wyszukiwarki, a układ hierarchiczny z definicji nie przypomina typowej strony internetowej. Wszechobecne formularze i układ aplikacyjny z definicji dyktują strukturę dokumentów, która często nie może być tak czysta, jak w przypadku zwykłych serwisów - musi sprostać projektowi graficznemu, który niejednokrotnie bardziej przypomina aplikację rodem z pakietu MS Office niż dokument stworzony w HTML.

Tutaj znajdują zastosowanie gorące nowinki ze świata, z modnym ostatnio hasłem AJAX na czele. Jeśli aplikacja ma wyglądać jak zwykły program, to funkcjonalność typu drag-n-drop z zapisywaniem danych w locie (bez przeładowania) jest dla użytkownika czymś naturalnym. W przeciwieństwie do usability typowych stron, w kwestii aplikacji standardy wyznacza Ruby on Rails i świetny framework script.aculo.us.

Kwestia wsparcia dla przeglądarek z wyłączonym JS nie jest problemem, sprzedajemy program i ma on swoje wymagania. Nikt nie oczekuje, że Windows XP zacznie działać na 286, nikt też nie narzeka, że najnowsze mordobicie na konsolę nie nadaje się do użytku po wyłączeniu telewizora.

Inaczej wygląda sprawa ze specyficznymi klientami - w pewnych warunkach nie jest możliwe zastosowanie czystego układu (strukturalny dokument + CSS). Nie jest to jednak powód do tego, żeby całkowicie zarzucić wsparcie dla styli - zbudowanie układu hybrydowego (tabela do pocięcia układu + CSS do zgrania całości) daje dużo więcej korzyści niż sama satysfakcja. Strona jest przede wszystkim dużo lżejsza, a przez to ładuje się szybciej (choć układy tabelaryczne nie pozwalają na renderowanie progresywne w takim zakresie, jak oparte na czystej strukturze) i jest znacznie łatwiejsza w edycji (a wprowadzając zmiany w arkuszu styli możemy w prosty sposób zmienić wygląd setek podstron). Zapewniamy sobie też identyczny wygląd we wszystkich przeglądarkach, także w tych przyszłych (wyobraź sobie, jak wyglądałoby teraz 95% internetu, gdyby przeglądarki nagle porzuciły wsparcie dla przestarzałych elementów, jak <font/>).

Z drugiej strony są też ekstremiści, którzy nawet dane typowo tabelaryczne (jak zestawienia statystyczne, czy cenniki) zamieniają na groteskowe konstrukcje, które według nich są bardziej semantyczne. To jednak - na szczęście - kwalifikuje się w większości przypadków jako nieszkodliwe geekostwo i zajęcia typu proof of concept. Użycie takiego wynalazku w realnym projekcie komercyjnym może tylko wystawić autora na publiczne pośmiewisko - jest dowodem zupełnego braku zrozumienia semantyki języka.

Podsumowując - twarde zapieranie się rękoma i nogami przed zastosowaniem bogatych multimediów czy oparciem funkcjonalności na językach skryptowych po stronie agenta przy argumentacji, że to dla dobra usability, nie zawsze jest właściwe. W niektórych, specyficznych przypadkach, odwiedzający oczekuje takiej właśnie funkcjonalności i wzbranianie się przed nią jest działaniem na szkodę użytkownika.

Nasz klient na szpan

Pozwolę sobie publicznie polemizować z komentarzem kolegi Grabunia odnośnie innej mojej notki. Łukasz zdaje się nie przejawiać poczucia humoru albo też nie pracuje z klientami tego typu.

Nazwy typu masta-hacka pominę, jako że śmiać się umiem, nie zgodzę się jednak z głównym przesłaniem notki - klientowi wszystko wolno. Oczywiście, że klient płaci i klient może wymagać, ale z całą pewnością nie ma prawa wymagać formy implementacji.

Kiedy zamawiam do domu kafelkarza (A czemu zamawiam? Bo sam nie potrafię), daję mu kafelki i oczekuję, że je położy. Nie stoję nad nim i nie mówię mu, że dystansowniki są krzywo, że klej nie taki, a fuga za grubo położona i pewnie nie zejdzie po zaschnięciu. Ufam temu, że on - będąc kafelkarzem od X lat - wie, co ma zrobić i jak. Wierzę, że efekt będzie taki, jaki zamówiłem.

Porównywanie systemów CMS do systemów czasu rzeczywistego to raczej chybiony dowcip, bo to jak powiedzenie, że wspomniany kafelkarz powinien zamknąć dziób i słuchać klienta - wszak nie stawia on elektrowni atomowych. Co zaś się tyczy teorii, że powinniśmy się cieszyć z faktu, że klient do nas trafił - bzdura, często zdarza nam się odrzucać zlecenia, a głodem jakoś nie przymieramy. Nie prowadzimy agencji towarzyskiej i nie każdy musi zostać obsłużony, zapychanie swojego portfolio serwisami za 100 złotych nie poprawia niczyjego wizerunku.

Ustalenia z klientami i customer-driven-development - jak najbardziej, pod warunkiem, że obie strony nie ingerują wzajemnie w swoje strefy kompetencji. Klient bardzo często zapraszany jest do testów na wielu etapach realizacji i zawsze ma możliwość zgłoszenia swoich uwag, jednak my dbamy o znalezienie złotego środka pomiędzy jego wizją, a tym, czego oczekują internauci i co mieści się w normach web usability.

Co tyczy się standardów - ostatnio jest o tym dość głośno i fakt, że realizujemy systemy zgodne z nowoczesnymi przeglądarkami i przy zachowaniu standardów, jest naszym atutem przy negocjacjach. Ta część nie podlega nawet negocjacjom.

To tyle, jeśli chodzi o komentarz, zgodzę się z tym, że do projektowania serwisów bardziej przydają się zdolności graficzne niż programistyczne, ale do budowania prawdziwych serwisów WWW potrzeba dużo więcej niż ładny projekt - technologie server-side, projektowanie systemów bazodanowych, semantyczna składnia (nie tylko jako sztuka dla sztuki, ale dająca wymierne korzyści w wyszukiwarkach i w łatwości zarządzania serwisem), czy technologie wspierające (JavaScript, SOAP, AJAX). Jeśli czyjeś umiejętności webdeweloperskie kończą się na ładnym splashu i kilku linijkach PHP z kodem HTML generowanym inline, to z niego jest za przeproszeniem dupa, nie webdeveloper.

Trup

Lepiej być nie może. W ICenter pracuję właśnie nad nowym modułem do swojego CMS, z Activnetem buduję system webowy do zarządzania produkcją w jednej z włoskich fabryk, Techland zamówił u mnie strony dla dwóch nowych gier. Wszystko pięknie.

We wtorek komputer spowolnił do żółwiego tempa. Mysz poruszała się w trybie skokowym, wskaźniki obciążenia twierdziły, że przeciętnie wynosi 15%, dmesg milczał niczym grób (nie mylić z Grubem). Odpaliłem top i ustawiłem opóźnienie odświeżania na 0,1 sekundy. Winnym okazał się hald, który generował szpilki po 100%. Ki czort? Ustaliłem, że proces zaczyna się od apletu monitorującego stan akumulatora - każde pytanie o stan powodowało zatkanie się systemu, co więcej, to samo powodowała próba czytania z /proc/acpi, więc problem nie leżał po stronie demona HAL.

Wyjąłem przeto akumulator, a problem mój jako objawił się był błyskawicznie, tako też zniknął. Ponowne podłączenie winnego pozwoliło odczytać producenta i typ, jednak napięcie znamionowe, poziom naładowania i pozostałe wskaźniki pozostawały dla systemu zagadką. Powróciła czkawka systemu. Sprzęt na gwarancji, więc kiedyś się odda, póki co - komputer potrzebny mi jest bez przerwy.

Dziś spotkała mnie niespodzianka dalece bardziej niemiła. Próba włączenia laptopa zakończyła się na komunikacie układu SMART, który w wypowiedzi tyle lakonicznej co smutnej, poinformował mnie, że dysk mogę sobie przerobić na przycisk do papieru. 40 gigabajtów pracy i zabawy przesunęło się w odmęty niebytu.

Praca z klientami

Wczoraj przypadkiem trafiłem na tekst, który kiedyś rozbawił mnie do łez. Co by było, gdyby architekci pracowali tak jak firmy webdesignerskie? Poniżej luźne tłumaczenie na polski:

Drogi Panie Architekcie,

Proszę zaprojektować i zbudować dla mnie dom. Nie jestem jeszcze zupełnie pewien, czego dokładnie potrzebuję, więc proszę oprzeć się na swoim doświadczeniu. Mój dom powinien mieć gdzieś pomiędzy dwoma a czterdziestoma pięcioma sypialniami. Planując, proszę upewnić się, że sypialnie mogą być w łatwy sposób dodawane i usuwane. Kiedy przyniesie Pan gotowe plany, podejmę ostateczną decyzję. Proszę też o dokładny kosztorys każdej konfiguracji, żebym mógł wybrać właściwie.

Proszę pamiętać, że dom, na który się zdecyduję, musi kosztować mniej niż ten, w którym obecnie mieszkam. Proszę również mieć na uwadze, że chciałbym pozbyć się wszelkich wad, jakimi obarczony jest mój obecny dom.

W czasie planowania powinien Pan mieć na względzie fakt, że chciałbym zachować roczne koszty utrzymania tak nisko, jak to tylko możliwe. Powinno to oznaczać zastosowanie droższych technologii, jak aluminium czy winyl. Jeśli nie zdecyduje się Pan na zastosowanie aluminium, proszę przygotować się na to, że będę oczekiwał wyczerpujących wyjaśnień dotyczących podłoża tej decyzji.

Proszę upewnić się, że najnowsze trendy i najnowocześniejsze materiały zostaną użyte przy konstrukcji, jako że chcę aby mój dom stał się synonimem nowoczesności i bycia na czasie. Powinien wiedzieć Pan jednak, że kuchnia musi pasować do wielu z moich mebli, w tym do lodówki Gibsona z 1952. roku.

Aby upewnić się, że buduje Pan najlepszy dom dla całej naszej rodziny, musi Pan z pewnością skontaktować się z każdym z naszych dzieci i z naszymi teściami. Moja teściowa będzie z pewnością miała własne wyobrażenie o tym, jak dom powinien wyglądać, gdyż odwiedza nas przynajmniej raz do roku. Powinien Pan upewnić się, że przy podejmowaniu decyzji weźmie pod uwagę wszystkie te opinie. Zastrzegam sobie jednak prawo do zmiany każdej podjętej przez Pana decyzji.

Niech Pan nie zawraca mi głowy detalami na tym etapie projektowania. Pańska praca polega na wykonaniu ogólnych planów domu. Jest jeszcze za wcześnie na podejmowanie decyzji np. odnośnie koloru dywanu. Proszę jednak mieć na uwadze, że moja żona lubi niebieskie.

Proszę również nie przejmować się organizacją materiałów, maszyn i siły roboczej. Głównym priorytetem jest w tej chwili wykonanie szczegółowych planów i specyfikacji. Kiedy jednak zaakceptuję plany, oczekuję, że nie będzie stanowić problemu zakończenie budowy w ciągu następnych 48 godzin.

Kiedy projektuje Pan ten dom dla mnie, proszę pamiętać, że prędzej czy później, będę zmuszony sprzedać go komuś innemu. Musi on więc być atrakcyjny dla każdego potencjalnego nabywcy. Przed zamknięciem planów, powinien się Pan zatem upewnić, że dom podoba się bezwzględnej większości mieszkańców mojej okolicy. Zachęcam również do obejrzenia domu zbudowanego w zeszłym roku przez mojego sąsiada. Bardzo nam się podoba i posiada wiele dodatków, które z radością powitamy w naszym nowym domu, zwłaszcza basen długości 75 stóp. Posługując się inżynierią z wprawą i delikatnością, wierzę, że uda się Panu wpleść go do projektu bez wpływu na koszt całości.

Proszę przygotować komplet planów architektonicznych. W tym momencie szczegółowe plany wnętrza nie są konieczne, gdyż plany posłużą tylko do wyceny kosztów konstrukcji. Niech będzie Pan jednak świadom, że pokryje Pan wszelkie dodatkowe koszty konstrukcji wymuszone przez ewentualne zmiany projektu wnętrza.

Z pewnością jest Pan podekscytowany, mogąc pracować przy tak interesującym projekcie! Ma Pan teraz możliwość skorzystania z najnowszych rozwiązań i materiałów, a jednocześnie zachowuje Pan tak ogromną swobodę działania, co nie jest zbyt częste. Proszę skontaktować się ze mną tak szybko, jak tylko będzie Pan gotów przedstawić komplet swoich planów i pomysłów.

PS: Moja żona właśnie powiedziała mi, że zupełnie nie zgadza się z dużą częścią powyższych instrukcji i wymagań. Jako że jest Pan architektem, do Pana obowiązków będzie należało rozstrzygnięcie tej różnicy zdań. Sam wielokrotnie próbowałem w przeszłości, jednak nigdy mi się nie udało. Jeśli nie potrafi Pan podjąć się tego, poszukam innego architekta.

PPS: Właściwie, może ja wcale nie potrzebuję domu, tylko chodzi mi o przyczepę kempingową? Jeśli tak, to proszę mnie o tym powiadomić tak szybko, jak to możliwe.

Krótko o dobrym wychowaniu

Jeśli zapisujesz się na listy dyskusyjne, to pamiętaj o tym. Jest to miejsce, gdzie wymaga się od ciebie przestrzegania pewnych zasad (ogólnie pojętej netykiety i kilku specyficznych reguł grupowych). Zwłaszcza, jeśli zapisujesz się na listę, którą regularnie czyta kilkaset osób, powinieneś mieć na uwadze jej istnienie, kiedy wyjeżdżasz i postanawiasz zastosować coś tak genialnego jak autoresponder. Większość deweloperów PLD jest od circa 2 miesięcy częstowana poniższą informacją:

From: Kxxxxxxx, Mxxxxx <Mxxxxx.Kxxxxxxx@yyy.pl>
To: Patrys :: Patryk Zawadzki <patrys@pld-linux.org>
Subject: Out of Office AutoReply: dbus 0.2x, cairo 1.0, gtk+ 2.8

Nie ma mnie w pracy. 

Zastepuje mnie: mailto:Bxxxxxxxx.Wxxxx@yyy.pl.

Problemy prosze zglaszac na:
mailto:xxx@yyy.pl
lub telefonicznie,Tel.: +48 xx xxxx xxx

Bezsilni wobec braku winnego, irytowaliśmy się coraz bardziej. W końcu wysłałem maila na adres podany jako zastępca. Bez skutku:

Your message

  To:      postmaster@yyy.pl; Bxxxxxxxx.Wxxxx@yyy.pl
  Subject: [Fwd: Out of Office AutoReply: dbus 0.2x, cairo 1.0, gtk+ 2.8]
  Sent:    Mon, 29 Aug 2005 22:56:59 +0200

did not reach the following recipient(s):

BXXXXXXXX.WXXXX@YYY.PL on Mon, 29 Aug 2005 23:12:53 +0200
    The recipient name is not recognized

Podany adres jest nieprawidłowy. Przyjrzałem mu się bliżej, dostrzegłem literówkę, wysłałem list. Brak odpowiedzi.

Tydzień później, po otrzymaniu kolejnego respondera, zaatakowałem adres postmaster@yyy.pl. Niestety, poczty postmastera najwidoczniej nikt nie czyta, bo i po co.

Dziś nie wytrzymałem i po kolejnej informacji o niedostępności człowieka, którego nie znam i fakt którego wczasów zupełnie mnie ineresuje, wysłałem ponownie maila do zastępcy. Po chwili przeżyłem szok - przyszła odpowiedź:

From: Wxxxx, Bxxxxxxxxx <Bxxxxxxxxx.Wxxxx@yyy.pl>
To: Patrys :: Patryk Zawadzki <patrys@pld-linux.org>
Subject: Out of Office AutoReply...

Nie ma mnie w pracy.
Zastepuje mnie Mxxxxx Kxxxxxxx. Tel. xxx xxxx, xxx xxxx.

Odpłynąłem. Ciekawa propozycja padła w związku z tym na listach:

From: Enleth <enleth@enleth.com>
To: PLD: Developers list (Polish) <pld-devel-pl@lists.pld-linux.org>
Subject: Re: Fw: Out of Office AutoReply: SPECS: esmtp.spec - missing br's

Proponuję na Mxxxxx.Kxxxxxxx@yyy.pl wysłać maila z From i Reply-To
ustawionym na Bxxxxxxxx.Wxxxx@yyy.pl...
From: Zbyniu Krzystolik <zbyniu@geocarbon.pl>
To: PLD: Developers list (Polish) <pld-devel-pl@lists.pld-linux.org>
Subject: Re: Fw: Out of Office AutoReply: SPECS: esmtp.spec - missing br's

nieee, po prostu trzeba ręcznie zapisać na listy
Bxxxxxxxx.Wxxxx@yyy.pl oraz
xxx@yyy.pl

W końcu jak zastępuje, to zastępuje. No i problemy też z tym mamy, zatem
i na ten drugi adres niech idzie. Na tej liście pojawiają się różne
problemy, może akurat ten hotline potrafi pomóc. 8->

Zbyniu