Clarion Folklore #3–Dutchland, Scope and Slanderers Warned

Clarion Folk Lore #3 is live!

[audio:ClarionFolkLore-003.mp3]

URLs

Answers

  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
       so

       MAP
       END

       becomes

       MAP
         INCLUDE(‘BUILTINS.CLW’),ONCE
       END

    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)
                       END

       ParentQ  QUEUE
       ID                  LONG
       Children     &qtChild
                           END

       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
                END

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 #7 – I Love My Job

 

Why do you love your job?

What is your job?

Although kitchy and lame, I love my job because my job is life. I’m not going to limit myself to "work" from nine till five. That’s not good enough. My job is every part of my life, regardless of responsibility or method or madness :).

How is your job?

Trouble Blogging Even Though I Know I Should

Every spare moment of late on my laptop, when I’m at home, kids in bed and wife-time spent .. I’ve put into development.

It’s not that I don’t like writing, i _love_ to write. To express in words, or through voice and video.

But right now, my brain is being taken up with a few projects, namely finishing my first paid Web System, and the Twitter CRM.

5 Rules For A Twitter Addict

Twitter is an insidious mistress. She beckons and calls and before you know it, the hours have flown by. The only way things could get worse is if Twitter joined in unholy union with Diet Coke to form some freaky kind of sub-organic fusion of Tweet and Drink.

11042008882

1. DO NOT Read Profiles

If you do this; If you embark on such a crazy streak of discipline as to "relate" with people on Twitter, your life will not be the same. Don’t do it. You have been warned.

2. DO NOT Click On Profile URLs

Doing so will cause a chain reaction of what some people label "awesomeness", or "legen – wait for it – DARY" behaviour. You will find out more about the person. Don’t do it .. Twitter will entwine itself further into your heart mind and soul as a conduit for all things community.

3. DO NOT Thank And Greet Your Followers Or The People You Follow

Pursuing normal social cues (like saying Thanks, or G’Day!) sucks you deeper in! Fool, adjust your goggles and clear the mist! Your Addiction will never be ground down and cleared away until you give up this idea of Community.

4. DO NOT Reply To @’s and d’s.

These are like a truckload of sherbert to a kid. Every time you see an @<yourname> your eyes light up and you get all excited. And the d’s, well .. forget about it. Your addiction is fed by these kinds of conversation, and Twitter laughs at your pathetic weakness.

5. DO NOT Follow More Than You Are Followed

Power is like Loki. Tricky. So you need all you can get. To remove your addiction, you need to have power over countless thousands. You cannot be a Follower if you Lead. That’s stupid. Resist the urge to follow Mr. Scoble. Leaders cannot Follow. Say it with me.

Finis

The world trembles at the might of this dark decaying force, this "Twitter". We must resist the siren call of her beauty; Her figure that says "Community Is Gold", and "My Power Can Be Yours".

Lies. Beautiful sweet lies.

There Is A New Report Designer In Town

Steve Ryan is a shining light. When most other people are either disparaging the new Clarion (newsgroups) or not doing much with it at all (me), he’s toiling away. Sure, he’s struck a few hurdles, but it hasn’t slowed progress.

Steve and his crew are nearing the end of a big product. They are completing the end user GUI for the stand alone development report designer and runtime.

Steve has kindly sent me some screenshots+words, as follows:

Picture 1. The Report Listing Application.

reportdesigner3

Picture 2. The Report Designer.

The report layout editor supports multiple report breaks all with separate database access. Full range limit support and filters plus embed points at runtime for customised report statements using over 1000 commands supported by the runtime.

reportdesigner31

Picture 3. The Report Designer Database drop and drop tree control.

Drag database properties to the Report Layout and the layout will get it’s setting from the primary key its uses to report breaks, it’s all automatic. The simple ribbon toolbar expands to display the options on the tabs. This design approach splits the window into two parts. The Layout design and the ribbon (toolbar) options plus Report Layout Options which are shown in Pic4.

designermode2

Picture 4.

The report setting mode allows the report designer to switch back and forth between layout design and report settings by simply pressing the view buttons
on the left. Report Design mode, Next, Previous and Back switch the user between modes so that all options are displayed on the one window without the need for toolbars or floating windows that clutter up the appearance design window. This makes it very easy for end users to master the report layout designer. Its all pretty easy.

designermode3

Kudos to Steve and his Crew!

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.

Stu Talk #5 – Harness Your Sparkbug

 

There’s an idea that I’m clarifying here. Beginning to clarify.

This process started when I posted a comment today and used the word *spark* meaning that the post (Community and Your Business as a Social Object by @pistachio) fired my brain. It pushed my mind in a direction that I wasn’t headed in at that moment.

That is what the SparkBug is.

I have to work out the mp4->mpg size thing. It’s not working like the mp4->avi used to.