To było moje pierwsze, deklarowane wystąpienie na deskach grupy Warszawa JUG, w którym kładłem nacisk na materiały i techniki poznawania nowego obszaru niż na samym obszarze. Programowanie funkcyjne i Scala były jedynie nośnikami, a nie meritum sprawy. I właśnie w chwili, kiedy ruszałem na spotkanie, na Ursynowie zerwało chmurę. Lało tak mocno, jakby ktoś się zawziął i postanowił nie wypuścić mnie z klatki (dosłownie i w przenośni). Istne oberwanie chmury. Nie zapowiadało się dobrze.
Miałem niemałe obawy, czy formuła mojego wystąpienia wpasuje się w oczekiwania uczestników. Z jednej strony utożsamiany jestem z tematami technicznymi (powstrzymam się od poprzedzenia ich "wysoko"), a z drugiej strony wiele osób pyta "Czego i jak się uczyć?". Postanowiłem spróbować swoich sił w prezentacji moich sposobów na efektywną naukę.
Przed spotkaniem miałem możliwość zamienić słowo z kilkoma, wcześniej nieznanymi mi osobami, które tylko wzmogły we mnie obawy o tematyce mojej prezentacji - bardziej zależało im na samej nauce Scali niż na metodach, które mogłyby w tym pomóc. I coś mi mówi, że niepotrzebnie się wsłuchiwałem w głos tłu...gawie...uczestników, bo tylko przysporzyło mi więcej nerwów niż pewności siebie. Bywa.
I zaczęło się!
Najpierw wystąpienie sponsora spotkania - firmy Decerto (również znani jako "Systemy informatyczne dla biznesu") - w osobie Tomka Kucharskiego. Dzięki Tomek za miłe słowa o mojej osobie i chwilę, w której mogłem ochłonąć (z komentarzy), ale tytuły, którymi mnie "obrzuciłeś", jeszcze bardziej wzbudziły we mnie niepokój.
Liczba uczestników i komentarze nie pozostawiały złudzeń, że musi być technicznie.
Nie było. A przynajmniej nie w mierze, która mogłaby zadośćuczynić oczekiwaniom publiczności. Bywa. Prezentacja na SlideShare a nagranie niebawem. Sugeruję obserwować forum Warszawa JUG.
Dziękuję Agnieszce, Michałowi, Jankowi, Stefanowi, Piotrowi, Julkowi, Pawłowi i pozostałym uczestnikom za podjęcie się trudu uatrakcyjnienia spotkania przez udział w dyskusjach podczas niego, czy po prostu podejście do mnie, aby przywitać się i zamienić słowo. Uścisk dłoni, bezcenne!(TM) Byłem zaszczycony móc Was gościć na moim spotkaniu i poznać Was wszystkich osobiście.
Komentarze dotyczące mojego wystąpienia znajdziesz na stronie spotkania na Meetupie. Zachęcam do komentowania i wyrażania swoich pozytywnych oraz krytycznych uwag. Niech kolejne, moje wystąpienia publiczne staną się lepsze (czytaj: dopasowane do oczekiwań uczestników, co niekoniecznie oznacza, że faktycznie będą lepsze :-))
Dziękuję wszystkim za udział. Jednocześnie zachęcam do dzielenia się własnym warsztatem poznawczym, abyśmy stali się społecznością, w której rodzą się ciekawe pomysły (zamiast naśladować czy uczyć się innych). Wciąż zdecydowanie "wynalazczości" wśród nas. Wszystko pro publico bono!
p.s. Właśnie wpadłem na ciekawy pomysł prezentacji - "Poznaję Scalę rozwiązując zagadki z Project Euler". Można również pokusić się o uruchomienie prezentacji w stylu kata z pomysłami z Any practical coding dojo/kata ideas? Kto chciałby wziąć udział w takim pomyśle - jako organizator, (współ)prowadzący czy uczestnik? Ciekawym Twojej opinii.
Jacek Laskowski jawnie
Często, ale bynajmniej nie zawsze o Javie, Java EE czy JVM
20 maja 2013
Moje pierwsze kroki w programowaniu funkcyjnym w Scali na 115 spotkaniu Warszawa JUG
Jutro, wtorek, 21.05.2013 o godz. 18:00 w sali 3180 w budynku wydziału MIM UW na Banacha 2 odbędzie się stopiętnaste (115) spotkanie Warszawa Java User Group, na którym przedstawię temat Moje pierwsze kroki w programowaniu funkcyjnym w Scali.
Link do rejestracji i miejsca, w którym można podyskutować o spotkaniu (przed, w trakcie i po) znajduje się na stronie spotkania.
Poniżej rozwinąłem temat mojego wystąpienia, ale uważam, że użycie "moje", "pierwsze kroki" oraz "programowanie funkcyjne w Scali" mówią same za siebie i dalsza lektura to...strata czasu.
Skoro jednak nalegasz...
Kurs "Functional Programming Principles in Scala" na Coursera dobiega końca i przez ostatnie 7 tygodni intensywnie mnie absorbował. Do tego stopnia, że pozwoliłem sobie na stosunkowo regularne zarywanie nocek w poszukiwaniu rozwiązań (!) Bolało.
Po szkoleniu "Scala i programowanie funkcyjne" Grześka Balcerka wiedziałem, że nauka nowego języka Scala i jego połączenia programowania obiektowego z funkcyjnym nie będzie lekka i pewnie dlatego postanowiłem zintensyfikować wysiłki, aby po początkowych trudach, ostatecznie poczuć klimaty nowego języka. Równocześnie uzupełniałem wiedzę lekturą pisanej właśnie książki "Functional Programming in Scala" z Manning. Rzuciłem na moment programowanie funkcyjne w Clojure na rzecz Scali, aby w ten zaowalowany sposób przeprowadzić kilku śmiałków w świat...Clojure (to taki mój "tajny" plan).
Mając pewne doświadczenie z programowaniem funkcyjnym w Clojure i F#, większość problemów nie była trudna intelektualnie, ale nowa składnia oraz niektóre problemy spędzały mi sen z powiek na długie godziny. Najbardziej zaskoczył mnie brak umiejętności przejścia z programowania funkcyjnego w Clojure na idiomatyczny kod w Scali, który łączył elementy programowania funkcyjnego z obiektowym, w którym typy miały niebagatelne znaczenie (na wzór F#, co pomagało). Najpierw trzeba mi było zapomnieć o OO w Javie na rzecz Clojure, a teraz ponownie OO z FP w wykonaniu Scali. Nie było lekko.
Nowy język to nowe konstrukcje, narzędzia, sposób myślenia i pewnie kilka innych rzeczy. Swoje dokonania opisywałem względnie na bieżąco na swoich blogach, a tym razem skorzystałem z okazji, aby przedstawić moje doświadczenia na żywo. Podczas prezentacji chciałbym zademonstrować mój własny warsztat poznawczy Scali (Sublime Text 2, sbt, Scala REPL, git) oraz sposoby rozwiązywania niektórych problemów programistycznych w Scali, które miałem okazję spotkać w kursie na Coursera.
Będzie trochę slajdów. Będzie trochę programowania na żywo. I będzie w końcu kilka spostrzeżeń, którymi chciałbym zachęcić do wymiany doświadczeń między uczestnikami. Nie sądzę, aby brakowało chętnych do poznania języka Scala oraz samego paradygmatu funkcyjnego, więc dyskusji spodziewam się całkiem sporo. Taki mam plan. Przyjdź i pomóż mi go zrealizować!
Link do rejestracji i miejsca, w którym można podyskutować o spotkaniu (przed, w trakcie i po) znajduje się na stronie spotkania.
Poniżej rozwinąłem temat mojego wystąpienia, ale uważam, że użycie "moje", "pierwsze kroki" oraz "programowanie funkcyjne w Scali" mówią same za siebie i dalsza lektura to...strata czasu.
Skoro jednak nalegasz...
Kurs "Functional Programming Principles in Scala" na Coursera dobiega końca i przez ostatnie 7 tygodni intensywnie mnie absorbował. Do tego stopnia, że pozwoliłem sobie na stosunkowo regularne zarywanie nocek w poszukiwaniu rozwiązań (!) Bolało.
Po szkoleniu "Scala i programowanie funkcyjne" Grześka Balcerka wiedziałem, że nauka nowego języka Scala i jego połączenia programowania obiektowego z funkcyjnym nie będzie lekka i pewnie dlatego postanowiłem zintensyfikować wysiłki, aby po początkowych trudach, ostatecznie poczuć klimaty nowego języka. Równocześnie uzupełniałem wiedzę lekturą pisanej właśnie książki "Functional Programming in Scala" z Manning. Rzuciłem na moment programowanie funkcyjne w Clojure na rzecz Scali, aby w ten zaowalowany sposób przeprowadzić kilku śmiałków w świat...Clojure (to taki mój "tajny" plan).
Mając pewne doświadczenie z programowaniem funkcyjnym w Clojure i F#, większość problemów nie była trudna intelektualnie, ale nowa składnia oraz niektóre problemy spędzały mi sen z powiek na długie godziny. Najbardziej zaskoczył mnie brak umiejętności przejścia z programowania funkcyjnego w Clojure na idiomatyczny kod w Scali, który łączył elementy programowania funkcyjnego z obiektowym, w którym typy miały niebagatelne znaczenie (na wzór F#, co pomagało). Najpierw trzeba mi było zapomnieć o OO w Javie na rzecz Clojure, a teraz ponownie OO z FP w wykonaniu Scali. Nie było lekko.
Nowy język to nowe konstrukcje, narzędzia, sposób myślenia i pewnie kilka innych rzeczy. Swoje dokonania opisywałem względnie na bieżąco na swoich blogach, a tym razem skorzystałem z okazji, aby przedstawić moje doświadczenia na żywo. Podczas prezentacji chciałbym zademonstrować mój własny warsztat poznawczy Scali (Sublime Text 2, sbt, Scala REPL, git) oraz sposoby rozwiązywania niektórych problemów programistycznych w Scali, które miałem okazję spotkać w kursie na Coursera.
Będzie trochę slajdów. Będzie trochę programowania na żywo. I będzie w końcu kilka spostrzeżeń, którymi chciałbym zachęcić do wymiany doświadczeń między uczestnikami. Nie sądzę, aby brakowało chętnych do poznania języka Scala oraz samego paradygmatu funkcyjnego, więc dyskusji spodziewam się całkiem sporo. Taki mam plan. Przyjdź i pomóż mi go zrealizować!
16 maja 2013
Wokół Atmosphere Conference w Poznaniu

W drodze do Poznania
Moją konferencyjną przygodę zacząłem od wyjazdu pociągiem o 17:55 do Poznania. Pustki w pociągu były przerażające. Zająłem całkowicie wolny przedział, co z jednej strony cieszy, ale biorąc pod uwagę, że przecież nie o to chodzi w funkcjonowaniu PKP, zmartwiłem się. Czyżby tak niewiele osób korzystało z tego środka lokomocji? Dlaczego? Pogoda jakby wymarzona na przejazd koleją. Najwyraźniej niekoniecznie.
Do mojego przedziału wszedł inny mężczyzna.
Pociąg ruszył bez opóźnień, co wprowadziło mnie w jeszcze bardziej pozytywnym nastrój. Jak ja lubię podróżować koleją! Jedynie niektóre wiadomości na temat jej stanu próbują zepsuć mi dobrą opinię na jej temat. Wciąż żyję, a to pozwala mi wciąż promować tę formę podróżowania - kiedykolwiek i gdziekolwiek w Polsce (oczywiście przy założeniu, że korzystam z InterCity - wybacz taka moja przypadłość "hrabioska"). W pociągu mam (zwykle) zagwarantowane - prąd i możliwość kupienia biletu w pociągu oraz czas na własne sprawy. Jedzenie też niczego sobie - narzekać nie mogę.
Moją uwagę zwróciło 26 wat przy kontakcie. Przywykłem do 230 V, więc nie omieszkałem wspomnieć o tym na głos. I tu zaczyna się przygoda z panem z przedziału.
Uwaga na głos (uprzejmie, ale z wrodzoną, dziecięcą ciekawością) zwróciła uwagę pana z przedziału, który okazała się być…około piędziesięcioletnim automatykiem z okolic Szczecina, któremu przyszło obecnie studiować sztukę w Warszawie dla zabawy! To nazywa się zapał i umiejętność wyboru. Ciekawy gość, bo w poszukiwaniu pracy rzuca go po Europie - 5 lat w UK, kilka wcześniej w Holandi, trochę w Polsce (wtedy zaczął studia w Warszawie), aby ponownie od czwartku rozpocząć pracę w Rotterdamie (Holandia). Studiowanie sztuki nie ma jakiegokolwiek celu zarobkowego, a jedynie spełnienie dawnych marzeń. Niestety, przy pracy w Holandii może to być niezwykle trudne zadanie czasowo. Skoro jednak dał radę pracować przez 5 lat od 17 do 6 rano przez 4 dni w tygodniu, to i to powinno się udać (przy trochę większym niż przeciętnym zaparciu). Czego nie robi się dla własnego, dobrego samopoczucia, nieprawdaż?!
Pogawędziliśmy dłuższą chwilę, aż do Konina, gdzie rozrzuciło nas po pociągu, bo przedział okazał się być zarezerwowany przez grupę 6 osób jadących do Niemiec. Bywa. Rodząca się znajomość została zduszona w zarodku. To był faktycznie wartościowy gość!
Żal na bok i wróciłem do mojej przygody z nauką języka Scala na Courserze. To już ostatni tydzień kursu, więc czasu niewiele, a trzeba odsłuchać nagrań, pogłówkować i zgłosić rozwiązanie zadania, który okazuje się być grą! To lubię! Gram, a wszyscy nazywają to nauką. Czegóż można więcej sobie życzyć?!
Przy okazji odsłuchiwania nagrań z kursu, uczę się (przyzwyczajam się do) posługiwania iPadem, który traktuję jako platforma multimedialna - odsłuchiwanie nagrań prezentacji z Coursera i YouTube oraz czytnik książek. Spadek od firmy, jeśli zastanawiasz się skąd pomysł na iPada zamiast tableta androidowego. Spisuje się i zaczynam dostrzegać zalety posiadania go. Zacząłem również traktować go jako zeszyt i wrażenia z prezentacji na żywo, w których uczestniczę zapisuję właśnie w notatniku na iPadzie, aby później trafiły do mojego bloga-Notatnika tutaj. Kolejny raz potwierdza się reguła, że wielu rzeczy należy się nauczyć, aby używać z ich przeznaczeniem, co początkowo nie musi być oczywiste (pomijam granie w gry, czy przeglądanie stron webowych, które są oczywistą oczywistością dla wielu, jeśli nie dla wszystkich - to zbyt banalne i za mało uzasadnione, aby kupować iPada za kilka tysięcy). Do Poznania przejrzałem wszystkie prezentacje z ostatniego modułu szkoleniowego Week 7: Lazy Evaluation. Cudnie!
Niestety, przy ogólnym, długotrwałym zmęczeniu (przez ślęczenie przed kompem całymi godzinami, wliczając to noc), skupienie się na oglądaniu nagrań (przy jadącym równomiernie pociągu i panującej ciszy wokoło) usypia i ledwo wytrzymywałem, aby nie klapnąć. Kiedy pojawił się Poznań Główny, trochę zdębiałem, prawie zamroczony walką ze snem i chęcią dotrwania do końca nagrań. Będę je i tak musiał odsłuchać ponownie, ale zgrubnie wiem, co Odersky zamierzał przedstawić i idea strumieni (Streams) w Scali kręci mnie! Pierwszy kontakt z tym typem opóźnionego wyliczania wartości miałem już przy lekturze F#… oraz Functional Programming in Scala...
Zmęczenie wygrało i na spotkanie prelegentów nie dotarłem. Padłem ze zmęczenia. Organizatorzy wybaczcie! Wierzę, że wynagrodziłem Wam moją nieobecność prezentacją na konferencji Atmosphere. Dziękuję za zaproszenie! Było warto.
11:05 - 11:45 Scaling Agile@Allegro Krzysztof Dąbrowski Allegro Group
Na prezentację otwierającą konferencję wybrałem Scaling Agile@Allegro Krzysztofa Dąbrowskiego z Allegro Group. Wybrałem ją z pewnymi obawami, bo raz, że temat niespecjalnie dla mnie ciekawy, a dwa, że na stronie można było znaleźć "Abstract will be published soon". Co mnie jednak najbardziej intrygowało w tej prezentacji to osoba prezentera - w końcu nie codziennie ogląda się "CIO of Allegro Group and management board member responsible for IT development and operations in the central and eastern Europe.". Od osób na stanowiskach zarządczych oczekuję elokwencji, aparycji i wiedzy. Chciałem zobaczyć na własne oczy, jak bardzo Allegro stawia na określenie swojego wizerunku na konferencjach. Zawsze wyobrażałem sobie, że skoro CIO of Allegro Group występuje, to przed wystąpieniem przeszedł cały szereg szkoleń przygotowawczych, które w połączeniu z praktyką zarządzania ludźmi będą pozytywnie oddziaływały na słuchaczy.
Raspberry Pi
Przy wejściu do budynku konferencyjnego spotkała mnie miła niespodzianka - każdy uczestnik konferencji otrzymuje...Raspberry Pi! To była bardzo miła niespodzianka. Niestety, na prezent muszę trochę poczekać, bo uczestników było więcej niż przewidywano (brawa!) i sprzętu po prostu nie starczyło (mniej braw).
Back to Krzysiek
A wracając do wystąpienia Krzyśka. Zaoszczędzę Krzyśkowi męk "wsłuchiwania" się w odgłosy z internetowego eteru - było przeciętnie. Może należałoby obniżyć oczekiwania, aby ostateczna ocena była wyższa?! W końcu ocena końcowa jest subiektywna i wyznaczana jest również przez pryzmat oczekiwań. Niższe oczekiwania być może dałyby wyższe noty, a tak…zacząłem przyglądać się wystrojowi wnętrz.
Otwarta przestrzeń i ciekawy wystrój "wnętrz" sprawiała wrażenie miejsca na hack-a-thon. Były krzesła (jak się później dowiedziałem ze względu na ich mniejsze wymaganie odnośnie miejsca) oraz pufy do siedzenia, co w połączeniu z monitorami w kilku miejscach sali wywarło na mnie bardzo pozytywne wrażenie. Podobało mi się. Duże brawa dla organizatorów za pomysł.
Jako, że miejsce wystąpienia nie było osłonięte z jednej strony, hałas z przestrzeni kulinarno-społecznej skutecznie zakłócał wsłuchiwanie się w wystąpienie. Z pewnością należałoby to wyeliminować przy kolejnej edycji.
Słówko z Brianem McCallister'em
Zaraz po wystąpieniu Krzyśka rozpocząłem poszukiwanie Brian'a McCallister'a. Nie mogłem doczekać się, aby zamienić z nim słowo. Akurat w tym momencie miał nagrywany wywiad, więc przestępując z nogi na nogę (nie?)cierpliwie czekałem.
I się doczekałem!
Brian okazał się być bardzo przenikliwym rozmówcą i nad wyraz sceptycznym. Bardzo schłodził moje zapędy do zmiany świata imperatywno-obiektowego na funkcyjny. Na moje zapytania o jego postrzeganie programowania funkcyjnego z Clojure i Scalą, prawie nie ziewnął ze znudzenia. Nie porwało go najwyraźniej, co, w połączeniu z pewną moją nieśmiałością, można zrozumieć. Kiedy dorzuciłem do tego pomysł wdrożenia kilku konstrukcji funkcyjnych do Apache TomEE, skwitował to stonowanym "A po co?" Powiedział to w takim stylu, z takim spokojem i opanowaniem, jakby mnie ktoś oblał najpierw zimną, a później gorącą wodą (w granicach rozsądku) i zostawił mnie mokrego - zdębiałem i może nawet przez moment zastygłem z otwartą buzią. Spodziewałem się (kolejny raz te oczekiwania!), że porwę go w wir dyskusji na temat wyższości jednego podejścia (obiektowego) do paradygmatu funkcyjnego, a tu…flauta. Zero jakiegokolwiek powiewu! Nawet takiego najdrobniejszego.
I tak sobie rozmawialiśmy na temat jego zainteresowań, zatrudnienia, o kilku wspólnych znajomych, o niezwykle przyjemnej atmosferze pracy w Facebooku, którą możnaby przyrównać do sławetnych czasów w Google, gdzie wszystko jest dane programiście, jeśli tylko może być bardziej produktywny bez konieczności przekonywania nieprzekonanych i nietechnicznych o potrzebach przekonanych i technicznych. Dodając do tego atmosferę "zajeb…tości" pracowników Facebooka i mamy pracodawcę marzenie - dla każdego programisty. Niestety, Brian się tam nie wybiera, bo wiązałoby się to z przenosinami, a tego nie przyjmuje do wiadomości. Ja czekam cierpliwie na otwarcie biura Facebooka w Polsce!
Rozmowa mogłaby trwać wieki i coś mi mówi, że wiele z moich pomysłów, które zapewne i tak nigdy nie dojdą do skutku, przy jego opanowaniu z marszu poszłoby do kosza. A tak pozostaje mi wierzyć, że kiedyś coś stworzę technicznie - mimo, że wszystkie znaki na ziemi i niebie mówią inaczej.
12:55 - 13:45 Lunch
Lunch smaczny. Udało mi się dołączyć do grona dwóch, nieznanych mi wcześniej panów, aby po chwili naszych ożywionych rozmów zwiększyć liczebność do 6. W takiej atmosferze o jedzeniu nie było co marzyć, bo się człowiek angażuje w dyskusje i zapomina przy tym o doświadczaniu przyjemności jedzenia. Makaron z czosnkiem pozostawił jednak miłe wspomnienia.
Do mojego wystąpienia pozostało niewiele ponad godzinę, więc pożegnałem rozmówców i udałem się na bok, aby w zadumie przygotowywać się psychicznie do wydarzenia. Musiałem ochłonąć, szczególnie, że wystąpienie planowałem poprowadzić po angielsku, a ożywione rozmowy prowadziłem po polsku, co sądziłem, że może mieć znaczenie na ostateczny wynik. Trzeba było spauzować.
14:45 - 15:35 Ja(cek Laskowski) z Functional web development with Git(Hub), Heroku and Clojure
"Experience a web application development with git as a source control management tool (on GitHub) as well as a deployment tool to a cloud (Heroku) and Clojure as a functional programming language." było zajawką mojego wystąpienia. I kto by pomyślał, że Clojure będzie najbardziej oczekiwanym obszarem mojego wystąpienia?! Ja do tej grupy niestety nie należałem.
Jak to w takich sytuacjach bywa, po wcześniejszym uśpieniu laptopa, okazało się, że niekontrolowane powtykanie dodatkowych urządzeń - odbiornika USB do pilota oraz projektora - zawiesiło system i wymusiło konieczność restartu (!) Masakra. Zawsze tak jest.
W trakcie restartu na sali pojawił się Andrzej Targosz z pytaniem o język wykładowy. Odpowiedziałem dyplomatycznie, że planowałem angielski, ale jeśli na sali będą wyłącznie sami polacy, przełączę się na polski. I w tym momencie nadszedł Paul Hammond, a później jeszcze dołączył do nas Muharem Hrnjadovic z Rackspace i pozostaliśmy przy angielskim.
Do prezentacji wrzuciłem kilka nowych sztuczek, które zebrałem podczas ostatniego spotkania Warszawa JUG z panami +Jakub Nabrdalik, +Paweł Cesar Sanjuan Szklarz oraz Paweł Sidoryk. Pokazali mi, co powinienem użyć w mojej prezentacji - strona wizualna i werbalna - oraz wręcz przeciwnie - czego nie powinienem.
Najbardziej zapadł mi w głowie Kuba Nabrdalik, który wyróżniał się w tym trzyosobowym tłumie prezenterskim (wrażenia ze spotkania niebawem). On w zasadzie wykreował moje zachowania podczas mojego wystąpienia na Atmosphere. Dzięki Kuba! Nie wyobrażasz sobie jak Twoje zachowanie inicjowało wyobrażenia dla mojego wystąpienia na Atmosphere. Jak tak dalej pójdzie, będę musiał poprosić Cię o dalsze rady prezenterskie, tak dobrze Ci idzie. Gratulacje (wykładniczego) rozwoju w trudnej dziedzinie prezenterskiej!
Po primo, baczniej przyjrzałem się stronie wizualnej slajdów. Nie mają one być podporą wystąpienia - czarnobiałą serią treści, którą trzeba czytać i czytać, aby nic nie wyciągnąć dla siebie, ale kolorowymi kartkami komiksu, który ma zawierać wyłącznie tyle treści, ile należałoby zapisać w swoim notatniku oraz, albo przede wszystkim,…bawić! Duża porcja humoru jeszcze nikomu nie zaszkodziła, a nie miejmy złudzeń - co można zrobić w 50 minut?! Później po prezentacji dowiedziałem się, że wiele :-)
Na pewno prezentacja ma przywoływać pozytywne skojarzenia i pozostawiać słuchacza w dobrym nastroju. Wciąż uważam, że moje slajdy są za mało różnobarwne i niewiele w nich zdjęć i rysunków, ale już nabrałem przekonania, że powinienem ich mieć więcej (krok ku doskonałości prezenterskiej). Kolejne, moje wystąpienia - Scala na Warszawa JUG oraz Clojure i Scala na JEEConf pozwolą mi na dalsze usprawnienie warsztatu praktycznie.
Idąc śladami Jakuba Kubryńskiego (współorganizatora konferencji Confitura 2013) dobrałem inną czcionkę z Google Fonts. Kiedy zobaczyłem tą wybraną nie sposób było mi się jej oprzeć i natychmiast użyłem jej w mojej prezentacji w Keynote (przypominam, że pracuję na MacOS X). Efekt bombowy, a z zielenią w tle podwójnie bombowy! Byłem z siebie zadowolony ponad miarę i chociaż ten aspekt zauroczenia publiczności miałem z głowy. Wiedziałem, że jeśli gdziekolwiek polegnę, to na utrzymaniu czasu lub angielskim. Obie rzeczy do opanowania, więc niepokój nie był specjalnie duży.
Moja prezentacja nie miała za zadania wprowadzić słuchaczy do świata programowania funkcyjnego z Clojure czy stanowić platformę edukacyjną do git'a, GitHuba czy Heroku. Postawiłem przed sobą cel prezentacji jako podsumowanie dotychczasowych dokonań poznawczych w aspekcie użycia ich trzech do zbudowania aplikacji webowej, która odbiegała architektonicznie od dotychczasowego modelu Java EE. Jakoś tak przyszło mi związać się z GitHub, Heroku i Clojure, bez specjalnego wskazania, że są to najlepsze "zabawki" na rynku. Taki miał być przekaz.
Z moich rozmów z uczestnikami wyłoniła się prezentacja niezbyt techniczna (to odpowiada mojemu wyobrażeniu), której część o GitHubie (którego znała prawie cała sala) powinna zostać przeniesiona do części Clojure (którego znało niewielu). Okazało się, że większość z zapytanych osób oczekiwało większego przekazu merytorycznego o Clojure! Mój plan tego nie zakładał, więc nie powinienem być zmartwiony ocenami, ale szkoda, że nie wykorzystałem okazji do promocji tego języka. Bardzo żałuję, że za mało poświęciłem czasu Clojure, który założyłem, że może nie zainteresować wielu, ale w połączeniu z całym środowiskiem - GitHub + Heroku - zachęci kilku śmiałków. Okazało się, że się myliłem i trzeba było więcej o Heroku, a najwięcej o Clojure.
Fajnym podsumowaniem mojego wystąpienia była rozmowa z +Mateusz Harasymczuk, który zwrócił uwagę na ciekawą rzecz - skoro GitHub i Heroku zostały użyte przeze mnie wyłącznie ze względu na bezobsługową pracę (kilka kliknięć i temat z głowy), to tyle samo czasu powinienem poświęcić na ich przedstawienie. Po co rozwodzić się nad czymś, co tego nie wymaga. Samo się broni. To była złota uwaga! Dziękuję Mateusz!
Ku mojemu zaskoczeniu, oczekiwania względem mojej prezentacji oscylowały wokół Clojure i zabrakło dwóch-trzech slajdów z przykładowym kodem źródłowym, który robiłby więcej niż przysłowiowy Hello World. Ciekawą uwagą była również ta odnośnie koloru zielonego jako tła do prezentacji - nigdy więcej! Podobnież jest to kolor źle dopasowujący się do różnych monitorów i przez to słabo wypadający jako tło slajdów. Szczęśliwie mój ulubiony kolor - niebieski - został zaaprobowany przez speca od prezentacji jako możliwy (z ciemnymi - czarnym - lub jasnymi jako preferowanymi). Muszę jeszcze podszlifować angielski i wyrzucić nieśmieszne historyjki, i będzie cacy!
Epilog
Dziękuję organizatorom za umożliwienie mi szlifowania moich umiejętności prezenterskich oraz za wspaniałe prezenty. Poniżej z Andrzejem i modelem promu kosmicznego. W końcu to Atmosphere!
Konferencja Atmosphere była wartościową platformą poznawczą - społecznościowo i prezentersko. Do zobaczenia!
09 maja 2013
Funkcyjny maj na Coursera, Atmosphere Conference, GeeCON, Warszawa JUG oraz JEEConf
Z tygodnia na tydzień zadania w szkoleniu Functional Programming Principles in Scala w serwisie szkoleniowym Coursera stają się boleśnie trudniejsze. Coraz częściej przekraczają moje możliwości intelektualne i cierpi moja dusza (ego) oraz ciało (z powodu przeciągającego się niedostatku snu).
Ale się nie poddaję! Dam radę i ostatnie wyniki są obiecujące - już gwarantują, że za zadanie z tygodnia 6 o anagramach, w którym należy wyznaczyć wszystkie anagramy podanego zdania, otrzymam co najmniej 8,46 na 10 możliwych. Została już tylko jedna funkcja do implementacji i będę w domu. Może nawet wcześniej w łóżku!
Brakuje mi najbardziej, aby z kimś pogadać na temat programowania funkcyjnego w Scali, ale nie odpuszczam również Clojure (i rzadziej F#). Język zaczyna mieć mniejsze znaczenie, bo zależy mi najbardziej na pełnym przyswojeniu myślenia funkcyjnego. Scala, Clojure czy F# to jedynie zestaw słów, którymi mogę wyrazić "zdania" funkcyjne.
I w nadchodzący poniedziałek, 13 maja, pojawię się w Poznaniu na konferencji Atmosphere Conference 2013 z tematem Functional web development with Git(Hub), Heroku and Clojure. Temat niespecjalnie rozwijany od ostatniego mojego wystąpienia z nim podczas łódzkiej konferencji Przyszłość w IT (właśnie przez "wtopienie" ze Scalą na Courserze). Wierzę jednak, że wiedza z alternatywnego języka Scala wzbogaci tę o Clojure, co sprawi, że poziom merytoryczny wystąpienia będzie wysoki. Ciekawym komentarzy po.
Z Poznania udaję się 15 maja do Krakowa na GeeCON 2013, w trakcie którego zamierzam kontynuować mój rozwój w kontekście programowania funkcyjnego. Poza udziałem w kilku prezentacjach o Scali i Clojure, dzięki uprzejmości organizatorów poprowadzę panel dyskusyjny Functional Programming - radical thinking shift and step towards clearer and reliable software. Kiedyś już uczestniczyłem w panelu jako mówca (z twórcą Spring Framework - Rod'em Johnson'em, James'em Strachan'em oraz Ted'em Neward'em w roli moderatora), a teraz przyszło mi się zmierzyć z trudniejszą rolą - moderowaniem panelu z udziałem znawców tematu programowania funkcyjnego. To 17 maja. Liczę na pomoc, bo animowanie dyskusji bez zainteresowania nią wśród uczestników może być kolejnym (majowym) wyzwaniem.
Później na chwilę wracam do Warszawy, aby 21 maja wystąpić na deskach grupy Warszawa JUG z tematem Moje pierwsze kroki w programowaniu funkcyjnym w Scali. Nie widzę go jeszcze opublikowanego na stronie grupy, ale wstępnie mam akceptację grupy organizatorów cyklicznych spotkań, więc spodziewam się ogłoszenia niebawem. Zachęcam do udziału, bo liczę na aktywny udział obu stron - prowadzącego oraz słuchaczy - co powinno wyjść na dobre każdemu. Na pewno pomoże w zrozumieniu chociażby kilku problemów funkcyjnych, z którymi borykałem się podczas kursu Odersky'ego na Coursera, warsztatów Grześka Balcerka oraz lektury Functional Programming in Scala.
A pod koniec tygodnia, 24 i 25 maja, pojawię się w Kijowie na konferencji JEECOnf. Tam zdobędę się na wystąpienie o Clojure (Introduction to web application development in Clojure) i Scali (Introduction to functional programming in Scala). Jednocześnie o obu językach? Tego jeszcze nie było w moim wykonaniu! Nie mogłem odmówić sobie spróbowania, bo okazja do bezpośredniej wymiany doświadczeń nie zdarza się często. Będzie z pewnością bogato merytorycznie, bo w końcu będę mógł podjąć się wyjaśnienia pewnych problemów programistycznych przez pryzmat języków Java, Clojure, a teraz i Scala. Ciekawym, kiedy do mojego repertuaru dołączy F#?!
Do zobaczenia!
Ale się nie poddaję! Dam radę i ostatnie wyniki są obiecujące - już gwarantują, że za zadanie z tygodnia 6 o anagramach, w którym należy wyznaczyć wszystkie anagramy podanego zdania, otrzymam co najmniej 8,46 na 10 możliwych. Została już tylko jedna funkcja do implementacji i będę w domu. Może nawet wcześniej w łóżku!
Brakuje mi najbardziej, aby z kimś pogadać na temat programowania funkcyjnego w Scali, ale nie odpuszczam również Clojure (i rzadziej F#). Język zaczyna mieć mniejsze znaczenie, bo zależy mi najbardziej na pełnym przyswojeniu myślenia funkcyjnego. Scala, Clojure czy F# to jedynie zestaw słów, którymi mogę wyrazić "zdania" funkcyjne.
I w nadchodzący poniedziałek, 13 maja, pojawię się w Poznaniu na konferencji Atmosphere Conference 2013 z tematem Functional web development with Git(Hub), Heroku and Clojure. Temat niespecjalnie rozwijany od ostatniego mojego wystąpienia z nim podczas łódzkiej konferencji Przyszłość w IT (właśnie przez "wtopienie" ze Scalą na Courserze). Wierzę jednak, że wiedza z alternatywnego języka Scala wzbogaci tę o Clojure, co sprawi, że poziom merytoryczny wystąpienia będzie wysoki. Ciekawym komentarzy po.
Z Poznania udaję się 15 maja do Krakowa na GeeCON 2013, w trakcie którego zamierzam kontynuować mój rozwój w kontekście programowania funkcyjnego. Poza udziałem w kilku prezentacjach o Scali i Clojure, dzięki uprzejmości organizatorów poprowadzę panel dyskusyjny Functional Programming - radical thinking shift and step towards clearer and reliable software. Kiedyś już uczestniczyłem w panelu jako mówca (z twórcą Spring Framework - Rod'em Johnson'em, James'em Strachan'em oraz Ted'em Neward'em w roli moderatora), a teraz przyszło mi się zmierzyć z trudniejszą rolą - moderowaniem panelu z udziałem znawców tematu programowania funkcyjnego. To 17 maja. Liczę na pomoc, bo animowanie dyskusji bez zainteresowania nią wśród uczestników może być kolejnym (majowym) wyzwaniem.
Później na chwilę wracam do Warszawy, aby 21 maja wystąpić na deskach grupy Warszawa JUG z tematem Moje pierwsze kroki w programowaniu funkcyjnym w Scali. Nie widzę go jeszcze opublikowanego na stronie grupy, ale wstępnie mam akceptację grupy organizatorów cyklicznych spotkań, więc spodziewam się ogłoszenia niebawem. Zachęcam do udziału, bo liczę na aktywny udział obu stron - prowadzącego oraz słuchaczy - co powinno wyjść na dobre każdemu. Na pewno pomoże w zrozumieniu chociażby kilku problemów funkcyjnych, z którymi borykałem się podczas kursu Odersky'ego na Coursera, warsztatów Grześka Balcerka oraz lektury Functional Programming in Scala.
A pod koniec tygodnia, 24 i 25 maja, pojawię się w Kijowie na konferencji JEECOnf. Tam zdobędę się na wystąpienie o Clojure (Introduction to web application development in Clojure) i Scali (Introduction to functional programming in Scala). Jednocześnie o obu językach? Tego jeszcze nie było w moim wykonaniu! Nie mogłem odmówić sobie spróbowania, bo okazja do bezpośredniej wymiany doświadczeń nie zdarza się często. Będzie z pewnością bogato merytorycznie, bo w końcu będę mógł podjąć się wyjaśnienia pewnych problemów programistycznych przez pryzmat języków Java, Clojure, a teraz i Scala. Ciekawym, kiedy do mojego repertuaru dołączy F#?!
Do zobaczenia!
06 maja 2013
Zliczyć krotność liter w ciągu znaków w Scali
Przyszło mi spędzać coraz więcej czasu ze Scalą ze względu na coraz trudniejsze zadania w szkoleniu Functional Programming Principles in Scala i tym razem trafiłem na ciekawy problem programistyczny, którego rozwiązanie dalekie Załóżmy, że mamy nieuporządkowaną listę par znak-krotność (typu
List[(Char, Int)]), w której można znaleźć pary dla tych samych liter, np.val l = List(('a',2), ('b',1), ('a',1), ('c',1), ('c', 3), ('e',3))Jak miałaby wyglądać funkcja, która przyjmuje listę, np. l powyżej, i "normalizuje" ją do postaci uszeregowanego (leksykograficznie) ciągu par, w których na drugiej pozycji jest suma wszystkich krotności dla danego znaku.Przy założeniu powyższej listy
l otrzymalibyśmy wynik:List((a,3), (b,1), (c,4), (e,3))Początkowo napisałem takiego potworka, który nie tylko, że nie wyglądał, ale i posiadał błąd (patrz ostatni
map z l.length):(l groupBy { case (c, _) => c }).toList map (e => e._2) map (l => (l.head._1, l.length)) sortedObrzydlistwo!Moje neurony nadawały na zwiększonej częstotliwości, kiedy ślęczałem nad tym problemem, a ostateczny wynik o mało co nie zrzucił mnie z krzesła! Przede wszystkim był mój i dodatkowo działał!
Nie podam jeszcze rozwiązania, aby nie psuć zabawy. Podpowiem, że w moim rozwiązaniu nie zabrakło miejsca dla
groupBy, map, funkcji anonimowych z case oraz sum i sorted. W sumie 76 znaków, co wciąż nie zachwyca skromnością. A jak u Ciebie?
01 maja 2013
Confitura 2013 i programowanie funkcyjne na JVM w Scali i Clojure
Coś ostatnio nie mogę opanować mojego harmonogramu. Spóźnień jakby więcej. Dobrze chociaż, że jedynym pokrzywdzonym jestem wyłącznie ja sam.
Najpierw niedotrzymałem terminu zgłaszania rozwiązań zadań z Huffman Coding (Week 4: Types and Pattern Matching) w kursie Functional Programming Principles in Scala na Coursera, co kosztowało mnie stratę 4 punktów (po 2 za każdy dzień zwłoki).
Teraz ominęła mnie przyjemność zgłoszenia tematu na nadchodzącą konferencję Confitura 2013. Termin właśnie upłynął wczoraj o północy, a pamiętam, jak "zmóżdżałem się" nad tematem wokół programowania funkcyjnego na JVM ze Scalą i Clojure, aby zawalony bieżącymi sprawami przegapić najważniejsze.
Zamiast biadolić, pomyślałem sobie, aby zamienić wpadkę na sukces (podobno wystarczy jedynie zmienić postrzeganie, czasami kryteria oceny) i zaproponować coś ala wykład w postaci skrinkastów (=filmów instruktażowych) na YouTube lub vimeo (wciąż nie mogę zdecydować się na wybór tej jednej platformy do nagrań).
Jako, że Scala całkowicie zawłaszczyła mój czas, który zadeklarowałem na naukę programowania funkcyjnego na JVM, pomyślałem, że napiszę na tym blogu, aby wybadać zainteresowanie tym językiem jako medium do nauki tego paradygmatu, któremu najwyraźniej wciąż brakuje materiału w postaci nagrań w języku polskim.
Grzegorz Balcerek odwalił kawał roboty w postaci stworzenia szkolenia „Scala i programowanie funkcyjne”, które gorąco polecam. Poświęciłem mu 2 weekendy i uważam je za wartościowe.
Jest również portal Scala.net.pl z hiperaktywnym +Tomasz Nurkiewicz (któremu trudno dotrzymać kroku także na StackOverflow), na którym można również "spotkać" Grześka, więc można śmiało założyć, że materiału pisanego jest cała masa.
Wciąż jednak brakuje mi nagrań o Scali, Clojure, F# czy innych języków funkcyjnych na JVM i poza nią po polsku z twarzą nagrywanego, które ociepliłyby nagranie. Brakuje mi krótkich filmików instruktażowych, jak również dyskusji (tutaj również nadmienię brak jakichkolwiek polskich podkastów). Uważam, że jest to miejsce zaniedbane u nas i można bez większych problemów potraktować to jako własną niszę twórczą.
Czy faktycznie tak jest? Czy nagrania w postaci filmów (krótko- i długometrażowych) czy podkastów po polsku są "w cenie"? Są chętni na odsłuchiwanie takich produktów? Jak często? Jakie długie? Jaka tematyka (wokół programowania funkcyjnego oczywiście)? Inne?
Niech ta aktywność będzie rekompensatą mojego braku zgłoszenia tematu i ewentualnie udziału jako prelegent na Confiturze 2013.
Najpierw niedotrzymałem terminu zgłaszania rozwiązań zadań z Huffman Coding (Week 4: Types and Pattern Matching) w kursie Functional Programming Principles in Scala na Coursera, co kosztowało mnie stratę 4 punktów (po 2 za każdy dzień zwłoki).
Teraz ominęła mnie przyjemność zgłoszenia tematu na nadchodzącą konferencję Confitura 2013. Termin właśnie upłynął wczoraj o północy, a pamiętam, jak "zmóżdżałem się" nad tematem wokół programowania funkcyjnego na JVM ze Scalą i Clojure, aby zawalony bieżącymi sprawami przegapić najważniejsze.
Zamiast biadolić, pomyślałem sobie, aby zamienić wpadkę na sukces (podobno wystarczy jedynie zmienić postrzeganie, czasami kryteria oceny) i zaproponować coś ala wykład w postaci skrinkastów (=filmów instruktażowych) na YouTube lub vimeo (wciąż nie mogę zdecydować się na wybór tej jednej platformy do nagrań).
Jako, że Scala całkowicie zawłaszczyła mój czas, który zadeklarowałem na naukę programowania funkcyjnego na JVM, pomyślałem, że napiszę na tym blogu, aby wybadać zainteresowanie tym językiem jako medium do nauki tego paradygmatu, któremu najwyraźniej wciąż brakuje materiału w postaci nagrań w języku polskim.
Grzegorz Balcerek odwalił kawał roboty w postaci stworzenia szkolenia „Scala i programowanie funkcyjne”, które gorąco polecam. Poświęciłem mu 2 weekendy i uważam je za wartościowe.
Jest również portal Scala.net.pl z hiperaktywnym +Tomasz Nurkiewicz (któremu trudno dotrzymać kroku także na StackOverflow), na którym można również "spotkać" Grześka, więc można śmiało założyć, że materiału pisanego jest cała masa.
Wciąż jednak brakuje mi nagrań o Scali, Clojure, F# czy innych języków funkcyjnych na JVM i poza nią po polsku z twarzą nagrywanego, które ociepliłyby nagranie. Brakuje mi krótkich filmików instruktażowych, jak również dyskusji (tutaj również nadmienię brak jakichkolwiek polskich podkastów). Uważam, że jest to miejsce zaniedbane u nas i można bez większych problemów potraktować to jako własną niszę twórczą.
Czy faktycznie tak jest? Czy nagrania w postaci filmów (krótko- i długometrażowych) czy podkastów po polsku są "w cenie"? Są chętni na odsłuchiwanie takich produktów? Jak często? Jakie długie? Jaka tematyka (wokół programowania funkcyjnego oczywiście)? Inne?
Niech ta aktywność będzie rekompensatą mojego braku zgłoszenia tematu i ewentualnie udziału jako prelegent na Confiturze 2013.
18 kwietnia 2013
4Developers z Wojtkiem z Androidem i Kubą ze Spring Data w akcji
Wybrałem się na konferencję 4Developers wcześnie rano. Na miejscu pojawiłem się około 8:30.
Pierwsza niespodzianka to kolejka. Długa. Za długa, abym w niej stał, więc wszedłem bez rejestracji.
Korytarz długi i ciasny - z pewnością nie zachęca do dłuższej bytności. Samo usytuowanie budynku, w którym odbywała się konferencja umieszczam po stronie zalet konferencji, ale już same sale i dwa piętra idą na stronę wad. To bodaj najtrudniejsza część podczas organizowania konferencji - dobrego miejsca typu sala kinowa dorobił się jedynie GeeCON i za to wyróżniłbym tę konferencję. Pozostałe wciąż borykają się z doborem właściwego miejsca.
Rozejrzałem się po salach w poszukiwaniu +Bartek Zdanowski i +Wojtek Erbetowski. Właśnie ich wybrałem jako prelegentów z tematami jQuery kickstart (Bartek) oraz Testowanie Androida z mocą Grooviego i Spocka (Wojtek). Wybór nie był łatwy i trudno nawet było zdecydować się na pierwszego, tzn. z jednej prezentacji trzeba było wyjść w połowie, aby pojawić się na drugiej i wyjście z sali nigdy nie należy do przyjemnych dla obu stron.
W końcu trafiłem do sali Bartka. Słówko i miałem już ustawiony plan. Zostanę u Bartka, a w połowie ewakuuję się do Wojtka. Jak się później okazało, plan nie wypalił i kiedy już spotkałem się z Wojtkiem, tak już zostało i przesiedziałem całego Androida u niego.
Zanim jednak prezentacja się rozpoczęła, trafiłem do sali, w której zaplanowane były warsztaty z platformą .Net. Jeszcze nikogo nie było w sali poza prowadzącym i innym gościem - rozmawiali o czymś. Korzystając z chwili zapytałem o F# i programowanie funkcyjne na .Net. Odpowiedź jaką dostałem była najgorszą z możliwych - nie znam i nie korzystam z F#, bo…Microsoft tego nie promuje (!) Co?! To potrzeba firmy, aby poznać język, który swoim podejściem może zmienić rozwiązywanie problemów?! Zmroziło mnie.
Według obu Panów, C# daje wszystko, co może programista .Net potrzebować. Chcesz funkcje? Są w C#. Chcesz programowanie funkcyjne? Cóż, może nie jest takie, jakiego moglibyśmy oczekiwać, ale skoro nie oczekuję wiele, więc jest w porządku. Co za ludzie?!
Szczęśliwie, jeden z nich okazał się mniej potrzebującym wsparcia Microsoft, aby poznać F# i wspomniał nawet o Scali, którą porównałem do F# jako alternatywy. Moje postrzeganie platform .Net vs JVM jest takie, że Javę przyrównałbym do C#, aby Scalę przyrównać do F#. Nie twierdzę przy tym, że języki są zamienne, ale że dają podobne możliwości w swoich "środowiskach" - z pewnością pod kątem wsparcia dla programowania obiektowego (Java i C#) oraz funkcyjnego (Scala i F#). Osobiście nie przesiadłbym się na C#, ale gdyby zaproponowano mi projekt z F#, miałbym problem z odmówieniem. Zresztą to samo tyczy się Scali, Clojure i F#.
Byłbym zapomniał, ów prowadzący warsztaty stwierdził coś jeszcze (spróbuję przytoczyć dosłownie): "W C# jest Linq, więc jest dobrze i mam trochę smaczku funkcyjnego, a F# nie potrzebuję, bo klientów to nie obchodzi i…jest mało programistów znających temat". Cóż, wyczułem opór i nie parłem do przodu.
Poszedłem szukać Wojtka. A ostatecznie to Wojtek mnie znalazł przechodząc do swojej sali.
Zaczęliśmy z lekkim opóźnieniem oczekując liczniejszej publiki - naliczyłem 7 osób na sali, a że temat ciekawy - RoboSpock - to można było oczekiwać kilku więcej. Niestety, zostaliśmy w kameralnej atmosferze do samego końca. W końcu, jak to ujął Wojtek, co 4 uczestnik to prelegent, więc trudno było oczekiwać większej frekwencji w salach.
I to była zaleta tej prezentacji. Poczułem się trochę, jakby Wojtek przygotował się specjalnie dla mnie. Szczęśliwie była jeszcze jedna osoba, która próbowała zawłaszczyć spotkanie dla siebie i wspólnie nakręciliśmy interakcję z prelegentem.
Pierwsza rzecz, którą dostrzegłem w prezentacji Wojtka to przeraźliwy brak pewności w głosie. Rano daje się to specjalnie odczuć, kiedy ludzie potrzebują pewniaka. Wojtkowi zabrakło tego, choć nadrabiał pewnością znajomości tematu. Tutaj nie miałem złudzeń, że jesteśmy u najlepszego!
Niespodzianką prezentacji były slajdy na github.io. Pamiętam pierwszy raz u Kuby Nabrdalika (podczas ostatniego spotkania WJUGowego), kiedy zobaczyłem tę domenę. Musiałem przegapić zmiany na GitHubie, bo nie wiedziałem, że na io można posadzić stronkę. Pewnie jeszcze można ją wersjonować. Jak to na GitHubie. Niczego innego nie oczekiwałbym. Robią to doskonale.
Kolejny prelegent z IntelliJ IDEA w użyciu. To chyba jakaś "plaga" w Polsce :-)
Do poprawki wrzuciłbym jeszcze slajdy - bardziej do czytania niż oglądania (czy to aby nie przez małą liczbę kotków?!) Tutaj widzę dużo do zrobienia w naszym warsztacie prezenterskim. Zwykle prelegenci to znawcy tematu (choćby w ograniczonym zakresie, ale wciąż przygotowani merytorycznie), ale oprawa leży - slajdy, gesty, mimika, głos, itp. Za mało nas publicznie wciąż. Może temat nagrywania skrinkastów mógłby to zmienić? Materiał krótki i możnaby dotrzeć do większej rzeszy osób, co sprawiłoby, że większy byłby strumień ocen.
Brawa dla Wojtka za utrzymanie czasu! Prezentacja poprowadzona sprawnie i z każdą minutą było widać coraz większe opanowanie w głosie. Możnaby jeszcze nad tym popracować. I proszę o zwrócenie uwagi na uwagę uczestników - oni patrzą nie tylko na slajdy, a Wojtek-prelegent niestety wciąż za rzadko na słuchaczy. Do poprawki.
Przypominam, że slajdy są nośnikiem najważniejszych treści - skoro mamy slajd z pytaniami, to czy nie byłoby bardziej wartościowe "usadowić" na nich danych o prelegencie, aby późniejszy kontakt był łatwiejszy? Do poprawki.
Poszedłem na prezentację +Jakub Kubryński o Spring Data. Zagadałem się na korytarzu z osobami przy stoiskach i wszedłem do Kuby już po rozpoczęciu.
Zasiadam w pierwszym rzędzie, a tu na ścianie widzę uruchomioną IDEA (znowu!) z testami, które...nie zadziałały. Wciąż nie wiem, czy to było zamierzone czy nie. Kuba, czytasz może?
In plus, opanowanie w głosie, wyważony ton i "czyste" slajdy - czcionka była cudna. Szkoda, że zabrakło obrazków, bo w pewnym momencie bardziej skupiłem się na czytaniu slajdów niż słuchaniu. Nie taka jest rola slajdów, co?!
A skoro o slajdach, to dlaczego były po angielsku?! Skąd pomysł, aby slajdy były po angielsku, podczas gdy językiem "urzędowym" był polski? Nie należałoby oczekiwać ujednolicenia - po angielsku lub polsku, whatever, ale jednolicie, please.
I to miętolenie butelki. Do wyrzucenia! Obowiązkowo korzystamy z rąk podczas prezentacji, ale ostatnią rzeczą może być wertowanie kartek, zabawa z długopisem czy butelką. Skutecznie przykuwało to moją uwagę i na pewno rozpraszało wielu.
Kolejny już prelegent, któremu bardziej zależy na kontakcie wzrokowym ze slajdami niż publicznością. To obniża u mnie chęć do zadawania pytań, bo trudniej zwrócić na siebie uwagę w takiej sytuacji. Proszę postawić się w mojej, uczestnika, roli - czekać na pauzę i wejść z pytaniem z impetem czy liczyć na uwagę prelegenta, który niestety nie wykazuje zainteresowania, i czekać na wywołanie? Zdecydowanie coś nad czym Kuba musi popracować.
Kiedy jednak pojawiła się uwaga Kuby na uczestnikach, to niestety, ale kończyła się na pierwszym rzędzie. Sala była długa i ciemna, więc mimo wczesnej pory, wielu mogło poczuć się w potrzebie zdrzemnięcia. Ja przez moment o tym pomyślałem, bo skoro brakuje mi uwagi Kuby, to wielokrotnie z zamkniętymi oczyma mogę wyłączyć niepotrzebne bodźce. To mógłby być dobry test przed wystąpieniem, aby sprawdzić, ile wnosi prelegent ponad lekturą slajdów - wystarczy nagrać siebie i odsłuchać później. Nigdy jednak tego nie próbowałem, więc trudno mi powiedzieć, jak bardzo jest to wartościowe.
Początkowo byłem zachwycony prowadzeniem prezentacji przez Kubę - było dynamicznie, treściwie i z pewnością w głosie - ale nie trwało długo (20 minut), kiedy zacząłem czuć zmęczenie. Dużo materiału do przeczytania na slajdach i to po angielsku, brak kontaktu wzrokowego, mało angażowania publiczności do dyskusji - nuda.
In plus, podparcie się gitem do zmiany kodu. Git na linii poleceń i przejście do IDEA, to coś, co lubię. Imponuje mi takie podejście do sprawy, które nazwałbym profesjonalnym. Ale hola, hola, skąd pomysł, aby uruchamiać gita z linii poleceń?! Czyżby IDEA nie była git?
Niestety, prezentacja Kuby była ostatnią ze względu na "nieoczekiwaną zmianę miejsc" w moim terminarzu, więc jeszcze tylko słowo z organizatorem - Sławkiem Jabsem - i w drogę.
Gdybym był zapytany o wartość konferencji, napisałbym, że nie było nic, co uzasadniałoby jej cenę. Zabrakło mi tematów funkcyjnych (ogólnie i z językami typu Scala, Clojure i F#), współbieżności z java.util.concurrent, przetwarzania asynchronicznego w Java z java.util.concurrent.Future, nowości Java EE 7 z Web Socket w roli głównej. Zabrakło mi również dłuższej agendy na kilka dni z możliwością zamienienia słowa między kolejnymi dniami. Tutaj (kolejność przypadkowa) GeeCON i 33rd Degree wygrywa (przy założeniu, że trwają kilka dni). Dostrzegam wartość z możliwości rozmowy za kulisami z prelegentami, którzy mogą pokazać swój warsztat - sposób podejścia do problemu, skróty klawiszowe i ogólnie bieżące zainteresowania.
Zdecydowanie potrzeba mi konferencji, która byłaby na neutralnym gruncie - poza miastami typu Warszawa, Kraków, Poznań, Wrocław, Szczecin, Gdańsk. Taka teraz ładna pogoda - może Mazury? Na pewno część północno-wschodnia Polski wymaga uwagi. Anyone?
Pierwsza niespodzianka to kolejka. Długa. Za długa, abym w niej stał, więc wszedłem bez rejestracji.
Korytarz długi i ciasny - z pewnością nie zachęca do dłuższej bytności. Samo usytuowanie budynku, w którym odbywała się konferencja umieszczam po stronie zalet konferencji, ale już same sale i dwa piętra idą na stronę wad. To bodaj najtrudniejsza część podczas organizowania konferencji - dobrego miejsca typu sala kinowa dorobił się jedynie GeeCON i za to wyróżniłbym tę konferencję. Pozostałe wciąż borykają się z doborem właściwego miejsca.
Rozejrzałem się po salach w poszukiwaniu +Bartek Zdanowski i +Wojtek Erbetowski. Właśnie ich wybrałem jako prelegentów z tematami jQuery kickstart (Bartek) oraz Testowanie Androida z mocą Grooviego i Spocka (Wojtek). Wybór nie był łatwy i trudno nawet było zdecydować się na pierwszego, tzn. z jednej prezentacji trzeba było wyjść w połowie, aby pojawić się na drugiej i wyjście z sali nigdy nie należy do przyjemnych dla obu stron.
W końcu trafiłem do sali Bartka. Słówko i miałem już ustawiony plan. Zostanę u Bartka, a w połowie ewakuuję się do Wojtka. Jak się później okazało, plan nie wypalił i kiedy już spotkałem się z Wojtkiem, tak już zostało i przesiedziałem całego Androida u niego.
Zanim jednak prezentacja się rozpoczęła, trafiłem do sali, w której zaplanowane były warsztaty z platformą .Net. Jeszcze nikogo nie było w sali poza prowadzącym i innym gościem - rozmawiali o czymś. Korzystając z chwili zapytałem o F# i programowanie funkcyjne na .Net. Odpowiedź jaką dostałem była najgorszą z możliwych - nie znam i nie korzystam z F#, bo…Microsoft tego nie promuje (!) Co?! To potrzeba firmy, aby poznać język, który swoim podejściem może zmienić rozwiązywanie problemów?! Zmroziło mnie.
Według obu Panów, C# daje wszystko, co może programista .Net potrzebować. Chcesz funkcje? Są w C#. Chcesz programowanie funkcyjne? Cóż, może nie jest takie, jakiego moglibyśmy oczekiwać, ale skoro nie oczekuję wiele, więc jest w porządku. Co za ludzie?!
Szczęśliwie, jeden z nich okazał się mniej potrzebującym wsparcia Microsoft, aby poznać F# i wspomniał nawet o Scali, którą porównałem do F# jako alternatywy. Moje postrzeganie platform .Net vs JVM jest takie, że Javę przyrównałbym do C#, aby Scalę przyrównać do F#. Nie twierdzę przy tym, że języki są zamienne, ale że dają podobne możliwości w swoich "środowiskach" - z pewnością pod kątem wsparcia dla programowania obiektowego (Java i C#) oraz funkcyjnego (Scala i F#). Osobiście nie przesiadłbym się na C#, ale gdyby zaproponowano mi projekt z F#, miałbym problem z odmówieniem. Zresztą to samo tyczy się Scali, Clojure i F#.
Byłbym zapomniał, ów prowadzący warsztaty stwierdził coś jeszcze (spróbuję przytoczyć dosłownie): "W C# jest Linq, więc jest dobrze i mam trochę smaczku funkcyjnego, a F# nie potrzebuję, bo klientów to nie obchodzi i…jest mało programistów znających temat". Cóż, wyczułem opór i nie parłem do przodu.
U Wojtka Erbetowskiego o RoboSpock'u
Poszedłem szukać Wojtka. A ostatecznie to Wojtek mnie znalazł przechodząc do swojej sali.
Zaczęliśmy z lekkim opóźnieniem oczekując liczniejszej publiki - naliczyłem 7 osób na sali, a że temat ciekawy - RoboSpock - to można było oczekiwać kilku więcej. Niestety, zostaliśmy w kameralnej atmosferze do samego końca. W końcu, jak to ujął Wojtek, co 4 uczestnik to prelegent, więc trudno było oczekiwać większej frekwencji w salach.
I to była zaleta tej prezentacji. Poczułem się trochę, jakby Wojtek przygotował się specjalnie dla mnie. Szczęśliwie była jeszcze jedna osoba, która próbowała zawłaszczyć spotkanie dla siebie i wspólnie nakręciliśmy interakcję z prelegentem.
Pierwsza rzecz, którą dostrzegłem w prezentacji Wojtka to przeraźliwy brak pewności w głosie. Rano daje się to specjalnie odczuć, kiedy ludzie potrzebują pewniaka. Wojtkowi zabrakło tego, choć nadrabiał pewnością znajomości tematu. Tutaj nie miałem złudzeń, że jesteśmy u najlepszego!
Niespodzianką prezentacji były slajdy na github.io. Pamiętam pierwszy raz u Kuby Nabrdalika (podczas ostatniego spotkania WJUGowego), kiedy zobaczyłem tę domenę. Musiałem przegapić zmiany na GitHubie, bo nie wiedziałem, że na io można posadzić stronkę. Pewnie jeszcze można ją wersjonować. Jak to na GitHubie. Niczego innego nie oczekiwałbym. Robią to doskonale.
Kolejny prelegent z IntelliJ IDEA w użyciu. To chyba jakaś "plaga" w Polsce :-)
Do poprawki wrzuciłbym jeszcze slajdy - bardziej do czytania niż oglądania (czy to aby nie przez małą liczbę kotków?!) Tutaj widzę dużo do zrobienia w naszym warsztacie prezenterskim. Zwykle prelegenci to znawcy tematu (choćby w ograniczonym zakresie, ale wciąż przygotowani merytorycznie), ale oprawa leży - slajdy, gesty, mimika, głos, itp. Za mało nas publicznie wciąż. Może temat nagrywania skrinkastów mógłby to zmienić? Materiał krótki i możnaby dotrzeć do większej rzeszy osób, co sprawiłoby, że większy byłby strumień ocen.
Brawa dla Wojtka za utrzymanie czasu! Prezentacja poprowadzona sprawnie i z każdą minutą było widać coraz większe opanowanie w głosie. Możnaby jeszcze nad tym popracować. I proszę o zwrócenie uwagi na uwagę uczestników - oni patrzą nie tylko na slajdy, a Wojtek-prelegent niestety wciąż za rzadko na słuchaczy. Do poprawki.
Przypominam, że slajdy są nośnikiem najważniejszych treści - skoro mamy slajd z pytaniami, to czy nie byłoby bardziej wartościowe "usadowić" na nich danych o prelegencie, aby późniejszy kontakt był łatwiejszy? Do poprawki.
U Jakuba Kubryńskiego ze Spring Data
Poszedłem na prezentację +Jakub Kubryński o Spring Data. Zagadałem się na korytarzu z osobami przy stoiskach i wszedłem do Kuby już po rozpoczęciu.
Zasiadam w pierwszym rzędzie, a tu na ścianie widzę uruchomioną IDEA (znowu!) z testami, które...nie zadziałały. Wciąż nie wiem, czy to było zamierzone czy nie. Kuba, czytasz może?
In plus, opanowanie w głosie, wyważony ton i "czyste" slajdy - czcionka była cudna. Szkoda, że zabrakło obrazków, bo w pewnym momencie bardziej skupiłem się na czytaniu slajdów niż słuchaniu. Nie taka jest rola slajdów, co?!
A skoro o slajdach, to dlaczego były po angielsku?! Skąd pomysł, aby slajdy były po angielsku, podczas gdy językiem "urzędowym" był polski? Nie należałoby oczekiwać ujednolicenia - po angielsku lub polsku, whatever, ale jednolicie, please.
I to miętolenie butelki. Do wyrzucenia! Obowiązkowo korzystamy z rąk podczas prezentacji, ale ostatnią rzeczą może być wertowanie kartek, zabawa z długopisem czy butelką. Skutecznie przykuwało to moją uwagę i na pewno rozpraszało wielu.
Kolejny już prelegent, któremu bardziej zależy na kontakcie wzrokowym ze slajdami niż publicznością. To obniża u mnie chęć do zadawania pytań, bo trudniej zwrócić na siebie uwagę w takiej sytuacji. Proszę postawić się w mojej, uczestnika, roli - czekać na pauzę i wejść z pytaniem z impetem czy liczyć na uwagę prelegenta, który niestety nie wykazuje zainteresowania, i czekać na wywołanie? Zdecydowanie coś nad czym Kuba musi popracować.
Kiedy jednak pojawiła się uwaga Kuby na uczestnikach, to niestety, ale kończyła się na pierwszym rzędzie. Sala była długa i ciemna, więc mimo wczesnej pory, wielu mogło poczuć się w potrzebie zdrzemnięcia. Ja przez moment o tym pomyślałem, bo skoro brakuje mi uwagi Kuby, to wielokrotnie z zamkniętymi oczyma mogę wyłączyć niepotrzebne bodźce. To mógłby być dobry test przed wystąpieniem, aby sprawdzić, ile wnosi prelegent ponad lekturą slajdów - wystarczy nagrać siebie i odsłuchać później. Nigdy jednak tego nie próbowałem, więc trudno mi powiedzieć, jak bardzo jest to wartościowe.
Początkowo byłem zachwycony prowadzeniem prezentacji przez Kubę - było dynamicznie, treściwie i z pewnością w głosie - ale nie trwało długo (20 minut), kiedy zacząłem czuć zmęczenie. Dużo materiału do przeczytania na slajdach i to po angielsku, brak kontaktu wzrokowego, mało angażowania publiczności do dyskusji - nuda.
In plus, podparcie się gitem do zmiany kodu. Git na linii poleceń i przejście do IDEA, to coś, co lubię. Imponuje mi takie podejście do sprawy, które nazwałbym profesjonalnym. Ale hola, hola, skąd pomysł, aby uruchamiać gita z linii poleceń?! Czyżby IDEA nie była git?
Epilog
Niestety, prezentacja Kuby była ostatnią ze względu na "nieoczekiwaną zmianę miejsc" w moim terminarzu, więc jeszcze tylko słowo z organizatorem - Sławkiem Jabsem - i w drogę.
Gdybym był zapytany o wartość konferencji, napisałbym, że nie było nic, co uzasadniałoby jej cenę. Zabrakło mi tematów funkcyjnych (ogólnie i z językami typu Scala, Clojure i F#), współbieżności z java.util.concurrent, przetwarzania asynchronicznego w Java z java.util.concurrent.Future, nowości Java EE 7 z Web Socket w roli głównej. Zabrakło mi również dłuższej agendy na kilka dni z możliwością zamienienia słowa między kolejnymi dniami. Tutaj (kolejność przypadkowa) GeeCON i 33rd Degree wygrywa (przy założeniu, że trwają kilka dni). Dostrzegam wartość z możliwości rozmowy za kulisami z prelegentami, którzy mogą pokazać swój warsztat - sposób podejścia do problemu, skróty klawiszowe i ogólnie bieżące zainteresowania.
Zdecydowanie potrzeba mi konferencji, która byłaby na neutralnym gruncie - poza miastami typu Warszawa, Kraków, Poznań, Wrocław, Szczecin, Gdańsk. Taka teraz ładna pogoda - może Mazury? Na pewno część północno-wschodnia Polski wymaga uwagi. Anyone?
Subskrybuj:
Posty (Atom)





