Link AiT to your booking system for 1-click-to-book functionality

Comment

Link AiT to your booking system for 1-click-to-book functionality

AiT has always been a fantastic tool to manage and display your swimming and group exercise timetables to customers on your website & apps but today AiT has launched new functionality to easily allow your customers to book activities directly in your CMS from our timetables, via our deep linking 1-click-to-book URL links which integrate with your existing CMS. This new feature can vastly improve your customer journey and user experience from researching to booking a new activity.

The best thing about this new feature is that it’s super easy to setup & maintain and doesn’t require any technical knowledge or development resource to implement.

Whether you’re a new client or an existing client using our APIs or our iFrame plug-in website timetables, we can get you up and running with this amazing new functionality ASAP.

We can integrate with Gladstone, Legendware, XN Leisure & Clarity CMS systems so contact Jamie on 020 8123 2788 to find out more or email info@activeintime.com for further details.

See our live client examples below or preview the videos below to see 1-click-to-book in action.

WHAT OUR CLIENTS ARE SAYING:

“Having a seamless solution for our swimming timetable that includes bookable and non-bookable sessions was just what we needed. The 1-click-to-book system is easy to set up from a management perspective and simple to use for the customer.” Sarah Q, Health and Wellbeing Development Manager, Blackburn with Darwen Council.

“Deep linking direct from our website to our Leisure Management Booking system has been a great new feature for how we communicate our digital timetables, making the customer journey quicker and easier. It’s simple to configure and manage too.” - Nick T, Sales & Membership Manager, Chelmsford City Council.

Gladstone Live 1-click-to-book examples - Live Active Leisure; Active Newham; Chelmsford City Council

XN Leisure Live 1-click-to-book examples - Wakefield Council

Legendware Live 1-click-to-book examples - Blackburn with Darwen Borough Council

Clarity Live 1-click-to-book examples - Monmouthshire County Council



Comment

UK Re-Opening Plans: AiT Support, Training + Outdoor & Virtual Class Timetables

Comment

UK Re-Opening Plans: AiT Support, Training + Outdoor & Virtual Class Timetables

Just a quick note to let our clients know that we’re here for any support or training needs you might have during the re-opening phase for your UK leisure sites.

We have a pdf User Guide and 3 screencast recording training guides available via the links below but if you need any urgent or bespoke assistance please feel free to call our support line on 020 8123 2788 or email us at info@activeintime.com

pdf AIT User Guide: click here

AiT Site Admin Screencast Recordings: (download locally for best video playback quality)

AiT Screencast 1 of 3: click here

AiT Screencast 2 of 3: click here

AiT Screencast 3 of 3: click here

Virtual/Outdoor/Community Class Timetables:

If you’d like to consider using AiT to display virtual, outdoor or community class timetables across multiple sites to your customers via your website then give me a quick call to discuss, we can set you up for that at no additional license cost.

Good luck with your re-opening plans & stay safe - Jamie

Comment

13 Comments

COVID-19 Announcement of SwimIO & GymJam app closure on 31/05/2020

It’s with heavy hearts that we announce the closure of our GymJam and SwimIO mobile applications on 31/05/2020 because when we begin to emerge from this COVID-19 crisis we want to be able to focus on our core B2B customers and support them in what will be challenging times re-opening. By cutting the significant costs of running our mobile apps we are aiming to keep cash in our business and be in a better position to help.

Please note that we have now removed the advertising links to our mobile apps from our iframe timetables so you are no longer promoting our apps to your customers.

In the meantime stay safe and do please get in touch if you have any questions. Our leisure timetable software service will continue to operate as normal with support available if required. 

For app users with questions please contact us at support@helloswimio.com but please bear in mind it might take us some time to reply to all enquiries under the current circumstances with COVID-19.

13 Comments

Comment

AiT Solution for Edinburgh Leisure website - FITNESS CLASS click to book

Edinburgh Leisure Problem: Edinburgh Leisure couldn’t display fitness timetables to customers on their website from their internal booking system without customers needing to login which defeats the purpose when trying to get new customers to join as they can’t see what classes are available.

AiT Solution: Edinburgh Leisure licensed AiT’s bespoke timetable solution for x14 leisure sites, populating swimming and fitness timetables. Using our APIs they have now launched a new and improved website featuring mobile optimised and richer activity information which can be displayed to new customers and then filtered to instructor names, session categories and class intensity.

With some extra work from their web development partners, Edinburgh Leisure can also now offer a deep click to book for existing customers looking to book fitness classes.

This innovative solution is live across all Edinburgh Leisure sites - see example here.

AiT powered Swim timetables are also be pulled from our APIs into the existing Edinburgh Leisure mobile app.

Comment

Comment

Real time updates to our global swimming pool database and our SwimIO iPhone app

AiT developers have been working hard behind the scenes to speed up the process of adding new records to our ever growing global swimming pool database of 23,000 pools in 127 countries with a new auto-sync feature which pushes the new pool listings immediately into our SwimIO iPhone app and our customers already love it!

When our dedicated SwimIO app users contact support to let us know we’ve missed their local or holiday swimming pool, we can have the new pool live in our SwimIO app in just 2 minutes, ready for them to find, favourite and log swims against.

The brand new Oxford Aquatic Center, 50km north of Cincinnati in the US is our latest pool to go live after opening to the public on 15/06/2019.

Oxford Aquatic Center now live in SwimIO iPhone app

Oxford Aquatic Center now live in SwimIO iPhone app

Comment

Comment

New SWIMIO APP Map Goal: Luke's Cornish Coast Swim

Many thanks to our SwimIO app user Luke who was looking for a more local challenge in our SwimIO app so we were happy to help and followed his suggestion of adding a swim covering the coast of Cornwall. At 346km you should burn off a few pasties en-route!


Comment

Comment

ActiveNewham live timetables on digital screens

ActiveNewham utilises the power of Active in Time’s APIs to display live swimming and fitness timetables in their x3 leisure centres alongside key ‘ticker tape’ scrolling messaging.

When swim programming is updated in the AiT system, it’s pulled onto the ActiveNewham website, in-centre digital screens and mobile app.

The well-known UK software development firm DCSL Software is behind this intelligent platform that comprises a bespoke content management system as well as bespoke integration to the back office leisure centre systems to extract timetable information.

ActiveNewham Digital Screen Mockup

ActiveNewham Digital Screen Mockup

Comment

Comment

SwimIO Featured in App Store 'triathlon goals' story

A big thank you to Apple who showed our SwimIO app some love in early Feb ‘19 with a feature in their ‘stories’ section entitled ‘triathlon goals’. Apple stated,

“Why master one sport when you can combine three together to create a new one entirely? If you’re a triathlete in training, working out how to split your time between swim, cycle and run sessions can be tricky. Fortunately these apps have you covered on all fronts.”

SwimIO_Feb19_AppStoreFeature.png

SwimIO is featured alongside fellow swim coaching app ‘MySwimPro’ and the likes of Strava, Zombies Run and Nike Run Club to make sure budding triathletes have all bases covered.

SwimIO for iOS is the leading global swim app with 400k registered users and is available in 154 app store territories. Our swim community has logged swims which would circumnavigate the globe over 130 times with 3 million swims recorded and 5 billion metres swam. Our ever growing global swimming pool database is a unique resource to find pools wherever in the world you want to dip your toe in the water.

Apple unveiled the ‘stories’ feature as part of an all new app store rebrand with iOS 11 in September 2017 designed to improve app discovery.

Preview the ‘triathlon goals’ App Store Story here - https://itunes.apple.com/gb/story/id1447218202




Comment

New Great Britain Map Goal Added to app today!

Comment

New Great Britain Map Goal Added to app today!

So we’ve added a new and pretty hefty Map Goal to SwimIO this afternoon. This challenge is in homage to Ross Edgley who on 4th November 2018 became the 1st swimmer to swim around mainland Great Britain bagging 4 world records in the process. Setting off from Margate on June 1st it took 157 days, burned over 500,000 calories swimming 2,883km in total. From sprinting across the Strait of Dover dodging ferries to enduring Salt Mouth and developing Rhino Neck, dodging jellyfish and hypothermia, please join us as we doth our swim caps to Ross and his superhuman effort! SwimIO peeps you can try this challenge from the comfort of your own pool. Still not for the faint hearted. Good luck!

Comment

SwimIO Integrates with Apple Watch 2!

Comment

SwimIO Integrates with Apple Watch 2!

SwimIO is the first global swimming app! It’s live in 155 countries and has recorded over 3m swims covering 4 billion meters…that’s around the world 100 times!

“Technology and water have previously caused a few issues for innovators but finally new ideas and products to encourage swimming participation are emerging…for instance when the most successful company in history, Apple, promote swimming as an activity on the series 2 Watch, you know innovation has arrived” (David Minton, 2017 State of the UK Swimming Industry Report).

SwimIO took the opportunity of taking Apple’s technology one step further by integrating the swim algorithm from the Apple Watch Series 2 meaning swimming workouts can be recorded via Apple Health.

After a couple of months of hard work, and testing the integration with Apple, the app update has finally been released and we couldn’t be more thrilled! Our developers spent hours coding the improvements and we had our team swimming virtual lengths in the office recording swims to work out the bugs. Before releasing the app to the public, we had 10 keen beta testers around the world volunteer to try it out and feedback any problems. The overall response we’ve had for this new software has been incredible so a big thank you goes out to our development team and beta testers!

This juicy, new update includes the Phase 1 release of our integration with Apple Watch (Series 2 only) & allows swims recorded within the Apple Watch Workout feature to be automatically imported into SwimIO - so no need to manually record swims anymore, you lucky people! There isn’t an app for the Apple Watch itself in our Phase 1 release, so just record your swim normally through the watch. Also, please note that we only cover indoor pool swims currently not outdoor swims.

You can supplement the Apple Watch swim data with your sets, notes and make edits to swim data on import into SwimIO if needed as well as connecting it to your favourite pool. We love swimming with the Apple watch and want to give your swims a dedicated place to shine. The new update is simple as 1-2-3 to record swims. Once you’ve enabled the integration in the app, look out for the push notification after you’ve swum and let SwimIO turn your hard-earned exercise into glorious stats and motivation.

Along with these improvements we’ve also squashed a bug which was trapping you on our swim logging screen if you selected ‘Custom Distance’ or ‘Custom Length’. Not anymore you don’t! Loads of new virtual swim map goals have been added to keep you motivated. Try and get from Cuba to Florida and if you do we’ll join you on Miami beach for a Bloody Mary in the morning. SwimIO swimmers combined circumnavigate the globe every 8 days, let’s see if we can make it around the world in a week!

Come and say hi on twitter @HelloSwimIO

Comment

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

77 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.

77 Comments

3 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.



3 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