LaTeX, dot i pisanie inżynierki

19 III 2009, 17:32:58

Kontynuując chwalebną tradycję publikowania źródeł latexowych swojej pracy na blogu, oto tarball ze źródłami do mojej.

Jakby ktoś potrzebował porównać oryginalne wersje niektórych plików ze zmodyfikowanymi, to można zassać całe repozytorium w mercurialu wpisując:

hg clone http://ep09.pld-linux.org/~mmazur/inz

Update: zapomniałem dodać, że buduje się toto za pierwszym razem przy pomocy make first, a później już po prostu make.

Natomiast finalny PDF wygląda tak. Czytania odradzam, nic ciekawego tam nie ma. Gdybym nie musiał, to bym czegoś takiego nie pisał.

Za to jakby ktoś chciał, to tutaj garść porad odnośnie technicznej strony klepania takiej pracy:

1. dot to jest bardzo bardzo przydatna rzecz. Prawie wszystkie obrazki wyprodukowałem bardzo szybko właśnie używając dota. Polecam screenshoty. No i moje obrazki.

2. Scribus się nie nadaje do malowania obrazków :)

3. Politechnika Opolska oczywiście nie udostępnia własnego loga w formacie wektorowym, bo po co. Na szczęście skalowanie odpowiednio dużego PNG jest całkiem sprawne i na finalnym wydruku wygląda ładnie.

4. Jeśli twoja uczelnia udostępnia styl do latexa w którym należy pisać prace, to go używaj. Jeśli nie, to się poważnie zastanów, czy warto. O ile "typowe" rzeczy są łatwe do osiągnięcia, jeśli styl je obsługuje, to już z niektórymi musiałem się tak masakrycznie nahakować... To widać po źródłach -- są najeżone jakimiś obejściami i modyfikacjami. Serio, wygląda to wybitnie paskudnie, a nie zależy mi na tyle, żeby próbować któreś z tych modyfikacji czyścić i później gdzieś mergować.

4a. Politechnika Opolska oczywiście nie udostępnia własnego stylu, bo po co.

Jeszcze raz: jeśli będziesz próbował walczyć z domyślnymi stylami, to zrobi się nieprzyjemnie. Przykłady drastyczne:

1. Żeby mieć tytuły dla tabelek wyrównywane do lewej, a tytuły dla obrazków wycentrowane, zrobiłem dwie komendy: \centercaption i \leftcaption, które zmieniają zmienną \leftcapalign na 0 albo 1 i zależnie od tego funkcja generująca podpisy (\@makecaption) zachowuje się tak, albo inaczej. Oryginalnie chciałem, żeby funkcja \@makecaption zachowywała się odpowiednio zależnie od kontekstu, ale nie znam na tyle składni texa, więc skończyło się na tym, że muszę dodać linijkę przed każdą tabelką i obrazkiem.

2. Do powyższego: żeby przy wyrównaniu do lewej mi równało do szerokości tabelki, a nie do marginesu, wygooglałem, żeby używać \ttabbox i \ffigbox przy definiowaniu tabelek i obrazków (paczka floatrow). Problem: one zwiększają countery do spisu treści o jeden, nie wiem po jaką cholerę, więc muszę najpierw rozpocząć tabelkę \begin{table}, później zmniejszyć na powrót counter dla tabelek \addtocounter{table}{-1} i dopiero wsadzić zasadniczą tabelkę do \ttabbox. Oczywiście nad tym wszystkim \leftcaption.

3. Używam \begin{lstlisting} do listingowania kodu (paczka listings). Tyle, że nie wiem, jak temu zmniejszyć czcionkę, więc przed każdym takim listowaniem jest \small, a po jest \normalsize.

3a. Do listowania konfiga takiego np. mysql-a, gdzie średnik jest komentarzem, ustawiam język na lispa, po czym po listingu wracam do domyślnej składni -- unix shella (listowałem głównie różnej maści konfigi z hashowanymi komentarzami).

3a. Powyższa komenda niektóre spacje robi z podkreślnikami. Olałem, nie chciało mi się kombinować jak to wyłączyć. I tak nikt tego nie będzie czytał.

Oczywiście nie mówię, że tego nie dałoby się zrobić czyściej, ale to nie jest konkurs na ładne źródła w latexu, więc jak zaczynało działać, to przestawałem w tym dalej grzebać. Ale są też przykłady łatwych rzeczy:

1. Żeby mieć numery tabel od 1 do N, zamiast w formacie X.N, gdzie X to numer rozdziału, wystarczy dać \counterwithout{table}{chapter} z paczki chngcntr

2. Żeby mieć captiony dla tabel na górze, wystarczy dać \floatsetup[table]{position=top} z paczki floatrow.

3. Paczka tocloft daje dużą kontrolę nad spisami treści. Ja głównie używałem \cftsetindents do zmiany wcięć w spisach tabel i figur, bo domyślnie są takie, jak dla chapterów, co przy numeracji 1..N zamiast X.N wygląda niezbyt ładnie.

4. \begin{adjustwidth} z paczki changepage pozwoliło mi na bardzo proste zwiększenie marginesów bocznych tylko i wyłącznie dla jednej tabelki, która była trochę szersza niż marginesy pozwalały. Domyślnie była przyklejona do lewego marginesu i wystawała za prawy (tak jak się robi z za szerokim tekstem), a ja chciałem ją mieć całkowicie wycentrowaną. No i się udało.

Były jeszcze jakieś drobiazgi, ale to można znaleźć w samych źródłach, zwłaszcza, że jest historia commitów i można porównać oryginalny plik mwrep.cls (czyli klasa, jakiej używałem, zamiast standardowego reporta) z modyfikowanym.

A, właśnie, licencja tego stylu bodajże zabrania modyfikowania go, więc jest tylko w formie informacyjnej, nie do dystrybucji. Jeśli ktoś by chciał rozpowszechniać tę klasę z moimi zmianami, to bodajże trzeba zmienić nazwę. Wersja tego pliku dostępna bezpośrednio przez www ma o-r na uprawnieniach, żeby google nie zindeksowało, więc można pooglądać tylko tą z mercuriala, albo tarballa.

Update: problem z numerowaniem tabel/obrazków wynikał z tego, że używałem od paru lat już obsolete teTeXa, zamiast TeX Live'a. Nie zdziwiłbym się, gdyby i inne rzeczy dało się znacznie czyściej zrobić, gdybym nie zaczął od używania staroci.

Jednak Linux

16 II 2009, 00:25:57

Pół roku temu zapowiedziałem, że jak będę zmieniał laptopa, to pewnie się na Vistę albo OS X-a przeniosę. W skrócie: stary laptop mi zmarł, więc kupiłem nowy, ale dalej siedzę na Linuksie, a na dodatek moja kobieta też, bo mnie poprosiła o migrację. Poza tym z desktopami ostatnio trochę lepiej.

Ale po kolei.

Nowy laptop przyszedł z biznesową wersją Visty na pokładzie, więc mogłem się nią trochę pobawić i była całkiem fajna. Niestety przez trzy dni nie miałem na czym pracować, więc musiałem szybko podjąć decyzję co dalej. Przeważyły dwie rzeczy:

1. Po zabawach z Vistą Magdy wiedziałem już, że Windowsy są zdecydowanie mniej konfigurowalne od desktopów linuksowych, więc musiałbym spędzić sporo czasu (i bardzo niewykluczone, że pieniędzy) na osiągnięcie tej samej funkcjonalności, a i tak nie miałem gwarancji, ze mi się to uda.

2. Migracja danych byłaby czasochłonna. Głównie przerażało mnie przecięcie poczty -- nie dość, że mam jej dużo na dysku, to jeszcze zostaje wykrywaniem spamu, konfiguracja kont i dużo filtrów. Do tego dochodzą konfigi firefoksa, psi, rss-y i pewnie jakieś tam pomniejsze rzeczy.

Czyli -- dużo roboty, niepewne wyniki i właściwie sam do końca nie wiedziałem co miałbym przez to osiągnąć. I czy za parę tygodni bym nie stwierdził, że to była bardzo błędna decyzja. Prawda jest taka, że ja nie robię za dużo na swoim komputerze, a to, co robię, to w końcu jednak dokonfigurowywuję.

Ciekawie było jakiś czas później, gdy Magda mi zasugerowała, żeby jej zainstalować Linuksa, bo mi system to w sumie po prostu działa, a jej Vista po roku od kupna komputera chodzi jak żółw i robi bardzo dziwne rzeczy. Backup, instalacja Ubuntu 8.10, migracja danych, no i:

The good:

  • System od paru miesięcy po prostu działa i nic mu się nie dzieje. Właścicielka nie chce wracać do Visty.
  • Rhythmbox jest fajny. Przynajmniej na początku.
  • Wirtualne pulpity są fajne.
  • Instalacja i aktualizacja softu są proste.
  • Klikalny support dla zamkniętych sterowników jest fajny.

The bad:

  • Wifi broadcoma jest niedopracowane. Na szczęście wykombinowałem, żeby wyłączyć sprzętowe szyfrowanie i od tego czasu działa stabilnie.
  • Transmission (klient bittorrenta) ma upierdliwe niedoskonałości. Odpowiednie bugi zostały zgłoszone.
  • Compiz ma artefakty. Do tego powodował bardzo poważny problem z firefoksem, który na szczęście udało się obejść.

The ugly:

  • Prawda jest taka, że gdyby nie ja, to Magdzie nie udałoby się doprowadzić systemu do stanu używalności. Acz jak już został doprowadzony, to jest bardzo fajnie.

W ogóle to była moja pierwsza okazja pobawienia się dłużej Ubuntu i muszę powiedzieć, że jestem pod wrażeniem. Ogólnie system jest całkiem dopracowany (jeden z trzech dyskryminujących błędów był związany z zamkniętymi sterownikami), a GNOME jest wygodny w użyciu. Przynajmniej w porównaniu do mojego KDE 3.5.

Acz cholera wie jak to będzie w dalszej perspektywie. Wygląda na to, że zmiany w KDE4 jednak długofalowo wyjdą projektowi na dobre i zrobi się z tego nowoczesne środowisko, które może GNOMA przegonić (i, co ważniejsze, być godnym rywalem MS-a i Apple'a). Zwłaszcza podoba mi się koncepcja integrowania (płynnie degradowalnej) funkcjonalności kompozytowego (?; tego z efektami '3d') desktopu z normalnym window managerem, a nie używanie kompletnie osobnego projektu do tego. Compiz fajny jest, ale to jest masa (a) potencjalnie niestabilnego i nieprzetestowanego kodu i (b) nikomu niepotrzebnej funkcjonalności. Serio, po chwili zabawy z opcjami, 95% efektów i tak pozostaje wyłączona. (A sam projekt próbuje nie umrzeć i nie wiadomo, czy mu to wyjdzie).

X.org też ostatnio wydaje pozytywne odgłosy. Wygląda na to, że The Open Source Way jednak jest wydajniejszą metodą produkcji oprogramowania i, dysponując znacznie mniejszymi siłami, uda się dogonić konkurentów.

Acz tu zaznaczam, że i tak jesteśmy znacznie w plecy. Linux dopiero teraz dorabia się nowoczesnej architektury dla desktopu i to na razie mają support dla chyba paru chipów intelowskich. Będzie co najmniej połowa 2010, zanim użytkownik będzie mógł wziąć dystrybucję, wrzucić do komputera i być pod niesamowitym wrażeniem tego, że jego karta graficzna jest obsługiwana tak dobrze, jakby normalnie pracował na Windowsie XP w roku 2001.

(Ciekawym jakie po drodze będą jaja z zamkniętymi sterownikami do NVIDII i ATI, gdy przyjdzie pora korzystać w nich z nowych interfejsów kernelowych.)

A ALSA? Cholera wie. Może kiedyś dorobimy się odpowiedniej ilości kodu wyższego poziomu, żeby linuksowy system dźwiękowy z piekła rodem Po Prostu Działał i pozwalał w łatwy sposób korzystać z czegoś więcej, niż podstawowej funkcjonalności. A może nie i akurat dźwięk na zawsze pozostanie piętą achillesową. Bo na to, że zajdą jakieś drastyczne zmiany na niższym poziomie i sama ALSA zostanie jakoś przerobiona, raczej nie liczę. Zresztą imho byłby to poważny błąd.

A ja za jakiś czas sobie pewnie przetestuję kde4 wraz z najnowszymi iXami, bo chyba mam w laptopie odpowiednią kartę Intela, żeby mi to działało jak trzeba.

Moje największe informatyczne wpadki

10 II 2009, 02:43:58

Zainspirowane tym wpisem.

1. Pisząc wiele lat temu automatykę ftp-ową do pld, wstawiłem tam demona lockującego (o, to). Fakt, oryginalnie miał robić też kilka innych rzeczy, ale w praktyce nigdy tego nie zakodowałem, więc zamiast paru prostych flocków jest osobny proces i gadanie z nim po unix sockecie.

2. Używanie lokalnych mysql-i jako miejsca do logowania danych, by je później zasysać na centralnego mysql-a i tam obrabiać. I to wszystko na kilkudziesięciu maszynach. W praktyce był to bardzo czasochłonny w maintainowaniu i podatny na błędy koszmarek, który na szczęście nie jest już w użyciu. (Przy padach maszyn bazy się psuły, trza je było ręcznie naprawiać, a update schematu bazy na parudziesięciu maszynach był... upierdliwy.) Serio, już lepiej pisać do pliku, jeśli się nie korzysta z jakiś dedykowanych rozwiązań dla systemów rozproszonych (hadoopy, czy coś).

3. linux-libc-headers. Eh. Przez sporo releasy kerneli 2.6.x upgrejdowałem parędziesiąt mega nagłówków (katalog "include" ze źródeł linuksa) ręcznie przy pomocy diffa i patcha. Tak, jestem skończonym idiotą. Obecnie z umiejętnością używania rzeczy typu mercurial (czy też po przeszkoleniu się w gicie) maintainowanie czegoś takiego byłoby pewnie o rząd wielkości łatwiejsze. Chooooociaż. To były czasy 2.6.0, rok 2003, git nie powstał jeszcze przez półtora roku. Ha! Nie jestem idiotą, tylko prawdziwym twardzielem! (Właśnie sobie uświadomiłem, że grzebałem w zdecydowanie fajniejszych rzeczach, jak byłem nastolatkiem :(

4. Backupy. Udało mi się w jednej firmie już kilka razy odtwarzać/odzyskiwać dane, bo ktoś/ja nie dopilnował, ale ewidentnie uczę się bardzo powoli, gdyż w chwili obecnej jestem odpowiedzialny za co najmniej kilka systemów, którym od dawna mam dorobić sensowny backup, a które, jeśli umrą, to spowodują, że będę miał bardzo przekichane. I nie tylko ja. Ale już niedługo wszystko będzie backupowane. Serio serio. (Dzisiaj miałem badblocka na laptopie i tak się przeraziłem, że szybko zapuściłem mój autobackup. Okazało się, że poprzedni był we wrześniu...)

5. Programistyczny mainstream. W javie zdarzało mi się dłubać, bo musiałem coś zmodyfikować, ale nigdy nie potrafiłbym sam napisać całego programu. C++ poznałem za gówniarza w stopniu podstawowym i nigdy tej wiedzy nie pogłębiłem (nigdy się na przykład nie nauczyłem tej debilnej składni ichnich templejtów). Ostatnie IDE, jakiego używałem z własnej woli (studia pomijam), to były jakieś MS Visual C++ za czasów Windowsowych, czyli przed 2002. Miałem wtedy 14-16 lat. C znam dobrze (sporo grzebałem; eskpertem nie jestem), pythona wystarczająco (cały czas używam, ale gigantycznych systemów nie pisałem). Czyli jak patrzę na ogłoszenia o pracę, to właściwie nie mam w nich czego szukać.

6. Windows. Chcielibyście zatrudnić administratora, który musi się chwilę w głowę podrapać, żeby znaleźć panel administracyjny, bo fizycznie Windowsy ogląda raz na pół roku przez pięć minut? No właśnie. Powinienem był się bardziej zdywersyfikować. Że dywersantem zostać.

Więcej grzechów nie pamiętam. Jeśli sobie jeszcze kilka przypomnę, to wrzucę drugą część tego wpisu.

Oczywiście liczę na rozpoczęcie łańcuszka. Jeśli namówisz dwóch innych blogerów na opublikowanie listy takiej, jak powyższa, to spotka cię wielka miłość/fiskus zabierze ci trochę mniej wypłaty (niepotrzebne skreślić). Serio serio.

Rynek IT a recesja?

13 XII 2008, 13:50:27

W tym odcinku, dla odmiany, jest pytanie do publiczności.

W dosyć krótkoterminowych planach (6 miesięcy) mam wyjazd do Warszawy, D.C. Wiąże się to ze zmianą pracy na jakąś "normalną", w sensie nie-zdalną.

No i powstaje problem -- czy za sześć miesięcy w ogóle będzie dało się gdziekolwiek zatrudnić? O ile rozumiem skutki globalnego kryzysu są u nas odczuwalne z lekkim lagiem, ale są. Ma ktoś jakieś doświadczenia? Coś już się na naszym lokalnym rynku zaczęło ruszać w tej kwestii? I jakieś przewidywania na najbliższą przyszłość?

Resetowanie auta jest kosztowne

07 XII 2008, 18:13:20

Znacie ten kawał o informatykach, którzy, żeby "naprawić" samochód, najpierw z niego wysiadają, a później wsiadają? No to nie jest on taki wyssany z palca.

Sam tak niestety robię. Automatycznie traktuję swój samochód tak samo, jak bym traktował komputer i po raz drugi mnie to poważnie pokopało po kieszeni i zmasakrowało plany.

Raz pierwszy -- przez parę tygodni samochód na niskich obrotach chodził nierówno, ale nic z tym nie robiłem[1]. Pojechałem nad morze. Wracając, gdy przejeżdżałem przez Słupsk, samochód na jednym postoju powydawał trochę dziwnych dźwięków przez chwilę, po czym przestał. Dziwne. Pewnie jakiś glitch, jedziemy dalej.

[1] Inna sprawa, że mechaników miałem takich, którzy nie zachęcali do częstego ich odwiedzania. Od tego czasu ten konkretny bug już jest resolved.

Oczywiście do tego Słupska, to mnie później z powrotem dowiózł assistance, po paru godzinach czekania na niego. A samochód odebrałem jakiś tydzień później, płacąc za: bilety PKP na trasie Opole--Słupsk, lawetę, robociznę, no i kilka części zmasakrowanych przez urwane łopaty wiatraka od chłodzenia (to duże kręcące się coś z przodu). Oczywiście po całej zabawie samochód przestał się rzucać na niskich obrotach. Zapewne przez nowy wiatrak, który teraz już pracuje równo i nie grozi urwaniem łopat.

Raz drugi -- przedwczoraj wyjeżdżając rano do Piły zauważyłem, że nie działa mi ogrzewanie. Oh well, po prostu pojadę bez. Przejeżdżałem obok swojego mechanika, ale nie wstąpiłem. Paręnaście kilometrów dalej, stojąc przed zjazdem na autostradę, czułem, że auto chodzi trochę nierówno i już miałem zawrócić, ale magiczne myślenie wygrało.

Zwozili mnie później z tej autostrady, za co zapłaciłem dosyć słono, więc w sumie koszta naprawy będą pewnie gdzieś tak x3. A do Piły, to sobie pojadę dopiero w poniedziałek.

Wnioski:

  • Laweta jest znacznie droższa i bardziej czasochłonna, niż profilaktyka antylawetowa.
  • Samochód nie ma tak poizolowanych podsystemów, jak komputer i "niewinne" objawy mogą sugerować (i często sugerują) poważniejsze problemy. W razie wątpliwości zatrzymać się i dzwonić do mechanika.
  • Samochód to fizyczny mechanizm. Restarty tutaj nie pomagają. Drobne usterki będą się tylko powiększać.
  • A ponieważ auto to system naczyń bardzo połączonych, drobna usterka jak już się przemieni w poważniejszą (coś się przestanie urywać i w końcu się urwie), może za sobą pociągnąć zmasakrowanie paru części, które są akurat umiejscowione obok. I też kosztują.

Multidistro mega howto

16 XI 2008, 01:58:58

Vide poprzedni wpis -- zna ktoś jakąś stroną z krótkimi opisami wykonywania różnych operacji pod różnymi distrami, czy mam sam zakładać? Znam rpm -qa, umiem obsługiwać poldka i chciałbym prostą stronę, z której dowiem się jak podobne rzeczy osiągnąć emergem, albo getując apta. Plus bardzo przydatne byłyby szybkie kursy budowania paczek, wytłumaczenie struktury deweloperskiej, rozkładu katalogów na ftp-ie, etc, etc. Taki data mine dla zaawansowanych adminów. Anyone?

Zwyciężył mercurial

27 VIII 2008, 02:21:08

Vide ostatni wpis. Mercurial jest fajny, bo:

1. Nie jest gitem. Jest specjalnie robiony w taki sposób, żeby być jak najbardziej intuicyjny w użyciu i nie straszyć ludzi nadmiarem opcji (większość bardziej zaawansowanych komend jest domyślnie nieaktywna i trzeba je aktywować w konfigu).

2. Jest w pythonie. Lubimy pythona.

3. Posiada równoważnik najważniejszych funkcji darcsa -- poleceń record/pull, w postaci poleceń record/transplant.

4. Ma out of the box (acz domyślnie nieaktywną) bardzo potężną funkcjonalność Mercurial Queues, które są implementacją koncepcji quilta w oparciu o VCS. Jest to naprawdę zajebista i prosta w użyciu zabawka. Na chwilę obecną w pracy zajmuję się dokładnie tym, co opisywałem w poprzednim wpisie -- grupuję sobie poszczególne commity składające się na implementację jednego konkretnego ficzera, po czym folduję je w jeden (a następnie zmieniam im kolejność, żeby rzeczy branch-specific były zawsze commitowane ostatnie). I nawet jak hg już się dorobi rebase'a, to i tak najprawdopodobniej nie będę z niego korzystał, bo MQ też w bardzo prosty sposób umożliwia zsynchronizowanie się z nowszą wersją upstreama.

I nowy 7thguard będzie trzymany właśnie w mercurialu. Najprawdopodobniej w MQ.

Wheeeee, dawno już nie miałem tyle radochy z nowego narzędzia.

Na ringu zostały: mercurial i git

24 VIII 2008, 19:34:11

Distributed VCS-y są fajne, od paru lat w pracy używałem darcs-a. Problem z darcsem jest taki, że (a) ma w cholerę bugów i (b) praktycznie rzecz biorąc jest martwy. Czas na alternatywy.

Ostatnio bawię się bazaarem m.in. dlatego, że PLD przeszło na launchpad.net z którym bazaar jest domyślnie zintegrowany, więc gdyby kiedyś mi się nudziło i przerzuciłbym PLD-owego CVS-a do bazaara, to od razu mielibyśmy integrację z bugtrackerem. Poza tym bazaar jest dosyć intuicyjny, Shuttleworth przekonująco pisze, a całość jest w Pythonie.

Problem: nie odpowiada on mojemu trybowi pracy.

Darcs ma dwie wielkie zalety:

1. Polecenie do robienia commitów jest domyślnie interaktywne, tzn. pyta się czy zapisać każdą jedną zmianę w każdym pliku. Brzmi wkurzająco, ale, po pierwsze, wystarczy nacisnąć 'a' (all) i z głowy, a po drugie oznacza to, że mogę, mając kompletnie rozgrzebany plik z kodem, zauważyć, że właśnie stworzyłem self-contained zmianę i sobie ją commitnąć niezależnie od całej reszty śmiecia w pliku. Jest to bardzo naturalny sposób pracy, bo, zwłaszcza przy większych zmianach, dopiero w trakcie ich tworzenia zauważam wyodrębniające się niezależne, eee, ciągi funkcjonalne (?). Afaik inne VCS-y zaadoptowały to w postaci trybu "interactive" (bazaar przez plugin, hg chyba domyślnie w kodzie, nie wiem jak git).

2. Darcs nie ma rewizji, dla niego rezpozytorium to tak naprawdę zbiór patchy. Oznacza to, że (a) komenda rebase (w bazaarze jak zwykle w postaci pluginu, w hg nie mam pojęcia, czy w ogóle jest, a git ma domyślnie) jest kompletnie bez sensu, bo mogę sobie pullnąć patche z czegokolwiek na cokolwiek, ważne, żeby się nakładały i (b) mogę utrzymywać kilka wersji dokładnie tego samego drzewa, różniących się tylko i wyłącznie jednym patchem.

Punkt pierwszy to nie problem, punkt drugi i owszem. Wynikają z niego dwa różne workflowy:

1. Surwiwal fitnessu (survival of the fittest). System ma robić X. Nie mam pojęcia jaki jest najlepszy sposób na zrobienie X, więc robię kilka możliwych implementacji, po czym odpalam je na różnych maszynach. I dalej wprowadzam równoległe zmiany sprawdzając, jak różne wersje na nie zareagują. W darcsie jest to proste, wystarczy, żebym w pewnym momencie do jednego drzewka wprowadził patch XX, a do drugiego XY i pullując nowe zmiany z drzewka A do B lub vice versa, pamiętał o niepullowaniu tych konkretnych patchy. I mogę sobie tak rozwijać równoległe wersje tego samego programu praktycznie w nieskończoność, zachowując owe różniące je patche. O ile wiem w bazaarze w ogóle tak się nie da, nie wiem jak w hg i gicie.

2. Odgałęzianie się od ruchomego pnia (dla twardzieli: odbranchowywanie się od movowalnego trunka). Sprowadza się do tego, że mam gotowy kawałek softu, który jest rozwijany niezależnie ode mnie przez upstream i ja mam na ów soft nałożyć własne poprawki, sporadycznie mergując się z upstreamem. W darcsie nie problem, mogę pullować dowolne patche skądkolwiek dokądkolwiek, w pozostałych natomiast potrzebny jest rebase. Jak pisałem: bzr i git to mają, nie wiem jak hg.

Pierwszy tryb rozwoju softu jest dosyć specyficzny dla mojej pracy, drugi natomiast, co uświadomiłem sobie dosyć niedawno, wcale nie (acz też obecny). radioemiter.pl i pld-users.org to dokuwiki, www.pld-linux.org to MoinMoin, forum.pld-linux.org to bodajże phpbb (acz nie stawiane przeze mnie). I gdybym wtedy wiedział to, co wiem teraz, to wszystkie one od razu lądowałyby w jakimś VCS-ie. Bardzo ładnie ten problem wyszedł z pld-users, gdzie jeden z adminów zupgrejdował do nowszej wersji dokuwiki i wszystkie moje site-specific zmiany poszły do /dev/null. I żeby je teraz odzyskać będę się musiał z jakimiś patchami i diffami bawić (zakładając, że gdzieś się zachowała stara wersja). A tak, to jeden rebase i po paru minutach miałbym z głowy.

I właśnie dlatego nowy 7thguard, stawiany na drupalu, będzie od początku czymś wersjonowany.

Przy czym nie samym rebasem człowiek żyje. Można powiedzieć, że na co mi rebase -- ściągam najnowszą wersję upstreama, diffuję względem wersji od której się odbranchowałem, po czym próbuję nałożyć takiego patcha na swój kod z commitlogiem "upgrade to upstream X.Y.Z". Prawda, rzecz w tym, że w wypadku tego typu workflowu bardzo liczy się przejrzystość commitlogów, gdyż po paru latach pogubię się w tym, co tam właściwie jest zrobione względem oryginału, a już tym bardziej będzie z tym miał problem ktoś inny chcący też coś pomóc.

I tutaj wychodzi drugi problem z bazaarem -- nie wspiera on przepisywania historii. Rebase rebasem, ale po jakimś czasie commitlogi wyglądałyby tak: 3. implemented X; 4. fixed bug in X; 7 upgraded to upstream 5.0; 11 X obsolete, same functionality implemented elsewhere", etc, etc. Tego typu historia jest ważna w przypadku publicznego projektu, do którego jest np. bugtracker i w którym spójność całości jest święta (to dlatego Linus nie rebase'uje swojego drzewa, ani nie grzebie w jego historii post-factum). Jest ona natomiast ewidentną przeszkadzajką (bo zamazuje obraz zmian) w przypadku projektów bardziej prywatnych, typu opisanych powyżej/tych, co mam w pracy. Po prostu utrudnia życie.

Jestem praktycznie pewien, że z gitem tutaj nie byłoby problemów, nie wiem natomiast jak hg.

W ogóle dosyć oczywiste jest, że bazaar odpada i że najprawdopodobniej wyląduje na gicie. Łudzę się jeszcze, że hg spełni moje wymagania, acz nie mam jakiś specjalnych nadziei. Ot, po prostu, autorzy gita najprawdopodobniej przewidzieli powyższe przypadki użycia oraz setki innych, o których jeszcze nie pomyślałem i które pewnie nigdy nie będą mi potrzebne. Do tego git ma pewnie zaimplementowane optymalne sposoby integracji z wszystkimi innymi rozwiązaniami na rynku (perforce anyone?), więc gdybym kiedykolwiek trafił do jakiejś firmy, gdzie standardem jest coś niespecjalnie wygodnego, najprawdopodobniej byłbym w stanie uprzyjemnić sobie życie przy pomocy odpowiednio użytego gita.

Główny problem z gitem jest taki, że jest on trudny i nieintuicyjny dla ludzi wychowanych na czymkolwiek innym. Tego problemu nie ma z bazaarem, nie wiem jak z hg, ale git to jest oczywisty kosmos. Jest to trochę sytuacja jak z vimem -- używam, bo jest dla mnie wydajniejszy, niż alternatywy. Ale gdybym musiał kogoś innego zmuszać do jego używania, to już byłby problem. Ale nie muszę, bo edytować tekst można w czymkolwiek. Z VCS-ami już nie ma tak łatwo. Jeśli wrzucę 7thguarda do gita, to znacznie podniosę poprzeczkę dla kogokolwiek, kto chciałby w tym później coś pogrzebać (ditto dla pld-users i reszty). Tak nie jest w przypadku np. bazaara, bo czyś z CVS-a, SVN-a, czy czegoś takiego, będziesz się czuł jak w domu.

(To jest powód dla którego przy jakichkolwiek zmianach PLD prawie na pewno nie wyląduje na gicie. Zaawansowane funkcje gita i tak nie zostałyby wykorzystane, a ludzie by się pewnie w końcu zbuntowali, że nowy soft działa kompletnie na odwrót, niż stary dobry CVS. Tego problemu praktycznie nie byłoby właśnie z bazaarem.)

W ogóle nowy 7thguard to będzie ciekawy przypadek. W teorii w ogóle nie powinienem musieć grzebać bezpośrednio w kodzie drupala, wszystko powinno być do załatwienia themami, konfigami i pluginami. W teorii. Jak to wyjdzie w praniu, to się jeszcze zobaczy.

Hmmm, tak się zastanawiam. Może te systemy to jest nowy sposób na rozwój różnych webowych CMS-ów i takich tam? Może to właśnie powinno być specjalnie robione tak, żeby klienci mogli upgrejdować swoje rozwiązania przy pomocy jakiegoś bzr-a z rebasem? Nowe tarballe powinny od razu zawierać katalog .bzr, a nowe wersje powinny być także dostępne do łatwego pullowania/mergowania takimi narzędziami? Graficzne konfigo-klikadła powinny automatycznie commitować wprowadzone zmiany? Interesting... Ciekawym, czy dałoby się taki sposób tworzenia stron dla klientów wprowadzić w mojej opolskiej firmie. Acz to już temat na osobny wpis.

PLD @ Amazon EC2

19 VIII 2008, 20:53:19
19:47 <Aria> Amazon EC2 AMI ID: ami-5ced0935 <- pld linux th base setup as a public image, you can setup an ssh key through amazon's api and run your very own.
19:47 <Aria> (Caleb Maclennan's work)

Ok, that's like way cool 'n shit. Those crazy foreigners and their crazy ideas!

(My next entry will be about Google switching to PLD. Seriously. Stay tuned.)

Linux na /dev/drzewo, idę na Vistę

14 VIII 2008, 01:04:00

Ten wpis i tak jest przeraźliwie długi, nie chce mi się linkować do definicji używanych pojęć (od czego wujek google), a już tym bardziej do źródeł z których wiem w jaki sposób np. power management, albo WiFi ssie w Linuksie. Ale to zazwyczaj wystarczy poszukać prezentacji maintainerów tychże podsystemów. Oni wiedzą najlepiej co jest źle. Przykład. I dla niekumatych: ja w tym tekście w żaden sposób nie krytykuję niedesktopowych zastosowań Linuksa. A, i jeszcze polecam przeczytać to.

Im jestem starszy, tym bardziej szanuję swój czas i tym większą mam ochotę używać optymalnie dopasowanych narzędzi. Czyli np. przestać używać Linuksa na desktopie, bo prawda jest taka, że, w porównaniu do konkurencji, technicznie wypada dosyć blado.

Zaawansowane zarządzanie energią (aka hibernacja i pochodne)? Raz działa, raz nie działa, sterowniki często nie mają obsługi niczego poza on/off (a Vista afaik jest bardziej bateriooszczędna od Linuksa). Dźwięk? Podstawowy zazwyczaj działa, ale alsa jest wybitnie głupio zrobiona (próbował ktoś kiedyś wykombinować co robią różne ustawienia w mixerze?) i dalej wszyscy jeżdżą na różnych demonach dźwięku. O jakimś standardzie dla kodeków nie wspomnę. WiFi? Jak działa, to dobrze, jak nie, to masz pecha, bo pewnie nie ma dla ciebie sterowników. Obsługa 3D? Hahaha. Xorg jest sto lat za murzynami (i to prawie we wszystkim), binarne sterowniki supportują co chcą (a w ATI pewnie dalej nie działają), kernel dopiero zaczyna mieć jakieś ficzery pozwalające mu nad tym wszystkim zapanować (i nie wiadomo, czy nvidia i amd będą z tego korzystać), a konkurencja od X lat traktuje to wszystko jako oczywiste ficzery. Obsługa różnych dodatkowych urządzeń? Jak trafisz na coś supportowanego, to git, jak nie, no to pech. Rosyjska ruletka z kupowaniem jakiegokolwiek osprzętu, a przy kupowaniu laptopa to tylko z listą supportowanego sprzętu w garści.

Część z tych rzeczy to po prostu opóźnienia w rozwoju (głównie Xorg), na część natomiast jest albo za późno (ktoś ma ochotę poprawiać alsę? albo dalej twierdzić, że gstreamer wszystko rozwiąże? ile to już lat?), albo są nieuniknionymi konsekwencjami metodologi open source. Prawda jest taka, że dla producentów sprzętu/użytkowników binarne sterowniki i nieczęsto updejtowane Windowsy są zdecydowanie tańsze w supportowaniu/wygodniejsze, więc nie ma i nie będzie masowego ich otwierania. Z czego wynika, że dla rozwiązań desktopowych Linux będzie zawsze gorzej supportowany, bo zawsze będzie spora część rynku preferująca binarki. Producent może stworzyć sprzęt, napisać sterowniki, przetestować na dosłownie kilku dostępnych na rynku Windowsach, dopisać proste GUI i wsio. Na Linuksie (a) musisz mieć otwarty kod, czyli tajemnica handlowa /dev/null (tajemnica handlowa jest znacznie starsza od Linuksa i, niezależnie od życzeń Linuksiarzy, producenci raczej nie zaczną z niej rezygnować), (b) produkowanie własnego oprogramowania do obsługi sprzętu jest kompletnie niepraktyczne, więc obsługa twojego sprzętu będzie tylko do tego stopnia przyjazna, do jakiego pozwala obecny stos softu danego typu. Czyli zazwyczaj średnio na jeża albo wcale (alsa i jej intuicyjny mixer? karty 3d i zaawansowane ustawienia 3d? nie wiem, kamera i jakieś niestandardowe ficzery? wszystko padaka).

Oczywiście spora część z tych problemów zostanie rozwiązana, gdy Linux na desktopie się odpowiednio rozpędzi i producenci będą zmuszeni go supportować. Tyle, że to się nie stanie. Linux na desktopie technicznie jest sto lat za murzynami, a fajne programy open source albo już od dawna są (Firefox), albo niedługo będą (KDE-pochodne) miały porty pod Windowsa i OS X. Więc niby z jakiego powodu rynek masowy miałby wybierać desktopy linuksowe? Bo KDE4 ma fajny zestaw programików do groupware? Niedługo będzie dostępny pod Windowsy.[1] Coś jeszcze? Czy naprawdę istnieją jakieś konkretne podstawy, żeby przypuszczać, iż desktopowy Linux osiągnie masę krytyczną?

([1] I jest to afaik także prawda w przypadku typowo linuksowatych narzędzi deweloperskich. Obecnie da się spokojnie postawić linuksowe środowisko deweloperskie z desktopem na nielinuksie. ssh/vnc/sieciowe x11/samba to twoi przyjaciele.)

Natomiast w drugą stronę przewaga jest miażdżąca. Konkurencja zawsze ma soft state-of-the-art, a Linux albo całkiem sensowną alternatywę (dostępną także na systemy konkurencji...), albo popłuczyny (photoshop anyone?), albo zupełne nic (rynek gier hahaha).

Nadganianie tego typu zaległości jest możliwe jeśli się ma bardzo dużo wykwalifikowanej i skupionej na konkretnym celu kadry oraz wytworzy odpowiedni ekosystem tworzenia wysokiej klasy oprogramowania dla danego systemu. Microsoft ma tony kasy i tysiące inżynierów, więc może sobie pozwolić na przepisanie systemu grafiki w Viście od zera. Dodatkowo wytworzył gigantyczny ekosystem zewnętrznych firm, które sporo zarabiają na produkowaniu softu pod Windowsy (takie Adobe małą firmą nie jest). Linux ma: brak nawyku płacenia za cokolwiek (ekosystem możemy pożegnać), gigantyczną ilość dystrybucji praktycznie uniemożliwiającą wydawanie binarnych wersji softu oraz stosunkowo niewielką ilość rzeczywiście wykwalifikowanych inżynierów, którzy jeszcze zazwyczaj robią to samo po kilka razy (KDE vs. GNOME, PulseAudio vs. gstreamer vs. czysta alsa, chyba z dwa podejścia do nowej generacji sterów 3d w xorgu, gigantyczna ilość różnych dystrybucji, etc.). W takich warunkach można zapomnieć o dogonieniu kogokolwiek.

Heh, ja sam używam dystrybucji o której słyszał jakiś ułamek promila użytkowników Linuksa. I lubię jej używać ze względu na pewne specyficzne rozwiązania techniczne, czyli głównie poldka i duże rozdrobnienie paczek, ale tak naprawdę to się bardzo dobrze sprawdza tylko na serwerach i w niewielkich specjalizowanych środowiskach (w pracy parokrotnie używałem PLD-owych chrootów), a na desktopie jest wybitnie upierdliwe. Desktopy są znacznie bardziej skomplikowane od serwerów i jeśli mam KDE rozparcelowane na 700+ pakietów (a mam :), to można zgłupieć. A do tego dochodzi jeszcze zatrzęsienie różnych dodatkowych bibliotek i demonów do obsługi różnych rzeczy. Hal, policykit, cośtamkit, acpid, serwer dźwięku (który?), bluetooth, coś do wifi, xorg (też 700 paczek :), czcionki i co tam jeszcze. Oszaleć można. Nawiasem mówiąc ciekawym czym się teraz obsługuje WiFi z GUI? Pewnie jakąś nakładką KDE-ową na NetworkManagera (bo przecież nie można napisać po prostu NetworkManagera, tylko trzeba oddzielić backend od frontendu i napisać co najmniej dwa frontendy, jeden dla GNOME, drugi dla KDE; żeby nie było za prosto).

(Może powinno zostać jakimś oficjalnym policy PLD, że desktop ma niższy priorytet, niż serwer? Kto wie, może mogłoby to ułatwić pewne rzeczy.)

Więc o ile PLD może mi dodawać pewną wartość na serwerach (poldek, sposób pakietowania, domyślne konfigi, unifikacja względem FHS i takie tam), o tyle na desktopie praktycznie nie ma na to szans, a wręcz przeciwnie -- takie Ubuntu jest znacznie lepiej zintegrowane, przetestowane i zjada mniej czasu (dlatego staram się upgrejdować swojego laptoka tylko wtedy, gdy naprawdę muszę, bo zawsze coś się pieprzy przy okazji). Dodatkowo w takim Ubuntu Mark Shuttleworth może powiedzieć, że chce obrać kierunek rozwoju X, sypnąć groszem na ludzi to implementujących no i jakiś tam cel zostaje osiągnięty. W projekcie typu PLD jest to możliwe na znacznie mniejszą skalę (np. FHS), na pewno nie desktopową. Nie może przyjść "lider" i powiedzieć, że robimy X, bo go wszyscy oleją. A w Debianie to już w ogóle są cyrki (widzieliście jakie oni flejmy generują o wszystko? porn-geta na przykład, czy ten aplet do monitorowania zużycia CPU z rozbierającą się kobitą). O sensownym quality control można w PLD zapomnieć. Windows się wydaje raz na ruski rok, to się przy okazji mocno przetestuje, Ubuntu raz na pół roku plus Ubuntu ma ludzi od testów, a PLD ma deweloperów, którym się takich rzeczy robić nie chce (mi też się nie chce).

Pytanie: co zamiast? Na pewno nie zrezygnuję z Linuksa na serwerach -- raz, że nic mnie nie kosztuje, dwa, że lubię swoje PLD i trzy -- zawodowo jednak zajmuję się Linuksami, więc muszę mieć bieżący z nimi kontakt. Ale na desktopie? Albo Vista albo OS X. (Oczywiście nie teraz, tylko jak mi laptop padnie i będę musiał kupić nowego. Obecny by Visty nawet nie uciągnął.)

Główna zaleta Appla -- jest uniksowaty, więc mi bardziej po drodze (większość moich obecnych narzędzi po prostu się buduje i działa, bez jakiś akrobacji). Główna wada Appla -- nie mam go jak najpierw przetestować, a kupować muszę od razu ze sprzętem Appla, który jest afaik drogi (i jest go mniejszy wybór, niż standardowych intelowatych). W przypadku Windowsa Vista mam laptop dziewczyny z tymże, więc mogę sobie testować do woli (o czym będą inne wpisy; materiał do wpisu o Firefoksie mam już gotowy, więc się za jakiś czas pojawi, ale do tego od Visty nie).

Inne problemy:

1. Wirusy. W OS X afaik nie problem, ale w Viście jednak wypadałoby mieć jakiegoś antywira. Nie lubię mieć antywirów, jestem przyzwyczajony do braku konieczności ich posiadania. Z punktu widzenia odporności na wirusy kompletny chaos ABI w zatrzęsieniu dystrybucji Linuksa to zaleta.

2. Upgrejdy systemu. Upgrade poldkiem jest upierdliwy, ale prawda jest taka, że swoje desktopy upgrejduję po parę lat bez żadnych reinstalek i po kilku poprawkach zawsze prawie wszystko działa (teraz np. mam wkurzające problemy przez niedorobiony evdev w xorgu). Nie sądzę, żebym przeżył niereinstalkowy upgrade XP do Visty. Nie wiem jak z OS X. Z drugiej strony na raz wydaną Vistę przez następne wieeeele lat wychodzi soft, który można sobie po prostu upgrejdować. Na PLD jak robisz za długie przerwy, to później nowy python wymaga 70% nowego systemu (bo openldap pociągnął coś, co wymaga ixów, ixy są już nowe, więc całe kde i wszystko graficzne trzeba zassać, etc...; i chciałeś nowego pythona, a przy okazji dostałeś rozwalonego evdeva). Mnie od dawien dawna nie podnieca gonienie za numerkami (czego w znacznej mierze nauczyła mnie upierdliwość upgrejdów w PLD), więc Vista by mi tu pewnie bardzo pasowała. Ba, dalej używam KDE3.5, bo mnie przeraża KDE4.

3. Gnicie systemu. Na PLD problemu nie ma, bo poldkiem i rpm-em mam kontrolę nad wszystkim i jak mi się zrobi za dużo śmiecia, to po prostu wyinstalowywuję co chcę, jadę prostym skryptem po zagubionych plikach i mam czysto (jak mówiłem, mogę po parę lat robić upgrejdy całego systemu praktycznie bez nieprzyjemnych skutków ubocznych; wymagają tylko trochę czasu). Nie wiem jak z Applami, ale afaik Vista nadal sobie z tym problemem nie poradziła. Znajomy m.in. przez to ostatnio wrócił do XP, a laptop mojej dziewczyny zamyka się teraz po kilka minut. Dla mnie to jest naprawdę problem, ja jestem bardzo przywiązany do faktu, że PLD daje mi pełną kontrolę nad wszystkimi plikami w systemie (które do tego są uporządkowane; viva la FHS, viva la patche w PLD) i będę miał poważne problemy ze zrezygnowaniem z tego ficzeru. Ten brak kontroli na najbardziej podstawowym poziomie to jest główny powód dla którego nie lubię dotykać Windowsów. Z drugiej strony -- przy tych setkach pakietów desktopowych to ja i tak zazwyczaj nie wiem co się w systemie dzieje.

4. W Windowsie (i OS X?) za sporo rzeczy jednak trzeba płacić. I to nawet za takie, które w Linuksie dostaję jako standardowe wyposażenie. Taka Vista jest bardzo słabo konfigurowalna w porównaniu do dowolnego Linuksa. Zazwyczaj są płatne narzędzia, żeby dodać brakującą funkcjonalność, ale są brzydkie, bo są płatne. Drażni mnie wydawanie kasy na coś, co uważam za podstawową funkcjonalność. Szczęściem jednak jest sporo softu open source tego typu pod Windowsy, ale nie wiem, czy wszystkie moje potrzeby byłyby zaspokojone. Tak czy siak o tym będzie osobny wpis (z serii "Jak zostać power userem" :).

Dobra, tyle. Tak jak pisałem, na pewno w tym momencie na żadną Vistę się nie przenoszę, co najwyżej przy zmianie laptopa. Ale nawet wtedy nie jest to przesądzone, gdyż (a) tak naprawdę cieszę się z faktu, że np. w nic nie gram i rzadko korzystałbym z ficzerów, których w Linuksie nie mam, (b) jakby co, to zawsze jest laptop dziewczyny; oby mnie nie zostawiła i (c) jednak jest zestaw ficzerów typowo Linuksowych do których jestem bardzo przyzwyczajony. Acz hgw jak te rzeczy wyglądają w OS X. Przy czym gdybym dziadkowi kupował nowy laptop, to pewnie wrzuciłbym Vistę, dał mu dostęp tylko do konta nieadminowego i nie miałbym z tym większych problemów, niż mam obecnie z jego PLD i GNOMEm (mam nadzieję; nie wiem jak z wirusami).

Jak komuś się chciało to czytać w całości, to gratuluję samozaparcia. Ja to muszę przeczytać jeszcze z dwa razy, żeby zrobić korektę przed publikacją. :(

Klient, jego SEO i mój problem

13 VIII 2008, 02:19:09

Jak klientowi zrobiłeś stronę i ją hostujesz, to wypadałoby też wypozycjonować. Problem -- poza jakimiś technicznymi zaleceniami odnośnie samej strony i dodaniem jej do paru katalogów, SEO to nic, czym się można chwalić. Losowo linkowane keywordy w ramach systemu wymiany linków, tworzenie sztucznych stronek na darmowych hostingach, czy wręcz czyste spamowanie różnych internetowych lokacji? Może jednak nie w firmie z którą mam coś wspólnego.

Tylko co robić z klientem, który domaga się takich usług? Nie mogę mu narzucić swojego "systemu wartości", zwłaszcza, że wytłumaczenie jest dla niego pewnie zbyt techniczne, a nielegalne to to afaik nie jest. Może go przekazać jakiejś firmie od SEO? Ale wtedy mogą go podprowadzić z hostingiem i obsługą WWW, a poza tym nie zobaczymy ani grosza z jego pieniędzy na pozycjonowanie. No to wejść w jakiś program partnerski z większą firmą od SEO (są takie?) i obsługiwać klienta via ów program? Tak, super, będę partnerem spamerów. Eh.

Adwordsy afaik takich klientów zazwyczaj nie interesują. Pewnie za drogie. W ogóle Adwordsy się nie skalują. Im więcej pieniędzy na twoim rynku, tym więcej wszyscy licytują. Ty dostajesz taką samą (albo gorszą) usługę, a Google tylko zgarnia coraz więcej kasy. Zdecydowanie powinny powstać jakieś alternatywy.

Może zaoferować naszym klientom za darmo opcjonalny program "wspierania lokalnej przedsiębiorczości"? Tzn. jeśli chcesz, to wybierasz sobie kilka keywordów i my w treści stron innych klientów (którzy też chcą) automatycznie podmieniamy owe słowa na linki do ciebie. Wygląda jak system wymiany linków [1], ale można przedstawić całkiem sensowną argumentację, że podstawową funkcjonalnością jest jednak prowokowanie ludzi do wchodzenia na strony innych lokalnych firm, a pozycjonowanie w Googlu jest tylko skutkiem ubocznym [2]. Bo chodzi o to, żeby klient do ciebie przyszedł. I nie jest ważne, czy zrobi to przez szukanie odpowiednich słów w wyszukiwarce, czy dlatego, że kiedyś wszedł ze strony o czymś zupełnie innym (ale też z Opola) i zapamiętał, że twoja firma istnieje.

[1] Akurat z różnych technik mrocznego SEO automatyczną wymianę linków uważam za najmniej mroczną, bo (a) nie ładuje treści tam, gdzie właściciel strony nie chce (jak spamowanie for) i (b) nie produkuje bezużytecznej treści (jak tworzenie sztucznych stron z linkami).

[2] W wersji light można to zrobić nie z linkowaniem słów w treści, ale z osobną stroną "wspieramy lokalną przedsiębiorczość" (aka "linkownia") w ramach serwisu danego klienta. To już tym bardziej nie było by się do czego przyczepić.

Eh. I tak mi się nie będzie chciało w to bawić, a nawet gdyby, to pewnie nie zadziała (nie jestem w stanie tego teraz stwierdzić, nie znam się na działaniu Googla). Acz mogłoby nieźle namieszać, gdyby jednak zadziałało i gdybyśmy to oferowali za darmo (w sumie tylko tak miałoby prawo działać). Zmniejszyć dochody Googla, to by było coś.

Moje preferencje zawodowe, a mała przedsiębiorczość

10 VIII 2008, 16:21:42

Ostatnio firma dla której pracuję odczuwa pewną presję finansową, a co za tym idzie pracownicy są pod presją, żeby tworzyć nowe rozwiązania, które będzie można oferować klientom. I dzięki całej tej sytuacji odnalazłem coś ważnego. Przypomniałem sobie co to znaczy, gdy mam konkretną wizję tworzonego systemu, gdy z dnia na dzień widzę, że jest postęp, a rzeczy zaczynają działać zgodnie z zamierzeniami. Gdy po tygodniu rzeczywistej pracy mam działające, dobrze przemyślane demo. Przypomniałem sobie dlaczego tyle lat temu mogłem siedzieć nad PLD i dłubać w paczkach tyle czasu, napisać automatykę, czy robić pierwsze systemy dla w/w pracodawcy. Znowu jestem na bieżąco z LWN-em i listami PLD-owymi. Jest fajnie.

(Oczywiście mój blip na tym poważnie ucierpiał, ale doba nie jest z gumy. Zobaczymy jaki sobie wypracuję rytm dnia na najbliższe kilka tygodni/miesięcy. Wątpię, żebym przetrzymał bez przynajmniej niewielkiej regularnej dawki reddita.)

Uświadomiwszy sobie na powrót co jeszcze może mnie informatycznie kręcić [1], poszedłem sprawdzić co z tego jestem w stanie znaleźć w swojej lokalnej firemce (lokalna firemka!=firma z pierwszego akapitu). Wczoraj usiadłem ze wspólnikiem i pogadaliśmy sobie o tym, jak on widzi źródła przychodów firmy informatycznej w niezbyt dużym mieście (mając rok działalności i doświadczeń za pasem). Jego cele/przewidywania: 60% z umów serwisowych dla firm, pozostałe 40% to proste projekty programistyczne poprzetykane sporadycznie czymś minimalnie ambitniejszym (pomijam klientów indywidualnych na typowe "pogotowie informatyczne"). Czyli nic dla mnie.

[1] Używanie nowych/bardziej zaawansowanych umiejętności/doświadczenia do szybkiego tworzenia/prototypowania (dla mnie) nowych działających systemów. Bonusy za konieczność douczenia się nowej technologii w trakcie.

Umowy serwisowe to zazwyczaj jeżdżenie do klienta i naprawianie mu albo sprzętu, albo użeranie się z Windowsami/dziwnymi programikami. Projekty "programistyczne" to w 90% proste strony www (z flashem), a w pozostałych przypadkach jakieś proste systemy obsługi czegokolwiek, ale też z interfejsem po www. Nie znam się na tych rzeczach, poznać nie chcę (zwłaszcza piekiełka zwanego html/css/js), a w ogóle to wszystko straszne nudy.

Czyli pracy to ja tu nie znajdę. Zajmuję się adminką jednego serwera (PLD z vserverami pod xenem) i wystarczy. Nie mam natomiast nic przeciwko czerpaniu dochodów. Niestety na tak małym rynku jest to raczej utrudnione. Stawki mamy niskie, pracownicy zarabiają niewiele, więc firma większość przychodów przeznacza na koszty stałe i pensje dla pracowników. Płacić takim darmozjadom jak ja jakiś sensownych pieniędzy po prostu nie ma z czego.

No więc temu trzeba zaradzić. Wspólnik twierdzi, że tak naprawdę wszystkie firmy potrzebują obsługi informatycznej, bo prawie wszyscy mają komputery, a prawie nikt nie wie jak z nich sensownie korzystać i się nimi zajmować (stąd te 60% na umowy serwisowe) i praktycznie nikomu nie opłaca się zatrudniać na pełen etat informatyka. Zgoda. Czyli oferując tani [2], kompetentny i spersonalizowany [3] outsourcing IT powinno dać się załapać sporą część tych mas malutkich firemek, które są poutykane po biurach na zadupiu, bądź wręcz po prywatnych mieszkaniach. Nawet bardzo tanie rynki robią się dochodowe przy odpowiedniej skali.

[2] Tani tani. Paręset złotych dla jednoosobowej minifiremki to jest dużo, bo to są pieniądze, których dany człowiek nie może wydać na ubranie czy jedzenie.

[3] Spersonalizowany -- zgłaszając się do średniej/dużej firmy ładujesz się w dział obsługi klienta. W małej/średniej firmie możesz gadać bezpośrednio z szefem, obsługiwać cię może zawsze tych samych dwóch ludzi (z których jeden może być szefem ;), oni sami będą się pewnie interesować sposobami na usprawnienie działania twojej firmy, etc, etc. Moja teoria jest taka, że jeśli sam nie wiesz czego ci potrzeba, to zdecydowanie łatwiej jest sobie niezobowiązująco pogadać z szefem zaprzyjaźnionej firemki, niż próbować szczęścia z BOK-iem czegoś większego.

Ale podczas wczorajszej rozmowy jedna rzecz mi nie dawała spokoju -- czy nie powinniśmy być w stanie zaoferować czegoś więcej albo bardzo bardzo tanio, albo wręcz za darmo w ramach naszej oferty, tak, żeby nasz mały klient miał wrażenie, że nie jesteśmy tylko ludźmi od naprawiania komputerów, ale że rzeczywiście na swój sposób chcemy mu pomóc w lepszym prowadzeniu interesu, że zależy nam na jego wydajności i sukcesie (cholera, gadam jak marketoid). No i na podstawie opisów konkretnych firm, z jakimi miał do czynienia wspólnik ostatnimi czasy, w trakcie rozmowy wpadłem na bardzo prosty, nie wymagający od nas wielkich nakładów, pomysł, mogący potencjalnie osiągnąć wymienione cele i otworzyć nam dostęp do tego rynku. Wspólnik przyznał, że koncepcja jest bardzo dobra, ma potencjał i zdecydowanie trzeba ją wdrożyć i zobaczyć co da. A o co konkretnie chodzi? No cóż, tajemnica handlowa. ;) Jeśli docelowo nie wypali, to pewnie opiszę o co chodziło (i dlaczego moim zdaniem się nie udało).

P.S.
Właśnie mi się przypomniało. Nasza (większa) lokalna konkurencja wpadła na pomysł blokowania maili od nas na swoich serwerach, co oznacza, że nie możemy się kontaktować ze wspólnymi klientami (a mamy takich). Indagowana przeze mnie konkurencja powiedziała, żebym spadał na /dev/drzewo, bo nie jestem ich klientem, więc ze mną nie będą gadać. Strasznie mnie ta małomiasteczkowość ucieszyła, więc zapukałem do naszego wspólnego klienta z prośbą o pełnomocnictwo (w końcu robimy za ich outsourcowany dział informatyczny, więc ma sens, żebyśmy gadali z firmą u której się hostują), po czym udałem się do konkurencji. Co z tego wyniknie dowiem się w poniedziałek. Stay tuned.

Pomoce naukowe, hehe

09 VI 2008, 16:35:32

Chyba jednak się skuszę i napiszę ten tekst o własnej technice pisania bezwzrokowego. I to w wersji z dużą ilością obrazków i filmików. Bo te zapowiadają się bardzo ciekawie:


:)

Jak zostać power userem I -- ogólne zasady

08 VI 2008, 18:43:13

Tak jak wspomniałem w poprzednim wpisie, mam zamiar ze swojej kobiety zrobić sprawnego użytkownika komputera. Najprostsza metoda -- zaopatrzyć ją w takie środowisko pracy, jakiego sam używam, po czym powiedzieć jak z niego wydajnie korzystać[1]. Ponieważ moje kontakty z systemami windowsowymi od dawien dawna są bardzo sporadyczne, pierwsze poważne zetknięcie z Vistą było wybitnie nieprzyjemne. "Rany boskie, co za gówno" tłumaczy się głównie na zarzuty praktycznie całkowitego braku konfigurowalności oraz konieczności częstego googlania. Odinstalowanie Norton Internet Security (czy jakoś tak) wymagało znalezienia informacji, że tenże pakiet nie reaguje na standardowy windowsowy ficzer deinstalacji, za to wymaga ściągnięcia ze strony producenta specjalnego programu potrafiącego usunąć dowolny produkt Symanteca. Argh.

[1] Co nie jest równoznaczne z tłumaczeniem jak wszystko działa, a nawet jak co trudniejsze rzeczy należy konfigurować; chodzi o stworzenie sprawnego użytkownika, a nie informatyka.

Konfigurowalność natomiast... Eh. Praktycznie cała funkcjonalność, którą dostaję out-of-the-box w systemach linuksowych, na Windowsy musi być dogrywana przy pomocy niezliczonej ilości programików, które trzeba znaleźć, przetestować (czasami nie działają opluwając mnie dziwnymi, nietrace'owalnymi błędami, a czasami są pod inną wersję Windowsa), po czym za nie zapłacić 19,90$. Chyba, że jest dostępna wersja darmowa/open source. Ale ją też trzeba najpierw znaleźć. Acz o konkretnych aplikacjach i sposobach konfiguracji w następnej części, teraz tylko sporo ogólników.

Pierwsze przykazanie power usera -- będziesz pisał bezwzrokowo. Ale nie zgodnie z dziwnymi zaleceniami z dziwnych kursów, nadwyrężając sobie niepotrzebnie nadgarstki (albo wymuszając kupno "ergonomicznej" klawiatury) i starając się nie odrywać palców od klawiszy. Takie porady techniczne można do kosza wrzucić. Niestety konkretne wytłumaczenie składałoby się albo z bardzo dużej ilości tekstu, albo małej ilości tekstu oraz obrazków i filmików, a na takie blogowanie wątpię, żebym miał ochotę. Może kiedyś, gdy już będę miał feedback z postępów w nauce Magdy.

Drugie przykazanie power usera -- pisząc bezwzrokowo będziesz używał odpowiednich skrótów klawiszowych, tak przemyślanych, by bez zbędnego ruszania ręką być w stanie je wywoływać, niezależnie od tego, czy prawa ręka jest na myszce/touchpadzie, czy na klawiaturze (oznacza to rezygnację z lewego ctrl-a na korzyść lewego alta i winkey'a). Przełączanie wirtualnych pulpitów, tworzenie/zamykanie/przełączanie tabów w przeglądarce, globalne skróty do odpalania konkretnych programów (oraz alt+tab ;) -- to wszystko jest obsługiwane wyłącznie lewą ręką. Skróty mogą wymagać użycia prawej ręki tylko wtedy, gdy implementują tę samą funkcjonalność, co myszka (scrollować mogę albo myszką albo klawiszami (alt+)j/k), bądź też zaraz po nich należy coś napisać (ctrl+l w przeglądarce ma u mnie postać alt+l).

Trzecie przykazanie power usera -- nie będziesz się godził na używanie spowalniających cię programów tylko dlatego, że tak są domyślnie skonfigurowane. Zawsze jest jakieś wyjście. (Tyczy się to też samego systemu operacyjnego, który zawsze ma jakieś ułatwienia, o których niekoniecznie wiesz: alt+tab, alt+f4, etc., etc.)

Czwarte przykazanie power usera -- będziesz znał język angielski i pamiętał o tym, że materiały w nim są prawie zawsze ciekawsze i obszerniejsze od tych po polsku. Na szczęście moja kobieta jest fajna i lengłydż zna płynnie.

Dwa ostatnie punkty wraz z informacją o niewmuszaniu "zbędnej" wiedzy informatycznej mają trochę głębszy sens -- owszem, użytkownik nie musi wiedzieć dlaczego i jak coś działa, byle by potrafił tego sprawnie użyć, natomiast im więcej wie, tym łatwiej jest mu radzić sobie z nowymi sytuacjami oraz bardziej optymalizować środowisko pracy pod siebie, a docelowo o to właśnie chodzi. Idealny finał wyglądałby tak, że Magda sama odczuwałaby upierdliwości w swoim środowisku pracy (mnie autentycznie szlag trafia gdy muszę pracować na nieswoim systemie, bo tak powolny jestem), wymyślała konkretne usprawnienia, próbowała je wdrożyć (tu przydaje się wiedza oraz umiejętność szukania w anglojęzycznym Internecie), a dopiero w przypadku niepowodzenia przychodziła do mnie po rozwiązanie (przy okazji którego dowiadywałaby się kilku nowych rzeczy i następnym razem była w stanie nową wiedzę zastosować).

I to tyle wstępu. W następnym odcinku będzie konkretny opis mojego środowiska pracy na Linuksie oraz planach jego wdrożenia w Viście. Później będę już tylko opisywał konkretne rozwiązania poszczególnych problemów (w momencie pisania tego tekstu mam już opanowanego Firefoksa; ba, przez tę całą zabawę udało mi się zrezygnować z Konquerora :).

O, a tutaj poniżej będą linki do wszystkich odcinków:

PLD RPG

20 IV 2008, 22:06:58

Większość zainteresowanych pewnie już widziała, ale może kogoś ominęło -- PLD RPG/Linux. Autorowi zdecydowanie trzeba pogratulować kreatywności i mieć nadzieję, że to nie ostatni jej przejaw. Właśnie się z paroma deweloperami PLD zastanawiamy, czy by w tym względzie jakoś nie pomóc.

"Na dnie Bałtyku w betonowych butach", 500 słów. Albo "pobity do nieprzytomności przez bandę geeków", wierszem. Ewentualnie "zakopany żywcem w lesie", obrazek, A3, kredkami świecowymi.

Zapewniamy odpowiednie... materiały, gdyby autorowi brakowało natchnienia. Cała przyjemność po naszej stronie.

Mroczni hakerzy nocą, muahahaha

15 II 2008, 02:16:07

Temat interesujący, ale ponieważ nigdy nie miałem specjalnie dużo wspólnego z bezpieczeństwem komputerowym, nie mogę poniższych tez przedstawić z pierwszej osoby. Zamiast tego widzicie mocno przeredagowaną przeze mnie dyskusję ircową sprzed kilku dni. Występują: M -- ja, N -- znajomy programista niehakier oraz S -- znajomy były hakier... a zresztą sam się przedstawi.

(To są zabawy z formą. A jak ktoś nie zauważył, to wydźwięk poniższego ma być taki romantyczno-nostalgiczny.)

S: No więc faktycznie, mam w czytniku RSS-owym securityfocus.com i milw0rma, ale nie bawię się tym już od dawna, tzn. tak od dwóch lat. Z małym incydentem pomiędzy, ale to była rozrywka tylko :)
A nie robię już tego z trzech powodów: raz -- nie mam czasu, dwa -- jest dużo dużo trudniej i mi się nie chce :) oraz trzy -- przestałem być na bieżąco i jest ciężko w to wskoczyć.
Ale faktycznie, czasy się trochę zmieniły i jest już zupełnie inaczej, niż kiedyś. Przez to, że nowe języki (np. python), stały się popularniejsze, sporo "zabezpieczeń" jest już na tym poziomie. Odpadają wszystkie buffer overflowy, off-by-one, format stringi i cała masa innych błędów. Plus właśnie jakieś NX bity i tego typu rzeczy, które dość skutecznie przeszkadzają.
No i cała masa ludzi, którzy się tym zajmowali i byli diablo dobrzy albo zajęła się czymś innym, albo pracuje w którejś security company, albo rozpłynęła się w powietrzu. Trochę kontaktów dalej utrzymuję, ale właściwie ogranicza się to do jednego kanału na IRC-u na efnecie.

N: A kto był dobry i może o nim słyszałem? Ale nie jakieś lcamtufy, tylko inne :)

Udało nam się ustalić następujące nicki: insect, appelast, nergal, venglin, z33d, bulba, kil3r. Ja dorzuciłem jeszcze carsteina :)

S: Kto tam jeszcze... halfdead, ludzie z synnergy.net, v0id, twd. Ale to raczej blackhaty, mało o nich słychać.

N: A są na przykład goście, którzy są "sławni", ale nikt ich nie zna? Tzn. zrobili coś spektakularnego i podpisali się jakoś pseudonimem artystycznym, ale w sumie nikt nie wie kto to, bo na IRC-u ich nie ma, nikt ich nie zna, itd.

S: W sumie gobbles, ~el8.

M: Jak rozumiem wyjaśniło się kto siedział w gobbles?

S: Ja wiem tylko o anakacie, ale to chyba nie wszyscy, którzy się tam udzielali :)
No i oczywiście całe team-teso, segfault.net, thc.org, hert.org, pheneolit. To chyba największa elyta, chociaż trochę się złajthacili w pewnym momencie :)

S: A z polaków jeszcze mi przyszedł do głowy cliph i funkysh, czyli isec.pl. I masa bugów w kernelu :) No i Paul Starzetz "ihaquer" też tam z nimi robił.
No i to są takie whitehaty, które po nocach psują :) Tzn. byli. Teraz już nie wiem.

M: Jak byli młodzi i szaleni, to pewnie produkowali sploity. Jak są starzy, to mają co robić, przestało im się chcieć i raz na ruski rok cośtam wypuszczą z nudów.

N: Czyli jednak, hakerstwo to robota dla młodych gniewnych.

S: Na to wygląda. Tzn. insect z tego co wiem jest tak pod 40-tkę już chyba.
Tak sobie przeglądam phrack issues i zauważyłem, że kojarzę autorów z ksyw i nazwisk max do numeru 54. Starszych już nie znam :)
W sumie kusi mnie, żeby pojechać znowu na jakiś ph-neutral albo CCC, żeby napić się piwka. Jak byłem na ph-neutral w 2005, to faktycznie, jak sobie pomyślę teraz, średnia wieku była gdzieś koło 22-23 pewnie. Ludzi po 30-tce można by policzyć na palcach jednej ręki.

M: Studenci. Za nastolatka się bawisz, koło dwudziestki masz już pokaźną wiedzę i możesz rzeczywiście coś większego zrobić. W ciągu max paru lat się wtedy wystrzelasz, później zasysają cię korporacje i kaplica.

S: No, tak to chyba działa.

N: O ile wcześniej nie zrobisz czegoś głupiego za co dostaniesz wyrok :)

S: Albo zostajesz idealistą i zakładasz TPB [ThePirateBay; wspomniany wyżej anakata to jeden ze współzałożycieli -- przyp. mm]
Albo spamerem. Masa spamerów to ex-haxorzy. Sam znam dwóch. Haxorom łatwiej, bo znają się na rzeczy, ale ciężko znaleźć drugiego takiego, jak anakata :)

M: Ale spamowanie jest... :(
No właśnie. Security się kurwa skomercjalizowało.

S: Ja to wiem...

Komputery *są* skomplikowane i nieintuicyjne

13 II 2008, 03:07:11

Od czasu kupna dziadkom laptopa i podłączenia Internetu, mam dosyć unikalną okazję rozmawiania z kimś, dla kogo komputery nie istnieją "od zawsze" i to wszystko jest nowe. Dwie rzeczy stają się jasne: po pierwsze nowoczesne środowiska graficzne, zwłaszcza do kupy z Internetem, skomplikowane i po drugie -- terminologia z nimi związana też jest bardzo skomplikowana, wcale nie taka intuicyjna i ma dużo niejasno zdefiniowanych przypadków specjalnych.

Przykład pierwszy: pendrive'y vs. płyty.

Wkładasz pendrive'a, pokazuje się okienko, kopiujesz pliki, wyciągasz pendrive'a, działa (chyba, że nie działa, bo najpierw trzeba "odmontować wolumin"; dziwny gnome, jutro będę z tym walczył). Wkładasz płytę, odpalasz jakiś program (nawet bardzo prosty, jak gnomowy asystent nagrywania), "kopiujesz" do niego pliki (ale one wcale się nie skopiowały), wciskasz "nagrywaj", czekasz i dopiero teraz się skopiowały. Dlaczego tak jest? No bo pendrive'y są na flashu, który działa jak zwykły dysk komputerowy i jest bardzo szybki, można łatwo kasować i nadpisywać i w ogóle, natomiast płyty optyczne tradycyjnie są nagrywalne tylko raz (i to powoli), więc najpierw trzeba się zdecydować co chce się nagrać, a dopiero później się nagrywa. Proste! Acz prostsze będzie "bo tak".

Przykład drugi: tacka systemowa.

Gadu-gadu (a konkretnie gaim; coś gnomowe w każdym razie) odpala się razem z komputerem i jak się chce, żeby się okienko z listą kontaktów pojawiało, to trza kliknąć w ikonkę na górze. Analogicznie ze skypem. Co się dzieje, jeśli przez przypadek usuniesz tackę systemową z tego paska na górze (sam nie wiem jak to się cholera nazywa)? Nie ma ikonki gg. Więc trzeba ją przywrócić! No bierze się z menu "Aplikacje", przeciąga na pasek i jest mała ikonka, dokładnie w tym samym miejscu. I jak na nią klikniesz, to pojawia się okienko z listą kontaktów, tylko takie kompletnie niedziałające. I jak się na nią kliknie jeszcze raz, to się drugie niedziałające pojawia. Etc, etc.

Co jest nie tak? No więc jak klikasz na ikonkę na tacce systemowej (?), to ona tylko przywraca (?) zminimalizowany (?) nie do paska zadań (?) program (?), natomiast dokładnie taka sama ikonka osadzona bezpośrednio na tym górnym pasku (?) uruchamia program (?), a nie przywraca już uruchomiony. Znakami zapytania zaznaczone różne dziwne terminy, które trzeba znać, żeby zrozumieć tę wypowiedź.

Przykład trzeci: co to w ogóle jest ten program?

Ano właśnie. Program to takie instrukcje, które można uruchomić, że z dysku do pamięci... eee. Jest dysk i jest pamięć i jest procesor. I przy uruchamianiu program jest wgrywany z dysku do pamięci i on wtedy w tej pamięci siedzi i działa... Eeee. Ale jak on już jest odpalony, znaczy uruchomiony ten mityczny program, to on później może wczytywać różne dokumenty, czyli jak jest oowriter, znaczy ten program do pisania dokumentów, to to białe z tekstem to jest dokument, a wszystko dookoła to jest program.

I dlatego jeśli kopiujesz plik oowriterowy na pendrive'a i później go otwierasz, to on wcale nie siedzi na tym pendrivie razem z tymi ikonkami dookoła (toolbar oowritera), bo te ikonki to jest część programu, a nie dokumentu. I wyeksportowanie dokumentu do pdf-a i wgranie na pendrive'a to wcale nie jest "przegranie samego dokumentu bez programu", bo on zawsze jest "bez programu", tylko po prostu gpdf (czy jak to się tam w gnomie nazywa) ma mniejszy toolbar od oowritera no i jest read-only.

Wszystko jasne? Nie? No trudno, żeby było, jak dalej nie udało mi się wytłumaczyć co to jest ten program i jak wygląda jego cykl życia w komputerze.

Przykład czwarty: terminologia ciąg dalszy.

Dlaczego okno się nazywa oknem? Prawdę powiedziawszy sam nie wiem. A jakby się dobrze zastanowić, to co okienko w komputerze ma wspólnego z takim prawdziwym oknem? Że jest prostokątne? Drzwi też. Microsoft Doors Vista. X-Door.

Dziadek na okna mówi tabele i niezbyt często pamięta, żeby mówić "okna". Ma sens. Prostokątne, ma wiersze i czasami się kolumna trafi. Ja się dalej w sumie nie przyzwyczaiłem i za każdym razem, jak mówi "tabela", to się staram wyciągnąć dalsze informacje, czy to rzeczywiście chodzi o to, co ja myślę, że chodzi.

Okno, przycisk zamykania/maksymalizacji/minimalizacji, belka tytułowa, pasek menu (czy jakoś tak), pasek narzędzi (? że to z ikonkami znaczy się), menu kontekstowe, menu. Właśnie, menu. Menu "Aplikacje" w gnomie to menu. Menu kontekstowe pod prawym przyciskiem myszy to menu. Menu w gaimie na którym widać listę kontaktów, to nie jest menu, tylko lista kontaktów. Dlaczego? Eeee. No bo... Eeee. W sumie nie wiem. Jestem pewien, że ma to odzwierciedlenia w nazwach elementów API Gtk, ale to nie jest wytłumaczenie. Jakbym miał się zastanowić, to "menu" zazwyczaj mają czasowniki, natomiast "listy" rzeczowniki. No i inaczej wyglądają. Czy jakoś tak. Nie wiem :(

No i mógłbym tak w nieskończoność.

Podsumowując -- przy obecnym poziomie skomplikowania tak architektury działania współczesnych systemów operacyjnych, jak i używanych przez nich środowisk graficznych, ja większości typowych problemów nie jestem w stanie wytłumaczyć z sensem bez jakiegoś wcześniejszego kursu z podstaw systemów operacyjnych i obsługi środowisk graficznych. Po prostu się nie da.

Archetypiczna sekretarka ucząca się "piąte menu od prawej" w Excelu jest całkiem zabawna, póki człowiek sobie nie zda sprawy z tego, że żeby to rzeczywiście zrozumieć trzeba przyswoić naprawdę sporą ilość wiedzy. Ludzie wychowani z komputerami mają o tyle dobrze, że ich mózg się nauczył rozróżniać to wszystko i oni intuicyjnie wiedzą jak z tego korzystać, nawet jeśli świadomie nie wiedzą dlaczego coś działa tak, a nie inaczej. Osoby później mające styczność z komputerami mają po prostu dużego pecha.

<@mmazur> Jak się nazywa ta belka na której wszystko jest na dole ekranu?
<@mmazur> Tam gdzie jest menu start, pasek zadań, tacka systemowa, etc?
<@fixxxer> taskbar?
<@mmazur> A po polsku?
<@fixxxer> aka pasek zadań?
<@mmazur> Hmmmm.
<@mmazur> Pasek zadań to jest u mnie tylko aplet tego czegoś na którym jest lista zadań.
<@mmazur> KDE to po prostu 'panel' nazywa.
<@mmazur> Chyba.
<@fixxxer> a, ty pytasz o linuksa :)
<@fixxxer> no to nie wiem jak w kde, ale w gnome to jest właśnie panel
<@fixxxer> (przy czym w gnome są dwa)
<@mmazur> Górny i dolny?
<@fixxxer> (domyślnie)
<@fixxxer> mhm

Się człowiek całe życie uczy :(

Know yer tools

09 I 2008, 01:31:35

Właśnie się dowiedziałem, że bash ma vi mode. Ile czasu bym zaoszczędził, gdybym się o tym fakcie dowiedział sześć lat temu :(

Postanowienie noworoczne: zidentyfikować wszystkie używane przeze mnie codziennie narzędzia i przeczytać ich dokumentację od deski do deski!

Iiijasne. Przy okazji będę milszy dla ludzi, będę częściej sprzątał mieszkanie, zrzucę z 10 kg, będę częściej dzwonił do rodzinki, mniej przeklinał...

Poprelekcyjnie (nagranie)

09 XI 2007, 04:40:22
  1. Nagranie jest mocno przeedytowane pod kątem przydatności do słuchania. Jeśli ktoś pamięta, że coś się wydarzyło inaczej, niż jest nagrane, to wysoce prawdopodobne, że dobrze pamięta.
  2. Wyciąłem co najmniej kilka minut swoich mlasknięć (co mikrofon bardzo ładnie ponagrywał), chrząknięć, eeeeeyyyyeeeeeania, za długich pauz, przerw technicznych oraz najzwyklejszych wpadek. Więc nie, wcale tak płynnie nie mówię.
  3. W środę miałem depresję, że poszło tragicznie. Po przesłuchaniu stwierdzam, że aż tak strasznie tragicznie wcale nie poszło. Nic czego nie może naprawić kreatywna sesja z edytorem dźwięku.
  4. Acz kilka rzeczy jest oczywistych -- po pierwsze, wcale nie mówię tak płynnie i poprawnie technicznie, jak mi się wydawało, że mówię :(
  5. Po drugie -- miałem nadzieję zrobić super zajebistą prezentację. Poświęciłem na nią z dwa-trzy razy więcej czasu, niż zwykle poświęcam na takie rzeczy. Wyszło niewiele lepiej, jeśli w ogóle. Jedno staje się dla mnie jasne -- jedyny sposób na idealnie płynną prezentację, to po prostu usiąść, napisać całość słowo w słowo i później albo czytać, albo wyryć całość na blaszkę. Nie ma siły, żebym z kartką opisującą tylko schemat wystąpienia był w stanie przeprowadzić je płynnie -- bez zacięć, bez pauz, bez niepotrzebnego powtarzania się. Po prostu się nie da. Może są jacyś geniusze, którzy potrafią, ale generalnie wątpię, żeby to było w zasięgu normalnego człowieka. Mowa ludzka tak nie działa. Zapomina się słów, robi pauzy, gubi wątki, różne rzeczy rozpraszają.
  6. Po trzecie -- jeśli chcę zrobić płynną integrację tego co mówię, z tym co jest na rzutniku, to powinienem mieć w zasięgu wzroku swój laptop, żebym nie musiał się odwracać w celu upewnienia się co właściwie w danym momencie jest na rzutniku (mam ten bezprzewodowy dynks do obsługi prezentacji, więc mogę zmieniać slajdy patrząc się na publiczność). Takie odwracanie psuje płynność, a i mnie dekoncentruje.
  7. Po czwarte -- różne techniczne drobiazgi o zwracaniu uwagi na które człowiek się uczy z wykładu na wykład.

Link do ogga. Jutro jeszcze powinien być nius na stronie oplugowej wraz z jakimiś fotkami.

A, disclaimer: mówiąc zrobiłem sporo uproszczeń, a i wykład był dosyć konkretnie stargetowany (na studentów, którzy nie wiedzą jak takie rzeczy ugryźć). Dodatkowo co najmniej kilka razy powtarzałem, że coś jest moim poglądem na sprawę i na pewno są miejsca, gdzie to działa (z powodzeniem) kompletnie inaczej. Także wiem, że nie opisałem wszystkiego, co było do opisania. Był to świadomy wybór.

Podługoweekendowo

05 XI 2007, 15:18:19

Doświadczenie uczy, że jeśli wyjeżdżam do rodzinki na parę dni, to nie zrobię tam absolutnie nic z tego, co sobie zakładałem, że zrobię. Wniosek -- całą robotę "na już" robić przed wyjazdem, by móc w pełni korzystać z urlopu. Starzeję się.

Jedną z rzeczy, które miałem zrobić było przygotowanie tego wykładu. No cóż, mam jeszcze dwa dni czasu. A tak w ogóle, to zapraszam.

Acz jeśli ktoś ma pecha żyć w Polsce B (czytaj: poza Opolszczyzną), to rzecz będzie nagrywana (sam dźwięk; niestety nie mam kamery, żeby nagrać obraz i uzupełnić kolekcję) i jak będzie dostępny ogg, to tutaj dam info (no i na stronę oplugową). Także stay tuned.

Z pamiętnika młodego przedsiębiorcy

11 X 2007, 22:20:43

Jak to w życiu -- wszystko ma swoje zady i walety.

Było tak: pracowałem nad systemem korzystającym z dziesiątek procesorów, gigabajtów RAM-u i gigabitów łącza. Naszym klientem były korporacje od których, jako programiści, byliśmy dodatkowo oddzieleni mało przepuszczalną warstwą szefostwa.

Jest tak: nowa firemka oficjalnie działa od półtora miesiąca. Jestem szefem działu IT. W praktyce oznacza to, że zajmuję się naszą "wirtualną" infrastrukturą oraz odpowiadam za większość rzeczy mających coś wspólnego z programowaniem.

Różnice? Sporo. Pierwsza -- poprzednio "klient" był dla nas bytem czysto wirtualnym. Terminy przychodziły i odchodziły. Nie odczuwaliśmy praktycznie żadnych konsekwencji naszej pracy (tak pozytywnych, jak negatywnych). Szefowie wiedzieli co i jak, a myśmy byli za firewallem. Teraz natomiast jeśli zawalę termin, to będę mógł się pójść osobiście potłumaczyć facetowi, który za zlecenie zapłacił. Oraz jego pracownikom, którzy z systemu mieli korzystać. Poziom odczuwalnej odpowiedzialności jest zdecydowanie inny.

Druga różnica -- pieniądze. Zaczynam podejrzewać, że w takim lowendowym plumkaniu, jakim się obecnie zajmuję, po prostu nie ma sensownych pieniędzy, a co za tym idzie, jest ono praktycznie skazane na marną jakość. Jeśli masz doświadczenie, interesujesz się tym, co robisz, jesteś na bieżąco z nowymi technologiami, to będziesz się zajmował nadzorowaniem jakiegoś mikroprojekciku w PHP za grosze? Czy może jednak pójdziesz pracować w sensownej firmie za sensowne pieniądze, albo założysz zaawansowanego technologicznie startupa z zamiarem zbicia na nim kokosów? No właśnie.

Case in point -- mam ponad półtora roku doświadczenia z całkiem sporych rozmiarów systemem rozproszonym. A zajmuję się administracją niewielkiego serwerka linuksianego oraz nadzorowaniem jednego PHP-owego kodera, gdzie wspomniane doświadczenie jest mi tak niesamowicie przydatne...

Oczywiście są i zalety. Po raz pierwszy od lat moja lista TODO nie jest nieskończona. Ba, kurczy się! Mam na niej zaledwie kilka pozycji i wiem, że jeśli przysiądę, to pod koniec tygodnia mogą zostać może dwie. Zacząłem znowu czytać książki! Na razie powoli, ale się rozkręcam.

Dodatkowo fajnie się patrzy na tego mojego PHP-kodera, jak się uczy. Czystszy kod, lepsza struktura, lepsze narzędzia, separacja kodu i HTML-a, smarty, porządnie zaprojektowana baza danych. Jeszcze z dwa takie projekty i będzie na tyle samobieżny, że w ogóle nie będę musiał patrzyć na to co on robi. A jak zechce później znaleźć sensowniejszą pracę, to nie powinien mieć problemów.

I, ponad wszystko, nie ma to jak możliwość ustalania własnych priorytetów. Znacznie przyjemniej się pracuje.

Co dolega PLD

29 IX 2007, 15:38:57

Mój mail sprzed paru minut.

Ja wiem, że to dziwnie brzmi, ale ja się na PLD wychowałem. Cała moja podstawowa wiedza, doświadczenia, wzięły się z tego projektu. PLD nie ma przed sobą wielkiej przyszłości. Przy pomocy PLD nie da się niczego osiągnąć. Openmoko ma przyszłość. Kernel ma przyszłość. KDE ma przyszłość. Jest wiele opensource'owych projektów z przyszłością. Takich, w których udział miałby dla mnie (znaczy -- mojego CV) wymierne korzyści.

Ale jakoś nie potrafię z tym PLD zerwać.

SCM-y, a windziarze

29 VIII 2007, 03:02:45

Padaka. Jedyny SCM, który ma windowsowe GUI z prawdziwego zdarzenia (tzn. integrację z Windows Explorerem), to subversion via tortoisesvn. Więc chcąc nie chcąc, będę w firmie używał scentralizowanego SCM-a, bo alternatywy są jeszcze bardzo niedopracowane: bzr-tortoise, tortoisehg i tortoisedarcs są albo stare, albo niedopracowane, albo masakrycznie trudne w instalacji. A zazwyczaj po trochu z każdego. (Patrzcie i płaczcie.)

Za to tortoisesvn jest po prostu miły. I widać, że się autorom chce.

Przypowieść o optymalizowaniu benefitów w kontekście

26 VIII 2007, 19:24:23

Dłuższy czas temu napisałem na listy PLD maila prezentującego różne wnioski z lipcowego zlotu, po czym wrzuciłem krótkie podsumowanie tutaj oraz linka na 7thguarda. Oryginalnie natomiast planowałem zrobić to na odwrót, czyli wnioski ze zlotu opisać tutaj, a na listy wrzucić tylko linka. I to byłby błąd.

Pisząc tutaj raz, że bardziej uważam na styl tekstu, a dwa, że staram się pisać tak, by ludzie nie pracujący ze mną nad projektem X też wiedzieli o co chodzi. W praktyce oznacza to, że pisanie zajmuje mi znacznie więcej czasu, a co za tym idzie mam większe problemy w ogóle z zabraniem się za wirtualne pióro, czyli owo podsumowanie zlotu najprawdopodobniej by w ogóle nie powstało.

I to jest problem, bo często zamiast napisanego na kolanie tekstu, który byłby przynajmniej zrozumiały i przydatny dla jakiejś wąskiej grupy ludzi, nie produkuję w efekcie kompletnie niczego.

A sensownym gadaniem/pisaniem też można co nieco zdziałać, zwłaszcza, jeśli się, tak jak ja, stara mieć wpływ na kierunek rozwoju danego projektu w szerszej perspektywie. Tylko to się trzeba skupiać na projekcie, a nie na blogu...

Tytuł wpisu pochodzi z oryginalnego szkicu tego tekstu, który był trzy razy za długi i miał pełno takich fuj-słów w sobie. Wrr. Zostawiam go (tytuł znaczy się) ku przestrodze samemu sobie.

O zlotach wedle Mortona

26 VIII 2007, 18:14:49

Cytat z maila Andrew Mortona:

My overall take on kernel summit: we spend far too much time talking about technical stuff.

There is little benefit in doing this: we conduct technical discussions over email and we do it well, and there are many very good reasons for doing it that way. In fact when the KS discussion gets too techy I just start ignoring it (...)

Plus the minisummits are better suited for the technical material.

Polecam przeczytanie całego maila. Generalnie chodzi o to, że najwyraźniej nie tylko ja jestem zdania, że przeznaczanie fizycznych spotkań większą grupą na omawianie technicznych zagadnień, które z definicji interesują tylko pewien podzbiór ludzi, jest stratą czasu. Jeśli chcesz sobie o technikaliach porozmawiać sensownie, to skrzyknij tylko te osoby, które mają w tym jakiś interes, usiądźcie sobie przy jakimś stole i gadajcie, bądź też użyjcie maila/irca, jak zwykle. Natomiast jeśli chcesz robić ogólną publiczną prezentację, to najpierw się upewnij, że rzeczywiście jest ona interesująca dla większości twoich słuchaczy. Jeśli nie jest, to najlepiej jeśli oszczędzisz tak czas swój, jak i innych.

Tyle jeśli idzie o spotkania dla osób technicznych. Zastanawia mnie jak by to wyglądało w przypadku początkujących (LUG-i i takie tam). Pewnie jakoś podobnie, ale ani mi się nie chce zastanawiać, ani w sumie nie mam podstaw, żeby oceniać.

Znowu o zarządzaniu open source'ami i nie tylko

13 VIII 2007, 03:36:25
Linux kernel management style. Ten tekst jest tak treściwy i na temat, że mógłbym na jego temat popełnić co najmniej kilka wpisów, w każdym cytując po kilka akapitów. Jak mi się będzie kiedyś nudzić, to go przetłumaczę i będę każdemu podsyłał do przeczytania co najmniej po kilka razy.

Wiecie na przykład dlaczego większość PLDowych cudzych pomysłów z miejsca kwalifikuję jako nieaplikowalne i niepraktyczne? Bo jestem egoistycznym chujem? No tak, to też, ale chodzi mi o to, że pomysłodawca (a) zazwyczaj tak naprawdę nie rozumie implikacji swoich pomysłów, zwłaszcza w stosunku do użytkowników/deweloperów (czyli ogólnie ludzi) oraz (b) jeśli rzeczywiście byłby przekonany do swojego pomysłu, to na krytykę zwracałby uwagę tylko pod kątem wyciągania z niej jakiś przydatnych spostrzeżeń, a energię poświęcał jego realizacji. Innymi słowy za każdym razem, gdy czyjś pomysł rozbija się o to, że jestem brzydki i mam wszy na pępku, to tylko utwierdza mnie to w przekonaniu, że i tak szanse realizacji miałby marne (mówiłem, że jestem chujem :).

Moja rada? Dużo czytajcie na tematy związane z tym, co chcecie robić. Im lepiej będziecie rozumieli ludzi, których to, co chcecie robić, dotyczy, tym bardziej będziecie czuli jeśli któryś wasz pomysł rzeczywiście będzie miał potencjał. Co za tym idzie większy będzie wasz zapał i mniejsza szansa, że jakiś brzydal was od pomysłu odwiedzie. Tak jak mówiłem na zlocie pldziarzy -- jeśli ja coś chcę zrobić, to po prostu robię. I nie dlatego, że mam jakieś magiczne moce, ale dlatego, że jeśli się już za coś biorę, to zazwyczaj jestem mocno przekonany, że ma to sens.

Nawiasem mówiąc parę miesięcy temu zostałem szefem swojouczelnianego radia internetowego (że Koło Naukowe Radio Emiter). I mam nawet pomysł co zrobić, żeby to radio było relewantne i produkowało pewne ilości kontentu, który znalazłby swoją niszę. Ale i tak nie znajdę na to czasu. W najlepszym wypadku uda mi się to w jakiś sposób spójnie opisać i przedstawić reszcie radiowców w nadziei, że podchwycą. Nadziei płonnej, bo prawda jest taka, że z zapałem realizuje się własne pomysły, a nie cudze.

Eh. Świat jest pełen ciekawych rzeczy, o których można poczytać, które można zrobić. Niestety większość z tego, co czytam, zaraz zapominam (nie mogę tego przeboleć prawdę mówiąc), a na rzeczy, które chciałbym robić, nie mam czasu (w tym na czytanie). Jedyne rozwiązanie, jakie mi przychodzi do głowy, to jak najszybciej się dorobić i później żyć w pewien określony sposób. O czym chętnie bym napisał coś więcej... tylko kiedy?

Klątwa Dijkstry

05 VIII 2007, 14:12:59

Od wielu wielu lat uparcie twierdzę, że nie lubię programować. Ostatnio usłyszałem ciekawe stwierdzenie -- pisanie programów jest dlatego wciągające, że programista ma cały czas wrażenie, że już zaraz za chwilę wszystko mu zacznie działać. I chyba coś w tym jest. Jeśli już się zmuszę do zabrania się, to czas upływa dosyć szybko i się nie nudzę. Rzecz w tym, że ja już bardzo dawno temu sobie w jakimś stopniu uzmysłowiłem, że "już zaraz za chwilę" to tylko złudzenie. Mam już pewne doświadczenia w tej kwestii, ale i tak nadal konsekwentnie udaje mi się niedoszacowywać czasochłonność kolejnych projektów. I tego właśnie nie lubię. Ten jednozdaniowy punkt na liście TODO może mi zająć równie dobrze 4 godziny, jak i najbliższe dwa tygodnie. Tym bardziej do szewskiej pasji doprowadza mnie fakt, że poniekąd pracuję w dziale R&D.

A, tak, radości płynące z pracowania nad rzeczami, których nikt wcześniej nie robił i których działania tak do końca nie jestem w stanie zrozumieć. Jest problem? No to trzymam kciuki, żeby wyrobiona na poprzednich błędach intuicja naprowadziła mnie na prawidłowe rozwiązanie. A jeśli nie naprowadziła? To za kilka tygodni, gdy będę miał już tego po dziurki w nosie i będzie mi się chciało płakać, kompletnie przez przypadek znajdę jakąś drobną rzecz, która wszystko naprawi. Przeżyłem to już kilkukrotnie, w tym kilka dni temu.

Przy czym różnica pomiędzy teraz i kiedyś polega na tym, że kiedyś na zakończenie takiego maratonu wysmarowałbym obszerny mail do przełożonego z "wytłumaczeniem" dlaczego nie działało i dlaczego moje zmiany wszystko naprawiły.

Teraz nie mam już takich złudzeń. Nie wiem co konkretnie powodowało, że system nie działał, nie wiem które z moich działań tak naprawdę poprawiły jego działanie, a tym bardziej nie wiem dlaczego.

I tylko jak sobie przypominam kazania Dijkstry o tym, jak to programy powinny być formalnie weryfikowalne, a nie pisane "na czuja", to mnie pusty śmiech ogarnia. Szkoda, że nie jestem satanistą, bo bym mu zbezcześcił grób, albo coś.

Od zera do menedżera, lekcja 375

31 VII 2007, 23:47:52

Jestem zwolennikiem zarzucania ludzi możliwościami robienia tego, na co mają ochotę (w przypadku projektów open source czytaj: dawania im odpowiednich uprawnień). Robienie jest ciekawsze, gdy co chwilę można robić coś nowego. A gdy robienie jest ciekawsze, robiący robi więcej i bardziej się przykłada.

Ostatnio się jednak na tym przejechałem. Dosyć oczywisty (po czasie) wniosek z owego przejechania się -- zawsze należy najpierw stwierdzić, czy istnieje więcej jak jedno podejście do poprawnego wykonania zadania. W 99% przypadków na dziesięć istnieje. Wtedy żaden problem przydzielić zadanie komukolwiek, niech się bawi. Jak zrobi źle, to albo da się komuś innemu, albo niech autor sam poprawia. Natomiast w pozostałych 1% przypadków nie warto ryzykować i należy postawić na sprawdzonych ludzi. Żeby potem nie żałować.

I małe post scriptum. Takie uwagi są zdecydowanie ciekawsze, gdy się je omawia na konkretnych przypadkach. Niestety publiczne opisywanie konkretnych sytuacji i konkretnych ludzi stoi w konflikcie z chęcią robienia czegoś z rzeczonymi ludźmi. Przeanalizowanie czyjejś pracy w gronie zainteresowanych członków projektu to jedno. Robienie tego samego publicznie, nawet jeśli jest to tylko tłem do analizy własnych poczynań, to już zupełnie coś innego. Albo rybka albo rower... Albo to z jakimiś grabkami i łopatką było.

Drażni mnie to. Muszę się sam cenzurować, inaczej zacznę kopać pod sobą dołki. Coraz bardziej romantyzuję czasy, gdy flejmowałem do woli kogo chciałem, bez brania pod uwagę jakichkolwiek konsekwencji. Stare dobre czasy...

Gosh

13 VII 2007, 16:06:16

Aw, shucks, we're blushing.

Czego chce Firma

18 VI 2007, 00:07:42

Zadanie pierwsze: napisać w ramach R&D mocno skomplikowany system, który pozwoli stwierdzić, czy to, co chcielibyśmy sprzedawać klientom jest w ogóle wykonalne.

Zadanie drugie: stworzyć drugą generację centralnego systemu przechowywania, analizy i wizualizacji (bardzo bardzo dużych ilości) danych. Pierwsza generacja to prosty php i mysql mojego autorstwa. (Ta prostota to chyba główny powód, dla którego jest to nadal względnie łatwe do maintainowania i po niezliczonej ilości rozszerzeń i poprawek nadal się nie zawaliło.)

Konkretne problemy techniczne do rozwiązania opiszę w następnym poście (lub dwóch). Za dużo by tego było na teraz.

Wnioski: poziom skomplikowania tego wszystkiego jest straszny. Poświęcenie sporych ilości czasu na zapoznanie się z konkretną technologią zanim się jej użyje na pewno zwiększy trafność podjętej decyzji, ale i tak poziom niepewności w tym wszystkim jest wysoki. Właśnie zaczyna do mnie docierać dlaczego na pewnych stanowiskach warto zatrudniać ludzi z co najmniej kilkunastoletnim doświadczeniem. Młodzi zdolni mają swoje zalety, ale trudno nie docenić człowieka, który przychodzi, mówi "robiłem już coś takiego pięć razy", po czym zabiera się do roboty.

Nawiasem mówiąc zastanawiam się jak wygląda poziom skomplikowania programowanie vs. administracja. Pierwsza reakcja -- programowanie bardziej skomplikowane. Z drugiej strony -- ilość wiedzy odnośnie samego Oracla jest gigantyczna. A przy obecnym nacisku na heterogeniczność sieci można wylądować co najmniej z kilkoma ekosystemami (windows vs. linux, oracle vs. cośinnego, iis vs. apache, java vs. .net) i też trzeba tym jakoś zarządzać.

Eh. Jutro się zapisuję na fryzjerstwo.

«