Przed przejściem do szczegółow, jeszcze podziękowania.
Szefowi - za wolny dzień i pokrycie kosztów
konferencji. Rodzinie - za weekend spędzony beze mnie. Organizatorom i prezenterom - za
włożoną pracę.
Dla kogo
Konferencji zabrakło jasno ustalonego profilu uczestników.
Choć zjechało sporo osób o solidnej wiedzy i dużym doświadczeniu, znaczna część
prezentacji była wyraźnie zaadresowana do bardzo początkujących. Ilu
takich było w milczącej części sali, trudno mi ocenić, ale
uczestników zainteresowanych zaawansowanymi tematami i wymianą
praktycznych doświadczeń na pewno było sporo - a tu pozostał wyraźny
niedosyt.
Chyba najbardziej dobitnie ilustrowały to wykłady Wesleya Chuna.
Człowiek o znanym nazwisku, ściągnięty z drugiej półkuli, wygłosił
banalne prezentacje, które mogłaby równie dobrze przygotować połowa jego słuchaczy. Na pewno
można było go wykorzystać lepiej.
Z pozytywów: ludzie byli faktycznie zainteresowani udziałem, sala była
zawsze pełna, wiązały się też interesujące rozmowy kuluarowe. O ile
uda się utrzymać zainteresowanie, Pycon może mieć spory
potencjał.
Ale ja go widzę w organizowaniu spotkania biegłych programistów
wymieniających się doświadczeniami, dyskutujących nowinki i
poznających niebanalne techniki programowania. Dla elementarnych
tutoriali nie warto jeździć setek kilometrów, do nich pasują
popularyzatorskie spotkania lokalne.
Wyjazdu tak czy siak nie żałuję, z części wykładów, spontanicznych
dyskusji oraz rozmów kuluarowych wyłowiłem dosyć, by nie uznać
tego czasu za stracony.
Podsumowanie w pigułce
Najlepszą prezentacją konferencji było - moim zdaniem - wystąpienie
Marcina Mierzejewskiego na temat Orange. Kilka innych także
mi się podobało, o nich dalej.
Z gości najsilniej zaznaczył swą obecność Honza Král (czeski developer
Django), który mocno angażował się w konferencję, pojawiał się na
cudzych prezentacjach i uczestniczył w prowadzonych po nich
dyskusjach, był bardzo aktywny w kuluarach. No i miał sporo
wartościowych rzeczy do powiedzenia.
Przyjazd Wesleya Chuna, jak już wspomniałem, był rozczarowaniem. Za
mało było (tylko jedne) zajęć warsztatowych, związanych z
praktycznym programowaniem. Nie wyzyskano też obecności silnych grup
miłośników Django i Plone - o ile na rywalizację w programowaniu było
chyba za mało czasu, o tyle na pewno można było się pokusić o
dyskusję na temat zalet i wad tych CMSów w praktycznych
zastosowaniach.
Organizacyjnie - materiały czekały, wszystko zaczynało się i kończyło
terminowo, nagłośnienie działało, laptopy pasowały do rzutnika,
ogólnie - osoby odpowiedzialne za techniczną obsługę swoje zrobiły
(chwilowe problemy z prądem trzeba zakwalifikować jako siłę wyższą).
Gorzej wypadł wybrany ośrodek ale za ośnieżone góry za oknem i dobry
dojazd jestem skłonny wybaczyć takie drobiazgi jak niedogrzane pokoje,
zimną wodę czy bardzo kapryśne wi-fi.
Subiektywna kronika wydarzeń
Pokrótce o przebiegu konferencji.
Django i Pinax
Miałem nadzieję na szczegółowe informacje o wykorzystywaniu
komponentów Pinaksa w praktycznych projektach, tymczasem była
to czysto popularyzatorska informacja Django to świetny framework
webowy a Pinax pozwala mieć gotowy serwis społecznościowy lub CMS
za darmo.
Zostało to całkiem sprawnie wygłoszone i pokazane (było widać, że
bracia Wiśniowscy się napracowali przy przygotowaniach), na jakieś
popularyzatorskie pokazy może być warte zachowania, ale na
Pycon w moim odczuciu było tu po prostu zdecydowanie za mało
informacji. Demonstracja niespersonalizowanej instalacji Pinaksa
mogłaby ten wykład zaczynać, a nie go kończyć.
Dwa wartościowe linki wspomniane w dyskusji po wykładzie:
Sphene Community Tools - forum i wiki zaimplementowane
w Django - oraz Django Pluggables
(w chwili, gdy piszę artykuł, nie działa, tu link do strony na PyPi) - warte przejrzenia przykłady.
Python References and Memory Model
Python dla początkujących: jeśli napiszemy
a = [1, [2,3], 4]
b = a
a[1][0] = 0
to b także się zmieni. Lepiej nie pisać range(10000000).
Pythonowe zmienne można klasyfikować ze względu na storage (skalary
i kontenery), update (modyfikowalne i niemodyfikowalne) oraz
access (bezpośredni - jak przy liczbach, sekwencyjny - przy
stringach, tuplach lub listach, słownikowy). Tablicę można zmieniać,
a tuplę nie. Tupla jest w języku głównie dla obsługi parametrów i
wyników funkcji. I parę pokrewnych zagadnień (jedyne trudne - weakref - wspomniane
tylko hasłowo).
Jednej rzeczy nie wiedziałem - liczby całkowite z zakresu (-5, 257)
są utrwalane (konia z rzędem temu, kto przetłumaczy lepiej interned),
nie podlegają odśmiecaniu i są reużywane (wszystkie zmienne zainicjowane
wartością 3 wskazują ten sam obiekt).
Emocjonująca przerwa związana z nagłym brakiem prądu, podziw dla
autora, który mimo wszystko próbował kontynuować wykład. I wyraźne
rozczarowanie sali po wznowieniu - gdy wszyscy oczekiwali przejścia do
bardziej zaawansowanych kwestii, wykład się ... skończył.
Był też pozytyw: bardzo mi się podobał sposób prowadzenia
prezentacji. Spokojnie, zdecydowanie, z dbałością o szczegóły.
Wesley Chun naprawdę potrafi wykładać i przyjemnie było obserwować,
jak to robi.
Szkoda, że nie obrał ciekawszego tematu.
Lightning Talks (1)
Bardzo spodobał mi się pomysł Lightning Talks. Każdy może się
zapisać, może mówić o czym chce (byle miało jakiś związek z tematyką
konferencji), na początku powinien się wyraźnie przedstawić (by
zainteresowani mogli się z nim później skontaktować), na wypowiedź ma
absolutnie nieprzekraczalne 5 minut, po których traci mikrofon
(organizator pomaga dyskretnie pokazując kartki 3 minuty, 2
minuty, 1 minuta). Można podłączyć laptopa i rzucić kilka slajdów
ale trudności techniczne oznaczają kasację wystąpienia (zatem lepiej
sprawdzić wcześniej czy wszystko działa). Nie ma możliwości zadawania pytań
ale można łapać opowiadających w kuluarach albo kontaktować się z
nimi elektronicznie po konferencji.
Fajna metoda na pochwalenie się swoim projektem, hasłowe
zaprezentowanie wartościowego narzędzia lub pokazanie ciekawego
skrawka kodu. Zarazem operacja niskiego ryzyka - nawet jeśli
występujący porusza nieciekawy temat, zaraz skończy.
Na tym Pyconie było to jeszcze trochę chropawe - chyba
wszystkie szybkie wypowiedzi były improwizowane albo szykowane
tuż przed wystąpieniem - ale i tak interesujące.
Pierwsza sesja odbywała się bez prądu, zatem tylko na tablicy.
Norbert Wójtowicz chwalił się BizCarder.com,
wspominał o szukaniu kontaktu z startupami poszukującymi inwestora, a
pobocznie zadeklarował wiarę w ... Haskella.
Ja próbowałem agitować za zabawą na ProjectEuler
i zachwalać Sage. Jeśli kogoś zaciekawiłem,
polecam uwadze artykuł o konkursach programistycznych
oraz dłuższy opis Sage.
Łukasz Langa wspomniał o kilku konkretnych problemach z Django.
Zapamiętałem z nich sprawę kaskadowego kasowania rekordów (i ryzyka
usunięcia zbyt dużej ilości danych), z rekomendacją zastąpienia
kasowania przez flagowanie rekordów jako usuniętych. Ta wypowiedź i
jej kontynuacja wzbudziły spore zainteresowanie - widać, że na sali
było wiele osób mających ochotę na rozmowy o praktycznym programowaniu.
Jeden z kolegów (chyba Radomir Dopieralski) dzielił się pozytywnym
wpływem testów jednostkowych i zarządzania wersjami na swoje projekty.
Panel dyskusyjny o pracy dla programistów Pythona
Temat potencjalnie chwytliwy, kontekst pozornie korzystny (na sali byli
i pracodawcy i szukający pracy) ale dyskusja szła bardzo opornie, ożywiając
się głównie na poboczach głównego tematu.
Dla mnie najbardziej interesujące było kilka wypowiedzi Honzy Krála.
Mówił między innymi, że:
- wszystkich czeskich pythonowców i djangowców zna, więc ich poszukiwanie
ogłoszeniami o prace mija się z celem, zatrudnia za to często
programistów innych języków (PHP) i ich szkoli,
- zaletą takiego podejścia jest możliwość połączenia szkolenia z języka
ze szkoleniem dobrych praktyk (jak Test Driven Development),
- daje zadania parom programistów, przy czym nie chodzi mu o pair
programming w ujęciu XP (jeden komputer) ale o zwykłą współpracę i
współodpowiedzialność - wymusza to na programistach przemyślenie
zadania (by podzielić się pracą, muszą je zaplanować) i wzajemne
review kodu,
- przy szkoleniu używa Dive into Python (zaleta: czytający - czyli
zmieniający język programiści - nie są traktowani jak idioci, którym
trzeba tłumaczyć co to jest zmienna i pętla) a potem już książki
specyficzne dla Django,
- zachęca do zadawania pytań i dba, by było wiadomo, kogo pytać.
I jeszcze dobrze brzmiący cytacik - writing code is easy, reading it
is hard, we want to learn how to write readable code.
Także Maciek Dziergwa opowiadał trochę o specyfice zatrudniania
programistów, min. wspominając o poszukiwaniu
u ludzi autentycznej pasji, wymaganiu pisania kodu
na rozmowie kwalifikacyjnej (z typowym przykładem sortowania
tablicy po wyniku funkcji albo atrybucie), potrzebie
wzmacniania zespołu ludźmi z praktycznym doświadczeniem,
przydzielaniu nowym pracownikom opiekuna
i ... problemach przy współpracy z freelancerami (brak stałej
więzi z firmą, dzielenie czasu między kilka projektów).
Na boku, jako sponsor, pokazał się krótko MegiTeam - firma
oferująca hosting dla aplikacji pisanych w Pythonie i Ruby. Recenzować
jej w tej chwili nie będę ale życzę im wszystkiego najlepszego
(i polecam ich usługi uwadze osób, które obawiają się
konfigurować własny VPS lub nie mają na to czasu).
A na większości uczelni ciągle uczą Pascala.
Test driven development
Prowadzony przez Konrada Delonga i Krzysztofa Goja warsztat. Zadaniem
było napisanie generatora listy poprawnych ruchów dla podanej - w
formie tablicy napisów - pozycji w Othello (gra znana też jako
Reversi).
Programowanie należało dogmatycznie zaczynać od testów, a praca
odbywała się w parach - tym razem w pełnym XP-owym trybie z jednym
laptopem na dwóch, konwencją ten bez laptopa instruuje tego
stukającego w klawisze i zamianą ról co parę minut (w parze Maćkiem
Ziębą zmienialiśmy się z grubsza co funkcja).
O ile testy nie były dla mnie niczym nowym, o tyle praktycznie
programować w parze jeszcze mi się nie zdarzyło - i doświadczenie
oceniam bardzo pozytywnie. Przez półtorej godziny programowaliśmy
bardzo intensywnie, bez żadnego przestoju i ze stałą motywacją, którą
przy samotnej pracy utrzymać istotnie trudniej. Dość sprawnie
wyłapywaliśmy też sobie nawzajem błędy. Jestem mocno przekonany,
że gdybyśmy wykorzystywali dwa laptopy, praca posuwałaby się znacznie
oporniej.
Dodatkowa pochwała dla autorów ćwiczenia za prawidłowe dobranie zadania
do czasu przeznaczonego na jego wykonanie.
A niezależnie od tego, cieszyła sama możliwość poprogramowania.
Szkoda, że tylko jedna na tej konferencji.
Aha: za zalecenie jeśli ktoś z pary używa Emacsa, korzystamy z laptopa
drugiej osoby kiedyś się jakoś zemszczę ;-)
Lightning talks (2)
Adam Zieliński opowiadał o smartupz.com (patrz też
na flakerze).
Michał Sawicz pokazał moovida.com - interesujący
projekt centrum medialnego w którego rozwijaniu uczestniczy.
Maciek Dziergwa z Wojtkiem Lichotą pokazali migawkę przyszłego Plone,
z ajaksową edycją treści wyświetlanej strony. Wyglądała bardzo smakowicie.
Wojtek dodatkowo króciutko pochwalił Deliverance - bardzo obiecujące narzędzie do przekształcania
stron HTML.
Ja próbowałem (bez specjalnego powodzenia) narysować obrazek
z tego artykułu i zachęcić do zainteresowania się programowaniem
zdarzeniowym. W ujęciu pythonowym - przy pomocy Twisted.
Ciąg dalszy nastąpi
Powyższe to opis pierwszej połówki konferencji (do soboty w południe).
Ciąg dalszy już nastąpił.
Uwaga dla osób wymienianych z nazwiska: jeżeli chcecie by
podlinkować Wasze adresy email
albo jakieś strony sieciowe, dajcie znać.
Bardzo się cieszę, że według Ciebie moja prezentacja była najlepsza. Będzie mnie to jedynie motywowało do przygotowanie czegoś jeszcze ciekawszego i zaskakującego na następnym PyConPL :)
Zapraszam na moją stronę zenzire.com, gdzie udostępniłem moją prezentację.
Super - właśnie się przy pisaniu dalszego ciągu męczyłem z decyzją ile z podanych przez Ciebie informacji próbować przepisać - i musiałbym sporo - a tak będę mógł odesłać.
Wszystkie prezentacje są wrzucone na pl.pycon.org w "Materiałach". Linkujemy tam też wrażenia uczestników.
Fajnie że się już pojawiły. Pytanie: one tam będą chwilowo czy na stałe? Bo jeśli na stałe, to chętnie dorzucę linki... Tylko bardziej wierzyłbym w stałość URLi w stylu /pycon-pl/2009/cośtam niż /pycon-pl/cośtam ;-)
Co do wrażeń: widziałem jeszcze:
krótką notkę u Jarka Zgody,
wpis na badurowie.org.
Materiały będą na stałe a kwestię linków uregulujemy w najbliższym czasie :)
To smutna prawda, że na uczelniach nadal uczą Pacala. Mnie na szczęście też uczyli Ocamla, co bardzo dobrze wpłyneło na jakość mojego Pythonowego (i nie tylko) kodu.
A jakże świat by był piękny, gdyby uczyli Pythona...