U nas na wyrobisku

31 I 2007, 01:36:16

Chaotyczny wpis. Pisany bardzo nie po kolei. Te kawałki z bluzgami były pisane na początku, jak miałem w głowie obrazek siebie spędzającego życie jako programista java, co mnie z leksza drażniło. Te bardziej ironiczne -- na końcu, jak wykombinowałem dalszy plan działania, więc mi się humor poprawił.

Czytam książkę o umlu. Będę mniej więcej znał umla.

Po chuj?

Żeby to rzeczywiście miało jakąkolwiek wartość praktyczną (z zawodowego punktu widzenia), to musiałbym do tego jeszcze dodać jakieś wzorce projektowe (jedna, może dwie książki) i rzecz kluczową -- rzeczywistą znajomość jakiegoś obiektowego języka programowania.

Tylko którego? C#? Java? (To poniekąd to samo.) Java mnie przeraża. Nie ma czegoś takiego jak "programista java". Równie dobrze można mówić o "informatyku". Co to jest programista java? Co on robi? Serwlety, midlety, applety, pierdlety? J2EE, jboss, jini, swing... java2, java3, java4, java5... Widzieliście ostatnie wydania thinking in java? Ja mam encyklopedię tych rozmiarów. A po przeczytaniu tego i tak pewnie bym dalej nie był w stanie nic konkretnego zakodować (bo nie koduje się w javie przecież, koduje się w j2ee, jbossie, etc, etc).

Więc co? C++? C++ to już język niszowy (w porównaniu do javy i c#; nie w liczbach bezwzględnych) i z czasem będzie coraz bardziej niszowy. Jaki jest sens wtłaczania sobie do głowy tej całej obiektowej papki tylko po to, żeby kodować w C++?

W praktyce wybór kariery jest w większości przypadkowy. Jesteś programistą? A dlaczego nie administratorem? I dlaczego programistą j2ee, a nie czegoś innego? Bo na studiach akurat cię uczyli javy, a jak dostałeś staż to z j2ee i ci już tak zostało? Ano właśnie.

Na tej zasadzie ja jestem. Ja nie wiem czym ja jestem. Nie jestem adminem. Prawdziwi admini mają certyfikaty cisco, a ja nie mam certyfikatu cisco. Ja tylko całkiem nieźle znam jedno distro od środka i bardzo lubię wykorzystywać do maksa jego podstawowe narzędzie -- package managera. Tak, pozwala mi to na sprawne stawianie niezagraconych serwerów, ale ja tego po prostu nie lubię robić. Fajnie jest jak już działa, ale kogo może podniecać perspektywa grzebania w konfigach postfiksa, żeby działał z amavisem-new? Nie mnie.

A już na pewno nie mam ochoty zdobyć certyfikatu cisco.

Dla mnie naturalnym środowiskiem jest linia komend. Pliki, rury i takie tam. A jeśli koduję coś, co ma być szybkie, to wtedy używam znajomości C. epoll, dlaczego nie używa się dużej ilości wątków, blokujące sockety, minimalizowanie kopiowania danych, glib, może jakieś mempoole zamiast malloców, minimalizowanie ilości zmian kontekstów (ograniczać sysctle), etc, etc. To jest fajne. Nie wiem dlaczego. Może mam zboczenie, bo zaczynałem od assemblera, a poza tym bycie blisko kernela jest takie sexy.

A jak potrzebuję coś napisać, żeby działało, to używam pythona. Siadam, piszę, działa. Język dla hackerów.

Tutaj jestem bezpieczny. Tutaj wszystko jest proste. Mam swoje segfaulty, coredumpy, epolle, poldki i takie tam inne. Tutaj nie śnią mi się po nocach obiekty w javie. I sama java ze swoim nieskończonym stopniem złożoności.

Ten moment w życiu, kiedy to już nie ja kieruję moimi zainteresowaniami, tylko one mną...

Kurwa, jak ja tego nienawidzę.

Aaa, w dupie to mam. Nauczę się w końcu porządnie C++, przynajmniej nie będzie, że nie znam żadnego obiektowego, a w razie czego może jakieś kde zakoduję. Do tego wezmę się w końcu kiedyś za lepsze poznanie pythona, zwłaszcza tych wszystkich nowych ficzerów z ostatnich kilku wersji. Genericsy, dekoratory, stare typy obiektów, nowe typy obiektów. Co to w ogóle jest.

Jedyna nadzieja z zawodowego punktu widzenia, to jakoś się wkręcić w ten cały opensourcowy światek (jest w polsce coś takiego w ogóle; komercyjne znaczy się?). Albo przynajmniej pracować w, hmm, 'zwinnych' linuksianych firmach (a to jest?). Niech ów światek rośnie na zdrowie, im większy urośnie, tym mniejsza szansa, że wyląduję pod mostem. (A jak chcecie znać moje zdanie, to bardzo bym polecał wkręcenie się w wine'a. Mam niejasne wrażenie, że umiejętność odpalenia dowolnego windzianego programu pod linuksem jest/będzie w najbliższym czasie sporo warta. Zwłaszcza przy obecnym wejściu visty, gdzie firmy mogą stwierdzić, że lepiej im zapłacić komuś, żeby im legacy oprogramowanie odpalił na linuksie i na to zmigrować. Już nie wspominając o skillu z reversingu windzianych programów, który się przy tej okazji zdobywa, a który też ma swoją wartość.)

Obiekty, struktury, relacje, lalalalalalala

29 I 2007, 15:36:04

Dzisiaj miałem egzamin z inżynierii oprogramowania (UML do obiektówki i klasyczna analiza strukturalna jak za papy Yourdona). A ponieważ właściwie nie umiem ani jednego, ani drugiego, to nie zaliczyłem.

Próbując cośtam wymodzić w trakcie, dotarła do mnie jedna rzecz -- ja tak naprawdę nie rozumiem czym się różni model obiektowy, relacyjny i strukturalny (nie, nie chodzi mi o to, że nie wiem co to obiekt, albo jak zrobić kilka tabelek w bazie danych; chodzi mi o dogłębne zrozumienie fundamentalnych różnic w tych modelach i jak to się ma do projektowania przy ich pomocy). Też moja wina, bo mogłem to zauważyć wcześniej, gdybym się był bardziej do projektu przykładał, ale faktem jest, że nie było takiego mądrego dwa semestry wstecz, żeby nam to spróbował jakoś konkretnie wytłumaczyć.

Prawdę mówiąc ja nadal nie wiem jak powinienem się uczyć (w jaki konkretnie sposób, w jakiej kolejności, etc.) i mnie to drażni, ale spróbuję rzucić jak najlepszym przybliżeniem na to, co mi w tym momencie potrzeba.

1. Książka/tekst tłumaczące w jak najlepszy sposób te trzy (no, dwa, ale powiedzmy, że model strukturalny ze względu na tradycję) obecnie najważniejsze modele. Nie wiem jak to najlepiej zrobić, domyślam się, że poprzez krótką charakterystykę obu, która przechodzi w opis najbardziej reprezentacyjnych różnic w nich na konkretnych przykładach. Tzn. chcę zamodelować rzecz A i teraz gdzie są najważniejsze różnice dla tych trzech modeli oraz jak konkretnie moje malunki (uml, dfd, czy co tam) by się przekładały na fizyczny kod/zawartość bazy danych. To wszystko okraszone konkretnym opisaniem co, gdzie i w jaki sposób jest używane (tzn. strukturalny tu, patrzaj sql, modeluje się to tym, sialalalala).

2. Konkretne kursy użycia tych trzech modeli (kurs umla, kurs strukturalnej i zapewne kurs projektowania relacyjnych do kupy od razu z sql reference). Z konkretnymi odniesieniami do użycia i jak największym nastawieniem na hands-on, ale bez omijania co ważniejszych części teoretycznych. Jak byłem mały, to potrafiłem czytać (i czytałem) te knigi ala Knuth, które się zazwyczaj używa jako podręczniki na studiach, natomiast teraz mi wybitnie szkoda czasu, bo 99,9% treści tam zawartej i tak nie zapamiętam, a tylko stracę w cholerę czasu (kilka miesięcy temu próbowałem przeczytać analizę strukturalną Yourdona; bleee). Potrzebuję minimum konkretnie sprezentowanej wiedzy, która pozwoli mi jak najszybciej sobie w głowie stworzyć model... modelu. Żebym mógł modelować. A modelując będę sobie już sam łatał luki w wiedzy i dorabiał własne spostrzeżenia.

Najgorsze u mnie jest to, że ja myślę kodem. Mam problem z myśleniem o reprezentacji danych w formie strukturalnej, bo mam od razu w mózgu sprzeciw, że przecież nie jestem tego w stanie wstawić do mojego mysqla. Albo mam problem z modelowaniem relacji w umlu, bo ja tak naprawdę nie znam języków obiektowych (obiektowość pythona i c++ rozumiem tylko w stopniu podstawowym, czyli wiecie, obiekty, dziedziczenie i takie tam). Dlatego też bardzo ważne w tym wszystkim byłoby, żeby opisawszy jakiś związek w danym modelu, od razu było pokazane jak to wygląda zaimplementowane w jakimś konkretnym języku.

(Co do sqla, znaczy relacyjnych baz, to chyba wiem te najważniejsze rzeczy. Ale nie jestem tego pewien. I mnie to wybitnie drażni, bo o ile nie jest zbrodnią nie umieć czegoś zrobić, o tyle tragiczne jest nie wiedzieć nawet o istnieniu czegoś. Później kończy się takimi potworkami, jakie wyprodukowałem w pracy dwa lata temu, jak jeszcze nie umiałem nic poza prostym selectem. Mam jakąś niewielką książkę o bazach z WNT, będzie trza przejrzeć, mam nadzieję, że znajdę co trzeba przynajmniej z sqla.)

Coś do backupu mi trza

27 I 2007, 00:00:58

Jakiś czas temu pozbyłem się desktopa i moim jedynym sprzętem komputerowym jest laptop. Dołożyłem do niego na tę okazję kilka rzeczy, ale o tym za chwilę, teraz potrzebuję rady odnośnie softu. Potrzebny mi soft do regularnego backupowania zawartości lapa. Soft ma robić coś takiego:

  • Backupowanie zawartości katalogów /etc oraz /home w sposób inkrementalny i bez żadnych tarballi czy innych takich. Ma być to normalna fizyczna kopia całej struktury katalogów z zachowanymi uprawnieniami (modulo xattr -- nie używam) i uidami do wszystkiego, pozwalająca mi po prostu zajrzeć do katalogu 20070230 i wybrać sobie jakiś plik, który mnie interesuje. Żeby oszczędzać miejsce ma toto używać hardlinków, tzn. robić listing aktualnego /home'a, porównywać go z ostatnim backupem (20070229), po czym pliki zmienione kopiować, a całą resztę hardlinkować do poprzedniego backupu.
  • Ewentualnie mógłby się przed fizycznym kopiowaniem pytać o to, czy nie chcę sobie odpuścić któryś z top10 znalezionych plików. You know, że akurat jak mam jakieś nowe hentai w /home, to żeby nie tracić czasu.

  • Backupowanie baz rpma. Tutaj zwykły cp -r. (Zaleta trzymania się FHS-a oraz konkretnej dystrybucji jest taka, że poza /home i /etc w systemie nie istnieją żadne istotne z mojego punktu widzenia pliki, o których pełne informacje nie są zawarte w bazie package managera.).

Pomysł tego wszystkiego jest taki, że w przypadku gdybym w jakiś tragicznych okolicznościach miał stracić obecnego laptoka, to idę do sklepu, kupuję nowego, instaluję te same paczki, co były (stąd backup bazy rpma), kopiuję z backupu /etc oraz /home i w naprawdę bardzo niewielkim przedziale czasowym mam >99% systemu tak, jak było.

Oczywiście żaden problem coś takiego napisać samemu i pewnie na tym się skończy, acz ciekawym, czy nie ma jakiejś popularnej paczki oprogramowania o takiej funkcjonalności.

Jak się uporam z powyższym, to z softowych rzeczy w sumie najważniejsza, jaka zostanie, to zaszyfrowanie sobie /home'a luks-dmcryptem. W ten sposób od powyższego scenariusza odpadnie martwienie się o te kilogramy danych (haseł, kluczy ssh i firmowych maili, o furry pornie nie wspominając), które jakiś złodziej mógłby wykorzystać w niecnych celach. I tak logując się do systemu wklepuję hasło do kdm-a, więc równie dobrze mógłbym sobie pytanie o hasło zrobić gdzieś na poziomie rc-scriptsów przy montowaniu filesystemów, a kdmowi już kazać automagicznie mnie logować. Praktycznie żadna różnica, a jaki komfort psychiczny. Furry porn ma niestety niską akceptację w polskim społeczeństwie, więc nie chcę nawet myśleć co by było, gdyby się wydało.

A teraz co do sprzętu, jak ktoś lubi takie rzeczy (ja nie, zawsze mnie śmieszy, jak ludzie sobie na stronach 'o mnie' wstawiają taktowanie procesora i chipset płyty głównej). Primo do swojego hp nx6110 sobie dokupiłem 512 ramu (oryginalnie było 256), żeby mi się wygodnie z qemu na windowsach pracowało (głównie potrzebne na uczelnie, wicie, rozumicie).

Do tego doszedł dysk 200gigowy (albo chyba nawet więcej) oraz kieszeń usb do niego. Dysk bardzo ładnie zaszyfrowany luks-dmcryptem, gdzie jednym hasłem jest klucz znajdujący się na laptopie (z ładnie oskryptowanym udevem, żeby po podłączeniu dysku wszystko się samo montowało), a drugim jest bardzo długa fraza, żeby się nie dało bruteforcenąć.

Kupiłem sobie poza tym bardzo fajną myszkę. Labtec Wireless Laser Mouse for Notebooks. Za 100zł dostałem bezprzewodową myszkę na akumulatorki aaa, która działa na praktycznie każdej powierzchni (bo laserowa) i przy okazji nie świeci w ciemnościach jak optyki (no i ma 1200dpi, muszę na tym wreszcie zagrać w kłejka). Dzyngiel usb służący do komunikacji bezprzewodowej jest fizycznie chowalny w myszce (co ją od razu wyłącza). Pod dzyndzlem mieszczą się owe bateryjki, a jeszcze obok jest kawałek krótkiego, ale rozciągliwego kabelka też na usb, dzięki któremu można te baterie ładować. Innymi słowy, jeśli tylko myszka zaczyna mi mrygać, że jej prundu brakuje, to wyciągam ze środka ten kabelek, wyciągam z torby przedłużacz usb, podłączam wszystko i korzystam z tego jak z myszki przewodowej, a ona się w tym czasie ładuje (przedłużacz jest 'wielofunkcyjny', bo bardzo się przydaje także do podłączania kieszeni z dyskiem :).

Poza tym ze względu na pracę kupiłem sobie internet gprsowy (bez edge'a) w orange. Musiałem się trochę naklepać z pppd, żeby odpalić swojego ercissona gc85 (modem taki na pcimci) i nadal działa to bardzo bardzo, ale to bardzo gównianie (sterowanie modem jest bardzo ciężko skryptowalne, zważywszy na różne jego wydziwiania, poza tym połączenie się często wiesza w sposób wybitnie idiotyczny i nie wiem czego to wina), no ale jak rzeczywiście potrzebuję, to mogę cośtam czasami tym robić (acz w praktyce wygląda na to, że tylko kasę wyrzuciłem w błoto).

No i last but not least -- wreszcie sobie kupiłem cholerne wewnętrzne wifi, żeby nie musieć za każdym razem się pitolić z wkładaniem i wyciąganiem karty na pcimci. Znaczy -- kupić, to ja sobie takową kartę kupiłem dawno, ale musiałem się jej pozbyć na rzecz mojego włochatego przyjaciela, którego laptop dzisiaj posłużył do przeflashowania kupionego w tym tygodniu intela pro/wireless 2200bg. No i przeflashowany intel działa jak trzeba (z tym małym ale, że do tej pory używałem przycisku 'wireless' na lapie do odpalania nowych konsol, a teraz mam pod nim on/off do wifi i jak można się domyślić jest to wybitnie wkurwiające; cholerny odruch Schroedingera).

A, jeszcze sobie muszę wreszcie kupić/zregenerować baterię, bo oryginalna z 4 amperogodzin spadła do 300 mili, co w praktyce wystarcza co najwyżej na odłożenie lapa, zejście z kibla, umycie rąk i przeniesienie się z powrotem do pokoju.

Buuu, gruba jestem

15 I 2007, 18:24:44

Jeden z wniosków z ostatniego półtora roku brzmi -- informacje na własny temat należy zachowywać dla siebie. W praktyce sprowadza się to do tego, że różni ludzie (z przewagą rodziny) znają pojedyncze fakty, ale nic poza tym. I tak ma być. Jedyną osobą, której rzeczywiście mogę powiedzieć wszystko, jest mój ojciec, a to z dwóch powodów: genetyka oraz fakt, że jest on kompletnie odcięty od mojego życia (mieszka w Niemczech), więc widzimy się średnio raz na rok.

Oczywiście powyższe implikuje także znaczny szlaban na jakiekolwiek tego typu informacje publikowane tutaj. Zazwyczaj udawało mi się powstrzymywać, nawet gdy miałem dużą ochotę się wypisać (wygadać).

Acz w sumie rzecz biorąc... Nie powinno być tak trudno znaleźć tę granicę, której przekraczać nie powinienem (i jej nie przekraczać), a prawda jest taka, że sam lubię przeczytać dobrze napisany tekst z czyjegoś życia, więc kto wie, może sam byłbym w stanie zainteresować kogoś tymi tematami.

Anyways, próbujemy.

Ble, jednak mi nie wyszło. Temat w głowie brzmiał znacznie ciekawiej, po przelaniu na papier brzmi strasznie trywialnie. Żeby takie pisanie miało sens, trzeba umieć pisać znacznie śmieszniej, jak Scott Adams.

Jedną z chyba najcenniejszych rzeczy, jaką udało mi się przez te półtora roku życia samemu nauczyć, jest umiejętność planowania długofalowego i w ogóle dostrzegania ciągłości czasu. I nie, nie chodzi mi o to, że zrozumiałem dlaczego cyferki na zegarku zwiększają się o jeden co jakiś czas -- raczej to, że studia przestały być taką granicą czasową za którą cholera wie co jest.

Dam tutaj najbardziej trywialny przykład (zgodnie z zasadą, że te mniej trywialne zachowam dla siebie). Na początku tego semestru (niecałe pół roku temu) postanowiłem schudnąć. Oczywiście jednym z głównych powodów jest tzw. wyrywanie lasków (z korzeniami), ale nie jedynym. Gdyby tylko o to chodziło, to bym się za chudnięcie zabrał dawno temu. Tak naprawdę doszedł mi jeszcze jeden powód, pod tytułem treningi -- po roku tychże stwierdziłem, że zdecydowanie ciekawiej będzie się walczyć, jeśli będę miał mniej zbędnego balastu i jednocześnie więcej mięśni. A to oczywiście wymaga zmian w diecie.

No i zmieniłem. Skutek -- 8kg w bodajże trzy miesiące. Po czym przyszły święta. Skutek -- 3 kg w 10 dni (zgadnijcie w którą stronę :). Święta, święta i po świętach. No i teraz powiedzmy, że wagę mam mniej więcej stałą od dwóch tygodni. Może nieznacznie spadła.

No i co dalej? Ano plan jest taki, żeby powiedzmy za miesiąc sprawdzić jak mi idzie przy obecnej diecie. Jeśli spada, to dobrze, zobaczę dokąd spadnie. Jeśli się nie ruszyło, no to wtedy będę kombinował z różnymi proporcjami różnych jedzeń.

Generalnie cel całej zabawy jest taki, żebym mógł chodzić w spodniach o numer mniejszych. W praktyce przekłada się to na wagę poniżej 80kg. Daję sobie powiedzmy rok na osiągnięcie celu (tzn. w wariancie pesymistycznym, że będę się musiał nakombinować), a jeśli mi się nie uda, to zadowolę się faktem, że mam ważyć w granicach 85kg, ani mniej, ani więcej. Jak ważę gdzieś tak 82, to nie jestem w stanie wleźć w mniejsze portki, a duże zaczynają wisieć i mnie to strasznie wkurza. Wolę mieć te 2-3kg więcej, ale przynajmniej trochę wygody :).

Ja wiem, że to może brzmieć śmiesznie (a w kontekście majstrowania przy własnej wadze strasznie trywialnie :), ale, no nie wiem, nie jestem tego w stanie wytłumaczyć. Chodzi mi o to, że umiejętność wyznaczenia sobie w ten sposób dowolnego celu, dodania do niego limitu czasowego i, w razie niepowodzenia, ograniczeniu się do wzruszenia rękami, jest naprawdę satysfakcjonująca. Najprawdopodobniej z racji tego, że daje to świadomość pełnej kontroli nad własnym życiem. Tzn. niezależnie od tego, czy problem jest prywatny, zawodowy, towarzyski, czy jaki tam jeszcze, jeśli uznam za stosowne się nim zająć, to po prostu się nim zajmę bez żadnych ceregieli.

I tyle.

Lider z ideą

14 I 2007, 15:02:39

Istnieje pewna bardzo dobra zasada mówiąca, że jeśli masz być częścią projektu kogoś, z jakąś ideą, to zapisuj się tylko i wyłącznie wtedy, jeśli ów człek zapewni ci pełną swobodę działania, a swoją ideę będzie realizował dopiero na bazie twojej pracy. Tzn. żeby ingerencja w twój "naturalny" tok postępowania w celu realizowania Idei, była jak najmniejsza.

Jest to generalnie charakterystyka dobrego menedżera, że najpierw stara się zrozumieć jak działa to, czym ma zarządzać, później określa co by chciał zrealizować, a na końcu wymyśla taki plan, żeby osiągnąć maksymalnie dużo z tego, co osiągnąć chce, jednocześnie w jak najmniejszy sposób ingerując w zasady już wypracowane w ramach organizacji przez pracowników (oczywiście te zasady, które się sprawdzają).

Sytuację tego typu mam obecnie w pracy. I dopiero teraz jestem w stanie docenić wiedzę i doświadczenie, jakie dało mi obserwowanie różnych projektów open source oraz uczestniczenie (na różnych poziomach zaangażowania) w pld. Jestem też w stanie docenić jak dużo mogą dać ludziom rzeczy typu radio studenckie, czy jakiekolwiek inne projekty robione w grupie.

I jako ciekawostka. Oto projekt człowieka, który jednak nie do końca rozumie jak osiągnąć to, co chciałby osiągnąć.

Bo to refleks trzeba mieć

12 I 2007, 08:38:02

Za każdym razem, jak napiszę kawałek wyrażający opinię o jakiś konkretnych ludziach, to kończy się na tym, że 5 minut po kliknięciu 'wyślij' mnie nachodzą wątpliwości, że może nie powinienem był tego pisać.

No ale wtedy jest za późno, nie chcę się bawić w kombinacje, więc tekst zostaje jaki był.

Ale nie dziś ze względu na strasznie dziwną porę, więc zdążyłem wpis wywalić na jakiś kosmiczny poziom zanim ilość wejść przekroczyła może piętnaście :)

Nie wiem, przeczytam go za kilka dni i wtedy zdecyduję. Acz odruch nie odzywania się konkretnie na temat różnych ludzi mam silny. Nie wiem dlaczego.

Chociaż z drugiej strony...

Most from as can communicate (better odr worse) not only polish language

06 I 2007, 15:40:52

Nie orientuję się, czy sparrow jeszcze żyje, czy już nie żyje, czy ktoś poza nim ma dostęp do kodu joggera i w ogóle jak to teraz jest z tym joggerem, ale potrzebowałbym paru rzeczy.

Otóż idea trzymania osobnej anglojęzycznej strony pod mmazur.name była zapewne szczytna, acz zasadniczo rzecz biorąc z góry skazana na niepowodzenie. Ledwo mam czas tutaj coś wrzucać, o drugim blogu nie wspominając. Więc najprawdopodobniej skończy się na tym, że skorzystam z opcji podpinania joga pod zewnętrzną domenę i sobie go tam przepnę.

Rzecz w tym, że nadal potrzebna mi jest możliwość publikowania także po angielsku (vide ostatni wpis). W związku z tym kilka feature requestów (te z najwyższym priorytetem na początku):

Najważniejsza rzecz -- rssy tylko dla konkretnej kategorii. Bez całej reszty jestem w stanie się w zasadzie obejść, natomiast to jest dla mnie najważniejsze. Bez tego nie jestem w stanie ani wsadzić bloga na jakiekolwiek zagramaniczne planety, ani żaden zagramaniczniak nie ma specjalnie jak sobie go dodać do rssów.

Trochę mniej ważna -- wykrywanie języka i dwujęzyczny interfejs. Najwygodniej chyba byłoby po prostu, gdyby dało się w szablonach robić warunkowe wpisy, zależnie od języka w jakim przedstawiła się przeglądarka. To nie jest w sumie takie ważne, bo mogę się bez tego obejść po prostu zmieniając trochę napisy na blogu, acz było by miło.

No i już jakby się komuś kompletnie nudziło -- przy rssach możliwość definiowania więcej jak jednej kategorii. Np. 'rss/pld+english' dla angielskiej planety pld, a 'rss/pld-english' dla polskiej.

Kto się podejmie? :)

UPDATE: problem z dwujęzycznością rozwiązany. Po prostu zamieniłem teksty na łacinę, więc powinno być zrozumiałe dla wszystkich. Gdyby ktoś miał jakiegoś znającego łacinę znajomego, to byłbym wdzięczny za zasugerowanie poprawnych form poszczególnych zwrotów, bo moja łacina jest czysto słownikowa, więc czy to czasownik, rzeczownik, czy liczba pojedyncza, czy mnoga, mi wsio rawno.

A, właśnie, jeśli ktoś się zastanawiał skąd się wzięło zdanie w temacie wpisu, to sugeruję zaglądnąć tu.

PLD as a base distro

06 I 2007, 04:22:46

Quite recently I've stumbled across another one of the many smaller rpm based distros out there. It's not the first time I got interested in such a project and probably won't be the last, because to me they all are potential candidates for using PLD as their base. And I really think having a bunch of such projects (not PLD per se, but using our packages and at least parts of our infrastructure) would be really beneficial to both PLD and the external projects involved. Let me tell you why.

I could say that there are two main reasons for PLD being a very good base distro, one technical and the other organizational, but in reality they are really interconnected, so I'll try to cover both of them in one pass.

First thing to keep in mind is that PLD is really a lot more about technology then about providing a product. Sure, we do have something that could more or less be called a linux distribution, but on a day to day basis, most developers just view it as a place for keeping the software they use in one place and not something one treats as a whole. I assume at least some people would object, but let's face it -- our track record with regards to doing actual releases is probably worth a thousand words. PLD, being nine years, has one official release which has been abandoned ages ago, one in permanent freeze mode (we could probably advertise it as a remedy for global warming) and one in active development. Yes, we've always looked up to Debian.

Let's face it -- we're just not that good at getting our acts together and agreeing on something that could be put in a box.

This has its upsides however -- it means that the project has developed internal policies that are mostly meant to stay out of developers' ways. Otherwise, with actual releases clearly lagging, the project would collapse under it's own weight a long time ago (we did get close to that while releasing PLD 1.0, but that's a long story).

So what are those policies? Well, for the most part, there simply aren't any. There are a lot of technical things to keep in mind, best practices, kosher ways to do things 'n stuff (PLD is one of those projects that really push what rpm's capable of). But other then that, people are generally free to do whatever they want and need. Sure, there are some rules with regards to how our cvs repository is organized, but that too is rather straightforward and thought up in such a way, that the most popular types of changes aren't a pain in the ass for the developers performing them.

So how would a new project fit in? First, it'd be best for someone to talk to one of our more experienced developers (I'd be more then happy, so feel free to ping me) in order to discuss expectations and possibilities. After that it's just a matter of that developer writing a short email with a request for new developer accounts, having two other developers sign off on it (that's never a problem) and voila -- the new guys are free to start playing.

But what exactly would they be free to do?

Well, alter packages obviously. Let's say you want to build a desktop oriented distribution for home users. First thing -- they don't need stuff like openldap, mysql or postgres linked everywhere. No problem, just define appropriate global bconds (build conditionals; think USE flag from gentoo's emerge) on your build machine and build the required packages. You'll probably have to add bconds (or fix support for them) in a package or two, but generally that should be a quickie.

Ok, now for something more ambitious. PLD by default produces a shitload of subpackages for every app. Just to show you what I mean.

poldek:/ac> ls kde
Display all 716 possibilities? (y or n)

You probably don't want that in a desktop distro, since it'll just confuse users. So is there a way to somehow change this while still keeping your changes mergable with PLD? Yup. One solution -- you can create metapackages that just have a lot of Reqs on the subpackages you want. Or a more elegant approach -- using a bcond, depending on which rpmbuild will produce either a big package for, let's say, kdelibs or a multitude of subpackages (and I did test that's it's in fact possible, although I haven't seen anyone actually using this yet; see comment on pushing rpm :).

And now for something even bigger. Below is a typical way of how PLD splits libraries by default.

poldek:/th> ls libogg-*
libogg-1.1.3-2
libogg-debuginfo-1.1.3-2
libogg-devel-1.1.3-2
libogg-static-1.1.3-2

Libogg is the main stuff, debuginfo is something for gdb to munch on, devel are mostly C headers and static are static versions of a given lib (think .so vs. .a files). Confusing for our desktop users? You betcha. The same bcond rule applies here, however going through

[mmazur@klapek SPECS]$ ls|grep spec$|wc -l
11325

spec files and adding a bcond into each and every one of them probably isn't the way to go. The preferred solution here would most likely be altering rpm and it's default macros in a way that would allow for a global bcond that would work on all (well, most, some would probably need fixes of various sorts) our spec files out of the box.

And that's just a taste of the technological freedom offered in PLD. Rule of thumb is -- as long as your changes don't actually break anything for other developers, aren't ugly as hell and are in compliance with our technical policies -- you have a green light.

(And if you want to do something really weird, there's always the possibility to branch it, however I would advice against doing that too often -- we're using CVS which is not all that great with branches, even considering we have a healthy amount of scripts helping us with various tasks. YMMV however.)

There is more of course. I won't go into details, but we do have things like a builder infrastructure (python scripts for automatic package building and uploading) and an ftp infrastructure (ditto for tossing those packages around an ftp site) plus you're quite likely to be able to get someone to host your builder or two. And if you're worried about those systems not satisfying your needs -- PLD 2.0 has 8 basic distinct targets for which packages get built (that's five distinct architectures), meaning a lot of builders and a lot of files to keep track off on our ftp server. And it's all being run by a single guy. With a sex life. Involving another person. Not over the internet. And not the phone, either.

Sure, there's still a lot to be done there, but I do believe those scripts should constitute a really reasonable basis for most people.

Oh, and if you're worried about us being too Polish oriented, there's no need to. All cvs commits are in English, our website is in English, and though the Polish devel maillists are seeing more traffic then the English ones, that's just because people are lazy. Threads started on the English lists get the same amount of attention.

And if you don't believe me, we have two non-Polish developers, one from .us and the other from .ee (no, I won't tell you what obscure country that is, go look it up), that will be more then happy to confirm my story. And their willingness has absolutely nothing to do with us having their relatives held hostage.

Really.

Uczyć się każdy może (jak go odpowiednio sprofilują za młodu)

05 I 2007, 00:09:41

Artykuł zachwalający decyzję sporej ilości amerykańskich uczelni (z MITem na czele) o udostępnieniu w internecie materiałów do kursów przez nie prowadzonych (skomplikowane zdanie). Tak zwany Open CourseWare.

Ja się mogę podpisać obiema łapkami (dosłownie; w liceum mi się nudziło na lekcjach i się uczyłem pisać lewą ręką; zostało mi, bo nawet kilka lat później idzie mi to całkiem całkiem). Wyczaiłem tę stronę jakieś dwa miesiące temu już nie pamiętam w jakich okolicznościach (na 99% z reddita), natomiast od razu wpadło mi do głowy, że moje problemy z (regularnym) sprzątaniem mieszkania i innych garków właśnie się skończyły. Polazłem do sklepu dla idiotów, zakupiłem sobie empeczyplayera (creative zen nano bodajże), załadowałem go pierwszym kursem z psychologii, no i od tego czasu nie mam nic przeciwko pracom domowym, bo jest to jedyny czas, kiedy bez wyrzutów sumienia mogę sobie tych wykładów posłuchać.

A jest czego słuchać. Profesor wymiata, szkoda, że nie jestem w stanie zobaczyć co bardziej graficznych wykładów, no ale. W ogóle sama koncepcja takiego "studiowania" jest imho ucieleśnieniem ideału -- "studiuję" co chcę, kiedy chcę (a właściwie kiedy mogę, bo niestety nie mam czasu) i nie muszę pisać żadnych testów i sprawozdań. O przyokazyjnym szlifowaniu języka już nawet nie wspominając. Doesn't get any better then this.

New Th (PLD 3.0) Release Manager

02 I 2007, 01:16:39

For the record -- a couple of days ago Arcadius Meeshkyevich announced that he has taken over the position of Release Manager for PLD 3.0. Most developers agree that this should speed up the release of said PLD Th by at least a decade or two.

« | »