<?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: Nirina Rabeson</title>
    <description>The latest articles on DEV Community by Nirina Rabeson (@seboran).</description>
    <link>https://dev.to/seboran</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%2F1261496%2F075318e5-2ae9-4486-8df8-e36aa13bda74.jpeg</url>
      <title>DEV Community: Nirina Rabeson</title>
      <link>https://dev.to/seboran</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/seboran"/>
    <language>en</language>
    <item>
      <title>Comment rendre n'importe quelle enceinte compatible Airplay !</title>
      <dc:creator>Nirina Rabeson</dc:creator>
      <pubDate>Sun, 15 Sep 2024 13:00:26 +0000</pubDate>
      <link>https://dev.to/seboran/comment-rendre-nimporte-quelle-enceinte-compatible-airplay--4jod</link>
      <guid>https://dev.to/seboran/comment-rendre-nimporte-quelle-enceinte-compatible-airplay--4jod</guid>
      <description>&lt;p&gt;Vous avez déjà des enceintes audio, et elles sont top. Mais elles ne sont pas compatibles Airplay, et vous êtes jaloux·se de votre camarade qui a acheté les plus récentes SONOS.&lt;/p&gt;

&lt;p&gt;Avec ce guide, transformez toutes vos enceintes de musique pour qu'elles soient compatibles Airplay ! Et vous pourrez traiter votre camarade de pigeon !&lt;/p&gt;

&lt;h2&gt;
  
  
  Le setup
&lt;/h2&gt;

&lt;p&gt;Je suis ce qu'on appelle un audiophile hypocrite. Je passe mon temps à écouter de la musique, à me plaindre de la production, de la qualité, de l'audio, et ensuite j'écoute ma musique sur des focales mêmes pas sur-élevées... (Promis, je cherche des pieds).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fklieiaa474nwx5ey1s7b.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fklieiaa474nwx5ey1s7b.jpeg" alt="Photo d'une enceinte focale avec la carte son à côté. l'enceinte focale est posée à même une console KALLAX posée horizontalement. Un canard rouge et un cactus en crochet sont disposés sur la photo." width="800" height="1066"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Même s'il s'agit plutôt d'enceintes de monitoring que des enceintes de musique, elles ne restent pas moins excellentes à leur job, et j'aimerais pouvoir streamer ma musique pas du tout lossless sur ces enceintes depuis mon canapé.&lt;/p&gt;

&lt;h2&gt;
  
  
  Comment initialiser la Raspberry Pi ?
&lt;/h2&gt;

&lt;p&gt;Ce tuto est grandement inspiré de &lt;a href="https://www.xda-developers.com/build-airplay-receiver-using-raspberry-pi/" rel="noopener noreferrer"&gt;https://www.xda-developers.com/build-airplay-receiver-using-raspberry-pi/&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Pour mon setup à moi, je passe par une carte son qui possède une entrée USB C. Il suffit donc de la connecter en USB. Pour un autre support, il paraît que l'audio des raspberry n'est vraiment pas dingue ! Mais vous pouvez toujours tenter la sortie jack, voire la sortie HDMI.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mettre en place la Raspberry
&lt;/h3&gt;

&lt;p&gt;Je recommande d'installer une image lite sur votre carte SD. Par exemple, Raspberry OS Lite via Raspberry Pi Manager &lt;a href="https://www.raspberrypi.com/software/" rel="noopener noreferrer"&gt;https://www.raspberrypi.com/software/&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Pour ne vraiment pas galérer, je recommande de mettre en place la connexion wifi depuis le gestionnaire, ainsi que le mot de passe du compte par défaut.&lt;/p&gt;

&lt;p&gt;Une fois la carte flashée et branchée, que vous êtes connectés (via ssh ou directement sur la raspi), lancez ces petites commandes pour installer et initialiser &lt;code&gt;shairplay-sync&lt;/code&gt; :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;shairport-sync &lt;span class="c"&gt;# cette étape peut être longue&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl start shairport-sync &lt;span class="c"&gt;# démarrer le service&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;shairport-sync &lt;span class="c"&gt;# démarrer le service automatiquement à chaque boot&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Il faut ensuite trouver la carte son ou votre périphérique sur lequel vous voulez stream votre musique. Pour cela, on va lancer cette commande :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Lister les périphériques disponibles&lt;/span&gt;
aplay &lt;span class="nt"&gt;-l&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;La sortie peut ressembler à :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;**** List of PLAYBACK Hardware Devices ****
card 0: Headphones [bcm2835 Headphones], device 0: bcm2835 Headphones [bcm2835 Headphones]
  Subdevices: 8/8
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7
card 1: M2X2 [M-Track 2X2], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: vc4hdmi [vc4-hdmi], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dans ce cas là, je veux connecter à l'appareil &lt;code&gt;M2X2&lt;/code&gt;, mais vous aurez peut-être d'autres noms, ou vous voulez peut-être vous brancher à la sortie hdmi...&lt;/p&gt;

&lt;p&gt;Toujours est-il, mettez ce nom du périphérique dans le le fichier de conf de shairport :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;vi /etc/shairport-sync.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Décommentez la ligne contenant &lt;code&gt;output_device&lt;/code&gt; et mettez le périphérique recherché en préfixant par &lt;code&gt;hw:&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;&lt;span class="gd"&gt;- // output_device = "default"
&lt;/span&gt;&lt;span class="gi"&gt;+ output_device = "hw:&amp;lt;nom du périphérique&amp;gt;"
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Relancez shairport et montez le son :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl restart shairport-sync
&lt;span class="nb"&gt;sudo &lt;/span&gt;amixer sset PCM,0 100%
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Et normalement, tadaaaa ! Votre raspberry pi est visible dans votre airplay !&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo3mi8zq47qy2aqle3hks.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo3mi8zq47qy2aqle3hks.jpeg" alt="Capture d'écran de l'application Musique de Apple, où on voit que je diffuse de la musique du groupe Loathe en Airplay sur l'appareil " width="800" height="1263"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Et tadaaaa ! Mes focales sont désormais compatibles Airplay ! Plus besoin de payer des enceintes bien trop chères pour ce qu'elles sont !&lt;/p&gt;

&lt;h2&gt;
  
  
  Une suite ?
&lt;/h2&gt;

&lt;p&gt;J'aimerais bien créer une image raspberry déjà toute prête pour tous les appareils que vous souhaiteriez transformer en enceintes airplay, mais pour être franc je ne comprends pas la doc de &lt;a href="https://github.com/gitbls/sdm" rel="noopener noreferrer"&gt;sdm&lt;/a&gt;... Si quelqu'un a une idée pour m'aider je suis preneur !&lt;/p&gt;

</description>
      <category>raspberrypi</category>
      <category>music</category>
      <category>french</category>
      <category>diy</category>
    </item>
    <item>
      <title>GitButler : un client git avec trop de hype ?</title>
      <dc:creator>Nirina Rabeson</dc:creator>
      <pubDate>Mon, 18 Mar 2024 19:48:37 +0000</pubDate>
      <link>https://dev.to/seboran/gitbutler-un-client-git-avec-trop-de-hype--3ca8</link>
      <guid>https://dev.to/seboran/gitbutler-un-client-git-avec-trop-de-hype--3ca8</guid>
      <description>&lt;p&gt;Vous maitrisez git ? Vous êtes un·e expert·e des &lt;em&gt;features&lt;/em&gt; branches, vous aimez tester le travail de vos collègues et vous aimez attendre que quelqu'un relise votre travail ? Votre fusions de travail marchent systématiquement ?&lt;/p&gt;

&lt;p&gt;Moi non ! (humour) Et maintenant que GitButler existe, je m'interroge comment on peut faire mieux.&lt;/p&gt;

&lt;h2&gt;
  
  
  Comment travailler en équipe ?
&lt;/h2&gt;

&lt;p&gt;Le standard moderne de collaboration d'équipe est git. C'est un programme qui permet de créer des "&lt;em&gt;branches&lt;/em&gt;" sur lesquels les collaborateurs d'un projet travaillent. Ces branches permettent de fusionner les contributions de chacun et de fluidifier le développement parallèle, et à terme tout le monde développe une  application commun qui peut être envoyée à des utilisateurs.&lt;/p&gt;

&lt;p&gt;Il y a plusieurs "standards" qui sont apparus pour utiliser git, mais les principaux que je vois le plus sont :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Une organisation en &lt;em&gt;gitflow&lt;/em&gt; &lt;a href="https://git-flow.readthedocs.io/fr" rel="noopener noreferrer"&gt;git.flow.readthedocs.io&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Le &lt;em&gt;trunk based development&lt;/em&gt; &lt;a href="https://trunkbaseddevelopment.com/" rel="noopener noreferrer"&gt;Trunk based development&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Ces standards permettent d'organiser la répartition du travail et leur intégration, mais ils ne répondent pas à la question de comment vérifier que l'appli finale marche. Comment ça se passe après-tout ?&lt;/p&gt;

&lt;p&gt;La réponse va vous surprendre : l'appli finale fini par marcher &lt;strong&gt;avec beaucoup de larmes et de sang.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Comment s'assurer qu'une appli fonctionne ?
&lt;/h2&gt;

&lt;p&gt;Dans un environnement de travail moderne, lorsqu'un développeur fait une contribution à un projet, il ou elle soumet une demande de merge de sa branche (PR ou MR) et ses collaborateur·ices relisent le travail et font le travail sur la branche de la personne.&lt;/p&gt;

&lt;p&gt;Si le travail est approuvé, et qu'il est fusionné sur la branche de travail principale, les collaborateur·ices relancent à nouveau toute une batterie de tests pour s'assurer que l'application continue de tourner. &lt;/p&gt;

&lt;p&gt;S'il y a des problèmes à une seule de ces étapes, on annule toutes les fusions et on revient à l'étape développement sur une branche à part, avec potentiellement un &lt;code&gt;rebase&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Et s'il n'y a pas de problème, tout le monde doit récupérer la modification et à nouveau vérifier que sa demande de merge fonctionne encore, et refaire des tests, et &lt;em&gt;bis repetita&lt;/em&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Mais pourquoi le travail de l'un sur sa machine ne marcherait pas sur celle des autres ? Et pourquoi faut-il revérifier tout le travail une fois qu'il a été approuvé ?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn7bdl80gedluhka5c3ld.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn7bdl80gedluhka5c3ld.png" alt="Meme du " width="752" height="636"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;La raison simple, c'est que chaque demande de merge crée une distance entre le développement réalisé et l'existant. Cette distance crée un risque et fait que la fusion du travail peut mal se passer. On travaille donc en réduction de risque et je ne suis pas sûr que ce soit un état d'esprit à adopter dans un travail collaboratif.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;D'une certaine façon, on ne vérifie pas que l'appli fonctionne lors d'une fusion de travail, mais plutôt, on vérifie que la fusion ne casse pas l'appli.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Serait-il possible de changer le paradigme de pensée ? Est-il possible de s'assurer que la contribution réalisée soit intégrée au plus vite sur l'application finale ? De réellement tester que l'appli fonctionne, plutôt que personne ne casse le build ? Analysons pourquoi cela est difficile.&lt;/p&gt;

&lt;h2&gt;
  
  
  Loin des yeux, loin du coeur ; loin de &lt;code&gt;main&lt;/code&gt;, loin de &lt;code&gt;merge&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Pour réaliser une quelconque contribution avec l'aide de git, on part en général de la branche principale, ici &lt;code&gt;main&lt;/code&gt;. La personne fait son travail, et ensuite fait sa demande de &lt;code&gt;merge&lt;/code&gt; et rattrape éventuellement avec un &lt;code&gt;rebase&lt;/code&gt; les développements faits sur &lt;code&gt;main&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Les autres contributeurs du projet relisent la demande de merge, et font éventuellement des tests de la contribution en se plaçant dans la branche avec la commande &lt;code&gt;switch&lt;/code&gt; ou &lt;code&gt;checkout&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Mais le changement de branche peut-être terrible. Par exemple, voici les commandes que je dois lancer à chaque fois que je change de contexte sur un projet javascript :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# changer de branche&lt;/span&gt;
git checkout feature/whatever
git pull &lt;span class="nt"&gt;--rebase&lt;/span&gt;
&lt;span class="c"&gt;# Installer le projet en espérant avoir le bon package manager&lt;/span&gt;
&lt;span class="c"&gt;# Merci https://github.com/antfu/ni&lt;/span&gt;
ni
&lt;span class="c"&gt;# faire des tests de lint et de type et de format&lt;/span&gt;
nr build
&lt;span class="c"&gt;# faire des tests unitaires variés (avec parfois de la mesure de coverage)&lt;/span&gt;
nr &lt;span class="nb"&gt;test&lt;/span&gt;
&lt;span class="c"&gt;# faire des tests E2E et d'intégration (facultatif)&lt;/span&gt;
nr &lt;span class="nb"&gt;test&lt;/span&gt;:e2e
&lt;span class="c"&gt;# faire des tests manuels divers et variés sur l'application&lt;/span&gt;
nr dev
&lt;span class="c"&gt;# faire de potentiels tests divers et variés sur l'application un peu plus "finale"&lt;/span&gt;
nr start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Et chacune de ces commandes peut prendre entre une seconde à une minute, et cela pour chaque feature qui souhaite être apportée.&lt;/p&gt;

&lt;p&gt;Avec un peu de chance toutes ces commandes sont exécutées automatiquement avec une pipeline, ce qui diminue le risque d'un problème durant une fusion de travail.&lt;/p&gt;

&lt;p&gt;Mais ce n'est pas parfait, car une fois le travail approuvé et fusionné, il faut refaire toutes ces étapes en local sur son propre environnement et sa propre branche avec la modification intégré.&lt;/p&gt;

&lt;p&gt;Les manipulations de branches sont relativement simples dans git, jusqu'à ce qu'il y ait besoin de rebase plusieurs branches, de gérer les conflits, de sélectionner de façon spécifique les commits que l'on veut intégrer... Et chacun de ces modifications créent des manipulations parfois complexes, qui nécessitent encore des tests, de l'intégration, des installations. Et en cas d'erreur, c'est difficile de savoir à quelle étape on s'est planté.&lt;/p&gt;

&lt;p&gt;Voyons comment on peut simplifier tout cela avec GitButler.&lt;/p&gt;
&lt;h2&gt;
  
  
  Comment intégrer le travail de tous, passé, présent, et futur, de façon continue ?
&lt;/h2&gt;

&lt;p&gt;GitButler est un workflow de git qui permet de se passer du contexte de branches et le remplace par celui de branches virtuelles.&lt;/p&gt;

&lt;p&gt;Regardez cette vidéo qui expliquera à quel point c'est renversant 🙃 :&lt;br&gt;
&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;a href="https://www.youtube.com/watch?si=fCl-pobI6i4mZM1C&amp;amp;v=PWc4meBj4jo&amp;amp;feature=youtu.be" rel="noopener noreferrer"&gt;
      youtube.com
    &lt;/a&gt;
&lt;/div&gt;



&lt;p&gt;Avec GitButler, sur un ordinateur local, il n'y a qu'une seule branche qu'on va nommer &lt;code&gt;workflow&lt;/code&gt;. Quand je dois travailler sur ma feature, je fais mon travail dans &lt;code&gt;workflow&lt;/code&gt;, je &lt;code&gt;commit&lt;/code&gt; sur &lt;code&gt;workflow&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;Si on était en git classique, il suffit de &lt;code&gt;push&lt;/code&gt; ma modif... Mais je ne peux pas, car la branche &lt;code&gt;workflow&lt;/code&gt; n'est pas ma branche... C'est comme si je poussais sur &lt;code&gt;main&lt;/code&gt;... Comment créer ma branche ? Comment faire ? 😨&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;L'idée de GitButler, c'est qu'il n'y a pas besoin de se poser ces questions. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;On peut automatiquement depuis GitButler créer une branche virtuelle à partir d'un commit (imaginez un &lt;code&gt;git rebase -i&lt;/code&gt; &lt;em&gt;user-friendly&lt;/em&gt;), mais le travail reste sur la vraie branche &lt;code&gt;workflow&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Pour demander une relecture, GitButler transforme la branche virtuelle en une vraie branche (pour permettre par exemple à une CI ou à des collègues de récupérer le travail), et lorsque la modification est approuvée par ses collègues, la branche est branchée dans &lt;code&gt;main&lt;/code&gt; du projet.&lt;/p&gt;

&lt;p&gt;La magie de GitButler, c'est qu'une fois la modification mergée sur &lt;code&gt;main&lt;/code&gt;, et même avant, les contributions de tous les autres peuvent être déjà appliquées sur notre branche locale &lt;code&gt;workflow&lt;/code&gt;. On peut même directement récupérer &lt;code&gt;main&lt;/code&gt; distant sur notre &lt;code&gt;workflow&lt;/code&gt; local, sans avoir besoin de &lt;code&gt;pull&lt;/code&gt; ou &lt;code&gt;rebase&lt;/code&gt; ou &lt;code&gt;merge&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;L'interface est très simple et permet de fusionner beaucoup de commits de façon simple, et de façon revenir sur les modifications vu qu'on a pas besoin de changer de branche, tout simplement.&lt;/p&gt;

&lt;p&gt;La panoplie de tests que l'on réalisait auparavant sur chaque branche peut-être exécuté sur une seule branche, en prenant en compte facilement le travail passé, présent et futur du projet.&lt;/p&gt;

&lt;p&gt;Vous me direz, on peut déjà faire cela avec des &lt;code&gt;cherry-pick&lt;/code&gt;, des &lt;code&gt;rebase&lt;/code&gt; et autres joies. Mais dès lors que vous avez beaucoup de contributions, c'est difficile à gérer simplement.&lt;/p&gt;

&lt;p&gt;Dans l'autre sens, si on veut pousser beaucoup de modifications, et éventuellement en beaucoup de MR ou PR, c'est difficile à faire avec chaque branche qui sont potentiellement liées entre elles.&lt;/p&gt;

&lt;h2&gt;
  
  
  Il y a bien des inconvénients ??
&lt;/h2&gt;

&lt;p&gt;Pour l'instant je vois plusieurs arnaques, car le projet est bien récent :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Pour être franc, je me sens toujours un peu perdu dans GitButler tellement c'est différent&lt;/li&gt;
&lt;li&gt;Le projet est très récent et il se pose encore des questions &lt;strong&gt;fondamentales&lt;/strong&gt; non résolues dans GitButler (comment fusionner de vraies branches ?)&lt;/li&gt;
&lt;li&gt;Pas d'invite de commande à ma connaissance, tout se fait par leur GUI (et je déteste ça)&lt;/li&gt;
&lt;li&gt;C'est un peu difficile de savoir ce qui est sur notre branche &lt;code&gt;workflow&lt;/code&gt;, et si elle correspond bien à l'appli finale...&lt;/li&gt;
&lt;li&gt;Les gens ne semblent pas comprendre à quoi sert réellement GitButler ? Sur les internets je vois beaucoup de commentaires de gens pour qui ça va leur permettre de mieux gérer leurs 40 stashs ou leur rebase à 70 commits, mais pour moi c'est plutôt un problème d'organisation qui peut déjà être corrigé sans GitButler...&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Les "arnaques" que je présente sont surtout de la méfiance par rapport à une technologie nouvelle. Cela ne m'empêche pas d'être &lt;strong&gt;hyped&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Il y a aussi une quantité d'enablers que pas tout le monde est prêt à entendre ou à mettre en place :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Avoir des CI/CD très robustes&lt;/li&gt;
&lt;li&gt;Avoir la culture de la qualité, car on ne peut pas s'amuser à planter la branche principale pour tout le monde.&lt;/li&gt;
&lt;li&gt;Avoir une séparation du travail claire pour éviter de faire exploser le nombre de merge conflicts&lt;/li&gt;
&lt;li&gt;Avoir une &lt;em&gt;definition of done&lt;/em&gt; claire et partagée auprès de toute l'équipe, en lien avec la culture de qualité de l'équipe.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Ces enablers sont de mon point de vue fortement similaires à ceux pour réaliser du Trunk Based Development.&lt;/p&gt;

&lt;h2&gt;
  
  
  La suite de GitButler ?
&lt;/h2&gt;

&lt;p&gt;De mon côté, j'ai essayé d'intégrer GitButler dans un de mes projets où je suis le seul à l'utiliser pendant que le reste de l'équipe reste sur un schéma GitFlow. J'avoue que j'ai eu marre de lire des issues github et de suivre leur discord pour comprendre pourquoi des fonctions de base étaient manquantes.&lt;/p&gt;

&lt;p&gt;D'une façon plus générale, utiliser GitButler nécessite à tous les contributeurs d'un projet d'augmenter leur attention à la qualité, car avec ce workflow, on n'est plus seulement responsable de sa branche, on est responsable de l'ensemble du projet. À voir si l'industrie est prête à l'entendre...&lt;/p&gt;




&lt;p&gt;Je m'appelle Nirina, je suis développeur front chez &lt;a href="https://www.zenika.com/en-US" rel="noopener noreferrer"&gt;Zenika&lt;/a&gt;, et merci pour cette lecture 🌻&lt;/p&gt;

&lt;p&gt;Et vous, que pensez-vous de GitButler ? Êtes-vous prêt à faire le saut ? Jetez-y un coup d'oeil : &lt;a href="https://gitbutler.com/" rel="noopener noreferrer"&gt;https://gitbutler.com/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gitbutler</category>
      <category>gitflow</category>
      <category>git</category>
      <category>trunkbaseddevelopment</category>
    </item>
    <item>
      <title>Comment l'IA change radicalement le son des guitares électriques.</title>
      <dc:creator>Nirina Rabeson</dc:creator>
      <pubDate>Sun, 28 Jan 2024 09:20:01 +0000</pubDate>
      <link>https://dev.to/seboran/comment-lia-change-radicalement-le-son-des-guitares-electriques-1bkh</link>
      <guid>https://dev.to/seboran/comment-lia-change-radicalement-le-son-des-guitares-electriques-1bkh</guid>
      <description>&lt;p&gt;Vous avez sûrement déjà une fois dans votre vie écouté un morceau de musique contenant de la guitare, mais vous-êtes vous déjà demandé comment le son de cette guitare est produit ?&lt;/p&gt;

&lt;p&gt;&lt;em&gt;A priori&lt;/em&gt;, vous vous dites qu'il faut une guitare, un ampli de guitare et un micro pour capter le son, pour obtenir une installation ressemblant à cela &lt;a href="https://www.flickr.com/photos/50794637@N00/2874677149" rel="noopener noreferrer"&gt;(source)&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8udqvzxz3zhstrcpiq5e.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8udqvzxz3zhstrcpiq5e.jpg" alt="Photo d'un ampli fender avec des micros" width="800" height="1204"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Et si je vous disais que ce morceau de musique contenant de la guitare que vous venez d'écouter n'utilise (probablement) pas d'ampli de guitare ? 😱&lt;/p&gt;

&lt;p&gt;Vvous entendez tout simplement une émulation digitale, basée sur le &lt;strong&gt;machine learning&lt;/strong&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Mais comment le son d'une guitare est-il produit ?
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Tout commence par des micros
&lt;/h2&gt;

&lt;p&gt;Les amplis de guitare sont tels qu'ils sonnent aujourd'hui un peu par une coïncidence. Quand les premières guitares électriques ont été inventées, il a fallu fabriquer des amplificateurs pour qu'on entende quelque chose. Le son d'une guitare électrique est produit à partir de micros utilisant un système de bobinages, qui captent les vibrations des cordes en métal. C'est cette partie de la guitare :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy091i6nc8ia203zlvipn.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy091i6nc8ia203zlvipn.jpg" alt="Photo d'un plan zoomé sur des micros de guitare" width="569" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;C'est très bien, mais le seul soucis, c'est qu'on n'entend rien ! Le signal produit par ce micro est très faible et il faut alors l'amplifier.&lt;/p&gt;

&lt;h2&gt;
  
  
  Les premiers amplificateurs
&lt;/h2&gt;

&lt;p&gt;Pour amplifier un signal, aujourd'hui on utiliserait un transistor. Mais les premières guitares électriques remontent d'avant l'invention même des transistors ! Les fabriquants ce sont alors tournés vers ce qui existait et était accessible pour l'époque : les &lt;em&gt;tubes électroniques&lt;/em&gt;, ou &lt;em&gt;vacuum tubes&lt;/em&gt; en anglais.&lt;/p&gt;

&lt;p&gt;Les premiers groupes de rock à utiliser des guitares électriques ont ce qu'ils avaient sous la main, à savoir des amplis à tubes électroniques, et ces groupes sont devenus hyper mainstream (The Beatles, Pink Floyd, ACDC, Guns and Roses...). La culture populaire a donc associé le son des guitares à des amplificateurs utilisant des tubes électroniques.&lt;/p&gt;

&lt;p&gt;Sauf qu'un ampli à tube, c'est hyper galère à utiliser...&lt;/p&gt;

&lt;h2&gt;
  
  
  Et quel sont les problèmes des amplis à tubes électroniques ?
&lt;/h2&gt;

&lt;p&gt;Aujourd'hui, les tubes ont de nombreux problèmes pratiques pour faire de la guitare :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Les amplis à tubes pèsent une tonne&lt;/li&gt;
&lt;li&gt;Plus personne ou presque ne fabrique des tubes électroniques&lt;/li&gt;
&lt;li&gt;Ils sont plutôt fragiles comparé à des transistors&lt;/li&gt;
&lt;li&gt;Les amplis à tubes coûtent très cher&lt;/li&gt;
&lt;li&gt;Ils ont des volumes sonores beaucoup trop élevés.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pour le dernier point, cela vient du fait que pour atteindre le maximum d'un ampli à tubes, il faut mettre son gain et son volume au maximum, et je vous laisse imaginer pour les voisins ce qu'ils en pensent...&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Pourquoi ne pas alors les remplacer par des transistors ?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Excellente question, et la réponse est simple : un transistor a un comportement différent, d'un point de vue du traitement du signal, d'un tube électronique. &lt;/p&gt;

&lt;p&gt;Cette différence est suffisante pour que cela s'entende, et surtout suffisante pour que cela ne sonne pas comme les groupes mainstream qui ont défini le son d'une guitare électrique (rappeler vous, The Beatles, Pink Floyd...).&lt;/p&gt;

&lt;p&gt;C'est pourquoi, on utilise des amplis à tubes électroniques : personne ne veut que sa guitare sonne différemment... (sous entendu, mal), et le public en général s'attend à entendre des tubes (même si au fond tout le monde s'en fiche des guitares).&lt;/p&gt;

&lt;h1&gt;
  
  
  Comment remplacer un ampli à tubes donc ?
&lt;/h1&gt;

&lt;p&gt;Pour pouvoir remplacer un ampli à tubes, il faut savoir d'abord ce que l'on veut modéliser, ce que l'on cherche, qu'est-ce qui fait le son d'une guitare.&lt;/p&gt;

&lt;p&gt;Un ampli à tubes, c'est un circuit électronique qui réagit de façon non linéaire à un signal entrant. Cette non-linéarité c'est concrètement ce qui produit le son riche d'une guitare, le fameux &lt;em&gt;overdrive&lt;/em&gt;, voire &lt;em&gt;distorsion&lt;/em&gt; quand on pousse le volume. Voici un exemple visuel de distorsion :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7rk2drs7lguw2drhvz4b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7rk2drs7lguw2drhvz4b.png" alt="Signal d'une guitare subissant une distorsion" width="800" height="1204"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;En haut, on peut considérer que c'est le son produit par une guitare, et en bas on peut considérer que c'est le signal émis par l'amplificateur. On peut remarquer que ces deux signaux n'ont presque rien en commun, si ce n'est qu'ils montent et descendent en même temps.&lt;/p&gt;

&lt;p&gt;Cette distorsion, c'est le fameux son caractéristique d'une guitare. Si je vous mets le début Highway to Hell de ACDC, vous reconnaissez instantanément le son : &lt;a href="https://www.youtube.com/watch?v=l482T0yNkeo" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=l482T0yNkeo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Recréer une distorsion produite par un tube avec des transistors est difficile, mais non impossible. Mais comme il s'agit d'un phénomène &lt;em&gt;non linéaire&lt;/em&gt; (comprendre, très compliqué d'un point de vue de la physique), il faut une très grande finesse pour réussir à produire un son convaincant. Pour chaque petite différence tonale entre une distorsion à tube et un transistor, il faut faire un petit affinage, et il y a des millions voire des milliards de petites différences tonales qui sont toutes à faire méticuleusement... si seulement il existait un moyen de configurer des milliards d'affinages facilement... 🤔&lt;/p&gt;

&lt;h1&gt;
  
  
  L'IA à la rescousse de la guitare
&lt;/h1&gt;

&lt;p&gt;Voici un &lt;em&gt;crash course&lt;/em&gt; de l'IA : on prend un réseau de neurones, c'est un ensemble de paramètres qui savent se reconfigurer de façon autonome pour imiter un comportement en fonction d'une entrée et d'une sortie.&lt;/p&gt;

&lt;p&gt;Ce réseau de neurones, on va lui donner deux éléments :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;En entrée, on donne un signal que l'on a enregistré auparavant qui correspond à ce qu'on donnerait à un ampli de guitare.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;En sortie, on retourne le signal produit par l'ampli de guitare.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On pourrait dire que l'entrée correspond à ce qu'un guitariste pourrait jouer, mais c'est un peu lent et on préfère envoyer une sorte de "bruit blanc" qui permet de pousser l'ampli au maximum de ses capacités, et cela sonne comme ça : &lt;a href="https://drive.google.com/file/d/1Pgf8PdE0rKB1TD4TRPKbpNo1ByR3IOm9/view" rel="noopener noreferrer"&gt;Baissez le son avant d'écouter ce truc siouplé&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ce qu'on demande à l'IA, c'est de faire en sorte que son modèle produise la même sortie pour une même entrée que l'ampli. En d'autres termes, on demande à l'IA de reproduire les mêmes &lt;em&gt;non linéarités&lt;/em&gt; qu'un ampli de guitare, et on lui demande de l'enregistrer en un fichier qu'on appelle une &lt;em&gt;capture&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Cette capture ensuite peut prendre un quelconque signal de guitare, et restitue donc une sortie comme si c'était un vrai ampli. C'est votre ampli virtuel tout simplement.&lt;/p&gt;

&lt;p&gt;Pour les détails plus techniques, on demande à l'IA de réduire la différence entre le signal produit par son modèle et celui enregistré depuis l'ampli, et ensuite vous invoquez l'armée d'outils d'optimisation d'un modèle (tensorflow, pycharm, votre GPU le plus puissant du marché).&lt;/p&gt;

&lt;h1&gt;
  
  
  Et est-ce que ça marche bien ?
&lt;/h1&gt;

&lt;p&gt;Non seulement ça marche bien, mais en plus, personne n'entend réellement la différence.&lt;/p&gt;

&lt;p&gt;Quand je dis personne, c'est que dans un morceau final, mixé, masterisé, pressé, distribué, streamé puis enfin écouté dans un casque ou des écouteurs ou des hauts parleurs d'une qualité variable, personne n'est capable de faire la différence entre un son de guitare sortant d'un vrai ampli, d'un son de guitare venant d'un ampli virtuel capturé par une IA.&lt;/p&gt;

&lt;p&gt;En fait, cela marche tellement bien qu'on commence à embarquer des modèles dans des unités portables de plus en plus petites, comme le QuadCortex ou le Line6 HX Stomp.&lt;/p&gt;

&lt;p&gt;En fait, cela marche tellement bien que n'importe qui peut capturer son ampli à la maison... Ou des pédales d'effets, ou des hauts parleurs, ou d'autres captures... ou d'autres plugins...&lt;/p&gt;

&lt;p&gt;En fait, cela marche tellement bien que des groupes entiers de musique commencent à apparaître parce qu'ils peuvent produire des sons de guitare nouveaux qui n'étaient pas pratiques ou commodes à faire sur des amplis à tubes...&lt;/p&gt;

&lt;p&gt;Je vous mets au défi de me dire, entre ces groupes, lesquels utilisent de vrais amplis, et lesquels utilisent une capture :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=I0WzT0OJ-E0" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=I0WzT0OJ-E0&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=qpgTC9MDx1o" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=qpgTC9MDx1o&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=pQzxNLfAW8o" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=pQzxNLfAW8o&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=zg2076b5Lqc" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=zg2076b5Lqc&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vous remarquerez que sur les exemples donné, il y a beaucoup de métal, et c'est un peu normal : c'est le genre dans lequel il y a le plus de distorsion. Et si vous voulez une expérience optimale, écoutez cette musique à 85dB &lt;a href="https://en.wikipedia.org/wiki/Equal-loudness_contour" rel="noopener noreferrer"&gt;et ce lien vous expliquera peut-être pourquoi&lt;/a&gt; !&lt;/p&gt;
&lt;h1&gt;
  
  
  Peut-on tout capturer ?
&lt;/h1&gt;

&lt;p&gt;Vous remarquerez, je ne vous ai parlé que d'amplis de guitare, mais on peut aussi capturer les hauts parleurs de l'ampli, le micro qui capture l'ampli, les effets appliqués en &lt;em&gt;pré&lt;/em&gt; ou &lt;em&gt;post&lt;/em&gt; amplification... Tout est capturable.&lt;/p&gt;

&lt;p&gt;En fait, aujourd'hui, à peu près tout le signal d'une guitare, depuis les micros jusqu'à la production, est modélisé dans une capture. Et si même l'industrie de la musique le fait, c'est parce que c'est très pratique. Au lieu d'investir dans un ampli pesant des tonnes et coûtant une fortune, on peut acheter un plugin qui contient une infinité de sons possibles pour une guitare, qui sont réglables en instantané.&lt;/p&gt;

&lt;p&gt;Et même le jeu des guitaristes commencent à se faire capturer, avec des plugins entiers qui reprennent le jeu d'un artiste, et c'est plutôt convaincant... À vous de vous faire une opinion : &lt;a href="https://www.youtube.com/watch?v=Snh6gaHjRN0" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=Snh6gaHjRN0&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;C'est pourquoi je trouve que l'IA change radicalement le son des guitares, parce que maintenant en deux clics et trois captures on peut produire n'importe quel son.&lt;/p&gt;

&lt;p&gt;Est-ce que c'est pour autant la fin des amplis à tubes ? Je ne pense pas. Déjà, il n'y a probablement personne de plus traditionnel qu'un guitariste, et il faudra longtemps avant que la communauté passe totalement à autre chose.&lt;/p&gt;

&lt;p&gt;De plus, les amplis à tube de guitare d'aujourd'hui se modernisent et apportent plein de nouvelles fonctions : sortie audio pour enregistrement direct dans une carte son, effets de guitare intégrés à l'ampli, possibilité de changer en bluetooth les paramètres de la distorsion, système de baisse de volume pour être compatible en appartement... Même les amplis traditionnels se modernisent.&lt;/p&gt;

&lt;p&gt;Pour conclure, voici une petite vidéo de moi jouant de la guitare... Saurez-vous dire si je joue sur un vrai ou un faux ampli ?&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;a href="https://www.youtube.com/watch?si=Zv755BOAF-Tumx19&amp;amp;v=4k63vD7KHGY&amp;amp;feature=youtu.be" rel="noopener noreferrer"&gt;
      youtube.com
    &lt;/a&gt;
&lt;/div&gt;





&lt;p&gt;C'est mon premier article sur dev.to... s'il vous a plu, n'hésitez pas à vous abonner à mon compte 🥺&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>music</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
