Hoppa till sidans innehåll

Daniel Markus

Daniel är mjukvaruingenjör med över 27 års erfarenhet med fokus på C++. Han fokus på icke-funktionella krav och tydlig kommunikation mellan projektets intressenter.

Han har huvudsakligen arbetat med C++ inom styr- och reglerteknik samt databaser, med särskilt intresse för backendarkitektur, Domain-Driven Design, Pipes and Filters och parallellisering. Han har även erfarenhet från embedded-miljöer: kommunikationsprotokoll, realtidsprogrammering, minnesbegränsningar, intrinsics och felhantering.

Daniel är nyfiken, kundfokuserad och nyttjar en bred teknisk grund för att strukturera nya utmaningar. Han bidrar gärna med visualisering, presentation och mentorskap för att sprida kunskap i teamet.

Daniels utvalda uppdrag

  • OHB Sweden

    Software Engineer

    2022 - 2025

    OHB Sweden utvecklar avancerade rymdsystem där extrem tillförlitlighet och verifierbarhet är avgörande för att system ska fungera i kritiska miljöer över lång tid.

    Teamet utvecklade mjukvara för flera rymdapplikationer i en nära realtidsmiljö, där utmaningen var att säkerställa icke‑funktionella krav – särskilt reliability, testability och functional completeness.

    C++17 och Python användes för utveckling. Utvecklingen skedde i Visual Studio och all kod plockades från Git och körs på Jenkins. Enhetstesterna körs i gtest.
    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 Daniel strukturerat testerna för att så effektivt som möjligt verifiera felhanteringen men även funktionella krav för att uppnå Functional Completeness.
    Refaktorisering och testning av kommunikationsprotokoll.
    Under kravhanteringsarbetet använder Daniel Doors för att se vilka tester som behövs skrivas.
  • MSAB

    Software Engineer

    2018 - 2022

    MSAB utvecklar programvara för digital forensik där stora datamängder från källor ska extraheras, tolkas och struktureras med hög tillförlitlighet.

    Teamet utvecklade backend‑funktionalitet för dataextraktion, där utmaningen låg i att hantera komplex modularkitektur, versionsberoenden och bakåtkompatibilitet samtidigt som nya funktioner kontinuerligt introducerades i ett C++‑baserat system.

    Daniel implementerar flödesdiagram, med och utan state machine i en Pipes and Filters-design som möjliggör parallellisering genom multitrådning. Detta för att kunna stödja olika versioner av filformatet och utnyttja hårdvaran effektivt.

    Utvecklingen sker i C++17 i Visual Studio och all kod versionshanteras i Perforce och Git.
    Exempelprogram skrevs för att visualisera tekniken och dess för- och nackdelar samt historik.
    Utmaningar inom bakåtkompatibilitet och versionshantering analyserades, där ett antal olika modulimplementationer behöver stödjas och lösas med designmönster för kombinatorik. Fördelen med detta ger att generella verktyg kan byggas upp mot modulerna. Det ger också möjlighet att göra Low-level optimization med Intrinsics för de plattformar som har stöd för det.
    MSAB använde sig av proprietär kod som behöver sin egen miljö och körs i Docker.
    En dokumentationsstruktur presenterades för att underlätta tillägg av ny dokumentation i Confluence.
    Daniel höll presentationer om nya C++-funktioner och diskuterar var i produkten de kan användas.
  • Leica Geosystems

    Technical Lead, Software Engineer

    2011 - 2018

    Leica Geosystems utvecklar avancerade system för mätning, positionering och byggautomation där mjukvara, hårdvara och användarupplevelse måste samverka effektivt.

    Teamet utvecklar maskinstyrningssystem som visualiserar byggritningar, referenspunkter, och utfört arbete. För vissa maskintyper styrs även hydrauliken vilket ger semi-automatisk styrning. Teamet lade till funktionalitet till systemet för grävmaskin, schaktmaskin, väghyvel, och hjullastare.

    Daniel jobbade som både Technical Lead (se roll nedanför) och software engineer.

    All utveckling sker i C++11 i Linux. Verktyg såsom GDB, Valgrind, Git, SVN, QMake, Scons, Bash, gtest, TeamCity, Confluence, och Jira användes.
    Då många beräkningar görs, och olika hårdvara arbetar samtidigt, så designades systemet för multitrådning och parallellisering.
    Systemets kinematik behövs skrivas om från början då nya krav tillkommit. Detta löses med Affin Transformation och annan matematik från robotindustrin.
    Japansk text behövs i GUI:t för den japanska marknaden men det är svårt då vårt grafiska ramverk ännu inte har stöd för Unicode, men det gick att få in katakana.

    Uppkoppling till mobilt bredband - För att överföra data, uppgraderingar, och kraschdumpar till och från kundens system så utvecklades en koppling via mobilt bredband.
    Implementerat med ett USB-modem som styrs med en state machine.
    Denna uppkoppling kan även användas för Remote Debugging med GDB Server, och för att debugga själva uppkopplingen körs Remote Debugging via RS-232.

    Testutveckling - Daniel jobbade mycket med att förbättra felhanteringen och underlätta felsökning vid en eventuell systemkrasch.
    Då krasch hos kund lättast felsöks med kraschdumpar så implementeras Google Breakpad i produkten och stöd i byggsystemet för att få fram rätt symboler till kraschdumparna.
    Daniel jobbade hårt på att automatiskt få upp kraschstatistik i Socorro, och bidrog även till open source-projektet Yocto för underlätta kopplingen.

    Utveckling av ny hårdvara
    Tillsammans med utvecklare, produktledning, och test-team arbetades en kravspecifikation fram som sedan presenterades och diskuterades med vår hårdvarudesigner.
    Testning av hårdvaruprototyper skedde i koordination med test-teamet och ett antal dedikerade betatestare.

Daniels tidigare uppdrag

  • Software Engineer, OHB Sweden

    2022 - 2025

  • Software Engineer, MSAB

    2018 - 2022

  • Technical Lead, Leica Geosystems

    2011 - 2018

  • Technical Lead & Software Engineer, Leica Geosystems

    2011 - 2018

  • Software Engineer, Karolinska Institutet

    2003 - 2010

  • Software Engineer, The Electronic Farm

    1999 - 2002

Daniels utbildningar

  • Datateknik, KTH

    1995 - 2012

Kort om Kvadrat

Spetskonsulter inom systemutveckling, teknik, digitalisering, informationshantering, ledning, organisations- och verksamhetsutveckling.