Clarion Folklore #3–Dutchland, Scope and Slanderers Warned

Clarion Folk Lore #3 is live!




  1. What does MEMBER() do vs. MEMBER(‘MyApp.clw’)

    Every module needs to either have a PROGRAM statement or a MEMBER statement.

    The main module of an EXE/DLL/LIB will have the PROGRAM statement. All others will have a MEMBER statement of some form.

    – The form, MEMBER(‘MyApp.CLW’) tells the module to use the global scope of MyApp.CLW

    – The form, MEMBER() has no shared scope what so ever. This form is useful for generic code, these days typically for CLASSes

  2. What is the purpose of having a MAP, when it has no procedures in it?

    A MAP is used to declare prototypes for procedure. However an empty MAP isn’t quite as empty as it seems.

    Every MAP brings in %cwroot%\\libsrc\\BUILTINS.CLW




    Other files that are brought in:
       – EQUATES.CLW  (found in %cwroot%\\libsrc)
       – Win32.LIB    (found in %cwroot%\\lib)

  3. How do you make a QUEUE of QUEUEs ?

    You’ll need to use ,TYPEd Queues, and you’ll (typically) use NEW / DISPOSE .

       At it’s core:
       qtChild QUEUE,TYPE
       Name           STRING(42)

       ParentQ  QUEUE
       ID                  LONG
       Children     &qtChild

       Here a field of the ParentQ is a reference to another queue. Typically as you’re doing the ADD()s to the parent, you’ll either:
       a) ParentQ.Children &= NULL
       b) ParentQ.Children &= NEW qtChild  !instantiate a new one
       c) ParentQ.Children &= SomeChildQ   !already instantiated

       Remember when you’ve used NEW to instantiate, you are responsible for the matching DISPOSE, so typically when you’re doing DELETE(ParentQ) or wish to FREE(ParentQ) you will want to first DISPOSE(ParentQ.Children).

       qtFolder QUEUE,TYPE
       Name       STRING(FILE:MaxFileName)
       Path       STRING(FILE:MaxFilePath)
       ShortName  STRING(13)
       Date       LONG
       Time       LONG
       Size       LONG
       Attrib     BYTE
       SubFolders &qtFolder

Above is an example of a structure for a queue of queues, where the child queue is of the same structure as the parent queue.

These sorts of structures lend themselves to recursive coding, however it’s not required.

Stu Talk #6 – Hi! I’m Stu Andrews, And I’m A Software Dev At Google


I think I really get Google App Engine. Not so much in a technical fashion (although it’s pretty simple on the surface), but in a _global_ sense.

Earlier this evening I watched the first video of their revealing of Google App Engine. As I watched, a couple of thoughts started popping into my head.

They coalesced into the video above.

So watch what I would have said if I were Google.

I’m still having trouble with the whole video process. Tonight the sound just wouldn’t sync. I had to try a number of configs before getting it right. I even uploaded to Viddler a whole file before I watched it and it wasn’t right.

Here’s to getting quicker at doing these things.