PyCon 2016 in Portland, Or
hills next to breadcrumb illustration

Tuesday 5:10 p.m.–5:40 p.m.

A tale of two cellphones: Python on Android and iOS

Russell Keith-Magee

Audience level:
Intermediate
Category:
Python Libraries

Description

Python is enjoying a surge in popularity due to it's features as a language. However, over the last 10 years, mobile platforms have increased in importance, and Python doesn't have a good story on these platforms. In this talk, Dr Russell Keith-Magee will give a technical dive into the work the BeeWare project has been doing to make Python as simple to use on Mobile as it is on other platforms.

Abstract

It has been possible to write mobile applications in Python for a couple of years; there have been various iOS and Android libraries and apps that allow you to run and write Python on your mobile device. However, the idea of writing mobile applications in Python has never really gone mainstream. This is a major challenge for Python as a language; if Python isn't able to service this major new platform, it risks obsolescence in favour of languages that can. Over the last two years, the BeeWare project has been developing tools that allow developers to write mobile applications in Python. The goal of this work is to make it as easy to develop a mobile application as it is to develop web applications or data analysis tools. The process of developing these tools requires some deep diving into the internals of Python and it's implementations, a lot of dead ends, and (unfortunately) writing a lot of code in languages other than Python. This talk will be an "under the hood", deep technical dive into the tools and techniques that are needed to achieve support for Python on iOS and Android (as well as looking at a few techniques that don't work). Along the way, it will hopefully inspire you to see the possibilities for Python on Mobile as a platform, and expose you to some interesting features of Python that you may not have encountered previously, like descriptors, metaclasses, bytecode manipulation, and type annotations.