executionContexts

Andre Garzia soapdog at mac.com
Sun Oct 15 09:21:33 EDT 2006


Richmond,

by poking around the IDE source you'll find lots of little gems,  
specially functions and code that can teach you how to do many things  
but having access to the inner bowels of the RunRev IDE does not  
means that this is something you can rely on. The executionContexts  
is one example, there are others. They are a part of the private  
interface of Rev, functions to be used by them, meaning they can and  
probably will change in future releases. It's like you're building  
your code for a customer, a nice little application full of functions  
for it to work and when you deliver to the guy, he disassemble it and  
start asking around why you didn't document that private handler used  
by your own code. You could say to him: "hey, this are inner  
functions of the software, you're not supposed to be here, and in the  
following releases this might change." which is the case of Runtime  
Revolution.

If RunRev IDE was coded in C/C++ then you would have ZERO of this  
undocumented features you talk about, they are not features, they are  
not hidden, they are not undocumented. They are just a side effect of  
coding the IDE in the same language as the one being distributed.  
What you see as new properties to tap and handlers to call are  
nothing but how RunRev team worked to build their own IDE, they are  
not for public comsumption.

Dar Scott was very wise in the words that he didn't bought  
executionContexts. Thats true, the thing he bought (damn, I can't  
spell that word in english) is Runtime Revolution with it's  
Transcript Language, executionContexts is just a side effect of how  
the RunRev team implemented such language and IDE.

To give you an example where I acted like you till I realized what  
was really happening.

I once, in Release 1.1 (I think) was coding a little database app and  
was using the Database Query Builder for it. The DQB appeared to me  
to be very inflexible since the SQL statements were hard coded during  
the development periods till it was revealled to me some functions  
that would allow me to update the SQL statement in a given query. I  
was like in the computer developer equivalent of samadhi or some less  
important bliss state. Such power, hidden!!! I asked for  
documentation too till I realized that the function I was calling was  
an inner function of runtime revolution, it was in fact (In my  
guessing) the actual function used by the Database Query Builder to  
create those SQL statements in the first case. I was not tapping into  
some hidden function to be used by the initiates of the order of the  
sacred xtalk or something, I was actually using the side effect of  
Database Query Builder being done in the same transcript language I  
was coding and leeching on some of its function for my profit and fun.

I came to realize that I was using some function of the RunRev IDE, I  
was only able to use such function due to the message path nature of  
Revolution. Rev having no namespace or protection allows anyone to  
use anything that is put into use. Those things can change as RunRev  
team finds new ways of doing stuff, and again in each release as they  
change their codebase, as long as we're allowed to explore the  
source, we'll keep finding little side-effect-gems but trusting them  
to be present in every release or asking for documentation is not the  
right path here.

I think what we're discussing here is not undocumented functions but  
in fact clever side effects of the message path mixed with having  
access to IDE sources. A much more colorful discussion would be "What  
cool thing did you learned by looking into the IDE sources?" where  
people could say how looking into the IDE scripts they learned things  
and styles of coding that made them a better coder. There are people  
here that are coding xTalk for decades, by looking into their scripts  
a newbie such as me and the others can learn much about proven  
practices that work.


Andre



More information about the use-livecode mailing list