Skip to content
AF
Reading paths

Reading paths

The rest of the site is filed by kind of page — integration guide, fix, concept, architecture note. These four routes are filed by job instead: the pages one task needs, in the order the work lands, with a line on each saying why it comes there rather than later.

Tick steps as you go if it helps. Progress is stored in this browser only — no account, nothing sent anywhere, and it will not follow you to another device. Prefer to browse everything instead? The site index lists every page.

Ship a HealthKit read in a week

From an empty Xcode project to a background-syncing HealthKit read, in the order the work actually lands: permissions before queries, queries before the empty-result debugging that always follows.

7 steps
  1. Integrate Apple HealthKit

    The end-to-end walkthrough: capability, Info.plist keys, authorization request, first query. Everything below assumes you have done this once.

  2. The HealthKit Activity types

    Pick the identifiers you are actually reading before you write a query, and learn which of them sum and which must be averaged.

  3. Permission set builder

    Turn that list of types into the exact Info.plist keys and authorization call, with the read-only types flagged so you do not request a write that can never be granted.

  4. Statistics query generator

    Generate the HKStatisticsQuery with the right options for each type — the cumulative-vs-discrete choice is the one that silently produces plausible wrong numbers.

  5. errorNoData: the query found nothing

    Budget for this one. A first HealthKit read on a real device returns nothing far more often than it throws, and the reasons are not what most people guess.

  6. Test a HealthKit integration

    The simulator cannot tell you whether this works. Set up the device and fixture story before you ship rather than after the first bug report.

  7. Background sync that does not need the phone awake

    A read that only runs while the app is open is a demo. This is the step that turns it into a product.

Support every wearable without eleven integrations

The aggregator route: what one actually does for you, what it costs, how to wire it, and the two operational problems (webhook delivery, late data) that arrive with it rather than instead of it.

7 steps
  1. What is a health-data aggregator?

    Start with what the category does and does not absorb — aggregators broker OAuth and normalise payloads; they do not remove the provider approval gates.

  2. The health-data aggregator APIs

    The landscape in one page, so you are choosing between named products with known coverage rather than between marketing sites.

  3. What aggregators cost

    Pricing is per connected user on most of them, which makes the build-vs-buy answer a function of your user count. Get the number before you write code.

  4. Integrate Terra

    A concrete worked integration of one aggregator, end to end. The shape transfers to the others even if you pick a different vendor.

  5. Webhook ingestion done safely

    Aggregators push. At-least-once delivery means duplicates and out-of-order events are normal traffic, not incidents — the receiver has to be built for it.

  6. Why wearable data is missing or delayed

    The support ticket you will get most. Most of the delay is upstream of you, and knowing which part is which is the difference between a reply and a rewrite.

  7. Consolidate direct integrations onto one aggregator

    If you already have direct integrations, this is the cutover plan that keeps existing users connected through the switch.

Add camera-based coaching

Pose estimation from the concept to a shipped rep counter and form cue: what the models return, where they run, and the two features everybody builds on top of them.

6 steps
  1. What is pose estimation?

    The vocabulary first — keypoints, confidence, and what a model actually hands you, which is much less than 'it knows the exercise'.

  2. Pose estimation models compared

    MediaPipe, MoveNet, YOLO and the rest differ in keypoint count, speed and licence. Choosing here decides most of what follows.

  3. On-device vs cloud

    This one decision sets your latency budget, your per-user cost and your privacy story all at once, so make it deliberately.

  4. Camera pose tracking, practically

    The build: camera pipeline, frame rate, coordinate spaces, and the smoothing that stops a skeleton from jittering.

  5. Add rep counting

    The first feature worth shipping on top of keypoints, and the one where naive thresholding fails on real users.

  6. Add real-time form feedback

    The hard one. Ship it after rep counting, because it needs the same signal to be stable before a cue can be trusted.

Get off Google Fit

The Android migration in five pages: what is actually being shut down, the mapping to Health Connect, the integration, and the empty-read debugging on the other side.

5 steps
  1. What is shutting down, and when

    The dated timeline, with what is confirmed separated from what is reported. Plan against this rather than against a blog post.

  2. Migrate to Health Connect

    The mapping and cutover plan — the API shapes are not equivalent, and the differences decide how much of your read layer survives.

  3. Integrate Health Connect

    The destination platform end to end: permissions, the reads, and the Play policy that governs what you may ask for.

  4. Health Connect returns no data

    The Android counterpart to HealthKit's empty read, and the first thing you will hit on a real device after the integration compiles.

  5. Every Health Connect record type

    The reference to keep open while you rewrite the read layer — the full record set, so you can check a type exists before you plan around it.

A path you wanted and did not find is a content request — tell us what you are building and it may become the fifth.