Travaillant sur quelques projets de front, Paintual est un peu, beaucoup, mis à l’écart. Et comme je n’y mets pas une attention soutenue, il y a des portions de code que je dois améliorer et qui me causent des ennuis parce que je ne me souviens plus exactement de la mécanique que j’y ai mise en place.

Alors vient le temps de s’aider d’outils exprès pour ce genre de chose. En fait c’est le contraire que j’aurais dû faire, mais ce n’est pas tellement grave puisque c’est un projet qui existe essentiellement pour que je crée mes outils de création d’images: je ne le conçoit pas en premier pour être un “outil pour tous” mais s’il peut éventuellement servir à d’autres ça sera tant mieux 🙂

J’aurais dû “architecturer” certaines portions du code avant de coder, ainsi j’aurais eu un plan à suivre. Mais la plupart du temps je dois faire des essais et voir si telle idée peut se concrétiser en code. Une fois le code fait, je passe à autre chose sans prendre le temps de documenter (mis à part les précieux commentaires dans le code).

Documenter le code de façon à pouvoir, d’un coup d’oeil, voir ce qu’il contient, ce qui s’y passe et comment les différentes pièces interagissent, c’est le travail d’UML. Je ne suis pas un grand fan de la symbolique visuelle d’UML que je ne trouve pas très intuitive ni très élégante. En plus j’ai essayé plusieurs outils de création de graphiques UML et ils m’ont déçu, à part Visio, qui coûte assez cher et que je trouve encombrant comme la plupart des autres qui tentent de lier les graphiques au code dans un esprit d’automatisation qui, pour les petits projets sur lesquels je travaille, est plus nuisible pour moi pour l’instant.

Alors j’ai fait une autre recherche d’outils UML et suis tombé sur Visual Paradigm. La version complète permet de gérer tous les aspects du développement logiciel (avec un coût) mais la version “Community Edition”, gratuite, me donne l’essentiel pour ce qui est d’UML. Alors je le mets à l’essai.

Et je me rends compte que j’ai oublié presque tout d’UML: trop d’années sans y toucher.

Tout ça pour dire que je m’applique à mettre en format graphique certains aspects de Paintual de manière à ce que je puisse m’y retrouver et corriger les bogues qui restent afin d’avoir, enfin, un outil de sélection de portions d’images, comme je l’ai mentionné dans des posts précédents.

Ci-dessous, un petit exemple de graphique séquentiel en UML en construction (mais il ne faut pas considérer cet exemple comme un modèle à suivre: je réapprends).

VisualPropertyPage 2018-05-12 01

Visual Paradigm me donne un rendu graphique qui me convient. Ça pourrait être visuellement plus raffiné mais le but n’est pas de créer des oeuvres mais des plans de travail. J’aime que les diagrammes ne sont pas liés au code mais peut-être plus tard je changerai d’idée 🙂

En regardant le code “évoluer” visuellement à partir de la commande de l’utilisateur (actor) je verrai où mon code accroche et me cause souci.

Les diagrammes de séquence ne représentent jamais l’ensemble des activités possibles d’une application mais des segments de fonctionnalités. Ils doivent clairs et détaillés sans tomber dans un excès de présentation d’informations. C’est souvent à ce niveau où je tombais dans le piège de la “surdocumentation”.

Dans un tout autre ordre d’idées, j’ai installé Python sur mon ordi et ai commencé à jouer avec les “neural networks”. Je me suis procuré pour quelques dollars seulement ce livre: https://www.amazon.ca/gp/product/B01EER4Z4G , une introduction en douceur sur les neural networks et sur Python. Je vise éventuellement à pouvoir créer des GANs (Generative Adversarial Networks) car ils permettent de générer des images ou des effets et ce que j’ai vu à date me stupéfie au plus haut point d’autant que c’est en ligne avec ce que je voulais réaliser avec Paintual (mais avec des moyens tout à fait autres au départ). Ai-je déjà mentionné les travaux de Mario Klingemann ( https://twitter.com/quasimondo), c’est à voir ! Le livre en question ne va pas jusque là mais on commence par le commencement.

* * *

Working concurrently on a few projects, Paintual is being put aside a little, well a lot. And since I am not regularly into it, there are portions of code I must improve and that causes me trouble because I do not remember exactly the mechanics that I put in place.

There comes the time where some tools designed among other things for this situation could be of great help. In fact it’s the opposite that I should have done, but it’s not so bad since it’s a project that exists essentially for me to create my tools for image composition and editing: I do not conceive it first to be a “tool for everyone” but if it can be of help to other in the future, why not 🙂

I should have architectured some portions of the code before coding, so I would have had a plan to follow. But most of the time I have to experiment and see if an idea can be translated into code. Once the code is done, I move on without taking the time to document (aside from the valuable comments in the code).

Documenting the code so that one can see at a glance what’s in it, what’s going on and how the different parts interact, that’s the work of UML. I am not a big fan of the visual symbols used in UML because I do not find them very intuitive nor very elegant. In addition I tried several UML graphics tools and they disappointed me, apart from Visio, which is quite expensive and I find it bulky like most others which try to link graphics to code in a spirit of automation that, for the small projects I’m working on, is more cumbersome for me than helpful at this time.

So I did another search for UML tools and came across Visual Paradigm. The full version allows you to manage all aspects of software development (with a cost) but the “Community Edition” free version gives me the essentials for UML. So I put it to the test.

And I realize that I forgot almost everything I knew about UML: too many years without using it.

All that to say that I apply myself to put in graphical format some aspects of Paintual so that I can find and correct the remaining bugs in order to have, finally, a tool for easily and quickly selecting multiple portions of images, as I mentioned in previous posts.

Above is a small example of an UML sequence diagram under construction (but this example should not be considered as a model to follow: I am learning again).

Visual Paradigm gives me a graphical rendering that suits me. It could be visually more refined but the goal is not to create works of art but working/workable plans. I like that the diagrams are not linked to the code but maybe I’ll change my mind later 🙂

Looking at the diagram, I can see the code visually “working” from the command of the user (actor) to the result provided by the application. I will then see where my code is faulty and be able to apply a solution.

Sequence diagrams never represent all the possible activities of an application at once but specific segments of functionalities. They must be clear and detailed without overflowing with  information. It is often there that I fail and fall into the trap of “overdocumentation”.

In another note, I installed Python on my computer and started playing with neural networks. I bought this book for just a few dollars: https://www.amazon.ca/gp/product/B01EER4Z4G, a gentle introduction to neural networks and Python. My goal is to be able one day to create Generative Adversarial Networks (GANs) because they can generate images or effects that are amazing and is quite in line with what I envisioned with Paintual (but with completely different means at the beginning). Have I already mentioned the work of Mario Klingemann (https://twitter.com/quasimondo), this is a must see! The book in question does not go that far but the beginning is where everything starts.