Rui Peres
Lead iOS Engineer at Babylon Health, UK

iOS Architectural Approaches

All three approaches are being used at babylon health with great success. None of them are tied up to a specific programming paradigm (e.g. Functional Reactive Programming), so you can easily make this work, independently of the approach you use in your own apps. Finally, this talk is not only for iOS devs: these ideas can easily be extended and applied to Android apps as well.

In this talk I will present three approaches for common problems in iOS Development:

  1. Handling Application Lifecycle.
  2. Defining UI Flows.
  3. Abstracting Analytics.

The goal of the talk, is for the audience to be able to pick up quick tips and apply them on their day to day development, by leveraging Swift's awesome features!

About speaker

Rui has been working as an iOS developer since 2010. Lately, at babylon health, he leads a team of 10 iOS developers, leaving less time to code, but with a new set of challenges. He's also an OSS and FRP evangelist and a core member of ReactiveCocoa and ReactiveSwift. He also spends a considerable amount of time exploring new programming languages, but not doing anything useful with them.
Vijaya Prakash Kandel
iOS Software Engineer at Zalando, Germany

Monadic Computation in Swift. Why?

NSURLSession completion handler has 3 optional types giving us 8 permutations when all we care is either it failed or succeeded. Error handling is still neglected for the fact that Swift does not provide a construct that abstracts the rudimentary details of switch and conditionals. Most Objects and their associated methods are not composable.

Monadic Computation comes from Functional Programming which helps write composable functions while preserving failure context/side effects and provide better abstraction. Swift although not a functional programming language, can express monadic computations elegantly and can solve all the above-mentioned problems.

In the talk, I will show why do we need Monadic Computations and how we can implement in Swift. I will share real use case of monadic computations and how our team at Zalando is using this concept. There will be a short live coding to demonstrate that Monadic Computation can be expressed elegantly in Swift.

About speaker

Vijaya (BJ) is a passionate iOS Software Engineer working at Zalando SE. He does Swift at day, Haskell at evening. He believes functional programming is the way to move ahead. He writes blogs and articles on various ways to write effective programs. He talks at meetups and conduct workshop on new ideas.
Enrique López Mañas
Google Developer Expert (GDE), Germany

TensorFlow for Mobile Platforms

There is a lot of Hype with ML and AI lately, and TensorFlow is the framework of choice from Google. But as a Mobile Developer you might have asked yourself, how can I benefit from it? In this talk, you will learn your first steps into the fascinating ML world for mobile.

During this talk you will learn how to set up TensorFlow for Android, and how to perform some initial operations with it:

  • Classifying example
  • Detection example
  • Analyzing example


About speaker

Enrique López Mañas is a Google Developer Expert and independent IT consultant. He has been working with mobile technologies and learning from them since 2007. He is an avid contributor to the open source community and a FLOSS (Free Libre Open Source Software) kind of guy, being among the top 10 open source Java contributors in Germany. He is a part of the Google LaunchPad accelerator, where he participates in Google global initiatives to influence hundreds of the best startups from all around the globe. He is also a big data and machine learning aficionado.

In his free time he rides his bike, takes pictures, and travels until exhaustion. He also writes literature and enjoys all kinds of arts. He likes to write about himself in third person. You can follow him on Twitter (@eenriquelopez) to stay updated on his latest movements.

Andy Dyer
Android Developer at Zalando, Germany.

React Native: Is It Worth It?

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 a love-at-first-sight kind of thing. And rethinking your app architecture as a series of actions, state changes, and UI render phases can eliminate a surprising number of silly bugs.

A dive into every new technology starts with the flashy “type these commands and run your ‘Hello World’ app” tutorial. This is not that kind of talk. Instead, I’ll recap my experience digging into React Native for real world use. From integrating RN code into an existing Java/Kotlin app to dealing with the kind of problems they never mention in the README, I’ll cover what you need to know to decide if React Native is really worth your time. 

About speaker

Andy recently moved to Berlin from Houston, Texas to join the Android team at Zalando. An Android developer since Froyo, he’s currently focused on learning Kotlin and React Native. When not writing code, he can be found listening to records, practicing his German, and proselytizing the merits of craft beer & meticulously prepared coffee.
Enrique López Mañas
Google Developer Expert (GDE), Germany

From permanent to contract

Enrique Lopez Manas, GDE and a transitioner among all those categories, will share his experience in this world and give you some tips if you are opting for changing your career. You will learn about the bright and not so bright side of contracting, the perks you can expect in each category, and especially being able to fire questions to a person that has been in the transition among both fields.

What are the differences between being permanent and contract? What are the perks of each position? How can you make a transition between them? Which fits me better? If you ever asked those questions to yourself, you will find some answers in this talk. 

About speaker

Enrique López Mañas is a Google Developer Expert and independent IT consultant. He has been working with mobile technologies and learning from them since 2007. He is an avid contributor to the open source community and a FLOSS (Free Libre Open Source Software) kind of guy, being among the top 10 open source Java contributors in Germany. He is a part of the Google LaunchPad accelerator, where he participates in Google global initiatives to influence hundreds of the best startups from all around the globe. He is also a big data and machine learning aficionado.

In his free time he rides his bike, takes pictures, and travels until exhaustion. He also writes literature and enjoys all kinds of arts. He likes to write about himself in third person. You can follow him on Twitter (@eenriquelopez) to stay updated on his latest movements.

David Rodrigues
Senior iOS Engineer at Babylon Health, UK

FormsKit: reactive forms driven by state

State can be a tricky thing in every system specially when’s manipulated in different places, causes some side-effects, … On mobile apps, it can be especially challenging when we have highly dynamic user interfaces driven by some state(s) and a great example of that are forms where is frequent to see some collapsable rows or entire sections being inserted, removed or even both. Manually managing all of that can be quite complex and most of the times ends up not being sufficiently generic to be reused by every form which increases the effort of not only developing but also maintaining each form within an app. And if that was not enough, there's also the question of reading and understanding precisely the structure of a single form which most of the times are imperative and composed by many components, e.g. delegates, data sources, ..., making it even more hard to maintain and modify. FormsKit born as a need to manage a reasonable number of forms in a declarative and composable way through a descriptive state.

FormsKit follows a React-based approach to render and manage a form through a virtual representation which is completely driven by any change in a single core state. This enables deriving an interface for a very specific state instead of patching it manually which requires knowledge of the current state of the form, which can actually be many combinations, to then determine the correspondent transition to reflect the new state. FRP plays an essential role as the base to track any change in the core state and consequently triggering a new form's representation plus notify those changes as a stream of values. 

Despite the focus in FormsKit framework, the main goal is to demonstrate how we should change our way of thinking to derive interfaces, and even other states, through a single state instead of doing the other way around, avoiding manual and localised changes which are not easy to understand, maintain and finally test.

About speaker

David has been working in iOS apps (and sometimes frameworks) in the past 5 years and dived deeply in Swift and FRP in the past 2.5 years being a strong evangelist of both since then. He strongly believes in open source and is also passionate about backend systems. He enjoys not only coding but also teach and discuss different concepts and ideas.
James Thomas
Developer Advocate at IBM, UK

Serverless Swift with Apache OpenWhisk

Do you want to build backend applications using Swift but don't want to manage computing infrastructure to run those applications in the cloud? Enter serverless cloud platforms… 

These services allow developers to push code, rather than VMs, into the cloud. The platforms allow you to connect external event sources like API requests or message queues to functions in your code. As events occur, your code is instantiated and executed to process each request. Developers are only billed for the milliseconds needed to process each request.

In this session, developers will learn how to build Swift microservices using modern “serverless” cloud platforms. We’ll look at common challenges (and solutions) to building applications using “serverless” stacks. Exploring emerging “serverless” design patterns will give developers the knowledge to build application architectures using these new platforms.

My talk will be split into three sections:

  1. An introduction as the background of serverless computing platforms. What are they, why would you use them and what benefits do they bring over other cloud technologies likes IaaS, Containers or Paas. 
  2. The middle is then a "live coding" session using one of these platforms to build a real Swift backend application (serverless apis to create a slackbot) to show developers the techniques and skills for building serverless applications through a real world demonstration. I'll build the application, deploy to the cloud and get it running in under twenty minutes from scratch.
  3. Finally, I finish looking at the challenges of serverless development today. What are the difficulties? Monitoring, debugging, etc.... and introduce some workarounds or solutions. 


About speaker

James is a “Developer Advocate” for IBM, helping developers build scalable applications on IBM's cloud platform. Having accepted a summer-long internship with IBM as “something to do” before starting his post-graduate degree, James is still here eight years later. Managing to find his way into the “Emerging Technologies” division, James has been able to work on everything from the largest retail banking site in Europe, been a leading open-source developer for a JavaScript toolkit before working on the first commercial system for IBM Watson as the UI Technical Lead.
Danny Preussler
Android Lead at Viacom, Google Developer Expert (GDE), Germany

MVVM with Databinding and Google's new ViewModel

At Google I/O we got the Android architecture components. One of its most interesting concepts in there is the new ViewModel.

This sounds like a perfect fit into the MVVM (Model View ViewModel) architecture. What’s the idea of MVVM? How does it fit into the new architecture components? And what's the role of Android databinding here?

Let’s look into those concepts and what Google adds to it. Not only from high level, let’s look at the actual code!

About speaker

Danny is in charge of Android development at Viacom in Berlin. Before that he worked for companies like Groupon, eBay and Alcatel. His mobile career started long before any iPhone with Java ME and Blackberry applications. Danny writes and talks about mobile development and testing regularly and is a Google Developer expert for Android.
Oleksandr Yefremov
Mobile Architect at glomex GmbH, Germany

Building framework with shared code on Android and iOS using React Native

Everybody heard that with React Native you can build mobile apps and share most of the code. But not everybody knows that this is also true for building frameworks (even with no UI), i.e. self-contained libraries that can be integrated into another library or app, whether it is React Native app or not. 
I will show when and why this might be a perfect case for you (and when not a good idea at all). How in the long term you can save time, code and roll out new features faster. What must be tweaked in "react-native init App" template project for painless start. Benchmarks, problems, challenges, and transformations that my team experienced while migrating from separate Android, iOS and Web codebases into shared one.

About speaker

Oleksandr is developing on all kinds of mobile platforms for 7 years now. Building apps and frameworks, simple and beautiful, complex and demanding, for startups and enterprise.
Jorge Barroso
Сo-founder and Android developer at Karumi, Google Developer Expert (GDE), Spain

Architecture Patterns in Practice with Kotlin

Kotlin is here and some Architecture Patterns need to be adapted.

From Karumi we've dedicated last 3 years talking about architecture and design patterns, each solution has pros and cons and could be good for different problems and kind of applications.

Kotlin brings to us different tools and ways to write code these can help to us to write different patterns or apply different technics to that patterns.

In this talk, we present some commons problems in app designs and how we can provide solutions in Kotlin.

About speaker

Jorge is the co-founder and Android developer of Karumi and Android GDE. Karumi is an intentionally small software development studio headquartered in Madrid and specialized in developing lean and stable native applications and working with teams for improve their skills.

Before Karumi, he worked 5 years as a Senior Tech Lead at Tuenti, the leading Spanish social network, and MVNO, part of the Telefonica Group. At Tuenti, Jorge developed a wide variety of strategic products covering J2ME, Blackberry and especially Android.

With over 10 years of software engineering experience Jorge defines himself as a pragmatic coder who thrives to improve the Android project architecture by being a firm advocate of the concept of semantic code and test development. He is continuously learning and honing his Android coding skills in an effort to understand and adapt to the evolution and of the internal framework.

Mischa Hildebrand
iOS Developer at Kupferwerk, Germany

Auto Layout – From Trailing to Leading

Auto Layout is a powerful tool to make user interfaces adaptive. But: It’s not as simple as it looks. You never really know what’s going on behind the scenes and sometimes you get results at runtime other than you expected.
The only way to dismantle this "magic" is to develop a deep understanding of the layout process, including the mathematics behind the constraints: How does the system compute the view frames from our constraints? What’s the intrinsic content size and the compression resistance / content hugging? Why do we need constraint priorities? How do we force a layout pass? This talk will give you all the answers – with little code and lots of beautiful animations.

About speaker

Mischa has always been passionate about two things that don’t seem to have much in common: logic and creativity. He graduated in physics to discover the first and worked as a radio reporter for a couple of years to try out the latter. Today he works at intive Kupferwerk, a software agency based in Munich, where he combines both his passions as an iOS developer. Mischa tries to learn something new about Swift everyday and loves creating modular, adaptive user interfaces with Auto Layout. His favorite question: “Why?”
Mateusz Herych
Android Tech Lead at IG, Google Developer Expert (GDE), Poland

The day your presenters went too big

So you started to use MVP in order to make your code be more testable and better separated. However, some of your views have multiple actions that can be performed by the user making your presenter to reach couple of hundred of lines of code. During this presentation Mateusz will tell you some details of how they started to structure their code in order to make whole your presentation layer look better.

During this talk I will prove that the only way of keeping your presenters small is to keep your views small as well. We will discuss possible ways of splitting complex views into analityk pieces and what were different international of doing so im my projects.

About speaker

Mateusz works as an Android Tech Lead at IG where he leads a team working on the mobile trading platform. He is also a member of the Google Developer Expert program for Android and a coorganizer of GDG Kraków community meetups.
Marius Constantinescu
iOS Developer at Greener Pastures, Denmark

Enhance your world with ARKit

Apple took everyone by surprise at WWDC introducing ARKit, a framework that helps developers create augmented reality experiences for their users by adding virtual objects and information to the real world. Probably the biggest software-only breakthrough in recent iOS updates, ARKit is still new, but we have all already seen demos of what it can do. There are lots of possible use cases for it, and it's up to us to create awesome experiences for our users with ARKit.

In this talk, I will give a small intro to ARKit and show how to make your first ARKit app. We'll look at how to enable ARKit in your app, possible use cases of ARKit and go through some tips and tricks.

About speaker

Marius had his first contact with iOS development in 2010 and has been working continuously with it since 2013. Big fan of Swift and open source, he has been a contributor to iOS Goodies for about 2 years and is currently in charge of the newsletter. Previously at Nodes, where he was part of open sourcing most of the internal tools and frameworks, now he works as an iOS developer at Greener Pastures.
Victor Okunev
Developer Evangelist at Samsung, Canada

Optimizing Android apps for desktop experience

The mobile devices of the latest generation are now capable of powering the desktop user experience. Get your Android apps ready for the big screen. Learn what it takes to optimize your apps for enhanced interactions, desktop mode capabilities, and an overall amplified in-app experience.

Stay for the quiz and for a Samsung DeX station giveaway at the end of the session!

About speaker

As an experienced hands-on architect and educator, Victor combines his expertise with his passion as a Samsung Developer Evangelist. In this role, Victor acts as a liaison between the company and the mobile software development community worldwide, primarily focusing on B2B space. When he's not travelling around the world to meet with developers, Victor bikes to work in his home-town Vancouver, two hours a day, rain or shine. He holds an MSc in Computer Science from Moscow State Institute of Radio Engineering, Electronics and Automation.
Dmytro Denysenko
Android Developer at Petcube, Ukraine

Petcube epic battle: architecture vs product

Below are the main talking points:

  1. Choosing a pattern
  2. Why using Clean Architecture
  3. Migrating legacy code
  4. Architecture vs quick implementation
  5. Profits
  6. Project evolution

During this talk, I am going to share Petcube experience on apps architecture, our struggles with finding a balance between quality of architecture and speed of product implementation.

About speaker

Dmytro is Android Developer with the passion for implementing beautiful UI and learning trending programming techniques. At Petcube he helped develop a newly redesigned version of the app from scratch and participated in architecture decisions for the sake of clean, scalable and testable code.
Yurii Kotov
Android Developer at Ciklum R&D, Ukraine

Augmented reality on Android

Augmented reality (AR) is one of the hottest trends in tech these days because this area is quite pure and young with huge opportunities in the future. AR was one of the key features in lately presented smartphones from giants Google and Apple. This promising technology will change the industry of mobile devices.

I am going to tell about first steps in AR on Android, the biggest challenges during development and how to research a new technology in a few months. During the talk, I will show interesting demo, useful showcases and tell a story about my summer trip to San Diego and how they work. Why code style is so important in a big project and how much attention they pay to architecture design.

About speaker

Yurii is an Android Developer in Ciklum R&D lab with the passion to combine new innovative technologies and modern well architected applications. Dozens of successfully developed apps, winner of ‘Garage48 IoT & Machine Learning’ hackathon and Tango project contributor.
Dmytro Zaitsev
Mobile Team Lead at Lohika, Ukraine

Coroutines in Kotlin

Modern programming can not be imagined without long-running operations such as CPU-intensive computations or blocking IO running in the background. Unfortunately, having too many active threads is very expensive and kills performance, but there's a solution - coroutines. They provide a way to avoid blocking a thread and replace it with a cheaper and more controllable operation: suspension of a coroutine.

I'll talk about generators/yield, async/await, channels, composable/delimited continuations, and its usage; consider available APIs and make the overview of standard kotlinx.coroutines library.

About speaker

Dmitriy Zaitsev, Mobile Team Lead of Lohika Kyiv office – more than 6 years professionally engaged in developing Android apps and more than 3 years uses Kotlin. He creates solutions for information security, e-banking, medicine, social networks, and mechanical hardware. Today he's a mentor, open-source contributor, active speaker of Android Community, actual Judge of Dev Challenge.
Tobias Due Munk
iOS Developer and owner of Developmunk, Danmark

Gems of GameplayKit

GameplayKit might seem to be all about games, but it contains valuable gems that are perfect to be used in regular apps.

Learn about how to make:

  1. performant rubber band selection;
  2. shuffled arrays;
  3. random animation look more natural;
  4. pathfinding for indoor guided tours.


About speaker

Tobias is an iOS developer, designer and consultant. Conference speaker and organizer of local iOS meetups in Copenhagen.