Showing posts with label analytics. Show all posts
Showing posts with label analytics. Show all posts

Wednesday, 14 May 2014

MomoLondon: Cloud Computing & Mobile

A new venue tonight — up on the 9th floor of Google’s Central St Giles office. They even provided good food for the hungry mobile mondayers…

The evening’s focus was on Cloud Computing and Mobile, and the questions seemed to focus mainly on the cloud with not much discussion about how it related to mobile. The chair, Camille, kept the discussion moving along briskly, but we didn’t really get into any depth on any of the subjects. Maybe the audience could smell the food!

The panel

  • Chair: Camille Mendler @cmendler
    • Principal Analyst at Informa
  • Rob Easton @Cloud_Easton
    • Head of Google Cloud Platform UK & Ireland
    • Eurovision app used App Engine for back-end
  • Dr Janko Mrsic-Flogel
    • CEO of Private Planet — personal cloud
    • 7 out of 10 carriers are providing a personal cloud solution
  • Caroline Van Den Bergh @GoldenGekko
    • Golden Gekko mobile agency
    • 85% of apps we build are based on Google App Engine
  • Jonathan Raper @MadProf

outages & availability

  • JR: best service providers are those that communicate well when things go wrong
    • one provider went down and didn’t tell us anything for an hour

looking forward

  • RE: google datacentres include a new one in Taiwan at 15 hectares
    • green computing
    • Google can provide very low latency
    • enables reaching out to new business areas such as the film industry
  • JR: still talking quite aggregated performance measures
    • can’t ask for X many transactions for Y pounds
    • not that detailed
    • next step may be platform products
  • CVDB: mobile enterprise software saving two days a week
    • managing remote teams
  • JR: sometimes blame is shifted between telcos & cloud
    • would like to have better tracing
  • JMF: Private Planet have a totally green datacentre in Telecity in Holland for T-Mobile

internet of things

  • JR: the problem is trading information
    • automatically discovering different feeds & blending them
    • spend 3 weeks integrating code and 3 months arguing over terms & conditions
  • CVDB: best successes have been smaller ones
  • CM: find my yak in nepal
    • the yak’s don’t talk back — so there’s no privacy issues!
  • RE: getting electricity usage feeds every 10 minutes
  • CVDB: there has been scaremongering around Google capturing data
  • JR: all our data is royalty-free downstream
    • makes it much easier to deal with
  • CM: Copenhagen have bike devices to share traffic information
    • provide individual exercise info
    • but also shared with municipality
  • JR: Waze has lots of complicated terms & conditions
    • data is available but locked up

the next generation

  • CM: has been proved conclusively that 3D gaming improves your cognitive ability
  • JR: …minecraft
  • JR: it’s still a bit like early 2000 — mobile operator walled gardens
    • want to take down the barriers and bring the data silos together
  • CVDB: working with Saga
    • older people have more time, want to delve deeper
    • tablets more popular than mobile phones

data scientists

  • CM: shouldn’t we moving towards everyone manipulating their own data
  • JR: digital literacy is very shallow, especially in highest decision-making tiers

security issue — data protection

  • safe harbour in tatters
  • can’t use the cloud at all if we have any secure data
  • JMF: Private Planet always has data centre in the specific country
    • but are governments the biggest problem? what about the corporates?
  • JR: if you need to do it, in-country encrypted solutions are available
  • RE: sure, there are some workloads that Google can’t take on
    • e.g. we won’t let you audit our data centre
    • so can’t work under FCA regulations
    • over time, some of these regulations are going to change
  • JR: all have to do as much as we can to help the government make the right decisions
  • JR: sometimes the safest place to do something is in the cloud — e.g. running Windows
    • we don’t allow it on any of our machines
    • but it’s great in the cloud!

what if cloud provider company goes bankrupt?

  • JR: escrow
  • JMF: most agreements done via a channel partner — so that partner will continue the service
    • single party relationship is much more complicated
  • RE: cloud business could be bigger than ads for Google
    • SLA penalties are often a percentage of what you pay
    • but if you pay less and less, the SLA means less and less…

is it becoming like supermarket wars?

  • RE: Google reduced prices — and if you use an instance more than 25% per month then get a discount
    • terabyte of storage is $26/month
  • CM: just like a loyalty card…
    • who will be Lidl and who will be Waitrose?

will we still be waiting in several years?

  • JR: overestimate change in the short term and underestimate in the long term — change is stepped
    • sometimes have to wait for the step change in technology or regulation
  • CVDB: business are going to grow up quickly
    • first digital generation CEOs will be around in the next few years

third party dependencies

  • JR: Apple reviews can be capricious
    • if Apple fall out of love with Dropbox, then that could cause a problem for lots of apps
  • JMF: was a huge debate on mobile medical health a while ago
    • then suddenly there was an app that just works
    • and the issues can just disappear
    • gadget-led terms and conditions…?

speed & access?

  • RE: check out server density review
    • blog by someone who reviewed lots of providers and switched to Google
  • CVDB: Golden Gekko mandate that all backends must be on Google App Engine
    • mainly so that clients can scale

new innovations in infrastructure?

  • RE: Google build our own servers
    • apparently they would be the 3rd biggest manufacturers in the world
    • they value new innovation

where is the next growth to make it easier?

  • RE: focused on the developer
  • JMF: If This Then That
    • making cloud development open to the consumer
    • certain mobile operators are understanding this and joining up devices in the home
  • CVDB: finding that parse.com doesn’t suit
    • one size doesn’t quite fit all
    • prefer google’s flexibility

inviting consumers to get more involved

  • CVDB: user testing
    • avoiding ivory tower
    • developed O2 Priority Moments
    • built packaged solutions based on it
    • incentivized behaviour also used in enterprise apps
  • JR: designed a first location bank
    • your own location storage — that you can choose to share
    • (Ed. see also fireeagle)
    • next generation have a different approach to privacy
  • RE: snapchat is a massive google customer
  • audience: teenagers using technology completely differently
    • using snapchat to have a whole conversation
  • RE: snapchat consumes more IT than any banking industry
    • JDI has 10 petabytes on Google cloud
    • consumers of IT will be well away from the enterprise
    • can have failure at a much cheaper cost — can learn more

what financial services are possible in the cloud?

  • RE: restricted by FCA regulations, but other options possible
    • e.g. datasift to search across twitter
    • big challenge to attract IT talent in financial services as there are so many restrictions

skills

  • JR: right now it’s hard to hire — ruby on rails developers are hard to find
    • constraint on development right now
  • CVDB: couldn’t agree more — mobile skills are in short supply

tools for analytics & loyalty/crm

  • looking at how data can be analysed
  • wanting to drive revenue per user
  • wanting to get the right tools in place to complete the feedback loop
  • CVDB: iris solutions company
  • JR: “build it in the cloud, but just don’t tell IT”
  • RE: tableau, BIME, etc. working on top of Google Big Query
    • now a lot cheaper

After the panel discussion

As often happens with Mobile Monday, the discussion after the panel was richer than the panel itself. Some discussion points that came up when I was talking to people afterwards included:

  • How do you balance keeping data on the device and in the cloud, to deal with intermittent network availability?
  • Will the banks get clobbered by more agile personal finance companies that don’t have to worry about so many regulations?
  • Why has it taken Google since 2008 to move from basic App Engine web apps to a full cloud platform?
  • How will Google make more money from Cloud Computing than from Ads? There’s a big market, but the price is dropping…
  • …and on a completely different note, several people were interested in setting up Code Clubs in their local primary schools, but were stretched for time — perhaps they could work together and contribute part-time?

Thursday, 24 January 2013

MomoLondon: Demo Night 2013

Another fun demo night from Mobile Monday London. Some new ideas and some old — you never know which ones are going to stick!

My bets are on Vyclone and Critical Arc…

Blue Badge Style

Fiona Jarvis & Kishan Gupta @bluebadgestyle

  • a guide for the discerning less able
  • app available for iOS: Blue Badge Style
  • graduated from the Mobile Monday & UCL Mobile Academy
    • (it’s really great! sign up now! :-))
  • social media advisor suggested:
    • video of app to attract people to download
    • RSS feed in app
  • added TTS (but not voiceover?)
  • got 1000 downloads in Nov (PR & press) + 300/month afterwards

Boss Level - Scavengers

Nick Brown @boss_level

http://playscavengers.com

  • game based solely in HTML5
  • aimed at PC, mobiles, tablets & smart TVs
  • want same control system across everything
    • up down left right & select - lowest common denominator
    • fixed 720x720 resolution at the moment (will need to change for different devices)
  • closed alpha at the moment
  • aiming for Kickstarter to raise profile
  • cross between xcom & worms
  • freemium business model with in-game purchases
  • also thinking about a store for game assets
    • there’s a game editor that allows you to completely customise levels and characters
  • would rather not have in-game adverts, but depends on the eyeballs
  • currently two developers

Connecthings

http://www.connecthings.com/

  • NFC tags for street furniture
  • 1500 tags displayed in Strasbourg
  • real-time transport info
  • integrated with cycle info too
  • also has event & POI database
  • POI tags show POI info first, transport tags show transport info first
  • tags have QR codes too
  • license the platform to municipalities
    • though not sure how well it would go down with councils that already have their own portals….

Critical Arc

http://www.criticalarc.com/

  • previous company led security & surveillance for Olympics
  • security & safety in large open spaces
    • e.g. universities
  • define SafeZones where there is a response team available
  • security team have an app to see a situational view of the campus
  • free app to call for help & get notified
  • have created a platform for sharing location and situational information
  • universities are first market
  • no tracking in the background for general public
  • security officers are tracked in the background
  • Wi-Fi positioning covers off GPS issues
  • can report on security staff location — heatmaps etc, can be used to actively plan response

Decibel Analytics

http://www.decibeltechnology.com/analytics/ @decibelanalytic

  • actionable analytics
  • object maps, which integrate with elements on page, to show which are actually being clicked
  • attention maps — shows which areas of page are actually viewed
    • i.e. where is the fold for all your customers…?
  • which content is contributing most to goals & revenue generation
  • can filter by device and by incoming source
  • adding A/B testing soon

Men’s Fitness UK iPad app

Paul Cooper, Design Director, Dennis Publishing @dmfcoops

iPad app: Men’s Fitness UK

  • COPE — create once, publish everywhere
  • Drupal CMS with responsive design & native elements
  • started with The Week (iPhone & iPad)
    • takes one person one day to lay out
    • less than 100Mb an issue
  • now done a monthly magazine — more content
  • Drupal 7 & responsive is a complex thing
  • Adobe DPS takes over a week to lay out an issue of EVO
  • content producers (photogs etc) struggled a little with responsive design, but get training
  • can preview the issue before generating the app
  • looking at licensing the system to other parties
  • developing a system like InDesign that outputs responsive HTML

GO!Enterprise

Globo plc - Enterprise Mobility in a BYOD world

http://goenterpriseserver.com

  • deploy access to back office systems in a secure manner
  • no need for mobile device managment
  • client app available from standard app stores
  • three products:
    • office — point and go
    • mobilizer — development for custom enterprise apps (cross-platform)
    • reach — make apps for customers

Trademob - mobile click fraud protection

Adrienne Gauldie @adriennegauldie (ag@trademob.com)

http://www.trademob.com/

  • did a study in june (6m clicks)
    • 22% accidental (< 0.1%)
    • 10% botnet & hijacked clients
    • 8% server-side fraud
  • can see it from data…
    • e.g. in-app clicks from non-mobile user agents
  • don’t get fraudulent clicks from publishers with real customers
  • building a blacklist of dodgy publishers
  • 100 people in company

Vyclone

http://vyclone.com/ @vyclone

Download the app for iPhone

  • wouldn’t it be amazing if we could make a single video from all the angles at a rock concert…?
  • combine multiple vids in one
    • had 200 people filming a Jason Mraz concert
    • 150 people at Ed Sheeran in Hammersmith Apollo
  • business model:
    • lots of interest from music industry
    • want to get footage and release it to fans for behind the scenes
  • copyright: music industry recognise that this is already happening
    • now they get access to video, so a win-win
    • customers can choose to keep video private, or share with everyone
  • app is winning lots of awards!

AudioSnaps

Marc Sallent, We Choose Fun

http://audiosnaps.com

  • record 5 secs of ambient sound while taking a picture
  • JPEG + MP3 = JPEG! (plus extensions)
    • all devices can still show it
    • web site can play audio with just one line of javascript
  • why not just take a short video?
    • want to capture a moment, not tell a story

Chirp

Geraint, Animal Systems

http://chirp.io

Download the app for iPhone

  • send small amounts of data using sound
  • want to release an API for third parties
  • have an arduino that can chirp
  • teach the machines to sing!

Catch-up with last year’s demos

Two of last year’s Demo Night presenters returned to give us an update. See my notes from last year.

Ko-Su

http://ko-su.com @kosumobile

mobile learning for everyone

  • demoed last year, one month pre-release
  • been accepted into BBC Worldwide Labs
  • material created in lots of countries around the world
  • now “officially out of pre-revenue” (?)

Six-Three

https://six3.tv/

Simon Frost, CTO @spli

  • started out as a private closed network — a messaging thing
  • sports stars started using it to keep in touch with their public, but also to communicate with their private street marketing teams
  • made it onto WAYRA Telefonica business incubator

Sunday, 28 October 2012

Droidcon London 2012, Day Two

The second day of Droidcon London — and they kept us going from 9am until 7pm with a full programme! As with the previous day, the keynotes were focussed on how Android is being used in non-phone devices — extending the rule of configurable software over fixed hardware.

I’d really like to add the slides to these notes — the Flurry presentation especially has loads of useful information that I didn’t catch. If any of the authors read this — please get in touch via twitter or leave a comment and I’ll add a link!

Future of Android - Vendscreen

Paresh Patel

http://www.vendscreen.com/

  • touchscreen device that fits as an extension on any vending machine
  • accepts credit cards via swipe + tap to pay
    • chip & pin coming later
  • network connected — makes the machine smarter
  • can cluster machines
    • e.g. lots of machines in a hotel
    • customers can get inventory from their phone
    • energy management — can turn off some
  • example: sold small artwork pieces in a vending machine
    • people weren’t surprised
    • prices didn’t have to be low
    • people paid up to $99 by swiping their card
  • right now running Android 2.3.4
  • minor modifications:
    • got rid of desktop
    • added a recovery screen

Future of Android - Parrot Asteroid

Frederic Albinet

http://www.parrot.com/uk/products/hands-free-car-kits/parrot-asteroid

  • parrot asteroid Android car radio
  • classic & mini using Android 1.5(!!?!)
  • tablet and smart devices using Android 2.3 (still old…)
  • does voice recognition search for contacts and music
    • music searches across connected device and also the internet radio stations and other sources
  • parrot app market
    • will be live from november
    • can browse from PC or from device
  • looking to extend to dynamic network between vehicles
    • though this would depend on other cars having devices with the same protocol…

ADzero phone launch

http://www.justadzero.com/

  • world’s first bamboo smartphone
  • quad core device
  • full HD screen
  • bamboo feels really good to hold
  • flash innovation: circle around the camera — works much better for macro

building songkick

Akshay Dashrath and Jamie McDonald, Novoda

  • took 2 devs 3 months to build initial version
  • agile process, two week iterations
  • tools used:
    • pivotal tracker
    • github
    • maven
  • third party libs:
    • ActionBarSherlock
    • ViewPagerIndicator
    • Novoda ImageLoader & Novocation
    • NovodaTime — dealing with Joda Time problems

user experience design

  • spent a lot of time finding pain points in initial install process using paper prototypes
  • found out that putting buttons in the action bar were not found by users
    • mocked up on an actual device to see how it felt
  • can set a custom notification light colour (works well with branding!)
  • styled login web view to look like rest of app
  • first launch experience:
    • had a scan screen with an OpenGL animation to keep the user entertained while the initial artist information is found
  • used external apps that expose content providers
    • google music — got artist names using a projection and flexjson to push it to songkick server
    • last.fm

caching & location

  • used novoda’s novocation location library
  • used Jackson mixture of streaming & tree model to avoid memory issues
  • data from web calls loaded into database, then database loaded into views with cursor loaders
  • detachable result receiver — google IO 2011 app
    • lets you deal with rotating views and re-attaching the new activity to the old cursor loader
  • all visited content cached using Reto Meier’s Big Cookie approach (see Making Good Apps Great)
    • “Just Added” concerts sync in the background
  • if offline, then shows a transparent banner at the bottom of the page
    • send out a sticky broadcast if an online query fails
    • broadcast cleared if the app gets a good response
  • Big Cookie caching can build up too much data
    • data removed on a daily basis by removing old data — e.g. past concerts, etc

testing

  • manual QA for most stuff
  • automated tests were more for stress testing
  • also did observational user testing (one-way mirror room)
  • put UI options in a debug menu so could easily do A/B testing
  • build machine runs instrumentation tests on however many devices are plugged into it
  • used Eclipse Memory Analysis Tool to check memory allocation
    • used to fix large back stack activity
    • enabled StrictMode to deal with issues with Google Analytics & Joda Time
    • Joda Time used the UI thread for DST settings (can be fixed — see Stack Overflow)
  • got featured in Play
    • installs went 400 / day -> 20,000 / day!

soundcloud audio in Android

Jan Berkel and Jon Schmidt, SoundCloud

playback

  • Java MediaPlayer talks to C layer MediaPlayerService
    • check out the C source code to see what’s going on
  • underneath this uses PacketVideo OpenCore up to 2.2, then Google Stagefright
    • shouldn’t have to care about underlying implementation but if you’re doing something complicated you do…
    • OpenCore
      • mature, stable but limited
      • seekTo doesn’t work in streams
    • Stagefright (default from 2.2 and beyond)
      • fixes seeking
      • but not available in all devices…
  • when launched shortly after 2.3 released decided to support 2.1+ so that could cover 75-80% of devices
  • to find out which mediaplayer, tried to read /system/build.prop
  • however, some phones had both frameworks!
    • one for streaming and one for encoding…
    • playing locally would behave differently than streaming from a server
  • so to actually find out, connect the MediaPlayer to a local socket and read the user agent on the other end…
  • built a StreamProxy local server
    • could cache and fetch chunks from CDN
    • MediaPlayer then talks to proxy
    • inspired by NPR android app
    • but still no control over buffering (may want to alter it depending on network conditions)
    • different versions of Android behave differently
      • ICS has a huge buffer so takes ages before it starts playing…
  • bundled Android HttpClient is broken (it’s an old snapshot, not a proper release)
    • have to catch NPE from execute!
    • recommended to use standard Java URLConnection
    • bundled HttpClient has now been deprecated

recording

  • live encoding options on earlier Android versions — just AMR AB
    • only good for voice
    • narrow range, low quality — sounds like a phone call
  • instead recorded in PCM and used 3rd party lib to encode it before uploading
  • chose ogg vorbis
    • good for licenses
    • java port is slow (and incomplete)
    • would take 4x length of audio to encode!!
  • from 2.3.3 Android introduced AAC encoding
  • new requirements involved getting at the actual audio data — simple editing, resuming record
  • had to write own native layer for codecs and audio processing (Java too slow)
    • used C-based Vorbis Encoder & Decoder with a thin wrapper
    • also added a native amplitude analyzer
  • tried to avoid sending data back and forth too often
  • but… now had to deal with CPU flavours
    • armv5 on older devices has no floating point support
    • have to build native pieces for various architectures (armv7, mips, x86)
    • older devices fall back to old-style encode later style
  • Jelly Bean has new media encoding APIs
    • will be useful in the future…
  • some sony devices have a patched media framework that behaves differently…

bug detection

  • robolectric
  • bugsense crash reports
  • get a load of devices and get people to use them

The fly-in app menu for designer and developer

Cyril Mottier @cyrilmottier

  • watch out for activity back stack
    • recommended to only use fly-in menu at root level
    • but still want the back button to exit the app without going via the fly-in menu
  • libraries (all on github)
    • android-undergarment
    • slidingmenu
    • android-menudrawer
  • don’t slide the actionbar
    • you’d need a custom actionbar…
  • or create your own: need a custom view group & view
  • see “making of prixing”
  • make the slid out activity inactive
    • click on it to make it visible again
  • may need to think about right-to-left languages having right-sliding menus

Who needs thumbs? Android Instrumentation and Reverse Engineering

David Teitelbaum http://blog.apkudo.com/

I only caught the very end of this, but it looked like it could be a really useful talk — worth chasing down the slides

Android and Arduino

Fei Manheche, Robobo

  • 3 steps:
    1. build basic circuit & test it from PC (use serial monitor via direct connection or Bluetooth)
    2. build basic arduino software to set it up to be controlled from Android
    3. build Android app to talk to Arduino
  • bluetooth modules available for £6-10
  • use amarino library to simplify bluetooth between android and arduino
    • can also use amarino app to test basic bluetooth connection
  • don’t send too much data to the arduino at once (unless you write buffering serial code on the arduino…)

Memory Analyzer: avoiding memory leaks

Felipe Ferraz, CESAR

  • each process on Android has its own Dalvik VM
  • the Zygote process is forked for each app
    • it already has common libraries mapped into it, so they’re shared as read-only between all apps
  • use adb to make a heap dump (kill -10 <pid>)
    • or use Eclipse…
  • useful to create multiple heap snapshots to tell story of memory leak
  • http://www.eclipse.org/mat/
  • make sure to null Callables inside Images

Using Ubuntu to develop cloud-connected android apps

Victor Palau, Ubuntu

  • juju: https://juju.ubuntu.com/
  • orchestrates groups of servers deployed to cloud systems
  • can deploy a local instance or to Amazon ECS (or any other OpenStack compatible service)
  • local deployment uses zookeeper to set up containers on a single machine

Mobile Analytics - taking your Android app to the next level

Simon Podd, Director of Sales, Flurry EMEA

  • according to EMF there are 2Bn “affluent adults” in the world
  • 17% of time spent in Android apps is in Europe
  • time spent in apps is increasing month by month (94mins/day in Dec 2011)
  • social networking category is growing fast (equal to games in Q1 2012)
  • Flurry tracking 220K apps across 660m devices
  • iPad makes up 88% of top 3 tablet sessions
  • of the top 20 Android devices by worldwide sessions (May 2012), the top 3 are:
    1. Galaxy SII
    2. Galaxy Ace
    3. Moto Defy
  • worldwide 2011 app revenue (iOS & Android):
    • 52% in-app purchases
    • 24% mobile advertising
    • 25% app sales
  • advertising revenue (from Flurry’s ad slots):
    • iOS $6-10 eCPM
    • Android $20-30 eCPM

gaming category stats

  • ages 13-34 spend most time in apps
    • 18-24 & 25-34 about even
    • fairly even gender split
  • more money spent by 25-34yo men (29%)
  • average transaction sizes fairly constant across ages, and higher than you might think:
    • M: $15.60
    • F: $11.90
  • customers download on average 50-85 apps during a device lifetime
  • but they only use 5-10 apps a day
  • there’s an app discovery issue on the device

flurry tracking

  • can use ranges for event parameters…

Applying lean principles to enterprise mobile development

Dave Slocombe @daveslocombe — Head of Mobile Channel, lastminute.com

  • product scorecards
    • 5 or 6 key goals for the year
    • see Marty Cagan, SVG
  • keep time to release short
    • don’t miss the opportunity to innovate
  • avoid big bang releases
  • essentials: co-location & cross-functional

generating and managing ideas

  • ideas should come from all sides of the business
  • need to have a massive bucket of ideas
  • make them visible so you can choose amongst them
    • great for managing HiPPos (highest paid persons)
    • they can see that their idea is on the board
  • doesn’t mean that you have to work on them!
  • prioritise ideas
    • use the product scorecard

selecting ideas for development

  • UX team does customer insights
    • qualitative: what problems are we solving? is there a market?
    • quantitative: talking to data analysts
    • looking for strong signals
  • product owner reviews customer insights
  • UX team create designs in iterations, increasing fidelity as they go
    • want to be able to ditch bad ideas before spending too much time on them
    • try guerilla testing: take it to someone in a coffee shop and ask them what they think
    • get marketing and devs involved as well
  • get UX ideas out without using developer time
    • use axure or similar
  • have an internal site of proposed designs
    • available to exec team
  • play back early stage designs to other teams, like finance and supply
    • surface problems and feedback early
  • if ideas are generated, they can go back onto the ideas board (don’t deal with them right now)

development processes

  • retrospectives
    • done every two weeks
    • if you leave it longer, the issues get bigger and harder to solve
    • more frequent = smaller, easier to fix issues
    • e.g. found that they needed a “design issues” wall
      • edge cases found missing by the designer, not captured
      • introduced “creative coding” — designer + developer pairing, making a first pass of the UI
      • brings designers into what’s possible on mobile
      • helps devs understand value of brand & aims of user experience
  • Dave was originally a skeptic of pairing, but converted:
    • sharing knowledge
    • repeatability, consistency
    • drives out “hero developer” mentality

testing & releasing

  • “release process is the metronome that drives progress”
  • continuous deployment
    • every check-in should be deployable
    • repeatable consistent environments
    • currently 12mins to deploy to production
  • devices are tiered for testing:
    1. automated tests, max experience, manual test
    2. automated tests, optimum, limited manual
    3. observe trending, monthly testing, graceful fallback
  • just pushed iOS 3 down a level
  • looking at webdriver to generate PDFs for visual check

tying it together

  • showcase every two weeks
    • include other departments
    • no roadmap items, just value added in the last two weeks
  • focus on what your customers say, not what the industry says is cool
    • apps vs web — choose from your own analytics
    • e.g. for travel, 3x more likely to book on web
  • stats:
    • seen 10% month on month growth in Android, compared to iOS
  • ensure product always gives tech team 20% tech debt time

Replacing the Android emulator

Daniel Fages, Genymobile

http://androvm.org/

  • built on top of android-x86
  • has an emulated WiredSSID wi-fi connection
  • can use OpenGL 2.0 using hardware
    • works really well - can emulate Angry Birds
  • just added injecting sensors from attached Android device (accelerometer, etc)
  • currently working on management tool and other features
  • looking for feedback on next features
    • network
  • also can install VM on other people’s machines without having to worry about SDK
  • will be working to integrate with Jenkins
    • could be great for creating a snapshot when something goes wrong
  • not working:
    • multitouch
    • NFC, Bluetooth
    • GSM pieces: SMS & voice

Developing accessible apps for Android

Gary Readfern-Grey, RNIB

  • many people are relying on apps as the only way to do crucial things in life
  • talkback comes with Jelly Bean
  • problem:
    • icon-based buttons don’t have proper audio labels (“icon 39”, “icon 19”) so can’t find what is on the screen
    • watch out for “jump back button button
  • accessibility came in on Donut 1.6
    • relied on physical keyboard and trackball
    • touching the screen behaved as normal and gave no feedback
  • Talkback and Eyes-free-keyboard added more recently
    • eyes-free added in Gingerbread
  • ICS brought in explore-by-touch
  • Jelly Bean brings in gestures:
    • moving focus
    • back, home, recent apps
    • notification shade
  • WebView is harder
    • Jelly Bean & ICS have an additional “allow web accessibility” checkbox

testing your app

  • download talkback from google play
    • Jelly Bean has it installed (at least on Nexus 7)
    • settings / accessibility / turn on Talkback
  • check that views are focusable and have content descriptions
  • custom views need hover events

documentation

  • Google I/O 2012 making android apps accessible on youtube
  • developer.android.com: making applications accessible
  • android 4.1 accessibility APIs

top things to do:

  • add content descriptions to your widget
    • can do in XML layout using android:contentDescription attribute
    • or use setContentDescription
    • latest linter should check for this
  • make sure you can get to all elements of the app through a keyboard
    • will also help for Google TV
  • don’t depend on colour alone…
    • e.g. “correct the field that’s coloured red”
  • test it! try out Talkback
  • RNIB Innovation can help you
    • RNIB offer paid consultancy
    • if they’re doing something that RNIB really want and aren’t in a position to pay, then they could offer free help too
    • innovation@rnib.org.uk

Tuesday, 4 October 2011

Over The Air 2011: The FT Web app - We've Got a Website for That

Andrew Betts, Assanka @triblondon

  • An app is:
    • responsive design
    • responsive to human interface (mouse, keyboard, touchscreen, TV remote, …)
  • The Daily app is now generating less than 50 tweets a day (and still going down)
    • Down from over 200
  • iPad web app also works on other devices
    • not just tablets – phones too
    • currently only accessibly on iPad
    • works on Android & QNX but not released yet
    • Android imminent, QNX a few months
  • server serves the same code to all devices
    • client does customisation and caches as much as it can
    • so can go offline and still access pages
  • FT web app
    • 8 months with 3 people
    • then additional 4 months with same people to get Android & Playbook

issues

  • flowed columns and flowing text around fixed elements
    • adobe webkit fork has great flow additions - but not available on devices
    • css3 template layouts – but again not supported
    • so have to measure content and cut it into positioned containers using Javascript
  • content balancing
    • always show a whole number of items across the width
    • done by classifying devices into four groups according to screen size
      • small, medium, large, large wide
  • podcast pages
    • want to keep playing audio even when move to another page
    • put audio player at the top of the DOM, so not altered
    • entire app is in a single page – just swap content in and out
  • swiping between sections
    • continuous carousel made out of three divs
    • middle one is always the current
    • outer ones are preloaded as required
    • implemented swipes using touch gestures
    • have to do your own gesture interpretation
      • distinguish between slow drags and flings

tools

  • playbook has remote web debugging
  • WeinRE can do similar, but can’t debug Javascript
  • TouchScroll allows you to keep headers fixed and snap to columns when swiping across
  • web debugging proxies (e.g. Charles)
  • use desktop for layout, but real device for interaction (swiping)

discoveries

  • people use native apps differently
    • they tap lightly and fast
    • the web browser waits for fast taps in case there’s a double tap to zoom
    • if you don’t want double tap to zoom
    • Assanka made fastclick

offline access

  • launching app offline
    • need to specify URLs in app manifest
    • if you change a single file, all of the manifest needs to be re-downloaded
    • store as little as possible
    • the more you store, the longer your app will take to launch
    • iOS manifest is buggy – you can get name conflicts with other webapps
      • so make sure you give your manifest a custom name
    • development is hell – things get cached the whole time
      • instead, add a comment that changes every minute (for dev)
      • still leaves you time to refresh a few times to check the cacheing
  • manifest is no good for editorial content
    • local storage is much faster than SQLite
    • so if you only access by key then use it
    • you need permission to store > 5Mb
    • strategy:
      • launch app from web, just store <= 5Mb and prompt to save to home screen
      • saved from home screen, immediately ask for 50Mb and never ask again
    • images downloaded from server as base64 encoded strings
      • can combine images into single requests
      • and can then gzip the whole thing
      • stored in local SQLite
      • rendered into DOM as a data: URI
      • base64 transfer also avoids operator image recompression!
  • analytics
    • can’t use Google analytics
    • log user actions into local DB
    • POST the log when requesting updated content
    • on the server, rewrite the log into an Apache format access log

unresolved issues

  • SSL security: no browser chrome, so no browser padlock
    • trusted, because we tell you…
  • Social media integration – OAuth in separate window doesn’t work
    • have to reload completely when return to app
  • offline adverts:
    • not technically hard, but ad server companies don’t know how to deal with them
    • can’t retract the ad
    • can’t measure clicks
    • can’t click through at all…
  • automated QA – selenium doesn’t really work
    • ended up using lots of people and lots of devices

platforms

  • Android is by far the poorest web environment when compared with iOS and QNX
    • mainly due to lack of hardware-accelerated CSS transitions
    • so FT have a native Android app which has a single native component – the gallery to enable swiping
    • the rest of the app is HTML/CSS/JS
  • QNX has a native app too, but only to have a home screen icon and to provide distribution

Q&A

  • upset Apple?
    • probably not – FT are specific market
  • differences between web app and native
    • web has more sections than native ever had
    • web app preloads content, so people swipe more often
    • as a result web app gets much more interaction
  • is not appearing in the app store an issue?
    • yes, but instead making tactical native apps
    • e.g. FT Top 100 Companies – tells users if you want the full edition, go to the web app

Thursday, 8 September 2011

iOSDev UK: Making Money with In-App Purchases

Dave Verwer, shinydevelopment, @daveverwer

Developing in-app purchases in the Explore Flickr app

  • purchases can be:
    • content, functionality (permanent purchases)
    • services, subscriptions (repeatable purchases)
  • have to design your own store
  • in-app purchases restrictions:
    • no promo codes or volume purchases
  • store should answer:
    • what is this store?
    • what will I get if I upgrade?
    • big green friendly buy button
  • ruby script to switch info plist based on DEBUG/RELEASE — needed to switch between versions
  • measure success with analytics
    • log each stage to capture where people fall out
    • e.g. store shown, video played, upgrade button tapped, upgrade process complete
  • 1.6% conversion from Explore Flickr (from those who view the store)
  • A/B testing for store designs
    • HuffPost do A/B testing on headlines
    • have 3 choices for first hour, then automatically chosen
    • be consistent with presentation (don’t let people know we’re A/B testing them)
    • need to know if we’re still A/B testing
    • put both bits of code in app, and choose according to web check on first launch
  • Results:
    • store -> video -> upgrade pressed -> upgraded
    • A: 100% -> 7.5% -> 3.2% -> 1.6%
    • B: 100% -> 9.5% -> 3.5% -> 1.8%
    • interesting stat is that video
  • What next?
    • make the store more dynamic
    • downloaded plist file for wording
    • HTML for whole store page (but would need to download and cache it)

Thursday, 28 October 2010

Droidcon London 2010 - Day One

I’m heading home with my brain stuffed full of new knowledge from Droidcon London 2010. And this was just the first day, with unplanned, unprepared barcamp-style presentations!

Most of the presentations today were technical (tomorrow there’s a design and business thread as well) but they varied from doing continuous integration through discussing low-level TCP details to a Q&A session with some of Google’s Android team.

I’m seriously looking forward to the second day’s programme.

In the meantime, here’s my notes for the sessions I attended:

Android UI tricks from Sony Ericsson

  • limit of 200ms to respond to user interactions — don’t do long running tasks in the UI thread
  • so how do you deal with longer lasting processes? use the Handler & Service classes
  • …and use Toasts to show quick popup status
  • number of devices on 1.5 is below 10%
  • all demos will be available on the Sony Ericsson developer blog

Handler

  • don’t use inner class Runnables inside a Handler (save heap & garbage collector)
  • within XML use onClick for buttons
  • handler.sendEmptyMessageDelayed(message, delay);
  • then have a message handler that deals with loop & sends next message
    • any UI activity should be in a Runnable called with runOnUiThread(runnable)
  • don’t forget onDestroy

Service

  • used for downloading
  • pass a message from service to activity by implementing your own Application class
  • Application defines callback interface and methods to fire & receive
  • use IntentService for your service
    • deals with sequential handling automatically
  • call to the application (need to cast getApplication())
  • don’t use AIDL interfaces — unless you want to share service with other apps or between multiple processes in your app

Animation

  • create an AnimationSet and add Animations within the getAnimation call
  • second parameters for RotateAnimation are relative to view, not screen
  • can also do animations in layout.xml
  • Twitter app removed animations from their home screen…
    • the background was a live wallpaper — consumes a lot of battery
    • continuous animations can use up battery so be careful
    • shouldn’t be a problem with performance though
  • see also Zooming demo and

BootListener

  • when the phone is rebooted, the alarms are cleared
  • don’t listen for boot completed unless you really have to
    • slows down startup if you have too many
  • can have a broadcast receiver that is disabled
  • in app xml set bootlistener disabled by default
  • then in listener when intent comes through: {{{ context.getPackageManager().setComponentEnabledSetting( new(ComponentName(context, BootListener.class), PackageManger.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP) }}}

3D & OpenGL with Android views

  • combine the strengths of Android views (text, layout, etc) with OpenGL (3D but not text)
  • create a bitmap
  • use MeasureSpec method
  • draw the view onto the OpenGL texture bitmap
  • GLUtils.texImage2D(...)
  • if you do this today, suggest you use OpenGL ES 2.0

Location services

led by Nick Black, Founder & Head of Products at Cloudmade

cloudmade

  • cloudmade will support Android later this year with a Maps SDK
    • based on OpenStreetMaps
    • worked out a way to squeeze vector data onto the device
    • map data comes as you need it and is stored locally on device
    • downloadable data includes searchable street names, etc
    • early access available end of this year, early next year
  • cloudmade also has http://maps.cloudmade.com/editor to let you choose and configure your design —- your style will work on mobile too!

Impleo

  • formed from ex-Motorola & Alcatel employees
  • also adding tracking for insurance
    • includes accelerometer info so can tell how good a driver you are!

cloudmade location-based advertising

  • created a network that finds highest value ads from other networks
  • goes out to other ad networks, will also go out to more specialist networks
  • trying to deal with the fill-rate problem…
  • some android apps got backlash when adding advertising after the app release
    • put the ads in at the beginning!

map data

  • most owned by Google, Nokia or Tomtom (Navteq)
  • skobbler Android app - built on cloudmade’s navigation service
  • cloudmade see navigation services not as an app but as a feature within apps
  • Google don’t allow access to driving directions API on Android

google latitude and other services

  • Is anyone using the latitude API?
  • GPS in Android drains the battery quite heavily
  • if things are further away then turn off GPS temporarily
  • battery management isn’t good built-in
    • have to manage your own choice between coarse and fine location services
  • Motorola went to use Skyhook instead of Google location API on Android
    • that way they would get data for their customers WiFi location
    • Google forced them to switch back to Google location
    • Skyhook now suing Google…

Always in sync client & local unit testing

Carl from Novoda (@charroch)[http://twitter.com/charroch]

RESTProvider

  • available on github
    • depends on JacksonJSON etc
  • makes a RESTful API available as a Content Provider
  • couple of branches — caching_carl one stores locally in SQLite
  • can start service with loads of requests — it will handle them in a queue
  • can add params: putExtra("params", new List(...))
  • Tip: adb shell setprop log.tag.Database VERBOSE
    • slows it down a lot
    • can add your own tags too
  • ResultReceiver: a way of passing back status to app UI
  • if connectivity is lost, it stops the queue
  • need to watch out for the user setting to disable background downloading
  • extend HttpQueuedService
    • override getMarshaller
    • create a LoggableJsonRequest with a marshall method to store data using a ContentProviderOperation
  • library supports ETags too — saves a download as server data is just a HEAD response
  • also created novoda.mixml (minimal XML) which works in same way as Jackson JSON
    • integrated into RestProvider to cope with XML content as well as JSON
  • hopefully have time to build a more stable version over the new year
  • end goal: to have declarations in application XML and service definition

Unit testing of android classes without emulator

  • see also the RestProvider code on github
  • android.jar only contains stubs, so can’t even instantiate
    • major problem for your subclasses even when you only want to test your additional methods
  • PowerMock works somewhat
  • need to find a different way of doing the tests
  • Carl has copied the source of the Android classes into his test source and modified them to ensure no call to the system…
    • not too hard — just need to ensure that the constructor can work
  • have to keep your code copy up to date with the base Android source
    • but it doesn’t matter that much as you won’t be testing Android code
  • possible next step: Android will run on Intel — could run locally with unit tests
  • currently have three projects:
    1. main classes
    2. local tests using this mechanism
    3. instrumentation tests
  • changing to have a single folder with tests marked with annotations
    • want to have some tests marked as local if possible
    • android instrumentation tests should run all of tests (including local tests)
  • maven could be overkill for Android development
    • build process is quite well-defined, not that many other libs
  • SBT could be interesting (simple build tool, written in Scala)

App Analytics from Capptain

  • combining in-app analytics with CRM
  • collect/measure -> analysis -> engage
  • send messages to users and get feedback
  • SDK available in Android and iOS
  • similar services: motally (acquired by Nokia) & xtify
  • released beta two days ago
  • have REST/JSON API for data
    • not publicly available right now, but available on a case-by-case basis
  • also have a real-time API

  • pricing:

    • free during beta period
    • haven’t decided pricing structure
    • probably freemium — pay for additional functions/users

new analytics capabilities

  • how long users are spending in each screen of your app
  • really nice user path — based on screens, not events
  • real-time analytics — can monitor where people are in your app right now
  • crash logs with device, firmware, etc details
  • as per other analytics, store data locally and send later if not connected
  • Android SDK automatically picks up activities

CRM

  • announcements and polls
  • target by carrier, country
  • test before publish by sending to a single device
  • schedule for particular times

Qualcomm Alljoyn

http://developer.qualcomm.com/dev/alljoyn-p2p

  • exposes a shared communication bus based on DBus
  • automatically uses Wi-Fi and Bluetooth as device allows
  • Java and C interfaces
  • Java interface lets you just send/receive/call POJOs
  • Wi-Fi uses mDNS to find services by well known name (a URI)

Continuous Integration with Maven & Hudson

Hugo Josefson from Jayway (founded Maven Android plugin)

http://code.google.com/p/maven-android-plugin/

Slides and Hudson installation script available from http://code.google.com/p/maven-android-plugin/wiki/Presentations

Android and Maven

  • there’s also a proguard plugin — can use to trim unused classes
  • maven can handle inter-project dependencies
    • keep pure Java code in a Library (so can have local unit tests)
    • then can have app depend on library and on-device tests depend on app
    • see Samples project for MorseFlash example
  • there’s also an Eclipse plugin that helps ADT & Eclipse understand that they’re dealing with Maven
  • the process that takes the longest time is the DEXing

Android, Maven and Hudson

  • don’t see any reason to run Hudson in Tomcat — it comes with its own webserver
    • though it should work fine within Tomcat too
  • Android emulator plugin for Hudson: http://wiki.hudson-ci.org/display/HUDSON/Android+Emulator+Plugin
  • emulator settings: 2.2, mdpi, hvga, en_US, 64M
  • can loop through different settings for emulator
  • Hudson server needs some X libraries but will still run headless
  • currently don’t find out which tests fail when Android tests fail — have to look at logs

Google Q & A

I only noted down one question from the second Google Bootcamp Q & A session:

  • can you target apps at Android tablets?
    • can target large screen devices (currently Galaxy Tab + Dell Streak)
    • will also hit Evo 4G as that has hi resolution too, but smaller screen