40
Think dierent, Unleash your potential! @LoicOrtola http://loicortola.com

CatDroid talk: thinking different, sharing ideas

Embed Size (px)

Citation preview

Page 1: CatDroid talk: thinking different, sharing ideas

Think different,Unleash your potential!

@LoicOrtola

http://loicortola.com

Page 2: CatDroid talk: thinking different, sharing ideas

A changing world

2

2005

2013

AUG | Barcelona, May 13th 2015

Page 3: CatDroid talk: thinking different, sharing ideas

A changing world

3 AUG | Barcelona, May 13th 2015

Page 4: CatDroid talk: thinking different, sharing ideas

New challenges

!   Battery life !   Connectivity !   Diversity of devices, versions, screen sizes !   Lack of standards !   DORA (Develop Once, Run Anywhere)

But also !   Increase of chemical waste !   Electromagnetic radiations !   Security leaks, ID Theft

AUG | Barcelona, May 13th 2015 4

Page 5: CatDroid talk: thinking different, sharing ideas

New tools for new uses

Gyroscope, Accelerometer, GPS, BLE, Cardio frequency meter, NFC, WiFi

Page 6: CatDroid talk: thinking different, sharing ideas

Location, location, location

! Where you are on earth !   The direction you’re looking at

… Basically, we can see through your eyes.

6 AUG | Barcelona, May 13th 2015

Page 7: CatDroid talk: thinking different, sharing ideas

Relative Location: Virtual Reality

!   Oculus Rift !   Google Cardboard Dive city rollercoaster Proton Pulse VRSE

Orbulus Vanguard V Use cases: IMMERSION

7 AUG | Barcelona, May 13th 2015

Page 8: CatDroid talk: thinking different, sharing ideas

Relative + Absolute Location: Augmented Reality

! Layar ! VuForia ! MetaIO ! evenTribe AR (Stay Tuned)

Use cases: Advertisement / Services / Gaming

8 AUG | Barcelona, May 13th 2015

Page 9: CatDroid talk: thinking different, sharing ideas

Meet BLE

!   Relies on GATT (Generic Attribute Profile) ! Device Advertises itself ! When paired to a central device, will stop advertising. (only one-to-

one) !   Exchanges Data at periodic intervals !   Transaction = Set of services, which hold Characteristics !   Official services (16bit address):

https://developer.bluetooth.org/gatt/services/Pages/ServicesHome.aspx

!   Custom services: (128bit address) More info https://developer.android.com/guide/topics/connectivity/bluetooth-le.html

Example: HeartRate Service: 0x180D 3 Characteristics: Heart Rate measurement, Sensor Location, Heart Rate control point

9 AUG | Barcelona, May 13th 2015

Page 10: CatDroid talk: thinking different, sharing ideas

BLE limitations

! Throughput: !   ACK vs no-ACK? ! Packet <= 20byte data !   Max number of packets / event (usually btw 2 and 6) ! Connection interval (central & peripheral, usually tens of ms)

Example: iOS 8.3, 30ms min connection interval iPhone 6, iOS 8.3 + nRF51822 = 16kbps throughput ! Frequency emission:

!   2.4 Ghz (same as Wifi) !   Can be diffracted, absorbed, or interferred by water

10 AUG | Barcelona, May 13th 2015

Page 11: CatDroid talk: thinking different, sharing ideas

iBeacons

! Instead of being constrained by a one-to-one relationship to push and pull information, one can use the payload bits of the advertisement mode to broadcast data.

!   Pros: Costless, energy efficient, asynchronous

!   Cons: Unidirectional, public, lightweight Looks like a hack! But that’s awesome! Even better: Signal strength can be used to give « proximity » contextual info. Some also say « indoor geolocation » (Woooow)

11 AUG | Barcelona, May 13th 2015

Page 12: CatDroid talk: thinking different, sharing ideas

Proximity: Target Advertisement

! BeaconWatcher ! Kontakt ! BlueUp

“Welcome to the underwear department. Tap here to get 20% off the latest Superman boxers” Use cases: Advertisement / Services / Gaming

12 AUG | Barcelona, May 13th 2015

Page 13: CatDroid talk: thinking different, sharing ideas

Let’s brainstorm

How to extend the actual technologies to brand new concepts?

Page 14: CatDroid talk: thinking different, sharing ideas

Indoor Geolocation

! iBeacons have algorithms to compute distance to Beacon Question: How can we perform indoor Geolocation with this idea?

AUG | Barcelona, May 13th 2015 14

Page 15: CatDroid talk: thinking different, sharing ideas

Indoor Geolocation

15 AUG | Barcelona, May 13th 2015

1 2

3

d1 d2

d3

x

y

Page 16: CatDroid talk: thinking different, sharing ideas

Indoor Geolocation

!   Truth is… The distance computation algorithm looks like this:

! txPower: Factory calibrated, read-only constant which indicates the expected RSSI at a 1 meter distance of the beacon

!   RSSI: Received Signal Strength Indicator

protected static double computeDistance(int txPower, double rssi) { if (rssi == 0) { return -1.0; } double ratio = rssi / txPower; if (ratio < 1.0) { return Math.pow(ratio,10); } else { return 0.89976 * Math.pow(ratio,7.7095) + 0.111; } }

16 AUG | Barcelona, May 13th 2015

Page 17: CatDroid talk: thinking different, sharing ideas

Indoor Geolocation

!   Truth is… The distance computation algorithm is completely arbitrary.

!   Does it work? !   No. There can be complete aberrations in terms of distance

!   Can we do something? !   The more beacons, the better the estimation? Not really -> Device calibration deltas, Battery level, Device position blurs everything away

!   Why? !   2.4Ghz

AUG | Barcelona, May 13th 2015 17

Page 18: CatDroid talk: thinking different, sharing ideas

Indoor Geolocation

!   Solution: Stop thinking like everyone else. Let’s change the paradigm.

!   I cannot do triangulation and distance estimation with beacons.

!   But I can tell which is the closest!

AUG | Barcelona, May 13th 2015 18

Page 19: CatDroid talk: thinking different, sharing ideas

Indoor Geolocation

!   Solution 1: Beacon Grid

AUG | Barcelona, May 13th 2015 19

Page 20: CatDroid talk: thinking different, sharing ideas

Indoor Geolocation

!   Solution: Stop thinking like everyone else. Let’s change the paradigm.

!   I cannot do triangulation and distance estimation with beacons.

!   But water absorbs or creates interferences with the signal

AUG | Barcelona, May 13th 2015 20

Page 21: CatDroid talk: thinking different, sharing ideas

Indoor Geolocation

!   Solution 2: Signal heatmaps

Calibration Runtime

-76dbm

-80dbm -78dbm

-77dbm -90dbm

-80dbm -78dbm

-77dbm

AUG | Barcelona, May 13th 2015 21

Page 22: CatDroid talk: thinking different, sharing ideas

Indoor Geolocation

!   Solution: Stop thinking like everyone else. Let’s change the paradigm.

!   I cannot do triangulation and distance estimation with beacons.

!   But bluetooth or wifi advertising does tell me there is a device around.

AUG | Barcelona, May 13th 2015 22

Page 23: CatDroid talk: thinking different, sharing ideas

Indoor Geolocation

!   Solution 3: Wifi / Bluetooth proximity

Results should be close to Solution 1

00:0C:XX:XX:XX -76dbm

AUG | Barcelona, May 13th 2015 23

00:0C:XX:XX:YY -56dbm

Page 24: CatDroid talk: thinking different, sharing ideas

Inter-Device communication

!   NFC needs a compatible device (Android vs iOS) ! Wifi requires a router !   Bluetooth is only one-to-one

Question: How can we develop other ways of inter-device

communication?

AUG | Barcelona, May 13th 2015 24

Page 25: CatDroid talk: thinking different, sharing ideas

Inter-Device communication

!   The Old-fashioned Way:

Every phone has a camera. We can scan coded visual information QRCodes… … Or encoded images

AUG | Barcelona, May 13th 2015 25

Page 26: CatDroid talk: thinking different, sharing ideas

Inter-Device communication

!   The SquareUp Way:

Every phone has an audio jack. …Remember morse code?

Cons: May look like we are exchanging Pokemons with our Cable Link

AUG | Barcelona, May 13th 2015 26

Page 27: CatDroid talk: thinking different, sharing ideas

Inter-Device communication

!   Audio Watermarking

How to hide bytes in the 12-15khz frequencies? è AWT2

Play your favorite music, and seamlessly transport information …Radios already do this remember?

AUG | Barcelona, May 13th 2015 27

Page 28: CatDroid talk: thinking different, sharing ideas

Inter-Device communication

!   P2P gods !   If Device 1 connects to Device 2 and 3 and Device 2 to Device 3

and 1 etc… !   We are creating an Ad-Hoc P2P network!

Wait… Are you saying we could solve internet connectivity problems in the subway? After crowdsourcing, why not crowdconnectivity?

AUG | Barcelona, May 13th 2015 28

Page 29: CatDroid talk: thinking different, sharing ideas

Exchanging ideas: Developer Libraries & Marketing tools

New libraries, Memory Leaks finder,

Automated App Deployment Instant App Bundling

Page 30: CatDroid talk: thinking different, sharing ideas

Out this week

! LeakCanary, by Pierre-Yves Ricaud (Square) !   20+ Android leaks discovered and issued to google in a couple

days !   Amazingly useful to understand design flaws in your app !   Discreet, lightweight, transparent in production

AUG | Barcelona, May 13th 2015 30

Page 31: CatDroid talk: thinking different, sharing ideas

Maps

!   Google Maps: Requires API-Key, requires commercial license if commercial use, lack of good caching, brings Google Play Services and its 40k methods…

! OpenStreetMap: Yes! You can do anything if you know how to make a TileServer (switch2osm.org)

!   But… !   Libraries still too young for vector tiles (OperPassAPI/mapbox-gl) !   Historical android library (osmdroid) sucks! !   Since 02/15, mapbox-android-sdk can be considered mature

enough, with an interesting set of technologies and a solid community of contributors

AUG | Barcelona, May 13th 2015 31

Page 32: CatDroid talk: thinking different, sharing ideas

Misc

!   Dagger 2 ! CouchBase Mobile? !   Jackson !   Android Annotations ! OkHttp !   Picasso, Universal Image Loader ! Crashlytics ! Piwik !   Fabric !   Retrofit

What about you?

AUG | Barcelona, May 13th 2015 32

Page 33: CatDroid talk: thinking different, sharing ideas

App Templating

!   You developed the Awesome World Congress 2015 App

!   May be used for lots of similar events, with pretty much the same codebase.

!   Feature-driven developments are interesting but tough to loosely couple with content.

!   Deployment is time-consuming, upgrades and migrations even worse.

Question: How can we provide loose coupling btw code and content, and optimize deployments and upgrades?

AUG | Barcelona, May 13th 2015 33

Page 34: CatDroid talk: thinking different, sharing ideas

App Templating

!   You are developing the Awesome World Congress 2015 App (Congratulations! :D )

!   Features: !   3D-Map (an embedded MBTiles file, plus an OpenStreetMap layer

with coordinate bounds) !   AR View !   Schedule of the conferences !   Set of POIs (companies, stands) and their description !   Speakers Biography !   Built-in tweetdeck

AUG | Barcelona, May 13th 2015 34

Page 35: CatDroid talk: thinking different, sharing ideas

App Templating

!   Develop, templatize

! Develop your app as usual

! Backend, DB, Android/iOS Mobile App, Website

!   Brand your product for the Awesome World Congress 2015, and make a huge impression.

35

Page 36: CatDroid talk: thinking different, sharing ideas

!   Develop, Templatize

! Classical way: !   for each show { git checkout –b congressXXX2015 git commit… git commit… git commit… git rebase / git merge / etc… }

!   Stop making n-times the necessary adjustments and customizations.

! Proposed Way: ! Templatize your code once, then customize with content

36

Now, your app was SO cool that 50 more shows and events want you to make theirs, with the same features

Congress XXX App

App Templating

Page 37: CatDroid talk: thinking different, sharing ideas

!   Why do this? !   Because you completely separate your codebase from your content. !   Because deploying new versions is easier (no 50 branches to rebase) !   Because you gain loads of time (compilation can even be avoided)

!   Metrics? !   Depends ;)

37

App Templating

Page 38: CatDroid talk: thinking different, sharing ideas

Instant App Creation

!   Sometimes, an app template really makes sense for anyone to make very custom services.

!   Sometimes, an app is disposable (POC). !   Marketing guys only care about TTM.

Question: How can we allow non-technical people to create real native apps in a friendly environment?

AUG | Barcelona, May 13th 2015 38

Page 39: CatDroid talk: thinking different, sharing ideas

Instant App Creation

!   Well, you’ve already made a template and separated your code from your content !   Simply APIfy and bring nice widgets to provide an abstraction of the

complexity

Example: the “Make your congress App” website: •  Upload an excel or csv file with your POIs •  Upload a Google calendar file with the schedule of conferences •  Upload an excel or csv file with the list and bios of speakers •  Choose the coordinate bounds and overlay your map •  Choose the theme color, customize the wording, change the app

name, the app icon, the splashscreen •  Click “Generate”, wait 20 seconds, download your APK

AUG | Barcelona, May 13th 2015 39

Page 40: CatDroid talk: thinking different, sharing ideas

Thanks guys, it was a blast!

!   Let’s follow each other! @LoicOrtola

!   And let’s keep in touch!

40 AUG | Barcelona, May 13th 2015

[email protected] concept.designmyapp.mobi developer.designmyapp.mobi

I think I’m being followed