Okularków nie będzie, przenosiny w pełni

Dzisiaj wybrałem się do okulisty (przy optyku) w celu dobrania okularów.
Ten mnie zbadał, próbował dobrać odpowiednie szkła… i właściwie nic to nie
dawało. Na siłę okularów sprawiał sobie nie będę – to by mi mogło
bardziej zaszkodzić niż pomóc. To co zaobserwowałem u okulistki podczas badań
kontrolnych najprawdopodobniej było tylko złudzeniem spowodowanym
powiększającym działaniem szkieł. Dzisiaj więc zamiast recepty na okulary
odebrałem receptę na krople do oczu. Zresztą podobne to tych co już mam –
do Starazolinu, który wychwalałem już w zeszłym roku.

W związku ze zmianą pracy (do nowej już w czwartek) przenoszę różne
rzeczy. Listy dyskusyjne moich projektów (CJC, PyXMPP, Transport GG)
przeniosłem na swój własny serwerek (lists.jajcus.net), a z rozpędu zabrałem
się za przenoszenie do siebie reszty tych projektów z JabberStudio (które najwyraźniej
umiera). To ostatnie jeszcze trochę potrwa, bo to większa robota, ale pewnie
w tym tygodniu skończę – wtedy dam znać co i jak, a przede wszystkim,
gdzie.

Dzisiaj walczyłem jeszcze z dwie godziny z przenoszeniem kontaktów ze
starego telefonu komórkowego (firmowego) na mój własny, prywatny. Ta marna
namiastka IrDA/OBEX w moim Samsungu nie ułatwiała sprawy, ale stary laptop
z IRDA, Multisync, trochę Pythona, trochę ręcznego grzebania w plikach
wizytówek (bez tego, przy próbie importu czterech z moich kontaktów telefon
się po prostu rebootował) i jakoś się udało. BTW: jak ktoś ma mój stary numer,
a chciałby aktualny, to niech się do mnie zgłosi.

Z przenosin czeka mnie jeszcze wyniesienie swoich fizycznych zabawek (talerz,
słuchawki, puszka na herbatę, kalendarz z gołymi babami itp.) ze starej roboty
i zaniesienie sprzętu (komputer, monitor, telefony) do nowej. Z mniej
materialnych rzeczy – posprzątanie po sobie na serwerach w starej firmie
(wszelkie konta, aliasy, skrypty itp. zabawki) i podczepienie się do nowej
(też se będę musiał jakiegoś majla założyć). System niby sobie już na nowym
kompie zainstalowałem, ale nie pamiętam w jakim jest stanie… więc może
jeszcze to mi trochę czasu zająć… a pracodawca pewnie będzie chciał już
pierwszego dnia widzieć wyniki… ;-)

Hmmm… używają tego JJIGW… i to gdzie!

Thanks so much for your excellent jjigw project. We’re using it
internally here at VMware to bridge our IRC servers with the new
Jabber servers, and for the most part it works flawlessly.

Miło takie rzeczy czytać, nawet jeśli reszta maila to bugreport ze
zgłoszeniem jakiegoś paskudnego, trudnego do zdebugowania, błędu.
:-)

Opieka nad projektem…

Jakiś czas temu dostałem łatę na JJIGW dodającą obsługę
subskrypcji obecności użytkowników IRCa. Rzecz fajna, przydatna, aczkolwiek
z powodu specyfiki IRCa (zmieniające się nicki), ciężka do zaimplementowania.

Dzisiaj wreszcie znalazłem czas, żeby przejrzeć tego patcha. I nie
spodobał mi się. Parę rzeczy psuł (łamiąc specyfikację XMPP i MUC), parę innych robił nia tak jakbym
chciał. Ale zawierał też pewne poprawki mojego kodu. Najbardziej dokuczyły mi:
brak dokumentacji dodanego kodu i coding style. Ale tego nie
śmiałem się za bardzo czepiać — mój kod JJIGW sam
z siebie jest kompletnie pozbawiony dokumentacji, a i śliczny nie jest.

Napisałem swoje uwagi do autora patcha. W sumie, nawet jakby nie chciał
tego poprawić, to bym patcha nałożył. Ręcznie, w większości po swojemu, ale
dodałbym te zmiany. Jednak gotowy kod, to zawsze coś. Szkoda, że rzadko dostaję
gotowe ulepszenia do moich projektów. No, ale cóż. Sam sobie też jestem winien
— komu się chce grzebać w zawiłym i nieudokumentowanym kodzie? Z drugiej
strony, jakbym się uparł, żeby wszystko udokumentować, to ten kod by pewnie
w ogóle nie powstał — zabawa mogłaby przestać być zabawna. Dobrze, że
przynajmniej API PyXMPP jakoś
udokumentowałem.

Powydawałem trochę…

Powydawałem trochę oprogramowania. Hurtem:
PyXMPP 0.5
CJC 0.5
JJIGW 0.2.
Jeszcze do napisania anonsy na główną stronę JabberStudio, ale
na razie mi się nie chce ich pisać. Pewnie zaraz się okaże, że
w każdym z tych programów jest jakiś krytyczny błąd, z jakim
nie powinno się wydawać. Trudno, kolejny rilis pewnie i tak za
jakieś dwa miesiące lub pół roku, bo wcześniej nie będzie mi
się chciało.

W PyXMPP i CJC główną nowością jest obsługa rozmów grupowych,
w JJIGW poprawa stabilności i obsługa wielu sieci IRC. We
wszystkich poprawiona masa błędów i wprowadzonych nieco nowych.

A w pracy dzisiaj robię za tragarza… :-(

Nie-jellonek

Dostałem prośbę o autoryzację z jakiegoś konta na WP. Pomyślałem: jellonek 🙂.
Okazał się, że jednak nie. Chodziło o moją bramkę do IRC’a
(ircnet.jabber.bnet.pl), która podobno nie
jest dostępna z jabber.wp.pl.
To możliwe, bo ostatnio wywaliłem rekordy SRV
_jabber._tcp dla wszystkich swoich usług
Jabberowych z DNS (zostawiłem _xmpp-server._tcp).
Głupio trzymać dwa rodzaje rekordów do tego samego, gdy stary
jest już obsolete, a można przy okazji zmotywować
administratorów innych serwerów do uaktualnienia konfiguracji
według najnowszych standardów. Nawet nie pomyślałem, że dotknie
to użytkowników serwera WP. Zgłosiłem problem gdzie trzeba (tak
myślę) — zobaczymy co z tego wyniknie.

Wracając do naszego nie-jellonka, czy właściwie
nie-jellonki. Rozmowa się rozwinęła i nawet dostałem
linka do jej stronki. Okazuje się, że to całkiem ładna
dziewczyna (są tam zdjęcia), a z rozmowy wynika, że też całkiem
sympatyczna i inteligentna. Do tego Linuksiara.
Wiedziałem. Wiedziałem, że Open Source to może
być sposób na panienki ;-).

JJ i CIA

Napisali o mojej twórczości w Jabber Journal, ale moja
wrodzona skromność nie pozwala mi się tym chwalić. Więc się nie pochwalę
:-P

Aby moja sława nie zanikła postanowiłem też zadbać o regularne donosy do
CIA. Niestety na JabberStudio nie mam dostępu
do /CVSROOT/ i nie mogę bezpośrednio instalować commit-skryptów.
Mam jednak możliwość skierowania informacji od commita na dowolny JID lub adres
e-mail i z tej właśnie możliwości skorzystałem. Musiałem tylko napisać skrypt
do konwersji wiadomości z JS na XML zrozumiały dla CIA – niecała godzinka
roboty. Od dziś więc notowane będą moje commity nie tylko do
PLD,
ale także do:
PyXMPP,
CJC,
JJIGW
i
Transportu GG.

Co by tu…

Ostatni tydzień upłynął pod znakiem Crossfire.
Pisałem już że to niebezpieczny pożeracz czasu? No to piszę.
Czas na grę został zabrany na niekorzyść telewizji oraz snu.
Czasami wyglądało to tak, jakbym się z żoną prześcigał kto później
w nocy wymięknie. Żona wygrywała, ale to pewnie dlatego, że ona nie musi
o 6:20 wstawać do roboty.

W weekend w Gliwicach była Grająca Starówka – kilka różnych
koncertów w małych uliczkach w okolicach Rynku. Wybraliśmy się tam
z Krysią i w sobotę i w niedzielę. W sobotę wracaliśmy wcześniej –
odprowadziłem dziewczyny kawałek w kierunku domu, a sam poszedłem na
GNU/Browarek (w moim przypadku GNU/Kola). W niedzielę, też długo
nie siedzieliśmy, bo Krysia zaczęła marudzić. Powodem złego humorku był
chyba balonik, który jej mama kupiła. Krysia ostatnio zwykle dostawała
baloniki napełnione powietrzem, a teraz dostała latający. Niestety nie
doceniła. Szczególnie nie podobało jej się, że balonik został do niej
przywiązany. Za którąś zmianą miejsca zaczepienia stwierdziła Bim
bam! Bim bam!
(po polsku: kur.., kur…!) i wydawało się,
że się z sytuacją pogodziła. Jednak nie do końca i trzeba było wracać.
Dopiero w połowie drogi do domu przypomniała sobie, że Gra! i że
chciałaby jednak jeszcze posłuchać, ale było już za późno.

Mimo wszystko udało mi się znaleźć też odrobinkę czasu na moje
programiki. Przepisałem od nowa obsługę rostera w PyXMPP. Zmieniłem przy
tym API (a najlepsze, że nawet je udokumentowałem), ale stare było
niewygodne, a poza tym stary kod był wolny i zupełnie niezgodny ze
standardem jeśli chodzi o traktowanie znaków Unicode (zupełnie olewał
profile stringprep). Nowy kod w CJC niczego nie popsuł, a nawet naprawił
parę błędów.

Miałem też problemy z JJIGW, które od czasu do czasu zżerało 100% CPU na
serwerze. Postanowiłem to zbadać Pythonowym profilerem. Okazało się to
niełatwe. Profiler sam z siebie olewa wątki poza głównym. Dokumentacja
i Google nie wiele mówią na ten temat, ale jakoś udało mi się odpalić
tego profilera także dla innych wątków z zapisywaniem statystyk do
innego pliku dla każdego wątku. Znowu się potwierdziło że wątki
w Pythonie są mocno niedopracowane.

Wczoraj natomiast zacząłem implementować klienta MUC w PyXMPP. Jak
dobrze pójdzie, to niedługo będzie można używać CJC wraz z JJIGW
oraz innymi implementacjami MUC i będę mógł porzucić tkabbera.

Wreszcie jakiś release, a nawet trzy

Dość tego ukrywania moich wypociń przed światem. Szczególnie że ostatnie wydanie PyXMPP
(0.3) nie działało z ostatnimi wydaniami libxml2 (>=2.6.7). Nawet w PLD Ac był taki
niedziałający zestaw. Wczoraj siadłem do kompa i wydałem kolejne wersje wszystkich moich
aktywnych Jabberowych projektów: PyXMPP
0.4
, CJC 0.4 i JJIGW 0.1. Wszystkim im jeszcze wiele
brakuje, ale używać się dają. CJC ma już nawet paru swoich wiernych użytkowników, a po
wczorajszym wydaniu już pojawił się nowy bugreport.

Dzisiaj dostałem polecenie służbowe od szefa: zainstalować
TeamSpeak na naszym serwerze gier.
Szkoda że to zamknięte binarki, ale w końcu i tak większość gierek które tam mamy
to też zamknięty soft, nawet bardziej. Serwerek zainstalowałem i zacząłem się zastanawiać
nad kupnem słuchawek z mikrofonem do zabawy z tym w domu. Ale szef nas zaskoczył i przywiózł
5 kompletów takich (niestety nie za darmo). W firmie już testowaliśmy i fajnie jest. Może
sobie kupię takie słuchaweczki, a może nie.

Niech się święci 4 maja

Dzisiaj urodziny (drugie) Krysi. Więcej o tym pewnie żona. Ja tylko wspomnę, że byłem pod wrażeniem jak
jubilatka świeczki zdmuchnęła. Wszyscy byli zachwyceni, poza nią samą – ona
wolała jak się świeciły.

A oto co mnie się dzisiaj zdażyło: idąc na pocztę spotkałem dwóch robotników
z budowy, którzy chcieli 40gr, bo im brakowało na piwo. Jeden miał na koszulce
pingwina (raczej zupełnie nielinuksowego). Dałem im mówiąc, że to tylko z powodu
pingwina. Zdziwili się: A co pingwin ma z tym wspólnego. Pokazałem im
pingwiny na mojej koszulce (Pingwinaria 2003). Uznali że zrozumieli.

Na poczcie odebrałem dwie przesyłki – obie z Allegro. Jedna do żony –
spodenki dla małej. Druga do mnie – karta WLAN na PCMCIA: Compex iWavePort
WL11B+. Z Google nie wiele wynikało na temat jej działania w Linuksie, ale mimo
to zaryzykowałem i kupiłem ją na Allegro. Długo nie docierała, a ze sprzedawcą
prawie zupełnie nie było kontaktu, ale w końcu jest. Oczywiście jeszcze dzisiaj
musiałem sprawdzić co jest warta. Okazało się że rzeczywiście jest na chipsecie
Agere, jak wcześniej wygooglałem i że producent chipsetu udostępnia sterowniki
pod Linuksa z pełnymi źródłami na licencji BSD-like – a więc super – jednak
tylko dla kernela 2.4 (wolałbym dla 2.6). Ale jestem dobrej myśli – jak są
źródła, to na pewno jeszcze coś z tego będzie. Mogę poczekać. A właściwie nawet
muszę, bo do mojej drugiej karty – Compex WLU11, na USB – jeszcze sterowników w
ogóle nie ma.

Ostatnio znowu dużo czasu marnuję rżnąc w Crossfire. Jednak ogrywają mnie na
moim własnym serwerze. Mimo to
udało mi się znaleźć parę chwil dla moich projektów. Poprawiłem parę drobiazgów
w CJC i zabrałem się znowu za JJIGW. Może uda mi się zrobić
wydanie całej trójcy – tych dwóch wraz z biblioteką PyXMPP.

Holandia?

Dostałem dzisiaj ciekawego majla:

Hello,

Is there already someone busy with translation your jabber-gg-transport into
dutch? If not, I will translate it. This will take a week, a month,… but it
will not take longer than 2 months normally. 🙂

Włączając mechanizmy gettext do kodu transportu GG nie sądziłem że będą
potrzebne do czegoś więcej niż język polski. Ale jak ktoś chce robić
holenderskie tłumaczenie… niech robi :-)

Prawie skończyłem implementację vCard w PyXMPP. Działa już wczytywanie
Jabberowego vcard-temp i standardowego formatu MIME directory
(RFC2426/RFC2425) oraz zapisywanie tego drugiego. Trzeba jeszcze przetestować
kompatybilność z innymi implementacjami RFC2426 (jakieś address-booki) oraz
dodać tworzenie XMLowej wizytówki. Wtedy będzie można implementować
/whois w CJC i w JJIGW.

W domu zacząłem co-nieco sprzątać. Jeśli w weekend (gdy przyjeżdża żona) ma
być czysto, to muszę zacząć już teraz ;-).