strona główna

Archive for January, 2006

Whoa, deja vu

Monday, January 30th, 2006

Uaktualniam sobie moje tłumaczenie dokumentacji biblioteki prototype do wersji 1.4.0 i rzuciło mi się w oczy: pośród nowego kodu w tej wesji pojawiła się, w implementacji funkcji sortBy obiektu Enumerable, transformata Schwartza.

Polubiłem Javascript, podoba mi się prototype, ale tu mi trochę mina zrzedła.  Nawet wersja Schwartza była czytelniejsza, pomimo tego że napisana w Perlu i to prawie na golfowo – tak zwięźle, jak tylko się dało.  Jakoś nie chce mi się wierzyć, żeby w JS nie dało się tego zapisać ładniej.

Oh well, fajnie że jest, razem z masą pozostałych funkcji w 1.4.0.  Polska wersja opisu już wkrótce.

Proste rzeczy

Friday, January 27th, 2006

Takie trzy, jak mawia Kaczkowski, drobiażdżki z itconversations:

"Dla mnie Google to jak duża grupa inteligentnych ludzi rozbijających się czołgami.[...] Nie omijają ścian, tylko przejeżdżają przez ściany. To naprawdę głupie techniki użyte na wielką skalę."

"Na przykład: sprawdzanie pisowni. Kiedy wpiszesz zapytanie i google odpowie "Czy chodziło Ci o ...?", to zwykle oznacza literówkę. Nie mamy żadnego niesamowitego słownika, który podpowiadałby nam o co Ci chodziło. My tylko zwracamy uwagę na to, co wpisują ludzie po tym, jak wpisali zapytanie które nie zwróciło żadnych rezultatów. Okazuje się, że to bardzo skuteczny sposób na domyślenie się, o co Ci najprawdopodobniej chodziło, znacznie lepszy od jakiegokolwiek słownika pisowni. Zwróć jednak uwagę na głupotę tego podejścia."

"Uważam, że rzeczy złożone się psują, a rzeczy proste działają. Uważam też, że rzeczy naprawdę proste działają zadziwiająco dobrze."

Adam Bosworth, Vice President of Engineering, Google

Interfejs użytkownika

Thursday, January 26th, 2006

"Wybierz się na koncert, co zobaczysz? Muzyków.

[...] Na czym grają? Jakich instrumentów używają? W jaki sposób przekazują swoje emocje i swoje pomysły na muzykę? Jeśli spojrzysz na to w ten sposób zdasz sobie sprawę z głupoty obecnego podejścia do tworzenia interfejsów użytkownika: zakładamy, że odpowiednim sposobem na dogadywanie się z naszymi systemami są interfejsy intuicyjne i łatwe do nauki.

Zrobiliśmy z tego święty Graal: na każdym spotkaniu projektantów usłyszysz, że ma być intuicyjnie, łatwo do przyswojenia, bez potrzeby trenowania kogokolwiek, bez stromej krzywej uczenia się. To śmieszne. Żadne skomplikowane zadanie, jakie kiedykolwiek wykonywał człowiek, nie mogłoby być wykonane sprawniej przy pomocy interfejsu ogólnego niż specjalizowanego."

Świetne. Dzięki wydaniu 24,99zł (plus koszty przesyłki i przede wszystkim czas stracony na odebranie paczki na poczcie) na transmiter FM mogłem dzisiaj w samochodzie zacząć nadrabianie zaległości ze słuchania IT Conversations i już za pierwszym podejściem trafiłem bardzo dobrze, w prezentację Brana Ferrena z 2005 Web 2.0 Conference. Niecałe 20 minut, zdecydowanie warto przesłuchać.  Bran jest współzałożycielem Applied Minds i zajmuje się projektowaniem najróżniejszych rzeczy na zamówienie innych firm.  Tworzy między innymi interfejsy użytkownika, bardziej w stylu "pomachaj rękoma żeby przesunąć mapę" niż "kliknij w trzecią ikonkę od lewej".

Oczywiście, w przypadku dużej części oprogramowania łatwość obsługi jest ważna. Sklepy, banki, wszelkie aplikacje których nie używam często zyskują na intuicyjności. Jestem za to skłonny poświęcić dużo czasu na naukę programów, z których korzystam na co dzień, jeśli dzięki temu staną się wygodniejsze niż ich bardziej intuicyjne odpowiedniki.

W skrócie, z punktu widzenia programisty: vi, Emacs – tak, Wordpad, mcedit, textedit – nie :)

Wordpress i Jabber — lekkie korekty

Friday, January 20th, 2006

Wnioski na temat rozwoju jabberowej wtyczki do WP po przejrzeniu dokumentacji i istniejącego kodu:

Skorzystam z Subscribe to comments (dzięki za podpowiedź, Łukasz). Ideałem byłoby, jeśli da się sensownie (i wygodnie) połączyć funkcjonalność, dodanie obsługi XMPP do StC bez psucia tego, co tam jest teraz.

Class.jabber.php trzeba będzie solidnie przerzeźbić, a właściwie napisać na jej podstawie coś co nadaje się do wykorzystania w aplikacji WWW. Dziwiłem się dlaczego wysyłanie wiadomości zajmuje tyle czasu, dopóki nie zajrzałem w kod:

7 lines matching "sleep" in buffer class.jabber.php.
108:        var $iq_sleep_timer;
146:                $this->iq_sleep_timer           = 1;
189:                        sleep(2);
215:                        sleep($this->delay_disconnect);
706:                        usleep(250000);
785:                        sleep($this->iq_sleep_timer);
892:                        sleep($this->iq_sleep_timer);

Kod do przebudowy i porozbijania na nieblokujące fragmenty. To co jest nadaje się do testów funkcjonalności, ale docelowo wysłanie wiadomości nie powinno zajmować kilku sekund jeśli serwer Jabbera działa poprawnie.

PHP na topie

Thursday, January 19th, 2006

Z ciekawostek, za pośrednictwem LemonodorFree Software Blog: porównanie popularności języków na podstawie ogłoszeń o pracy z serwisu indeed.com.

Java i C++ specjalnie nie zaskakują, ale dziwnie mocno trzyma się Perl, lepiej niż Python, PHP i Ruby razem wzięte. Nie mam tak dokładnych danych, ale sprawdziłem jak to wyglądało w ostatnich latach na pl.praca.oferowana:

The image “http://static.flickr.com/24/88508808_6eba4feedc.jpg?v=0” cannot be displayed, because it contains errors.

Co już wygląda bardziej znajomo, PHP pomimo wad i uciążliwości od czterech lat bije na głowę wszystko z C++ i Javą włącznie. No cóż, worse is better :)

Hu-ha

Thursday, January 19th, 2006

Zima się rozkręca, właśnie mamy -10.

Prognoza ICM dla Warszawy:

The image “http://static.flickr.com/15/88503951_49cfeb5fdd.jpg” cannot be displayed, because it contains errors.

Już jutro temperatura odczuwana poniżej -30, a później jest już tylko bardziej poza skalę, przy temperaturze rzeczywistej od -25 do -15. Trzeba będzie znaleźć bardziej zimowy płyn do spryskiwaczy.

Dokumentacja prototype, ostatnie 30%

Tuesday, January 17th, 2006

Właśnie dokończyłem tłumaczenie dokumentacji prototype.js – jak często bywa, ostatnie 20% okazało się najbardziej czasochłonne. Na dodatek to nie koniec pracy, wczoraj Sergio uaktualnił wersję oryginalną do prototype-1.4.0. Zbieg okoliczności, serio :)
Przy okazji pierwsze niemiłe zaskoczenie Wordpress 2.0: umieszczanie plików na serwerze jest mniej wygodne niż do tej pory, zwłaszcza jeśli chodzi o pliki nie powiązane z żadnym wpisem. Na dodatek nie działa poprawnie, będę musiał się temu jutro przyjrzeć.

Fun with XMPP, part 1

Friday, January 13th, 2006

No, to mogę zacząć narzekać na XMPP: protokół zdefiniowany przez bazowe RFC nie pozwala na wysyłanie pojedynczej wiadomości do więcej niż jednego adresata. Odpowiednie rozszerzenie protokołu jest opisane w JEP-0033, które od ponad półtora roku ma status Draft i jest, z tego co widzę, ogólnie ignorowane przez serwery (no dobra, sprawdziłem jabberd i ejabberd, dalej nie szukałem). Co oznacza, że kod powiadamiający o wpisach i komentarzach zużyje znacznie więcej czasu procesora i wygeneruje bez sensu znacznie większy ruch w sieci niż powinien, co będzie szczególnie widoczne w przypadku bardziej popularnych blogów. Suuper.

Nic to, zobaczymy co się da zrobić z tym co jest.

Wordpress i Jabber

Friday, January 13th, 2006

Zacząłem przeglądać dokumentację Wordpressa pod kątem rozsyłania powiadomień o nowych wpisach i komentarzach przez Jabbera/XMPP. Wygląda to całkiem sensownie, po dołączeniu class.jabber.php ma nawet szansę zadziałać. Projekt wpJabber uważam za oficjalnie rozpoczęty :)

Założenia:

  1. powiadomienia muszą być wygodne przede wszystkim dla czytelników, w szczególności nie powinny wymagać zakładania konta,
  2. instalacja powinna być prosta; powinno wystarczyć włączenie odpowiedniego dodatku i jednolinijkowe wstawki do szablonów.

Wydaje mi się, że z punktu widzenia czytelnika powinno wyglądać to tak: na stronie głównej bloga dostępne jest miejsce na wpisanie JID i przycisk "Powiadom mnie o nowych wpisach", a na stronach poszczególnych wpisów miejsce na JID i przycisk "Powiadom mnie o nowych komentarzach". Przydałby się też checkbox "Zapamiętaj mnie", który spowoduje wpisanie JID w ciasteczko tak, żeby wpJabber był w stanie rozpoznać wpisy, do których już włączyłem powiadomienia i nie ma sensu ponownie wyświetlać tego formularza, a w pozostałych automatycznie wpisywać mój JID w formularz.

Podobnie jak w przypadku list e-mailowych, po włączeniu powiadomień wpJabber wyśle na komunikator prośbę o potwierdzenie – odesłanie na jego adres wiadomości z tekstem "Tak", "Yes", "Da", "Oui" czy czymś podobnym. Chyba wystarczy dla każdego adresu pytać tylko raz, żeby nie utrudniać specjalnie ludziom życia. Po otrzymaniu potwierdzenia wpJabber doda sobie delikwenta do rostera i od tego momentu będzie pozwalać na Single-Click Subscribe (do opatentowania).
To tyle, w razie uwag lub pomysłów prosiłbym o komentarze.

Django - coraz lepiej

Thursday, January 12th, 2006

Wczoraj wyszło Django 0.91. Sporo świetnych zmian, ale i tak jest na co czekać:

"This is the last Django release before the magic-removal branch is merged. The next release will be a big one."

Django dojrzewa i szybko staje się coraz lepsze. Przy wszystkich swoich dziwnostkach, narzucaniu nie zawsze najwygodniejszych konwencji i konkurencji ze strony TurboGears, web.py i ziliona mniej znanych środowisk (o Zope można zapomnieć), to w tej chwili jedyne tak wygodne rozwiązanie, które daje praktycznie za darmo większość części administracyjnej serwisu. A to naprawdę dużo.