How difficult is it to make an app in Monkey C - Beginner programmer

Hey there,

I haven't got deep into the Monkey C API, I'm a beginner programmer
with experience in coding using mostly C# & Java languages.

My Question is: how difficult it is to get into coding a simple app
in Monkey C?

Thanks in advance.
  • Have you looked at the samples in the SDK and installed the environment? (some aren't fans of Eclipse, but that's what I've used since day 1).
    The Programmer's guide takes you through the setup, as well as shows you how to use the template for a watch face and get your own very basic one done in just a few minutes. (you can do the same with a widget,data field, or watch-app too).

    After that, it really depends on what you want to do. The samples show you how to do a number of different things, such as an analog watch face, do comm, record a .fit, etc.
  • Have you looked at the samples in the SDK and installed the environment? (some aren't fans of Eclipse, but that's what I've used since day 1).
    The Programmer's guide takes you through the setup, as well as shows you how to use the template for a watch face and get your own very basic one done in just a few minutes. (you can do the same with a widget,data field, or watch-app too).

    After that, it really depends on what you want to do. The samples show you how to do a number of different things, such as an analog watch face, do comm, record a .fit, etc.


    This is great, yeah, I have seen the templates, overall they are quite helpful.
    The Eclipse enviorement doesn't make things any easier (Visual Studio does..)
    but it doesn't sound that intimidating..
    Thanks!
  • Note that the templates and samples are two different things. A sample will show you how to specific things, while the template sets up the basics for your own project of a specific type (watch face vs DF for example), and does things like set a unique UUID for that project.

    (BTW, I started with MS C back in the DOS days! Once you get used to Eclipse, it's not that bad in a monkey c environment :) )
  • I've coded up some simple and moderately advanced datafields, and have found it fairly straightforward. A few things that take more time compared to, say, programming in Visual Studio, are:
    • Dynamically typed, so you can't find errors, e.g., referring to a variable that doesn't exist, until you simulate.
    • The build-release cycle is a bit klunky.
    • Simulator doesn't actually behave same as watch (at least not same as vivoactive, my device)


    Perhaps there's a way to do some of these things better, that I don't know about because I'm not an expert.

    But notwithstanding these gripes, overall it's actually pretty good, and quite satisfying when you get something to work.
    • Simulator doesn't actually behave same as watch (at least not same as vivoactive, my device)


    What kind of things are you seeing? With the newer SDK's I've seen few if any things. There are some items like using a menu in the sim is a generic menu, and different than any of the real devices, and unlike on real watches, there's no widget timeout in the sim, and colors look different, but that's a display tech thing.
  • you might also want to check out my tutorial which take a step by step approach, each tutorial teaches a new technique. Besides the 'how' ie the actual code, there's also an explanation about the 'why' and the 'how to approach'.

    Beginning programmers and non coding people were exactly what I had in mind when writing it. :)

    http://starttorun.info/garmin-connect-iq-tutorial-overview/
  • What kind of things are you seeing?


    My experience has only been with data fields. See, e.g., https://forums.garmin.com/showthread.php?370775-Sys-getTimer()-vs-info-elapsedTime-in-compute-data-field, for an example.

    There was also a particular problem with the vivoactive where I'd have data files recorded from the device (at 4 sec frequency) which aren't great to simulate with because on the device itself you are at 1 second frequency. The new, simulate data, option is an improvement, but it would also be good to have more along these lines, or even pre-canned fit files to use, some real, and some with "nice" faked data.
  • Yes, with the smart recording done on the va, playing back .fit files can look a bit odd. You can find some .fit files around the web, or if you know someone that has a watch that does 1 sec recording, ask them to send you a .fit (I have a collection of maybe 15, from a 1 mile walk to a 12 hour run that I use for testing)
  • @PETERDECKER: I don't know whether we've said it yet, but your tutorials are really well done. :) We've talked about putting together our own set of tutorials, and it's still on our road map for the future. Putting together a good tutorial takes time, which is something we're always running short on (since we're busy building cool stuff), so your work is appreciated!
  • What kind of things are you seeing?


    Something else that tripped me up in the past (~15months ago) was that the simulator always returned null when I was trying to get the current steps via the activity monitor. It worked fine on the watch. Now I seem to be getting a lot of spurious out of memory errors in the simulator. In particular, I have a data field which calculated rolling pace, cadence, stride length (over 3 mins, so allocates a couple of circular buffers of size 180), which worked fine on sdk 1.2. Given the breaking SDK changes I needed to recompile them, sign them, etc, but the same code didn't work in the simulator, with OOMs. Works on the watch fine though.