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, 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.

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.

There are no execution threads 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.

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 something that will eventually take its place in my projects.