Szczególne podziękowania należą się:
- Szymonowi Stępniakowi @wololock - założycielowi TJUGa i osobie, która ziściła moje marzenie uruchomienia JUGa w Toruniu, za zaproszenie na prezentację na deskach Torun JUG oraz możliwości reklamy projektu scalania i wirtualno-stacjonarnych spotkań WarszawScaLa.
- Piotrowi Prądzyńskiemu @prondzyn, który był łaskaw podzielić się swoimi uwagami odnośnie podobnego wystąpienia podczas 33rd Degree, co miało niebagatelny wpływ na zawartość merytoryczną tego spotkania.
- "wodzireja” spotkania Piotrowi Modzelewskiemu @pmodzelewski za przedstawienie mnie przed moim wystąpieniem w takim sposób, iż choćby pozbywając się ostatnich skrawków skromności, nie byłbym w stanie zrobić tego lepiej, co początkowo onieśmieliło mnie, ale ostatecznie zdopingowało do udowodnienia, iż się faktycznie nie myli.
- prelegentowi Sebastianowi Łaskawcowi z PayU za wsparcie merytoryczne w postaci prezentacji poprzedzającej, w której pojawiły się stara i wciąż dobra Java oraz narzędzia: Maven, serwery aplikacyjne Java EE z CDI / JPA / JSF (wzmiankowany był choćby IBM WebSphere!), IDEA, XML, Arquillian, które zostały wykorzystane jako pożywka dla moich dywagacji o łatwości “moich” narzędzi - sbt / activator.
- Koledze Gaussowi za pomoc merytoryczną w wątku o Gaussie i sumie liczb od 1 do 99 oraz późniejszych spostrzeżeń o moim wystąpieniu.
- Koledze od by -1, który wspomógł mnie merytorycznie, kiedy poszukiwałem rozwiązania do scalowej listy malejącej liczb naturalnych od 99 do 0.
- Przemkowi i Renacie za przybycie z...ekhm...Bydgoszczy.
- Michałowi Jaśtakowi @vardlokkur za przybycie i wzmocnienie grupy dawnych znajomych ze studiów na UMK.
- Pani rekruterce-toruniance z Lufthansa z Gdańska, która cierpliwie odpowiadała na moje (lekko zaczepne) pytania o zatrudnienie w firmie (zachęcam do rozważenia oferty!)
- Zbyszko Papierskiemu @ZPapierski za wprowadzenie do netfliksowego coś tam, i wyjaśnieniu zalet narzędzia w sposób tak ciekawy, iż mimo moich zakus przejęcia mikrofonu, słuchałem z otwartymi ustami. Dobry z niego mówca!
- ...i innym członkom Toruń JUG, których nie wspominam wyłącznie z powodu zauważalnie postępującej demencji starczej, która nie pozwoliła mi na spamiętanie wszystkich.
Podsumowując moje spotkanie jednym zdaniem, należy zapamiętać jedno zdanie, bodajże Zbyszka:
"Typesafe Activator jest tak samo narzędziem do szybkiego zestawienia projektu, jak i nauki programowania w języku Scala i Java."
W zamyśle tej prezentacji była demonstracja narzędzia sbt oraz activatora, co ma przełożyć się na liczbę osób “zarażonych” użyteczną prostotą obu narzędzi. Odnoszę wrażenie, iż klimat spotkania zaszczepił chęć popróbowania się z nimi chociażby jako narzędzia nauki języka Scala. Wystarczy przecież zainstalować activator (bądź sbt, ale będę jednak upierał się przy activator) i odpalić polecenie activator console, aby wejść w powłokę Scala REPL.
Podczas spotkania omówiłem prostotę sbt, która przekłada się na łatwość użycia narzędzia do zarządzania projektami scalowymi, a w tym pojęcia projektu (już pusty katalog nim jest!), compile, test oraz reload.
Co później trafnie zauważono, w takim towarzystwie - prawie w pełni javowym - zabrakło informacji o współpracy sbt/activator z Apache Maven oraz użyciu sbt/activator do zarządzania projektami javowymi. W tym gronie obie cechy zdecydowanie zdeklasowałyby inne "feature killers”.
Liczność spotkania oceniam na poziomie 50 osób. Na moje pytanie, którym otwierałem spotkanie, o znajomość Scali, 5 osób podniosło rękę, co przy pytaniu o komercyjne użycie sprowadziło tę liczbę do…1 osoby (słownie: JEDNEJ osoby) - właściciela firmy codenger Przemysława Kisickiego @PrzemyslawK. Zachęcam do kontaktu z Przemkiem wszystkie osoby, które są zainteresowane wejściem w Scalę profesjonalnie, bo poszukiwani są do pracy w Toruniu przy ciekawym projekcie budowania platformy sprawdzającej umiejętności kandydata (ukłony dla firm konkurencyjnych devskiller i codility, które pojawiły się w dyskusji o cele biznesowe firmy Przemka).
Dla zwrócenia uwagi, wszyscy, bądź prawie wszyscy (za wyjątkiem skończonej ilości osób), to osoby pracujące lub co najmniej znające język Java. Miałem w ten sposób nieocenione pole do popisu, aby zachęcić ludzi do wejścia w Scalę na barkach narzędzi sbt i activator. Ufam, iż misja zakończona sukcesem. Proszę o potwierdzenie/zaprzeczenie w komentarzach.
Po spotkaniu na wydziale przenieśliśmy się do knajpy Krajina Piva, gdzie kontynuowaliśmy dyskusję co dalej w Toruniu i okolicach, w których znalazło się miejsce dla rodzącego sie światka scalowego.
Dziękuję życzliwym duszyczkom za podzielenie się swoimi uwagami odnośnie zawartości merytorycznej mojego wystąpienia. Na tej bazie kolejne wystąpienia będą bardziej napakowane merytorycznie. Pro publico bono.
Spotkanie było nagrywane, więc zainteresowani przywołaniem historii, będą mieli okazję do poczynienia odpowiednich kroków już niebawem. Zachęcam do obejrzenia nagrania i podzielenia się uwagami o zawartości, szczególnie merytorycznej.
Dla spragnionych wiedzy scalowej, poniżej ściągawka do rozpoczęcia programowania w Scali przy akompaniamencie activator’a:
- Pobieramy narzędzie activator-minimal ze strony Typesafe i instalujemy w dowolnie wybranym katalogu. Nie zapomnij dodać ten katalog do PATH.
- Tworzenie aplikacji - activator new
- możliwość wyboru nazwy projektu
- możliwość wyboru szablonu projektu - domyślnie 4 szablony po dwa dla Scali i Javy
- activator - powłoka poleceń narzędzia (podobnie jak cmd w Windows lub powłoka uniksowa)
- activator --version - wersja programu uruchamiającego pełne środowisko activator
- about - specyfikacja projektu - wersja sbt, Scala, rozszerzenia/wtyczki
- console - wejście do środowiska Scala REPL, gdzie można uczyć się języka Scala oraz pisać aplikacje scalowe interaktywnie
- run - uruchomienie aplikacji, np. aplikacji webowej w Play
- test - uruchomienie testów w projekcie
- ~ (tylda) - uruchomienie dowolnego polecenia poprzedzając go tyldą pozwala na ciągłe uruchamianie polecenia przy zmianie źródeł projektu, np. ~ test uruchamia testy przy każdorazowej zmianie źródeł projektu (bezcenne przy TDD) - mówi się, iż "panny mdleją na widok tyldy".
- reload - ponownie wczytuje konfigurację projektu po jej zmianie
- name - nazwa projektu
- scalaVersion - wersja języka Scala, np. “2.10.4” lub “2.11.1”
- libraryDependencies - lista zależności projektowych (z których projekt korzysta oferując swoje usługi)
p.s. Mówi się, iż to nie ostatnie moje wystąpienie dla Toruń JUG o Scali. To jednak nie wcześniej jednak niż po wakacjach. Do zobaczenia!