Scaladays 2014 in Berlin

Ein kurzer Rückblick

Da die Sca­la­days die­ses Jahr in Ber­lin statt­fan­den, war dies meine erste Ge­le­gen­heit, eine reine Sca­la-Kon­fe­renz zu be­su­chen. Die Sca­la­days fan­den heuer zum fünf­ten Mal statt und waren mit über 800 Be­su­chern die grö­ß­te Ver­an­stal­tung bis­her. Limit war letzt­end­lich der Ver­an­stal­tungs­ort, die Ti­ckets waren ei­ni­ge Wo­chen vor der Kon­fe­renz be­reits kom­plett aus­ge­bucht.

Mein Ge­samt­ein­druck? Ich glau­be, ich hab’s hier­mit recht tref­fend auf zu­sam­men­ge­fa­ßt:

Eine sehr coole Mi­schung aus Prak­ti­kern, die aber nicht nur nach „Sche­ma X“ ar­bei­ten, son­dern quer­den­ken, sich um­se­hen und – nicht zu­letzt – auch ge­le­gent­lich einen Blick in die wis­sen­schaft­li­che (Par­al­lel)Welt wer­fen, um zu sehen, was die Theo­rie für die Pra­xis zu bie­ten hat.

All­ge­mein hatte man den star­ken Ein­druck, daß sich mit der Ver­brei­tung, Ak­zep­tanz und Nach­fra­ge von Scala or­dent­lich etwas tut: Die meis­ten der Teil­neh­mer set­zen Scala be­reits pro­duk­tiv in der Ar­beit ein, immer häu­fi­ger wer­den die Ge­schich­ten von Fir­men, die An­wen­dun­gen in Scala ent­wi­ckeln oder zu Scala mi­grie­ren.

Das Vor­trags­pro­gramm klang rund­rum span­nend, oft hätte ich in drei Talks par­al­lel gehen wol­len. Ich hoffe auf die Vi­deo­auf­zeich­nun­gen und werde dann „nach­ar­bei­ten“ :-) Im­mer­hin sind be­reits viele der Fo­li­en on­line, hier gibt es eine Link­lis­te, und im Blog von Ty­pe­safe sind eben­falls Links und Re­fe­ren­zen zu­sam­men­ge­tra­gen.

Vor­trä­ge

Scala: The sim­ple parts

Die Keyno­te von Mar­tin Oder­s­ky. „Sim­ple“ be­deu­tet nicht zwin­gend „Easy“. Mar­tin stell­te die (sim­plen) Prin­zi­pi­en hin­ter der Idee und dem Sprach­ent­wurf von Scala vor und ver­such­te deut­lich zu ma­chen, wie diese in­ein­an­der­grei­fen. In­halt­lich in­ter­es­sant, aber man hört Mar­tin ein­fach den Pro­fes­so­ren-Vor­le­sungs-Ton­fall an :-)

Con­tra­va­ri­an­ce is the Dual of Co­va­ri­an­ce

Die nächs­te Keyno­te war ein Apell, sich nicht immer nur mit dem ein­fa­chen Er­geb­nis zu­frie­den zu geben, son­dern sich ge­le­gent­lich auch die Mühe zu ma­chen und dem „warum“ nach­zu­ge­hen. Auf­hän­ger war die Fra­ge­stel­lung, wel­cher Rück­ga­be­wert bei einem try..​finally-State­ment letzt­end­lich ver­wen­det wird. Erik Mei­jer tauch­te dabei ein­mal ein gutes Stück­weit in den Lamb­da-Cal­cu­lus – si­cher mal amü­sant (und auch durch­aus un­ter­halt­sam prä­sen­tiert), al­ler­dings hatte ich den Ein­druck, daß er mehr als die Hälf­te sei­nes Pu­bli­kums damit ab­ge­hängt hatte.

Pit­ching Scala: An In­ter­ac­tive Ses­si­on on Crea­ting Chan­ge in your Or­ga­niza­t­i­on

Kein Vor­trag im klas­si­schen Sinn, son­dern tat­säch­lich eine in­ter­ak­ti­ve Ge­sprächs­run­de: Die Ma­cher von go.​typesafe.​com, einer Seite mit Ar­gu­men­ta­ti­ons­li­ni­en für die Ver­wen­dung von Scala, gin­gen über üb­li­che Fra­ge­stel­lun­gen bei der Wahl von Tech­no­lo­gi­en. Jeder Teil­neh­mer war mit einer grü­nen und einer roten Karte aus­ge­stat­tet, die er im Falle von „er­folg­reich für Scala ent­schie­den“ bzw. „Pro­ble­me mit Vor­be­hal­ten o.ä.“ im ei­ge­nen Pro­jekt hob.

Die häu­figs­ten Hemm­nis­se waren (fast kon­text­un­ab­hän­gig) kon­ser­va­ti­ve Ent­schei­der und um­stiegs­un­wil­li­ge Kol­le­gen. Um­ge­kehrt gab es bei den­je­ni­gen, die sich für Scala ent­schie­den hat­ten, fak­tisch keine Stim­men, die die Ent­schei­dung be­reut hat­ten. Ein Be­su­cher be­rich­te­te von einem in­ter­nen Pro­jekt, bei dem das Team in zwei Hälf­ten ge­teilt wurde – die einen ent­wi­ckel­ten eine Fra­ge­stel­lung mit Java, die an­de­re mit Scala. Nach vier Wo­chen hat­ten zwar beide Teams das Pro­blem ge­löst, das Sca­la­team war trotz der Lern­pha­se (die meis­ten Mit­ar­bei­ter mu­ß­ten zu­nächst Scala er­ler­nen) 30% schnel­ler fer­tig, hatte eine hö­he­re Test­ab­de­ckung und we­ni­ger Pro­ble­me mit ir­gend­wel­chen Bugs.

Den Be­su­chern der Ses­si­on wurde ver­spro­chen, die Er­geb­nis­se der Dis­kus­si­on zu­zu­mai­len - ich bin ge­spannt. Die Fo­li­en sowie ei­ni­ge mar­kan­te Zi­ta­te gibt es be­reits im Blog von Blod­ra­di­us.

Re­ac­tive Streams: And why you should care

Re­ac­tive Streams sind eine Abs­trak­ti­on von Da­ten­strö­men, die sich unter der Haube auf die Ak­to­ren von Akka her­un­ter­bricht. Zwei Dinge be­kommt man als Ent­wick­ler hier­bei „spen­diert“: Durch­gän­gi­ge Ty­pen­si­cher­heit sowie Da­ten­flu­ß­kon­trol­le „von hin­ten nach vorn“ (Back Pres­su­re). Ein mei­ner Mei­nung nach sehr ele­gan­tes Kon­zept, von dem wir u.a. in der nächs­ten Ver­si­on des Play Frame­works mehr sehen wer­den.

Learn you an sbt for fun and pro­fit

Eine Ein­füh­rung in sbt ab­seits der „co­py-and-pas­te-Kon­fi­gu­ra­ti­on“. Der Talk führ­te von den Ideen und Prin­zi­pi­en hin­ter sbt (die er­staun­lich sim­pel sind) bis zum Er­stel­len eines ei­ge­nen Plug­ins. Jedem, der sbt be­nutzt, lege ich die Durch­sicht der Vor­trags­fo­li­en ans Herz, sie fas­sen das Er­zähl­te sehr gut zu­sam­men.

ak­ka-http: (un)REST for your Ac­tors

Die nächs­te große Ver­si­on von Spray wird als ak­ka-http-Mo­dul ins Ak­ka-Pro­jekt mit ein­zie­hen. Der Vor­trag gab einen Aus­blick, auf das, was da kom­men wird.

Ma­cros for the Rest of Us

Ein schö­ner Walk-Through durch die Ma­kro­pro­gram­mie­rung mit Scala. Der Talk zeig­te an Bei­spie­len, wie Ma­kros in ver­schie­de­nen Kon­tex­ten (Funk­tio­nen, Typen, etc.) ein­ge­setzt wer­den kön­nen. Die Fo­li­en sind lei­der noch nicht on­line, aber der Bei­spiel­code ist einen Blick wert.

Fazit des Talks (den ich un­ter­schrei­be): Ein mäch­ti­ges Tool, das aber durch das „ein­mal über Bande“-Spiel zu mit­un­ter über­ra­schen­den Ef­fek­ten füh­ren kann. Faust­re­gel: De­si­gne Deine API so, daß sie zwar mit Ma­kros an­ge­hübscht ist, aber auch ohne sie ver­nünf­tig be­nutz­bar ist.

In­tro­duc­tion to Re­ac­tive: A Hands-on Work­shop with Play and Akka

Der Talk war ei­gent­lich als Work­shop ge­plant – es hätte ein ge­führ­ter Walkth­rough durch die Tweet­map-Bei­spiels­an­wen­dung wer­den sol­len. Lei­der half selbst das auf USB-Sticks ver­teil­te ac­tiva­tor-Image und das voll­stän­di­ge Tem­pla­te nichts, durch die lang­sa­me Netz­ver­bin­dung war es kaum einem Teil­neh­mer mög­lich, die Sache im Code zu ver­fol­gen. Scha­de.

De­li­cious Play re­ci­pes for real world

Drei Re­zep­te hät­ten (stil­echt in Koch­schür­ze) vor­ge­stellt wer­den sol­len, die Zeit er­laub­te letzt­end­lich nur zwei.

Das erste Re­zept ging der Frage nach, wie man mit user- bzw. ses­sionab­hän­gi­gen Ak­to­ren um­geht. Play ist ja per De­fi­ni­ti­on sta­te­l­ess, ein Load­ba­lan­cer mit „Sti­cky Ses­si­ons“ ist also nicht nötig. Aber wie fin­det man nun den pas­sen­den Aktor? Der Hin­weis ziel­te auf das Modul Akka Actor Shar­ding, mit des­sen Hilfe eine nicht lokal be­ant­wort­ba­re An­fra­ge an den rich­ti­gen Re­mo­te Actor wei­ter­ge­lei­tet wer­den kann.

Re­zept num­mer Zwei be­han­del­te das Pro­blem, eine Seite mög­lichst schnell im Brow­ser dar­zu­stel­len. Zwar las­sen sich ein­zel­ne Sei­ten­tei­le par­al­lel be­rech­nen, je­doch muß bei der Aus­lie­fe­rung se­ria­li­siert wer­den. Die Idee, die Sei­ten­tei­le per AJAX nach­la­den zu las­sen, stellt sich als sub­op­ti­ma­le Lö­sung her­aus: Zwar kann der Brow­ser das Sei­ten­ge­rüst ren­dern, je­doch wer­den die AJAX-Re­quests vom Brow­ser mit nied­rigs­ter Prio­ri­tät, also so­zu­sa­gen ganz zum Schluß aus­ge­führt. Idee des Re­zepts war, das Sei­ten­ge­rüst als Chun­ked Re­s­pon­se aus­zu­lie­fern, die Sei­ten­tei­le ganz am Ende des Re­quest aus­zu­lie­fern und per Ja­va­script „ein­zu­bau­en“. Mei­ner Mei­nung nach ist das zwar ein net­ter Per­for­mance-Trick, macht die Seite al­ler­dings ohne Ja­va­script un­be­nutz­bar und auch ein Par­sen durch Such­ma­schi­nen eher pro­ble­ma­tisch.

Com­mu­ni­ty Party

Den Son­nen­un­ter­gang des ers­ten Kon­fe­renz­tags durf­ten wir auf dem Dach eines Hoch­hau­ses ge­nie­ßen:

Viel Mög­lich­keit für Ge­sprä­che und Plau­dern, nach einem Shake-Hands mit Vik­tor Klang darf ich mir wohl nun die Hände das nächs­te Jahr nicht mehr wa­schen ;-)

Le­ga­cy

Die Keyno­te des zwei­ten Kon­fe­renz­tags. Chad Fow­ler ging der Frage nach, was Code aus­macht, bei dem die Be­zeich­nung „Le­ga­cy“ nicht „alter Zopf“, son­dern ein Erbe im po­si­ti­ven Sinne ist. Let­zend­lich brach es sich auf die Idee her­un­ter, klei­ne Sys­tem­tei­le mit ein­fa­chen, mög­lichst uni­ver­sell an­sprech­ba­ren In­ter­faces zu haben. Eine gro­ßar­ti­ge Prä­sen­ta­ti­on, eine ver­schärf­te An­seh-Emp­feh­lung, hier das Video bei Par­leys.

Se­rious Fun With Scala

Der jüngs­te Re­fe­rent (14 Jahre!) be­rich­te­te in sei­nem drit­ten(!) Talk auf einer Sca­la­days über seine letz­ten Sca­la-Pro­jek­te. Viel­leicht kein Vor­trag mit tech­ni­scher In­no­va­ti­on, aber den­noch ein schö­nes Bei­spiel, wie viel Spaß man mit der Spra­che haben kann.

Scala.​js:​ what has it be­co­me and how is it used in the wild?

scala.​js ist ein Sca­la-zu-Ja­va­script-Kom­pi­ler. Der Vor­trag be­rich­te­te von den Än­de­run­gen beim letz­ten Ver­si­ons­sprung und gab einen Über­blick über ver­schie­de­ne Pro­jek­te rund um scala.​js. Per­sön­lich hätte ich mehr In­for­ma­tio­nen über die prak­ti­sche Ein­setz­bar­keit, In­te­gra­ti­on mit Play, etc. ge­wünscht – scha­de.

Fu­tures and Async: When to Use Which?

async ist ein schö­nes Tool zum Mo­del­lie­ren von Ab­lauf-Par­al­le­li­tät. Der Vor­trag ver­glich async mit Com­po­sa­ble Fu­tures (also Da­ten­par­al­le­li­tät). Fazit des Vor­trags war, daß man ge­gen­über async in­zwi­schen kei­ner­lei Vor­be­hal­te mehr haben muß; in man­chen Si­tua­tio­nen ist async sogar etwas per­for­man­ter, da in­tern we­ni­ger an­ony­me Klas­sen er­zeugt wer­den müs­sen.

A whirl­wind tour of spec­s2 2.x

Der Vor­trags­ti­tel war keine Un­ter­trei­bung, in Win­des­ei­le ging es von den Grund­la­gen zu den ver­schie­de­nen Ein­satz­zwe­cken und Kom­bi­na­ti­ons­mög­lich­kei­ten. spec­s2 ist ein Test­frame­work, das von den Be­schrei­bungs­mög­lich­kei­ten mäch­ti­ger als Sca­la­Test/Sca­la­Check sein möch­te und so die Tests etwas näher an „pars­ba­re Be­schrei­bun­gen“ wie z.B. bei Cu­cum­ber rü­cken will. spec­s2 macht einen durch­aus ge­eig­ne­ten Ein­druck, die In­te­gra­ti­on mit Sca­la­Check ist eines von vie­len coo­len Fea­tures. Auch hier ist eine Durch­sicht der Vor­trags­fo­li­en sehr auf­schlu­ß­reich.

Fazit zur Kon­fe­renz

Eine sehr schö­ne Kon­fe­renz, die mit der wach­sen­den Po­pu­la­ri­tät von Scala mit­wächst. Le­dig­lich die ex­trem enge Tak­tung der Vor­trä­ge fand ich etwas nach­tei­lig: Die Vor­trä­ge be­gan­nen zur vol­len Stun­de, nach 45 Mi­nu­ten Vor­trag plus Q+A blieb also sel­ten mehr als 5 Mi­nu­ten Zeit, vom einen Saal in den an­de­ren zu kom­men. Wegen der lan­gen Schlan­gen bei den Ge­trän­ken und den Toi­let­ten war das nicht zu schaf­fen, wenn man eine der bei­den Op­tio­nen wahr­neh­men woll­te/mußte.

Mög­li­cher­wei­se wird es in Zu­kunft so­wohl in USA als auch in Eu­ro­pa jähr­lich eine Sca­la­Days geben. Ich hoffe, daß so ein er­neu­ter Be­such in Bälde mach­bar sein wird.