Showing posts with label android. Show all posts
Showing posts with label android. Show all posts

Thursday, 17 March 2016

Mobile@Scale 2016

Last month Facebook invited mobile developers into their London offices for a collaborative discussion on scaling mobile development.

The focus was mainly on native development — and the attendees were mostly iOS and Android developers — but the scope expanded to include scaling development processes as well as how to scale apps for lots of users.

Jim Purbrick @JimPurbrick, Engineering Manager in Facebook London’s office, introduced the talks by saying that on mobile, the bug stakes are higher — once a bug is released, the app is on people’s phones and is much harder to fix. You can’t just update the code and see people get the fix in the next page refresh.

And for all the focus on ending up with a native app in the platform-specific app store, two of the big themes were sharing code across platforms and being able to make quick changes to apps that were already deployed.

I was impressed by the inclusivity of the conference — not only were the speakers from a variety of companies (not just Facebook or Facebook partners) but the audience were encouraged and given time to ask questions and discuss with the speakers.

The talks and discussions were all videoed and I’ve linked to them below together with my notes highlighting the points that made an impression on me.

Scaling iOS @ Google

Michele Aiello @micheleaiello, Tech Lead Manager on the Calendar app, Google

Michele gave a really detailed talk about how the iOS teams at Google deal with handling large amounts of code shared amongst many geographically spread developers. There’s lots of useful nuggets in here — and it’s interesting to see where Google have invested time and effort in order to make cross-platform and large team development easier.

Scaling iOS @ Google - Michele Aiello

Posted by At Scale on Monday, 28 March 2016
  • Google has more than 60 apps in the Apple App Store!
  • iOS devs have moved from London to every office worldwide
  • strategy on how to share code really important
  • design & ease of use crucial for scaling apps
  • yearly gathering of all mobile developers
    • often start shared efforts there
  • regular tech talks in local offices + recorded & streamed around the world
  • have feature specific “Tiger teams”
    • one goal: ship a feature
    • cross functional: Android, iOS, web, PM, UX, API, etc
  • have trouble with merging & reviewing xib, project & storyboard files
    • so Chrome team developed GYP: JSON for structure & dependencies
    • GYP: “generate your project”
    • use storyboard & xibs for prototyping, then shared code for elements
  • release management:
    • regular releases every 2-6 weeks
    • with feature flags to toggle new features
    • compile time flag during initial dev, then runtime flags for later
    • known as the release train
    • heavier-weight trains need synchronising with marketing etc — ok to be a little late
    • 75%-80% of users are using auto-update so automatically get updates
  • testing:
    • XCTests for functional and performance
    • KIF & Earl Grey for UI tests
  • sharing code
    • single repo
    • HEAD is always stable
    • all code is available and shared
    • making a change in shared code: see the test results and roll back if issues
  • for any shared code
    • enforce documentation & example code
    • catalog app for UI elements
  • for cross platform sharing
    • try to share model cross platform and to server too
    • makes offline easier
    • have tried webviews & javascript
    • now using C++ & J2ObjC
      • C++ easy on iOS, complicated on Android
      • used in Chrome
      • j2ObjC used for Inbox
    • j2ObjC even lets you debug into transpiled Java code in Xcode
      • breakpoints, stepping, variable values all work
    • if code is simple, look at sharing the tests rather than the code
  • swift at Google: currently playing with it
    • have found that development is faster
    • probably waiting a few months to bring into production apps
  • user testing using beta releases (testflight, android beta)
    • metrics in the app
    • surveys after testing
  • have tools to search whole repo to find out if code is still used
  • sharing layout
    • done using sharing layout logic

When mobile IDEs need to scale

Al Sutton @AlSutton, Facebook

Al talked about how Facebook builds Android apps, and how they feed back improvements to their build process into the open source community (e.g. IntelliJ community edition and the Buck build tool). By using Buck, they allow their developers to choose whatever IDE they want.

Nuclide

James Pearce @JamesPearce, Head of Open Source at Facebook

James continued from Al’s Android introduction to talk about Facebook’s new Nuclide IDE for building iOS apps… It’s exciting to see some competition in the iOS IDE world — whilst Xcode is great at some things, it often leaves a lot to be desired. JetBrains’ AppCode is a useful challenger but to have an extensible open-source IDE for iOS could be a game changer. The only downside for me is that Nuclide relies on Buck, so you have to change your project to buy in to the Facebook toolchain. Perhaps if someone could create a Fastlane plug-in…?

  • unlike IntelliJ, Xcode is not open source, so can’t contribute
  • existential issue for Facebook…
  • started extending Atom from github
  • aded Flow, Babel, Clang & Buck
  • created Nuclide
  • also added Chromium dev tools to help debug into app
    • lets you debug into Javascript, Objective C, etc all in same place
    • transpiling keeps source maps to help with line numbers
    • also lets you inspect into UI hierarchy for ReactNative apps
    • includes highlighting
  • now have 2/3rds of committing engineers using Nuclide
  • have analytics built-in
    • tracking feature usage
  • internal infrastructure team has become a product team
  • now available at http://nuclide.io
    • analytics kept for internal
  • other open source projects
    • pop: iOS animation library
  • doesn’t have refactoring yet

6 lessons learned scaling mobile at SoundCloud

Next up were a couple of sessions from smaller companies (though still not small!) showing how they built and adapted their apps faster to keep up with demand. SoundCloud spoke about using ReactNative (more on that later) and how they structured their dev teams to include mobile developers.

Jamie McDonald (Android) @jdamcd & Matej Balatic (iOS) @skavt, SoundCloud

  • building out new SoundCloud Pulse app for people creating sounds
  • most engineers busy on main SoundCloud listener app
  • got a partner for Android, but built iOS app with ReactNative using web developers
  • shared design & feature set across platforms saves a lot of time
    • were previously designing features twice
    • marketing was more complex too
  • mobile specific API
    • mobile-specific features: background sync, batch fetches
    • “back-end for front-end” idea from ThoughtWorks
  • developed C-based mobile playback library (skippy)
    • initially for Android, now rolled out across iOS too
    • e.g. optimise streaming for emerging markets
  • tried to spread mobile devs through feature teams
    • but spread too thinly
    • weren’t able to pair and share knowledge
  • instead created clusters of feature teams
    • mobile engineers shared amongst each cluster
    • could be in enough numbers together
  • release train model
    • each feature team can take responsibility for shipping
    • allowed action but also feedback and responsibility
    • use feature flags — team responsible for turning on when ready
  • tools used:
    • iOS:
      • FlipTheSwitch
      • stable CoreData stack — specific use of framework
    • Android, use LightCycle (soon to be open-sourced)
      • forward life cycle events to small independent modules
      • receives callbacks but doesn’t need to know which activity its attached to
      • enables better unit tests as can separate things out more effectively

Backend-driven native UIs

John Sundell @johnsundell, iOS Developer, Spotify

Spotify have an almost completely content-based app and are constantly tweaking to change the presentation and priority of different music. John and his team came up with a way of handling that change by controlling the whole app UI from the backend API.

  • define components in backend API
  • generalised data binding
  • generalised components
    • implement standardised components which can be picked up from API
  • can put cacheing, and lots of standard stuff in the generalised app
  • control the UI from the backend
    • API contains view models rather than raw models
  • Ed.: makes sense if you have an app with lots of similar components
    • especially for a content-based app
    • similar to Google’s code-based component library
  • were able to delete 20,000 lines of code on home page browse view
  • overall have been able to delete 100K lines of code across iOS & Android
  • use layout traits to control layout
    • e.g. full width, separator, stackable
  • request sends a lot of data about the device to the backend
    • can return different components & layout depending on device or screen size etc
    • sometimes send extra data in response so can handle quick changes e.g. screen rotation
  • support infinite scroll using metadata with URIs for follow-up pages
  • can set up fallback components — if this not available, fallback to previous
    • enables playing around with new features & UI but still supporting older builds

Infer: Moving fast with static analysis

Dulma Churchill, Software Engineer, Facebook

Taking up Jim Purbrick’s challenge of dealing with the higher stakes of bugs in mobile, Dulma gave us an introduction to Infer — Facebook’s static analyzer that can check for memory and resource leaks and null pointer issues each time you compile.

  • static analyzer that doesn’t require pre/post conditions
  • compositional, so doesn’t need to process whole project at once
  • very intertwined with compiler
  • infer can find inter-procedural bugs not local to single file
  • used with CI can be set up to only process newly compiled files
  • within facebook: fix rate around 70% in recent months
    • high rate due to getting results on continuous integration
  • there’s an Xcode plugin
  • integrated with codeboard
    • web-based IDE to teach programming in classroom
    • Java, Python Haskell…
  • see their blog post about being used at Spotify

3000 images per second

Henna Kermani @tokyotwilight, Software Developer, Twitter

Some interesting stats from Twitter here, in Henna’s story of how Twitter scaled up their image and video handling.

3000 images per second - Henna Kermani

Posted by At Scale on Monday, 28 March 2016
  • image uploading used to be all in the same API call as the tweet itself
    • any point of failure would fail whole thing
    • waste of bandwidth for client & server
  • split out image upload from tweet content
    • also allowed segmented, resumable uploads
    • used multi-part POST requests with separate INIT, APPEND & FINALIZE API calls
    • massive drop in upload failures, especially in developing world
  • did research on age of images:
    • 15 days 50th percentile
    • 150 days 90th percentile
  • so kept original + 20 days of variants
    • balance between storage increase per day and computation on each request
    • saved $6m in 2015 just from this change!
  • image formats
    • tried using WebP for 6 months last year in Android app
      • ~25% smaller than PNG or JPG — better engagement
      • but not supported on Android <4 or iOS…
    • converging on progressive JPEG instead
    • used Facebook’s Fresco library in Android app

React Native

Pieter De Baets @javache, Facebook

Pieter gave a detailed intro to React Native — building native apps for iOS and Android using just JavaScript and HTML-like markup.

  • if you ship a bug in a mobile app, there will always be a user out there running that bug — no matter how many updates you apply…
  • write UI declaratively, code in Javascript
  • share lots of code between iOS and Android
  • Apple’s guidelines don’t allow you to update code in a running app
    • but there’s an exception that lets you update JavaScript over the air
    • so you can update React Native apps instantly

Don’t forget the web

Jeremy Keith @adactio, Founder, Clearleft

After all that talk of native development, Jeremy brought us back to thinking about the web and how it will always be the largest, widest target. It isn’t a “platform” and it will never be the leading edge of mobile, but it is for everybody.

Don’t forget the web - Jeremy Keith

Posted by At Scale on Monday, 28 March 2016
  • when building for the web
    • start with core functionality
    • implement with simplest techology
    • enhance!
  • can be done for whole service but also for individual components
  • Ed. is this that much different from native?
    • especially for different OS levels, Android features etc
  • there’s always something new that’s not fully supported

Sunday, 10 November 2013

MomoLondon: MWC2014 Stand Competition Live Final

10 companies competing to win a place on the UKTI stand at Mobile World Congress 2014 and press & media activity to go with it. ICT KTN, Mobile Monday London, UKTI and Cambridge Wireless all work together to whittle down the competitors to a shortlist of 10, all competing for five places on the stand.

All the companies this year were remarkably different — in their approach, their development stage and their presentation styles.

In the audience vote, I went for Changify, but the five who were selected were PeachInc, 5 Tiles, 23 Snaps, Capito and Viewranger.

There’s also an official blog post with pictures on the Mobile Monday London blog.

Red Glasses

Adam Martin, Founder

http://MyEarthApp.com @RedGlassesApps

  • embedding rich content into 3D objects
  • have built a native 3D engine for iPad that deals with data
  • also built two sample apps:
    1. visualization of magnified Earth heights
    2. showing videos on a 3D globe
  • aim to partner with media & content organisations
  • have built bespoke apps for clients for last 15 years
  • want to expand to a white-label product
  • other demos:
    • showing travel time from a point across the globe
    • luxury retail, where purchasing from

Changify: Design for Social Change

Priya Prakash, Founder

http://www.changify.org @Changify

  • basic idea:
    1. spot & share ideas for problems
    2. get support from friends & neighbours
    3. ideas get backed by brands & biz
    4. earn credits for making the change
  • partnering with Clear Channel to make a digital bus stop
    • crowdsourcing local opinion by voting on screen
    • touch & NFC
  • council get realtime data of reports
  • running a 3 month trial with Guardian Data at Elephand & Castle
  • working with councils & local businesses
  • http://changify.org has been available for 6 months
  • also accessible via SMS

Coveritas

Sean Redmond, CEO

http://www.coveritas.com @Coveritas

  • based in Bletchley Park
  • founding team did functional verification of hardware verification
  • have applied same system to software functional testing
  • specialise in machine to machine interoperability
  • uses randomisation & rules (constraints) to generate end to end use case tests
    • 3GP took 9,000 hours of test engineering
  • looking to partner with domain experts in M2M standards testing
  • customers are those companies with massive test labs for M2M interoperability
  • have an annual time-based license model

SpatialBuzz

Leon Hardwick, Director Global Sales & Marketing; Andrew Blake, CTO

http://www.spatialbuzz.com @SpatialBuzz

  • cloud-based customer experience management for mobile operators
  • delivering info on status and capability of network
  • give the operator an idea of how customers are reacting
  • can also provide an early warning to operator of issues
  • mix together operator outage & planned works with crowd-sourced input
  • can cater for any service delivered geographically
  • deployed with Telefonica UK & Germany, also Tesco Mobile
  • benefits seen:
    • reduction in calls
    • reduction in response times
    • improving customer satisfaction

PeachInc

Dr Daniel Morris

http://www.peachinc.com @PeachInc

  • mobile ticketing using the “MorrisCode” — 2D barcode
    • patented format
  • optimised to be read from electronic displays
  • at the moment PeachInc are the only people who can read them
  • displays well on small screens
  • stores a 16 digit number
  • have built a suite of apps
    • can receive tickets via SMS (even on iPhone)
  • also make hardware
  • will be integrated into a
  • biggest customer so far Saudi Professional football league
  • versus QR codes:
    • reads faster and more successfully
    • reads at 20 frames a second with most mobile cameras
    • 5,000 people at an event with 100% success rate
    • 60,000 football matches in Saudi Arabia with no problems

5-Tiles

Michal Kubacki, Inventor & CEO; Piotr Pieczynski, CFO

http://www.5-tiles.com @fivetiles

  • keyboard for Android
  • business model based on app sales & licensing deals
  • works well for smartwatches (with a touch screen)
    • takes a small amount of screen space
    • have a demo on i’m watch Android smartwatch
  • looking to port to Windows & iOS
  • also getting keyboard tested by RNIB
  • currently have 100s of users on Android
    • and 4,000 downloads of the training app
  • takes about 30-45 minutes to learn the combinations
  • working to make the learning curve lower all the time

23snaps

Meaghan Fitzgerald, CMO; Ivailo Jordanoc, Co-Founder

http://www.23snaps.com @23Snaps

  • mobile-first private social network for families
  • spans across different generations
  • also organise photos by date & location
  • 500K registered users
  • posting one photo every second
  • make money by selling photo print products
  • have users in 179 countries
  • going to be launching in Brazilian Portuguese
  • content owned by creators
  • also provide a one-click export of all content
  • wanting to meet consumer electronics, mobile networks, etc
  • don’t want advertising next to family photos
  • may go for other monetization such as premium features

Available for iPhone, Android, Windows 8, email, web and printed books!

Capito Systems

Tony Ballardie, CEO

http://www.capitosystems.com @CapitoSystems

  • speech assistant technology specifically for mobile commerce
  • about to sign first customer
  • language variations, background noise?
    • have focussed on language understanding rather than speech recognition
  • aiming to license to mobile commerce companies
  • have built support tools to enable customers to build up a speech corpus of domain language

Viewranger

Ben Howard, Marketing & Sales Exec; Craig Wareham, CEO & Co-Founder

http://www.viewranger.com @viewranger

  • digital mobile platform for outdoor activities
  • interest-based social network
  • publishing platform
  • trail guide marketplace
  • over 2 million app downloads
  • used by over 100 search & rescue teams in UK, Ireland, USA, Canada, Germany, Ukraine
  • work with 22 mapping agencies & trail guides from 400 brands
    • including CAMRA :-)
  • wanting to engage with handset OEMs & wearable manufacturers
  • earn revenue through:
    • premium in-app data & services (maps & guides)
    • premium services & analytics for brands
    • syndication of content
    • could go for advertising in the future (have steered away so far to keep UX well)
  • main competitors are still dedicated devices
  • there are sport-based apps that seem to be fragmenting the need

Available for iPhone & iPad, Android and Nokia

UBIAPPS (Nquiring Minds)

Nick Allot, CEO

http://www.ubiapps.com @nallott

  • secure end to end framework for managing apps both online & offline
  • server management + enterprise-grade security is proprietary
  • protocol is open-source (JSON-RPC over HTTP)
  • all nodes are two-way — can manage apps and IoT devices using the same system
  • easy & quick to integrate on any device
  • looking to work with system integrators
  • seen most interest so far from asset tracking systems

Announcements

Tuesday, 29 October 2013

Droidcon 2013

I went to Droidcon UK last week and my brain is still catching up… So many new ideas (and good ones too!).

I’ve put together several posts from Droidcon 2013 — this one gathers all the short notes that I took that didn’t deserve a full post of their own. They’re still worth checking out though!

A big thank you to the organisers and the contributors who made it all possible, especially Thibaut Rouffineau for whom this is his last Droidcon as organiser.

Cupboard SQLite access

https://bitbucket.org/qbusict/cupboard/wiki/GettingStarted

  • easier design than ORMlite
  • works better with Android framework
  • doesn’t require a custom activity

testfairy

http://www.testfairy.com/

  • send your APK to them, they instrument it and return it to you
  • or you can ask them to sign it themselves and manage the testers for you
  • results include one frame per second video of app UI, synced to logs and any exceptions

would you code blindfolded?

Gonçalo Silva, Novoda @gnorsilva

  • Pretotype — most cost effective prototype
    • e.g. using wooden blocks wrapped with paper to test mobile device ideas — use in real world situations — as used by Jeff Hawkins to test the PalmPilot
  • Light Table IDE — animate your code with live test results
  • estimations have a very limited lifetime
    • valid up to a month, maybe two
    • more of a gut feeling rather than a specific time
    • just to help you and guide you, doesn’t tell you when you’ll be complete
    • don’t adjust your estimates — look at the performance in retrospectives
    • make estimates based on difficulty, not time
    • anything bigger than a 4 should be broken down into smaller pieces

android script

http://androidscript.org/

productising a modern Android Device

Craig Arnush, Vertu

Vertu sell hand-made Android phones for £7,000+…

  • made a changes to Android to allow secret alert + new vertu key
    • secret alert makes the phone pretend to be dead (including the home button)
    • modified phone window manager
  • added own analytics (couldn’t rely on Google etc, as wanted security)
  • have an internal Vertu API
    • if interested, get in touch
  • tools: use OpenGrok

Tesco hudl

Novoda were showing off the hudl — a cheap Android tablet sold by Tesco.

Apparently Novoda were involved at a fairly deep level in the project, which explains why it’s actually pretty good!

demo camp

Each presenter had a couple of minutes to show off their app or service — the entries were judges by a panel of venture capitalists offering investment.

amateur football management

  • http://football-tracker.com
  • manage leagues & players

5-tiles keyboard

http://etaoisystems.com/

Download on Google Play

  • normal users reaching 40wpm — almost twice as a normal keyboard
  • speed freaks reaching 100wpm
  • works on small devices — ported to I’m Watch smartwatch: immediately useable

apiomat

http://www.apiomat.com/

  • easy to create APIs
  • graphical UI to create basic database w/relations
  • also does push notifications
  • auto-generates code for iOS, Android, PHP, Python, etc

scoopt

http://scoopt.com/

  • fashion facebook
  • retailer with fashion leads

indoo.rs

http://indoo.rs/

  • got 2-5m just using wi-fi in business design centre (on Android)
  • iOS can’t use wi-fi positioning as Apple don’t provide wi-fi signal strength
  • 6 patents
  • support crowd-sourced mapping
  • €100/mth for access to SDK

apponsor

http://apponsor.com/

  • in-app sponsorship by signing up to newsletter
  • automatically fetches user name and (verified) email address from device
  • requires read context, read local account + internet permissions

pogo from Activ8rlives

http://www.activ8rlives.com/

  • import healthcare data from devices that require USB
  • patients no longer have PCs to upload their data and don’t have the latest Android or iPhone devices to pick up Bluetooth LE or
  • instead have created a hardware box that converts USB into audio jack so can be picked up by an app on even legacy devices
  • indiegogo campaign

genymotion

http://www.genymotion.com/

  • native Android emulation for app testing & presentation
  • integrates with laptop camera & fake location services
  • introducing pro version next month

CapturaTalk

http://www.capturatalk.com/

  • assistive services for students, esp. disabled & dyslexic
    • also useful for those with English as a second language
  • OCR text into an editable format
  • can get word definitions, including easily confusable words
  • being sold to schools

NOBU BYOD

  • remote android workspace for any device
  • provides easily securable data for enterprise
  • uses multi-user android servers
  • have iOS client + HTML5 client
  • can be run inside a data centre

NOBU won the demo camp top prize.

Droidcon 2013: App to App — design & surface local APIs

Ty Smith, Twitter (ex-Evernote) @tsmith

  • e.g. Samsung Note S Note app — locally synced with S Note grouping in built-in Evernote
  • tapping on a note in Evernote, opens it in S Note; then back button goes back to Evernote

intents

  • when sharing content to another activity, need to provide URI permission
  • when offering edit, you shouldn’t send your original file
    • the third party might crash, corrupt, etc
  • also can’t rely on setResult
  • user might hit back and think their changes will be saved
  • set last modified — when activity returns can check to see if changed — then offer user to save if they want

content providers

  • can provide temporary permissions to access provider in an intent
  • can pass through file handles

account manager

  • see an example in the open source github app
  • can request an authenticated token
  • makes accounts visible to user in a standard place
  • can do OAuth1 or 2
  • has method to refresh OAuth2 token automatically

sync adapter

  • does a lot of management for you automatically (network, battery)
  • again, can expose to third parties
  • can be scheduled & started with cloud messaging
  • requires content provider & account manager
  • but watch out for all the syncs coming at once
    • especially as networks often send out heartbeats on the hour every hour
    • devices wake up and think: I might as well sync now…
    • Evernote received DDoS load spikes…
  • so add a jitter to the sync period (random 1hr -> 1hr5min)
  • also add a “wait until” in the sync adapter — do your own checking

bound service

  • much stronger contract than others
  • other apps need to include your AIDL source code
  • example: plugins for DashClock

tips

  • testing is hard
    • use mock integrations
    • hard to debug integrations
  • add analytics to the lower level components so you know what’s going on
    • might want to consider rate limiting
  • use crash reporting (plug for crashlytics, now owned by twitter)

Droidcon 2013: Awesomeness Checklist

Taylor Ling, http://AndroidUIUX.com

  • attention to detail

animations

  • find balance between subtle & noticeable
  • should provide information
  • make sure to use standard animations
  • e.g. don’t change root screen exit — otherwise users don’t know what’s happened (why was that different?)

feedback

  • microinteractions: dan saffer
  • visual feedback — show highlighted touch area when pressed down (and ensure that the areas are big enough)
  • watch out for dialogs — and make sure there’s no ambiguous buttons
  • e.g. preventing screenshots — at least the user why you have done so
  • need to make the rules of the app visible
  • for side menus, it’s important to push the current view into the background when the menu appears
    • make it darker / blurred

help

  • quick tutorial: introduction of the value of the app
  • not how to use the app
  • have a help section (offline if possible)

Droidcon 2013: Responsive Design for Android

Juhani Lehtimäki, Smashing Android UI

Presentation available online

  • alternative to master/detail — grid view
    • works the same way with adapters
    • can adjust number of columns in values to adjust on screen size
    • use it as an easy way to extend the UI without a huge redesign
    • also useful for inspiring designers to take the design further
  • need to figure out where the relayout/break points are?
    • need to talk about what is the screen size for this layout to work
    • don’t need to talk about tablets or phones
  • juhani likes to do the large screen first
    • makes you think about whole picture if there would be enough space
  • android design in action from google
    • different layers of design:
    • information design — all you
    • interaction design — all holo/android
      • 100% chance users use other Android apps
      • tiny chance they use other platforms
      • optimise for user experience, not app consistency across platforms
    • visual design — mixed
  • use the default components!
    • but don’t components that are not needed for the app
  • action bar gives you lots of things for free
    • adjusts for screen space automatically
    • components work across lots of devices — tested!
    • also hold down item gives tooltip
  • best app for design on android right now: timely alarm clock
    • and follows all android guidelines!
  • can fade out the action bar when content scrolls up
  • use Android Asset Studio to show how 9 patch graphics work
    • designers can check online
  • use fragments from support package even when targetting 4+
  • decouple front end from backend
  • when fragment starts it queries for data by id
    • fragment should ask for it
    • manager should respond to bus with id when ready
    • fragment subscribes when it’s around and unsubscribes when it goes away
    • so fragment can then request data when it’s told that id is ready
  • http://jimulabs.com — lets you change layouts on the fly
  • make sure your design team uses android devices
    • at least for a couple of weeks!
  • use standard components and follow guidelines
    • won’t just cost in coding — think about all the testing!
  • think scalable from the first wireframe

Droidcon 2013: Conquering concurrency — bringing the reactive extensions to the Android platform

Matthias Käppler, Soundcloud @mttkay

Matt has written his own blog post to accompany his talk.

  • this talk is about functional reactive programming
  • but without talking about monads or other mathematical terms
  • example: a list view with data from the server
    • lots of concurrency
    • callbacks, broadcast receivers, notifications all over the place
  • wanted a single event handling model with natural concurrency
  • problem with imperative programming is shared state across whole app
  • doesn’t work with multiple threads and concurrency
  • programming style should reflect the event-based, network-dependent world that apps live in
  • AsyncTask has changed several times in its implementation
    • since ICS it uses a single-threaded executor
    • prone to leaking Context since you have to manage references yourself
    • also has no error handling built-in
    • can’t have long-running tasks that depend on each other
  • event buses (otto, green robot) also have downsides:
    • designed around shared global state
    • still no ability to chain tasks
    • no built-in error handling

RxJava

  • RxJava
    • actually a port of .net Rx extensions invented at Microsoft 5 years ago for Windows Phone
  • Observable<T> ::onNext(T) ::onCompleted ::onError(Throwable)
  • subscribeOn(scheduledThread) / observeOn(scheduledThread)
  • have lots of useful schedulers e.g. observer on main Android thread
  • also have map and mapMany to compose observables

how to use it

  • soundcloud built android extensions
  • http://gihub.com/soundcloud/rxjava
  • dumb fragments
  • service objects implement business objects
  • custom operators for paging content in list views etc
  • AndroidObservables.fromFragment
    • guarantees that it won’t leak but will maintain connection to a rotated activity
  • e.g.

    
    fetchModels(request) { 
    return fetchResponse(request).mapMany((response) -> {
        return mapResponse(request, response);
    })
    }
    

  • simple uniform event model

  • unit tests don’t need to run background threads
  • apply it in a focussed way
  • don’t replace callbacks — used in service layer for API requests
  • use proguard!

downsides

  • java 6 anonymous classes are very verbose
  • deep call stacks in debugging
  • slight increase in GC activity (but didn’t have any noticeable performance impact)
  • learning curve
    • but can use similar things for objective-c and server side (finagle & twitter futures) so can share knowledge

references

Droidcon 2013: Teaching Your Client Android Design; or, Ridding the World of iPhoneys

Kenton Price, Little Fluffy Toys http://www.littlefluffytoys.mobi

Presentation available online

Summly

  • Android has algorithm on client as Android screens come in different sizes
  • insisted that wanted back button in app
  • got google developer advocate support to say no
  • also added various improvements, several of which

BBC Weather

  • again received an iPhone design from the agency
  • identified areas that should be more Android-y
  • added additional Android features
    • NFC support — share locations over NFC
    • lock screen widget, daydream mode, dashclock integration
  • don’t need to shout about these integrations, as early adopters will do it for you
  • first release: got slated on play store as there was no landscape mode
    • tablet users will review you (no easy way to exclude…)
    • upset users are far more likely to leave reviews
    • designers hadn’t included landscape as it was not seen as a big use case
  • about > version code > tap 7 times > easter egg :-)
  • reviews: “BBC does it better on Android for once”
    • made design Android native
    • then added nice Android features
  • even the BBC were surprised about what could be done

Play Store beta management

  • assign a Google Plus community to different (alpha/beta/etc)
  • accept/reject membership
  • LFT used to use HockeyApp, but this is much better

how to

  • get the product manager on board
  • get graphic designers on board
  • compare to best-of-breed
  • get the ActionBar absolutely right

Q&A

  • some designers feel that they haven’t designed it if there’s still native components visible
    • a lots of designers got burned by the change from iOS 6 to 7
    • maybe they’ve learned their lesson now!
  • supporting older Android
    • support 240x320 as the smallest, but was difficult to work around lack of bucket design sizes (3+)
    • couldn’t test across everything
    • used ActionBarSherlock
    • lots of graceful degradation

Droidcon 2013: Ship Faster With Open Source from Square

Pierre-Yves Ricau, Square @piwai

Sample project: http://github.com/pyricau/shipfaster

  • look out for talk later at devoxx about how square got rid of fragments
  • debug panel in app, slides from right
    • lets you adjust the settings

dagger dependency injection

https://github.com/square/dagger

  • create object graph in application
  • injection happens in activity onCreate (prob. base class)
  • can switch between modules when create graph (e.g. using build settings)
  • resolves dependencies at compile time as it’s annotation based
    • don’t get errors at run time
    • doesn’t use reflection so faster
  • also generates dot files so can view dependency graph

otto

https://github.com/square/otto

  • (the bus driver in the Simpsons…)
  • broadcasts are not type safe and fragile
  • define event classes
  • the bus then calls the event methods for all subscribers
  • also provides an event logger
  • events are called synchronously

dagger & otto together

  • use a custom annotation with dagger bindings
  • can then add subscription/unsubscription easily

robolectric

http://robolectric.org/

  • main developer now at square…

retrofit REST client

https://github.com/square/retrofit

  • define an interface for API
  • methods take a callback method
  • callback will happen on UI thread
  • suggestion: use otto bus to fire events on return
  • create a RestAdapter and plug it in using dagger
  • has a log level to show you all headers
  • also works with protocol buffers
  • async by default, but can also do sync if you want to do multiple serialized calls from a background thread
  • can use underneath robospice

picasso

https://github.com/square/picasso

  • image loader from URLs
  • placeholder & error images
  • resize dimensions
  • don’t need to deal with http or caching at all!
  • has debug indicator corners on images:
    • green from memory
    • yellow from filesystem
    • red from network
  • can apply transforms to images
  • handles large images well
  • adjusts threads for downloading & encoding according to network status (wifi, 3G)
  • but may not respect cache expiry headers… (poss only when not used with OkHttp)

OkHttp

https://github.com/square/okhttp

  • Android has switched from Apache HttpClient to URLConnection
  • HttpClient no longer maintained in Android :-(
  • OkHttp now part of AOSP!
  • create a client and retrieve an HttpURLConnection
  • used by retrofit and picasso by default

more info available

Droidcon 2013: Gradle for Android

Hans Dockter, CEO Gradleware & Founder of Gradle @hansd

http://gradle.org

http://tools.android.com/tech-docs/new-build-system

buildTypes

  • automatically picks up different source & resource directories
  • can add code specific (e.g. setting constants)
  • can adjust settings across multiple tasks
  • automatically creates new tasks (e.g. packageTest, packageStaging)
  • allows different dependencies for different types

productFlavors

  • just like build types, but another axis
  • can alter package name
  • extends tasks further (e.g. installFreeTest, installPaidStaging)
  • configure different things than buildTypes (not proguard, etc)

flavorGroups

  • allows unlimited extension
  • e.g. ARM/intel
  • tasks allow you to run groups of things — e.g. test all debug builds

other features

  • gradle wrapper
    • allows specifying the version of gradle in source control
  • additional plugins
    • manymo — devices in the cloud
      • has gradle plugin to run tests against selections of their devices
  • has a rich model & deep API that allows additional scripts in build
    • e.g. real-time warning if a test runs for longer than 20ms
  • can combine with wrapper to have your own custom gradle installation
    • put scripts in .init of gradle installation to apply to all builds
  • Android Studio picking up gradle built types
    • so can switch and see effects in the visual designer
  • in future want to specify virtual devices in gradle
    • so IDE just executes gradle
    • IDE has less to do :-)

Droidcon 2013: Crafting Unique, Delightful Apps

Dan Lew @danlew42 & Chris Arvin @meinhyperspeed, Expedia
  • created a sample app to show ideas: http://goo.gl/XCyLWl
  • default holo vs customized UI
  • finding interesting ways to interact
  • holo is great for developers, but need to extend it to add character
  • designer should build on how android looks, feels & works
    • e.g. cards, vertically sliding content
  • build from user’s prior Android experience
    • i.e. don’t put brand consistency ahead of platform consistency

animations

  • android apps move: so should your mockups!
  • really important for communication as a designer
  • tools for designers: after effects, html/css + transforms, quartz composer (but steep learning curve)
  • generally requires a little bit of coding knowledge but no too much
  • animations gives lots of visual clues
    • e.g. expanding an item in a list to go to detail

working together

  • developer first reaction is generally: how am I going to do this?
  • takes a few minutes to start to get to grips — it will take more work…
  • first need to really understand what the designer is going for
  • interesting UI = a lot more development
  • work on the big stuff first — usually the animation
    • makes sure that the view hierarchy is right
    • need to think a few steps ahead
  • need to ensure that animation performs
    • use translations rather than layout changes
    • use GPU overlay to help with effects and performance
  • communicate:
    • what’s going to be a challenge?
    • what can we make easier?
    • what do we have to cut entirely?
    • come up with 5-10 different options
  • e.g. rounded corners done with 9 patch as quick fix

polishing

  • developers often get it close enough but not quite right
  • designer needs to communicate effectively
  • communicate in dps not pixels
  • adjust from what’s already in the app rather from mockups
  • use relative measurements not absolutes
  • annotate real screenshots
  • e.g. make fonts 2dp smaller here, add 4dp padding there
  • little play things:
    • e.g. expedia wait screen shows plane window with sky going past
    • rotating phone adjusts horizon; can close and open window

engaging UI

  • really relying on images can set the tone of your app
  • hotel detail done with parallax layers
    • encourages users to engage with the app
    • scrolling up and down enlarges areas

Q&A

  • when designing, how far do you go for different densities?
    • simple design, start with single device
    • complex design, might want to ensure it works in a couple of densities
    • key is landscape: make sure it’s not totally different — don’t want to lose the user
    • but don’t avoid doing cool things in portrait just ‘cos you can’t do it in landscape
  • working in dps
    • set the resolution in photoshop
    • or set the file to the full resolution
    • preview on device: skala preview or similar
  • development environment
    • gradle -> hockeyapp
    • still using eclipse — android studio not quite stable enough yet
  • pivotal labs experimenting with developer/designer pairing

Droidcon 2013: Phones in Space

Chris Bridges, Surrey Space Centre, @DrChrisBridges

STRaND-1 Nanosatellite

space is old tech!

  • catch-22 with electronics in space: if it hasn’t flown, we can’t fly it
  • most electronics in space are 10-20 years old
  • they are larger: 90nm features
  • 30nm of modern fabs may have trouble in space — we think they will be knocked out by single event effects
  • largest particle coming out of the sun is an ion proton at just under 90nm
  • but foundries that make 90nm chips are soon going to be decomissioned
  • so need to start testing effects on smaller chips soon!
  • also, newer components, especially mobile are smaller and much more powerful
  • if we’re worried about reliability, could duct tape three phones together and get more power than the entire ISS
  • also useful for medical purposes — investigate how tech behaves in radiation situations

hardening phones

  • components also get shaken to 30-40G when rocket goes up
  • used 3D printed brackets (chins) to hold pieces together
  • control satellite attitude with magnetic coils
  • had to harden the phone & connections
    • extract out the button connections & stick the trackball in place
    • need to remove any electrolytic components — they pop in space
    • also some plastics degrade in space
  • controlled from Digi-Wi9C: low power linux single board computer
  • put programs into solid state flash memory (PIC-24) that is not affected by space radiation
  • also needed to check out timings: satellite works at about 8-40MHz; Digi-Wi9C at 150MHz
  • android apps had to be instrumented so that they could be monitored and controlled: added heartbeat monitors to check if apps were still alive
  • wanted to have a software lab in space
  • had to check how the hardware behaved without convection
    • saw that battery voltage reporting flipped a sign when temperature went below zero
  • destroyed about 12 phones in radiation… cobalt-60 ionising radiation
  • tested satellite for equivalent of 6 years of radiation
  • have a camera that looks at the screen
    • useful if usb connection fails
    • can connect over wi-fi
    • or else fall back to taking a picture of the screen

your apps in space

  • had an app competition for software on facebook
  • can you scream in space?
    • does the vibration from the speaker reach the microphone?
    • don’t know yet…
  • antenna communicates at 9Kb/s back to Earth
  • went up into low earth orbit in 25th February
  • SSC groundstation
  • amateur satellite trackers around the world really important and integrated — 10 people around the world
    • gmail > gdocs > SQL databases > plotting
    • can get a groundstation in a single USB stick
    • just need a bit of wire for the antenna
  • when it’s first released, the satellite tumbles uncontrolled — need to use coils to place it in controlled orbit
  • strand-1 status on web site
  • testing charging the phone — have done it 9 times now
  • will soon be testing apps…
  • code available on s-android on google code
  • satellites normally take years to build: STRaND-1 built in 3-4 months in lunch breaks and evenings
  • NASA taking it forward
  • UniS doing STRaND-2
    • want to have two satellites docking & undocking in space

Droidcon 2013: Authentication for Droids

Tim Messerschmidt, PayPal @SeraAndroid

Presentation available on slideshare

OAuth2 client libs

Identity

OpenID
  • developed 2005
  • 2012: discovered you can hijack it
  • considered dead :-(
BrowserID & Persona
  • from Mozilla
  • great idea, but nobody really uses it apart from them…
OpenID Connect
  • layer on top of OAuth2
  • http://openid.net/connect
  • still a draft but looks really good
  • has a whole section on session management (i.e. stop allowing that app)

Providers

  • 80-90% via Google, Facebook & Twitter
  • all have their own SDKs that handle the OAuth for you
  • PayPal added a new identity provider
    • provides verified information
  • needs to be best practice to show which information will be shared at each time
  • Blue Inc 2011: Consumer Perceptions of Online Registration and Social Sign-In
    • 45% admit to leaving a website instead of resetting their password or answering security questions
    • 66% think that social sign-in is desirable alternative

Q&A

  • on mobile, app can fake a web view and capture identity
    • this is why facebook goes via app
  • think about different social providers for different countries
    • e.g. baidu for China, yandex for Russia
  • see also Google Authenticator libraries for two factor auth

Droidcon 2013: CyanogenMod

Abhisek Devkota, Community Manager, Cyanogen Inc, @ciwrl

Shane Francis, device maintainer, CyanogenMod community, @BumbleDroid

  • nexus comes with fastboot but other devices need root etc.
  • building easy installer
    • google play app + PC app
  • pro version going to be locked down a bit more
    • root is off, but easily available — phone secure for mass market appeal
    • aiming for new releases every two weeks
  • CM Account — equivalent of Find my iPhone & iCloud
    • 4GB of storage per user, but shared across devices
  • working with moxie marlinspike (redphone, whisper systems) on secure end to end messaging
  • system level additions
    • latest conversations: across multiple apps (gmail, hangouts, etc)
    • allows recent contacts
    • added various framework additions, e.g. share video to Roku Airplay
  • would be first time Google has certified a community-based android spinoff
  • hope to have a bounty programme by mid-next year — especially for security issues
    • also been purchasing devices for maintainers

Droidcon 2013: Boundbox & Memento + Annotation Processing

Stéphane Nicolas, Octo Technology

Matthias Käppler, Soundcloud @mttkay

boundbox

Slides available online

https://github.com/stephanenicolas/boundbox

  • break encapsulation to ease testing (with Android in mind)
  • let’s you access things from Android SDK that you wouldn’t normally access
  • also lets you add fields (e.g. for stub Android jars that only have methods available)
  • can indicate how far up the hierarchy you want to expose
  • don’t need to change your code — just adjust your tests
  • access using reflection, but access checked at compile time
  • open source on github
  • compares with WhiteBox from PowerMock
  • intended for helping test UI layer
    • find views by field name
    • invoke methods & inner classes directly
    • faster and more direct than robotium & UIAutomator
    • as fast as espresso

memento

https://github.com/mttkay/memento

  • dealing with keeping state when the screen rotates
  • the activity gets destroyed and recreated and all your state is thrown away…
  • can use onRetainNonConfigurationInstance to pass objects through configuration changes
    • but what if you need to retain more than one object
    • deprecated in place of fragments — these keep their configuration using setRetainInstance
    • but watch out: setRetainInstance doesn’t work for child fragments and is super-prone for data leaks
  • but what if you have multiple fragments sharing the same state?
  • mark a package private field as @Retain
  • override the new onLaunch method (used to indicate first time initialisation of the class i.e. not after a config change)
  • then use Memento.retain(this)

annotation processing in general

  • use JavaWriter from squareup
  • look at how square does it for dagger dependency injection
  • Google has a library so you can assert over java source files
    • lets you compile with a processor and check the output
  • want to split up the annotation processor into two:
    • one for the client-side annotation itself and any required classes
    • one for the processor (don’t want it in your app)

Droidcon 2013: Remote Styling

Peter Nash

http://nativecss.com/

  • styling using CSS on top of Android views
  • live updating
  • free software — make their money from support

  • can pick up images — automatically cached & scaled to correct size

  • multiple background images on a view
  • can use in both Android & iOS
    • allows platform-specific overrides
  • allows designers to adjust UI
    • using language they understand
    • on multiple devices at once
    • without needing to make a new build
  • can use media queries (e.g. device-width)
  • dynamic styles based on settings in the app
  • can apply a promotion in the app for a day
  • android support:
    • API 10 (2.3) with additional setup
    • API 14 with single line setup
  • suggested as a value for key bits, not for the whole app
  • uses a single CSS for all activities

Droidcon 2013: Android Based Dongles & Wearable Accessories

Ken Blakeslee, Chairman WebMobility Ventures

  • scanadu, bracelets, knife with screen!
  • argus app on iOS - life monitor, incl. sleep
  • Ken has been wearing fitbit, pebble, fitbug, misfit shine for about 3 weeks to compare

smart dongles

  • digital signage, using mini pc dongles
    • e.g. kestronics mini pc
  • dongle only needs HDMI input in TV
  • e.g. imerz platform
    • control big screen from tablet by using smart dongle
    • selecting video using image comparison
    • adding tags to video content

smart glasses

  • insideAR conference by metaio
  • AR moving from PC centric to person centric (going mobile)
  • the technology is no longer the issue
  • vuzix M100: full android implementation in a glasses form
    • can port apps onto it
    • doesn’t have cellular but has wi-fi…
    • head tracking, gps, wqvga display
    • aiming at enterprise rather than consumer
    • focussing on big company lead partners first
    • available for smaller companies in November
  • not yet consumer devices
  • industrial, construction, medical, automotive, customer service
  • this use and google glass are conventional AR — we’re still waiting to see something consumer facing…

Saturday, 28 September 2013

Over The Air 2013

Building an Internet of Things for Everyone

Alexandra Deschamps-Sonsino https://twitter.com/iotwatch

  • get the work you want
  • if you get work just for money, you’ll get more of it
  • won’t get you the work you want…

good night lamp

  • originally in 2007 people were unsure about it
    • it uses Wi-Fi: isn’t that a health risk?
  • restarted in 2010 — no longer a problem

IoT is now accessible

  • hardware & software is easily available, documented + supported with lots of forums
  • lots of hackspaces around to make thing
  • idea to making something that looks pretty and works: “I give you 2 weeks — and 1 of those is waiting for things to be delivered”
  • still hard to get something to production scaling, but getting support for that:
    • Fritzing, DesignSpark, etc

IoT vs big business

  • wanting to bridge concerns of small business and large corporations
  • both want the same reach of
  • standards & security
  • british gas https://twitter.com/connectinghomes & #connectinghomes 26/09/13
    • 25 startups in energy sector
    • bobo the polar bear: changes colour depending on how you manage your home energy
  • need to get corporates who are interested to actually meet the people who are doing stuff

Telling the right story

  • journalists will make stuff up…
  • make sure you tell a good story
  • e.g. onesie for a child with sensors
    • great for children with health conditions
    • but could be creepy for parents
  • you have to be completely clear about why a customer would want to buy what you’ve made
    • create a press release and a dropbox full of well-lit, decent pictures

Investment

  • investors < 60 years old will probably have never invested in anything other than the web…
  • they need to see more hardware things
  • new https://twitter.com/bg_ventures incubator

Retail is interested…

Building Complex Web Apps with Dart & Web Components

Chris Buckett https://twitter.com/chrisbuckett

  • V8 is as fast as they can get for javascript
  • dart is faster for some benchmarks already

dart language

  • optionally typed
    • when Dart runs, it pays no attention to the type information
    • use types for annotations
    • used for communication and validation
  • classes are also interfaces…
    • like duck typing
  • has privacy: just prefix with underscore
    • also has package shared equivalent
  • concurrency & async support
    • works with web workers in the browser
  • supports libraries by default
    • a single repository of libraries
  • built-in support for DOM
  • DartDoc is markdown based :-)
  • Dart VM not in any browser other than Dartium (special Chrome build)
    • but has been designed to compile to javascript
  • the language is still a beta, some restrictions
    • e.g. can’t modify variables on the fly

web components

  • Polymer is Google’s implementation of web components
  • polymer.dart is the dart version
  • polymer elements consist of a template & a script
  • elements get created and added to the shadow DOM
  • polymer elements have double-barrelled names
    • first part is namespace
    • hyphen is mandatory

Designing for diversity

or How to stop worrying and deal with Android fragmentation

Stephanie Rieger

a bit of history

  • port of leith, edinburgh: cruise ships stop
    • crew come out and use the internet
    • mostly filipino (25% of crew are filipino)
  • massive change in devices in a short time:
    • 2010: massive laptops
    • 2011: netbooks
    • 2012/13: tablets/phablets
  • and this is a change for people who send most of their income home
  • mobile phones were getting smaller, but needed large teams
  • started to change in 2005:
    • mediatek started offering reference design chipsets
  • went from giant companies to tiny ones
  • lots competed on price, but others went with regional specializations
  • by 2007, these had captured c.10% of global device sales
  • started experimenting wildly
    • e.g. 4 SIM phone with a project
    • could try out with tiny production runs
  • then Android changed things again in 2008
  • these companies could now switch from low-end feature phones to mid & high range
    • e.g. Lumia lookalike, running skinned Android, sells for £56!
  • other chipset vendors have emulated MediaTek reference designs
    • e.g. Rockchip, even Qualcomm
  • all the components are now tuned to work with Android by default

hardware diversity

  • variations at different levels
  • low-end: all off-the-shelf — around £56
  • slightly more customized: nice case, slightly customised Android, off-the-shelf chip
    • e.g. Xiaomi Hongmi
    • dual SIM, gorilla glass, highly customised Android (MIUI)
    • just £83
    • sold out first batch of 100,000 in 90 seconds…
  • we’re used to having customisation all the way down
  • but even larger companies are experimenting
  • Japan - KDDI Infobar: highly customised design & Android
    • fashion product
  • Oppo: Bluetooth LE camera trigger, touch panel on rear of phone
  • Yota e-paper rear display: can retain image for weeks without power
    • also has a capacitative touch strip
  • India: Aakash 2 is now c.£30
    • govt aiming to subsidise & distribute to 20 million students
  • it’s increasingly likely that devices will be made by “other manufacturers”

platform diversity

  • Android lets you change the keyboard
  • as a developer you can’t rely on the user having a standard keyboard
  • also lets you change the default app for intents
  • Paranoid Android lets you change the resolution of the device at the app level
    • as apps adjust to resolution & screen size, this lets you choose the way the app behaves on your device
  • MIUI is particular popular as it’s actively crowd-sourced
    • also because there are thousands of community build themes
    • including metaphor-based themes with virtual navigation
  • Oppo now lets you choose your ROM when you order your phone: Oppo’s Color or CyanogenMod
  • Cyanogen aiming to create a one-click installer
  • manufacturers are supposed to include the default Holo theme
    • but some small manufacturers don’t
  • manufacturers will also select OS versions and not update for a while
    • we will always see multiple versions live at any time
  • also multiple app stores especially in different countries
  • unofficial app store booths (e.g. in a Bangkok mall)
    • owner will recommend and install apps for you

how do we design for this?

  • design strategies will apply to Android IoT devices as well
  • basic principles:
    1. be flexible
    2. provide assets for all
    3. optimize layouts
    4. enable diverse experiences
  • can use weighting to scale cleverly
  • use asset grouping to enable variation
  • google publish screen density stats every 2-4 weeks
  • as screen gets bigger, letting the UI stretch doesn’t work so well
  • very similar to responsive design
  • set breakpoints in your layout where you change layout
  • want to avoid have three versions that you swap
  • instead aim for a continuum where content adjusts itself
  • Evernote is a good example
    • list view switches to grid view on larger screens
  • see also Google IO & Wordpress apps
    • Wordpress portrait tablet has list and detail side by side
  • lots of qualifiers
    • touch screen type: capacitative/trackball/finger
    • UI mode: car/desk/television/appliance!
  • not necessary to account for all combinations!
  • enabling intents allows future-friendly behaviour
    • don’t have to worry about new social networks in different countries
  • official android devices reached 1 billion last week
    • doesn’t include non-Google devices
    • probably doesn’t include cars, etc
    • doesn’t include experimental Android IoT devices

“diversity is not a bug, it’s a feature”

Arduino: Robots, WiFi and extreme hacks

David Cuartielles https://twitter.com/dcuartielles

  • based in Malmö Uni
  • all got into Arduino because wanted something for students
  • “as technology grows in our hearts, it gets smaller in size”
  • David’s background: worked at Infineon designing chips, then went to teach technology to arts students in Sweden
  • had six months to teach people to program
    • had to relearn how to learn
  • arduino not just boards:
    • boards
    • dev tools
    • documentation & community
  • not teaching about transistors: teaching how to make a light blink
  • arduino ide doesn’t have lots of features
    • but gives you feeling that you’re in a slimmed down version of Eclipse
  • short run manufacturing (c.10K) so can always change the design
  • hacked a full-sized car to be remote controlled
    • will see self-driving car on youtube soon…
  • in mexico city only room for 30% of students in university
  • instead they have arts centres for students who don’t get it
  • David taught electronics there:
    • sorted out electronics sourced from mexico as components not available
    • vimeo: ohoh robochock
    • vimeo: ohoh competition
      • trying to remote control their robotos
      • all interfering with same channel, but they don’t know!
  • arduino robot
    • designed with help from kids from mexico
    • 4 times winners of robocup
    • invested a lot of time in the AC/DC converter
    • so that performance is consistent across battery
  • educational experiment in Spain
    • 24 schools, over 500 kids (15 year-olds)
    • every week had three sessions: introduction, hacking, sharing
    • each week was thematic: e.g. sports
    • 25 kids, 5 projects: olympic games on Friday
    • 24 different experiments, but kids didn’t do everything
    • instead saw what other kids were doing
    • all details http://cuartielles.com/verkstad/en
  • hacked Sony SmartWatch to run Arduino
    • all published on github: underverg?
    • only thing couldn’t get hold of was bluetooth chip
  • natural fuse
    • plant lives or dies based on your carbon footprint
    • if it dies your electricity stops
    • can switch between selfish (grab from neighbours) and selfless (offer spare to neighbours) modes
  • fukushima
    • pachube/cosm was used for people to map the radiation themselves
    • using arduinos with geiger counters
  • open source white goods controller
    • modular: only need four abilities
    • mosfet, relay, pwr, ??
    • added UI module to provide output
  • everything is open source
    • pay me to make it: once it’s made, the work is done
    • you can pay me to maintain it

Whitespace Networks: Connect All The Things

Ben Ward https://twitter.com/crouchingbadger - http://love-hz.com

  • TV whitespace becoming available as moves from analogue to digital
  • however, will still be used for analogue radio mics etc
    • if we cock up they’ve got lots of famous people to complain!
  • weightless protocol)
    • 10 yr battery life
    • 5-10km range
    • unhelpfully called “super-wifi” in america (802.11AF)
  • needs a whitespace database…
    • being worked on right now
    • need to check every 15 minutes
    • check OFCOM for list of approved DBs
    • then check with your licensed DB
    • but you’re not reserving space, just agreeing to share
    • see also http://uk-whitespaces.spectrumbridge.com
  • neul now making a 4.5cm2 board
    • expected price $17 (at scale)
    • range: 1-8km
  • new phrase: “the fog” — like the cloud but on the ground :-)
  • open source boards
    • using software defined radio chip (lime something)
    • myriad RF
    • nuand bladeRF
    • also hackRF?
  • has some location capabilities based on triangulation
  • ideas?
    • bike theft detector using the frame as the antenna
    • oxford guerilla sensor network for flood detection

Appium: Mobile Automation Made Awesome

Jonathan Lipps https://twitter.com/jlipps

  • cross-platform solution for native & hybrid mobile automation
  • other options for ios:
    • calabash-ios
    • Frank
    • ios-driver
    • UIAutomation
    • KeepItFunctional
  • other options for android:
    • calabash-android
    • MonkeyTalk
    • Robotium
    • UiAutomator
    • selendroid
  • wanted to set some ground rules:
    • test the same app you submit to the store
      • don’t want to add additional code into the app
    • write your tests in any language & framework
    • use a standard automation API & spec
    • make it open source and foster a large community
  • appium supports:
    • ios, android & firefox os
    • real devices, simulators
    • native apps, hybrids, mobile web
  • can write one set of tests that work across multiple platforms
    • if you’re careful in how you structure your app
  • appium exposes an HTTP server than allows selenium to run
  • selenium webdriver has clients in many languages
  • and is a W3C working draft, so nearly a standard :-)
  • appium also extends webdriver protocol with additional mobile-specific behaviours
    • talking to selenium to get those changes into
  • under the hood:
    • iOS: Apple Instruments & UIAutomation
    • Android 4.2.1 and up: Google UiAutomator
    • older Android + hybrid: Selendroid
    • Firefox OS: marionette
  • written in node.js, so npm install appium and write tests in node
  • or else have a GUI runner to set flags
  • GUI also comes with an inspector
    • so you can see what’s going on at each step
    • (don’t need to be the app developer to write a test)
    • will create some initial code for you from your actions
  • find things by:
    • accessibility
    • element type
    • hiearchy xpath
    • android id
  • you can use a config dictionary for IDs/xpaths to help cope with platform/device differences
  • instruments can only run a single test at once per host machine
  • Sauce Labs have lots of devices available across the net

    • provides scaling and device selection
    • can switch to Sauce just by changing appium end point + adding credentials
    • also need to provide app: pre-upload using Sauce API, or host on a server somewhere
    • http://saucelabs.com/mobile
  • Q: can you switch between apps?

    • we could use a second app to turn on/off wifi
    • A: doesn’t work on iOS — when you jump to another app then UIAutomation loses its context and quits
  • Q: can you fake location?

Programming is terrible

Lessons from a life wasted

Tef https://twitter.com/tef

  • Watch out for The Group Project: getting together to work on a project that individuals have not made time for themselves…
  • make your code easy to replace more than easy to extend
  • people often learn more from maintenance than from building from new
  • people tend to teach in the way that they learned best
  • C, Java, C# are not a great starting point for new programmers
    • they require concepts to figure out even before you can make things happen
  • learning programming should be a side effect of doing something exciting
  • girl at MIT struggling with English grammar
    • Seymour Papert asked her to write a sentence or poetry generating programme
    • after a few hours, she exclaimed “I know what nouns are!”
  • view source
    • one of the best features of Scratch online
    • learn by seeing something you want to copy
  • computer anonymous
    • support group for everyone
  • for a starter, introduce constraints if they’re not already there

Tuesday, 16 July 2013

MomoLondon: Operating Systems – a new set of Davids take on the incumbent Goliaths

Some really useful insights this week — with the panel providing a different perspective on the mobile industry than the usual. Although one question started on the HTML vs Native war, this was quickly knocked on the head and left for a future Mobile Monday.

I really get the FirefoxOS aim of making the web more accessible to new markets around the world. Mozilla has its own motivations for making a new OS, which are different to the usual “make as much money as possible”. It will be very interesting to see how they compete against the low-cost Android devices that are getting cheaper every year.

As for Ubuntu Phone & Tablet, this seems to be more about an operator story than a consumer one. I’m not sure of the reasons why a developer or a consumer would choose an Ubuntu phone. Having played with the sample tablets that were available on the night, I couldn’t see any particular advantages over Android or iOS (or Blackberry or Windows for that matter).

Ubuntu’s message seems to be that operators can customise the devices for their own content (that always goes down well with consumers, not!), or that you can have a single superphone that you can plug in to a screen and get a desktop experience (seems like a bit of a gimmick to me…).

Thanks to Geoff Blaber for being an excellent chair and keeping the discussion moving fluidly, and to all the panel members and organisers for a great evening.

Intro

Victor Palau, VP of Phone & Hyperscale Delivery at Canonical

  • hardware & os market has become monopolized in last few years
  • standardization on Linux kernel (mainly from Android) makes it much quicker to set up a new operating system
    • don’t have to worry about chipsets etc as much as in Symbian days
  • but platforms have to have something

Developer Economics Q3 2013

Andreas Constantinou, MD at Vision Mobile

  • launching latest research today
  • Ed.: this is always a really good read — Andreas gave us some highlights, but go and download the full report at http://www.developereconomics.com/go
  • html5 is number 3 development platform in use
    • Android leads, then iOS, everything else way behind
  • 61% of html is direct to browser
    • then phonegap at 27%
  • Windows Phone going down in intent share (i.e. less developers interested…)
  • iOS still leading monthly revenue at $5,200
    • Android catching up at $4,700 (using in-app advertising as main booster)
    • revenue models differ by platform
  • seeing an increase in platforms used by individual developers
  • main platform almost even between Android (34.4%) and iOS (32.7%)
    • html5 behind at 17.5%
  • report trying to quantify platform loyalty amongst devs
  • also trying to show which platforms are best for different challenges
    • and the different motivations for different developers
  • more experienced developers are using more tools
    • e.g. crash reporting, ad networks, push notifications

Panel

  • Geoff Blaber @geoffblaber
    • CCS Insight research house
  • Alex Sinclair, CTO of GSMA
  • David Wood @dw
    • principal at Delta Wisdom, formerly prime mover behind Symbian
  • Andreas Constantinou @andreascon
    • MD at Vision Mobile
  • Victor Palau @victorpalau
    • VP of Phone & Hyperscale Delivery at Canonical
  • Christian Heilman @codepo8
    • Principal Developer Evangelist (HTML5/Open Web) at Mozilla

What do new platforms offer manufacturers?

  • GB: essentially just 2 OEMs (Apple, Samsung) making any profit
  • CH: not a problem of distribution but where it is going
    • producing lots of phones in saturated market
    • Mozilla’s job is to keep the web open
    • the web is worldwide
    • FirefoxOS is targeting markets that mostly have featurephones, aiming to be people’s first smartphone
    • you can get old Androids but they’re 4 generations behind with old browsers that don’t show stuff right
    • manufacturers actually quite interested in this proposition
    • Foxconn hiring 3,000 people to make a FirefoxOS tablet
    • Samsung & Apple neutering open web — you need expensive hardware and a credit card to be a part of it
    • in Spain selling €79 phone with €30 pre-paid credit
  • GB: open initiatives have failed in the past: WAC, etc
  • VP: open initiatives can have trouble with leadership
    • Canonical remain open but have strong leadership
    • offering operators ability to showcase their content
  • DW: two good cases for disruption
    • companies that have shown their staying power
    • just an improvement in battery life would be welcomed…
    • smartphones naturally get stretched as new environments come along — and leave space for niches

What about the ecosystem?

  • AC: for any platform to be successful need buy in from:
    • developers, operators, manufacturers, users, …
    • devs have to learn new platform
    • users don’t care what’s underneath
    • operators have pre-allocated slots, often by OS
  • CH: Windows Phone is a great example
    • not seen the depth of commitment required from the operators
    • not willing to take the risk
  • AS: not all operators subsidise handsets
    • when a new version of the iPhone comes out, AT&T’s share price drops as they have to subsidise it
    • need an alternative
    • different operators placing different bets
  • AS: operators want to get their content onto devices
    • but are struggling to do so with iOS & Android
  • Ed.: this is probably one reason why those two are doing so well!
  • CH: app discovery as easy as searching
    • search for a movie: get IMDB deep link
    • go back to search and long-press to install app
    • then get offline goodness etc
    • drives me crazy that I have to wait 5 months for a game my friend is playing on his different device

What about the corporate sector or 3rd sector (training & education)?

  • VP: one of our main focuses at Ubuntu
    • have a very secure platform, bringing to phone
    • converged device — plug in your phone and get full desktop
    • good for enterprise: single device, secure
  • CH: enterprise difficult to get into as wedded to Blackberry or other platform that’s integrated with email system
    • difficult sell for open source
    • 3rd sector is an easier sell
    • e.g. simplified phone for elderly: just photos of family — click to call
  • AC: changing the UI of the phone reminded me of SavaJe (way back in 2006, bought and swallowed by Sun)
    • html5 is top platform for enterprise
    • top driver is efficiency
  • CH: developer scarcity — don’t have to go out to an agency
    • just use existing web team
  • DW: enterprise can drive home usage too
    • LinkedIn most popular enterprise app?
      • switched back to native on mobile as tools were not good enough
  • AC: html5 apps are like a car without a break
    • once it starts leaking, you can’t stop it

Are you seeing apps migrating from mobile to desktop?

  • DW: more about device usage — consumer behaviour is leading
  • VP: end of Windows XP support is great: making people think about it
    • at the moment can’t replace them with an html5 app
    • but solutions available in Ubuntu
  • AC: crawled the Google store to find APIs used
    • only 1 in 4 Android apps could be done on straight web
  • CH: that’s why Firefox provides access to device
    • some memory leaks come from platforms they are using to generate code
    • Chrome and Firefox dev tools making great strides

How many years are going to pass before clients say “don’t do native”?

  • VP: has to be lots more about what’s good for consumer
    • depends on the situation and who you’re aiming it at
  • AC: it’s not an either or…

Privacy: number one for Mozilla / chinese walls between work & home

  • AS: virtualisation of phones available: multiple phones in one
    • lots of companies don’t use Dropbox for security reasons
    • don’t think about all the data that certain closed OSes are capturing about us
  • DW: trustworthy and transparency may be change reasons
  • CH: already seeing that for Firefox browser
    • sometimes have to make the UX harder to make people think about what they are doing
  • VP: full Linux implementation
  • GB: isn’t there an argument that deep integration with Google is part of Android’s success?
  • AC: people don’t ask if Facebook & Google are spying on them: they give you something back which you perceive to be of value
  • CH: it’s actually more addiction than value…

What positive reasons for getting new platforms?

  • AS: it comes down to competition
    • is it a good idea for just a few companies to make the profits?
    • I represent people who used to make the profits from the industry…
    • was previously director of WAC, but by the time it was ready there was no need for it as only two platforms to develop for
    • operators want to implement RCS/joyn (operator-based IP messaging, voice, video, etc) and new platforms give them the chance to get involved
  • DW: so many variations
    • e.g. Nokia mega pixel camera: “average user only cares 16/23 about camera pixels” — but actually there’s a reasonable niche here

What about the important services that users expect?

  • e.g. Skype, Google Maps
  • AS: was in Korea last week: their search provider is being investigated for monopolistic practices
    • also a messaging provider was worried about operators implementing RCS/joyn and taking away their revenue stream
  • CH: service in China to add “written on an iPad” to the bottom of your email
    • $5 a month, and they stole your email data!

What about individual permissions?

  • CH: permissions can be asked on a more granular basis
    • no great list of permissions as for Android
  • AC: how much would you be willing to pay for a service that monitored and reported how your private data was being used?
    • people want it but are not willing to pay for it

Who is likely to nudge sub-saharan Africa into smartphones

  • full of featurephones
  • OLPC not doing that well
  • CH: OLPC didn’t do so well as missing network connectivity
    • Ushahidi is building a wireless BRCK to be a modem for Africa
    • if someone asks “what if Google or Apple go after these markets after you”, answer is “then we’ve won!”

Visiting from Momolo Nigeria: what difference will a billion users in Africa have on design considerations?

  • 120million mobile phones, mainly featurephones
  • CH: sent UX designers to South America to come up with use cases
    • build apps with Telefonica targeted at those markets
    • need to meet somebody local who knows the area
    • can’t assume that everybody wants the same thing
  • VP: community is very important
    • a lot of people in Africa want to contribute and make things better for their community
    • have a whole set of local community councils
    • e.g. large Catalonian community
  • AC: if you need to access the internet you need a data plan
    • developing countries have very expensive access plans
    • need to have smarter ways of micro-access to the internet
  • DW: designing meaningful UI for people who can’t read or write
  • AS: some operators already doing micro data plans
    • e.g. facebook access not coming out of data plan (facebook zero)

Closing remarks

  • GB: often on West Coast of US, it’s Android, iOS or the highway
    • been impressed that there’s a great strength in the alternatives
    • barriers to entry getting lower
    • html5 provides common access
    • market driven by growing diversity
    • fragmentation in OS space is likely to proliferate
  • AC: there is no black or white
    • there’s always multiple alternatives
  • AS: there’s a definite need & opportunity
    • don’t know who is going to win
  • DW: which David will survive?
    • execution: can the company keep pushing out high quality?
    • proposition: will people bit?
    • community: can they start a virtuous cycle?
  • VP: can you get a consumer to buy something different?
  • CH: there’ll be a lot of opportunity for a lot of players
    • we were the only cool thing in MWC twice in one day
    • device should not spy on you: built the internet in a different idea and this should exist on mobile phones too

Announcements