pas de palais Astérix et Obélix, pas de devs pas de code, pas de code pas d’appli. Pas d’appli … pas d’appli

Aujourd’hui c’est la grève on code pas, on no code !

On range les fourches et les torches! Je vous entends au fond de la vallée des développeurs gronder le vent de la révolte !

J’ai moi aussi mes préjugés et mes doutes sur le low code / no code, mais la curiosité l’emporte sur la crainte, faut que je teste le bouzin :)

Et comme vous savez que je suis un fanboy GCP devant l’éternel, on va faire ça sur Appsheet :)

L’idée d’Application

Ceux qui me connaissent savent à quel point j’aime la bière! Par le plus grand des hasards, j’ai trouvé cette pépite technologique ! https://punkapi.com/

Hé ouais, c’est bien une API qui expose le catalogue Brewdog :)

Nous partons sur l’idée complètement capitaliste et moche de faire une app qui affiche les bières de brewdog, pas de poursuites judiciaires svp, c’est juste un PoC no code sans aucun but commercial derrière :)

Bon ça serait plus éthique et plus proche de mes valeurs de proposer uniquement des microbrasseries et des bières crafts, mais comme l’API brewdog semble bien faite et que je n’ai pas l’intention de publier l’app de toute façon, on va dire que les multinationales gagnent cette manche :)

Pardon à l’ensemble de la filière artisanale brassicole française …

pub vintage, buvez des bières françaises

specs + première impression

On va partir sur un bête affichage de produit pour commencer, l’api retourne les produits, une photo et des infos sur les bières. On crée un template de type Simple Aventory.

capture template Simple Inventory

OK, sans rien faire on à une application qui affiche des objets “outils”, des métadonnées sur les outils et des images.

capture dashboard avec 2 tables de données item et inventory et une prévisualisation de l’application (affichages des outils)

Je clique un peu partout, je vois qu’on peut changer des couleurs. Ajouter des champs de formulaire, autoriser ou non les modifications de données.

capture interface de customisation de l’application, on trouve différente proposition de vue de données, des moyens de positionner les boutons et trie de données

On a une application qui permet d’ajouter des produits 1 par 1 via l’interface graphique et afficher proprement les objets.

On peut modifier cette feuille de calcul manuellement en brut (et/ou automatiser un import en bricolant un peu éventuellement) En fouillant mon drive accroché à mon app, je trouve un dossier appsheet avec mes images et “ma base de données”.

item-345	Hammer	Framing hammer	Items_Images/item-345.Image.211436.png			
item-567	T-Square	T-square with metric ruler	Items_Images/item-567.Image.211512.png			

Première couche de sel

J’ai envie de râler, donc je vais le faire maintenant et probablement tout le long de cet article.

livre pour enfant, monsieur grincheux

Google drive comme source de données ? Vraiment ?

C’est à la fois du génie et un peu dangereux non ?

Du génie parce que:

  • C’est noob friendly, tout le monde peut ouvrir une feuille de calcul et éditer des données.
  • les modifications sont versionnées et un audit de drive peut vous dire qui a modifié quoi.
  • Drive permet facilement de copier coller les données de manière simple.

Dangereux:

  • trop facile de casser le modèle de donnée et faire des erreurs manuelles

  • sécurité

    • qui contrôle le drive ? (1 collègue unique ? Et si son compte est suspendu ? L’application aussi ?)
    • si le mot de passe est compromis, bye bye données
    • si on synchronise le drive avec un ou plusieurs disques local, un grand nombre de problèmes s’ajoute
  • pour les mêmes raisons qu’une feuille Excel n’est pas une source viable de données

    • mauvais scaling, que se passe-t-il si on augmente considérablement le volume de données ?
    • pas de requêtes avancées type SQL, analyse compliquée du jeu de données
    • travail collaboratif compliqué

Néanmoins même si j’ai ces réserves pour le moment, ça m’intéresse de voir jusqu’où je peux aller avec cette petite appli.

meme grumpy cat

“Injection de donnée”

Je ne me tape pas le remplissage spreedsheet et images via l’interface graphique de l’application c’est mort, on va vite fait formater les données et importer les images. Mais on va faire comme si on n’avait pas trop de skill de devs et faire une solution en mode démerde, rapidos crados.

J’ai besoin d’un truc sous cette forme

Item ID	Name	Description	Image

J’ai toutes les infos sous forme d’un énorme JSON, il me faut juste les données filtrées et retournées sous la bonne forme.

Un coup d’internet, et on va tenter du gros SQL des familles, haha hey, ce n’est pas du code, techniquement c’est juste une requête de données.

https://anandsunderraman.github.io/jsonsqlonline/#/createDB

curl https://api.punkapi.com/v2/beers
énorme JSON ici

Oh, mais oui, quel plaisir, sans même faire une requête jq compliquée ou une seule ligne de Python ou de Bash.

interface de JSON SQL online, on y vois l’énorme JSON filtré et présenté sous forme de tableau avec les champs qui nous intéresse, id,name,description,image_url

export en CSV en plus, impeccable …

Alors qu’en fait pas du tout !

Il y a des virgules dans mes descriptions, le cas classique et ça décale tout …

Pas grave, on peut extraire un plus petit JSON déjà et le convertir avec un autre outil en ligne.

https://www.convertcsv.com/json-to-csv.htm

Avec les bonnes options, j’ai un truc comme ça

capture, jeu de données séparées par des tabulations id,name,description,image_url

Il me reste à filtrer les URL d’image pour avoir le nom des fichiers, plutôt que l’URL vers l’image.

https://regexr.com/3dm8n

techniquement toujours pas une ligne de code, j’ai piqué la regex sur internet directement, hihi

pas d’altération de l’ordre des images, copié, collé, oublié :)

expression régulière pour récupérer le nom des fichiers images sur une liste d’URL

maintenant le download des images

https://helpcenter.octoparse.com/hc/en-us/articles/360018324071-How-to-download-images-from-a-list-of-URLs-

Je le fais pour la science hein :) sinon j’aurai fait une boucle Bash avec Curl.

J’ai même fait une formule spreadsheet pour concaténer le chemin de mes images, c’est dire si je fais un effort pour ne pas faire d’efforts.

spreadsheet formule CONCAT pour générer le chemin des images

Et ça marche plutôt bien avec 25 bouteilles …

les images et les descriptions s’affichent dans l’application

et si on chargeait spreadsheet comme un âne ?

Bon, à partir de maintenant, on a besoin d’outil un peu plus puissant pour faire un gros volume dupliqué cohérent de donnée.

femme scientique manipule une fiole de manière humoristique

Copier les données en boucle, mettre des id numérotés proprement, mettre des id d’inventaire générés aléatoirement.

on fait des bidouilles à base de briques et de awk. des trucs un peu sales comme ça :)

cat new_inventory|awk -F '\t' '{print $3 "\t" $4}' |awk '{print system("tr -dc \047[:alnum:]\047 </dev/urandom | head -c6") "\t" "item-"NR "\t" $0}' > inventory_clean
cat new_database|awk -F '\t' '{print $2 "\t" $3 "\t" $4}' |awk '{print "item-"NR "\t" $0}'| head -n 100000 > yo 

Ça passe pour un volume de 10.000 bières et 10.000 inventaire de ces bières.

On tente un scale x10 et tout ça en mode copier-coller sale dans l’interface de Google spreadsheet.

autant dire qu’à 100.000 lignes de produits et pareil en inventaire, l’interface de spreadsheet lag un peu du cul :)

paresseux lent, zootopia

Mais ça rentre, et une fois chargé, l’appli m’affiche la liste de tous mes produits en stream à la demande à priori.

Je n’ai pas compté, je ne sais pas s’il en manque un ou deux :)

à savoir, il y a des limites qu’on ne peut pas dépasser

https://spreadsheetpoint.com/google-sheets-limitations/

Mais pour une petite à moyenne Appli qui affiche des trucs c’est plutôt pas vilain.

Je pense que passé cette limite de toute façon l’application est à peine fonctionnelle.

Il faudra un truc un peu plus malin que juste afficher tous les produits en scroling infini et barre de recherche.

Corruption de donnée, on pète tout

Bon maintenant, on va faire mal aux données comme si on avait pourri l’encodage du fichier spreadsheet . Pour voir à quel point ça craint de péter les données internes de notre appli.

on va mettre des trucs un peu comme ça partout dans la feuille de calcul

�S]��oɇ�E���2��

Et bien madames et monsieurs, même si ça affiche nos caractères salement, les images cassées sont remplacées par des images d’erreurs. L’application ne part pas complètement en vrille, et tout ce qui est frontend de l’appli ne bronche pas !

affichage des bières dans l’application avec les caractères corrompus

Je dis bravo, c’est très solide malgré le pourrissage de la base !

On peut revenir à la version précédente de la donnée en utilisant le versionning intégré de google drive.

Et si je supprime carrément le dossier dans drive ? il se passe quoi ? Je peux restaurer mon dossier ?

Une fois dans la corbeille drive, on a jusqu’à 30 jours pour le récupérer, si on le supprime de la corbeille c’est définitif.

google drive, popup de suppression définitive

C’est un niveau plutôt bon de protection contre la suppression accidentelle, mais il faut quand même une autre source de sauvegarde en cas de suppression malveillante.

Customisation

On peut faire des taches automatisées sur événements et lancer des notifications email, SMS, créer des fichiers sur template. Pour ce genre de mission très simple, c’est appréciable d’avoir une interface simple et rapide.

On peut rajouter des vues et ce qui est appréciable c’est qu’elles sont déjà fonctionnelles. C’est sympa, car on a des résultats très rapidement, très bon point, on teste les trucs, ça plait ou ça ne plait pas :)

Ce qui est très dérangeant, c’est que l’appli nous force un schéma de pensée, on adapte notre besoin à l’outil et non l’inverse. Dans la majorité des cas, on n’a pas besoin de réinventer la roue, mais parfois ça ne rentre pas dans les cases.

le père Noël est une ordure, on vous demande de répondre par oui ou par non , alors ça dépend, ça dépasse

La personnalisation est plus fonctionnelle qu’autre chose, on ne peut pas vraiment customiser avec nos couleurs et nos choix esthétique discutables.

Pas d’innovation possible en UI, pas de JavaScript fantaisiste avec des transitions innovantes, pas de créativité.

Backup Monitoring Alerting

Je vous conseille fortement de faire un backup différentiel vers GCS ou un autre blob storage. Je n’ai pas trouvé d’outils clef en main pour faire ça :)

Si vous n’avez aucun moyen technique de le faire, vous pouvez toujours faire des sauvegardes manuelles sur un disque externe et les mettre au coffre.

En ce qui concerne le monitoring et l’alerting sur le niveau de disponibilité de l’application, aucun moyen n’est fourni dans l’application pour être informé du niveau de disponibilité.

ça implique 2 choses:

  • pas de moyen de savoir si l’application est disponible ou pas en temps réel
  • pas d’idée du niveau de disponibilité de l’application (mis à part les SLA Google)

Je vous invite fortement à la prudence et je vais citer une phrase qu’on attribue à Ronald Regan, qui l’aura piqué à l’Union soviétique qui l’aura piqué à Lénine et que j’ai entendu de la bouche d’un sergent-chef de l’armée de Terre.

La confiance n’exclut pas le contrôle

Je vous conseille de mettre en place au minimum un outil automatisé de availability monitoring tel que Pingdom (mais il en existe plein d’autres). L’outil vous permet de mesurer le taux de disponibilité de votre site en faisant des requêtes automatisées sur l’URL de votre choix. Il envoie aussi des alertes via Slack ou email.

taxi, gilbert alerte général

Vous devriez aussi probablement surveiller les autres produits SaaS connectés à votre application si vous avez une application plus complexe.

Combien ça coûte ?

https://solutions.appsheet.com/pricing

C’est là que la fête commence. 5 dollars par tête par mois au moins cher, à partir de 10 utilisateurs.

10 dollars pour avoir le droit de créer des groupes d’utilisateurs, faire des actions planifiées, changer la donnée sur évènement bref une application professionnelle et utilisable sérieusement

ça peut sembler excessif quand on dépasse 1000 personnes, mais les plans entreprise et entreprise plus n’ont même pas de prix affiché ;) Donc aucune idée de combien on met au porte-monnaie au final quand on a des contraintes entreprises un peu sérieuses.

Au final pour une application avec un niveau de customisation et d’entreprise branding proche de zéro, à mettre en perspective avec le coût du dev et de l’hébergement d’une solution 100% custom.

Et alors si tu as dans l’idée d’utiliser une vraie base de données et de vrais outils puissants, on verra si Google te fait un prix sympa :)

  • Tu veux des permissions fines pour tes utilisateurs ? planche à billets
  • Tu veux une vraie base de données ? planche à billets
  • Tu veux travailler à plusieurs ? planche à billets
  • Tu veux une authentification auth0 ? planche à billets

magicien tour de carte, abracadabra, ton argent est à moi !

Conclusion

Alors on est bien d’accord que j’ai à peine effleuré la complexité de l’outil. On peut dire que mon raisonnement est un peu simplet pour la capacité que ce genre d’outil débloque.

Ça pose des questions qui dépassent simplement l’idée de juste avoir l’indépendance de créer une application “sans code/codeurs”. On s’accroche fortement au prestataire du service et on paye pour une solution SaaS avec la promesse d’avoir une application qui répond à notre besoin. On pense s’épargner la démarche d’expliquer notre besoin aux développeurs de faire des ping-pongs de réunion et d’esquiver les problèmes de bugs et d’égo.

Forrest Gump fait du ping pong solo à l’hopital, entouré de patients

Mais regardez mon appli, j’ai cliqué trois trucs et ça marche, champagne et prank ça part en prod :) Je suis parti sans specs et sans même une vague idée de quoi faire, j’avais juste des données.

Est-ce que juste afficher des données sans erreurs et donner la possibilité de les modifier avec un template simple défini et sans erreur est une prouesse technique ? OUI

Est-ce que si j’ai vraiment des besoins de customisation et des tâches backend complexes à réaliser sur mes données je recommande cet outil ? Absolument pas

Je pense que la limite se pose là, cet outil dans mon use case est simplement une feuille de calcul déportée dans un enrobage applicatif. Un genre d’Excel amélioré si vous voulez … Au final, si tu as aucune spec et que tu pars à la zob, tu pars avec moins de contraintes en no code, mais c’est pas sûr que ton appli ne soit pas aussi bancale à l’arrivée.

Kaamelott quand on à pas de technique, faut y aller à la zob !

En utilisant les templates déjà existants (avec un nombre assez conséquent d’use cases), on a une promesse d’application générique déjà fonctionnelle. C’est génial si ton besoin rentre pile-poil dedans et que tu as des besoins simples.

Par contre, que faire si tu as un truc un peu pourri et déviant, comme tout bon projet qu’on ne respecte pas ?

Et si tu as une fonctionnalité clef qui n’existe pas dans ton outil et bien tu es Tintin pour le clafoutis !

  • Où sont la créativité et le plaisir de maintenir une solution claquée au sol ?
  • Le son de l’alerte d’astreinte qui vient déclencher l’instinct de guerre et la routine zombie clavier ?
  • Quid du plaisir incroyable de niquer ta nuit et d’être déphasé comme un retour de bar, la journée qui suit ?
  • Les longues réunions de suivis de bugs, avec un backlog de la taille du kilimanjaro ?

On est dans la maltraitance de cerveaux et on sacrifie la créativité et l’innovation pour la productivité et l’efficacité. Une armée de singes cliqueurs peut-elle venir à bout de quelques singes copistes stackoverflow artisans ?

Est ce que cliquer c’est coder ?

Est ce que combattre une interface est aussi pénible que combattre un développeur ?

Est ce que forcer sa spec dans un outil est aussi joussif que forcer un dev à faire rentrer ta spec dans son dev ?

Malcolm, Hal réactive sa radio pirate

Mais bon, si Monique de la compta peut travailler sans interruption et sans bugs bloquants, Si les gars de l’entrepôt n’ont plus l’excuse de l’outil pourri pour faire des pauses, on se dirige petit à petit dans un monde efficace et froid, ou l’algorithme dirigera nos vies.

C’est ça que vous voulez ? des Applis qui fonctionnent ? ça me dégoute :)

Malcolm, Hal réactive sa radio pirate

Mais ne vous inquiétez pas, pour toutes les autres applications, et pour maintenir l’application qui fait des applications, il faudra toujours du monde. Il faudra toujours faire un pas dans l’openspace infernal des devs ou plus personne ne va plus. Répondre poliment aux vannes techniques des devs, que personne ne comprend.

Et si on décide finalement de sortir les plus pouilleux et les plus gênants, peut être qu’on pourra recycler les autres pour vous dire où est ce qu’il faut cliquer ?

On se dit rendez-vous dans 10/20 ans dans le métro.

à votre bon cœur messieurs dames, un NFT, une brewdog, une réunion, contre un script Bash, promis je râle pas trop :)

Mais non, le futur n’a pas besoin d’être aussi dystopique, y’a de la place pour les deux mondes.

On peut parfaitement faire des applis très génériques en no code pour les besoins récurrents et identifiés comme non variant, et faire des putains d’œuvres d’art et de l’innovation incroyable avec du code :)

Encore une fois j’enfonce des portes dégondées, mais les deux mondes peuvent cohabiter, et pour ceux qui ont peur de perdre leur travail, je les encourage à se réinventer. Le monde d’aujourd’hui et de demain est de plus en plus changeant et votre capacité d’adaptation fera la différence dans le monde de demain.

Aujourd’hui dev (met ici, ta ou tes technos préférés), demain peut être fermier dans le métavers, meh

Bon, ce n’est pas tout ça, mais je vais tenter un petit algorithme de machine learning pour écrire mes articles, j’en ai marre de faire tout ça à la main :)

meme, facebook change is name to skynet