Data Field: AppBuilder

By user request, this app lets you define your own data field, based on a simple math formula like cadence / 2.

If you want to get fancy, there's conditional expressions (like IF in Excel), functions for data analysis (like MIN and AVG), and the data field can also display the text of your choice. The resulting data can be (optionally) written to the activity FIT file.

With AppBuilder, you can implement almost any field that involves math, such as: calculating normalized power and saving the data to the FIT activity file, showing the average pace for even-numbered laps, or recording the amount of time you sprinted.

Full documentation and examples here:
http://ciq-appbuilder.blogspot.com/

AppBuilder 5:
Now with new features! AppBuilder 5 is a completely new app, so please check it out in the store if you are interested in any of the new features.
https://apps.garmin.com/en-US/apps/fd690281-9c22-4fee-a81e-3b7f39aa67c5

- Store up to four formulas per app. Switch between formulas directly on the watch, without using a phone or PC. With four clone apps, you can store up to 16 formulas total
- User variables. Allows for powerful formulas where information can be stored at one point, like the start of a lap, and used later. e.g. Lap elevation change
- Improved timeavg() options. Allows for simpler, more flexible normalized power function
- More functions and variables

4 clones of AppBuilder are available in the store, so you can have 2 formulas in the same activity
  • I will do this one bit of self-promotion. I happen to think I have the best stopwatch app/widget in the store, so if anyone needs a better, simpler stopwatch, I urge you to check them out:
    https://apps.garmin.com/en-US/apps/3...8-f45584b0a117
    https://apps.garmin.com/en-US/apps/3...0-a7dc7bdc72b8

    They look and control as simply as possible, while having every feature you could possibly need:
    - clock
    - laps
    - activity recording. No other app in the store has this. I think this is perfect for coaches.
    - easily review lap list while timer running
    - can view either lap time or split (total) time
    - best and worst lap colored green / red
    - black or white background

    All features are available on all watches. Unless you have an Epix, in which case you're SOL.
    [IMG2=JSON]{"data-align":"none","data-size":"full","src":"https:\/\/services.garmin.com\/appsLibraryBusinessServices_v0\/rest\/apps\/38eddacd-e098-40ce-82d8-f45584b0a117\/icon\/6f81a6ca-d042-48ae-aaed-77451c99acc2"}[/IMG2]
  • Former Member
    Former Member over 6 years ago
    FlowState I think I agree. AppBuilder5+ is a big job to maintain, even for the user.

    I admit when I did the grade / GAP tests I just simply used two instances of AppBuilder to allow faster tweaking of stuff. Making a full use of AppBuilder5+ with the codes and all seems like a reality that will not happen often, especially if you just like to quickly test things, which TBH is the best suited use of AppBuilder.

    I have just one more complex setup saved, and even that I actually made for the 4 field layout.

    For basic running needs I think I could just do with RunPower now, and if I need a simple formula or two the custom metrics available offer that flexibility.

    If with the endurance sports blogger you mean DCR, I actually thought about that too, but in the end it comes to what people are interested in. AppBuilder based on downloads might not interest wider audience and seems he will only review stuff enough people request. Kind of logical, more views pay bills and all.

    So it will require enough users to request it to actually happen. That said, I think all reading this, myself included, could take the first step to make it closer to happen.
  • JTH9, well yeah I think he wouldn't touch AppBuilder, even if he thought it was interesting on a personal level. It would put most ppl to sleep for sure. I always describe it to my friends as "Excel for your Garmin". TBH, Garmin is boring enough to most people. Most people who run with a Garmin every day don't bother to learn how to change settings, let alone download apps.

    But Run Power or even Stop and Go (my stopwatch)?

    I honestly think Stop and Go is the best app I made (*), but maybe it's just too late and everyone who wants a stopwatch has one already. Or maybe they like the native 935 / Fenix 5 stopwatch (which I uh...borrowed from liberally).

    (*) Mostly because of its simplicity, power, and what should be a much wider audience.

    But the native stopwatch is annoying in that:
    - It's hard and non-obvious to exit while running (you have to use a hotkey to return to the clock or controls menu)
    - When you stop the stopwatch, you need to press 4-5 buttons just to accept/decline saving the recording, reset the stopwatch and start over

    I fixed those problems and pretty much every single complaint people had about other stopwatches, but once again, not translating into downloads / reviews....

    I even did the thing with "tiny font for seconds and hours to save space" better than Garmin's own Stopwatch app in the store, which misaligns the tiny numbers for older watches like 235. But people will download Garmin's Stopwatch whether it sucks or not, because Garmin made it.

    I really only need one of my apps to succeed to feel like developing for Garmin is worthwhile....
  • For basic running needs I think I could just do with RunPower now, and if I need a simple formula or two the custom metrics available offer that flexibility.


    Ideally there could be a version of Run Power without the power, that just has the flexible metrics, plus custom metrics on watches that had enough memory.

    But I already tried something like that with a data field called Lap+ (if you look closely, you can see the resemblance to Run Power), and again there was a tiny audience.

    The original "Flexirunner" has 20k downloads in 2 years, compared 130k for Dozen Run in 3 years.

    I really think people just want an all-in-one datafield that selects your metrics for you. That way it can make the best use of your screen real estate too. Again, I'll point out that a lot of the flexible single run fields don't have the greatest aesthetics, including Run Power. I'm actually shocked at some of the layouts that people think users will want, like asymmetrical fields or 20 fields on one page with microscopic text.

    My own favourite data field is Dozen Run....
  • Former Member
    Former Member over 6 years ago
    [TABLE="border: 0, cellpadding: 0, cellspacing: 0"]
    [TR]
    [TD="width: 64"]UpHPwr[/TD]
    [TD="width: 64"]FlatPwr[/TD]
    [TD="width: 64"]DwnHPwr[/TD]
    [TD="width: 64"]AvgPwr[/TD]
    [TD="width: 64"] [/TD]
    [/TR]
    [TR]
    [TD="align: right"]241,8551[/TD]
    [TD="align: right"]225,0696[/TD]
    [TD="align: right"]222,6917[/TD]
    [TD="align: right"]229,8975[/TD]
    [TD]Pwr[/TD]
    [/TR]
    [TR]
    [TD="align: right"]3,570289[/TD]
    [TD="align: right"]0,118692[/TD]
    [TD="align: right"]-3,60826[/TD]
    [TD="align: right"]0,169931[/TD]
    [TD]Grade[/TD]
    [/TR]
    [TR]
    [TD="align: right"]994[/TD]
    [TD="align: right"]1150[/TD]
    [TD="align: right"]879[/TD]
    [TD="align: right"]3023[/TD]
    [TD]Time[/TD]
    [/TR]
    [/TABLE]

    Here's some Excel data using the earlier presented grade calculation I had recorded from one run. I used -1,5 / 1,5 grade as threshold for flat power as seems that's roughly how much variation you'll have anyway on most of the flat sections because of varying road condition and Garmin altimeter hovering around.

    I often do section by section analysis marking uphill / downhill post run, but it's interesting to see this as a quick total summary. By breaking to even smaller sections you could see total time spent at different hill grades etc.

    Anyway I think I'll see if I can write up similar AppBuilder5+ formulas in the upcoming weekend running with 3 averages and realtime power / hr on same screen and see if brings any additional insight when running a workout. Using global variables shouldn't be too difficult task I think.

    Still, sometimes ideas that seem to work on paper may not turn out so great in practice.
  • JTH9 thanks for the testing! I love data like this.

    Completely coincidentally, I've updated AppBuilder 5+ with a prettier "6 Fields A" layout. The values are centred, but the labels are not (this is one of those compromise thingys.) If you don't see a screenshot of the beautiful new layout in the store, it's because the store hates us devs and won't let us update anything.

    [IMG2=JSON]{"data-align":"none","data-size":"full","src":"https:\/\/services.garmin.com\/appsLibraryBusinessServices_v0\/rest\/apps\/394941a6-4e73-4843-820b-fdcfbc877f3a\/screenshots\/20b8b39b-193b-4d91-a878-1373bac84dfe"}[/IMG2]

    Anyway, the old and busted inner-justified 6 field layout is still available as "6 Fields B", in case somebody wanted to use it for some reason.
  • Former Member
    Former Member over 6 years ago
    FlowState , thanks! The labels won't matter as I can easily fix that by simply adding a few spaces. :)
  • JTH9 well yeah, but to be clear there's no technical reason I can't centre the labels. It's aesthetic.

    They are not centred is because if they were centred, only the smallest labels would be able to fit in every field without being cut off (about 3-4 characters). It's why I used so many abbreviations in Run Power.

    For example, "Label 2" could not be centred (with respect to the associated value) in the image above without cutting off part of it.

    That's the only reason I didn't want to go with a centred layout before. The issue with less space for the labels if you align them the same way as the numbers.
  • Former Member
    Former Member over 6 years ago
    FlowState ah, ok, well I'll just try out and see what works. For testing I'll only need short labels anyway to see what is what.
  • Latest Update (AppBuilder Classic, 5 and 5+)

    This one will probably not affect anybody at all, but I've changed the way the internal FIT field label is written again.

    It used to write something like "AppB:YOURLABEL", now it just writes "YOURLABEL". Writing "AppB" to the field label never made any sense at all, because there is another way to identify what app wrote which field (see below).

    This label is usually not visible to end-users, but some sites may use it to determine what the data represents. For example, Smashrun looks for an internal label of "Power" to identify power. (I'm not sure if it also requires the correct nativeNum of 7, tho).

    Of course, if you have a CIQ2 watch, you can already override the internal field label using the optional 3rd parameter of the record*() functions

    If you like looking at the internals of FIT files, note that the store ID of an app that writes to FIT (visible in the store URL) will always be written the FIT file (albeit in a different format), so you have a way to identify AppBuilder FIT data regardless. If you're concerned about identifying AppBuilder data years later, when who knows what the state of the store and the apps will be, all you have to do is save all the URLs of the AppBuilder clones, and you have enough information to identify a FIT file that was written to by AppBuilder, and all the fields that AppBuilder wrote.

    In fact I'll do it here, for posterity.

    Here's all the store urls, with embedded store IDs, for all the AppBuilders:
    AppBuilder Classic:
    apps.garmin.com/.../deb4b872-48be-409c-b91a-9b8485d2fc80
    apps.garmin.com/.../510aee91-d98d-406b-8bab-04b9b0a048d8
    apps.garmin.com/.../e92ae18a-8495-4694-8325-f436909377dd
    apps.garmin.com/.../fcdcce26-a256-4882-9f2e-9a39e44e1b9f

    AppBuilder 5:
    apps.garmin.com/.../fd690281-9c22-4fee-a81e-3b7f39aa67c5
    apps.garmin.com/.../706e91ae-7b84-4ac3-b0a7-dc2bcceb6fc2
    apps.garmin.com/.../f5259a68-1509-4ee9-9a05-46dc1d939f3f
    apps.garmin.com/.../394b4149-6d5a-4c2c-836d-dca71ea10b98

    AppBuilder 5+:
    apps.garmin.com/.../394941a6-4e73-4843-820b-fdcfbc877f3a
    apps.garmin.com/.../4b128c3e-c304-43e5-8120-29e01c1b370f
    apps.garmin.com/.../d2e91338-d3ee-474f-9a3e-66c100952ea4
    apps.garmin.com/.../084db2bb-ece1-4285-869f-5d7632272775



    If you run FITToCSV.bat on a FIT file written by AppBuilder, you'll see the store ID, under the application_id field, decoded as a series of decimal values.

    For example, AppBuilder 5: "fd 69 02 ..." = "253|105|02|..."

    If anyone really liked having "AppB" in the internal label, if you have CIQ2, you can write it yourself now.....