# John Mikael Lindbakk

#### Senior backend developer | Tech lead

###### [https://lindbakk.com](https://lindbakk.com) - [atomfinger@GitHub](https://github.com/atomfinger/) - [john-mikael-gundersen@LinkedIn](https://www.linkedin.com/in/john-mikael-gundersen/)

Senior backend developer and tech lead who builds robust, maintainable software. Cares about architecture that can
evolve, teams that can sustain a pace, and code the next person can actually read. More than 13 years across healthcare,
banking and insurance, and since 2023 as a consultant. Does open source and public speaking.

## Experience

**Senior Consultant**, [bspoke](https://www.bspoke.no/) (05.2023 - Current)

Consulting as a senior backend developer, architect and tech lead in client teams, across logistics, finance, public
health and telecom.

- Architect on a greenfield logistics platform: a modular monolith built with Domain-Driven Design, event sourcing and
  event-driven integration, delivered by up to three teams
- Team lead and tech lead for the core credit-card systems at a large Nordic IT services company, where I set the test
  strategy, introduced contract testing and took part in the PCI audit
- Architect for a public health institute's move to a new Azure and Kubernetes platform
- Brought in at the end of a critical telecom infrastructure project, after its two original developers had left, to do
  a security audit, fix the remaining bugs and bring it to the finish line
- Developer on a restaurant ordering platform, building integrations with point-of-sale systems
- Mentored developers, gave internal talks and held technical interviews

**Tech Lead**, [Protector Forsikring](https://protectorforsikring.no/) (12.2020 - 05.2023)

Improved how the developers worked: architecture, test strategy, CI/CD and coaching.

- Tech lead across several teams, responsible for architecture, coaching and how the developers worked day to day
- Owned the test strategy and the CI/CD pipelines, including the move from TeamCity to GitHub Actions
- Introduced practices that stuck: post-incident reviews, Architecture Decision Records, self-updating dependencies and
  DORA metrics
- Built an initialiser that generates production-ready services, which became the foundation of every new application
- Replaced authorisation logic scattered across codebases with central policies and audit logging
- Led a project that geolocated more than 90% of the insured buildings in the UK, and built the reinsurance application
  used for risk analysis
- Took part in most major technology decisions during my time there

**Senior Consultant**, [TietoEvry](https://www.tietoevry.com/) (05.2018 - 11.2020)

Maintained and created core solutions for major Nordic banks.

- Built and maintained core backend systems for multiple banks: reporting, integrations and a generic changelog
- Created automated integration testing that cut a week-long manual test of a bank's core systems to 15 minutes, and
  improved CI/CD pipelines
- Authored developer guidelines for a cleaner and more maintainable codebase
- Team lead for the team responsible for our PCI compliant systems
- Project architect for new banks joining the platform, responsible for the technical side from sale to delivery
- Worked closely with partners in India

**System Developer → Senior System Developer**, [Aspit](https://www.aspit.no/) (09.2013 - 04.2018)

Made electronic health record systems for the privatized healthcare sector in Norway. Started as a system developer and
was eventually promoted to team lead.

- Responsible for the development of the core product, an electronic health record system
- Team lead: estimated, planned and followed up projects, and gathered requirements from customers
- Built integrations with payment terminals, accounting systems and video chat, and a system for migrating customers
  between vendors
- Worked closely with the business by planning and implementing new features
- Worked closely with an outsourcing team in Vietnam, and lived there for a few months to do it

## Education

**Bachelor of science, Computer Science**, [Aberystwyth University](https://www.aber.ac.uk/en/) (08.2010 - 06.2013)

- CS38010 - Space Robotics
- CS36410 - Intelligent Robotics
- CS38110 - Open Source Development Issues
- CS31310 - Agile Methodologies

## Certificates

- **Confluent Certified Developer for Apache Kafka**, Confluent (03.2024)
- **OWASP course**, OWASP (05.2021)

## Skills

- **Developer:** Kotlin/Java, C# .NET, Gleam and Erlang/OTP, Python, SQL of various kinds and MongoDB, Microservices and
  modular monoliths, Kafka and Azure Service Bus, Architecture and Domain-Driven Design, Contract first, gRPC
- **DevOps:** GitHub Actions, TeamCity, Jenkins, Docker, Kubernetes, Helm and GitOps, Azure DevOps, Datadog, Grafana and
  OpenTelemetry, Solution design
- **Security:** OWASP, OAuth 2.0, Open Policy Agent, PASETO
- **Testing:** Testcontainers, System tests, Mockserver, Contract testing, Narrow & Wide integration tests,
  Spock/Junit/Mockito/Nunit/etc
- **AI-assisted development:** Claude Code, Codex, Gemini CLI

## Public speaking

**[Gleam and BEAM: Looking beyond the JVM (09.2026)](https://vimeo.com/1223666800)** - JavaZone On exploring a different
language on a different VM: how Gleam brings a statically-typed, functional, immutable language with no exceptions to
the BEAM, where every process is tiny, isolated, communicates via messaging, and embraces "let it crash".
**[My advice to CompSci graduates (02.2026)](https://speakerdeck.com/atomfinger/my-advice-to-compsci-graduates)** -
Aberystwyth University Here I shared advice for graduates touching on AI, automated testing, legacy code, and the
importance of understanding practical implementations of theory and concepts.
**[Riding the Sour Train: Building surtoget.no with Gleam (02.2026)](https://www.youtube.com/watch?v=gq2-eR10vn8)** -
Gleam Gathering A two-part talk: first on how technical skills can help shed light on real-world societal problems —
using surtoget.no as a case study — then on driving correctness through the type system.
**[Thinking Architecturally (05.2025)](https://speakerdeck.com/atomfinger/thinking-architecturally)** - bspoke A talk
all about thinking about architecture in terms of dependencies, and how these dependencies connect, but also how the
size and complexity of the codebase impacts architecture.
**[Modern testing — Test more and better with less friction (09.2024)](https://vimeo.com/showcase/11348501/video/1006510177)**
\- JavaZone On writing testable systems and what testability actually means in practice. Demonstrated different
approaches to automated testing, including contract and approval testing.

## Languages

English, Norwegian

## Interests

- Stuff I like in general: Dungeon & Dragons, Headphones (Good audio), My dog, Discworld, Whiskey
- Shows I like: Battlestar Galactica, Firefly, Red Dwarf, Doctor Who
- Developer books I recommend: Clean Series, Pragmatic Programmer, The Phoenix Project/The Unicorn Project, The Art of
  Unit Testing, The Software Craftsman, Working effectively with legacy code

## Projects

**[Gaseto (08.2025 - Current)](https://gaseto.hexdocs.pm/)**

A Gleam implementation of PASETO (Platform-Agnostic SEcurity TOkens), a safer alternative to JWT. Supports v3 and v4
local and public tokens, is verified against the official test vectors, and comes with gaseto_http for using it over
HTTP.

**[No Meat Proxy](https://nomeatproxy.com/)**

A simple website showcasing how to (not) use AI when working with other people.

**[Surtoget](https://surtoget.no/)**

A public tool that exposes systemic delay patterns in the Norwegian rail network through open data — because the
official statistics don't tell the full story.

**[Brunost](https://atomfinger.github.io/brunost/)**

A programming language built for Norwegian speakers — using Nynorsk keywords (forKvart, prøv, gjevTilbake) so code reads
naturally in the language you think in. Built in Zig, it compiles to native binaries and WebAssembly.

**[Bygg](https://atomfinger.github.io/bygg/)**

Getting started with Gleam is easy. Getting something production ready is less so, regardless of the language. Bygg aims
to help developers getting started by generating projects with sensible defaults already configured and ready to go.

**[HTTP Mock Server for Gleam](https://hexdocs.pm/http_server_mock/)**

A WireMock-style HTTP mock server for Gleam integration tests. Start a real HTTP server in your test, tell it what to
respond to, make requests against it, and verify what was called — on both Erlang and JavaScript targets.

**[toUUID (10.2020 - Current)](https://github.com/atomfinger/toUUID)**

A small library that creates human-readable and deterministic UUIDs for testing purposes.
