Debugging


Comments Off on Debugging

Hej!

I det här inlägget har jag tänkt beskriva hur man söker fel i kod, så kallad debugging. Att vara bra på att hitta den kodsnutt som orsakar en bugg är till stor nytta för utvecklare, det är svårt att fixa en bugg utan att ha hittat rotorsaken till att ens system beter sig felaktigt. Med en sund strategi för debugging går processen betydligt smidigare! Värt att nämna är att jag och de flesta andra på Cinnober använder utvecklingsmiljön Eclipse så inlägget är även det baserat på Eclipse verktyg för debugging.

Som utvecklare hoppar man in strax efter att en bugg blivit inrapporterad. Efter att ha läst in sig i buggrapporten har man rätt bra koll på hur man orsakar buggen. Det första jag brukar göra är att en första gång försöka återskapa felet. Då jag väl har lyckats och fått större förståelse för vad som går fel tar jag ett steg tillbaka och funderar lite, kan jag skriva ett automatiskt test som provocerar fram den här buggen? Med ett autotest redo kan man snabbt göra ändringar och se ifall de gav rätt resultat så ifall jag kan använda mig att ett sånt skriver jag det alltid. Det lönar sig i längden, speciellt med tanke på att testet är kvar även efter att du fixat buggen och ser till att du får veta om den återvänder.

Då jag väl har ett test jag kan köra för att provocera fram buggen är det dags att leta efter orsaken. I många fall har man en aning om var man ska börja, man kan exempelvis ha tillgång till en stack trace  som pekar på ett ställe där något gått fel i programkoden eller att man helt enkelt har koll på ett lämpligt område att börja söka. Om buggen exempelvis handlar om att ett loggmeddelande skrivs ut på fel sätt är det inte helt förvånande en bra idé att kika i koden som gör loggningen innan man letar någon annanstans.

Efter att ha hittat rätt ställe att kika på börjar man sätta in några brytpunkter på lämpliga ställen, kör sitt test och stegar igenom koden i jakt på skumma beteenden. Hittar man ingenting får man bredda sin sökning och fortsätta. Om det går trögt är det aldrig fel att ta en paus och ventilera sina frustrationer vid kaffebryggaren eller ta en kort promenad runt huset, så småningom ger även de trögsta buggarna med sig. 🙂

För att visa ett lite mer praktiskt exempel kan vi tänka oss detta. Vi har ett lotteriprogram som drar en vinnare utifrån en lista med registrerade konton. Just nu finns det bara två testare som finkammar systemet efter buggar, S. Hibe och J. Wise. Vi ska precis testköra lottdragningen då vi får buggrapport från Wise, pengar verkar ha försvunnit från hans konto! Mystiskt. Eftersom att Wise är precis som sitt efternamn har han beskrivit vad han gjorde precis innan pengarna försvann i en testbeskrivning, han var i färd med att sätta in mer pengar på sitt konto.

Vi börjar med att skriva två tester som uppdaterar kontobalansen.

DepositTests

Vi kör båda testerna och ser att inget utav dem går igenom, problemet är alltså inte begränsat till specifika konton utan är av ett bredare slag.

failedTests

I nästa steg vill vi kika på vad som händer i koden då den körs så vi sätter ut en brytpunkt i början utav metoden depositToAccount i klassen för kontohantering.

breakpoint

Därefter vill vi köra vårt test i debug-läge och stega igenom depositToAccount rad för rad samtidigt som vi håller koll på vilka värden de olika variablerna har. Efter inladdning har Hibes konto 1000000 i kontobalans, vilket kan ses i variabelfönstret. Testet vill nu lägga till 1234 till kontobalansen.

variabler

Vi stegar på och upptäcker utan problem den kodrad som orsakar felet, det visar sig att vi har glömt tänka på att ta med den tidigare kontobalansen då vi skriver in insättningar. Är kontobalansen noll är det inga problem men följande insättningar blir felaktiga.

bugFoundVertical

Vi fixar till kodraden och påminner oss att täcka in fler testfall med  enhetstester framöver, det är trots allt rätt pinsamt ifall något liknande skulle hända med en kund istället för att en testare upptäcker det!

Det här är såklart bara en kort introduktion och troligtvis något som de flesta som skrivit kod redan är bekanta med. Just hur svårt det är att hitta felorsaken beror till stor del på hur stort systemet du debuggar är och hur bra kunskap du själv har om det. I vissa fall kan buggen bara återskapas i väldigt specifika förhållanden eller timingfönster vilket kan vara extra jobbigt att arbeta med. Det viktiga är att ha tålamod!

Nu är det dags för helg, ha det bra!

Comments Off on Debugging





Bookmark and Share

Please leave a comment - click here!

Nya tag efter semestern


Comments Off on Nya tag efter semestern

Cinnobers nya kontor

Som vanligt så flyger semesterdagarna förbi som bara den, men vilken härlig sommar det har varit än så länge! Det blev dock en större omställning för min del att komma tillbaka till jobbet denna måndag då Cinnober hunnit flytta in i sina nya lokaler här i Umeå efter att jag gick på semestern. Men sagt och gjort så blev det att hitta rätt ingång på den nya byggnaden för att sedan hitta till rätt våning. Spännande!

Väl på plats så började dagen med att montera ihop min arbetsstation igen som varit nerpackad, men då dom kontorsansvariga gjort ett fantastiskt jobb så gick det enkelt att hitta sitt skrivbord och sedan så var det bara att koppla ihop sladdarna till datorn så var man uppe och igång på direkten utan strul. Minuter senare var både en kopp kaffe och morgonmötet med dagens agenda avklarad och man har fått nya arbetsuppgifter att ta itu med. En mycket smidig start på dagen!

Comments Off on Nya tag efter semestern





Bookmark and Share

Please leave a comment - click here!

Sommartider! Hej! Hej!


Comments Off on Sommartider! Hej! Hej!

Nu är vi i början av juli. Robin och Oskar har redan gått på semester, min börjar på fredag. Det har varit fullt up med kravhantering. Vi har fått ett antal CI:s (Change Items) som behövde att hanteras! De flesta kravare (Business Analyst) i vårt projekt är också på semester så jag har fått större ansvar att kommunicera direkt med kunden, LME (London Metal Exchange).

En av de viktigaste CI:s som vi har fått från kunden har med EMIR att göra. EMIR står för European Market Infrastructure Regulation. EMIR är EUs reglering på derivatives, central counterparties and Trade Repositories. EMIRs mål är att öka genomsynligheten och minska risker i derivatives marknaden.

Derivative är ett finansiellt instrument vars pris beror på en eller flera underlying assets. Själva derivative är ett avtal… Om man inte har bakgrund inom finans, det är en utmaning att kunna allt det här!

Jo.. Som Rasmus har skrivit i sitt förra blogginlägg så har vi flyttat till vårt nya kontor. Det känns bra att jobba här!
Vårt mysiga biblioteket är mitt favorit ställe!

bild (10)

Trevlig sommar!

Comments Off on Sommartider! Hej! Hej!





Bookmark and Share

Please leave a comment - click here!

Nytt umekontor!


Comments Off on Nytt umekontor!

Nu i veckan har vi påbörjat vår stora flytt. Cinnober i Umeå växer helt enkelt så det knakar, och nu är det dags att flytta ut. Vi är helt enkelt för många på våra nuvarande två våningar och ska flytta till ett mycket större kontor ovanpå nya ”Utopia”-gallerian i Umeå. Det blir några tomma platser på det nya stället som förhoppningsvis snart ska fyllas upp med nytt folk!

DSC_1085

Det är mycket med flytten, många saker är i lådor och de har redan flyttat våningen ovanför mig! Idag kommer jag att packa ihop mina saker och ta mig till byggnaden ovan, där jag ska jobba i framtiden. Ett av de smala fönstren på tredje raden nedifrån är mitt!

Igår var jag dit och åt lunch och tittade mig runt – och blev klart imponerad. Insidan är otroligt trivsam, smart designad och överhuvudtaget känns det som att vi får en (mer eller mindre) permanent bostad som vi kommer att trivas i allihopa. Jag får fantastisk utsikt från mitt skrivbord och miljöerna är öppna, väl ventilerade – och så mycket fönster och användbara ytor!

Så här kommer en fin bild på hur det ser ut i vårt labb i nya kontoret. Fina väggar, upphöjning med mysiga pallar och annat. Imorgon kommer jag att sitta på ett ganska liknande ställe och skriva bra och vältestat kod!

DSC_1101

Det blev många utropstecken här känner jag, men det är väl för att jag är taggad på nya kontoret helt enkelt – ha överseende!

Ses nästa post.

Comments Off on Nytt umekontor!





Bookmark and Share

Please leave a comment - click here!

Semesterdags


Comments Off on Semesterdags

Hej alla läsare!

Imorgon är det Midsommarafton och nästa vecka går jag och resten av traineeprogrammet på semester. Det innebär att idag är sista dagen innan ledigheten men även den sista dagen på det gamla kontoret. På måndag börjar nämligen det sista utav möbleringen plockas undan och flyttas över till vårt nya jättehäftiga kontor! Det är mycket som kommer att bli bättre bland annat ett ännu mer centralt läge, ett enda enormt våningsplan istället för två våningar, nya fräscha lokaler och en grym utsikt över stan! För någon vecka sedan kändes flytten avlägsen men i måndags blev den desto verkligare. I måndags flyttades nämligen vår kaffekvarn och bryggare iväg, något som kom som en chock för oss alla. De efterföljande dagarna har varit fyllda med kafferusningar till nedervåningen (man måste ju få sitt kaffe) vilket för all del har gått bra men lyxen i att ha några meter bort till närmsta nymalda, nybryggda kaffe är svår att glömma.

Efter att jag skrivit klart det här inlägget är det dags att börja stänga ned och packa ihop datorn och rensa skrivbordet. Jag kommer inte göra det utan viss saknad, det är trots allt på den här platsen jag suttit ända sedan september då jag kom till Cinnober som färsk trainee. I början var allting väldigt omtumlande och de första veckorna satt vi traineer mest på olika kurser vilket gjorde att det tog ett tag att sjunka in och vänja sig. Allt det kom efter första månaden. Man börjar först lära känna sina skrivbordsgrannar, de visar ritualen att mala och brygga kaffe, hur man checkar ut projektets system och, efter några dagars förvirrat frustrerande installerande och konfigurerande, startar upp det. Då man väl gått igenom den första fasen börjar man allt mer ha koll på vad som sägs på morgon-scrum, man förstår mer och mer vad som försiggår i projektet och man börjar verifiera och testa buggfixar. Under den tiden växer sig kunskapen om projektet som helhet väldigt mycket och man lär sig lite av den jargong som går i projektet; pingar, produkttyper, clearing brokers, non clearing members, SEFar. Det är fortfarande så att det känns som att man inte har någon koll men sakta men säkert börjar man bidra till arbetet vilket känns häftigt.

Spola framåt ett antal månader fram till skrivande stund. Jag har gått igenom utbildning för, och arbetat som, testare, utvecklare och kravanalytiker. Utöver det har jag fått besöka NASDAQ, gått utbildningar i presentationsteknik och ledarskap, besökt studentmässor och nu förra veckan även London. Att vara trainee på Cinnober är helt enkelt händelserikt! Året som trainee är inte slut än utan vi fortsätter fram till i september men redan nu börjar man kunna känna att man är på upploppet.

Jag hoppas att ni alla får en bra sommar och ser till att njuta av den, så hörs vi till hösten. 🙂

Comments Off on Semesterdags





Bookmark and Share

Please leave a comment - click here!

Klassdiagram


Comments Off on Klassdiagram

Hej 🙂

Vi, first generation traineer, är i mitten av kravblocket. Det innebär att vi jobbar som en länk mellan kunden och Cinnober. Vi utredar vad kunden skulle vilja ha och vad vi kan leverera med tanke på våra produkter och tidbegränsningar.
Vanligtvis om kunden vill ändra eller lägga till funktionalitet måste de skicka in en Change Item (CI). Sedan estimerar vi hur lång tid det tar och hur mycket det kostar och meddelar det till kunden. Jag har jobbat med några CI under min tid i kravblocket.
Just nu sitter jag med en uppgift som jag har fått från Gustaf, vår mentor under testblocket, att hitta och dokumentera alla befintliga typer av objekt och sina relationer i LMEClear (London Metal Exchange) projektet. Resultatet blir ett klass-diagram. Klass-diagram i UML (Unified Modelling Language) är en typ av statisk diagram som underlättar för oss att förstå alla klasser som finns i systemet och deras attribut,metoder och relationer.
Mitt klass-diagram har en klass för varje objekt, i klassen kan man se alla attribut som objektet har. Man kan skriva alla metoder i den tredje delen av klassen men det har jag hoppat över för tillfället.
Den här bilden visar User-klassen i mitt diagram.

ClassDiagram.vsd - Microsoft Visio

Cheerios!

Comments Off on Klassdiagram





Bookmark and Share

Please leave a comment - click here!

Besök hos London Metal Exchange; The Ring


Comments Off on Besök hos London Metal Exchange; The Ring

När jag och Oskar var i London gjorde vi ett besök hos London Metal Exchange där vi fick se när ett av de få kvarvarande börshandelsgolven i världen finns. Dom kallar den för The Ring och man fick inte ta foton där men jag letade upp en bild på hur det ser ut.

Traders and clerks react at the London Metal Exchange in the City of London

I ringen finns några av de största investmentbankerna i världen och diverse metalltrading företag representerade. De har betalat till LME för att få tillgång att trade:a i ringen. Handel sker vid fyra specifika tidpunkter utspridda mellan 11.40 och 17.00 på handelsdagen och delas in i 5 minuters perioder då en specifik metall handlas. Det finns några anledningar till att detta fortfarande lever kvar och vi frågade såklart nyfiket vad det kan bero på eftersom dom sedan ca 10 år tillbaka har en modern elektronisk handelsplattform på LME levererad av Cinnober som rullar parallellt med tradingen i ringen samt telefonordrar. Dels är det tradition att det fortfarande handlas i ringen men det gör även att handeln koncentreras ner till 5 minuter istället för t.ex 2 timmar vilket medför högre likviditet och ett bättre och mer riktigt pris på kontrakten.

Alla ordrar som läggs är bindande och samtliga innebär fysisk leverans av metall. De flesta medlemmar som handlar på LME vill inte få metall levererad till sig eftersom de främst handlar p.g.a hedging eller spekulation. Att hedga sig innebär att man säkrar sig mot prisfall eller prisuppgångar och är ett sätt för t.ex en aluminiumgruva att på ett mer förutspående sätt planera sin framtid. För att motverka att kontraktet går ut och man får 100 ton metall levererad till sin hemadress så handlar de flesta medlemmar med så kallade carrys som gör att man skjuter leveransen på framtiden, t.ex genom att köpa i december och sälja i januari.

En annan intressant förändring i branschen är de senaste årens allt mer förekommande så kallad High Frequency Trading (HFT) handel. Detta är datorer som med hjälp av algoritmer köper och säljer kontrakt i mycket hög hastighet för att försöka tjäna pengar. Vi frågade representanten från LME som visade oss ringtradingen om detta och han sa att för ca 10 år sedan var det mesta av handeln vid LME så kallad hedging. I dagsläget trodde han att det var ungefär hälften spekulation och hälften hedging och att detta har vuxit fram i.om införandet av den elektroniska handelsplattformen där man kan exekvera ordrar i mycket högre hastighet än om en människa skulle göra det framför en dator.

Det finns otroligt mycket mer att berätta om denna värld och många spännande detaljer men jag tänkte hålla mig relativt kortfattad. Det var allt för mig denna gång, skriv en kommentar eller skicka ett mail om ni skulle vilja diskutera vidare.

Comments Off on Besök hos London Metal Exchange; The Ring





Bookmark and Share

Please leave a comment - click here!

Mind the gap


Comments Off on Mind the gap

 

Hej alla läsare. Glad sommar! Jag sitter hemma efter att ha varit på besök i London med Cinnober måndag-fredag. Jag landade i Umeå igår och har efter en lång sömn återhämtat mig från dagarna. Det var väldigt mycket som hände och vi kan dela med oss av, men just nu tänker jag dela med mig utav ett inlägg jag faktiskt skrev på plats men aldrig hann ladda upp förrän nu! Som bonus får ni även en bild på två hyperpeppade traineer  precis innan besöket på London Metal Exchange.

11 Juni

Jag och min traineekamrat Johan flög på måndag till London för att träffa kunder och vara på konferensen International Derivatives Expo (IDX). Igår var jag på konferensen, idag är det Johans tur!

Att vara på konferens inriktad mot finans är något helt nytt för mig och att stiga ut ur ”projektbubblan” och istället representera Cinnober som helhet har varit en väldigt läraktig upplevelse. Eftersom att jag kommer från en teknisk utbildning utan några tidigare kunskaper inom finans var det till en början ganska svårt att presentera Cinnober på rätt sätt och kunna formulera mig på ett sätt så att de jag pratar med förstår. Det finns andra språkbarriärer än bara engelska kontra svenska! Trots den tidiga uppförsbacken gick allt bra, med de andra Cinnober-representanterna på plats och redo att komma med tips och ta över ifall en konversation drev iväg mot för mig okända områden blev besöket på konferensen en kanonupplevelse.

Idag har jag suttit hos vår kund LME Clear, London Metal Exchanges egna clearinghus, och har bland annat försökt samla mina tankar om gårdagen och skriva ned så mycket det går innan jag glömmer detaljerna. Utöver arbetet ser jag fram emot att hinna turista lite under de kvällar som återstår innan vi flyger hem på fredag. Då jag och Johan väl kommer tillbaka till Umeå kommer vi nog sätta oss och skriva ett lite mer sammanfattande inlägg om våra upplevelser i London men jag ville skicka iväg en liten uppdatering redan nu.

Jag ser fram emot imorgon, då ska vi till London Metal Exchange och få se ett av de enda kvarvarande börshandelsgolven i världen där handeln sker öga mot öga och inte har övergått till elektronisk handel! Det ska bli en riktig upplevelse, förhoppningsvis blir handeln intensiv!

 

Comments Off on Mind the gap





Bookmark and Share

Please leave a comment - click here!

Utveckling mot höga krav


1 Comment

Testblocket är klappat och klart och undanstädat och nu är vi utvecklare i LMEClear! Det är alltid spännande att få prova på något nytt och det har varit en riktigt skojig början på utvecklingsblocket då vi har fått en liten introduktion till olika byggverktyg (som gör körbara program av källkoden, med mera).

Nu ska Johan och Oskar få åka till London och jobba en vecka – min tur får komma senare. Det passar mig bra eftersom utveckling inte har blivit rutin än, det är nya och intressanta saker varje dag helt enkelt!

En typisk dag för mig ser väl ut ungefär såhär:

 

En bugrapport från kunden har kommit in.

En testare/jag utreder (ofta tillsammans med mig och krav) om rapporten stämmer och om det motsäger kraven.

Sedan börjar det riktigt roliga: jag får börja grotta ner mig i koden. Första steget är att reda ut vilken del av programmet felet ligger i.

Sedan börjar jag ”debugga” – jag kollar var programmet kör fast genom att långsamt köra koden som någonstans är felaktig. Ungefär såhär kan det se ut:

När jag väl hittat felet så rättar jag det, skriver ett eller flera automatiska test, testar manuellt – och sedan får testarna testa av det riktigt ordentligt så att jag inte har gjort något fel.

Det märks verkligen att för varje fel jag hittar och rättar så blir jag bättre, det känns alltid superroligt att lyckas med någonting! Jag återkommer senare när jag lärt mig ännu mer!

Read 1 Comment





Bookmark and Share

Please leave a comment - click here!

Ett litet boktips


Comments Off on Ett litet boktips

Tiden går, vädret blir varmare och sommaren är snart här. Den senaste månaden har varit fylld av intressanta aktiviteter, till exempel personalfesten som Johan tidigare skrivit om! För er som studerar är terminen så gott som slut och ett tre månaders sommaruppehåll kan ta vid. Det är ju lite olika vad man tänker göra under sommaren. Under tiden som student sommarjobbade jag på Volvo här i Umeå under de åren möjligheten gavs, annars passade jag på att läsa en sommarkurs eller två. Trots det fick jag rätt mycket tid över och ägnade mig utöver mycket annat åt att läsa. Sommaren och semestern i huvudsak är en perfekt tid att sitta utomhus och förkovra sig i en bra bok. Därför tycker jag att ett boktips är på sin plats!

Jag är precis i slutet av mitt läsande utav The (Mis)behaviour of Markets: A Fractal view of Risk, Ruin and Reward av Benoit B. Mandelbrot. Den är en del av den utökade samlingen trainee-litteratur som inte strikt tillhör något av de utbildningsblock vi går igenom. De böcker som finns i den utökade kategorin fungerar som en orientering i finansvärlden och innehåller alltså kunskap som är bra att ha med sig i ryggsäcken oavsett vad man kommer att arbeta med efter trainee-programmets slut! I boken ger Mandelbrot en historisk översikt över vägen till modern finansteori och även hur fraktaler kan användas för att bygga bättre modeller utav prisers rörelser. Då man har en aning om i vilket intervall som priset på en aktie kan ligga i vid ett framtida datum kan man estimera hur riskfylld den är. Det finns lite olika modeller man använder för att göra detta men Mandelbrot menar att fraktalmodellen, vars estimering ger ett betydligt mer riskfyllt svar, är den som bäst beskriver prisrörelsen. Boken är både intressant och underhållande att läsa och jag tror att man, även ifall man inte arbetar inom finans eller har det som specialintresse, kommer finna den mycket intressant!

Det var allt för den här gången, under hela nästa vecka befinner jag och Johan oss i London för att bland annat vara på International Derivatives Expo ( www.idw.org.uk ). Det känns jättehäftigt att flyga iväg på min första resa till utlandet med jobbet och ni lär få veta lite mer om hur resan gick då vi väl har kommit tillbaka. Ha en trevlig sommar!

Comments Off on Ett litet boktips





Bookmark and Share

Please leave a comment - click here!

Older Entries Newer Entries