Rant Against FileMaker

I love it.

I fucking hate everything about it, the most complex data handling primitives are macros, the abstraction is too tight, it’s expensive.

It’s so easy and fast.

Queries are a mess, the calculations are unreadable, the UI is rudimental, the file format is closed.

The refactoring is awesome.

It encourages bad software design and poor coupled architectures, it’s insecure by design, sluggish on medium-latency links, chatty on the network, sensitive to the slightest connection drop.

I can create a database in minutes.

The scripting language is stupid, there is no search nor find / replace, the calculations don’t fully adhere to the functional paradigm, refactoring is a pain, profiling is nearly impossible, the inner workings of the schema are a mistery.

The solutions are so easy to integrate.

It doesnt’separate concerns, puts UI fields into the database schema, doesn’t support multiple native script parameters, everything boils down to string manipulation, there are no objects, implementing algorithms is a pain in the ass.

I can configure stuff with a few clicks.

The international format support is developed by fucking retards with no respect for common sense and platform independence, data processing happens with the formats of the current system, numbers are sometimes processed with commas and sometimes with dots, and we need parsers for every numeric evaluation, while types remain an opaque (but present) implementation.

The relation graph makes it so easy.

Data migrations are a hassle, versioning is impossible, code is kept inside binary files, which grow like tumors over time, and there is absolutely no way to fix them. Solving bugs is like using black magic and alchemy, the subsystem is completely opaque, the error messages are clueless, there is no proper logging for client-side errors. Queries are randomly slow and not internally optimised, the planner seems non-existant, and they are non cancellable, meaning that the server gets stuck executing useless operations for nothing.

I can create UIs using drag and drop elements.

Replication is impossible, databases become much heavier than SQL counterparts, queries are incredibly slow, the data api is fucking paid, the ODBC driver is buggy, the admin page loses features over time instead of gaining them.

The storage is extremely inefficient, it can’t separate a single table into multiple files, data weights ten times more than an actual DBMS (measured against PostgreSQL), there is nothing integrated to show the actual space used by a table.

The ODBC driver crashes, queries have unpredictable execution times that depend on caches that often fail and take tens of minutes to rebuild, giving times that have an order of magnitude of variance.

There are no execution threads, callbacks or asynchronous operations, no layout-specific state, file handling is crap, no cheap way of using barcodes, sync is harder than explaining quantum mechanics to a dog. No way to implement mildly complex algorithms without succumbing to impossible execution times.

Support is inexistant, every time a real bug is found, nobody does anything to fix it. They just ask questions and not solve a single thing, inventing excuses to avoid the problem despite having it demonstrated accurately.

But it allowed me to create LabManager and TRIAD all by myself.

It gently started teaching me about databases, relationships, functional languages and automation.

It gave me the motivation to build a framework that will eventually take its place in my projects.

Also it taught me that in software instant gratification is a trait that backfires. Badly.