|
|
| Namn | Tomas Johansson |
| Yrke | Systemutvecklare/programmerare |
| Födelseår | 1972 |
| 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. |
| 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
Ytterligare tre kurser 1994-1995, efter min examen ovan:
|
| "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) |
|
| Anställningar
(programmering, 1998-2001) |
ADB-Kontoret, Göteborg (1998-02 --- 2000-11)
|
| 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 UMLDesignmö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ätverksprogrammeringInternetprogrammering 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) DatabasteknikDatabasteknik, 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 kurserProgramutveckling 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)
|
|
Projektanställningar (2004-12 --- 2005-01) |
BuildOnline, London (2004-12-06 --- 2004-12-21 & 2005-01-04 --- 2005-01-20)
|
| Projektanställning (2005-08 --- 2006-03) |
European Patent Office, Den Haag (2005-08-29 --- 2006-03-31)
|
|
Anställning
(2006-05 --- 2007-05) |
ProAvia, Örnsköldsvik (2006-05-09 --- 2007-05-20)
|
| Nuvarande anställning (fr.o.m. 2007-06) |
Jag är f.n. anställd som Java-utvecklare vid ett företag i Stockholm. |
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:
European Patent Office (EPO), Den Haag
|