First message posted and immediately flagged as spam

I've spent an hour writing a long message about my experience as a Connect IQ newbie, and my message has been immediately flagged as spam.

Depressing.

Top Replies

All Replies

  • Hi . Posts with 3 or more links automatically get placed in the moderator's queue for approval.

    I'll just post it here...


    Comments from a Connect IQ newbie: day 1

    Hi,

    I'm an exprerienced professional software developer, but I'm discovering today Connect IQ and Monkey C.

    Here are some fresh comments about my experience. TL;DR: that's not pretty!

    My background: I have a CS degree and I work every day with Go and VS Code at work and I had long professional experiences with Perl, Unix shells, Raku, JavaScript, C, Java...

    I have installed the Connect IQ SDK on a Mac. Where is it installed on my filesystem? I don't know. At least the Visual Studio extension for Monkey C seems to have found it (Monkey C: Verify ) works).

    I have selected to download the latest SDK (4.2.4) and device fenix 6S Pro (the device on my wrist).

    I've created a new project from VS Code (Monkey C: New Project). In the project creation I have selected version 4.0.0 as a safe bet (looks recent but not too much). As I've seen that no target products are declared in the manifest, I have tried to add my fenix 6S Pro with "Monkey C: Edit Products". But the list of available products is empty. Well, it's even worse: I'm told "Select the products to support", but there is no list to select from. I had to downgrade manually in manifest.xml the minApiLevel 3.2.5 to see the fenix 6S Pro in "Monkey C: Edit Products'. This seems inconsistent with the Connect IQ System 6 announcement where I see that the fenix 6 and fenix 6 Pro series are supported by Connect IQ SDK 4.2.4. Is it because fenix 6S Pro is neither fenix 6 or fenix 6 Pro? So I had a look at the devices references page. That page is linked from the Connect IQ Basics page. The device references page is just an awful table that doesn't even contain the information I'm looking for: the minimum API level. While writing this rant I found another devices reference called "Compatible Devices" where I found the API level. It looks like the "Getting Started" miss the basic information to get started.

    I then started to learn Monkey C by looking at the documentation of the language. First sentence: "There is no better way to learn Monkey C than by jumping right in." I very quickly realized that the maintainers of that documentation are suggesting me to not read it. And they are right. That documentation is poorly structured and poorly written. I have probably too high standards (I'm used to read the Go specification or the Perl Syntax documentation). Here are a few examples:

    • the documentation is "organized" in 8 big pages. Each big page has no index table. No permalinks to each section of the page. No global reference.
    • the language is called "Monkey C", but the core modules are prefixed with "Toybox". I've not yet seen a page mentionning the origin of that name. I want to know the story!
    • Keywords are highlighted in the doc, but a link to the reference definition of the keyword would be more helpful.
    • Loops statements are described behind "Functions". I expected instead a page named "Statements" or "Syntax" 
    • I've read the "Import and Using Statements" section of Objects, Modules and Memory, but I still don't understand the difference. The 3rd sentence says "This allows classes in a module to be accessed without the module suffix, making for easier typing" but
      • so far the documentation said variables are loosely typed
      • I see examples that show that System.println can be called from module Toybox.System. So the *prefix* "Toybox" is removed, but the sentence speaks about removing the *suffix*
    • There are separate sections about "Data Hiding" and "Scoping" while I think both are strongly related

    I have had enough and I went to explore other parts of the documentation.

    I went to the Developer Summit. I found Marianne Jantz presentation "Connect IQ: Optimum Monkey C" and watched it. It gives me a much view of Monkey C features. I have read again the section about import/using and I now understood it.

    That's all for day 1. To be continued.

  • There is a learning curve in CA.  And I say this as someone that started professionaly projtams since 1980. where that includes embedded systems and even working on a smalltalk VM.  

    It will take you a while to get up to speed.  Much more than a day or two (I've been doing CIQ for 7-8 years myself).

    Things like min API and how that relates to SDK version.  They are different things.  for me, the min SDK in all my apps is 1.2.x. as I have apps for even the earliest CIQ device that have a 1.x VM, but I build for them using the latest SDK.  If I don't want to support CIQ1,CIQ2, or CIQ3 devices, I don't include them as target devices.

    In the case of the fenix6, that is a CIQ3 device (it has a 3.x.y VM).  Devices with CIQ 4 have HW differences from pre-CIQ4 devices.  That's why you didn't see the f6 as a target when a min API of 4.x.y.

    I'm a windows user and forget exactly where things live on a mac, but in VS CODE, use the command palette and use Monkey C: Open Samples Folder.

    The samples folder is in the root of the current SDK, so that will point you in the right place.  And you probably do want to look at/use some of the samples to get started.