Milos Marinkovic

Milos Marinkovic

Leading Teams @ Delivery Hero

Berlin, Germany

I like to share ideas through presentations and writing. If you see something related to technology, I'll probably like it.
I am a software enthusiast, product developer, technical leader, speaker, event organizer, and avid skier.

My main interests are organizations, apps, cloud, electronics and smart devices. I also often read or listen about innovation, computer science, and organizational management.

In my spare time, I (try to) travel, speak at conferences, coach, and work on open-source projects.

Area of Expertise

  • Information & Communications Technology


  • Software Architecture
  • Kotlin
  • Java
  • Product
  • Engineering
  • Business Leadership
  • Continuous Deployment
  • Project Management

How we deliver software for a million vendors

At Delivery Hero, we are committed to always aiming higher. With that ambition, we work hard to help millions of businesses reach their customers around the world.

When we started hyper-scaling, our tech organizations had to follow suit to support business growth. Today, we ship software products to our vendors on a weekly basis, minimizing the risk of something breaking.

In this session, I'll try to focus on:

- How we manage to provide the same, consistent experience to all of our vendors;
- How we minimize problems and downtime;
- How we monitor and actively look for problems; and
- How most of our parner businesses are always running the latest versions of our client software.

Coroutines vs. ReactiveX: Handling errors

Whether you’re coming from the Android world or not, you’ve probably heard about Kotlin (the programming language) and its asynchronous programming concept called Coroutines. It’s a neat concept that helps you create execution blocks similar to light-weight threads, while at the same time allowing you to write your asynchronous code in a synchronous fashion.

On the other hand, many of us got really (really) used to Reactive Extensions in many languages, and we prefer to go down this road. With ReactiveX, you can chain your asynchronous blocks in future-like structures, and easily control threading around them.

Well, you know how it usually goes - you read about something (aha! what is this coroutines thing)… maybe you see a couple of talks on the topic, maybe you get interested. After you try it out and decide to use it in a real project, you start typing your code… and boom! Your program crashes. You then go to StackOverflow to check for answers to your problem, and surprise: you’re not handling errors properly. You copy-paste the solution without any edits or tests and you’re ready for release.

Hopefully this is not you. You want to check everything before using a new language or library, you want to fully understand the consequences of switching over to a different solution from the one you currently have. There are some quirks in every approach, sure, but do you know all of the corner cases?

That’s why we need to have this talk. Let’s go together through the most interesting examples of how we can get (and handle) errors with ReactiveX and Coroutines.

Testing Android Apps in 2020

We’ve known for a long time how to test Java apps and services, but when Android came out, resources were scarce, I’ll even say non-existent. Fortunately, the Android community has grown quite quickly, and we’ve developed various new tools, frameworks, libraries and services to help with app (or library) testing. Many of these utilities were targeted to Java, and have now become compatible with Android — we can now easily run app/library tests on development machines, without having to install the build onto a mobile device.

As time went by, the most popular tools like Mockito, Hamcrest, Espresso and others became our standard for Android app testing, and we’ve adopted them as “defaults”. They have grown over time with many new versions released. We also popularized some new architecture approaches — like MVVM and MVI — and dependency management approaches — like Koin, Kodein and Dagger — all of which require a new set of tools for testing.

The question for the year 2020 is: “Where do I start with Android testing?”

During this session, I’ll try to go through what we need to do in our apps/libraries to get the tests running, how the most popular Android testing tools work in 2020, which tools and services we can use to automate testing, and finally show you some caveats that come with Kotlin and new architecture approaches I mentioned before.

This can be either a talk or a workshop, both work for me as I have the resources ready.

DevFest Pisa 2020 Sessionize Event

April 2020 Pisa, Italy

droidcon Greece Sessionize Event

September 2019 Irákleion, Greece

Milos Marinkovic

Leading Teams @ Delivery Hero

Berlin, Germany

Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.

Jump to top