<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Yet Another Tech Blog]]></title><description><![CDATA[Tiny blog about interesting things I find or come up with]]></description><link>https://blog.scaleprocess.net/</link><image><url>https://blog.scaleprocess.net/favicon.png</url><title>Yet Another Tech Blog</title><link>https://blog.scaleprocess.net/</link></image><generator>Ghost 5.1</generator><lastBuildDate>Sun, 19 Apr 2026 00:47:48 GMT</lastBuildDate><atom:link href="https://blog.scaleprocess.net/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Hommage à Etienne]]></title><description><![CDATA[<p>Nous nous sommes rencontr&#xE9;s en 2019 chez Softn. Prescillia avait trouv&#xE9; ton profil sur talent.io, et nous avait organis&#xE9; un petit test technique lors de ton retour de vacances. Et l&#xE0;, le courant est tout de suite pass&#xE9; ! Dou&#xE9;, r&#xE9;actif,</p>]]></description><link>https://blog.scaleprocess.net/hommage-a-etienne/</link><guid isPermaLink="false">6299057a4d49a80001586503</guid><dc:creator><![CDATA[Benjamin Bourgeais]]></dc:creator><pubDate>Thu, 02 Jun 2022 20:32:15 GMT</pubDate><content:encoded><![CDATA[<p>Nous nous sommes rencontr&#xE9;s en 2019 chez Softn. Prescillia avait trouv&#xE9; ton profil sur talent.io, et nous avait organis&#xE9; un petit test technique lors de ton retour de vacances. Et l&#xE0;, le courant est tout de suite pass&#xE9; ! Dou&#xE9;, r&#xE9;actif, sympathique, tous les voyants &#xE9;taient au vert. Et pure co&#xEF;ncidence, nous &#xE9;tions n&#xE9;s le m&#xEA;me jour !</p><p>C&apos;est ainsi que notre relation &#xE0; commenc&#xE9;e ainsi que ton aventure chez Softn. Et quelle aventure ! Ca n&apos;a pas &#xE9;t&#xE9; simple tous les jours, mais nous avons appris a nous faire confiance avec le temps. Les gal&#xE8;res de code, les features qui changent, les codes review... Malgr&#xE9; &#xE7;&#xE0;, on s&apos;est quand m&#xEA;me bien marr&#xE9;s. Je me souviendrais toujours de cette fois o&#xF9; nous &#xE9;tions brouill&#xE9;s avec Prescillia, et o&#xF9; je t&apos;avais envoy&#xE9; ce gif: </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.scaleprocess.net/content/images/2022/06/flute-music.gif" class="kg-image" alt loading="lazy" width="390" height="450"><figcaption>&quot;pipeau&quot;</figcaption></figure><p>Impossible de s&apos;arr&#xEA;ter de rigoler. Plus on essayait de ne pas rire, plus c&apos;&#xE9;tait dur d&apos;arr&#xEA;ter. Ca nous avait valu une r&#xE9;flexion, mais qu&apos;importe, &#xE7;a restera un des meilleurs souvenirs que j&apos;ai eu avec toi. On se souviendra aussi de l&#xE0; journ&#xE9;e ou l&apos;on s&apos;&#xE9;tait fait des cr&#xEA;pes sans gluten au bureau:</p><figure class="kg-card kg-image-card"><img src="https://blog.scaleprocess.net/content/images/2022/06/IMG_20191005_182517.jpg" class="kg-image" alt loading="lazy" width="2000" height="1125" srcset="https://blog.scaleprocess.net/content/images/size/w600/2022/06/IMG_20191005_182517.jpg 600w, https://blog.scaleprocess.net/content/images/size/w1000/2022/06/IMG_20191005_182517.jpg 1000w, https://blog.scaleprocess.net/content/images/size/w1600/2022/06/IMG_20191005_182517.jpg 1600w, https://blog.scaleprocess.net/content/images/size/w2400/2022/06/IMG_20191005_182517.jpg 2400w" sizes="(min-width: 720px) 720px"></figure><p>Ou encore de cette soir&#xE9;e d&apos;&#xE9;quipe avec quelque belles grimaces:</p><figure class="kg-card kg-gallery-card kg-width-wide"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.scaleprocess.net/content/images/2022/06/20191122_195828.jpg" width="2000" height="1125" loading="lazy" alt srcset="https://blog.scaleprocess.net/content/images/size/w600/2022/06/20191122_195828.jpg 600w, https://blog.scaleprocess.net/content/images/size/w1000/2022/06/20191122_195828.jpg 1000w, https://blog.scaleprocess.net/content/images/size/w1600/2022/06/20191122_195828.jpg 1600w, https://blog.scaleprocess.net/content/images/size/w2400/2022/06/20191122_195828.jpg 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.scaleprocess.net/content/images/2022/06/20191122_195827.jpg" width="2000" height="1125" loading="lazy" alt srcset="https://blog.scaleprocess.net/content/images/size/w600/2022/06/20191122_195827.jpg 600w, https://blog.scaleprocess.net/content/images/size/w1000/2022/06/20191122_195827.jpg 1000w, https://blog.scaleprocess.net/content/images/size/w1600/2022/06/20191122_195827.jpg 1600w, https://blog.scaleprocess.net/content/images/size/w2400/2022/06/20191122_195827.jpg 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.scaleprocess.net/content/images/2022/06/20191122_195824.jpg" width="2000" height="1125" loading="lazy" alt srcset="https://blog.scaleprocess.net/content/images/size/w600/2022/06/20191122_195824.jpg 600w, https://blog.scaleprocess.net/content/images/size/w1000/2022/06/20191122_195824.jpg 1000w, https://blog.scaleprocess.net/content/images/size/w1600/2022/06/20191122_195824.jpg 1600w, https://blog.scaleprocess.net/content/images/size/w2400/2022/06/20191122_195824.jpg 2400w" sizes="(min-width: 720px) 720px"></div></div><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.scaleprocess.net/content/images/2022/06/20191122_195822.jpg" width="2000" height="1125" loading="lazy" alt srcset="https://blog.scaleprocess.net/content/images/size/w600/2022/06/20191122_195822.jpg 600w, https://blog.scaleprocess.net/content/images/size/w1000/2022/06/20191122_195822.jpg 1000w, https://blog.scaleprocess.net/content/images/size/w1600/2022/06/20191122_195822.jpg 1600w, https://blog.scaleprocess.net/content/images/size/w2400/2022/06/20191122_195822.jpg 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.scaleprocess.net/content/images/2022/06/20191122_195819.jpg" width="2000" height="1125" loading="lazy" alt srcset="https://blog.scaleprocess.net/content/images/size/w600/2022/06/20191122_195819.jpg 600w, https://blog.scaleprocess.net/content/images/size/w1000/2022/06/20191122_195819.jpg 1000w, https://blog.scaleprocess.net/content/images/size/w1600/2022/06/20191122_195819.jpg 1600w, https://blog.scaleprocess.net/content/images/size/w2400/2022/06/20191122_195819.jpg 2400w" sizes="(min-width: 720px) 720px"></div></div></div></figure><p>Tu &#xE9;tait g&#xE9;n&#xE9;reux. Je me souviendrais toujours de cette fois o&#xF9; je n&apos;avais plus de transports en communs, et tu m&apos;avais d&#xE9;pos&#xE9; chez moi en moto. Ca m&apos;avait &#xE9;norm&#xE9;ment touch&#xE9;, m&#xEA;me si je n&apos;ai peut-&#xEA;tre pas su te l&apos;exprimer. J&apos;avais quand m&#xEA;me bien flipp&#xE9; derri&#xE8;re :) Je repense &#xE0; toutes ces fois ou tu avais ramen&#xE9; tout ton mat&#xE9;riel professionnel de vid&#xE9;aste au bureau, sans rien demander, par pure gentillesse. </p><p>Je me souviendrais aussi de toutes ces fois o&#xF9; l&apos;on a longuement discut&#xE9; apr&#xE8;s nos journ&#xE9;es de travail. Nous nous remontions mutuellement le moral apr&#xE8;s nos &#xE9;preuves quotidiennes, et j&apos;&#xE9;coutais avec attention toutes tes paroles. Tu savais comprendre et motiver les gens comme personne. Tu avais les mots justes pour donner des conseils, pour comme tu le disait toi m&#xEA;me:</p><blockquote>Devenir une meilleure version de soi.</blockquote><p>Tout cela m&apos;am&#xE8;ne aussi &#xE0; l&apos;un de tes traits les plus importants: ton mental d&apos;acier. On pouvait le deviner en voyant ta routine en b&#xE9;ton arm&#xE9;, o&#xF9; tu allait &#xE0; la salle le matin avant d&apos;aller travailler. On le voyait aussi dans ta capacit&#xE9; &#xE0; endurer des journ&#xE9;es hors-normes, avec une concentration incroyable. Je n&apos;avais jamais vu &#xE7;a. Car comme tu me l&apos;avais bien dit: </p><blockquote>Si tu ne veux pas &#xEA;tre comme les autres, ne fait pas comme les autres. </blockquote><p>Tu n&apos;a laiss&#xE9; personne indiff&#xE9;rent, tous les gens &#xE0; qui j&apos;ai pu parl&#xE9; ont &#xE9;t&#xE9; marqu&#xE9;s par ta personnalit&#xE9;. J&apos;ai toujours admir&#xE9; la personne que tu &#xE9;tait, et tu fait partie des quelques personnes pour qui j&apos;ai &#xE9;norm&#xE9;ment de respect. Tu as &#xE9;t&#xE9; et tu sera toujours un mentor pour moi. J&apos;aurais vraiment aim&#xE9; te voir plus souvent, m&#xEA;me si le destin en a d&#xE9;cid&#xE9; autrement. Tu peux &#xEA;tre fier de toi.</p><p>Tu m&apos;a vraiment aid&#xE9; a construire ma confiance en moi. Je savais que tu &#xE9;tait sinc&#xE8;re quand tu me parlait, et tu toujours &#xE9;t&#xE9; bienveillant a mon &#xE9;gard. La preuve en est, quand ton patron t&apos;as demand&#xE9; quelqu&apos;un a lui recommander, tu as donn&#xE9; mon nom. J&apos;&#xE9;tais si fier ! Et aujourd&apos;hui si reconnaissant.</p><p>Merci pour tout. Du fond du c&#x153;ur.</p><figure class="kg-card kg-gallery-card kg-width-wide"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.scaleprocess.net/content/images/2022/06/IMG-20191016-WA0000.jpg" width="1200" height="1600" loading="lazy" alt srcset="https://blog.scaleprocess.net/content/images/size/w600/2022/06/IMG-20191016-WA0000.jpg 600w, https://blog.scaleprocess.net/content/images/size/w1000/2022/06/IMG-20191016-WA0000.jpg 1000w, https://blog.scaleprocess.net/content/images/2022/06/IMG-20191016-WA0000.jpg 1200w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.scaleprocess.net/content/images/2022/06/IMG-20191105-WA0002.jpg" width="1600" height="1200" loading="lazy" alt srcset="https://blog.scaleprocess.net/content/images/size/w600/2022/06/IMG-20191105-WA0002.jpg 600w, https://blog.scaleprocess.net/content/images/size/w1000/2022/06/IMG-20191105-WA0002.jpg 1000w, https://blog.scaleprocess.net/content/images/2022/06/IMG-20191105-WA0002.jpg 1600w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.scaleprocess.net/content/images/2022/06/IMG-20191106-WA0002.jpg" width="1600" height="1200" loading="lazy" alt srcset="https://blog.scaleprocess.net/content/images/size/w600/2022/06/IMG-20191106-WA0002.jpg 600w, https://blog.scaleprocess.net/content/images/size/w1000/2022/06/IMG-20191106-WA0002.jpg 1000w, https://blog.scaleprocess.net/content/images/2022/06/IMG-20191106-WA0002.jpg 1600w" sizes="(min-width: 720px) 720px"></div></div><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.scaleprocess.net/content/images/2022/06/IMG-20191107-WA0000.jpg" width="1200" height="1599" loading="lazy" alt srcset="https://blog.scaleprocess.net/content/images/size/w600/2022/06/IMG-20191107-WA0000.jpg 600w, https://blog.scaleprocess.net/content/images/size/w1000/2022/06/IMG-20191107-WA0000.jpg 1000w, https://blog.scaleprocess.net/content/images/2022/06/IMG-20191107-WA0000.jpg 1200w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.scaleprocess.net/content/images/2022/06/IMG-20191218-WA0000.jpg" width="1202" height="1600" loading="lazy" alt srcset="https://blog.scaleprocess.net/content/images/size/w600/2022/06/IMG-20191218-WA0000.jpg 600w, https://blog.scaleprocess.net/content/images/size/w1000/2022/06/IMG-20191218-WA0000.jpg 1000w, https://blog.scaleprocess.net/content/images/2022/06/IMG-20191218-WA0000.jpg 1202w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.scaleprocess.net/content/images/2022/06/IMG-20191218-WA0001.jpg" width="1200" height="1600" loading="lazy" alt srcset="https://blog.scaleprocess.net/content/images/size/w600/2022/06/IMG-20191218-WA0001.jpg 600w, https://blog.scaleprocess.net/content/images/size/w1000/2022/06/IMG-20191218-WA0001.jpg 1000w, https://blog.scaleprocess.net/content/images/2022/06/IMG-20191218-WA0001.jpg 1200w" sizes="(min-width: 720px) 720px"></div></div></div></figure><hr><p>Pour ne pas les perdre, quelque liens ...</p><ul><li><a href="https://www.youtube.com/channel/UC5Kgv3mXdAHtQfaaUODnLsQ">Gari Gate - YouTube</a></li><li><a href="https://www.linkedin.com/in/etienne-gautier-6998a391/">Etienne Gautier | LinkedIn</a></li><li><a href="https://github.com/etiennegautier">etiennegautier (github.com)</a></li><li><a href="https://www.instagram.com/garigate/">Gari Gate (@garigate) &#x2022; Instagram</a></li><li><a href="https://www.facebook.com/etienne.ch.gautier">Etienne Gautier | Facebook</a></li></ul>]]></content:encoded></item><item><title><![CDATA[Fixing Xbox One Elite Controller Sticky Buttons]]></title><description><![CDATA[This post describes the process used to repair an elite xbox controller that has got sticky buttons.]]></description><link>https://blog.scaleprocess.net/fixing-xbox-one-elite-controller-sticky-buttons/</link><guid isPermaLink="false">6299020bfd14650001013f59</guid><category><![CDATA[teardown]]></category><category><![CDATA[xbox]]></category><category><![CDATA[sticky]]></category><category><![CDATA[button]]></category><category><![CDATA[elite]]></category><dc:creator><![CDATA[Benjamin Bourgeais]]></dc:creator><pubDate>Sun, 30 Jun 2019 12:09:24 GMT</pubDate><media:content url="https://blog.scaleprocess.net/content/images/2019/06/wu-yi-P1CJmbRIfSk-unsplash.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.scaleprocess.net/content/images/2019/06/wu-yi-P1CJmbRIfSk-unsplash.jpg" alt="Fixing Xbox One Elite Controller Sticky Buttons"><p>When Red Dead Redemption 2 was released, my best friend bought it and she enjoyed it so much I wanted to play with it too. But my Xbox One hadn&apos;t been started in months, and it took a while to update the beast. After installing the game, I took my favorite controller, which is my <strong>Xbox One Elite Controller</strong>. It&apos;s a fantastic piece of electronics, although a bit expensive if bought without a discount. </p><p>While playing, I immediately felt that something was wrong. The A, B, X and Y buttons where all a bit sticky. It felt like the buttons weren&apos;t getting back up until all the pressure was removed (ie. until you removed your fingers completely). Usually, you could keep your fingers on the buttons, and just apply more pressure to activate them, but not this time. This drove me a bit crazy, because in some games you really need some reactivity, and the controller just wasn&apos;t cutting it anymore. </p><h1 id="what-s-the-problem">What&apos;s the problem ?</h1><p>After searching for a while, it looks like it&apos;s a cleaning problem. The controller needs to be cleaned to work properly again. Most of this blog post applies to the standard Xbox Controller.</p><h1 id="let-s-tear-down-this-controller">Let&apos;s tear down this controller</h1><p>Just a little disclaimer before starting: This will <strong>completely void your warranty</strong>, and, obviously, I can&apos;t be held responsible if you break your controller while following this page&apos;s instructions, you&apos;re doing this at your own risk. </p><p>&#x1F527; The tools you&apos;ll need: </p><ol><li>A security Torx TR8 screw driver (the ones with a hole in the middle)</li><li>A standard Torx TR6 screw driver</li><li>A soldering iron</li><li>Some cleaning alcohol</li><li>And, for the most organised / tooled, a magnetic mat for the screws</li></ol><p>I&apos;m personally using an iFixit screwdriver kit that contains everything you&apos;ll ever need to repair this kind of electronic devices. If you want to know which one I used, please let me know in the comments.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.scaleprocess.net/content/images/2019/06/20190630_094908.jpg" class="kg-image" alt="Fixing Xbox One Elite Controller Sticky Buttons" loading="lazy"><figcaption>This is the bad boy we&apos;re talking about</figcaption></figure><h2 id="remove-the-side-covers">Remove the side covers</h2><p>Those side covers are hiding some screws, so we need to take them off to start with. You want to gently pry them open from the side, and work your way around. I did it with my nails, but some others used credit cards or opening tools. They should come off themselves pretty easily. Don&apos;t forget to:</p><ul><li>Remove the battery</li><li>Remove the joystick pads</li><li>Remove the arrow pad.</li></ul><p><em>Little note</em>: there a little adhesive strap inside to help them stay in place. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.scaleprocess.net/content/images/2019/06/20190630_095005.jpg" class="kg-image" alt="Fixing Xbox One Elite Controller Sticky Buttons" loading="lazy"><figcaption>Left side removed</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.scaleprocess.net/content/images/2019/06/20190630_095125.jpg" class="kg-image" alt="Fixing Xbox One Elite Controller Sticky Buttons" loading="lazy"><figcaption>Both sides removed</figcaption></figure><h2 id="remove-the-screws">Remove the screws</h2><p>Using the Torx TR8 screw driver, remove the 5 screws holding the front and back panel together. The fifth one, as indicated, is hidden behind the official sticker, so, by unscrewing it, you&apos;re effectively voiding your warranty.</p><figure class="kg-card kg-gallery-card kg-width-wide kg-card-hascaption"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.scaleprocess.net/content/images/2019/06/20190630_095241---Copie.jpg" width="2000" height="1500" loading="lazy" alt="Fixing Xbox One Elite Controller Sticky Buttons" srcset="https://blog.scaleprocess.net/content/images/size/w600/2019/06/20190630_095241---Copie.jpg 600w, https://blog.scaleprocess.net/content/images/size/w1000/2019/06/20190630_095241---Copie.jpg 1000w, https://blog.scaleprocess.net/content/images/size/w1600/2019/06/20190630_095241---Copie.jpg 1600w, https://blog.scaleprocess.net/content/images/size/w2400/2019/06/20190630_095241---Copie.jpg 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.scaleprocess.net/content/images/2019/06/20190630_095246---Copie.jpg" width="2000" height="1500" loading="lazy" alt="Fixing Xbox One Elite Controller Sticky Buttons" srcset="https://blog.scaleprocess.net/content/images/size/w600/2019/06/20190630_095246---Copie.jpg 600w, https://blog.scaleprocess.net/content/images/size/w1000/2019/06/20190630_095246---Copie.jpg 1000w, https://blog.scaleprocess.net/content/images/size/w1600/2019/06/20190630_095246---Copie.jpg 1600w, https://blog.scaleprocess.net/content/images/size/w2400/2019/06/20190630_095246---Copie.jpg 2400w" sizes="(min-width: 720px) 720px"></div></div></div><figcaption>The location of the five screws you need to remove</figcaption></figure><p>Now that you&apos;ve done this, the front panel should come off on its own, with literally no help. Please take care of removing the &quot;profile selector&quot; button (the one right in the middle of the controller), or it will fall off at the next step and you might loose it.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.scaleprocess.net/content/images/2019/06/20190630_095613-1.jpg" class="kg-image" alt="Fixing Xbox One Elite Controller Sticky Buttons" loading="lazy"><figcaption>The controller with its front panel removed</figcaption></figure><h2 id="removing-the-back-panel">Removing the back panel</h2><p>First, before removing the back panel, you must take off your joystick adapters. Those should come off easily by gently pulling them. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.scaleprocess.net/content/images/2019/06/20190630_095838-1.jpg" class="kg-image" alt="Fixing Xbox One Elite Controller Sticky Buttons" loading="lazy"><figcaption>The joysticks without their caps</figcaption></figure><p>Just a side note, look at the joystick components: they are from ALPS, probably the <a href="https://www.mouser.fr/ProductDetail/ALPS/RKJXV1224005?qs=sGAEpiMZZMsFLoxuNbFfpQfqrt9gh7uSHZQmhpi6qwA%3D">RKJXV1224005</a>, and are usually high quality. Thumbs up for putting good components in there. Also, as they are standard, they are easy to find and order, in case you need a replacement. </p><p>Now let&apos;s work around the back panel. Before starting, you must know that <strong>there is a ribbon cable</strong> running from the back panel to a PCB in the middle frame. So don&apos;t be too violent during this part or you might break the ribbon. This ribbon is used to carry the signals from the 4 optional buttons under the controller, so if you&apos;re repairing a standard Xbox controller, just forget about it.</p><p>Now, that said, let&apos;s remove that back panel. Please note that it&apos;s a bit harder than the front panel..</p><ul><li>Start by gently lifting the back panel from the top of the controller. By top, i mean the side where the battery is.</li><li>The microphone port that is kind of holding the panel in place. So you&apos;ll have to make the panel slip over it</li><li>Again, be careful with the ribbon !</li></ul><p>You should end up with something like the next picture. </p><figure class="kg-card kg-image-card"><img src="https://blog.scaleprocess.net/content/images/2019/06/20190630_100050-1.jpg" class="kg-image" alt="Fixing Xbox One Elite Controller Sticky Buttons" loading="lazy"></figure><p>Now, we have to disconnect the ribbon. To do that, on the middle frame PCB, identify the little connector. Gently lift up the black part to free the ribbon, and pull it out of the connector.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.scaleprocess.net/content/images/2019/06/20190630_100050---Copie--2-.jpg" class="kg-image" alt="Fixing Xbox One Elite Controller Sticky Buttons" loading="lazy"><figcaption>Disconnecting the ribbon</figcaption></figure><p>After removing the back panel, you should end up with your controller looking like this. Note that the vibration motors aren&apos;t attached to the middle frame, so they might fall off on their own. That&apos;s not a problem.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.scaleprocess.net/content/images/2019/06/20190630_100119-1.jpg" class="kg-image" alt="Fixing Xbox One Elite Controller Sticky Buttons" loading="lazy"><figcaption>Naked controller. Don&apos;t worry, it&apos;s not cold in there.</figcaption></figure><h2 id="removing-the-top-assembly">Removing the top assembly</h2><p>The top assembly includes the LB and RB buttons and the center plastic part which goes around the Xbox button. This part is also fragile, like many parts in this controller, so please be gentle with it. From the &quot;buttons&quot; side of the controller, you&apos;ll see that the middle plastic part has two holes, which helps it stay in place, and so does the Xbox button.</p><figure class="kg-card kg-image-card"><img src="https://blog.scaleprocess.net/content/images/2019/06/20190630_095838---Copie-2.jpg" class="kg-image" alt="Fixing Xbox One Elite Controller Sticky Buttons" loading="lazy"></figure><p>To remove it, lift the plastic part between the two hole, push the Xbox button, and try to make the plastic part slip over it. Once done, the whole contraption should come off as easily as the front panel </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.scaleprocess.net/content/images/2019/06/20190630_100234.jpg" class="kg-image" alt="Fixing Xbox One Elite Controller Sticky Buttons" loading="lazy"><figcaption>The controller and its plastic thing.</figcaption></figure><p>If you look at how the LB and RB button works, you&apos;ll see that they have a little wing that goes in between two black plastic guides before hitting the actual button. Remember this when you&apos;ll reassemble your controller, because if you don&apos;t make the little wings go between the guides, they&apos;ll break or you won&apos;t be able you use these buttons. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.scaleprocess.net/content/images/2019/06/20190630_100234---Copie.jpg" class="kg-image" alt="Fixing Xbox One Elite Controller Sticky Buttons" loading="lazy"><figcaption>The little with it&apos;s button and the two plastic guides in between</figcaption></figure><p>You&apos;ll also have to remove the sync button (the green button in the middle, in the above picture). If you don&apos;t, it will fall off when we&apos;ll remove the last PCB, and you might loose it. Now you should end up with your controller looking like this:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.scaleprocess.net/content/images/2019/06/20190630_100327.jpg" class="kg-image" alt="Fixing Xbox One Elite Controller Sticky Buttons" loading="lazy"><figcaption>The controller without the top plastic part</figcaption></figure><h2 id="removing-the-first-pcb">Removing the first PCB</h2><p>There are two PCBs in there, which are connected to each other through some headers. Now, to get the first out, we need to un-solder the vibration motor cables, and then remove the two screws holding it in place.</p><p>There are four motors to un-solder, which means that there are 4 pairs of two cables. They are easily identifiable:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.scaleprocess.net/content/images/2019/06/20190630_100327---Copie-1.jpg" class="kg-image" alt="Fixing Xbox One Elite Controller Sticky Buttons" loading="lazy"><figcaption>The 8 wires to un-solder.</figcaption></figure><p>Using your soldering iron, heat-up the solder area until you can pull the wire out of the PCB. Repeat this for each wire. If you feel like you don&apos;t know enough about soldering, there&apos;s a nice video on YouTube about it : <a href="https://www.youtube.com/watch?v=Qps9woUGkvI">https://www.youtube.com/watch?v=Qps9woUGkvI</a> </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.scaleprocess.net/content/images/2019/06/20190630_100808.jpg" class="kg-image" alt="Fixing Xbox One Elite Controller Sticky Buttons" loading="lazy"><figcaption>Un-soldering the first wire.</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.scaleprocess.net/content/images/2019/06/20190630_101106.jpg" class="kg-image" alt="Fixing Xbox One Elite Controller Sticky Buttons" loading="lazy"><figcaption>The final result</figcaption></figure><p>Congratulations &#x1F389; You&apos;ve done the hardest part ! Now that you&apos;ve removed the cables, let&apos;s remove the two screws holding the board in place using the TR6 screwdriver: </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.scaleprocess.net/content/images/2019/06/20190630_101106---Copie.jpg" class="kg-image" alt="Fixing Xbox One Elite Controller Sticky Buttons" loading="lazy"><figcaption>The two screws to remove</figcaption></figure><p>After removing the screws, you&apos;ll see that the board stays in place. It does because of the connectors between the first and second board. To remove it, you must pull gently the first board around the two hidden connectors:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.scaleprocess.net/content/images/2019/06/20190630_101106---Copie--2-.jpg" class="kg-image" alt="Fixing Xbox One Elite Controller Sticky Buttons" loading="lazy"><figcaption>The rough location of the two connectors</figcaption></figure><p>With that first board removed, you should end up with something like this:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.scaleprocess.net/content/images/2019/06/20190630_101331.jpg" class="kg-image" alt="Fixing Xbox One Elite Controller Sticky Buttons" loading="lazy"><figcaption>Controller with the first PCB removed</figcaption></figure><p>Note that the jack isn&apos;t soldered. It&apos;s normal that it moves. It just sits between the two boards, and makes contacts with the first board. Don&apos;t forget to place it back when you reassemble the controller !</p><h2 id="removing-the-second-board">Removing the second board</h2><p>This is the easiest part. There are six screws to remove and you&apos;re done. Use the TR6 screw driver.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.scaleprocess.net/content/images/2019/06/20190630_101331---Copie.jpg" class="kg-image" alt="Fixing Xbox One Elite Controller Sticky Buttons" loading="lazy"><figcaption>The screws to remove</figcaption></figure><p>After removing the last PCB, you&apos;ll get access to the plastic conductive layer, and to the buttons.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.scaleprocess.net/content/images/2019/06/20190630_101658.jpg" class="kg-image" alt="Fixing Xbox One Elite Controller Sticky Buttons" loading="lazy"><figcaption>With the last PCB removed</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.scaleprocess.net/content/images/2019/06/20190630_102120.jpg" class="kg-image" alt="Fixing Xbox One Elite Controller Sticky Buttons" loading="lazy"><figcaption>And the buttons taken out.</figcaption></figure><h2 id="cleaning-the-controller">Cleaning the controller</h2><p>After all this hard work, the only remaining task before reassembling the controller is to clean the button chambers, and the buttons themselves. To do that, use some cleaning alcohol and a Q-tip and make sure to clean everything correctly. Make sure it&apos;s dry before assembling.</p><p><strong>Pro tip</strong>: When you&apos;re done cleaning, do not reassemble the whole controller. Just put back the buttons, the plastic conductive layer and the first PCB, screw it back and test if the buttons are still sticky. If not, clean again. </p><h2 id="reassembling-the-controller">Reassembling the controller</h2><p>Please read this post upside down. There&apos;s no special trick used to reassemble it. Just make sure all the tiny things are put back while assembling:</p><ul><li>The sync button</li><li>The profile selection button</li><li>The jack port</li></ul><p>I tell you this because I happened to forget each one at least one time &#x1F605;.</p><h1 id="tl-dr">TL;DR</h1><p>I hope you&apos;ve enjoyed this post, and if you have any questions or feedbacks, do not hesitate to tell me in the comments below. <br><br>Header Picture by <a href="https://unsplash.com/@takeshi2?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">wu yi</a> on <a href="https://unsplash.com/search/photos/xbox?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a><br>I took all the pictures used in this post, and if you want to use them please contact me first.</p>]]></content:encoded></item><item><title><![CDATA[Surface Book 2 Review]]></title><description><![CDATA[<h1 id="why-the-surface-book-2">Why the Surface Book 2 ? </h1><p>Recently, I felt the urge to draw, and really wanted to play around with an active pen. I wanted to use some good tools like Photoshop on the go, without having to carry a Wacom tablet. There were many different choices available to me: </p><ul><li>The</li></ul>]]></description><link>https://blog.scaleprocess.net/surface-book-2-review/</link><guid isPermaLink="false">6299020bfd14650001013f58</guid><dc:creator><![CDATA[Benjamin Bourgeais]]></dc:creator><pubDate>Sun, 02 Dec 2018 21:34:50 GMT</pubDate><media:content url="https://blog.scaleprocess.net/content/images/2018/12/0b8806b4751316a6f8f8f0260fd3da92--2-.jpg" medium="image"/><content:encoded><![CDATA[<h1 id="why-the-surface-book-2">Why the Surface Book 2 ? </h1><img src="https://blog.scaleprocess.net/content/images/2018/12/0b8806b4751316a6f8f8f0260fd3da92--2-.jpg" alt="Surface Book 2 Review"><p>Recently, I felt the urge to draw, and really wanted to play around with an active pen. I wanted to use some good tools like Photoshop on the go, without having to carry a Wacom tablet. There were many different choices available to me: </p><ul><li>The new iPad pro (3rd gen, 2018) (11 / 13 inches)</li><li>The HP Spectre x360 (13 / 15 inches)</li><li>The Dell XPS 9575 2-in-1 (13 / 15 inches) </li><li>The Samsung Notebook 9 (13 / 15 inches)</li><li>And, of course, the surface book 2 (13 / 15 inches).<em> I didn&apos;t consider the surface pro, as the 6th version is still not out in France to date</em>.</li></ul><figure class="kg-card kg-gallery-card kg-width-wide kg-card-hascaption"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.scaleprocess.net/content/images/2018/12/ipad-pro-12-select-wifi-spacegray-201810.png" width="470" height="556" loading="lazy" alt="Surface Book 2 Review"></div><div class="kg-gallery-image"><img src="https://blog.scaleprocess.net/content/images/2018/12/c05912513.png" width="573" height="430" loading="lazy" alt="Surface Book 2 Review"></div><div class="kg-gallery-image"><img src="https://blog.scaleprocess.net/content/images/2018/12/71YjK4KIzUL._SL1280_.jpg" width="1280" height="921" loading="lazy" alt="Surface Book 2 Review" srcset="https://blog.scaleprocess.net/content/images/size/w600/2018/12/71YjK4KIzUL._SL1280_.jpg 600w, https://blog.scaleprocess.net/content/images/size/w1000/2018/12/71YjK4KIzUL._SL1280_.jpg 1000w, https://blog.scaleprocess.net/content/images/2018/12/71YjK4KIzUL._SL1280_.jpg 1280w" sizes="(min-width: 720px) 720px"></div></div><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.scaleprocess.net/content/images/2018/12/NP940X5M-X03US_KV.jpg" width="1600" height="1200" loading="lazy" alt="Surface Book 2 Review" srcset="https://blog.scaleprocess.net/content/images/size/w600/2018/12/NP940X5M-X03US_KV.jpg 600w, https://blog.scaleprocess.net/content/images/size/w1000/2018/12/NP940X5M-X03US_KV.jpg 1000w, https://blog.scaleprocess.net/content/images/2018/12/NP940X5M-X03US_KV.jpg 1600w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.scaleprocess.net/content/images/2018/12/71TCixvQotL._SL1200_.jpg" width="1200" height="1200" loading="lazy" alt="Surface Book 2 Review" srcset="https://blog.scaleprocess.net/content/images/size/w600/2018/12/71TCixvQotL._SL1200_.jpg 600w, https://blog.scaleprocess.net/content/images/size/w1000/2018/12/71TCixvQotL._SL1200_.jpg 1000w, https://blog.scaleprocess.net/content/images/2018/12/71TCixvQotL._SL1200_.jpg 1200w" sizes="(min-width: 720px) 720px"></div></div></div><figcaption>All the different contenders.</figcaption></figure><p>All those devices have pros and cons. While iPads have an extremely low pen latency, they are also <a href="https://www.youtube.com/watch?v=hUBsxCcJeUc">fragile</a>, and they run on a mobile OS, which isn&apos;t great for classic tools. Also, I&apos;m not fond of standard consumer laptops from brands like Samsung and HP (amongst others), as they tend to make more and more disposable electronics. Of course, all of those statements are subjective, and everyone here will have its own opinion. </p><p>This brings us to the XPS versus Surface Book fight. The XPS has plenty of advantages, like its lower price point, higher resolution, strong build quality, the Dell d+1 not-that-expensive warranty, and doesn&apos;t have everything glued together, meaning you can swap out the SSD quite easily. Still, there are some reasons why I&apos;ve chosen the Surface Book 2 over the XPS:</p><ul><li>The aspect ratio, 3:2 means more code on screen (hey, i&apos;m a developer)</li><li>The fact that it&apos;s completely integrated with the surface pen, and everything has been engineered to work together flawlessly.</li><li>The GTX 1060 graphics card. I won&apos;t be using it often, but that&apos;s always good to have nearby.</li><li>And finally, you can detach the screen and use it autonomously.</li></ul><h1 id="how-much-does-it-cost">How much does it cost ?</h1><p>It really depends on what options you choose. It starts at 1399&#x20AC; with a 13.5 inches screen, an Intel i5, 8gb or ram and 128gb of SSD, all the way up to 3799&#x20AC; for the top-of-the-line model with a 15 inches screen, and intel i7, 16gb of ram and 1tb of SSD. The version I bought, the 15 inches, Intel i7, 16gb RAM and 512gb SSD costs around 3300&#x20AC;. Hopefully I got a nice discount and paid around 2700&#x20AC;. </p><p>I find these prices to be a bit high. Microsoft doesn&apos;t have the pricing power of Apple , and even with the discount, I still find it really expensive. Actually, at least least for the 15 inches model, Microsoft aligned its prices with Apple&apos;s MacBook Pro. If you select the same components on both sites, you&apos;ll end-up with the same price. </p><p><strong>Note</strong>: the CPU and RAM are soldered onto the motherboard, and thus, you won&apos;t be able to upgrade later. The SSD is a standard Samsung NVMe 2280 drive, and can be replaced. Well, only with a lot of hard work, as it involves removing the strongly glued front panel.</p><h1 id="let-s-unbox-it-">Let&apos;s unbox it !</h1><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.scaleprocess.net/content/images/2018/12/sb2_box.jpg" class="kg-image" alt="Surface Book 2 Review" loading="lazy"><figcaption>The Surface Book 2 box</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.scaleprocess.net/content/images/2018/12/sb2_box_open.jpg" class="kg-image" alt="Surface Book 2 Review" loading="lazy"><figcaption>The Surface Book 2 is nicely seated in the box</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.scaleprocess.net/content/images/2018/12/sb2_open-1.jpg" class="kg-image" alt="Surface Book 2 Review" loading="lazy"><figcaption>There it is, after waiting all those days and removing the plastic protection, it&apos;s finally here, open.</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.scaleprocess.net/content/images/2018/12/sb2_accessories.jpg" class="kg-image" alt="Surface Book 2 Review" loading="lazy"><figcaption>What&apos;s also in the box: the 102W proprietary charger</figcaption></figure><p>After running it for the first time, I spent nearly a full day trying to update it. It was shipped with Windows 1709, and it tried to install the 1803 version. At some moment in the process it would just put a high read pressure on the SSD, and continue to do that for hours. I left it work overnight and by the morning it had <em>finally</em> finished.<br><br><strong>For the geeks</strong>: I tried to understand what was going on there. It seems like as a part of the upgrade plan, it must take some ESD files and process them. One for each language (there were around 15 of them), and each one was just painfully slow. The dism process would just spend it&apos;s whole time unpacking tens of thousands of tiny files and then work on them. </p><h1 id="my-first-impressions">My first impressions</h1><p>My biggest fear was that, due to the weight of the tablet versus the weight of the base, that it wasn&apos;t really &quot;lapable&quot;. But to my greatest pleasure, it doesn&apos;t fall on the back easily, even at the maximum screen inclination.</p><h2 id="the-screen">The screen</h2><p>It&apos;s amazing. The colors are great, the aspect ratio is really comfortable, and the resolution is perfect. The laptop is shipped with a 200% UI scaling, which I reduced to 175% and it now feels perfect. The brightness is automatically adjusted following ambient light changes, like our phones do. (I knew this feature existed before, but I&apos;ve never seen it working on a windows laptop.)</p><figure class="kg-card kg-gallery-card kg-width-wide kg-card-hascaption"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.scaleprocess.net/content/images/2018/12/20181202_145228-3.jpg" width="2000" height="1367" loading="lazy" alt="Surface Book 2 Review" srcset="https://blog.scaleprocess.net/content/images/size/w600/2018/12/20181202_145228-3.jpg 600w, https://blog.scaleprocess.net/content/images/size/w1000/2018/12/20181202_145228-3.jpg 1000w, https://blog.scaleprocess.net/content/images/size/w1600/2018/12/20181202_145228-3.jpg 1600w, https://blog.scaleprocess.net/content/images/size/w2400/2018/12/20181202_145228-3.jpg 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.scaleprocess.net/content/images/2018/12/20181202_152721-1.jpg" width="2000" height="1500" loading="lazy" alt="Surface Book 2 Review" srcset="https://blog.scaleprocess.net/content/images/size/w600/2018/12/20181202_152721-1.jpg 600w, https://blog.scaleprocess.net/content/images/size/w1000/2018/12/20181202_152721-1.jpg 1000w, https://blog.scaleprocess.net/content/images/size/w1600/2018/12/20181202_152721-1.jpg 1600w, https://blog.scaleprocess.net/content/images/size/w2400/2018/12/20181202_152721-1.jpg 2400w" sizes="(min-width: 720px) 720px"></div></div></div><figcaption>The screen is gorgeous.</figcaption></figure><p>Some tests mentioned that the screen&apos;s response time is high, but i didn&apos;t really experience this in a significant way myself. I&apos;ve been used to 60 fps standard screens, so I&apos;m not the best to judge on this particular problem.</p><h2 id="the-pen">The pen</h2><p>You can start using it directly without pairing anything or whatsoever. You just put the tip over the screen and you&apos;ll see the cursor move. That&apos;s it. It just works. Now for other features like the &quot;eraser button&quot; to work, you need to pair it via Bluetooth. The manual says you can just put the tip on the screen for ten seconds, but it didn&apos;t work for me, I had to pair it manually. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.scaleprocess.net/content/images/2018/12/20181202_150809--2--1.jpg" class="kg-image" alt="Surface Book 2 Review" loading="lazy"><figcaption>The actual pen.</figcaption></figure><p>The pen is not rechargeable. However, there&apos;s a tiny battery inside that can easily be replaced. The advertised battery life is about 1 year, but I used it for the first time yesterday so I can&apos;t really talk about this.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.scaleprocess.net/content/images/2018/12/20181202_150857--2-.jpg" class="kg-image" alt="Surface Book 2 Review" loading="lazy"><figcaption>The three components of the pen.</figcaption></figure><p>It&apos;s also really balanced. This makes it a pleasure to use. It&apos;s not too light, and not too heavy, meaning you won&apos;t mind using it for hours, while still feeling it in your hands.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.scaleprocess.net/content/images/2018/12/20181202_151056--2-.jpg" class="kg-image" alt="Surface Book 2 Review" loading="lazy"><figcaption>DIY balance test, very accurate, much balanced.</figcaption></figure><p>The pen has 2 buttons, one located in the eraser, and one on the side, which acts as a right click. It&apos;s also worth noting that the pen has magnets and is made to stay on the side of the screen, so you don&apos;t lose it. </p><figure class="kg-card kg-gallery-card kg-width-wide kg-card-hascaption"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.scaleprocess.net/content/images/2018/12/20181202_152629-3.jpg" width="2000" height="2667" loading="lazy" alt="Surface Book 2 Review" srcset="https://blog.scaleprocess.net/content/images/size/w600/2018/12/20181202_152629-3.jpg 600w, https://blog.scaleprocess.net/content/images/size/w1000/2018/12/20181202_152629-3.jpg 1000w, https://blog.scaleprocess.net/content/images/size/w1600/2018/12/20181202_152629-3.jpg 1600w, https://blog.scaleprocess.net/content/images/size/w2400/2018/12/20181202_152629-3.jpg 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.scaleprocess.net/content/images/2018/12/20181202_152643-1.jpg" width="2000" height="2667" loading="lazy" alt="Surface Book 2 Review" srcset="https://blog.scaleprocess.net/content/images/size/w600/2018/12/20181202_152643-1.jpg 600w, https://blog.scaleprocess.net/content/images/size/w1000/2018/12/20181202_152643-1.jpg 1000w, https://blog.scaleprocess.net/content/images/size/w1600/2018/12/20181202_152643-1.jpg 1600w, https://blog.scaleprocess.net/content/images/size/w2400/2018/12/20181202_152643-1.jpg 2400w" sizes="(min-width: 720px) 720px"></div></div></div><figcaption>You can put the pen on the left and the right, and even upside down if you feel fancy.</figcaption></figure><p><strong>Note</strong>: To pair it manually you have to press the eraser button for long enough to see the little green led show up and blink. At first I was too soft with this button and waited like 1 minute with my finger on it, but <strong>you really have to hear a &quot;click&quot; when pressing it</strong>, which requires some additional pressure. I think they wanted to avoid false clicks when erasing on the screen (and randomly triggering the ink workspace).</p><h2 id="the-keyboard">The keyboard</h2><p>The keyboard is also really amazing, it feels great to use, and I&apos;m actually using it to write this review. The pressure that&apos;s needed to activate the keys is just right, which means that it&apos;s hard enough to feel it, but light enough not to make your fingers tired. It doesn&apos;t make much noise like other laptop keyboards. Last but not least, it&apos;s backlit, and you have 3 levels of lighting available.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.scaleprocess.net/content/images/2018/12/20181202_154434.jpg" class="kg-image" alt="Surface Book 2 Review" loading="lazy"><figcaption>The whole palmrest, with the keyboard</figcaption></figure><p>I miss the media keys from this keyboard. There&apos;s no &quot;previous track&quot; and &quot;next track&quot; key, which is quite annoying as a huge Spotify user. I also needed some time to adapt to the Fn key, because it acts as a toggle button. You click once on it, then           click on your favorite function key, and finally click again on the Fn key to get back to the normal behavior. I have to say that it&apos;s a bit too much to just refresh a browser (F5).</p><h1 id="there-s-still-room-for-improvement">There&apos;s still room for improvement</h1><p>While I was super happy with this device, I&apos;ve also discovered some little downsides. </p><h2 id="the-screen-keyboard-connection">The screen/keyboard connection</h2><p>If the tablet wobbles too much, then it may disconnect from the base, requiring you to detach and attach again to get some  functionality back. Its a little frustrating when using in bed for example, because if you move a bit too much inadvertently, then you have to do the whole process. Well, at least, we don&apos;t have to reboot.</p><h2 id="the-plastic-strap-on-the-top">The plastic strap on the top</h2><p>There&apos;s piece of plastic on the top of the screen, where there are the power and volume buttons. Well, for the volume button, the little strap is not attached and quite long. This is a problem because if your finger moves out of the glass panel at this place, you end up bending it.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.scaleprocess.net/content/images/2018/12/20181202_215613_LI.jpg" class="kg-image" alt="Surface Book 2 Review" loading="lazy"><figcaption>The part of the plastic strap that bends easily.</figcaption></figure><h2 id="the-magnetic-surface-connector">The magnetic surface connector</h2><p>The surface connector is great, don&apos;t get me wrong. It&apos;s a fantastic piece of technology that allows you to connect magnetically a whole docking station, with all its wires and complexity. But, it&apos;s round. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.scaleprocess.net/content/images/2018/12/20181202_220756--2-.jpg" class="kg-image" alt="Surface Book 2 Review" loading="lazy"><figcaption>The round connector</figcaption></figure><p>It happened to me that it just escapes the connection while still being magnetically attached to the laptop. Which gives us something like this :</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.scaleprocess.net/content/images/2018/12/20181202_220819--2-.jpg" class="kg-image" alt="Surface Book 2 Review" loading="lazy"><figcaption>Nope, not charging today.</figcaption></figure><h1 id="tl-dr">TL;DR</h1><p>This is an amazing piece of technology. We really feel all the engineering that has been put in this laptop. The build quality is great, and there are many little details that haven&apos;t been left off. For a second generation product, the downsides are not that important and we may easily deal with them. But i still feel like the price I paid for this, even with the discount, is still a bit too much. I would have wanted 1tb of storage at this price point to be happy. </p>]]></content:encoded></item><item><title><![CDATA[Building v8 on Arch Linux]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>My original goal was to script some parts of a Go application using javascript. Knowing chromium components were portable, and that Nodejs was built with v8, I wanted to try it as an experimental platform. This article relates my (little) journey through building the v8 engine on an up-to-date arch</p>]]></description><link>https://blog.scaleprocess.net/building-v8-on-arch-linux/</link><guid isPermaLink="false">6299020bfd14650001013f57</guid><category><![CDATA[v8]]></category><category><![CDATA[arch linux]]></category><category><![CDATA[libtinfo.so.6]]></category><dc:creator><![CDATA[Benjamin Bourgeais]]></dc:creator><pubDate>Thu, 03 Aug 2017 18:30:28 GMT</pubDate><media:content url="https://blog.scaleprocess.net/content/images/2017/08/jaguar-2111973_1920.jpg" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://blog.scaleprocess.net/content/images/2017/08/jaguar-2111973_1920.jpg" alt="Building v8 on Arch Linux"><p>My original goal was to script some parts of a Go application using javascript. Knowing chromium components were portable, and that Nodejs was built with v8, I wanted to try it as an experimental platform. This article relates my (little) journey through building the v8 engine on an up-to-date arch linux. In this post, I assume that you already have a working build system (with clang, etc). See the <a href="https://www.archlinux.org/groups/i686/base-devel/">base-devel</a> group for more information.</p>
<p><strong>Update 1:</strong> After building v8, I ran into some issues to build the v8 samples myself, so I added the relevant steps that had to be done to get them to link.</p>
<h4 id="getthedepot_tools">Get the depot_tools</h4>
<p>The first step is to get chromium&apos;s <em>depot_tools</em>, as this package gives you all the needed tools and commands to get and build the code. Actually, it&apos;s pretty simple to get them, just run through the following commands, from the folder of your choice :</p>
<pre><code class="language-shell">git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
export PATH=`pwd`/depot_tools:&quot;$PATH&quot;
</code></pre>
<p>You might want to add the export line at the end of your <code>.bashrc</code> (and replace the <code>pwd</code> with an absolute path) in order to persist the path modification.</p>
<h4 id="fetchthev8source">Fetch the v8 source</h4>
<p>To get the v8 source code, choose the folder you want to work in, and run</p>
<pre><code class="language-bash">fetch v8
cd v8
</code></pre>
<p>After some time, you&apos;ll end up with a ready-to-use&#x2122; file tree, ready to be built. It might weight over 1 gigabyte. Now, to build v8, the first thing to do is to generate the build files, and then launch the build :</p>
<pre><code class="language-shell">tools/dev/v8gen.py x64.release
ninja -C out.gn/x64.release
</code></pre>
<h6 id="staticbuild">Static build</h6>
<p>As mentionned by @stricker in the comments, you may want to edit the default build arguments in order to have a <em>static</em> build :</p>
<pre><code class="language-shell">gn args out.gn/x64.release
</code></pre>
<p>And then add/edit the following lines :</p>
<pre><code>is_component_build = false
v8_static_library = true
</code></pre>
<p>This is the default workflow to build v8. If you want to get more information about it, or even customize it, please refer to <a href="https://github.com/v8/v8/wiki/Building-with-GN">this document on the v8 wiki</a>. But I wouldn&apos;t write this post if it was <strong>that easy</strong>. If you launch this, you&apos;ll actually end-up with some errors early, telling you that <code>libtinfo.so.6</code> doesn&apos;t exist. And that&apos;s a problem because you can&apos;t just <em>pacman</em> it.</p>
<h4 id="findingnemolibtinfoso6">Finding <s>nemo</s> libtinfo.so.6</h4>
<p>As libtinfo.so.6 doesn&apos;t exist in the standard packages, we have to find another way to get it. Hopefully for us, it&apos;s available on <strong>AUR</strong> (Arch User Repository). We&apos;ll need two AUR packages actually:</p>
<ol>
<li><code>libtinfo</code> <a href="https://aur.archlinux.org/packages/libtinfo/">AUR link</a></li>
<li><code>libtinfo5</code> <a href="https://aur.archlinux.org/packages/libtinfo5/">AUR link</a></li>
</ol>
<p>If you know how to build AUR packages just skip to the next section.</p>
<p>Now, if you visit the link of those packages, you&apos;ll see that there&apos;s a git repository linked to each of them, and that inside these repositories, there&apos;s a <code>PKGBUILD</code> file. This file is a description of the process needed to build the package, and is used by <code>makepkg</code>. Here&apos;s the process to follow:</p>
<pre><code class="language-bash">git clone &lt;the aur repo&gt;
cd &lt;were you cloned&gt;
makepkg -Acs
</code></pre>
<p>The makepkg will automatically use the PKGBUILD file in the current folder.</p>
<blockquote>
<p>The <code>-A</code> option ignores the target Arch architecture. The <code>-c</code> option cleans up the directory after makepkg is done, and <code>-s</code> installs the needed dependencies.<br>
<a href="https://raspberrypi.stackexchange.com/questions/510/how-do-i-install-packages-from-the-aur">stackexchange</a></p>
</blockquote>
<p>Once done, you&apos;ll end-up with an archive next to your PKGBUILD file. You can install it using <code>pacman -U &lt;archive file&gt;</code>. And then you&apos;re done ! :)</p>
<h4 id="goingbacktov8">Going back to v8</h4>
<p>Once you&apos;ve installed <code>libtinfo</code> and <code>libtinfo5</code>, you&apos;ll have to try again the <code>ninja</code> command that we used before. Normally everything should be fine and build smoothly. Enjoy :D</p>
<h4 id="buildingthesamples">Building the samples</h4>
<p>After building v8, I wanted to check that my v8 build was actually working. Following the <a href="https://github.com/v8/v8/wiki/Getting%20Started%20with%20Embedding">Getting Started with Embedding</a>, I tried to run the provided command after building the static libraries:</p>
<pre><code class="language-bash">g++ -I. -Iinclude samples/hello-world.cc -o hello-world -Wl,--start-group out.gn/x64.release/obj/{libv8_{base,libbase,external_snapshot,libplatform,libsampler},third_party/icu/libicu{uc,i18n},src/inspector/libinspector}.a -Wl,--end-group -lrt -ldl -pthread -std=c++0x
</code></pre>
<p>Which gave the following output:<br>
<img src="https://blog.scaleprocess.net/content/images/2017/08/missing_std.PNG" alt="Building v8 on Arch Linux" loading="lazy"></p>
<p>As you can see, all the (really long, 2793 lines) output is made of errors. But all of them are <em>undefined references</em> that refers to the <em>std::</em> namespace, which indicates a standard library problem. Adding <code>-lstdc++</code> doesn&apos;t change anything, so it must be the <em>libc++</em> library that causes the problem. Again, it&apos;s an <a href="https://aur.archlinux.org/packages/libc%2B%2B/">AUR package</a> that you have to install, using the same process that we used to build <em>libtinfo</em>. Once built and installed, just slightly change the build command to link against our brand new library:</p>
<pre><code class="language-bash">g++ -I. -Iinclude samples/hello-world.cc -o hello-world -Wl,--start-group out.gn/x64.release/obj/{libv8_{base,libbase,external_snapshot,libplatform,libsampler},third_party/icu/libicu{uc,i18n},src/inspector/libinspector}.a -Wl,--end-group -lrt -ldl -pthread -std=c++0x -lc++
</code></pre>
<p>And that should be enough to get it to build. Just don&apos;t forget to copy the <code>natives_blob.bin</code> and <code>snapshot_blob.bin</code> files from the <code>out.gn/x64.release</code> folder to the same folder as the final executable.</p>
<hr>
<p>If you have any questions, or something is incorrect, tell me in the comments.<br>
<a href="https://pixabay.com/fr/jaguar-voiture-moteur-pirelli-2111973/">Header picture</a></p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[First experience with Scaleway cloud servers]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>Recently, I was looking to rent a server, either dedicated or virtual. I then compared the prices of several big players in this field, like <a href="https://www.digitalocean.com/">DigitalOcean</a>, <a href="https://aws.amazon.com">AmazonWebServices</a>, <a href="https://azure.microsoft.com">Azure</a>, <a href="https://www.ovh.ie/">OVH</a> and it&apos;s sub brands <a href="https://www.kimsufi.com">Kimsufi</a> and <a href="https://www.soyoustart.com/en/">SoYouStart</a>, and many others, including <a href="https://www.online.net">Online.net</a> know for it&apos;s Dedibox</p>]]></description><link>https://blog.scaleprocess.net/first-experience-with-scaleway-cloud-servers/</link><guid isPermaLink="false">6299020bfd14650001013f54</guid><category><![CDATA[cloud]]></category><category><![CDATA[server]]></category><category><![CDATA[scaleway]]></category><category><![CDATA[review]]></category><dc:creator><![CDATA[Benjamin Bourgeais]]></dc:creator><pubDate>Thu, 10 Nov 2016 21:53:14 GMT</pubDate><media:content url="https://blog.scaleprocess.net/content/images/2016/11/network-cables-494648_1920.jpg" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://blog.scaleprocess.net/content/images/2016/11/network-cables-494648_1920.jpg" alt="First experience with Scaleway cloud servers"><p>Recently, I was looking to rent a server, either dedicated or virtual. I then compared the prices of several big players in this field, like <a href="https://www.digitalocean.com/">DigitalOcean</a>, <a href="https://aws.amazon.com">AmazonWebServices</a>, <a href="https://azure.microsoft.com">Azure</a>, <a href="https://www.ovh.ie/">OVH</a> and it&apos;s sub brands <a href="https://www.kimsufi.com">Kimsufi</a> and <a href="https://www.soyoustart.com/en/">SoYouStart</a>, and many others, including <a href="https://www.online.net">Online.net</a> know for it&apos;s Dedibox servers. While browsing Online.net&apos;s web site, I came across some cloud servers with really attractive prices, but they seemed to be provided by a partner named <a href="https://www.scaleway.com/">Scaleway</a>. So I went there, to have a look. I wasn&apos;t really sure of what I would find, but it doesn&apos;t harm to add another competitor to the list. Here&apos;s what their home page looks like when I wrote this article.</p>
<p><img src="https://blog.scaleprocess.net/content/images/2016/11/scaleway_home.PNG" alt="First experience with Scaleway cloud servers" loading="lazy"></p>
<p>My motivation behind this article is not to promote the service, but rather to write a review about it. As it&apos;s not a big player on the server market, I thought it would be interesting to present it and talk about this one.</p>
<h4 id="abitofhistory">A bit of history</h4>
<p>Scaleway is the company that has been created from <a href="http://labs.online.net/">Online.net&apos;s labs</a>. Basically, they created their own hardware to reduce the costs, increase the server density and hence decrease the prices. Here&apos;s a quote from their post about their public preview:</p>
<blockquote>
<p>When we started the project, two years ago, we had a simple idea: create a platform thought for the cloud, not just an evolution of virtualization. We wanted to avoid the performance cost of virtualization. We wanted to be sure we would not get any performance impact from noisy neighbors.</p>
</blockquote>
<blockquote>
<p>(<a href="https://blog.online.net/2014/10/14/online-labs-public-preview/">source</a>)</p>
</blockquote>
<p>Key moments: (found by crawling their blog)</p>
<ul>
<li><a href="https://blog.online.net/2014/10/14/online-labs-public-preview/">Public Preview</a> started on the 14th of October 2014</li>
<li><a href="https://blog.online.net/2015/04/02/from-online-labs-to-scaleway/">Public launch</a> on the 2nd of April 2015</li>
<li><a href="https://blog.online.net/2016/10/27/scaleway-global-expansion-starts-in-amsterdam/">Expansion to another datacenter</a> in Amsterdam, on the 27th of October 2016</li>
</ul>
<p>Here is their presentation video, which I found interesting and funny:</p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/XFhgSKNJP2s" frameborder="0" allowfullscreen></iframe>
<h4 id="theoffer">The offer</h4>
<p>Scaleway has two different offers : Dedicated and VPS servers. Their originality lies in the fact that they offer an ARM dedicated server, named C1 (<a href="https://blog.online.net/2015/04/02/from-online-labs-to-scaleway/">they claim to be the firsts to do so</a>). It has 4 cores, 2GB ram and 50GB SSD. The remaining part of their offer is more or less what we&apos;re used to see: x86 cores, good amount of memory, and for each server also 50 GB SSD. If you need more space, you may ask up to 150 GB, with 50 GB increments.</p>
<blockquote>
<p>Volume are available per 50GB increments up to 150GB, with a maximum of 15 volumes per server.<br>
Volumes are billed &#x20AC;1 /month per additional 50GB of SSD</p>
</blockquote>
<p>Bare Metal Servers<br>
<img src="https://blog.scaleprocess.net/content/images/2016/11/baremetal.PNG" alt="First experience with Scaleway cloud servers" loading="lazy"></p>
<p>VPS Servers<br>
<img src="https://blog.scaleprocess.net/content/images/2016/11/vps.PNG" alt="First experience with Scaleway cloud servers" loading="lazy"></p>
<p>All plans comes with unlimited transfer, but the speed will depend on the plan you choose, starting from 200mbps, up to 800mbps for the most expensive server. <em>They also state that if you&apos;re contacting another server located inside the datacenter, then you may use the full physical link speed (from 1 to 5 gbps), but only for bare metal servers</em>. What&apos;s interesting here is that they bill everything individually : the IP address, the SDD and the server itself. This added flexibility is a good thing :</p>
<ul>
<li>If you want to upgrade to a bigger server, you may reuse your volume as if nothing changed.</li>
<li>If you want to cancel your server but keep your data, you can (and even your IP if needed).</li>
<li>If you want to make you server only available to other servers in the datacenter, you can release your IP (or explicitly ask not to have one when you create the server).</li>
</ul>
<p>Another good thing: on the &quot;Bare Metal&quot; servers, you can mount up to 15 volumes at the same time. Sadly, this is not possible with the VPS ones, but they give an easy process to move from a vpn to a bare metal one. They also offer an Anti-DDoS, which is really nice for the price. If you upgrade your account (monthly fee required), you also get some bonuses like the access to the API, if you want to automate a bit your account, or priority support.</p>
<h4 id="thepricing">The pricing</h4>
<p>All the prices are shown on the previous screenshots. Some of you may have noticed that the price per hour doesn&apos;t match the monthly price, because <code>720h * 0.002&#x20AC;/h = 1.44 &#x20AC;</code>. But there&apos;s an explanation for this: to get the hourly price, you have to add the hourly price of the SSD, that is 0.002 &#x20AC;/h, and the price of the IP Address, also 0.002&#x20AC;/h, to the base server price. Here&apos;s my current &quot;draft bill&quot;, for the server this web site is currently being hosted on: we can clearly see the three different prices for each resource.</p>
<p><img src="https://blog.scaleprocess.net/content/images/2016/11/bill.PNG" alt="First experience with Scaleway cloud servers" loading="lazy"></p>
<p>Now you may say that there&apos;s another problem with this price : <code>1.44 &#x20AC; * 3 = 4.32 &#x20AC;</code> and not 2.99 &#x20AC;. Well, in fact, there&apos;s another pricing rule. Once you use your server for <em>more than 500h, the price is capped</em> until the end of the month. And we can confirm this if we compute it ourselves : <code>0.002&#x20AC;/h * 3 (IP+Disk+Server) * 500 = 3.00 &#x20AC;</code>. We finally got it ! This pricing might seem complex at the beginning, but there&apos;s no surprise in the end. Here are some excerpts from the documentation:</p>
<blockquote>
<p>Phase 1: The resource is billed by the hour. Each additional hour of usage increase the total price of the resource.</p>
</blockquote>
<blockquote>
<p>Phase 2: Once a running resource reach the cap of 500 hours of continuous usage, the monthly rate is applied. The resource&#x2019;s price is frozen to the fixed price for the rest of the month, and doesn&#x2019;t increase your costs.</p>
</blockquote>
<p><strong>(EDIT 3 oct. 2018) Be careful: Restarting your server will reset the cap, as it&apos;s currently counted as continuous usage. If you have to restart, better do it at the beginning of the month.</strong></p>
<blockquote>
<p>(<a href="https://www.scaleway.com/faq/billing/">source</a>)</p>
</blockquote>
<p><img src="https://blog.scaleprocess.net/content/images/2016/11/monthly-capping.8c6a.png" alt="First experience with Scaleway cloud servers" loading="lazy"></p>
<h4 id="letstryit">Let&apos;s try it !</h4>
<p>Now that we introduced our provider, let&apos;s give it a try. To create your account, you must give your credit card number, but that&apos;s a common practice among providers (DigitalOcean does that too, and some other providers). Once you&apos;re done, you&apos;ll get access to your control panel, that looks like this:</p>
<p><img src="https://blog.scaleprocess.net/content/images/2016/11/control_panel.png" alt="First experience with Scaleway cloud servers" loading="lazy"></p>
<p>Creating a sever through the web interface is a smooth experience. There are only a few simple steps. Just don&apos;t forget to set your SSH key before creating your server, otherwise you won&apos;t be able to access it. But don&apos;t worry too much, if you don&apos;t, a big yellow popup will annoy you until you do so.</p>
<h6 id="1giveitaname">1. Give it a name</h6>
<p>Or use the default one.</p>
<h6 id="2choosethedatacenter">2. Choose the datacenter</h6>
<p>Currently, you may only choose between either Paris (France) or Amsterdam (Netherlands).</p>
<p><img src="https://blog.scaleprocess.net/content/images/2016/11/location.PNG" alt="First experience with Scaleway cloud servers" loading="lazy"></p>
<h6 id="3choosewhichserveryouwant">3. Choose which server you want</h6>
<p>As you may see, each server has it&apos;s own product name, composed of some letters, which have the following meaning.</p>
<ul>
<li>&quot;V&quot; for &quot;Virtual&quot;</li>
<li>&quot;C&quot; for &quot;Compute&quot;</li>
<li>&quot;S/M/L&quot; for &quot;Small/Medium/Large&quot;</li>
</ul>
<p>If a server is out of stock on a data center, you may want to check out the other one to see if it&apos;s available there. Currently, there&apos;s no C1 offering on the Amsterdam datacenter. But the server C2L is available there, whereas in Paris, it&apos;s out of stock.</p>
<p><img src="https://blog.scaleprocess.net/content/images/2016/11/scaleway_offering.PNG" alt="First experience with Scaleway cloud servers" loading="lazy"></p>
<h6 id="4choosewhatyouwanttoinstallonit">4. Choose what you want to install on it</h6>
<p>You may install a raw linux distribution, or a ready-to-use image from the image hub (there are even more advanced options, but i&apos;ll let you find this out).</p>
<p>The currently available distributions:<br>
<img src="https://blog.scaleprocess.net/content/images/2016/11/distributions.PNG" alt="First experience with Scaleway cloud servers" loading="lazy"></p>
<p>The currently available images from the ImageHub:<br>
<img src="https://blog.scaleprocess.net/content/images/2016/11/image_hub.PNG" alt="First experience with Scaleway cloud servers" loading="lazy"></p>
<p>As you can see there are many options. But it would have been nice to be able to have FreeBSD in the distributions, or a WordPress in the images. You may create you own image / snapshots to base your future servers on, but as I said before, i&apos;ll let you find out <a href="https://www.scaleway.com/docs/backup-your-data-with-snapshots/">how to</a> <a href="https://www.scaleway.com/docs/create-an-image-from-scratch/">do so</a>.</p>
<h6 id="5configurethelastparameters">5. Configure the last parameters</h6>
<p>As you can see below, you may add more hard drives to your instance, enable IPv6, choose if you need to have a public IP, or even add some tags, if you feel fancy.</p>
<p><img src="https://blog.scaleprocess.net/content/images/2016/11/final_step.PNG" alt="First experience with Scaleway cloud servers" loading="lazy"></p>
<p>Once you&apos;re done, you&apos;ll see that the bottom bar updated to reflect your choices, and will display your final monthly price:</p>
<p><img src="https://blog.scaleprocess.net/content/images/2016/11/summary.PNG" alt="First experience with Scaleway cloud servers" loading="lazy"></p>
<p>Once you&apos;re done, the system should take you to your server&apos;s page, were you&apos;ll be able to see it&apos;s current status and parameters. Here&apos;s what mine looks like:</p>
<p><img src="https://blog.scaleprocess.net/content/images/2016/11/server_panel.png" alt="First experience with Scaleway cloud servers" loading="lazy"></p>
<h5 id="someinterestinginformation">Some interesting information</h5>
<p>My current server is a VC1S. I installed Debian 8.2, and just the bare minimum : nodejs, ghost and MariaDB (dropin replacement for MySQL). I ran a network benchmark (a command line speedtest.net) and here are my findings:</p>
<pre><code>root@scw-35de9f:/home/random# ./speedtest-cli 
Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from Scaleway (163.172.152.32)...
Selecting best server based on latency...
Hosted by NEOTELECOMS (Paris) [1.88 km]: 3.099 ms
Testing download speed........................................
Download: 901.10 Mbit/s
Testing upload speed..................................................
Upload: 229.23 Mbit/s
</code></pre>
<p>We seem to have 1gbps of download, and 230mbps of upload, which matches the advertised bandwidth of 200mbps. Now here&apos;s my <code>cat /proc/cpuinfo</code> of this server:</p>
<pre><code>processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 77
model name      : Intel(R) Atom(TM) CPU  C2750  @ 2.40GHz
stepping        : 8
microcode       : 0x1
cpu MHz         : 2393.902
cache size      : 1024 KB
physical id     : 0
siblings        : 1
core id         : 0
cpu cores       : 1
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 11
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon rep_good nopl pni pclmulqdq vmx ssse3 cx16 sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes rdrand hypervisor lahf_lm 3dnowprefetch tpr_shadow vnmi flexpriority ept vpid tsc_adjust smep erms arat
bugs            :
bogomips        : 4787.80
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 1
(same as processor 0)
</code></pre>
<p>We can see that this server is having an Intel Atom C2750 (<a href="https://www.cpubenchmark.net/cpu.php?cpu=Intel+Atom+C2750+%40+2.40GHz">cpubenchmark: 3800</a>), with <a href="http://ark.intel.com/products/77987/Intel-Atom-Processor-C2750-4M-Cache-2_40-GHz">8 cores</a>. You may have more information about this CPU by clicking on the links. I then used a <a href="https://tools.keycdn.com/ping">nice tool</a> to ping the server from different locations around the globe, and here are my findings :</p>
<p><img src="https://blog.scaleprocess.net/content/images/2016/11/ping-1.PNG" alt="First experience with Scaleway cloud servers" loading="lazy"></p>
<h4 id="overallexperience">Overall Experience</h4>
<p>I found Scaleway&apos;s servers to be cheap and powerful enough for some simple websites. For example, with this blog, I&apos;m using only 2-3% of the CPU, despite having the blog (nodejs+ghost) and MariaDB installed, on only 2 cores of an Intel Atom CPU. I also liked the management interface. It&apos;s clean and fast, and I got my server in less than a minute.</p>
<p>But there are some downsides. It misses some good features of OVH&apos;s manager, like the CPU usage / Memory graph directly integrated into the control panel. I also miss the possibility to have proper backups. Currently, you have to either use their snapshots system (which is a bit painful), or do it yourself. I&apos;m going for the second one. But it would have been really nice if we could just buy a &quot;backup&quot; subscription, that does it automatically, but maybe this will come in the future, as the company is quite young.</p>
<p><a href="https://pixabay.com/fr/c%C3%A2bles-de-r%C3%A9seau-connecteur-r%C3%A9seau-494648/">Header picture</a></p>
<p>If there&apos;s something wrong / incomplete, or if you want some more information, just ask me in the comments.</p>
<p><strong>Update 11 nov 2016</strong> Added the ping results from around the world</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Spotify's Heavy IO Problem]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>Recently, people started to realize that the Spotify desktop client was writing way more data than it should reasonably do. It could easily go up to 200 gb on my personal laptop after a day running in background, <strong>without playing music</strong>. Yes, you read well, without playing music. Let&apos;</p>]]></description><link>https://blog.scaleprocess.net/spotify-heavy-io-problem/</link><guid isPermaLink="false">6299020bfd14650001013f53</guid><category><![CDATA[Spotify]]></category><dc:creator><![CDATA[Benjamin Bourgeais]]></dc:creator><pubDate>Wed, 09 Nov 2016 18:53:38 GMT</pubDate><media:content url="https://blog.scaleprocess.net/content/images/2016/11/man-984505_1920.jpg" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://blog.scaleprocess.net/content/images/2016/11/man-984505_1920.jpg" alt="Spotify&apos;s Heavy IO Problem"><p>Recently, people started to realize that the Spotify desktop client was writing way more data than it should reasonably do. It could easily go up to 200 gb on my personal laptop after a day running in background, <strong>without playing music</strong>. Yes, you read well, without playing music. Let&apos;s have a look at it.</p>
<h6 id="update11nov2016">Update: <em>11 nov. 2016</em></h6>
<p>We received another reply, telling us that the 1.0.42 update has successfully been rolled out to all users. Many users on the thread/issue are saying that this update brought the necessary changes to solve this issue. <em>But it should be noted that some users are having some troubles installing the update.</em></p>
<p><img src="https://blog.scaleprocess.net/content/images/2016/11/update_2.PNG" alt="Spotify&apos;s Heavy IO Problem" loading="lazy"></p>
<h6 id="update10nov2016">Update: <em>10 nov. 2016</em></h6>
<p>We got a reply from a community manager saying that they fixed the problem in version 1.0.42. Let&apos;s wait for the update and check if the problem has really been solved or not.</p>
<p><img src="https://blog.scaleprocess.net/content/images/2016/11/moderator_reply.PNG" alt="Spotify&apos;s Heavy IO Problem" loading="lazy"></p>
<h4 id="theproblem">The problem</h4>
<p>Some people, including me, have seen that spotify has been using a fairly high amount of disk writes lately. While we don&apos;t really know the source of those writes, we could monitor the writes to to find out which files were affected by those writes.</p>
<p>Here are some cases reported by users (thank you!) of the Spotify community (see the links at the end of this article for the threads were these pictures were originally posted). Please bear in mind that we don&apos;t have Spotify&apos;s uptime on each system, so we can&apos;t really compare them.</p>
<p>On a Mac :<br>
<img src="https://blog.scaleprocess.net/content/images/2016/11/spotify.png" alt="Spotify&apos;s Heavy IO Problem" loading="lazy"></p>
<p>On Windows :<br>
<img src="https://blog.scaleprocess.net/content/images/2016/11/bs35OHT.png" alt="Spotify&apos;s Heavy IO Problem" loading="lazy"></p>
<p>As you may have already seen, the amount of <code>IO Write Bytes</code> (<code>Bytes Written</code> on mac) are fairly high. If you look well you may see on the Windows screenshot that spotify already wrote <strong>640 GB</strong>. To compare, the whole GTA V game (which is already quite big) is 62 GB, which is 10 times less that what Spotify wrote.</p>
<p>But let&apos;s be more precise about what <code>IO Write Bytes</code> means on Windows. This counter is not only counting disk writes, but also network writes and other kinds of communication. So you may say, that it may be normal for these counters to take such values. But that&apos;s not. In fact, if you look closely, you see that these number are actually orders of magnitude higher compared to the other programs running on the system.</p>
<blockquote>
<p>I/O Read Bytes - The number of bytes read in input/output operations generated by a process, including file, network, and device I/Os. I/O Read Bytes directed to CONSOLE (console input object) handles are not counted. (<a href="http://superuser.com/questions/993966/what-does-i-o-reads-or-writes-and-i-o-read-bytes-or-write-bytes-mean">source</a>)</p>
</blockquote>
<p>After some research using the resources monitor (resmon.exe), we could find the culprits. Two files, named mercury.db and mercury.db-wal, are getting the largest share of writes. But what are those files ?</p>
<pre><code>/mnt/r$ file mercury.db
mercury.db: SQLite 3.x database
</code></pre>
<p>Following the file utility, these files seems to be SQLite databases. Let&apos;s have a look at this database with &quot;DB Browser for SQLite&quot;. The following pictures shows that the database is indeed a valid one, with three tables: lock_ids, locked_keys and storage.</p>
<p><img src="https://blog.scaleprocess.net/content/images/2016/11/sqlitebase.PNG" alt="Spotify&apos;s Heavy IO Problem" loading="lazy"></p>
<p>The mercury.db-wal file is special file used in conjunction with the main database file. For more informations about this topic, please have a look <a href="https://www.sqlite.org/wal.html">here</a>. But why are those simple database file so much written to ? Well, after some research done by members of the community, it seems that Spotify is calling periodically the &quot;VACUUM;&quot; SQLite function. As you may already think, the VACUUM command is used cleanup unused space on the disk.</p>
<blockquote>
<p>The VACUUM command rebuilds the database file, repacking it into a minimal amount of disk space</p>
</blockquote>
<p>Here is an excerpt for the documentation:</p>
<blockquote>
<p>The VACUUM command works by <strong>copying the contents of the database into a temporary database file</strong> and then overwriting the original with the contents of the temporary file. When overwriting the original, a rollback journal or write-ahead log WAL file is used just as it would be for any other database transaction. This means that when VACUUMing a database, as much as <strong>twice the size of the original database file is required</strong> in free disk space.</p>
</blockquote>
<p>This suggests that VACUUMing the SQLite database is going to require a lot of IO operations. But this wouldn&apos;t be a problem if this wasn&apos;t executed as often as it&apos;s currently done. Some other member of the community was able to <a href="https://www.reddit.com/r/spotify/comments/5alnh5/this_is_how_spotify_is_killing_your_ssd_see_the/">draw a graph</a>, that shows the IO operations over the time:</p>
<p><img src="https://blog.scaleprocess.net/content/images/2016/11/ONZ3RNL.png" alt="Spotify&apos;s Heavy IO Problem" loading="lazy"></p>
<p>By looking at this graph, we&apos;re able to deduce the time interval between each write. With a rough estimation, it seems like it&apos;s done every 5 minutes. 5 minutes means 12 times an hour (<code>60 / 5 = 12</code>). Depending on your mercury.db size, this may represent a big amount of data actually being written to your hard drive. In fact, it&apos;s exactly 24 times the size of database file according to the documentation of VACUUM : <code>12 vacuum per hour * 2 * size of the database = 24 * size of the database</code>. In addition to this, we may add the normal operation of spotify :</p>
<ul>
<li>Downloading music &amp; caching, including the accesses to the database for the records about them.</li>
<li>Synchronizing different stuff (playlists, what our friends are playing, ...)</li>
<li>Looking for updates</li>
<li>...</li>
</ul>
<p>We could point out what is the problem with the Spotify desktop client right now. But you shouldn&apos;t worry too much about the issue, and continue your playback as before. If you want some temporary solutions to the problems, jump to the &quot;Possible solutions&quot; section of this article.</p>
<h5 id="dontworrytoomuch">Don&apos;t worry too much</h5>
<p>Let&apos;s do some calculus, to find how much the life of your SSD is going to be impacted. First, we have to define our environment :</p>
<ul>
<li>A laptop open 8hours a day with spotify running in background playing music</li>
<li>Spotify writes 9 GB per hour (upper limit of user&apos;s reports)</li>
<li>We have a 1TB drive with a 150TB warranty (Samsung 850 Pro)</li>
</ul>
<p>Using spotify 8 hours a days makes the daily amount of writes to be : <code>8h * 9GB/h = 72GB</code><br>
The number of days you can do so before hitting the warranty is : <code>150000GB / 72GB = 2083 days</code><br>
2083 days mean you could do this continuously for <code>5 Years, 8 Months and 2 Weeks</code> before hitting the warranty because of spotify.</p>
<p>In pratice, the 1TB Samsung 850 Pro could be pushed to 9PB (that is, 9000TB) before failing. That gives you a lot of time before frying it :)</p>
<p>That&apos;s why you shouldn&apos;t worry too much. While the amount of data being written to your drive is high, frying it is definitively going to take some years, if not more. But that doesn&apos;t justify, and even less means that we should accept such a behavior from software companies.</p>
<h4 id="possiblesolutions">Possible solutions</h4>
<p>There are some solutions available for this problem, that might help while we&apos;re waiting for some patch to be released. I will show 2 of those :</p>
<ol>
<li>Deleting the database</li>
<li>Redirecting spotify&apos;s database to a ramdisk</li>
</ol>
<p>There are other ones that I could find on the community threads, including modifying spotify&apos;s executable directly, or using some program found on the internet, but I definitively do not recommend to use these methods. Even if they work, nobody knows the downsides of doing so.</p>
<p>Both solutions involve playing around with Spotify&apos;s database. Don&apos;t worry, all your personal data (authentication, and some other stuff), are located in another directory. That&apos;s why after using these methods you&apos;re not logged out, or don&apos;t even loose what you were playing. We&apos;re just going to move / remove cached data.</p>
<h5 id="solution1deletethedatabase">Solution 1 : Delete the database</h5>
<p>The first solution is to try to delete the database. In fact, over time, spotify&apos;s database gets messy, and it takes more writes for it to maintain it. A good solution is to just delete the folder, and have spotify generate a new one. Please note that you should completely close spotify before deleting the database, to avoid problems.</p>
<p>Deleting the database is easy.<br>
On windows, just delete all the contents of the <code>C:\Users\&lt;username&gt;\AppData\Local\Spotify</code> folder. On macOS, delete the content of this folder <code>~/Library/Caches/com.spotify.Client/storage</code>, althrough i&apos;m not really sure about it, because i don&apos;t own a Mac. If you do, please let me know.</p>
<p>Here are some findings by <a href="https://community.spotify.com/t5/user/viewprofilepage/user-id/8069725">dnsbty</a> on spotify&apos;s community using this solution:</p>
<blockquote>
<p>Before reinstalling:<br>
5 mins idle:<br>
95.9 MB written, 114.1 MB read<br>
5 mins listening to playlist:<br>
207.6 MB written, 24.3 MB read</p>
</blockquote>
<blockquote>
<p>After reinstalling:<br>
5 mins idle:<br>
3.9 MB written, 19.6 MB read<br>
5 mins listening to playlist:<br>
23 MB written, 39.1 MB read</p>
</blockquote>
<h5 id="solution2usearamdisk">Solution 2 : Use a ramdisk</h5>
<p>The idea is simple : if we can&apos;t do anything about the writes, let&apos;s move them somewhere harmless. That somewhere would ideally be the RAM, that can handle this amount of writes easily (at 25.6 GB/s, it&apos;s a piece of cake for it). The downside is that after each reboot we&apos;ll get a new database, which means that you can&apos;t have offline playlists (but there&apos;s a solution for that, too, more on that later).</p>
<p>==Little warning : To use this solution, I strongly suggest you to have <strong>8GB or more of RAM</strong> installed in your computer. Not having enough ram could lead to Windows being short on memory, thus swapping too much on the SSD, which is what we&apos;re currently trying to avoid. ==</p>
<p>For this, we&apos;re going to use a ramdisk. For those who doesn&apos;t know what it is, it&apos;s a way of creating a small hard drive that lives in RAM. Because of it&apos;s nature, if you reboot, it&apos;s content get lost. But don&apos;t worry, you may configure it to be persistent. The following is for windows only, but may be easily ported to Mac.</p>
<p>Here are the steps needed to go through this :</p>
<ol>
<li>Download and install ImDisk</li>
<li>Create a folder with a base structure for the ramdisk</li>
<li>Create the ramdisk and configure it</li>
<li>Setup the symlink</li>
<li>Check that everything works</li>
</ol>
<h6 id="1downloadimdisk">1. Download ImDisk</h6>
<p>You may find the latest version of the imdisk toolkit <a href="https://sourceforge.net/projects/imdisk-toolkit/">on sourceforge</a>. After having downloaded the version that matches you windows architecture (x86 or x64), run the installer.</p>
<p><img src="https://blog.scaleprocess.net/content/images/2016/11/installer.PNG" alt="Spotify&apos;s Heavy IO Problem" loading="lazy"></p>
<h6 id="2createthebasefolderfortheramdisk">2. Create the base folder for the ramdisk</h6>
<p>Now that we have installed the ramdisk, we must create a base structure for the ramdisk. This structure will be load when the system starts into the ramdisk. It&apos;s necessary to have it as the symlinks we&apos;re going to use later need their folders to exists. Otherwise, they just doesn&apos;t work (trying to go through them displays an error). Here are the folders that you should have :</p>
<pre><code>RamdiskTemplate
&#x2514;&#x2500;&#x2500;&#x2500;Spotify
</code></pre>
<p>You may create this wherever you want. Just make sure not to delete it.</p>
<h6 id="3createtheactualramdisk">3. Create the actual ramdisk</h6>
<p>After installing the ImDisk, you should see a new icon on your desktop named &quot;RamDisk Configuration&quot;. Open it. There you should see :</p>
<p><img src="https://blog.scaleprocess.net/content/images/2016/11/imdisk_cfg_basic.PNG" alt="Spotify&apos;s Heavy IO Problem" loading="lazy"></p>
<p>Choose the size to be whatever you feel is right. I choose 4GB because I&apos;m also putting my temporary files there, and doing some work inside. I <em>strongly recommend</em> that you check the &quot;Allocate Memory Dynamically&quot;. Doing so will ask the driver to use only the memory needed to store the files. If have 100MB inside it, it will use around 100MB of RAM, with the upper limit being what you set just before. Remember the &quot;Driver Letter&quot; that you choose, you&apos;ll need it later. You can also configure it to be used as your temp, but i&apos;ll let you have a look around on your own.</p>
<p>Then, you should click on the &quot;Data&quot; tab.</p>
<p><img src="https://blog.scaleprocess.net/content/images/2016/11/imdisk_cfg_data.PNG" alt="Spotify&apos;s Heavy IO Problem" loading="lazy"></p>
<p>Here, under the &quot;Load Content from Image File or Folder&quot; label, indicate the path were you RamdiskTemplate folder is in you system. On mine, it&apos;s in <code>D:\RamdiskTemplate</code>.</p>
<p>If you want Spotify&apos;s database to persist after a reboot (and keep offline songs), then you should use &quot;Synchronize at System Shutdown&quot;. Basically, just check <code>Synchronize at System Shutdown</code> and <code>Delete data removed from the RamDisk</code>. Using these options will make the ImDisk driver to copy it&apos;s content into the RamdiskTemplate folder when the system stops. But there&apos;s a downside of using this : when the system boots and the ImDisk driver starts, it will have to copy all the data store in that folder back into memory, which may take some time depending on the number of files and their sizes. It will also take some time for it to synchronize the ramdisk with the RamdiskTemplate folder.</p>
<p>When you&apos;re done choosing your settings, click &quot;OK&quot;. This will trigger the creation of the ramdisk, and will save your settings. If you see a warning about a volume being unmounted and data lost, don&apos;t worry about it, you can safely click OK. Then, an information window will open, and you can safely close it too. Now you&apos;re ready to go on.</p>
<p>At this point, you should have a new drive showing up in the explorer, having the size that you choose before. If you don&apos;t, please follow carefully the instructions. And if it&apos;s still not working, then ask me in the comments.</p>
<h6 id="4setupthesymlink">4. Setup the symlink</h6>
<p>Now that we have a new and shiny ramdisk, fully working, we should ask spotify to put his files inside. But he&apos;s not really a gentleman, and doesn&apos;t have the necessary options. (It does have an option to move the cache, but that doesn&apos;t move most of the files that are involved into the high IO). So we have to use a special trick : the symbolic link. Yes, my dear unix friends, windows got that too ;)</p>
<p>First, remove the spotify folder in your AppData\Local. Be careful,  do not remove the Spotify folder in the AppData\Roaming folder ! If you do so, you&apos;ll have to reinstall it.</p>
<p><img src="https://blog.scaleprocess.net/content/images/2016/11/explorer_spotify.PNG" alt="Spotify&apos;s Heavy IO Problem" loading="lazy"></p>
<p>Then open an &quot;Administrator&quot; command line. There are many ways to do this, but the quickest is to press Super+X (Super is usually the one with the windows logo). In the menu that appears, click on &quot;Command Prompt (admin)&quot; (I&apos;m sorry, my laptop is in french).</p>
<p><img src="https://blog.scaleprocess.net/content/images/2016/11/open_prompt.png" alt="Spotify&apos;s Heavy IO Problem" loading="lazy"></p>
<p>Once you&apos;re done, you should get something like this :</p>
<p><img src="https://blog.scaleprocess.net/content/images/2016/11/admin_prompt.PNG" alt="Spotify&apos;s Heavy IO Problem" loading="lazy"></p>
<p>Then, enter the following commands (replace with your username, and the drive letter from step 3):</p>
<pre><code>cd C:\Users\&lt;your username&gt;\AppData\Local
mklink /d Spotify &lt;DriveLetter&gt;:\Spotify
</code></pre>
<p>If everything is correct, then, if you go again inside your AppData\Local folder, you should see a new Spotify folder. If you open it, it should be empty, and no error must be displayed. If this is your case, then you have successfully redirected spotify to your ramdisk !</p>
<h6 id="5test">5. Test</h6>
<p>This is the last part and the easiest one. Just launch spotify and listen to some music. Then open your ramdisk : <code>&lt;DriveLetter&gt;:\Spotify</code>. If this folder is not empty, ie looks like the next picture, then you&apos;re done, it works !</p>
<p><img src="https://blog.scaleprocess.net/content/images/2016/11/working_redirect.PNG" alt="Spotify&apos;s Heavy IO Problem" loading="lazy"></p>
<h6 id="results">Results</h6>
<p>After running with this solution (ramdisk) for some hours with Process Explorer running in background, here are the results I got. As you can see, only 500 KB were written to an actual hard drive. All other writes are being redirected to the ramdisk, hence the really low amount of residual writes.</p>
<p><img src="https://blog.scaleprocess.net/content/images/2016/11/results.png" alt="Spotify&apos;s Heavy IO Problem" loading="lazy"></p>
<h6 id="linkstothepostsonthespotifycommunity">Links to the posts on the Spotify community</h6>
<ol>
<li><a href="https://community.spotify.com/t5/Desktop-Linux-Windows-Web-Player/Spotify-killing-my-SSD/m-p/1365378#M159416">The forum post</a></li>
<li><a href="https://community.spotify.com/t5/Ongoing-Issues/Major-I-O-write-bytes-on-the-Spotify-Desktop-app-It-will-kill/idi-p/1476745">The issue</a></li>
<li><a href="https://pixabay.com/fr/l-homme-jouer-de-la-guitare-984505/">The header picture</a></li>
</ol>
<p>This is a temporary fix, but it might help some people waiting for a patch to be released. I can&apos;t be held responsible if something went wrong on your computer (Usually nothing goes wrong), you&#x2019;re doing this at your own responsibility.</p>
<!--kg-card-end: markdown-->]]></content:encoded></item></channel></rss>