I really wanted to love this book, but it fell very short for me in a several key areas.
First, the things I liked about the book include:
1. The author really knows his stuff.
2. Talks conversationally, never condescendingly.
3. Printed copy is beautiful. Good colors, fonts, layouts, and screenshots.
4. I learned a lot (at a high level).
5. There were lots of good code snippets.
----------------------------------------
Second, what I think could be better about this book include:
1. The Kindle version is terribly formatted. There are pages that have just a single graphic from (usually) inside one of the tip boxes. On the actual Kindle device (not the Kindle "App", though I tried both), I couldn't even make out what was written in the screen shots. Total fail here, IMHO. My advice? Get the printed version.
2. Several chapters have virtually no examples. When reading, I kept thinking that it was a great introduction to the topic, and yes, it was good information to know and it was well presented, but I'd have to find another source to actually find _working_ examples!
Update: The index is lacking. The "middle" function, for example, crucial for "substring" operations isn't in the index. Yes, you can find the middle function with a quick example in the book, but why have such a terse index?
Hey, this is what I bought this "in depth" book for in the first place. The author has two chapters on scripting and two chapters on calculations, but after reading them, I was left with very few full examples to study (or to actually use in a project of some type). It seems to me that the book should therefore have been longer with many more examples of "how" to do things (in context), not just "what" they are.
It's possible that the author's intent was that this book wouldn't be used primarily as a reference, but that's always the main use for a book like this for me. First use: read it and learn more about the topic, but the 'second' (main) use is to be able to pick it up later and find useful information about how to solve a problem in the middle of a project.
3. Way too many code snippets without context. This is both good and bad and why I listed this in both places here. With many of the code snippets, I kept asking myself how best to "connect" them to various screen elements, triggers, and such, but that information was often just not there. Again, many more complete examples -- in depth -- would have been better. Examples that did things that developers need to do everyday. Maybe an example of how to find a set (or multiple found sets) of records and export them to a comma-or-tab-delimited file?
4. Various typos. In a few cases, either the text didn't appear to match what the screenshot showed or other minor things. In at least one case, the diagram looked to be just wrong. It appears the technical review should have been more thorough. "ScriptMaker", for example, is referenced throughout the book, but I saw on the FMP site the "ScriptMaker" term is no longer used in FMP 12. So, being new to FMP 12, I found this confusing. Also, this old term being here made me start to think this book was a quick update of an older version of the book or at least there wasn't enough technical editing oversight.
5. The author makes available some FMP databases for a few of the chapters (6, 7, 8, 9, and 13 from what I found), but I didn't see in the book that they were referenced or leveraged.
6. I noticed that the author didn't include even a mention (that I could find) of the exciting new "ExecuteSQL" function that lets you (finally) do SQL against the local FMP database! Why would this new FMP function not be included (with examples)? As I recall, there was an entire Webinar dedicated just to ExecuteSQL.
Not to say this too many times, but, sadly for me, the scripting and calculations material was at too high a level. I was really hoping for (mostly) complete examples I could actually learn enough from to then incorporate some of them into projects.
The author, via screenshots, alludes to MySQL and SQL in a couple places in the book. In one place he's talking about bringing in external data from a MySQL database. However, instead of giving a complete example that works, he alludes to another book he's published for more info on how to do this (p. 527). All you see is some screenshots that "work". Not having a complete working example here added additional frustration reading this book. Perhaps there were setup options that were required (like a user account, etc.). Although there is some value in these screenshots, their value is limited if you can't follow along and get things working as you read through the book. An external database where the login process was documented would have been much more preferable.
Additionally, on the Mac side he uses a third-party ODBC driver from a company called "Actual". Small point, but I didn't see where he mentioned that these Actual drivers are $35 each -- or that you can download a "free" Actual driver that will work with up to three records (for testing). In my case, I had to download the drivers from Actual as a separate step. He does refer you to (sigh, other) documentation to read about separately, but why not just go to the Actual Website and have screenshots showing the simple download process? Plus, on the Mac side, you may need to (I did) have to download and install the ODBC program itself from Apple. The ODBC Administrator was not available in Lion (10.7) until I did this separate install. My guess is that the author is a Windows user and possibly isn't aware of the extra steps required for the Mac side of things.
7. No mention that I saw of using JDBC to connect to the FMP database from "outside" coming in, say from a Java program or even using an external Java database console to do SQL commands against the FMP database. FMP 12 is nicely accessible from external clients. Since JDBC access into a FMP database is probably not the target audience for this book, this is one of the few places where an example probably isn't needed and instead just a reference to the excellent ODBC/JDBC programming manual from FMP.
8. GTTR (Go To Related Record) is described (p. 478) as one of the most useful functions in FMP. Yet there is no example. The text in the book is "OK" that describes it from a setup dialog, but this seems to be a clear case where a scripting example or two (or at least alluding to examples on the author's Web site or somewhere) is sorely missing.
Why not have an example script (and layout screenshots) that takes the user to the related records on a child layout after he selects the parent record and clicks a "Go To Related Record" button?
9. It would also have been nice if there was a part of perhaps Chapter 1, say for those folks upgrading from an earlier version of FMP, that covered "What's New in FMP 12?" Then, list all the new features/functions.
10. From what I understand, you can't debug (step through) calculations or custom functions. That's not a fault of the book, of course, but I didn't see that debugging limitation documented in the debugging chapter.
11. Kiosk Mode (p. 633). From the description here, it would be helpful if he referred back to the screenshot on page 627 and the enable Kiosk Mode check box. After reading the Kiosk portion, I was left scratching my head ('how' do I enable Kiosk mode?). Once I re-read the entire section, I saw the implied check box on page 627.
12. Plug-ins. Rather than describing that C++ is a way to write a FMP plug-in, which seems way out of scope for this book, why not instead list 10 or 15 really useful plug-ins and the Web site URLs for them? Plug-ins from 360 or plug-ins that will do POST and GETs? I have found that there are tons of terrific ways to extend FMP via plug-ins. Examples please.
It would be very nice to see an end-to-end setup of a plug-in. That documentation seems to be lacking just about everywhere, but I did find a nice example on the 360 site.
---
While reading the book, I kept referring to the "FMP 11 Missing Manual" book (FMP 12 Missing Manual still not out at the time of this review) to get additional examples. From what I read the Missing Manual for FMP 12 will be almost 1,000 pages, which seems about right considering this is a huge product.
---
So, if you're looking for a good *overview* of FileMaker Pro 12 with some example snippets and limited depth, this is may be a good introductory book to look at. To me, it reads like an overview book that typically (in the good old days, when you actually got a printed manual with a $500 software product) would come with a product like this. Having said that, however, most manuals that came with software covered every aspect of the software at some level, which this book doesn't seem to do at all.
On the other hand, if you're a developer or looking for lots of detailed examples in code (with a tutorial or problem-solving or cookbook approach, where even part of the book is set up this way), you will probably not be happy with this book.
Developers might want to consider the "FileMaker 12 Developers Reference: Functions, Scripts, Commands, and Grammars" book that just came out again after 5 years for version 12. That book lists and gives examples for every FileMaker function. Don't forget the excellent PDF documents that come with FileMaker. They're excellent as well.
After having read the book cover to cover, I realized it wasn't what I was hoping for or could count on for much future reference. Sadly, I've come close to tossing this book about a dozen times and would have gotten a refund a long time ago had I known...