<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Guebew</title>
    <link>https://guebew.com/</link>
    <description>Recent content on Guebew</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Sat, 08 Aug 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://guebew.com/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>GitLab Pages et OVH</title>
      <link>https://guebew.com/posts/gitlab_ovh/</link>
      <pubDate>Sat, 08 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://guebew.com/posts/gitlab_ovh/</guid>
      <description>&lt;h3 id=&#34;objectif&#34;&gt;Objectif&lt;/h3&gt;
&lt;p&gt;L&amp;rsquo;objectif est de lier un domaine réserver chez OVH à un site hébergé avec GitLab Pages.&lt;/p&gt;
&lt;h3 id=&#34;côté-gitlab&#34;&gt;Côté GitLab&lt;/h3&gt;
&lt;p&gt;Dans la section &lt;code&gt;Domain &amp;amp; settings&lt;/code&gt; de la page Pages (via &lt;code&gt;Deploy &amp;gt; Pages&lt;/code&gt;), il faut cliquer sur &lt;code&gt;Add domain&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;GitLab nous donne alors des informations à rentrer chez OVH pour rediriger le domaine vers le serveur GitLab, ainsi qu&amp;rsquo;une clef pour le SSL/HTTPS.&lt;/p&gt;
&lt;p&gt;Cependant, si l&amp;rsquo;adresse est la racine du domaine, il ne faudra pas utiliser l&amp;rsquo;entrée DNS proposée car elle utilise un alias (ALIAS), il faudra utiliser l&amp;rsquo;adresse IPV4 (&lt;code&gt;A&lt;/code&gt;) &lt;code&gt;35.185.44.232&lt;/code&gt; et IPV6 (&lt;code&gt;AAAA&lt;/code&gt;) &lt;code&gt;2600:1901:0:7b8a::&lt;/code&gt; (comme indiqué dans le lien ci-dessous).&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h3 id="objectif">Objectif</h3>
<p>L&rsquo;objectif est de lier un domaine réserver chez OVH à un site hébergé avec GitLab Pages.</p>
<h3 id="côté-gitlab">Côté GitLab</h3>
<p>Dans la section <code>Domain &amp; settings</code> de la page Pages (via <code>Deploy &gt; Pages</code>), il faut cliquer sur <code>Add domain</code>.</p>
<p>GitLab nous donne alors des informations à rentrer chez OVH pour rediriger le domaine vers le serveur GitLab, ainsi qu&rsquo;une clef pour le SSL/HTTPS.</p>
<p>Cependant, si l&rsquo;adresse est la racine du domaine, il ne faudra pas utiliser l&rsquo;entrée DNS proposée car elle utilise un alias (ALIAS), il faudra utiliser l&rsquo;adresse IPV4 (<code>A</code>) <code>35.185.44.232</code> et IPV6 (<code>AAAA</code>) <code>2600:1901:0:7b8a::</code> (comme indiqué dans le lien ci-dessous).</p>
<ul>
<li><a href="https://docs.gitlab.com/user/project/pages/custom_domains_ssl_tls_certification/">GitLab - GitLab Pages custom domains</a></li>
</ul>
<h3 id="côté-ovh">Côté OVH</h3>
<p>Dans la section <code>DNS Zone</code>, cliquer sur <code>Add an entry</code>. Comme dit plus haut, s&rsquo;il s&rsquo;agit de la racine du domaine, il faut utiliser un type <code>A</code> et un type <code>AAAA</code> (donc faire 2 entrées), sinon il faut utiliser un type <code>CNAME</code>.</p>
<p>Ce qui, pour un domaine <code>example.com</code>, donnerait :</p>
<ul>
<li>Type <code>A</code>
<ul>
<li>Subdomain: `@``</li>
<li>Target: <code>35.185.44.232</code></li>
</ul>
</li>
<li>Type <code>AAAA</code>
<ul>
<li>Subdomain: <code>@</code></li>
<li>Target: <code>2600:1901:0:7b8a::</code>
Ou</li>
</ul>
</li>
<li>Type <code>CNAME</code>
<ul>
<li>Subdomain: <code>monprojet</code></li>
<li>Target: <code>monprojet.gitlab.io</code></li>
</ul>
</li>
</ul>
<p>Pour la partie SSL (HTTPS), il faut ajouter un type <code>TXT</code>:</p>
<ul>
<li>Type <code>TXT</code>
<ul>
<li>Subdomain: <code>\gitlab-pages-verification-code.example.com</code></li>
<li>Value: <code>gitlab-pages-verification-code=LE_CODE_FOURNI_PAR_GITLAB</code></li>
</ul>
</li>
</ul>
<h3 id="résultat">Résultat</h3>
<p>Après la propagation des nouvelles informations DNS, le site devrait être accessible en HTTP et HTTPS.</p>
]]></content:encoded>
    </item>
    <item>
      <title>CREATE Ceiling Fan Custom RF Controller</title>
      <link>https://guebew.com/posts/create_ceiling_fan/</link>
      <pubDate>Tue, 14 Jul 2026 09:38:16 +0200</pubDate>
      <guid>https://guebew.com/posts/create_ceiling_fan/</guid>
      <description>&lt;h3 id=&#34;objectif&#34;&gt;Objectif&lt;/h3&gt;
&lt;p&gt;J&amp;rsquo;ai équipé ma maison de plusieurs ventilateurs de plafond, dont deux dans le salon. Comme chaque ventilateur vient avec sa propre télécommande, j&amp;rsquo;ai eu envie de fabriquer une télécommande qui centraliserait leur gestion.&lt;/p&gt;
&lt;h3 id=&#34;capter-les-signaux&#34;&gt;Capter les signaux&lt;/h3&gt;
&lt;h4 id=&#34;la-bonne-fréquence&#34;&gt;La Bonne fréquence&lt;/h4&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Note: Si la fréquence de communication entre la télécommande et le controleur du ventilateur est connue, cette étape est inutile.&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;La première chose à connaitre est la fréquence radio utilisée par la télécommande. Pour ce genre de télécommande, les fréquences habituellement utiliséées sont 315Mhz, 330Mhz et 433Mhz. Pour le déterminer, j&amp;rsquo;ai fait l&amp;rsquo;acquisition d&amp;rsquo;un récepteur USB RTL-SDR DVB-T (~30€). Il en existe des &amp;ldquo;officiels&amp;rdquo; (~80€) et des &amp;ldquo;copies&amp;rdquo; (~30€). Ce qui compte, c&amp;rsquo;est que l&amp;rsquo;appareil soit basé sur une puce RTL2832U et qu&amp;rsquo;il soit reconnu par l&amp;rsquo;ordinateur (d&amp;rsquo;où le &amp;ldquo;danger&amp;rdquo; d&amp;rsquo;acheter une copie). J&amp;rsquo;ai pris le risque d&amp;rsquo;acheter une copie sur Amazon.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h3 id="objectif">Objectif</h3>
<p>J&rsquo;ai équipé ma maison de plusieurs ventilateurs de plafond, dont deux dans le salon. Comme chaque ventilateur vient avec sa propre télécommande, j&rsquo;ai eu envie de fabriquer une télécommande qui centraliserait leur gestion.</p>
<h3 id="capter-les-signaux">Capter les signaux</h3>
<h4 id="la-bonne-fréquence">La Bonne fréquence</h4>
<hr>
<p><em>Note: Si la fréquence de communication entre la télécommande et le controleur du ventilateur est connue, cette étape est inutile.</em></p>
<hr>
<p>La première chose à connaitre est la fréquence radio utilisée par la télécommande. Pour ce genre de télécommande, les fréquences habituellement utiliséées sont 315Mhz, 330Mhz et 433Mhz. Pour le déterminer, j&rsquo;ai fait l&rsquo;acquisition d&rsquo;un récepteur USB RTL-SDR DVB-T (~30€). Il en existe des &ldquo;officiels&rdquo; (~80€) et des &ldquo;copies&rdquo; (~30€). Ce qui compte, c&rsquo;est que l&rsquo;appareil soit basé sur une puce RTL2832U et qu&rsquo;il soit reconnu par l&rsquo;ordinateur (d&rsquo;où le &ldquo;danger&rdquo; d&rsquo;acheter une copie). J&rsquo;ai pris le risque d&rsquo;acheter une copie sur Amazon.</p>
<ul>
<li><a href="https://www.rtl-sdr.com/">[Officiel] RTL-SDR.com</a></li>
<li><a href="https://airspy.com/">[Officiel] AirSpy</a></li>
<li><a href="https://www.amazon.fr/-/en/DollaTek-Digital-Receiver-RTL2832U-Supports/dp/B07DJT5NHD">[Copie] DollaTek Digital USB 2.0 DVB-T DTS</a></li>
</ul>
<p>Maintenant que je peux capter les ondes radio, il faut pouvoir les &ldquo;voir&rdquo;. J&rsquo;ai utilisé le logiciel Spektrum mais il en existe d&rsquo;autres (SigDigger, Air#, &hellip;).</p>
<ul>
<li><a href="https://github.com/pavels/spektrum">Spektrum</a></li>
<li><a href="https://batchdrake.github.io/SigDigger/">SigDigger</a></li>
<li><a href="https://airspy.com/download/">Air#</a></li>
</ul>
<p>Par défaut, le récepteur USB est détecté comme un &ldquo;tuner TV&rdquo; et, comme le stipule la documentation de Spektrum, il faut désactiver ce driver.
Pour cela, il faut créer le fichier:</p>






<pre tabindex="0"><code>/etc/modprobe.d/rtl-sdr.conf</code></pre>
<p>Et écrire dedans:</p>






<pre tabindex="0"><code>blacklist dvb_usb_rtl28xxu</code></pre>
<p>br&gt;
Il faut aussi s&rsquo;ajouter des droits en ajoutant une &ldquo;udev rule&rdquo; en créant le fichier:</p>






<pre tabindex="0"><code>/etc/udev/rules.d/20.rtlsdr.rules</code></pre>
<p>Et en écrivant dedans:</p>






<pre tabindex="0"><code>SUBSYSTEM==&#34;usb&#34;, ATTRS{idVendor}==&#34;0bda&#34;, ATTRS{idProduct}==&#34;2838&#34;, GROUP=&#34;adm&#34;, MODE=&#34;0666&#34;</code></pre>
<p>On peut vérifier que l&rsquo;idVender et l&rsquo;idProduct correspondent bien grâce à la commande:</p>






<pre tabindex="0"><code>lsusb</code></pre>
<p>Qui donne:</p>






<pre tabindex="0"><code>Bus 007 Device 002: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T</code></pre>
<p>Il ne reste plus qu&rsquo;à ouvrir Spektrum, sélectionner le récepteur et modifier les paramètres du logiciel pour connaître la fréquence utilisée par la télécommande.</p>
<p>La plage de fréquence de base est vraiment trop large (24Mhz/1.8Ghz) car nous savons que ce genre de télécommande utilise des fréquences entre 300Mhz et 500Mhz. Il suffit de renseigner les champs (en Hz, ça fait vite beaucoup de zéros) en haut à gauche. Il ne faut pas oublier de cliquer sur &ldquo;Set Range&rdquo; pour que les valeurs soient prises en compte.</p>
<p>Lorsque l&rsquo;on appuie sur un bouton de la télécommande, on voit alors la courbe jaune qui fait un pic. C&rsquo;est là que se situe la fréquence que nous recherchons. Il ne reste plus qu&rsquo;à modifier les valeurs pour s&rsquo;approcher au plus près.</p>
<p>Pour être vraiment précis (ce qui n&rsquo;est pas fondamentalement utile), on peut se servir de la fonction &ldquo;Max&rdquo; située dans l&rsquo;onglet &ldquo;Measure&rdquo;.</p>
<p>Ainsi, j&rsquo;ai pu déterminer que la télécommande et le controleur du ventilateur communiquent sur la fréquence 433.9Mhz.
<img src="/images/ceiling_spektrum_1.png" alt="Spektrum - Plage de fréquences">
<img src="/images/ceiling_spektrum_2.png" alt="Spektrum - Fonction &ldquo;Max&rdquo;"></p>
<h4 id="intercepter-les-codes">Intercepter les codes</h4>
<p>Je sais maintenant que je dois travailler avec la fréquence de 433.9Mhz. Pour  obtenir les codes envoyés au controleur du ventilateur, il existe plusieurs méthodes.
br&gt;
J&rsquo;ai commencé par continuer à me servir du récepteur USB en conjonction avec un logiciel de traitement du signal (surtout &ldquo;urh&rdquo;) mais je ne suis arrivé à rien.
br&gt;</p>
<ul>
<li><a href="https://github.com/jopohl/urh">urh - universal radio hacker</a></li>
<li><a href="https://batchdrake.github.io/SigDigger/">SigDigger</a></li>
<li><a href="https://airspy.com/download/">Air#</a></li>
</ul>
<p>Cela m&rsquo;a tout de même permis de confirmer que les communications s&rsquo;effectuent en ASK (Amplitude Shift Keying), plus précisemment en OOK (On-Off Keying). Ce n&rsquo;était pas une grosse surprise, les tutos que j&rsquo;ai lus étaient tous basés là-dessus. Je me suis alors tourné vers des bibliothèques &ldquo;pour Arduino&rdquo; car je possèdais déjà des modules recépteur/émetteur en 433.9Mhz (ouais, la chance ! bon, je les aurais commandés de toutes façons). Après en avoir testés plusieurs (OneWire, RadioHead, etc.), je me suis arrêté sur RCSwitch.</p>
<ul>
<li><a href="https://github.com/sui77/rc-switch">RCSwitch</a></li>
</ul>
<p>Justement RCSwitch ne fonctionne qu&rsquo;en OOK et permet de configurer des &ldquo;protocoles&rdquo;. La bibliothèque vient avec une dizaine de protocoles pré-définis mais aucun ne semblait correspondre à ma télécommande. Il a donc fallu découvrir le protocole utilisé.
Heureusement, RCSwitch met à disposition un sketch (un script Arduino) qui écoute et enregistre le signaux radio envoyés pendant quelques secondes ainsi qu&rsquo;un script PHP qui analyse ces données pour afficher une visualisation.</p>
<ul>
<li><a href="https://github.com/sui77/SimpleRcScanner">SimpleRcScanner</a>
C&rsquo;est ainsi que j&rsquo;ai pu enregistrer les signaux envoyés par le bouton &ldquo;Light On/Off&rdquo; de ma télécommande.
La première étape est donc de se faire un petit montage Arduino avec un récepteur radio puis de lui envoyer le sketch fourni par SimpleRcScanner (avec le Arduino IDE).</li>
<li><a href="https://www.arduino.cc/en/software/">Arduino IDE</a></li>
</ul>
<p><img src="/images/ceiling_rcswitch_3.png" alt="Spektrum - Montage Arduino avec récepteur radio"></p>
<p>Pour la seconde étape, une fois le sketch envoyé et lancé, il faut ouvrir le &ldquo;Serial Monitor&rdquo; du Arduino IDE. Il faut bien penser à le configurer en 9600 baud. Le sketch fonctionne en &ldquo;one shot&rdquo;, il lance un décompte pendant lequel il faut appuyer (et rester appuyé) sur un bouton de la télécommande. Si on faut recommencer, il faut reset l&rsquo;Arduino. Si le sketch capte bien les signaux, alors il va afficher dans le &ldquo;Serial Monitor&rdquo; une suite de nombres séparés par des virgule. Il faut copier ces nombres et les coller dans le convertisseur/afficheur (la page PHP).</p>
<hr>
<p><em>Note: La seconde fois que j&rsquo;ai voulu utiliser la page PHP directement sur le site de RCSwitch, aucune image ne pouvait être générée, j&rsquo;ai dû faire tourner le site en local.</em></p>
<hr>
<p>Avant de soumettre les nombres, en appuyant sur &ldquo;Submit Query&rdquo;, il faut nettoyer la fin du &ldquo;copier/coller&rdquo; en supprimant le retour à la ligne ainsi que la dernière virgule.
<img src="/images/ceiling_rcswitch_1.png" alt="Serial Monitor avec les valeurs captées">
<img src="/images/ceiling_rcswitch_2.png" alt="Affichage des signaux"></p>
<h4 id="analyser-les-signaux">Analyser les signaux</h4>
<p>À partir de là, j&rsquo;ai des nombres et une belle image mais je n&rsquo;ai encore rien à indiquer à la bibliothèque pour définir le protocole. Heureusement, RCSwitch indique une méthode pour analyser les nombres.</p>
<p><a href="https://github.com/sui77/rc-switch/wiki/Add_New_Remote_Part_1#adding-a-new-remote-1">Documentation pour analyser les nombres</a></p>
<p>Les nombres ne sont pas générés au hasard. Ils correspondent au temps qui sépare un changement d&rsquo;amplitude ; dis autremenet, la durée entre un état haut et un état bas. Dans notre cas de modulation (OOK), un état (haut ou bas) peut rester un certain temps mais il y a une durée minimale. C&rsquo;est cette durée minimale qui permet de découper les modulations en valeurs. Par exemple, un état haut qui dure 3 &ldquo;durée minimale&rdquo; indique que le signal vient de transmettre 3 &ldquo;1&rdquo;. On comprend alors que déterminer cette durée minimale est déterminant.
Notre suite de nombres contient des groupes de valeurs plus ou moins proches. Par exemple, dans mon cas, j&rsquo;ai 3 groupes:</p>
<ul>
<li>~7980</li>
<li>~760</li>
<li>~250</li>
</ul>
<p>En faisant la moyenne des valeurs du groupe contenant les plus petites valeurs, j&rsquo;obtiens 250. Il s&rsquo;agit de la durée minimale. Je peux maintenant déduire les autres paramètres du protocole. D&rsquo;ailleurs que faut-il pour le protocole ?</p>
<ul>
<li>Durée minimale (Pulse Length)</li>
<li>Signal de synchronisation (Synchronization Bit)</li>
<li>Signal du 0 (combien de 1 suivis de combien de 0)</li>
<li>Signal du 1 (combien de 1 suivis de combien de 0)</li>
</ul>
<p>C&rsquo;est là que l&rsquo;image générée par le site PHP devient utile. On peut identifier des motifs pour déterminer le signal de synchronisation, le signal du 0 et le signal du 1. Il faut savoir qu&rsquo;un signal commence toujours par un état haut (c&rsquo;est important ça !).
Le signal de synchronisation est un signal long qui permet de séparer 2 &ldquo;mots&rdquo; (un ensemble de plusieurs signaux 1 et 0). On peut déterminer la longueur du signal de synchronisation en divisant la moyenne des valeurs du groupe contenant les plus grandes valeurs par la durée minimale. Toujours dans mon cas, ~7980/250 ~= 32. Je cherche donc un motif qui commence par un état haut et dure 32 durée minimale. Dans l&rsquo;image, je vois que ce motif est constitué d&rsquo;un état haut d&rsquo;une seule durée minimale suivie d&rsquo;un état bas qui dure 31 durée minimale.
Les signaux 0 et 1 sont les motifs les plus fréquents et sont relativements faciles à identifier. Dans mon cas, ils durent 4 durée minimales. Le 0 est constitué d&rsquo;un état haut d'1 durée minimale suivie d&rsquo;un état bas de 3 durée minimale. Le 1 est constitué d&rsquo;un état haut de 3 durée minimale suivie d&rsquo;un état bas d'1 durée minimale.</p>
<p><img src="/images/ceiling_rcswitch_4.png" alt="Analyse des signaux"></p>
<p>Et donc mon protocole peut se paramétrer comme ceci:</p>
<ul>
<li>Durée minimale : 250</li>
<li>Signal de synchronisation : {1, 31}</li>
<li>Signal du 0 : {1, 3}</li>
<li>Signal du 1 : {3, 1}</li>
</ul>
<h4 id="déchiffrer-les-codes">Déchiffrer les codes</h4>
<p>J&rsquo;ai le protocole et la visualisation des signaux. D&rsquo;après RCSwitch, il est possible de soit modifier la bibliothèque soit ajouter un nouveau protocole &ldquo;à chaud&rdquo; afin de laisser la bibliothèque déchiffres les codes mais je n&rsquo;ai pas réussi à faire fonctionner cette solution ; la bibliothèque n&rsquo;associe jamais le signal au protocole que j&rsquo;ajoute (que ça soit en modifiant la bibliothèque ou en le donnant &ldquo;à chaud&rdquo;). Je me suis donc servi de la visualisation des signaux.</p>
<p><img src="/images/ceiling_codes_1.png" alt="Décodage"></p>
<p>J&rsquo;ai décodé un premier message ! Je peux constater qu&rsquo;il est constitué de 32 bits (c&rsquo;est bon signe). On remarquera que je n&rsquo;ai pas pris en compte le dernier état haut car il correspond au début du signal de synchronisation, m&rsquo;indiquant au passage que le &ldquo;mot&rdquo; est terminé.
Il ne reste plus qu&rsquo;à faire cela pour tous les boutons de la télécommande !</p>
<h3 id="réferences">Réferences</h3>
<ul>
<li><a href="https://www.youtube.com/watch?v=_GCpqory3kc">Hacking My Ceiling Fan Radio Signal With a $15 USB TV Tuner (RTL2832U)</a></li>
<li><a href="https://samwilkinson.io/posts/2026-06-24-rf-hacking-dreo">RF Hacking my Cloud-Controlled Ceiling Fan</a></li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>Install Fish Shell</title>
      <link>https://guebew.com/posts/install_fish/</link>
      <pubDate>Sat, 04 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://guebew.com/posts/install_fish/</guid>
      <description>&lt;h3 id=&#34;summary&#34;&gt;Summary&lt;/h3&gt;
&lt;p&gt;From their website:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Fish is a smart and user-friendly command line shell for Linux, macOS, and the rest of the family.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;technical-stuff&#34;&gt;Technical stuff&lt;/h3&gt;
&lt;h4 id=&#34;install-fish&#34;&gt;Install Fish&lt;/h4&gt;
&lt;p&gt;Install on Linux (Ubuntu):&lt;/p&gt;






&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo apt update &amp;amp;&amp;amp; sudo apt install fish&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Make Fish the default shell&lt;/p&gt;






&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;chsh -s /usr/bin/fish&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;install-extensions&#34;&gt;Install Extensions&lt;/h4&gt;
&lt;h5 id=&#34;fisher-a-plugin-manager&#34;&gt;Fisher, a plugin manager&lt;/h5&gt;






&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source &amp;amp;&amp;amp; fisher install jorgebucaran/fisher&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/jorgebucaran/fisher&#34;&gt;Fisher GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;tide-the-ultimate-fish-prompt&#34;&gt;Tide, the ultimate Fish prompt&lt;/h5&gt;






&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;fisher install IlanCosman/tide@v6&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/IlanCosman/tide&#34;&gt;Tide GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;around&#34;&gt;Around&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://fishshell.com&#34;&gt;Fish website&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <content:encoded><![CDATA[<h3 id="summary">Summary</h3>
<p>From their website:</p>
<blockquote>
<p>Fish is a smart and user-friendly command line shell for Linux, macOS, and the rest of the family.</p>
</blockquote>
<h3 id="technical-stuff">Technical stuff</h3>
<h4 id="install-fish">Install Fish</h4>
<p>Install on Linux (Ubuntu):</p>






<pre tabindex="0"><code>sudo apt update &amp;&amp; sudo apt install fish</code></pre>
<p>Make Fish the default shell</p>






<pre tabindex="0"><code>chsh -s /usr/bin/fish</code></pre>
<h4 id="install-extensions">Install Extensions</h4>
<h5 id="fisher-a-plugin-manager">Fisher, a plugin manager</h5>






<pre tabindex="0"><code>curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source &amp;&amp; fisher install jorgebucaran/fisher</code></pre>
<ul>
<li><a href="https://github.com/jorgebucaran/fisher">Fisher GitHub</a></li>
</ul>
<h5 id="tide-the-ultimate-fish-prompt">Tide, the ultimate Fish prompt</h5>






<pre tabindex="0"><code>fisher install IlanCosman/tide@v6</code></pre>
<ul>
<li><a href="https://github.com/IlanCosman/tide">Tide GitHub</a></li>
</ul>
<h3 id="around">Around</h3>
<ul>
<li><a href="https://fishshell.com">Fish website</a></li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>OLC Pixel Game Engine</title>
      <link>https://guebew.com/posts/olc_compilation/</link>
      <pubDate>Tue, 10 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://guebew.com/posts/olc_compilation/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://guebew.com/images/olc_compilation_1.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;summary&#34;&gt;Summary&lt;/h3&gt;
&lt;p&gt;OLC Pixel Game Engine est un moteur de jeu très basique (&amp;ldquo;juste&amp;rdquo; du rendu et des inputs, pas de physique) qui tient dans un seul header.&lt;/p&gt;
&lt;p&gt;Voici comment le compiler pour Windows/MSys2 :&lt;/p&gt;






&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;g++ main.cpp -luser32 -lgdi32 -lopengl32 -lgdiplus -lShlwapi -ldwmapi -lstdc++fs -static -std=c++17&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;around&#34;&gt;Around&lt;/h3&gt;
&lt;p&gt;OLC Pixel Game Engine a été conçu par &amp;ldquo;OneLoneCoder&amp;rdquo; aussi connu sous le pseudonyme &amp;ldquo;Javidx9&amp;rdquo;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/@javidx9&#34;&gt;Javidx9 on YouTube&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;technical-stuff&#34;&gt;Technical stuff&lt;/h3&gt;
&lt;p&gt;Disponible depuis son repo Github.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img src="/images/olc_compilation_1.png" alt=""></p>
<h3 id="summary">Summary</h3>
<p>OLC Pixel Game Engine est un moteur de jeu très basique (&ldquo;juste&rdquo; du rendu et des inputs, pas de physique) qui tient dans un seul header.</p>
<p>Voici comment le compiler pour Windows/MSys2 :</p>






<pre tabindex="0"><code>g++ main.cpp -luser32 -lgdi32 -lopengl32 -lgdiplus -lShlwapi -ldwmapi -lstdc++fs -static -std=c++17</code></pre>
<h3 id="around">Around</h3>
<p>OLC Pixel Game Engine a été conçu par &ldquo;OneLoneCoder&rdquo; aussi connu sous le pseudonyme &ldquo;Javidx9&rdquo;.</p>
<ul>
<li><a href="https://www.youtube.com/@javidx9">Javidx9 on YouTube</a></li>
</ul>
<h3 id="technical-stuff">Technical stuff</h3>
<p>Disponible depuis son repo Github.</p>
<ul>
<li><a href="https://github.com/OneLoneCoder/olcPixelGameEngine">Github - olcPixelGameEngine</a></li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>GPS Tools</title>
      <link>https://guebew.com/posts/gps_tools/</link>
      <pubDate>Thu, 02 May 2019 00:00:00 +0000</pubDate>
      <guid>https://guebew.com/posts/gps_tools/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://guebew.com/images/gpstools_1.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;summary&#34;&gt;Summary&lt;/h3&gt;
&lt;p&gt;GPS Tools is an Android app that provides simple tools to use your GPS. You can get your current location or store a trip, allowing you to display your path on a map (GoogleMaps, OpenStreetMaps, etc.).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://play.google.com/store/apps/details?id=com.gpstools.ladybugriders.gpstools&#34;&gt;GPS Tools on the Google Playstore&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;around&#34;&gt;Around&lt;/h3&gt;
&lt;p&gt;It works on phones and tablets.&lt;/p&gt;
&lt;h3 id=&#34;technical-stuff&#34;&gt;Technical stuff&lt;/h3&gt;
&lt;p&gt;I used Java and Android Studio to build the app.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img src="/images/gpstools_1.png" alt=""></p>
<h3 id="summary">Summary</h3>
<p>GPS Tools is an Android app that provides simple tools to use your GPS. You can get your current location or store a trip, allowing you to display your path on a map (GoogleMaps, OpenStreetMaps, etc.).</p>
<ul>
<li><a href="https://play.google.com/store/apps/details?id=com.gpstools.ladybugriders.gpstools">GPS Tools on the Google Playstore</a></li>
</ul>
<h3 id="around">Around</h3>
<p>It works on phones and tablets.</p>
<h3 id="technical-stuff">Technical stuff</h3>
<p>I used Java and Android Studio to build the app.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Horizon Viewer</title>
      <link>https://guebew.com/posts/horizon_viewer/</link>
      <pubDate>Fri, 24 Nov 2017 00:00:00 +0000</pubDate>
      <guid>https://guebew.com/posts/horizon_viewer/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://guebew.com/images/horizon_viewer_1.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=mnVpsC4lX04&#34;&gt;Watch on YouTube&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;summary&#34;&gt;Summary&lt;/h3&gt;
&lt;p&gt;Horizon Viewer is a Augmented Reality (AR) app that allows you to enhance your horizon. It is able to locate you, to display your orientation and to show you interesting spots around you. All of that through your device screen! You don’t have to look at your device then look up to discover your surroundings.&lt;/p&gt;
&lt;h3 id=&#34;around&#34;&gt;Around&lt;/h3&gt;
&lt;p&gt;Horizon Viewer makes use of Augmented Reality to display in an immersive way what is interesting in your area. You can use it to discover new natural spots or find you path in a city.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img src="/images/horizon_viewer_1.png" alt=""></p>
<p><a href="https://www.youtube.com/watch?v=mnVpsC4lX04">Watch on YouTube</a></p>
<h3 id="summary">Summary</h3>
<p>Horizon Viewer is a Augmented Reality (AR) app that allows you to enhance your horizon. It is able to locate you, to display your orientation and to show you interesting spots around you. All of that through your device screen! You don’t have to look at your device then look up to discover your surroundings.</p>
<h3 id="around">Around</h3>
<p>Horizon Viewer makes use of Augmented Reality to display in an immersive way what is interesting in your area. You can use it to discover new natural spots or find you path in a city.</p>
<h3 id="technical-stuff">Technical stuff</h3>
<p>The app is built in 2 pieces, the mobile/tablet app and the web services.
I used Unity with the AR plug-in Vuforia to create the mobile/tablet app.
To collect and provide data, I have created web services requesting to multiple geolocation data providers: Google Places and Geoportail (IGN).</p>
]]></content:encoded>
    </item>
    <item>
      <title>A* Algorithm</title>
      <link>https://guebew.com/posts/astar/</link>
      <pubDate>Sat, 07 Oct 2017 00:00:00 +0000</pubDate>
      <guid>https://guebew.com/posts/astar/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://guebew.com/images/astar_2-1.png&#34; alt=&#34;A* Example 2&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;summary&#34;&gt;Summary&lt;/h3&gt;
&lt;p&gt;A* is a pathfinding algorithm based on Dikjstra. It computes one of the best path to reach two nodes in a graph. It’s one of the most used pathfinding algorithm in video games. This implementation takes a ppm image as world and return the result in a ppm image. It allows user to simply create a world and see the generated path.&lt;/p&gt;
&lt;h3 id=&#34;around&#34;&gt;Around&lt;/h3&gt;
&lt;p&gt;All the resources (code, makefile, etc) are freely available on github here:&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img src="/images/astar_2-1.png" alt="A* Example 2"></p>
<h3 id="summary">Summary</h3>
<p>A* is a pathfinding algorithm based on Dikjstra. It computes one of the best path to reach two nodes in a graph. It’s one of the most used pathfinding algorithm in video games. This implementation takes a ppm image as world and return the result in a ppm image. It allows user to simply create a world and see the generated path.</p>
<h3 id="around">Around</h3>
<p>All the resources (code, makefile, etc) are freely available on github here:</p>
<p><a href="https://github.com/Mefteg/a-star"></a></p>
<h3 id="technical-stuff">Technical stuff</h3>
<p>I only used C++ with no external library to implement A* algorithm.</p>
<p><img src="/images/astar_1-1.png" alt="A* Example 1">
<img src="/images/astar_2-1.png" alt="A* Example 2">
<img src="/images/astar_3-1.png" alt="A* Example 3">
<img src="/images/astar_4-1.png" alt="A* Example 4"></p>
]]></content:encoded>
    </item>
    <item>
      <title>TomBoy</title>
      <link>https://guebew.com/posts/tomboy/</link>
      <pubDate>Thu, 16 Mar 2017 00:00:00 +0000</pubDate>
      <guid>https://guebew.com/posts/tomboy/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=NGnK_r_J4is&#34;&gt;Watch on YouTube&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary&lt;/h2&gt;
&lt;p&gt;The TomBoy is a GameBoy-like portable console based on Arduino. It comes with a cross-platform game engine allowing people to write and execute code on Windows and/or Mac OS X before sending it to the TomBoy.&lt;/p&gt;
&lt;h2 id=&#34;around&#34;&gt;Around&lt;/h2&gt;
&lt;p&gt;The TomBoy is a prototype for now but I will improve it with a PCB and a case.
Being able to see the result on Windows and/or Mac OS X before sending it to the console is really convenient; only Linux remains now, it is the next step.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><a href="https://www.youtube.com/watch?v=NGnK_r_J4is">Watch on YouTube</a></p>
<h2 id="summary">Summary</h2>
<p>The TomBoy is a GameBoy-like portable console based on Arduino. It comes with a cross-platform game engine allowing people to write and execute code on Windows and/or Mac OS X before sending it to the TomBoy.</p>
<h2 id="around">Around</h2>
<p>The TomBoy is a prototype for now but I will improve it with a PCB and a case.
Being able to see the result on Windows and/or Mac OS X before sending it to the console is really convenient; only Linux remains now, it is the next step.</p>
<h2 id="technical-stuff">Technical stuff</h2>
<p>The TomBoy is built around an Arduino Nano. Its screen is a Graphic LCD 84×48 (same as Nokia 3310). It has 2 buttons and a flat joystick (same as PSP).
The game engine is written in C++ and uses SFML for display and input handler on Desktop (Windows/Mac/Linux).</p>
<p><a href="https://www.sfml-dev.org/index-fr.php">SFML</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Slack DotA</title>
      <link>https://guebew.com/posts/slack_dota/</link>
      <pubDate>Sat, 10 Dec 2016 00:00:00 +0000</pubDate>
      <guid>https://guebew.com/posts/slack_dota/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;../../images/slackdota_1.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;summary&#34;&gt;Summary&lt;/h3&gt;
&lt;p&gt;Slack-DotA is a bot for Slack that records my friends DotA 2 game results. Every time a friend (or a group of friends) finishes a game, the bot posts a link to the result page.&lt;/p&gt;
&lt;h3 id=&#34;around&#34;&gt;Around&lt;/h3&gt;
&lt;p&gt;DotA 2 is a very competitive game and you can have access to a lot of data. Having an easy way to be notified and to access this data is fun and convenient.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img src="../../images/slackdota_1.png" alt=""></p>
<h3 id="summary">Summary</h3>
<p>Slack-DotA is a bot for Slack that records my friends DotA 2 game results. Every time a friend (or a group of friends) finishes a game, the bot posts a link to the result page.</p>
<h3 id="around">Around</h3>
<p>DotA 2 is a very competitive game and you can have access to a lot of data. Having an easy way to be notified and to access this data is fun and convenient.</p>
<h3 id="technical-stuff">Technical stuff</h3>
<p>My script runs with NodeJS. It requests OpenDotA API to gather game results and uses Slack SDK to display those results.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Dodjzem</title>
      <link>https://guebew.com/posts/dodjzem/</link>
      <pubDate>Sat, 11 Oct 2014 00:00:00 +0000</pubDate>
      <guid>https://guebew.com/posts/dodjzem/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://guebew.com/images/dodjzem_1.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;summary&#34;&gt;Summary&lt;/h3&gt;
&lt;p&gt;Dodjzem is an arcade video game. The goal is to make the bigger score by dodging bees. If the player brush against bees, he gets a great bonus.&lt;/p&gt;
&lt;h3 id=&#34;around&#34;&gt;Around&lt;/h3&gt;
&lt;p&gt;The game is playable on Facebook and use its tools to rank friends, share score and send invitations. A virtual currency system allow people to buy bonuses. Players earn money for each game (price depends of the score) and for watchin video advertising, provided by VidCoin.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img src="/images/dodjzem_1.png" alt=""></p>
<h3 id="summary">Summary</h3>
<p>Dodjzem is an arcade video game. The goal is to make the bigger score by dodging bees. If the player brush against bees, he gets a great bonus.</p>
<h3 id="around">Around</h3>
<p>The game is playable on Facebook and use its tools to rank friends, share score and send invitations. A virtual currency system allow people to buy bonuses. Players earn money for each game (price depends of the score) and for watchin video advertising, provided by VidCoin.</p>
<p>I worked on the code and the hosting. All graphical stuff has been created by Marion Lodi.</p>
<ul>
<li><a href="http://marionlodi.fr">Marion Lodi</a></li>
</ul>
<h3 id="technical-stuff">Technical stuff</h3>
<p>Dodjzem is made with Craftyjs, a HTML5/Javascript library. The game is hosted on Heroku, a cloud application platform. A Nodejs instance provides a http server and share datas with a Mongodb database.</p>
<p>Google Analytics is used to keep trace of visitors, know how many games were played and more.</p>
<ul>
<li><a href="https://craftyjs.com/">Craftyjs</a></li>
<li><a href="https://www.heroku.com/">Heroku</a></li>
<li><a href="https://nodejs.org/">Nodejs</a></li>
<li><a href="https://marketingplatform.google.com/about/analytics/">Google Analytics</a></li>
</ul>
<p><img src="/images/dodjzem_1.png" alt="">
<img src="/images/dodjzem_2.png" alt=""></p>
]]></content:encoded>
    </item>
    <item>
      <title>CSG &amp; Ray-Tracing</title>
      <link>https://guebew.com/posts/csg/</link>
      <pubDate>Sun, 28 Sep 2014 00:00:00 +0000</pubDate>
      <guid>https://guebew.com/posts/csg/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://guebew.com/images/csg_1.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;summary&#34;&gt;Summary&lt;/h3&gt;
&lt;p&gt;Constructive Solid Geometry (or CSG) is a volumic method to create complex shapes by combining unit (translation, scaling, …) and/or binary (union, difference, …) operations between simply shapes.
The rendering is produced by Ray-Tracing lightning method. Despite a long computation process, it renders 3D scenes with shadows and interesting material aspects such as transparency or reflexion.&lt;/p&gt;
&lt;h3 id=&#34;around&#34;&gt;Around&lt;/h3&gt;
&lt;p&gt;This project has been made during my last Master’s Degree year at Gamagora.
&lt;a href=&#34;https://icom.univ-lyon2.fr/gamagora&#34;&gt;Gamagora&lt;/a&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img src="/images/csg_1.png" alt=""></p>
<h3 id="summary">Summary</h3>
<p>Constructive Solid Geometry (or CSG) is a volumic method to create complex shapes by combining unit (translation, scaling, …) and/or binary (union, difference, …) operations between simply shapes.
The rendering is produced by Ray-Tracing lightning method. Despite a long computation process, it renders 3D scenes with shadows and interesting material aspects such as transparency or reflexion.</p>
<h3 id="around">Around</h3>
<p>This project has been made during my last Master’s Degree year at Gamagora.
<a href="https://icom.univ-lyon2.fr/gamagora">Gamagora</a></p>
<h3 id="technical-stuff">Technical stuff</h3>
<p>I used C++ and the Composite pattern to make this project.</p>
<p><img src="/images/csg_1.png" alt="">
<img src="/images/csg_2.png" alt="">
<img src="/images/csg_3.png" alt=""></p>
]]></content:encoded>
    </item>
    <item>
      <title>Gim ‘n’ Lo Trips</title>
      <link>https://guebew.com/posts/gimnlotrips/</link>
      <pubDate>Mon, 01 Sep 2014 00:00:00 +0000</pubDate>
      <guid>https://guebew.com/posts/gimnlotrips/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://guebew.com/images/gimnlotrips_1.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;summary&#34;&gt;Summary&lt;/h3&gt;
&lt;p&gt;Gim ‘n’ Lo Trips is a website showing photos of my travels with Marion Lodi.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.gimnlotrips.com/&#34;&gt;Gim&amp;rsquo;n&amp;rsquo;Lo Trips&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;around&#34;&gt;Around&lt;/h3&gt;
&lt;p&gt;Our first trip took place in Gaspesie, QC, Canada. We traveled around the Gaspesie on our bicycles for 910km during 17 days.&lt;/p&gt;
&lt;h3 id=&#34;technical-stuff&#34;&gt;Technical stuff&lt;/h3&gt;
&lt;p&gt;I used WordPress to build the website and I create a specific theme with Bootstrap from a design provided by Marion Lodi.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://wordpress.org/&#34;&gt;WordPress&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://marionlodi.fr&#34;&gt;Marion Lodi&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <content:encoded><![CDATA[<p><img src="/images/gimnlotrips_1.png" alt=""></p>
<h3 id="summary">Summary</h3>
<p>Gim ‘n’ Lo Trips is a website showing photos of my travels with Marion Lodi.</p>
<ul>
<li><a href="http://www.gimnlotrips.com/">Gim&rsquo;n&rsquo;Lo Trips</a></li>
</ul>
<h3 id="around">Around</h3>
<p>Our first trip took place in Gaspesie, QC, Canada. We traveled around the Gaspesie on our bicycles for 910km during 17 days.</p>
<h3 id="technical-stuff">Technical stuff</h3>
<p>I used WordPress to build the website and I create a specific theme with Bootstrap from a design provided by Marion Lodi.</p>
<ul>
<li><a href="https://wordpress.org/">WordPress</a></li>
<li><a href="http://marionlodi.fr">Marion Lodi</a></li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>LREditor</title>
      <link>https://guebew.com/posts/lreditor/</link>
      <pubDate>Wed, 16 Jul 2014 00:00:00 +0000</pubDate>
      <guid>https://guebew.com/posts/lreditor/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://guebew.com/images/lreditor_1.png&#34; alt=&#34;LREditor 1&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=fH3FHjw-4Ak&#34;&gt;Watch on YouTube&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;summary&#34;&gt;Summary&lt;/h3&gt;
&lt;p&gt;LREditor is a Free and OpenSource Game Editor based on Phaser. It allows you to create your game easily, in a graphical way.&lt;/p&gt;
&lt;h3 id=&#34;around&#34;&gt;Around&lt;/h3&gt;
&lt;p&gt;All LadybugRiders worked on this project. I worked on the code with Vincent Roumier. All graphical stuff has been created by Marion Lodi.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.vincent-roumier.fr&#34;&gt;Vincent Roumier&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://marionlodi.fr&#34;&gt;Marion Lodi&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;technical-stuff&#34;&gt;Technical stuff&lt;/h3&gt;
&lt;p&gt;LREditor is made with AngularJs and is based on Phaser, a HTML5/javascript library.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img src="/images/lreditor_1.png" alt="LREditor 1"></p>
<p><a href="https://www.youtube.com/watch?v=fH3FHjw-4Ak">Watch on YouTube</a></p>
<h3 id="summary">Summary</h3>
<p>LREditor is a Free and OpenSource Game Editor based on Phaser. It allows you to create your game easily, in a graphical way.</p>
<h3 id="around">Around</h3>
<p>All LadybugRiders worked on this project. I worked on the code with Vincent Roumier. All graphical stuff has been created by Marion Lodi.</p>
<ul>
<li><a href="http://www.vincent-roumier.fr">Vincent Roumier</a></li>
<li><a href="http://marionlodi.fr">Marion Lodi</a></li>
</ul>
<h3 id="technical-stuff">Technical stuff</h3>
<p>LREditor is made with AngularJs and is based on Phaser, a HTML5/javascript library.</p>
<ul>
<li><a href="https://angularjs.org">AngularJs</a></li>
<li><a href="http://phaser.io">Phaser</a></li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>VilainBowser</title>
      <link>https://guebew.com/posts/vilain_bowser/</link>
      <pubDate>Mon, 17 Dec 2012 00:00:00 +0000</pubDate>
      <guid>https://guebew.com/posts/vilain_bowser/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://guebew.com/images/vilainbowser_1.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;summary&#34;&gt;Summary&lt;/h3&gt;
&lt;p&gt;VilainBowser vous met dans la peau de Bowser, celui-ci devant défier des hordes de Marios et Luigis afin de protéger Princesse Peach retenue dans le donjon.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://guebew.com/misc/VilainBowser.jar&#34;&gt;VilainBowser (jar file)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;around&#34;&gt;Around&lt;/h3&gt;
&lt;p&gt;VilainBowser est un jeu crée en 48h pour la LudumDare 25 qui s&amp;rsquo;est déroulée du 14 au 17 Décembre 2012. Le thème était &amp;ldquo;You are the vilain&amp;rdquo;.&lt;/p&gt;
&lt;h3 id=&#34;technical-stuff&#34;&gt;Technical stuff&lt;/h3&gt;
&lt;p&gt;Le jeu a été développé avec la bibliothèque LibGDX et est disponible pour Windows, Mac et Linux.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img src="/images/vilainbowser_1.png" alt=""></p>
<h3 id="summary">Summary</h3>
<p>VilainBowser vous met dans la peau de Bowser, celui-ci devant défier des hordes de Marios et Luigis afin de protéger Princesse Peach retenue dans le donjon.</p>
<ul>
<li><a href="/misc/VilainBowser.jar">VilainBowser (jar file)</a></li>
</ul>
<h3 id="around">Around</h3>
<p>VilainBowser est un jeu crée en 48h pour la LudumDare 25 qui s&rsquo;est déroulée du 14 au 17 Décembre 2012. Le thème était &ldquo;You are the vilain&rdquo;.</p>
<h3 id="technical-stuff">Technical stuff</h3>
<p>Le jeu a été développé avec la bibliothèque LibGDX et est disponible pour Windows, Mac et Linux.</p>
<ul>
<li><a href="https://libgdx.com/">LibGDX</a></li>
</ul>
<p>Il a été co-conçu avec Vincent Roumier</p>
<ul>
<li><a href="http://www.vincent-roumier.fr/">Vincent Roumier</a></li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>Anty &amp; Touky</title>
      <link>https://guebew.com/posts/antytouky/</link>
      <pubDate>Mon, 10 Sep 2012 09:38:16 +0200</pubDate>
      <guid>https://guebew.com/posts/antytouky/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://guebew.com/images/antytouky_1.png&#34; alt=&#34;Anty &amp;amp; Touky&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;summary&#34;&gt;Summary&lt;/h3&gt;
&lt;p&gt;Anty &amp;amp; Touky is an action/adventure game for 1 or 2 players. Anty, an anteater, and Touky, a toucan, have to defend their forest because El Squalo, an evil homeless penguin, try to conquer it.&lt;/p&gt;
&lt;h3 id=&#34;around&#34;&gt;Around&lt;/h3&gt;
&lt;p&gt;The game was made during the Casual Games Cup, contest organized by Jeux.com.
I worked on the code with Vincent Roumier. All graphical stuff has been created by Fanny Robin and Vincent Roumier.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img src="/images/antytouky_1.png" alt="Anty &amp; Touky"></p>
<h3 id="summary">Summary</h3>
<p>Anty &amp; Touky is an action/adventure game for 1 or 2 players. Anty, an anteater, and Touky, a toucan, have to defend their forest because El Squalo, an evil homeless penguin, try to conquer it.</p>
<h3 id="around">Around</h3>
<p>The game was made during the Casual Games Cup, contest organized by Jeux.com.
I worked on the code with Vincent Roumier. All graphical stuff has been created by Fanny Robin and Vincent Roumier.</p>
<ul>
<li><a href="http://www.jeux.com/">Jeux.com</a></li>
<li><a href="http://www.vincent-roumier.fr/">Vincent Roumier</a></li>
<li><a href="http://www.behance.net/Fan-robin">Fanny Robin</a></li>
</ul>
<h3 id="technical-stuff">Technical stuff</h3>
<p>The game is coded in Flash with the game library Flixel.
br&gt;</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Adobe_Flash">Flash</a></li>
<li><a href="http://flixel.org/">Flixel</a></li>
</ul>
<p><img src="/images/antytouky_2.png" alt="Anty &amp; Touky">
<img src="/images/antytouky_3.png" alt="Anty &amp; Touky"></p>
]]></content:encoded>
    </item>
    <item>
      <title>Deferred Rendering</title>
      <link>https://guebew.com/posts/deferred_rendering/</link>
      <pubDate>Sun, 22 Apr 2012 00:00:00 +0000</pubDate>
      <guid>https://guebew.com/posts/deferred_rendering/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://guebew.com/images/deferred_rendering_1.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://vimeo.com/36334571&#34;&gt;Watch on Vimeo&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;summary&#34;&gt;Summary&lt;/h3&gt;
&lt;p&gt;Deferred Rendering allows fast compution of scenes composed of multiple objects and multiple lights. First we compute the G-buffer (positions, normals, materials) then the Z-buffer (or Depth-buffer). At this point, we can compute more stuff to improve the final render (shadows for example).&lt;/p&gt;
&lt;p&gt;With shadow maps, and thanks to Deferred Rendering, we can add shadows to objects in 3D scenes. By testing if a pixel is visible from a light source, and comparing it to the Z-buffer, we can paint the pixel or not to create a shadow.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><img src="/images/deferred_rendering_1.png" alt=""></p>
<p><a href="https://vimeo.com/36334571">Watch on Vimeo</a></p>
<h3 id="summary">Summary</h3>
<p>Deferred Rendering allows fast compution of scenes composed of multiple objects and multiple lights. First we compute the G-buffer (positions, normals, materials) then the Z-buffer (or Depth-buffer). At this point, we can compute more stuff to improve the final render (shadows for example).</p>
<p>With shadow maps, and thanks to Deferred Rendering, we can add shadows to objects in 3D scenes. By testing if a pixel is visible from a light source, and comparing it to the Z-buffer, we can paint the pixel or not to create a shadow.</p>
<h3 id="around">Around</h3>
<p>This project has been made during my last Master’s Degree year at Gamagora.</p>
<ul>
<li><a href="http://gamagora.univ-lyon2.fr/">Gamagora</a></li>
</ul>
<h3 id="technical-stuff">Technical stuff</h3>
<p>I used C++ and OpenGL to make this project.</p>
<ul>
<li><a href="http://www.opengl.org/">OpenGL</a></li>
</ul>
]]></content:encoded>
    </item>
  </channel>
</rss>
