ANDERS HANSSON Har just nu fokus på mobila lösningar och molntjänster. Personlig fakta Född: 1974 Civilstånd: Sambo med två barn Intressen: Det mesta som utvecklar mig som person, både privat och yrkesmässigt Egenskaper: Gillar att lösa problem, självgående UTBILDNING Datalogi 1997 Datalogi MATNAT, Göteborgs Universitet samt Lunds Universitet KOMPETENS OCH ERFARENHET Systemutvecklare med flerårig yrkesmässig erfarenhet av både öppna och inbyggda system. Rör sig fritt mellan olika miljöer såsom GNU/Linux, FreeBSD, Windows samt olika inbyggda system. Har arbetat som utvecklare, huvudsakligen teknisk programmering i såväl öppna som inbyggda system. Har varit med och lagt grunden för ett omfattande verifieringsverktyg till Linux och Windows. Har erfarenhet av drivrutinsutveckling under Windows NT/2000/XP samt under Linux (kernel 2.6). Innehar ett Microsoft Certified Professional. Microsoft Certifikat: 70-100 / Analyzing Requirements and Defining Solution Architectures with Microsoft Visual C++ 6.0 and.net. VERKSAMHETSOMRÅDEN Roller Programmerare, systemutvecklare, arkitekt, mentor, projektledare Verktyg, miljöer och teknik Eclipse, NetBeans, Visual Studio, Subversion, Git, Bazaar, Mercurial, Clear Case, KDE, Gnome, QT, GTK, GNU/Linux, Embedded Linux, Windows, Mac OSX, Android, ios,.net, Mono, Ruby On Rails, NodeJS Språk C, C++, Java, C#, Python, Perl, Ruby, Assembler, Haskell, (S)ML, Bash, TCL, Ruby, JavaScript, HTML, CSS, PHP, CoffeeScript, HAML Sida 1
ERFARENHET 2010-2012 Arkitektur, design och utveckling av mjukvara i labutrustning Beskrivning: Kunden ville förnya ett gammalt system som man hade tagit fram tidigare. Då det gamla systemet inte var så användarvänligt och det började bli krångligt att hitta rätt hårdvara för att bygga systemet så letade man efter en mer flexibel lösning med färre komponenter och som var lättare att använda. Den lösning som levererades var ett system där mätdata lagras på instrumentet och användaren kan kan koppla upp sig med en web-browser mot instrumentet för att hantera experiment och generera rapporter, etc. Vi använde oss av web-teknik för att tillhandahålla ett modernt och relativt komplext UI på ett litet inbyggt system. Detta gjorde att man kunde minska kostnaden på den hårdvara som ingick i systemet samtidigt som man ökade användarvänligheten och minskade komplexiteten på instrumentet. Kunden har t.om. gjort en av sina enheter tillgängliga över Internet för att kunna demonstrera systemet på mässor, etc. även då man kanske inte har fysisk tillgång till instrumentet. Kundens användare kan också själva gå in och prova på instrumentets användargränssnitt. Detaljer: Den genomförda lösningen kopplar ihop teknik från ett flertal olika områden. Allt ifrån lågnivå programmering i C (drivrutiner för Linux) som hanterar sensordata till web-server skriven i C och upp till hela användargränssnittet som är skrivet i HTML/CSS/JavaScript. Det något unika är att hela användargränssnittet kör nästan enbart i webbrowsern för att avlasta web-servern på instrumentet. Denna teknik möjliggör att man från ett relativt litet inbyggt system kan erbjuda ett användargränssnitt som mer liknar en applikation som kör direkt på datorn. (Kunden har även projekterat ett nytt projekt där vi vidarutvecklar konceptet ytterligare och kopplar upp instrumentet direkt mot en databas i molnet. Slutanvändaren kan sedan komma åt sitt instrument genom en web-applikation som kör helt uteslutande i molnet. All mätdata kommer då att samlas in över Internet i realtid från instrument som står runt hela världen. Ett problem som man ville lösa var att man ville kunna lagra obegränsat med mätdata per instrument.) Teknik: Eclipse, C, ARM, Embedded Linux/Busybox, Mongoose, HTML, CSS, JavaScript, AJAX, Mercurial, Git, OC8 (hårdvara) Sida 2
2009-2010 System för konfiguration av enheter på flygplatser Beskrivning: Kunden behövde ett system för att centralt kunna konfigurera och uppdatera hårdvaruenheter som typiskt sett sitter spridda ute på flygplatser och hitintills har behövt hanteras manuellt av en servicetekniker. Detta är både dyrbart och kan vara en källa till fel då man kanske inte har samma inställningar på hela flygplatsen. Systemet som utvecklades håller reda på all konfiguration för de aktuella enheter för hela flygplatser samt hantera den komplexitet som kan uppstå vid uppdateringar och felhantering. Detaljer: Systemet är byggt på en virtuell maskin med Debian/GNU Linux som OS. Den virtuella maskinen är tänkt att köras på en ESX-server som sitter i datacenter på flygplatsen. Användar gränssnittet är en webb applikation där man kan applicera konfigurationer och schemalägga uppdateringar. Webb applikationen är byggd med GWT (Google Web Toolkit) och all data lagras i en lokal MySQL databas. Mitt fokus i projektet var kommunikationen med de olika enheterna och felhantering samt genomförandet av själva uppdateringarna. Värt att nämna är att en del av enheterna är äldre system (ca 20 år) som inte ursprungligen var utvecklade att uppdateras per automatik; vilket ökade komplexiteten med avseende på kommunikationen. Genomgående i projektet har vi försökt hålla oss till Java samt open source verktyg och bibliotek så långt det varit möjligt. Teknik: Eclipse, Debian/GNU Linux, VMWare, ESX Server, Java, Hibernate, MySQL, JDBC, Hudson, Mercurial 2008-2009 Verktyg för konfiguration och projektering av tågbangårdar Beskrivning: Kundens slutanvändare behövde ett bättre sätt att navigera och konfigurera tågbangårdar. Aktuell data finns i datamodeller som presenterades i rå tabellform vilket gjorde det svårt att ändra i befintlig data samt att skriva in nya data i systemet. En ny tabelleditor som bättre motsvarar det sätt som slutanvändarna arbetar på utvecklades. Ytterligare förbättringar i användargränssnittet gjordes också för att motsvara användarnas krav på kunden. Att underlätta för kundens slutanvändare gör att kunden inte behöver ge lika mycket support och kan fokusera på vidareutveckling av kärnverksamheten. Detaljer: Utveckling av specialiserad EMF tabelleditor i Eclipse/EMF. Eclipse användes som en bas för det aktuella verktyget och funktionaliteten skrevs i form av Eclipse-plugins. Vid utvecklingen användes bl.a., förutom Eclipse, open source verktygen Subversion, Trac, Hudson och Mylyn för att skapa en integrerad utvecklingsmiljö med ticket-hantering. Teknik: Eclipse/EMF, Windows, Subversion, Trac, Hudson, Mylyn, Jface, SWT Sida 3
2006-2007 Verifikationsverktyg för ASIC-utveckling Beskrivning: Bidrog med nödvändig kompetens inom mjukvaruutveckling för att bygga ett specialiserat verifieringsverktyg inom ASIC-utveckling. Det var ett nära samarbete med HW-ingenjörer för att tillgodose de behov de hade av test och verifiering av deras hårdvara. Ett bra verifieringsverktyg innebär att man sparar mycket tid och pengar då man tidigt kan eliminera fel i ASIC hårdvaran som annars först skulle upptäckts efter prototypingen. Att utnyttja open source så långt som möjligt i projektet gjorde det möjligt att skräddarsy en stabil lösning med stor flexibilitet och utbyggbarhet. Detaljer: Design och nyutveckling av ett verifikationsverktyg för användning inom ASIC utveckling. Verktyget är en multiplattform lösning för Linux och Windows. Drivrutin mot FPGA i Linux, integration av skriptspråk/motor för utveckling av verifikationsskript, kopplingar mot ModelSim i Linux-kluster, GUI utveckling i GNOME och Win32. Utveckling av Eclipse plugin för stöd till utvecklingen av ASIC mjukvarureferenser. Teknik: Eclipse/CDT, C++, C, Java, TCL, GNU/Linux, Linux Kernel 2.x, Windows, Gnome/GTK, wxwidgets, ASIC, VHDL, AngelScript, ModelSim, FPGA 2005-2006 Uppgradering av analysinstrument Beskrivning: Kunden hade ett äldre system (analysinstrument) som behövde uppgraderas då nya krav tillkommit på funktionalitet och prestanda. All hårdvara som svarar för gränssnittet mot slutanvändaren uppgraderades och mjukvaran anpassades för att motsvara den nya hårdvaran och de nya krav på mjukvaran som tillkommit. Framförallt skrevs stora delar av användargränssnittet om. Hela projektet engagerade alla olika enheter inom Enea från hårdvara till mjukvara. Detaljer: Processor, moderkort, kommunikationsenheter/usb, skärm och knappsats byttes ut. Det QNX-baserade inbyggda systemet uppdaterades för att passa den nya hårdvaran. Mjukvara som var skriven i C++ samt ett in-house skriptspråk gicks igenom, uppdaterades och vidareutvecklades i berörda delar. Projektets lades även om till att köra utvecklingen i Eclipse. Teknik: Eclipse/CDT, C++, Visual C++ 6.0, Visio, QNX, Photon Sida 4
2005 Produktionsapplikation Beskrivning: Kunden hade en applikation som körde i produktionslinjen men som gav till synes slumpvisa fel vilket gjorde att man fick en onödigt och felaktigt hög kvot av felaktiga enheter från produktionen. Detta var kostsamt eftersom det innebar att man fick göra extra kontroller av de felaktiga enheterna. Man hade länge försökt hitta och lösa problemet utan att lyckas. Uppdraget var att försöka reda ut vad som var fel. Efter kodgranskning och felsökning i deras system hittades felet och kunde åtgärdas. Detaljer: Jobbet som gjordes var specifikt kodgranskning och felsökning i en trådad MFC-applikation för kommunikation med styrsystem. Det visade sig att en bit kod som hanterade COM objekt i applikationen kunde skrivas på ett effektivare sätt som inte orsakade problem då man vid vissa tillfällen i produktionen hade extra hög belastning och hanterade många COM objekt samtidigt. Teknik: Windows, MFC, COM 2002-2004 Utveckling mobiltelefoner Beskrivning: Kunden behövde ett externt API för sin mobila plattform som är strukturerat och exponerar funktionaliteten i den mobila plattformen på ett konsistent och enhetligt sätt till dess slutkunder. Uppdraget innebar att analysera funktionaliteten i den mobila plattformen samt att på ett konsekvent sätt designa och effektivt implementera det externa API:et. Detaljer: Utveckling av ett COM-baserat API för mobila plattformar. COMmodellen som utvecklades för API:et var skriven i C för att vara så effektiv som möjligt. Både plats- och prestandamässigt. COM valdes som teknik för att kunna vara binärkompatibel mellan olika släpp av den mobila plattformen. Målsystemet är en mobiltelefon som kör OSE på en ARM processor. En av de viktigaste uppgifterna var att sammanställa den mångfasetterade underliggande funktionaliteten och uttrycka den i form av ett effektivt implementerat, konsekvent och lättanvänt API. Teknik: API, COM, Microsoft Visual C/C++, Clear Case, CME2/SDE, C, ARM, OSE, OPA Sida 5
2002 Applikation pocketpc Beskrivning: Kunden behövde en applikation körandes på en PocketPC som kunde presentera data i realtid som strömmades från en nätverksansluten kamera. Applikationen skulle presenteras på Cebit-mässan en månad efter projektets start så tidsaspekten på projektet var till stor del en bit av uppdrags-bilden. Projektet slutfördes i tid till Cebit mässan med all den funktionalitet som ursprungligen var med på önskelistan. Detaljer: Funktionaliteten för att strömma data från nätverkskameran skrevs som en ActiveX-kontroll i ATL (Active Template Library) för WindowsCE. Kontrollen kunde sedan användas av vilken applikation som helst som stöder ActiveX i WindowsCE. Applikationen som slutligen användes baserades på en redan befintlig applikation för övervakning. Strömningen av data från kameran innebar analys och implementation av delar av JPEG standarden för att optimera bandbredd och hastighet på målsystemet. Hela projektet dokumenterades med hjälp av open source verktyget Doxygen vilket gjorde att trots en snäv tidram kunde projektet levereras i tid med uttömmande dokumentation av koden med tillhörande klassdiagram. Teknik: Microsoft Embedded Visual C/C++ för WindowsCE, C++, ATL, PocketPC, WindowsCE, ActiveX, streaming, JPEG, Doxygen 2001 Ramverk säkerhetsproduktföretag Beskrivning: Kunden utvecklar biometriska säkerhetsprodukter och har ett behov att testa de bibliotek med biometriska algoritmerna som de utvecklar för att säkerställa en hög kvalitet och säkerhet. Lösningen som valdes var att ta fram ett ramverk för automatiserade modultester som kunde användas i den löpande utvecklingen av algoritmerna. Detaljer: Utveckling av ramverk för automatiserade modultester i Windows. Ramverket implementerar en kraschsäker sandlåda som de automatgenererade testfallen kör i samt analyserar utdata från testfallen efter specifikationer i en konfigurationsfil. API:et beskrivs i konfigurationsfilen och ramverket genererar testfall med variabla parametrar som sedan analyseras och loggas. De automatiserade testerna utför API conformance-tester, funktions-, integrationsoch regressions-tester. Teknik: C++, Windows, Microsoft Visual Studio C/C++, MFC Sida 6
2000-2001 Utveckling stödprogramvara mobiltelefoner Beskrivning: Behovet av att kunna installera stödprogramvara till de mobiltelefoner som kunden säljer kräver en genomtänkt strategi för att lätt kunna uppdatera mjukvaran samt installera stödmjukvara för flera olika mobiltelefoner samtidigt. Stödet för att installera på flertalet av de versioner av Windows som existerar (vid tillfället Windows 9x/98SE/ME/NT/2K) ställer ytterligare krav på installationsprogrammet som måste ta hänsyn till en rad omständigheter vad gäller målsystemet. Hantering av denna komplexitet samt möjligheten att uppdatera PC-mjukvaran över både Internet (webben) via patchar och CD implementerades och underhölls. Detaljer: Installationsprogrammet till PC/Windows-mjukvaran implementerades i InstallShield med stödfunktioner utvecklade i C/C++ (med Microsoft Visual C/C++). Problematik som hanterades vid installationen var bl.a. delade komponenter, flera produkter av samma typ (olika modeller av mobiltelefoner). Hantering av problematik kring delade komponenter, flera produkter och internationalisering, t.ex. kinesiska, både simplified och traditional. Teknik: InstallShield, Windows 9x/98SE/ME/NT/2K, Microsoft Visual C/C++, C++, MFC, Rpatch 1999 Utveckling av inbyggd mjukvara printerserver Beskrivning: Kunden levererar OEM printer server åt stor internationell kund. Anpassning och nyutveckling av den inbyggda mjukvaran till kundens slutkunds önskemål och produkter. Detaljer: Implementation av RFC specifikationer i inbyggt system skrivet i C. Teknik: SNMP, ASN.1, Netware, AppleTalk, Axis 1620 Print Server, Unix KURSER 2008 Affärsmannaskap för konsulter (Teknosell) 2001 OSE grundkurs, Enea, 3 dagar 2001 C++ Fortsättning (advanced), Enea, 3 dagar 2000 Rational Rose Realtime, Enea, 3 dagar 1999 Introduktion till XML, Enea, ½ dag 1999 Java grundkurs, Enea, 3 dagar 1999 Mastering Distributed Application Design and Development, Resco, 3 dagar TIDIGARE ANSTÄLLNINGAR 1999-2012 ENEA Experts AB Arbetat som konsult inom en rad olika projekt och företag. Uppdragen har sträckt sig från utveckling i inbyggda system och hårdvarunära programmering till komplexa molntjänster. Sida 7
1997-1999 Programbyrån AB Utveckling av redovisningssystem i Windows. Huvudsakligen teknisk Windowsprogrammering. Specialanpassning av användargränssnitt för att bättre svara mot slutanvändarnas behov. Även utveckling av installationsprogram med licenshantering, utvecklat med InstallShield. 1996 Eget företag Specialbeställd skrivardrivrutin för PC i DOS för att skriva ut EKG-kurvor på matrisskrivare i sjukvården. Interrupt-hantering och parallellportsprogrammering i C och assembler. Sida 8