
Daniel Markus
Software Engineer
Daniel är mjukvaruingenjör med ett stort intresse i icke-funktionella krav, och även metoder för att förbättra kommunikationen mellan alla intressenter i ett projekt. Huvudsakligen har projekten varit utveckling i C++ för styr- och reglerteknik samt databaser, och han jobbar gärna med backend och tekniker som Domain-Driven Design, Microservices, Pipes and Filters, och andra typer av parallellisering.
Områden
- Software Engineer
- Technical Lead
- Mentor
Om Daniel
Daniel är nyfiken på nya idéer och anstränger sig för att förstå kundens problemställning eller förbättringsidé. Han har baskunskap i ett antal olika områden inom mjukvaruutveckling vilket kan vara till hjälp för att ge struktur till nya utmaningar. Ofta är det viktigt att en hel grupp förstår en viss problemställning eller förbättringsförslag och Daniel hjälper gärna till med visualisering, presentation, och mentorskap för kunskapsspridning.Daniels CV
-
OHB Sweden
Software Engineer
2022 -
Produkt:
Rymdteknologi.
Arbete:
Uppdraget innefattar programmering av ett antal produkter. Fokus är för tillfället icke-funktionella krav, primärt Reliability, Testability, och Functional Completeness. Reliability är främst felhantering, och Testability är systemtester där jag strukturerat testerna för att så effektivt som möjligt verifiera felhanteringen men även funktionella krav för att uppnå Functional Completeness.
Ett annat fokus har varit refaktorisering och testning av kommunikationsprotokoll.
Teknologier:
C++, Python -
MSAB
Software Engineer
2018 - 2022
Produkt:
Mjukvara för att extrahera data ur elektronisk utrustning.
Arbete:
Flödesdiagram implementerades, med och utan state machine.
Presentationer om nya C++-funktioner hölls och diskuterades var i produkten de kunde användas. Exempelprogram skrevs för att visualisera tekniken och dess för och nackdelar samt historik.
Utmaningar inom bakåtkompabilitet och versionshantering analyserades och implementerades.
En dokumentationsstruktur presenterades för att underlätta tillägg av ny dokumentation.
Ett antal olika modulimplementationer behövdes stödjas och kombinatoriken löstes med Visitor designmönster. Fördelen med detta gav att generella verktyg kunde byggas upp runt modulerna.
Tekniker: C++20, TDD, Mealy State Machine, Visitor, Parallellisering, Confluence -
Leica Geosystems
Technical Lead, Software Engineer
2011 - 2018
Produkt:
Byggsystem och operativsystem för maskinstyrningssystem på ruggad industridator.
Arbete:
Ett försök att introducera Domain-Driven Design gjordes tillsammans med produktledningen. Ett Python-script togs fram för att hitta de definierade domänerna i C++-koden och visualisera deras beroenden.
Ett tydligt vattenfallsprojekt blev en utmaning vi antog för att lägga till funktionalitet för att skydda naturreservat. Här blev det av största vikt att hitta balansen mellan agil utveckling och vattenfall för att hinna klart innan kundens projekt startade.
En omfattande förbättringsanalys gjordes för att migrera till byggsystemet Yocto.
Systemet behövde kommunicera data med en server och felhanteringen av denna uppkoppling krävde inte bara noggrann testning och nära kontakt med test-teamet, men även mycket arbete med att sätta upp rätt verktyg för remote debugging, ibland även över COM-porten.
Utöver det behövdes nära kommunikation med företagsledningen för att göra rätt prioriteringar gällande felhanteringen för att avlasta supportavdelningen och life-cycle management.
Tillsammans med produktledning diskuterades hur korskompileringen av produktens operativsystem kunde stabiliseras. Denna diskussion ledde senare till en dokumenterad förbättringsanalys.
Tekniker: Linux, C++17, TDD, Python, Domain-Driven Design, WBS, Yocto, Remote Debugging, Korskompilering -
Leica Geosystems
Technical Lead
2011 - 2018
Arbete:
Unga personer anställdes och vi integrerade dem med mycket parprogrammering, egna miniprojekt, och gemensamma kodnings-sessioner där vi gick igenom olika programmeringstekniker.
Tillsammans med utvecklare och produktledning jobbade vi fram en metod i Jira för att förtydliga produktkraven samtidigt som vi fick bättre kontroll över teknisk skuld och mjukvaruunderhållet.
Tillsammans med vår duktiga UX-expert och domän-expert jobbade vi fram ett antal personas till vår produkt och började skissa på en user journey.
Tillsammans med utvecklare, produktledning, och test-team arbetades en kravspecifikation fram som sedan presenterades och diskuterades med vår hårdvarudesigner. Testning av prototyper skedde i koordination med test-teamet och ett antal dedikerade betatestare.
I samarbete med test-teamet jobbade vi på att förbättra rapporteringen i Jira för att samtliga intressenter lättare skulle kunna följa upp ärenden.
Systemet var i behov av en översikt av mjukvaruarkitekturen och tillsammans med personalansvarige startade vi en arkitekturgrupp och utbildade oss hos SEI.
Tekniker: Jira, UX -
Leica Geosystems
Software Engineer
2010 - 2018
Produkt:
Maskinstyrningssystem som visualiserade byggritningar, referenspunkter, och utfört arbete. För vissa maskintyper styrdes även hydrauliken vilket gav semi-automatisk styrning.
Arbete:
Systemets kinematik behövdes skrivas om från början då nya krav tillkommit. Detta löstes med Affin Transformation och annan matematik från robotindustrin.
Migrering från Linux From Scratch till Yocto påbörjades och utvecklades kontinuerligt.
Vi jobbade hårt på att automatiskt få upp kraschstatistik i Socorro, och vi bidrog även till open source-projektet Yocto för underlätta kopplingen.
Japansk text behövdes i GUI:t för den japanska marknaden men det var svårt då vårt grafiska ramverk ännu inte hade stöd för Unicode, men det gick att få in katakana.
Då krasch hos kund lättast felsöks med kraschdumpar så implementerades Google Breakpad i produkten och stöd i byggsystemet för att få fram rätt symboler till kraschdumparna.
Systemet behövde uppkoppling via mobilt bredband och detta implementerades med ett USB-modem som styrdes med en state machine.
Funktionalitet till systemet lades till för grävmaskin, schaktmaskin, väghyvel, och hjullastare.
Tekniker: Linux, C++17, TDD, Mobil modemuppkoppling, Kinematik med Affin Transformation, Yocto, Google Breakpad, Socorro -
Karolinska Institutet
Software Engineer
2003 - 2010
Produkt:
Databaskoppling mellan MySQL och visualiseringsprogrammet GeneSpring. Kopplingen hade ett eget GUI så att dataset enkelt kunde väljas för visualisering.
Arbete:
Genanalys med programmet PLINK utfördes av forskare men kunde parallelliseras med MPI för att utföra analyserna fortare.
Under uppdraget kom krav på nya databasparametrar som skulle läggas till i befintliga databaser. Vissa parametertyper fanns det redan stöd medan andra krävde programmering för att läggas till. Det behövdes även hjälp att parallellisera vissa tunga beräkningar i en tid då korskompilering mellan 32 bitar och 64 bitar var vanligt.
I en befintlig databaskoppling behövdes nya parametrar läggas till programmeringsmässigt. Krav på nya parametrar kom kontinuerligt och databaskopplingen refaktoriserades till WYSIWYG-GUI så att de nya parametrarna lätt kunde läggas till.
För att visualisera korrelationen mellan patientgrupp och genuttryck skapades en koppling mellan MySQL och Agilent GeneSpring.
Tekniker: Java SE, C++, MySQL, Agilent GeneSpring, PLINK, MPI -
The Electronic Farm
Software Engineer
1999 - 2002
Produkt:
Video- och filmredigeringsmjukvara för efterbearbetning och broadcast. Produkten fokuserade på videoredigering och maskinrumsförenklingar.
Arbete:
Till våra mässor på IBC och NAB behövdes ett antal produktstationer planeras och skapas med separat maskinrum och möjlighet att dela utrustning mellan olika visningar.
Ett interface mot disk skapades för att kunna skriva olika typer av filer. Det behövdes också ett internt filformat som kunde skriva tillräckligt fort på mekaniska diskar.
Ett interface för Silicon Graphics videokort skapades. Utmaningarna var att anpassa ringbuffern, synkronisera videobilderna mot systemklockan, samt erbjuda olika videokort med olika egenskaper som t.ex. komprimering.
Ett interface till RS-422 Sony 9-pin protocol skapades för att styra videobandspelare såsom Digibeta.
Tekniker: IRIX, C++, Near Real-time, Video/audio-strömning, Sony 9-pin Protocol, Tcl/Tk
Daniels kompetensområden
-
Roller
Utvecklare/Programmerare, Scrum master -
Utbildning
civ.ing
Daniels anställningar
-
Software Engineer, MSAB
2018 - 2022
-
Software Engineer, Technical Lead, Leica Geosystems
2010 - 2018
-
Software Engineer, Karolinska Institutet
2003 - 2010
-
Software Engineer, Technical Lead, The Electronic Farm
1999 - 2002
Daniels utbildningar
-
M.Sc. Datateknik, KTH
1995 - 2012