Skip to main content


iOS: LLVM based mutation testing to check your unit test reliability, Android and Kotlin: JVM based mutation testing


Several years ago I discovered very powerful technique - Mutation Testing. Since then I was (and still am) dreaming to have a tool which will do the job for languages like C, Objective-C and C++.

Now I have confidence in that it can be implemented using LLVM.

Outline for this article:

overview of mutation testingmutation testing system - proof of conceptthoughts on potential implementation of MT system using LLVM
Mutation testing system built on top of LLVM on GitHub.
mull-project / mull


PIT is a state of the art mutation testing system, providing gold standard test coverage for Java and the jvm. It's fast, scalable and integrates with modern test and build tooling.

PIT Mutation Testing
Recent posts

How to keep apps and a microservice based backend in sync? Read about Pact and consumer-driven-contracts

7 Reasons to Choose Consumer-Driven Contract Tests Over End-to-End Tests

In a distributed system, testing the successful integration between
distributed services is essential for ensuring that the services won’t fail in production just because they’re not speaking the same language. This article discusses three approaches to implementing integration tests between distributed services and shows the advantages of Consumer-Driven Contract tests.

Testing a Spring Boot REST API against a Consumer-Driven Contract with Pact

Consumer-driven contract tests are a technique to test integration points between API providers and API consumers without the hassle of end-to-end tests. A common use case for consumer-driven contract tests is testing interfaces between services in a microservice architecture. In the Java ecosystem, Spring Boot is a widely used technology for implementing microservices. Pact is a framework that facilitates consumer-driven contract tests. So let’s have a look…

Team building: "Meme-Your-Colleague"

Lately we were hiring a lot of developers and had to integrate them in our team. So we decided to do an infotainment team event, targeting both: getting to know each other on a personal level and learning about the business and technical state, challenges and visions.

Usually a meeting like this starts with everybody telling a few words about themselves... one... after... each... other... and after third speaker latest everybody gets bored.
So we came up with the "Meme-Your-Colleague" game: Build teams of two personsGive them half an hour to get to know each otherBoth have to assemble a five minute presentation of five slides of each otherEach slide consists of exactly one meme telling a (fun) fact of that person You may want to use a meme generator and a presentation tool like Keynote or PowerPoint.
It ended up with the whole team having a lot of fun: a perfect ice breaker! Give it a shot!

Deeplinks in apps

Deeplinks in apps are essential to offer a seamless, interleaved experience of the app with

E-MailsWebsitesPush messagesMessengers (iMessage, Whatsapp, ...) Supporting external deeplinks prove very useful for OnboardingMarketingSalesRe-activation of users ...that all can independently work on their subjects without having to be supported by the developers (after they created the deeplinks!).
Checkout: AirBnB DeepLinkDispatch (Android, 2,862 stars!)joeldev/JLRoutes (iOS, 4,300 stars!)dudego/DeepLinkHandler (iOS, 28 stars...)Google Firebase Dynamic Links



The serverless application framework. Over 21,000 GitHub stars and counting.

How we migrated our startup to serverless

The team decided to ditch all of our EC2 containers and instances in favor of using AWS Lambda within a serverless architecture. To help us orchestrate all of our AWS Lambda functions, we selected the Serverless Framework.

A cloud guru

iOS and Android native App Install Banner

Android Native App install banners are similar to Web app install banners, but instead of adding to the home screen, they will let the user install your native app without leaving your site.

Developer Google
iOS Promoting Apps with Smart App Banners: Safari has a new Smart App Banner feature in iOS 6 and later that provides a standardized method of promoting apps on the App Store from a website.

Developer Apple

AWS Lambda lifecycle and in-memory caching

The ephemeral nature of AWS Lambda functions might have you believe that techniques like in-memory caching cannot be utilized like you would with a conventional server, but that’s not the case! Let’s check out why.

TJ Holowaychuk on

Even though you can't fully rely on them, our experimentation has shown that global variables can be used for some opportunistic caching. Amazon Lambda launches a number of computer instances to run function invocations, and keeps them alive for an unspecified period of time, which may be several hours. During this time, Lambda functions can access cached data previously stored in global variables. When a function invocation happens to run on a fresh instance, data has to be fetched from a more persistent source again.

Amazon AWS Lambda data caching solutions compared