is a sports tracking website – one of three I upload cycling data to. It advertises synchronisation of data in both directions with FitBit – a general fitness tracking website (I have a Flex) – although that’s always been flakey. Lately I’ve been having a specific problem in that area and talking with Endomondo support about it. It appears that the data synchronisation (at least to Fitbit) is dependent on what operating system (and by extension, the browser) a person is using to upload data!
As someone with the job title of Software Engineer, who’s been designing, deploying, testing and maintaining software for many years on many platforms, I know that you try and rid yourself of dependencies on specific hardware and operating systems where possible – unless you’re interested in specific hardware and OS bugs/features; you write your code to meet language and protocol specifications that don’t have gotchas that aren’t reproducible outside a specific environment (or a specific machine!). In this age of mobile code, where a client accesses a web site/server to upload data from a desktop client or uses a mobile phone to do the same, writing to platform independent standards where possible would seem paramount.
A key goal is to insulate server-side systems from vagaries of clients that are not under your control; you don’t know when a client will disappear halfway through a transaction or if it will send you dodgey data (accidentally or on purpose). It shouldn’t matter where the data originated as long as you can verify that it is valid, and then process it accurately. You define specific boundaries within and around your application, and APIs that define behaviour across those boundaries, and then any system on either side of a boundary that respects the rules should be valid; it’s following the rules that matters, not what OS you are or aren’t using.
This issue is exemplified by the fact that there is a bug with uploading on the OS they claim to target that doesn’t exist on an OS they don’t support. A little cross-platform testing is not expensive and is a wonderful way of verifying that you haven’t deployed broken code that worked when you ran it on your Windows system in the office. If you seriously claim to support 20 million users, you should be testing your web site from all major browsers on all major systems (and there’s not that many) or be more responsive to the users when they report an issue, since a bug that affects even 1% of 20 million is a lot of pissed-off customers. That said, Endomondo is much better at customer support than others (Garmin, I’m looking at you!)
As to the data; in this case, it’s in a FIT file – Garmin’s standard format for encoding activity-related data eg. heart rate, cadence and speed, along with location information. Nothing in that information relates to the user’s web browser or the computer that he or she was using. One way a user’s environment would impact on data synchronisation between back-end systems is if the synchronisation is not done at the backend and is in fact triggered from the user’s machine. That is an appalling design decision, if it is the case. Why should the code in the browser know that the user account is linked to FitBit (or any other possible sychronisation target)? How can the code in the browser know if FitBit is available for synchronisation, and reschedule data transmission when it is available?
I think it’s fairly safe to assume that such a design wouldn’t be in place, but that begs the question of what information/state from the browser is stored on the server with the FIT data and why. Rationally, you would expect that uploading of FIT data is a self-contained process that can take place potentially hours before the server attempts to send data to FitBit, and the fact that the upload took place from a specific browser (on a specific OS no less!) via the Garmin plugin, or by direct file upload is irrelevant – and thrown away – once that upload has finished. If such ephemeral information can pollute activity data in this case, I worry that it is affecting more people and no-one has realised. Perhaps there’s some obscure bug sitting around like a malignant tumour that hasn’t been detected since “only Windows is supported”. That’d be a shame but at least I have kept my data independent of Endomondo, so their lack of serious support for independent web standards won’t be more than a minor inconvenience to me.
Google+: View post on Google+