Заявки на доклады

Поиск по тегам:

Кросс-платформенная разработка

Being an ethical developper

Xavier F. Gouchet

With great power comes great responsibilities. In today’s world, developers definitely have a lot of power in their hands, shaping the apps we use every day on our phones and computers. More than ever developers need to know about the consequences of what they build, and help shape the way apps will be built tomorrow.

Most talks at conferences helps you become better developers technically, revealing the best practices, tips and tricks, or new libraries and framework to write better code, this talk will focus on making you becoming a more ethical developer.

Мобильные приложения / другое
Программный комитет ещё не принял решения по этому докладу

What the F**tter? Understanding Flutter as an Android Developer

Harshit Dwivedi

As an Android developer, you probably have heard lot about Flutter, the newly released Framework by Google for making beautiful cross platform apps.

Due to Flutter still being in beta, there are not many online resources available for someone looking to start building apps with it and here's where my talk will help you.

This talk is aimed for Android developers trying to wrap their heads around Flutter and how it correlated with the native Android Framework.
I'll be highlighting Flutter's similarities, dissimilarities to the Native Framework and the pros and cons of using Flutter in your production app.

By the end of this talk, you will be motivated enough to flutter ahead with Flutter an

Технологии и языки для Android: Java, Kotlin
,
Технологии и языки для iOS: ObjectiveC, Swift
,
Кросплатформенная разработка
Программный комитет ещё не принял решения по этому докладу

Flutter.io

Aleksander Piotrowski

Flutter.io is a tool that makes it easy and fast to build beautiful mobile apps. One may say it's like ReactNative from Google. In my presentation I'll show the difference between Flutter and ReactNative, Cordova and native frameworks. We will have a look at tools and language used to develop in Flutter. Also spend some time on advanced features of the framework such as extending with platform-specific features and creating custom widgets.

Программный комитет ещё не принял решения по этому докладу

Мобильный AR

Владислав Дугнист

В докладе расскажу про историю AR-VR и текущие технологии (ARKit, ARCore, Vuforia). Посмотрим, как выглядит разработка 3D-приложений со стороны разработчика, и какие технологии используются внутри фреймворков дополненной реальности.

GameDev для мобильных устройств
,
Работа с графикой, 3D Моделирование
Программный комитет ещё не принял решения по этому докладу

Автор, пиши меньше. Котлин для разработки в iOS и Android

Николай Иготти

Если ты не хочешь дублировать общую бизнес-логику в своих мобильных приложениях, но при этом хочешь использовать все сильные стороны платформенных интерфейсов - этот доклад об этом.

Kotlin/JVM, Kotlin/Native, Gradle, MPP - эта комбинация позволит создавать мобильные приложения, на фреймворках родных для iOS и Android, и при этом не писать весь код дважды.

Доклад акцентирован на разработке под iOS и Kotlin/Native, так как эта сторона мобильной разработки с использованием Kotlin менее известна широкой публике.

Программный комитет ещё не принял решения по этому докладу

Процессы разработки

Программный комитет ещё не принял решения по этому докладу

Насколько технически хорошо наше мобильное приложение?

Ртищев Евгений

Мы инженеры – люди, которые решают нетривиальные задачи, проектируют сложные технические системы и находят выход из почти любой ситуации. Мы используем практики системного анализа, умеем верно устанавливать причинно-следственную связь и писать хорошие, как мы считаем, мобильные приложения.

Но нередко ловкий менеджер или даже наши коллеги могут завести нас в тупик вопросом “Насколько хороша и эффективна спроектированная нами система”? Никто не любит признавать своё детище не идеальным и замечать существующие недостатки.

Но что если можно выработать системный базис технических (и не только) метрик и показателей системы, оперируя и измеряя которые мы могли бы подтверждать свои суждения сухими цифрами либо качественными оценками.

Мобильные приложения / другое
Программный комитет ещё не принял решения по этому докладу

Как организовать мобильную разработку по Scrum? (черновое название)

Дарья Ахмерова

Вы давно слышите, что крутые компании работают применяя Agile и Scrum, и у них действительно классно? Сегодня мы поговорим, про применимость в мобильной разработке:

Как запустить?

Каковы критерии успеха?

Осторожно! Велика вероятность, что сразу после доклада вы решите перевернуть свой процесс разработки :)

Методологии и процессы разработки ПО; Сроки и приоритеты
Программный комитет ещё не принял решения по этому докладу

Ментальные модели пользователей

Никита Майданов

Как понять, кто есть ваш пользователь, что ему нужно, что у него болит.

Расскажу про опыт UX-интервью и о различных способах проверки ваших интерфейсов, выявления проблем. Как построить ментальную модель вашего пользователя и что с ней дальше делать.

Программный комитет ещё не принял решения по этому докладу

Как работают большие команды в мобильной разработке

Максим Ефимов

* Сколько нужно инженеров, чтобы сделать Uber.
* Что такое кросс-платформенная архитектура.
* Одно приложение на десятки фич – взгляд со стороны одного разработчика.
* Синхронизация работы десятков команд.
* Скорость, качество, полнота исполнения – на что делается акцент.
* Оценка качества.
* Что делать, если все сломалось.

Доклад принят в программу конференции

Test Drive: выжать максимум

Дмитрий Грязин

В своей практике я не встретил настолько разнящихся точек зрения и холиваров более бурных, чем про автоматическое тестирование. Предлагаю вынести на обсуждение болезненные вопросы unit и ui тестирования. Расскажу о том, как получить реальный профит и чувство профессионального удовлетворения от работы с кодом в свете его тестирования, и проиллюстрирую наблюдения на живых примерах из опыта работы в Avito.

Автоматизация разработки и тестирования
,
Управление изменениями, управление требованиями
,
Автоматизация тестирования
,
Тестирование мобильного ПО
,
Юнит-тестирование
,
Приёмочные и функциональные тесты
Доклад принят в программу конференции

Бесполезные встречи не нужны

Дмитрий Емельянов

Что такое бесполезная встреча?
Почему я должен на ней присутствовать?
А можно ли как-то спасти встречу и сделать ее полезной?
Кто такой фасилитатор и зачем он нужен?
А я могу помочь догвориться?
Почему, если на встрече идет спор, то это нормально

Программный комитет ещё не принял решения по этому докладу

Plugin для Android Studio или как избавиться от рутинного кода в большой компании.

Геворк Сафарян

Часто, в больших компаниях, мы сталкиваемся с задачами, которые влекут за собой долгую рутину работу. Но, что если я скажу, что её часть можно автоматизировать, написав простой плагин для Android Studio?

Оптимизация производительности
,
Devops / другое
,
Мобильные приложения / другое
Программный комитет ещё не принял решения по этому докладу

Главное не качество, а количество!

Егор Бугаенко

I truly believe that quality is not what programmers should care about. They must care only about speed—close tasks as soon as possible— which means make money. Won't this attitude ruin the project and turn the code base into a mess? Yes, it will. If the project doesn't care about its quality either. There must be a permanent conflict between a project and its programmers: 1) the project must be configured to reject anything that lowers the quality of its artifacts and 2) programmers must be interested in making changes to those artifacts. The project cares about the quality, the programmers care about fast delivery of modifications. I wrote about this: http://www.yegor256.com/2018/03/06/speed-vs-quality.html

Доклад принят в программу конференции

Разработка библиотеки: от API до публичного релиза

Ася Свириденко

Я расскажу об особенностях разработки мобильной библиотеки на примере YandexSpeechKit . Доклад будет полезен не только разработчикам фреймворков, но и тем, кто хочет выделить части своего проекта в отдельные модули или поделиться своими наработками с другими разработчиками. Мы поговорим:
1. О проектировании API библиотеки: какие особенности и подводные камни могут встретиться.
2. На что обратить внимание при написании кода и тестировании.
3. Как облегчить жизнь своим пользователям и, как следствие, себе.
4. Об особенностях релизного цикла и взаимодействии с другими командами.
5. Что необходимо для публичного релиза, и какой постпродакшн ждёт разработчика библиотеки.

Рассказ будет полон неподдельными историями из жизни команды мобильной библиотеки YandexSpeechKit :)

Методы и техника разработки ПО
,
Разработка библиотек, включая open source библиотеки
,
Особенности процессов разработки и тестирования мобильного ПО
Программный комитет ещё не принял решения по этому докладу

To be manager, or not to be

Илья Царев

Через несколько лет работы разработчиком передо мной встал выбор: становиться менеджером или развиваться дальше в техническом направлении. Я расскажу о своем опыте, страхах, ожиданиях и суровой реальности.

Я рассмотрю три роли: разработчик, техлид и руководитель разработки. Где заканчивается ответственность одного и начинается ответственность другого, в чем разница между позициями и как понять, в какую сторону двигаться.

Модели руководства
,
Поиск и развитие команды
,
Продуктовая разработка
,
Мобильные приложения / другое
Доклад принят в программу конференции

Как чувство «самозванца» ведет к выгоранию. И почему так важно помнить про границы.

Анастасия Калашникова

- Самоощущение себя, как самозванца в профессии – что это значит и почему такое происходит;
- Как неуверенность в своих профессиональных навыках ведет к выгоранию и чем оно страшно;
- Взаимосвязь между неустойчивыми границами и чувством самозванца;
- Как переработки ведут к появлению и развитию расстройств;
- Что со всем этим делать.

Корпоративная культура и мотивация
,
Другое
,
Митапы
,
Networking, знакомство
,
Другое
Программный комитет ещё не принял решения по этому докладу

Android CI with Kubernetes

Антон Малинский

How to prepare your CI for a team of dozens of Android developers?

The approach described has been tested by running ~6 million UI tests and ~180 million unit tests (so far) while staying sane with managing hardware and 100+ real Android devices.

Непрерывное развертывание и деплой
,
Непрерывная интеграция
Программный комитет ещё не принял решения по этому докладу

Собеседование мобильных разработчиков. Обе стороны баррикады.

Александр Черный

В чем цель собеседования?
Что даст план собеседования?
Что стоит хранить в тайне, а что стоит сделать открытым?
Череда испытаний или минимум бесед?
Какие базовые вопросы задают все кандидаты?
Нужно ли продавать вакансию?
А стоит ли рассказать все плохое?

Программный комитет ещё не принял решения по этому докладу

Обретение навыков

Никита Прокопов

Как люди учатся новым навыкам, и какие из этого следствия для программистов. Пять стадий прокачки: новичок, продвинутый, компетентный, специалист, эксперт.

Основные моменты: как правильно обучать программистов, кто с кем эффективно работает в команде, как переходить на следующий уровень, природа споров и советов.

Программный комитет ещё не принял решения по этому докладу

Смешные и грустные истории про разработку компьютерных игр

Вадим Башуров

Истории про разработку игр, от Паскаля до Свифта, от СССР до РФ, от 10 рублей до миллиона долларов. Без нравоучений, запинок и бестолковых советов.
Можно ли прожить, разрабатывая игры?
Можно ли прожить, не разрабатывая игры?
Какие знания, навыки и уроки пригодились для подобной жизни?
Вы получите ответы на любые вопросы, кроме вышеперечисленных.

Программный комитет ещё не принял решения по этому докладу

Технологии Android

Rock the Gradle, Rule the world

Xavier F. Gouchet

More often than none, an Android project's build.gradle file grow larger and more complex with time. Because we need to adapt it to all the specific build constraints and scenarios which are not supported by default. Custom tasks, advanced usages, … the use cases are infinite.

But like the rest of your source code, the build.gradle file(s) should be clean, easy to read and easy to maintain. After looking through various tips and techniques to clean your gradle code, we'll look at the underappreciated 'buildSrc' folder, which allows you to create plugins directly from your project. This talk will walk you step by step through the creation of such a custom plugin, with a couple of concrete ex.

Технологии и языки для Android: Java, Kotlin
Программный комитет ещё не принял решения по этому докладу

The Curious Case of Android Button

Nicola Corti

We interact with buttons every day to get coffee, order pizza, or start a new Gradle build. They may look simple and straightforward, but they have a fundamental role in our environment: create a sense of power.

We all love to feel empowered and we all hate being frustrated by bad design. Your users know this as well, they want to feel immediately rewarded when they interact with your UI, and they will quickly drop your app if they get annoyed.

At Yelp, we get tens of millions button clicks a day. At that kind of scale, every pixel matters. We tune every single aspect of our buttons to make them simple and powerful, but adjusting every single shadow cast, click animation, or color layer.

Технологии и языки для Android: Java, Kotlin
Программный комитет ещё не принял решения по этому докладу

«Компонентный подход в Android-разработке» или «Повторное использование кода Android-приложений»

Михаил Горюнов

— Android навязывает процедурный подход к разработке: if/switch/when встречаются чаще, чем полиморфизм;
— контракты, предоставляемые фреймворком — Intent (action, data + type, extras) и Bundle — не типизированы, поэтому опасны и неудобны;
— в типичном приложении очень много схожих классов — фрагментов и презентеров/вьюмоделей;
— чтобы повторно использовать код, нужно слабое связывание;
— идея IoC предполагает слабое связывание, а её реализация — DI-контейнеры — способствуют сильному;
— главный недуг Android — невозможность использовать нормальные конструкторы у активити и фрагментов и отсутствие чёткой точки входа в приложение;
— жизненный цикл компонентов имеет нездоровый сдвиг — вместо конструктора используются всяческие onCreate/onAttach, что порождает горы lateinit;
— Moxy и ViewModel — это non-production-решения, т. к. они не умеют сохранять состояние при перезапуске процесса;
— ViewModel должна иметь no-arg-конструктор и по факту синглтон. Если спечь вместе retain-фрагмент и простую вьюмодель, получится не хуже;
— возвращаем себе конструкторы и передаём туда зависимости;
— используем статически типизированные контракты;
— оставьте себе ViewModel и LiveData, у меня есть свои.

Статически типизированные экраны с конструкторами: http://github.com/Miha-x64/Flawless
Вьюмодели с состоянием: http://github.com/Miha-x64/reactive-properties/

Программный комитет ещё не принял решения по этому докладу

It's time to up your test game

Xavier F. Gouchet

On the paper, everyone agrees that tests are important. And yet, more often than none, tests are still considered the poor cousin in the development industry. In the rare case when we actually take time to write them, we more often than not consider it a cumbersome task, and give it less thoughts than the "real code".

But tests are often as important, if not more, as the code that will be shipped on the Play Store. After briefly explaining the basics of testing, this talk will go through various common mistakes and bad practices found in real-life unit tests, and will give techniques and tips to make those tests cleaner and better.

Технологии и языки для Android: Java, Kotlin
Программный комитет ещё не принял решения по этому докладу

Как устроено создание процесса в Android?

Владимир Теблоев

Вы слышали много раз такие слова, как: IBinder, Zygote, Dex и Dalvik? Хотели узнать подробнее, но не знали у кого спросить? Думаете, Android устроен из одних активити и сервисов? Спешу вас разочаровать, но все как раз наоборот.

Со мной вы узнаете, что происходит с момента нажатия на иконку приложения до запуска первого экрана. Расскажу о таких понятиях, как Zygote и их связи с процессами в Android; а также о IBinder'е, который является своего рода крёстным отцом практически всех взаимодействий в Android.

Архитектура платформы Google Android
Программный комитет ещё не принял решения по этому докладу

Таинственный лес. Native crashes. Как и зачем их ловить и можно ли победить.

Александр Колобанов

В любом андроид приложении есть нативные крэши. Даже если в нем нет ни строчки нативного кода, добавленного разработчиком. И эти крэши нужно собирать и анализировать, даже если в приложении нет ни строчки нативного кода. Они могут сигнализировать о проблемах с памятью, ANR и о много чем еще.

Но возникает проблема. Как их собирать и анализировать? Существующие инструменты зачастую не выдают нужных данных или дают ни о чем ни говорящий стэк вызовов.

Как можно использовать эти знания, стоит ли писать свою аналитику и можно ли победить нативные крэши, обо всем об этом мы поговорим в докладе

Программный комитет ещё не принял решения по этому докладу

Building AR apps using ARCore and Sceneform

Hari Vignesh Jayapalan

To develop AR apps for Android, you need to learn OpenGL programming and should have a sound understanding of graphics concepts. To avoid these, most people use Unity. Fear not, Sceneform is here to save you. Just like writing an Android app, you can now create ARCore apps suing Sceneform.

What to expect?
AR Fundamentals - Basic fundamentals of ARCore
OpenGL vs Sceneform - comparing both to see What Sceneform has got to offer us
Building ARCore app with sceneform I - let’s build an AR app
Performing animation and walkthrough - explanation : function by function

Технологии и языки для Android: Java, Kotlin
Программный комитет ещё не принял решения по этому докладу

Mobile VR 2.0: Rise of Standalone

Алексей Рыбаков

Мобильный VR активно развивается и в некоторых вещах начинает обгонять PC VR.
Посмотрим о том что изменилось за последний год в Daydream и GearVR powered by Oculus Rift
Кратко рассмотрим новые Oculus Go и сравним с 6DoF VR решениями от Lenovo и HTC.
И более подробно остановимся на Daydream Standalone:
Какие средства разработки доступны сейчас
Google Seurat - что это и как использовать
Как это все работает на Mirage Solo for Daydream

Мобильные приложения / другое
Программный комитет ещё не принял решения по этому докладу

Thinking reactively

Ayokunle Paul

Sequel to improvement in the underlying architecture of the Android OS, the blow up in the number of Android users and the numerous numbers of applications on Play Store, there is an increasing need for developers to build optimized and reactive android softwares.

Технологии и языки для Android: Java, Kotlin
,
Архитектура мобильного приложения
Программный комитет ещё не принял решения по этому докладу

MV* паттерны в рамках одной ячейки RecyclerView

Андрей Мамонов

Для удобной и быстрой разработки приложений со множеством схожих, но, в то же время уникальных UI-элементов, нужен гибкий и надежный подход, который можно легко масштабировать.
В докладе мы расскажем о нашем кейсе, а именно о применении MV* паттернов (MVP, MVVM) в рамках одной ячейки RecyclerView (как частный случай небольшого элемента экрана).
Рассмотрим в каких случаях стоит применять такую схему, разберем какие преимущества имеет такой подход перед общепринятым - использованием сущностей для отображения. Кроме того, обсудим переиспользование компонентов на других экранах в различных сценариях и посмотрим частный пример реализации такого подхода.

Технологии и языки для Android: Java, Kotlin
,
Архитектура мобильного приложения
Программный комитет ещё не принял решения по этому докладу

Materialize Your App

Adnan Mulla

Always wanted to make beautiful Material themed apps but couldn't due to the complexity of executing and building custom themed components ? Well, your in luck. In this talk, we will look at how you can integrate the new Material Design Components(MDC) libraries in your apps with ease and build beautiful apps which suit your brand image.

Технологии и языки для Android: Java, Kotlin
Программный комитет ещё не принял решения по этому докладу

Как переписать приложение с нуля и не потерпеть фиаско

Михаил

Часто можно услышать фразу: «Вот если переписать все с нуля» или «Здесь слишком много legacy-кода, мы тонем. Проще переписать все».
Но что значит «переписать работающее приложение с нуля»? Как его улучшить и сделать технологичным и масштабируемым? Так ли это просто?

В докладе мы поделимся опытом, как нам удалось переписать одно из флагманских приложений:
• как убедили бизнес, что текущее приложение – «дуршлаг со спагетти» и не масштабируется,
• как организовали команду, чтобы найти лучшие решения и не передраться,
• как использовали принципы чистой архитектуры и на какие «подводные камни» наткнулись,
• как использовали итеративные планы спринтов, чтобы успеть к ожидаемым срокам.

Поделимся bad-практиками с использованием RxJava, Dagger. Покажем на примерах, как unit-тесты спасали нас от непредвиденного изменения кода, и на примере app.zeplin.io расскажем, как дизайнеры помогли разработчикам интегрировать UI.

Архитектура платформы Google Android
,
Технологии и языки для Android: Java, Kotlin
,
Особенности процессов разработки и тестирования мобильного ПО
,
Архитектура мобильного приложения
,
Дизайн мобильный приложений
Программный комитет ещё не принял решения по этому докладу

Dexs, R8 & 3.2

Inaki Villar

In this talk we are going to see the internals of the new Dexing Compiler D8, introduced in AS 3.0 as experimental, D8 will give us faster and smaller outputs of dex files. We will understand better how is the Dex Processing in Oreo/P from the ART perspective, and how is affected in the new bundle apps.
Additionally, we will see more about R8 a replacement for Proguard used in AS 3.2

Технологии и языки для Android: Java, Kotlin
Доклад принят в программу конференции

Introducing the Material Design Components

Nicola Corti

This year at Google I/O, we saw a lot of freshness around the Material Design environment! A lot of new tools and libraries were launched to support the development of beautiful Material UI. If you're an Android developer, the first tool that you probably want to learn is the the Material Design Component (MDC) library, a collection of building blocks and patterns to 'materialize' your Android Layouts.

In this talk we will go through this library of components, to learn how to use it properly and to understand its role in the Material Design ecosystem.

Технологии и языки для Android: Java, Kotlin
Программный комитет ещё не принял решения по этому докладу

App Stability-Don't crash the party!!

Renu Yadav

Methods to increase app stability, lesser crash rates, observe app behaviours using AndroidVitals.

Технологии и языки для Android: Java, Kotlin
Доклад принят в программу конференции

Through the looking-glass eyes of an Android

Adrian Catalan

Ever wondered what your Android sees? how does it perceive(or not) the outside world? it would be really nice for our phones to see as we see and if they're not yet capable, why not teach them? the way to do it is using Machine Learning, a (kind of) new trend that's here to stay, and with so many different areas to explore is up to us to pick one we find interesting. Well, my take is on computer vision, so buckle up and join me in this journey, let's review options for computer vision on mobile, explore different examples and walkthrough the basics of several vision APIs.

Технологии и языки для Android: Java, Kotlin
Программный комитет ещё не принял решения по этому докладу

Firebase ML Kit : Mobile Machine Learning made easy

Harshit Dwivedi

This talk will be covering the newly released firebase ML Kit and how easily, even a beginner developer can integrate advance Machine Learning features into their apps.
In this talk, you will learn how to add features like face recognition, object detection and text recognition in your Android or iOS app with a few lines of code thanks to the rich and powerful apis provided by the platform.

Технологии и языки для Android: Java, Kotlin
,
Технологии и языки для iOS: ObjectiveC, Swift
Программный комитет ещё не принял решения по этому докладу

Gradle Plugin Development

Филипп Уваров

* Какие проблемы может решить кастомный плагин для Gradle?
* Разработка собственного плагина: от прототипа до публикации артефакта
* Оптимизируем наше решение
* Как все это протестировать?

Доклад принят в программу конференции

Отринь Gradle всяк сюда входящий

Антон Потапов

Круг первый: .apk. С него все началось
Круг второй: консоль.
Круг третий: Buck. Facebook
Круг четвертый: Bazel. Google
Круг пятый: Jerkar. Java для Java

Технологии и языки для Android: Java, Kotlin
,
Мобильные приложения / другое
Программный комитет ещё не принял решения по этому докладу
Программный комитет ещё не принял решения по этому докладу

Как правильно и главное зачем писать Android приложение в одном Activity

Константин Цховребов

- чем single-activity лучше чем multy-activity (скорость, анимации, ЖЦ и др)
- как выстраивать DI скоупы для оптимального использования памяти
- как выстраивать навигацию, чтобы не сойти с ума
- как обрабатывать deep-link'и
- как делать общий BottomNavigationBar (и другие общие элементы)
- как делить приложение на модули
- как обрабатывать клавиатуру и статус бар
..список будет дополняться

Программный комитет ещё не принял решения по этому докладу

Make Dagger 2 Android Injectors work for you

Ronen Sabag

In this talk you will explore some advanced use of Dagger for building Espresso tests in hermetic environment, how Dagger might help you to reuse screens and how Dagger might help you refactor legacy code.

Технологии и языки для Android: Java, Kotlin
Программный комитет ещё не принял решения по этому докладу

Как подружить Transition с Clean Code&Arch

Шевченко Артем

Мы начнем с краткого обзора Transition API на Android - это красивая анимация переходов между экранами, затем попробуем сделать шаг вправо-влево и попробуем что-то нетривиальное. А затем посмотрим на это со стороны чистого кода, чистой архитектуры и популярных MV-P/VM паттернов.

Архитектура мобильного приложения
,
Дизайн мобильный приложений
,
Мобильные приложения / другое
Программный комитет ещё не принял решения по этому докладу

Awesome Animations using ConstraintLayout and ConstraintSet

Hari Vignesh Jayapalan

ConstraintLayout helps us to easily create complex UIs without nesting views and complex view-hierarchy management. But do you know, that it also helps us to create beautiful animations and transitions with very less code? That’s what I will be sharing and discussing it with you.

In this talk, I’ll be explaining the following.
- How keyframe animation works with ConstraintLayout and ConstraintSet
- Few real-time use cases/animations - you can hack them in few minutes
- How’s it different from others?
- Animating without duplicating the layouts
- When and where to use keyframe animations
- Do’s and Don’ts
- Limitations of ConstraintSet animations

Технологии и языки для Android: Java, Kotlin
Программный комитет ещё не принял решения по этому докладу

Party like it's 1970: Conversational interfaces are back (into your Android app)

Adrian Catalan

Behold the promise land of AI. Machine learning has brought natural language processing right into our backyards and with it, the possibilities of different ways of interaction, such as conversations. But the challenges have evolved, as recognizing the input can be done via an API (like DialogFlow), we also need to consider the interface and how to give an experience so natural that it seem like a human conversation. "Oh hi, how are you holding up? because I'm a potato" it's not longer enough, we need conversationally-enabled Android apps built with a different set of design concepts. In this talk we'll review examples of core principles for the design & benefits of having one on your app.

Технологии и языки для Android: Java, Kotlin
Программный комитет ещё не принял решения по этому докладу

Child Presentation Model — переиспользуем код в архитектуре c RxPM

Дмитрий Горбунов

Вам приходится решать одни и те же задачи в UI?
Просто копипастите код?
Создаёте базовые классы и потом страдаете от наследования?
Или делаете несколько презентеров и не знаете, как им общаться между собой?

Есть другой способ — использовать композицию и делегирование в презентационном слое.

В докладе на примере загрузки списка с пагинацией и отображением заглушек я покажу, как выделить общий код в отдельную Presentation Model и переиспользовать на других экранах.

Программный комитет ещё не принял решения по этому докладу
Программный комитет ещё не принял решения по этому докладу

Как мы разделяли большое приложение на модули, и что это нам дает?

Евгений Кривобоков

Расскажу, как и ради чего мы разбили большое приложение на модули. С какими проблемами мы столкнулись, к чему пришли, и какие метрики используем в решениях.

Программный комитет ещё не принял решения по этому докладу

Effective Multiplatform Kotlin Development

Marcin Moskala

Kotlin enables you to write Android, iOS and web applications 100% natively. When you add good architecture, you can achieve enormous code reusage. In this lecture, I will show how you can do it yourself. I will present possibilities of this approach, how to apply clean architecture there and how to unit test it all.

Технологии и языки для Android: Java, Kotlin
,
Архитектура мобильного приложения
Программный комитет ещё не принял решения по этому докладу

Как использовать корутины в проде и спокойно спать по ночам

Владимир

- Корутины в Котлине. Уже стабильны?
- Как реализовать сетевой запрос на корутинах?
- Как сделать кэш для этого запроса?
- Как убедиться, что нет проблем с жизненным циклом?
- Как протестировать все слои?
- Как правильно обрабатывать ошибки?
- ???
- PROFIT!

Технологии и языки для Android: Java, Kotlin
,
Архитектура мобильного приложения
Программный комитет ещё не принял решения по этому докладу

UI профайлинг в пример: ищем бутылочное горлышко

Артур Бадретдинов

Вы разработали новый функционал, протестировали его - всё прекрасно работает. Вы отправляете его на внутреннее тестирование менеджерам... И они жалуются, что приложение работает медленно!

Мы столкнулись именно с такой проблемой, решили её однажды и построили процессы так, чтобы такие проблемы повторялись как можно реже. Junky frames (skipped frames), frozen frames - мы идём за вами!

Доклад представляет из себя технический кейс. Мы не будем углубляться в дебри оптимизаций, но рассмотрим, с чего стоит начать.

Есть приложение, которое работает. Есть ощущение, что оно работает недостаточно быстро. Сначала мы разберёмся, насколько правдиво это ощущение, с помощью более точных инструментов, нежели интуиция. Затем «препарируем» это приложение, используя несколько инструментов один за другим, попутно внося оптимизации. Время ограничено, поэтому мы сосредоточимся на части инструментов: профилировщик GPU, Hierarchy Viewer, CPU profiler, вскольз - отображение Overdraw. Напоследок, рассмотрим несколько инструментов, позволяющих следить за тем, насколько хорошо приложение работает от сборки к сборке.
Разумеется, серебряной пули не существует, как и универсального решения всех проблем. Однако для того, чтобы решить проблему, нужно её найти и локализовать. Понимание того, «где мы находимся сейчас» — неотъемлемая часть успешного движения вперёд.

Мониторинг и эксплуатация мобильного приложения
Программный комитет ещё не принял решения по этому докладу

Android: He protec, but he also attac

Гузенко Александр

Для вас важна безопасность мобильных приложений? Вам интересно как взломщики делают всё, что хотят с вашим приложением? Вы хотите стать хитрее их?

Безопасность в мобильных приложениях
Программный комитет ещё не принял решения по этому докладу

Different Angle on Dependency Injection in Android

Vasiliy Zukanov

Dependency Injection constitutes the foundation on which maintainable and testable applications are built. However, when used incorrectly or abused, dependency injection might not reveal its full strengths, and, in some cases, might even incur some not-so-evident penalties.

In this session we will start with a review of the theory behind Dependency Injection, understand the scope of dependency injection frameworks, and conclude with a list of best practices for Dependency Injection in Android.

The material presented in this session is applicable to all dependency injection frameworks.

Программный комитет ещё не принял решения по этому докладу

Kotlin magic: make DSL, not fork

Ilya Lim

Kotlin offers us an unprecedented capabilities when it comes to Android development. Thanks to the Java interop we also have a huge amount of libraries to use. But most of them are designed to follow best Java practices, not Kotlin. In this talk, you will learn how can you easily adapt your favorite library to be Kotlin-friendly without forking.

Технологии и языки для Android: Java, Kotlin
Программный комитет ещё не принял решения по этому докладу

Считать пиксели и не сдаваться, или строим поверх View и ViewGroup

Алексей Милеев

В App in the Air самописные View и ViewGroup используются и в хвост, и в гриву. На докладе я расскажу о том, что интересного можно делать с Custom View и ViewGroup, почему это может здорово помочь достижению 60 FPS, какие правила по написанию и поддержке этого кода я выработал для себя, и, в качестве бонуса, расскажу о некоторых интересных оптимизациях и о нюансах того, что лежит под капотом.

Программный комитет ещё не принял решения по этому докладу

Kotlinbots: Building your own personal robot army

Adrian Catalan

Android Things is the new kid on the IoT block, it brings all the power of Android development to hardware platforms & IoT devices. Any Android developer can start using the Android SDK and many of the APIs that we are familiar with, to blink a LED, build a cloud doorbell, the next IoT product or our own (non-evil) robot army. In this talk, we'll review the new set of APIs that Android Things bring to developers, what supports, how to start and how to approach the platform as hobbyist, without necessary having an electronics background and how to build some Android powered robots.

Технологии и языки для Android: Java, Kotlin
Программный комитет ещё не принял решения по этому докладу

Архитектура

Технология зашищенного удаленного администрирования, разработанная ассоциацией GSMA: от частного к общему

Дмитрий Шорин

Многие уже наверное сталкивались с не так давно вышедшими на рынок умными часами, которые получают доступ в сети мобильной связи без необходимости использования SIM-карты. Каким же образом, происходит их соединение с сетью, если отсутвует ключевой элемент, содержащий идентификатор абонента и его секретный ключ для аутентификации? Дело в том, что SIM-карта уже находится в часах, будучи впаяной в микросхему. Однако на ней остутсвуют какие-либо данные, способные разрешить устройству регистрироваться в мобильной сети. Чтобы такие данные туда занести ассоциация GSMA разработала специальный защищенный механизм удаленного администрирования. В связи с высокой конфиденциальностью передаваемых данных в протоколе применяется ассиметричная криптография, основанная на эллиптических кривых, для шифрования и расчета цифровой подписи отправляемых пакетов. Серверные компоненты с реализацией этой технологии проходят сертификацию в самой GSMA ассоциации, а для клиенской части разработан профиль для сертификации на безопасность по схемам Common Criteria. Задача персонализации встроенной SIM-карты это всего лишь частная задача удаленного администрирования в сетях мобильной связи. Технология имеет потенциал для использования в куда более широком спектре возможных применений внутри клиент-серверных архитектур, где к безопасности и целостности данных предъявляются строгие требования.

Защита информации
,
Проектирование информационных систем
,
Безопасность в мобильных приложениях
,
Мобильные приложения / другое
,
Другое
Программный комитет ещё не принял решения по этому докладу

Акторные модели: новый взгляд на старый подход

Владимир Теблоев

Обычно в любом большом проекте полно внешних и внутренних систем, в которых используется RxJava. Данный подход уже стал стандартом де-факто при разработке под Android, но многие не задумываются о том, что есть совершенно иная парадигма разработки, которая хорошо зарекомендовала себя в enterprise, как в свое время RxJava. Вы спросите: что же это такое? Акторная модель.

Со мной вы узнаете, что такое акторная модель и как она может помочь нам при разработке на мобильном устройстве. Что акторы можно использовать не только на Erlang и Scala. Легковесные асинхронные потоки, которые работают как обычный синхронный код и не только. Заденем Kotlin-coroutines, а также обсудим фундаментальность данного подхода при построении быстрых и отзывчивых систем.

Технологии и языки для Android: Java, Kotlin
,
Архитектура мобильного приложения
Программный комитет ещё не принял решения по этому докладу

Learning From Our Elders

Rob Napier

Swift is not a functional programming language. Pushing too hard to make it one fights Swift and breaks Cocoa.

But Swift has absorbed some fantastic lessons from the functional world, and while value types may not quite be the present, they are clearly the future. We’ll explore how decades of work in functional languages have influenced Swift, and how you can use those features best while staying true to Swift.

Технологии и языки для iOS: ObjectiveC, Swift
,
Архитектура мобильного приложения
Доклад принят в программу конференции

Redesigning Design Patterns

Graham Lee

What went wrong with Design Patterns? The idea was that we'd have this simple collection of repeated, reusable concepts in Object-Oriented Programming. The reality is that most people can only remember the Singleton pattern, and we'd rather they didn't use it. What should we have learned from Design Patterns?

Архитектура мобильного приложения
,
Мобильные приложения / другое
Программный комитет ещё не принял решения по этому докладу

Reverse Reverse Engineering Engineering 101

Royi Benyossef

Mobile app developers spend countless man thinking about color palettes, user stories and software architecture in order to create a flawless design, seamless experience and impeccable service. But few put as much effort into securing their applications against hackers and reverse engineering, meaning all their hard work could be destroyed by a simple downloaded script.

App developers and mobile startups are vulnerable to hacking more than ever before and must learn how to protect themselves. Based on personal experience I have learned how these hacking tools work, how to detect if you've been hacked, and how to employ easy-to-use tools and patterns to protect yourself from reverse enginee

Архитектура платформы Google Android
,
Безопасность в мобильных приложениях
Программный комитет ещё не принял решения по этому докладу

Архитектура слоя исполнения асинхронных задач

Степан Гончаров

В этом докладе мы углубимся в архитектуру мобильных приложений и обсудим, зачем нужно выделять отдельный слой для исполнения асинхронных задач, разберем требования и существующие решения, пройдемся по плюсам и минусам, а также рассмотрим одну из реализаций данного подхода.

В течение этого доклада слушатели не только научатся лучше управлять своими асинхронными задачами, но также узнают, зачем каждой задаче иметь свой ID, что такое стратегии исполнения и как они помогают упростить и ускорить разработку всего приложения.

Доклад принят в программу конференции

The A, B and C of Lifecycle Components

Nishant Srivastava

If you've been developing Android applications for a while now, you know the pain of handling the lifecycle just right. It’s a pain-point that has existed since the advent of Android, up until recently when Google released Architecture components. As an Android developer, you are bugged by handling activity/fragment lifecycle and flow of data in tandem with the lifecycle changes day in and out. Making your code aware of the lifecycle of the process/activity/fragment makes you more confident as a developer and enables faster development.

This session would enable you to understand Lifecycle components (ProcessLifecycleOwner, LifecycleOwner, LifecycleObserver) and how they can be leveraged.

Технологии и языки для Android: Java, Kotlin
,
Архитектура мобильного приложения
Программный комитет ещё не принял решения по этому докладу

When SOLID is unsound

Александр Сычев

SRP, OCP, YAGNI, KISS, SOLID... Чем больше работаешь в разработке, тем больше новых акронимов узнаешь и тем больше тебя убеждают, что им нужно следовать прямо и неукоснительно. При этом о каждом паттерне или принципе можно сказать:

- Его соблюдение не гарантирует, что код автоматически становится корректным, расширяемым и сопровождаемым.
- Его несоблюдение не гарантирует, что код автоматически становится проблемным, нерасширяемым и несопровождаемым.
- Его соблюдение может решит текущие проблемы, но и породить новые.

В докладе поговорим о границах применимости пяти основных принципов объектно-ориентированного программирования и о том, к чему может привести over-SOLID engineering.

Методы и техника разработки ПО
,
Архитектуры / другое
,
Архитектура мобильного приложения
Программный комитет ещё не принял решения по этому докладу

“Make your app work perfectly offl…” — Connection Interrupted

Xavier F. Gouchet
Jérémy Bartolomeu Bonze

As developers, more often than not, you have access to fast and reliable internet connection, all day long. But the users you target won't. Limited data plans, unreliable network coverage, commuting : those are real obstacle that your users will see daily. This means that network will only be available at some times, and not necessarily when the user wants to interact with your application. Our talk will focus on creating a user experience with ‘offline’ being the default working state, and having access to the internet being a bonus for your users.

Архитектура мобильного приложения
Программный комитет ещё не принял решения по этому докладу

a/b тестирование которое делает счастливами: продукт-менеджеров, аналитиков, разработчиков и тестировщиков

Александр Краснов

Формула прибыли и оценка стоимости фичи через a/b.

Рыночные решения a/b и их недостатки.

Наши требования к a/b и почему ничего из рынка нам не подошло.

Единый, эффективный формат хранения, передачи и аналитики фича-состояний.

Как жить с a/b и автотестами одновременно?

Как наша архитектура у нас работает со стороны всех стейкхолдеров.

Проектирование информационных систем
,
Аналитика / другое
,
A/B-тестирование
,
Особенности процессов разработки и тестирования мобильного ПО
Программный комитет ещё не принял решения по этому докладу

Design by Contract

Graham Lee

People are getting interested in functional programming now and designing their software as functions that transform data from one type to another, rather than recipes that sequentially modify some state. The claim is that we can "reason about" our software better, design by contract is about capturing that reasoning as statements about the inputs and outputs of our functions, and connecting those together to make sure that our software works correctly for _any_ valid input, not just the few cases we thought about in unit tests.

Архитектура мобильного приложения
,
Мобильные приложения / другое
Доклад принят в программу конференции

Технологии iOS

Инфраструктура для UI тестирования в Авито

Владислав Алексеев

Расскажу про опыт разработки, запуска, стабилизации и ускорения функциональных тестов в Авито. Вместе разберем общие проблемы, которые встречаются на пути каждого, кто пытается внедрить тестирование в своем проекте: от самых простых вида какие тесты писать до сложных вроде как прогонять тесты на нескольких симуляторах и физических компьютерах наиболее эффективно. Узнаем, как можно ускорить тесты простыми методами, как вылечивать красные тесты, поддерживать инфраструктуру для прогона тестов на нескольких версиях iOS, обходить ограничения TeamCity, анализировать поведение инфраструктуры во время прогона. Дам идеи, укажу на инструменты, которые используем мы.

Непрерывная интеграция
,
Функциональное тестирование
,
Автоматизация тестирования
,
Тестирование мобильного ПО
,
Технологии и языки для iOS: ObjectiveC, Swift
,
Особенности процессов разработки и тестирования мобильного ПО
,
Мобильные приложения / другое
Программный комитет ещё не принял решения по этому докладу

Управление зависимостями в iOS

Евгений Елчев

Что такое внедрение зависимостей
Как оно связано с управлением зависимостями
Какие есть альтернативы
Можно ли внедрить внедрение зависимостями без фреймворков
Как это правильно внедрить в iOS приложении

Архитектура мобильного приложения
Программный комитет ещё не принял решения по этому докладу

CodeGen all the things!

Olivier Halligon

Swift is a great, type safe and powerful language. But some stuff are still cumbersome to write yourself. And some APIs could deserve more type-safety and less string-based methods.

Learn how Code Generation tools like Sourcery and SwiftGen can help you on your daily developement tasks: avoid typing boilerplate and repetitive code like implementing a custom 'Equatable' implementations, add type-safety and auto-completion for your resources (Localized strings, images, storyboard…), avoid maintenance of your constants, and make sure you catch errors at compile time rather than by luck at runtime.his ta

Технологии и языки для iOS: ObjectiveC, Swift
Программный комитет ещё не принял решения по этому докладу

Обработка ошибок в iOS-приложении

Владимир Шутов

* Виды ошибок;
* Как с ними работают и почему это плохо;
* Как спроектировать ошибку правильно. Как выглядит модель «Ошибка», её обязательные поля. Преобразование «чужих» ошибок в свои;
* Как обрабатывать ошибки, какие методики существуют. Наш опыт.

Архитектура мобильного приложения
Программный комитет ещё не принял решения по этому докладу

Математические основы Auto Layout.

Антон Сергеев

Auto Layout - это очень медленный инструмент для верстки, а его отладка крайне сложна. Думаю мало кто не согласится с этим утверждением. При этом Apple продолжает его развивать и, похоже, не собирается предлагать альтернатив.
Это типичный пример сложной судьбы продвинутых технологий, которые обладают красивым и простым интерфейсом. До определенного уровня они решают все проблемы, а потом начинают вести себя контринтуитивно. Это лишь означает, что пришло время разобраться в том, как он работает изнутри.
В ходе доклада мы научимся понимать Auto Layout. Разберемся какую задачу он решает и как он это делает. Разберемся, когда его использовать не стоит. И самое главное, научимся "проектировать ограничения", а не "подгонять ограничения под ответ".

Алгоритмы и их сравнение
,
Архитектура платформы iOS
Программный комитет ещё не принял решения по этому докладу

Crypto, use it right

Marcin Krzyzanowski

Let's discuss how to use Cipher, what is AES and how to authenticate a message. Dive deep into basic cryptography basic primitives. Let's make it a group therapy session.

Технологии и языки для iOS: ObjectiveC, Swift
Доклад принят в программу конференции

Apple CoreML + IBM Watson = YOUR Cognitive App

Кашлина Виктория

В марте 2018 года компания Apple объявила об интеграции CoreML с умным IBM Watson. Но так ли близка когнитивная эра в вашем iPhone?

В основном, мы знаем о примерах с Visual Recognition и забываем, что новые технологии предоставляют гораздо больше интересных возможностей. Также появляется все больше инструментов, которые позволят вам быстро, легко и качественно "подружить" objective-c с нейронными сетями.

В своем докладе я расскажу о существующих трендах рынка мобильных приложений с нейронками, проведу сравнительный анализ систем, а также дам новый рецепт того, как сделать ваше iOS-приложение более человечным! :)

Аналитика / другое
,
Технологии и языки для iOS: ObjectiveC, Swift
,
Мобильные приложения / другое
,
Machine Learning
Программный комитет ещё не принял решения по этому докладу

Machine Learning + Mobile: настоящее и будущее

Андрей Володин

Публичные тезисы потребуют редактуры и доработки.

Мобильные приложения / другое
Программный комитет ещё не принял решения по этому докладу

"Latency numbers" на iPhone

Дмитрий Куркин

"Latency Numbers Every Programmer Should Know". Надеюсь, и вы с ней знакомы. Но тем не менее, она датируется 2012-м годом и ориентирована на десктопы. А как бы она выглядела для современного iPhone?

Как, вообще, можно делать замеры такого масштаба? Справится ли с этим XCTest::measure? С учетом этих чисел - что такое для iPhone быстро, а что очень долго?

В докладе я отвечу на эти вопросы, покажу результаты замеров и как они получены. Сделаю замеры типовых задач iOS-приложения.

Аппаратные и программными возможности мобильного устройства
Программный комитет ещё не принял решения по этому докладу

Что нам стоит видеоредактор построить

Макс Никулин

В докладе вы узнаете о том, как устроена обработка видео в общем виде, из каких основных частей может состоять абстрактный мобильный видео-редактор, в чем фундаментальные отличия предметной области между платформами iOS и Android.
А также мы более подробно остановимся на различных вариантах реализации частей видео-редактора для платформы iOS на основе AVFoundation, а также посмотрим как можно применять обычные подходы проектирования к нашей предметной области.

Технологии и языки для iOS: ObjectiveC, Swift
,
Работа с графикой, 3D Моделирование
Программный комитет ещё не принял решения по этому докладу

Говорим на нескольких языках: Swift и Objective-C в одном проекте

Александр Сычев

iOS-разработчик должен в равной степени владеть двумя языками программирования: проверенным временем Objective-C и активно развивающимся Swift. Языки совместимы и допускают создание проектов, содержащих файлы, написанные на любом из них. Но взаимодействие двух языков, позволяющее легко вносить изменения в проект и поддерживать достаточную гибкость - задача нетривиальная и требующая пристального внимания. 

В докладе поговорим о создании приложений на разных языках и о принципах их взаимодействия. 

Технологии и языки для iOS: ObjectiveC, Swift
,
Особенности процессов разработки и тестирования мобильного ПО
Программный комитет ещё не принял решения по этому докладу

Algebraic Data Types

Michael Brandon Williams

There is a wonderful correspondence between the Swift type system and simple algebra. We can use this connection to simplify data structures so that illegal states are unrepresentable by the compiler.

Технологии и языки для iOS: ObjectiveC, Swift
,
Архитектура платформы iOS
Программный комитет ещё не принял решения по этому докладу

Swift concurrency model

Александр Андрюхин

"Целью проекта Swift является создание лучшего языка с областью применения от системного программирования до мобильных и десктопных приложений, а также облачных сервисов". Таким его хотят видеть в перспективе, но на данный момент он обладает рядом недостатков, в частности, в вопросах многопоточности.

В докладе рассмотрим проблемы существующей модели конкурентности, обсудим, каким может быть ее будущее и как оно связано с async/await, корутинами и акторами.

Технологии и языки для iOS: ObjectiveC, Swift
Программный комитет ещё не принял решения по этому докладу

Let it build: Прокачиваем Mac как сервер сборок

Георгий Зиняков

Когда ваш проект растет и вы понимаете, что для сборок и построения ci/cd недостаточно облачных сервисов или одного мака, ваша инфраструктура начинает расширяться. Как управлять большим парком сборщиков ios-проектов? Как из клиентно-ориентированной macOS соорудить автономного монстра, который будет стабилен и самостоятелен в роли высоконагруженной ci-системы?

Программный комитет ещё не принял решения по этому докладу

Swift for iOS SDKs

Eric Giannini

At WWDC 2017 Apple launched a brand new feature of Swift called the 'codable' protocol that empowers developers with the ability to encode or decode Swift data structures into or out of JSON data.

The developer community from one end of the spectrum to another is celebrating how the 'codable' protocol vastly simplifies the process of coding data. Here are just a few of the talks written about 'codable':

- [try! Swift Tokyo 2018 - Codable Routing with Kitura](https://www.youtube.com/watch?v=5ciZS7Cxyp0)
- many many more
- many many many more
- many many many many more

Here is the number of talks written about Objective-C: 0. You can see that developers are not particularly interested in celebrating a language whose features have not evolved much at all in the past thirty years. Many developers have already been dispatching eulogies over its legacy: https://academy.realm.io/posts/altconf-aaron-hillegass-eulogy-for-objective-c/ Who wants to write an SDK in a 'dead' language like Latin or Greek? No one does.

Программный комитет ещё не принял решения по этому докладу

Модуляризация приложений с помощью JSCore

Вадим Новосельцев

Что вообще такое JSCore, как с помощью него можно что-то модуляризировать, и, самое главное, нужно ли это? А так же поговорим об альтернативах и не забудем о подводных камнях.

Программный комитет ещё не принял решения по этому докладу

CoreData в высоконагруженном проекте

Дмитрий Иванов

Мы начнём с краткого описания основного (наипростейшего) сценария использовнания CoreData, предлагаемого в туториалах. Мы затронем основные сущности CoreData (контекст, координатор, модели, контроллер результата).

Затем в докладе будут раскрыты проблемы, с которыми сталкивается разработчик, применяющий классическую конфигурацию в проекте, где более пары сохраняемых сущностей, и присутствует многопоточный доступ к данным. Далее пройдёмся по основным путям решения подобных проблем, подробно остановившись на различных вариантах реализации CoreData-конфигураци (CoreData stack).

Затем будет рассказано об опыте внедрения подобных подходов, о набитых шишках и сделанных выводах.

В конце доклада будут упомянуты некоторые доработки и приёмы, выработанные докладчиком и его командой уже после внедрения раскрытых выше подходов и приёмов. Также будут затронуты особенности архитектуры проекта, сильно подвязанного на CoreData.

Программный комитет ещё не принял решения по этому докладу

Swift & Objective-C - The most adventurous mashup since…

Matthias Tretter

In a perfect world many of us would choose to have a 100 % Swift codebase, while others would choose to have a 100 % Objective-C codebase - both of which are perfectly fine. Would you choose to maintain a mixed codebase? Probably not, but that‘s the reality many of us live in. Legacy Code, don‘t we all love it? While Mix & Match between Swift and Objective-C works great out of the box, there are many rough edges. Let‘s explore some tricks we can use to bring first-class APIs to both worlds - restoring our sanity, and harmony between both languages.

Технологии и языки для iOS: ObjectiveC, Swift
Программный комитет ещё не принял решения по этому докладу

Using Abstract Algebra to derive a better Animation Library

Brandon Kase

Designing simple and expressive libraries is hard, but is a worthy goal. It's too easy to accidentally add complexity. Math can fix that. Math can give us guide-rails that point us to an ideal simple and expressive design. In this talk, we'll use basic abstract algebra to guide us toward a simple and expressive animation library. We'll use animations to help us understand abstract algebra as we discover the true algebraic structure of animations. Only after thinking hard about the structure, do we begin an implementation. In the end, I'll present some examples of working with this animation library we derived over the talk.

Технологии и языки для iOS: ObjectiveC, Swift
Программный комитет ещё не принял решения по этому докладу

The Power of Making Your App Accessible

Matthias Tretter

Accessibility is a very important topic, that is often overlooked or, at best, added as an after-thought. This is very unfortunate, as Apple is doing a great job at providing good and simple to use APIs to make our apps accessible. Apple is fully committed to Accessibility and in providing an equal user experience for all their users, and so should we. The goal of this talk is to give an in-depth look at Accessibility on iOS, as well as outlining the reasons on why to use Accessibility by giving real-world examples of its importance.

Технологии и языки для iOS: ObjectiveC, Swift
Доклад принят в программу конференции

Concurrency Primitives

Michael Brandon Williams

We will develop first class types for encapsulating the ideas of synchronous and asynchronous work. These types have lots of interesting compositional properties. We will explore these properties and compare them to async/await style of concurrency that may be in Swift's future.

Технологии и языки для iOS: ObjectiveC, Swift
,
Архитектура платформы iOS
Программный комитет ещё не принял решения по этому докладу

Adding Polish with Animations on iOS

Sam Davies

Your app is great—the functionality is exactly what you wanted, but you can't help but think there is something missing. Why doesn't your app feel as playful as the Apple Music app? Or as fun to use as Waze?
In this talk we'll take a look at some popular apps that truly delight users, and investigate how to recreate some of the animations and UX experiences. Expect to discover stuff you never know about layers and view controller presentation.

Технологии и языки для iOS: ObjectiveC, Swift
Программный комитет ещё не принял решения по этому докладу