I denna mätning, som baserar sig på de repositorier som Ohloh bevakar, är Java det mest committade språket. Vet inte om justering görs pga dess pratighet också? Mätvärdena är relativa (procent), hade varit kul att se om C-kodsbidrag faktiskt gått ner, eller om det bara är de andra som ökat (och därmed tar större del av kakan).
Git-kurs
Jag har idag hållt en liten kurs (3 timmar) som introducerat utvecklare till Git och distribuerad versionshantering. Deltagarna jobbar dagligen i Windows och Visual Studio och trots att det inte är min dagliga hemvisst så flöt allt på bra, Git Extensions fungerade fint t ex och ingen av deltagarna fastnade på nyckelhantering eller andra “vanliga” uppstartsproblem.
Följande ämnen hanterades:
- Grunderna: Vad är versionshantering egentligen? Vad är skillnaden mellan centraliserad och decentraliserad versionshantering? Vad är speciellt för Git?
- Versionshanteringens bitar: blob, tree, commit, tag, branch. Repo, index, staging area och arbetsmapp
- Installation, grundkonfigurering
- Vardagsarbetet: commit, branch, merge, push & pull, clone & init
- Server och dela kod via SSH, GitHub, Gitorous.
Kursen är i huvudsak praktisk och inriktad på att få den som redan jobbat med centraliserad versionshanteringssystem, såsom CVS, Subversion och Microsofts SourceSafe, att komma igång.
Det finns fler ämnen att hantera – de som ingick i kursen ger basen för det dagliga arbetet och troligen behöver man inte någonsin lära sig mer om man inte är intresserad.
Scandev on Tour, Stockholm 2011
Jag var iväg på Scandev on tour i Stockholm och hade en bättre dag än väntat. Huvudattraktionen för mig att åka dit som deltagare var pga Gojko Adzic: jag ville se om han verkligen är så vattentät som han verkar!
Key Note, Bruce Eckel
Dagen började med kort introduktion av Emily Bache som lämnade över till Bruce Eckel. Han feluppskattade tyvärr sin tid och missade den stora poängen med sin presentation, vilket var väldigt synd. Oklart varför han missade så grovt då det enligt egen utsago var fjärde gången han höll denna presentation. I princip så pratade han om språk och vad nästa stora språk bör ha för egenskaper. Han petade flera gånger på brister i Python, Java och C++ (nämnde inte C# en enda gång enligt mina anteckningar). CoffeeScript med jQuery förekom i hans bilder mot slutet och dessutom i koden som presenterades.
Kul med en lite mer teknisk key note! Hans egna tavlor som bakgrundsbilder till presentationerna var möjligen gav dock emellanåt för kass kontrast mot texten. Hans budskap var helt OK men jag måste säga att presentationen i sig var rätt beige.
Ruby on Rails, Shay Friedman
Jag gick sedan till Shay Friedmans presentation om Ruby on Rails. Det var antligen den mest politiskt inkorrekta presentationen under dagen (konferensen saknar för övrigt code of conduct och/eller ett manifest). Med minsta marginal snublade han nog över på rätt sida gränsen till godtagbart.
Jag hade föredragit dubbla tempot och något som stack ut från “my first 5 minutes”-spåret, kanske kika lite under huven och få se något intressant. Shay använde dock 3.1 vilket är rykande färskt med SCSS och CoffeeScript medskeppat som “standard”. Klart inspirerande och skall jag bygga sidbaserad webb (eller måhända JSON-backend) så ligger detta varmt till hands. Stort minus för att han inte körde testen en enda gång … Det hade bland annat undvikit hans två felsteg: att försöka ladda applikationen innan databasen var uppdaterad.
WCF Future
Detta var fullständig slöseri med tid, tyvärr. “You might have heard of web sockets, it’s w3c standard …”
Visualize Quality, Gojko Adzic
Efter lunchen kom dagens höjdpunkt. Gojko Adzic började lite före utsatt tid med att fiska bland publiken (han kände väl till svenskars fåordighet som åhörare) kring vad folk förväntade sig för att så småningom komma igång och helt enkelt presentera ett ganska ofärdigt material med tankar kring vad kvalitet är.
Gojko menade att t ex code quality aldrig är oviktigt, men det är inte lika viktigt i förhållande till att ett system uppfyller ett eller flera affärsvärden. David Harvey föreslog att föredragets ämne borde varit “Visualize Value” vilket jag instämmer i.
Innehållet var i övrigt bra presenterat, väl underbyggt och genomtänkt (mannen är riktigt vattentät) och ämnet hade jag snarare sammanfattat såhär:
To remove stake holder’s need for visibility (they ask for control) we need undisputibale visualization (of metrics).
Han gav exempel på tre P:n som är traditionella kvalitetsmätpunkter: Process effectiveness (such as code quality); Product status; Product Performance (have we delivered something that is actually used by users?). Han gav också förslag på andra sätt att hitta och visualiser mätvärden: Low tech testing dashboard, Risk/Test heat maps and charts, effect maps, Attribute-component-capability charts.
Intressant, framför allt bra presenterat och det föreslagna lär – rätt genomfört – otvetydigt ge bra underlag för diskussion och insyn i den egna verksamhet.
Long Term Value of Acceptance Test, Gojko Adzic
Var egentligen skåpmat och handlade om att inte dokumentera flöden i test, utan att med hjälp av smart marknadsföring (för att få stake holders intresserade) genom specification workshops få till kör- och testbar dokumentation av affärsregler, dvs företagets verksamhet. Han pekade ut TextTest som ett bra verktyg som steg i rätt riktning – dvs separera dokumentationen (testet) från det som behövs för att göra det kör-/testbart (scriptet, systemstart etc). Presenterades på ett bra och oklanderligt sätt, rubricerades som Living documentation vilket tydligen skall vara accepterbar benämning även i biznizkretsar.
Verktygstips: Relish, Speclog och Concordion.
Code Debt, David Harvey
Jag åkte på att ställa upp som försökskanin och parprogrammerade fem rader JavaScript med David Harvey. (Egentligen tror jag att jag skrev kanske femton tecken pga ovana vid Mac+eng tangentbord men men :)
David visade i alla fall på ett konkret exempel av hur kod kan evolvera fram i två riktningar – en som är lätt att arbeta med (den jag fick utöka) och en som hade en mindre positiv utveckling (Jörgen Lundberg åkte på denna elakare version och gav kommentaren: Wow). Presentation var helt OK. Den kunde varit bättre genom att fokusera mer på konkreta tips och åtgärder (eller strategier) än att belysa problemet.
Akka, Jonas Bonér
Jonas visade på vad Akka erbjuder – lösningar på problemen concurrency, scalability och fault-tolerance (that self-heal). En av lösningarna på desa problem är Akkas Actor. Detta “mönster” presenterades, med – min min smak – lite för enkla exempel. Ping-pong och self.reply("Hi " + name) funkar visserligen bra – det är lätt att läsa på en vägg med stor text – men det ger alltid lite extra när presentatören visar produktionskod och tar exempel från verkligheten.
För att hantera del av clustringen används gossip (som ger eventual consistency).
Sammanfattningsvis
Allt i allt var den dag över förväntan. Folkets Hus var kanon som lokal och allt flöt på kanon med mat och annat. Jag saknar dock open space eller någon form av mer inbjudande deltagande – i Göteborg fanns 2010 fish bowl som gör eventet till lite mer än bara “an eyes forward event” (som Bruce Eckel själv använde som benämning i sin key note).
Skilj på Mina och Dina
Din El har förstått det här med mitt och ditt. På deras webbplats finns en sektion som kallas “Din sida”. ComHem däremot rör ihop det och kallar det Mina Sidor. Liksom Västtrafik, se detta exempel:
Ungefär 17 gånger nämns Du/Dina och 5 gånger Mina. 0 (noll) gånger förekommer mina naturligt i texten/dialogen med kunden. Vad sägs om följande:
A) Välkommen till Dina sidor. För att logga in, skriv in ditt lösenord.
B) Välkommen till Mina sidor. För att logga in, skriv in mitt lösenord.
C) Välkommen till Mina sidor. För att logga in, skriv in ditt lösenord.
Agile i Göteborg
Det är fart på de agila i Göteborg:
Scrum Beers Göteborg (Meetup)
Göteborgs Agilister (LinkedIn)
Agile for management (DFS)
Dagens citat
Hört i korridoren om devops och agil utveckling:
Jodå, men vi kör också med krossfunktionella team – vi kör över varandra så hårt vi kan.
Drupal User Group-träff i Göteborg
Den 6:e oktober bjuds alla Drupalintresserade in till NodeOne i Göteborg kl 17:30, Kungsportsavenyen 22.
“Vi kommer att bjuda på dryck för alla åldrar och snacks som tilltugg.”
Tillgänglig info finns på groups.drupal.com.

Drupal logo
Java CMS-party i Göteborg
David Jensen och folket på Redpill Linpro i Göteborg ser till att ordna ett releaseparty (släppfest på svenska?) för version 4 av Javabaserade CMS-motorn Alfresco. Om du är sugen att haka på (torsdag 13 oktober kl 16) verkar det vara fritt fram via anmälan till en grupp på Meetup.

Tidshorisont för NFC
- att majoriteten av mobiltelefoner har NFC om 3 år.
- att efter ytterligare 2 år kan man avsluta ett köp med NFC i hälften av Nordstans butiker.
- att efter ytterligare 4 år är NFC vanligare än korttransaktioner.
Enligt PayPal har jag fel, enligt MasterCard kan jag ha rätt. TechCrunch sammanfattar läget.
(Min senaste fem-årsgissning var vid julbordet 2001 – då gissade jag att Linux som alternativ på skrivbordet skulle vara minst lika lättanvänt, -installerat och -användt som Windows. Julen 2006 fanns Ubuntu 06.10. 2007 tror jag NetworkManager kom in och först då var det väl egentligen i samma liga.)
Att välja rätt List-implementation
Jag har stött på tillfällen då man undrar vilken implementation av en kollektion, t ex java.util.List man bör välja. Ibland behöver man använda så lite minne som möjligt, ibland vara så snabb som möjligt, osv. Jag har oftast löst det med att skriva enhetstest och långkörarjobb som gör något om och om igen, så får det stå över natten och när man kommer tillbaka nästa dag undersöka resultat, loggar och JVM-data.

Skärmbild över statistik från körning med Caliper
Idag hittade jag Caliper via Jesse Wilssons bloginlägg om LinkedList vs ArrayList (ur kö-perspektiv). Den korta tråden av kommentarer visar dock på hur irrelevant enhetstestbaserade undersökningar kan vara (även om de kör över tid så att GC får arbeta). På en JVM sitter ofta många system och “delar” GC och minnesrymd.
Helt irrelevant finner jag det absolut inte – även om systemet under test inte beter sig som under skarp last så upplever jag att man kan få ökad förståelse om hur olika implementationer beter sig och ju mer delar man har av ett pussel – ju lättare är det att se hela bilden och dra rätt slutsatser.


