Jump to content
Sign in to follow this  
Ugo DI LUCA

Under the hood question

Recommended Posts

Hi,

Despite some information at the latests DevCons, I'm still having doubts about how really data is moved from the host to the local client.

Very concretely, I'm having hard time determining why in certain circumstances, my solutions are quick and in some others very, very, drammaticaly slow.

At one point, and that's where I am now of my conclusions, I have a tendency to believe that the whole data environment is "downloaded" to the client whenever it is needed. Fmi states that what is useful is downloaded at once to the local temp file, but I still don't get what exactly is passed to the client.

From my experience and understandings, I would say that everything necessary in the evaluated context ( data and related data ) is passed, which would then explain while it is so slow when using A/B ( anchors & Buoys ) where everything gets transported to the anchor. But is that it ? What if I change a firstname on a record, what gets downloaded exactly ? The record, the changed data, the whole record and all data necessary for its calculations and evaluations ?

Thanks for any input or debate, I would like to see the light and determine a design strategy for my layouts and relational structure.

I already moved miles away from A/B, implementing real bi-directional relations and using layouts for what they are designed for, multiplying table occurrences anchors within a same TOG, separating calculations from the rest of the data in order to lessen recalculations and evaluations. Since I did that most of my apps are behaving correctly now, which helps me think that the more a context is busy.

With respect for users and other developers with whom I was lately commenting about these strategic moves, I would like to argue with more that simple impressions.

So, anybody here with some information is welcome to "debate" or contribute to my current doubts, with this central question. What is really passed to the client, how and when does it happen ?

Thanks. I hope this will help others in their approach to developing, I thought this forum was the right place for such a discussion.

Ugo

Share this post


Link to post
Share on other sites

I already moved miles away from A/B, implementing real bi-directional relations and using layouts for what they are designed for, multiplying table occurrences anchors within a same TOG, separating calculations from the rest of the data in order to lessen recalculations and evaluations.

Could you talk a little more about this? Are you saying you use separate TOGs for calculations than for layouts? How do you structure your relationship graph?

Thanks,

DJ

Share this post


Link to post
Share on other sites

Ugo It's hopefully needless to direct you to these?

http://fmforums.com/forum/showtopic.php?next_end/1/fid/91/tid/174479/

...or this debate on the content of the White-paper?

http://network.datatude.net/viewtopic.php?t=102&highlight=debi

Honestly have I never really fancied to read it thoroughly. But it's interesting that you find that Anchor/Bouy slows down things.

--sd

Share this post


Link to post
Share on other sites

Hi,

May be one day I will do a workshop in Brussels if you want to attend, I dont't have enough time on my hands to complete the White Paper I had started on the subject :

Basically, while I swear I'm still using A&B for some small projects, I moved from this approach rather quickly as it didn't addressed one of the main goal I had targetted since FM7 was born : Modular Design.

A&B is like using pedals with a motorcycle, it's just counter efficient and not adpated to FM7 relationships. By killing bi-directions, we're just refusing what probably was the major advantage brought by FM7 relational architecture. By centring everything on an anchor, we favor Layout centric design, and forget about what an application really is, logical.

So, yes, I'm using TOG of course, and I feel like a stupid when I say so. With so many concepts around, everything other than A&B would in every developer's mind leed to a spaghetti plate. And while I surely love this plate at any sauce, this is not my favourite for programming as well.

Of course, it's still impossible to implement clear modular design with FileMaker, copying a whole context with its tables and relations is still one of my dream. Nonetheless, script groupings and table copy feature helps a lot in advancing up to this stage.

One quick summary of what I'm doing that's different of what A&B is. Following Mike Harris white paper, word by word, may be even more than what he says, by considering TOG, not only as a context, but as a Data Environment, and in my case a logical Data Environement. Which finally, with some more description, that what is sales is completely separated from purchases, but that I don't handle them only based on tha Sales and Purchases tables. All what is related to a sale is tied to a "sales" context, where several TO's are used for Layouts, where direction is not determined by the developer lazyness or narrowminded ( starightminded ? ) old fashioned FM6 approach - volontarily excessive words...Am I rude Mr Frank, please Kevin I beg your pardon if so, you can still use repeaters, you know I love them too :) -but by the business logic.

And yes, separate TOG for calculations so that evaluation does not take place on the Interface layer. This probably lead me to add a couple of To's, but I'm still 40% down from what A&B and its duplicated context offers.

This approach allows the app to evolves according to the business ( client ) needs, as the basics of any modularity process. Well, that's what I'm doing, not sure it was really the time to give details here, I'm just satisfied with it.

But still waiting for answers on what exactly is brought to the client, when and how. And not only for finds for sure.

Thanks again for any input on the subject, and sorry if this seems more related to database relation theory. This wasn't the goal. I need some mechanics around to tell me what my engine is done with :

Edited by Guest

Share this post


Link to post
Share on other sites

Hi Ugo,

This is a topic itching for dissection. It makes me itch anyway.

Being a novice, I was quick to take available advice and switched to A/B, but it felt wrong having to duplicate relationships to recreate bidirectionality that was already a strong point in FM's design!

I have continued to use (attempt, anyway) the Anchor-buoy approach because it is a good crutch for me. It has taught me to separate features out in a way that allows me to learn how to use filemaker. It limits the variables of what could be going wrong with my structural decisions in the obvious manner of separating those decisions functionally. This thinking led me to instinctively separate out TOGs for calculation context.

But is that really what I want to be doing forever? Will that still be useful, or as useful, when I am an experienced developer?

Does anyone know of a reason why A/B is useful besides simplifying a tool that is just too powerful for our human organizational skills?

I mean, look at the solutions you design and think about how much you trust your users-how much control you give them. Ask questions like: How many ways of performing a task do I give them?

Just comtemplating that I turn around and think "Did filemaker overestimate our abilities?" with the RG? It's so tabula rasa!

And is that first link Søren gave still the way FM operates? I thought they changed that? It's scary!

And the second one needs cliffsnotes! Ok, I just need to take the time, but still. Søren's always casually throwing out links that make me LEARN scary, important things!

matthew

Share this post


Link to post
Share on other sites

Hi,

Interresting point of view indeed.

Of course, A&B bring, some simplifications in our way to think and implement relations. That's probably its main advantage, but it can become problematical when one forget that logic must be placed ahead any habit.

Though I would not conclude that A&B is simple when I see how my RG explodes anytime one request is added. Sometimes, I have the feeling I'm building a chemistry plant.

One would argue A&B is easy to read as well, specially when it comes to debug process. IMO,readability is just a matter of conventions and documentation.

Again, I am a daily user of A&B as well, it just depends on the project, the same way you can recommand one tool rather than another.

But whatever the scheme, the question remains. What really gets a solution to be quick or slow, what are the effect of TOG surfing and what exactly is loaded to the client when the user navigate from a context to another. Is it tied to what's on the layout, what's on the Table, what's on the whole context, what's changed on a record ?

If we can't get direct answers from fmi, may be some here could comment with their own experience.

Thanks again

Ugo

Share this post


Link to post
Share on other sites

It have striken me that I, well not deliberately ... ignore the use of "Evaluate this calculation from the context of:" but it seems like A/B diminish the use of it!

Another thing is the continuation of GTRR bug'ish behavior, both of which might tell us something about engineers in FMInc and the developers being in different solarsystems.

Well I'm willing to admit that my first example might say more about me than the tool!

--sd

Share this post


Link to post
Share on other sites

Hi Soren,

Indeed, this is probably the central problem.

What exactly is evaluated, when and how ?

If no calculation TOG has been set, A&B would concentrate any evaluation from the Anchor's context. Very practicle indeed and again some simplification brought to the developer. What consequence such a strategy have ?

This depends upon when it is evaluated. Because if this calculation evaluated in context B is dropped on a layout from context A, what happens when the window is redrawed and calculations refreshed ? And what if many calculations evaluated on other contexts are dropped to this layout ? This mixture of context evaluations must have an impact, don't you think ?

And what really happens on refresh window ? Is it that only those calcs on the window are refreshed ? Only those visible on the current tab or any data on that Layout ? Or is it that I'm talking about refreshing issues only but that every calculations necessary for the whole context is evaluated at once ? If my calculation in context A uses the result of a calculation from table B evaluated on context B, there's surely a big flaw of data involved, isn't it ?

By separatig context in more logical manners, only what is necessaty should be evaluated, that's my thinking today, and why I started with this new grouping strategy ( with many calculations contexts, symetricaly "tied" - not strictly related- to the Group ).

But I may be wrong. And as outlined on a private discussion with Fabrice Nordmann, what about tooltips, specially those calculated ? These are yet again another source of evaluation dilemna when designing interface.

Well, that's all for now, I think every idea bring another question here.

About the GTRR features, are you saying FMI designed a tool without thinking how we would use it at the end ? Optimizing it fro a fully bi-directional mono file system ? I'm not far from this conclusion too, even if all the bugs reported by Fabrice lately ( By the way ) may bring other answers and questions.

Cheers

Ugo

Edited by Guest

Share this post


Link to post
Share on other sites

FMI designed a tool without thinking how we would use it at the end ?

Exactly! How often aren't we in the same situation ... the customers ingenuity to think up possible flows we even havn't thought about, that actually utilize the app even better or in different way of what we expected.

It's not the first time filemaker have been caugt by this ingenuity, 5-6 year ago came someone up with the idea that the web-interface could be used for other purposes than online databases. A whole line of connector tools arrived:

https://www.productive.cc/pci_cart/FMPro?-db=PCSC_Products.FP5&-Format=productshome.htm&-Lay=CGI&-View

Using the fact that most Windows dealings are browserbased, this was ... FMI havn't forseen this!

May be one day I will do a workshop in Brussels if you want to attend

Sure!!!! If resources etc. allows!

--sd

Share this post


Link to post
Share on other sites

While we're at it, do you see the same kind of problems with the utilization of the separation model, where the calc'fields all reside in the datafile, and the A/B'ing makes less of a point due to the lac of dedicated layout to anchor by???

--sd

Share this post


Link to post
Share on other sites

Things have developed here, the entire thread have by me been tried to get more responses, by a transfer to a forum/list where say the normalization issues are less troublesome, these people does such matters by instinct.

http://www.nabble.com/Under-utilization-of-the-context-drop-down-tf4889022.html

Unfortunately isn't the server that serves FMExperts utter reliable, and we are without messages sometimes a fortnight. So Steven Cassidy re-raised my thread here:

http://www.nabble.com/Under-utilization-of-the-context-drop-down---was-%22Experts-list-%22--p14103684.html

...where I continues my endevour to dip deeper in this issue, in this thread:

http://www.nabble.com/Re%3A-Under-utilization-of-the-context-drop-down---was-%22Experts-list%22--tf4928000.html

--sd

Share this post


Link to post
Share on other sites

Perhaps when wrapping this thread up, is it worth to mention Corn's comments to this:

http://www.nabble.com/Re%3A-Under-utilization-of-the-context-drop-down-p14177505.html

...as well as the test Ugo had made to establish some kind of meaning with this:

http://www.nabble.com/Re%3A-Under-utilization-of-the-context-drop-down-p14210821.html

--sd

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Similar Content

    • By Justin Close
      I was doing a bit of work for a client who is running FM9 clients, connecting to a file hosted on an FM11 server.  I don't have FM9, so was doing development on FM11.  I thought I had checked out that everything was compatible, but I somehow generated a calculation that doesn't evaluate on 9, but does on 11.  The components of the calculations and custom functions used all appear to be innocuous...  I  am hoping someone here knows what I tripped up on.
      Here's the field calculation, and the 2 custom function definitions that it uses.  The entire point of this calculation is to take a mish-mash text field that they have and make it sort nicely.  For this bit I added, I'm just concerning myself with sorting some suffix numbers that occur between parentheses, e.g. 12345(A-1).
       
      Field calculation definition: Let ( [ _fileNum = Files::File Number ; //Position of 1st open/close parens, and then extract the text between them: _sParen = Position ( _fileNum ; "(" ; 1 ; 1 ) + 1; _eParen = Position ( _fileNum ; ")" ; 1 ; 1 ) ; _suffix = Middle ( _fileNum ; _sParen ; _eParen - _sParen) ; //Count the leading digits before any non-digit character, e.g. an alpha, or dash or space, etc. _count = CountPrefixDigits ( _suffix ; 0 ) ; //Remove extraneous characters (dash, space): _suffix = Substitute ( _suffix; ["-";""]; [" " ; ""] ) ; //Pad out the string to min 5 characters (helps 75-A sort next to 75): _suffix = _suffix & Left ( "!!!!!" ; 5 - Length (_suffix) ); //Reverse the character sequence (so the Code() call works out better): _suffix = ReverseString ( _suffix ) ]; _count & Code ( _suffix ) //prepend the digit count, but don't encode that count, just the rest of it ) -------------------- 'CountPrefixDigits ( aString ; aCounter )' custom function: If ( IsEmpty ( GetAsNumber ( Left ( aString ; 1 ) ) ) ; aCounter ; CountPrefixDigits ( Right ( aString ; Length ( aString) - 1 ) ; aCounter + 1 ) ) -------------------- 'ReverseString (aString)' custom function: If ( Length ( aString ) > 0 ; ReverseString ( Right ( aString ; Length ( aString ) - 1 ) ) & Left ( aString ; 1 ) ; Left ( aString ; 1 ) )  
      Thanks,
      Justin
       
    • By Tumma K
      Hello, All!

      I am an aspiring developer for Filemaker. The company I work with is stuck in the past working off of Filemaker Pro 4.1

      I was given the task of bringing us up to Filemaker Pro/Server 13. So far my conversion prototypes are successful but we recently had a layout issue that can only be fixed in versions 3-6 (as the file is an .fp3) I work off of a macbook while our network is all Windows 7. In order for me to repair the layouts without tampering our active database, I decided the best option is to repair a copy of our solutions off the network. Unfortunately, when I go to download the trial version of Filemaker Pro 6 off of the respected website, the file is corrupt! I've tried multiple times, with different extraction apps and in different directories.

      My question is;

      Does anyone know a place where I could obtain version 6 (or better yet, 4.0) for an OSX computer? I've looked everywhere!
       
      Thank you for your time,
      Tumma K.
    • By MacSig
      Hello everyone.
      How can I set the calculated value of field C to the number of records having field A equal to the value inserted to field A and field B equal to the value inserted to field B?
       
      For instance with the following situation
       
      record 1  =>  A = "house", B = "pay" 
      record 2  =>  A = "house", B = "win" 
      record 3  =>  A = "car", B = "pay" 
      record 4  =>  A = "house", B = "pay" 
       
      when I create a new record having  A = "house", B = "pay"  C should automatically be 2 (since record 1 and 4 have the same A, B.
       
      Thanks
    • By MrEddByrnes
      I'm hoping my question can have a happy ending. In the mid-90's, I purchased Filemaker 3. When Filemaker 5.5 Pro was released, I bought the update CD, which requires the user to either have FM 3 installed or to have the installation CD for FM 3. I've used it all these years, most recently with Windows XP Pro, and it has worked just fine. The databases I began with were long ago converted to FM Pro 5.5 databases.
       
      I'm still using FM Pro 5.5 on a laptop with WinXP Pro, but in 2013, I purchased a PC with Windows 8. I haven't been able to install FM 3 on it, therefore can't install FM Pro 5.5. I am retired and rarely use Filemaker, but I have a few Filemaker databases I'd like to add to my Win 8 machine. I don't feel it's worth upgrading FM for the sake of using a couple of databases.
       
      Has anyone else run into this situation and/or have a (possible) solution? Is there perhaps any other software that can read FM 5.5 databases? Thanks in advance for your help.
       
    • By bmill
      I am using a custom filemaker solution for medical office billing written with fp5 running on a mac with snow leopard. In addition, I have a patient management db (which I wrote) that is linked through pt. ID number to the billing program allowing transfer of some demographic information (name, DOB, etc).
       
      Other than being limited by hardware restrictions, the billing program serves our needs for now and upgrading to fp12 will take some time (and money).  In the meantime, I am upgrading my pt. management program to fp13 and would like to move new patient demographic information from the billing program ( fp5 running on snow leopard through Parallels) and the new pt management program ( fp13 running on OS X 10.9) on the same mac.   
       
      Ideally, demographic information would be entered once into fp5 and then a scipt would make the data available for fp13.
       
      Any ideas on how to make this work?
  • Who Viewed the Topic

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.