Skip to content
michaelhv

Jump to

Hi, I'm Michael. Software engineer, teacher at heart,
proud Haugesunder.

I build backends and the tools around them, and I like helping other developers grow. When I'm not at a keyboard, I'm usually on the water.

  • Michael Herland Valen, at Telenor since 2022.
  • From Haugesund, based in Bærum.
  • Kotlin by day, Rust by night. Deleting legacy, on purpose.
Michael on the west coast at sunset, with the sea behind him
On the west coast, at sunset

Things I built

If something bugs me long enough, I build a fix. Then I use it every day.

  • Released, open source
  • Coming soon
  1. Fernly

    Coming soon · iPhone & Android

    A private medication and health journal. No account, no server, no analytics. Your records live in an encrypted database on your phone, and you decide what leaves it.

    Because health notes aren't ordinary app data, even when most apps treat them that way.

    Flutter, Dart, local-first, encrypted

    Fernly app screenshot of the Today screen: a greeting, the next dose with a Taken button, a strip of the week and the entries already done today.
    Today
    Fernly app screenshot of the Treatment screen: active medication plans, each with a stock bar and an estimate of the days left.
    Treatment
    Fernly app screenshot of Your grove: illustrated woodland friends, such as Nøtt the squirrel and a snail, that move in as you care for yourself.
    Your grove
    Nøtt, a smiling red squirrel with a fern leaf, Fernly's mascot

    Hi, I'm Nøtt. I remind you. I never judge.

  2. Ward

    Open source · Rust CLI

    GitHub repository settings as code. Describe what you want in a ward.toml, then plan, apply and verify it across many repositories at once. Because clicking through the same settings page a hundred times is no way to live.

    I built it for a team with many repositories and no admin rights that wanted every repo on the same GitHub standards, without click-ops. So I took the Terraform idea, config-driven desired state, to repository settings.

    • brew install OriginalMHV/tap/ward-cli
    • ward import OWNER/REPOwrite ward.toml from an existing repository
    • ward planshow what differs from GitHub, change nothing
    • ward applyapply one category at a time, then verify it
    • ward driftfor CI: exits 0 in sync, 1 drift, 2 could not run

    Declarative GitHub repository management. Plan, apply, verify.

  3. minimenta

    Rust · TUI

    An interactive disk usage analyzer for the terminal. It looks and feels like ncdu, scans faster, and lets you select many items and move them to the Trash in one step. Find what fills your disk, and let it go.

    The name is Latin: minuere impedimenta, reduce the baggage. Impedimenta was the baggage train of a Roman army. Install with brew install OriginalMHV/tap/minimenta and run mm.

Smaller, safer, easier

At Telenor, since 2022

A better engineer always aims to simplify and remove code, especially now. AI is great, but it has its limits, and it's easy to be blind to how much legacy you create with it.

Smaller

Less to run, less to break.

  1. Fewer services

    Retired old applications and repositories. Fewer services means fewer pipelines, secrets, alerts and late-night surprises.

  2. One less vendor

    Wrote most of a new integration that replaced a paid data vendor with open public data.

  3. Old systems, new homes

    Moved services from legacy infrastructure to Kubernetes, and helped lead the move from Atlassian to GitHub.

Safer

Fewer ways for things to go wrong.

  1. Real data out of test

    When real customer data had to leave the test environments, the fear was simple: no data to test end to end. I co-built a synthetic test data platform, so teams could keep testing. Privacy is a design requirement, not a checkbox.

  2. Migrations that land

    Built the integration layer for an email platform migration, and have driven framework and runtime upgrades across many services since, most recently to Spring Boot 4 and Java 25. The scariest one so far had an app so flaky it would stop if you looked at it wrong.

  3. Safe by default

    Rolled out shared CI/CD, security scanning and repository standards, so the right choice is also the easy one.

Easier

I like building the rails other people run on.

  1. An onboarding site for developers

    I created our developer onboarding site: the docs I wish existed when I started. New developers start there now. I still maintain it, and newcomers add to it too.

  2. A dashboard other teams adopted

    I built a repository health dashboard to track my own upgrade work: security alerts, versions and open pull requests. Other teams saw it and started using it.

  3. AI as a team tool

    I build shared AI skills that know our standards, so the whole team benefits, not just me. I also co-created an interview where candidates use AI to modernize a legacy service.

At work
Kotlin, Java, Spring Boot, PostgreSQL, Kafka, Kubernetes, Helm, ArgoCD, Azure, GitHub Actions
After hours
Rust, Flutter

The part I like most

People. I genuinely like helping others grow.

Before Telenor I was a teaching assistant at the University of Agder, in programming, databases, networking and system development. It never really left me.

Today I mentor juniors inside and outside my team, help decide how we interview engineers, and give talks on AI and developer tools to groups of 50+ people.

Mostly, I try to be someone you can ask anything without feeling stupid.

The route, roughly

From the west coast, via Kristiansand, to Fornebu.

1 2 3 HAUGESUND home port, until 2019 59.41° N 5.27° E KRISTIANSAND 2019 to 2022 58.15° N 8.00° E FORNEBU 2022 to now 59.90° N 10.62° E N
1 2 3 HAUGESUND home port, until 2019 KRISTIANSAND 2019 to 2022 FORNEBU 2022 to now
  1. Haugesund

    Until 2019

    Home port. Where it started

    • 2014Posten. Customer service, address changes and sorting mail.
    • 2015Vardafjell upper secondary. Media and communication.
    • 2016Haugesunds Avis. Camera operator on live football broadcasts, FK Haugesund matches.
  2. Kristiansand

    2019 to 2022

    Learning, then teaching

    • 2019University of Agder. BSc in IT and information systems.
    • 2021Teaching assistant in seven courses, from programming to databases and networking.
    • 2021Norkart and Kristiansand kommune. User testing for a chatbot that talks with citizens.
    • 2022Bachelor project. The Fished.no mobile app with Oxidane Venture, including CI/CD for iOS and Android.
  3. Fornebu

    2022 to now

    Telenor

    • 2022Software developer. Platform migrations, integration work and synthetic test data.
    • 2024Software engineer. Platform simplification, security, developer experience and mentoring.

Distances, as the crow flies

Haugesund to Kristiansand
211 km, 114 nm
Kristiansand to Fornebu
246 km, 133 nm
Haugesund to Fornebu
306 km, 165 nm

Home port light

The coast is simplified. Not for navigation.

Off the keyboard

You'll find me on the sea in a kayak, holding a fishing rod, or cooking something far too ambitious for a Tuesday. Best catch so far: a fish smaller than the lure, and smaller than my pinky.

Proud Haugesunder, living in Bærum. If you haven't heard of Haugesund yet, that's about to change.

Haugesund North Sea STAVANGER
Home port: Haugesund, 59.41° N 5.27° E

Haugesund, a quick briefing

Weather note, Haugesund

–° Checking the sky…

Haugesund right now. Weather data by Open-Meteo.com

  • Harald Fairhair, the first king of Norway, is said to rest at Haraldshaugen. So Norway more or less started here.
  • Marilyn Monroe's father was most likely from Haugesund. There's a statue on the quay to prove we mean it.
  • Herring town. Home of Sildajazz and the Amanda film awards.
  • Summer means Vibrandsøy: a five-minute boat ride from the quay, with shallow beaches for a swim. And on Midsummer Eve, a huge bonfire.
  • FK Haugesund. I used to film their matches for live broadcast.

Herring town. Try it.

Say hi

Always up for a good conversation about backend, platforms or developer experience. LinkedIn is the best way to reach me, and the code lives on GitHub.

LinkedIn GitHub

It's in Bærum