A Human Approach to Education

I need your help.

As some of you may know, Geist Interactive has been very involved in the founding and support of One Spark Academy, a non-profit learning center for middle aged school kids here in Thousand Oaks CA. When my wife, Lori Peters, and I founded One Spark in the fall of 2011, we had just seven students and the strong belief that education is a human process, not an industrial one.  Now two and half years later, we are getting ready to celebrate the closing of the 2013 fall session. Since our opening, more than 75 kids have had the chance to learn with our small, holistic, human approach to education.

Read more

MasterDetail and Record ID

Daniel Wood suggested a rather interesting idea on how to make HyperList and MasterDetail even faster.  In short he suggested using FileMaker’s built in record ID instead of the primary key.  Its really rather brilliant and turns out to work quite well.  You can read his full explanation over at Modular FileMaker. Its in the comments for HyperList.

I thought I would give the idea a try with a very large record set to see if it speed things up.  Well it did.  Here is the video to prove it. Enjoy

SeedCode Subscribe

Update 08/07/16. SeedCode Subscribe is no longer available for sale

Things have been so busy wit the run up to DevCon I didn’t get a chance to talk about the new product that just launched with SeedCode. It’s called SeedCode Subscribe. It’s a simple way to get your FileMaker data to appear in just about any calendar app out there. It works with iOS, OSX Calendar, ,iCloud Calendars, BusyCal, Google Calendar, even Outlook 365.

Read more

What Does GetField(fieldName) Return?

FileMaker’s GetField() function has always been struck me as a curious beast.  Every since it’s release back in Filemaker 5.5 or there abouts I had assumed that it returned the contents of the field specified by the parameter.  But there were a couple of cases where it didn’t work that way and I’d get fooled every once in while.  I didn’t quite understand what was going on.  I think I finally stumbled on an easy way to keep it straight. Read more

Master Detail mFM Module

Master Detail is mFM module that provides a master detail view for any table in your solution.  It uses the virtual list technique to reproduce the found set in a portal.  This lets you create any kind of layout that combines a list and the detail together on the same page.  Its very flexible and very powerful.

  • Works on any found set
  • Uses normal FileMaker sorting order.
  • Handle 10s of thousands of records.
  • It works on FileMaker Go and FileMaker Pro

You can read more about it and download the module at ModularFileMaker.org. Here is a video that goes through some of the features.


Introducing modularfilemaker.org

It has long been difficult to share code in the FileMaker world.  Traditional FileMaker coding styles made it difficult, and I think many of us old school FileMaker Devs still have pieces of “6 think” burned into our brains.  As a result we never really developed the techniques or the culture that encouraged the sharing of code.  However, recent versions of FileMaker have given us some new tools which can help us write code that is easier to share. Now we need to build on these new tools to further refine and develop the techniques, and built a culture and community centered on the sharing of FileMaker code.  A new project and website, ModularFileMaker.org, is dedicated to that purpose.

Code re-use is not a new problem. But attempts to solve it in the past have often lead to large monolithic frameworks.  These one size fits all, everything in there including the kitchen sink frameworks, have not been widely adopted outside of development shops that created them.  I think the reason is simple.  In order to use any of these frameworks, a developer has to adopt the entire FileMaker mindset of the developer who created the framework.  Thats a lot to ask.

ModularFileMaker.org avoids the “too big to adopt” problem by being very small, and very focused.  It provides a documented guideline for building and sharing small re-usable chunks of FileMaker code.  It focuses on solving only the problems that inhibit sharing. Everything else is left to the developer.  It has no solution wide naming conventions, graph organizational models, file architectures, or any other opinions on issues that don’t impact sharing.

We call these chunks of code, “modules”  or “mFM Modules” ( ModularFileMaker Modules ).  mFM Modules provide features like Navigation Bars, Transaction Frameworks, search utilities , SQL helpers, etc.  These are all below the level of application or solution.  Essentially any re-usable feature can become a mFM Module if it is organized according to the guidelines.

The website is now live. There are already several freely available modules just waiting for you use and improve. Hopefully, if the community gets inspired, someday maybe there will be hundreds of modules to choose from.  Check it out!

Unit Testing in FileMaker

Unit Testing is the practice of  testing individual chunks of code to make sure they are working as designed.  Ideally it is done with a single click of a button, so that you can do it all the time.  Traditional FileMaker coding doesn’t lend itself to this practice very well.  It’s just too tightly coupled.  But if you take some time to organize your code in a modular way you can start to incorporate something like Unit Tests into your development practice.

First you need to separate out the logic you want to test into well factored API like scripts.  These can take parameters and they usually return a result.  The main point is that you give these scripts the power to do what the need to do to your database, and you make sure that they report back if they fail or not.

Once you have your API scripts laid out you can the write yourself a bunch of test scripts that exercise those API script and make sure they are doing their job.  I put my Unit Tests in a separate file so I don’t clutter up my deliverable files. Then as I go along writing code, I periodically go back and run all the scripts. When I do something that cause my tests to fail, I can see it right away.  I know what test broke and hopefully I get some kind of error that might help tell me how it broke. From there, its relatively easy to go about fixing the code.

Here is a movie that shows what that ends up looking like.

Speaking at DevCon 2013

DevCon 2013 is coming back to California. YAY!  It will be August 12th – 15th in San Diego, California. For more information, visit the conference web page.  DevCon is always a blast.  Lots of great tricks, tips, and techniques from the best FileMaker heads from all over the world. I’ll be giving two talks this year, on the first and last day.  I hope to see you there.  It’s definitely worth the trip.

Here are my session abstracts

Writing Modular and Reusable Code

2:00 PM – Tuesday -8/13/2013

Code reuse is a central tenant to application design. We need methodologies that allow us to share our code within our solutions and amongst our fellow developers. We need to spend less time rewriting or copying and pasting code, and more time building new features for our solutions. We’ll pick up where last year’s “Reusable” session left off. We’ll take a look at some new examples of how to make our code smart enough to figure out what it needs to do, and how to give other developers clear and easy ways to reuse your code. Finally, we will propose some simple conventions to organise FileMaker code into identifiable modules.

What You Will Learn

  • How to design a reusable, portable module or feature
  • How to organize your code into logical units
  • How to use the latest features of FileMaker to make your code simpler to use
  • How to make your code smart enough to figure out on it’s own what it is supposed to do

Understanding Data Binding: What it Does and When and How to Safely Break it!

3:45pm – Thursday – 8/15/2013

The data binding of FileMaker Layouts to data tables solves several common database problems and is a significant part of what makes FileMaker based solutions faster to build. But, because it also imposes some restrictions on development and maintenance of complex solutions, developers naturally look for ways to break free of this tight coupling. But before we go about breaking it, we need to understand what it does for us and how it works. We are going to delve into data binding and what it does behind the scenes to keep our data safe. We’ll learn how to use it to handle some complex database problems, and finally we’ll learn some techniques that can help us break free of that binding when we must.

What You Will Learn

  • Why is FileMaker data binding such a big advantage
  • When does data binding occur, and when does it not occur
  • When and how to safely break data binding
  • How to correctly handle binding problems such as record locking

FileMaker Addict Interview

Tim Dietrich interviewed me for FileMaker Addict.  You can read it here.


GoZync Hilite Reel

Update!  this is full of some pretty rich language and general goofiness.  If thats not for you then you probably shouldn’t watch it

For more information about GoZync, visit GoZync’s website: http://www.seedcode.com/gozync