Archive for category Events

Writeup JFokus 2012 – Tutorialdagen

Idag var jag på JFokus tutorialdag. Två sessioner på ca tre timmar vardera. Jag valde Continuous Delivery med Neal Ford och HTML 5 med Robert Nyman.

Continuous Delivery

Ska man sammanfatta den första sessionen med en mening, så kan man säga att den troget följde boken med samma namn (som jag kommer att recensera på techbookreader i dagarna). Det jag saknade i boken blev inte förtydligat under presentationen, men jag kunde ställa mina frågor till Neal efteråt, så det löste sig. Jag undrade hur man får till static, pinned, och fluid dependencies på riktigt och hur man ska förhålla sig till databasdeltan och branchning. (Svaren är: använd Maven, skriv automagiskt om POM:en vid misslyckat bygge, respektive ”gör det inte”.)

Som sagt, inget supernytt för den som har läst boken och fått jobba med liknande saker, men några takeaways blev det:

CD handlar om att teamat måste kontrollera mer av sin omgivning. Infrastruktur och databaser kan inte längre kontrolleras av andra. Kanske uppenbart, men ganska axiomatiskt. Detta gäller även ”the last mile”, d v s slutintegration, utrullning, Q/A. Nu måste man ta hand om allt. Stackars de utvecklare som bara vill koda…

Komponenter: Om man inför komponenter på rätt ställen kan man göra om arkitekturförändringar till design.

Bra nyckeltal:

  • “Hur lång tid tar det att få ut en rad kod i produktion” (Mary Poppendieck)
  • Ledtid är måttet på IT:s effektivitet (tämligen självklart, men jag gillar absoluta utsagor formulerade som korta meningar)

Sköna citat:

  • Om drift: “We invented computers to do simple repetitive tasks. Now we hire people to do simple repetitive tasks on computers”
  • Merge ambush = Man får en massa förändringar från trunken, så att ens bygge förstörs totalt. Påträffas typiskt vid branchning när en annan branch ”har vunnit”.

Jag måste läsa:

Mjukvara att testa:

  • Puppet har släppts för Windows.
  • ThoughtWorks verkar ha ett eget CI-program som heter Go

Tal att se:

HTML 5

Mekanisk presentation, där mycket HTML 5 visades. För en newbie som jag var det bra. Jag tyckte själva presentationen spretade. Första delen handlade om semantiska element, andra om forms och tredje om API:erna, men den röda tråden inom varje block var inte självklar. Baserat på denna presentation och några enstaka från andra konferenser drar jag slutsatsen att HTML 5 har en bit kvar. Jag kan givetvis ha fel, men detta är inte mitt fokusområde.

För det första verkar åter igen browser-tillverkarna göra lite som de vill. Gillar de inte en viss del av standarden, så struntar de i den (Microsoft om keygen-taggen [förresten, varför ska man ha en tagg för att generera nycklar???]), och vissa lägger till egna klasser eller tolkningar för att fylla ut gap, och hoppas att andra ska följa efter. Känner vi igen detta?

Form-elementet har blivit rejält pimpat i HTML 5! Mer input-element, t ex color, range, datetime, o s v och funktioner för validering, MEN utvecklingen av dessa är eftersatt, eftersom browser-tillverkarna tycker att prestanda och 3D är viktigare. Implementationen spretar alltså mellan olika browsers, och man måste fortfarande använda otippade JavaScript-lösningar på ställen där man helst hade sluppit.

Sen har vi allt det där med Web Sockets, Web Workers och local storage. Jag tolkar det som att man bokstavligt talat försöker uppfinna opertivsystemet: IPC, trådning och permanent minne. Kalla mig konservativ, men jag känner en viss oro. Det mest talande exemplet är Web Sockets. Jag vet inte mycket om dem alls, men tittar man på deras API, så verkar det vilja mimikera get gamla hederliga socket-API:t från UNIX. Jag kan tänka mig att det finns ett antal utvecklare som aldrig har arbetat med C under UNIX och detta API, och de förstår inte hur bra det är att det har abstraherats bort de senaste 10 åren. Nu ”uppfinner” man det i HTML 5 och JavaScript. Det är inte självklart att resultatet blir bra. Samma sak med trådning. Man har uppfunnit trådar i webbläsaren, medan resten av världen har börjat bygga abstraktioner runt trådar, eftersom trådning är svårt, eller programmera med funktionella språk. Lång rant.

Summa summarum, så lärde man sig mycket i alla fall.

Andra takeaways i punktform:

  • HTML 5 Doctor verkar vara en bra site att kolla in om man ska greja med HTML 5.
  • Man kan skapa egna attribut i HTML 5, så länge de börjar med ”data”. Kolla t ex här.
  • Vid.ly är en skön site om man behöver koda om lite video till olika format
  • Popcorn.js: gulligt ramverk för att lägga på  sidocontent samtidigt som ett videoklipp spelas.

2 Comments

DevCon 11 writeup

Karlskrona

Gör en sån där liten sammanfattning av ett event jag har varit på. Denna gång var handlar det om DevCon 11, som hölls i Karlskrona. Konferensen varade två dagar och var av det mindre slaget, kring 100+ deltagare. Jag måste dock säga att det var en av de bästa konferenser jag varit på! Storleken gjorde att man verkligen fick tid att prata med folk, lära känna nya människor och utbyta idéer och erfarenheter, till skillnad mot att trängas med 1000+ personer, köa till toaletten och slåss om fikat.

Konferensen hade två spår ”Software Craftsmanship” och ”Technology”. Det som ingick i respektive spår var lite slumpmässigt, men det gjorde ingenting. Arrangörerna hade verkligen lyckats få dit bra talare och fick till en bra spridning på ämnena.

Ur en talares synpunkt fungerade allting väldigt väl. Tekniken funkade, bra volym på micken, bra moderering och tidhållning. Alla skötte sig med tiden också J

Själv fick jag jättemycket behållning av dessa två dagar. Inte nog med att jag träffade väldigt många riktigt duktiga personer; jag såg till att pricka in ämnen som jag inte kunde så bra, så marginalinlärningen blev hög.

GOD RESULTS

De föreläsningar jag av olika skäl fick mest behållning av var:

  • Keynoten av Joakim Jardenberg. Inspirerande och lite skrämmande för en som inte är med i Facebook.
  • Managing complex projects with Maven 3, Lennart Jörelid
  • Exploratory test design, Rikard Edengren
  • Clojure – Data Structures and Concurrency Mechanisms, Ulrik Sandberg (via en komprimerad privatsession, eftersom vi talade samtidigt. Tack!)
  • Bägge av David Jacobys säkerhetsföreläsningar
  • OSGi – 10 years ahead if their time, Christer Larsson
  • Asynchronous  Programming with Node.js, Anders Janmyr
  • Is your REST Assured, Johan Haleby.

Alla andra föreläsningar, som jag var på, var också mycket bra, men jag kunde ämnet, så de tjänade mer som kvitton.

Sammanfattningsvis kan jag konstatera att jag fyllde på med introföreläsningar i teknologier jag inte kan så bra: Node.js, Clojure, OSGi.

Den stora ögonöppnaren var nog ändå att jag började förstå vad polyglot-programmeringen går ut på och varför den är bra. Jag har länge avfärdat en del språk och paradigmer som kuriosa och leksaker som inte skulle klara av enterprise, men efter denna konferens får jag nog omvärdera mina åsikter.

No Comments

Write up Agila Sverige 2011

Jag har som många andra branschkolleger deltagit på Agila Sverige i dagarna. Tyvärr missade jag halva första dagen, men man måste ju arbeta, inte bara ha kul. Det hade varit typiskt mig att detaljrecensera alla presentationer jag har varit på, men idag låter jag bli och fokuserar på helheten.

Helhetsintrycket var väldigt positivt. Det bästa med årets konferens var att många talare var väldigt väl förberedda och ansträngde sig väldigt mycket för att göra sina tio minuter till något riktigt bra. Sen är det klart att man bara hinner att slänga ut några teasers på den korta tiden, men det sätter klart fart på tankarna hos de som lyssnar. Måste också säga att jag tycker blixttal är en speciell sport, eftersom man verkligen måste hålla sig till sina tio minuter. Att få till det är en rolig utmaning alla borde pröva.

En annan sak som var sjukt bra var bredden på ämnena. Visst dominerade vissa ämnen, men att slänga in lite monader och tankar kring utvecklingssamtal var väldigt lyckat. Det är också kul att känna igen folk från förra året, eller snarlika sammanhang. Cred till arrangörerna helt enkelt!.

Nej… Jag kan inte låta bli… Måste recensera på något sätt. Detta är talen jag minns:

Vad händer i produktion, Mårten Gustafson: hitta.se har koll på sina program när de kör. Tydligen är Metrics ett bra verktyg för detta.

Sustainable pace – lärdomar efter 100 miles, Torbjörn Gyllebring: Sköna metaforer till proffslångdistanslöpning.

En ung utvecklares första steg på osäker mark, Soroush Hakami: Förväntade mig samma presentation som Dynabyte körde förra året med en junior utvecklare. Positiv överraskning och talaren hade några bra take aways.

Lägg ner utvecklingssamtalen, Peter Antman: Bra kontrast till andra tal.

Är visionen om ”BDD för alla” ett evolutionärt felsteg, Andreas Ekström: Kul att någon börjar kika på om man kan slakta denna heliga ko. Bra analys av nuläget i BDD-lägret.

Behövs automatisering på alla testnivåer, Jonas Hermansson: Tyckte mest att talaren hade sunda värderingar och verkade kompetent (han tyckte som jag :) )

Enkla monader, Måns Sandström: Monader exemplifierade i Erlang. Behöver inte säga mer :)

Perfection Game Retrospective, Hans Brattberg: Exempel på bra sätt att ge och ta emot feedback. A keeper.

En case study i ”subtle control” mha CDE, Dan Bergh Johnsson: Dan berättade på sitt kluriga sätt hur han manipulerade ett teams verklighet.

Från backlog till produktion på två veckor – agil testning på Tele2, Örjan Bjermert: Där jag är nu fungerar inte testning och Scrum. Här var en kille som kunde berätta om hur man gör för att få det att funka.

Oops… Det vart visst några smårecensioner, men faktum att jag kom ihåg så många säger väl en hel del om kvaliteten.

1 Comment

Javaforum 14/9

Three speakers this time, and all good! I’m going to keep two of the summaries short, because the last one was by far the most interesting.

Understanding adaptive runtimes
Two presenters from JRockit explained what a runtime is, and that they have written a book about JRockit. I’m most likely going to buy it soon. The book is supposed to cover not only JRockit, but some more general topics in the field of Java and runtimes.

Now, I’ve been to a couple of JRockit presentations throughout the years, so I’m sort of keeping up at high level with what they’re doing. In this presentation they didn’t talk about their deterministic GC, but about the monitoring capabilities and requirements on runtimes. Cool technology, knowledgable presenters, but not a very new topic.

Introduktion to Terrastore

Two commiters from the Terrastore project gave an overview of what Terrastore actually was. Now, running the risk of having mistunderstood something, it goes like this:

Terrastore uses Terracotta to provide clustering for a document-based database. JSON-structured documents are stored in a distributed environment and can be queried using XPath and XQuery.

Personally, I haven’t figured out what these databases are good for yet, having only experience from first normal form heavily indexed NoSQL databases, but it will come to me I’m sure.

The Professor and the Entrepreneur

This presentation was given by Mary Poppendieck! How cool is that? Having her here in Sweden. It was very informative, and again there’s the risk of mistunderstanding, but this is as I have perceived it:

In order to succeed with product development (of any kind), two types of roles are required: A Product Champion and a Competency Leader. The Product Champion is both a marketing lead and a technical lead, while the Competency leader in conjunction with small unit management skills forms the Line Manager role. At the roughest level, the Product Champion knows what to do and the Competency Leader knows how to do it. The Product Champion assembles a business team that makes sure that the product succeeds and the Competency Leader is an expert in a critical technical field. There was more to it, but the central take away was the concept of Product Champion and Line Manager.

This setup has some consequences. For example, product architecture is the domain of the Product Champion, and Mary was clear when saying that she wouldn’t bet her money on an evolving architecture, if the product were to have a long life span. Another interesting consequence was that Scrum Masters were classified as process leaders, and were not needed according to this division of labour/responsibility (in the long run). Their responsibilities already fit in the Line Manager role.

While not being a central point, I reacted to that she said that where she worked, her manager could always do her job. That’s quite an intriguing thought!

This summary doesn’t give the presentation justice, but it does include my take aways.

No Comments

Agila Sverige 2010

Den 10-11:e maj hölls en konferens i agil anda, men namnet Agila Sverige 2010.

Konferensen var uppbyggd så att första halvan av dagen bestod av blixttal på 10 minuter och den andra av open space-diskussioner. Rent organisatoriskt var konferensen väl genomförd, sin enkelhet till trots.

Jag var rätt nyfiken på vilket crew som betrakade sig som agilt, så det var väldigt givande att se vilka som var där. Ett visst överlapp med Javaforum-folk, och ett antal Scrum-masters, kan man väl sammanfatta det med.

Om man ska måla med breda penseldrag och spotta trender så konstaterar jag följande:

1) Ingen talar Scrum längre. Nu är det Lean som gäller. Det intressanta här är att ingen direkt definierade Lean, och den allmänna uppfattningen verkade vara att det är det där braiga agila, det där självorganiserande. Allt blir bra om man kör Lean. Ok, jag kanske är lite färgad, men om vi har otur kan det bli så att alla unga Scrum masters som vill stimulera sig själva och börjar köra “Lean” kan ta branschen tillbaka till cowboy-kodning. Det jag ser som problematiskt är att Scrum är en väldigt väldefinierad process. Antingen gör man det, eller så gör man det inte. Med Lean är det lite “anything goes”. Vi får se.

2) Som sagt. Kanban löser alla problem :)

Sen kan man alltid roa sig med att tycka till om presentationerna. Ganska många har bloggat utförligare om dem, så jag kör med one-liners.

Dag 1:

Teknisk skuld, backlog och produktägare

Mina kolleger Oliver och Dan. Roligt genomförd med lagom mycket punchline.

Agile Manager

Kommer inte ihåg. Det är nog inget bra betyg.

When Worlds Collide – Agile möter gamla världens belöningssystem

Ganska spekulativ utan punch.

Vim

En presentation om editorn. Bra och roligt format. Visste inte att Vim var så kraftlullt. Oväntat.

Let’s make a game!

Avalanche delade med sig av lite erfarenheter kring utveckling som kräver specialiter. Ny erfarenhet.

Istället för kund-metaforen: joint venture

Väl genomförd presentation med lagom mycket slutkläm (som stämde överens med titeln)

Agil Dokumentation – Det som behövs men inte mer

Hmm… Den satte sig inte heller.

Äntligen tror jag att jag förstår vad Mocks är bra för…

En demonstration av mockning. Absolut ingen rocket science, men ett live-demo som funkade och slutade på sekunden. Hörde sedan att den var förinspelad. Jag blev lurad i alla fall.

Så blir du en skicklig förhandlare

Grön och röd zon. Konflikthantering från Harvard. Lite tid för stort ämne.

Är det Agilt som gäller, eller?

Talaren pratade om vilka faktorer som gör att agilitet blir mer och mer naturligt och sa att han sökte jobb. Helt ok tal och klurig pitch. Stilpoäng.

Code Reviews

Mattias hade tio minuter på sig att ge sina tips om code reviews. Bra innehåll.

Agila kontrakt – Hur säljer vi in det till kunderna

Money for nothing, change for free. Det där med agila kontrakt tål att dras om och om igen. Bra presentation.

Första erfarenheten efter examen

Precis som titeln utlovar. Talaren hade ödmjuk inställning till hur duktig man är som nyutexad. Önskar att man var sådan skälv :P

Dag 2:

Praktiskt ledarskap i tavelmötet

Kontentan var att man skulle lägga en blöt filt över agressiva argument. Hur det skulle göras lyckades jag inte få med mig.

BDD – så knyter vi ihop säcken!

Nja… Acceptanstestdriven utveckling med Cucumber, men varför inte.

Bättre Scrum i stor skala med Kanban

Betonade visualisering mycket och gav inspiration. Why not?

Skala agilt – hur kan anatomier vara till hjälp

Visade hur Ericsson använde system- och programanatomier för bättre backlog-arbete. Mitt favorit-tal faktiskt.

Agila chefer – What’s in it for me

Väl genomförd argumentation kring vad chefer tjänar på agilitet.

Olika typer av test doubles (mock/stub-objekt) och hur de kan implementeras

10 minuters sammanfattning av ett kapitel ur “xUnit Test Patters”.

Lean arkitektur

Väl genomförd presentation, man jag missade nog hela innehållet.

Hur ett Gantt-schema gjorde projektet till ett misslyckande

Kul ämne och väl presenterat. Visade på flera brister och “features” hos Gantt-scheman. Kul.

Management by scrum

Berättade om ett intressant experiment med att få en ledningsgrupp att arbeta enligt Scrum-liknande principer. Kreativt.

Var en guldfisk och undvik kollaps

Talaren uppmanade oss att undvika komplexitet till varje pris. Sant, men lite onyanserat.

Sedan kastade jag faktiskt in handduken. Det blev lite information overload. Första dagens open space-diskussioner var givande. Lite osvenskt att det faktiskt kom igång.

No Comments

Testforum 2010

Jag har varit på en konferens som hette Testforum 2010. Den varade i två dagar och innehöll tolv presentationer. Tolv presentationer är lite mastigt att sammanfatta, men några highlights kan man alltid dra.

Tele2:s och bwins talare var intressanta, eftersom de delade med sig av sina erfarenheter på ett öppet och professionellt sätt. Att höra hur andra gör är alltid lärorikt. bwin hade till exempel klarat att synkronisera många Scrum-teams arbete genom att införa två integrationsteam, som satte ihop resultatet av alla teams arbete, och driftsatte det. Tele2 hade många system att hålla reda på, något 70-tal stycken, vilket krävde en omfattande teststrategi. Totalt elva typer av test behövdes.

Context-driven testing är testningens joker: man använder alla verktyg och erfarenheter man har för att göra bästa möjliga test. Till skillnad från det man gör i vardagen???

Nya metoder, förmodligen agila, kommer att sätta käppar i hjulen för testarna det kommande året för att de är dumma och elaka (metoderna, inte testarna). Intressant och visionär analys.

Saker som inte riktigt gick fram:

Modellbaserad testning… Vad är det? Efter 45 minuter förstod jag fortfarande inte vad det var, men man var rätt mosig i huvudet efter två dagar.

Test och configuration management i samspel. Ytterligare en föreläsning som swishade förbi helt. Jag förstår nyttan med att hålla reda på vilka artefakter och komponenter som hänger ihop med varandra i stora system och stora releaser, men något konferensämne var det inte.

Man ska kanske inte kasta sten i glashus, eftersom min presentation blev medioker på sin höjd. Jag var tidsoptimist och sumpade med 5 minuter. Det var onödigt stressig på slutet och jag missade några poänger. Jaja. Det kommer fler tåg.

Hur man än vänder och vrider på det hela, så var konferensen intressant. Att gå på en konferens för branschkolleger som gör nästan samma sak en själv är givande. Jag kan fortsätta generalisera och nämna några observationer.

Agila metoder är inte så spridda och etablerade som man tror. Många lyssnar fortfarande spänt på vad som sägs och hur andra gör. Intressant om man konsultar inom detta.

Testbranschen verkar inte särskilt dynamisk. Går man på en utvecklarkonferens, så får man reda på väldigt mycket nytt. Här verkar det inte hända så mycket, vilket för mig till den sista observationen.

Det verkar som om branschen, i alla fall i Sverige, har ett antal namn som vill värna om professionen och hålla den så långt borta från utvecklingen som möjligt. Med “utveckling” menar jag både programmering och liknande, samt evolution – framåt – framtid.

Tråkigt, eftersom jag själv tillhör skaran som tror att testaren kommer att samarbeta med utvecklaren i ett tvärfunktionellt team i framtiden. Inte i alla projekt och för alla produkter, men mer som regel än undantag.

No Comments

Jayways semniarium om Grails och Griffon

Tja… Det där semniariet var för två dagar sen. Är man världens sämsta bloggare, or what?

Var i alla fall på ett litet seminarium hos Jayway. Seminariet leddes av två danska Jayway-konsulter och var väldigt mycket hands on. Första halvan handlade om Grails. För mig som inte kan någon Groovy alls var det otroligt givande att få se det in action via Grails.

Grails är alltså Groovy on Rails, och fungerar likandant som Ruby on Rails. Tanken är att man snabbt ska kunna få upp en webapplikationen genom att dra fördel av bland annat Convention över Configuration (CoC). Stackmässigt ligger Grails ovanpå Java SE, Spring, Hibernate och Sitemap, och körs via Groovy. Tre ledande principer är IoC, CoC och DRY. Det ska vara enkelt att ladda ner, och bara kräva en JVM och några miljövariabler.

De kommandon vi fick se live var create-app <appname>run-appcreate-domain-class ochgenerate-all. Med detta fick vi se hur man kunde börja sätta upp en muskialbumsapplikation. Databasen Hsqldb används som default och scaffoldingen fungerade felfritt. Scaffolding är för övrigt en av de grejer som gör just Rails och Grails häftigt: genom att deklarera lite i koden skapas persistenta entiteter automagiskt. Tänk JPA-annotations. Genom att t ex deklarera en statisk lista med namnet hasMany kunde man upprätta relationer mellan entiteter. Hmm.

Grails har också ett eget skriptspråk för HTML. Varför nöja sig med JSP när man kan köra GSP?

Jaja. Det finns väldigt många sidor som kan sälja in och besrkiva Grails bättre. Istället kan jag fokusera på en liten verdict. Det fina med detta lilla seminarium var att vi var så få och att man oblygt kunde fråga allt, vilket också alla gjorde. Min fråga gällde hur pålitligt presentatörerna ansåg att ramverket var. Då och då såg man en stacktrace swisha förbi i serverkonsolen. Och tja, mina misstankar besannades. Grails är bra för RAD; för enkla webapplikationer, men man kanske inte ska bygga sitt mest affärskritiska system i det.

Oavsett, så var det en helt ok presentation, och väldigt givande för någon som var Grails-analfabet.

Griffon-presentationen handlade om Groovys försök att underlätta Swing-programmering. När jag sedan läste på hemsidan stod det “A Grails-like Rich Internet Framework”. Konstigt.

Det som demonstrerades var i alla fall väldigt Swing-aktigt. De problem som lyftes fram var att Swing-applikationer modeller inte representerar domänmodellen, utan applikationen. Jag har inte reflekterat över det. Kanske. Vidare betonade killen som hade presentationen hur viktigt det är att tråda rätt i Swing-applikationer och hålla koll på om man arbetar i Event Dispatcher Thread, eller någon annanstans. Sant, och kul att höra som icke-Swing-intresserad.

Det som demades var i alla fall en implentation av en konsol som kude köra Groovy-kommandon. Vi fick se hur @Bindable användes för att notifieringar mellan komponenter och modellen, och hur snitsigt man kunde växla tråd med en enkel closure. Sedan vet jag inte om jag tycker att den färdiga applikationen blev så snygg. Syntaxen blev rätt kladdig, speciellt kring trådarna och de “språkförenklingar” som skulle skydda oss från Swings kod, genererade ganska svårläst kod, men det kanske är en fråga om vana.

Sen är ramverket i version 0.2…

Kul att se även detta, men givet Griffons/Groovys syntax tänker jag ändå “a fool with a tool….”

No Comments

Javaforum 2009-12-01

Var åter igen på Javaforum. Det var väldigt bra denna gång. Kort redogörelse för innehållet ur mitt perspektiv:

Uppsnappat på Devoxx 2009, Mattias Karlsson
Javaforums ordförande berättade själv om nyheterna i JDK 7. Hann inte anteckna allt, men här kommer en digest:

Project Jigsaw: gör Java mindre, slica i mindre beståndsdelar. Ta bort onödigheter som t ex Corba. En ny JDK innehåller mer än 4000 klasser! Vi brottas fortfarande med JAR/classpath hell. 
* Ny GC
* NIO.2: File är en dålig abstraktion. Massa metoder returnerar booleans. Stöd saknas för filattribut, samt elementära operationer som copy och move. Detta skulle fixas.
* Ny instruktion i JVM:n. Invokedynamic är rätt söndertjatat på Javaforum, men det skulle tydligen med i alla fall.
Project Coin: små språkändringar. En gång per halvår kollar jag listan över vilka små ändringar som ska med. Den ändras alltid. Nu är det i alla fall switch på strängar, bättre läsbara litteraler (man lägger t ex till underscore i bitmasker), automatisk resource management (man skriver new InputStream() eller liknande i början av try-satsen, så stängs resursen automatiskt) och enklare generics (List<> list = new ArrayList<String>) som gäller. Förvånande var att utökad exception handling inte kom med, men den kanske skulle med i alla fall, å andra sidan.
Type annotations
* Concurrency & collections

Mattias gjorde en bra presentation. Pluspoäng för engagerande av publiken, då vi fick röstgissa om vilka features vi trodde kom med. Också plus för de tillfällen då han inte kunde svara och vågade säga att han inte visste.

Rich web applications in plain Java without plugins or JavaScript, Joonas Lehtinen 
Tänkte inte säga så mycket om denna. Vaadin är ett ramverk för att göra desktopapplikationer som kör över webben. Joonas sålde in det med följande argument:
* Har många widgets
* Ajax
* Funkar med alla webbläsare, även IE 6
* Bara Java
* Serverdriven
* Inga externa dependencies

Man ska inte köra Vaadin om: 
* Man har “read only” applications, alltså sidor utan interaktion
* Vill scripta i Javascript
* Har mer än 100000 samtidiga användare (eller hur :P )

Vaadin är alltså ett server-RIA ramverk, där applikationens tillstånd finns i sessionen, och klientsidan genereras med hjälp av GWT. Det där med 100000 samtidiga användare får man väl ta med en nypa salt.

Joonas visade hur produktiv man blir med Vaadin, och jag måste säga att jag gillade demon. Att köra live-demo är modigt i sig. Han fick upp en helt ok applikation efter tjugo minuter: En lista över html-filer i en katalog, samt preview och redigering av dessa.

Efter det där betraktar jag Vaadin som ett klart alternativ till webbapplikationer som kör över intranät.

Clean Code – is it worth the time and money to write your code so it is trivial to understand and maintain, Thomas Sundberg, Agical
I presentationen av sitt ämne gjorde Thomas det ganska tydligt att han skulle stödja sig på Clean Code-boken. Och nog gjorde han det! Om jag minns rätt var alla bilder, rubriker och exempel tagna direkt ur boken. Han presenterade okritiskt materialet och menade på att han tyckte så. Visst är det lätt att hålla med Uncle Bob om stora delar av boken, men att så okritiskt sammanfatta en bok och presentera den för så många personer är lite väl tråkigt. 

Minus^2.

No Comments

Javaforum tema Maven

Jag har haft lite att stå i och inte haft tid att skriva om detta tidigare. I alla fall, så har jag varit på Javaforum med temat Maven i torsdags (3 timmar Maven dagen efter 3 timmar SAP, tjoho!!!). Det som var speciellt med detta Javaforum var att det gästades av Jason van Zyl, grundaren av Maven. Totalt hölls tre presentationer:

Maven Reloaded, Jason van Zyl

I denna presentation berättade Jason vad som skulle vara nytt i Maven 3.0. En sak han nämnde ofta, men som jag tycker är lite feature creep var “polyglot POMs”, alltså att man kan skriva POM:ar i flera olika språk, t ex Groovy, YAML någon jobbade på Scala-stöd m m. Dock återstod en hel del interoperabilitsproblem. Vill man ha en Groovy-POM om man jobbar i Java?

Gällande själva koden menade han at Maven 1 “was a disaster”, Maven 2 gick att använda, medan Maven 3 var det som gällde.
Hittills hade drygt 2000 mantimar lagts på att gå från 100 till 500+ integrationstester och reducera koden med 1/3. Detta kunde åstadkommas eftersom mycket rapporteringskod flyttades ut från kärnan. 

Jason berättade också om att de försökt anpassa Maven till de faktiska beteendemönstrena användarna uppvisar. Ett problem han såg var att de flesta som jobbar med Maven checkar ut hela källkodsträdet, istället för nåt par enstaka moduler, som det tydligen var tänkt att man skulle göra. 

M2Eclipse var stort. Det var det enda riktiga stödet för Maven i Eclipse, och Jason återkom ofta till att berätta om pluginen. I och med att POM:en gjorts mer flexibel, fått en egen intern livscykel och optimerare, har det blivit viktigare att öppna upp för inbäddning, integration med IDE:er, något M2Eclipse varit testplattform för. Felrapporteringen har gjorts bättre och 112 standardfel i POM:en har försätts med externa hjälptexter och förklaringar. 

Just det… Får inte glömma att det finns fyra gratisböcker om Maven hos Sonatype.

En sak till. Jason nämnde också SAT4J, ett bilbliotek för lösning av SAT-problem. Inte för att det har något med Maven att göra, men det är kul att komma ihåg.

Site Creation with Maven, Dennis Lundberg

Dennis är committer för site-pluginen och talade om sitt ämne. Denna presentation kändes lite off för mig som inte skapar siter för Maven-projekt. Den innehöll säkert mycket matnyttigt om man är inne i problematiken, vilket jag inte är. Jaja. Jag får återge Dennis viktiga punkter i alla fall och hoppas på att det blev halvrätt.

* Site-pluginen konfigureras i <build>. Muy importante.
* Nybörjare bör använda APT-formatet för dokumentationen 
* Nu finns en livscykel för pluginen: pre-site, site, post-site, site-deploy
* Det finns plugins som är både bygg- och rapporteringsplugins.
* Det är enkelt att göra egna skins 
* Project report pluginen har stöd för Track och Jira (är inte säker på anteckningarna här)

Kan också skicka med Dennis definition av en fin site: a list apart. Ta rmed den länken, eftersom jag aldrig skriver om web.

Next Generation Development Infrastructure: Maven, M2Eclipse, Nexus & Hudson, Jason van Zyl

Jasons wrap up av kvällen. Det som var intressant var att hans företag, Sonatype, såg att Maven, M2Eclipse, Nexus och Hudson utgjorde ett slags standardstack; något de skulle stödja bättre. Detta är värt att lägga på minnet.

Presentationen handlade mest om olika features i M2Eclipse. Det som var häftigt var att kopplingen mellan Eclipse och Maven nu kunde bli “birectional”, d v s konfigurationsändingar i Eclipse slog igenom i Maven och vice versa, t ex byte av JDK. 

Jason missionerade också om att alla borde ha Nexus eller en annan cachande Maven proxy för att vara goda Maven-medborgare.

1 Comment

Stockholm Agile and Integration Seminar

Idag kunde man gå på ett gratisseminarium, som handlade en del om agil utveckling och en del om DSL:er. Martin Fowler var det stora dragplåstret, och anledningen till att jag gick dit. Seminariedelen bestod av tre presentationer. Nedan följer mina reflektioner.

“Alternative Languages”, Ola Bini
Ola pratade som vanligt om att man borde använda fler programmeringsspråk, och leta efter det språk som bäst lämpar sig för problemdomänen. Han hade faktiskt en poäng med att vi edan idag använder HTML, CSS, JavaScript, Ant, Maven och kanske något skriptspråk för att köra våra vanliga projekt. Annars kan man ju tycka att det försvårar för alla om systemet är skrivet i en massa olika språk.
Som vanligt frågade han om folk visste vad turing-komplett är, och det var ungefär tre av hundra som visste. Lite mörkrädd blir man. Han bemötte också mitt vanliga argument mot Rubys dåliga prestanda med att konstatera att många av dagens språk inte behöver vara superoptimerade, eftersom de ändå kommer att exekvera
webbapplikationer, vars flaskhalsar i alla fall består av databas- och nätverks-I/O. Tyvärr sant. Tragiskt.

Jag har hört den där presentationen några gånger i några olika varianter, men idag var den helt ok, då Ola hade slipat sina argument.

“Software Design in 21th Century”, Martin Fowler
Martin Fowler höll tre minipresentationer på lite olika ämnen. Alla var bra på sitt sätt, om än inte helt strukturerade:

Varför design spelar roll
I sin första presentation försökte Martin beväpna utvecklare med argument för varför design är viktigt. Alltså varför man ska lägga extra tid på det underliggande, trots att applikationen verkar fungera och verkar vara buggfri. Argumenten var inte helt nya, men det var värt att höra dem igen.
Han använde en modell som hette Design stamina hypothesis: två kurvor som visar var kostnaden för mjukvara utan design börjar överstiga den för mjukvara med korrekt underliggande design. Så som kurvorna var ritade fanns ett område där det faktiskt var billigare att skriva mjukvara utan en bra design. Detta område var dock litet, och man kom förbi payofflinjen inom några veckor, menade Fowler.

Genom att bevara god design håller man ner cost of new feature, vilket är ett påstående grundat på ekonomisk kalkyl. Att siffersätta detta exakt blir dock svårt, eftersom man oftast bara kan estimera kostnader och vinster. För övrigt kallas kostnadsskillnaden mellan att införa ny funktionalitet i ett system med god design och ett med dålig (som man först måste förstå och massera) för teknisk skuld. Ett kärt och ofta använt begrepp, men det är trevligt att höra Fowlers definition.

Fowler kommenterade också ett auktuellt blogginlägg av Uncle Bob.

Han menade att “mess”faktiskt är teknisk skuld om man använder en mer detaljerad modell med fyra dålighetskategorier:

Prudent: Noggrannt övervägande leder till en suboptimal, men fungerande design. Man vet att man inför skuld, men accepterar det.
Irresponsible: Okunniga utvecklare, som inte har koll på designprinciper, bilbiotek eller språket inför sådan teknisk skuld.
Inadvertable: Bra arbetsmetodik och kunskap, men man missar nåt i alla fall. Händer den bäste.
Deliberate: Man skiter blankt i att göra bra.

Jag hoppas att jag lyckades återge modellen rätt…

Event sourcing
Med denna presentation ville Fowler få oss att tänka mera på denna designteknik. Event sourcing handlar om att representera data i applikationer genom ett basdata, som sedan kompletteras med förändringar av typen Command eller Event. Han föredrog den senare analogin. I praktiken handlar det att lagra deltan.

Han menade att utvecklare arbetar med denna typ av program varje dag, och syftade på revisionskontrollsystem. Varför skulle inte vanliga “business users”
få möjligheten att göra tidsresor i sitt data?

Genom event sourcing kan man alltså alltid gå tillbaka i tiden i sitt data och köra diffar på olika version. Vidare underlättas implementationen av dristribuerade system, framför allt de som skalar horisontellt, eftersom ett event kan skickas till flera mottagare, som så småningom blir synkroniserade. Som en sista fördel nämnde han “alternative realities”, d v s möjligheten att gå tillbaka i data lägga in ett extra event, som kanske grenar datat och lägga på några events senare för att på sådant sätt skapa en alternativ verklighet.

Mina egna erfarenheter av denna programmering är inte helt positiva. Inte för vi har satsat helhjärtat, men de gånger jag varit med och testat, så har det alltid blivit något strul med delta-datat och allt rasat ihop. Tekniken äter också mycket disk/databas…

Nature of software projects
Här flummade Fowler ut på riktigt, men det var också en väldig tankeväckande presentation. Essensen av presentation kan nog kokas ner till att mjukvarubranschen går i bräschen för hur det kommer att vara att arbeta i intellktuellt krävande branscher i framtiden. Dynamiska team, kollaboration över lands- och kulturgränser och mer kaos kommer att bli vanligare i framtiden. Att lära arbeta i sådana organisationer är ett bra karriärsdrag. Fowler menade ockå att man borde försöka bo i olika länder för att få vidare perspektiv och bli mer kreativ.

Det är också i gränslanden (t ex mellan olika kulturer) som det skulle hända
mest spännande saker. Outsourcing ska i detta ljus ses som möjligheten att få en idéinjektion, inte som ett sätt att kapa kostnader, för löneläget i lågkostnadsländerna är bara tillfälligt i långa loppet.

I samma presentation förklarade han också skillnaden mellan mjukvara som infrastruktur och som strategisk satsning.

Mjukvara som infrastruktur ska fokusera på tillverkningskostnad och på
att inget viktigt går sönder. Denna typ av utveckling är föga sexig.

Mjukvara som strategisk satsning bygger på att nya oprövade koncept
rullas ut snabbt på markanden och testas. Man vet inte riktigt vad man
bygger, men kostnaden är inget problem, eftersom avkastningen kommer
att betala kostnaden flera gånger om! Det är också här ett bra mjukvaruutvecklings- eller konsultföretag vill positionera sig.

“Domain Specific Languages for Functional Testing”, Vivek Prahlad
Vivek Prahlad är en av utvecklarna bakom testverktyget Twist. Verktyget tar
acceptanstester ett steg längre genom att underlätta det som
FitNesse/Concordion + Selenium gör tillsammans: man kan bygga upp en
acceptanstestsvit genom att spela in interaktion (som med Selenium), ge operationerna beskrivningar i ett naturligt språk och använda dem som byggstenar. Alltså kan man ha en byggssten för att logga in, skapa en kund i systemet och logga ut. Dessa kan sedan kombineras, men också genomgå refactoring.

Under resan som motiverade Swifts existensberättigande pratade Vivek
om svårigheterna med funktionell testning och droppade några saker jag
tyckte var intressanta. T ex kände jag inte till verktyget Frankenstein.

Jag fick också reda på att det finns ett fint namn för konstruktionen där en klass modellerar en sida i ett webbgränsnitt. Klassen tillhandahåller högnivåoperationer,
vilket gör acceptanstestning lättare. Det fina namnet för detta är Page Object. Sätter man ihop flera sådana får man ett Workflow.

Helt ok presentation. om än lite mekanisk och enkel till och från.

Summa summarum var det värt att lägga några timmar på morgonen och jobbar över.

No Comments