Product & Tech Blog


Working to ensure user value, innovation and performance

We all (most of us anyways) want to succeed – we go to work aiming to create results. Most of us do our best, and we certainly do many things. However, perhaps we should ask “are we doing the right things?” When training leaders, product managers and employees in FINN to

Using concept sketches to foster communication

Improve communication and teamwork with this fun, no-pressure exercise Getting organizations to collaborate on design in a healthy way can be difficult. The user experience (UX) is the only part of any product that everyone will see and interact with, and many will have strong opinions on what it should

PulseMonitor – data quality as a first class citizen

Using awareness to ensure good data quality.

Optionals in Java 8 and how to use them

A person writing on a computer

Since the release of Java 8, NullPointerExceptions have been pretty common. Before Java 8, your code was probably full of “if statements” to check if a variable was null. Still, it was impossible to catch every NullPointerException out there. With Java 8, Oracle attempted to solve this issue. They didn’t

Price your car with data

What’s the most important thing for sellers on a marketplace? Setting a good price. We take a look at the dynamics of pricing and how Schibsted can help users set prices for cars.

“Always On” with Company Profiles,

Whether they have a position to fill or not, businesses are always visible on FINN Jobs, thanks to our new company profiles. These are “always on”, enabling them to build brand awareness and attract relevant candidates. For those same candidates, company profiles help satisfy a basic marketplace need : find

Measuring Lostness

Everyone wants a useful metric for measuring how effective your product is (or at least I do). The lostness metric is just the thing: it can tell you how lost users are when they use your product.

Getting into business with Prometheus

FINN has moved towards an architecture of microservices and uses a number of technologies – Prometheus included – to identify and fix service outages.

Two-way data binding without RxJava

A computer on a desk

A couple of weeks ago, this article by Radosław Piekarz got some traction on /r/androiddev. While I am a fan of RxJava myself we use it extensively in our apps at, I feel this example was not the best use case for it. As others point out in the comment field, this

SwiftFormat (Part 3 of 3)

In part 2 I discussed in detail how SwiftFormat’s parser and formatting rules are implemented. Swift is a very complex language, and although it’s syntax is fairly regular, there are a lot of edge cases. So how is it possible to write and maintain the rules that handle all of

SwiftFormat (Part 2 of 3)

In part 1 I talked about recursive descent parsers, and how they can be used to process complex structured text such as a programming language. Let’s now take a look at how SwiftFormat’s parser is implemented.

SwiftFormat (Part 1 of 3)

SwiftFormat solves the tabs vs spaces argument forever! OK, maybe not, but it might help Swift developers to get along. So what is SwiftFormat? Why did I make it? And how does it work?