<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Sylvain METAYER</title>
    <description>The latest articles on DEV Community by Sylvain METAYER (@sylvainmetayer).</description>
    <link>https://dev.to/sylvainmetayer</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F115736%2Fa42d85f6-541f-47fc-9390-8eddc08da44d.jpg</url>
      <title>DEV Community: Sylvain METAYER</title>
      <link>https://dev.to/sylvainmetayer</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sylvainmetayer"/>
    <language>en</language>
    <item>
      <title>Notre retour (Build &amp; Deploy) sur Devoxx France 2024</title>
      <dc:creator>Sylvain METAYER</dc:creator>
      <pubDate>Thu, 30 May 2024 15:59:57 +0000</pubDate>
      <link>https://dev.to/onepoint/notre-retour-build-deploy-sur-devoxx-france-2024-kg7</link>
      <guid>https://dev.to/onepoint/notre-retour-build-deploy-sur-devoxx-france-2024-kg7</guid>
      <description>&lt;p&gt;Après les retours de nos collègues, nous allons faire les notres sur la partie Build &amp;amp; Deploy de l'édition 2024 de Devoxx France. &lt;/p&gt;

&lt;p&gt;Et comme chaque année, le moins que l'on puisse dire, c'est qu'il y avait du choix, avec plusieurs dizaines de conférences sur les façons de packager et déployer nos applications ! Sans plus attendre, voici les sujets qui nous ont marqué avec &lt;a class="mentioned-user" href="https://dev.to/cfarges"&gt;@cfarges&lt;/a&gt; et &lt;a class="mentioned-user" href="https://dev.to/jtama"&gt;@jtama&lt;/a&gt; dans cette catégorie.&lt;/p&gt;

&lt;h1&gt;
  
  
  GatewayAPI, 10 ans de maturation pour une nouvelle API Kubernetes
&lt;/h1&gt;

&lt;p&gt;Cette année &lt;a href="https://www.linkedin.com/in/davinkevin/"&gt;Kévin Davin&lt;/a&gt; est venu nous parler de la Gateway API. &amp;lt;3&lt;/p&gt;

&lt;p&gt;En effet, avec pas mal de recul, le constat est clair : la ressource &lt;em&gt;Ingress&lt;/em&gt; n'est pas suffisante. Elle prend en charge trop de responsabilité, n'est pas suffisamment spécifique, laissant chacune de ses implémentations faire différent choix pour la même solution (manque de portabilité), et ne rend pas non plus suffisamment de service.&lt;/p&gt;

&lt;p&gt;La Gateway API est orientée &lt;em&gt;rôle&lt;/em&gt; avec plusieurs &lt;em&gt;kinds&lt;/em&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;La &lt;em&gt;GatewayClass&lt;/em&gt;:: Pour le provider, celui qui connait le réseau&lt;/li&gt;
&lt;li&gt;La &lt;em&gt;Gateway&lt;/em&gt; :: Pour le cluster operator, celui qui connait le cluster 🤷&lt;/li&gt;
&lt;li&gt;Les &lt;em&gt;GRPCRoute&lt;/em&gt; / &lt;em&gt;HTTPRoute&lt;/em&gt;:: Pour les développeurs, ceux qui connaissent les applications.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Chaque personne ayant ses compétences, ses connaissances, ses responsabilités, et ses &lt;em&gt;kind&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Cette api va suffisamment loin pour empiéter largement sur une partie des services offerts par les &lt;em&gt;service mesh&lt;/em&gt; (dont le traffic splitting).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=zaLEpr0"&gt;Replay&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Multi Kubernetes, Multi Régions, Au-secours !
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/aur%C3%A9lien-moreau-32075a105/"&gt;Aurélien Moreau&lt;/a&gt; et &lt;a href="https://www.linkedin.com/in/nicolas-lavacry-13a21415/"&gt;Nicolas Lavacry&lt;/a&gt; présentent, au travers d'un REX avec pour exemple une entreprise fictive, les besoins de leur nouvelle entreprise : CASDAL. Cette dernière a en effet 2 marchés : un marché américain, et un français. Comment gérer l'hébergement de cette application ? &lt;/p&gt;

&lt;p&gt;On découvre alors comment déployer un environnement Kubernetes sur plusieurs régions, et le besoin de créer plusieurs clusters pour assurer une latence faible, Kubernetes n'aimant en effet pas les latences si un continent sépare plusieurs noeuds. Leur démo, parfaitement maitrisée permet de nous montrer l'envers du décor et des outils/méthodes pour garantir qualité de service, latence faible et  l'intégrité de nos données !&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=ADp3fonoDWM"&gt;Replay&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Notre dépendance à l'Open Source est effrayante. SLSA, SBOM et Sigstore à la rescousse
&lt;/h1&gt;

&lt;p&gt;Cette conférence, très intéressante, nous montre à quel point nous dépendons de logiciels/dépendances tierces dans nos applications, sur lesquelles nous n'avons pas la main. Cela signifie-t-il pour autant qu'il faut les utiliser sans valider leur intégrité, pour éviter qu'un intermédiaire vienne injecter du code malveillant lors d'une étape de packaging de notre application ?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/sabdelfettah/"&gt;Abdellfetah Sghiouar&lt;/a&gt; nous présente alors des outils sur lesquels nous pouvons nous appuyer pour garantir la tracabilité de nos applications, tel que cosign pour signer nos images avant de les déployer dans notre cluster, ou encore SBOM pour lister tous les paquets utilisés dans notre application.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=MEJ-ae_D8X4"&gt;Replay&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Au cœur de la ruche eBPF!
&lt;/h1&gt;

&lt;p&gt;J'avais déjà entendu parler plusieurs fois d'eBPF, sans vraiment savoir ce dont il s'agissait. Cette conférence était donc l'opportunité pour moi de creuser un peu le sujet ! Bien que très technique, &lt;a href="https://www.linkedin.com/in/aboullaite/"&gt;Mohammed Aboullaite&lt;/a&gt; a bien expliqué le fonctionnement d'un module du kernel et l'évolution d'eBPF. Je ne pense pas avoir l'usage dès demain d'écrire mon propre module kernel, mais je comprends mieux toute la "hype" autour de ça et la plus-value d'eBPF afin de pouvoir simplifier la distribution d'un nouveau module, tout en ayant des performances natives et en gardant la même sécurité.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=XaBbxb0r0fc"&gt;Replay&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Le cauchemar des attaquants : une infrastructure sans secret
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/thibault-lengagne-76a35583/"&gt;Thibault Lengagne&lt;/a&gt; nous montre comment s'appuyer sur Vault et Boundary afin de supprimer la plupart des mots de passes &lt;br&gt;
de nos environnements tout en conservant une approche "Secure by design" et avoir une traçabilité complète des différents accès aux composants applicatifs.&lt;/p&gt;

&lt;p&gt;Avec une architecture Zero-Credentials, on dispose d'un seul mot de passe par utilisateur qui permettra d’accéder à travers Boundary &lt;br&gt;
à nos applications. L'association de Boundary et Vault permet de créer des identifiants temporaires et de garder une traçabilité complète des accès aussi bien en environnement de développement que jusqu'à la production.&lt;/p&gt;

&lt;p&gt;Thibault nous montre une solution d'architecture et les bonnes pratiques associées à ces concepts. A travers plusieurs petites démo, on commence à avoir envie de déployer ça dans nos environnements après avoir vu la taille de l'équipe grandir.&lt;/p&gt;

&lt;p&gt;Fini les rotations de mot de passe à n'en plus finir, on a un accès et le reste est géré par les politiques définies dans le code source de notre infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=U3AL2pqPg3I"&gt;Replay&lt;/a&gt; &lt;/p&gt;

&lt;h1&gt;
  
  
  Check-list ultime pour rendre vos app cloud native
&lt;/h1&gt;

&lt;p&gt;Dans cette conférence &lt;a href="https://www.linkedin.com/in/katiahimeur/"&gt;Katia Himeur&lt;/a&gt; revient sur les différents contextes qui peuvent nous amener à déplacer nos applications sur le "cloud".&lt;/p&gt;

&lt;p&gt;Elle nous rappelle que la définition du "cloud" peut être vastement différente suivant nos interlocuteurs. La complexité, la pléthore de solutions disponibles (plus de 2000 outils disponibles chez la CNCF par exemple) et la diversité des fournisseurs doivent être pris en compte lors d'un projet cloud, que ce soit pour une nouvelle application&lt;br&gt;
ou le portage d'un existant.&lt;/p&gt;

&lt;p&gt;Entre la méthodologie et le REX, la conférence de Katia est une mine d'informations et d'inspiration sur la manière d'aborder ce type de projet.&lt;/p&gt;

&lt;p&gt;Les points présentés se situent autant au niveau de la technique que de l'humain, avec l'onboarding des équipes et la conduite du changement. Les principaux points durs de ces projets sont pris en compte, serait-ce la recette ultime ?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=3s-gtziZ3UU"&gt;Replay&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Le mot de la fin
&lt;/h1&gt;

&lt;p&gt;Merci à @onepoint pour nous permettre de participer chaque année à ce moment privilégié !&lt;br&gt;
N'hésitez pas à aller regarder les autres articles publiés par nos collègues sur les autres thèmes ! &lt;/p&gt;

&lt;p&gt;Retrouvez notre série d'articles sur Devoxx :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://dev.to/onepoint/devoxx-france-2024-8o"&gt;Intro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/onepoint/notre-retour-frontend-sur-devoxx-2024-1jgg"&gt;Frontend&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/onepoint/mais-oui-ia-de-la-data-a-devoxx-france-2024--4kpe"&gt;Data/IA&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/onepoint/notre-retour-backend-sur-devoxx-2024-4knc"&gt;Backend&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>devoxx</category>
    </item>
    <item>
      <title>DevoxxFR 2023</title>
      <dc:creator>Sylvain METAYER</dc:creator>
      <pubDate>Thu, 27 Apr 2023 07:49:39 +0000</pubDate>
      <link>https://dev.to/onepoint/devoxxfr-2023-1ei</link>
      <guid>https://dev.to/onepoint/devoxxfr-2023-1ei</guid>
      <description>&lt;p&gt;Nous sommes (re)venus à &lt;a href="https://www.devoxx.fr/"&gt;DevoxxFR&lt;/a&gt; pour cette 11ème édition, et il y avait du choix ! Avec en moyenne 8 conférences/tool-in-action en parallèle, il y en a pour tous les goûts ! Ça tombe bien, ayant tous des préférences différentes, nous avons pu couvrir un bon nombre des conférences sur différents thèmes : front, IA, CI/CD,  Kubernetes...&lt;/p&gt;

&lt;p&gt;Pour les moments où il y a trop de choix sur un même créneau, il est toujours possible de compter sur la &lt;a href="https://www.youtube.com/@DevoxxFRvideos"&gt;chaine Youtube de Devoxx&lt;/a&gt;. En effet, la quasi-totalité des talks sont déjà disponibles en replay ! &lt;/p&gt;

&lt;p&gt;Parmi ce que nous avons eu l'occasion de voir, voici notre top 5 !&lt;/p&gt;

&lt;h2&gt;
  
  
  Top 5
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1&lt;sup&gt;er&lt;/sup&gt; dans nos ❤️ "Alice au pays d’OpenTelemetry"
&lt;/h3&gt;

&lt;p&gt;Il s'agit d'un REX de la mise en place de l'observabilité dans un projet avec plusieurs briques logicielles. Après une présentation des concepts de l'observabilité, d'OpenTelemetry, &lt;a class="mentioned-user" href="https://dev.to/jtama"&gt;@jtama&lt;/a&gt; nous présente de façon itérative son expérience et les obstacles rencontrés, afin de dompter ce "collecteur magique" et d'unifier nos logs, traces et métriques.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=0xSCUgHxZu0"&gt;Replay Youtube&lt;/a&gt;&lt;br&gt;
&lt;a href="https://jtama.github.io/alice-au-pays-d-opentelemetry/#/"&gt;Lien vers les slides&lt;/a&gt;&lt;br&gt;
&lt;a href="https://cfp.devoxx.fr/2023/talk/ZHL-4882/_Alice_au_pays_d'OpenTelemetry"&gt;Lien du CFP&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Comprendre et utiliser les modèles de langage d'IA
&lt;/h3&gt;

&lt;p&gt;Cette université de 3h présentée par &lt;a href="https://twitter.com/collet_seb"&gt;Sébastien Collet&lt;/a&gt; permet de découvrir les modèles de Machine Learning et Deep Learning, leur fonctionnements et limites ainsi que les évolutions des dernières années.&lt;/p&gt;

&lt;p&gt;Un focus est également fait sur les modèles de langages prédictifs, ce qui permet de comprendre pourquoi les modèles tel que ChatGPT ont les biais qui ont été relevés récemment (hallucinations, toxicité...).&lt;/p&gt;

&lt;p&gt;Si vous souhaitez un cours complet, vulgarisé et abordable, avec un historique des modèles d'IA, ce talk est pour vous !&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=ZbWL2W53BXY"&gt;Replay Youtube&lt;/a&gt;&lt;br&gt;
&lt;a href="https://docs.google.com/presentation/d/e/2PACX-1vReIr93Udkzm3S0qn59AyFDYQjuXq0puGNYlFQYqDyoHqio_UgHbqQV1Qm4sUwt0ZeawfvGFdQOCHLc/pub#slide=id.g21f549ddc89_0_0"&gt;Slides&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/sebastien-collet/talks/blob/master/Devoxx%20FR%202023/Ressources.md"&gt;Dépôt Github&lt;/a&gt;&lt;br&gt;
&lt;a href="https://cfp.devoxx.fr/2023/talk/OOZ-7789/Comprendre_et_utiliser_les_modeles_de_langage_d'IA"&gt;Lien du CFP&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Une Architecture GitOps from scratch : Gitlab, Ansible, Terraform, Kubernetes et AWS
&lt;/h3&gt;

&lt;p&gt;Avec cette université de 3 heures, &lt;a href="https://www.twitter.com/@LoicOrtola"&gt;Loïc Ortola&lt;/a&gt; et &lt;a href="https://www.twitter.com/@AurelOps"&gt;Aurélien Moreau&lt;/a&gt; de &lt;a href="https://www.takima.fr/"&gt;Takima&lt;/a&gt;, nous propose une plongée dans la mise en place d'un cluster Kubernetes via de l'&lt;em&gt;Infrastructure as code&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;L'utilisation de chaque outil est justifiée par son rôle. Le talk développe petit à petit la mise en place d'une infrastructure complexe, multi-cluster en partant du provisionning de l'infrastructure jusqu'au déploiement continue des applications dans une approche 100% Gitops.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=FyAD_-LAMLo"&gt;Replay Youtube&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gitlab.com/takima-school/takione"&gt;Lien du dépôt Gitlab&lt;/a&gt;&lt;br&gt;
&lt;a href="https://cfp.devoxx.fr/2023/talk/EJI-3118/Une_Architecture_GitOps_from_scratch_:_Gitlab,_Ansible,_Terraform,_Kubernetes_et_AWS"&gt;Lien du CFP&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Géopolitique de la data
&lt;/h3&gt;

&lt;p&gt;Avec cette keynote de 20 minutes, &lt;a href="https://twitter.com/bayartb"&gt;Benjamin Bayart&lt;/a&gt; co-fondateur de la quadrature du net, nous décrit à travers différents exemples et vulgarisations, ce qu'est la Géopolitique de la data et comment la réglementation européenne a évolué sur la protection des données personnelles.&lt;/p&gt;

&lt;p&gt;Il clôture son discours en passant le message que tout ingénieur informatique fait de la géopolitique de la data.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=EOOhYaGGArc"&gt;Replay Youtube&lt;/a&gt;&lt;br&gt;
&lt;a href="https://cfp.devoxx.fr/2023/talk/ITD-6079/Geopolitique_de_la_data"&gt;Lien du CFP&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Démystifions les composants internes de Kubernetes
&lt;/h3&gt;

&lt;p&gt;L'objectif de ce talk est de démontrer que Kubernetes n'est pas "un outil automagique" mais qu'il se base sur des briques logicielles individuellement "simple" mais qui assemblées font la robustesse de Kubernetes.&lt;/p&gt;

&lt;p&gt;Au travers d'une démonstration live, &lt;a href="https://twitter.com/zwindler"&gt;Denis Germain&lt;/a&gt; nous présente les différentes briques composant Kubernetes et leur utilité pour finalement arriver sur une application déployée sur un cluster "fait main" !&lt;/p&gt;

&lt;p&gt;Si vous souhaitez savoir ce qui se cache derrière un "kubectl apply -f mon-deploiement.yaml" ou que vous souhaitez comprendre comment les composants "etcd", "api-server", "controller-manager", "scheduler", "kubelet", "containerd" ou "CNI" fonctionnent ensemble, ce talk est pour vous !&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=OCMNA0dSAzc"&gt;Replay Youtube&lt;/a&gt;&lt;br&gt;
&lt;a href="https://blog.zwindler.fr/talks/2023-demystifions-kubernetes/index.html"&gt;Slides&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/zwindler/demystifions-kubernetes"&gt;Github contenant la démo&lt;/a&gt;&lt;br&gt;
&lt;a href="https://cfp.devoxx.fr/2023/talk/NSW-2452/Demystifions_les_composants_internes_de_Kubernetes"&gt;Lien du CFP&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  SELECT 'amazing_features' FROM "postgresql"
&lt;/h3&gt;

&lt;p&gt;Dans ce Tools in action, &lt;a href="https://twitter.com/davinkevin"&gt;Kevin Davin&lt;/a&gt; nous propose la (re)découverte de features méconnues ou oubliées de postgresql. &lt;/p&gt;

&lt;p&gt;Entre les performances, les sucres syntaxiques et les bonnes pratiques, Kevin nous montre la vaste boite à outil dont dispose postgres pour aider le développeur à proposer des applications plus performantes et maintenables. &lt;/p&gt;

&lt;p&gt;Il nous présente aussi quelques mauvaises pratiques qui sont pourtant monnaie courante lorsque l'on aborde ce SGBD d'un oeil novice. &lt;/p&gt;

&lt;p&gt;Que vous utilisiez ou non postgres, ce talk vous montrera ses super pouvoirs et vous invite à l'essayer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=I1rAkNDv1Ws"&gt;Replay Youtube&lt;/a&gt;&lt;br&gt;
&lt;a href="https://download.davinkevin.fr/presentations/select-amazing-features-from-postgresql/devoxxfr-2023/select-amazing-features-from-postgresql.pdf"&gt;Slides&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gitlab.com/davinkevin.fr/presentations/select-amazing_features-from-postgresql"&gt;Dépôt Gitlab&lt;/a&gt;&lt;br&gt;
&lt;a href="https://cfp.devoxx.fr/2023/talk/OFK-3682/SELECT_'amazing_features'_FROM_%22postgresql%22"&gt;Lien du CFP&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Pour finir
&lt;/h2&gt;

&lt;p&gt;DevoxxFR, c'est 3 jours de conférences, voyez ça comme un marathon, pas un sprint ! Planifiez votre programme, et prévoyez des temps de pause, pour faire un tour sur les nombreux stands de produits/logiciels que nous utilisons tous les jours (ou que nous avons eu l'occasion de découvrir), qui sont là pour recueillir des retours d'expérience et propositions d'améliorations ! &lt;/p&gt;

&lt;p&gt;Pour faciliter vos prises de notes, nous avons également développé un petit outil pour générer automatiquement vos templates de notes en fonction de vos favoris. &lt;a href="https://github.com/cfrezier/devoxx2adoc/"&gt;Le dépôt Github&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Écrit à 10 mains avec les fabuleux &lt;a class="mentioned-user" href="https://dev.to/cfrezier"&gt;@cfrezier&lt;/a&gt; &lt;a class="mentioned-user" href="https://dev.to/cfarges"&gt;@cfarges&lt;/a&gt; &lt;a class="mentioned-user" href="https://dev.to/jtama"&gt;@jtama&lt;/a&gt; et &lt;a class="mentioned-user" href="https://dev.to/florianallainmat"&gt;@florianallainmat&lt;/a&gt; !&lt;/p&gt;

&lt;p&gt;On en profite pour faire passer un grand merci à &lt;a href="https://www.groupeonepoint.com"&gt;onepoint&lt;/a&gt; pour l'organisation de ces 3 jours au top !&lt;/p&gt;

&lt;p&gt;Merci ! 😊&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>java</category>
    </item>
    <item>
      <title>How do you convince clients that security is not an option?</title>
      <dc:creator>Sylvain METAYER</dc:creator>
      <pubDate>Thu, 30 Jan 2020 21:26:37 +0000</pubDate>
      <link>https://dev.to/sylvainmetayer/how-do-you-convince-clients-that-security-is-not-an-option-515j</link>
      <guid>https://dev.to/sylvainmetayer/how-do-you-convince-clients-that-security-is-not-an-option-515j</guid>
      <description>&lt;p&gt;Hello everybody,&lt;/p&gt;

&lt;p&gt;Today at work, I've been facing an issue : &lt;/p&gt;

&lt;p&gt;Client want a way to reset user's password for a web application. Classic.&lt;/p&gt;

&lt;p&gt;For context, their is already a mechanism for every users to reset their password by receiving an unique link by mail.&lt;/p&gt;

&lt;p&gt;However, he wants a way to choose the user's password when they ask to reset their password on support center (over phone)&lt;/p&gt;

&lt;p&gt;Client argue that some of its clients, not tech people, have trouble using this mechanism or that email is not a reliable way to reset password (delay, possible loss of email when sending it, user unable to access their mailbox...). He also add that its clients have money and  when something is wrong and they can't access their account, he want to provide them a way to allow an immediate login. &lt;/p&gt;

&lt;p&gt;From my perspective, this involve some downsides :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The probability that the user will change its password after getting one is close to 0. Or, as client said, if they are not tech people, they will always call support center asking for another password reset.&lt;/li&gt;
&lt;li&gt;This will overload support center and will make them less available for real requests.&lt;/li&gt;
&lt;li&gt;User password is no longer known by the user himself/herself. At least both admin/support center &lt;strong&gt;and&lt;/strong&gt; user know it now. &lt;em&gt;I'm attached to user's privacy, so this is a big one for me&lt;/em&gt;. I would not like to use a system where an admin can change my password as he'd like (of course, an admin can always change a password if he access database, run a custom script on server or whatever but this &lt;strong&gt;should not be a feature&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;If for any reason, a bug allow to run this unauthenticated, all users' account are compromised. This could not be possible if this &lt;em&gt;feature&lt;/em&gt; was not asking to be implemented.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One alternative could be to generate a link for a one-time login and give them to the client, so they can log in and change their password (exactly the pattern of initial password reset, except we don't send it by mail) but as I said, support center is made over the phone, and asking an user to enter a 64 char random string to log in is not very convenient and will certainly lead to typo errors.&lt;/p&gt;

&lt;p&gt;Also, as I said : &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"He also add that its clients have money and  when something is wrong and they can't access their account, he want to provide a way to allow an immediate connection."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;From my perspective, this is because its user's have money that security should not be an option and we should reduce risk their private data from being accessible. Not the opposite.&lt;/p&gt;

&lt;p&gt;Am I the only one wondering why this request ? What do you think about it ? Is there an alternative I could provide to my client ? Or at least others argument to convince him that this is not a good idea?&lt;/p&gt;

&lt;p&gt;Or at the opposite, is this request perfectly fine and I am being too much paranoid ?&lt;/p&gt;

&lt;p&gt;Thanks a lot for reading, I'm looking forward to read your answers ! Apologize my English, I'm not a native speaker.&lt;/p&gt;

</description>
      <category>security</category>
      <category>webdev</category>
      <category>help</category>
    </item>
    <item>
      <title>I wrote a small email aliases manager</title>
      <dc:creator>Sylvain METAYER</dc:creator>
      <pubDate>Tue, 28 Jan 2020 13:06:22 +0000</pubDate>
      <link>https://dev.to/sylvainmetayer/i-wrote-a-small-email-aliases-manager-2l73</link>
      <guid>https://dev.to/sylvainmetayer/i-wrote-a-small-email-aliases-manager-2l73</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;This article is a translation of my french article. You can find the original translation here : &lt;a href="https://sylvainmetayer.fr/projet/email-alias-manager/"&gt;https://sylvainmetayer.fr/projet/email-alias-manager/&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://app.netlify.com/start/deploy?repository=https://github.com/sylvainmetayer/alias-gandi-angular"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_vQIZzN6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.netlify.com/img/deploy/button.svg" alt="" width="146" height="32"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The idea
&lt;/h2&gt;

&lt;p&gt;Tired of spam ? Of giving up on your email on every service you sign up for ? Email aliases are coming to save you ! &lt;/p&gt;

&lt;p&gt;From an idea of &lt;a href="https://adrienchinour.me"&gt;Adrien Chinour&lt;/a&gt;, I decided to create a small email aliases manager. The goal is to quickly generate aliases when you sign up on a new site so you can avoid filling your real address. So, when you see that the website you signed up to is sending you too much email, delete the alias and voila, no more undesirable emails !&lt;/p&gt;

&lt;p&gt;I manage my domains (and the associated mailboxes) with &lt;a href="https://gandi.net"&gt;Gandi&lt;/a&gt;, so I took a look how I could interact with their API to manage my aliases.&lt;/p&gt;

&lt;p&gt;I used &lt;a href="https://angular.io"&gt;Angular&lt;/a&gt; and &lt;a href="https://netlify.com"&gt;Netlify&lt;/a&gt; serverless functions (written in NodeJS) so I could call the Gandi API from there.&lt;/p&gt;

&lt;p&gt;The idea is simple : log in with a password, predefined in the environnements variables of Netlify, get a JWT token signed with a secret known only from serverless functions and then we can consider that you're logged in ! Because I do not need to manage multiple users, this is fine to me.&lt;/p&gt;

&lt;p&gt;Once you're authenticated, serverless function take care of loading domains list, mailboxes and when you're on the screen below, you can add and remove aliases of each mailbox.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fn86bKWo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/qh5sw88ii83yri571x9t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fn86bKWo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/qh5sw88ii83yri571x9t.png" alt="Alt Text" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;In the case where Gandi client would like to manage their aliases by using this project, I tried to integrate oauth2, so I could authenticate myself against Gandi provider. This also helped me to better understand oauth2. To test this locally, I used the oauth2 mock by the &lt;a href="https://github.com/axa-group/oauth2-mock-server"&gt;AXA group&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sadly, Gandi v5 API is still in beta and the authentication provider does not allow to interact with domains and mailboxes.&lt;/p&gt;

&lt;p&gt;If their is requests for, I might integrate others email providers so others can manage their aliases if their are not using Gandi as registrar.&lt;/p&gt;

&lt;p&gt;Until this is available, I leave my current work on a &lt;a href="https://github.com/sylvainmetayer/alias-gandi-angular/tree/feature/oauth2"&gt;dedicated branch&lt;/a&gt; and will work on it when this is available.&lt;/p&gt;

&lt;p&gt;As a workaround, I added a button to deploy on netlify with one click for those wishing to use this little project. People need to generate their own API key from &lt;a href="https://docs.gandi.net/fr/noms_domaine/utilisateurs_avances/api.html"&gt;their Gandi account&lt;/a&gt; and fill a few environnments variable.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;Comment&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GANDI_API_KEY&lt;/td&gt;
&lt;td&gt;Gandi API key&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;JWT_SECRET&lt;/td&gt;
&lt;td&gt;A random string to use as JWT secret.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LOGIN_PASSWORD&lt;/td&gt;
&lt;td&gt;A password for the login screen&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GANDI_API_HOST&lt;/td&gt;
&lt;td&gt;Gandi API root : &lt;code&gt;api.gandi.net&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GANDI_API_VERSION&lt;/td&gt;
&lt;td&gt;Gandi API version : &lt;code&gt;/v5&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;JWT secret can be generated with the following command. &lt;/p&gt;

&lt;p&gt;&lt;code&gt;cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Sources are available on &lt;a href="https://github.com/sylvainmetayer/alias-gandi-angular"&gt;Github&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Don't hesitate to give feedback on this little project ! &lt;/p&gt;

</description>
      <category>angular</category>
      <category>serverless</category>
      <category>javascript</category>
      <category>showdev</category>
    </item>
    <item>
      <title>What books will you recommand to learn more about automation ?</title>
      <dc:creator>Sylvain METAYER</dc:creator>
      <pubDate>Tue, 11 Dec 2018 09:33:24 +0000</pubDate>
      <link>https://dev.to/sylvainmetayer/what-books-will-you-recommand-to-learn-more-about-automation--2oe0</link>
      <guid>https://dev.to/sylvainmetayer/what-books-will-you-recommand-to-learn-more-about-automation--2oe0</guid>
      <description>&lt;p&gt;I'm seeking resources for my report that will try to answer the following problematic : "How automation can reduce humans errors during the lifetime of an application ?"&lt;/p&gt;

&lt;p&gt;This will talk about automated tests, automated deployments and everything that will allow to minimize mistakes during development.&lt;/p&gt;

&lt;p&gt;Thanks by advance for your recommendations ! :)&lt;/p&gt;

</description>
      <category>question</category>
      <category>automation</category>
      <category>discuss</category>
      <category>help</category>
    </item>
    <item>
      <title>Released my first Gem : FontAwesome SVG</title>
      <dc:creator>Sylvain METAYER</dc:creator>
      <pubDate>Fri, 30 Nov 2018 00:00:00 +0000</pubDate>
      <link>https://dev.to/sylvainmetayer/released-my-first-gem--fontawesome-svg-2o1</link>
      <guid>https://dev.to/sylvainmetayer/released-my-first-gem--fontawesome-svg-2o1</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Disclaimer: This is my first post in English and it is not my native language. If I've made grammatical mistakes, please kindly tell me how to improve, so I can be better next time ! &lt;/p&gt;

&lt;p&gt;You can find the french version of this article on my website : &lt;a href="https://sylvainmetayer.fr/projet/jekyll-gem-svg-fontawesome/"&gt;https://sylvainmetayer.fr/projet/jekyll-gem-svg-fontawesome/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Need
&lt;/h2&gt;

&lt;p&gt;I wanted to use &lt;a href="http://fontawesome.com/"&gt;FontAwesome&lt;/a&gt; on my &lt;a href="https://sylvainmetayer.fr/"&gt;personal website&lt;/a&gt; without integrating the whole library and without downside performance. Also, I didn't wanted to use Javascript to display icons.&lt;/p&gt;

&lt;p&gt;I've looked for a way to include only the used icon, without placing them one by one, but didn't find any things that suited my need. That's how I've came to create my first jekyll plugin&lt;/p&gt;

&lt;p&gt;&lt;a href="https://jekyllrb.com/docs/plugins/your-first-plugin/"&gt;The documentation&lt;/a&gt; is clear enough and helped me a lot.&lt;/p&gt;

&lt;h2&gt;
  
  
  Realisation
&lt;/h2&gt;

&lt;p&gt;I only want to show icons, so I created 2 Liquid Tags, with parameters.&lt;/p&gt;

&lt;p&gt;My first tag get the icon type (regular, solid or brand) and the icon name I want to use. With that, I generate the according svg markup.&lt;/p&gt;

&lt;p&gt;Then, I have to generate the svg definition of the icon inside the page. &lt;/p&gt;

&lt;p&gt;To do so, I add the icon name and type to the jekyll page metadata, in a simple array. &lt;/p&gt;

&lt;p&gt;And with my second tag, I get all of the icons used, per page, and generated the SVG definitions. This mean if a page doesn't use icons, nothing is generated :)&lt;/p&gt;

&lt;p&gt;I've first did this with the &lt;code&gt;_plugins&lt;/code&gt; directory, because it was easier to debug. When it was working, I decided to package it in a Gem, so it will be available for everyone, if it come to be useful for someone :)&lt;/p&gt;

&lt;p&gt;Creating a Gem is easy, the &lt;a href="https://bundler.io/v1.17/guides/creating_gem.html"&gt;Bundler guide&lt;/a&gt; being very helpful.&lt;/p&gt;

&lt;p&gt;I've tried to follow Ruby conventions, but as I'm not familiar with this language, I'm open to every suggestions to improve it.&lt;/p&gt;

&lt;p&gt;I've release the first version, and now, I've got to fully test it and handle potential errors (missing icons, ...), that are for now.... Handled in a optimistic way :( &lt;/p&gt;

&lt;h2&gt;
  
  
  Usage
&lt;/h2&gt;

&lt;p&gt;You can use the gem this way.&lt;/p&gt;

&lt;p&gt;When you want to print a icon, use the following tag (this one generate the &lt;a href="https://fontawesome.com/icons/twitter?style=brands"&gt;Twitter icon&lt;/a&gt;)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{% fa_svg fab.fa-twitter %}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, you have to generate the SVG definitions of all your used icons, in every page.&lt;/p&gt;

&lt;p&gt;It must be defined only once, in a common part of all your pages (a footer layout is a good choice)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{% fa_svg_generate %}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, enjoy your icons :)&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;As this liquid tag is not on dev.to, nothing is rendered here. You can checkout how it look &lt;a href="https://sylvainmetayer.fr/projet/jekyll-gem-svg-fontawesome/"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;p&gt;If you want to check out the code, it's on Github &lt;a href="https://github.com/sylvainmetayer/jekyll-fontawesome-svg"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To download the Gem, &lt;a href="https://rubygems.org/gems/jekyll-fontawesome-svg"&gt;it's over here&lt;/a&gt; !&lt;/p&gt;

&lt;p&gt;Thanks a lot for reading ! &lt;/p&gt;

</description>
      <category>jekyll</category>
      <category>gem</category>
      <category>ruby</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
