Product & Tech Blog


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?

Your Life in Classifieds: Predicting Age from Marketplace Data

Your age can be accurately predicted from your behavior on classified sites. Here’s how…

Experimental Apps For Internal Users

How can the development of a mobile app prototype provide insights into user workflows and scenarios? Can it make those users rethink how mobile devices support them?

Javazone 2016 – more than just Java

Blog post header

This is the second year I’m attending Javazone in Oslo – a large IT-conference of the highest international standard, by and for the Java community. Although the Java technology is at the core, the topics range from front-end to back-end and infrastructure, security, architecture, patterns and processes. In short, you