Man lever så länge man lär

Inlägg taggade ‘prokrastinering’

Refaktoriseringsjunkie

Dags att färdigställa det mer yrkesrelaterade av blogginläggen för dagen. Jag hade gärna gjort det tidigare, men hade trevliga, sociala aktiviteter inbokade. För en stund sedan kom jag hem och eftersom jag drack kaffe efter oplanerad söndagmiddag med vänner föreligger viss risk för att det blir svårt att somna.

Idag är det alltså Sveriges nationaldag och jag är först och främst ganska trött, behöver vila lite också. Om jag nu vet hur man gör. Sent igår kväll lämnade jag in den avslutande uppgiften för vårens högst prioriterade kurs (se studierapport i föregående inlägg) och håller så smått på att varva ned. Jag har kört rätt hårt på jobbet under våren vilket bl.a. bidragit till att studierna hamnat lite på undantag.

Om jobbet, ja. Jag kör som sagt hårt, inte ens alltid för att jag måste utan för att jag inte kan låta bli (hjälp, jag behöver avgiftning!), men innan någon ringer efter hjälp vill jag påpeka att parentesen var humoristisk. Läget är under kontroll och när det närmar sig för mycket ser jag till att få den återhämtning jag behöver.

Icke desto mindre är jag nog lite av en junkie när det gäller ordning och reda, data och programmering, och för det sistnämnda inte minst refaktorisering.

Det är få saker som är så tillfredsställande som att få städa upp i mossbelupen och mögelangripen gammal bortglömd och försummad kod så att den blir klar, tydlig, begriplig och lätt att uppdatera när ny eller ändrad funktionalitet ska in. Att t.ex. eliminera krångliga språkliga konstruktioner eller vända på villkor, i syfte att förenkla koden och därigenom öka förståelsen, liksom skala av lager efter lager av plack som samlats genom åren och vid mindre uppdateringar. Fantastiskt!

Jag blir ständigt överraskad och förundrad över hur effektivt det är just att vrida och vända och plocka isär och sedan återuppbygga programkod. Buggar gör sig plötsligt uppenbart påminda, död kod rullar ut över bordskanten eller bara blåser bort i en uppfriskande bris när jag jonglerar eller kastar upp alla delar i luften. Det som kommer ner igen är det som behövs, och det som får vara kvar. Typ.

Ett av mina favoritverktyg just nu är visualisering, eller mer specifikt: diagram. Normalt sett ritar jag diagram i huvudet för att hålla reda på och förstå flödet i koden och vad den gör, men vissa saker är för stora för att riktigt få plats eller så behöver jag kommunicera med andra och då kan det underlätta med diagram. I datorn, thank you very much – jag fixar inte att rita för hand på en whiteboard. Avundas lite grann dem som kan, om jag ska vara ärlig. Det är en bra förmåga som gör det enklare för olika människor att kommunicera och förstå varandra.

I min senaste refaktoriseringsuppgift ingick det att dokumentera flödet genom systemet via ett sekvensdiagram och det var ritandet av diagrammet (givetvis med tillhörande noggrann analys) som tog den allra största delen av tiden.

Jag gick grundligt till väga genom att först rita in vartenda litet metodanrop, både inom tjänsten och utåt mot andra tjänster, genom hela flödet och det var banne mig tur att jag jobbade hemifrån, för det resulterande diagrammet var gigantiskt! Min (dock är den inköpt av sambon, så rent tekniskt hans, men det är främst jag som använder den) 27-tumsskärm räckte inte långt, och på jobbet har jag bara två mindre skärmar på 21 eller 22 tum… det hade inte alls funkat särskilt bra.

Eftersom diagrammet blev så stort slog jag isär det och analyserade delarna av flödet var för sig och samtidigt lärde jag mig att man i PlantUML kan använda include-filer. Notera att jag ur ett utifrånperspektiv ritade diagram, medan jag i själva verket analyserade kodens funktion med hjälp av denna visualisering.

Analysen resulterade i en väldigt mycket bättre förståelse för vad som görs, samt ett ifrågasättande av en hel mängd olika anrop till angränsande tjänster.

Varför hämtas Objekt A i ett separat anrop när samma objekt faktiskt kommer in via hämtning av en bunt Objekt B, som alltid måste göras? Den koden försvann.

Och ja, detta är en designförändring som potentiellt kan ge ändrat beteende och därför har jag nogsamt tänkt igenom eventuella följder. Teoretiskt kan det bli fel, men jag kan inte se att det bör kunna bli det i praktiken. Famous last words…

Varför hämtas en bunt Objekt C för att eventuellt läggas in i bunten med Objekt B, när detta redan gjordes när Objekt B-bunten hämtades. Hela denna sista del av initialflödet visade sig alltså också vara överflödig. Även den koden försvann.

Ni ser vart vi är på väg, va? Flera delar av flödet är redan bortstädade och mitt diagram börjar bli hanterbart i storlek. Dags att titta närmare på den egentliga funktionaliteten i flödet, koden där det som ska göras också är det som görs.

Här flyttar jag omkring kodrader och ändrar villkor så att saker står för sig själva så mycket det går och bara det som verkligen hör ihop står tillsammans. Detta uppenbarar en struktur som gör flödet lättare att förstå, men det kan bli bättre.

Jag bryter ut den kod som förbereder och utför hämtningen av ett antal Objekt B till en egen, separat metod (som dessutom blir lätt att testa). Denna får heta just ”hämta Objekt B”. Det blir tydligt för läsaren att grunden är en bunt Objekt B.

På liknande sätt strukturerar jag om så att koden som gör det egentliga jobbet ligger i en klunga och kan brytas ut till en egen metod vid namn ”gör jobbet”. Detta tydliggör uppgiften (förutsatt att man bryter ut rätt saker!) och lämnar utrymme att fokusera på de förberedande åtgärder som måste vidtas innan.

Några kontroller som kan avbryta flödet flyttas upp för att undvika situationen att det vid ett avbrott utförts onödigt arbete. Det är en bra princip, det där att göra så lite så möjligt så sent som möjligt, och som en följd därav kanske inte behöva göra något alls. Prokrastinering som princip. Hm… det tål att tänkas på.

När jag tittade på sekvensdiagrammet undrade jag också varför det gjordes två anrop, direkt efter varandra, mot en viss tjänst. Kunde man inte lika gärna göra bara ett anrop och låta den anropade metoden utföra båda uppgifterna? Efter att ha undersökt hur de två metoderna i övrigt användes i systemet (svar: inte alls) slog jag ihop dem till en enda, givetvis med ett tydligt beskrivande namn.

Och där någonstans kunde jag inte hitta något mer att ta bort och ansåg mig därmed vara klar. Nu är koden luftigt lätt och ledig. Den doftar sommaräng!

Nästa fråga: var och när ska jag få min nästa fix? Jag längtar redan…

Annonser

Prokrastinering lönar sig

Sömnbristen ådragen mig tidigare i veckan har ännu inte släppt sitt grepp. I morse vaknade jag (inte för att jag sovit färdigt) strax efter nio och steg upp, d.v.s jag drog på mig lite paltor, gick ut i köket och satte mig framför datorn. Datorn blir på något sätt ett sällskap när man är ensam hemma.

Jag grunnade nyss på om jag inte skulle ta och gå ut i biblioteket för att läsa i den inströmmande solen – fototidning, fotobok, vanlig bok… och kände då en motvilja mot att lämna datorn i köket. För tänk om jag behövde meddela världen något, eller om världen ville mig något? Sjuk, säger jag!

Efter någon timme började magen kurra. Hungrig, frukost! ropade den. Jag såg mig förvirrat omkring och undrade vem som skulle laga mat. Eftersom här inte finns någon annan än jag var svaret förstås redan givet. Tur att stekfläsket åtminstone var färdigskivat. Att skära bort svålkanten och dela köttet i bitar gick utmärkt, liksom även ihopvispandet av ägg, grädde och kryddor. Utan skal, märk väl. Resten gick också utan mankemang. Min ägg- och baconfrukost blev inte så värst annorlunda jämfört med annars, då sambon är den som står för tillagningen. Det verkar troligt att jag överlever veckan med egen hushållning och skulle det krisa får jag väl leva på ägg och bacon/fläsk. Haha, riktigt så illa är det faktiskt inte – jag klarade mig fint förr och skulle förstås göra det nu också.

Just nu är mitt största problem vad jag ska göra av dagen.

Eller förlåt, det var mitt största problem, för nu börjar jag banne mig skönja en kontur.

En fikaträff har bokats in och den inleds med ett besök på SF-bokhandeln. Och ska jag dit måste jag ju veta vad jag ska titta efter (läs: köpa), så det blir allt till att besöka biblioteket (d.v.s det soliga hörnrummet där läsfåtöljen och alla böckerna står) och inventera samlingen av SF och fantasy.

Och längre än så kom jag icke denna förmiddag eftersom sambon anropade per IM och jag sedermera blev kvar vid datorn tills det var dags att göra sig i ordning och ge sig iväg. Jag hann alltså varken komma till något beslut eller för den delen ens i närheten av biblioteket. Med andra ord funkar prokrastinering – skjuter du upp beslutet länge nog kan det hända att det aldrig behöver fattas.

MacMia

Från och med idag, 19/11, är jag MacBook Pro-ägare. Nästan lite otippat.

Mitt datorköp är ungefär vad det här inlägget handlar om, rent faktamässigt, om än med en massa för somliga ovidkommande detaljer. En hel del om hur jag funkar finns det också, för den som är intresserad och orkar läsa mycket.

Sedan några dagar tillbaka har jag ett datorrelaterat projekt igång. Det handlar om att förbereda för, och genomföra, en total ominstallation (eller ett övergivande, om det inte funkar bra) av min primära dator. En gammal stationär hem-pc, som hängt med sedan i september 2003. Med Windows XP. På sistone har datorn känts så seg och trött att jag inte ens använt den – i stället har jag börjat ta med mig jobbdatorn (laptop) hem och använda den som mina primära privatmaskin.

När man inte längre använder sin dator är det nog dags att göra något så jag bestämde mig för att äntligen prova Ubuntu, vilket jag ju länge velat göra – av nyfikenhet, för erfarenhet, av princip och jag vet inte vad – men har inte haft någon dator att tillgå för ändamålet. Eller rättare sagt, den gamla jobbdatorn (laptop, förstås) jag faktiskt har lyckades jag inte få att boota från cd (eller usb-sticka för den delen) – och inställningarna för det verkar låsta. Kollegan påstår dock att det går att fixa, så det ska jag väl också prova vid tillfälle.

Det är så mycket nu – så mycket jag vill och helst allt på en gång också. Och det är inte faktiskt, utan bara som det känns. Vore jag inte så jävla enkelspårigt sekventiell skulle jag ha betydligt färre bekymmer. Men det finns väl något bra också med att vara lite så där fyrkantig som jag kan vara. Ibland känner jag mig som en bulldozer – ångar orubbligt på rakt fram. Eller en oljetanker? Obeveklig.

Ord om Mac i april 2008 Jag har länge planerat att skaffa mig en ny dator, en fräsch ersättare till den gamla trötta stationären. Det jag däremot inte lyckats med är att bestämma vad jag ska ha. Bytte ord med Sebastian Robertsson i april, t.ex, och hade då pratat med GP som länge lobbat för Mac. Jag responderade aldrig på Sebastians sista svar eftersom jag kände mig utpekad som vanlig användare men kunde inte bestämma mig för om jag skulle bli förolämpad eller road. Ungefär så. Jag betraktar mig inte som vanlig användare, men det kanske jag borde? Ännu en Mia-myt att krossa, tror jag. Jag var som synes då fortfarande väldigt osäker på vad för slags dator jag ville ha och det var långt senare som det kom att handla om ett val mellan Mac:ar.

I åratal hade jag sagt att min nästa dator skulle vara bärbar, men samtidigt satt jag ju ändå alltid på plats i underhållningshyllan och bärbara datorer är ju dyrare än andra. Jag ville definitivt inte betala för något Windows, som jag ändå inte ville ha. Att det skulle vara något med unix/linux var jag säker på, för myten om mig själv som unixmänniska finner jag ingen anledning att inte bevara. Tvärtom.

Och eftersom jag är den jag är (det kör ihop sig i skallen när det blir för många variabler så då måste jag förenkla) blev det till slut enklast att gå på Mac-spåret. Jag kommer till en punkt då jag inte orkar tänka längre utan bara gör.

Så, iMac eller MacBook? Där har jag stått och stampat och velat i veckor eller till och med månader. GP har suckat och flinat om vartannat över att jag har haft så svårt att bestämma mig. Jag har försökt vila i detta och påminna mig om att det kommer att lösa sig, bitarna kommer att trilla på plats och jag kommer förr eller senare att veta vad jag vill. Det tar bara tid att komma därhän. Det där går inte att forcera utan det är bara att invänta ögonblicket då alla tvivel är undanröjda. Då allt står klart som kristall. Då kan jag agera. Innan dess är det bara att vänta.

Har jag sagt att jag avskyr att vänta? Det är en av mina myter om mig själv.

Kollegan, GP, Mac-lobbyisten har skaffat sig en av de där nya MacBook:arna. Vi besökte närmsta butik och kollade en gång och min spontana känsla var att bildytan var för liten. Bara 13 tum. På jobbdatorn har jag 15 (tror jag) och tycker att det är precis vad man (jag) behöver. En MacBook med större bildyta hade varit perfekt, men MacBook Pro var enligt min mening för dyra. Så inget kändes riktigt rätt. Tills jag åkte med en taxichaufför med MacBook på instrumentpanelen.

Han var väldigt trevlig och vi resonerade kring val av Mac och han sade att det jag ville ha var ju en MacBook Pro och jag insåg att han hade rätt. När jag sedan idag på kontoret i city pratade med GP och han sade samma sak, samt tipsade om nedsatt pris på den äldre modellen… tja, då var det inte så mycket att snacka om. Jag är inte brydd om att ha det allra senaste och då blir det ju genast mindre dyrt.

Planen var att handla i nätbutik, men det blev först ett besök på inLife för att kolla läget och prata och de hade faktiskt modellen inne, om än till ett lite högre pris. Det känns bra att handla i butik och få datorn med sig på en gång, så jag slog till och köpte därmed i praktiken för första gången en dator ”på riktigt”. Premiär.

Jag kan inte kalla mig Mac-användare ännu för faktum är att jag inte ens öppnat kartongen. Det var för mycket annat som skulle göras idag och det kommer nog att dröja lite innan jag anser mig ha tid att packa upp och börja bekanta mig med datorn. Typiska saker som att jag måste röja köksbordet (för att ha plats att vara på) eller vill bli klar med den gamla datorn innan jag tar mig an den nya. Och ska jag ändå ändra på datorarbetsplatsen i underhållningshyllan så vill jag kasta ut den gamla stereon med sina stora högtalare som hindrar mig från att montera de sista hyllplanen, men för att kunna montera hyllplan behöver jag skaffa beslag och så blir det ett jätteprojekt av det hela och då gör jag inget. På väldigt länge.

Jag vet att många tycker att jag är hur konstig som helst, som kan låta kartongen bara stå, men jag funkar så. Det är inte ovanligt att jag känner att jag måste göra undan alla tråkiga måsten först, innan jag ”får” göra det som är roligt. Kan man tänka sig, att jag inte alltid kommer ända fram till det där roliga? Pucko-jag,

Så det där med jag och väntan… det är nog bara en myt.

Jo, förresten, anledningen till att jag drog upp allt det här med ominstallationen av den gamla datorn och all bakgrund var att det kändes så paradoxalt att när jag äntligen håller på att byta till Ubuntu så går jag plötsligt och köper mig en Mac.

Klockan närmar sig fem så jag törs lova att det inte blir någon vanlig arbetsdag.

Kedjeförseningar

Det var det där med att gå ut, ja. Jag tror att det var det första jag skulle göra idag. Och här sitter jag ännu. För jag kom på att det fanns en bunt andra faktorer som påverkade och att jag hade vad som i alla fall känns som en massa saker jag absolut måste göra innan jag kunde gå ut och promenera. Sådant som t.ex att duscha, hitta svala kläder och fixa i ordning (plus äta!) lunch. Ja, det var några saker i alla fall. Det finns fler faktorer, av mer privat natur, som jag förtiger.

Suck, sådana här gånger blir jag lite trött på mig själv.

Lunchen är i alla fall avklarad (citruskyckling med ingefära), men varken duschandet eller kläderna. Och jag måste gå och handla, så att jag kan laga mat för frysens räkning. Mest frukt och grönsaker. Och så en massa bär, som jag glömde köpa förra gången, och antagligen blir det väl keso till dem – för i veckan ska jag ju äta två mål mat per dag och då verkar fruktsallad med keso bra som frukost. Inget besvär med att laga till, liksom. Och för fryslagandet skulle jag också behöva skaffa matlådor. Var hittar jag dem, och hur avgör jag storleksbehovet?

Och jag får inte ihop en sammanhängande plan av de bitar jag har att spela med. Vilket jag gissar är anledningen till att jag sitter här i stället för att faktiskt göra något, vad som helst. Jag tror att jag helt enkelt får skjuta upp promenaden tills i kväll. Fördelen med det är att det är skönare att gå när det hunnit bli lite svalare. Nackdelen är förstås att jag då knappast längre kan få någon färg av solen.

Så… när man inte får ihop ekvationen eliminerar man bara några variabler. Eh.

Det jag menar, om jag ska vara seriös, är att när jag inte får ihop det för att det är för många saker att jonglera med så brukar det gå att lösa problemet genom att plocka bort en eller flera tills det hela blir hanterbart igen. Jag är verkligen inte någon som klarar av att hantera en samtidig mångfald. Det där med att kvinnor besitter simultanförmåga är bara en myt. Säkert ännu en manlig härskarteknik!

Alla fattade att föregående utrop handlade om humor, va? Jag bara kollar…

Idag är det verkligen sommar ute – lika varmt som inne (där det är varmare än jag skulle önska: +25ºC). Inga fönster eller dörrar är eller har varit öppna idag. Solen skiner delvis på min balkong och jag har insett att lägenheten nog kommer att vara rätt varm om sommaren. För solen ligger i princip på från morgon till kväll, om än på olika sidor och ibland stoppad av huset mitt emot. Ljust och fint är det!

Fokuserar på fel saker

Här sitter jag och formligen anstränger mig för att göra annat än det jag borde. Och då pratar vi om ”borde” i en betydligt mer positiv bemärkelse än när det handlar om saker man helst inte vill göra. Jag har liksom ingen vettig anledning.

De två, eh… tre, saker jag borde göra är på kort sikt tvätta (eller åtminstone boka en tid i tvättstugan), på liiite längre sikt förbereda den här bloggen för offentlighetens ljus (annonserad premiär på måndag) och på extremkort sikt kasta mig i duschen för att komma iväg i tid för att hinna ta det lugnt och assistera i köket hemma hos vännerna jag besöker i kväll.

Så vad tusan gör jag här!?

Etikettmoln