Escaping Low Code

Creato Novembre 2022

Negli ultimi due anni ho aiutato un'azienda a modernizzare la loro applicazione interna costruita su una piattaforma Low-Code chiamata FileMaker.
Le piattaforme Low-Code offrono alle aziende non tecniche la possibilità di aggiornare leggermente la loro applicazione senza dover chiedere l'aiuto di un sviluppatore professionista.
Tuttavia, queste piattaforme forniscono solo un piccolo sottoinsieme di funzionalità rispetto a ciò che sarebbe possibile realizzare costruendo il proprio prodotto con un linguaggio di programmazione tradizionale, rendendo difficile costruire esperienze utente complesse.

Fortunatamente, gli sviluppatori hanno riconosciuto questi svantaggi e hanno creato alcune scappatoie.

Problemi di layout

Uno dei grandi svantaggi riguarda il posizionamento degli elementi del Formato e, più specificamente, come si comportano quando la finestra cambia dimensioni.

Una finestra di FileMaker ha una dimensione nativa e creerà una barra di scorrimento se la si riduce più di così, ciò che accade agli elementi quando si espande la finestra dipende dai punti di ancoraggio di ciascun elemento.

In FileMaker è possibile specificare il punto di ancoraggio di ciascun elemento individualmente, un ancoraggio per lato, quattro in totale, i lati opposti lavorano in congiunzione per determinare la dimensione dell'elemento.

  • Quando 1 lato è selezionato:
    L'elemento rimarrà alla stessa distanza dallo stesso lato della finestra del lato selezionato come era alla dimensione nativa.
  • Quando 2 lati opposti sono selezionati:
    Quei lati dell'elemento rimarranno dove erano posizionati alla dimensione nativa aumentando la loro larghezza/altezza della stessa quantità dell'eccesso della dimensione della finestra.
  • Quando 0 lati sono selezionati:
    L'eccesso di dimensione sarà diviso per 2 e aggiunto alla distanza che l'elemento aveva dai lati della finestra.

Tutto ciò può sembrare sensato, ma cosa succede se voglio, per esempio, 2 colonne che crescono uniformemente?
Come ho detto prima, gli elementi sono dimensionati individualmente, quindi quello a sinistra semplicemente si sovrapporrà a quello a destra quando diventa abbastanza grande.
Non penso di aver mai desiderato questo risultato.

Per questo motivo, a volte, quando ne ho davvero bisogno, utilizzo un Web Viewer.
Un Web Viewer è semplicemente un browser incorporato in un'applicazione FileMaker, su un Mac significa che è fondamentalmente un'istanza di Safari.
Ciò significa che posso creare una piccola pagina HTML come stringa, come si farebbe utilizzando un linguaggio di programmazione su un server e utilizzare CSS e Javascript per fare ciò che mi serve!

Interfacciarsi con il sistema operativo

Un altro metodo per ottenere più funzionalità da FileMaker è utilizzare Applescript (solo su MacOS), che consente di interfacciarsi con altri programmi del sistema e accedere ai Framework forniti da Apple.

Mi è stato chiesto di creare un generatore e verificatore di Codice Fiscale. La generazione è stata facile da fare utilizzando uno Script di FileMaker ma purtroppo l'Agenzia delle Entrate è l'unica che può dire con certezza se un codice è in uso per la persona che vogliamo verificare.

Ora, ovviamente, non hanno un endpoint API per verificare facilmente, sarebbe stato troppo conveniente, ma forniscono un modulo che si può compilare nel loro sito.
Così ho creato un Applescript che chiede al browser di aprire quella pagina e eseguire del codice Javascript per compilare automaticamente i campi di quel modulo con le informazioni memorizzate in FileMaker.
Ora gli utenti possono semplicemente premere un pulsante e verificare istantaneamente il Codice Fiscale, cosa che sarebbe stata impossibile con solo FileMaker.

Un'altra volta mi è stato chiesto di interfacciarmi con gli endpoint API di OpenAI, non è stato un grosso problema perché FileMaker ha uno Script Step (praticamente come chiamare una funzione in altri linguaggi) per utilizzare una versione semplificata di curl, il che mi permette di specificare header di autorizzazione e invio di file/dati json.
Il problema è sorto quando ho scoperto che l'API non supportava la ricezione di file PDF, il che è davvero scomodo per noi perché FileMaker ha campi contenitore che possono contenere solo un file alla volta e lo scanner che usiamo può unire le pagine solo quando produce PDF e non JPG.

Grazie ancora ad Applescript sono stato in grado di sfruttare alcuni Framework di Apple disponibili in MacOS, in particolare PDFKit e Core Graphics, per unire le pagine da solo!
Ora possono continuare a utilizzare il loro normale workflow con i PDF e sfruttare anche la potenza dell'API.