~hedy's blogroll - BlogFlock The blogroll listed on my website. https://home.hedy.dev/blogroll/ 2026-07-06T04:10:54.591Z BlogFlock Seirdy, erock, James' Coffee Blog, Sloum, Manuel Moreale RSS Feed, Protesilaos Stavrou: Master feed with all updates, Ploum.net, ~hedy, Baty.net Sunday, July 5, 2026 - Baty.net https://baty.net/journal/05Jul26/ 2026-07-05T11:25:22.000Z <figure><img src="https://baty.net/img/2026/20260705-olympia.webp" alt="Black and white photo of Olympia SM3 typewriter"><figcaption>Olympia SM3 (2016) - Graflex 4x5 Crown Graphic</figcaption></figure><div class="compact status"> <ul> <li><strong>STATUS</strong>: You're not going to believe what I did this morning</li> <li><strong>TODO</strong>: Stop doing the thing I did this morning</li> <li><strong>READING</strong>: &quot;Validation&quot;, by Caroline Fleck, PhD</li> <li><strong>LISTENING</strong>: Styx, Crystal Ball</li> </ul> </div> <hr /> <p>Ok, so here's what happened...</p> <p>...never mind, just know that I've moved the blog back into Eleventy from Ghost. It lasted a month this time. Felt longer.</p> <p><a href="mailto:jack@baty.net?subject=[Baty.net] Re: Sunday%2C%20July%205%2C%202026">✍️ Reply by email</a></p> IndieWebCamp Nürnberg 2026 - James' Coffee Blog https://jamesg.blog/2026/07/05/indiewebcamp-nurnberg-2026 2026-07-05T00:00:00.000Z <p><figure><picture><img alt="All of the participants of IndieWebCamp Nürnberg, lined up in three rows, one row behind the other. I am in the middle of the back row, wearing my green and grey microformats t-shirt. " loading="lazy" src="https://editor.jamesg.blog/content/images/2026/07/1000px-iwc-nbg-2026-10.jpg" style=" max-width: 130%;"/></picture><div class="alt"><label><input aria-label="Toggle image alt text on screen" type="checkbox"/>ALT</label><div class="content">All of the participants of IndieWebCamp Nürnberg, lined up in three rows, one row behind the other. I am in the middle of the back row, wearing my green and grey microformats t-shirt. </div></div></figure></p><p>Last weekend I attended <a href="https://indieweb.org/2026/Nuremberg">IndieWebCamp in Nürnberg, Germany</a>, hosted at the wonderful <a href="https://tollwerk.de/">Tollwerk</a> offices. The two-day event was part of the larger Nürnberg Digital Festival happening across the city. The IndieWebCamp was held primarily in English. Over 23 people attended, many from Germany and some from further afield (including myself!).</p><p>On the first day, we organised discussion sessions in the BarCamp style, in which new participants are encouraged to propose sessions first, followed by regular participants, and then we all agree on where and when during the day to hold each session. On the second day, we made web pages and shared them!</p><p>Indeed, being a two-day event, <a href="https://indieweb.org/IndieWebCamp" rel="noreferrer">IndieWebCamps</a> have room to balance both discussing topics that interest participants as well as creating things on our websites. We also welcome remote participants, and so, in addition to the ~23 attendees we had, there were several people joining sessions from Zoom (and even helping to take notes, which was and is greatly appreciated!).</p><p>I joined the event both as a participant and as something of a co-organiser, helping to ensure Zoom rooms were set up, helping to open Create Day, archiving notes on the wiki, and more. <a href="https://tantek.com/">Tantek</a> and <a href="https://jkphl.is/">Joschi</a> both led organising, with the <a href="https://tollwerk.de/">Tollwerk</a> team also helping in so many ways.</p><p>Throughout the day, <a href="https://www.maxhaesslein.de/" rel="noreferrer">Max</a> took pictures using a camera connected to a thermal printer. All the pictures were monochrome, which created a terrific effect. I have included some of these pictures throughout the post. Thank you Max for taking such great pictures!</p><h2 id="day-one:-discussions">Day One: Discussions</h2><p>I am always surprised and delighted at the variety of discussion topics that come up at IndieWebCamp events. I think the range of discussion topics is in large part because new participants are encouraged to share ideas first. This ensures that we don’t keep talking about the same topics between events.</p><p>This time, we discussed everything from how to welcome more new people to the indie web, calendar subscriptions on the web, beautiful web design, and whether or not the way we will consume websites will permanently change. <a href="https://indieweb.org/2026/Nuremberg/Schedule">Notes for all of these sessions are archived on the IndieWeb wiki</a> in case you would like to take a look at what we discussed.</p><p>Whenever I join a discussion, I like to try and take notes. This started at IndieWebCamp Brighton in 2024 when I realised how much I love being the note-taker. Every discussion needs at least one note-taker, and I’m happy to help (although the more people who take notes, the more we are able to capture, and the more likely the notes are to reflect all that was discussed). I think I helped with note-taking in every session I joined, which was fun.</p><p>Two sessions that stood out to me were “<a href="https://indieweb.org/2026/Nuremberg/blogchat" rel="noreferrer">Archiving live sessions / co-creating</a>” and “<a href="https://indieweb.org/2026/Nuremberg/thenewweb" rel="noreferrer">Will the way we consume websites permanently change?</a>”. The first session, led by <a href="https://thedriftinghealer.com" rel="noreferrer">Una</a>, was about how to create discussion on a website after a live session (i.e. a group event). It was fascinating to think about how the role artefacts (i.e. recording of sessions, summaries of sessions) play in building community. Our discussion led to digital gardens and knowledge graphs, which gave us plenty of points of inspiration.</p><p>The discussion about whether the way we consume websites will permanently change was a fascinating one. Facilitated by <a href="https://noracudazzo.com/">Nora</a>, we discussed the transformations currently happening on the web as a result of AI, the long-term viability of browsers, and more. This session encouraged the optimist in me. As Casey Newton said in the movie Tomorrowland “I get things are bad, but what are we doing to fix it?”</p><p>Starting with an assessment of where we are – a solid foundation from which to start our discussion – we spoke about the 700,000+ people who run sites on Neocities, the long-lived role of information design, the role of the web in government services, media diets, and more. We were then left with many questions, among them:</p><ul><li>How to convince artists to join the web?</li><li>"How do I talk to my friends on there [the web]?”</li><li>Maybe lurkers have a healthier relationship with consumption?</li></ul><p>The notes from the session include a note that “James doesn't have the words to convince someone without a pre-existing interest to start a website.” This reflected my realisation that while I have so many words to say on the web, I don’t think I have successfully encouraged someone to create a website in direct conversation who hasn’t already said something that would indicate an interest in the web.</p><p>Now that I write this, maybe this website has encouraged others to start websites, in which case maybe I do have the words! But I think the note speaks to a discomfort I have: I wish more people had websites, but communicating their value is tricky. Maybe the best thing I can do to advocate for the web is keep doing what I’m doing – writing, talking about websites passionately, making cool things on the web – and be there for anyone and everyone who sees potential in this medium as I do.</p><h2 id="day-two:-creating">Day Two: Creating</h2><p>The second day of an IndieWebCamp event is <a href="https://indieweb.org/Create_Day">Create Day</a>, in which participants are invited to work on their personal websites for the day. Toward the end of the day, everyone – both in-person and remote attendees – are invited to demo what they built on their website if they would like to share what they made.</p><p>At the beginning of Create Day, I stood up to share what the day is all about. Looking back, it amazes me the ease with which I was able to stand up in front of a room and introduce what Create Day is all about. I am bewildered by how anxious I feel at times in social situations and yet how I can stand up in front of a room and talk to over a dozen people with few notes. My confidence has certainly come a long way over the last few years; there are still many places for me to grow, too.</p><figure><picture><img alt="Me standing up in front of the room presenting what Create Day is all about." loading="lazy" src="https://editor.jamesg.blog/content/images/2026/07/IMG_4686-Large.jpeg" style=" max-width: 130%;"/></picture><div class="alt"><label><input aria-label="Toggle image alt text on screen" type="checkbox"/>ALT</label><div class="content">Me standing up in front of the room presenting what Create Day is all about.</div></div></figure><p>The <a href="https://indieweb.org/what_to_make_at_IndieWebCamp">“what to make at IndieWebCamp” page on the wiki</a>, authored by Tantek, was a good starting point for me to present what to do on Create Day. As someone who has attended an IndieWeb event before and tried to take on a big project, the points “start easy” and “prioritise joy” were particularly resonant. These points were mentioned by several participants as being their guide to the day as time passed, which was a delight to hear.</p><p>I had a few ideas in mind of what I wanted to do on Create Day. I made a new <a href="https://jamesg.blog/bookshelf">bookshelf</a> page as my first project. The last version of the page had not been updated in several years. I decided that rather than try to list all of the books I have on my shelves, I wanted the new page to encapsulate my current interests and include a few select recommendations across different genres. I am happy with the page I made.</p><figure><picture><img alt="Me, with long hair, smiling, sitting at a desk with my right hand on my laptop and looking directly into the camera." loading="lazy" src="https://editor.jamesg.blog/content/images/2026/07/IMG_4676-Large.jpeg" style=" max-width: 130%;"/></picture><div class="alt"><label><input aria-label="Toggle image alt text on screen" type="checkbox"/>ALT</label><div class="content">Me, with long hair, smiling, sitting at a desk with my right hand on my laptop and looking directly into the camera.</div></div></figure><p>I also made an <a href="https://jamesg.blog/indiewebcamp">IndieWebCamp category</a> on my blog and added posts explicitly about or written at IndieWebCamp events. This blog post will go in that category.</p><p>Having started with easier projects, I had finished in the first hour or so. By coincidence, something happened that would give me enough to work on for the rest of the day, and beyond. Tantek mentioned he had updated his “daylists” page, which lists the names of Spotify daylists that have been generated for him based on his music tastes. I didn’t see the changes in Artemis, my web reader, which led me to ask why this was the case.</p><p>This led to my working on two changes. First, <a href="https://jamesg.blog/2026/07/04/processing-feed-items-without-urls">Artemis can now process feed items that don’t have URLs</a>, which was at the root of the problem. Second, because Tantek updates his daylists page every few months and backdates the posts that are added to when the daylist appeared in his Spotify, I wouldn’t see many of the items because Artemis shows posts ordered by creation date. This led me to work on a (still-work-in-progress) feature that would display new items in a feed with a tag like “post title [2 days prev.]” to indicate that a post has been newly discovered but was published with a date equal to N days ago. This turned out to be a complex feature and so I am still working on the logic, but I made good progress during the event.</p><p>After several hours of making – and a wonderful salad lunch prepared by the Tollwerk team – we all came together for demos. It was delightful to see what everyone had made: new designs for a portfolio website, an interactive web page that lets you create a resonance signature based on your humming, improvements to photo grids on websites, and more. In total, we had ~17 demos, including demos presented by remote participants.</p><h2 id="heat-safety">Heat safety</h2><p>A few days before the event, myself, another event organiser, and the lead organiser for the IndieWebCamp Nürnberg event had a discussion about the extreme heat that was forecast for the event. This led to our creating a section on the event wiki page called “Heat Safety” which summarised the weather forecast (temperatures expected to range from 21C to 38C), the accommodations made by the venue, and general advice we had (bring a hat, suncream, sunglasses, etc.).</p><p>While the office where we had the event did not have air conditioning, the staff reported the temperature was relatively cool prior to the event. When the event happened, even with ~23 people in the office – which was incredibly spacious – the room remained at a manageable temperature. Thank you to Tollwerk for helping to ensure this was the case!</p><p>While this particular event was manageable in terms of temperature, I did note that we may want to re-think where we organise events in summer. The heatwave that happened could not have been predicted when the event was first scheduled months ago, but with an increased prevalence of heatwaves likely in summer, heat should definitely be something that event organisers, both in the IndieWeb community and in general, consider when scheduling events.</p><p>Admittedly, I was concerned about travelling somewhere that was 10C warmer than Scotland which, at the time, was experiencing the heatwave. I was already warm at home; going somewhere hotter felt daunting. I coped well in the heat in Nürnberg, avoiding the sunlight as much as I could at peak times, and taking other precautions to stay safe, but I did want to record how, even for someone who loves going to events, heat was a real concern.</p><p>On this note, a few years ago, I attended a Beyond Tellerrand event in Berlin in September. It was so warm the organiser moved the event to be over a month later the next year, to help avoid the same heat scenario for future events. This was the first thing that came to mind when I was voicing my concerns about organising events in summer; the IndieWeb community is far from alone in needing to consider accommodations for heat safety.</p><h2 id="reflections">Reflections</h2><p>IndieWebCamp events are among the highlights of my year. It is a delight to see people who make websites in person and to chat about all things that are on our minds. Because there were enough session ideas to have two event tracks, we all had to make choices about which sessions we attended. Thankfully, because notes are taken and sessions are recorded, we can all review the sessions we couldn’t attend afterward. I am planning to look through some of the notes in the coming days to both see what was discussed and see if any new ideas come to mind for things I can do on my website.</p><p>I am delighted by all the progress I made on both my website and Artemis, too. In particular, the logic <a href="https://jamesg.blog/2026/07/04/processing-feed-items-without-urls" rel="noreferrer">I wrote to process web feed entries without URLs</a> helped make Artemis significantly more robust, and allowed me to discover that a project I worked on a while ago that generated feeds whose entries did not have URLs was actually still working; it was just that Artemis couldn’t handle the feed because unique URLs were not generated.</p><p>The IndieWeb community lists all upcoming IndieWebCamp events on the <a href="https://events.indieweb.org/">IndieWeb Events</a> web page. We also have both in-person and online Homebrew Website Club events, which last ~90 minutes (depending on the meeting) where participants can discuss all things related to personal websites. I help host the Edinburgh in-person and Europe online meet-ups. If you’re interested in joining, you are more than welcome. Check the <a href="https://events.indieweb.org/">IndieWeb Events list</a> for a list of upcoming events, and don’t hesitate to <a href="https://jamesg.blog/email">email me</a> if you have questions.</p> <!--kg-card-begin: html--> <p><a class="u-syndication" href="https://news.indieweb.org/en">Also posted on IndieNews</a>.</p> <!--kg-card-end: html--><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:'a16500543f2a5e57',t:'MTc4MzI0MDE1OQ=='};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://events.indieweb.org/">IndieWeb Events</a> <a class="tag" href="https://events.indieweb.org/">IndieWeb Events list</a> <a class="tag" href="https://indieweb.org/2026/Nuremberg">IndieWebCamp in Nürnberg, Germany</a> <a class="tag" href="https://indieweb.org/2026/Nuremberg/Schedule">Notes for all of these sessions are archived on the IndieWeb wiki</a> <a class="tag" href="https://indieweb.org/2026/Nuremberg/blogchat">Archiving live sessions / co-creating</a> <a class="tag" href="https://indieweb.org/2026/Nuremberg/thenewweb">Will the way we consume websites permanently change?</a> <a class="tag" href="https://indieweb.org/Create_Day">Create Day</a> <a class="tag" href="https://indieweb.org/IndieWebCamp">IndieWebCamps</a> <a class="tag" href="https://indieweb.org/what_to_make_at_IndieWebCamp">“what to make at IndieWebCamp” page on the wiki</a> <a class="tag" href="https://jamesg.blog/2026/07/04/processing-feed-items-without-urls">Artemis can now process feed items that don’t have URLs</a> <a class="tag" href="https://jamesg.blog/2026/07/04/processing-feed-items-without-urls">I wrote to process web feed entries without URLs</a> <a class="tag" href="https://jamesg.blog/bookshelf">bookshelf</a> <a class="tag" href="https://jamesg.blog/email">email me</a> <a class="tag" href="https://jamesg.blog/indiewebcamp">IndieWebCamp category</a> <a class="tag" href="https://jkphl.is/">Joschi</a> <a class="tag" href="https://news.indieweb.org/en">Also posted on IndieNews</a> <a class="tag" href="https://noracudazzo.com/">Nora</a> <a class="tag" href="https://tantek.com/">Tantek</a> <a class="tag" href="https://thedriftinghealer.com">Una</a> <a class="tag" href="https://tollwerk.de/">Tollwerk</a> <a class="tag" href="https://www.maxhaesslein.de/">Max</a> Emacs beginner live stream with @linkarzu on 2026-07-05 20:00 Europe/Athens - Protesilaos Stavrou: Master feed with all updates https://protesilaos.com/codelog/2026-07-05-emacs-live-with-linkarzu/ 2026-07-05T00:00:00.000Z <p>[ The video will be recorded. ]</p> <p>I will do a live stream together with Christian Arzu, a NeoVim user, who is now trying out Emacs. In this meeting we will go over the basics. The idea is that I will do some handholding at this early stage to set Christian up with a basic configuration. We will also take any comments from the chat.</p> <p>For some background, read my comments on an article that Christian posted the other day about his expectations: <a href="https://protesilaos.com/codelog/2026-07-04-emacs-for-beginners-with-linkarzu/">https://protesilaos.com/codelog/2026-07-04-emacs-for-beginners-with-linkarzu/</a>. My article also includes commentary on some of the feedback Christian gets for his premium offerings.</p> Français: Je lis pour apprendre des nouveaux mots - Protesilaos Stavrou: Master feed with all updates https://protesilaos.com/french/2026-07-04-apprendre-nouveaux-mots/ 2026-07-04T00:00:00.000Z <p>J’écris pour pratiquer la langue et je lis pour apprendre de nouveaux mots. Maintenant c’est plus facile d’écrire une note peut-être philosophique parce que il y a plusieurs termes qui ont les mêmes entre grec, français, et anglais. Je peux parler aussi, mais ça va être un peu plus difficile, donc j’ai besoin des quelques secondes pour trouver les propres phrases.</p> <p>L’écriture est diffèrent. Beaucoup des expressions françaises et anglaises ont quasi-identiques. Et il y a plein des mots d’origine grec. Par exemple, quelques francophones savent «hétéroclite» et je fais des efforts pour introduire ce terme en anglais—ce dérive de les mots constitutives «hétéro-» (autres ou différents ou diverse) et «-clite» (inclination ou direction ou disposition).</p> <p>Chaque jour je lis l’édition française de France24. Aujourd’hui j’ai trouvé plusieurs mots inconnu dans cette article en sujet de <a href="https://www.france24.com/fr/plan%C3%A8te/20260704-apr%C3%A8s-canicules-et-malgr%C3%A9-hiver-pluvieux-s%C3%A9cheresse-s-installe-france-eau-changement-climatique">sécheresses</a>. Le reportage nous informons:</p> <blockquote> <p>Concrètement, la quasi-totalité de la France est donc invitée à restreindre sa consommation dans tous les domaines jugés “non essentiels” tels que les activités nautiques, l’arrosage des jardins ou des golfs, le lavage de voitures, etc.</p> </blockquote> <p>Ces phénomènes sont terribles. Nous avons les mêmes difficultés ici à Chypre. Pour l’instant cet été est un peu plus normal après deux ans de sécheresses brutales et des feux destructives. Oui il fait chaud pourtant il n’y a pas la canicule dangereuse.</p> <p>C’est toujours plus facile pendant les mois estivaux dans les montagnes. Les températures maximales ont ~5 degrés Celsius moins que les températures à basse altitude. Le nuit le température chez moi est environ 20 degrés Celsius. En plus, chez moi j’ai beaucoup des arbres et fleurs et il n’y a pas de béton autour de ma maison.</p> <p>L’essence est que c’est important de lire pour développer ma capacité de penser avec les phrases et expressions vraiment françaises.</p> Small wishes, II - James' Coffee Blog https://jamesg.blog/2026/07/04/small-wishes-ii 2026-07-04T00:00:00.000Z <blockquote><a href="https://jamesg.blog/2026/06/21/small-wishes" rel="noreferrer">June 21st, 2026</a> — After my coffee, a thought came to mind: I hope that one day I can see the countryside from a double-decker bus. It’s a small wish. It may never happen but I hold onto the thought any way.</blockquote><p>I stood at the bus terminal today thinking that it was only a few weeks ago I had wished to go on a double decker bus. Today, it happened: a most delightful surprise.</p><p>I arrived at the bus early enough that I had my pick of seats. I sat on the top deck in the front seat, where I had almost panoramic views of the countryside. Everything looked different. I was thrilled.</p><p>Toward the end of the journey, I saw two children jumping up and down with excitement. Their granny was with them. Getting on the bus, the family came to the top deck and sat in the three remaining chairs at the front, the granny sitting next to me. The granny mentioned how they were only going to the next stop, a few hundred meters away. The driver had stopped the bus until they were all in their seats, and knew exactly where to stop.</p><p>Looking forward with awe from the seats with the best view on the bus, the children were elated.</p><p>Toward the end of the journey, said in the kind of excited voice that a child can speak with such ease, I heard:</p><blockquote>“Granny, your house is like a double decker!”</blockquote><p>I smiled at this observation, and the tone in which it was delivered.</p><p>The family got off and continued their journey, the children delighted from their view of the world from a double decker. I stayed on for a few more stops, watching the world go by and thinking about how the small things really bring joy to the day.</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:'a1608abb79f2d8c0',t:'MTc4MzE5MzM5OQ=='};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/2026/06/21/small-wishes">June 21st, 2026</a> Deduplicating posts after URL changes in Artemis - James' Coffee Blog https://jamesg.blog/2026/07/04/artemis-url-deduplication 2026-07-04T00: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>Occasionally, sites that publish web feeds change the URL of a post that has just been published. This can be for several reasons. For example, I sometimes change post permalinks immediately after publishing because I notice a typo, or because the CMS I use calculated a default permalink that I don’t want to use and I forgot to change it.</p><p>Until now, <a href="https://artemis.jamesg.blog" rel="noreferrer">Artemis</a>, the calm web reader I maintain, has done nothing if a post has changed its permalink. Importantly, Artemis considers the post URL as a unique identifier. This means that if a post changes its URL, a new record for the post will be added to the database. Today, however, I have added logic to deduplicate posts where the title is the same but the URL has changed.</p><p>The way it works is as follows. When a user’s feed is computed, Artemis checks how many posts published by the same author have the same title per day. If two or more posts have the same title in a day, Artemis will show the most recent version of the post. All other instances of the post will be hidden. This logic is based on the assumption that the most recent URL should be correct.</p><p>With this logic, posts with these titles and permalinks would be merged:</p><ul><li><code>https://jamesg.blog/2026/01/01/testing</code> with the title "Test", published at 00:01.</li><li><code>https://jamesg.blog/2026/01/01/test</code> with the title "Test", published at 00:04.</li></ul><p>The final entry would be:</p><ul><li><code>https://jamesg.blog/2026/01/01/test</code> with the title "Test".</li></ul><p>This is because the permalink that ends in <code>/test</code> was published most recently.</p><p>There is a notable edge case for this implementation: if a site posts two blog posts in the same day with the same title, only the most recent permalink will be displayed. While writing this post, I took a detour to see if I should also compare the hashes of the post content to determine whether the posts are the same. Looking at the instance that inspired me to work on this change, the content on the page whose URL was later changed didn’t have the same hash after the URL was changed: the post content had also changed.</p><p>In addition, this implementation depends on the post title staying the same even if the URL changes, which means that if an author changes the title and URL of a post then there will still be two entries in a user’s feed <sup class="footnote-reference" id="f-1"><a href="https://jamesg.blog/longform-feed#1">1</a></sup>.</p><p>As I write, I am thinking about whether Artemis should visually show that a URL has been chosen as canonical. This would allow a user to see that two posts are likely to be the same, and then the user could manually check if they were interested. With that said, perhaps this would add too much clutter to the interface? I will have to think more about this.</p><p>In any case, the post deduplication feature is now live in Artemis. I hope this change will keep the reader interface cleaner in cases where authors change post URLs.</p> <div class="footnote-definition" id="1"><sup class="footnote-definition-label" id="f-2">1</sup> <p>Ideally, a site will add a redirect to the new page in any case, but this doesn’t always happen.</p> <a href="https://jamesg.blog/longform-feed#f-1">[↩]</a></div> <a class="tag" href="https://jamesg.blog/longform-feed#1">1</a> <a class="tag" href="https://jamesg.blog/longform-feed#f-1">[↩]</a> Andy Baio - Manuel Moreale RSS Feed https://manuelmoreale.com/@/page/kultngqain8ehb7u 2026-07-03T11:00:00.000Z <p>This week on the People and Blogs series we have an interview with Andy Baio, whose blog can be found at <a href="https://waxy.org/">waxy.org</a>.</p> <p>Tired of RSS? <a href="https://manuelmoreale.com/interview/andy-baio">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>Hi, my name’s Andy Baio. I’m a writer and coder living in Portland, Oregon. You might know me from my blog, <a href="http://Waxy.org">Waxy.org</a>, where I’ve written for 25 years about the internet. If you’ve never heard of it, I rounded up some of the highlights from <a href="https://waxy.org/2012/04/happy_10th_birthday_waxy/">my first decade</a> of blogging in 2012, and the <a href="https://waxy.org/2022/04/waxy-org-turns-20/">second decade</a> in 2022.</p> <p>You may also know me from some of my other projects? I ran the <a href="https://xoxofest.com/">XOXO festival</a> in Portland for 12 years from 2012 to 2024, launched (and relaunched) the events community <a href="http://Upcoming.org">Upcoming.org</a>, and I helped build <a href="https://www.kickstarter.com/">Kickstarter</a> as a long-time advisor and their first CTO.</p> <p>Along the way, I coined the term “<a href="https://waxy.org/2008/04/fanboy_supercuts_obsessive_video_montages/">supercut</a>,” produced a <a href="https://kindofbloop.com/">chiptune tribute</a> to Miles Davis’s Kind of Blue, and got threatened with lawsuits a bunch of times. (I did some <a href="https://waxy.org/about/">other stuff</a>, too.)</p> <p>These days, I’m mostly helping my wife Ami with her game design studio, <a href="https://pinktigergames.com/">Pink Tiger Games</a>. We’ve self-published seven conversational party games since 2017, with three more slated for later this year.</p> <h2>What's the story behind your blog?</h2> <p>Before I started Waxy.org, I mostly sent links via instant messenger to my friends who had blogs. I knew I was good at finding things online, and after the umpteenth friend told me to start my own blog, I finally did. I wanted a place of my own online, somewhere to experiment and write about weird corners of internet culture, online community, and copyright, as well as a sandbox for new experimental projects of my own.</p> <p>By the time I launched Waxy in April 2002, I felt like I was late to the blogging trend, which in hindsight, seems ridiculous. I was still pretty early, as it turns out. Within a year, I’d been interviewed by the New York Times and other major papers dozens of times for news stories I’d either broken or somehow found myself tangled up in.</p> <p>The name, Waxy.org, came from a Perl script I’d written the year before to search for available .com, .org, and .net domains using every dictionary word in the English language. (I also picked up Meaty.org, which I never ended up using, and Upcoming.org, which I did.) “Waxy” didn’t really mean anything, but I’d been using “waxpancake” as my alias for years so it seemed like a good fit.</p> <p>I added a linkblog, <a href="https://waxy.org/category/links/">Waxy Links</a>, to the sidebar about 18 months after launch, which became a good outlet for quick links that didn’t warrant full posts. I <a href="https://waxy.org/2008/04/waxyorg_redesigns/">redesigned</a> the site in 2008 with a cleaner design and better mobile support.</p> <p>After 14 years of blogging, I switched from Movable Type to WordPress in 2016, with a <a href="https://waxy.org/2016/11/redesigning-waxy-2016-edition/">new redesign</a> that I slowly improved in the years since. I recently added redesigned <a href="https://waxy.org/archives/">archives and search</a>, which I’m pretty happy with. </p> <p>It’s always under construction, a work in progress — like me, you, and the rest of the internet.</p> <h2>What does your creative process look like when it comes to blogging?</h2> <p>I used to do much more investigative journalism, but these days, Waxy is primarily a linkblog where I point to fun or interesting things I find online. Unless I stumble on a story too compelling to ignore, forcing me to pull the string and see where it leads.</p> <p>Those story ideas and links can come from anywhere. I’m a voracious consumer of information online, and I’ve always joked that Waxy is the natural byproduct of endlessly procrastinating from doing other things by looking at the internet. </p> <p>I subscribe to around 450 feeds in Inoreader, my RSS reader, and skim it all nearly every day. I follow another 1,000 or so people each on Bluesky and Mastodon, with custom lists for each so I don’t miss particular people. I’m in dozens of Discords, many with people sharing their work or pointing out good stuff they find online, and nearly 100 mostly-niche subreddits covering many of my interests. I use tools like <a href="https://sill.social/">Sill</a> and <a href="https://scour.ing/@waxpancake">Scour</a> to find signal in the noise, and even built a <a href="https://belong.io/">link aggregator</a> of my own that I used for years to find good links on Twitter, until Elon shut down the API.</p> <p>My frequency of posting has waned over the years, first cannibalized by social media and then by larger life and work stuff. I’ve recently found myself drawn back to it, posting more regularly, trying to wake those atrophied writing muscles. Even if I’ve slowed down, it’s hard to ever imagine stopping entirely.</p> <h2>Do you have an ideal creative environment? Also do you believe the physical space influences your creativity?</h2> <p>I used to be able to work from anywhere, typically a coffeehouse or library, and tune out the rest of the world on my laptop with a good pair of earbuds. </p> <p>As my eyesight’s worsened, I find that working on a large monitor is more of a necessity than a luxury for any serious length of time, especially if I’m coding.</p> <p>I also used to love working around others, but these days, I tend to like retreating to the quiet of my basement office. No music, no sound. Just a quiet hum of my computer and the sounds of my keyboard.</p> <h2>A question for the techie readers: can you run us through your tech stack?</h2> <p>I use WordPress with my own custom-written theme, using the Advanced Custom Fields plugin to handle all the special fields necessary for my linkblog. I use a custom bot to cross-post my links to Bluesky, and a plugin called Share on Mastodon to post things there. (I stopped automatically cross-posting to X/Twitter years ago, for obvious reasons.) Everything’s hosted on a DigitalOcean droplet along with a bunch of other side projects, with Cloudflare managing the domain and DNS.</p> <h2>Given your experience, if you were to start a blog today, would you do anything differently?</h2> <p>I would have started collecting email addresses from the very beginning. I’ve never really liked reading newsletters by email, and I read almost every newsletter I subscribe to through my feedreader, which gives me so much control over my attention. But I never considered that people would start to shift their attention away from the web, or that feedreaders would largely go away, so I never tried to build a mailing list for my own projects. </p> <p>The ability to directly reach the people who care most about your work, outside of the capricious nature of social media algorithms, is essential. It’s my one big regret, and I hope to change that soon.</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>My blog has never cost much to run, and never made much money. I used to have a dedicated server that cost $150/month, but these days, it’s running around $50/month on a shared instance with some other projects of mine.</p> <p>The visibility and reach from writing on Waxy opened a lot of doors for me, though. I met so many amazing creative people through blogging, and it gave me a platform for launching projects that I wouldn’t have had otherwise. I met most of my friends, directly or indirectly, through the writing I did on Waxy.org.</p> <p>I did run ads on my blog for a few years, experimenting with Google ads from 2004 to 2005 and, in 2006, joining as one of the first members of <a href="https://web.archive.org/web/20160530090829/http://decknetwork.net/">The Deck</a>, Jim Coudal’s pioneering unobtrusive, privacy-centric boutique ad network that helped support sites like Daring Fireball, <a href="http://Kottke.org">Kottke.org</a>, Ze Frank, The Morning News, A List Apart, and many others. It paid me a reliable $1,000/month for ten years, until shortly before it wound down in 2017. I haven’t made any direct income from my blog since then.</p> <p>I think anything that supports independent writers/bloggers, artists, or other creators on their own terms is a good thing, whether it’s through Kickstarter, Patreon, or more commonly, through paid subscription newsletters. I have major issues with Substack’s management, but I credit them for normalizing the idea of directly paying bloggers a recurring monthly fee. But please use Ghost or Buttondown instead.</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>Oh, god, too many to list. Off the top of my head, Marcin Wichary’s <a href="https://unsung.aresluna.org/">Unsung</a> is probably my favorite new blog, constantly updated with new insights about user interfaces and design. Nobody notices things the way that Marcin notices things.</p> <p>Matt Muir’s <a href="https://webcurios.co.uk/">Web Curios</a> is like a month’s worth of good links crammed into a single post every Friday. I don’t know how he’s done it so well for so long.</p> <p>Depths of Wikipedia’s Annie Rauwerda isn’t a traditional blogger, but spreads her curatorial eye between two <a href="https://bsky.app/profile/annierau.bsky.social">Bluesky</a> <a href="https://bsky.app/profile/depthsofwikipedia.bsky.social">accounts</a>, two <a href="https://www.instagram.com/depthsofwikipedia">Instagram</a> <a href="https://www.instagram.com/annierau/">accounts</a>, <a href="https://www.tiktok.com/@depthsofwikipedia/">TikTok</a>, a <a href="https://lotsoflinks.substack.com/">newsletter</a>, a touring <a href="https://www.depthsofwiki.com/">live stage show</a>, and a <a href="https://annierau.com/">very good personal website</a>. She’s just so funny and weird and good. I wish she had an RSS feed that combined it all. Maybe I’ll make one for her.</p> <p>I think David Friedman’s <a href="https://www.ironicsans.com/">Ironic Sans</a> is incredibly underrated, moving from a traditional blog to more of a newsletter format, with weird little side projects and games along the way. He’s been continuously great for 20 years.</p> <p>I’d love to see <a href="https://kottke.org/">Jason Kottke</a> interviewed. More than anyone I can think of, he’s carved out a Kottke-shaped hole for himself on the web, growing it into a sustainable living through direct reader support over nearly 30 years. Even now, he continues to refine and adapt and evolve his site in surprising ways.</p> <h2>Final question: is there anything you want to share with us?</h2> <p>The last project I worked on was the <a href="https://waxy.org/2026/04/launching-a-permanent-archive-for-xoxo/">permanent archive for XOXO</a> that launched in April, collecting everything we did related to the festival. The site was a huge undertaking, bringing together every lineup, schedule, recap video, conference talk, and standalone website that we ever made into a single permanent archive, filled with little photos and ephemera from the festival.</p> <p><a href="https://xoxofest.com/">XOXO</a> was a huge part of my life for 12 years, easily the most creatively rewarding and emotionally exhausting work of my career, and I’m really proud of how the archive came out. At the very least, go poke through the video archives. The <a href="https://xoxofest.com/videos/featured/">featured</a> tag highlights some of our favorites, like Cabel Sasser’s <a href="https://xoxofest.com/2024/videos/cabel-sasser/">wonderful talk</a> from our final year.</p> <hr> <h3>Keep exploring</h3> <p>Now that you're done reading the interview, <a href='https://waxy.org/'>go check the blog</a> and <a href='https://waxy.org/feed/'>subscribe to the RSS feed</a>.</p> <p>If you're looking for more content, go read one of the previous <a href='https://peopleandblogs.com' target='_blank'>148 interviews</a>.</p> <p>People and Blogs is possible because kind people support it.</p> Thursday, July 02, 2026 - Baty.net 6a464d1a09a7500001323a6d 2026-07-02T18:04:09.000Z <img src="https://baty.net/content/images/2026/07/20260627-0010.webp" alt="Thursday, July 02, 2026"><p>I&apos;m so back in Emacs it isn&apos;t even funny. Also Linux. <a href="https://danklinux.com" rel="noreferrer">Dank Linux</a>, to be precise.</p><p><a href="https://baty.net/posts/2026/07/toy-story-5-2026/" rel="noreferrer">Toy Story 5</a> was pretty fun.</p><p>I still can&apos;t focus long enough to write more than a few sentences at a time. I&apos;d consider it a debilitating problem, if I actually had more and useful things to write about. It&apos;s only a nuisance, honestly.</p> Toy Story 5 (2026) ★★★★ - Baty.net 6a46319e09a7500001323a51 2026-07-02T09:44:35.000Z <img src="https://baty.net/content/images/2026/07/toy-story-5--2026--card.jpeg" alt="Toy Story 5 (2026) &#x2605;&#x2605;&#x2605;&#x2605;"><p>So much fun. Pixar&apos;s still got it.</p><p>I went to see it with my daughter, who&apos;s 37 now and still insists that we see every new Pixar movie in theaters. She was so into it. When Bonnie&apos;s friends weren&apos;t being nice to her, Jess leaned over and said, &quot;I&apos;m so mad at those girls!&quot; And when Bonnie was sad, she said, &quot;I just want to hold her :(&quot; Otherwise, she sat there and laughed the whole time. It was the sweetest thing ever.</p> Emacs: write with input method (e.g. French) and Jinx for spelling - Protesilaos Stavrou: Master feed with all updates https://protesilaos.com/codelog/2026-07-02-emacs-french-input-method-jinx-spell/ 2026-07-02T00:00:00.000Z <p>In this video demonstration I show the tools I use to write in French using Emacs. One is the built-in framework for input methods, which allows us to compose characters to express the full range of the language we are typing in (e.g. French or Greek). The other is a spell-checking package called <code class="language-plaintext highlighter-rouge">jinx</code>, which is developed by Daniel Mendler.</p> <p>Below is the code I showed in the video:</p> <div class="language-elisp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">(</span><span class="nb">use-package</span> <span class="nv">emacs</span> <span class="ss">:demand</span> <span class="no">t</span> <span class="ss">:bind</span> <span class="p">(</span> <span class="ss">:map</span> <span class="nv">global-map</span> <span class="c1">;; The `toggle-input-method' sets the latest selected input</span> <span class="c1">;; method, or the one defined in `default-input-method'. Once an</span> <span class="c1">;; input method is set, `toggle-input-method' will switch back to</span> <span class="c1">;; the standard Emacs input.</span> <span class="p">(</span><span class="s">"&lt;f2&gt;"</span> <span class="o">.</span> <span class="nv">toggle-input-method</span><span class="p">))</span> <span class="ss">:config</span> <span class="c1">;; Call the command `describe-input-method' to get a description of</span> <span class="c1">;; what the given input method supports in terms of key sequences as</span> <span class="c1">;; well as the key layout it has.</span> <span class="p">(</span><span class="k">setq</span> <span class="nv">default-input-method</span> <span class="s">"french-postfix"</span><span class="p">))</span> <span class="c1">;; You need to have libenchant available on your system. For example,</span> <span class="c1">;; Debian provides the package `libenchant-2-dev'.</span> <span class="p">(</span><span class="nb">use-package</span> <span class="nv">jinx</span> <span class="ss">:ensure</span> <span class="no">t</span> <span class="ss">:demand</span> <span class="no">t</span> <span class="ss">:bind</span> <span class="p">(</span> <span class="ss">:map</span> <span class="nv">global-map</span> <span class="p">(</span><span class="s">"M-$"</span> <span class="o">.</span> <span class="nv">jinx-correct</span><span class="p">)</span> <span class="c1">; or bind `jinx-correct-all'</span> <span class="p">(</span><span class="s">"C-M-$"</span> <span class="o">.</span> <span class="nv">jinx-languages</span><span class="p">))</span> <span class="ss">:config</span> <span class="c1">;; Here you can specify a string with space-separated dictionaries.</span> <span class="c1">;; I install the aspell dictionaries, such as the Debian package</span> <span class="c1">;; `aspell-fr' for French and `aspell-el' for Greek (Éllinika).</span> <span class="c1">;; With `aspell' installed on the system, do `aspell dicts' on the</span> <span class="c1">;; command-line to get a list of available dictionaries.</span> <span class="p">(</span><span class="k">setq</span> <span class="nv">jinx-languages</span> <span class="s">"en fr el es"</span><span class="p">)</span> <span class="c1">;; I want to have Jinx in programming modes but I do not want it to</span> <span class="c1">;; check anything that is a comment or string, because then it</span> <span class="c1">;; underlines too many things which are not useful. We can do the</span> <span class="c1">;; same for other modes, though I think this is fine.</span> <span class="p">(</span><span class="k">setq</span> <span class="nv">jinx-exclude-faces</span> <span class="o">'</span><span class="p">((</span><span class="nv">prog-mode</span> <span class="nv">font-lock-comment-face</span> <span class="nv">font-lock-string-face</span><span class="p">)))</span> <span class="p">(</span><span class="nv">global-jinx-mode</span> <span class="mi">1</span><span class="p">))</span> </code></pre></div></div> The AI Compass - Manuel Moreale RSS Feed https://manuelmoreale.com/@/page/ymmnjwrxy8vcjyaq 2026-07-01T16:10:00.000Z <p>This morning <a href="https://overkill.wtf/">Mr Overkill</a> sent me the link to the <a href="https://bambamramfan.github.io/ai-compass/">AI Compass</a> test, which I guess is a spin on the famous <a href="https://www.politicalcompass.org/">political compass</a> test. It’s a bunch of questions—27? 29? 15? Who knows!—and at the end you get your location on the map and your archetype, from a list of 30. It’s harmless fun, and I found the results so far to be fairly accurate. If you end up taking the quiz, let me know if your result was accurate. Or even better, blog about it!</p> <figure class="media-container" data-template="with"><div class="media-content"><img class="media-img" loading="lazy" src="https://manuelmoreale.com/media/pages/thoughts/the-ai-compass/a6425fe63e-1782922335/aiquiz.jpg" style="aspect-ratio:1276 / 888"></div></figure> <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> Français: laissez tomber - Protesilaos Stavrou: Master feed with all updates https://protesilaos.com/french/2026-07-01-laissez-tomber/ 2026-07-01T00:00:00.000Z <p>C’est difficile d’écrire dans une lange étrangère et de publier tes résultats. Tout les fautes sont recorder. Peut-être les gens qui lissent tes articles ne savaient pas tes autres publications, donc il peuvent former des opinions défavorable concernant la totalité de ton travail.</p> <p>Pour moi ceci n’est pas un problème. J’ai laissé tomber l’idée que ma confidence et respect de soi ça dépend aux opinions des autres personnes. Je fais comme je veux sans espoirs et, alors, sans obstacles. Voici un petit jeu textuel. Si je fais des erreurs, il n’y a rien catastrophique qui va passer.</p> <p>L’attitude de laissez tomber est pratique en général. C’est énergivore (j’ai lu «énergivore» hier et je m’ai dis «voila, un très beau mot grec!») d’espérer la performance impeccable sur tous les sujets. Ceux qui ont cette attente n’ont pas la vitalité égale pour tous ces intérêts.</p> <p>Donc c’est une question de contrôler d’énergie chaque jour. Tu ne peux pas transférer d’énergie au lendemain et, en plus, tu ne peux pas s’endetter avec l’énergie de futur. Tu as seulement la capacité d’aujourd’hui et ta vie va déterminer si ça est beaucoup ou pas chaque fois. La qualité définitif de le maître est efficacité.</p> <p>Je donnes mon attention individu en mas responsabilités et pour les restes j’opérais dans le mode de laissez tomber. Et comme ça j’ai toujours l’enthousiasme pour mes intérêts.</p> Shifting the attention towards community - Protesilaos Stavrou: Master feed with all updates https://protesilaos.com/commentary/2026-06-30-shifting-attention-towards-community/ 2026-06-30T00:00:00.000Z <p>The following is an entry from my journal. An entry from my journal. I comment at length on two articles, one about incels and the other about a scientist, to make a general point on the centrality of community.</p> <hr /> <p>Earlier today I read two articles:</p> <ul> <li><a href="https://unherd.com/2026/06/do-violent-incels-dream-of-orgies-in-the-sky/">Do violent incels dream of orgies in the sky?</a> by Valerie Stivers for <em>Unherd</em>.</li> <li><a href="https://psyche.co/portraits/why-the-wolverine-nudged-out-god-in-one-biologists-cosmology">The wolverine gospel</a> by Jeff Wheelwright for <em>Psyche</em>.</li> </ul> <p>Both articles tell us something about the human condition. Each provides insight into different facets of it. In the first article, Valerie reports on an incel ideologue who produced a manifesto for political change and acted out of it in terrorist fashion. The manifesto incorporates thoughts that are prevalent online, while making the metapoint of what can happen when someone has means but no purpose in life. Valerie notes:</p> <blockquote> <p>That such a philosophy [of consumerism/materialism] serves humans poorly is easily visible. The manifesto uses a dehumanizing terminology of “females” and “copulation”; elides the difference between copulation and love; assumes marriage is a mutually hostile transaction for individual benefit; and mostly lacks concern that, in its preferred future state of affairs, most women would be married against their wishes. More frightening is that all the underlying — and essentially Christian — ideals that humanized previous materialist systems and made them aspire to nobility and justice are just … missing for the incels. Moral relativism, and its corresponding ideology of individualist self-pleasure, have been espoused for generations, but it’s never previously been tried without underpinnings of some kind of vestigial morality. Hatfield — and we might here genuinely say through no fault of his own — was trying it.</p> </blockquote> <p>I will elaborate on this story further below. In the second article, Jeff presents the deeds of a scientist, named Jeff Copeland, who studies wolverines. Beyond the details about those animals and their surrounding nature, this article teaches us how humans respond to awe and how they may then think of their place in the world:</p> <blockquote> <p>I came to realize that the inevitability of a higher power was not something I came upon independently, rather it was something given to me by my mother, by the church, among others. I never experienced the comfort it was supposed to provide and its claim to hold ALL the answers rang hollow. As I was introduced to what science provided – information derived through a very specific process called the scientific method – I became engrossed by the objectivity of the process. The results were always open for debate but never tied to the supernatural. The answers science provided were testable and repeatable, and I felt I had found my place.</p> </blockquote> <p>Valerie hints at Christianity as a common good in what may be a boutique view of history, while Jeff presents Jeff Copeland as a person who thinks of atheistic science, the core expression of a method of inquiry, as the midpoint of community. To me, the modalities do not matter, so long as people come together in a spirit of shared belonging. Couched in those terms, truth does not factor in: even a completely made up story is fine if it gives us the impetus to be together and, as such, the best imagined stories are those that empower us to coexist over time. When we partake in team games, for example, we do it for the fun of the moment and to strengthen our social bonds, not because we have carefully investigated all the attendant propositions and acted out in a purely rational way.</p> <p>The “I” finds fulfillment in the “we” when the “me” goes through the “us”. I do not know how it feels to be an incel. In recent years I became aware of the phenomenon of porn addiction after talking with people who described their experiences. I was then informed how most Internet traffic is related to pornography. This does not surprise me, given that even your average Hollywood production is pornographic to varying degrees. This is a culture that treats people as cogs in a machine so it will naturally also see them as meat in other ways. Because I cannot relate to those men’s lived experiences, I refrain from passing judgement. Though what I learnt about this manifesto does not inspire to read further.</p> <p>While I disagree with the points of the manifesto that are shared in the linked article, I think Valerie’s criticism stands on shaky ground. She effectively dismisses that man’s thoughts as one big cope. The problem with this approach is that literally everything people do can be seen through this lens, even for those who are conventionally super successfully. Pick a rich, popular, and handsome man, for example, of the sort incels obsess over: you can argue that he boasts about his alpha status as a way of coping with the fact that he is not confident enough to live a minimalist, spiritual life in seclusion. An alpha, after all, is entirely dependent on the views of others qua alpha: a function of opinion. Now you may object to that argument on the grounds that “nobody cares about such an alternative lifestyle” though this is merely an appeal to convention. I can go on with such examples but will not belabour the point: “coping” is not a good descriptive tool. Same for “projecting”, by the way. You should try harder.</p> <p>The fact of the matter is that increasingly more people are feeling disconnected from the world. There is a shrinking sense of community because the historical milieux of communitarian experience are shrinking. This is especially true in cities. You live in an apartment that you pay rent for, as does everyone around you. Tenants come and go, so there is no sense of continuity. Unlike the slow-paced village life, you do not know the entire family tree of your neighbour and thus cannot know whether to trust them or not. Same for them vis-à-vis you. If you say “hello” to people in your neighbourhood, they look at you suspiciously. The starting point is one of barriers to entry: a stranger among strangers. By the time you manage to create a sense of neighbourliness, it is time for you or them to move to another apartment. The rootlessness persists and the concomitant feeling of emptiness becomes more pervasive.</p> <p>I hear more about male incels but would not be surprised if related insecurites are running rampant among females as well. They are, after all, expected to be beautiful at all times and thus become prime targets of every campaign that induces and then exploits insecurity. But I will not speculate because I have not been told enough.</p> <p>The more I read about these phenomena, however, the more sceptical I become of pop culture notions of evolutionary psychology. Humans are complex animals with multilayered patterns of behaviour yet the relevant talk reduces us to simple automata. If we do something other than what our putative “biology” demands, then we must be hiding something or, again, “coping”. The actual scientific study of humans is very tricky because it cannot be done in vitro: the subject responds to the experiments, while the experiments themselves are necessarily construing a relatively simple scenario that conditions the patient accordingly to become more mechanistic. Furthermore, the business of scientific publishing is such that it engenders incentives for what effectively is a glorified popularity contest (high impact factor journals, judging performance by the number of publications, et cetera). We still want science, but have to have the necessary maturity and cautiousness of the scientific thinker to not jump to sweeping generalisations. This is where we do not benefit from infusing teneous findings with conventional tokens of success, for we then only vindicate the categories we have already assumed as worthwhile.</p> <p>Which brings me to the second article about Jeff Copeland and the wolverines. Though I am not religious myself, it is a mistake to think that theology, which is a branch of philosophy, does not involve debates: the “-logy” suffix (from <em>logos</em>, as in speech, among many others) is part of the term, after all. Do not conflate theology with any given dogma, for they have different target audiences. Theology is for a select few, while the dogma distills precepts that are practical and on the balance benign for a given social whole. Dogmas have to be impervious to discussion so that they compel people into action that is effectively pro-social, much like how a parent sometimes needs to be inflexible towards their young child in pursuit of a greater good.</p> <p>At the heart of religion is hierarchy: individuals are not free to do whatever they want and must instead submit to relevant authorities. Religion incorporates a theology but is not limited to it. It also has myths, rituals, festivals, ideas about everyday affairs, and a clear framework about how social life should unfold. In short, religion is a complete system of interpersonal relations and social reproduction. Most people will benefit from it because it gives them a clear role in life while they themselves lack the means, in terms of intellectual accumen and emotional stability, to find such a role on their own without causing immense harm in the process.</p> <p>I am not religious because nature endowed me with the intellect and character of the philosopher. I understand, nonetheless, that individuals need guidance at all times and society cannot be optimised around someone like me. I necessarily occupy the margins.</p> <p>The Western world leans heavily on tokenistic religiosity: it appeals to the divine, it employs its symbols and imagery, it opportunistically commits to rituals and blithely synthesises different spiritual or philosophical traditions, yet is fundamentally non-religious owning to its anti-communitarian quotidian dynamics. The moment the common good, god or whatever it may be, is reduced to a personal affair along the lines of self-help doctrine, it becomes ineffective from the point of social organisation, as it undoes the essence of religiosity: hierarchy. Indeed, the very word means “holy/priest” (ιέρ-) and “order” or “structure” or “rule” (αρχή). Only when we all exalt something as sacrosanct, and only after we fasten our lives around it, do we have religion.</p> <p>What religion claims about the divine is secondary to the primary function of collective integrity. The average Christian, for example, cannot argue at length about John’s «εν αρχή ην ο λόγος» (“in the beginning was the word”). They do not need to: that is a topic for philosophers. As such, when someone says that they are a Christian because they read the New Testament and think it holds the truth, I say they are doing it wrong: be religious for the sake of the community, and have theological discussions with theologians, but understand that the latter does not give you the former. Philosophy is a lonely endeavour because few people have the patience and temperance for it. Once you admit that you are being philosophical in your disposition, you accept the attendant loneliness.</p> <p>And just to be clear on what I mean by “loneliness”: you cannot walk into the neighbourhood or village and just share with others your philosophical thoughts. The residents are not interested and cannot even follow you all the way. The requirement for sustained attention alone is simply too high a barrier. You literally see patterns in the world that are invisible to them. The vast majority of your social experiences will therefore come at the expense of this dominant side of yours (e.g. sitting at the Christmas table while accepting that the topic will change every couple of minutes).</p> <p>Community is the greatest value. Everything we do culminates in finding others. Some of the finest thinkers of all time have contributed to religious thought in one way or another. Science has always been around, yet those sages understood that there is knowledge to be discerned beyond the particularities of phenomena. The greatest among them even realised that there is more value to be had in myths than facts, since a captivating story forever serves as a platform for discussion among members of the community that have different levels of skill (e.g. the grandparent and the grandchild, the hierarch and the peasant). Plus, they recognised something that our world is increasingly lacking: people need a sense of belonging at all costs, not truth at all costs. They do not have it organically anymore as part of their milieu, so they seek belonging in increasingly pernicious subcultures.</p> <p>Jeff Copeland discovered community in science. In studying wolverines, he did not reach “the truth”. No. That is what scientists think they are after because they still have much to learn. He only found his place in the world and thrived because of it. Yes, there is a place for such people outside the confines of religion. They are the exceptions though. Your average person will not have a lifelong fascination about a field of scientific inquiry, even if they are working in the field because of other considerations such as a stable career and a prestigious position. What those people need is community: to give them boundaries, set them on a path, hold them accountable, and inspire them to tend to needs beyond their own personhood.</p> <p>The moral of the story for men who identify as incels and for everyone else is to turn their attention outward. Inwardness breeds discontent as it cannot create a sense of awe: it cannot find anything greater than itself. Instead of lamenting their condition, of seeking community through shared victimhood, they can strive to make stuff happen by proceeding through initiative: to build things, to create projects that they maintain long-term, to contribute to the greater whole, without feeling that they are entitled to anything. Communities occur naturally around the artefacts we set up, while men are good at clearing the land, as it were, upon which safe spaces may be established.</p> Wonders of Web Weaving, Episode 8 - James' Coffee Blog https://jamesg.blog/2026/06/30/www-8 2026-06-30T00:00:00.000Z <p><a href="https://web-weaving.jamesg.blog/8" rel="noreferrer">The eighth episode of Wonders of Web Weaving is out</a>:</p><blockquote>In Episode 8, I chat with <a href="https://brennan.day" rel="noreferrer">Brennan</a>, the author of <a href="https://brennan.day" rel="noreferrer">brennan.day</a>. We talk about, among other things, writing routines, building community in the indie web, "start here" pages on personal websites, and more.</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 also 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:'a13f17e0ea7c9a79',t:'MTc4Mjg0MjY2NQ=='};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://brennan.day">Brennan</a> <a class="tag" href="https://brennan.day">brennan.day</a> <a class="tag" href="https://web-weaving.jamesg.blog/8">The eighth episode of Wonders of Web Weaving is out</a> <a class="tag" href="https://web-weaving.jamesg.blog/subscribe/">Wonders of Web Weaving also has an RSS feed</a> Sunday, June 28, 2026 - Baty.net 6a41051deead6b000185ba14 2026-06-29T09:20:39.000Z <img src="https://baty.net/content/images/2026/06/20260628-roofs.webp" alt="Sunday, June 28, 2026"><p>This weekend involved a lot of time away from the computer. This is healthy and fine, but I&apos;m looking forward to stagnating at my desk for the next couple of days.</p><hr><p>There&apos;s yet another internet kerfluffle happening around yet another company whose products I use. It&apos;s so disappointing and exhausting. I&apos;m not shopping around yet because I don&apos;t like the alternatives much. Besides, being too quick to judge and react to things like this is part of why the world sucks now. I&apos;m mad at everyone for piling on, and I&apos;m mad at the company for giving us a reason to. Could more people just stop being terrible, please?</p> Books: January to June, 2026 - Manuel Moreale RSS Feed https://manuelmoreale.com/@/page/anypydlfhpjr5dh0 2026-06-29T04:55:00.000Z <p>I stopped tracking books using apps or services, even though there are good ones out there. I have two little shelves in my bedroom, on the left I put books I want to read, on the right the ones I have read. The plan was to empty the one on the right halfway through the year and post a picture here on the site to remember what I have read. This is that picture, and those are the books I have read so far in 2026.</p> <figure class="media-container" data-template="with"><div class="media-content"><img class="media-img" loading="lazy" src="https://manuelmoreale.com/media/pages/thoughts/books-january-to-june-2026/045abad747-1782708883/books.jpg" style="aspect-ratio:1500 / 2000"></div><figcaption>All the 28 books I have read, in the order I read them</figcaption></figure> <p>A lot of Terzani, a lot of stories about death and suffering, about misery and tough times, but also a lot of stories about nature and mountains. The fiction-to-non-fiction ratio is probably 3:1, which is unusual for me, considering I read non-fiction almost exclusively for most of my life, but that’s fine.</p> <p>Look forward to fill up the shelf again and post a second picture here on the site somewhere in late December.</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> 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> Emacs: fontaine version 3.1.0 - Protesilaos Stavrou: Master feed with all updates https://protesilaos.com/codelog/2026-06-29-emacs-fontaine-3-1-0/ 2026-06-29T00:00:00.000Z <p>Fontaine allows the user to define detailed font configurations and set them on demand. For example, one can have a <code class="language-plaintext highlighter-rouge">regular-editing</code> preset and another for <code class="language-plaintext highlighter-rouge">presentation-mode</code> (these are arbitrary, user-defined symbols): the former uses small fonts which are optimised for writing, while the latter applies typefaces that are pleasant to read at comfortable point sizes.</p> <ul> <li>Package name (GNU ELPA): <code class="language-plaintext highlighter-rouge">fontaine</code></li> <li>Official manual: <a href="https://protesilaos.com/emacs/fontaine">https://protesilaos.com/emacs/fontaine</a></li> <li>Change log: <a href="https://protesilaos.com/emacs/fontaine-changelog">https://protesilaos.com/emacs/fontaine-changelog</a></li> <li>Git repositories: <ul> <li>GitHub: <a href="https://github.com/protesilaos/fontaine">https://github.com/protesilaos/fontaine</a></li> <li>GitLab: <a href="https://gitlab.com/protesilaos/fontaine">https://gitlab.com/protesilaos/fontaine</a></li> </ul> </li> <li>Backronym: Fonts, Ornaments, and Neat Typography Are Irrelevant in Non-graphical Emacs.</li> </ul> <p>Below are the release notes.</p> <hr /> <h2>Version 3.1.0 on 2026-06-29</h2> <p>This is a small release that includes internal refinements as well as two user-facing changes:</p> <ol> <li> <p>The user option <code class="language-plaintext highlighter-rouge">fontaine-presets</code> accepts an optional <code class="language-plaintext highlighter-rouge">:line-spacing</code> entry, which corresponds to the <code class="language-plaintext highlighter-rouge">line-spacing</code> variable. As of Emacs version 31, <code class="language-plaintext highlighter-rouge">line-spacing</code> can be bound to a cons cell to set the space above and below. Fontaine now handles this as intended.</p> </li> <li> <p>By default, changing the font size has the effect of resizing the frame. This is because of the original value of the variable <code class="language-plaintext highlighter-rouge">frame-inhibit-implied-resize</code>. Fontaine is now designed to always inhibit frame resizing, regardless of <code class="language-plaintext highlighter-rouge">frame-inhibit-implied-resize</code>.</p> </li> </ol> 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>