27 maja 2007

JavaTechConf 2007 w Krakowie za nami

Gdyby mnie zapytać o krótkie streszczenie konferencji JavaTechConf 2007 natychmiast odpowiedziałbym, że była ona najlepszą konferencją w jakiej kiedykolwiek uczestniczyłem. Organizacja konferencji była na najwyższym poziomie i poza brakiem klimatyzacji na sali wszystko było niezwykle starannie poukładane. Mnóstwo ludzi - naliczyłem około 150 osób - tworzyło niesamowitą atmosferę, która mimo wysokich temperatur na zewnątrz i braku klimatyzacji, wszystkim pozwoliła na dobrą zabawę. Najbardziej wartościowa w konferencji była możliwość spotkania osób, które znane mi były od dawna z pl.comp.lang.java, czy jdn.pl, ale nigdy nie miałem okazji ich poznać osobiście. Uczestnictwo w konferencji dało wspaniałą okazję do nadrobienia zaległości.

Wszystko zaczęło się od telefonu od Radka Holewy (jednego z organizatorów imprezy) w piątek około 18:00, abym zapomniał o pociągu i przybył samochodem, najlepiej już w piątek. Jako, że konferencja rozpoczynała się o 9:00 moim wystąpieniem o Apache Geronimo wcale mnie to nie zdziwiło. Zmartwiła mnie jednak myśl o 3,5-godzinnej trasie do Krakowa. Krótki telefon do znajomych w Krakowie i wiedziałem, że muszę wyruszać około 5 nad ranem, aby zdążyć na 9:00. Udało się! O 8:50 byłem w Krakowie na Akademii. Po krótkiej zapowiedzi Piotra Maja już prezentowałem Geronimo. Kilka dowcipów zrobiło swoje i braki merytoryczne wydaje się, że nie zostały zauważone (poza wyjątkami jakimi raczył mnie Geronimo, co zostało utrwalone na poniższym zdjęciu). Mogąc przemawiać na sali ze 150 uczestnikami było niesamowitym przeżyciem, a udział członków Warszawa JUG pomógł mi przetrwać stres. Dzięki Panowie!


Po moim wystąpieniu pojawił się na scenie Tomasz Korzeniowski. Bardzo podobały mi się jego slajdy i technika prezentacji. Sprawnie przechodził z jednego wzoru matematycznego do drugiego tak, że po chwili nie miałem pewności, czy spociłem się ze względu na temperaturę, czy próbując zrozumieć tok rozumowania Tomka. Prezentacja wydawała się, że będzie o Lucene i była, ale u mnie pozostał niedosyt. Chciałoby się więcej, ale niestety 1,5 godziny mija szybko, kiedy na scenie jest Tomek. Przez swoją zawartość akademicką (dotykającą matematyki wyższej) prezentacja Tomka była wyjątkowa jak na Java TechConf.

Kolejny prelegent Roman Swoszowski postanowił zaprezentować RIA w wykonaniu Flex 2.0. Uczestniczyłem w spotkaniu o Flex 2.0 podczas spotkania Warszawa JUG w wykonaniu Bartka Soina, więc nie ukrywam, że już na początku skreśliłem prezentację z listy interesujących. I mimo, że Roman bardzo się starał, to nie wygrał z moim nastawieniem do Flex'a i...narastającym głodem. Dodając do tego temperaturę, byłem na wykończeniu.

Z wielką ulgą przywitałem przerwę. W gronie około 20-osobowym poszliśmy do pobliskiej pizzerni. I to nie z powodu jedzenia (zamówiony makaron był generalnie do kitu), ale ze względu na dyskusje, jakie się wywiązały przy stole, przerwa była nadwyraz treściwa. Okazało się, że zainteresowanie podobną konferencją w Warszawie jest wystarczające i 3 osoby od razu przystały na pomysł, aby wystąpić na niej jako prelegenci. Jacek, Andrzej i bodajże Tomek - wielkie dzięki! To Wasza decyzja uwieńczyła moje zmagania z pomysłem o zorganizowaniu podobnej konferencji w Warszawie na MIMUW. Do tego komentarz Piotra Maja, że mając salę i prelegentów mamy wszystko i stało się - na forum Warszawa JUG ogłosiłem oficjalnie o przygotowaniach do I Warszawskiej Konferencji Informatycznej. Jest to tymczasowa nazwa do czasu zarejestrowania domeny, kiedy to będę mógł ogłosić jej faktyczną nazwę.

Kolejna prezentacja była poprowadzona przez gościa z Czech - Romana Strobla. Osoba, która znana jest ze swojego zapału promocji NetBeans IDE, więc wiedząc o jego warsztacie prezentacyjnym i wiedzy o NetBeans z wielkim zainteresowaniem przysłuchiwałem się co ma na ten temat do powiedzenia. Gość był niesamowity! Po raz pierwszy zobaczyłem tworzenie i uruchomienie aplikacji mobilnej i wsparciu NetBeans IDE w tym zakresie. Jako, że Roman pracował z wersją rozwojową NetBeans IDE 6.0M9 nie obyło się bez wyjatków, ale ich pojawienie nie mogło zepsuć wspaniałej atmosfery prezentacji. Co mnie zdumiło, to ilość pytań. Biorąc pod uwagę, że prezentacja prowadzona była po angielsku nie spodziewałem się żadnych pytań, albo co najwyżej kilku, a tu nie tylko, że były, to jeszcze było ich najwięcej ze wszystkich prezentacji razem wziętych. Ciekawe czy sprawiła to tematyka prezentacji czy dodatkowa trudność w zadawaniu pytań po angielsku (takie malutkie wyzwanie poobiednie).

Z wielkim entuzjazmem przywitałem kolejną prezentację o EJB 3.0 w wykonaniu członka grupy Equilibrium - Janusza Marchewy. Grupa Equilibrium bardzo uaktywniła się ostatnio na jdn.pl i chciałem zobaczyć ich na żywo. Temat EJB 3.0 bardzo mnie interesuje i poświęciłem mu trochę czasu ostatnio, więc nie tylko, że mogłem utrwalić wiedzę o EJB 3.0, ale również poznać członka grupy w akcji. Możliwość wysłuchania prezentacji Janusza upewniła mnie, że goście są doświadczeni, ale sposób w jaki dochodzą do wiedzy przedstawiony (nawet napisałbym rekomendowany) przez Janusza zdecydowanie odbiega od mojego.
Przede wszystkim, zdaniem Janusza, poznawanie techologii tak obszernych jak JPA, czy nawet EJB 3.0, powinno być realizowane przez jedną osobę, gdyż większa ilość osób to jedynie same problemy komunikacyjne, jak i bardzo prawdopodobne borykanie się kilku osób z tymi samymi problemami zrozumienia tematyki. Według mnie, rozwiązaniem dla problemów komunikacyjnych nie jest zmniejszenie osób, ale właśnie ich zwiększenie i właściwe nimi koordynowanie. 15-minutowe spotkania na początek i koniec dnia zrobiłoby swoje i znacząco skróciłoby czas przyswajania technologii.
Kolejnym stwierdzeniem, z którym nie mogłem się zgodzić, było sposób poznawania technologii - praktyczne vs teoretyczne. Praktyczne polega na poznawaniu technologii podczas projektu, podczas gdy teoretyczne polega na lekturze specyfikacji, książek, artykułów, itp. W/g mnie wszystko zależy od dostępnego czasu, w którym projekt korzystający z danej technologii ma się pojawić i jedyna reguła to chęć samych uczestników do podnoszenia własnych kwalifikacji. Uczenie się technologii w praktyce niesie ze sobą ryzyko niewłaściwego stosowania jej i możliwego "położenia" projektu, jak i samego (potencjalnie) niewłaściwego wyboru technologii na rzecz innej. Drugi sposób - uczenie się teoretycznie - daje możliwość ewaluacji i wstępnego zebrania wiedzy zanim możnaby wykorzystać ją praktycznie. Oba mają rację bytu, jednak ja skłaniam się ku drugiemu, gdzie grupa osób poświęca pewien czas na rozpoznanie technologii i przedstawienia jej szerszemu gronu. Najlepiej, jeśli poznawanie technologii jest związane z 15-minutowymi, codziennymi spotkaniami, na których prezentowanoby dotychczasowy zakres wiedzy. Zebrane pytania pomogłyby wypełnić braki merytoryczne - pomóc zaplanować kolejne tematy do rozpoznania - lub pozwolić na szerzenie wiedzy od pierwszego dnia.
Co mnie postawiło na nogi to był komentarz Janusza dotyczący działania funkcji EntityManager.merge. Kolejny raz usłyszałem stwierdzenie, że funkcja odpowiada za zapisanie zmian w bazie danych podczas, gdy jej jedyne zadanie to związanie encji odłączonej z kontekstem trwałości (ang. persistence context). Jako, że najczęściej użycie funkcji merge związane jest z właśnie kończącą się transakcją, więc mylnie można założyć, że merge zapisuje dane do bazy danych. Tak jednak nie jest. Zapis do bazy danych następuje wyłącznie podczas zakończenia transakcji (zawsze), albo jako wynik wywołania funkcji flush, persist, co niekonieczne musi powodować natychmiastowy zapis, gdyż dostawca JPA może poczekać na moment zakończenia transakcji.

Na koniec konferencji wystąpił Piotr Maj z prezentacją o OSGi. Nie spodziewałem się, że wstęp do OSGi może mnie czegoś nauczyć, ale sposób w jaki Piotr zaprezentował OSGi był wyjątkowy. Piotr skorzystał z pomysłu, aby technologie przedstawiać z IDE, a nie PowerPoint'em, czy innym narzędziem do prezentacji. Pojawiły się pakunki Piotra.Szarmanckiego i Pani.Kokietki i po kilku uderzeniach klawiszy już byliśmy świadkami zarywania w wykonaniu Piotra Sz (i tym samym Piotr M. poderwał publikę). Bardzo zwięzła i konkretna prezentacja. W pewnym momencie Piotr Sz. i Pani K. nie chciały ze zobą rozmawiać i można było zauważyć lekkie zniecierpliwienie Piotra M. poszukującego rozwiązania w panelach konfiguracyjnych pakunków, ale mimo późnych godzin i temperatury publika pokazała, że nie śpi i padło rozwiązanie z sali. Wspaniały przykład na zainteresowanie publiki tematem i tak go poprowadzenia, że w razie wyjątkowych sytuacji można na nią liczyć. Sposób prowadzenia prezentacji przez Piotra był zawsze moim ulubionym i planuję, że prezentacje podczas konferencji w Warszawie będą wszystkie prowadzone w tym stylu.

O 19:00 było po wszystkim i zaczęto przygotowania do imprezy, która miała odbyć się w pobliskim pubie. Niestety musiałem wracać do Warszawy, więc nie udało mi się uczestniczyć w niej.

Nie ma co tu pisać więcej - na tej konferencji trzeba było być. Chciałbym, aby tego typu konferencji było więcej w Polsce i wierzę, że nie będę musiał długo czekać na kolejną.

Specjalne pozdrowienia dla Łukasza (ActiveY), który obiecał mi srogi komentarz nt. moich ostatnich wypowiedzi nt. SOA i SCA. Czmychnąłem naprędce, aby mnie nie zganił publicznie.

Podczas konferencji miałem również okazję poznać Piotra Kobzdę, który w moim przekonaniu jest najlepszym gościem od typów generycznych na pl.comp.lag.java, żeby nie napisać w Polsce. Każde pytanie dotyczące tego zagadnienia nie pozostaje bez odpowiedzi Piotra, więc możliwość poznania go była dla mnie wielką przyjemnością. Przekonał mnie do zastosowania ASM vs cglib + bcel i planuję, że niedługo pojawi się coś nt. temat w moim Notatniku. cglib jest stosowany w wielu projektach otwartych do tworzenia rozszerzeń klas dynamicznie (proxy) i już miałem się
jemu przyjrzeć, kiedy Piotr skutecznie odradził mi to i przekonał do ASM, który z niewiadomych powodów dla Piotra jest traktowany niewłaściwie do możliwości. Dzięki Piotr za krótkie acz inspirujące wprowadzenie do manipulacji bajtkodu w wykonaniu ASM!

4 komentarze:

  1. Jacku,

    Dziękuję za zwrócenie uwagi na niewłaściwe postrzeganie działania metody merge(). W ciągu całej mojej pracy z JPA nie zetknąłem się z przypadkiem, który odbiegałby od takiego uproszczonego postrzegania tej metody, ale to niewątpliwie cenna informacja na przyszłość.

    Muszę też zaznaczyć, że przedstawiony przeze mnie punkt widzenia na poznawanie nowych technologii nie stanowi naszej rekomendacji, a jedynie jest efektem dotychczasowych doświadczeń. Każdy teraz w zaciszu własnego zespołu może zastanowić się, które podejście ma szansę sprawdzić się lepiej.

    Miło było Cię poznać osobiście, dzięki za fajną prelekcję i do zobaczenia, na pewno znajdą się jeszcze okazje do wspólnych dyskusji ;)

    OdpowiedzUsuń
  2. Poznawanie technologii jedynie w praktyce powoduje sytuację, w której często uczymy się na własnych błędach. Nie jest to zatem zbyt efektywna metoda.

    Z drugiej strony podejście typowo akademickie i opieranie się przede wszystkim na materiałach, książkach i specyfikacjach oddala często od rzeczywistych problemów.

    Uważam, że publikacje powinny stanowić wyjście do poszukiwania rozwiązań w realnych projektach.

    Przecież gdyby ktoś poznawał JPA tylko na podstawie Twojego Jacku bloga, to mógłby stwierdzić, że należy go stosować wszędzie. I mielibyśmy aplikacje nie sprawdzone pod kątem wydajności (narzut obiektowości w stosunku do JDBC).

    Dlatego i teoria i praktyka.

    Zgadzam się natomiast z Tobą, że dyskusja wielu osób nad tą samą technologią jest bardzo cenna i nie należy stosować ograniczeń co do liczby osób ją poznających.

    OdpowiedzUsuń
  3. Uwaga może offtopikowa - tranSakcja
    słowa tranZakcja nie ma w języku polskim. Nikt nie lubi takich uwag :P ale jak już próbujemy wszystko tłumaczyć (np. 'Kontekst trwałości' brzmi mi bardzo abstrakcyjnie, ale persistence context już normalnie :) ), to trzeba by się starać poprawnie.

    Pozdrawiam

    OdpowiedzUsuń
  4. Re: Janusz

    A ja nie byłbym sobą, gdybym nie podziękował Tobie za zgrabne i przemyślane przedstawienie Twoich doświadczeń z JPA. Czuję, że wiele osób zyskało po takiej prezentacji (mimo mojego niezgodzenia się z postrzeganiem problemu nauki nowych technologii).
    Co do okazji spotkania, to będzie takowa - mam nadzieję, że pojawisz się na konferencji w Warszawie. Wierzę, że już niedługo...w czerwcu.

    Re: Marcin

    Raczej nie doczekamy się jedynego właściwego podejścia do nauki nowych technologii. Zawsze będzie to wypadkowa naszych wcześniejszych doświadczeń i nastroju i wielu innych czynników. Podoba mi się jednak, że zwróciłeś uwagę na publikacje. To faktycznie jest cenne - móc zaprezentować swój punkt widzenia i oczekiwać oklasków bądź...pomidorów ;-)

    Re: kretes

    Uwaga jak najbardziej słuszna i "ontopikowa". Właśnie zostałem zganiony przez małżonkę, która zauważyła lapsus językowy. Przyznaję, że nie jest to pierwszy raz, kiedy go popełniłem i nie pierwszy raz słyszę uwagę nt temat. Nawet powiem więcej, kiedy pisałem słowo transakcja myślałem o tym przez moment i...skończyłem na tranzakcja. Postaram się pamiętać.

    Pozdrowienia ze słonecznego Kijowa!

    OdpowiedzUsuń