Mobilization is a conference dedicated to mobile technologies. The main scope is development of mobile solutions aimed at smartphones and tablets, with particular interest in Android, iOS and HTML5.
Modern languages with functional colors are mainstream lately. Kotlin is arising as one of the most powerful ones, and developers around the world are using it for personal and professional projects. It's time for Android devs to look forward and benefit from this fact, and start designing more advanced architectures based on the features provided by the language. On this talk, I will showcase a Kotlin approach (plus a sample project) to learn how to move all our side effects in the edges of our system, and implement a functional oriented architecture for our Android apps based on purity. Testing will also take part on the talk. I will also showcase a functional programing lib we are working on in the spanish community, called kategory: https://github.com/kategory/kategory If you feel OOP is just not enough and want to make a huge step forward, come to this talk. You will not regret!
The appearance of Swift and Kotlin is a great change in mobile world. There is a number of advantages to using them. Still, one thing didn’t change: as embedded programmers, in order to provide better performance, reduce battery utilisation, etc. we sometimes need to operate on lower level. During the speech, I will provide you with ready-to-use tools that will let you utilise a huge codebase of C and C++ in your project and discuss differences between them.
Developing an app being a consumer product means working under constant pressure to frequently release features that bring value to customers. Several-months-long development with no release to production happens very seldom in the aforementioned context. How to cope with a need for speed of releasing an app eg. once a week? If you look at what happens in a ‘backend world’, DevOps is the new hype giving a promise to deliver value in a stable way very often. However, DevOps is very often associated mistakenly only with Continuous Integration and Continuous Delivery. I will be talking about increasing overall flow of value to customers, shortening feedback loops from customers and building an organization which is optimized for speed and stability. Moreover, what practices considered with DevOps in a ‘backend world’ are valid in a 'mobile world'? On the other hand, what practices need to be re-thought taking into account the mobile context? I will not be able to answer all the questions as I don’t know all the answers. However, the answers I have are based on what Facebook, Netflix, Etsy and - where applicable - Seqr do, don’t do or were doing wrong. The goal of my talk is to help people to understand DevOps comprehensively and how it fits into mobile context. I will refer to certain technologies as examples but will not discuss them in detail.
App performance matters. To achieve greatness we need to track and measure what we can't see with naked eye. I my talk, I'll introduce you to AT&T performance optimizer. Are you sure your Android app will pass strict security and performance tests?
here 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
If you are curious how we test iOS mobile applications in Allegro, this lecture is for you. We think of app testing right after opening Xcode, creating user interface and writing final implementation. On different development stages, we test different subjects with different tools. Feel invited to learn our story about subsequent layers of testing, starting from unit, through snapshot and functional testing. True story based on developer’s and tester’s experience.
Coroutines are the new feature of the Kotlin language in its version 1.1. They allow you to write seamingly blocking synchronous code that is really non-bocking asynchronous. In this talk, I will present the concept of coroutines and explain how Kotlin proposes coroutines as a tool to be built upon rather than a standard to be forcibly used. I will show the low level primitives and the main coroutine library. I will then propose a live coding that shows the primitives and high level usage of coroutines in Kotlin and that demonstrates they can be used in the backend as well as UI development of and Android application.
Room is the new library from Google to speed up the database work and remove a lot of boilerplate. We will see and introduction to this library and how to structure your application to get the most of it.
Breaking Bug is a post-mortem about how we handled in Chicisimo a bug which went largely undetected and of unknown scale. We will explain how it did affect us, and which techniques and tools did we use to: 1. Investigate what was going on. 2. Properly diagnose and narrow it to the affected part in the app. 3. Analyze its impact and affected people. 4. Finally isolate it and fix it. In the end we will give some conclusions about how was the real cost of fixing it, and in which ways the process gave us insight and helped us to understand and improve our quality processes.
(or how to build a scalable testing suite). In this talk we'll discuss the problems around UI testing - why is it hard to write such tests, how to get started, how to make them part of your CI system. We'll present a recipe for building a scalable framework that makes writing UI tests a pleasure. Most of the common "gotcha-s" will be solved along the way, as well as giving a few best practices. Once the foundations are laid out, a whole new set of scaling problems arises, so we'll talk about possible solutions for them. Whether you still don't have any UI tests in your project, or you already have a good suite built, this talk will give you some useful tips & ideas.
React Native has been a hot topic for some time now. Many people claim that it is revolution in mobile development, others treat it as another multi platform solution which will never replace the "real" native development. So... What is it then? In this talk I'll share my experience as iOS developer who got into React Native development and has many different feeling regarding the topic.
Applications architecture is a broad and important topic in software development, which has been neglected by official guidelines for Android for a very long time. In spite of that, the interest in architecture among the members of Android community has been growing steadily over the years. Official guidelines and tools slowly caught up with the community interests, which culminated in a recent announcement of a set of libraries called Android Architecture Components by Google developers. While the motivation behind Android Architecture Components is clear, the relation between these libraries and application architecture is not so evident. Furthermore, the way these components address the issues that Android developers experienced over the years hides a new set of potential issues and gotchas under the hood. In this session we will attempt to understand what software architecture is and what it isn't, and discuss several potential pitfalls associated with Android Architecture Components.
Choose between this pattern is constant subject for discussions and fights. In the same time anyone perceives them differently. Is there any way out of this ideological problems? Let's talk about MVC, MVP and MVVM pragmatically. Let's answer "Why?" and "What are the consequences?".
For many people, SQL can be intimidating when writing mobile apps. To avoid its complexity, various libraries started to implement techniques such as Object-Relational Mapping. They ease basic operations on complex objects, but come with a set of downsides such as decreased performance and the learning curve of a new library. Square’s libraries SQLBrite and SQLDelight improve data manipulation by embracing all the powerful capabilities of SQLite while removing common frictions like runtime crashes, boilerplate code, and type-unsafe APIs. In this talk I’ll present the reactive mindset behind SQLBrite and the code-generation capabilities of SQLDelight. When combined, these two libraries will help you architect and code safer and faster with queries autocompletion, code reuse, and much more.
Kotlin is fairly known in the Android community nowadays, and it's really easy to make the switch from Java. Getting the most out of it though it's the difficult part. In this talk we will explore together the most amazing features it has to offer, from the simplest extension functions to the functional style tricks, the coroutines and a bunch of yet-to-discover amazing things!
Whether you believe it or not, the Reptilians are everywhere, and we have never been ready to face them so far. We WERE NOT ready... But this will finally change, now that Android Things has been released. Trust me, they didn't want to see that happen. Together, we will discover Android Things and see how we can create a moving machine capable of detecting Reptilians (with touch/skin temperature sensors, and machine learning), but also capable of exterminating them (btw, I would appreciate if the staff could lend me a flame-thrower, it would make a great demo). How? Using a Raspberry Pi, an Arduino, and discovering+using some specific Android Things APIs, such as gpio, pwm, i2c, spi, uart, allowing us to interact with physical components. Come see the power of Android Things.
Nowadays, there are a lot of hosted CI solutions that offer quick integration with our repositories and need just few clicks to finish initial setup. Other services, coming with enhanced functionality, but requiring a server to maintain are often not given a try. First problems occur when we start coping with long compilation time and limited resources, especially during instrumented tests running on the Android Emulator. Here TeamCity comes with a rescue. With simplified setup (using Docker) and few tricks, reducing time for possible management, we do not need to hire a DevOps engineer.
Augmented Reality in the iOS world (what's there for us, not only from Apple)
Instant Apps is a bridge between seamless web experience not requiring installation and truly native user experience with material design and navigation. It absorbs the benefits of both worlds. As Google's early access partner, Jet.com got access to Instant Apps API and tools in their early experimental stage. I was leading Instant Apps project for the last 8 months at Jet.com and would love to share the experience. Building Instant Apps required a lot of work on the architecture side, modularization and reducing the app size. In my talk I will touch the following points: - Instant Apps types - Architecture changes - Size and feature constraints - Pain points and lessons learned - Ways to slim down the app and bring it down to 4 MB - Benefits
In this talk Raul will explain the basic concepts of Android Things (Android for IoT), explain how to setup the development environment for it and show how easy is to work with the different peripherals. For this, he'll use the most popular Dev Kit for Android Things: A Raspberry Pi with a Rainbow HAT (which has lots of sensors, input and output devices).
Now that 90% of Android consumer devices and 100% of Android Things devices run software that supports Bluetooth Low Energy (BLE), it’s the perfect time for Android developers to dive into the Internet of Things and start building companion apps or custom smart devices. Unfortunately, Android’s Bluetooth stack has a well-deserved reputation for being difficult to work with. Join me for a journey through battle-tested strategies and code that will provide you with a roadmap for navigating the nasty parts. No prior experience with BLE is required; a gentle introduction is included.
With tvOS introduced almost two years ago, we now have four platforms that can run your app. Of course, each requires tailored UI approach, but tests and deployment for each platform should be quite straightforward. Let’s talk about building a framework, writing tests for it and onwards preparation to use for all Apple devices.
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!
I'd like to present my actual case where I used Realm platform, both frontend (iOS) and backend (AWS cloud).
Is code duplication the root of all evil? Should I always write a generic code? How to make others life harder? A subjective journey through common iOS anti-patterns, not so best practices and code smells from the perspective of an experienced Software Engineer. Based on +10 years of commercial experienced, thousands of code reviews, made with a dose of pragmatism.
The concept of functional Lens has become pretty popular in functional programming circles, and there are already good contributions for applying lenses to other, traditionally imperative/OO contexts. I’d like to offer a more in depth view on why lenses can be useful in Swift, and also talk about an associated concept called Prism. Let’s consider some practical problems and confront an idiomatic/imperative approach to the one based on lenses and prisms.
In this talk we'll explore architectural patterns you can use to organise applications that don't always require a server to function properly.
In the last few years reactive programming ideas have taken the iOS community by storm. Now that the dust has settled, we're more and more often coming across the most confusing, obscure and unreadable code we've possibly ever seen. The libraries like RxSwift bring the great power, but how to bear the burden of the great responsibility? I'll try to answer this question in my talk, drawing on experience of everyday use of RxSwift in a non-trivial app. Deep diving into implementation details and overview of battle-tested patterns will guide us along the way.
Working with a large code base in a large distributed team involves a lot of challenges. You need to deal with complex workflows, slow build times, communications across different timezones, etc. In this talk, Yusei will share how development teams can tackle these issues and speed up daily development. This talk will also cover the following topics: - Workflow automation with Fastlane - Code review with Danger and SwiftLint - Collecting and visualizing code metrics with InfluxDB and Grafana - Build time reduction - Code modularization
Developing native iOS (and Android apps) can be very time consuming and expensive. What if you could build native apps with one code base and web techniques? Well, you can with NativeScript! In this introduction, I’ll explain what NativeScript is and how it compares to other platforms. And in a live demo, I will show you how easy it is to get started and to make use of native capabilities.
The times when a browser simply had to parse and show some markup are long gone. These days they are full of interesting api’s exposing various information and behaviour to web developers. This talk will walk you through a few of these api’s (speech, speech recognition, battery, location, ...), some of which you might know, some maybe not. I will show a quick example of what some of these api’s can do, and how to use them.
The evolution of user interfaces in mobile apps continues with the most natural way of expressing the user’s wishes - their voice. Understanding what the users say is not an easy task. In this talk, we will see several speech analysis techniques used to help us in this challenging task, from Apple's brand new Core ML and SiriKit, to Google's api.ai, along with some well known Natural Language Processing algorithms like the TF-IDF.
Getting someone to download your app is hard enough. Don't scare them away with constant crashes, bad behaviors and errors which make your app unusable. During my presentation, I'll go over techniques, habits and tools to keep your iOS app in tip top shape.
Introduction to GraphQL as the innovational way of thinking about data. Broad GraphQL vs REST comparison led by real life examples of working with each of the two concepts. Based on my article shared by GraphQL's Twitter
In this talk I'll show how to simplify your app's architecture by letting the database drive the UI. We'll explore powerful features of Realm such as change notifications and automatic updates to ensure we never have to manually update the UI again.
(Nowa) Hala Expo
al. Politechniki 4
93-590 Łódź, Polska