~hedy's blogroll - BlogFlock The blogroll listed on my website. https://home.hedy.dev/blogroll/ 2026-06-29T03:52:07.812Z BlogFlock Seirdy, erock, James' Coffee Blog, Sloum, Manuel Moreale RSS Feed, Protesilaos Stavrou: Master feed with all updates, Ploum.net, ~hedy, Baty.net The Bride! (2026) - Baty.net 6a41c334eead6b000185ba1e 2026-06-29T01:05:46.000Z <img src="https://baty.net/content/images/2026/06/the-bride---2026--card.jpeg" alt="The Bride! (2026)"><p>Sure, Del Toro&apos;s &quot;Frankenstein&quot; was technically a &quot;better&quot; movie, but I&apos;ll put money on &quot;The Bride!&quot; being watched and enjoyed 20 years from now, while &quot;Frankenstein&quot; will be remembered as, &quot;...pretty good, but I haven&apos;t bothered watching it again since 2025.&quot;</p><p>The Bride was, for me, 1,000 times more fun and interesting. Who cares if it&apos;s a weird mess if it&apos;s a fun and interesting mess.</p> On ends - Manuel Moreale RSS Feed https://manuelmoreale.com/@/page/ouakfzk6ldn8nb8f 2026-06-28T17:55:00.000Z <p>I’m sitting on a rock, in the middle of a forest. On my right, not even 30cm away from me, a dog panting like crazy, because even though it’s almost 8pm, it’s still way too warm for his liking. To be fair, anything above freezing probably fits that description. Behind me, the ruins of a church that was, and no longer is. A stone arch and a few chunks of walls are all that’s left. I don’t know what happened to this church. I could probably look it up, but I don’t need to do it. Knowing would not add anything to my experience of sitting here.</p> <p>Is it important to know how things end? Is it important to know when something has ended? Some things are clearly easy to know when they’re done: I have a bottle of water that’s almost empty, and the end is gonna come pretty fast. Other things are a lot trickier. When does a life end? I remember reading that the medical definition of death keeps evolving as our technology progresses and we’re able to bring people back to life. Maybe in the future we’ll be able to upload our brains to the matrix and “live” forever, who knows.</p> <p>I’ve been thinking a lot about the end of things lately, as my mind wandered around, stressed out by a series of things not worth discussing. And thinking about the end of myself is weirdly comforting. The classic this too shall pass. Everything is transitory after all, and life itself is impermanent. We’re here now, we might be gone tomorrow.</p> <p>And when gone, what’s left? Maybe just ruins, traces of our past, books left on a bookshelf, photos in a box, a blog online perhaps, destined to be washed away quickly like everything else in the digital world.</p> <p>If you’re wondering where I’m going with this post, I’m afraid the answer is nowhere. I’m just sitting on a rock, in the middle of nowhere, thinking about death as a way to figure out how to go through life.</p> <hr> <p>Thank you for keeping RSS alive. You're awesome.</p> <p><a href="mailto:hello@manuelmoreale.com">Email me</a> :: <a href="https://manuelmoreale.com/guestbook">Sign my guestbook</a> :: <a href="https://ko-fi.com/manuelmoreale">Support for 1$/month</a> :: <a href="https://manuelmoreale.com/supporters">See my generous supporters</a> :: <a href="https://buttondown.email/peopleandblogs">Subscribe to People and Blogs</a></p> Emacs: new ‘doric-tiger’ and ‘doric-lion’ for the ‘doric-themes’ - Protesilaos Stavrou: Master feed with all updates https://protesilaos.com/codelog/2026-06-28-emacs-doric-tiger-doric-lion/ 2026-06-28T00:00:00.000Z <p>I just added two new themes to my minimalist <code class="language-plaintext highlighter-rouge">doric-themes</code> package. <code class="language-plaintext highlighter-rouge">doric-tiger</code> is a light theme, while <code class="language-plaintext highlighter-rouge">doric-lion</code> is dark. Both use orange and yellow colours. Below are sample screenshots.</p> <h2>doric-tiger</h2> <p><a href="https://protesilaos.com/assets/images/doric/doric-tiger.png"><img alt="doric-tiger theme sample" src="https://protesilaos.com/assets/images/doric/doric-tiger.png" /></a></p> <p><a href="https://protesilaos.com/assets/images/doric/doric-tiger-org.png"><img alt="doric-tiger theme sample" src="https://protesilaos.com/assets/images/doric/doric-tiger-org.png" /></a></p> <p><a href="https://protesilaos.com/assets/images/doric/doric-tiger-message.png"><img alt="doric-tiger theme sample" src="https://protesilaos.com/assets/images/doric/doric-tiger-message.png" /></a></p> <p><a href="https://protesilaos.com/assets/images/doric/doric-tiger-magit.png"><img alt="doric-tiger theme sample" src="https://protesilaos.com/assets/images/doric/doric-tiger-magit.png" /></a></p> <h2>doric-lion</h2> <p><a href="https://protesilaos.com/assets/images/doric/doric-lion.png"><img alt="doric-lion theme sample" src="https://protesilaos.com/assets/images/doric/doric-lion.png" /></a></p> <p><a href="https://protesilaos.com/assets/images/doric/doric-lion-org.png"><img alt="doric-lion theme sample" src="https://protesilaos.com/assets/images/doric/doric-lion-org.png" /></a></p> <p><a href="https://protesilaos.com/assets/images/doric/doric-lion-message.png"><img alt="doric-lion theme sample" src="https://protesilaos.com/assets/images/doric/doric-lion-message.png" /></a></p> <p><a href="https://protesilaos.com/assets/images/doric/doric-lion-magit.png"><img alt="doric-lion theme sample" src="https://protesilaos.com/assets/images/doric/doric-lion-magit.png" /></a></p> <h2>Part of development</h2> <p>The new themes will be available in version <code class="language-plaintext highlighter-rouge">1.2.0</code>. I think they already are well defined and may not need furter changes. Though I will continue to test—and possibly tweak—them over the course of the next two weeks or so.</p> <h2>Sources</h2> <p>The Doric themes use few colours and will appear monochromatic in many contexts. They are my most minimalist themes. Styles involve the careful use of typographic features and subtleties in colour gradients to establish a consistent rhythm.</p> <p>If you want maximalist themes in terms of colour, check my <code class="language-plaintext highlighter-rouge">ef-themes</code> package. For something in-between, which I would consider the best “default theme” for a text editor, opt for my <code class="language-plaintext highlighter-rouge">modus-themes</code>.</p> <ul> <li>Package name (GNU ELPA): <code class="language-plaintext highlighter-rouge">doric-themes</code></li> <li>Sample pictures: <a href="https://protesilaos.com/emacs/doric-themes-pictures">https://protesilaos.com/emacs/doric-themes-pictures</a></li> <li>Git repository: <a href="https://github.com/protesilaos/doric-themes">https://github.com/protesilaos/doric-themes</a></li> <li>Backronym: Doric Only Really Intensifies Conservatively … themes.</li> </ul> Little Brother (2026) ★★ - Baty.net 6a3fda64eead6b000185b9f6 2026-06-27T14:32:32.000Z <img src="https://baty.net/content/images/2026/06/little-brother--2026--card.jpeg" alt="Little Brother (2026) &#x2605;&#x2605;"><p>I&apos;ll watch just about anything with John Cena, but I couldn&apos;t make it through this. I didn&apos;t find it funny enough, often enough, so I bailed after about 30 minutes.</p> Français: En plein air - Protesilaos Stavrou: Master feed with all updates https://protesilaos.com/french/2026-06-27-en-plein-air/ 2026-06-27T00:00:00.000Z <p>Je ne suis pas vraiment un artiste. Je n’ai jamais fait de peinture ou ai composé la musique, par exemple, ni je compris la danse artistiquement (oui, j’ai dansé plusieurs fois, mais seulement parce que les autres ont dansaient aussi). Mais j’ai quelques sensibilités artistique. Je discernes les connections dans le continuum cosmique et je veux élucider mes idées au manière originale. Donc je trouves les techniques des peintres, comme «alla prima» et «en plein air», naturelle pour le projet de mon actualisation personnel.</p> <p>Une facette de ce projet est la nouvelle section de <code class="language-plaintext highlighter-rouge">protesilaos.com</code> dédiée à ma pratique de la langue française. Pour moi, ça suffit si je peux écrire un note sans distractions. Je trouves les mots dès que j’arrive à chaque phrase. Dont j’écris maintenant est unique. Demain je vais avoir une expérience diffèrent et les idées les plus pertinentes vont être quelque chose d’autre. Quoi d’autre? Je vais savoir demain!</p> <p>Ceci est l’écriture en plein air. Il est simple et spontané. J’apprécie ces détailles, comme le peintre peut voir le soleil comme un phénomène familier et pourtant unique en chaque instant. Contre les tendances perfectionnistes, j’accepte les fautes pas comme problèmes mais comme les éléments constitutifs de la réalité que je vis.</p> <p>Pour le grammairien mes erreurs doivent être corriger. Et, oui, je veux parvenir à l’excellence où je suis capable à m’exprimer impeccablement en français. Si les fautes sont corrigés maintenant, on perde le personne qui a écris ce texte. On dit, autrement, que l’auteur dans la réalité de son moment n’est pas important. En plus, on affirme que l’auteur doit être l’article finale quand la vérité est qu’il est faillible et il fais de progrès chaque jour.</p> <p>Quelques fois les gens qui ont créatives me demandent «comment je peux être normal?». Je crois qu’ils ne comprennent pas exactement quelle est la condition de l’artiste. Tu ne peux pas être «normal» parce que tu vois les formes et couleurs riches ou tu as des sensations auditives que n’existent pas dans la subjectivité de le personne «normal». Tes instrument de perception sont différentes d’autres gens. Le même pour l’ingénieur, et le philosophe, et tous les individuels. Il n’y a pas de «normal» sauf que ça que ton condition rendre inévitable.</p> <p>Et voilà, aujourd’hui je fais quelque chose en plein air! Pourquoi? Parce que je peux.</p> Anne Lee Steele - Manuel Moreale RSS Feed https://manuelmoreale.com/@/page/jkrk2ljoiouhlw06 2026-06-26T11:00:00.000Z <p>This week on the People and Blogs series we have an interview with Anne Lee Steele, whose blog can be found at <a href="https://www.aleesteele.com">aleesteele.com</a>.</p> <p>Tired of RSS? <a href="https://manuelmoreale.com/interview/anne-lee-steele">Read this in your browser</a> or <a href="https://buttondown.com/peopleandblogs">sign up for the newsletter</a>.</p> <p>People and Blogs is supported by the <em>"One a Month"</em> club members.</p> <p>If you enjoy P&B, <a href="https://ko-fi.com/manuelmoreale">consider becoming one</a> for as little as 1 dollar a month.</p> <hr> <h2>Let's start from the basics: can you introduce yourself?</h2> <p>I’m Anne. I’ve spent almost a decade in what I call the ‘open ecosystem', the first five years as a lurker and participant, the second five as a researcher and facilitator. I’ve done ethnographic studies of OpenStreetMap, was the Community Manager of The Turing Way, and have held a variety of fellowships with organisations ranging from the Internet Society to the Software Sustainability Institute. Outside of all these things, I would call myself an artist-of-sorts, maybe to say that I make art more than I embody the spirit of an <em>artist,</em> per say. But I sometimes throw the title around anyway. I guess I’ll say it: I’m a researcher, facilitator, and artist.</p> <h2>What's the story behind your blog?</h2> <p>I was a big ‘micro’ blogger in my teens, using platforms like Xanga, Livejournal, and Flickr to document my teenage life. Then I inevitably moved to Tumblr alongside many angsty and artsy teenager girls right as Facebook started to take off in parallel, before moving to Instagram (and using it as a kind of ‘blog’ for years). I’ve gone through the inevitable cycles of use then rejection, of deleting and reactivating all my social media accounts. My original Facebook account is gone now. </p> <p>When I started grad school in 2019, I started my blog as a method of sharing more about my life and research when I moved to Geneva. I think it came out of the joint desires for self-expression and a desire to get out of social media. We now collectively call this platform decay “enshittification”, but I really felt like what I was putting online was performative more than anything else. The blog felt like shouting into a voice, yes, but it was <em>my</em> shout, on <em>my</em> own website, in a void of my own creation. There’s no like button for that.</p> <h2>What does your creative process look like when it comes to blogging?</h2> <p>I often just create a new page on Obsidian or VSCode and just start to write. Sometimes it all comes out in one go - sometimes the draft will take years to fruition (and yes - I’ll often backdate that post to when it was created, not when it was published). There’s actually a secret draft folder on Github that hosts all my drafts in progress.</p> <p>Out of all the creative processes, I find writing the most difficult, but also the most transformative. I rarely enjoy the process, but always feel better, or have more clarity, or understand something or myself better, afterwards. </p> <p>In parallel to writing, I’m <a href="https://www.are.na/anne-lee-steele/channels">very much a power user of are.na</a> which feels like a more instinctual, affectual, and social form of thinking out loud. I think a lot of the nascent themes contained there eventually end up on the blog in some form or another.</p> <h2>Do you have an ideal creative environment? Also do you believe the physical space influences your creativity?</h2> <p>I’m a big listener of <a href="https://www.nts.live/">NTS radio</a> (specifically the Breakfast Show with Flo) and use <a href="https://earth.fm/web/">earth.fm</a> a lot. Sounds really create a space for me - and are a way I stay grounded and aware, no matter where I might be working. If I have control over that however, I tend to need a big desk for books and papers of all kinds - maybe I need a messy desk in order to have a cleaner mind. I absolutely believe that physical spaces influence creativity. When I’m writing something long form for example, I’ll usually surround myself physically with books and visual artifacts (photos, sketches, and other detritus) related to the topic, almost like it’s a living alter to the work, or an externalised process of thinking that starts with the visual, then becomes injested and cognitive. I’ve been on the move for the past year or so, and I’ve really felt its impact on my creativity: in some ways I’m more spontaneous, but less deep and situated with my thinking. I have no doubt that this is because of my perpetual motion.</p> <h2>A question for the techie readers: can you run us through your tech stack?*</h2> <p>My website (and blog attached to it) is very simple. I used to host my website on Github Pages, but now it’s built on Netlify (very open to alternatives - please reach out!). I used to use Heroku before it was shut down. The whole website and codebase is on Github. You can see more about the ethos of the website, and specifically the practices I am aiming to adopt better practices for accessibility and open practices on this easter egg of a page (which you can find by clicking the sticky note in the footer): <a href="https://www.aleesteele.com/design">aleesteele.com/design</a></p> <h2>Given your experience, if you were to start a blog today, would you do anything differently?</h2> <p>Field Notes from my Desktop is the name of both my blog and newsletter these days. I feel all sorts of ways about having a newsletter now – I’ve only sent out one so far. It’s a very different feeling to have a captive audience, some of which have been subscribed automatically after an event I’ve facilitated, or joined from the web. I don’t know if I like it, but it feels like in the age of information glut, there’s something about the inbox that remains sacred for many folks. I want to respect that, and maybe want to think of it as a seeding process...</p> <p>For my blog, I remain dedicated to maintaining it as is, without any real changes. Looking back, I guess I would have held myself accountable to finishing more blogs in the moment: when that whiff of an idea, or a concept, or an event or reflection has completely capitvated me and I feel the need to write about it. Unfortunately I have so many half-finished blogs not because I didn’t like the topic, but rather because it was such a struggle and a slog to finish, that I didn’t bring it fully over that crest into fruition. Maybe I should have ritualised it.</p> <p>At the same time, I don’t want to be too hard on myself. I did the best I could at the time. Maybe the newsletter is meant to be the rhythm, and the blog is the burst of free jazz.</p> <h2>Financial question since the Web is obsessed with money: how much does it cost to run your blog? Is it just a cost, or does it generate some revenue? And what's your position on people monetising personal blogs?</h2> <p>I have no monetization plan, and currently don’t monetize anything I do for the blog. In fact, I pay to use Buttondown at the moment, and I’m debating whether to do that (currently $9 USD a month since they changed their membership plan). I pay for my domain, which is £12 GBP annually. </p> <h2>Time for some recommendations: any blog you think is worth checking out? And also, who do you think I should be interviewing next?</h2> <p>Now I’m mixing blogs and newsletters! I’ve been such a periodic reader of a bunch of different things that I tend to save on are.na, that it’s hard to pick out a few. </p> <p>I’ve been a passionate reader of the <a href="https://www.themarginalian.org/">Marginalian</a> and <a href="https://thecreativeindependent.com/">the Creative Independent</a> for many years. At this point, both are less blog, and more of a wiki-like resource about life, creativity, ecology, and all sorts of topics that make life meaningful and mysterious. I’ve also used read and used <a href="https://www.openculture.com/">Open Culture</a> for many years – which is also a blog-of-sorts. I recently learned about <a href="https://theexaminedlife.org/">The Examined Mind</a>.</p> <p>One person whose writing practice I look up to is <a href="https://wordsinspace.net/work/">Shannon Mattern</a>, an academic anthropologist turned New York Librarian-of-sorts and my friend <a href="https://jonathangray.org/posts">Jonathan Gray</a> who has a fantastic (and consistent!) public writing process. Both of them are academics with public practices - and while I’m not an academic, I do have a research-informed process.</p> <p>I also love Julian Stodd’s blog on <a href="https://julianstodd.wordpress.com/">leadership and organisational practices</a>. He’s done a lot of deep and open thinking that I’ve appreciated about the topic, and has stayed loyal to old school Wordpress.</p> <p>This question inspires me to bring together a more curated list of blogs I’ve read and followed over the years, and also to recognise the shortfalls of my own ‘blogging’ practice. I have saved blog instances (meaning individual blogs), but I haven’t ‘followed’ a single blogger in a really long time actually. Is that because of the newsletter because I don’t use RSS feeds?</p> <h2>Final question: is there anything you want to share with us?</h2> <p>I’m developing a series of <a href="https://www.aleesteele.com/projects/mapping-meditations">mapping meditations</a>, based on Pauline Oliveros’ <em>Sonic Meditations</em>. If you have a map or a meditation to share, please reach out.</p> <p>I also run internet infrastructure walking tours in London, in an effort to make invisible infrastructures more embodied and playful. This year, I’ve been experimenting with a monthly walk, and <a href="https://luma.com/internet-infra-walks">you're welcome to join one using Luma</a>.</p> <hr> <h3>Keep exploring</h3> <p>Now that you're done reading the interview, <a href='https://www.aleesteele.com'>go check the blog</a>.</p> <p>If you're looking for more content, go read one of the previous <a href='https://peopleandblogs.com' target='_blank'>147 interviews</a>.</p> <p>People and Blogs is possible because kind people support it.</p> Français: La capacité d’écrire - Protesilaos Stavrou: Master feed with all updates https://protesilaos.com/french/2026-06-26-capacite-ecrire/ 2026-06-26T00:00:00.000Z <p>J’étais un adolescent quand j’ai appris les Français. Dans cette période là je ne pouvais pas préparer un texte long. En présent c’est facile pour moi de m’exprimer chaque jour, même avec les erreurs, parce que j’ai déjà développé la capacité de écrire.</p> <p>Cette capacité est indépendant de la compétence dans une langue particulier. Je peux écrire aux autres longues, donc je comprends les concepts en général et j’ai la intuition de élucider les idées d’une certain manière que je considère assez claire.</p> <p>Il y a les difficultés intrinsèque quand les mots ne reviens pas. Pour l’instant j’ai les doutes sur le genre grammatical. Je sais que «manière» est féminine, par exemple, parce que je l’ai rencontré ce matin pendent lire les actualités. Autrement je choisis un genre et espère que tous sera bien.</p> <p>L’écriture aide à établir les automatismes. Les constructions sons plus naturelles. En plus, le procès d’écrire crée les conditions de réfléchir avec un objectif en tête. Cela amplifie ma disposition contemplative. Quand l’objectif est claire, les concepts viennent plus facilement.</p> <p>Mon ancien moi n’avais pas la maturité intellectuel de utiliser effectivement termes comme «malgré», «lendemain», «dont», «cet dernière», et cetera. Ces sont concepts relativement simple. Mais leur intégration sur le texte nécessite un certain compétence que j’ai acquis principalement par la pratique d’écriture (je pratiquais la forme oral continuellement, mais c’est le texte qui me donne l’espace d’expérimentation avec le vocabulaire plus riche.)</p> <p>Et comme ça la capacité d’écrire devient de plus en plus efficace.</p> Thursday, June 25, 2026 - Baty.net 6a3d99ec01c3b3000112f8ba 2026-06-25T21:17:38.000Z <img src="https://baty.net/content/images/2026/06/20260625_0011.webp" alt="Thursday, June 25, 2026"><p>Two things were said to me this week that made me feel good. The first was from my therapist. She said, &quot;After our first few sessions I was worried that you were too smart for me and that I&apos;d have to work to keep up.&quot; Sure, she&apos;s my therapist, but still. Second, someone emailed me and said that they thought the internet was a better place with me in it. How nice is that?! Some days I feel stupid and useless. Not today, though.</p> Ça qui est corrigible - Protesilaos Stavrou: Master feed with all updates https://protesilaos.com/french/2026-06-25-qui-est-corrigible/ 2026-06-25T00:00:00.000Z <p>J’écris pour pratiquer ma Français. Il y a plein des fautes en ces notes ci. Collectivement ces sont la réflection de ma qualité en présent.</p> <p>Je crois que tous que je publies est corrigible. Pas seulement les textes Françaises, dont je pratiques la langue, mais la totalité de mes publications. Il y aucun instance de ma vie, de moi même, qui est parfait.</p> <p>Je ne suis pas perfectionniste parce que j’ai accepté la réalité de la condition humaine: notre corrigibilité. Mes efforts produisent des résultats que je les considères «assez bon». Ça veut dire qu’ils sont quatre vingts (les Wallons disent «ûtante») pour cent de le standard. Le standard est ça qui est le meilleure, mais même ça n’est pas parfait.</p> <p>Malgré mes limitations, j’ai l’attitude positif: de travailler en continu, de compéter sincèrement, et d’accepter la réalité suivi.</p> <p>Ça qui est corrigible est la matériel de le personne créative; le personne qui renouvelle lui chaque jour par faire plus en plus des fautes qui doivent être améliorer aux matériels suivant. Et la vie continue.</p> Unnatural - James' Coffee Blog https://jamesg.blog/2026/06/25/unnatural 2026-06-25T00:00:00.000Z <p><em>Content warning: This poem is about the ongoing heat in Europe. I strike an optimistic tone toward the end, but if you would prefer not to read about the heat, I offer you one of the </em><a href="https://jamesg.blog/2024/05/31/the-lost-poet" rel="noreferrer"><em>Scottish poems I have written in stead</em></a><em>.</em></p><p>Nature’s weary tears fill the air;<br/>invisible, warming.<br/>Relentlessly, days proceed.</p><p>Hours pass; Celsius rises.<br/>Midnights: warm like day.<br/>We stay inside.<br/>Blinds closed, water glasses full, cookers off.</p><p>Flowers bloom early.<br/>Eyelids weigh; we yearn<br/>for rest that does not come.</p><p>Heat ravages the continent.<br/>London is Rome.</p><p>Roads reduce to liquid, power lines sag:<br/>infrastructure is under stress.<br/>Headlines depress.</p><p>Hope: We come together, reaching<br/>with open eyes.<br/>Her resiliency:<br/>Our future?</p><script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a114bea7cbb0e85f',t:'MTc4MjM5ODYwOA=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&amp;&amp;(document.onreadystatechange=e,c())}}}})();</script> <a class="tag" href="https://jamesg.blog/2024/05/31/the-lost-poet">Scottish poems I have written in stead</a> Instagram and Facebook 👋🚶‍♂️‍➡️ - Baty.net 6a3be5559ede8b000102eb17 2026-06-24T15:05:26.000Z <img src="https://baty.net/content/images/2026/06/meta-circle.png" alt="Instagram and Facebook &#x1F44B;&#x1F6B6;&#x200D;&#x2642;&#xFE0F;&#x200D;&#x27A1;&#xFE0F;"><p>After seeing this in an email from Meta today:</p><blockquote class="kg-blockquote-alt">&quot;The setting to disconnect your off-Meta activity is going away.&quot;</blockquote><p>... I was reminded that I should finally delete my Facebook and Instagram accounts, so I guess that setting isn&apos;t the only thing going away.</p><figure class="kg-card kg-gallery-card kg-width-wide"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://baty.net/content/images/2026/06/facebook-deletion-email.png" width="2000" height="1396" loading="lazy" alt="Instagram and Facebook &#x1F44B;&#x1F6B6;&#x200D;&#x2642;&#xFE0F;&#x200D;&#x27A1;&#xFE0F;" srcset="https://baty.net/content/images/size/w600/2026/06/facebook-deletion-email.png 600w, https://baty.net/content/images/size/w1000/2026/06/facebook-deletion-email.png 1000w, https://baty.net/content/images/size/w1600/2026/06/facebook-deletion-email.png 1600w, https://baty.net/content/images/size/w2400/2026/06/facebook-deletion-email.png 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://baty.net/content/images/2026/06/instagram-deletion-email.png" width="2000" height="1119" loading="lazy" alt="Instagram and Facebook &#x1F44B;&#x1F6B6;&#x200D;&#x2642;&#xFE0F;&#x200D;&#x27A1;&#xFE0F;" srcset="https://baty.net/content/images/size/w600/2026/06/instagram-deletion-email.png 600w, https://baty.net/content/images/size/w1000/2026/06/instagram-deletion-email.png 1000w, https://baty.net/content/images/size/w1600/2026/06/instagram-deletion-email.png 1600w, https://baty.net/content/images/size/w2400/2026/06/instagram-deletion-email.png 2400w" sizes="(min-width: 720px) 720px"></div></div></div></figure><p>I&apos;m posting this because I want a public record of it. I&apos;m sorry if it comes off as performative. I&apos;m also sorry that it took me this long.</p> Tuner (2026) - Baty.net 6a3bd40e9ede8b000102eaf7 2026-06-24T13:00:45.000Z <img src="https://baty.net/content/images/2026/06/tuner--2026--card.jpeg" alt="Tuner (2026)"><p>I predicted what was going to happen the whole time, and I was happy to be right about most of it. Great to see Dustin Hoffman. I liked Leo Woodall, but there was this low-grade smirk on his face too much of the time. Anyway, thumbs up.</p> Français: Les habitudes changent - Protesilaos Stavrou: Master feed with all updates https://protesilaos.com/french/2026-06-24-les-habitudes-changent/ 2026-06-24T00:00:00.000Z <p>Les habitudes nous permettons à être efficace et à agir sans considérant les détailles chaque fois. Néanmoins, les habitudes doivent changer marginalement ou profondément pour notre développement vertueuse continuel.</p> <p>En ce sujet là, j’ai commencé à lire et à écrire en Français. Le grand plan est de pratiquer la langue jusqu’au point de compétence.</p> <p>J’ai appris Français à l’école et j’ai l’utilisais par mon travail avec les touristes et après au Parlement Européenne. Grèce et Chypre, ou j’habitais maintenant à ma maison dans les montagnes, sons destinations touristiques.</p> <p>Je suis un homme qui ne parler pas beaucoup. Ou, si tu préfères, qui ne parles pas sans raison. Quand je dis quelque chose, je veux m’exprimer correctement et précisément.</p> <p>L’Anglais ça devenu ma langue maternelle adopté, peut-être en mémé qualité que ma Grecque. Si je pratiquer les Français j’ai l’espoir que depuis quelques ans je deviendrai effective à m’exprimer parfaitement.</p> <p>Celles sont les premières journées. Les mots ces reviennent. J’ai le patience et la détermination de continuer. Chaque contribution a plein des erreurs: ses sont la vrai réflection de ma qualité en présent.</p> <p>Tous que je veux ultimement est la vérité. Très bien!</p> Poem: With moonward fist - Protesilaos Stavrou: Master feed with all updates https://protesilaos.com/poems/2026-06-23/ 2026-06-23T19:10:41.000Z <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>With moonward fist measured steps I make to silence the voice that delights in pity </code></pre></div></div> Roll 023 (2026) - Baty.net 6a3a5d159ede8b000102eadb 2026-06-23T10:20:58.000Z <figure class="kg-card kg-image-card"><img src="https://baty.net/content/images/2026/06/2026-Roll-023_03.jpg" class="kg-image" alt="Roll 023 (2026)" loading="lazy" width="1280" height="1280" srcset="https://baty.net/content/images/size/w600/2026/06/2026-Roll-023_03.jpg 600w, https://baty.net/content/images/size/w1000/2026/06/2026-Roll-023_03.jpg 1000w, https://baty.net/content/images/2026/06/2026-Roll-023_03.jpg 1280w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://baty.net/content/images/2026/06/2026-Roll-023_04.jpg" class="kg-image" alt="Roll 023 (2026)" loading="lazy" width="1280" height="1282" srcset="https://baty.net/content/images/size/w600/2026/06/2026-Roll-023_04.jpg 600w, https://baty.net/content/images/size/w1000/2026/06/2026-Roll-023_04.jpg 1000w, https://baty.net/content/images/2026/06/2026-Roll-023_04.jpg 1280w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://baty.net/content/images/2026/06/2026-Roll-023_06.jpg" class="kg-image" alt="Roll 023 (2026)" loading="lazy" width="1280" height="1280" srcset="https://baty.net/content/images/size/w600/2026/06/2026-Roll-023_06.jpg 600w, https://baty.net/content/images/size/w1000/2026/06/2026-Roll-023_06.jpg 1000w, https://baty.net/content/images/2026/06/2026-Roll-023_06.jpg 1280w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://baty.net/content/images/2026/06/2026-Roll-023_11.jpg" class="kg-image" alt="Roll 023 (2026)" loading="lazy" width="1280" height="1280" srcset="https://baty.net/content/images/size/w600/2026/06/2026-Roll-023_11.jpg 600w, https://baty.net/content/images/size/w1000/2026/06/2026-Roll-023_11.jpg 1000w, https://baty.net/content/images/2026/06/2026-Roll-023_11.jpg 1280w" sizes="(min-width: 720px) 720px"></figure> Monday, June 22, 2026 - Baty.net 6a395c779ede8b000102eabe 2026-06-23T10:08:27.000Z <img src="https://baty.net/content/images/2026/06/202606211954_0003.webp" alt="Monday, June 22, 2026"><p>I&apos;m considering giving up on my handwritten journal. Even using my favorite fountain pen and ink doesn&apos;t help me enjoy writing long entries by hand. I&apos;m impatient, and my handwriting is getting worse, not better. The journal is only one of my notebooks, though, so it abandoning it for digital would still leave me with a couple paper notebooks. My favorite is a blank Leuchtturm1977 notebook that I use as more of a scrapbook. I attach photos, receipts, clippings, etc. to pages and then write about them. Sometimes I doodle in it. This is the kind of artifact I like having. A long-form journal writing about &quot;how I&apos;m feeling&quot; or whatever works fine digitally. Better, probably.</p> IndieWeb Book Club: July 2026 - Manuel Moreale RSS Feed https://manuelmoreale.com/@/page/alspcgiwn0oaivjd 2026-06-23T06:25:00.000Z <p>I’m hosting July’s <a href="https://indieweb.org/IndieWeb_Book_Club">IWBC</a> and the timing is perfect since I split my reading year into to halves, which means I’m starting with an empty shelf in July. The book I picked is <a href="https://en.wikipedia.org/wiki/To_Have_or_to_Be%3F">“To Have or to Be”</a> by <a href="https://en.wikipedia.org/wiki/Erich_Fromm">Erich Fromm</a>.</p> <p>I read this book now more than 20 years ago, and I remember having a great impact on young me. And so I started wondering what current me would think of it. And the IWBC is a good excuse to pick it up a second time.</p> <p>If you decide to read it and post a review on your blog, make sure to send me a link and I'll be more than happy to link it here on the blog.</p> <hr> <p>Thank you for keeping RSS alive. You're awesome.</p> <p><a href="mailto:hello@manuelmoreale.com">Email me</a> :: <a href="https://manuelmoreale.com/guestbook">Sign my guestbook</a> :: <a href="https://ko-fi.com/manuelmoreale">Support for 1$/month</a> :: <a href="https://manuelmoreale.com/supporters">See my generous supporters</a> :: <a href="https://buttondown.email/peopleandblogs">Subscribe to People and Blogs</a></p> Wonders of Web Weaving, Episode 7 - James' Coffee Blog https://jamesg.blog/2026/06/23/wonders-of-web-weaving-episode-7 2026-06-23T00:00:00.000Z <p><a href="https://web-weaving.jamesg.blog/7" rel="noreferrer">The seventh episode of Wonders of Web Weaving is out</a>:</p><blockquote>In Episode 7, I chat with <a href="https://ohhelloana.blog" rel="noreferrer">Ana</a>, the author of <a href="https://ohhelloana.blog" rel="noreferrer">ohhelloana.blog</a>. We talk about, among other things, the growth we see in our websites over time, finding an in-person indie web community, and connecting with people using personal websites.</blockquote><p>I hope you enjoy the episode!</p><p><a href="https://web-weaving.jamesg.blog/subscribe/" rel="noreferrer"><em>Wonders of Web Weaving has an RSS feed</em></a><em> you can use to follow along from wherever you get your podcasts.</em></p><script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a101c07d098af0a2',t:'MTc4MjE5OTQ1NA=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&amp;&amp;(document.onreadystatechange=e,c())}}}})();</script> <a class="tag" href="https://ohhelloana.blog">Ana</a> <a class="tag" href="https://ohhelloana.blog">ohhelloana.blog</a> <a class="tag" href="https://web-weaving.jamesg.blog/7">The seventh episode of Wonders of Web Weaving is out</a> <a class="tag" href="https://web-weaving.jamesg.blog/subscribe/">Wonders of Web Weaving has an RSS feed</a> Portrait of a Lady on Fire (2019) ★★★★★ - Baty.net 6a3894d39ede8b000102eaa2 2026-06-22T01:53:01.000Z <img src="https://baty.net/content/images/2026/06/portrait-of-a-lady-on-fire--2019--card.jpeg" alt="Portrait of a Lady on Fire (2019) &#x2605;&#x2605;&#x2605;&#x2605;&#x2605;"><p>I can&apos;t even describe how beautiful this movie is. Every frame a painting. A Vermeer. The way they look at each other throughout is the greatest thing. This was my 5th or 6th watch and I still can&apos;t breath for the last 5 minutes. Astonishing. Crying is allowed. It&apos;s unavoidable.</p> Removing prefixes and suffixes in Python - James' Coffee Blog https://jamesg.blog/2026/06/22/removing-prefixes-and-suffixes-in-python 2026-06-22T00:00:00.000Z <style media="(prefers-color-scheme: dark)">pre { line-height: 125%; } td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } .highlight .hll { background-color: #49483e } .highlight { background: #272822; color: #F8F8F2 } .highlight .c { color: #959077 } /* Comment */ .highlight .err { color: #ED007E; background-color: #1E0010 } /* Error */ .highlight .esc { color: #F8F8F2 } /* Escape */ .highlight .g { color: #F8F8F2 } /* Generic */ .highlight .k { color: #66D9EF } /* Keyword */ .highlight .l { color: #AE81FF } /* Literal */ .highlight .n { color: #F8F8F2 } /* Name */ .highlight .o { color: #FF4689 } /* Operator */ .highlight .x { color: #F8F8F2 } /* Other */ .highlight .p { color: #F8F8F2 } /* Punctuation */ .highlight .ch { color: #959077 } /* Comment.Hashbang */ .highlight .cm { color: #959077 } /* Comment.Multiline */ .highlight .cp { color: #959077 } /* Comment.Preproc */ .highlight .cpf { color: #959077 } /* Comment.PreprocFile */ .highlight .c1 { color: #959077 } /* Comment.Single */ .highlight .cs { color: #959077 } /* Comment.Special */ .highlight .gd { color: #FF4689 } /* Generic.Deleted */ .highlight .ge { color: #F8F8F2; font-style: italic } /* Generic.Emph */ .highlight .ges { color: #F8F8F2; font-weight: bold; font-style: italic } /* Generic.EmphStrong */ .highlight .gr { color: #F8F8F2 } /* Generic.Error */ .highlight .gh { color: #F8F8F2 } /* Generic.Heading */ .highlight .gi { color: #A6E22E } /* Generic.Inserted */ .highlight .go { color: #66D9EF } /* Generic.Output */ .highlight .gp { color: #FF4689; font-weight: bold } /* Generic.Prompt */ .highlight .gs { color: #F8F8F2; font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #959077 } /* Generic.Subheading */ .highlight .gt { color: #F8F8F2 } /* Generic.Traceback */ .highlight .kc { color: #66D9EF } /* Keyword.Constant */ .highlight .kd { color: #66D9EF } /* Keyword.Declaration */ .highlight .kn { color: #FF4689 } /* Keyword.Namespace */ .highlight .kp { color: #66D9EF } /* Keyword.Pseudo */ .highlight .kr { color: #66D9EF } /* Keyword.Reserved */ .highlight .kt { color: #66D9EF } /* Keyword.Type */ .highlight .ld { color: #E6DB74 } /* Literal.Date */ .highlight .m { color: #AE81FF } /* Literal.Number */ .highlight .s { color: #E6DB74 } /* Literal.String */ .highlight .na { color: #A6E22E } /* Name.Attribute */ .highlight .nb { color: #F8F8F2 } /* Name.Builtin */ .highlight .nc { color: #A6E22E } /* Name.Class */ .highlight .no { color: #66D9EF } /* Name.Constant */ .highlight .nd { color: #A6E22E } /* Name.Decorator */ .highlight .ni { color: #F8F8F2 } /* Name.Entity */ .highlight .ne { color: #A6E22E } /* Name.Exception */ .highlight .nf { color: #A6E22E } /* Name.Function */ .highlight .nl { color: #F8F8F2 } /* Name.Label */ .highlight .nn { color: #F8F8F2 } /* Name.Namespace */ .highlight .nx { color: #A6E22E } /* Name.Other */ .highlight .py { color: #F8F8F2 } /* Name.Property */ .highlight .nt { color: #FF4689 } /* Name.Tag */ .highlight .nv { color: #F8F8F2 } /* Name.Variable */ .highlight .ow { color: #FF4689 } /* Operator.Word */ .highlight .pm { color: #F8F8F2 } /* Punctuation.Marker */ .highlight .w { color: #F8F8F2 } /* Text.Whitespace */ .highlight .mb { color: #AE81FF } /* Literal.Number.Bin */ .highlight .mf { color: #AE81FF } /* Literal.Number.Float */ .highlight .mh { color: #AE81FF } /* Literal.Number.Hex */ .highlight .mi { color: #AE81FF } /* Literal.Number.Integer */ .highlight .mo { color: #AE81FF } /* Literal.Number.Oct */ .highlight .sa { color: #E6DB74 } /* Literal.String.Affix */ .highlight .sb { color: #E6DB74 } /* Literal.String.Backtick */ .highlight .sc { color: #E6DB74 } /* Literal.String.Char */ .highlight .dl { color: #E6DB74 } /* Literal.String.Delimiter */ .highlight .sd { color: #E6DB74 } /* Literal.String.Doc */ .highlight .s2 { color: #E6DB74 } /* Literal.String.Double */ .highlight .se { color: #AE81FF } /* Literal.String.Escape */ .highlight .sh { color: #E6DB74 } /* Literal.String.Heredoc */ .highlight .si { color: #E6DB74 } /* Literal.String.Interpol */ .highlight .sx { color: #E6DB74 } /* Literal.String.Other */ .highlight .sr { color: #E6DB74 } /* Literal.String.Regex */ .highlight .s1 { color: #E6DB74 } /* Literal.String.Single */ .highlight .ss { color: #E6DB74 } /* Literal.String.Symbol */ .highlight .bp { color: #F8F8F2 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #A6E22E } /* Name.Function.Magic */ .highlight .vc { color: #F8F8F2 } /* Name.Variable.Class */ .highlight .vg { color: #F8F8F2 } /* Name.Variable.Global */ .highlight .vi { color: #F8F8F2 } /* Name.Variable.Instance */ .highlight .vm { color: #F8F8F2 } /* Name.Variable.Magic */ .highlight .il { color: #AE81FF } /* Literal.Number.Integer.Long */ .highlight .nn, .highlight .n{color: light-dark(black, var(--dark-foreground-color)) }</style><style media="(prefers-color-scheme: light)">pre { line-height: 125%; } td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } .highlight .hll { background-color: #ffffcc } .highlight { background: #f8f8f8; } .highlight .c { color: #3D7B7B; font-style: italic } /* Comment */ .highlight .err { border: 1px solid #F00 } /* Error */ .highlight .k { color: #008000; font-weight: bold } /* Keyword */ .highlight .o { color: #666 } /* Operator */ .highlight .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */ .highlight .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */ .highlight .cp { color: #9C6500 } /* Comment.Preproc */ .highlight .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */ .highlight .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */ .highlight .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */ .highlight .gd { color: #A00000 } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ .highlight .gr { color: #E40000 } /* Generic.Error */ .highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ .highlight .gi { color: #008400 } /* Generic.Inserted */ .highlight .go { color: #717171 } /* Generic.Output */ .highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ .highlight .gt { color: #04D } /* Generic.Traceback */ .highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008000 } /* Keyword.Pseudo */ .highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #B00040 } /* Keyword.Type */ .highlight .m { color: #666 } /* Literal.Number */ .highlight .s { color: #BA2121 } /* Literal.String */ .highlight .na { color: #687822 } /* Name.Attribute */ .highlight .nb { color: #008000 } /* Name.Builtin */ .highlight .nc { color: #00F; font-weight: bold } /* Name.Class */ .highlight .no { color: #800 } /* Name.Constant */ .highlight .nd { color: #A2F } /* Name.Decorator */ .highlight .ni { color: #717171; font-weight: bold } /* Name.Entity */ .highlight .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #00F } /* Name.Function */ .highlight .nl { color: #767600 } /* Name.Label */ .highlight .nn { color: #00F; font-weight: bold } /* Name.Namespace */ .highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #19177C } /* Name.Variable */ .highlight .ow { color: #A2F; font-weight: bold } /* Operator.Word */ .highlight .w { color: #BBB } /* Text.Whitespace */ .highlight .mb { color: #666 } /* Literal.Number.Bin */ .highlight .mf { color: #666 } /* Literal.Number.Float */ .highlight .mh { color: #666 } /* Literal.Number.Hex */ .highlight .mi { color: #666 } /* Literal.Number.Integer */ .highlight .mo { color: #666 } /* Literal.Number.Oct */ .highlight .sa { color: #BA2121 } /* Literal.String.Affix */ .highlight .sb { color: #BA2121 } /* Literal.String.Backtick */ .highlight .sc { color: #BA2121 } /* Literal.String.Char */ .highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */ .highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */ .highlight .s2 { color: #BA2121 } /* Literal.String.Double */ .highlight .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */ .highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */ .highlight .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */ .highlight .sx { color: #008000 } /* Literal.String.Other */ .highlight .sr { color: #A45A77 } /* Literal.String.Regex */ .highlight .s1 { color: #BA2121 } /* Literal.String.Single */ .highlight .ss { color: #19177C } /* Literal.String.Symbol */ .highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #00F } /* Name.Function.Magic */ .highlight .vc { color: #19177C } /* Name.Variable.Class */ .highlight .vg { color: #19177C } /* Name.Variable.Global */ .highlight .vi { color: #19177C } /* Name.Variable.Instance */ .highlight .vm { color: #19177C } /* Name.Variable.Magic */ .highlight .il { color: #666 } /* Literal.Number.Integer.Long */</style> <style> @font-face { font-family: 'MonaspaceArgon'; src: url('/assets/fonts/MonaspaceArgon-Regular.woff2') format('woff2'); font-weight: 400; font-style: normal; } pre, code { font-family: 'MonaspaceArgon', ui-monospace, monospace; } </style> <p>A few weeks ago, I learned about the <code>removeprefix</code> method in Python. It lets you remove a specific prefix from the beginning of a string. For example, I can use the following code to remove <code>www.</code> from the beginning of a domain name:</p><div class="highlight"><pre><span></span><span class="s2">"www.jamesg.blog"</span><span class="o">.</span><span class="n">removeprefix</span><span class="p">(</span><span class="s2">"www."</span><span class="p">)</span> </pre></div> <p>If the string doesn’t contain the prefix, nothing happens; if the string does contain the prefix, the prefix is removed.</p><p><em>Note: If you are parsing URLs in Python, you should use a library like </em><a href="https://docs.python.org/3/library/urllib.parse.html" rel="noreferrer"><em>urllib.parse</em></a><em> to extract parts of a URL.</em></p><p>I did some digging and, via <a href="https://stackoverflow.com/questions/16891340/remove-a-prefix-from-a-string">a mention of the method in Stack Overflow</a>, I learned that Python 3.9 added support for methods for <a href="https://docs.python.org/3/whatsnew/3.9.html">removing prefixes and suffixes from strings</a>: <code>removeprefix</code> and <code>removesuffix</code>.</p><p>When I learned about <code>removeprefix</code>, I felt a little bit of joy. I have been using Python for years and had no idea about this method.</p><p>Instead of doing the trick to measure the length of a string I want to remove, and then removing that number of characters from the beginning of a string using indexing if the string <code>startswith</code> the string I want to remove, I now can use a single method: <code>removeprefix</code> (and <code>removesuffix</code> to do the same at the end of a string).</p><h2 id="addendum:-lstrip-and-rstrip">Addendum: lstrip and rstrip</h2><p>While the <code>lstrip()</code> and <code>rstrip()</code> methods, which remove either whitespace or specified characters from the start or end of a string, may sound like they do the same thing, they remove all instances of the specified characters. For example, if I use this code:</p><div class="highlight"><pre><span></span><span class="s2">"www.w.jamesg.blog"</span><span class="o">.</span><span class="n">lstrip</span><span class="p">(</span><span class="s2">"www."</span><span class="p">)</span> </pre></div> <p>The code returns:</p><pre><code>jamesg.blog</code></pre><p><code>lstrip()</code> has removed all <code>w</code> and <code>.</code> characters that would start the string.</p><p>I thought I would document this because for a while I wasn’t aware this was the behaviour of <code>lstrip</code> and <code>strip</code>.</p><script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a0f9ebd3aeafe718',t:'MTc4MjExNzM0Mw=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&amp;&amp;(document.onreadystatechange=e,c())}}}})();</script> <a class="tag" href="https://docs.python.org/3/library/urllib.parse.html">urllib.parse</a> <a class="tag" href="https://docs.python.org/3/whatsnew/3.9.html">removing prefixes and suffixes from strings</a> <a class="tag" href="https://stackoverflow.com/questions/16891340/remove-a-prefix-from-a-string">a mention of the method in Stack Overflow</a>