Sidan 1 av 6 Thomas Thyberg Född: 1963 E-post: thomas.thyberg@crisp.se Telefon: +46 70 77 666 77 Inriktning Agil / XP Programutveckling Mobila enheter, Android, ios Scriptprogrammering Erfarenhet Programutveckling, > 25 år Linux/Unix > 25 år TDD > 5 år Java >14 år Mobil utveckling Branscher Telekom Finans Medicin Betting Media Språk Svenska och Engelska både i tal och skrift. Utbildning Datavetenskap, M.Sc.C.S, LiTH 1991. Kurser Regex, Staffan Nöteberg (2011) 'TDD in Clojure', Brian Marick (2011) Scala: Object-Oriented Meets Functional, Martin Odersky (2011) Beyond Basic TDD, Robert C Martin (2010) Test-Driven Development & Refactoring Techniques, Michael Feathers (2009) Implementing Lean Software Development, Mary Poppendieck (2008) Certified Scrum Master, Jeff Sutherland & Henrik Kniberg (2007) Test Driven Design, Citerius (2006) Tekniker Java, Objective-C, Javascript, Clojure, Scala, Groovy Scrum / Agile Clean coding UI: X, Swing, NeXTStep Hibernate, JPA, JDBC, Spring, POJOs Eclipse, IntelliJ, ant, maven, emacs, jalopy, CheckStyle, findbugs, sonar, jenkins Bourne Shell, Sed, AWK, bc, bf, m.fl. Linux (Slackware, SuSE, Redhat, kubuntu) Anställningar 2006, Crisp 2011, Birabirro AB 2005 2011, Thyberg Datakonsult 1999 2005, Digital Route
Sidan 2 av 6 Min akademiska bakgrund är en Master of Science in Computer Science och jag har sedan examen mer än 20 års erfarenhet av mjukvaruutveckling. Nuförtiden är det mest android som gäller för mig och jag uppskattar verkligen de utmaningar som den plattformen ger, som begränsningar i mängden minne och skärmutrymme t ex. På sätt å vis är det som att vara tillbaka och koda 6502 assembler :-) Jag är även en stor förespråkare av Clean Code-utveckling då kod ska vara lätt att läsa. Jag har även kodat en hel del grafiska gränssnitt allt från X och Swing samt Android. Jag är även intresserad av automatisk testning, både i form av enhetstester samt systemtester och det med verktygt som JUnit, Mockito och Selenium. Jag jobbar praktiskt taget uteslutande i unixmiljöer som Linux och OSX och uppskattar gärna scriptprogrammering och då gärna i Bourne Shell och med verktyg som sed m.fl. Jag har även jobbat med både Ant och Maven och vet hur man sätter upp och underhåller byggmiljöer, samt även Continuous Integrationservrar. Jag spenderar även en hel del tid på att hålla mig ajour med nya tekniker och verktyg och får många och intressanta uppslag genom twitter. Där hittar jag länkar till många bra artiklar vilka jag oftast läser på min telefon eller platta när jag har lite tid över. Java är mitt huvudspråk men jag ser min konstant omkring och kollar upp andra programspråk och på sistone har jag fokuserat på funktionella språk typ, clojure och scala. Erfarenheter Nedan följer de senaste årens uppdrag Aftonbladet, november 2011 Denna min andra period på Aftonbladet är jag ansvaring för nyutveckling av Aftonbladets android-appar samt förvaltning och vidareutveckling av dessa. Jag har påbörjat arbetet med att få samtliga appar att byggas med maven för att smidare få in dessa i CI-servrarna. Att utveckla för mobila enheter är något som jag finner mycket stimulerande då det lite känns som att gå tillbaka till tiden då jag började koda. Med det menar jag de begränsningar som finns när man utvecklar för mobila enheter, typ mindre minne mm.. java, android, eclipse, bamboo, maven, nexus DigitalRoute AB, april 2011 oktober 2011 Detta uppdrag bestod i att vidareutveckla produkten MediationZone i egenskap av senior javautvecklare. Då jag var med och tog fram produkten en gång i tiden så kom jag snabbt in i arbetet och jobbade mycket med att jaga ett antal svårhittade buggar. Under denna period jobbade jag även mycket med att förbättra utvecklingsmiljön, bl.a. såg jag till att alla eclipseprojekt är var korrekt uppsatta. Då produkten är drygt 10 år så fanns det mycket s.k. legacy code att arbeta med, vilket låg helt i linje med vad jag tycker är spännande och intressant.
Sidan 3 av 6 Jag jobbade även med att sätta upp och utvärdera Jenkins och Sonar. Detta för att eventuellt ersätta det befintliga systemet för Continuous Integration, det något åldersstigna CruiseControl. Det krävdes en del handpåläggning då byggsystemet byggde på ant och var ganska specialiserat.. javautvecklare. Teknik: Java6, continuous integration. Verktyg: eclipse, subversion, jenkins. testng, jetty, ant, tomcat6, virtualbox, bash. Aftonbladet, juni 2010 april 2011 Detta uppdrag bestod i att ta fram ett system för att publicera elektroniska versioner av papperstidningen ämnade för mobila enheter. Dels bestod systemet av ett redaktionellt verktyg för utföra ändringar av tidningsuppslagen, och dels ett system som gick i bakgrunden och konverterade tidningssidornas original-pdfer till uppslag i ett format som underlättar visning på en mobil enhet. Jag jobbade mest med bakgrundsprocessen vilken implementerades som flera bash-skript med inslag av groovy (för xml-parsning) och diverse anrop till webservice:ar.. groovy/javautvecklare. Teknik: Java6, groovy, grails, javascript, bash-scripting, spring, javascript. Verktyg: IntelliJ, subversion, jetty, maven2, junit, tomcat6, vmware, bash, imagemagick, bambo. Expekt, januari 2010 maj 2010 Mitt arbete på detta uppdrag bestod dels av att vidareutveckla samt felrätta själva betting-site:n men även att skapa ett antal virtuella servrar samt konfigurera dessa. Det var bl.a. CI-, backup-, samt SCM-serverar.. Vidareutveckling samt underhåll av expekt.com. Teknik: Java6, JSP, groovy, dns, dhcp, PL/SQL Verktyg: Eclipse, perforce, jetty, maven2, junit, sonar, findbugs, kvm, vmware, bash, terracotta. looklet, december 2009 januari 2010 Detta uppdrag uppdrag utvecklade jag ny funktionalitet för en webapplikation. Webbapplikation var en modeportal där man som användare kan skapa nya modekreationer genom att lägga till kläder och accessoarer till en modell. Mitt jobb bestod i att utveckla en webservice som tog fram nya kreationer slumpmässigt. Dessutom
Sidan 4 av 6 utförde jag visst förbättringsarbete i själva webgränsnittet mot slutanvändarna, fix av findbugsvarningar, samt utveckling av fler enhetstester.. Vidareutveckling av en website. Metodik: TDD Teknik: Java6, SpringMVC, JPA, Hibernate, Jquery, JSON Verktyg: Eclipse, mercurial, jetty, maven2, firebug, bitbucket, hudson, findbugs Föräldraledig, december 2008 november 2009 Crisp, Juli 2009 I detta projekt var jag del av ett litet team som bestod av fyra utvecklare, en usabillity expert, samt en produktägare. Vi skulle ta fram delar av en helt ny webbapplikation för ett peer to peer -system för mikrofinansiering, eller åtminstone vissa delar av den då vi enbart hade en vecka till vårt förfogande. Teknikerna vi använde oss av var Eclipse, maven, tomcat (och jetty), terracotta, samt tapestry. Då utvecklarna bestod av fyra Crisp:are, som var väl förtrogna med Scrum samt generellt duktiga utvecklare, fick vi upp början på en site på bara fem dagar. Sista dagen hade vi en demo som gick bra. Det jag lärde mig under detta projekt var främst att jobba med tapestry5 samt hur man deploy:ar sin applikation på en virtuell host (slicehost.com). Dessutom var den en bra erfarenhet i hur det är att jobba med bara professionella kollegor i ett team. En erfarenhet som jag gärna gör igen.. Satte upp grunden för webapplikationen samt ordnade med deploymiljön i en virtuell server, samt utveckling. Deployment: Satte upp en virtuell ubuntuserver på vilken vi deploy:ade vår applikation. Teknik: Java6, tomcat, jetty, tapestry5, MacOS Verktyg: Eclipse, subversion, maven2 Telenor, Januari 2008 november 2008 Hos denna kund hamnade jag i en position där jag fick ta över och vidareutveckla en applikationsserver vilken skulle användas för att implementera diverse ip-tjänster. Det jag framför allt lärde mig under detta uppdrag var att använda eclipse funktioner för refaktorering. Ibland kan det vara mycket stimulerande att förändra kod (till det bättre) än att skriva helt nytt. Jag jobbade även med att se till att få krypteringen av datatrafiken genom en specifik router att fungera. Det var en hel del strul med att få rätt publik nyckel från leverantören. Under detta uppdrag lärde jag mig även en del Struts då jag var med och utökade en webbaserad in-house applikation för att konfigurera VPN-koppel i Cisco-routrar.
Sidan 5 av 6 Så kallad web-scraping hann jag även med att implementera. Jag skrev ett litet bibliotek vilket skulle användas för att programmatiskt konfigurera ett modem vilket normalt konfigurerades via ett webgränssnitt. Det SOAPgränssnitt som fanns var dock inte fullständigt så det gick tyvärr inte att använda sig av.. Vidareutveckling av applikationsserver, samt webbaserat system för konfiguration av diverse routrar. Mentor. Stöd för införande av TDD. Scrum. Var även Scrummaster under ett par sprintar. Teknik: Java6, jboss, Oracle, Struts, Tibco Operativsystem: Windows, Linux, Solaris Verktyg: Eclipse, subversion, mantis, ant Visionael, april 2007 december 2007 Största delen av uppdraget spenderades med att utveckla en tabellapplet som användes för att utföra bulkeditering av konfigurationsdata för IP-telefoner. Här fick jag en duvning i JTable vilken kan vara rätt hårig att koda. Jag jobbade även med att fixa buggar och införa ny funktionalitet i resten av applikationen som var implementerad i Tapestry, vilket jag inte hade jobbat med tidigare så det var en nyttig erfarenhet.. Javautvecklare. Metodik: Scrum, TDD Teknik: Java6, applet, tapestry4, jboss, Cisco Operativsystem: Linux Verktyg: Eclipse, subversion, jira, maven2 TDC Song, februari 2007 mars 2007 Arbete med ett internt system för provisionering av tjänster vilket skrevs i python. : Pythonutvecklare Metodik: Scrum, TDD Teknik: Python. Operativsystem: Linux Verktyg: Eclipse, Subversion
Sidan 6 av 6 St Jude Medical, juni 2005 januari 2007 På detta uppdrag var jag medlem i ett av ett antal team som jobbade med att ta fram programvaran för nästa generation av programmers. En programmer är i princip en förvuxen laptop med lite utrustning för att kunna kommunicera med pacemakers och även för att kunna utföra defilibrering. Programvaran utvecklades i Java i en Eclipsemiljö på windows men den deployades i den Linuxbaserad programmern. Jag jobbade i ett team som hade utskrift som huvuduppgift, både rapportutskrifter men även realtidsutskrifter av EKG. på den inbyggda termoskrivaren. Teamen jobbade med TDD och under projektets gång infördes även Scrum i etapper och det var under detta uppdrag som jag kom i kontakt med Scrum och TDD för första gången.. av användargränssnitt och hantering av rapporter. Linuxspecialist. Bidrog med expertkunskap om Linux och speciellt printsystem. Metodik: Scrum Teknik: Java SE. Operativsystem: Windows, Linux (Montavista) Verktyg: Eclipse, ClearCase, Sharepoint, CruiseControl