Jonas Munk
Curriculum Vitae

Teknologier

  • Front-end
    Websites og mobil-apps hos Peytz, websites og brugerflader hos Atira, websites og brugerflader hos Aalborg Handelsskole.
  • Backend
    Backend udvikling hos især Atira (Java) men også en del hos Peytz (Drupal). Hos Humanise udvikler jeg alt backend.

Programmeringssprog

Jeg forsøger at vælge det sprog der bedst passer til opgaven. Jeg har en forkærlighed for type-stærke sprog og elsker at lære nye koncepter. Følgende programmeringssprog arbejder jeg aktivt med for tiden...

  • Java
    Jeg har hovedsageligt arbejdet i Java hos Atira/Elsevier og på Aalborg Handelsskole. Desuden er OnlineObjects skrevet i Java som er mit foretrukne sprog på serveren.
  • JavaScript
    Er nok det sprog jeg har skrevet flest linjer i. Jeg har erfaring med udvikling af meget store løsninger - samt eget GUI framework. Jeg har konkret erfaring med mange af de nyeste API'er. Jeg har især haft fokus på hastighed og robusthed.
  • TypeScript
    Mobil-apps i Ionic / Angular 2. Jeg kan rigtig godt lide at arbejde i sproget og synes det er meget elegant.
  • PHP
    Humanise Editor er skrevet fra bunden i PHP uden brug af eksterne biblioteker. Det er noget jeg har arbejdet på i mange år men jeg har ikke den store erfaring med specifikke frameworks. Derimod har jeg erfaring med at lave det hele selv. Hos Peytz har jeg primært arbejdet i PHP via Drupal.
  • Swift / Objective C
    Er i gang med at udvikle en iOS applikation til Humanise Editor og en Mac + iOS applikation til OnlineObjects. Swift er klart mit foretrukne sprog.
  • Python
    Jeg har nogle få gange anvendt python til simple scripts.
  • Scala
    Jeg har i flere omgange forsøgt at komme igang med scala men det er meget sporadisk.

Web-klient-biblioteker

  • Angular 2
    Hybrid apps udviklet i Ionic.
  • ReactJS
    Avanceret interaktivitet på websites.
  • jQuery
    Avanceret interaktivitet på websites.
  • Google Maps
    Har efterhånden lavet en del med Google Maps. Det være sig avanceret tegning, video og ikke-trivielle beregninger. Har erfaring med at vise store mængder data.

Server-side frameworks og biblioteker

  • Java Servlets
    Jeg har siden min tid på Aalborg Handelsskole arbejdet med Java Servlet API. Senere igen hos Atira/Elsevier og endelig igennem Humanise. OnlineObjects er baseret direkte på Java Servlets med et tyndt hjemmelavet lag oven på. Jeg er blevet tilhænger af at arbejde tæt på HTTP-protokollen uden for stort et abstraktionsniveau.
  • Java Server Faces
    Hos Atira/Elsevier skiftede vi til JSF og jeg har arbejdet længe med teknologien. I OnlineObjects anvender jeg også JSF. Jeg kan godt lide kombinationen af at være stringent og kraftfuldt.
  • Spring Framework
    Hos Atira/Elsevier + OnlineObjects. Jeg er vant til at tænke i "dependency injection".
  • Hibernate
    Atira/Elsevier + OnlineObjects
  • Apache Lucene / Solr
    Hos Atira/Elsevier anvendtes Lucene til Pure. OnlineObjects har et indeks på over en million ord bygget ud fra komplekse relationer. Hos Peytz anvendes ofte Solr til søgning på websites.
  • Cocoa
    Efter mange forsøg har jeg endelig fået hul igennem til at få udviklet hhv. iOS og Mac applikationer.
  • Drupal
    Gennem mit arbejde hos Peytz har jeg primært arbejdet på websites lavet i Drupal 6, 7 eller 8. Jeg har kun erfaring med backend udvikling i Drupal 7 men har erfaring med theme-laget i Drupal 8.

Koncepter

  • Tekstanalyse
    Jeg har en stor interesse i systematisk tekstanalyse. Gennem udviklingen af OnlineObjects har jeg arbejdet med analyse af sprog, sætningsled, ordklasser, udtræk af meta-data mm. Desuden har jeg selv implementeret algoritmer til udtræk af hovedindhold fra websider samt sammenligning af dokumenter. Dokumentsammenligningen bygger videre på et projekt fra universitetet.
  • Video
    Har arbejdet med adskillige playere, streamingtjenester og lavet diverse custom redigering og præsentation. Heriblandt pauseskærme til TV stationer.
  • Kort / GEO-lokation
    Har lavet flere avancerede kort via Google Maps. Det være sig visualisering af forskningsrelationer og film med indlejret video-afspilning.
  • Animation
    Inden animationer var tænkt som en mulighed i CSS byggede jeg mit eget implicite animations-framework som stadig er en del af Humanise User Interface.
  • WYSIWYG
    Via Humanise Editor har jeg arbejdet meget med direkte manipulation af websider og skillelinjen mellem præsentation og indhold. Desuden har jeg gennem Drupal lidt erfaring med tredjeparts biblioteker såsom CKEditor.
  • Visualisering
    Jeg mener at visualisering af kompleks data bliver mere og mere vigtigt. Gennem arbejdet på Pure hos Atira/Elsevier arbejdede jeg i høj grad på visualisering af komplekse relationer i forskning. Hos Peytz har jeg primært arbejdet med visualisering på kort. Hos Humanise har jeg skrevet eget relations-diagram som jeg anvender til at synliggøre ikke-hierarkiske strukturer. Derudover har jeg udviklet eget graf-bibliotek.
  • Søgning
    I mange systemer er søgning utrolig vigtigt for brugeren men desværre er det ret svært at implementere ordentligt. Hos Atira/Elsevier var en hovedopgave at lave søge-interface til forskning. Gennem OnlineObjects har jeg arbejdet meget fokuseret med både brugerfladen og teknikken bag søgning. Hos Peytz har jeg arbejdet med mobil-interface til søgning.
  • Billedbehandling
    I OnlineObjects og Humanise Editor har jeg haft stor fokus på håndtering af billeder. Det være sig konvertering, skalering, rotation, farvekorrigering, skarphed, kompression og udtræk af meta-data. Hos Peytz har jeg desuden arbejdet meget med at servere optimerede billeder til forskellige enheder.

Værktøjer

  • Git, SVN, CVS
    Jeg har været med til overgangen fra CVS til SVN og nu til GIT.
  • Grunt, Gulp, Webpack
    Er vant til at anvende "hjælpere" til pakke webapps sammen.
  • Maven, Ant
    Arbejdet hos Atira/Elsevier var centreret omkring Maven som jeg stadig anvender i OnlineObjects.
  • Bash, Make, Python
    Jeg forsøger så vidt muligt at automatisere ofte udførte kommandoer.
  • Sass, Compass, Less
    Som hjælper til CSS jeg helts SASS men har også sporadisk anvendt LESS.
  • Patternlab
    Gennem arbejdet hos Peytz har jeg i vid udstrækning lavet semi-funktionelle HTML-prototyper.
  • Eclipse IDE, IntelliJ IDEA
    Hos Atira/Elsevier anvendte jeg først Eclipse men vi skiftede til IntelliJ. Jeg anvender stadig Eclipse til udvikling af OnlineObjects.
  • Android Studio
    Ved udvikling af mobile apps har jeg lidt erfaring med Android Studio.
  • Xcode
    Gennem udviklingen af klienter til Humanise Editor og OnlineObjects har jeg udviklet både Mac og iOS apps. I forbindelse med deployment af hybrid-apps hos Peytz har jeg især arbejdet med konfigurering og certifikater.
  • TextMate
    Min foretrukne text-editor.
  • Docker, Virtual Box
    Er vant til at arbejde med virtuelle miljøer.
  • Photoshop, Illustrator, Experience Design, Sketch, Affinity Designer
    Jeg har anvendt Photoshop siden version 3.0 og bruger især Illustrator til design af ikoner. På det seneste har jeg anvendt Sketch og Affinity-produkter en del.
  • Jira, Basecamp
    Hos både Atira/Elsevier og Peytz har jeg anvendt Jira til opgavestyring

Metoder

  • Agile Software Development
    På universitetet lavede vi projekter der var rent "Extreme programming". I den virkelige verden har jeg i flere sammenhænge arbejdet på projekter der var delvist agile – dog ikke godt struktureret.
  • Unit testing
    Hos Atira/Elsevier var unit-testing en hjørnesten i udviklingen. Senere har jeg gennem Humanise anvendt unit testing i PHP via Humanise Editor, JavaScript via Humanise User Interface og Java via OnlineObjects.
  • UX / design process
    Hos Peytz har jeg på flere projekter gennem en struktureret process arbejdet sammen med både interne og eksterne designere og user experience eksperter.
  • Prototyping
    Flere websites hos Peytz er lavet ved at udvikle front-end koden i en prototype som hurtigt kunne ændres i samarbejde med kunde og designere.
  • Task management / review
    Hos Peytz har jeg arbejdet i et struktureret workflow med estimering, review og test af enkelte opgaver.
  • Tidsregistrering
    Jeg har både hos Atira og Peytz været vant til at registrere al min arbejdstid samt estimere tidsforbrug på nye opgaver.

Platforme

macOS

Privat har jeg altid haft en Macintosh (siden System 7.0) og har været på Mac OS X siden starten. Jeg har opbygget et ret omfattende arsenal af software som jeg medbringer til mit arbejde. Jeg anvender dog i høj grad kommandolinjen og bruger dagligt flere "UNIX værktøjer".

Linux / Unix

På Aalborg Handelsskole har jeg arbejdet med Apache og Java Servlets på RedHat. På universitetet brugte vi dagligt Solaris og Linux til Java, CVS og LaTex. Privat bruger jeg Mac OS X og Debian.

Hos Peytz anvendes Linux på produktion og i udvikling via Virtual Box eller Docker.

Hos Humanise administrerer jeg flere Linux-servere - Debian eller Ubuntu.

Jeg har især erfaring med PHP, Apache httpd, Java, Tomcat, CVS, SVN, Git, MySQL og PostgreSQL. Både Humanise Editor og OnlineObjects interfacer desuden med diverse CLI biblioteket så som ImageMagick.

Windows

Gennem arbejde på Aalborg Handelsskole har jeg arbejdet især med Windows 2000 servere og brugt Windows NT/2000/XP som arbejdsstation. Derudover anvender jeg jævnligt Windows til at teste browserkompatibilitet.

Jeg vil nok have det meget svært med at arbejde i et Windows-miljø.


Performance

Jeg har haft stor fokus på hastighed i det meste jeg har arbejdet med. I starten var det en absolut nødvendighed, men det vil for mig altid være vigtigt for at optimere brugeroplevelsen og bundlinjen samt for at minimere energiforbruget.

Min erfaring er at optimeringer enten har en direkte indflydelse på brugerens oplevelse eller frigiver plads til mere avanceret opførsel.

Jeg er vant til at anvende værktøjer til at analysere systemer for at fokusere indsatsen på både klienten og serveren.

  • Client side web
    For at optimere oplevelsen af websider har jeg brugt meget tid på at optimere JavaScript, CSS og billeder. Humanise Editor udmærker sig ved at være særdeles effektiv. Hos Peytz har jeg arbejdet målrettet på at opnå høj score på Google Page Speed samt reducere server load på websites med høj traffik.
  • Server side
    På serveren har jeg især gennem arbejde i PHP brugt meget tid på at optimere både kode og database-forespørgsler. I arbejdet på OnlineObjects har jeg brugt meget energi på at optimere især søge-indekser samt caching-strategier. I OnlineObjects findes flere fast-paths med optimerede SQL-forespørgsler og "materialized views". Hos Peytz bestod server side arbejdet primært i at snakke med en front-end cache.

Databaser

  • PostgreSQL
    Hos Atira og i forbindelse med OnlineObjects har jeg primært anvendt PostgreSQL som database. Jeg har en forkærlighed for "Postgres" men kan ikke forklare hvorfor.
  • MySQL
    Humanise Editor anvender MySQL via PHP. Alt arbejde i Drupal hos Peytz har været centreret omkring MySQL.
  • Oracle
    På Aalborg Handelsskole arbejdede jeg en del med Oracle databaser og relaterede værktøjer. Arbejdet bestod i at lave brugerflader til EASY-A fra både Java og PHP.
  • Microsoft SQL 7 + 2000 / Microsoft Access
    På Aalborg Handelsskole anvendte jeg Microsoft SQL og Access som database til forskellige systemer skrevet i ASP.

Standarder

HTTP

Jeg har efterhånden opbygget stor erfaring med HTTP protokollen. Det gælder især headers der styrer caching og encoding samt en god måde at kommunikere status.

HTML, CSS, JavasScript

Jeg har primært beskæftiget mig med enten design af hjemmesider og implementering af web-baserede brugergrænseflader.

XML, XSD og XSLT

Jeg har i mange år arbejdet med XML og laver idag sjældent noget uden at XML er indblandet og har stor rutine i XSLT og XPath.

Jeg har aktivt anvendt MSXML, Apache Xerces, Xalan og Axis, Sablotron, libxml og libxslt gennem PHP. Har desuden arbejdet med relaterede standarder så som XSL-FO, OPML, XUL, RSS og Atom.

Humanise Editor er bygget på XML der via XSLT adskiller præsentation fra indhold. Humanise User Interface kan skrives i XML hvor alt er dokumenteret i et "schema" som jeg anvender til validering.

Web services

Jeg har i mindre grad arbejdet med avancerede web services så som SOAP. Hovedsageligt har jeg arbejdet med simple JSON endpoints mellem OnlineObjects, Humanise Editor og deres respektive iOS/macOS apps. Jeg vil dog mene at jeg har en del erfaring med hvor mange ting der kan gå galt når to systemer skal snakke sammen via en upålidelig kanal.

SQL

Næsten alt jeg har arbejdet med har været centreret omkring SQL-adgang til databaser. Jeg har efterhånden opbygget stor erfaring i forskellen mellem de forskellige implementationer og hvordan man skriver effektive forespørgsler.

Den første version af OnlineObjects kørte på både Oracle, MySQL og Postgres hvor jeg lavede et ORM-lignende abstraktionsniveau.