Tout sur ma veille technologique

Je ne surprendrai personne en disant qu’en informatique, et plus particulièrement en développement, la veille technologique est très importante. Mais les journées ne faisant que 24 h, il est nécessaire d’optimiser ses sources de renseignements.

C’est pourquoi j’ai décidé aujourd’hui de vous partager mes trucs est astuces pour me maintenir au top niveau 😉

Dans mon cas, la veille se fait principalement le matin, au petit déjeuner. Bon, je sais que niveau déconnexion boulot, on a vu mieux, mais depuis quand doit-on déconnecter lorsque l’on est passionné.e ?

Pendant très longtemps, je me suis contentée de maintenir 10 à 20 onglets ouverts sur mon navigateur : ZDNet, LinuxFR, Stack Overflow… mais ce n’était pas très pratique.

J’ai également essayé de m’abonner aux personnes et aux flux qui vont bien sur Twitter, Reddit, et même Facebook et Google News 😦 . Si j’ai totalement laissé tomber le premier et les 2 derniers, Reddit continue à m’être bien utile !

Puis j’ai découvert l’application mobile Feedly. Le principe est simple : on sélectionne les différents flux auxquels on veut s’abonner, et chaque matin on a sont lot d’actualités toutes fraîches !

Vraiment top cette application, et cerise sur le gâteau, elle est disponible sur desktop ici, pour iOS ici, et sur Android, par là.

Mais le principal défaut des flux dans Feedly est qu’ils restent soit trop génériques, soit trop spécifiques, ce qui ne correspond pas toujours à mes besoins. Mais peut-être est-ce juste une question de paramètre, et cela n’enlève rien à l’intérêt de l’application 🙂 .

Je complète donc avec quelques sites, dont la liste varie en fonction de mes centres d’intérêts du moment.

Il s’agit du plugin daily.dev, du site Hacker News et son pendant en langue française Le Journal du Hacker.

Notez que Daily.dev existe aussi en tant que site web, ou même de web app.

Enfin, même si je suis informaticienne, je j’apprécie toujours les revues au format papier, et je ne saurait trop conseiller la lecture de la passionnante revue MISC des éditions Diamond (existe aussi au format numérique) :

Voilà pour mes outils quotidiens de veille technologique. Je mettrai bien sûr à jour cet article au fur et à mesure de mes découvertes, et en attendant, n’hésitez pas à me partager les vôtres 🙂 !

Une interface graphique pour Arduino sans prise de tête…

Cela faisait longtemps que je n’avais pas parlé de projets Arduino sur ce blog…

Il était donc temps de rattraper ça 🙂

Dans le cadre d’un projet perso (et encore secret 😉 ), j’avais besoin de réaliser rapidement et simplement une interface graphique pour piloter un Arduino Uno. Ce projet n’ayant ni bluetooth, ni wifi, et n’étant de toutes façons pas très motivée pour développer un protocole de communication, je recherchais une solution « clé en main ».

C’est à ce moment là que je suis tombée sur le projet Azande : https://zeijlonsystems.se/products/azande/index.html

L’idée ici est de coder l’interface graphique directement dans le code Arduino. A l’aide de structures simples, on définit ainsi des boutons, des compteurs…

Mais comme un exemple vaut mieux qu’un long discourt, en voici un : faire varier l’intensité lumineuse d’une led grâce à différents boutons Azande.

Voici le code :

Et l’interface générée :

En somme, les éléments d’interface se définissent dans « define_int_event », « define_int_commande » et « define_enum_command ».

La fonction loop() se borme ensuite à écouter sur le port série un flux, et, lorsque la commande « cmdLum » est reçue, à exécuter la fonction SetLum, qui change la luminosité de la led,et à envoyer une mise à jour à « eventLum » pour mettre à jour le compteur.

Côté code, difficile de faire plus simple !

Et voici le résultat :

Je suis toujours épatée par les possibilités de création offertes par ces petites cartes ! De vraies machines à générer du bonheur !

Une développeuse au pays du low code…

Une développeuse au pays du low code

Appsheet, Microsoft Power Platform, Zapier, AWS HoneyCode, Glide, Airtable, Siberian… il ne vous aura sans doute pas échappé que cette année 2020 aura été celle du low code / no code !

Bien sûr, en tant que Developpeur.se, la première réaction face à ces nouvelles méthodes de développement est souvent beuurk…

Mais en tant que développeur.se, notre métier ne consiste-t-il pas à perpétuellement se remettre en cause afin de proposer la meilleure solution technique au client.e ?

C’est en tout cas ce que je pense, et c’est pourquoi je considère que le low-code / now-code à tout à fait sa place dans mon offre 🙂

Mais d’abord, de quoi parlons nous?

Pour moi, l’idée maitresse du low code est de pouvoir produire, relativement facilement et rapidement, des outils métiers qui déchargent les entreprises des tâches à faible valeur ajoutée, ou qui permettent d’améliorer leur flux de travail.

Le mot clé étant à mon avis « rapidement ».

Même si le terme est relativement nouveau, Excel par exemple fait ça depuis très longtemps via les macros.

La différence est que maintenant, on peut faire communiquer entre eux différents logiciels, par exemple grâce à Zapier, et créer de véritables applications mobiles qui se synchronisent avec des classeurs Excel ou Suite.

Pour moi, on peut aussi les CMS modernes comme Word Press d’outils no code. Pouvoir créer des applications mobiles de cette façons était donc la suite logique.

El alors, comment ça marche ?

Lire la suite

Git Memorandum

Comme pour tous.tes les développeur.ses, Git fait partie de mon quotidien… Et comme tous.tes les développeur.ses, il m’arrive aussi de galérer avec Git 😦 .

C’est pourquoi j’ai décidé de créer ce billet de blog « Aide mémoire », destiné aussi bien aux débutant.es qu’au utilisateur.ices averti.es… Article sur lequel je partagerai bien entendu mes petites galères et mes (grandes) solutions !

Lire la suite

Une application mobile Android / iOS en 1 journée ?

Application mobile Siberian

Depuis quelques années, on voit apparaitre sur le web des générateurs d’applications mobiles. La promesse est la même que pour les cms et les générateurs de sites web : pouvoir bénéficier d’un travail professionnel sans aligner une seule ligne de code…

Et comme pour les cms et autre générateurs de sites web, la réalité est quelque peu nuancée…

Suite à la demande d’un client, je me suis re-penchée sur SiberianCMS, que j’avais déjà testé il y a quelques années sans être convaincue plus que ça.

Le mois de juillet et ses chaleurs aidant, je me suis lancée comme défit de créer une application multiplateforme, avec SiberianCMS, en 1 journée… Voici donc un compte rendu de mes aventures 🙂

Lire la suite

L’enregistrement NSUserDefaults en Swift

L'enregistrement clé-valeur en swift _ nsuserdefaults

L’enregistrement de données sous forme de clé-valeur en développement mobile à déjà été abordé dans l’article sur les SharedPreferences.

Aujourd’hui, je vous propose de faire la même chose, mais en Swift. C’est beaucoup plus simple, mais nous nous limitons alors aux plateformes Apple (iOS, iPadOS, MacOS, WatchOS).

Comme pour les SharedPreferences, NSUsersDefaults est donc un système simple et rapide qui permet d’enregistrer des valeurs de type Float, Bool, Double, Int, mais aussi des objets (array, dictionary…. ), et des urls. C’est donc une façon de gérer la persistance des données à la fois simple et puissante 🙂 .

Pour cette démo, j’ai créé une petite application très simple dans laquelle l’utilisateur enregistre une phrase, et celle-ci est stockée comme une clé-valeur grâce à UserDefaults :

Afin de vérifier la persistance, n’hésitez pas à relancer l’application, et vous verrez que votre phrase reste mémorisée 🙂

Alors pour utiliser UserDefaults, il faut déjà créer une instance de UserDefaults, et définir ses clés de préférences :

Ensuite, l’enregistrement d’une valeur se fait avec l’instruction « préférences.set » :

Et la lecture d’une valeur avec :

Et c’est tout !

Ce qui fait que notre controller contient juste ce code :

Je pense que c’est la méthode la plus simple en Swift pour sauvegarder des informations ! Mais elle est aussi très puissante, puisqu’il est non seulement possible d’enregistrer des valeurs « simples », comme des entiers, des nombres et de booléens, mais aussi des valeurs plus complexes, comme des tableaux et des dictionnaires. En « bidouillant » un peu, on peut même enregistrer des images !

Bref, pas de raisons de s’en priver !

Comme toujours, le code source est disponible sur mon dépôt Git : https://gitlab.com/camilleBar/swift-nsuserdefaults-ios-demo-project

Et si vous avez des questions / suggestions, n’hésitez pas, commentez !

Deep Learning avec TensorFlow

Ce qu’il y a de bien avec le confinement, c’est que les week-ends semblent durer plus longtemps ! Du coup, cela me laisse le temps de me cultiver !

Le dernier livre en date, « Deep Learning avec TensorFlow », est en fait la suite du livre « Le Machine Learning avec Python », dont je parle ici.

Pour celleux qui ne seraient pas encore trop au clair avec les notions de Machine Learning (ML), Deep Learning, Intelligence Artificielle (AI), voici un petit résumé des épisodes précédents 🙂

Les débuts de l’Intelligence Artificielle remontent assez loin, on cite souvent Alan Turing dans les années 1950. Elle désigne tous les traitements automatisés que l’on retrouve en Industrie (automates) et en informatique (logiciels). Là, je sens que j’ai cassé un mythe…

En fait, dans l’imaginaire collectif, AI désigne surtout une Intelligence Artificielle Forte (AGI), qui serait totalement autonome et auto-apprenante. Hélas (?), cela n’existe pas encore à l’heure où j’écris ces lignes – a priori – 😉

Le Machine Learning, c’est déjà plus glamour, car là, ce sont les machines qui « apprennent par elles-mêmes ». Attention cependant, tout cela est basé sur des mathématiques, des statistiques, il n’y a donc pas d’AGI ni de miracle derrière tout cela, seulement beaucoup d’intelligence humaine. On utilise des modèles de type régression, Naïve Bayes, clustering, arbres de décision, random Forest…

Le deep learning enfin fait partie du ML, mais fait appel à des réseaux de neurones. Elle fonctionne par bio-mimétisme : la machine essaye de reproduire le mécanisme de notre cerveau ! Il est apparu il y a 10 ans environ, notamment dans la reconnaissance d’images ou de langage naturel.

On en vient alors à TensorFlow !

TensorFlow est un outil d’apprentissage automatique développé par Google, il est open source et basé sur Google Brain.

Du coup, on parle de Deep Learning, donc de réseaux de neurones.

Après une courte (ré)-introduction aux concepts de base du ML, ce livre fait donc une introduction aux réseau de neurones artificiels et à leur entrainement.

Il aborde successivement les réseaux de neurones convolutifs, les réseaux de neurones récurrents, les autoencodeurs et enfin l’apprentissage par renforcement.

Perso, plus j’avance dans mon apprentissage du ML, plus j’ai l’impression que l’on se rapproche des méthodes d’apprentissages que l’on utilise avec nos animaux domestiques. L’apprentissage par renforcement, qui utilise les récompenses, en est un exemple. Même si bien sûr nous sommes encore loin, pour le moment, de la complexité d’un cerveau animal. Mais cela à toujours un coté « magique » 🙂 !

En tous cas, je suis de plus en plus captivée par le ML, et si vous aussi vous avez envie d’approfondir le sujet, ce livre est fait pour vous !

En attendant, n’hésitez pas à laisser des remarques / commentaires si vous en avez !

Créer facilement ses classes modèles en Dart à partir d'un JSON

Convertir du json en modele dart facilement

Travaillant actuellement sur un projet en Dart / Flutter, j’ai fait la connaissance du super travail de Javier Lecuona, qu’il trouve ici mon éternelle gratitude 🙂 .

En effet, créer un modèle à partir de fichier JSON est potentiellement source de bugs, surtout lorsque le JSON est un peu complexe. C’est ici qu’intervient l’outil « JSON to Dart » : https://javiercbk.github.io/json_to_dart/

L’usage est simplisme ! Vous récupérez l’intégralité de votre JSON (ici un exemple issu de jsonplaceholder.com) :

Vous le collez dans l’interface de JSON to Dart :

Vous ajoutez le nom que vous désirez donner à votre classe, et il ne reste plus qu’à appuyer sur le bouton « Generate Dart » et à copier / coller le code généré !

Génial je vous dit !

Si vous connaissez la même chose pour Swift, n’hésitez pas à me le faire savoir ! 😉

La Machine learning avec Python

Lorsque l’on s’intéresse au machine learning, ce ne sont pas les ressources qui manquent… mais généralement, elles sont en anglais… Ce n’est pas forcément un problème, mais c’est quand même plus agréable (pour moi) lorsque je trouve des ressources en langue française 🙂

Du coup, je me suis procurée ce livre auprès d’un grand site de vente en ligne… et je désirais vous partager ma satisfaction 🙂

Avec ce livre, si vous avez quelques bases de Python (ou pas, mais faut quand même avoir de bonnes bases dans un langage de programmation, vous aurez une initiation au ML sans devoir passer des jours de remise à niveau en mathématiques.

Le principal intérêt est que, contrairement à beaucoup de tutos en lignes, on part de la pratique pour arriver aux principes mathématiques sous-jacents. Perso, cette manière d’apprendre me convient beaucoup mieux.

En se basant principalement sur scikit-learn, sont abordés :

  • L’apprentissage supervisé avec ses les différents modèles, leur usage, leurs avantages et leur limites, ainsi que les méthodes pour estimer leur incertitude.
  • Idem pour l’apprentissage non supervisé
  • La représentation des donnés
  • L’évaluation et l’amélioration des modèles
  • Le Chaînage d’algorithmes et pipelines
  • Le travail avec les données textuelles

Cela fait quand même un bon aperçu des techniques de ML actuelles !

Et pour aller plus loin, voici quelques liens que je trouve intéressants :

Bonnes lectures et si vous avez des suggestions, n’hésitez pas, commentez !

Nouvelle mise à jour de l’application mobile Kayak Tracker !

Toujours ravie de satisfaire les demandes des utilisateurs.rices, j’ai rajouté quelques fonctions dans l’application Kayak Tracker.

Vous pouvez maintenant exporter vos tracks soit d’application à application (via un email), soit dans Google Earth !

Voici la vidéo explicative :

Parmi les autres nouveautés / améliorations, il y a également de nouveaux fonds de carte (vue satellite, vue mixte) et une amélioration des traductions !

Comme d’habitude, l’application est à télécharger sur l’app store :

Et bonnes balades !