Love this little demo we put together for FileMaker DevCon 2009. A customer recently asked about this and I thought folks might like to see it. The demo shows how to create a grid of buttons without having to use different script parameters on all the different buttons. It’s also a tidy example of scripts used in drag and drop.

Enjoy!

CellDownload “Drag & Drop Example File: Airplane Seating Demo” from www.seedcode.com/downloads

Oh, and check out that cell phone icon on About / Contact Us… it was 2009, LOL.

 

Using time words

Projects wander. Customers have unreasonable expectations. We make promises we can’t keep and that our customers misinterpret. Yet a simple grammar hack may help curb all of this.

Consider the difference in clarity between these two versions of a project’s “next steps” we might send to a customer:

“The project would cost $X,XXX and take about two weeks. We’ll also need your high-res images.”

Versus the clearer version:

“The project would cost $X,XXX. After we receive your payment and high res images, the project will then take us about two weeks.”

The words “after” and “then” make a huge difference. Include a payment link with the second version and the customer clearly knows what’s expected. Send the first version, and you’ll email back and forth a few more times before you get started. An even clearer version would be:

“The project would cost $X,XXX. After we receive your payment and high res images, the project will then take us about two weeks. If you can get the payment and images to us by 2pm Monday we’d be able to deliver your project the morning of the 21st.”

Time words are those that put a pin in the temporal map–day names like “on Monday” and times like “by 2pm”–as well as words that describe sequences in time: “before” “after”, “until”.

Communicating *without* time words is like sending someone a madlibs version of your plans

Sentences that include time words create a more explicit story about what you’ll be doing for someone or what you expect them to do for you. Lacking these words, people will fill in the gaps in the story you’re telling with their own specifics. Folks will also fill in their own details if you use vague time words like “soon” or vague calendar names like “next week” Our minds like to solve puzzles and finish incomplete stories. So communicating *without* time words is like sending someone a madlibs version of your plans.

70251Telling someone you’ll reply to them “next week” is a similar problem. Your type-A contact who has a high need for social inclusion may interpret that to be “as soon as next week begins,” meaning Monday morning. While I, perhaps more given to procrastination, may figure I’ve given myself until Thursday or Friday before I’m breaking my word by not replying yet. That gap between our two interpretations leads to disappointment and to stress: I know I’m disappointing my contact less if I reply earlier in the week and displeasing them more if I reply later in the week. Carrying around five or six such vague obligations–where the best case outcome is displeasing someone less–is a sure fire way to feel like you’re never keeping up.

(Like many things, this is really just an interpretation of the first of the Four Agreements.)

Making time words part of your routine

Giving your correspondence a quick read-through to make sure you’ve included specific time words takes only a minute and will really improve the quality of your interactions. Putting these specific times on the calendar at the same time (during that read-through) will help you record your commitments and assure you’re making new promises in the context of the commitments you’ve already made.

It would be great if there were a tool out there that could take your email containing time words and make a series of appointments out of it–make a little gantt chart for you automatically–so you could see your commitments in context. I’m sure someone’s working on that.

The data modeling sessions at Pause have always had a big impact and so far there are some great ones planned for October in Portland.

Dave Graham – Workforce.org : Let’s Party! – pitfalls and benefits to implementing a Party Model and generalized frameworks in FileMaker.

Jason Young – SeedCode : Wet and Dry Development in FileMaker checking our assumptions

Todd Geist – geistinteractive : Universal Context You can get there from here!

Kevin Frank : Runtime Code – Blurring the distinction between data and schema. If you have examples, bring them to share.

(Complete Schedule)

These remind me of the grand-daddies of data modeling sessions: Ernest Koe’s 2010 session on MVC, and Corn Walker’s followup in 2011: Beyond A/B: A Minimalist Graph Approach – What happens when you take Chris Crim’s vision seriously?

(Sessions won’t be recorded this year unless presenters want to record their own.)logo

A couple of demos showing how you can reveal additional text, or even new buttons, when rolling over buttons in FileMaker 13. We used to hide text from some button states by making the text unusually large, but Jason Young showed us a much better method. More in the video below.

Download the “Hover Tricks” example file towards the bottom of our downloads page.

Want more? Subscribe to SeedCode for more tips.

Testing code is one thing, but how do we test our ideas. (I’m not talking about validating ideas with customers as in Lean Startup, but testing an idea against your gut. Is there a way to measure that?)

When you’re small, opportunity costs are huge–your best customer is another customer you didn’t meet–so how do you know at a real gut level if you’re making a decision for the right reasons or if you’re reacting to fear? How you do test if you’re aligned with your idea?

runtestlg2The Running Test is one way to get information about decisions, and I’ve found its results surprising. When I’m mulling something over, I’ll find it has one of two impacts on my run. I’m not a brand new runner, but it’s not second nature either; each run has a good amount of talking to myself about slowing down or walking this part of the trail. But sometimes I move through those parts of the trail much more easily–if the idea I’m mulling over is a good one, I find it gives the run energy. I see the idea expanding and suggesting new ones. My run times are actually faster: sometimes a lot faster.

The opposite experience is pretty hard to miss also: there is more negative self-talk than usual on the run and I find myself rehearsing negative outcomes or confrontations. Run times are slower and I am walking up those hills. 

The first time this surprised me I was preparing my talk for DevCon and figured I should chastise myself just a little for agreeing to speak at the conference at all: it wasn’t strictly on mission and would take a lot of time I should be devoting to getting our new calendar wrapped up. Instead I found myself sketching segments of the talk on my run and really enjoying how the talk came together. I was running a bit faster than normal and not worrying about the hills or tough sections of the trail: there was no background worry for that trail-worry to attach itself to.

I was going to enjoy working on this talk and that was somehow not clear to me before the Running Test. It was also on mission as I now saw the talk connected to all the things we were doing in our new calendar. Maybe the run wasn’t so much a test as a creativity-lab, a place to spin up better versions of the idea. But while new ideas certainly come on runs,  the Running Test feels more like a gut check.

Good ideas let me run faster. Strangely, it’s sometimes that simple.


JavaScript Functions for Speed and Profit

The movie below is from one of our most popular demos from “Year in Review” at DevCon 2014. I was talking about what a breakthrough custom functions were back in 2004 and how they unlocked a whole new kind of code-sharing among FileMaker developers. JavaScript functions in FileMaker may unlock even more potential.

Jason Young introduced the idea of using JavaScript as a calculator–as a library of functions–instead of using it for perhaps the more obvious purpose of building interface elements. (Jason’s original article on this can be seen as part 1 of this post.) This gives us a huge opportunity to share and borrow code from the immense catalogue of JavaScript functions and examples.

FileMaker Custom Functions Forum

FileMaker engineers start posting custom functions to a public forum: March 2004

As just one example, we (Jason) rewrote the venerable “namwoB” function in JavaScript. namwoB was the first recursive functions I ever saw and was posted by Andy LeCates back in March of 2004. The title comes from Court Bowman’s name spelled backwards… which is all the functions does, rewriting a string of text in reverse. This simplicity makes it a great way to talk about the different kinds of recursion in FileMaker and what a faster version of the function might look like in JavaScript.

Our example file shows the same recursive custom functions done as a “stack” recursive function (limited to about 10k loops), as a “tail” recursive function (limited to 49,999 loops), and as a JavaScript function executed in a webviewer and then passed into a FileMaker script.

Download the example file

JavaScript Functions in FileMaker are Fast

Looping through 49,000 characters took our tail-recursive custom function almost 3 seconds.

The JavaScript version of the function looped through 10 times that much text–nearly 500,000 characters–in 3/10ths of a second.

And thanks to the improved fmp url in FileMaker 13, we can grab the results of functions like these quite easily. The movie below demos this and walks through our example file. It also gives a nice side-effect-demo of how webviewers get their own thread in FileMaker Pro and what that may mean for trying to measure performance.

Want more? Subscribe to SeedCode for more tips.

With so much going on at DevCon–and so many friends to catch up with–it can be tempting to put yourself on auto-pilot for the whole conference, just reacting to what’s around you.

You can feel a little aimless that way. And you can miss things. You’ve sacrificed a lot to be here so double-down on that commitment: join the DevCon Meditation Challenge and see what it does for you.

Folks who take up the challenge will take time to meditate on their own, for two eight minute sessions each day. You can do this whenever you want but we’d suggest before breakfast and after the day’s last session.Sitting down (anywhere) and simply watching your breath is great. You might also lightly think about an open question like “How can I share what I’ve learned?”

I think you’ll find yourself refreshed and refocused: ready to dive into example files, blog some stuff, or hit the bar. Get the most you can out of this DevCon: tweet “I’m In #FileMakerDevCon #MeditationChallenge” to join us and encourage others.

I’m in – Take up the Challenge

Take this practice home after DevCon and you may be surprised what you can accomplish.ganeshblue

If you haven’t played with flights on Virgin America’s new site you should definitely check it out. A great rethink of the flight booking workflow, it’s also a nice argument for the long-scrolling site.

Big, sexy date pickers are dear to my heart. Book a flight. Details on the redesign, Work & CO, and their use of AngularJS here.

Syncing FileMaker Go

We got some great questions about sync in our last webinar and we’ve posted a video below. Big thanks to Todd Geist for joining me to answer questions and talk sync…

If you’d like to attend and ask your own questions we have two more sync webinars scheduled:

August 5, 10am PST — https://attendee.gotowebinar.com/reg…38086638329090

Aug 13, 3pm PST — https://attendee.gotowebinar.com/reg…29797594544130

Both webinars will have the same format as the original with Todd Geist and I taking questions on sync in general, FileMaker 13, and what’s new in GoZync 5.

Learn more about Syncing FileMaker Go with GoZync
GoZync download, demo & screenshots.

Read Full Article →

This video and example file demonstrates how to sync just the records relevant to your current location. This is a very common workflow in offline solutions and it helps keep the found set on your mobile device nice and small: meaning faster syncs and a better experience for folks in the field who don’t have to page through a bunch of irrelevant records.

Filtering using Find Requests

PageLines- ZyncFaster.pngTodd Geist put together this sweet example file and video to show off the filtering in GoZync 5. “Filtering” lets developers constrain the records that GoZync will consider for syncing. All you have to do is write a Perform Find () script step and GoZync will look within the resulting found set for records that have changed since the last sync. This is one of our favorite things about GoZync, and key to making it so flexible and easy to customize.

Using your Current Location (and current user)

This technique uses the Google Geocoding API to determine what zip code you’re in. Once you know the zip code you’re standing in, you can filter work orders (in this example) to bring down just your scheduled orders in the current zip code. The scripts for doing all this are included in the example file.

Needless to say, this would be a great mod for GoMaps users to add to their files.

Video and Example File

Todd’s article explains how GoZync uses filters and how it takes advantage of Perform Script on Server (in FileMaker 13). Definitely required reading if you’re building offline solutions in FileMaker Pro or Go.

Check out Todd’s original article where you’ll find more details and a link to download the example files.

You can learn more about GoZync here, and go in-depth on filtering in GoZync docs: Filtering– Downloading Found Sets.

Enjoy!