ONE LONDON TECHIE GOES SWIMMINGLY

Comment

ONE LONDON TECHIE GOES SWIMMINGLY

By David Minton

A London start-up company has conquered the world with its swimming app, SwimIO. The app has recorded almost 3m swims covering a distance of 4 billion meters, that’s around the world 100 times.

Now live in 155 countries, SwimIO is the first swimming app to go global. The app encourages more participation by providing a local search and live timetables so users can find where their nearest favourite swimming activity is taking place. The top five countries, by page views are the UK, USA, China, Spain and Poland.

Users access and search live timetables over 3m times every month which equates to 4m swimmers, 9m sessions and 27m total page views (68% from mobiles). So, finding out where the nearest lane swimming is available or where a mums and toddler’s session is taking place, is now at the touch of a button.

Live timetables are currently being used by over 500 swimming pool sites in the UK and Ireland and through some new technology and APIs these timetables can be viewed on the pool website, on the app, on screens in reception and via voice phone service. At home, users can even create their own weekly timetable and print it. Expansion of the API service is being rolled out to all English speaking countries and the number of page views are expected to double in 2017.

SwimIO is provided by Active in Time (AiT) originally based at Google Campus, near London’s silicon roundabout and the founder, Dan Morgan created it out of frustration of not being able to find pool space for his water polo club. Dan took on the task of bringing swimming pool marketing from the 1990’s to the present day, linking new technology and water together for the first time. Dan says, ‘it’s cool that around one third of public pools in the UK have been early adopters of the technology which provides a seamless digital gateway of choice to the consumer.’

AiT plans to integrate its live timetable APIs to new services to be launched in the UK soon including, Reserve with Google, Facebook Calendar, Amazon Alexa and Yell who are all looking to add local search, linked to live timetable APIs, plus transaction. These granular, on-demand searches, essential for today’s consumer, are due to explode in 2017 and AiT are ready to integrate all local pool providers with these new services.

http://www.helloswimio.com/

Editors Notes

‘Swimmer Dan Morgan’ the founder, created the app in his bedroom in 2011 and now swimmers have recorded over 3m swims, clocking up over 4 billion meters, that’s the equivalent of 100 times around the world. In June 2015 Dan put the first swimming app on the Apple Watch and before that the Pebble Watch. Dan’s aim has always been to put swimmers on equal terms with runners and cyclists in the world of wearables and software and SwimIO is the first app to integrate with popular running and cycling apps along with Apple’s HealthKit so workouts can be logged.

Contact

Founder, Dan Morgan dan@activeintime.com 07894 998333

Operator Software, Jamie Buck jamie@activeintime.com 07887 768312

Comment

Bye Bye Speedo Fit App. Hello SwimIO

Comment

Bye Bye Speedo Fit App. Hello SwimIO

Introduced a few years back our first app - called 'Splashpath' was built by our founder,  ‘Swimmer Dan’ in his bedroom back in 2011 and was enjoyed by swimmers up and down the UK.

It proved a real success in the UK and was Apple's No 1 Health & Fitness App in 2011. In 2013 we announced an exclusive 4-year global partnership with Speedo International and 'Splashpath' became 'Speedo Fit', now available globally and since then many new international swimmers have joined our existing UK swimming community.

Whenever you started swimming with us, we’d like to thank you for your incredible loyalty and support.  

Collectively, our international community of almost 350,000 swimmers have recorded over 2 million swims, clocking up an incredible distance of 3 billion meters (that’s the equivalent of 76 times around world). 

At the end of the year, our agreement with Speedo came to an end and we have returned to our independent roots and changed the app name to SwimIO. Speedo also have some new developments in the pipeline so if you would like to register and be the first to hear about those then please sign up here

The main features and functionality, and of course your swim history, will remain in the SwimIO app. If you wish to continue tracking then you just need to update in the New Year when you see the little red update flag (or if you have auto-update enabled you don’t need to do anything!). We’re still working on our plans for 2017 and we’ll share these as soon as we can. 

Download SwimIO from the iTunes app Store here - https://goo.gl/rztJ3Q


If you have any questions about the changes then please don’t hesitate to drop us a line at support@helloswimio.com
 

 

Comment

76 Comments

The World’s First Swim App On The Apple Watch

It’s June 25th 2015, Dan’s in his Speedos, and we’re about to try out what is probably the world’s first swimming app on an Apple Watch. We’re at the London Aquatics Centre, host of the 2012 Olympics. It’s the first time we’ve tried it in a 50m pool and we’d be lying if we said we weren’t a little nervous.

What is this spaceship?

What is this spaceship?

In this article we’re going to show you a video of what happened next, talk a little bit about the timeline of how we got to this point and then our experiences developing a swimming app on the Apple Watch. We’ll also give a bit of background on how we created our swimming algorithm and finish with our hopes for the next Apple Watch hardware and the Apple ecosystem.

What’s so special about the potential of the Apple Watch for swimming?

At the time of writing there are no available consumer level swim tracking devices which are also capable of monitoring heart rate in the swimming pool. Heart rate is an incredibly useful metric for calorie burn estimation, tracking fitness improvements and pacing during workouts.

edit: thanks to people commenting re: the Suunto Ambit3 which can also capture heart rate data in the pool. It uses a chest strap which buffers up data whilst swimming. When out of the water (for example resting at the side), the strap is able to burst transmit the stored data to the watch. Unfortunately most men don't get on well with chest straps as they tend to slip down during tumble turns - women fare a bit better due to swimming costumes holding it up. A wrist based sensor would still be a superior solution for this reason.

Swimming workout technology at it's best!

Swimming workout technology at it's best!

Beyond that, the Apple Watch has the storage and capabilities to guide you through a workout in the pool, whilst showing instructional videos explaining specific drills and terms. Haptic feedback has the potential to subtly communicate things to you during your swim — when to speed up or slow down if aiming for a specific heart rate for instance.

Meanwhile with its standalone wifi connectivity it could download training plans whilst resting at the edge of the pool or even communicate with friends or a coach. Maybe you could even be taking turns playing a swimming game with someone whilst in different pools.

Smart phones rocket fuelled the popularity of running & cycling apps, will the smart watch do the same for swimming?

The Apple Watch screen is fantastically visible underwater.... even with fogged up goggles.

The Apple Watch screen is fantastically visible underwater.... even with fogged up goggles.

The Apple Watch announcement

On the 9th September 2014 we were anxiously watching the live Apple event having heard the rumours that the Apple Watch was being announced. Perhaps a little differently from most people, there were two headline features we were looking for:

  1. Waterproof (enough for surface swimming at least)
  2. Standalone (native) apps on the device

We came away with a promise of native apps sometime in 2015 and no definitive answers about waterproofing. So why was this important to us?

A bit of our History

We’ve been working on swimming technology for the past six years with our very first app called ‘Splashpath’ (now in partnership with Speedo and branded as Speedo Fit’) Our aim has always been to put swimmers on equal terms with runners and cyclists in the world of wearables and software.

We developed the first version of our accelerometer based swim tracking algorithm on the Pebble when it was first released on Kickstarter. We’re currently refining the second version, based on over 20,000 crowd-sourced lengths from real swimmers from across the world. It currently boasts 98% accuracy for freestyle and we’ve been eager to test it out on different devices.

We’ll go into more details of our algorithm, for those who are interested, towards the end of this article.

The Apple Watch is released

Fast forward to April 2015 and the Apple Watch was released along with it’s final specifications. Unfortunately this didn’t include a waterproof rating good enough for swimming. This left us with the uncertainty of when the Apple Watch 2 might be released and if it might be waterproof or not.

Fortunately, a month later, the awesome DCRainmaker got hold of an Apple Watch and did some very extensive waterproof testing. His tests gave us the hope that the watch would be waterproof enough for us to develop our algorithm on the watch when the native apps SDK became available.

WWDC 2015 & WatchOS 2 Beta 1

At WWDC this year the wait for us was over with the announcement of watchOS 2. With the addition of native apps, as well as the APIs needed for our swimming algorithm, we began a skunk works project on our app that Friday — before the conference had even finished.

Two of us had been using the Apple Watch for a few weeks at that point and had grown rather attached to them. The idea of giving up one of them to install the beta and the prospect that it might get destroyed by swimming was pretty difficult. After talk of tossing coins, Dan nobly volunteered to sacrifice his Apple Watch to the cause.

How difficult was it?

Once we had ourselves setup to develop on beta 1, things went surprisingly smoothly. Our algorithm is developed in pure ANSI C which meant that it compiled first time on the Apple Watch with no code changes at all. It also uses fixed math to ensure known mathematical precision. 

We’re also used to developing on the Pebble. The Pebble has an incredible battery life of about seven days, but this is partly achieved by having very limited, almost monastic, resources available to apps. The resources available on the Apple Watch, in comparison, are quite amazing.

We were also helped greatly by the similarities in data coming from the accelerometer (the sensor which measures movement) on both the Pebble and Apple Watch. They both give 25 samples per second, are measured in gravities (Gs) and are relative to the same orientation.

Architectural challenges

There are of course some quirks to developing this on the Apple Watch. 

On the Pebble, once your app is running it stays active until the user quits. That means you have a continuous stream of data which you can interpret in realtime and alert the swimmer.

With the Apple Watch it constantly switches off the screen to save battery. Not only that, but when the screen is off, your app is suspended — no realtime processing of data.

Fortunately Apple have provided APIs which get around this in an interesting way. The various sensors allow you to say in advance which data is needed and will then buffer this up for you whilst your app is suspended. As soon as the screen turns on again, your app wakes up and can then request all the data which was produced whilst it was sleeping. 

You can see this happening in our video above — after the four laps, Dan looks at his watch which initially displays 0 laps and then after a short delay it receives and processes the accelerometer data and updates the display.

It’s a clever solution to the problem of battery life vs. data, and we’re confident with some creative UX solutions we can counteract this slight delay and ensure a graceful experience for the swimmer.

On a similar theme, the water has some positive and also problematic interactions with the screen. The screen is incredibly bright and clear — possibly the best we’ve ever used whilst swimming. On the downside we initially had some buttons on the in-swim screen and found that the water was activating them. Our solution there was to hide all functions behind a force touch menu.

Submersion has a similar effect to 'palming' the device. The screen turns off. Pressing the digital crown underwater will wake up the screen.

Submersion has a similar effect to 'palming' the device. The screen turns off. Pressing the digital crown underwater will wake up the screen.

HealthKit

In iOS 8 HealthKit really pushed running, walking and cycling to the forefront. You can see this in the inclusion of running/walking distance graphs and cycling graphs which you can use to populate your Health app dashboard. Although it’s possible to enter swim workouts (we do so with manual workouts in Speedo Fit), the distances are absent from any summary graphs and make a swimmer look like they’re lying in bed every time they go for a swim.

It would be really great if we saw swimming become better represented in iOS 9. Here in the UK, for instance, more people swim every week than go for a run.

There are, however, a lot of improvements in HealthKit which have really helped make this swimming app possible.

First of all there’s now the ability to start a workout via HealthKit. This puts the watch in the same mode that Apple’s own Workout app does — when waking the screen after sleeping your app is the first thing the swimmer sees - rather than having to navigate back via the apps menu. 

For a swimmer glancing at their wrist in the pool and not being able to interact with a wet or submerged screen easily, this is in invaluable.

Next there’s the way HealthKit on the watch and on the iPhone interact with each other. HealthKit on the watch is almost like a little satellite. It keeps a record of recent health data and allows you to write new information to the HealthKit Store which will then be synced back to the iPhone the next time they’re in range.

For our app this means that when the swim ends, we instantly create a HealthKit workout. That workout contains information indicating it’s a swim, the exact times of the laps performed in the pool as well as the calories burned and heart rate data captured from the strap. We also store our own extended information in the workout metadata identifying the stroke types and which pool the swim was done at.

Our swim is added to HealthKit and now contributes towards our daily activity.

Our swim is added to HealthKit and now contributes towards our daily activity.

The swim then appears within the Apple Health app and Activities app, contributing towards your daily scores. It’s also available for other HealthKit supported apps such as MyFitnessPal.

When can you get the app?

For the moment this unfortunately has to remain an interesting technology demo. Although iOS 9 and watchOS 2 should be making an appearance later this year in September, the Apple Watch itself is not officially waterproof.

13.1 Apps that encourage users to use an Apple Device in a way that may cause damage to the device will be rejected
— Section 13.1 of the App Store Review Guidelines

 

So, we’ll just have to hold out until the Apple Watch 2 and hope that it has the required waterproof ratings.

The SwimIO Algorithm

As promised earlier, here are a few details about our swim tracking algorithm.

Version 1

This was released as an open beta on the first Pebble and had a companion iOS app (SwimIO Motion). We initially developed the algorithm only with test data recorded on ourselves and a small group of volunteers from our local pool.

The companion app invited people to participate in the beta test and swim with the algorithm. Swimmers marked up their swims with the correct turns whilst deleting incorrect turn markers. They also added metadata information about the stroke they were doing, the pool length and any extra information.

We sent out weekly ‘Swim Missions’ inviting them to do specific workouts to help refine our accuracy in one area or improve our coverage. For example, “This week everyone we need 10 laps backstroke followed by 10 laps fast freestyle” (our beta testers were incredibly responsive to these missions and this proved an immense asset to us. Thanks guys! )  

Version 2

Thanks to version 1 and our audience of swimmers, we now have what is probably one of the largest data sets of marked up real world pool swimming. It covers everything from casual swimmers right through to training athletes. All in a variety of strokes, pool lengths and swim conditions. 

It’s this real world aspect of the data which has massively benefited our work on version 2 of the algorithm. 

Our first piece of work was to create a testing framework in order to objectively evaluate each new candidate version. We built this as a Rails app which is capable of running an algorithm against any subset of our swimming database. We have all of our swims tagged according to various factors such as stroke type and swim conditions (e.g. did they stop and start a lot, knock a lane rope). We also defined a known set of inputs for the algorithm and outputs along with the ability to generate custom graphs from any given run and see all of them for a set of swims on a single page.

When evaluating a given candidate run there are generally always a few problematic swims. Our setup enables us to run that algo locally on the selected swim and then tweak the algorithm whilst live viewing the results in our IDE to see how we can better fit the swim. What has really helped us here is initially prototyping new algo ideas using the R statistical computing language. Tuning parameters to work well for one swim can be quite distorting — being able to then run that tuned algorithm back across the whole data set again keeps things honest and objective.

We’ve built our algorithm up in layers in this way, whilst keeping each aspect parameterised. Once we’ve got a set of promising mechanisms, we’re able to combine machine learning with our test framework in order to find the best possible configuration to maximise accuracy on the highest percentage of swims.

Bravas

It’s at this point that we had to take a step back and really look at what the accelerometer data on a wrist is measuring (at least in terms of turn detection): unusual disruptions in signals. Although we optimised as much as possible to look for disruptions matching the profile of a turn, unusual things are always going to happen at other times. The person swimming in front might suddenly stand up or slow down, someone behind might overtake, or you stop to adjust your goggles.

We’ve developed a technology called Bravas which builds up a picture of the swim as it happens and then constantly re-analyses the swim finding turns where a normal signal based algorithm might have missed them and removing misclassified interruptions. I like to visualise it as a loosely fitting wetsuit which gradually adapts to the swimmer until by the end of their swim it’s a perfectly fitting skin-suit anticipating their every move.

Putting it all together

With Bravas layered on top of our base algorithm and the two of them tuned via machine learning applied using our test framework, we’ve now got an incredibly good algorithm for real world conditions. 

The last stage in our development was creating a C implementation which is fast enough to run on a device such as the Pebble. Fortunately we’ve got a good depth of knowledge in our team with a background ranging from telecommunications engineering to console graphics and physics engines. All through our development we tried to make sure we only used methods which would quickly and easily translate to small processors and memory footprints. 

Our test framework allowed us to run the C implementation on the same set of swimming data as the R reference and quickly find any differences in results which we could then isolate and fix.

The Apple Watch 2 and the future

We really hope that Apple see the demand for an official, fully waterproofed Apple Watch. Once that is available, we’ll be able to ship a fully featured swimming app.

In the mean time, it would be great to see swimming become a first class citizen in the Apple Health and Activities apps. Running and cycling both have their own distance graphs you can view in the dashboard whilst for swimming you have to drill down to individual workouts. Although you can’t swim with the Apple Watch, many people swim with other devices as well as logging their swim workouts manually on other apps (including our own manual swim tracker app ‘Speedo Fit’) 

If there is a future ambition for Apple Health/HealthKit, Apple Watch, the new Activity app and ResearchKit to all tie up and tell the narrative that "Apple user's live longer healthier lives", then recording all fitness activity, including swimming, is a must.

We hope you’ve enjoyed reading what’s turned out to be quite a long post.
It’s been a real team effort with the entire team working in the evening and at weekends on the different component parts to make it a reality.

We’d also really like to thank London Aquatics Centre for their kind permission to film our test in their amazing pool and of course DCRainmaker for his extensive Apple Watch waterproofing tests which made us brave enough to try this.

@earltedly 

If you're interested in receiving more news about our swimming algorithm, potential beta testing and being notified of releases, please sign up below.

76 Comments

2 Comments

Kings Cross Pond Club

Last Friday we had a team swim at the new Kings Cross Pond Club - a natural bathing pond right in the middle of the King's Cross development in central London.  The pond water is purified through a natural closed-loop process, using wetland and submerged water plants to filter and keep the water clear. It is quite a unique experience, part pool, part art installation but I came away thinking that I probably wouldn't become a regular visitor. It's a great idea and setting but the pool shape is not ideal if you want a swim work-out. This felt like a missed opportunity. There's a growing community of residents and workers in the area so a pool could be really popular. 

You can find this pool (#3 below) along with pools all over the world on our swim app, Speedo Fit (in partnership with Speedo). Thanks Jamie and team for maintaining and growing the pool database - it's probably the world's most comprehensive and accurate thanks to their hard work and dedication.



2 Comments

7 Comments

Swift & the Pebble iOS SDK

Introduction


Last year Apple introduced Swift at WWDC 2014. Here at AiT we’ve started to adopt it as our main language for new iOS work. I’ve noticed that there is a lack of tutorials or instructions for using Swift for Pebble iOS companion apps so I thought I’d write a simple introduction.

Creating a project


First of all make sure you have the latest Xcode installed. At the time of writing this is Xcode 6.2.

  1. Start the Create a new Xcode project process
  2. You can choose any iOS project type. For this guide I’m using a Single View Application
  3. Give it a name and change the language to Swift
  4. Choose a location and you should have a new project to work with

Cocoapods

I prefer to use cocoapods for managing third party integrations. They’ve recently been working on full support for Swift and Pebble have published their SDK as a cocoapod.

First we need to make sure cocoapods is up to date

Note, if you’re using a Ruby manager such as RVM, drop the sudo from the next command.

  1. Open a terminal up
  2. sudo gem install cocoapods
  3. enter your password if prompted
  4. pod —version to confirm it installed correctly

Back in Xcode:

  1. Right click on your project root in the left hand bar
  2. Select New File
  3. Choose Other
  4. Then Empty
  5. Name the file Podfile, untick all of the targets at the bottom and make sure it saves to the root of the project

In your new Podfile add the following line:

pod 'PebbleKit'

We now need to install the pod:

  1. Close Xcode completely
  2. Open a terminal window and change directory to the root of your new project
  3. pod install
  4. Once that is finished open the project folder in Finder (quick tip: open . will do this)

The Bridging Header

The pod should be installed but now we need to make it available in Swift. All Swift symbols within a target are automatically made available to each other, unfortunately this doesn’t include Objective-C symbols. To do this we need something called a Bridging Header

Here’s how to do it:

  1. Now open the file ending in .xcworkspace
  2. Again right click on the project root in the left hand bar
  3. Select New File
  4. Now Source
  5. Then Header File
  6. You can name this anything you like. The convention is normally [ProjectName]-Bridging.h
  7. Delete all the code below the comments and replace it with #import "PebbleKit.h"
  8. Now select the project root in the left hand side
  9. Make sure the main target is selected and go to Build Settings
  10. Scroll down to Swift Compiler - Code Generation
  11. Change the value of Objective-C Bridging Header to be the name of the bridging header you created earlier
  12. Build the project to make sure it compiles without errors

Creating a Pebble watchapp to connect to

Before we can connect to a watchapp, we need to create a quick demo one.

  1. Open a terminal window again and navigate to the root of the project
  2. pebble new-project Swift
  3. cat Swift/appinfo.json to view the app settings
  4. Make a note of the uuid value. In my case it’s acde6706-633f-404d-b99a-1fc57842593a

Now build and deploy the watch app to your Pebble so that we’re able to make use of it later.

Setting up the connection

Now we can get our hands dirty with some Swift.

First open the AppDelegate.swift

Below var window: UIWindow? add:

 var watch: PBWatch? {
     didSet {
         if let watch = watch {
             watch.appMessagesLaunch({ (_, error) in
                 if error != nil {
                     println("App launched!")
                 }
             })
         }
     }
 }

This is a variable to keep a reference to the watch. When it’s set to a non-nil value it’ll attempt to launch the watch application on the Pebble.

Now in application(didFinishLaunchingWithOptions..), add the following few lines before the return statement (replacing the uuid with the one from your project):

 let pebble = PBPebbleCentral.defaultCentral()
 pebble.delegate = self
         
 var uuidBytes = Array<UInt8>(count:16, repeatedValue:0)
 let uuid = NSUUID(UUIDString: "acde6706-633f-404d-b99a-1fc57842593a")
 uuid?.getUUIDBytes(&uuidBytes)
 pebble.appUUID = NSData(bytes: &uuidBytes, length: uuidBytes.count)

 watch = pebble.lastConnectedWatch()

This previous bit of code is perhaps the bit which is hardest to figure out. In Objective-C land uuidBytes would be of type uuid_t that’s a typedef of __darwin_uuid_t which is in turn a typedef of an array of 16 unsigned chars. In Swift this translates to an array of unsigned 8bit integers. Fortunately arrays in Swift allow you to create pre-initialised arrays of a fixed size for exactly this kind of purpose.

At this point Xcode will be complaining about the AppDelegate not conforming to the PBPebbleCentralDelegate interface. At the bottom of the file add the following code to fix this:

extension AppDelegate: PBPebbleCentralDelegate {
     func pebbleCentral(central: PBPebbleCentral!, watchDidConnect watch: PBWatch!, isNew: Bool) {
         if self.watch != watch {
             self.watch = watch
         }
     }
 }

This implements the delegate interface and sets the watch property we declared earlier.

Finally, make sure the watch app isn’t running on the Pebble and then build and run the iOS app. You should find the watch app launches and you now have a working connection.

Conclusion

This is the bare bones of how to get started with Swift. In a future post I'll be demonstrating how to use Swift to interpret C structures sent via the DataLogging interface.

As always, please ask any questions via the comments or you can find me on Twitter as @earltedly.

7 Comments

Comment

AiT Nominated for Best Wearable Start-Up - Wearable Technology Show London

AiT was honoured to be nominated in the category of Best Wearable Start-Up amongst 18 other companies including Atlas Wearables and Sports Performance Tracking.  Unfortunately, due to administrative mess-up we were only given 45 minutes notice to pitch AiT's innovative solutions for swimmers to a panel of leading industry figures in a Dragons Den style battle. Dan, our founder, did a sterling job at such short notice - complete with flying swimming trunks (lucky he had some in his bag!) but the prize went to the excellent Elvie - who are developing some pioneering 'insideabletechnology for Women. Congratulations to Evie!  

Comment

5 Comments

HealthKit in depth: from the perspective of a swimming app

Introduction

Wouldn’t it be nice if an app you use to track one activity could share data with apps you use to monitor other activities? You’d then have a more complete and intelligent picture of your health. For example a calorie counter app, such as MyFitnessPal, could increase your daily food allowance automatically when you’ve been for a swim. Your activity tracker wouldn’t think you’d been slacking off all week when you’ve actually spent 2 hours a day in the pool!

Well that is the promise of Healthkit, Apple's new Health 'aggregation' framework. 

This post is going to explore HealthKit from a user perspective and use our implementation of Healthkit in v3.1 of the Speedo Fit swim tracking app to illustrate different elements.

What is HealthKit?

New in iOS 8, HealthKit is a technology which app and hardware developers can use as a store for all of your health and fitness data. You ultimately control which apps are allowed to add data to this store, read data from the store and also the specific data types involved.

The idea is that developers no longer need to write special code for each other when they wish to exchange data. I’ll talk a little bit later about to what degree Apple have achieved this.

Apple envisage there being three types of apps:

  1. Analysis of data & graphs
  2. Recording of information
  3. Sync data with medical records

At the moment we’re mostly type (2).

Apple's Health app itself is actually just another developer app accessing HealthKit. It just has special permissions allowing it to write 'characteristics' such as gender, height and birthday. It can also allow you to change the permissions of other HealthKit apps.

Apple's Health app itself is actually just another developer app accessing HealthKit. It just has special permissions allowing it to write 'characteristics' such as gender, height and birthday. It can also allow you to change the permissions of other HealthKit apps.

How it works

I tend to think of HealthKit as being like a mixing desk in a recording studio. All the apps are the different instruments and HealthKit is responsible for managing all the inputs and outputs. Each app only has to worry about it's connection to HealthKit.

Apple have defined over 60 different data types which can be stored. The list of data types is determined by Apple, so a bit like an exclusive nightclub, if it’s not on the list it’s not going in. Data types include things such as steps, heart rate, blood pressure, resting calories (basal metabolic rate), active calories, weight, sodium consumption and sleep - so it's pretty extensive!

When recording data there is the idea of it being a sample. Each sample is tied to one data point and has a start and end time. So say you took my heart rate at 2:01pm, then recorded the average over a minute and found it was 61 bpm, you’d record a heart rate sample with a start time of 2:01pm, an end time of 2:02pm and a value of 61 bpm. Samples can really be any length of time so as part of a swim recording I might have a sample spanning half an hour with a single active calorie measurement representing the entire swim.

CC Image courtesy of choreographics on Flickr

CC Image courtesy of choreographics on Flickr

This is a very important concept - HealthKit is essentially a huge timeline spanning your life with all of your health & fitness data laid over it with precise start times, end times and values for each sample.

Each sample has extra data attached to it. This includes the app the sample comes from as well as things such as whether the data was from a device (e.g. a heart rate or blood glucose monitor) or was manually entered, as well as unique identifiers to help the app developer manage the data their have recorded. In our case swims are manually recorded and we store our unique id for your swim so that we’re able to remove or update it within HealthKit if the swim is deleted or altered within Speedo Fit.

Workouts

CC Image courtesy of GrejGuide.dk on Flickr

CC Image courtesy of GrejGuide.dk on Flickr

Workouts are a bit more special in that they group a collection of samples together and classify what they represent as a whole. For instance when I go running I have my GPS watch, I also have a foot pod and a heart rate monitor. The data points I have from all of that include:

  • distance
  • duration
  • active calories
  • activity type
  • steps
  • heart rate

My watch samples all of this about every 5 seconds so I might go for a one hour run and with 12 of these samples a minute, I end up with 720 samples for the whole hour. Those samples will then all be written to HealthKit across those separate data points and provide a very rich snapshot of my body for that time period.

For Speedo Fit we don’t quite have access to the same level of detail yet, but we log still log the following information as a workout:

  • distance
  • duration
  • active calories
  • activity type

When a swim is logged we store a single sample for the active calories which spanned the whole time from the start of the swim to the end.

Active Calories

As an aside, we have added the estimation of swim calories as part of this release. We felt that it was an important addition to make your swims in HealthKit more relevant to other apps.

The generally accepted method for estimating active calorie burn is via metabolic equivalents (METs). Every activity has a MET score reflecting the amount of exertion. An MET is the number of calories burned during an activity per kilogram of bodyweight per hour. 

hours x MET x kg

There are lots of charts estimating the METs of all kinds of activities ranging from hoovering to horse riding. For our first version we’ve mapped a range of 6 METs to 12 METs for swims and we scale that based on the time in the pool and the distance swum.

This allows us to add an estimation of calories when recording swims to HealthKit, provided we are either given access to your weight via HealthKit or you provide one manually within the app.

The fact that we can request your weight via HealthKit is another example of its benefit. For example I have Withings WiFi scales at home so my weight is automatically synced whenever I weight myself. This keeps my calorie estimates always as accurate as possible.

Lastly, calorie estimations are not just for HealthKit users! You will still get them if a weight is entered in your profile and you set a start and end time on your swim.

Start times, duration & historical swim data

I think one of the guiding principles of any app contributing to a users HealthKit store is that the timeline must be sacrosanct. What I mean by that is that if the data is not complete enough then it shouldn’t be added.

When swim recording was first added to Speedo Fit, we decided to just set the date of the swim and to not worry about start times or end times so as to make it as quick and easy as possible to record a swim. In Speedo Fit 3.1 we added the ability to set a duration.

Going back to the timeline concept though, this isn’t enough for HealthKit. Without a specific start and end time for each swim in your history, it’s not possible to record them. If we were to pick and arbitrary start and end time for each swim, there’s a high chance they would overlap with other activities and future apps analysing your data would get very confused.

We have therefore made start and end times mandatory when recording a swim when HealthKit is enabled.

My data is in HealthKit, now what?

This is now really up to other app developers. Any time you turn on HealthKit in another app and it requests access to read workouts and active calories, the chances are your swimming data will be contributing in some way to the view of your health data that app is giving you.

Unfortunately Apple’s Health app currently only shows distance for running and walking, not swimming. You will see your swims on the active calories graph, so don’t worry, your data is in there! 

Data, Privacy and iCloud

An interesting thing about HealthKit is that the data just lives on your iPhone. Although your HealthKit store is backed up with iCloud backup it is not synced to iCloud. There’s an important distinction there. For example, if you have a work iPhone and a personal iPhone, each iPhone will have its own distinct HealthKit store. However, providing you have iCloud backups turned on, if your phone is lost or stolen or you buy a new one, restoring from an iCloud backup will restore your HealthKit store.

Apple are making quite a big deal about this. The recorded data is of an incredibly private and personal nature and they’re preventing HealthKit stores from being passed over any kind of network except as part of a secure iCloud backup. Part of the App Store submission guidelines specifically prohibits developers from storing HealthKit information in iCloud without user permission and all apps using HealthKit have to have a privacy statement explicitly saying what we do with your data.

I think the fact your phone is the central hub of information there, collecting data from apps and health devices is indicative of Apple’s vision of the future. One where your phone is a mini-portable server and you have an set of satellite devices (Apple Watch!) which you use to send and receive data. The Apple Watch, for starters, has at least two sensors which will be directly feeding into your iPhone - heart rate and accelerometer.

The Apple Watch

The Apple Watch

HealthKit and third party Hardware

I already mentioned earlier that a data sample can be tagged as being manually entered or being from some kind of device. Most modern devices are adopting Bluetooth Low Energy as their method for synchronising with your phone. Bluetooth.org have published standards for certain classifications of devices. Apple are actually supporting four of these initially so that they can be paired with your phone and their data written automatically to HealthKit whenever they are in the vicinity of your iPhone. This includes heart rate monitors, glucose sensors, blood pressure monitors and health thermometers. So long as a device implements the specification in a standard way the manufacturer will no longer have to make their own app to live on your iPhone. I suspect that other devices will be supported as more categories become established.

Wahoo Tickr X

Wahoo Tickr X

So how do apps know when new information is available?

One of the other aspects of HealthKit is that an app can subscribe to data points. An app can choose any number of the 60+ data points and then, with permission, ask to be notified whenever there is new information.

That means that another app might wish to know whenever you go for a swim so as to remind you to hang your wet swim shorts out to dry (instead of leaving them in your gym bag for days as I often do). It could subscribe to the workouts sample type and as soon as a swim comes in it wakes up and sends you a little notification.

A more real world case is that hospitals are starting to create out-patient monitoring apps. Whenever a patient uses their blood pressure monitor, the hospital app gets notified of the new reading, sends that data to the hospital computers, a doctor might then review it, see there’s a problem and call the patient in. And of course if the patient forgets to do a reading the app could then remind them to do one.

What are the downsides?

Perhaps one of the most clever things Apple have done is offload all of the work on to app developers. HealthKit really is just a dumb repository. An example of this is Basal Metabolic Rate (BMR). This is the calorie burn of your body when at rest. There are any number of algorithms for estimating this and it really depends heavily upon your genetics, level of muscle and fitness. At the moment it’s sitting in my HealthKit as a blank data point. Despite having a number of fitness apps installed on my phone which estimate this in-app none of them have quite plucked up the courage to be the one to write this to my store.

And that’s perhaps the crux of it, most health information, despite the exact numbers, really are just estimates. Very useful estimates which can help us to make informed health related decisions. Unfortunately by recording these to a definitive central store, it’s going to make a lot of developers nervous about committing these estimates for posterity.

Lastly, Apple are holding the keys on data points. If an app wants to record something interesting not included on those data points, they’ve got two options:

  1. Don’t record it in HealthKit
  2. Appropriate a related data point and record it as custom meta-data

For a couple of examples of (2), take sleep and swimming. For sleep you can only record awake / asleep. It is not possible to record different sleep modes such as light sleep, deep sleep and REM sleep. For swimming it’s not currently possible to record the strokes or intervals in the swim.

There is a solution to those - custom metadata. Each sample can have associated data set by the developer which other apps can read. The only problem there is that we’re going to have to agree between ourselves, as developers, how exactly we store specific data there. Without agreed metadata keys everyone is going to have their own way of doing things.

Still, it’s a lot less work than having to implement an entire custom API for every service you wish to link with!

Summary

I’ve covered a lot of ground in this post. Hopefully you’ve got a better idea of how we are using HealthKit in Speedo Fit as well as the possibilities of what can be done with HealthKit as it currently stands.

I’m personally extremely hopeful that as more developers and hardware companies adopt HealthKit, we’ll begin to get a much more detailed view of our health and daily lives. In turn this will give us meaningful insights which help us to lead happier lives.

I think it’s going to be incredibly interesting to see what is done with this data and how it is going to force developers to focus on and improve each of their areas of expertise.


Speedo Fit swim app to track your swim workouts is available from US, Canada, UK, France and Mexico app stores here. Version 3.1 with HealthKit integration will be live in the app store later today (16th October).

I'm on twitter as @earltedly if you'd like to chat more about HealthKit.

5 Comments

Comment

Speedo Fit featured in The Guardian & Observer's 10 Best 'Fitness Apps to put more zip in your workouts'

'Whether your fitness goal is weight loss, running an ultramarathon, or mastering the perfect downward dog, there’s an app for every form of exercise out there. Your smartphone is increasingly a handy-sized personal trainer, barking orders from your pocket with the same guilt-inducing frequency as your gym instructor, although at least the price tag is considerably lower. In fact, many top apps are free'  ...full article here

Full article here

Full article here

Comment

Comment

Now Available In The United States, Canada and Mexico App Stores

Swim app lands in North America.

Swim app lands in North America.

We are really pleased to finally say that Speedo Fit has now crossed the Atlantic and is available in North America. The release includes a new visual design, overhaul of the UX, some additions and improvements to existing features. This has been a long journey on lots of levels, but it represents a huge milestone for us and a significant step towards global roll out and cementing our position as the the world's largest and most active 'mobile' swim community. 

Now the app is 'in the wild' the real learning and lessons start, but the entire design and build process threw up a few challenges which we thought we'd share. We've also provided some context and explanation for some of the changes and additions you'll see in the new Speedo Fit v3.0.

  • Yards, Metres, Short Course and Long Course. 
    Running and cycling apps can rely on the device's GPS tracker to accurately measure distance. Unfortunately, swim tracking on a mobile device has to work that bit harder! You can't swim with your phone on your arm (well you can, but it's tricky! trust us, we've tried it) so to keep track of your swims you need to 'check-in' the number of lengths you've swam - in a FourSquare kind-of-check-in-way.
    To make this 'manual experience' as easy and 'frictionless' as possible we've worked incredibly hard to provide the most comprehensive database of pools (see later) so the swimmer need only to know their lengths. However, North American pools can be configured as long (50m) or short course (25 yard) pools. We needed to display pools in different metrics and allow for custom pool lengths. From a UX perspective we also needed to account for someone mainly swimming short course - and therefore preferring to show their personal stats in yards, with someone mainly swimming long course and obviously the pretty common case of people switching between the two! Judging by the number of websites that help swimmers convert times and distances between the two systems hopefully many North American swimmers will appreciate our efforts to get this right (if not, let us know how we can improve it!).

    In the not too distant future mass market wearable devices will be available to make auto-tracking your swim work-outs as easy as tracking your run or ride. We're working hard to help make this a reality but for now manual tracking is the best-mass-market option
    (Although unconfirmed, it's seems very like the first version of the Apple Watch Sport appears to be only water-resistant - let's hope that future version are water-proof and usable in the pool).
     
  • You say "Laps" I say "Lengths" and vice versa.
    Up until this release, we've always referred to a swim from one-side of the pool to the other as a 'length'. The app usually knows the dimensions of a pool so to track a swim distance, the swimmer would need only to add the number of 'lengths' they've swam. The app would then calculate: 
    # of Lengths x Pool Length = Total Distance swam.
    However, 'Laps' started creeping into our vocabulary. From an interface perspective 'laps' is much better - it's easier to say,  it's 4 characters long rather than 7, so fits into small spaces. But it was confusing. Some thought a lap represented a swim from one end to the other and returning to the start point, others thought it was just one one side to another. So we canvassed opinion amongst our US colleagues and stuck with Stanford Uni's Pool Etiquette definition.
    Length= one side of the pool to the other - irrespective if it's the length or the width of the pool :) - and banned 'lap' from our vocabulary and interface. 
     
  • Pools in North America. We've always put a lot of energy into providing the utility of finding your local swimming pool within the app - and this has always gone down well with UK, French and Chinese swimmers - so we wanted to offer the same utility for Northern Americans. Getting accurate pool data in the US with good coverage wasn't easy. We trawled and evaluated lots of sources and scoped undertaking the primary research ourselves. Fortunately we started talking to Bill Haverland from 'The Swimmer's Guide'. Bill's been researching, updating and compiling a database of global swimming pools since 1996. It's been a real labour of love on Bill's part and he's done a magnificent job. Now, with the help of 'user-generated' feedback from the site he maintains one of the most comprehensive global sources of pool data. With Bill's data, and our team complimenting with more US pools, the Speedo Fit app now has one of the most comprehensive data sources available on mobile. We look forward to continuing the relationship with Bill in the coming months. Shown below is a view of the US pools shown on Google Earth.
US 'Public Access' Swimming Pools (red dots)  available now in Speedo Fit app

US 'Public Access' Swimming Pools (red dots)  available now in Speedo Fit app

  • Distance Goals and the 'Swimming Mile'
    Speedo Fit 3.0 includes a new feature we're really excited about called 'Distance Goals'. This takes inspiration from the hugely popular running apps like Couch-5K, which we all love, as they provide more than just 'tracking' - they help us start and maintain new fitness habits. These structured plans breakdown goals into more manageable steps - interim milestones provide rewards on the way and the running apps usually have an audio coach to keep you motivated during the run. Unfortunately, we're not able to provide audio coaching during your swim (but we're working on that!) so the challenge for us was how could we help swimmers set distance goals without a device in pool?

    We conducted a huge amount of research and analysis, spoke to swimmers of different abilities, professional swim coaches, club trainers, triathletes and collected our own team's personal experiences of following swim and structured fitness programs. We realised we needed to drastically simplify the instructions for swimmers to remember poolside yet still provide a motivating plan and support dry side- when they have their phones in-hand. Today, you'll find three distance goals to suit different levels. Bathtub-to-500, Miracle Mile, and 3k in 6 weeks . Each swim has a target distance and recommended maximum number of rests with the aim that you steadily increase distance and reduce rest time leading to a final swim distance. All goals start on a Monday so you set a clear intention to start,  you can add swims to your calendar to help you stick with it and the plans include helpful tips and hints to keep you motivated. The goals are also forgiving in that they allow you to miss a week, but still track your progress, making it that little bit easier to keep going. We can't wait to analyse the data and hear what people think of these. Watch this space for even more developments in this area!

    In the process of this we also learned that a 'Swimming Mile' is not really a mile.  
    1 mile = 1,609.34m or 1,760yds but what is commonly referred to as a 'Swimming Mile is actually 1,650yds or 1,500m. There are a few theories for why this is the case, the most plausible to us seems to be related to short and long course pools and 1,500m distance. If you're interested to know more the excellent SwimSwam blog tried to get to the bottom of this mystery but we liked the anomaly of the 'swimming mile' so chose this in our mid-level plan.
Swim-by-Swim Distance Goal plans like the Miracle 'Swimming Mile'

Swim-by-Swim Distance Goal plans like the Miracle 'Swimming Mile'

On the topic of definitions, we wanted to make it easy to add swim drill and work out information. We'd already seen UK and French swimmers adding time and stroke information in the notes section of the app. Adding duration and strokes was relatively simple but when we came to add drills we soon realised this was a different matter altogether! We checked with Pro and Club coaches in Europe and the US and each came up with their own list of drill names. We ended up with over 40 different names, many seemingly the same or with slight variations. We've got ideas how to add this in the future, but for this release you can record 'drill' and include your personal specifics in the free-text notes section. Let's see how this works out!

There are many more tweaks and improvements in v.3.0.
We've turned up the social-side of the app with more ways to connect, compare and share with swimming friends. Virtual 'Swim Challenges' [now called 'Map Goals'] have been reorganised and we've added many more. There's also a handy link to a fantastic collection of videos to help you improve your technique and a link to the Speedo shop - to get some new kit - to help you get fit!        

If you're in France, Ireland, Canada, Mexico, United States or the UK you can download the app from the App Store here and try it for yourself. We'd love to hear what you think. 

[Speedo Fit is a collaboration between Speedo International and us, AiT. Read about our unique partnership here. The North American release of Speedo Fit was an extended collaboration involving SpeedoUSA and Hello Design too ]

Comment

Comment

SwimIO - Beta Swimming "Pace App" now available on Pebble

We've recently released our second swim app for Pebble with an app designed to motivate you to keep to your pace whilst you swim. SwimIO's Pacer app aka "Kevin Pacey" [Geddit :)]

The beta app is the first of many mini-apps as we aim to be your personal, and virtual swim coach. The Pacer app means you stay on pace in the pool as smart vibrations to help you adjust your speed.  The beta app also includes:

  • Vibration alerts as you near your target time
  • Summary statistics so you can improve swim after swim
  • Rest time so you can repeat over multiple sets 

 

If you have a Pebble and love swimming then give it a try, it's free of charge. Download from Pebble store here and let us know what you think. 

If you have a Pebble and love swimming then give it a try, it's free of charge. Download from Pebble store here and let us know what you think. 

SwimIO also got a shout out from Team Pebble (Thnks @GetPebble) in their recent blog post about San Francisco Marathon and training with a Pebble. The article also gives a $20 discount on a Pebble so if you haven't got one, grab the discount code and order one today.  

Comment

Comment

The London Aquatic Centre opens with AiT Timetables

This weekend saw the opening of the London Aquatic Centre - the former London 2012 Olympic Pool to the public.

We were lucky to get a tour of the pool a few weeks back and it really is an 'awe inspiring' place.
The building is majestic, the pool facilities probably the best and most modern anywhere in the world and you just can't help yourself from wanting to dive in!  

AiT is also proud to be associated with the opening as the London Aquatic Centre uses AiT's Timetable services. The centre's website displays the extensive swim and dive programme in AiT's interactive format with the ability to select activity, day or session.  

Image courtesy of GLL. Pool now open without the extended seating! 

Image courtesy of GLL. Pool now open without the extended seating! 

We really think the facilities will inspire a new generation of swimmers - everyone at AiT can't wait to swim there. In fact, we've even been talking about moving our office closer to the pool.
[The Guardian has a great piece about the pool opening, check it out here]
 

Comment

Comment

Wearable Tech Trends : Activity Trackers & Smart Watches, CES 2014

We attended CES2014 and wrote up some notes to share with our team when we got home. We thought others might find these useful too - so here's a summary. We’re mainly interested in waterproof devices and sports and fitness so it’s written from this perspective. 

This deck covers the main device types, a possible market segmentation and a brief summary of each device. We’ve also included other wearable references and inspiration we spotted at CES2014. Feel free to get in touch with any questions. [We’d also recommend the newly launched wearables database http://vandrico.com/database]

Any questions, feel free to get in touch via the contact form or @chrismoisan

Comment