Agila Sverige 2013

Sitter på tåget på väg hem från Agila Sverige 2013. Det har varit två underbara och uttröttande dagar, med mängder med trevligt, kompetent folk, bra blixttal och öppna, givande diskussioner och dialoger.

Egna insatsen

Fredrik Wendt: Coding Dojos för företag
Jag var först ut, hade inte presentatörsanteckningarna framför mig vilket var tvärtemot vad jag fick mail om dagen innan, men bortsett att det blev lite mindre fokuserat och tydlig röd tråd så tror jag att det viktigaste sades.

Open space-session på temat “Hur lär man ut TDD?”

(Kallas också rundabords-diskussioner, ofta utan bord.) Jag deltog i ett par open space (kallades open X)-sessioner men förde bara anteckningar från en där frågeställningen var Hur lär man ut TDD? Det var inte jag som som föreslog ämnet men deltog och försökte erbjuda så konkreta tips på idéer till den/de som sökte svar och inspiration eller bara nya (eller gamla) tankar.

  • + training, education
  • ? how do I get colleagues to see the benefit of it?
  • ! forced for a short period where you see the end of the period, one sprint/2 weeks
  • ! re-allocate some of the devs to a team where TDD is heavily used
  • ! move away from too simplistic katas, people have a too hard time transfering what they’ve seen/learned to production (Emily: this was NOT me saying this, brought up by someone else based on experiences from other teams and devs! :-)
  • ? hard to start when what you’re starting your journey from/off of/on/what you have is untestable legacy code
  • ! book: M Feather’s Working With Legacy Code
  • ? more on what’s the benefit of TDD in your view?
    I answered that almost everyone agree that pre-production tests, such as a unit test suite, is of great value.
    If you use TDD as means to get more readable, usable, understandable, maintainable code – then that’s your benefit. But it’s not the only way to get there, TDD is not the silver bullet solution to everything.
  • ? what are the arguments against TDD?
    Can’t use it blindly, might be hard transition/initially. Should/may not be used for spikes.
  • ! book: Kent Beck’s Test-Driven Development by Example

Övriga personliga diverse anteckningar och doodles

Ann-Louise Ulfsparre och Fredrik Josliden: Kommunikation mellan team, javisst! Men, hur då?
Story points samma mellan team? Grooming utan O? Slå ip team fungerade bra. Skall prövas!

Johan Dewe: Så fick vi alla att räcka upp handen
Om att rulla ut agil utvecklingsprocess utan att kalla den agil. “Roll your own vs try what’s been known to work”?
Rubrik “att få alla att räcka upp handen”, efter en egen introduktionskurs (liknande CSM dag 1, PSF, …) med folk från blandade verksamhetsfunktioner så fick alla frågan “Vilka håller på med systemutveckling?”. (Alla förstod sin del och att det var en del av det hela.)

Jonas Hermansson: Acceptanstest är töntigt
Acceptanstestare är ofta för välbekanta med testobjektet – fundera över vem som gör acceptanstestet och konsekvenser av det. Mycket humor, kul presenterat! En klar topp 3 för mig.

Kajsa Goffrich: RTFM – varför är vi så snåla med kunskap?
Vi håller inne med kunskap som Joakim von Anka håller sina pengar i sin pengabinge, varför? Agil metodik leder till att vi jobbar öppet och talar ut om “jag har kört fast, tar tid, har problem”, men hur bemöts det? Vilken inställningar har vi till detta? “Jag har blockering – skall givetvis ses som att det teamet som har en blockering, inte en individ”. “Jag är inte korkad, jag har bara inte lärt mig det än”.

Inga-Lill Holmqvist: Servant Leadership – passar bra ihop med Agile och Lean?
Att tänka “du är viktigare än jag”, som chef. Mät: “Växer personen som jag servar?”
Aktivt lyssnande; Empati; Läkande; Awareness (self, organizational); Bygga konsesus vs auktoritativ beslutsfattande; Foresight; Stewardship (översattes till förvaltarskap :-P); Bygga gemenskap (community).
(Ja, allt detta passar mycket bra ihop med Lean och Agile.)

Matti Klasson: DevOps – ett sätt att samverka inte en jobbtitel!
Mixade team, praktisera i annan roll. Automatisering och verktyg är inte lösningen – lösningen är samverkande människor.

Annica Söder och Anna Forss: Hur vi undvek att bygga Dödsstjärnan
Jämförde Star wars- och Star Trek-stil, dvs magi, hjältar och ikoner med vetenskapliga teorier, samverkan och team.
10000 stormtroopers vs teamet “on the bridge”; Yoda vs Spock (mer vetenskapligt); dödsstjärnan vs enterprise (doable scope); mötet där Darth nästan stryper en amiral vs star trek-öl i restaurangen på skeppet (refletion meetings)
Seldon plan.

Thomas Nilsson: 13 steg mot Kanban Kaizen
Kändes lite för basic, men passade säkert många andra. Bra take away: se till att välja ord – det är lättare att “genomföra ett litet experiment under 2 veckor” vs “nu skall vi förändra våra arbetsmetoder”.

Annika Widmark: Om att lösa komplexa problem med enkla bilder
Storytelling, visualisera förändringsarbetet. Gather facts, group facts, imagine goal, show/visualize/draw. En av flera presentationer som tycker att tre kugghjul visar på något som snurrar (tre kugghjul som rör varandra kan aldrig snurra).
Glömde fråga om de foldrar som tagits fram hos Arbetsförmedlingen om erfarenheter om bra metoder/framgångar från projekt har lämnats ut publikt (tillbaka till skattebetalarna).
Bok: Back of the napkin, Dan Roam

Daniel Fröding: Continuous Delivery – On the road to a true agile company
itrevolution.com. Bra budskap. Använde karaktären Mr Business som gav beståeende men/intryck ;-)

Labbet – Continuous Delivery Pipeline

Andra halvan av dag ett var open X och jag valde att spendera tid i “labbet” med bl a Mattias Karlsson, Mikael Sennerholm och Johan Elmström från Avega Group (Enzo). De hade med ett par saker in, dvs förberett ett par saker såsom CI-, test- och prod-VM:ar, (Jenkins, Tomcat, Puppet, GitHub) men framför allt härlig öppenhet och vilja att lyckas utan att ta för mycket fula genvägar.

I korthet så fick vi något som fungerade, men ingen av oss helt “färdiga” (uppstädning) och ej heller helt nöjda med teknikstacken. Jag skall kanske inte tala för de andra men Jenkins och sina plugins (jag läste källkod också för att fixa en bugg) lyste inte direkt upp tillvaron, erhöll glada tillrop eller större uppskattning. Inte direkt någon överraskning för någon av oss, men nu är det iaf gjort en gång så det kommer från erfarenhet! :-)

Dag 2

Andra dagen förde jag inte anteckningar då jag hoppade fram och tillbaka mellan blixttal och labbet där vi fick den enkla Continuous Delivery-pipeline att snurra (Spring Petclinic, Puppet, Fabric, Razor, VMware, Python/bash, Jenkins). Bamboo, Go och Team City plus en mindre hög andra saker att kika på eller göra bättre fanns på ena kylskåpsdörren (bra yta för statisk plast = mobil whiteboard).

Gabriel Falkenberg: Jakrakning på rätt sätt
Mycket underhållande och träffsäkert. Om du skall raka jak, raka rätt jak, raka den rätt, … Klart topp 3 även denna.

Adam Killander: Fundamentalistisk förvaltning
Bra teatralisk berättandestil om förvirringen kring nyproduktion vs förvaltning. (Nyproduktion kanske finns första sprinten på ett nytt projekt, men inte efter det.)

Någon gång under dagarna gjordes en jämförelse mellan Legacy inom och utanför mjukvaruvärlden – i det ena en tillgång med värde, i det andra ses det mer som en belastning och kostnad.

Upstart and Virtualbox

Upstart script for starting and stopping Virtualbox machines. This goes into /etc/init/vbox-agila-ledare.conf (which could be paremetrized, look this up in the upstart cookbook).

#
# Upstart receipt for starting Virtualbox machines after reboot
#
description "VM for agila-ledare.se"
author "Fredrik Wendt"

start on start-vbox-machines
stop on runlevel [016]

console output

pre-stop script
  su vbox -c "VBoxManage controlvm agila-ledare savestate"
end script

script
  exec su vbox -c "VBoxHeadless --startvm agila-ledare"
end script

Hälsningar från ett barn

Har läst den förut, nu fick jag ned den så jag kan påminna mig själv regelbundet. (cron, curl, sendemail)

Hälsningar från ett barn

Var inte rädd för att vara bestämd.
Jag föredrar att veta var gränserna går.
Lova ingenting du inte kan hålla.
Då förlorar jag förtroendet för dig.
Ge inte efter när jag provocerar.
Då söker jag bara lättvunna segrar.
Rätta mig inte inför andra.
Jag lyssnar mycket bättre om du talar med mig när ingen hör på.
Fråga mig inte varför jag gjorde så dumt.
Jag vet faktiskt inte.
Påstå inte att du är ofelbar eller perfekt.
Det orkar jag inte leva upp till.
Och kom ihåg,
Jag lär mig mer av en förebild än av en kritiker.

Some Five, Six Months of Mac OS X

I’ve been using a MacBook Air almost every day since November 2012, which is five-ish months from now, and today I successfully installed Ubuntu GNU/Linux on the machine. These are my observations from the past couple of months.

Scrolling content instead of scrolllist handle is very natural – going back really feels backward. Mac OS X does a better job at tracking two fingers – what happens is that under Ubuntu all of a sudden I end up at a new page because a link was clicked instead of scrolling continuing.
Forward/backward is another move I’ve found that I use a lot.

Vertical scrolling can be reversed, but not for all applications/widgets, using Xmodmap aor fiddling with xinput.
I’ve had very few issues with typing and accidentally moving the cursor as a result of unintended click with either thumb. After a few hours of using Ubuntu, this is the number one thing on my “to fix” list – ie disable the touchpad while typing.
Long pressing two fingers, as in resting the hand on the touchpad while reading, brings up some really nasty stuff in the Ubuntu default window manager. Yuk.

The default workspace managment in Ubuntu is limited to 2×2, but is easily overriden.

However, the window manager in Mac OS X is just horrible since you need different key bindings to switch focus between current and previous window, depending on if they belong to different applications. Full full-screen is really nice, but that it makes and takes up it’s own workspace is very annoying. It’s all Mac/Apple, so it can’t really be modified or overriden.

Delete button is missing!

Cmd+X/C/V/T/, is really nice – it’s induces less strain on the hands and also leaves Ctrl free to Ctrl+C – as in break program execution – and removes the need for Ctrl+Shift+X/C/V as used in gnome-terminal.

Using Alt to skip and/or jump a word at a time instead of Ctrl is again puts less stress on the left hand. This took some time to get used to in when moving to the MacBook, while I could still work without problems on my desktop/work station full sized keyboard. Now that I’m running Ubuntu on the MacBook, I’ve hit Alt+<- (left arrow) which translates to “back” in Firefox … Not very nice when you’re editing text. So, surprisingly hard to un-learn this.
There’s also a UX difference, since the Ctrl+right arrow jumps to the end of words, where as Alt+right arrow jumps to the beginning of a word, which makes much more sense!

Pipe, forward slash and backslash under the default Mac OS X key mapping is just awkward for a person that writes code.

Being able to reverse the mode of the fn (function) key (or keys, depending how you look at it) is really nice. Need to find a way to do that under Ubuntu.

Switching windows of the same application is something I’ve been using quite a lot. Not sure I will actually miss it. Ubuntu’s alt+tab implementation in the default window manager is – as is well known and documented – sooo broken. Fortunately Cmd+W works pretty well, except that you can’t navigate/select window using arrow keys: you have to use a mouse.

While the screen lock works better in Mac OS X, it does somewhere depend on the network which makes it a pain to wait for.
The screen lock under Ubuntu on the other hand is not always showing when bringing up the picture/lid.

Both OS:es are equally good/bad at handling multiple outputs: technically, it works but from a UX perspective it still sucks. (No, AirTV (or whatever it’s called) isn’t that good or reliable and still has UX issues.) I would really like to see the Screens/Monitors control panel/application show up when new monitors/screens are attached, AS WELL AS the controls for audio if the connected device supports sending the audio that way (which really is becoming main stream AND is probably something you want to do).

Mac OS X software updates are really intrusive, with sticky notifications.

Why change power coord connector between MacBook Air 4.x and 5.x?

The Hardware – MacBook Air

I waited three extra weeks just to get the 8 GB model (instead of 4), which makes a huge difference – especially if you’re using “heavy” tools like several instances of Eclipse, VirtualBox, browsers.

The keyboard turned out to be just as I expected it: it leaves an imprint on the monitor’s surface, it’s not as nice as ThinkPad keyboards but in no way bad. All the alluminum (or whatever what kind of metal it is) makes my hands and wrists cold.

Battery is good, way better than the ThinkPad batteries I’ve had, but still not perfect. Can’t live without a charger and doing heavy lifting on the machine still drains battery like modern ThinkPads.

Weight is really nice. Love the fact that I can feed my kid with one hand, and lift and move the computer around with my other hand, easily.

The alluminum (or whatever it is) is pretty, but it also makes it more difficult to put on your lap – it very easily slides away unless you thighs are perfectly leveled with the ground. Can become very annoying.

I really want touch. And I really want to be able to flip the screen/monitor so I can use touch only as in “stowe away or hide (and inactive) the keyboard”.

SMTP

This is how I configure delivery of e-mail generated on “sattelite” machines.

On SMTP relaying server, edit /etc/postfix/helo_access:

# postmap helo_access
a_random_name_known_by_server_and_client1_only      PERMIT
a_random_name_known_by_server_and_client2_only      PERMIT
...

To update the database file format used by postfix, run postmap helo_access. The main.cf file must then specify:

smtpd_recipient_restrictions =
permit_mynetworks
check_helo_access hash:/etc/postfix/helo_access
...

On each “clientX” or sattelite system, specify myhostname as a_random_name… reload/restart postfix, and everything should be up and running.

Bash Completion

Jag drog nyss in en ny installation av Ubuntu 12.10 och av okänd anledning var inte bash completion (eller autocompletion) funkis. Visade sig att i /etc/bash.bashrc var följande rader utkommenterade, vilket jag ändrade och sedan var allt grönt igen.

# enable bash completion in interactive shells
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

Jag använder oftast ihop med sudo aptiTAB instTAB progrTAB, men det finns även maven och gradle completions!

Att synliggöra mobbning

En branschkollega, Iris Classon, skrev häromdagen på sin blogg om något jag hört talas om ett par gånger detta år – hur främmande män via nätet och mobil trakasserar. Det är givetvis fullständigt oacceptabelt och jag är – framför allt å min dotters vägnar – tacksam att Iris vågar lyfta detta offentligt. Tack Iris!

I en av kommentarerna såg jag en kommentar som på ett annat sätt kändes aktuellt för mig, nämligen hur mobbning hanteras i skolan. Min äldste grabb går i en skola som har ett dåligt rykte. Från tidigare 3 klasser finns endast en kvar för sjätte året. Den är i mitten av den stadsdel i Göteborg som har flest ensamstående föräldrar och det finns mycket dåligt med alternativ för ungdomar vad gäller möjligheten att aktivera sig utanför skoltid. Det suger för att vara ärlig. (Azalea och annat är ju kanon för de som gillar någon form av sport, men det passar inte alla.)

De senaste åren har det förekommit grov mobbning, bränder, knivincidenter och jag vet inte hur många gånger polisen kopplats in. Om detta har sittande rektorer kontaktat oss föräldrar 0 gånger.

Kommentaren från Iris blogg (översatt med hjälp av Google Translate till svenska (nåja, jag fick allt rätta en hel del själv)):

Min son var på sin nya skola för några månader sedan och det föregick översittarbeteende som gått över styr. Alla föräldrar kallades till en samling med barnen och vi fick inte veta vad det handlade om (jag misstänkte att det hade att göra med mobbare med tanke på att min son var utsatt då han var ny osv). Rektorn gick fram till mikrofonen sa till barnen: “Om jag läser upp ditt namn, kom upp på scenen bredvid mig och stanna där” … varpå hon fortsatte och läste upp 8 barns namn.

Dessa barn ställde sig upp, gick långsamt fram till rektorn och stod där och undrade vad i helvete de gjorde uppe på scenen. Rektorn fortsatte sedan att ta adressera föräldrarna och berättade att dessa 8 var mobbare i skolan som ständigt skadade andra barn i skolan. Hon sade sedan till barnen: “räck upp en hand om du har blivit mobbad av något av dessa barn” och snart nog åkte många händer upp.

Det “knackade vinden ur mig”, eftersom inte enbart märkte jag att alla dessa barn fick en mängd makt tillbaka, utan också att barnen som var mobbare omedelbart fick skämmas för sina handlingar medan föräldrarna till dessa barn som tittade på var helt askgrå med ilska (vissa vände den mot rektorn för att ha förödmjukat deras barn så där – ja, man kan inte fixa dumhet).

Givetvis snårigt lagligt, men detta är ändå någon som inte skymmer undan problemen utan istället försöker visa på problemen och göra alla delaktiga. Det är bra mycket lättare att hitta stöttning i ett samhälle där alla deltar, istället för att försöka isolera problem och fortsätta hålla någon slags skyddande filt mellan de med problem och omvärlden.

Jag önskar att Karl Johanskolans rektorer började bjuda in samhället i skolan. Konkreta förslag:

  • håll öppet hus en kväll efter allvarliga incidenter (såsom brand, kniv, oväntade polisbesök) – räck ut en hand och visa att ensam inte är starkast, vi sitter alla med problemet på halsen
  • gör Dialogenmöten öppna (för alla föräldrar) istället för slutna (endast “valda” får deltaga) – möjliggör deltagande
  • håll Dialogenmöten oftare (och möjligen längre) – för att återigen möjliggöra deltagande
  • skapa en kanal för dialog utanför möten och papperslappar i ryggsäckar – papperslappar är långsam distribution, och dessutom envägskommunikation som inte öppnar upp för deltagande

git vs hg

While git surely is powerful, hg sure is userfriendlier (until you need to do fancy stuff).

Dislikes

The branch implementation in Mercurial was a poor choice. I wish they would create hg 2 and simply fix this – ie not being backwards compatible.

Likes

When working with multiple repositories, it’s nice to be able to “coordinate” pushing with Mercurial’s hg outgoing.

When working with several branches, Mercurial’s hg graft is nice.

When working with the acyclic graph, it’s nice to work with Mercurial’s local commit numbers.

When working with code that’s in production (or some kind of testing phase), Git’s stash and lightweight branches makes Mercurial look like a 20th century VCS.

Making the journey pleasant

Things I find useful.

git config --global alias.incoming '!git remote update -p; git log ..@{u}'
git config --global alias.outgoing 'log @{u}..'
git config --global alias.st status
git config --global diff.guitool meld
git config --global difftool.prompt false
git config --global alias.meld '!/usr/local/bin/git-meld.pl'
git meld master..topic

Rör inte mitt Internet

När behövs reglering? Vem skall reglera vad, varför, hur och när?

Vad kan du göra? Gå till internetcoup.org, fyll i din e-postadress och tryck Send e-mail för att göra din röst hörd.

Stora frågor och från och med 3:e december försöker mängder med länder, organisationer och diverse intressen enas om hur dessa frågor skall besvaras avseende Internet.

Stiftelsen för Internetinfrastruktur (IIS) – de som reglerar Sveriges topdomän (.se) skrev i somras “inför ITU-mötet i Duabi“:

Arenan för mötet är internationella teleunionen ITU, där principen om ett-land-en-röst gäller. Samtidigt har ITU:s ordförande Dr Touré förklarat att han vill se konsensus i de beslut som tar sig igenom processen. I det globala Internetsamfundet har WCIT fått en stor uppmärksamhet just därför att det inbegriper möjligheten/risken till global ’hård’ reglering av nätet, något som annars är ovanligt i de processer som rör nätets styrning.

Vidare skriver de i en publikation på ämnet “Styrning av Internet” (sida 21):

Det har efter WSIS 2005 kommit att målas upp en bild av pro- cessen för styrning av Internet som en institutionell dragkamp mel- lan FN-sfären (ITU) och ICANN. I den bilden är ITU en traditio- nell politisk organisation där styrning sker uppifrån och ner av re- presentanter för nationalstater och regeringar i FN. Samtidigt får ICANN representera ett civil society-perspektiv, baserat på styr- ning nerifrån och upp och utrymme för många olika intressenter (multistakeholder-styre eller mångfaldsmodell).6 En sådan förenkling är givetvis halsbrytande och ger inte allting rättvisa, men präglar många intressenters bild av utvecklingen de senaste fem åren.

UNESCO skriver i ett öppet brev till ITU:

UNESCO, as enshrined in our Constitution, promotes the “free flow of ideas by word and image”, and is accordingly committed to enabling a free, open and accessible Internet space as part of promoting comprehensive freedom of _expression_ online and offline. We take our lead especially from Article 19 of the Universal Declaration on Human Rights, as well as the Windhoek Declaration on a Free, Pluralistic and Independent Media endorsed by our General Assembly in 1995. Following from these, UNESCO works as the dedicated agency within the wider UN family to promote freedom of _expression_ and its correlates of access to information and press freedom.

och

We are concerned that this article, in its phrase to “information of a sensitive nature”, designates a criterion for limitation in the access to services that is hitherto unrecognized in international standards (see below). The phrase entitles Member States to exercise related constraints on the right to freedom of _expression_ online, which in turn would also limit public access to the range of information allowed on the Internet. The limitation could also impact on the boundaries for the media to operate independently.

In particular, the phrase does not conform to the accepted international standards as set out by the Article 19 of the International Covenant on Civil and Political Rights (ICCPR), which is widely accepted as the binding elaboration of Article 19 of the Universal Declaration of Human Rights.

Forbes skriver:

A newly-leaked internal document provides the most direct evidence yet of UN efforts to seize authority over the Internet as part of a secret conference taking place next month in Dubai.

New York Times skriver Keep the Internet Open:

The Internet stands at a crossroads. Built from the bottom up, powered by the people, it has become a powerful economic engine and a positive social force. But its success has generated a worrying backlash. Around the world, repressive regimes are putting in place or proposing measures that restrict free expression and affect fundamental rights. The number of governments that censor Internet content has grown to 40 today from about four in 2002. And this number is still growing, threatening to take away the Internet as you and I have known it.

Against this background, a new front in the battle for the Internet is opening at the International Telecommunications Union, a United Nations organization that counts 193 countries as its members. It is conducting a review of the international agreements governing telecommunications and aims to expand its regulatory authority to the Internet at a summit scheduled for December in Dubai.

Such a move holds potentially profound — and I believe potentially hazardous — implications for the future of the Internet and all of its users.

Wall Street Journal beskriver det i artikeln “The U.N. Threat to Internet Freedom” såhär:

[…] a diplomatic process […] that could result in a new treaty giving the United Nations unprecedented powers over the Internet. Dozens of countries, including Russia and China, are pushing hard to reach this goal by year’s end. As Russian Prime Minister Vladimir Putin said last June, his goal and that of his allies is to establish “international control over the Internet” through the International Telecommunication Union (ITU), a treaty-based organization under U.N. auspices.

If successful, these new regulatory proposals would upend the Internet’s flourishing regime, which has been in place since 1988. That year, delegates from 114 countries gathered in Australia to agree to a treaty that set the stage for dramatic liberalization of international telecommunications. This insulated the Internet from economic and technical regulation and quickly became the greatest deregulatory success story of all time.

Från Los Angeles Times, “Can the web survive the ITU?”:

In short, what’s happening at the ITU seems less about assuring the functionality of the Internet than about redividing the spoils and limiting the Web’s power to disrupt established regimes. There also seems to be some geopolitical score-settling, as countries in the developing world seek to reduce what they see as the United States’ disproportionate influence over the Internet. Those forces, however, have different interests from the public, which has been well served by a free Internet whose technical issues have been left to nongovernmental groups to manage. The secretive ITU is the wrong place to address the complaints of governments and industries that see an open Internet as a threat, not an opportunity.