Om mig

Hej, jag heter Armin Kunkel. Jag utvecklar digitala produkter med fokus på hållbart värde. Som författare skriver jag praktiska fackböcker och driver en blogg om IT-ämnen. Min erfarenhet sträcker sig från akademisk forskning och open-source-projekt till tillämpad webbutveckling.
I början av min (dåvarande) kandidatexamen vid Högskolan i Karlsruhe fick jag intresse för webbutveckling och började lära mig HTML, CSS, JavaScript & PHP. Genom att bygga en gästbok kunde jag fördjupa mig i dessa tekniker via dokumentation (MDN, PHP-dokumentation), tutorials, böcker och videor.
På vägen mot webbutvecklare lärde jag mig skillnaderna mellan HTML 4 och HTML 5, utvecklingen från CSS 2 till CSS 3, klient-server-arkitekturen samt skillnaderna mellan statiska (utan JS) och dynamiska (med JS) webbplatser. Jag uppskattade särskilt fördelarna med enkelsidesapplikationer (SPA). Efter grunderna utökade jag min kunskap med SSR (server-side rendering), SSG (static-site generation), byggverktyg som Webpack och Vite, CSS-ramverk (W3CSS, Bootstrap), CSS-förprocessorer (SASS, LESS, Stylus, SCSS), utility-first-angreppssätt (t.ex. TailwindCSS) och användningen av CSS-variabler.
Jag utforskade JavaScripts historia och utveckling – från LiveScript (Netscape Navigator) till ECMAScript-standarden. Jag skaffade också erfarenhet av AJAX för serveranrop, formulärvalidering, Web API:er och TypeScript. Under min praktik arbetade jag med ExtJS och senare med Angular (v5–v7). Med Vue.js (v2 och v3) fann jag ett kraftfullt ramverk för att bygga ES/TS-baserade applikationer och komponenter. Med Nuxt.js (v2 och v3) lade jag till ett extra abstraktionslager för produktionsappar. Vanliga bibliotek som jQuery och Lodash ingick också i resan. Jag är även bekant med responsiv design, SEO, användbarhet och användarupplevelse.
För lagring och hantering av data arbetade jag med servertekniker som PHP, Java Servlets och webbservrar (t.ex. Express i NodeJS, Apache httpd, Nginx). Jag lärde mig om WebSockets och SSE (Server-Sent Events) för dubbelriktad kommunikation, GraphQL för kommunikation via en enda endpoint samt hur man utformar REST-API:er och HATEOAS (Hypermedia as the Engine of Application State). Med mallmotorer som Thymeleaf (Java), JSP (Java) och Pug (NodeJS) utforskade jag ett annat sätt att generera HTML-sidor dynamiskt på servern. Mitt backendfokus låg på Spring Boot (Spring MVC, Spring Security, Spring Data JPA, Spring Validation) i Java-ekosystemet. Under min praktik lärde jag mig trelagers-arkitekturen (controller-, service- och DAO-lager) med Spring Boot.
För serialisering av data i HTTP-förfrågningar fördjupade jag mig i XML (DTD, XSD, XSLT) och JSON och bekantade mig med beskrivningsspråk som ASN1 och Protocol Buffers. Genom OWASP och BSI studerade jag webbapplikationssäkerhet och övade praktiskt (bl.a. med Kali Linux). Slutligen lärde jag mig flera programmeringsspråk, däribland Python, Haskell, Elixir, Assembler, Kotlin, Go, C & C++, VHDL och till och med Brainfuck.
Armin Kunkel
Teknikblogg & butik
Datavetare
- Studier: IT-säkerhet (påbörjade)
- Byte till datavetenskap
- Hochschule Karlsruhe (University of Applied Sciences)
- Praktik: ExtJS, Spring Boot (trelagersarkitektur)
Webbutveckling
- Start (gästbok, HTML, CSS, JS, PHP)
- Lärkällor: MDN, PHP-dokumentation, tutorials, böcker, videor
- HTML och CSS
- HTML 4 vs HTML 5
- CSS 2 vs CSS 3
- CSS-förprocessorer: SASS, LESS, Stylus, SCSS
- Ramverk: Bootstrap, W3CSS
- TailwindCSS (utility-first)
- CSS-variabler
- JavaScript
- Historia: LiveScript → ECMAScript
- AJAX, formulärvalidering, Web API:er
- jQuery, Lodash
- TypeScript
- SPA vs statiska sidor
- SSR och SSG
Ramverk
- Angular (v5–v7)
- Vue (v2, v3)
- Nuxt (v2, v3)
Byggverktyg
- Webpack
- Vite
Backend
- Språk: PHP, Java Servlets, NodeJS
- Webbservrar: Apache, Nginx, Express
Kommunikation
- REST, HATEOAS, GraphQL
- WebSockets, SSE
Mallmotorer
- Thymeleaf, JSP, Pug
Spring Boot
Spring MVC · Spring Security · Spring Data JPA · Spring Validation
Dataformat
- JSON, XML (DTD, XSD, XSLT)
- ASN.1, Protocol Buffers
Säkerhet
OWASP, BSI · Kali Linux (BackTrack)
