Robusthet i utvecklingsarbetet har blivit Michaels egna ledord.
Den erfarenhet han införskaffat sig genom åren via alla projekt han arbetat i har lett honom fram till övertygelsen att det inte finns några genvägar.
Robusthet i utvecklingen av verksamhetskritiska applikationer leder tydligt till framtida kostnadsbesparingar i form av ökad underhållbarhet och högre kvalitet på systemet.
Det handlar om att använda de rätta teknikerna, de beprövade ramverken, de färdiga komponenterna och framförallt att ha vetskap och kunskap om dem.
Beskrivningar av Michaels senaste uppdrag (en fullständing CV finns att ladda ner i MS Word-format nedan):
Senior Arkitekt/designer/utvecklare inom Java, Spring Boot, Spring Integration, Docker, Kubernetes, GCP Exempel på mina konkreta arbetsuppgifter på Svensk Travsport:
Underhåll/utveckling/design/arkitektur av en mängd Spring Boot system inom Svensk Travsport
Utveckling av Spring Integration system mot bank för säker överföring av banktransaktioner
Utveckling och underhåll av CI/CD pipeline (Jenkins, GitHub Actions)
Utveckling och underhåll av e2e tester i Cypress.io
Migrering från nano services till micro services för att spara CPU/RAM på GCP
Mentor åt mindre erfarna utvecklare
Teknisk miljö:
IntelliJ, Spring Boot, Java 11 och 17, Oracle Spring, Maven, Jenkins, GitHub
Officiell roll: Chief of Data Enrichment and AI
Arkitekt/utvecklare inom Docker, Arkitekt/utvecklare inom AI/ML
Artificiell Intelligens och Machine Learning genomsyrar hela Haaartlands site och är en central del i erbjudandet för våra mer avancerade användare (men till viss del även för våra vardagsanvändare). Jag ansvarar för arkitektur och hands-on implementation för våra delsystem inom AI/ML samt för DevOps/Docker stacken för vår web applikation.
Exempel på mina konkreta arbetsuppgifter:
Kravhantering inom AI/ML
Utvärdering samt val av plattform för AI/ML
Analys/implementation av Topic Modelling av dokument mha Latent Dirichlet Allocation (LDA)
Analys/implementation av Sentiment Analysis av kommentarer mha Natural Language Processing (NLP)
Analys/implementation av chat bot mha NLP
Analys/implementation av visualisering av LDA-modell mha t-Distributed Stochastic Neighbor Embedding (t-SNE)
Analys/implementation av image recognition mha Googles TensorFlow (Inception-v3)
Analys/implementation av en Docker stack för Haaartlands prodmiljö, komplett med “build containers” för att köra på Docker for AWS
Teknisk miljö:
IntelliJ, Java8, Scala, Go, node.js, sbt, Python, SparkSQL, Apache Spark, Databricks, Postgres, Git, Docker, AWS, S3, api.ai, wit.ai, plot.ly
JEE arkitekt/senior utvecklare
En del av implementationen av Swish Ftg på Nordea är det nyutvecklade stödsystemet (back office) för adminstration av Swish-avtal: SwishPort. Affärsnyttan är bl a att kunna avlasta Nordeas IMS experter och låta mindre erfarna handläggare/supportpersonal hantera nya avtal/ändringar etc.
Jag ansvarade för full stack arkitektur/design/utveckling av hela applikationen SwishPort.
Exempel på mina konkreta arbetsuppgifter:
Implementation/exponering av JSON web services, säkrade via Spring Security (rollbaserad auktorisation)/NINAA (Nordeas egen autentiseringslösning) med tillhörande affärslogik/presentationslogik
Implementation av komplett single page web app skriven i angularjs + Spring MVC.
DB-modellering/DB-access/Auditing/Revisionshantering av avtal
Enhetstester, integrationstester
Datamappning mot legacy IMS med Nordeas eget mappningsramverk (ett derivat av ff4j)
Integration mot diverse system inom Nordea (EQA/UC)
Certifikathantering för HTTP-klientaccess mot tredje part (Bankgirocentralen)
Leverans + leveransdokument enligt Nordeas Midas plattform
Releasehantering med GIT
Implementation av diverse Micro Services (tex schedulerade job) för datasynkronisering till tredje part mha Spring Boot
3rd line support
Teknisk miljö:
IntelliJ, Spring Boot, AngularJS, Java7/JEE/Groovy, Jetty, DB2, Spring, soapUI, Spock, Maven, Jackson, SOAP, GIT, JPA, Hibernate Envers
JEE arkitekt/senior utvecklare
Det nyutvecklade systemet är ett stödsystem (back office) för korthantering inom Nordea.
Affärsnyttan är bl a att kunna avlasta Nordeas kortexperter och låta mindre erfarna handläggare/supportpersonal hantera nya kortbeställningar/ändringar/spärrar etc.
Jag ansvarade för arkitektur/design/utveckling av i stort sett hela JEE-lagret för applikationen CardPort.
Exempel på mina konkreta arbetsuppgifter:
Exponering av JSON web services, säkrade via Spring Security (rollbaserad auktorisation)/NINAA (Nordeas egen autentiseringslösning) med tillhörande affärslogik/presentationslogik
DB-modellering (för CardPorts lookup tabeller)
Enhetstester, integrationstester, GUI-tester, prestandatester/profilering
Datamappning mot legacy IMS med Nordeas eget mappningsramverk (Record Framework)
PoC för datamappning mot legacy IMS med Google protobuf
Integration mot diverse system inom Nordea (E-kod, PAL, EQA/UC)
Leverans + leveransdokument enligt Nordeas Midas plattform
Releasehantering med GIT
Teknisk miljö:
Eclipse, Spring STS, Java7/JEE/Groovy, Jetty, DB2, Spring, soapUI, EasyMock, Spock, geb, Maven, Spring, Jackson, SOAP, GIT
JEE arkitekt/designer/utvecklare
Det utvecklade systemet implementerar en slags Facebook för maskiner, eller ”SWoT-appar” där slutmålet är att ha ett system där en användare ska kunna uppleva att han/hon kan kommunicera med sina ”devices” över ett intelligent, familjärt gränssnitt. Exempel på sådana enheter är väckarklocka, våg, dörrlås, lampor etc. Apparna kan även kommunicera med varandra via samma gränssnitt.
Mina arbetsuppgifter var bl a:
Design/utveckling av en regelmotor (”SWoT-Brain”) i Drools för att tillåta slutanvändaren av SWoT att via ett GUI i sin mobiltelefon kunna deklarera regler för interaktion mellan sina SWoT-appar.
Design/utveckling av en Grails plugin för att skriva SWoT-appar. En byggsten som är tänkt att sänka tröskeln för framtida SWoT-App-utvecklare.
Utveckling av PoC SWoT-appar i Java/Grails för bla Tellstick (radiostyrning av tex lampor) samt för Redeye (IR-styrning av tex TV/Radio).
Implementation av Web Socket (v. HyBi-10) specifikationen, för sidoprojektet WARP (som närmast kan liknas vid XMPP, Jabber eller liknande system för asynkron kommunikation).
Implementation av en register web service för enheter som via en protokollspecifik proxy kan prata WARP, tex SMS-WARP, HTTP-WARP etc.
Projektet bedrevs enligt SCRUM.
Teknisk miljö:
Eclipse, Spring STS, Java7/JEE/Groovy, Tomcat, MySQL, Hibernate, JPA, Spring, Spring Roo, Grails, Drools Fusion, soapUI, EasyMock, Maven2
JEE arkitekt/designer/utvecklare
Det utvecklade systemet, Trusted Service Manager, implementerar enligt (en delmängd av) Global Platform specifikationen en slags broker för att digitalt distribuera applikationer till sk Secure Elements, där ett Secure Element kan existera på tex ett SIM-kort eller som ett separat chip i en mobiltelefon. Exempel på typiska sådana applikationer är att via NFC kunna låsa upp dörrar, köpa färdbiljetter eller mer generella betalapplikationer från tex VISA. I princip all kommunikation med TSM-plattformen är asynkron och systemet har extrema krav på säkerhet.
Mina arbetsuppgifter var bl a:
Utveckling av funktioner för att distribuera samt kommunicera med en färdbiljettapplikation ”Mifare” (denna standard implementeras bl a av SL-Access i Stockholm).
Design/utveckling av en distribuerad cache för meddelandesynkronisering i asynkrona web services. Cachelösningen implementerades mha EHCache ovanpå Terracotta, och driftsätts i system med failover på både web servrar och Terracotta servrar.
Design/implementation av testramverk i soapUI för att testa den asynkrona kommunikationen komplett med full web service addressing (WS-A) stack. De asynkrona web service lagret implementerades mha Spring-WS.
Allmän refactoring av befintlig kodbas enligt Spring 3 best practices för bl a transaktionshantering, säkerhet etc. PoC migrering av befintliga Axis web services till Spring-WS. PoC för generering av enklare back office mha Spring Roo.
Projektet bedrevs enligt SCRUM.
Teknisk miljö:
Eclipse, Java6/JEE, Tomcat, MySQL, Hibernate, EHCache, Terracotta, JPA, Spring, Groovy, soapUI, EasyMock, Maven2, Spring-WS, Spring Roo