Svensk/Swedish CV       PDF-CV

Home
English CV
Namn Tomas Johansson
Yrke Systemutvecklare/programmerare
Födelseår 1972
Email
Bostadsort Stockholm
Språkkunskaper Svenska är mitt modersmål och jag är bra på engelska. När det gäller övriga språk så kan jag endast lite grundläggande tyska.



Utbildningar och jobb, i kronologisk ordning:

Gymnasieutbildning
(examen juni 1991)
Tre år på fyra-årig teknisk linje (Parkskolan, Övik)
Universitetsutbildning 1991-1995 Fil kand examen (juni 1994), 130 poäng, Umeå universitet
  • 15p Teknisk databehandling
    • Teknisk databehandling A, 10p, varav:
      • Programmeringsmetodik, 5p
      • Numeriska metoder, 5p
    • Numerisk linjär Algebra I A, 5p
  • 40p Matematik
    • Matematik A, 20p, varav:
      • Algebra och kombinatorik, 5p
      • Linjär algebra, 5p
      • Envariabelanalys I, 5p
      • Envariabelanalys II, 5p
    • Flervariabelanalys B, 5p
    • Differentialekvationer B, 5p
    • Analysens grunder B, 5p
    • Diskret matematik B, 5p
  • 75p Matematisk statistik
    • Matematisk statistik I A, 10p (Sannolikhetsteori)
    • Matematisk statistik II A, 10p (Statistikteori)
    • Matematisk statistik B, 20p, varav:
      • Tillämpad sannolikhetslära och Markovmodeller, 10p
      • Inferensteori, 10p
    • Simulering B, 5p
    • Försöksplanering C, 5p
    • Regressionsanalys C, 5p
    • Stickprovsmetodik C, 5p
    • Tidsserieanalys C, 5p
    • Multivariat dataanalys D, 5p
    • Operationsanalys D, 5p

Ytterligare tre kurser 1994-1995, efter min examen ovan:
  • Optimering C, 5p (Matematik, Umeå universitet)
  • Livförsäkringsmatematik I, 5p (Matematisk statistik, Stockholms universitet)
  • Sakförsäkringsmatematik I, 5p (Matematisk statistik, Stockholms universitet)
"Meritförtecknings-lucka"
1995-1997
Arbetslöshet, ALU-jobb, samt två stycken jobb (sex respektive två månader) som inte gav mig någon relevant yrkeserfarenhet (de jobb som har medfört väsentlig erfarenhet specificeras längre ner).
Arbetsmarknadsutbildning
(1997 sept - 1998 feb)
C/C++ 20 veckor (kursen anordnades av Semcon)
Korta utbildningar
(1998-2001)
  • SQL grundkurs, 2 dagar
  • Microsoft SQL Server 7, 2 dagar
  • Microsoft OLAP Server 7, 2 dagar
  • Visual Interdev, 5 dagar
  • XML (inkl. DTD, DOM, XSLT), 4 dagar
  • VB6/databaser, 4 dagar
  • VB6/MTS, 4 dagar
  • Avancerad Java-programmering, 5 dagar
  • UML för dig som kan objektorientering, 2 dagar
Anställningar
(programmering, 1998-2001)
ADB-Kontoret, Göteborg (1998-02 --- 2000-11)
  • Visual C++ (MFC)
  • SQL (T-SQL, lagrade procedurer, MS SQL Server)
  • ASP (VBscript)
  • COM (Visual Basic)
  • DHTML (JavaScript + HTML + CSS)
  • Visual Studio, Visual SourceSafe
Improve, Stockholm (2000-12 --- 2001-10)
  • Java (J2EE: JDBC, Servlets, JSP, JAXP)
  • XML (DOM- och SAX-programmering, DTD-validering, XSL-transformering)
  • Borland JBuilder, Visual SourceSafe
Utbildning vid KTH och Stockholms universitet 2001-2005 Större delen av tiden fr.o.m. hösten 2001 t.o.m. sommaren 2005 studerade jag fristående kurser (datavetenskapliga ämnen) med bra betyg både vid KTH och Stockholms universitet, och de flesta kurser som jag har valt är inom de områden som jag är mest intresserad av, närmare bestämt objektorienterad analys/design/programmering, internetprogrammering samt databasteknik. Jag har, som synes nedan, gått flera kurser om designmönster men inte för att man kan få tillgodoräkna sig överlappande kurser i en examen, utan helt enkelt p.g.a. att jag är mycket intresserad av design patterns,

Analys, systemdesign, objektorientering, metoder/processer och UML

Designmönster, 4p (objektorienterade GoF-mönster)
Designmönster, 5p (GoF-mönstren)
UML och designmönster, 5p (huvudsakligen UML, teorikurs utan användning av CASE-verktyg)
UML, modellbaserad programutveckling, 4p (visuell modellering med bl.a. Borland Together)
Modelldriven utveckling av komponenter, 5p (MDA och Komponentbaserad utveckling, EJB, JBoss)
RUP (Rational Unified Process) och UML, 5p (nästan bara RUP, endast lite UML, GRASP)
Mjukvarukonstruktion, 4 p ("Lifecycle Models" men tyvärr mest fokus på vattenfallsmodellen)
Objektorienterad analys och design, 5p (huvudsakligen analys)
Objektorienterad programmering, analys och design i Java, 5 p (mest programmering/design, nästan ingen analys)
Objektorienterad programmering med Java, fortsättningskurs, 5 p
Objektorienterad programmering med C# och .NET, 5p
Objektorienterad programmering med C++, 4p
Objektorienterad programmering med VB. NET, 5p

Internet och nätverksprogrammering

Internetprogrammering I, 4p (Java, Sockets, tråd-programmering, XML-RPC)
Internetprogrammering II, 4p (CGI, Perl)
Internetprogrammering III, 4p (EcmaScript/JavaScript, DOM, XHTML, CSS)
Webbprogrammering, 5 p (PHP, MySQL, jag använde PHP5/OOP)
Web-baserade applikationer för informationshantering, 5p (JDBC, JSP, Servlets, JDeveloper, jag använde Struts )
Multimedia för webben, 4 p (Flash ActionScript)
Nätverksprogrammering med Java, 4p (J2EE, EJB, RMI, CORBA)
Design av relationsdatabaser och användning av XML, 4p (jag implementerade en SOA med jUDDI, Java Axis och .NET)

Databasteknik

Databasteknik, 5p (ER-modellering, normalisering, SQL, relationsalgebra, domän/tupel-kalkyl)
Databasteori, 4p (fortsättningskurs på Databasteknik ovan med högre normalformer)
Administration av relationsdatabaser, grundkurs, 5p (Oracle DBA grundkurs, Toad)
Administration av relationsdatabaser, fortsättningskurs, 5p (Oracle DBA fortsättningskurs)
SQL och procedurspråk för relationsdatabaser, 5p (Oracle PL/SQL)
Web-sites baserade på SQL-databaser, 5p (Lagrade procedurer, Oracle iAS/Apache)

Diverse kurser

Programutveckling med J2ME, 4p (Java 2 Micro Edition för "microdevices" t.ex. mobiltelefoner, MIDP)
Fönsterprogrammering i Java, 4p (AWT och Swing)
Unix grundkurs, 3p (Solaris)
Projektarbete, 4p ( implementering av ett projekt i kursen 'Mjukvarukonstruktion' )
Praktisk svenska med datorstödd dokumentframställning, 2p
Logik, 5p

Examensarbete, 20p (designmönster för web services)

Ämnet för mitt examensarbete är 'Design patterns for Web Services. För den som inte vet det så är Web Services en s.k. Service Oriented Architecture (SOA) som implementeras genom att kombinera SOAP, WSDL samt UDDI, och kan bl.a. användas för integration av applikationer som kan vara implementerade på olika plattformar eller programmeringsspråk. Dock bör man vara medveten om att "SOA" är ett populärt "buzzword", som inte alltid används på ett entydigt väldefinierat sätt.

Projektanställning
(2004-10)
Academic Work, Stockholm (2004-09-28 --- 2004-10-29)
  • Kodgranskning (förslag på förbättringar och önskvärd dokumentation i en java-applikation)
  • Refaktorisering (jag implementerade själv vissa förbättringar med tillämpning av designmönster)
  • PL/pgSQL (lagrade funktioner i PostgreSQL)
  • Eclipse, CVS
Projektanställningar
(2004-12 --- 2005-01)
BuildOnline, London (2004-12-06 --- 2004-12-21 & 2005-01-04 --- 2005-01-20)
  • Java, Eclipse, JUnit, CVS, DOM, JDOM, ExcelCSVParser, Excel Macro (VB), jVue
Projektanställning
(2005-08 --- 2006-03)
European Patent Office, Den Haag (2005-08-29 --- 2006-03-31)
  • Java, Swing, Eclipse, JUnit, CVS
  • Förvaltning/underhåll (felsökning/buggfixning)
Anställning
(2006-05 --- 2007-05)
ProAvia, Örnsköldsvik (2006-05-09 --- 2007-05-20)
  • C#, Visual Studio 2005
  • MS SQL Server, Microsoft Access
  • ASP.NET, Windows Forms
  • ADO.NET, NHibernate
  • NUnit, NDbUnit
  • log4net, NAnt
  • Spring.NET (Dependency Injection)
  • Active Directory (LDAP queries)
  • OpenPOP.NET, SharpMimeTools
  • Outlook Add-in
  • Web Services
Se även mer detaljerad information i min PDF-CV
Nuvarande anställning
(fr.o.m. 2007-06)
Jag är f.n. anställd som Java-utvecklare vid ett företag i Stockholm.

Vad jag har jobbat med:

ADB-Kontoret (1998-02 --- 2000-11)

Jag jobbade som systemutvecklare på ADB-Kontoret i drygt 2½ år, varav jag det första året arbetade med applikationsprogrammering. Närmare bestämt så jobbade jag med ett bokningsprogram som används för att boka diverse fritidsanläggningar. Utvecklingsmiljön var Visual C++ och MS SQL Server 6.5 . Jag jobbade med alla delarna, dvs både gränssnittet och server-koden inklusive de lagrade procedurerna.

Fr.o.m. mitt andra år på ADB-Kontoret så jobbade jag i ett datalagerprojekt (intranet) med webb-gränssnittet mot OLAP-kuberna (jag var alltså inte inblandad i själva skapandet av kuberna). I mina arbetsuppgifter ingick dels DHTML (JScript, HTML, CSS) d.v.s. klientkod och dels serverscript med ASP samt server-komponenter (COM med Visual Basic) som bl.a. hämtade data från kuberna med MDX-satser, samt lagrade procedurer för MS SQL Server 7 och ibland ganska avancerade sådana, bl.a. skrev jag en gång en rekursiv procedur i Transact-SQL när det var nödvändigt.

Visual SourceSafe användes för versionshanteringen i båda projekten, d.v.s. jag använde SourceSafe hela tiden på ADB-kontoret.


Improve (2000-12 --- 2001-10)

Här arbetade jag (uppsagd p.g.a. arbetsbrist) med systemutveckling (Java, JSP och Servlets) i ett webbprojekt. Jag jobbade med att anropa lagrade procedurer (Oracle) med JDBC. Dessutom programmerade jag SAX och XPath samt använde Xerces som DOM-parser bl.a. för att DTD-validera XML, samt för att loopa igenom XML-dokumenten i samband med att vissa element skulle modifieras eller valideras mot reguljära uttryck med hjälp av Jakarta-ORO. För att generera HTML-filer så använde jag XSLT-processorn Xalan, och för att generera PDF-filer så använde jag XSL FO -processorn FOP (men jag jobbade inte med att skriva XSL-mallarna, även om jag kan grunderna i åtminstone XSLT).

Vi använde Visual SourceSafe för versionshanteringen, och jag använde Borland JBuilder som utvecklingsverktyg.


Academic Work (2004-09-28 --- 2004-10-29)

Detta var en månads projektanställning som konsult via bemanningsföretaget Academic Work. Jag hjälpte till med att utvärdera koden i en existerande applikation som var skriven i java. Det rörde sig om ett tämligen odokumenterat enmansprojekt och mina arbetsuppgifter gick bl.a. ut på att föreslå vad som särskilt borde dokumenteras samt andra förbättringar och refaktoriseringar ( refactoring ) som skulle underlätta för en utomstående att kunna förstå applikationens struktur och dynamiska flöde.

Jag implementerade även själv vissa förbättringar, bl.a. skapade jag lagrade funktioner med PL/pgSQL (för databashanteraren PostgreSQL) istället för att fortsätta använda vanlig SQL i java-koden. Jag modifierade även java/JDBC-koden från att använda PreparedStatement (används för vanlig SQL) till att istället använda CallableStatement (används för att anropa lagrade funktioner/procedurer). Detta krävde även modifiering av en generell hjälpklass som applikationen (och andra applikationer) använde för databasanropen så att den även skulle kunna hantera anrop till funktioner. Jag refaktoriserade koden (d.v.s. strukturerade om koden med bibehållen funktionalitet) genom att kombinera designmönstren Template method, Factory method och Strategy. Först skapade jag ett interface som jag implementerade med PreparedStatement. Efter att ha verifierat att applikationen fungerade efter refaktoriseringen så kunde den istället börja använda en annan implementation av interfacet som jag skapade m.h.a. CallableStatement eftersom det används på ett annat sätt än PreparedStatement, bl.a. när man vill erhålla ett ResultSet från en lagrad funktion.

CVS användes för versionshanteringen och själv använde jag WinCvs som CVS-klient samt WinMerge som extern "difference-editor". Jag använde Eclipse som utvecklingsverktyg/programmeringseditor.

BuildOnline, London (dec/2004 och jan/2005)

På BuildOnline hade jag två projektanställningar:

  • 2004-12-06 --- 2004-12-21
    Jag jobbade med jVue, närmare bestämt ett Java-API för AutoVue Professional som man kan använda för att spara "markups" i ritningar med mera. AutoVue är ett "collaboration"-verktyg som man kan använda för att rita tillägg till bilder och ritningar, som sedan kollegorna kan titta på över internet och själva fortsätta rita egna "markups".
  • 2005-01-04 --- 2005-01-20
    Jag utvecklade (i Java) en import-applikation, som ska användas för att importera dokument (pdf-filer m.m.) från nya kunder som kan leverera tusentals befintliga dokument på en DVD-skiva inklusive metadata för respektive dokument i en Excel-fil. Syftet med import-verktyget är alltså att företaget/kunden ska slippa ladda upp tusentals dokument manuellt via ett webbgränssnitt inklusive att manuellt behöva lägga in metadata om respektive dokument.

European Patent Office (EPO), Den Haag
(2005-08-29 --- 2006-03-31)

Under mina sju månader som konsult vid EPO jobbade jag främst med förvaltning/underhåll av en Java (Swing) applikation som används i den första fasen (sökfasen) när EPO's handläggare har tagit emot en patentansökan och då börjar med att söka efter liknande patent eller andra relaterade publikationer. Mina arbetsuppgifter bestod främst av buggfixning av denna applikation. Jag jobbade även med viss nyutveckling inklusive åtskilliga testklasser med JUnit. Jag använde Eclipse som utvecklingsverktyg och CVS för versionshanteringen.

Home Home Home Home

Valid XHTML 1.0! Valid CSS!