Devoxx 2012 Antwerpen Belgien

Devoxx 2012 Antwerpen Belgien
november 17, 2012 kristoffer.teuber@squeed.com

 

Det var ett tag sen man satt bakom skolbänken, vilket man tydligt känner av efter tre dagars totalt korvstoppande i vad som sägs vara europas andra största bioanläggning, kinepolis.
Årets upplaga bjöd inte på några riktigt stora namn, men det är inte enbart rock-star-status som styr om ett föredrag blir bra.

Onsdag

Keynote

Denna keynote var något av det segaste jag sett i världshistorien, då den till 80% handlade om hur duktiga devoxx-folket var, och hur bra deras konferrens gått senaste åren. Vidare handlade den om devoxx-klan-ledarens Stephan Janssens egna presentations-site parleys.com, vilket iofs är en fantastisk sida. Hans egotrip drog ut på tiden, och Oracles Nandini Ramani fick mindre tid, vilket sedan gav ripple-effects i schemat resten av dagen.
Stephen Chin kom sedan inrullande på motorcykel fram till podiet, och även här syntes inte ett spår av självinsikt.
Oracles presentation var bra, och handlade mestadels om JDK8 och vad som komma skall, inga direkta nyheter. JavaFX verkar ges fokus igen, trots dess minst sagt misslyckade framgång hittils. Nu kommer en 3D-funktion, för att enkelt kunna göra 3D-grafik likt Direct3D på native-klienter. Personligen tror jag inte detta kommer kännas intressant, då WebGL har kommit så långt, men vem vet.

Neall Ford från ThoughtWorks var väl kanske ett av de största namnen, och pratade lite om hur bra det är att vara generös med sin specialistkunskap, och låta den rinna ut i andra delar av organisationen och i sitt övriga liv. Hans stora idol Richard Feynman var på duken i stora delar av hans presentation, då Feynman löste många olika problem, trots att han egentligen var specialist inom ett givet område. Poäng efter poäng handlade om hur man kan flytta en lösning inom en domän in till en annan.
Även om det är omöjligt att jämföra sig med geniet Feynman, kan det vara en bra tankeställare.
Neal har släppt en bok som täcker detta ämne fullt ut som heter: Presentation Patterns (http://presentationpatterns.com/).

Lunch

Efter lunch halkade jag för sent in i en snabbföreläsning, quickie, om Arquillian. Mha Arquillian och ShrinkWrap, byggde han ihop en snyggt och prydligt unit-test där data-sourcen bestod av lite vad man ville. I hans fall var det bl.a. en simpel textfil som beskrev tabeller med data.
Klart smidigt då man vill mocka data, vilket man ju gör typ hela tiden i sina integrationstester.

Nästa quickie var om JMS 2.0 av Nick Wright från c2b2 consulting. Han beskrev i korthet alla smaskiga nyheter i JMS 2.0. Han tyckte det var dags att fräscha upp saker, JMS 1.1  har levt i ca 10 år nu. Bland annat bygger jms nu ut de delar som massor av andra ramverk byggt ovanpå jms, eller parallellt med. Exempelvis finns nu stöd för Java 7 Autoclosable och ett betydligt kompaktare och snyggare API, som absolut ger JMS en konkurrensfördel mot andra aktörer. Vidare finns batch-delivery, delivery-delay och async-delivery. P2P och Pub-Sub måste implementeras av API:et iom 2.0. På det stora hela ser det riktigt modernt och bra ut, blir kul att testa.

Java 8

Oracles Joseph Darcy hade sedan sin presentation om Java 8.
Här fick alla reda på att det var dags att skynda på, då slutdatum för Java 1.6 är bara 4 månader bort. Lustigt nog tycker jag att Java 7 fortfarande är rätt buggig, och G1 har ju precis blivit klar. Jag tror 1.6 kommer få leva lite till, men det är bara min teori.
Joseph försvarade och förklarade hur Oracle tänker när de gör olika typer av teknikval och vilka olika nivåer av kompatiblitet som måste efterlevas.
De har i praktiken tre dimensioner; source-, behavioral- och binary-compatibility.
Intressant nog har de nästan aldrig brutit alla tre dimensionerna tidigare, men det blir det ändring på iom Java 8.
Java 8 kommer bygga in default-methods på interfaces för att möjliggöra interface evolution, dvs vi kommer få traits in i java till sist, inga nyheter här.
Det mest spännande han tog upp var hur de valt att implementera lambda uttryck.
Istället för att utnyttja statisk kompilering, dvs använda antingen syntaktiskt socker och köra med anonyma klasser undertill, eller utnyttja MethodHandles, valde Oracle att göra detta helt i run-time.
Detta görs via den i Java 7 introducerade invoke dynamic (indy), vilket visar sig passa aldeles utmärkt in i deras val att göra tillräckligt stora ingrepp för att lösa problemet, utan att skapa en situation de inte kan komma ur i framtiden.
Det fiffiga med att använda indy är att hur lambdas faktiskt plockas fram, det blir en implementationsdetajl som Oracle kan ändra i framtiden om de har lust, mycket smart.
I Java 8 kommer ditt anrop till en lambda sättas upp första anropet, för att i följande anrop anropas i praktiken med samma prestanda som vilken vanlig metod som helst (han visade lite lovande grafer på detta).

Vertx.io

Nästa presentation var av Tim Fox och handlade om vertx.io.
Detta hade jag redan lite kunskap om tidigare, och det var kul att höra lite mer om detta lovande ramverk. Passade även på att ställa lite väl valda frågor till Tim efteråt.
Vertx.io löser ett ganska vanligt problem som dagens Web 2.0 appar måste lösa, nämligen en smidig kommunikation mellan server tillbaka till klienten, dvs comet, ajax-push osv vad alla namn kan tänkas vara.
Serverkod körs i en enkeltrådad event-loop, likt node.js, all kommunikation görs via en eventbus (hazelcast). Det fiffiga är att även klienter kan anropas på samma eventbus, gömt för app-utvecklaren.
Klienten har tillgång till att inkludera vertx.js-javascriptet, och kan därefter lyssna och ta emot json-data via denna event-bus. Klienten kommer utnyttja websockets om browsern stödjer det, eller använda i nedstigande ordning; SockJS, long-polling, timed-polling.
Jag tror vi kommer se mer av detta ramverk, han är trots allt backad av VMWare.

Mäss-mingel

Efter detta var det mingeldags. JetBrains och Spring fick mestadels av min tid. Jag är numera kändis på JetBrains hemsida, då deras kameraman sprang runt och ville fånga alla olika nationaliteters beröm. Det kommer komma en film där de klipper ihop olika språk som berättar hur fantastisk deras IDEA är.

Spring Cloud Foundry blir en ny konkurrent inom PaaS. Deras setup är mycket lik Amazon EC2, där de i princip har ett appmoln med tomcats, riak, mongodb, mysql, postgre etc.
De har en fin plugin till eclipse och IDEA 12 har en plugin klar i pipan.
En fiffig feature är att om man har en spring-applikation, kan CloudFoundry autokonfigurera och injecta bönor med dataSources rakt in i din app, autoconfig kallade de detta, verkar ganska smidigt.

Torsdag

Keynote

Keynote-dags igen, Googles tur att skryta lite och Tim Brady stod för vocals.
Google har gjort en rad förbättringar och förenklingar i GAE/J som verkade lovande.
Maven och jenkins-integration och möjligheta att auto-deploya ett bygge till GAE/J smidigt direkt efter success i jenkins. Bra för continous deployment.
GAE/J har nu traffic-splitting så att man smidigt kan lyfta över lite trafik åt gången till sin nya version, lite live-testning a’la FaceBook, smidigt.

Tim var näst intill aggressiv i sitt framförande om hur viktigt säkerhet är på nätet, och hur viktigt det är att vi utvecklare tar ansvar för våra kunders data.
Han praktiskt taget skrek ut: ‘ANVÄND HTTPS’, varefter han promotade 2-step-verifcation, och att alla borde använda det. Han promotade sedan OAuth2, och tyckte att hela världen helst skulle logga in via deras SSO-lösning, och inte någon annan. Man skulle absolut inte skriva en egen login, då det var svårt och skulle bli hackat for sure.
Hur läskigt ett internet där alla loggar in via OAuth2 än må vara, verkar det vara en bra och säker lösning, speciellt tillsammans med deras nya Account Chooser, som enkelt gör val av olika OAuth2-leverantörer enkelt.
Efter detta var det en kort intro till Dart. Dart löser samma problem som JetBrains Kotlin och RedHat Ceylon enligt mig, speciellt eftersom det ännu inte ens kör i Chrome, utan endast i en special chrome-variant kallad Dartium. Alla tre språken är snygga, bra, genomtänkta och har lambdas etc, ser ingen klar vinnare här ännu.

Blandad kvalitet

Halkade sedan snett in i vad jag trodde skulle vara en intressant presentation om G1.
Det visade sig vara en Jaromir Hamala, som borde gå en ordentlig engelska-lektion (något år eller två). Tyvärr kunde man inte se denna föreläsning, och det fick istället bli lite BigData och Hadoop.
Costin Leau presenterade en rad olika snygga wrappers för att få in Hadoop-algoritmer i ditt Spring-projekt.
Antingen kan man använda Apache Pig, PigRunner och specifikt PigTemplate. Pig utnyttjar ett speciellt query-språk kallat Pig Latin för att beskriva dina map-reduce steg. PigTemplate trycker in och sätter upp en Hadoop och en Pig i ditt spring-projekt, smidigt.
Alternativ två som demonstrerades var HiveTemplate, som i praktiken gör samma sak, men där utnyttjar man Hive och specifikt HiveSQL som query-språk.
HiveSQL är nästan som SQL, men med lite extra socker för att göra allt distribuerat och map-reducigt. Verkar vara enklare att använda och hans exempel med HiveTemplate såg bra ut.

Costin visade sedan hur man med Spring Batch, Spring Integration och någon av tidigare valda tekniker kunde bygga en snygg graf av händelser för att distribuerat parsa stora mängder loggar.

Flera olika sources i Spring Integration samlade loggar, som skrevs till en fil eller katalog, varpå dessa processades av olika steg m.h.a HiveTemplate, mycket snyggt.

Project butter

Chet Haase och Romain Guy, Google, förklarade sedan varför deras operativsystem Android alltid har haft lagg och vad de kalla ‘jerk’, vid t.ex. scroll av table-views, drag av ikoner över skrivbord etc, och hur de löst problemen nu till sist, iom project ‘Butter’ i android 4.1 Jelly Bean.
Inte en dag försent enligt mig.
En mycket teknisk genomgång av tripple-buffering och annat ganska intressant, men det mest intressanta var deras tooling de presenterade.
De har byggt en fin uppsättning verktyg för att hitta och identifiera exakt vad som sker i Android då visuella problem uppstår.
De hade live-kodning, som så många andra under Devoxx, och visade DumpSys, SysTrace, TraceView och Allocation Tracker.
Allocation Tracker är ett program jag tycker Oracle skall skriva ihop och skicka med i deras JDK, nu måste man ju köpa dessa produkter separat.

Ceylon

I ett extrainsatt nummer presenterade sedan Gavin King RedHat’s senaste språk, Ceylon.
Han var inte alls förberedd, då han blivit inkastad i sista stund.
Det blev en enminuters intro, sedan rakt in i eclipse och deras egengjorda Ceylon-plugin.
Ceylon är starkt typat och kompilerar till javascript och bytecode.
Gavin valde att lägga hela tiden till att visa hur man bygger tupler för hand, och hur man kan med det kraftfulla typsystemet skapa listor som består av olika typer, t.ex. List<String, Integer, Float>, och hur man sedan kan skapa en operator som kan addera en sådan lista med en annan sådan lista.
Ganska trevliga saker, enkelt att förstå, och framförallt extremt bra plugin som meddelar typfel direkt. Ceylon gör otroligt intelligenta statiska kompileringar, han har gjort ett bra jobb, skall bli intressant att testa.

Java posse

Efter detta blev det en stunds avslappning med en öl i hand, då JavaPosse 2012 spelades in live i en av salongerna. Kanske en aning utdraget, men roligt trots allt.

Tillbaka in i allvaret igen fortsatte Daniel Spiewak att förklara hur han gått till väga när han skapade sin kompilator till sitt språk han utvecklar på Precog.
Energisk i sitt framförande vandrade han fram och tillbaka barfota i sina slitna jeans framme vid podiet, denna mannen brann för att koda avancerade saker, mycket inspirerande.
Han hade tagit fram en konstruktion som han kallade Atom. Namnet kom av total idébrist enligt Daniel.
En Atom var en klass, med en metod, som utifrån sett var helt pure, men internt var mutable.
Ganska intressant lösning på problemet att populera noddata i ett spanning tree, när kompilatorn vandrar nedåt. Ärvda attribut är sällan ett problem men när man har ett språk som hanterar lambdas som skall evalueras i ett senare skede är det problematiskt. Den enklaste lösningen är att vandra genom hela trädet (grafen) igen då ett lambda påträffas. En annan är att skapa denna typen av lazy-init-data-holders.
Klart intressant, men man var helt slutkörd efter att ha dels lärt sig scala, och dels tagit upp grafteori igen, allt på mindre än 40 minuter.

Spring 3.2

Josh Long presenterade sedan nyheter med Spring 3.2.
Han ägnade stor tid åt att repetera vad 3.1 innehöll men kom till sist till 3.2.
Bland nyheterna kan man hitta async processing i Servlet 3.0 som vi väntat på i ca tre år. Josh Long är för övrigt ganska kort.
De har byggt ut stödet för mockning vid test, och lagt in en rad nya mock-objekt och byggt på de gamla en del.
Det finns nu generic factory methods, som möjliggör att mockning blir korrekt i samtliga tester, om man utnyttjar Mockito eller EasyMock.
En annan trevlig nyhet är det utbyggda stödet för att testa hela web-appen smidigt med deras junit-runner.
Allt är stiligt konfigurerat, med convention over configuration, och flertalet olika mock-mekanismer går automatiskt igång för att testa dina controllers på ett smidigt sätt.
Även lite förbättrade konfigureringsmöjligheter vid test-setup har tillkommit via ContextInitializers.
Tester kan nu även ha hierarkier av spring contexts, vilket inte fanns tidigare. Detta möjliggör att ha samma konfig som i produktion om man så önskar.
Sammantaget kan man säga att VMWare har lagt mesta energin på att förbättra för testbarheten i spring, vilket vi givetvis välkomnar.

Bästa presentationen

Eftersom inspelningsutrustningen inte fungerat, körde sedan Chet Haase sin presentation igen, som handlade om framtidens Processer.
Detta var bland det roligaste jag sett i form av presentation, av en smart och karismatisk programmerare.

En hand-jagad version av hans presentation finns här: https://www.youtube.com/watch?v=b8H90xr61FY

Med lite belgisk choklad under armen lämnar vi Antwerpen med dess fantastiska katedral bakom oss för den här gången.

Sammanfattning

Lite allmäna reflektioner om konferrensen gäller hygien och könsfördelning, dock inte sammanhängande.
Det var 4% kvinnligt deltagande i år, 4%. Det är lite, och det påpekades av flertalet arrangörer och talare. Det lite ironiska är att Stephan i sin keynote frågade publiken om hur många som ‘doesn’t have an erection now?’ när han visade sin nya funktion i parleys.com. Det kan ju vara plumpa skämt som detta som skrämmer bort våra kvinnliga programmerarvänner kanske.
Vidare till hygien då. Belgare och fransmän och deras cigaretter. Det röks, och inte lite, och inte långt utanför där alla sitter.
Faktum är att det röks precis utanför byggnaden, och all denna rök letar sig med enkelhet in via ventilation och öppna dörrar.
Vidrigt.

De hade styrt upp WiFi riktigt ordentligt, och trots 3400 deltagare fungerade WiFi…ibland. Inte första dagen, men andra fungerade det utmärkt…ish.

Alla fick ett åkband som innehöll ett NFC/RFID-chip. Detta kunde man utnyttja till att rösta Upp eller Ned efter man sett ett bidrag. Vidare kunde samma chip utnyttjas till diverse mat-utdelningar, öl-utskänkning, omröstningar och annat i olika montrar, genom att de scannade med en tablet eller telefon. Detta fungerade imponerande väl och gjorde allt betydligt mer strömlinjeformat än tidigare konferrenser.

Talarlistan var inte speciellt stjärnspeckad men konferrensen bjöd ändå på mycket matnyttigt och intressant, och sammanfattningsvis var den bra arrangerad i sin helhet.

 

1 Kommentar

  1. Peter 6 år sedan

    Trevligt recension. Underhållande! 🙂

Lämna ett svar

E-postadressen publiceras inte. Obligatoriska fält är märkta *

*

Denna webbplats använder Akismet för att minska skräppost. Lär dig hur din kommentardata bearbetas.