2009-12-29

Vilse i vattenfallet

När jag läste data runt 2000 så fattade jag ingenting av vad vi fick lära oss om processerna runt själva kodandet. På OS-kursen fick vi skriva en kravspecifikation och ett design-dokument, vilket vi skulle lägga lika mycket tid på som kodandet och testningen. Eftersom specifikationen naturligtvis visade sig vara omöjlig att implementera utan ändring så fick vi uppdatera den allt eftersom vi upptäckte problem. På kursen som hette Software Engineering så fick vi lära oss en väldig massa detaljer om metoder för att ta fram specifikationer av olika slag.

Jag vet inte riktigt var de här avancerade metoderna används, men jag föreställer mig att det rör sig om hemliga försvarsanläggningar, kärnkraftverk, banker och myndigheter. Jag kände absolut inte igen mig från de open source-projekt jag var bekant med. Däremot visste jag att akademiker var av uppfattningen att en utvecklingsmetod som den som användes för Linux-kärnan helt enkelt inte kunde fungera. Det gjorde att de inte kändes helt trovärdiga.

Agile fanns redan på 90-talet, och en gästföreläsare från Nya Zeeland la i alla fall någon föreläsning på att lära oss om Extreme Programming. Under 00-talet har Agile slagit igenom, men kursbeskrivningen för Software Engineering i Uppsala ser fortfarande ut som den gjorde för 10 år sedan. Samma kursbok används dessutom, Software Engineering av Ian Sommerville.

Jag tog fram mitt exemplar, 3 upplagor gammalt, och bläddrade lite i det. De avsnitt som innehåller något som jag skulle kunna tillämpa är minimala, om de finns över huvud taget. Jag kollade upp vad som har förändrats under de senaste upplagorna, och det verkade inte vara mycket, även om det har tillkommit ett kapitel som under rubriken "Rapid Software Development" bland annat tar upp Agile, exemplifierat av Extreme Programming.

Jag tittade igenom de slides som finns tillgängliga för nedladdning. Författaren är inte positiv till Agile. Agile används för att utveckla mjukvara fort, men leder till sämre kvalitet. Och det är svårt att testa, för det finns ingen specifikation. Det är svårt att avgöra vad som har gjorts, för det finns ingen dokumentation. Koden blir svår att underhålla, för om man gör ändringar hela tiden så går strukturen sönder. Principen att hålla designen så enkel som möjligt är också problematisk: "Maintaining simplicity requires extra work". Och så går det givetvis inte att skala upp Agile till större projekt: "Agile methods are probably best suited to small/medium-sized business systems or PC products." Damn, den gamla klassikern, riktig utveckling sker på mainframes. Hemliga försvarsanläggningar och banker var det.

En av anledningarna till att Agile har tagit över under de senaste 15 åren är att all utveckling inte längre sker på storföretag eller myndigheter. Utvecklarna har makt över sin situation, snarare än att det är en kille i slips sju nivåer upp från närmsta ingenjör i hierarkin som bestämmer hur det ska gå till. Men bland de gamla akademikerna så skrivs fortfarande all riktig kod i Cobol och Ada, och handlar om pengatransaktioner. Designspecifikationen specificerar arkitekturen hela vägen ner till algoritmer och datastrukturer. Programmeraren översätter specifikationen till program. Moduler utvecklas parallellt och integreras först framåt slutet av projektet, precis innan den livströtte testaren kallas in, hittar fel och får skäll för att han är ansvarig för att projektet blir försenat (han gästföreläste på Software Engineering-kursen, och beskrev sitt arbete just så). För projektet blir försenat, det blir det alltid. Och lösningen heter ännu mer detaljerade specifikationer, som gärna ska verifieras formellt, så att den kan implementeras rätt av utan att en enda bugg uppstår, att ett enda krav ändras under projektets gång eller att ett enda tankefel upptäcks.

Ett problem jag hade både med Software Engineering och på andra kurser var att det aldrig berättades hur, var och när saker tillämpas. Idéerna är alltid abstrakta. Av den anledningen vet man inte vad som är viktigt, vad man faktiskt ska lära sig, och vad man kan glömma bort, eftersom det bara är av akademiskt intresse.

2009-12-27

Mer jul

Fantastiskt fin version av världens bästa jullåt någonsin: Last Christmas (Hot Digi Remix) av Goto80. Även Triad är med på ett hörn.

Folkfuck folie runt granen

Äntligen hemma igen, efter att ha firat jul i den gamla nordiska hedendomens hjärtland, i Blot-Svens hemtrakter i centrala Uppland. Där firade vi satanistisk jul, med black metal-julsånger, obscena prydnader i granen, julevangelium enligt Teratologen, en tyst minut för Gilles de Rais, blod i snapsen för att hedra Erzsébet Bathorys minne, och så naturligtvis det traditionella julbordet med grillad padda, fladdermusspjäll, friterade rödmyror, rödbetssallad med arsenik (till mindre omtyckta släktingar), etterstarkt kaffe med obligatorisk kask, frutti di mare (levande marulk, rutten lutfisk och gammal god surströmming, med stinkande tofu som vegetariskt alternativ), sylta gjord på benmärg från krigsförbrytare, julskinka på överviktiga dalkullor, helstekt spädskunk, halvor av stekt grisägg, strimlade drakvingar och så Gordon Ramsay då.

Ond fortsättning på er! Tips på hur man tillagar brittiska stjärnkockar mottages tacksamt till nästa års högtid.

2009-12-21

Labbrapport

Det var i Kina tidigare i år som tanken kastades fram: tänk om man skulle gå och ta en öl, och inte säga ett ord under hela tiden. Handsken var kastad, och jag kunde inte låta bli att plocka upp den. Det var uppenbart redan från början att det rörde sig om ett grundläggande filosofiskt frågande, snarare än om att känna sig obekväm bland andra människor.

Efter att ha planerat och skjutit upp tillställningen cirka tio gånger så kom vi oss slutligen för att ta tjuren vid hornen och go for broke. Jag hade tidigare bestämt att Tröls var the place to be, men risken att jag skulle stöta på bekanta som skulle hota upplägget gjorde att vi bytte till Fregatten. Man träffar inget vettigt folk på Fregatten.

18.30 idag var det bestämt, och en minut i halv var jag där. Köpte en Krusovice och satte mig ner vid ett ensamt bord. Inom en minut är jag utsatt för Fregatten-effekten: en man med en öl sätter sig vid mitt bord och börjar prata. Jag tar även honom vid hornen och diskuterar fornnordiska namn, assembler-programmering och verkstadsindustrin. Jag ursäktar mig när Jens dyker upp.

I början är det väldigt ansträngande. Fortfarande efter en halvtimme funderar jag på vilken typ av undanflykt som kan ta mig härifrån. Sen börjar världen flyta i takt med att berusningen tilltar, och framåt slutet kan vi då och då nästan skratta tillsammans åt vad vi ser runt ikring oss. Då har vi redan bevittnat ett klassiskt Fregatten-nummer: folk som spiller öl över både sig själva, stolar, bord och golv.

När den sista ölen var halvt urdrucken var det som om allt föll på plats. Det var möjligt. Vi kunde klara det. De som talar om hinder talar som druckna. Det ursprungliga avtalet hade gällt ett minimum av tre öl och två timmar. Vi hade klarat det. Snön log emot mig när jag sneddade över Värnhemstorget på väg hem.

Fregatten sviker inte.

2009-12-19

EU-ordföranden, statsminister Fredrik

God jul snart då!

Jag tittar lite på nyheterna. På svt.se står det så här i en ingress: "EU-ordföranden, statsminister Fredrik, uttrycker frustration över resultatet av klimatmötet i Köpenhamn." Så jävla roligt.

Men han är inte bara rolig när man pratar om honom, utan även när han pratar själv. Det gick ju åt helvete i Köpenhamn. Vad är problemet? Vi kollar på några lösryckta citat:

"När det gäller Kina är inställningen att tillväxt går före allt annat." Sure, precis samma gamla U-I-fråga som vanligt: de tycker att de borde få uppnå vår nivå innan vi ska ställa vår typ av krav på dem.

"Världen består inte av 193 demokratier som nu står till svars inför sina väljare." Okej, så om du frågar en typisk väljare om de vill göra sig av med bilen så menar EU-ordföranden, statsminister Fredrik att han/hon skulle göra det för miljöns skull?

Problemet är att demokratier, precis som diktaturer, ser till sina lokala intressen, även om det i demokratier typiskt görs på ett mindre godtyckligt absurt sätt. Ska man lösa globala problem så behövs det någon som har global auktoritet.

2009-12-18

Okej

Tre veckors ledighet. Vafan ska jag göra nu då? Svar: ingenting. Ljusa tider för bloggen.

2009-12-09

bada

Samsung kallar bada för ett OS, men det ser mer ut att vara en applikationsmiljö som kan flyttas mellan olika OS. Det finns en massa intressant information på dev-sajten. Jag tittade igenom det de kallar för "tutorials", som snarare påminner om presentationsmaterial. De är ganska roliga, med engelska som är dålig på ett sätt så att det bara blir skojigt. Min favorit: "Can I play with data corruption and other madness?" (Svaret på frågan är nej, man kan inte leka med data-korruption och annan galenskap i bada.)

Det är lite läskigt att de verkar ha tagit starka intryck av Symbian: C++ med tvåfas-konstruktion, inget multipelt arv utom med interface-klasser, inga exceptions, all data minutiöst inkapslad etc. Man slipper visserligen leaves, active objects och 50 sträng-klasser, men den errno-liknande felhanteringen ser inte direkt smidig ut att använda.

UI-delen är väldigt konservativ, ett klassiskt "Button *b = new Button()"-API. Det finns en builder med som kan spara ut komponenter som XML. Exemplet som ges är att man gör sin komponent i buildern och skapar upp en kontroll från XML-en i C++-koden. Verkar lite knöligt, men eventuellt så kan man ladda in en XML-fil för hela UI:t, som med GTK/Glade. Vill man göra coola UI-grejer så finns det en Flash-kontroll och GLES, som överallt annars.

Annars är det mycket stöd för att hantera communities, kontakter, social nätverk, realtidswebben 3.5 etc. All ens interaktion med andra loggas automatiskt, och det finns API:er för att söka i databasen där infon lagras. Det finns även med API:er för att hantera en del special-grejer, som ansiktsigenkänning, haptics, rörelsesensor etc.

Rent allmänt ser det ganska trevligt ut, trots Symbian-vibbarna. Det skulle nog kunna vara ganska trevligt att jobba med. Och med slogans som "The platform with more opportunities" så kan man knappast misslyckas, eller hur?

2009-12-07

En miljon röster

Jag försöker läsa Carol Clerks Pogues-biografi, vilket inte är lätt. Hon har tydligen bestämt sig för att hon vill låta alla komma till tals hela tiden. Texten är så späckad med citat att den består mer av späck än av späckee. Det är ingen överdrift: jag slår upp en slumpmässig sida och räknar till 9 citat. Ungefär halva textmassan på sidan består av citat. Problemet med det här är att tempot dras ner till ett minimum. Varje nytt stycke är ett citat, en ny röst, ett nytt hinder för handlingens framåtskridande.

Det är som att se en dålig amerikansk dokumentär. I scen efter scen lyssnar man på människor som pratar. Först kommer flintisen i den bruna kavajen och säger "He had such a great sense of humour, I remember once when he...", sen kommer kvinnan i den lila dräkten och säger "Of all the people I've ever known, he was one of the most imaginative and humble...", och sen kommer den skäggiga psykologen och säger "He used to go to Minnesota during the summers, although he preferred the winters in New York."

Det leder ingenstans. En författare måste våga berätta sin historia. Hon har lika stor chans att försvanska i sitt val av citat som genom att referera dem. Det handlar inte om respekt mot biografiobjektet, utan om respekt mot läsaren. Det kanske är menat att vara postmodernt eller något, men det är snarare postintelligent.

2009-12-06

Trådar i poolen

Det är kul att uttrycket "multitasking" har slagit igenom på bred front, med tanke på hur obskyrt det kändes när man köpte sin första Amiga. Vad finns det för andra sådana där datatekniska uttryck som kan komma att leta sig in i vardagsspråket inom en snar framtid? Delat minne? Thread pools? Multipelt arv? Turingmaskin?

Whatever, någon snubbe som heter Paul E. McKenney skriver om hur osvårt det är med parallellprogrammering. Han har en bra poäng och argumenterar för den på ett bra sätt, eller åtminstone emot den motsatta ståndpunkten.

2009-12-02

Kanban, NoSpread, Håkan

Vi har börjat köra Kanban i ett projekt på jobbet, istället för Scrum eller kaos. I en lättrörligt organisation kan man byta process utan motstånd. Det tog inte mer än en halv dag från att förslaget kastades fram till att det var igång. Scrum passar om man utvecklar längs en långsiktig linje mot horisonten, som i ett spelprojekt eller en webbsajt eller en tomteverkstad. Kanban passar när man utvecklar i ett game of life, med ständiga förändringar, flera parallella men divergerande spår och prioriteringar som ändras från en dag till nästa.

Efter att ha tvingats jobba i Excel i flera timmar idag så slog mig tanken att skapa en väg ur denna lejonkula, genom att utveckla ett program som gör det som Excel används till, men inte är avsett för: att representera en samling entiteter, en per rad, med ett flertal egenskaper var, strukturerade i kolumner. Inga oändliga rutnät, inga kalkyler, inga tusen funktioner, utan bara det allra nödvändigaste. Rutor med text i, som uppträder som man vill när man använder programmet på det sättet: automatiska radbrytningar, intuitiv navigering, lite färgkodning och fonter, sortering per kolumn, enkelt att flytta rader upp och ner. The future looks bright. Eller vi får se.

Naseer skriver om Sverige idag och att inte vara född här. Jag hänger upp mig lite på det här: "70-talister och nedåt är relativt vana med det Sverige vi har idag". Jag vet inte det, jag. När jag var liten så var Sverige Anna Olsson, Maria Eriksson, Mikael Andersson, Anders Håkansson, Jenny Mattsson, Håkan Andrén, Anna-Maria Stark, Karl-Åke Nilsson, Christine Rosquist, Kenneth Elofsson, Lennart Åkerlund och Ove Hjort. En sverigedemokrats småsensuella dröm om ett rensasigt vaterland. Man kanske åkte in till Uppsala, såg en mörkhyad människa och tänkte "Oj, coolt, en utlänning, undrar vad han tycker om Sverige". Det är inte speciellt länge sedan, men det är väldigt annorlunda.