Resume

Staff Engineer & Senior Consultant

Phone: +47 45 80 65 89 | Email: christian.ekrem@gmail.com


Summary Link to heading

Christian Ekrem is a software developer with over 12 years of experience in backend, frontend, and mobile development. He’s worked extensively with cloud infrastructure, system architecture, and security across fintech, legal tech, and media.

At Vipps MobilePay (Norway’s dominant payment app), Christian worked as a Staff Software Engineer. Colleagues called him the team’s “Chief Problem Solver”—the person you’d pull into a room when something wasn’t working and nobody knew why. He’s equally comfortable debugging a gnarly Android issue, redesigning a backend architecture, or figuring out why the build takes 44 minutes (and then fixing it—he got it down to 8).

Christian picks up new technologies fast. He introduced Jetpack Compose to Vipps’s Android codebase, wrote the Kotlin style guides, and taught workshops to help Java developers transition. He prefers functional programming when he can get away with it, and tends toward Elm and F# when the project allows.

Before tech, Christian worked in film and TV as a director and cinematographer. He also spent years teaching at-risk youth and running a music/multimedia youth club in Oslo. That background shows up in how he communicates—he’s good at explaining technical problems to non-technical people and working across disciplines.

Outside work: father of three, reads the Bible daily, plays multiple instruments, lifts weights, and stays competitive at chess and Super Smash Bros. He’s a regular contributor to Elm Weekly, writes at cekrem.github.io, and contributes to open source.

Interested in working with Christian? Get in touch with Ensō Consulting


Education Link to heading

  • Westerdals Oslo School of Arts, Communication and Technology (formerly NISS), 2009–2011
  • Bergen Bible School, 2007–2008

Work Experience Link to heading

  • Ensō Consulting AS, Senior Consultant, 2025–Present
  • Vipps MobilePay AS, Staff Engineer (Senior Level 2), 2023–2024
  • Vipps AS, Senior Software Developer, 2018–2023
  • NEP Group, Inc., Lead Frontend Developer, 2018
  • 07 Interaktiv AS, Full Stack Developer, 2017–2018
  • DC Apps AS (Startup), Co-founder and App Developer, 2013–2017
  • Freelance (part-time), Film & TV Cinematographer, Web Designer, 2010–2017
  • City of Oslo, Club Leader at Ung Media Cultural Center & Teacher at Hellerud High School, 2012–2016

Project Descriptions Link to heading

Lovdata Foundation, Lovdata Pro 2 Link to heading

Period: March 2025–Present

Led frontend development for Lovdata Pro 2’s AI-powered search. Built the natural language search interface from scratch, wired up the AI features, and set up automated performance monitoring.

Elm Developer Link to heading

  • Led frontend development of modular AI search with natural language processing
  • Implemented search functionality handling spelling variants and complex queries
  • Developed contextual result summarization and interactive search dialogs
  • Ensured cross-platform compatibility (mobile, tablet, desktop)
  • Improved accessibility including screen reader support

Performance Optimization Link to heading

Legal documents can have 130,000+ DOM nodes. The requirement was real-time navigation without pagination. This meant aggressive DOM optimization and micro-level performance work—the kind where you’re counting milliseconds.

Kotlin Developer Link to heading

Extended APIs and reorganized service architecture related to AI search and chat.

JavaScript Developer Link to heading

  • Created integrations with native browser APIs via Elm Ports
  • Set up performance test rig with headless Chrome browser that monitors and reports DOM structure and performance as part of CI/CD

Technologies: Elm, DataDog, Kotlin, Tailwind, Maven, Elm Land, Architecture, Functional Programming, Problem Solving, Azure Functions, F#, Azure, JavaScript


Vipps MobilePay AS, Loyalty / Customer Clubs in Vipps Link to heading

Period: June 2023–August 2024

Vipps wanted to be more than a payment app. The “Benefits” tab was the experiment that stuck—it replaces physical loyalty cards and membership stamps. Users see their existing memberships and can sign up for new ones without giving their phone number at checkout.

The feature rolled out gradually, went through user research, and is now part of the main Vipps experience.

Full Stack Developer (Android/Backend) Link to heading

After promotion to Staff Engineer, Christian became the first developer at Vipps MobilePay to work both Android and backend for a single product. Less context-switching, more ownership.

Known as the “Chief Problem Solver”—the person pulled in when something broke across team boundaries.

Main technical work: breaking up a monolithic Spring Boot backend into Ktor microservices. Also contributed to C#/.NET and Go services in the broader ecosystem.

Mentor / Advisor Link to heading

Wrote Kotlin style guides and set architecture conventions for the team’s Kotlin projects. Ran workshops for Java developers transitioning to Kotlin.

Technologies: Android, Kotlin, Java, Spring, Spring Boot, .NET, Go, Ktor, Azure Databricks, Grafana, Splunk, Mixpanel, Clean Architecture, Maven, Gradle, Microservices, Microservice Architecture, Problem Solving, Development


Vipps AS, Vipps App Link to heading

Period: January 2020–May 2023

Vipps is Norway’s dominant payment app. The codebase reflects years of rapid growth and deadline pressure. Payments are complex, and the merger with MobilePay added another layer of complexity.

During this period, Vipps moved from dedicated app teams to a pool model where developers served multiple product teams.

Android Developer Link to heading

Did the largest refactoring in the Vipps app’s history, cleaning up architecture debt and aligning with Android best practices. First to introduce Jetpack Compose—rewrote “Log in with Vipps” from scratch as a Compose reference implementation that other teams later used as a template. Built a portable screenshot and unit testing setup for Compose.

Also worked on redesigning payment screen architecture and logic. When the loyalty/customer clubs feature launched, Christian handled all the Android development from beta to production.

DevOps Engineer Link to heading

Cut Android build time from 44 minutes to 8. Migrated pipelines from Azure DevOps to GitHub Actions and added screenshot/unit testing to CI/CD.

Technical Advisor Link to heading

Designed technical interview questions and helped calibrate the hiring process.

Technologies: Android, Kotlin, Jetpack Compose, DevOps, Azure DevOps, GitHub Actions, CI/CD, Problem Solving, Technical Documentation, Gradle, Java, GitHub


Vipps AS, Business Experience Link to heading

Period: November 2018–December 2020

The team owned a mix of B2B applications. Main goals: reduce technical debt, automate merchant onboarding (less manual case handling), and keep critical services running. This work cleared the path for Vipps to grow its business customer base.

Systems Developer Link to heading

Built Go microservices to automate what had been manual case handling in the Vipps merchant portal. Led the effort to sunset legacy services.

Frontend Developer Link to heading

Christian helped set up the Vipps Design System (React) and established it as an organizational standard.

Technical Advisor Link to heading

Recruited and trained Go developers. Owned code quality standards and ran workshops on best practices.

Python Developer Link to heading

Christian worked on migrating vipps.no from Django CMS to Wagtail.

Technologies: Backend, Frontend, System Design, Systems Development, Architecture, Go, Azure DevOps, Microservices, REST, gRPC, Python, JavaScript, TypeScript, React.js, Docker, Docker Compose, Kubernetes, CI/CD, Splunk, Grafana, SQL, Azure SQL, SQL Server, Microsoft SQL, Postgres, Azure Cosmos DB, Agile, GitHub, GitHub Actions, Problem Solving, Technical Leadership, OpenID, OAuth 2.0, Development, C#, Kafka, Redis, Azure Container Registry, Azure Service Bus, Azure Web Services, APIM, Azure App Gateway, Technical Documentation, CSS, Redux, Node.js, Webpack


NEP Group, Inc., Mediabank Link to heading

Period: May 2018–October 2018

Mediabank is a digital asset management system used by major Norwegian TV channels and for events like the Olympics. The platform was built on PHP with a Backbone.js frontend.

The modernization effort: migrate the frontend to React, extract backend functionality into Go and Python microservices.

Lead Frontend Developer Link to heading

Led the Backbone-to-React migration. Built adapters so React components could run inside Backbone and vice versa—this let us migrate incrementally instead of a risky big-bang rewrite. Multiple components could be worked on in parallel.

Also ran React workshops and wrote the team’s style guides.

Backend Developer Link to heading

Extracted functionality from the PHP monolith into Go and Python microservices. Handled integration with existing systems during the transition.

Technologies: React.js, PHP, Google Cloud Platform, Go, Backbone.js, Laravel, GitHub, Traefik, CSS, Python, Redis, Redux, Architecture, Microservices, JavaScript, TypeScript


07 Interaktiv AS Link to heading

Period: April 2017–April 2018

07 Interaktiv built custom websites and CMS solutions for publishers. Stack was mostly PHP-based: WordPress, Drupal, Joomla.

Full Stack Developer Link to heading

Christian developed and maintained a wide range of websites, plus a couple of hybrid apps and APIs. The stack on older solutions was often based on custom themes for the customer’s CMS, with CSS/JS customizations and custom plugins and modules in PHP, while new solutions used the customer’s existing CMS only as an API for custom Single Page Applications in Angular, Vue, or React.

Systems Developer Link to heading

Since there was considerable duplicate work in maintaining different Single Page Applications for different frameworks (one for WordPress, one for Drupal, etc.), Christian started work on creating one master frontend in Vue.js that would be CMS-agnostic, connected to an “adapter API” (Laravel/PHP) that transformed and standardized data from various CMS systems into a simple JSON format the frontend could use.

This solution followed the principle of separation of concerns and made it possible to support an unlimited number of new CMS systems in the future without changing anything in the frontend.

Christian also created a Go service that used a headless Chrome browser to pre-render all websites so meta tags and images were available for crawlers and social media sharing.

Technologies: Go, CSS, JavaScript, Angular, AngularJS, Vue.js, React.js, PHP, WordPress, Drupal, Joomla, Laravel, Docker, Vagrant, Capistrano, Ruby, FuseTools, Objective-C, Swift, Android, GitHub


DC Apps AS (Startup) Link to heading

Period: May 2013–March 2017

DC Apps started as a side project and grew into a full-time company. Christian was one of two co-founders (the “C” in DC Apps).

Products included a drug detection training app for the Norwegian Narcotics Police Association (required for their courses), and a chess tournament app that had collaborations with chess.com and GM Simen Agdestein (Magnus Carlsen’s former coach).

Co-founder and Board Chair Link to heading

App Developer Link to heading

  • Developed drug detection test (app) for the Norwegian Narcotics Police Association
  • Developed several chess tournament tools (web and app), in collaboration with chess.com and Simen Agdestein, among others
  • Developed and sold apps to TV channels and festivals/events

The apps were primarily hybrid apps, with some native functionality as needed.

Technologies: Intel App Framework, Angular, CSS, JavaScript, TypeScript, Objective-C, iOS, React Native, Gulp, Grunt, Node.js, Webpack, PHP, Elm, Google Firebase, SASS, Express.js, FuseTools, Apache Cordova, jQuery, jQuery Mobile, Go


Presentations Link to heading

  • Lovdata: Extensible Records in Elm – Type-Safe Updates and Testing
  • Lovdata: Server-Sent Events with Kotlin Flows – Modern Real-Time Communication
  • Consulting: Clean Architecture in React Native – Analysis and Migration Planning
  • Lovdata: Automated E2E Testing of Frontend Performance
  • Vipps: Automated Screenshot Testing and Unit Testing Done Right
  • Vipps: Getting Started with Jetpack Compose
  • Vipps: Concurrency in Go – The Good, The Bad, The Ugly
  • NEP: Thinking in React: “Composition over Inheritance”
  • NEP: React Components in Backbone, and Backbone Components in React

References Link to heading

Robin Heggelund Hansen – Colleague at Lovdata, author of the Gren programming language:

“Christian is a passionate developer. He’s passionate about technology. He’s passionate about quality software. And he’s passionate in sharing his passion with others. Working with Christian has been a joy, and I can only hope that I get the chance to work with him again in the future.”

Rui Yu – Former colleague at Vipps MobilePay & 07 Interaktiv:

“Christian is a versatile and highly talented software developer who easily stands out from the crowd. Having worked with him in two different teams and companies now, one of the decidedly most impressive aspects about him is how extremely quickly and easily he picks up new technologies. At both places his competence, ability to work independently, great humour, spirit, and team-player skills made him the backbone and go-to person in the team. Without a doubt a rare catch for any team, and I expect to see him in a leading tech role in the near future.” — January 28, 2021

Rune Garborg – CEO at Vipps MobilePay:

“Thank you so much for all your contributions in Vipps. We had the privilege to have you as colleague from the very beginning of our history as a separate company. You have truly been a crucial resource in many different areas in Vipps from merchant experience to loyalty and a lot more. Thank you so much for being an important part of where Vipps is today!” — August 31, 2024

Eigil Skjæveland – Former colleague at Vipps MobilePay:

“Christian is a connoisseur of the command-line and a hacker at heart, with a strong interest in technical details that made a real difference in our projects. He’s easy to work with and brings a positive vibe to the team. As they say on eBay, A++++, would recommend.” — November 6, 2024

Tino Hakim Lazreg – Former colleague at Vipps MobilePay:

“Christian is a skilled developer, who is superb at delivering high quality at great speed. He is very enthusiastic about the work, and cared deeply about the product that we were building.” — October 30, 2024

Rasmus Rimestad – Former colleague at 07 Interaktiv:

“Christian is a dedicated developer constantly looking for ways to increase his skills and improve his code quality. He is a very valuable asset at 07 and the #1 person I ask about frontend related things. He is also a sympathetic person with whom it is a pleasure to cooperate. Humble, yet never afraid to speak his mind and bring new ideas to the table.” — January 9, 2018

Giedrius Ladyga – Former colleague at NEP & 07 Interaktiv:

“Christian is one of the most passionate developers I have known. He’s always updated with the newest technology trends which he is using right away. He is also very hard working and providing help for the team members when needed, which makes him even better developer. He was also a great and interesting colleague with a great sense of humor. It was a great pleasure working with him.” — December 29, 2017

Jon Kjennbakken – Former colleague at Vipps MobilePay:

“I collaborated with Christian on several projects and found him to be a skilled and pragmatic developer, consistently delivering high-quality work with speed while being easy to work with.” — October 24, 2024

Jo Inge Hjelle Bitubekk – Former colleague at Vipps MobilePay:

“I’ve worked with Christian over many years and I’m impressed how he consistently delivers quick and efficient features/updates to our products. He has shown great domain knowledge and has a good focus on user needs.” — October 31, 2024


Skills Link to heading

Primary Focus Link to heading

Elm, Functional Programming, Kotlin, Android (Jetpack Compose), Go, TypeScript, React

Backend & Infrastructure Link to heading

.NET/C#, Spring Boot, Ktor, F#, Python, Azure, Kubernetes, Docker, CI/CD (GitHub Actions, Azure DevOps)

Architecture & Practices Link to heading

Clean Architecture, Microservices, System Design, DevOps, REST, gRPC, OAuth 2.0/OpenID

Databases Link to heading

Postgres, SQL Server, Azure Cosmos DB, Redis

Other Link to heading

Java, PHP, Node.js, Vue.js, Angular, Swift/iOS


Contact Link to heading