CV
Summary
Senior full-stack developer with 28 years building web platforms — from early-web chaos (yes, I remember the browser wars) to modern cloud infrastructure (yes, I miss when servers had names).
Co-founded and led technical development at GearsERP for a decade-plus. Before and after that: platform work at companies ranging from “we have a ping pong table” startups to “please don’t break production” enterprises. I specialize in owning features end-to-end, debugging the production issues that make people suddenly need coffee, and making poorly-documented third-party APIs actually work.
Strong platform engineering background — I’ve deployed enough broken things to know exactly how to deploy them properly. CSS still refuses to center things predictably, but we’ve reached an uneasy truce.
What I'm good at
- Full-stack ownership: Taking features from vague requirements through UI, API, database, deployment, and monitoring—the whole stack, even the parts nobody wants to own (someone has to)
- Infrastructure: Building CI/CD pipelines, containerization, and observability so developers don’t have to think about it (until it breaks, then everyone thinks about it)
- Production debugging: Finding the gnarly bugs—race conditions, memory leaks, integration failures, that one API call that works everywhere except production (usually at 2am, rarely voluntarily)
- Legacy code archaeology: Reading unfamiliar codebases, understanding what past developers were thinking, and improving it without breaking production (success rate: higher than you’d expect)
- Code reviews: Catching bugs without being insufferable about semicolons, offering better approaches without the phrase “well actually,” and knowing when to just approve it (the trick is doing this while people still like you)
Day to day
Most days involve writing code, reviewing other people's code, and occasionally wondering why we're all doing this to ourselves.
- Turn vague requirements into working software (often involves asking "but what should happen if..." repeatedly)
- Write tests because future-me will thank present-me (past-me rarely did this, sorry future-me)
- Code reviews where I try to be helpful instead of pedantic (mostly succeed)
- Fix prod issues with appropriate urgency based on whether anyone important is yelling yet
- Refactor things when I can't stand looking at them anymore
- Attend meetings where we discuss whether we need more meetings
Things I ship
- Features that don't make users want to throw their laptop out the window
- API integrations (usually involving someone else's poorly documented API)
- Performance fixes for that one page that takes 8 seconds to load
- Monitoring dashboards so we know things are on fire before the customers do
Experience
Nearly three decades of making websites do things, from the Netscape era to whatever we're calling modern web development this week.
Developer — IntraPhone Solutions AB
- Understanding a legacy codebase and finding ways to start delivering solutions swiftly, while navigating the classic "we've always done it this way" territory
- Modernizing legacy systems piece by piece without breaking production (mostly)
- Building new features on top of old foundations and hoping the whole thing doesn't collapse
Consultant — Consulence
Multi-client consulting across diverse technical stacks and business domains, delivering front-end/back-end solutions, API integrations, and production systems under tight deadlines.
- QlikTech — Turned documentation XML into actual readable HTML. Built custom conversion pipelines because MadCap Flare's output needed... help. Learned more about XSLT than anyone should.
- LinkMobility — Built digital loyalty card platform from UI to database. Integrated payment providers (they all claim to be "simple" but they're all lying). Made it work on mobile devices of questionable vintage.
- Tunstall — Healthcare monitoring systems where "it works on my machine" isn't an acceptable answer. Fixed critical bugs, added features, kept compliance people happy.
Co-founder / CTO / Lead Developer — GearsERP
Built an e-commerce platform after another company went bankrupt and left their clients stranded. Nothing motivates quite like angry business owners who can't sell things. Kanban boards were involved.
- Real-time ERP integration: Built bidirectional sync with Microsoft Dynamics NAV. Made inventory, pricing, and customer data flow reliably between systems that really didn't want to talk to each other.
- Multi-tenant architecture: One codebase serving multiple clients with different styling and business rules. Sounds simple until you realize everyone wants their own special snowflake features.
- Modular feature system: Component architecture where clients pick features à la carte. Kept it flexible without turning the codebase into unmaintainable spaghetti (mostly).
- Offline-first tablet platform: Trade fair ordering system that works without WiFi. Preloads data, syncs in background, handles conflicts gracefully when sales people make the same changes simultaneously.
Developer — ScriptServer Intl
- Built websites, intranets, and e-commerce platforms using our in-house CMS. Started with VBScript/JScript (yes, really), then .NET as we slowly dragged ourselves into the modern era.
- Talked to clients about what they actually needed versus what they thought they needed. Usually very different things.
Chief of Development / Digital Media Developer — Kühl+Co / ScriptServer Solutions
- Led dev team building custom CMS, e-commerce, and corporate intranets. Discovered that "Chief of Development" means you get blamed when things break.
- Established coding standards and workflows (got pushback), implemented QA processes (got more pushback), eventually convinced team these were good ideas (mostly).
Developer / Support — Dimac Development
- Built web apps and provided tech support. Learned that "it's probably user error" is never the right thing to say to customers, even when it's true.
Interface Developer — Framfab
- Built websites when "cross-browser compatibility" meant testing in Netscape 4, IE 4, and praying. Made things work with tables for layout (we didn't know better), inline styles (we really didn't know better), and JavaScript that broke if you looked at it wrong.
- Helped establish what would eventually become best practices, though at the time we were mostly just figuring out what didn't catch fire.
Education
Lund University
Foundation in information systems, database design, systems analysis, and early web technologies during the formative years of commercial internet. Provided theoretical grounding in software development methodologies and human-computer interaction that continues to inform practical work.
The Real Education
My parents were smart/unsmart enough to get me a Commodore 64 when I was ten. Quickly discovered you could actually program the thing, which led to monopolizing the family TV for unreasonable amounts of time. BBSes became my second home in my early teens — learning to navigate the digital underground before it was cool (or legal, depending on which BBS). Used some of Sweden's first private/semi-commercial internet gateways in the early '90s, building raw HTML for Lynx browsers and hunting down information via Gopher because Google wouldn't exist for another few years. Turns out getting a C64 at age ten is the most effective tech education you can have, even if your parents didn't realize they were creating a monster.
Professional Development
Keeping up with the JavaScript framework of the month, various certifications of questionable value, and Stack Overflow (let's be honest, we all do it). Also keeping an eye on the scary world of cybersecurity and the various attack patterns that are currently in use.
Technologies I've Survived
The tech that shaped me into the cautious, paranoid developer I am today. Survived and (mostly) recovered.
- Internet Explorer 6 — Five years of CSS hacks, conditional comments, and wondering why nothing worked. Still have nightmares about hasLayout and z-index bugs.
- Flash / ActionScript — Built entire applications in Flash before HTML5 killed it. RIP to the "Skip Intro" button era.
- VBScript / Classic ASP — Server-side scripting in the late '90s. Learned to love angle brackets and Response.Write() statements everywhere.
- jQuery plugins circa 2010 — Downloaded 47 different carousel libraries, each breaking different browsers. Eventually wrote my own (because that's what you did back then).
- PHP 4 / register_globals — Shipped more of this than I care to admit. When security was optional and every variable magically appeared in global scope. Developed a lasting allergy.
- Ruby on Rails — Convention over configuration sounded great until you needed to do something unconventional. Fun idea that never quite reached production maturity and eventually faded into the background. Made a lot of developers very excited for about five years.
- FTP deployments — Before CI/CD, we uploaded files one by one via FTP. Sometimes remembered to upload all of them.
Projects I've Avoided
- Yet another todo app tutorial — The world has 47,000 of these already. It doesn't need mine.
- WordPress plugin development — Learned my lesson the first time. Once was enough.
- Cryptocurrency trading bot — If I understood the market, I wouldn't need to build a bot.
- "It'll only take a weekend" projects — Narrator: It did not, in fact, take only a weekend.
- Predatory gambling sites or lootbox-driven mobile games — Or game studios employing a psychologist to maximize addictiveness. I prefer software that doesn't weaponize dopamine. (And yet, I've spent time gamifying this website. Don't ask.)