<?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[Lifeline]]></title><description><![CDATA[Thoughts, technology and bad ideas.]]></description><link>https://blog.juliensatti.com/</link><image><url>https://blog.juliensatti.com/favicon.png</url><title>Lifeline</title><link>https://blog.juliensatti.com/</link></image><generator>Ghost 4.20</generator><lastBuildDate>Mon, 09 Mar 2026 04:07:42 GMT</lastBuildDate><atom:link href="https://blog.juliensatti.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Staying Sober: An Experiment]]></title><description><![CDATA[<p>Well . . . yes. I know it&#x2019;s just the beginning. I&#x2019;m also aware that I&#x2019;m only twenty years older than Y2K. But still, hear me out. With the position we&#x2019;ve now been put through two times in a row and some other personal issues,</p>]]></description><link>https://blog.juliensatti.com/staying-sober-an-experiment/</link><guid isPermaLink="false">5fb42ea7c658dc093b110d8f</guid><category><![CDATA[Lifestyle]]></category><dc:creator><![CDATA[Julien SATTI]]></dc:creator><pubDate>Tue, 17 Nov 2020 21:25:30 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1592897920319-60e7995db280?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=2000&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1592897920319-60e7995db280?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=2000&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" alt="Staying Sober: An Experiment"><p>Well . . . yes. I know it&#x2019;s just the beginning. I&#x2019;m also aware that I&#x2019;m only twenty years older than Y2K. But still, hear me out. With the position we&#x2019;ve now been put through two times in a row and some other personal issues, alcohol was becoming less of tasty treat and leaning more towards the kind of relation you can share with a close friend you talk to every night but not because you have something new to say to him, but by habit.</p><p>If you can read between the lines, this means I might have developed a tendency to rely on alcoholic beverages a litttttle more than I might have been. After all, it helped me go through some things. But what was I missing by choosing this way instead of another? Put simply, instead of this post, I had another one in my drafts titled &#x201C;My Life&#x2019;s On Autopilot: It Su**s&#x201D;. Why? Because this reliance on alcohol gave me the <em>opportunity</em> to avoid my issues and think of nothing for an evening. Heck, even be happy.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://images.unsplash.com/photo-1547984672-1412ba54e6b4?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=2000&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" class="kg-image" alt="Staying Sober: An Experiment" loading="lazy" width="6247" height="4480" srcset="https://images.unsplash.com/photo-1547984672-1412ba54e6b4?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=600&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ 600w, https://images.unsplash.com/photo-1547984672-1412ba54e6b4?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1000&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ 1000w, https://images.unsplash.com/photo-1547984672-1412ba54e6b4?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1600&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ 1600w, https://images.unsplash.com/photo-1547984672-1412ba54e6b4?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=2400&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ 2400w" sizes="(min-width: 720px) 720px"><figcaption>Photo by <a href="https://unsplash.com/@zepnmkz?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit">Zep Nurdiman</a>/<a href="https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit">Unsplash</a></figcaption></figure><p>Hard day at work? At school? Tired? Happy because I achieved something? Those were all valid options for me to start pouring a glass immediately. So, basically, any occasion. <em>Yikes.</em></p><p>One day, well, last week, after a COVID-compliant and alcohol-full Zoom appetizer, I became to realize I might be drinking too much. And that it might have been the issue on why I was living my life through a lens, without any way for me to act on it, other than zooming in or out my issues and behavior. I truly felt out of control.</p><p>After only eight days, I can&#x2019;t say I haven&#x2019;t been tempted more than once and that it has been easy. I still have a bottle of white wine in the refrigerator, still closed. Which is a first. I know. Crazy. Furthermore, the craziest thing for me was to start seeing things more clearly. It&#x2019;s like, weirdly, my life and everything that turns around it suddenly came into focus. . .</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://images.unsplash.com/photo-1525119257764-35ca8b725677?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=2000&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" class="kg-image" alt="Staying Sober: An Experiment" loading="lazy" width="4254" height="2836" srcset="https://images.unsplash.com/photo-1525119257764-35ca8b725677?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=600&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ 600w, https://images.unsplash.com/photo-1525119257764-35ca8b725677?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1000&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ 1000w, https://images.unsplash.com/photo-1525119257764-35ca8b725677?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1600&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ 1600w, https://images.unsplash.com/photo-1525119257764-35ca8b725677?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=2400&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ 2400w" sizes="(min-width: 720px) 720px"><figcaption>Photo by <a href="https://unsplash.com/@a2eorigins?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit">Alex Perez</a>/<a href="https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit">Unsplash</a></figcaption></figure><p>I should say it now: I don&#x2019;t plan to ban alcohol from my life. I&#x2019;m trying this right now because it&#x2019;s as great of a moment than another . . . and because I want to get back the fun and conviviality that comes with those brain-melter fluids.</p><p>Drinking alone might have been the first red flag. But, instead of taking it seriously when friend and other people made me aware of what a weird behavior it was, it just became &#x201C;my thing.&#x201D; People laughed about it, I did too. We still do, even though I&#x2019;m now trying hard to remove this habit from the never-ending list of things I shouldn&#x2019;t do. But yeah, drinking alone and regularly was now made part of my identity: g-r-e-a-t. Even right now, when I tell friends or people that I&#x2019;m alcohol-free for now eight days in a row, they start saying:</p><blockquote>&quot;oh well, with you staying sober is like not drinking more than three glasses a day, right?&#x201D;</blockquote><p>I don&#x2019;t know if I should laugh or cry about that. I guess I&#x2019;m going to laugh about it for now.</p><p>Oh, also, now that I think about it, this post is associated with my name. So, I guess I should mention that I&#x2019;m not a very large consumer of alcohol. But, even on my scale, emptying one or two bottles of wine a week, alone or with friends, might still not be right for me.</p><p>Anyway, instead of drinking wine&#x2014;which, you now guessed it, is the main source of alcohol in my life&#x2014;I&#x2019;m simply drinking water. Shocking.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://images.unsplash.com/photo-1553260021-47022732d78a?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=2000&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" class="kg-image" alt="Staying Sober: An Experiment" loading="lazy" width="3000" height="2000" srcset="https://images.unsplash.com/photo-1553260021-47022732d78a?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=600&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ 600w, https://images.unsplash.com/photo-1553260021-47022732d78a?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1000&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ 1000w, https://images.unsplash.com/photo-1553260021-47022732d78a?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1600&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ 1600w, https://images.unsplash.com/photo-1553260021-47022732d78a?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=2400&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ 2400w" sizes="(min-width: 720px) 720px"><figcaption>Photo by <a href="https://unsplash.com/@jcosens?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit">Jonathan Cosens Photography</a>/<a href="https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit">Unsplash</a></figcaption></figure><p>For those not really close to me, water is like the last option in terms of beverages. I&#x2019;ll always take an alcoholic beverage or a soft drink before a glass of fresh water. That&#x2019;s why drinking so much water now, feels like, weird? I want to say weird. But in a good way. I was not realizing how much water I can drink in a day. I simply cannot stop going to the tap to refill my glass.</p><p>(I&#x2019;m also drinking some iced tea, which is, I know, not ideal, but, hey, not everything at the same time.)</p><p>Moreover, not only drinking water and staying sober are things I do right now, I&#x2019;m also eating healthier and trying to get back at sports. . . I figured I&#x2019;m alone and might as well do it now than promise myself the exact same thing for the new year and fail at it mid-January.</p><p>Like I said before, it&#x2019;s maybe just in my head after eight days, but I already feel the difference. I&#x2019;m less tired. My days go beyond what they used to. I find myself more focused (well, always given the situation). I even find myself looking forward to the future and wanting to act on my own.</p><p>Personal issues such as lack of confidence, insensitivity and more are traits of my personality I&#x2019;d like to redirect to<a href="https://en.wikipedia.org/wiki/Null_device">/dev/null</a>. I can only hope than this experiment will help and that in the future I would be able to do all the things I want to, without being ashamed of who I am deep down.</p><p>Talking of shame, publishing this under my own name is a risk, sure. But I also think that, more powerful, it&apos;s a testimony to my desire to do better and change the situation I&#x2019;ve put myself into and for which I&#x2019;m the only one responsible.</p><p>Alcohol is not the only thing I need to work on but, right now, it seemed as the easiest one to take on. It&#x2019;s weird to post on such a personal thing as this on the Internet. But, if I created Lifeline and called it as such, it might as well serve its purpose and fit the name. . .</p><p>Stay safe everyone and, please, drink less.</p><!--kg-card-begin: html--><center># # #</center><br><!--kg-card-end: html--><p>Feb 2nd, 2021: You&apos;ll be happy to know that I&apos;m glad I made that experiment. I&apos;ve since then found back the pleasure in the act of sharing a drink with others and found myself not tempted to drink alone anymore. It&apos;s been&#x2013;and still is&#x2013;hard for us what we&apos;re all going through. However, as silly as it may sound, we&apos;re&#x2013;you&apos;re&#x2013; not alone. Let&apos;s bring down the stereotype that issues are taboo, especially between men, and talk about them. You&apos;ll see people are there for you and it&apos;ll be better. . .</p>]]></content:encoded></item><item><title><![CDATA[Antidote 10, the writing assistant that grew on me]]></title><description><![CDATA[Are you writing content as a job? Do you just worry about the errors you could be making unknowingly? Or do you simply want to improve your writing? Antidote might very well be the answer.]]></description><link>https://blog.juliensatti.com/antidote-10-the-writing-assistant-that-grew-on-me/</link><guid isPermaLink="false">5f19e6b4fa909755acddfe10</guid><category><![CDATA[Technology]]></category><dc:creator><![CDATA[Julien SATTI]]></dc:creator><pubDate>Sat, 25 Jul 2020 10:00:00 GMT</pubDate><media:content url="https://blog.juliensatti.com/content/images/2020/07/header-antidote-duework.jpg" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: html--><div style="padding: 15px; border-radius: 5px; background-color: rgba(255, 255, 255, 0.6); color: #000; font-size: 12px; font-style: italic; font-weight: bold; line-height: 1em; margin-bottom: 30px; aria-hidden: true">Disclaimer: Since Druide informatique inc.&#x2014;the company behind Antidote&#x2014;has kindly renewed its partnership and trust with DueWork Media, this article is the result of the free reception of a reviewer&#x2019;s copy of their software. Thanks Druide!</div><!--kg-card-end: html--><img src="https://blog.juliensatti.com/content/images/2020/07/header-antidote-duework.jpg" alt="Antidote 10, the writing assistant that grew on me"><p>Let&#x2019;s start by stating clearly what Antidote is and what it is not but also who is it for and who it isn&#x2019;t for. Why? Well, because my previous post about Antidote 9 <a href="https://www.juliens.me/blog/antidote/">on my French blog</a> might have been fairly misleading for some of my readers. They taught it was a magical software that would make them writers in a day but the reality might feel less &#x201C;magical&#x201D; . . . but not disappointing nonetheless if you understand and use it correctly!</p><h3 id="choose-your-poison">Choose your poison</h3><p>Antidote is not magic (yet) in a sense that it won&#x2019;t automagically transform your questionably written text into magnificent formal text straight out of a scientific magazine. No. The technology able to understand the meaning of our sentences with 100% confidence isn&#x2019;t quite there for the moment.</p><p>While nothing keeps you from using Antidote as a basic language corrector without any thinking required from you, it might not work just every single time. Sometimes, your sentence might not be optimal, may present a rupture and might prevent Antidote from correctly analyze it and offer its services.</p><p>Instead, you should really use Antidote as it was designed for: a writing assistant. See it as if you were writing a book and Antidote was your editor. You could stop at grammatical or orthographical error detection . . . but that would be missing out on so much more this software has to offer!</p><p>For me&#x2014;even though, yes, let&#x2019;s be honest, it started like a basic corrector for dumb typos and grammatical errors&#x2014;using it regularly and on longer texts such as academic papers or blog posts pushed me to go further with my writing. I&#x2019;ve now become accustomed with the use of the extensive dictionaries when I&#x2019;m in need of synonyms while reviewing a text and more. I&#x2019;m even using the semantics tab to know whether the idea and emotion I want to convey are dominant in what I&#x2019;ve written . . . who knew? <em>I didn&#x2019;t.</em></p><h3 id="using-it-the-right-way">Using it the right way</h3><p>When you actually want to make the most out of Antidote, you start to realize that its scope is quite broad and covers:</p><ul><li><strong>spelling</strong>, <strong>conjugation</strong>, <strong>agreement errors</strong>, <strong>irregular syntax</strong>, <strong>punctuation</strong>, <strong>upper</strong> <strong>and</strong> <strong>lower</strong> <strong>case errors</strong>;</li><li><strong>homophones</strong>, <strong>paronyms</strong> and <strong>other possibilities of confusion</strong>;</li><li><strong>false</strong> <strong>friends</strong> and <strong>pleonasms</strong>;</li><li><strong>writing of numbers</strong>, <strong>dates</strong> and <strong>other constructions specific to administrative writing</strong>, etc.</li></ul><p>That&#x2019;s a lot! But keep in mind, it&#x2019;s not perfect. False positive are happening from time to time. That&#x2019;s, in my opinion, not a real problem because if it does happen, it is probably that the sentence didn&#x2019;t have much meaning to start with. It pushes you to stay alert and aware of your text and not to blindly trust the software. If you use it the latter way, you might correct most of the basic errors you did but you might also add some more as a side effect.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.juliensatti.com/content/images/2020/07/corrector.png" class="kg-image" alt="Antidote 10, the writing assistant that grew on me" loading="lazy" width="850" height="546" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/corrector.png 600w, https://blog.juliensatti.com/content/images/2020/07/corrector.png 850w" sizes="(min-width: 720px) 720px"><figcaption>A double recommendation with a false friend alert that would not be displayed if you set your proficiency to the highest level</figcaption></figure><p>Antidote relies on your language level to tune the software to you, the user. During setup or through the settings, you are prompted to choose your subversion of French or English and input your proficiency in it. This way Antidote will show or silence some tips depending on your initial level of proficiency (for example the warnings about false friends).</p><p>Once Antidote is set up correctly, you can then go through the prisms you want to use or need in order to go through the complete review of your text. . .</p><h3 id="prism-no-prisms-">PRISM? No, prisms!</h3><p>No, we are not talking about the global surveillance program from the NSA but about the way Antidote is broken into. Prisms are the steps of your text correction. Let me explain. To make it easier and to guide the user in what they want from the software, the whole process has been broken into distinct parts:</p><ul><li>the <strong>Correction Prism</strong>: this is the tab from which the results of Antidote&#x2019;s correction are presented. There are three parts to this prism: <strong>Language</strong>, <strong>Typography</strong> and <strong>Style</strong>.</li><li>the <strong>Revision Prism</strong>: after correction, you can use this prism submit to inspect your text from a number of different angles. It works with &#x201C;<strong>filters</strong>&#x201D; that can address some particularly delicate features of your text. Depending on your text&#x2019;s importance, you should go through each one of them.</li><li>the <strong>Statistics Prism</strong>: this one is fun. Several statistical filters can display their results as percentages about your <strong>performance</strong> (your proficiency), the <strong>error types</strong>, the <strong>categories of the nouns used</strong> or the <strong>tenses</strong> present in your text between others.</li><li>the <strong>Inspection Prism</strong>: last but not least, this prism is composed of about hundred filters and effectively dissect the basic elements of your text, allowing you to examine it in depth. From <strong>word occurrences</strong>, to <strong>syntactic functions</strong> or <strong>words categories</strong> . . . it should cover anything else to review.</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.juliensatti.com/content/images/2020/07/Screenshot-2020-07-26-at-23.24.37.png" width="2000" height="1431" loading="lazy" alt="Antidote 10, the writing assistant that grew on me" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/Screenshot-2020-07-26-at-23.24.37.png 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/Screenshot-2020-07-26-at-23.24.37.png 1000w, https://blog.juliensatti.com/content/images/size/w1600/2020/07/Screenshot-2020-07-26-at-23.24.37.png 1600w, https://blog.juliensatti.com/content/images/size/w2400/2020/07/Screenshot-2020-07-26-at-23.24.37.png 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.juliensatti.com/content/images/2020/07/Screenshot-2020-07-26-at-23.24.57.png" width="2000" height="1431" loading="lazy" alt="Antidote 10, the writing assistant that grew on me" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/Screenshot-2020-07-26-at-23.24.57.png 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/Screenshot-2020-07-26-at-23.24.57.png 1000w, https://blog.juliensatti.com/content/images/size/w1600/2020/07/Screenshot-2020-07-26-at-23.24.57.png 1600w, https://blog.juliensatti.com/content/images/size/w2400/2020/07/Screenshot-2020-07-26-at-23.24.57.png 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.juliensatti.com/content/images/2020/07/Screenshot-2020-07-26-at-23.25.28.png" width="2000" height="1431" loading="lazy" alt="Antidote 10, the writing assistant that grew on me" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/Screenshot-2020-07-26-at-23.25.28.png 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/Screenshot-2020-07-26-at-23.25.28.png 1000w, https://blog.juliensatti.com/content/images/size/w1600/2020/07/Screenshot-2020-07-26-at-23.25.28.png 1600w, https://blog.juliensatti.com/content/images/size/w2400/2020/07/Screenshot-2020-07-26-at-23.25.28.png 2400w" sizes="(min-width: 720px) 720px"></div></div><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.juliensatti.com/content/images/2020/07/Screenshot-2020-07-26-at-23.25.34.png" width="2000" height="1431" loading="lazy" alt="Antidote 10, the writing assistant that grew on me" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/Screenshot-2020-07-26-at-23.25.34.png 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/Screenshot-2020-07-26-at-23.25.34.png 1000w, https://blog.juliensatti.com/content/images/size/w1600/2020/07/Screenshot-2020-07-26-at-23.25.34.png 1600w, https://blog.juliensatti.com/content/images/size/w2400/2020/07/Screenshot-2020-07-26-at-23.25.34.png 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.juliensatti.com/content/images/2020/07/Screenshot-2020-07-26-at-23.25.47.png" width="2000" height="1431" loading="lazy" alt="Antidote 10, the writing assistant that grew on me" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/Screenshot-2020-07-26-at-23.25.47.png 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/Screenshot-2020-07-26-at-23.25.47.png 1000w, https://blog.juliensatti.com/content/images/size/w1600/2020/07/Screenshot-2020-07-26-at-23.25.47.png 1600w, https://blog.juliensatti.com/content/images/size/w2400/2020/07/Screenshot-2020-07-26-at-23.25.47.png 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.juliensatti.com/content/images/2020/07/Screenshot-2020-07-26-at-23.26.00.png" width="2000" height="1431" loading="lazy" alt="Antidote 10, the writing assistant that grew on me" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/Screenshot-2020-07-26-at-23.26.00.png 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/Screenshot-2020-07-26-at-23.26.00.png 1000w, https://blog.juliensatti.com/content/images/size/w1600/2020/07/Screenshot-2020-07-26-at-23.26.00.png 1600w, https://blog.juliensatti.com/content/images/size/w2400/2020/07/Screenshot-2020-07-26-at-23.26.00.png 2400w" sizes="(min-width: 720px) 720px"></div></div></div><figcaption>Screenshots from the interface</figcaption></figure><p>See, there, on the sidebar in the above screen grab? Those are the prisms I just talked about. You can navigate easily from one to the other, make edits, and go back to a previous prism to review the latest addition to your text.</p><h3 id="guides-and-dictionaries-yes-please">Guides and dictionaries? Yes, please</h3><p>Forget your paper version of the Thesaurus or Larousse. Antidote&#x2019;s guides and dictionaries are the most useful I&#x2019;ve known and used. They are tightly integrated in the software and you can invoke them from recommendations or by highlighting a word from the editor.</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.juliensatti.com/content/images/2020/07/dictionaries.png" width="850" height="546" loading="lazy" alt="Antidote 10, the writing assistant that grew on me" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/dictionaries.png 600w, https://blog.juliensatti.com/content/images/2020/07/dictionaries.png 850w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.juliensatti.com/content/images/2020/07/guides.png" width="850" height="546" loading="lazy" alt="Antidote 10, the writing assistant that grew on me" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/guides.png 600w, https://blog.juliensatti.com/content/images/2020/07/guides.png 850w" sizes="(min-width: 720px) 720px"></div></div></div><figcaption>Illustrations for the Dictionaries and the Guides</figcaption></figure><p>Those two are useful when faced with correction recommendations. Indeed, as I&#x2019;ve said before, you shouldn&#x2019;t trust Antidote&#x2019;s correction at 100%. It is not meant to be used that way. So, when a recommendation is challenging, right-click on it or search in the Guides the correct way to apply the rule in question. For the dictionaries, it might for instance help you determine a more formal alternative or dissuade you from using a word that is not very present in the region you are targeting (American vs. British).</p><p>Now, I know, you might not see it right away and I haven&#x2019;t given the price of Antidote 10 jus yet. . . Nevertheless, if you account for just those two tools, the value becomes more than apparent. Just see for how much guides or dictionaries are sold for!</p><h3 id="you-are-in-control-you-chose-what-you-want">You are in control, you chose what you want</h3><p>I&#x2019;ve talked about the choices and personalization offered by Antidote. But it goes well beyond just inputting your language proficiency. In the settings, you can tune the target for your text (to define formality but also if you are writing in modern or ancient language) and you can set the sensibility for a wide range of things. Sexism? Racism? Gender discrimination? You chose how much of these you want to see recommendations for in your editor.</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.juliensatti.com/content/images/2020/07/Screenshot-2020-07-26-at-23.30.13.png" width="1804" height="1466" loading="lazy" alt="Antidote 10, the writing assistant that grew on me" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/Screenshot-2020-07-26-at-23.30.13.png 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/Screenshot-2020-07-26-at-23.30.13.png 1000w, https://blog.juliensatti.com/content/images/size/w1600/2020/07/Screenshot-2020-07-26-at-23.30.13.png 1600w, https://blog.juliensatti.com/content/images/2020/07/Screenshot-2020-07-26-at-23.30.13.png 1804w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.juliensatti.com/content/images/2020/07/Screenshot-2020-07-26-at-23.30.03.png" width="1804" height="1466" loading="lazy" alt="Antidote 10, the writing assistant that grew on me" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/Screenshot-2020-07-26-at-23.30.03.png 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/Screenshot-2020-07-26-at-23.30.03.png 1000w, https://blog.juliensatti.com/content/images/size/w1600/2020/07/Screenshot-2020-07-26-at-23.30.03.png 1600w, https://blog.juliensatti.com/content/images/2020/07/Screenshot-2020-07-26-at-23.30.03.png 1804w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.juliensatti.com/content/images/2020/07/Screenshot-2020-07-26-at-23.30.09.png" width="1804" height="1466" loading="lazy" alt="Antidote 10, the writing assistant that grew on me" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/Screenshot-2020-07-26-at-23.30.09.png 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/Screenshot-2020-07-26-at-23.30.09.png 1000w, https://blog.juliensatti.com/content/images/size/w1600/2020/07/Screenshot-2020-07-26-at-23.30.09.png 1600w, https://blog.juliensatti.com/content/images/2020/07/Screenshot-2020-07-26-at-23.30.09.png 1804w" sizes="(min-width: 720px) 720px"></div></div></div><figcaption>Some settings</figcaption></figure><p>And that&#x2019;s just an excerpt from the looooong list of settings you can edit. Once you get accustomed with Antidote and set it up correctly, the software will also get accustomed to your writing and provide you with the most relevant recommendations.</p><h3 id="extensions-oh-extensions-">Extensions . . . oh, extensions. . .</h3><p>What an idea! What if instead of going through painful copying and pasting from our source (Safari, Pages, Word. . .) to our target &#x201C;corrector&#x201D; each time we add a sentence, it could all be retrieved and updated directly to and from our source from the &#x201C;corrector?&#x201D; Dream no more! Extensions are what you are looking for. With dozens of them for all your preferred pieces of software, yours should be covered and supported. I just can&#x2019;t stress how important and life changing it is.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.juliensatti.com/content/images/2020/07/Screenshot-2020-07-23-at-23.03.41-1.png" class="kg-image" alt="Antidote 10, the writing assistant that grew on me" loading="lazy" width="2000" height="1210" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/Screenshot-2020-07-23-at-23.03.41-1.png 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/Screenshot-2020-07-23-at-23.03.41-1.png 1000w, https://blog.juliensatti.com/content/images/size/w1600/2020/07/Screenshot-2020-07-23-at-23.03.41-1.png 1600w, https://blog.juliensatti.com/content/images/size/w2400/2020/07/Screenshot-2020-07-23-at-23.03.41-1.png 2400w" sizes="(min-width: 720px) 720px"><figcaption>An editor window synced to my blog post on Safari</figcaption></figure><p>I am currently writing this article in the Ghost editor on Safari. I just have to click the Antidote icon in the menu and my text is automatically retrieved and synced with Antidote&#x2019;s editor. Any changes I make on the source or on Antidote are replicated both ways. That&#x2019;s a-m-a-z-i-n-g.</p><h3 id="a-must-have-for-professional-emailing">A must have for professional emailing</h3><p>No. E-mail is not dead <em>(yet!)</em>. No. E-mail doesn&#x2019;t need to be reinvented and <a href="https://www.theverge.com/2020/6/15/21286466/hey-email-basecamp-price-availability-platforms-launch">billed a hundred bucks a year just</a> <a href="https://bye.fyi">so you can use a three-letter domain</a>. Yes. You should definitely check out <a href="https://assets.duework.org/duemx/">DueMX</a> if you want to forget Gmail and brand your emails to your name. And, finally, yes. Antidote&#x2019;s Mail extension is a must-have when dealing with professional or educational emails all day.</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.juliensatti.com/content/images/2020/07/Screenshot-2020-07-23-at-22.35.05.png" width="1568" height="988" loading="lazy" alt="Antidote 10, the writing assistant that grew on me" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/Screenshot-2020-07-23-at-22.35.05.png 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/Screenshot-2020-07-23-at-22.35.05.png 1000w, https://blog.juliensatti.com/content/images/2020/07/Screenshot-2020-07-23-at-22.35.05.png 1568w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.juliensatti.com/content/images/2020/07/Screenshot-2020-07-23-at-22.31.56-1.png" width="2000" height="1250" loading="lazy" alt="Antidote 10, the writing assistant that grew on me" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/Screenshot-2020-07-23-at-22.31.56-1.png 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/Screenshot-2020-07-23-at-22.31.56-1.png 1000w, https://blog.juliensatti.com/content/images/size/w1600/2020/07/Screenshot-2020-07-23-at-22.31.56-1.png 1600w, https://blog.juliensatti.com/content/images/size/w2400/2020/07/Screenshot-2020-07-23-at-22.31.56-1.png 2400w" sizes="(min-width: 720px) 720px"></div></div></div><figcaption>A scenario you might know well</figcaption></figure><p>You probably already sent an email to which you were supposed to attach a file . . . and forgot to do so before sending. Or you just realized there was a typo once you sent your precious email to your boss? You won&#x2019;t make that mistake again with the <em>Anti-Oops!</em> feature that is included in Antidote. This extension can be installed in the main email clients for Windows, Mac and Linux and will analyze all your messages before they are sent by pointing out any language errors or missing attachments. Neat! <em>Less shame for all of us. . .</em></p><h3 id="multi-venom-multi-language-multi-antidote">Multi-venom, multi-language, multi-antidote</h3><p>Antidote is developed in a country (Canada) where two languages are constantly fighting. That&#x2019;s why Antidote is available both in French and English! And they can be used at the same time. That came very handy for me. Indeed, I have one central platform where I can proofread my texts in French or English, and in which I can mix both and still get relevant recommendations.</p><figure class="kg-card kg-image-card"><img src="https://blog.juliensatti.com/content/images/2020/07/Screenshot-2020-07-26-at-23.32.37.png" class="kg-image" alt="Antidote 10, the writing assistant that grew on me" loading="lazy" width="2000" height="142" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/Screenshot-2020-07-26-at-23.32.37.png 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/Screenshot-2020-07-26-at-23.32.37.png 1000w, https://blog.juliensatti.com/content/images/size/w1600/2020/07/Screenshot-2020-07-26-at-23.32.37.png 1600w, https://blog.juliensatti.com/content/images/2020/07/Screenshot-2020-07-26-at-23.32.37.png 2280w" sizes="(min-width: 720px) 720px"></figure><p>The software smartly corrects your text in two separate sections of the editor for all the prisms. If your text it is bilingual, Antidote will apply punctuation in English and French independently for instance. Magic!</p><h3 id="how-much-is-this-antidote">How much is this Antidote?</h3><p>One might argue that you can&#x2019;t just put a price tag on writing capabilities. While some might not see them as vital as long as you can make yourself understood; writing correctly is something powerful that is often remarked easily and might even get you a job over another candidate! Once you see it like that, the <strong>&#x20AC;119.00 </strong>price<strong> </strong>plus the additional <strong>&#x20AC;59.00 </strong>bonus<strong> </strong>for the bilingual extension are put in a context where it might be worth for you.</p><figure class="kg-card kg-image-card"><img src="https://blog.juliensatti.com/content/images/2020/07/Screen-Shot-2020-07-26-at-18.44.01-1.png" class="kg-image" alt="Antidote 10, the writing assistant that grew on me" loading="lazy" width="1341" height="669" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/Screen-Shot-2020-07-26-at-18.44.01-1.png 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/Screen-Shot-2020-07-26-at-18.44.01-1.png 1000w, https://blog.juliensatti.com/content/images/2020/07/Screen-Shot-2020-07-26-at-18.44.01-1.png 1341w" sizes="(min-width: 720px) 720px"></figure><p>I&#x2019;ll repeat that Antidote is not for everyone. But if you are handling a lot of text in a context where it is important, trying out Antidote might just be the reason for you to buy it and make the most of it for the price. . . While I would love for Antidote to be cheaper, for students at least, I think it is worth it for what if offers . . . provided that you use it the right way and to its extent. <em>By the way, the Amazon France offer (</em><a href="https://amzn.to/3jGdcYN"><em>here</em></a><em>) puts Antidote below one hundred euros, which I find more than acceptable.</em></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.juliensatti.com/content/images/2020/07/Screen-Shot-2020-07-26-at-18.34.15.png" class="kg-image" alt="Antidote 10, the writing assistant that grew on me" loading="lazy" width="1690" height="881" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/Screen-Shot-2020-07-26-at-18.34.15.png 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/Screen-Shot-2020-07-26-at-18.34.15.png 1000w, https://blog.juliensatti.com/content/images/size/w1600/2020/07/Screen-Shot-2020-07-26-at-18.34.15.png 1600w, https://blog.juliensatti.com/content/images/2020/07/Screen-Shot-2020-07-26-at-18.34.15.png 1690w" sizes="(min-width: 720px) 720px"><figcaption>Antidote Web screenshot</figcaption></figure><p>Also, Antidote 10 comes with a free one-year subscription to the <em>Antidote Total Access</em> service (ATA). This service gives you access to <a href="https://blog.juliensatti.com/p/ced2255f-69da-4ffc-b979-74147fc79ca2/antidote.app">antidote.app</a> (the <strong>web app</strong> for all Antidote, on-the-go), <strong>updates</strong>, <strong>support</strong> and personal dictionaries <strong>sync</strong>. Oh, while we are talking Internet. . . Antidote&#x2019;s desktop app runs 100% offline except updates:<em> no text is transferred to Druide&#x2019;s servers and everything is analyzed locally.</em> Just so you know. . .</p><h3 id="what-about-the-licensing-scheme-and-privacy-policy">What about the licensing scheme and privacy policy?</h3><p>I can only LOVE the fact that Antidote still relies on perpetual licenses. The ones you own for life. I just can&#x2019;t take another subscription-based app or service for now. For about <strong>&#x20AC;100 </strong>or <strong>$149</strong> you get a piece of software that does everything locally (given you don&#x2019;t use Antidote Web) and that evolves through regular updates of its base. It is constantly getting better yet private.</p><p>When you compare Antidote 10&#x2019;s license to <strong>Grammarly</strong> yearly Premium&#x2019;s offer which is billed as one payment of $139.95 and more than 2x cheaper than the monthly option; you start to see that after one year Antidote is still freely accessible to you (not Antidote Web, but the desktop apps) while Grammarly . . . well . . . isn&#x2019;t.</p><!--kg-card-begin: html--><center>&#xB7; &#xB7; &#xB7;</center><br><!--kg-card-end: html--><p>You&#x2019;ve reached the end of this review. If you are interested in buying Antidote or want to learn more, visit <a href="https://antidote.info">antidote.info</a> or find an approved reseller in your country (such as MYSOFT in France, a previous partner that offered me Antidote 9 in its physical edition, or most universities in Canada).</p><p>You can also buy the physical version included a very nice user guide at Amazon.com for <strong>$149</strong>, <a href="https://amzn.to/3jHhEH2">here</a>. If you are in France, it is available in the same format for <strong>&#x20AC;99</strong> at Amazon.fr, <a href="https://amzn.to/3jGdcYN">here</a>!</p><p>Finally, until the end of the year and because of the health crisis, <a href="https://www.druide.com/nouvelles/antidote-web-restera-gratuit-jusqua-la-fin-de-lannee">Druide has made Antidote Web free until the end of the year</a>. You can try it out this way before buying!</p><p>Stay tuned and take care! &#x1F913;</p><!--kg-card-begin: html--><small>Illustration: <a href="https://guiom.fr">Guillaume COUPY</a> for Lifeline</small><!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[Why I Built DueCast, a Podcast Platform for a Client, and Decided to Make It a Thing for Everyone]]></title><description><![CDATA[Today we are gonna learn why and how I built a podcast platform from scratch and decided to make it available to the public. Meet DueCast. 🎙]]></description><link>https://blog.juliensatti.com/why-i-built-duecast-a-podcast-platform-for-a-client-and-decided-to-make-it-a-thing-for-everyone/</link><guid isPermaLink="false">5f032aba5ff5f210ed800ada</guid><category><![CDATA[Technology]]></category><dc:creator><![CDATA[Julien SATTI]]></dc:creator><pubDate>Sun, 12 Jul 2020 08:45:00 GMT</pubDate><media:content url="https://blog.juliensatti.com/content/images/2020/07/duecast-header-gradient.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.juliensatti.com/content/images/2020/07/duecast-header-gradient.jpg" alt="Why I Built DueCast, a Podcast Platform for a Client, and Decided to Make It a Thing for Everyone"><p><em>Today we are gonna learn why and how I built a podcast platform from scratch and decided to make it available to the public. Meet </em><a href="https://cast.duework.org"><em>DueCast</em></a><em>. &#x1F399;</em></p><p>To start things off I&#x2019;d like to precise that I&#x2019;m not really a podcast enthusiast myself. Even though I might listen to one from time to time like <em>Too Embarrassed To Ask </em>by Recode; I am neither a hardcore user of podcasts nor a podcaster. Consequently, the world of podcasting was quite blurry for me. I had to learn a lot to get up to date with the subject. . . So why did I make <em>DueCast</em>? Well, follow me!</p><h3 id="the-problem">The problem</h3><p>Let me paint a picture for you. The scene takes place, well, last week. We were talking on a group with some Internet-friends. Everything was fine. We were all joking about <a href="https://duework.org">DueWork</a>* and making play on words with the <em>Due+Whatever</em> pattern such as <em>DueB&#xE9;n&#xE9;fice</em> (&#x201C;some profit&#x201D;, in French) or the very clever <em>DueBonTravail (</em>&#x201C;some good work&#x201D;, in French also). Anyway. To put on some context, many people on this group are customers of DueWork for their website hosting (DueHost) or mail service (DueMX).</p><p>Jokingly, someone, that coincidentally owns a podcast, told me the price he is paying each month to have his podcast hosted. I just stopped when I read &#x201C;$12&#x201D; in his message on Telegram. Twelve. Whole. Dollars. To host 30 MB of data, provide an RSS feed that is Apple Podcasts compliant and some <em>not-really amazing</em> web interfaces. I just couldn&#x2019;t stand him paying this much so I told him he was being scammed . . . to what he simply replied:</p><blockquote>&quot;Just build a service to host my podcast that is cheaper than my actual provider and I&#x2019;ll use it.&#x201D;</blockquote><p>As someone very close to me&#x2014;VERY CLOSE as he <a href="https://guiom.fr">shares</a> this Ghost instance (yes, that&#x2019;s to say)&#x2014;very accurately pointed out to everyone else in the group: you don&#x2019;t just say something to me. Why? Because if I can, if it&#x2019;s smart and if I&#x2019;m interested, I&#x2019;ll do it.</p><p>Soooo . . . undeterred . . . the deadline being August 1st, day at which my client&#x2019;s current contract renews, I started working.</p><h3 id="where-to-start-is-there-a-choice">Where to start: is there a choice?</h3><p>Everybody has their habits. I do too. That&#x2019;s why I didn&#x2019;t ask myself many questions before starting up. I directly envisioned what tools I&#x2019;d use to make this service run:</p><!--kg-card-begin: markdown--><ul>
<li>my own SSO (Single Sign On) service <strong>DueWork ID</strong> to authenticate users: saves me the trouble to do that in PHP and also benefits the end user that shares the same credentials across the whole DueWork ecosystem;</li>
<li>pure HTML at first and then <strong>Bootstrap</strong> or any other framework for the visuals and user-faced functions (HTML/CSS/JS): saves me the trouble of <s>throwing myself off a cliff</s> doing CSS;</li>
<li><strong>PHP</strong> with <strong>Apache</strong> for the server side on DueHost: saves me nothing but it&apos;s here so I&apos;m using it;</li>
<li><strong>Composer</strong> for PHP: to make easy the importation of third-party libraries;</li>
<li><strong>MySQL</strong> for the database: I&apos;m not a fan, but again, it&apos;s already here and it saves me the trouble to install PostgreSQL;</li>
<li>my favorite IDEs from JetBrain (<strong>PHPStorm</strong> and <strong>DataGrip</strong>): saves me from using the horrendous <em>phpMyAdmin</em> and keeps me in the <em>IntelliJ</em> universe;</li>
<li><strong>DueWork Git</strong>, an enterprise version of GitLab I self host: so that I control everything;</li>
<li><strong>Stripe</strong>, a payment processor: to guarantee the security of the credit cards and to manage subscriptions;</li>
<li>and finally <strong>Pixelmator Pro</strong> for the graphics and the logos: yes, people, this is also important.</li>
</ul>
<!--kg-card-end: markdown--><p>Now that you know the technical stuff, let&#x2019;s get to what I actually made.</p><h3 id="being-visible-the-interfaces">Being visible: the interfaces</h3><p>Human interfaces . . . a whole concept. Design? That&#x2019;s another one. Both of them are what constitutes the nightmares of hardcore developers that simply cannot see past the back end. Luckily, I am not one of them. I enjoy clear interfaces which go to the point but are also useful and beautiful.</p><p>Just because I won&#x2019;t use a service that does not provide a correct user interface and/or experience and because the idea of starting a podcast is starting to maturate in my mind: I needed to do it right that for <em>DueCast</em>. . . Let&#x2019;s see the results, shall we?</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.juliensatti.com/content/images/2020/07/Screenshot-2020-07-12-at-01.20.29.png" width="2000" height="1163" loading="lazy" alt="Why I Built DueCast, a Podcast Platform for a Client, and Decided to Make It a Thing for Everyone" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/Screenshot-2020-07-12-at-01.20.29.png 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/Screenshot-2020-07-12-at-01.20.29.png 1000w, https://blog.juliensatti.com/content/images/size/w1600/2020/07/Screenshot-2020-07-12-at-01.20.29.png 1600w, https://blog.juliensatti.com/content/images/size/w2400/2020/07/Screenshot-2020-07-12-at-01.20.29.png 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.juliensatti.com/content/images/2020/07/Screenshot-2020-07-12-at-01.20.36.png" width="2000" height="1163" loading="lazy" alt="Why I Built DueCast, a Podcast Platform for a Client, and Decided to Make It a Thing for Everyone" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/Screenshot-2020-07-12-at-01.20.36.png 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/Screenshot-2020-07-12-at-01.20.36.png 1000w, https://blog.juliensatti.com/content/images/size/w1600/2020/07/Screenshot-2020-07-12-at-01.20.36.png 1600w, https://blog.juliensatti.com/content/images/size/w2400/2020/07/Screenshot-2020-07-12-at-01.20.36.png 2400w" sizes="(min-width: 720px) 720px"></div></div></div><figcaption>The main page (for now)&#x2014;notice the beautiful blur in the navigation bar</figcaption></figure><p>As you can see above, the homepage remains clear while still informing visitors sufficiently about what this service offers and redirecting them on appropriate pages if more information is needed.</p><p>Then, it&#x2019;s time for the author&#x2019;s page and the main podcast&#x2019;s page. The first one is very simple and references some social media from the author, his or her name, a quick description and the list of all the owned podcasts. The second one is a little bit more complex and features in a JumboTron social links for the podcast, as well as the author, the RSS feed, the name of the podcast. Below it, two sections.</p><p>The section on the right is the one featuring the main podcast cover (because, yes, you can have a specific cover for a particular season, that&#x2019;s a thing) and the description.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.juliensatti.com/content/images/2020/07/Screenshot-2020-07-12-at-01.19.33.png" class="kg-image" alt="Why I Built DueCast, a Podcast Platform for a Client, and Decided to Make It a Thing for Everyone" loading="lazy" width="2000" height="1163" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/Screenshot-2020-07-12-at-01.19.33.png 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/Screenshot-2020-07-12-at-01.19.33.png 1000w, https://blog.juliensatti.com/content/images/size/w1600/2020/07/Screenshot-2020-07-12-at-01.19.33.png 1600w, https://blog.juliensatti.com/content/images/size/w2400/2020/07/Screenshot-2020-07-12-at-01.19.33.png 2400w" sizes="(min-width: 720px) 720px"><figcaption>A podcast page example</figcaption></figure><p>The section on the left meanwhile contains the trailer of the podcast (if present) and a list of the episodes from the podcast, ordered by season, with a quick description and a play button. The latter button, once clicked, opens a sticky player on the bottom of the page. It&#x2019;s not yet persistent between pages but I&#x2019;ll see maybe later on how to make it work like that. For now, we&#x2019;ll say it&#x2019;s sufficient.</p><p>Each episode also has its own page. It displays the season cover (or the default podcast cover if no one is specified) and the full description for the episode as well as the play button.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.juliensatti.com/content/images/2020/07/Screenshot-2020-07-12-at-01.22.47-1.png" class="kg-image" alt="Why I Built DueCast, a Podcast Platform for a Client, and Decided to Make It a Thing for Everyone" loading="lazy" width="2000" height="1163" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/Screenshot-2020-07-12-at-01.22.47-1.png 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/Screenshot-2020-07-12-at-01.22.47-1.png 1000w, https://blog.juliensatti.com/content/images/size/w1600/2020/07/Screenshot-2020-07-12-at-01.22.47-1.png 1600w, https://blog.juliensatti.com/content/images/size/w2400/2020/07/Screenshot-2020-07-12-at-01.22.47-1.png 2400w" sizes="(min-width: 720px) 720px"><figcaption>An episode&#x2019;s page&#x2014;with the sticky player open</figcaption></figure><p>It&#x2019;s important to note that each text section (being the podcast or episode description) fully supports Markdown as input method in the back end and is interpreted on the fly by PHP. This way, podcast owners can put emphasis on elements with ease.</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.juliensatti.com/content/images/2020/07/Screenshot-2020-07-12-at-01.42.56.png" width="2000" height="1163" loading="lazy" alt="Why I Built DueCast, a Podcast Platform for a Client, and Decided to Make It a Thing for Everyone" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/Screenshot-2020-07-12-at-01.42.56.png 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/Screenshot-2020-07-12-at-01.42.56.png 1000w, https://blog.juliensatti.com/content/images/size/w1600/2020/07/Screenshot-2020-07-12-at-01.42.56.png 1600w, https://blog.juliensatti.com/content/images/size/w2400/2020/07/Screenshot-2020-07-12-at-01.42.56.png 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.juliensatti.com/content/images/2020/07/Screenshot-2020-07-12-at-01.42.43.png" width="2000" height="1163" loading="lazy" alt="Why I Built DueCast, a Podcast Platform for a Client, and Decided to Make It a Thing for Everyone" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/Screenshot-2020-07-12-at-01.42.43.png 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/Screenshot-2020-07-12-at-01.42.43.png 1000w, https://blog.juliensatti.com/content/images/size/w1600/2020/07/Screenshot-2020-07-12-at-01.42.43.png 1600w, https://blog.juliensatti.com/content/images/size/w2400/2020/07/Screenshot-2020-07-12-at-01.42.43.png 2400w" sizes="(min-width: 720px) 720px"></div></div></div><figcaption>Join and About pages for <em>DueCast</em>&#x2014;beware, those are not gradient-free either</figcaption></figure><p>Finally, as you can see above, are the about page and the pricing/join page. Both of those pages are still under construction but it gives you a sense of the simplicity and honesty I want to pass on to the users. . .</p><h3 id="being-visible-in-an-other-way-the-rss-feed">Being visible, in an other way: the RSS feed</h3><p>That&#x2019;s just the beauty of podcasts. You can listen to them pretty much anywhere. The only rule is that as long as you have a valid RSS feed, your podcast can be listened to.</p><p>Generally, to make it easier for future listeners, we add podcasts to popular libraries (apps/sites that distribute podcasts). Generally, you post your feed once or twice, at Apple most frequently, and every other services will pull it from the Apple Podcasts catalog and add it to their own.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.juliensatti.com/content/images/2020/07/Screen-Shot-2020-07-08-at-01.05.48.png" class="kg-image" alt="Why I Built DueCast, a Podcast Platform for a Client, and Decided to Make It a Thing for Everyone" loading="lazy" width="1920" height="968" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/Screen-Shot-2020-07-08-at-01.05.48.png 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/Screen-Shot-2020-07-08-at-01.05.48.png 1000w, https://blog.juliensatti.com/content/images/size/w1600/2020/07/Screen-Shot-2020-07-08-at-01.05.48.png 1600w, https://blog.juliensatti.com/content/images/2020/07/Screen-Shot-2020-07-08-at-01.05.48.png 1920w" sizes="(min-width: 720px) 720px"><figcaption>An excerpt from the RSS feed of a test podcast I made (prototype)</figcaption></figure><p>Considering the dozens of podcast apps these days that can&#x2019;t stop to pop out of nowhere, that&#x2019;s at least something else to worry about. However, RSS is a strict markup language and most of these &#x201C;final services&#x201D; like Apple or Google Podcasts require specific tags for their own usage. Sometimes it can induce duplicates but those are required if you want your podcast to be processed correctly. . .</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.juliensatti.com/content/images/2020/07/Screenshot-2020-07-12-at-02.10.51.png" width="2000" height="1163" loading="lazy" alt="Why I Built DueCast, a Podcast Platform for a Client, and Decided to Make It a Thing for Everyone" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/Screenshot-2020-07-12-at-02.10.51.png 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/Screenshot-2020-07-12-at-02.10.51.png 1000w, https://blog.juliensatti.com/content/images/size/w1600/2020/07/Screenshot-2020-07-12-at-02.10.51.png 1600w, https://blog.juliensatti.com/content/images/size/w2400/2020/07/Screenshot-2020-07-12-at-02.10.51.png 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.juliensatti.com/content/images/2020/07/Screenshot-2020-07-12-at-02.09.34.png" width="2000" height="1163" loading="lazy" alt="Why I Built DueCast, a Podcast Platform for a Client, and Decided to Make It a Thing for Everyone" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/Screenshot-2020-07-12-at-02.09.34.png 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/Screenshot-2020-07-12-at-02.09.34.png 1000w, https://blog.juliensatti.com/content/images/size/w1600/2020/07/Screenshot-2020-07-12-at-02.09.34.png 1600w, https://blog.juliensatti.com/content/images/size/w2400/2020/07/Screenshot-2020-07-12-at-02.09.34.png 2400w" sizes="(min-width: 720px) 720px"></div></div></div><figcaption>Podcast apps diversity on the Play Store and Apple/iTunes Connect guidelines</figcaption></figure><p>Everything is generated on the fly, at each request so that the information at the origin is always up to date. If an information is not available in the database (such as audio file duration), the functions behind the feed retrieve them and add them to the database to make future requests faster. Smart!</p><h3 id="being-in-the-known-the-analytics">Being in the known: the analytics</h3><p>Tracking an audio play is tricky. As a start of solution, I started by creating a page, a little like a proxy page. It acts as an intermediary between the mp3 files and the requests. This way I can query my database to insert all the necessary tracking information I collected and then serve the real mp3 file with a basic header redirection.</p><p>I wish it was that easy. But it wasn&#x2019;t quite that easy. Remember the &#x201C;tricky&#x201D; part? Well, I quickly figured out even it is even more so when you need Apple to validate your RSS feed. The real hassle was that Apple makes a request with the <em>HEAD</em> method in order to get metadata on the file without having to download the latter entirely. What a great idea! <em>(No, really, it is, though.)</em></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.juliensatti.com/content/images/2020/07/head-method.jpg" class="kg-image" alt="Why I Built DueCast, a Podcast Platform for a Client, and Decided to Make It a Thing for Everyone" loading="lazy" width="1200" height="630" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/head-method.jpg 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/head-method.jpg 1000w, https://blog.juliensatti.com/content/images/2020/07/head-method.jpg 1200w" sizes="(min-width: 720px) 720px"><figcaption>A little description of the HEAD method, just so you know, because I didn&#x2019;t</figcaption></figure><p>To solve this problem seen by feed validators as my server couldn&#x2019;t serve <em>HEAD</em> requests (which it can do), I added a way to pull the local mp3 file on the server, on the same proxy page, and added headers from the polled audio file metadata. And wouldn&#x2019;t you know it, it worked! Now you know. . . </p><p>I did <strong>NOT</strong> want to be collecting unnecessary data for analytics to work and be performant. That&#x2019;s why, at each click or play of a podcast episode, the country is retrieved from the IP and only the <strong>name of the country</strong> is inputted in the database, along the episode special hash (its <strong>id</strong>), <strong>user agent</strong> and the <strong>timestamp</strong>. Nothing more. &#x1F913;</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.juliensatti.com/content/images/2020/07/duecast-studio.jpg" width="1395" height="921" loading="lazy" alt="Why I Built DueCast, a Podcast Platform for a Client, and Decided to Make It a Thing for Everyone" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/duecast-studio.jpg 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/duecast-studio.jpg 1000w, https://blog.juliensatti.com/content/images/2020/07/duecast-studio.jpg 1395w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.juliensatti.com/content/images/2020/07/episodes-duecast.jpg" width="1312" height="883" loading="lazy" alt="Why I Built DueCast, a Podcast Platform for a Client, and Decided to Make It a Thing for Everyone" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/episodes-duecast.jpg 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/episodes-duecast.jpg 1000w, https://blog.juliensatti.com/content/images/2020/07/episodes-duecast.jpg 1312w" sizes="(min-width: 720px) 720px"></div></div></div><figcaption>Screenshots of the alpha version from the DueCast Studio (the panel) of a client</figcaption></figure><p>Quite pleasing, no? It&#x2019;s powerful yet simple and elegant. <em>Like me. </em>You can see everything that matters, at a glance, from the first page of your admin panel, for all your podcasts, at once. Neat!</p><h3 id="the-administration-panel-no-the-studio-">The administration panel. No, the <em>Studio</em>!</h3><p>Yes, I could have called it the admin panel, or the account manager. But no, I decided to give this section some voice <em>(see what I did there?) </em>and call it the <em>DueCast Studio</em>. From there, a podcaster owner can manage . . . well, his or her podcast, the individual episodes or seasons and learn about their audience with relevant analytics (for which you&#x2019;ve already seen some images).</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.juliensatti.com/content/images/2020/07/Screenshot-2020-07-12-at-02.05.04.png" width="2000" height="1163" loading="lazy" alt="Why I Built DueCast, a Podcast Platform for a Client, and Decided to Make It a Thing for Everyone" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/Screenshot-2020-07-12-at-02.05.04.png 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/Screenshot-2020-07-12-at-02.05.04.png 1000w, https://blog.juliensatti.com/content/images/size/w1600/2020/07/Screenshot-2020-07-12-at-02.05.04.png 1600w, https://blog.juliensatti.com/content/images/size/w2400/2020/07/Screenshot-2020-07-12-at-02.05.04.png 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.juliensatti.com/content/images/2020/07/Screenshot-2020-07-12-at-02.05.36.png" width="2000" height="1163" loading="lazy" alt="Why I Built DueCast, a Podcast Platform for a Client, and Decided to Make It a Thing for Everyone" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/Screenshot-2020-07-12-at-02.05.36.png 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/Screenshot-2020-07-12-at-02.05.36.png 1000w, https://blog.juliensatti.com/content/images/size/w1600/2020/07/Screenshot-2020-07-12-at-02.05.36.png 1600w, https://blog.juliensatti.com/content/images/size/w2400/2020/07/Screenshot-2020-07-12-at-02.05.36.png 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.juliensatti.com/content/images/2020/07/Screenshot-2020-07-12-at-02.05.26.png" width="2000" height="1163" loading="lazy" alt="Why I Built DueCast, a Podcast Platform for a Client, and Decided to Make It a Thing for Everyone" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/Screenshot-2020-07-12-at-02.05.26.png 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/Screenshot-2020-07-12-at-02.05.26.png 1000w, https://blog.juliensatti.com/content/images/size/w1600/2020/07/Screenshot-2020-07-12-at-02.05.26.png 1600w, https://blog.juliensatti.com/content/images/size/w2400/2020/07/Screenshot-2020-07-12-at-02.05.26.png 2400w" sizes="(min-width: 720px) 720px"></div></div><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.juliensatti.com/content/images/2020/07/Screenshot-2020-07-12-at-02.05.50.png" width="2000" height="1163" loading="lazy" alt="Why I Built DueCast, a Podcast Platform for a Client, and Decided to Make It a Thing for Everyone" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/Screenshot-2020-07-12-at-02.05.50.png 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/Screenshot-2020-07-12-at-02.05.50.png 1000w, https://blog.juliensatti.com/content/images/size/w1600/2020/07/Screenshot-2020-07-12-at-02.05.50.png 1600w, https://blog.juliensatti.com/content/images/size/w2400/2020/07/Screenshot-2020-07-12-at-02.05.50.png 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.juliensatti.com/content/images/2020/07/Screenshot-2020-07-12-at-02.06.01.png" width="2000" height="1163" loading="lazy" alt="Why I Built DueCast, a Podcast Platform for a Client, and Decided to Make It a Thing for Everyone" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/Screenshot-2020-07-12-at-02.06.01.png 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/Screenshot-2020-07-12-at-02.06.01.png 1000w, https://blog.juliensatti.com/content/images/size/w1600/2020/07/Screenshot-2020-07-12-at-02.06.01.png 1600w, https://blog.juliensatti.com/content/images/size/w2400/2020/07/Screenshot-2020-07-12-at-02.06.01.png 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.juliensatti.com/content/images/2020/07/Screenshot-2020-07-12-at-02.06.10.png" width="2000" height="1163" loading="lazy" alt="Why I Built DueCast, a Podcast Platform for a Client, and Decided to Make It a Thing for Everyone" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/Screenshot-2020-07-12-at-02.06.10.png 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/Screenshot-2020-07-12-at-02.06.10.png 1000w, https://blog.juliensatti.com/content/images/size/w1600/2020/07/Screenshot-2020-07-12-at-02.06.10.png 1600w, https://blog.juliensatti.com/content/images/size/w2400/2020/07/Screenshot-2020-07-12-at-02.06.10.png 2400w" sizes="(min-width: 720px) 720px"></div></div><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.juliensatti.com/content/images/2020/07/Screenshot-2020-07-12-at-02.06.29.png" width="2000" height="1163" loading="lazy" alt="Why I Built DueCast, a Podcast Platform for a Client, and Decided to Make It a Thing for Everyone" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/Screenshot-2020-07-12-at-02.06.29.png 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/Screenshot-2020-07-12-at-02.06.29.png 1000w, https://blog.juliensatti.com/content/images/size/w1600/2020/07/Screenshot-2020-07-12-at-02.06.29.png 1600w, https://blog.juliensatti.com/content/images/size/w2400/2020/07/Screenshot-2020-07-12-at-02.06.29.png 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.juliensatti.com/content/images/2020/07/Screenshot-2020-07-12-at-02.06.19.png" width="2000" height="1163" loading="lazy" alt="Why I Built DueCast, a Podcast Platform for a Client, and Decided to Make It a Thing for Everyone" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/Screenshot-2020-07-12-at-02.06.19.png 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/Screenshot-2020-07-12-at-02.06.19.png 1000w, https://blog.juliensatti.com/content/images/size/w1600/2020/07/Screenshot-2020-07-12-at-02.06.19.png 1600w, https://blog.juliensatti.com/content/images/size/w2400/2020/07/Screenshot-2020-07-12-at-02.06.19.png 2400w" sizes="(min-width: 720px) 720px"></div></div></div><figcaption>A little gallery of the almost-final administration interfaces</figcaption></figure><p>Everything is still a work in progress and subject to change with the input of the real end users: podcast authors that use the service regularly. . .</p><h3 id="naming-scheme-and-navigation">Naming scheme and navigation</h3><p>For a podcasting platform, where the author will be sharing his or her content with the world, we want something coherent. I had two choices for URL formatting:</p><!--kg-card-begin: markdown--><ol>
<li>Reserve some links for internal use (like <code>/login</code> or  <code>/studio</code>) and let podcasts use the root space for their ID for a result resembling <code>cast.duework.org/{my-podcast-id}</code> or;</li>
<li>Adopt the same schema as LinkedIn or Reddit and apply an intermediary (like <code>/p/</code> or <code>/u/</code>) to get something this form: <code>cast.duework.org/p/{my-podcast-id}</code>.</li>
</ol>
<p>I ended up using the second option because it is in my opinion clearer for the end user (and a little easier to implement, I&apos;m not gonna lie).</p>
<p>To share content, users just need to follow those schemes on <em>DueCast</em>:<br>
<code>cast.duework.org/podcast/{my-podcast-id}</code> or<br>
<code>cast.duework.org/p/{my-podcast-id}</code></p>
<p><code>cast.duework.org/episode/{sha256}</code> or<br>
<code>cast.duework.org/e/{sha256}</code></p>
<p>...and so on for <code>widget</code> (embeddable content), <code>listen</code> (direct URL to the mp3) and <code>author</code> (self-explanatory).</p>
<!--kg-card-end: markdown--><h3 id="leveraging-the-power-of-cloudflare-caching-and-more">Leveraging the power of Cloudflare&#xAE;: caching and more</h3><p>It is known by anybody close to me that I love what <a href="https://cloudflare.com">Cloudflare</a> is doing and that I&#x2019;ve been a client since the early days . . . or the days responsive websites weren&#x2019;t a thing. Indeed, you can still check out a post I made in 2015 regarding the <a href="https://www.juliens.me/blog/cloudflare-one-com">usage of Cloudflare with one.com</a>.</p><p>Anyway, what&#x2019;s Cloudflare? It&#x2019;s a CDN, a DDoS mitigator, a WAF and more . . . all in the cloud, acting like a giant reverse proxy for your website. The goal is simple: focus on your origin and let Cloudflare&#x2019;s edge handle security, caching and acceleration for you. It really is hardware in the cloud.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.juliensatti.com/content/images/2020/07/cloudflare.jpg" class="kg-image" alt="Why I Built DueCast, a Podcast Platform for a Client, and Decided to Make It a Thing for Everyone" loading="lazy" width="1200" height="630" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/cloudflare.jpg 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/cloudflare.jpg 1000w, https://blog.juliensatti.com/content/images/2020/07/cloudflare.jpg 1200w" sizes="(min-width: 720px) 720px"><figcaption>Can we please take a moment to appreciate my graphic design skills?</figcaption></figure><p>For DueCast especially, the problem was simple. The service is going to gradually handle more and more audio files and I plan to target a global audience. Relying on a single origin (DueWork infrastructure based in France) isn&#x2019;t really efficient. The aforementioned origin is going to be handling every hit of the audio files and static content and, of course, serve dynamically generated pages.</p><p>Let&#x2019;s make up a quick scenario. Imagine DueCast took off, I have 15 podcasters <em>(what a take-off, are we flying a private jet or what?&#x2014;shhhh, focus!) </em>and each podcaster has on average 30 episodes. Each episode (mp3 encoded) is, on average again, roughly 15 MB. That already takes us to a staggering 6.59 GB of storage space. Now, I haven&#x2019;t talked about the audience and performance just yet. Let&#x2019;s say each podcaster, has, across each of their podcasts 1,000 plays per episode per month. Roll that mental calculus and . . . oh god. 6,592 GB. Almost 6.5 TB of bandwidth each month coming out of this infrastructure. That&#x2019;s. That&#x2019;s a lot.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.juliensatti.com/content/images/2020/07/6-5-tb.jpg" class="kg-image" alt="Why I Built DueCast, a Podcast Platform for a Client, and Decided to Make It a Thing for Everyone" loading="lazy" width="1200" height="630" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/07/6-5-tb.jpg 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/07/6-5-tb.jpg 1000w, https://blog.juliensatti.com/content/images/2020/07/6-5-tb.jpg 1200w" sizes="(min-width: 720px) 720px"><figcaption>Almost six point five terabytes of data transferred each month .&#xA0;.&#xA0;. just imagine!</figcaption></figure><p>I know it does not make real sense, but you get it. It can really become something uncontrollable in the end. Even more so when you have a limited bandwidth at your origin. <em>I do not in France, but I think about other people, okay?</em></p><p>That&#x2019;s where Cloudflare shines and help us reduce our imaginary bandwidth bill. Indeed, in lieu of serving all audio files and other static files from the origin (DueWork servers), each requested is served from the edge (Cloudflare servers). This would account for massive savings in bandwidth if I was subjected to them and is a game changer for latency. Why? Well, because of serving content from one origin in France, it is delivered by the closest <em>region </em>(understand here the Cloudflare server location) closer to the client. At - no - charge.</p><blockquote> Excuse me, what?</blockquote><p>You heard right. And I can&#x2019;t believe this is still free! Well, <em>I can</em>. Cloudflare said it was&#x2014;and still is&#x2014;their philosophy and why they started the company: to protect small websites that can&#x2019;t afford acceleration and protection from big names in the field. So, yeah. I am rocking the free tier of Cloudflare on 10+ websites and they are doing more than fine.</p><p></p><h3 id="the-final-product">The final product</h3><p>One week. That&#x2019;s what it took for me to create a fully fledged podcast platform at the requirements of my client. We have, <strong>low monthly fee</strong>,<strong> CDN delivery</strong>, country and device <strong>analytics</strong> for each audio play, episode <strong>performance review</strong>, an <strong>admin panel</strong> that is responsive and beautiful, a<strong> simple yet elegant interface</strong> for the listener-side website, <strong>functional search</strong> for discovery . . . and more! Oh and I almost forgot this shiny <strong>widget</strong> that can be embedded anywhere basic HTML is supported:</p><!--kg-card-begin: html--><div style="width:100%;-webkit-border-radius: 5px; -moz-border-radius: 5; border-radius: 5px; overflow:hidden; "><iframe src="https://cast.duework.org/widget/e91241a2fd6abd155a5c92f5ee14a400d9c94fcb64e0824395dd8d6387cce741" style="-webkit-border-radius: 5px; -moz-border-radius: 5; border-radius: 5px;border:0; width:inherit; position: inherit; height: 100%;" scrolling="no"></iframe></div><!--kg-card-end: html--><p></p><p>I know, right! This is kind of amazing. I wouldn&#x2019;t&#x2019; be honest if I told you that I&#x2019;ve done similar things many times. Indeed, making an administration panel that works, with dynamic analytics nevertheless, is an achievement for me I did not foresee. I did play with PHP last year by making my own microblogging platform similar to Twitter but with an edit button. <em>Do take it personally, Twitter.</em></p><p>In the end, the client that commissioned this work is more than happy with the results and impressed with the quality, feature set and just how fast I made it work. In truth, when you compare the flat monthly fee of &#x20AC;7.99 I fixed for DueCast to the one its previous provider&#x2014;Ausha&#x2014;exercised, which is $12, it just seems dishonest to me to make people pay for more. More so when you can put a price on processing and storage. <em>I&#x2019;ll see how the pricing evolves with time and clients but it should be quite enough.</em></p><!--kg-card-begin: html--><br><center>&#xB7; &#xB7; &#xB7;</center><br><!--kg-card-end: html--><p>Don&#x2019;t forget to <a href="https://cast.duework.org">check it out</a> now and maybe consider subscribing if you are in the business of starting or moving your podcast! I am always learning, so if you have a suggestion, do not forget to shout it at me. Take care. &#x1F604;</p><!--kg-card-begin: html--><small><em>*The name of the entity under which I operate the many services (including custom solutions) I offer to the public and that also syndicates my media activities. <a href="https://duework.org/">Learn more</a></em></small><!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[Coronavirus: Why Is Insuring Everyone So Damn Complicated]]></title><description><![CDATA[Apart from life-insurance providers, general insurance companies are also under the spotlight over the coverage of COVID—19-related expenses...]]></description><link>https://blog.juliensatti.com/coronavirus-why-is-insuring-everyone-so-damn-complicated/</link><guid isPermaLink="false">5efb89395ff5f210ed800a54</guid><category><![CDATA[Edito]]></category><dc:creator><![CDATA[Julien SATTI]]></dc:creator><pubDate>Fri, 03 Jul 2020 20:30:05 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1584483766114-2cea6facdf57?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=2000&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1584483766114-2cea6facdf57?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=2000&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" alt="Coronavirus: Why Is Insuring Everyone So Damn Complicated"><p><em>PSA: I am not an analyst nor an expert on the matter. Please consider this piece of writing as what it is really: a take on what insurance coverage should look like in the events of a pandemic like the one we are experiencing. For more information about the crisis, please consult official resources concerning your country, such as </em><a href="https://coronavirus.gov"><em>coronavirus.gov</em></a><em> for the U.S. or </em><a href="https://www.gouvernement.fr/info-coronavirus">gouvernement.fr/info-coronavirus</a><em> for France. Thanks.</em></p><p>Apart from life-insurance providers, general insurance companies are undeniably also under the spotlight these days over the coverage of their policies holder towards COVID&#x2014;19-related expenses; which essentially affects the entire population worldwide.</p><p>While covering and refunding every individual and small businesses would add to an enormous amount of money some of these companies might not be able to handle, the people who thought that the hundreds of dollars they had been pouring over the years into their premium credit cards and various insurance policies would provide them better coverage in a crisis, may soon become disillusioned with the admissibility of claims and the reality of the indemnification; leaving us with the debate about what can be done, who has to pay and if it is really impossible to make things right and, in the meantime, improve the system overall. . .</p><p>First, we need to differentiate two kinds of insurers: general insurers and life insurers. While the latter sector is obviously more pressured and most of the time able to cover those claims in order to maintain their image, but also because of the premiums they charge and because only 59% of Americans are currently holders of such a policy (Sarmah-Hightower, 2020), the industry of general insurers, on the other hand, is another story.</p><p>Indeed, by learning their lesson with the comparable SARS epidemic outbreak that happened back in 2003, they introduced exclusion clauses for a wide variety of cases, including communicable diseases and pandemics, into most of their non-life policies such as business interruption and travel insurance.</p><p>David Sampson, president and CEO of the American Property Casualty Insurance Association, said in a statement that &#x201C;pandemic outbreaks are uninsured because they are uninsurable.&#x201D; Indeed, the industry has warned that it could crater faced to the magnitude of COVID&#x2014;19-related claims. Projections estimate small businesses losses of monthly income between $255 billion and $431 billion as a result of the pandemic while monthly premiums for commercial property insurance only come to a total of $6 billion (Elejalde-Ruiz, 2020).</p><p>Those estimations only apply to the business part and exclude all recreational expenses covered by specific &#x201C;worry-free&#x201D; policies often contracted for little to no cost on the travel agencies or airlines websites. The billions of dollars spent on holidays, work travel or abroad studies remain at the mercy of the insurers and the companies themselves, to do what they can, and the reality is: they cannot.</p><p>In Europe, airlines refuse to refund customers for their tickets and a close source in the industry has been told that some of the airlines, like the prominent Lufthansa, is not resilient enough to provide refunds to every single customer without declaring bankruptcy (Coupy, 2020). While Lufthansa is losing over to $1.5 million every hour, Air France-KLM announced in an internal note that they lose $30 million each day, which would leave them just enough to live through the start of June even when excluding any refunds made to the customers (Tr&#xE9;vidic, 2020).</p><p>Granted precedent concerns about the industry are comprehensible, customers are still the ones being left out. General insurers do not share the same liability than life insurance and have protected themselves against those events and refuse to accept claims even though the insurance industry maintains an $800 billion surplus to cover all U.S. home, auto, and business sectors (Elejalde-Ruiz, 2020).</p><p>With 180 million cardholders and more than a billion credit cards in circulation in the U.S. in 2018 (Peter, 2020), the average American carries 2.35 credit cards (Resendiz, 2018); meaning they also have as many supplemental insurance policies. Those policies may come in addition to a general one and for instance a specific one bought with a travel agency. Many people derive peace of mind from conjunction of such policies, often resulting in multiple layers of protection against unexpected events.</p><p>What they do not know is that an event of the size of the coronavirus pandemic, as foreseeable as it may have been (Sandman, 2007), is such incredibly hard to price that it is most often excluded from insurance coverage. It is often when faced with the worst that we come to learn about what is truly what. Travel and accommodation as well as business insurance policies are not an exception from this general truth.</p><p>France, for instance, has seen one of the major consumer associations&#x2014;<em>UFC-Que Choisir</em>&#x2014;serving formal notice against fifty-seven airlines, accusing them of not refunding tickets for flights canceled due to the COVID&#x2014;19 pandemic measures. While some of them may issue travel vouchers if you decide to go through a very lengthy and thorough process specially in place to dissuade those actions, these vouchers are only valid for specific dates and can expire very quickly. &#x201C;It&#x2019;s not up to consumers to pay the cost of the current crisis&#x201D; said the association&#x2019;s spokesperson (Maussion, 2020).</p><p>European laws go further and enforce the right to request a classic refund within seven days from your airline by citing articles 5(1)(a) and 8(1)(a) of EC Regulation No. 261/2004. If the airline does not respond or does not agree, court proceedings or the use of Alternative Dispute Resolution are possible and people can even conjointly hold their credit card insurance liable (Brignall, 2020).</p><p>Furthermore, if you account for the massive aids given out to big companies&#x2014;including $25 billion for U.S.-based airlines (Lesliejosephs, 2020) and about $15 billion for European ones (Laville, 2020)&#x2014;to help them to stay afloat, you start to feel less sorry and more intrigued to the extent of which government aids can go.</p><p>Moreover, the idea of general insurers offering some kind of relief during these times is not so remotely idealist as model French general insurer MAIF gave back $110 million to their policyholders, justifying the fact people drove less with the quarantine. Other ones should follow the example and take action now more than ever.</p><p>Ultimately, the global lack of support from those private general insurers but also the government failure to provide quick and effective monetary support, apart from multinational companies aids, drives the customer down to hold all the costs of this crisis (Packer, 2020).</p><p>I really think insurers, governments and big companies should try to at least find a middle ground and try to do what is right in the eyes of the consumers. Relief is provided to the industries that need them the most but not necessarily the consumers, even though are effectively the ones with the power to relaunch the economy. If they have no money on hands, there is no business and there are no taxes to collect.</p><p>It&#x2019;s time for the industry as a whole to team up and come with a real plan that benefits both the consumers and businesses. And also, at this point, one can only hope that the industry will shift to provide more transparency and coverage for inevitable forthcoming pandemics and learn their lesson in the way that does not only protect themselves but also their loyal policyholders. . .</p><!--kg-card-begin: markdown--><br>
<center>&#xB7; &#xB7; &#xB7;</center><br><!--kg-card-end: markdown--><p>References:</p><p>Peter, B. (2020, January 3). Number of Credit Cards and Credit Card Holders. Retrieved April 5, 2020, from <a href="https://wallethub.com/edu/cc/number-of-credit-cards/25532/">https://wallethub.com/edu/cc/number-of-credit-cards/25532/</a></p><p>Resendiz, J. (2018, December 3). Average Number of Credit Cards per Person: 2019 Card Ownership Statistics. Retrieved April 5, 2020, from <a href="https://www.valuepenguin.com/average-number-credit-cards-per-person">https://www.valuepenguin.com/average-number-credit-cards-per-person</a></p><p>Sandman, P. M. (2007, February 22). A severe pandemic is not overdue&#x2014;it&#x2019;s not when but if. Retrieved April 5, 2020, from <a href="https://www.cidrap.umn.edu/news-perspective/2007/02/severe-pandemic-not-overdue-its-not-when-if">https://www.cidrap.umn.edu/news-perspective/2007/02/severe-pandemic-not-overdue-its-not-when-if</a></p><p>Elejalde-Ruiz, A. (2020, April 16). Business owners bleeding money during the coronavirus shutdown may expect insurance to cover their losses. But often they&#x2019;re in for a shock. Retrieved April 28, 2020, from <a href="https://www.chicagotribune.com/coronavirus/ct-coronavirus-business-interruption-insurance-lawsuits-20200416-b5kl3xaweja7refbqfr4cpkp3u-story.html">https://www.chicagotribune.com/coronavirus/ct-coronavirus-business-interruption-insurance-lawsuits-20200416-b5kl3xaweja7refbqfr4cpkp3u-story.html</a></p><p>Sarmah-Hightower, S. (2020, February 26). Life insurance and being underinsured. Retrieved April 28, 2020, from <a href="https://www.insure.com/life-insurance/life-insurance-underinsured.html">https://www.insure.com/life-insurance/life-insurance-underinsured.html</a></p><p>Tr&#xE9;vidic, B. (2020, April 9). Coronavirus : Lufthansa perd un million d&#x2019;euros par heure et pr&#xE9;pare des coupes claires. Retrieved April 28, 2020, from <a href="https://www.lesechos.fr/industrie-services/tourisme-transport/coronavirus-lufthansa-reduit-son-offre-long-courrier-de-20-en-prevision-dune-reprise-en-demi-teinte-1193021">https://www.lesechos.fr/industrie-services/tourisme-transport/coronavirus-lufthansa-reduit-son-offre-long-courrier-de-20-en-prevision-dune-reprise-en-demi-teinte-1193021</a></p><p>Coupy, G. (2020, April 28). Airbus technician.</p><p>Brignall, M. (2020, April 24). Coronavirus travel shutdown: what are your rights? Retrieved April 28, 2020, from <a href="https://www.theguardian.com/money/2020/apr/24/coronavirus-travel-shutdown-rights-voucher-refund">https://www.theguardian.com/money/2020/apr/24/coronavirus-travel-shutdown-rights-voucher-refund</a></p><p>Maussion, F. (2020, April 28). Coronavirus : UFC-Que Choisir met en demeure 57 compagnies a&#xE9;riennes sur le remboursement des vols annul&#xE9;s. Retrieved April 28, 2020, from <a href="https://www.lesechos.fr/industrie-services/tourisme-transport/coronavirus-ufc-que-choisir-met-en-demeure-57-compagnies-aeriennes-sur-le-remboursement-des-vols-annules-1197898">https://www.lesechos.fr/industrie-services/tourisme-transport/coronavirus-ufc-que-choisir-met-en-demeure-57-compagnies-aeriennes-sur-le-remboursement-des-vols-annules-1197898</a></p><p>Lesliejosephs. (2020, March 24). Lawmakers closing in on deal for $25 billion in cash coronavirus aid for airlines. Retrieved April 28, 2020, from <a href="https://www.cnbc.com/2020/03/24/coronavirus-stimulus-bill-lawmakers-near-deal-on-25-billion-in-grants-for-airlines.html">https://www.cnbc.com/2020/03/24/coronavirus-stimulus-bill-lawmakers-near-deal-on-25-billion-in-grants-for-airlines.html</a></p><p>Laville, S. (2020, April 22). Coronavirus : airlines seek &#x20AC;12.8 bn in bailouts without environmental conditions attached. Retrieved April 28, 2020, from <a href="https://www.theguardian.com/world/2020/apr/22/airlines-seek-128bn-in-coronavirus-bailouts-without-environmental-conditions-attached">https://www.theguardian.com/world/2020/apr/22/airlines-seek-128bn-in-coronavirus-bailouts-without-environmental-conditions-attached</a></p><p>Packer, G. (2020, April 21). We Are Living in a Failed State. Retrieved April 28, 2020, from <a href="https://www.theatlantic.com/magazine/archive/2020/06/underlying-conditions/610261/">https://www.theatlantic.com/magazine/archive/2020/06/underlying-conditions/610261/</a></p><p>Chocron, V. (2020, April 2). Coronavirus : les accidents de la route sont en forte baisse, la MAIF rend 100 millions d&#x2019;euros &#xE0; ses assur&#xE9;s. Retrieved April 28, 2020, from <a href="https://www.lemonde.fr/economie/article/2020/04/02/coronavirus-les-accidents-de-la-route-sont-en-forte-baisse-la-maif-rend-100-millions-d-euros-a-ses-assures_6035337_3234.html">https://www.lemonde.fr/economie/article/2020/04/02/coronavirus-les-accidents-de-la-route-sont-en-forte-baisse-la-maif-rend-100-millions-d-euros-a-ses-assures_6035337_3234.html</a></p>]]></content:encoded></item><item><title><![CDATA[Install macOS Big Sur on a Newly Unsupported Mac With WI-FI Working: My iMac Late-2012]]></title><description><![CDATA[Are you a proud owner of a newly obsolete Mac not supported by macOS Big Sur like I am with my iMac late-2012? Then follow this tutorial to fix it!]]></description><link>https://blog.juliensatti.com/install-macos-big-sur-mac-obsolete/</link><guid isPermaLink="false">5ef696a24b4f7878772c6373</guid><category><![CDATA[Technology]]></category><dc:creator><![CDATA[Julien SATTI]]></dc:creator><pubDate>Sat, 27 Jun 2020 11:07:22 GMT</pubDate><media:content url="https://blog.juliensatti.com/content/images/2020/06/macOS-Big-Sur-iMac-2012.jpg" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://blog.juliensatti.com/content/images/2020/06/macOS-Big-Sur-iMac-2012.jpg" alt="Install macOS Big Sur on a Newly Unsupported Mac With WI-FI Working: My iMac Late-2012"><p>You are probably aware that this fall, like every single fall season, the <s>pumpkin spice latte</s> new macOS version will be available to install. However, this year, Apple chose to do things differently.</p>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h3 id="macosbigsur">macOS Big Sur</h3>
<p>First thing first, the version number. Yes, we are now looking at macOS 11, after roughly 20 years of macOS 10/Mac OS X incremental updates. Why change now? Well, with the release of this new version which will be available on Apple Silicon-based Macs and which introduces a totally new design, Apple taught it was time.</p>
<p>Weirdly (not really), I tend to agree with that. Indeed, I&apos;ve now spent most of my life on version 10. That makes me think I still have the CD for Mac OS 9 somewhere and that I should take my first computer ever &#x2014; the iMac G4 from 2000 &#x2014; for a spin sometime... just for fun.</p>
<p>Yet, that is not the only thing Apple decided to innovate on: making perfectly working older Macs obsolete seems to be one of the new <em>features</em> brought by this version. Yikes.</p>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h3 id="myimaclate2012">My iMac late-2012</h3>
<p>I am actually writing this article on this iMac. Yup, that&apos;s an eight years old device still standing perfectly here &#x2014; accounting for the external SSD I&apos;m running macOS from. I can remember myself saving the money for it for years and then finally going to the store with my mother, picking an iMac from the aisle, buying Microsoft Office like a dumba-- with it and unboxing it at home... with no Internet connection whatsoever. Anyway.</p>
<p>The fact is, this machine has serious specs that are still relevant to this day. Indeed, my iMac is equiped with:</p>
<ul>
<li>an Intel Core i5 Quad-Core @ 2.7 GHz;</li>
<li>8GB of DDR3 RAM @ 1600 MHz;</li>
<li>a 128GB external Samsung M.2 SSD connected via USB-3 with macOS installed on it;</li>
<li>an NVIDIA GeForce GT 640M graphics card with 512MB of VRAM (yes, yes, NVIDIA graphics, in a Mac, what a world).</li>
</ul>
<p>I was then rightfully persuaded while watching the WWDC20, with my specs in mind, that my Mac, will, once again receive this new version, as it did with macOS Catalina. But oh boi was I wrong... Several hours later, articles started to pop out of nowhere saying my iMac (in addition to my Apple Watch Series 2 and AirPods 1st-gen) was now obsolete and stuck on macOS Catalina.</p>
<p>Unacceptable (!), I taught. But then, I remembered that some people were running the current version on already obsolete machines. So I began to search... and was I reassured by the dozens of Mac-afficionados already running the macOS Big Sur beta1 on their unsupported MacBooks and Mac Minis.</p>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h3 id="thetrick">The trick</h3>
<p>Well then, with all those people already installing the beta on their unsupported Macs, I started to work on it for mine. Without spoiling you the ending, I was not expecting for it to work as well as it does (remember, I&apos;m using it right now).</p>
<p>The basic principle of this &quot;hack&quot; is to disable the verification of the system done by the installer and ideally force the installation by disabling some security aspects of macOS and adding a new library in the process that will help us achieve our goal.</p>
<p>If you follow very simple instructions, the end of the installation is pretty straightforward: in fact you will in the end be doing the same thing you would have been if your Mac had been compatible to start with.</p>
<p>Those additional steps done, some reboots, and an hour elapsed... et voil&#xE0;! You are now rocking the last version of macOS (still in beta, remember) on your obsolete system.</p>
<!--kg-card-end: markdown--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.juliensatti.com/content/images/2020/06/macos-1.jpg" class="kg-image" alt="Install macOS Big Sur on a Newly Unsupported Mac With WI-FI Working: My iMac Late-2012" loading="lazy" width="1920" height="1080" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/06/macos-1.jpg 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/06/macos-1.jpg 1000w, https://blog.juliensatti.com/content/images/size/w1600/2020/06/macos-1.jpg 1600w, https://blog.juliensatti.com/content/images/2020/06/macos-1.jpg 1920w" sizes="(min-width: 720px) 720px"><figcaption>Can you spot the problem in this screenshot?</figcaption></figure><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.juliensatti.com/content/images/2020/06/macos-2.jpg" width="1920" height="1080" loading="lazy" alt="Install macOS Big Sur on a Newly Unsupported Mac With WI-FI Working: My iMac Late-2012" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/06/macos-2.jpg 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/06/macos-2.jpg 1000w, https://blog.juliensatti.com/content/images/size/w1600/2020/06/macos-2.jpg 1600w, https://blog.juliensatti.com/content/images/2020/06/macos-2.jpg 1920w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.juliensatti.com/content/images/2020/06/macos-3.jpg" width="1920" height="1080" loading="lazy" alt="Install macOS Big Sur on a Newly Unsupported Mac With WI-FI Working: My iMac Late-2012" srcset="https://blog.juliensatti.com/content/images/size/w600/2020/06/macos-3.jpg 600w, https://blog.juliensatti.com/content/images/size/w1000/2020/06/macos-3.jpg 1000w, https://blog.juliensatti.com/content/images/size/w1600/2020/06/macos-3.jpg 1600w, https://blog.juliensatti.com/content/images/2020/06/macos-3.jpg 1920w" sizes="(min-width: 720px) 720px"></div></div></div><figcaption>Other screenshots of macOS Big Sur beta1 running on my iMac late-2012</figcaption></figure><!--kg-card-begin: markdown--><p>As you can see in the screenshots above, first, it&apos;s really late, and second, everything works like a charm. From Maps, a Catalyst version of an iPad app, to the new System Preferences... all is great, great is all! The revamped notification center and widgets section, as well as the new control center are also all there for us to enjoy... without having spent any more money on it.</p>
<p>Let&apos;s get right to it then!</p>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h3 id="thecatchandhowtofixit">The catch (and how to fix it)</h3>
<p>Before we go, you should know that your mileage may vary depending on which device you are following this tutorial with. Indeed, while some of them will have everything working as expected, most of them will lack support for Wi-Fi on macOS Big Sur...</p>
<p>Not to worry, though. The Mac community and the wonderful people participating on the <a href="https://forums.macrumors.com/threads/macos-11-big-sur-on-unsupported-macs-thread.2242172/">MacRumors forums</a> have seen worse! This is nothing a little <em>patching</em> can&apos;t fix. I&apos;d like to thank <a href="https://forums.macrumors.com/members/libneko.1222168/">libneko</a>, <a href="https://forums.macrumors.com/members/jackluke.1133911/">jackluke</a> and <a href="https://medium.com/@andv/making-wifi-on-big-sur-unsupported-macs-with-failed-with-66-error-36c98e3f7965">Andrey Viktorov</a> for their insightful contributions on how to fix the Wi-Fi and his experience. I wouldn&apos;t have macOS Big Sur and working Wi-Fi on my iMac if it wasn&apos;t for them and other members of this forum.</p>
<p>In such manner, you&apos;d be happy to know that my iMac is ready to roll on the latest version for at least another update cycle &#x2014; with all functions working properly. If you too, you are experiencing the <code>failed with 66</code> error or want to fix you Wi-Fi on macOS Big Sur, make sure to jump to step 10 or follow the entire tutorial below.</p>
<p><strong>Also, just a little reminder that this tutorial is intented for Macs that are currently running macOS Catalina (10.15).</strong></p>
<p><mark>November 17th: Since the official launch of macOS Big Sur, more people are trying to follow this tutorial that was previously meant for the beta version. Thanks to some of you who gave me feedback by email, you might have some more luck with the <a href="https://github.com/barrykn/big-sur-micropatcher">Micropatcher</a> if the following tutorial fails... Stay safe everyone!</mark></p>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h2 id="tutorialmacosbigsurbeta1installationandwififixviakernelextensionmodification">Tutorial : macOS Big Sur beta 1 installation and Wi-Fi fix via kernel extension modification</h2>
<p><em>Edit July: now that beta 2 and 3 are out, this tutorial and some links might not work anymore. I&apos;ll try to update the article with the final release so your mileage may vary.</em></p>
<h3 id="step0beingawareoftherisks">Step 0: being aware of the risks</h3>
<p>If you are not comfortable with Linux or the Mac terminal, <strong>please</strong> do not attempt this tutorial. If you attempt this tutorial only to make your Wi-Fi working on your already working macOS Big Sur partition, <strong>do not</strong> do it also if you are not very comfortable with a Terminal  as it may completely break your system. Wait for a better solution or buy a <a href="https://julien.fyi/amazon">cheap Wi-Fi dongle</a> on Amazon instead.</p>
<h3 id="step1downloadingthebeta">Step 1: downloading the beta</h3>
<p>Since your Mac isn&apos;t officially supported, the update will not be showing on your system, even when enrolled in the beta program. You&apos;ll need to download the special package directly from Apple CDN, <a href="http://swcdn.apple.com/content/down...kxzj3zjshu1srsh4n74a41n4/InstallAssistant.pkg">here</a> (9.56GB).</p>
<p><img src="https://blog.juliensatti.com/content/images/2020/06/Screen-Shot-2020-06-27-at-04.23.20.png" alt="Install macOS Big Sur on a Newly Unsupported Mac With WI-FI Working: My iMac Late-2012" loading="lazy"></p>
<h3 id="step2downloadingtheadditionallibrary">Step 2: downloading the additional library</h3>
<p>We need to inject an additional library named <code>Hax.dylib</code> during the installation process. You need to download it <a href="https://mega.nz/file/Gk5xwR7Z#1g6-bHeKfgy19iWLlbhDDOvRSu6o0ssy-We2nY_8UQA">here</a> (32KB).</p>
<h3 id="step3movingthelibrary">Step 3: moving the library</h3>
<p>To make it easier later (when we will use the $PWD variable in the Terminal), use the Finder to move or copy the library to your home folder. In my case this is <code>/SAMSUNG SSD/Users/juliensatti/</code>.</p>
<p><img src="https://blog.juliensatti.com/content/images/2020/06/macos-home-library.png" alt="Install macOS Big Sur on a Newly Unsupported Mac With WI-FI Working: My iMac Late-2012" loading="lazy"></p>
<h3 id="step4bootingintorecoverymode">Step 4: booting into recovery mode</h3>
<p>Before actually installing macOS Big Sur, we need to disable the system compatibility check layer, disable the system integrity protection (SIP), disable the verification of the libraries and, only then, insert our <code>Hax.dylib</code> in an environment variable.</p>
<p>To achieve all that, we first need to <strong>BOOT</strong> into <mark>recovery mode</mark>. Simply restart your Mac and immediately hold the <code>CMD-R</code> keys on reboot until you see the recovery OS.</p>
<h3 id="step5disablingsip">Step 5: disabling SIP</h3>
<p>Run <code>csrutil disable</code> in the recovery Terminal accessible in the menu bar under <em>Utilities</em>. You will also be able to check the success of the command, back in Catalina (so, <em>after a reboot</em>), by running <code>csrutil status</code> (optional).</p>
<h3 id="step6disablingcompatibilitycheck">Step 6: disabling compatibility check</h3>
<p>Run the following command in the previoulsy opened Terminal in recovery mode: <code>nvram boot-args=&quot;-no_compat_check&quot;</code>. <em>Nothing should show up if successful.</em></p>
<h3 id="step7disablinglibrariesvalidation">Step 7: disabling libraries validation</h3>
<p>First, <strong>REBOOT</strong> your computer into <mark>recovery mode</mark> (step 4). Then, open a new Terminal from there and run this long command: <code>sudo defaults write /Library/Preferences/com.apple.security.libraryvalidation.plist DisableLibraryValidation -bool true</code>. <em>If you get an error regarding <code>sudo</code>, try the same command without it.</em></p>
<h3 id="step8insertingtheadditionallibrary">Step 8: inserting the additional library</h3>
<p>From the same Terminal, execute <code>launchctl setenv DYLD_INSERT_LIBRARIES $PWD/Hax.dylib</code>. This command will add the <code>Hax.dylib</code> library in your home folder as an environement variable.</p>
<h3 id="step9installingmacosfinally">Step 9: installing macOS, finally</h3>
<p>To proceed with the proper installation of the system, <strong>REBOOT</strong> your computer in <mark>macOS Catalina</mark> (your original partition). Then, open the <code>InstallAssistant.pkg</code> package that you downloaded on step 1.</p>
<p>At the end of the process, a new app will be installed in your <strong>Applications</strong> folder (you can find it via Spotlight): <code>Install macOS Beta</code>.</p>
<p><em>IMPORTANT: If the computer on which you will be installing this version of macOS is not capable of a wired Ethernet connexion and if you do not have another computer on-hand, please also follow step 11 to 13 right now as you may not have a working Wi-Fi right away after the install.</em></p>
<p>The only thing left to do is to run this new application, select your target partition and wait</p>
<p><em>Please note that during the launch of the latter app it may seem stuck. It is not, the whole macOS Big Sur OS is being unzipped in the background, please wait. Additionnaly, you can check this by opening the Activity Monitor.</em></p>
<p>Once the OS is prepared to be installed, click &quot;Restart&quot; and you should be on for dozens of automatic reboots. Wait for the installation to proceed, give it time.Some time later, you should now have macOS Big Sur beta1 installed on your obsolete Mac. <em>Congrats!</em></p>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><p><em>&#x2014; At this point your Wi-Fi should or should not be working &#x2014;</em></p>
<blockquote>
<p>My Wi-Fi is working</p>
</blockquote>
<p>Great! It&apos;s over. Glad I could help! Updates should be arriving in the system preferences, as usual. Don&apos;t forget to enroll your Mac to the beta program to receive future betas along the way...</p>
<blockquote>
<p>My Wi-Fi is not working</p>
</blockquote>
<p>Well then, we have work to do. Be sure to know what you are doing. If you are not but still feeling lucky (and totally aware that you can break your whole system in an instant), then proceed to the steps below:</p>
<h3 id="step10testingthesystem">Step 10: testing the system</h3>
<p>In order to make your life easier, try to run the following command from a macOS Big Sur Terminal: <code>sudo mount -uw</code>. If no error is returned as a result, please follow <a href="https://forums.macrumors.com/threads/macos-11-big-sur-on-unsupported-macs-thread.2242172/post-28603788">this</a> tutorial from ASentientBot or <a href="https://forums.macrumors.com/threads/macos-11-big-sur-on-unsupported-macs-thread.2242172/page-29?post=28604333#post-28604333">this</a> one if it still does not work, from libneko. Else, carry on.</p>
<h3 id="step11downloadinganolderversionofthewifikernelextension">Step 11: downloading an older version of the Wi-Fi kernel extension</h3>
<p>An older kext (kernel extension) named <code>IO80211Family.kext</code> is necessary in order for the Wi-Fi to work. You can download it <a href="https://mega.nz/file/6txT0RLQ#ON0FMX8eG-XjUeoCvxKJf33NuPp12pm_M7mR6L0qAKQ">here</a> (8.6MB, 20.5MB unzipped).</p>
<h3 id="step12creatingthebootableusb">Step 12: creating the bootable USB</h3>
<p>You&apos;ll need a bootable version of macOS Big Sur on a USB stick (or an external drive partition, as you wish).</p>
<p>To do this, open a <code>Terminal</code>, make sur that <code>Install macOS Beta</code> is still in your <code>Applications</code> folder and execute the following command by making sure to replace <code>&lt;USB/ Label&gt;</code> with the name of your USB stick or dedicated partition:<code>sudo /Applications/Install\ macOS\ Beta.app/Contents/Resources/createinstallmedia --volume /Volumes/&lt;USB/ Label&gt;/</code></p>
<p><em>Please note that this command will <mark>wipe the content</mark> on the volume selected.</em>*</p>
<h3 id="step13copyingtheextensiontotheusb">Step 13: copying the extension to the USB</h3>
<p>Now that the bootable USB is done with the previous command, you can copy on it the <code>IO80211Family.kext</code> previously downloaded (and unzipped, if not already done).</p>
<p><img src="https://blog.juliensatti.com/content/images/2020/06/big-sur-bootable-drive.png" alt="Install macOS Big Sur on a Newly Unsupported Mac With WI-FI Working: My iMac Late-2012" loading="lazy"></p>
<h3 id="step14rememberingvolumegroupuuidandprebootdisk">Step 14: remembering Volume Group UUID and Preboot disk</h3>
<p>From a Terminal window running on your installed macOS Big Sur system, run <code>sudo kcditto</code>. Take a picture with your phone of this window as it may come in handy later on.<img src="https://blog.juliensatti.com/content/images/2020/06/kcditto.png" alt="Install macOS Big Sur on a Newly Unsupported Mac With WI-FI Working: My iMac Late-2012" loading="lazy"></p>
<h3 id="step15disablingauthenticatedroot">Step 15: disabling authenticated root</h3>
<ol>
<li><strong>REBOOT</strong> to the <mark>bootable USB</mark> drive of macOS Big Sur.</li>
<li>If you have FileVault enabled, neither the author of the original tutorial or I have tested it, but you should be prompted to enter password for the Big Sur installation.</li>
<li>Open a new Terminal window, from Utilities &gt; Terminal.</li>
<li>Run <code>csrutil authenticated-root disable</code> to disable the authenticated root from the System Integrity Protection (SIP).</li>
<li><strong>REBOOT</strong> to the <mark>bootable USB</mark> drive of macOS Big Sur, once more.</li>
</ol>
<h3 id="step16mountingthevolume">Step 16: mounting the volume</h3>
<p>After reboot, open a new Terminal and:</p>
<ol>
<li>Mount your Big Sur system partition, <mark>not the data one</mark>: <code>diskutil mount /Volumes/&lt;Volume\ Name</code>. Please don&apos;t forget to replace <code>&lt;Volume\ Name&gt;</code> with the name of your volume. Always prepend spaces in volume name with, for example, in my case: <code>diskutil mount /Volumes/SAMSUNG\ SSD</code></li>
<li>Remount it as readwrite: <code>mount -uw /Volumes/&lt;Volume\ Name&gt;</code></li>
<li>Make a snapshot to restore if something wents wrong:<code>/System/Library/Filesystems/apfs.fs/Contents/Resources/apfs_systemsnapshot -s &quot;BeforeWifiKexts&quot; -v /Volumes/&lt;Volume\ Name&gt;</code></li>
</ol>
<blockquote>
<p>You should see: <code>&lt;Volume\ Name&gt; on /Volumes/&lt;Volume\ Name&gt; mounted</code> as a confirmation.</p>
</blockquote>
<h3 id="step17replacingthekernelextensionkext">Step 17: replacing the kernel extension (kext)</h3>
<p>From the same Terminal:</p>
<ol>
<li>Navigate to the extensions folder: <code>cd /Volumes/&lt;Volume\ Name&gt;/System/Library/Extension</code></li>
<li>Backup current kext: <code>mv IO80211Family.kext IO80211Family.kext.backup</code></li>
<li>Copy new kext from the USB drive, the latter always being mounted at <mark>/Volumes/Image\ Volume</mark> : <code>cp -r /Volumes/Image\ Volume/IO80211Family.kext .</code>.</li>
</ol>
<blockquote>
<p>Make sure there are no errors at the end of these commands. Nothing should appear, it&apos;s normal.</p>
</blockquote>
<h3 id="step18installingthekernelextensionkext">Step 18: installing the kernel extension (kext)</h3>
<p><em>That&apos;s where things can start to go wrong, proceed cautiously.</em></p>
<p>From the same Terminal, run the following command: <code>kmutil install --update-all --volume-root /Volumes/&lt;Volume\ Name&gt;</code>.</p>
<blockquote>
<p>You should see <code>Brcm4360</code>, <code>Brcm4331</code> and some other kexts in the output. <strong>There MUST be no errors when running this command.</strong> You can see an example <a href="https://miro.medium.com/max/1400/1*ZXV6N-YOJcnhI9A75Ivt8w.png">here</a>.</p>
</blockquote>
<h3 id="step19creatingsnapshotandmakingitbootable">Step 19: creating snapshot and making it bootable</h3>
<p>Frpm the same Terminal, once again:</p>
<ol>
<li>We need to create an <a href="https://en.wikipedia.org/wiki/Apple_File_System">APFS</a> snapshot for our volume, running the following long command:<code>/System/Library/Filesystems/apfs.fs/Contents/Resources/apfs_systemsnapshot -s &quot;WifiKexts&quot; -v /Volumes/&lt;Volume\ Name&gt;</code></li>
<li>Then, we need to mark it as bootable:<code>/System/Library/Filesystems/apfs.fs/Contents/Resources/apfs_systemsnapshot -r &quot;WifiKexts&quot; -v /Volumes/&lt;Volume\ Name&gt;</code> <em>The only difference between these two commands, is <code>-s</code> after apfssystemsnapshot replaced with <code>-r</code></em></li>
</ol>
<blockquote>
<p>You should see <code>Attempting creation...</code> and <code>Attempting tagging...</code> if everything went perfectly.</p>
</blockquote>
<h3 id="step20copyingupdatedbootkernelextensionstotheprebootvolume">Step 20: copying updated BootKernelExtensions to the Preboot volume</h3>
<p>Well, that&apos;s where things went south for me while following a tutorial of my own. I was told to mount the <strong>Preboot</strong> partition of the disk on which my installed macOS Big Sur is. At Step 1, the Terminal told me this was <code>/dev/disk2s2</code>. However, while executing the right command to mount this partition, well... no partition with this name was available.</p>
<p>My fix was to run in the current Terminal of my USB Big Sur volume the following command in order to list all the disks (and their partitions) connected to Mac : <code>diskutil list</code>. From there, you should look over to a partition named <code>Preboot</code> and make sure it&apos;s the right one (if it&apos;s not the only one).So anyway, once that was under control:</p>
<ol>
<li>Mount the Preboot disk with <code>diskutil mount /dev/&lt;yourprebootdisk&gt;</code> (once again, look at the picture you took on step 13, or do what I did above).</li>
<li>Create a backup of Preboot data by:<br>
2.1. Navigating to the volume: <code>cd /Volumes/Preboot</code>;<br>
2.2. Listing the UUID(s): <code>ls</code>;<br>
2.3. Checking with your picture that this is the correct UUID and execute the following command by replacing <code>&lt;UUID&gt;</code> with your UUID: <code>cp -r &lt;UUID&gt; &lt;UUID&gt;.beforewifikexts</code>.</li>
<li>Navigate to the correct folder in Preboot with the UUID we just confirmed: <code>cd /Volumes/Preboot/&lt;UUID&gt;/boot/System/Library/KernelCollections</code></li>
<li>Copy BootKernelExtensions from your volume to Preboot:<code>cp /Volumes/&lt;Volume\ Name&gt;/System/Library/KernelCollections/BootKernelExtensions.kc .</code><br>
<code>cp /Volumes/&lt;Volume\ Name&gt;/System/Library/KernelCollections/BootKernelExtensions.kc.elides .</code></li>
</ol>
<blockquote>
<p>You should not see anything in return if the commands were successful.</p>
</blockquote>
<p><em>We can also note that remembering the UUID wasn&apos;t really needed because in my case there were only one install base, but this way you can always verify...</em></p>
<h3 id="step21final">Step 21: final</h3>
<p><strong>REBOOT</strong> to your <mark>installed macOS Big Sur system</mark> (the normal one). If you&#x2019;re stuck on boot after approximately 10 minutes, well, you are in a state I wouldn&apos;t want to be in. THe only thing left to do is to reset your whole system via Recovery Mode... else:</p>
<ol>
<li>Log in (Wi-Fi still should not work, that&apos;s normal).</li>
<li>Open a Terminal and run: <code>sudo kcditto</code></li>
<li>Reboot.</li>
</ol>
<p><em>Congrats!</em> Wi-Fi should now work correctly.</p>
<p><img src="https://blog.juliensatti.com/content/images/2020/06/macos-net.png" alt="Install macOS Big Sur on a Newly Unsupported Mac With WI-FI Working: My iMac Late-2012" loading="lazy"></p>
<h3 id="incasesomethingwentwrong">In case something went wrong</h3>
<p>To revert our changes, in the case they haven&apos;t entirely broken the system, <strong>REBOOT</strong> into your <mark>mac OS Big Sur USB</mark> and open a Terminal:</p>
<ol>
<li>Make a backup snapshot bootable (notice <code>-r</code> instead of <code>-s</code>):<code>/System/Library/Filesystems/apfs.fs/Contents/Resources/apfs_systemsnapshot -r &quot;BeforeWifiKexts&quot; -v /Volumes/&lt;Volume\ Name&gt;</code></li>
<li>Mount Preboot as listed in step 19: <code>cd /Volumes/Preboot</code></li>
<li>mv <uuid> <uuid>.broken where <uuid> is your Volume Group UUID4. cp -r <uuid>.beforewifikexts <uuid> where <uuid> is your Volume Group UUID</uuid></uuid></uuid></uuid></uuid></uuid></li>
<li><strong>REBOOT</strong> to your <mark>macOS Big Sur original system</mark> and check. After that, you can try again, but don&#x2019;t create BeforeWifiKexts snapshot and don&#x2019;t copy preboot again! It&#x2019;s meant to be done once.<br>
<br> <center>&#xB7; &#xB7; &#xB7;</center></li>
</ol>
<!--kg-card-end: markdown--><p>That&apos;s the end of this large tutorial. Thanks again to all the contributors on MacRumors forums for their help... and long live to our Macs! I&apos;ll try to update this tutorial to see if the other betas break what we fixed with the Wi-Fi or not. Until then, thank you for passing by! &#x1F91F;&#x1F3FC;</p><!--kg-card-begin: markdown--><center>&#xB7; &#xB7; &#xB7;</center>    <br><!--kg-card-end: markdown--><p>If you tried for yourself or liked this post, don&apos;t hesitate to share this article with people it might interest and please share your taughts below in the comments. &#x1F604;</p><hr>]]></content:encoded></item><item><title><![CDATA[New Blog, New Language, New Platform... New Audience]]></title><description><![CDATA[<p>Hi there! Julien here. Welcome to my new blog: <strong>Lifeline</strong>. You may know me better from my other blog &#x2014; <a href="https://www.juliens.me">JULIENS. Blog</a> &#x2014; where I have been writing content (or wrote if you account for the last time I actually published some real content) in French for years... since 2012,</p>]]></description><link>https://blog.juliensatti.com/intro/</link><guid isPermaLink="false">5ef663bd808db36e86b38e8f</guid><category><![CDATA[Edito]]></category><dc:creator><![CDATA[Julien SATTI]]></dc:creator><pubDate>Fri, 26 Jun 2020 18:24:51 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1544237526-cae15a57ed1e?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=2000&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1544237526-cae15a57ed1e?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=2000&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" alt="New Blog, New Language, New Platform... New Audience"><p>Hi there! Julien here. Welcome to my new blog: <strong>Lifeline</strong>. You may know me better from my other blog &#x2014; <a href="https://www.juliens.me">JULIENS. Blog</a> &#x2014; where I have been writing content (or wrote if you account for the last time I actually published some real content) in French for years... since 2012, actually.</p><p>So, why a new blog then? Well, I was tired to write in French. The blogging community in this language clearly lacks some professionalism, and contents just seem to be generally less qualitative and more focused towards clicks. Although I do not forbid myself from publishing in French on this blog in the future using a dedicated tag, that is why I started this new website. I wanted something that appeals more to my fellow readers of the Shakespearean language and something to work on in order to further enhance my writing skills and... and above all, to share my passions.</p><figure class="kg-card kg-bookmark-card kg-card-hascaption"><a class="kg-bookmark-container" href="https://www.juliens.me"><div class="kg-bookmark-content"><div class="kg-bookmark-title">JULIENS. | Blogging &amp; Portfolio</div><div class="kg-bookmark-description">Bienvenue sur&#xA0;mon&#xA0;site regroupant &#xE9;criture occasionnelle sur mon blog et mon portfolio d&#x2019;exp&#xE9;rimentations en photographie, design web/graphique et plus...</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://files.juliens.me/2017/10/apple-touch-icon-300x300.png" alt="New Blog, New Language, New Platform... New Audience"><span class="kg-bookmark-author">JULIENS.</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://files.juliens.me/2018/03/opengraph.jpeg" alt="New Blog, New Language, New Platform... New Audience"></div></a><figcaption>My other (french) blog for the ones interested</figcaption></figure><p>What about the title, though? Lifeline. Well, it says it all. For me, focusing on my passions and thinking about what the future may hold and how I can help shaping it more towards what I envision are the two elements that keep me alive. Therefore, with this blog referring primarily to those passions, this is my lifeline. Got it? <em>(I hope so... because this is a cry for help, jk.)</em></p><p>By the way, you may have noticed that I revealed my full identity here. I taught it was time for me to face consequences and link my name to my actual content. After all, 2020 has seen weirder things...</p><p>I hope that in the end this new blog, which is by the way hosted by myself on a simpler platform (I&apos;m using Ghost &#x2014; farewell, WordPress), will push me to publish more content, more regularly. If you are as excited as I am, don&apos;t forget to add this RSS feed to your favorite reader and make sure to follow me on <a href="https://twitter.com/juliensatti">Twitter</a> and <a href="https://instagram.com/juliensatti">Instagram</a>.</p><p>P.S.: <em>Lifeline: a blog by Julien SATTI </em>is hosted and managed by <a href="https://duework.org">DueWork</a> in France on a virtual machine running Ghost over Debian 10 and is fully compatible with both IPv4 and IPv6 (as it should).</p><p>Stay tuned!</p><hr>]]></content:encoded></item></channel></rss>