Tom Zhao
Systemutvecklare fullstack
Tom har alltid besuttit en stark nyfikenhet och motivation för att förstå hur saker och ting fungerar. En gång hade Tom den största boksamlingen inom datavetenskap i Uppsala.
Idag är internet största kunskapskällan. Det är möjligt att delta i kurser som erbjuds av de finaste institutionerna i världen. Tom uppdaterar ständigt sina kunskaper.
Den djupa förståelsen för teknik och den solida bakgrunden inom matematik och datavetenskap har alltid hjälpt Tom att utforma fantastiska tekniska lösningar. Tillsammans med goda kommunikationsförmågor är Tom mycket uppskattad av sina kunder.
Tom är certifierade IT-arktitekt, Lead Developer. Tom har även genomgått en utbildning från Standford i maskininlärning.
Områden
- Systemutvecklare fullstack
- Java & JavaScript
- Programmering
- arkitektur och Cloud
Om Tom
Tom är omtänksam om andra människor och samarbeta gärna med sina kollegor att lösa problem tillsammans. Tom är pedagogisk och mycket bra på att förklara saker för sina kollegor. Tom är också noggrann och har mycket god analytisk förmåga.Toms CV
-
#18. Sofia Fastighets AB
Arkitekt & Utvecklare
2023 - 2023
Ett nytt och modernt fastighetsförvaltningssystem där flera partner kan ansluta sig och data kring fastigheter enkelt kan delas ska tas fram. Systemet är modulärt och i denna ertapp ska arkitekturen sättas på plats och ett par moduler tas fram först.
Backend är utvecklad som Lambda-funktioner med Java 17, jOOQ, Spring Framework, GraphQL Java, Spring for GraphQL. Databashanterare är Amazon Aurora med PostgreSQL som gränssnitt.
Frontend är utvecklad med JavaScript/TypeScript, React, NextJS och körs på Amazon Amplify Hosting.
Teknik: Java 17 / Spring Framework / GraphQL for Java / jOOQ / Amazon Aurora med PostgresSQl / React / NextJS / JavaScript / TypeScript / NodeJS / Express / Storybook / Cypress / Amazon Amplify Hosting -
#17. AddCode AB
Arkitekt & Utvecklare
2023 - 2023
Detta projekt är en vidareutveckling av tidigare projekt integrationsplattformen under 2021 hos samma kund.
Till ett rekryteringssystem har en integrationsplattform byggts för att kunna skicka kandidatdata från rekryteringssystemet till andra HR- och ekonomisystem. Nu ska även jobbannonser kunna skickas ut till andra jobbsajter. Till ändamålet behöver plattformens förmågor byggas ut.
Tidigare var plattformen i princip tillståndslösa. Nu har Amazon DynamoDB införts för mellanlagring. Systemet är fortfarande eventdrivet, eftersom DynamoDB har utmärkt eventhantering med Lambda-funktioner.
DynamoDB hanteras också av AWS CloudFormation.
Tom utvecklade denna vidare utvecklingsdel, under ledning av en arkitekt på deltid hos kunden.
Teknik: JavaScript / TypeScript / React / NextJS/ NodeJS / Amazon API Gateway / Amazon S3 / Amazon Serverless / Amazon Simple Queue Service (SQS) / AWS Cloud Watch / AWS CloudFormation / AWS DynamoDB / JSON / Microservices / OpenAI / REST / Storebook -
#16. Kronofogden
Utvecklare
2022 - 2023
Kronofogden fortsätter sin digitaliseringsresa med att digitalisera handlingar inom verksamhetsområde Verkställighet. Samtliga pappershandlingar skickas till en skanningsleverantör, som sedan skickar tillbaka handlingar i digitala formen.
Ett system som kallas för DHV (Digitala Handlingar Verkställa) har byggts för att kunna ta emot inskannade digitala handlingar samt fördela handlingarna till olika verksamhetssystem.
Lösningen var till stor del eventstyrd, och JMS / ActiveMQ hade använts mycket. Det fanns också en liten frontendsdel byggd med Angular.
Teamet består av en tech lead, två utvecklare och två testare. Tom jobbade som utvecklare och implementerade systemet.
Metodik: Scrum
Teknik: ActiveMQ / Distribuerade system / Git / Java / Java EE / Java Message Service / Jenkins / JUnit / Maven / Oracle DB / JavaScript / TypeScript / NodeJS / Angular / Cypress. -
#15. Extenda Retail AB
Utvecklare
2021 - 2022
Extenda Retail erbjuder ett kraftfullt och flexibelt kassasystem för detaljhandelsbranschen. Systemet används av många ledande livsmedelsföretag i Sverige, såsom ICA, Hemköp, Willys. Miljontals transaktioner görs varje dag på dessa system.
Extenda Retail-kassasystemet har en mycket stor kodbas och använder många teknologier. Systemet består av många komponenter som sammanlänkas via ActiveMQ. Många noder har egna databaser och kan arbeta offline.
Under denna period genomgår systemet en spännande transformation, från lokala installationer till molnbaserad lösning. Dataanalysfunktioner utreddes att läggas till och Apache Spark var tänkt som lösningen. Idén var att försäljningsdata från olika butiker kan samlas på ett ställe och analyseras, för att upptäcka nya affärsmöjligheter.
Tom var en del av ett team på cirka 20 personer. Tom gjorde några POC-arbeten, utvecklade några nya funktioner, förbättrade automatiserade tester och åtgärdade även några buggar.
Metodik: Kanban
Teknik: Java 8 & 11 / Docker / Java FX / Jenkins / JUnit / Quarkus / Google Cloud Services / Liquibase / Maven / MySQL / Spring Framework -
#14. AddCode AB
Arkitekt & Utvecklare
2021 - 2021
Till ett rekryteringssystem behöver en integrationsplattform byggas för att kunna skicka kandidatdata från rekryteringssystemet till andra HR- och ekonomisystem, samt koppla till särskilda tjänster som bakgrundskontroll vid rekryteringar. Användare ska även kunna ta ut Excel-rapporter med rekryteringsstatistik.
Plattformen utformades med en serverlös arkitektur och implementerades på AWS med hjälp av Lambda-funktioner. Systemet är eventdrivet, där flera FIFO-köer sammanlänkar olika komponenter.
Exempel nedan:
1. En Lambda-funktion utgör REST-API bakom en API-Gateway, tar emot användarförfrågningar och lägger dem på en FIFO-kö (Amazon Simple Queue Service, SQS).
2. En annan Lambda-funktion läser förfrågningar från SQS, gör REST-tjänsteanrop till rekryteringssystemets API, skapar en Excel-rapport och lagrar den på en hink på Amazon S3.
Alla AWS-resurser skapas automatiskt genom AWS CloudFormation. Med endast ett kommando kan man upprätta en ny miljö.
Plattform har en tillhörande frontend, utvecklad med React/NextJS.
Ungefär 10 HR- och ekonomisystem kopplades till plattformen, vilket tillförde stort värde till slutkunden. Integrationer med nya system kan smidigt läggas till genom man implementerar nya Lambda-funktioner.
Roll: Tom utvecklade större delen av plattformen, under ledning av en arkitekt på deltid hos kunden.
Teknik: JavaScript / TypeScript / NodeJS / React / NextJS / Amazon API Gateway / Amazon S3 / Amazon Serverless / Amazon Simple Queue Service (SQS) / AWS Cloud Watch / AWS CloudFormation / JSON / Microservices / OpenAPI / REST / Storybook -
#13. Kronofogden
Lead Developer
2019 - 2021
Fenix är ett verksamhetssystem för skuldsanering.
Systemet var byggd med Java EE, och hade flera komponenter sammanlänkade med JMS. Systemet hade en stor kodbas och kördes på en gammal Java 6 baserad Weblogic-server med en egenutvecklad säkerhetslösning. Projektet gick ut på att migrera systemet till en modernare Java 8 baserad Weblogic-server och med en ny säkerhetslösning.
Projektet hade hög komplexitet och hög tidspress.
Tom ingick i ett team av drygt 10 personer och genomförde migreringen. Tom agerade som Lead Developer, gjorde POC-arbete, planerade och fördelade arbetsuppgifter till andra teammedlemmar, programmerade några centrala komponenter, förbättrade automatiserade tester och Jenkins CI/CD pipeline rejält.
Toms insats var av det avgörande betydelse för projektets framgång.
Metodik: Kanban
Teknik: Distribuerade system / Git / Java / Java EE / Java Message Service / Jenkins / CI/CD / JUnit / Maven / Oracle DB / -
#12. SEB
Utvecklare
2018 - 2019
SEB ville bygga en masterdata plattform så att affärs data snabbare kunde konsumeras i organisationen för effektivare verksamhet.
En ny kritisk infrastrukturkomponent, Apache Kafka, införskaffades. System som utgjorde datakällor kopplade sig mot Apache Kafka och skickade data till Apache Kafka.
Framför Apache Kafka byggdes ett antal komponenter. Vissa komponenter byggdes med Apache Kafkas KStream API och KTable API för realtidsanalys. Andra komponenter byggdes som mikrotjänster i form av REST-API och andra delar i organisationen kunde konsumera data via dessa API:er.
Komponenterna var implementerade med Spring Boot och kördes i en OpenShift-plattform.
Tom ingick i ett större team av 20 personer, och hade rollen som utvecklare, implementerade några av komponenterna.
Metodik: Scrum
Teknik: Apache Kafka / Kubernetes / Docker / Java / Jenkins / JSON / JUnit / Git / Maven / Microservices / OpenShift / REST-API / Spring Boot / Swagger -
#11. Kungliga biblioteket
Java och databasspecialist
2018 - 2019
Kungliga biblioteket tillhandahåller en tjänst som heter Swepub, en samlad redovisning av vetenskaplig publicering i Sverige. Tekniskt består tjänsten av en grafdatabas, en sökmotor, ett användargränssnitt och ett importprogram (Java).
Indata kommer från Sveriges universitet och högskolor. Det finns dock problem med importprogrammet och data kommer inte in i systemet på ett korrekt sätt.
I arbetet ingår att lokalisera problemet och hitta en lösning. -
#10. Skatteverket
Lösningsarkitekt
2017 - 2018
Skatteverket hade lång tradition av att använda Java Enterprise Edition och WebLogic App Server från Oracle. Denna plattform började bli impopulär och tappade innovationskraft. Därför ville Skatteverket modernisera sin teknikstack och plattform.
En ny plattform, OpenShift, införskaffades för att möjliggöra container baserad utveckling. En repository-hanterare med sårbarhetsskanningsfunktioner var på väg in också.
Tom var lösningsarkitekt för delprojektet som tog in Binary Repository Manager (Artifactory). Tom ingick i ett litet team av fyra personer och gjorde utredningsarbeten, arkitekturdesign och implementationen.
Metodik: Scrum
Teknik: Docker / Kubernetes / Java / Jenkins / JSON / JUnit / Git / Gradle / Microservices / OpenShift / REST-API / Artifactory -
#9. Skatteverket
Java-arkitekt, verktygsspecialist, Lead Developer
2012 - 2016
Skatteverket hade använt sig av Java Enterprise Edition sedan länge. Av historiska skäl användes UML-modellering och kodgenerering för att generera kod med säkerhetsfunktioner. Kodgenereringen gjordes av ett egenutvecklat verktyg ovanför Apache Ant. Detta verktyg hade många problem, vilket ledde till orimliga långa byggtider och dåliga moduluppdelningar. Flera försök gjordes tidigare för att göra något åt problemet men alla försök misslyckades.
Mellan 2012 och 2014 ansvarade Tom att lösa problemet med byggverktyget. Det bestämdes att ett nytt byggverktyg med samma funktioner skulle byggas. Tom designade ett nytt byggverktyg och implementerade större delen av det.
Verktyget introducerades till utvecklare under höst 2014. Mellan 2015 och 2016 migrerade alla Java-system och de byggdes med det nya verktyget.
Tom ansvarade för migrering av många stora system, bland annat beskattningssystemet. Alla system fick bättre strukturer och moduler, som underlättade moderna utvecklingsmetodik som TDD (Test Driven Development). Tom coachade c.a. 50 tals utvecklare, arkitekter och CM, om hur man designar bättre modulära system. Effektiviseringsvinster var stora, med nedbantade byggtider och bättre moduluppdelningar uppskattades värdet till minst 20 miljoner SEK per år.
Mellan 2012 och 2013 var Tom också involverad i ett projekt att utreda och införa ett nytt Java-webbramverk till Skatteverket. Tom ledde ett team av 3 personer och valet föll på Java Server Faces (JSF).
Under sina år på Skatteverket satte Tom i ett antal olika arkitekturkommittéer och granskade många arkitekturdokument (Software Architecture Document) inom skilda områden, som webbramverk eller säkerhetsramverk.
Teknik: Ant / ClearCase / Git / Gradle / Java / Java Enterprise Edition / Java EE Security Framework / Oracle WebLogic Server -
#8. TeliaSonera AB
Infrastrukturspecialist & Systemutvecklare
2008 - 2011
MSDP var TeliaSoneras portalplattform för mobiltelefoner. Plattformen används i 7 länder i Europa. Plattformen bestod av 20 tals javaapplikationer, varav majoriteten kördes på JBoss Applikation Server. Utöver dem fanns det även 10-tals apacheinstallationer och en Oracle DB-kluster. Operativsystem var RedHat Linux.
Tom var driftansvarig för plattformen. Arbetsområden består av följande:
1. Installera, konfigurera, driftsätta, optimera, felsöka JBoss Applikation Server.
2. Installera, konfigurera, driftsätta, optimera, felsöka Apache webbserver.
3. Utveckling av Linux Bash Script, som underlättar driften.
4. Optimering av SQL-frågor.
5. Applikationsrelaterad databasadministration.
6. Övervakning av systemet med hjälp av HP OpenView och Python Script
7. Kodgranskning av applikationer.
8. Felsökning samt optimering av applikationer.
Under de åren Tom arbetade med plattformen utvecklade Tom många Bash Script och Python Script, som automatiserade mer och mer av dagliga arbeten. Mer tid frigjordes till systemutveckling.
Metodik: Scrum
Teknik: Apache Web Server / Bash / Java / Java Enterprise Edition / JBoss Application Server / Linux (Redhat) / Oracle DB / Python / Spring Framework -
#7. Posten AB
Databas- och systemutvecklare
2007 - 2008
Posten hade ett egenutvecklat system för asset/tjänsthantering. Systemet används bland annat för framtagning av debiteringsunderlag. Systemet var i mycket dåligt skick, med många buggar och brister. Uppdraget gick ut på att underhålla systemet så att det skulle tillfredsställa verksamhetens behov samt omarbeta systemet utan att verksamheten skulle störas.
Ett nytt omarbetat system lanserades till sist, byggt med Spring 2.5, JBoss Applikation Server och Oracle PL/SQL. Ett stort arbete gjordes på databassidan, med omarbetade databasdesign och korrekt databasindexering. Prestanda höjdes rejält, operation som tog timmar innan tog bara sekunder/minuter efteråt.
Teknik: Java / JBoss Applikation Server / Oracle DB / Spring Framework -
#6. InProdicon AB
Systemutvecklare
2006 - 2007
InProdicon en ”grossist” av digital musik. Företaget har ett musikbutikssystem där återförsäljare kan sälja digitalmusik till slutkund. TeliaSonera är en av kunderna.
Datamängden är omfattande, upp till flera terabytes och växer varje dag.
Jag deltog utvecklingen i många olika delar och fick använda mig av en rad olika tekniker.
- utveckling av backendssystem med EJB3, Hibernate, Struts och JBoss.
- utredning och design av ett nytt frontendssystem, med Spring.
- utvecklade ASP.NET-komponent med C#.
- utvärderade olika streaming server lösningar, bl. a. Microsoft Streaming Server, Apple Darwin Streaming Server.
- datamodellering och design av XML-schema (för att kunna underlätta informationsutbyte)
- programmering för transformering av andras leverantörs XML till ”eget” XML format. XSLT räcker inte p.g.a. behov av att kunna anropa externa api:er. Ett ramverket baserad på Composite och Visitor pattern har implementerats.
- programmering av utility-program som underlättar data intagande från musikleverantör (Universal, SonyBMG). Programmet var gjort i C# med anrop mot SQL-2005 databas.
- transkodingsprogrammering med C/C++, Java native interface, DirectShow filter. Ljudfiler av format WAV, WMA, AAC, MP3 kan transkodas mellan varandra. -
#5. Mobot AB
Systemtekniker
2005 - 2006
IP-telefoni, Mobot erbjuder telefonitjänster via IP-nätet. Systemet heter Wicom Communication Service Suite som är levererad av det finska bolaget Wicom. Jag arbetade med drift och kund-installation. Under arbetes gång kom jag även kontakt med SIP, Asterisk etc. -
#4. Uppsala universitet
Systemutvecklare
2003 - 2004
Diporta används för dokumentation av kommunikationsövningar som finns med i många olika kurser.
Studenter kan hantera sina dokument samt fylla i utvärderingsformulär. Lärare kan följa upp studenters framsteg.
Studenters muntliga presentationer filmas och inspelade video lagras i systemet. Datamängden är därför stor.
Det finns planer att strömma ut video men denna plan stannade vid förstudier och har inte blivit av.
Systemet är utvecklat med J2EE. -
#3. TeliaSonera AB
Mobilportal
2002 - 2003
Detta projekt utfördes hos Telia Mobile där jag arbetade hos ett team som
åtgärdade buggar i systemet.
System kan hantera flera mobilportaler samtidigt. Bl.a. använde Halebope
och mobilportal i Danmark detta system.
Användning av XML och XSLT är omfattande i detta system. Varje tjänster
som användare kommer åt består av en XML-data del och ett antal XSLT filer
som transformerar XML-data till olika webbläddrare och mobilterminaler. -
#2. Kulan Akademiker
Databasutvecklare
2001 - 2002
Kulan Akademiker är verksam inom bemanningsbranschen. Projektet handlade om att utveckla en konsultdatabas.
Tom utvecklade databasen på MS SQL-server medan en annan utvecklare utvecklade frontend med ASP.
Teknik: MS SQL-server / Transact-SQL -
#1. CC Systems
Systemutvecklare
2001 - 2001
Denna GIS-applikation var utvecklad med MFC och ActiveX.
Applikationen samverkar med GPS för positionering och ger varning vid passerande till förbjudet område.
Toms kompetensområden
-
Systemtyper
Systemtyper allmänt, Objektorienterade system, Webb- och Internetbaserade system, Systemarkitektur - systemnivå -
Databaser
Databaser allmänt, Datamodellering -
Operativsystem/plattformar
Dos, Linux, Red Hat, Apache HTTP Server -
Databashanterare
Oracle, Progress, mySQL, MS Access, Postgresql -
Utvecklingsspråk
ASP, C, C++, EJB, HTML, Java, Javascript, JSP, PL/SQL, Servlets, SQL, SQL Windows, XML, Python, XSL-FO, Unix Shell script, J2SE, PowerShell, HTML5, Jquery, Webservices, XSD, XSL, JUnit, MVC, IntelliJ, Spring, JavaFX, Typescript, Groovy, React, NextJS -
Hårdvara
PC -
Drift/Support/Service
Installation/underhåll -
Branscherfarenhet
Teleoperatörer -
Verktyg & Middleware
Apache Jakarta/Tomcat, J2EE, Oracle Weblogic Server, JDBC, JBoss, Ant, Weblogic, Tomcat, Spring, Subversion, Git, Maven, Node.js, React, IntelliJ, Kafka -
Utbildning
Annan högskoleutbildning 4 år eller mer -
Roller
Arkitekt, Utvecklare/Programmerare, Lösningsarkitekt
Toms anställningar
-
Konsult, Jaxyz AB
2009 -
-
Konsult, Enskild Firma
2000 - 2009
Toms utbildningar
-
LFD459: Kubernetes for App Developers, The Linux Foundation
2022 - 2022
-
Machine Learning, Standford (Online via Coursera)
2022 - 2022
-
Certifierad Lead Developer, DFK - Dataföreningen Kompetens
2018 - 2018
-
Certifierad IT-arkitekt Master, DFK - Dataföreningen Kompetens
2017 - 2017
-
Datavetenskap 160p, Uppsala universitet
1997 - 2002