by Peter Vinogradov

Reflections from Exile

In the season finale of “30 Rock”, Jack Donaghee (Alec Baldwin’s high-powered executive character) suffers a heart attack, clutches his chest and cries “Ride it Donaghee! Ride it straight to hell!”

In an effort to avoid a similar fate, I recently took a week of exile from work (pretty fancy term for “vacation”, no?) and went to a location where the only internet access was dialup. Before I left, I opened my “trip packing” database, checked off the boxes for “cold, relaxing, sun” (I was going to Canada), unchecked the box for “work” and set the “willingness to smell” field to a value of 9 (out of 10). I printed the resulting packing list and closed FileMaker for a whole 7 days, possibly the longest for me in three years.

That gap gave me some time to reflect on a number of nagging personal questions. For example: “Do I want to quit my day job and be a fulltime consultant?” or “Which will ultimately be a bigger letdown: iPhone, FM9 or the Heroes finale?” One such reflection was on the issue of my various FM workarounds and techniques.

I am a big admirer of developers who spit out technique files and custom functions whose utility are matched only by the simplicity and elegance of their approach. “What’s that? You want self-documenting contextual help menus on all your layouts. Why presto! Here’s a two line startup script that will do exactly that…etc.”

My own techniques, by contrast, tend to address the most oddball situations with the most epic ensemble of steps and components. Earlier this year, for example, a school I consult for wanted to revamp their student reports in the lower grades. They wanted space for subject narratives along with checklist items tailored to specific subjects and grade levels. This was familiar turf for me, so I wasn’t sweating it… yet. As we got into it, though, it turned out the school really wanted to be able to display the checklist items in multiple, balanced columns, they wanted individual items to be able to wrap to multiple lines, and they wanted absolutely no whitespace. The issues here may be obvious, but I’ll spell them out: the checklist items exist in a related table, which means I could either build the layout with portals (and kiss the word-wrapping/sliding goodbye) or build the layout on the checklist items table with subsummaries for all the report parts (and kiss the balanced columns goodbye). I have taken both approaches for other clients and projects.

pseudoportal example

Now, these are longtime FileMaker users, and I had been clear with them that they may have to live with certain limitations, but when it comes down to it, I hate having to break it to a client that between me and FileMaker, someone’s about to come up short. So, I gave them my usual “let me play with it and see what I can do” and then set about finding a workaround. After a day or so, I worked out a way to use repeating calc fields to draw in the related data, and these behaved miraculously well in terms of sliding (btw – anyone who feels like dissing repeating fields really needs to keep it down until FileMaker dramatically improves their print offerings). If anyone is curious about this technique, I’ve put a file here: http://petervinogradov.com/TechniqueFiles/PV_PseudoPortals.zip )

To be clear, this method is far from ideal. When I generate a student report from my location, I can actually hear their server whining about it from 100 miles away. Still, the client was happy and I was just left having to figure out how I wanted to bill it. See, I’m a big fan of spiral development, but when things like this come up my spirals tend to take on a shape that would do Salvador Dali proud. As much as I don’t like telling clients that something can’t be done, it feels almost as bad telling a client that something seemingly trivial took an ungodly number of hours to accomplish. But I guess that’s fodder for a different essay.

I’ve hacked my way through many workarounds like this, and usually, I get to a point where I start to wonder whether to keep going or whether it’s time to cut my losses and turn back. Just how many plug-ins, custom functions, scripts and “utility tables” does it take to bring me to that point? Well that depends on a lot of factors, including client personality, sleep, caffeine levels, and that ubiquitous parameter, “willingness to smell”.

For a while now, I’ve been dabbling with “session model” architecture, which is basically where you have all your action take place in a “sessions” table, and hook out to your database by setting various key fields. While I won’t go into detail about my specific approach (the good people at DevCon certainly didn’t think I should…grumble…grumble…didn’t want to go to their stupid conference anyway…etc. ), I will say that it has a certain style that appeals to me and has enough compelling advantages that I decided to take the plunge and apply it to a number of big projects.

RG from a “Session Model” project

Now, unlike the sliding portal workaround, which has a discernable plug that can be pulled at any time, the decision to build an entire interface around a non-standard architecture required a pretty big leap of faith and a commitment to live with whatever limitations emerge. For one thing, session model architecture (at least my peculiar version of it), pretty much tosses out simple access to certain FileMaker fundamentals, like the flipbook, basic find controls, list view, etc. While I’m willing to live without these features (and the havoc they can wreak in the hands of uninitiated end users), there are times when I really miss them and the wonderful simplicity of what I now call “old school” FM development.

And so, since my exile, the question I keep returning to (along with a bag of maple leaf cookies) is, “am I really doing my clients a favor by designing this way, or would they be better off in the long run with a more standard design approach?” I guess I won’t really know until I’ve lived with it for a while and built up a larger time log that I can study. Until then, I suppose it’s a matter of celebrating the stuff that feels especially easy and living with the stuff that feels needlessly complicated, even if it involves clutching my chest from time to time and telling myself to “ride it straight to hell!”

Comments

2 Responses to “Reflections from Exile”

  1. admin on May 30th, 2007 7:14 pm

    Old School FileMaker development, *chuckle*, I like it.

  2. Timothy Trimble on July 10th, 2007 1:16 pm

    I agree with the “Old School” statement. I also think that the “Session Table” approach is good when it comes to generating dynamic results. Though, I sometimes prefer to just use a couple Finds, set a flag, and display only the data with flags. Just depends on the performance and if I want to support another table or not.

    Timothy Trimble
    Author, “FileMaker Pro Design & Scripting for Dummies”
    http://www.timothytrimble.info

Leave a Reply

You must be logged in to post a comment.