Waiting until we have enough submissions. Thank you for your patience.
Sample file will be available after the Day 2 Webinar
"The lean design course was wonderfully helpful, and I appreciate your putting
it on! I listened carefully to every minute and was sorry when each day came to an end. Seldom do
those of us who aren’t professional developers get to enjoy such intense, useful and detailed
instruction from experienced experts such as you and Nick in a way that actually seemed to be
one-on-one! I felt that you were speaking directly to me since the material was surprisingly
relevant and pertinent to my needs. And while I thought I had learned so much during those five
days, going through the online videos now shows me that I actually missed more than I learned! While
the lean design concepts don’t replace the basic foundation laid by your training courses, which I
highly recommend, they extend and enhance in such a way as to become the “cherry on top”! So keep up
the good work of “taking us to the next level” as you and Nick repeatedly emphasized!
Thanks so much for all the RCC does for the FM community, especially for
ordinary folks like me who love FM and need some boosts of expertise along the way to keep up."
- James McAlister
Lean Design - Part 1
Lean Design is building both the interface and backend of a custom app so that the app is highly
optimized. Lean design is about building with “none obvious” techniques to create high performance
During this course we will review high performance techniques for relational design, high
performance layouts, high performance calculations, etc.
We use all these techniques together to create a great recipe.
FileMaker is extremely forgiving. Building things poorly, with little experience by the developer,
will still work. But, they will frequently work VERY poorly when exposed to a lot of data, a lot of
users or Cloud hosting (WAN).
FileMaker is composed of three different Database Engines:
- “Draco” - Database Engine
- Drawing Engine - “Design Surface”
- Scripting Engine - Executes code, and can talk to the other two engines. This allows the
developer to create “Work Flow.” Without Scripts your app has “No Life!”
Nick Pronunciation: “Ma–dat-ory” …. Mandatory
Design Decisions, if they are bad will hurt your development moving forward. (13:20)
- Local files literally have very few design bottle necks. Almost no optimization is needed.
- On Premise Server (a FileMaker Server in the office): Some optimization needed.
Cloud or WAN based server on the internet: Network latency, the amount of data and the number of
simultaneous users becomes large. Lots of design restrictions. Major Performance tuning needed.
The best way to expose problems with the FileMaker Design on an existing FileMaker Solution is to try it
out on a live Cloud server. If you need help with this just email us at firstname.lastname@example.org (22:00)
Button Bar Object + Slide Control Object work well together. (Nick says it’s NOT a ‘Hack’). The
advantage… add icons, have animations, plus support gestures on iOS. Under the hood on this technique is
part 3 and/or part 4. (25:00)
Accordion Tab is a button and a Slide Control together. (29:00)
Vertical Tab Controls. (42:00)
Layout Design History of FM Starting Point. (45:00)
Lean Design - Part 2
• Provides Alternate Login Screen… but uses FileMaker Security System…
• Manages users
• Manages Security
• Manages Audit Logs
• Manages Preferences
LaunchPad Looks like it replaces FileMaker Security. It does not. It captures username and password
and then executes a re-login.
New UI Design called “Slick” (4:30)
Walk Though of the Features of the Launch pad.
LaunchPad will be discussed in “Under-the-Hood“ conversation during the rest of the Lean Design
Real Customer Demo Live customer solution (used with permission). Demo problematic UI design… wrong
How can you determine that you are using the WRONG technique when you build a file? When you write a
script to support the process you start running into a cascading pile of dependencies. (12:00)
Demo replacement Solution - using the LaunchPad Sample file…(13:50)
Hey Nick, why did you build a card style window Instead of a portal? (15:00)
Another Real World FileMaker solution (shown with sample data and permission of customer) (24:00)
WebDirect is the most awesome engineering project FileMaker has created (Nick’s opinion) (25:00)
WebDirect Hates to change layouts and will always result in Flickering. (25:40)
Lean Design - Part 3
• You need a strong sense of organization when you’re a FileMaker developer.
• Schema - Relational Digram needs to be clean. Anchor Buoy is our recommended technique, but this
has been tested as one of the fastest designs. This was as of FileMaker 13 release.
• Feel free to add Emoji’s to Script to help visibility
• Custom Functions are SUPER HIGH PERFORMANCE! (11:00)
• Nick’s Favorite Custom Functions:
• Bytes and Bytes of Remote Containers - adjust file sizes to make them more understandable.
• GetWorkDays - will figure out the work days in between two calendar dates.
• Range - will create a value list.
• WordCode - will return a value list of the ASCII codes for the text put into the function.
• FilePrefix - fixes the import, export, etc. when setting up the file paths which are platform
• GetNumericChar - works to help assist in filtering text that is input into fields while also using
the on OnObjectKeyStroke script trigger.
• How to abort a script that is activated by a Pre- Scrip Trigger (21:00)
• Script Parameter to send in allowable characters (24:00)
• Under the Hood discussion on how to combine Button Bar and Slide Control. Demo uses Red Downtown
• Under the Hood discussion on how to move functionality from one FileMaker file to a 2nd FileMaker
• Button Bars can be made Vertical
• Button bars can have totally different visual designs.
Lean Design - Part 4
• Detecting Double Clicks
• Using Tool Tips can help your customers, but setting them up is boring and a real hassle. Nick has
a tip to make this easier. Clever, Richard didn’t know this one. (10 Min)
• Nick loves to explore and play with the “Design Functions”. He loves the ValueListItems custom
function. (15 Min)
• Nick shows a trick to easily find merge fields without drilling down through TO’s, etc. (20
• Under the Hood with “Accordion Tabs”. (21 min)
• Image Masks (31 Min)
Lean Design - Part 5
• Boolean Values in FileMaker … zero or one (6 min)
• POV or Programatic Object Visibility Hiding Objects and Adding a “NOT” to a statement or
calculation (8 min)
• LET Statement (12 Min).
• In a Calc - Every time a field is referenced (or a function) it is “collected” by the Draco engine
which takes time to do. Better to grab all the needed elements ONCE, which saves speed and time. (19
• Using LET to evaluate a calculation that references today’s date. (23 min)
• No Unstored Calculations, but Nick likes Auto Enter Calculations. (31 Min)
• Data Calc that need Get(CurrentDate) should have a date field, set manually by a script once a
day; Ideally by PSOS or SASE with Server. (38 Min)
• Use Replace command as opposed to a loop with a set field. (42 min)
• Replace command is highly efficient, especially if run by Server with Server Assisted Script
Execution on a schedule (SASE). PSOS is deliberately called by FileMaker Pro, it’s not a
• Replace Command operates very different on Server than Client, specifically in terms of
performance. (45 min)
• Magic of Auto Entry Calculation…IsEmpty(Self). (46 min)
Lean Design - Part 6
• Auto Exit Calculation (About 3 Min)
• Ability to populate Global variables with a LET function that is executed as an “Auto Exit
Calculation” or AEC. Scripting is NOT required.
• Don’t use this technique with Related Data because changes to related fields will not trip a local
auto enter calculation.
• How to easily create a functional Back button (11 Min)
• Nick’s Sticky Notes show only for developers in layout mode, and NOT in browse mode. (13
• Showing all records in a portal if none of the filters are selected, driven by auto enter calcs
• Multi-key Relationships (29 min)
• Create your own Index for High speed relationship processing through a custom function.
• It is a “Terroristic Function” Nick Said… actually he meant to say “Tail Recursive
Lean Design - Part 7
• QuickFind - QuickFind can destroy your performance if you do not use it correctly. If you leave
Orange Flags in your QuickFind, you will kill your performance. (8 min)
• QuickFind in the a Script gives you direct access to the Calc engine (12 min)
• Demo of how slow a Find can be… slower. Multiple lines in a QuickFind, create a “multiple AND “
request NOT a “OR” request. (16 min)
• QuickFind will target fields that are also hidden in a none visible area on the side of the
layout. (20 Min)
• You can totally turn QuickFind off for a layout if you go to Layout Mode then select LAYOUT >
LAYOUT SETUP - then uncheck the check for QuickFind. - RC (23 Min)
• Benefits of having object that are partially off the layout on the right side. It is good for
managing hidden object before the OBJECT TREE. (24 Min).
• Summary Field (List of) Option Selected. (25 Min) This summary field ONLY works on the current
table… and ONLY for the current found set. The data displayed will be re-organized if the sort order
of the found set is changed. WOW!
• SQL is not faster than native FileMaker code. SQL is popular because it allows you to generate
reports or collect data without creating any needed relationships. SQL can bring back data based on
relationships which do not really exist. No schema needed. Nick doesn’t like it. He prefers Lean
• Time to learn PSOS. Perform Script on Server. When activating PSOS, it is important to know the
context of the Pro or GO Client that activates it.
• Scripts running directly on Server are MUCH MUCH faster than running the same receipt remotely on
FileMaker Pro or GO. (Generally…400% faster …at a minimum)
• Before running PSOS we need to pass the information needed for PSOS to work via a Script
• Do not swat a mosquito with an Atomic Bomb - Nick
Lean Design - Part 8
• Relations can be based on MultiValue. (4 Min)
• Add that to the ability to generate a list of primary keys from PSOS and hand those to the client.
• Load the Primary keys into a Global field that drives a relationship.
• Then run the Go To Related Record command GTRR to limit the founds set to the ID’s returned by
PSOS. (5 Min)
• SASE: is Server Assisted Script Execution similar to PSOS. SASE is set up on the FMS or FMC as
part of a schedule… the same way a backup is scheduled. (6 min)
• Performing a “deep” PSOS. (11 Min)
• Create Records at high speed for the client using PSOS. (15 Min)
• Using Looping to Create new records is EASY but Slow. INSTEAD, Export a set of the records that
you need, then perform an Import using PSOS. This creates the records fast.
• You can write your scripts so that they will call PSOS, if PSOS is available. Otherwise the Script
runs locally. Nick built this capability into the same file.
• Debugging PSOS - Nick wrote his own log, that writes as PSOS processes. (20 Min)
• Nick built the FM Error codes into the Launch Pad Sample file. Durations are logged in
Milliseconds. (23 min)
• How Debugging Works, tracking performance is also useful.
• Nick is using a lot of Globals to drive the GTRR relationships in other areas. Keep the data in
your local table so your not looking at it through 4 relationships.
Lean Design - Part 9
• How to use Portal Filters properly. (3 Min).
• Using the Filter in its most basic method, it really limited the usefulness (using the equal
sign). Using the “PatternCount” function extended the flexibility. (5Min)
• Use the Let Statement to make the calculation more organized and easy to understand. (8
• Use the List function to help assist creating lists for finding relationships. List
Function can give you a list from items in a related table. The List function is VERY fast
and helps speed things along. (12 Min).
• That's “Guess work” not “Gas Bomb” …LOL. (13:34 min)
• Beginning conversation and using multiple files without using relationship between files.
• Showing Card Style Windows in file A when the Card Layout lives in File B. (36 Min)
• PSOS and SASE are faster for a number of reasons. One reason is that there is no “rendering
• On window size change trigger. (41 Min)
Lean Design - Part 10
• The tech you use must be supported by the design you use. (1 Min)
• “Directed Work Flow” conversation… but Nick doesn’t call it directed work flow. (3
• Nick pushed the FileMaker Engineers to add needed features.
• You need to “think design” as a Strategy. (4 min)
• Use Card Style Windows as a Strategy to prevent flickering. Instead of screen flashing the
cards basically show progress dialogs. (7 min)
• Alternate Log-in Strategy using Launch Pad file with WebDirect. The EB5 sample file is NOT
available to video watchers. (14 min)
• Trusted users can use WebDirect. For licensing reasons, FileMaker Inc. does not like
customers to use WebDirect for anonymous public facing access. (20 Min)
• ASCII Table - detecting characters. (35 Min)
• Using Range Function to generate ASCII ranges for characters to detect. (38 Min)