FileMaker Addict Has Moved!

FileMaker Addict can now be found here: http://www.filemakeraddict.com




Tuesday, August 18, 2009

DevCon 2009: Summary and "Takeaway Points"

I was asked about the "big takeaway points" from DevCon 2009. Here's my take:

* With Script Triggers, it is now possible to safely open up and take advantage of FileMaker's native user inteface. In other words, you can give serious consideration to displaying and unlocking the status area -- something a lot of us have been locking down for years, for fear that our users might end up somewhere that they shouldn't be, or seeing something we'd prefer them not see.

* There's still a lot of interest in extending FileMaker to the Web, integrating it with other systems, and so on. You could see this by the large turnout in sessions dealing with PHP, ESS, etc. That's exciting, because it appears that (1) the user base is getting more sophisticated and (2) FileMaker continues growing in importance for many organizations. That's good news for all of us!

* People are still struggling with the relationship graph -- or to "tame" it as the saying goes. There was a lot of interest in the anchor buoy method, the separation model, etc. And there doesn't seem to be a perfect solution for this. I use anchor buoy myself. My advice: Do what works for you, be consistent, and document everything. And always remember Albert Harum Alvarez's advice: "Code as if the next developer on this project has an anger management problem and knows your home address."

* The separation model still isn't something that works well in all situations. Sure, it's easier than ever before, but with the security issues, etc, it just doesn't work well all the time. I think that as FileMaker continues to evolve, the separation model will be easier to implement. We'll see...

* Geoff Coffey is the God of Script Triggers! Need proof? Just look at how many other presenters referred to Geoff's examples.

* FileMaker Inc isn't just surviving, they're thriving. They're investing a lot in R&D and positioning themselves for the future in some exciting ways. If your business or career depends on FileMaker as a platform or technology partner, then you've made a good choice.

* And finally, the FileMaker community is alive and well. There were a lot of younger developers in attendance this year. But most importantly, the kindness and generosity that we've come to expect from the FileMaker community is still there. In that unconference session that I raved about, Jonathan Stark made the comment that it is important to him that his clients be the kind of people that he'd want to hang out with and have a beer with. Those are the same kinds of people that I saw at DevCon. Good people, good times.

Until next year!

Sunday, August 16, 2009

DevCon 2009: Day 3 Recap

This was the last day of DevCon 2009, and it was a short one. Here's a final recap...

My first session today was Geoff Coffey's "Practical Script Triggers." Geoff did a great job of showing us how we can very easily use script triggers to make big improvements to our solutions. His demonstrations included highlighting of the active record in list view, a technique for safely allowing a user from cancelling a batch process (and performing any necessary cleanup work), a cool way to implement the saving and cancelling of changes, a keyboard navigation system that allows users to type a few letters to jump to a record in list view, and much, much more. I attended a number of sessions on script triggers, and all of them were helpful. But Geoff's session stood out among them. I now understand why the other presenter's seemed to have stolen all of Geoff's material!

Next up was Richard Carlton's "Real World Examples of Using ESS." Richard explained how you can extend the functionality of OSCommerce (a popular open source ecommerce solution) with FileMaker using ESS to do things like manage products, generate reports, and so on. He also explained how you can use SASE ("Server Activated Script Execution") to import data from external SQL sources in batches during off hours. It's easy to extend his ideas to lots of other SQL-based solutions. I've been using ESS in similar ways since FileMaker 9 shipped, so none of the material was new to me. Regardless, it was great to learn how Richard and his team at Richard Carlton Consulting are using ESS in a variety of ways, and a good refresher on the topic. And as I said about Lee Snover's "Advanced ESS Hands On" session from Day 1, it was encouraging to see so many people attend the seminar, because it seems to indicate that FileMaker developers are looking to use ESS to integrate with other SQL-based systems.

After lunch, Jon Thatcher presented the "Under The Hood" session, and this year's topic was FileMaker Pro and FileMaker Pro Server Performance. Jon gave a lot of great information on things like indexes, value lists, and so on... I'm anxious to pull up his presentation from the conference CD and review it, because he gave tips that I think will have a fast, positive impact on the performance of some of the larger systems that I've developed.

And the final event was the "Closing Session." FileMaker Inc's Bill Epling gave us an interesting recap of where FileMaker Inc is financially (they're doing great, in case you're wondering), and then Ryan Rosenberg presented a recap of DevCon 2009.

DevCon 2009 was a great time, and in my opinion, a big success. I learned a lot, have a lot to think about, and met a lot of very nice people. But most importantly, I feel like I'm coming back from DevCon as a better FileMaker developer.

And I'm already looking forward to DevCon 2010, which will be held in... ?!? :-)

DevCon 2009: Day 2 Recap

Day 2 of DevCon was a blast. Once again, I was attended a lot of great sessions. Here's my experience...

The first session that I attended was Albert Harum Alvarez's "The Idiom of FileMaker: What's New, What's Old, What's New Again." I've attended Albert's FileMaker Design Master Class in the past, and that was a great experience -- a real eye opener with regard to how I design solutions. So my expectations for this session were high. And Albert didn't let me -- or anyone else who attended -- down. He explained how it is possible to develop solutions that are simple and flexible, even as they begin to scale. His unforgettable advice was: "Code as if the next developer on this project has an anger management problem and knows your home address."

Albert also gave an example of how it is possible to store business logic as data instead of in our code. We believes that there are two kinds of table occurrences that should appear on the relationship graph: "real" tables and "stored queries" (which are materialized using query functions). I'm anxious to learn more about the "stored query" concept, as this sounds an awful like the views that I've come to know and love in the SQL world, and have been hoping to see implemented in FileMaker at some point. So hopefully we'll learn more about this soon.

Next up was John Howell's "All Aboard! Anchor-Buoy Tips & Tricks" session. John gave a very clear explanation of the anchor-buoy approach to establishing relationships. One really good tip that I picked up (and had never thought about before) is that we should not assume that all relationships are bi-directional. Another one: Layouts should only be based on anchors, while portals should based buoys.

This was a informative introduction for those new to the anchor-buoy concept. However, I've been using anchor-buoy for awhile now, and was really hoping that John had some "magic formula" for naming table occurrences (and in particular, making them shorter while maintaining their readability). He did explain the naming convention that he uses (which includes double underscores between the table names, adding the field that the relationship is based on, abbreviating the table names, etc), but I'm not sure that this is was what I was hoping for. Regardless, it was a great session, and I'm glad I attended.

Session three was Matt Navarre's "America's Top Separation Model." Matt did a terrific job of explaining the separation model concept, and thoroughly reviewed its pros and cons. He also did a good job of explaining how he has overcome some of the technical challenges that the separation model poses (such as handling value lists, the need for some relationships that still have to be setup in the data file, and the security challenges of managing accounts in both the data and interface files). I'm still intrigued by this approach, but not sure I'm ready to try it again -- at least not yet. In any case, I think Matt did a great job of stating the case for the approach -- and taking the time to explain the situations that it is best suited for.

I skipped the formal sessions during the 3:15 slot, and attended the "Secrets of Successful FileMaker Consulting" unconference instead. This "unconference" was moderated by Matt Navarre with a panel that included Jonathan Stark (of Jonathan Stark Consulting), Kirk Bowman (of MightyData), Jesse Barnum (of 360Works), and Molly Connolly (of Thorsen Consulting). Those of you who are following me on Twitter may have seen my "tweet" that the unconference alone was worth the price of admission to DevCon, and I wasn't exaggerating. As a solo FileMaker consultant, I'm facing a lot of the challenges and issues that were discussed -- and who better to get advice from then some of the top FileMaker consultants around?

The discussion regarding Jonathan Stark's value based billing method was particularly interesting. I think it got a lot of us thinking about what Jonathan is proposing, and reconsidering the way that we're billing now. At the same time, it appeared to have upset a number of people that attended the session. It is a controversial topic among FileMaker consultants, and I'm sure the debate over it will continue.

Matt did a great job of moderating the session and asked a lot of interesting questions. It was very clear that the panel members gave honest, thoughtful answers. Based on what I heard and saw from the Jonathan, Kirk, Jesse, Molly, and also Matt, it seems to me that what makes them so successful as FileMaker professionals is their sincere passion for what they do. These are very talented people who truly enjoy working as FileMaker professionals, and it shows. I'm grateful that they are kind enough to give back to the community like they do.

My final session for the day was John Sindelar's "Matrixes & Grids: Tricky Layouts Demystified." John demonstrated a variety of techniques for building grid-based layouts. It is difficult for me to explain his approach, but I can tell you that he is doing some very cool things with FileMaker layouts. I'm looking forward to trying some of his techniques in my own projects during the months ahead.

The final highlight of the day was the DevCon dinner cruise. Pictures would probably best communicate how cool the cruise was, and seeing as to how I've only got a few blurry pix taken with my iPhone, I'll leave it up to someone else to post some pix that will do the event the justice it deserves. Photos, anyone?

Saturday, August 15, 2009

DevCon 2009: Day 1 Recap

Wow, what a great first day of DevCon sessions. Here's a recap of some of the events and sessions that I attended:

First off, I skipped the "Continental Breakfast," and from what I hear that was a very wise decision. Instead, I hit the StarBucks in the lobby before a line had formed. I had a nice caffeine buzz going before the first session even started.

The first session that I attended was Jonathan Stark's "Securing Your FileMaker Web Applications." Jonathan's goal was to get us to view our sites as hackers would, and to look for certain vulnerabilities. He explained several common types of exploits that hackers use (including cross-site scripting, session hijacking, and more). I was relieved to hear that FileMaker is not susceptible to SQL Injection attacks. (Apparently Jonathan has tried this form of attack on the FileMaker API for PHP and couldn't pull it off, and I figure if he couldn't do it, then no one can!) One big take-away from the session: You should always filter all data coming into and going out from your database. This was a great session and a terrific way to kick-off the day.

I then attended Matt Navarre's "Extend and Optimize FileMaker Search" session. I don't think I'll ever look at searching in FileMaker in quite the same way. Not only did he demo the "quick search" method that seems to be all the rage this year, but he also gave lots of great general tips on how to implement search in our solutions, and how to optimize finds as well.

After a break for lunch, I went to Bill Heizer's "Advanced Script Triggers in FileMaker Pro 10." When FileMaker Pro 10 shipped, I found script triggers to be far and away the most exciting new feature. But after watching all of the cool things that Bill is doing with them, I realize that script triggers are far more powerful than I imagined. The words "game changer" come to mind. Bill demonstrated how we can use script triggers to allow users to move around both portals and layouts in table view with an almost Excel-like experience. He showed us how to use them to do input masking on phone numbers and social security numbers, how to auto logout users after a certain period of inactivity, how to simulate forward and back buttons to move between layouts (much the same way that the forward and back buttons work in Web browsers), and much more. There were lots of "wows" and clapping and excitement at this session, and for good reason.

Next up was Lee Snover's "Advanced ESS Hands On" session. Lee is doing some interesting integration work using ESS and Oracle. It was interesting see how Lee is handling some of the same issues and challenges that I've run into when integrating FileMaker with SQL Server using ESS. For example, while you can call stored procedures with the old "Execute SQL" script step, you cannot call stored procedures using ESS. This is an issue for many of us because Execute SQL uses a client's local ODBC connection to make the calls - and this can be a problem in many environments for a number of reasons. Lee's approach to solving this problem is similar to the solution that I've been using, which is to indirectly call stored procedures by inserting or updating SQL tables that have triggers on them. (I was also surprised to see that the room for this session was jam packed -- so there must be a lot of interest in using ESS. That's very encouraging!)

My last session for the day was Ray Cologon's "Taming the Graph - Techniques for Graph Modeling." I was hoping to come away from the session with some advice from Ray on what he feels is "the" best method for graph modeling. But alas, from what I can tell, even Ray can't say for certain that there is a single best approach to doing this. Ray also briefly described a graph modeling approach being explored by the Proof Group where each table has a single table occurence on the graph, with no relationships between them. Instead, they somehow use a plug-in to create relationships between tables on the fly with SQL using a plug-in. I'm hoping that we hear more about this soon.

After the sessions, we had the welcome reception (great food and free beer, by the way!), followed by the invitation-only FBA Awards Ceremony. Check out the Twitter tweets for the details on who won and for what. And congrats to all the winners!

Friday, August 14, 2009

DevCon 2009 PHP User Group Meeting: A Recap

The PHP User Group meeting at DevCon 2009 was informal yet very informative. This was the first "technical" event that I attended this year, and I'm glad I did.

Joel Shapiro (http://www.jsfmp.com/) started the meeting by demoing a FileMaker / PHP-based site that he has developed for NASA's Life Sciences Data Archive. He also demonstrated TCPDF (http://www.tcpdf.org/), an open source PHP class that can be used to generate PDF documents. Joel showed how he was able to use the class, and in particular it's writeHTML method, to easily generate a dynamic PDF document based with data being served up by FileMaker Pro. Having just finished up a very difficult project earlier in the week that also involved generating a complicated PDF document using FileMaker data, I can see the potential of TCPDF and look forward to using it in the future.

Next up was Jonathan Schwartz of Mill Valley, California-based Exit 445 Group (http://www.exit445.com/). Jonathan demonstrated several PHP solutions that he has developed, including the site for Farm Fresh To You (http://www.farmfreshtoyou.com/), a bay area produce home delivery service, and American Work Adventures (http://www.americanworkadventures.org/) which sponsors university students who wish to participate in the seasonal Work/Travel program in the United States.

But it was Jonathan's PHP-based Web site monitoring solution that really impressed me and grabbed my attention. Jonathan's solution allows him to easily monitor several sites to determine if they are running properly. I recently started using a commercial server monitoring service, and it was nice to see that Jonathan has found an alternative way to monitor the sites that he is responsible for. I was also thrilled to see how Jonathan uses custom event logs for his PHP-based applications. This is something that I've been doing for quite awhile now, and I'm hoping to compare notes with Jonathan at some point to learn more about how he's implemented this technique.

Kevin Becker from Marion, Ohio-based Tri-Rivers Educational Computer Association (TRECA) (http://www.treca.org/) demonstrated a very interesting "social networking tool for students." Kevin explained how he's using the FX.php PHP class, along with the GD library (an open source code library for dynamically generating images) and some AJAX to give his solutions a Web 2.0 feel. He mentioned that he has also developed a live chat function using AJAX, and demonstrated a PHP login function that he's developed that authenticates users with Active Directory.

Last to present was Steve Winter from UK-based Matatiro Solutions (http://matatirosolutions.co.uk/). Steve explained his development process and the various tools that he uses and recommends. He uses Eclipse (http://www.eclipse.org/pdt/) as his primary PHP development tool, Subversion (http://subversion.tigris.org/) for version control, Trac (http://trac.edgewall.org/) for issue and bug tracking, and Apache as the Web server. I'm looking forward to checking out Eclipse because, as Steve pointed out, there are plug-ins available for it, including one that integrates with Subversion.

Steve also demonstrated a technique for generating self-validating URLs, where he takes a security string and hashes it, then passes it along in the URL to authenticate requests. He also quickly demonstrated how he's developed a FileMaker Pro SOAP web service using nuSOAP (http://sourceforge.net/projects/nusoap/), and how he is using the Web service to integrate FileMaker with Sage (http://www.sagecrmsolutions.com/). And finally, Steve shared a couple of cool PHP tips with us, including a PHP snippet that he uses to enable or disable the display of PHP errors depending on the environment that he's in (development, staging, production), as well as a cool "showMe" custom function that he has written to easily dump debug info during the development process.

So, there were a lot of great demonstrations, tips, tricks, and advice shared at the meeting. Hats off to Joel, Jonathan, Kevin, and Steve for presenting. And if the meeting is any indication of how the rest of DevCon 2009 is going to go, then it's going to be a great conference!