Re: 4D World Tour - Denver

2017-05-08 Thread Floyd Zink via 4D_Tech
Ditto to what everyone else has already said about the 4D World Tour 2017 in 
Denver. Sorry I’m late posting, but all I can add is the knowledge and advice 
gained from the training is “priceless.” The ROI is off the charts.

All the presenters were well prepared and explained a lot of the new features 
of v16 with excellent demos. Even the “new” guy. ;) Add was great as usual and 
JPR is JPR. :)

It was great seeing several of the old timers and some new, much younger, 
developers as well!

BTW, the term JPR used for the “hypothetical” new version of 4D was it, 
hypothetically, will be a “quantum leap.” Also, you better be all over C_OBJECT.

Floyd Zink
QMed Corporation




**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: 4D World Tour - Denver

2017-05-08 Thread Tom Dillon via 4D_Tech
Sorry, I failed to mention, but of course, JPR's "poof" was in an eelven on a 
scale of one to ten!

Tom Dillon wrote:

>I know I'm late to this and that there's only the one World Tour event
>left (I had a three day, drinking from a firehose client meeting after
>the WT). BUT, I thought about not going, because, ya know, maybe JPR
>might have lost some of the perk in his "poof, it is done". And I don't
>have enough time to practice how to pronounce Add Komoncharoensiri (I
>have trouble with double letters). But, learning what I did about
>workers and, in particular, a better way of doing modular form design,
>made it more than worth it.
>
>I know, it's tomorrow and I probably can't make most of the first day!
>Do it anyway. You'll thank me, and everyone else who posted about the
>World Tour, probably with a beer at the next 4D Summit.

-- 
   --
   Tom Dillon   825 N. 500 W.
   DataCraft   Moab, UT 84532
   tomdil...@datacraft-inc.com   720/209-6502
   --
   Never apologize for a joke that nobody realized was dirty.
   --- Sunastar
   --


**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: 4D World Tour - Denver

2017-05-07 Thread Tom Dillon via 4D_Tech
I know I'm late to this and that there's only the one World Tour event left (I 
had a three day, drinking from a firehose client meeting after the WT). BUT, I 
thought about not going, because, ya know, maybe JPR might have lost some of 
the perk in his "poof, it is done". And I don't have enough time to practice 
how to pronounce Add Komoncharoensiri (I have trouble with double letters). 
But, learning what I did about workers and, in particular, a better way of 
doing modular form design, made it more than worth it.

I know, it's tomorrow and I probably can't make most of the first day! Do it 
anyway. You'll thank me, and everyone else who posted about the World Tour, 
probably with a beer at the next 4D Summit.

-- 
   --
   Tom Dillon   825 N. 500 W.
   DataCraft   Moab, UT 84532
   tomdil...@datacraft-inc.com   720/209-6502
   --
Even on a road with no turns you can head out across the
open field. --- Sunastar
   --


**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: 4D World Tour - Denver

2017-05-05 Thread Tim Nevels via 4D_Tech
On May 5, 2017, at 2:00 PM, David Adams wrote:

> You seem excited about the event ;-) Keep in mind that not everyone can
> attend because they either live to far away, have a scheduling conflict, or
> are reading these posts in the future. Unless they invent a time travel
> machine, it won't be possible to attend...Ultimately, if information isn't
> in the docs (language ref, tech notes, tips, recorded sessions, etc.), it's
> easily lost or ignored.

I was trying to be silly, not serious. I guess I should have put a :) next to 
my post. 

And I am excited about the 2018 4D Summit. JPR says it is going to be big. He 
provided no details except for one little hint. So as not to offend and keep 
anything secret here is his comment. If you are using periods in variable 
names, you might want to stop doing that. You take from that comment whatever 
you want. I think I know what it coming and it’s something we had a discussion 
about in the last month here on the iNUG. Something that will definitely be 
interested in. But that’s just my opinion and speculation. It will be April 
2018 before we all know for sure what is coming.

And they also mentioned that the 4D Summit in Paris next year will also be done 
in English and French with translators available in all sessions. So if you 
can’t make it to America… there’s always France. 
 
> As far as the sequence of events goes, it's basic information that should
> be in the documentation. There's nothing advanced about it and it's nothing
> that should be secret. It's a bit of the mechanics that it's important to
> understand so that you don't tie yourself in knots. Here's how it works
> (I've posted it here before):
> 
> * When you call Open window (etc.) a 'queue' is created. This is *before*
> any form is shown. So, the queue is a property of the window, not the form.
> 
> * You can post code blocks to the queue via CALL FORM *as soon as the
> window reference is returned.*
> 
> * ...but then there's no form context to execute the command(s) you've
> supplied.
> 
> * Once you open the form, On Load runs. *Your queued commands are still in
> the queue.*
> 
> * After On Load, the queued commands are executed in order. The code you
> pass in through CALL FORM is held in a First In First Out structure. That's
> what a queue is. 4D's CALL WORKER and CALL FORM are 100% reliable about
> executing code in the sequence it was received. That's a promise and it
> makes things a lot simpler than they might otherwise be. Since this is
> FIFO, not truly asynchronous or a stack (LIFO), the code is executed in the
> order that you sent it. 

You are correct. This is exactly how JPR described it. 

Tim


Tim Nevels
Innovative Solutions
785-749-3444
timnev...@mac.com


**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: 4D World Tour - Denver

2017-05-05 Thread Tim Nevels via 4D_Tech
On May 5, 2017, at 2:00 PM,Cannon Smith wrote:

> Well, I thought I was talking about workers in general, but that was under 
> the assumption that all processes have some kind of execution cycle. Are you 
> saying that a non-UI process (ex. pre-emptive thread) won’t have an execution 
> cycle?

Sure workers have an execution cycle. They constantly look in their mailbox for 
any messages. As soon as there is one, it executes the method in the message. 
When the method finishes executing it checks the mailbox for any more messages 
if there are some, it get the next one off the queue and executes that method. 
That continues until the message queue is empty. As far as I know there are no 
delays in the execution cycle. 

The only delay is if there is already a method executing. If there is, then the 
worker waits until the method has finished. Then it gets the next message off 
the queue and executes that. Methods are executed one at a time and in the 
order they were received in the worker message queue.

> In either case, the only place I can think of where this might matter is in a 
> worker process that has UI in it, so yes, CALL FORM is where the rubber meets 
> the road here. I was trying to be more exact, but maybe assumed too much?

Yes that is what JPR was trying to get across. The only delayed action is to 
redraw the window of a form.

Tim


Tim Nevels
Innovative Solutions
785-749-3444
timnev...@mac.com


**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: 4D World Tour - Denver

2017-05-04 Thread Cannon Smith via 4D_Tech
Well, I thought I was talking about workers in general, but that was under the 
assumption that all processes have some kind of execution cycle. Are you saying 
that a non-UI process (ex. pre-emptive thread) won’t have an execution cycle?

In either case, the only place I can think of where this might matter is in a 
worker process that has UI in it, so yes, CALL FORM is where the rubber meets 
the road here. I was trying to be more exact, but maybe assumed too much?

--
Cannon.Smith
Synergy Farm Solutions Inc.
Hill Spring, AB Canada
403-626-3236




> On May 4, 2017, at 1:46 PM, Tim Nevels via 4D_Tech <4d_tech@lists.4d.com> 
> wrote:
> 
> I think you are talking about using CALL FORM and not about workers in 
> general. In the past if you did CALL FORM 10 times to the same form, it would 
> do a redraw after each CALL FORM and thus could cause some flickering. Now 
> when a windows starts dealing with a CALL FORM it handles all the CALL FORMs 
> and then at the end it does a screen redraw. 

**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: 4D World Tour - Denver

2017-05-04 Thread Tim Nevels via 4D_Tech
On May 4, 2017, at 2:00 PM,Cannon Smith wrote:

> I also learned that in previous versions a worker would check for the next 
> message once per execution cycle. Right now that has changed so that the 
> worker will continue executing whatever it needs to empty the message queue 
> all in one event cycle. There are pros and cons each way (although I wish it 
> were the former way), but this can affect UI updating in some cases, so it is 
> good to be aware of.

I think you are talking about using CALL FORM and not about workers in general. 
In the past if you did CALL FORM 10 times to the same form, it would do a 
redraw after each CALL FORM and thus could cause some flickering. Now when a 
windows starts dealing with a CALL FORM it handles all the CALL FORMs and then 
at the end it does a screen redraw. 

Tim


Tim Nevels
Innovative Solutions
785-749-3444
timnev...@mac.com


**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: 4D World Tour - Denver

2017-05-04 Thread Tim Nevels via 4D_Tech
On May 4, 2017, at 12:21 PM,David Adams wrote:

> Thanks for all of the details from your time at the tour, it sound really
> great. I'm happy to see that CALL FORM and CALL WORKER are being promoted,
> that's great. I strongly encourage everyone to try these features out. If
> you can find 30-60 minutes when you've got the feeling to experiment, you
> can master the basic mechanics. Several months later, I'm still sorting
> through nuances ;-) The documentation on the basic commands is excellent,
> although I find the overall 'about workers' page possibly more misleading
> than clarifying.

And this is where the 2nd day of the 4D World Tour and JPR’s presentation is so 
valuable. He spends a lot of time talking about the worker process system. The 
ideas behind how it works. The detail of when things happen. (Example: if you 
open a window and then do CALL FORM before you issues a DIALOG command, exactly 
what happens related to the form events? Not gonna tell you. Go to the 4D World 
Tour and let JPR tell you!)  All this background information is so helpful. And 
because the meetings are small with less than 50 people, you can ask questions 
at any time. 

JPR also talks about “slicing” and “chunking” and why you need to use these 
techniques and provides examples of their use with workers. Important 
information needed so that your finished implementation using these new 
commands is smooth and polished. 

> I'm glad that Tim pointed out that these commands work in 32-bit and don't
> require compilation to execute. I think that these commands may have come
> out of 4D's work on making more of the language pre-emptive. That's
> understandably lead to some conflation of the two subjects. Pre-emptive
> mode and these new CALL commands can be treated as unrelated subjects. So
> if you don't care about pre-emptive, you should still find out about these
> commands - they're a vast improvement over past options.


And for another clarification, you CAN have a worker generate a UI, open 
windows, etc. The caveat is you can only do this if the worker is interpreted, 
or the worker compiled but set to not running preemptively. You only get the 
illegal command error messages when compiling and you have set the method to 
run preemptively. (Reminds me of a Dirty Harry saying… “a man’s got to know his 
limitations.”)

And 4D has had preemptive processes for a long time. They are now exposing this 
existing technology to developers for us to use. An example is the “DB4D 
Server" process running on the server. (And it could very well be that any 
process running on 4D Server with “State” of “Running” is a preemptive process. 
I didn’t ask JPR that question, I’m just guessing here.)

Tim


Tim Nevels
Innovative Solutions
785-749-3444
timnev...@mac.com


**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: 4D World Tour - Denver

2017-05-04 Thread Cannon Smith via 4D_Tech
I also just got back from the World Tour. It was great to see some of you again 
and the information was very helpful. Add had some great demos and JPR shared a 
lot of great information.

One thing JPR helped me understand better is that a worker is basically just a 
process ready to do things. You can actually start a worker process without any 
method at all. It just starts and sits there waiting for you do ask it to do 
something. Maybe not helpful in real life, but knowing that helped me 
understand the concept better.

I also learned that in previous versions a worker would check for the next 
message once per execution cycle. Right now that has changed so that the worker 
will continue executing whatever it needs to empty the message queue all in one 
event cycle. There are pros and cons each way (although I wish it were the 
former way), but this can affect UI updating in some cases, so it is good to be 
aware of.

Thanks to 4D for putting the Tour on!

--
Cannon.Smith
Synergy Farm Solutions Inc.
Hill Spring, AB Canada
403-626-3236



**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

RE: 4D World Tour - Denver

2017-05-04 Thread Justin Will via 4D_Tech
David,

I completely agree!!!  Call Form and Call Worker are really more accurately 
named and described by your naming.

> As a quick heads-up, I think that the most accurate names for these commands 
> are respectively:
> 
> EXECUTE METHOD IN WINDOW
> EXECUTE METHOD IN WORKER

Thanks
Justin Will
**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: 4D World Tour - Denver

2017-05-04 Thread David Adams via 4D_Tech
Tim,

Thanks for all of the details from your time at the tour, it sound really
great. I'm happy to see that CALL FORM and CALL WORKER are being promoted,
that's great. I strongly encourage everyone to try these features out. If
you can find 30-60 minutes when you've got the feeling to experiment, you
can master the basic mechanics. Several months later, I'm still sorting
through nuances ;-) The documentation on the basic commands is excellent,
although I find the overall 'about workers' page possibly more misleading
than clarifying.

Seriously folks, jump in! Make a silly new database with one form and a few
methods - that's all it takes to figure out the basics. After enough people
are using these tools and familiar with their standard behaviors, we can
start to exchange some better ideas about how best to use them.

As a quick heads-up, I think that the most accurate names for these
commands are respectively:

EXECUTE METHOD IN WINDOW
EXECUTE METHOD IN WORKER

They not sending messages in any traditional sense, they moving code into a
different context where it's executed. They're more like an unusual control
structure or a remote procedure call than to a message. Although you can
build a more traditional messaging system on top of these commands. By
"traditional messaging", I mean computer-to-computer messaging, not
person-to-person. (I've been into message-oriented, networked systems
architectures for a long time - like many on this list.)

So, yeah, dive in, try them out and have some fun. They're pretty neat. And
there are some very nice advantages to using workers.

Oh, and just as another couple of technical heads up:

 Any 4D code can *send* using the new commands, but only a window or a
worker can *receive.*

 These are pure calls - there is no concept of a return,
 but you can add a callback if you're coming from a window or worker.

 The concept of the queue is of limited usefulness because we can't see
it,
  control it, or change it in any sort of fine-grained way.

I'm glad that Tim pointed out that these commands work in 32-bit and don't
require compilation to execute. I think that these commands may have come
out of 4D's work on making more of the language pre-emptive. That's
understandably lead to some conflation of the two subjects. Pre-emptive
mode and these new CALL commands can be treated as unrelated subjects. So
if you don't care about pre-emptive, you should still find out about these
commands - they're a vast improvement over past options.
**
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**