Photo by Robin Canfield on Unsplash


As promised in my last post, it’s time to use our family tree DSL to spoil the plot of Netflix’s Dark series! 😈

To quickly recap, we have a small but functional (my puns are always intended) DSL for building a family tree in Kotlin:

The Dark family trees in code

The family trees are of course the focus of the series as they are revealed to us piecemeal; episode by episode, season by season. After watching it, I was overwhelmed with all the details and quickly gave up trying to fit it all together. …

Photo by Eilis Garvey on Unsplash

Why build a DSL?

Ever since first getting into Kotlin, I’ve known it has a few things that makes building domain-specific languages (DSLs) easier. I’ve read the mind-expanding type-safe builders guide for building a DSL for HTML, but until recently I hadn’t found a good use case for building a DSL of my own.

My team at Zalando maintains server-driven UI libraries for Android & iOS that power completely dynamic screens such as home, brand homes, collections, and various landing pages in the Zalando fashion store apps. Often, we need to build mock responses during development for new features that don’t have a backend…

Photo by Sherman Yang on Unsplash

As previously outlined in my talk at Mobius Conference in Saint Petersburg last year, our team at Zalando is building a server-driven UI platform we call AppCraft. AppCraft allows us to add or update screens in our app with only server changes instead of the normal app release constrained way of doing things.

On the client side, we are building every screen the same way: fetch layout & data from the server, parse it, and render it.

Since the API response time is mostly out of our control, this leaves:

  1. JSON parsing
  2. Building the UI component tree (we currently use…


In Part I, we explored reasons you might want to use React Native and some of the challenges I encountered attempting to integrate it into an existing app. My goal was not to scare you away from it, but rather to demonstrate that it is a large dependency and may limit your ability to upgrade other libraries. In Part II, we’ll examine the development experience, cross platform code sharing, and dynamic updates. We’ll finish with an example showing how you can combine a React Native UI with existing native code to get the best of both worlds.

Developing with React Native

Assuming you still…


When new technologies start gaining momentum in the Android community, the pragmatic (or lazy) among us eventually have to ask ourselves, “Is it worth it?” After the initial arrival and departure of the hype train, some of these become trusted tools we use in almost every app. Think RxJava and Dagger.

React Native may be on its way to earning a place in the same club. Once we get past the fact that JavaScript on Android and HTML in JavaScript seem pretty damn weird at first, there’s a lot to like. Seeing your changes on a device almost instantly is…

Andy Dyer

Senior Software Engineer @ Zalando, ProAndroidDev editor

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store