~hedy's blogroll - BlogFlock The blogroll listed on my website. https://home.hedy.dev/blogroll/ 2026-03-06T06:16:42.116Z BlogFlock Protesilaos Stavrou: Master feed with all updates, Seirdy, ~hedy, erock, James' Coffee Blog, Manuel Moreale RSS Feed, Sloum, Ploum.net, Baty.net Take two - James' Coffee Blog https://jamesg.blog/2026/03/05/take-two/ 2026-03-05T14:17:32.000Z <p>Trafalgar Square is a special place. The architecture and views are breathtaking. The National Gallery, the church of St. Martins in the Fields, Canada House, and more, all surround the Square. From the right place you can look down Whitehall and see Big Ben.</p><p>In the heart of the Square is the National Gallery, a huge, Neoclassical building. I have visited the gallery a few times and only last weekend, on my most recent visit, did I start to feel oriented in the gallery. I love that feeling of getting lost in an art gallery; of wandering around and exploring and building a map of where things are. I also love the feeling of looking back and realising it is getting easier to find your way because you have visited a place a few times before. </p><p>I studied the architecture of the new Sainsbury Wing in the V&amp;A course I did last year. [1]</p><p>Visiting now, following my studies, I came to see the building. with a new perspective. My first perspective is as it always is when I see beautiful architecture: <em>wow</em>. Then I thought “I studied the new building!” I started to appreciate the architecture more.</p><p>I noticed the columns that I had until then only studied on the screen. I find myself looking at columns in architecture more. I now know the difference between an Ionic and Corinthian column; learning about architecture feels like learning languages of design.</p><hr/><p>Inside the gallery, I noticed a few paintings I had seen before only on a computer screen. <em>That’s Hay Wain by John Constable!</em> I thought with excitement as I noticed the painting. The gallery is also home to Turner’s <a href="https://en.wikipedia.org/wiki/Rain,_Steam_and_Speed_%E2%80%93_The_Great_Western_Railway">Rain, Steam, and Speed</a>, a painting I first <a href="https://tracydurnell.com/2026/01/07/digital-aura-source-of-truth/">learned about through a blog post</a>. I studied the painting with great excitement. <em>What can I see that I don’t remember from looking at it first?</em> Many details stood out: the bridge feels darker in the real painting; there is a person in a boat in the bottom left of the image. The boat is tiny in comparison to the scale of the bridges.</p><p>I went to the National Gallery with new perspectives: of architecture, of seeing paintings I had only until then seen on a computer screen.</p><p>When I visited the Rembrandt room I said to myself <em>I thought I knew Rembrandt’s work.</em> I had seen paintings by him before, understood that he used dark backgrounds to highlight the subject of the painting. But I knew so little: of Rembrandt’s difficult life, of his changing artistic style over the years, of how expressions were his subject.</p><p>On reflection, studying a work of art involves a lot of “take twos”: of looking and looking again to gain a better understanding of a painting, either in one sitting (looking around a work and coming back to different features) or across multiple sittings. Impressions of art change with time, too: with knowledge of the artist, the time period in which the work was painted, growing knowledge of how others painted similar subject matters, my own new experiences since I last saw the painting, and the context in which a painting is seen (location, digital vs. physical).</p><p>As I learn more, I know more of what to look out for in a work of art. I am learning to distinguish details that are significant in painting: how colour is used, perspective, theme, brush-stroke, symbols. I recently learned that anchors are the symbol of hope in some paintings.</p><p>I will soon be starting my first art history block in school where I’ll be learning how to use a visual analysis toolkit to analyse a painting. I am excited to learn and apply what I learn when I visit galleries in the future.</p><p>In a lecture this week we were asked to say what we saw in a painting as a light introduction to visual analysis. One person noted the presence of a dog under a table. The lecturer then said they had looked at the painting many times through the course of their teaching and never noticed the dog. This makes me think about how we all see different things, and how much there is to see even in art we already know.</p><p><em>This is my (very late) submission for the </em><a href="https://www.nicksimson.com/posts/2025-indieweb-carnival-take-two.html"><em>June 2025 IndieWeb Carnival on the topic “Take Two.”</em></a></p><p>[1]: <a href="https://www.theguardian.com/artanddesign/2022/jun/19/the-sainsbury-wing-redesign-spare-us-the-art-world-good-taste">The Sainsbury Wing has a storied, tumultuous history</a>; then-Prince Charles publicly criticised one of the proposals for a redesign in May 1984. Today, the Sainsbury Wing houses a wonderful collection of medieval art.</p> <a class="tag" href="https://en.wikipedia.org/wiki/Rain,_Steam_and_Speed_%E2%80%93_The_Great_Western_Railway">Rain, Steam, and Speed</a> <a class="tag" href="https://tracydurnell.com/2026/01/07/digital-aura-source-of-truth/">learned about through a blog post</a> <a class="tag" href="https://www.nicksimson.com/posts/2025-indieweb-carnival-take-two.html">_June 2025 IndieWeb Carnival on the topic “Take Two.”_</a> <a class="tag" href="https://www.theguardian.com/artanddesign/2022/jun/19/the-sainsbury-wing-redesign-spare-us-the-art-world-good-taste">1]: [The Sainsbury Wing has a storied, tumultuous history</a> Museum memories - James' Coffee Blog https://jamesg.blog/2026/03/05/museum-memories/ 2026-03-05T13:29:16.000Z <p><em>This is my entry for this month’s IndieWeb Carnival on the topic “</em><a href="https://jamesg.blog/2026/03/01/indieweb-carnival-museum-memories/" rel="noreferrer"><em>Museum memories</em></a><em>”.</em></p><p>When I was 10 or so – maybe younger; childhood can be hazy – my grandparents took me to the National Museum of Flight in Scotland for a day. My memory starts as many of my earlier museum memories do: with the joy I felt having lunch in the museum cafe. I then start to think about the day and realise I remember the trip vividly: the hangars, the planes, walking across the airfield, going inside a decommissioned plane.</p><p>The National Museum of Flight is on a different scale to other museums because of its subject matter: flight. Planes are huge. They were especially huge for young me who would look up in awe at the vehicles. This was the closest I had ever been to planes.</p><p>I feel that same sense of awe now in art galleries when I look at grand paintings: the scale of the thing in front of me can be so grand – or indeed small and extensively detailed – that, for a moment, I can’t help but think “wow!” That feeling never gets old.</p><p>On that day, we walked around a lot, exploring the different planes. As I think back I realise museums are playgrounds for curiosity; places to imagine. One exhibit I remember in particular depth was a Concorde plane that you could go inside. I didn’t know the significance of Concorde at the time, but the experience was nevertheless amazing. Indeed, you don’t need to understand all the history around something in a museum to appreciate what you see.</p><p>I appreciated that the museum was outside. I suspect that I was probably tired toward the end of the trip; the car journey, walking around a lot, it all would have been tiring. Although I don’t remember exactly, we may have got fish and chips for dinner that day on the way back; I remember other such trips where fish and chips was the meal to end the day.</p><p>I just looked at the map and saw that the National Museum of Flight is near East Linton. East Linton was home to an office of 4J Studios, the creators of Minecraft Xbox Edition. I don’t know if it was on this day or on another trip but I do remember seeing the sign that we were going through East Linton and thinking <em>wow, Minecraft [Xbox Edition] is [partially] made here!</em> The journey can be as exciting as the destination.</p><p>Although my memory is hazy and I may have mashed together a few memories together, the museum itself remains vivid. I had a lot of fun that day: going into a Concorde plane, walking across the airfield, having a nice lunch. I look back and wonder if I was in awe that day; a day before I probably would have known what “awe” meant.</p> <a class="tag" href="https://jamesg.blog/2026/03/01/indieweb-carnival-museum-memories/">_Museum memories_</a> Night time; walking - James' Coffee Blog https://jamesg.blog/2026/03/04/night-time-walking/ 2026-03-04T18:33:47.000Z <blockquote>i'll spend my whole life looking for the next best thing<br/>but when I finally find it, i’ll be too busy looking<br/>for the next best thing</blockquote><p>I had spent half of the day travelling and the other half looking at art. Whenever I am going anywhere, I like to arrive as early as I can and either walk around or go to an art gallery; ideally, I like to do both. After all the galleries had closed and I had eaten dinner, I walked for an hour or two as the sun set. I had spent enough time indoors; I needed to exercise my legs.</p><p>I love walking around central London, especially down the Thames. There is a nice path on the south side of the river that takes you past many wonderful places. You can see skateboarders in their element in a skate track, which is next to a cinema; across the river you see the grand Somerset House, home to the Courtauld Gallery. The more you walk, the more you see: cathedrals and parliament and bridges and water.</p><p>I was walking over a bridge and admiring the colours of the city after the sun had set. Pink neon lights coming from the bridge I was on cast beams of light in front of me. The clock of Big Ben shone bright. In the heart of so much beauty – and so close to many stories – it was not the light but a few words that caught my eye. As I was walking, I saw a message written on the pavement.</p><blockquote>i'll spend my whole life looking for the next best thing<br/>but when I finally find it, i’ll be too busy looking<br/>for the next best thing</blockquote><p>“What’s next?” I ask myself that question a lot. What is the next thing I am going to make? What will I do next? It is little wonder that I have felt lost lately; if I am worried about what’s next, I lose sight of what is in front of me. Despite the size and scale of London relative to where I call home, I didn’t feel lost at any point on my trip. I didn’t have time. I was walking and listening and talking and studying art. I was following familiar paths and going on detours and listening to my feet. <em>I am here.</em></p><p>With the message written on the pavement in mind, I decided to focus on what I could see: all of the beautiful buildings around; the calm flow of the evening river on a spring day. I admired the cityscape. I turned around so that I could see as many perspectives as I could from where I was standing. <em>I am here.</em></p><p>I continued on with my walk. London is beautiful in the evening. I ended my day watching the city around me. I love to watch and study. I started the next day with a walk by the same river, a day on which I had plans – a day for which I had been looking forward for weeks. And as the weekend went on, I found myself with more and more answers to: what’s next? Among them: I don’t need to push to move forward: there is so much for me to learn from where I am.</p><p><em>The writing on the bridge was signed </em><a href="https://www.instagram.com/beakandsqueak/?hl=en" rel="noreferrer"><em>@beakandsqueak</em></a><em>, who has reportedly </em><a href="https://www.swlondoner.co.uk/entertainment/23102025-meet-the-anonymous-street-artist-helping-londoners-make-light-of-their-complicated-emotions" rel="noreferrer"><em>written hundreds of messages in chalk across London</em></a><em>. I am sincerely grateful that they took the time to write a message for others to enjoy.</em></p> <a class="u-mention" aria-hidden="true" href="https://www.instagram.com/beakandsqueak/?hl=en"></a> Guitar; sunset - James' Coffee Blog https://jamesg.blog/2026/03/04/guitar-sunset/ 2026-03-04T18:12:02.000Z <p>The days are getting longer and brighter. The bite of the winter air is being replaced by a delicate breeze. It feels like Spring is here.</p><p>I have been trying to play my guitar every day, usually before I eat dinner. Over the last week, I have noticed that the time I play the guitar coincides with the setting sun. Today, I stopped playing a bit early so I could admire the orange glow of the sun on the horizon. <em>I love watching sunsets.</em> I keep going back to the window to look at all the other colours in the sky: the faint pink hue where there was only half an hour ago a vibrant orange, the light blues.</p><p>Looking at the hills now, I notice they have a hint of blue, too. A couple just hugged outside as I stand with my laptop arches on one knee, writing about what I see. When you look outside you never know what you are going to see. The couple are now walking together. I love moments when people get together.</p><p>Anyway: the hills have a hint of blue. Like some paintings I have studied. I didn’t know why until recently. It turns out there is a name for this phenomena: <a href="https://en.wikipedia.org/wiki/Aerial_perspective">aerial perspective</a>, where the “colours of the object also become less saturated and shift toward the background colour, which is usually bluish”. I have never thought about how the hills can really take on a blue hue in the distance, and how that is mirrored in art. Studying art is giving me new lenses through which to see the world; new words to explain what I see.</p><p>I have been practicing the guitar for a few months now. Since the beginning I have hoped that I could sing along to a song. Over the last few weeks I have been trying little by little and, this week, I have finally been able to sing along with a few songs. I feel my right hand becomes more automatic when I am strumming. I am starting to notice that I can find the rhythm of a song. For all the guitar players out there, the DUDU DUDU DDU and DD UU DU strumming patterns are the easiest for me to sing along to right now. </p><p>It feels great to be able to sing along to songs I love and play them at the same time. I am not a good singer, but I am having fun.</p><p>The days are getting longer and brighter. I see the early stages of the sun rise and can watch the sun set. I see colours I forgot the sky could have. I think about how those tones are mirrored in art. The vibrant colour of the orange sun this evening reminds me of the colour of the sun in Monet’s <em>Impression, Sunrise</em>, the first painting to be known as Impressionist. The colours are beautiful.</p> Offline mode - James' Coffee Blog https://jamesg.blog/2026/03/04/offline-mode-2/ 2026-03-04T15:15:43.000Z <p>My blog has an <a href="https://jamesg.blog/offline">offline mode</a> that lets you view articles you have previously read on my website. This mode allows you to read something on my website even if you don’t have an internet connection. If the page you want to view has not been cached, you will see a custom page that lists articles you can read:</p><img alt='A page with the heading "You Are Offline" with a list of articles and pages that can be viewed offline.' class="kg-image" loading="lazy" sizes="(min-width: 720px) 720px" src="https://editor.jamesg.blog/content/images/2026/03/offlinemode.png" srcset="https://editor.jamesg.blog/content/images/size/w600/2026/03/offlinemode.png 600w, https://editor.jamesg.blog/content/images/2026/03/offlinemode.png 804w"/><h2 id="how-it-works">How it works</h2><p>My offline mode works using a service worker (<a href="https://jamesg.blog/service-worker.js">see code</a>) that is based on Jeremy Keith’s examples of service workers (<a href="https://gist.github.com/adactio/fbaa3a5952774553f5e7">example one</a>, <a href="https://gist.github.com/adactio/4d588bb8a65fa11a3ea3">example two</a>; NB: I may be missing some examples; See also: <a href="https://adactio.com/journal/13540">Minimum viable service worker</a>). Jeremy wrote a book that documents how you can add offline support to your website: <a href="https://goingoffline.adactio.com/">Going Offline</a>. I haven’t read this book, but all the code snippets and blog posts that Jeremy has posted has helped me get to something that works for me.</p><p>When you visit my website, a service worker is registered. This service worker maintains a cache using the JS Cache API. When the service worker is first registered, a selection of articles I have written are automatically cached. This means that if you only visited my website once or twice, you would still have something to read. <a href="https://editor.jamesg.blog/offline">My offline page</a> is also cached.</p><p>This service worker intercepts web requests to my website. If I am reading the code correctly (it has been years since looked at this, and my work is largely based on Jeremy’s examples), a <code>fetch</code> request is made to my site first. If the request is successful, the result is cached for later. If the request fails and there is a cached version of the page available, the cached page is returned. If the user is offline and no cached page is available, the <code>/offline</code> page is displayed. [1]</p><p><a href="https://editor.jamesg.blog/offline">My offline page</a> lists articles and web pages that have been cached in your browser, listed in descending order by the date the URL was added to the cache. This allows you to see what is available to read while you are offline.</p><p>Looking at this page now, I think I want to separate the list of articles available for offline reading into two lists: a list of blog posts and a list of pages. I may work on this at some point.</p><p>The reason I am so reliant on Jeremy’s examples is that service workers aren’t the easiest to work with. I am not an expert on service workers; I have used them sparingly, and I can't say what I have follows best practices since it is a few years since I am not up to date on service workers. I encourage you to do your own reading and experimentation while playing around with them. I found working from examples to be the easiest way to get something that worked.</p><p><a href="https://jamesg.blog/service-worker.js" rel="noreferrer">You are free to copy mine in its entirety</a> if you would like, as it is licensed under the same CC0 1.0 Universal license as Jeremy’s original work. You’ll need to update the list of URLs to add to the cache to be posts that exist on your website, and update the <code>/offline</code> link to wherever you end up storing your offline page. You will also need to add the registration code to every page on your site:</p><div class="highlight"><pre><span></span><span class="p">&lt;</span><span class="nt">script</span><span class="p">&gt;</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="s1">'serviceWorker'</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="nx">navigator</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nb">window</span><span class="p">.</span><span class="nx">addEventListener</span><span class="p">(</span><span class="s1">'load'</span><span class="p">,</span><span class="w"> </span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nx">navigator</span><span class="p">.</span><span class="nx">serviceWorker</span><span class="p">.</span><span class="nx">register</span><span class="p">(</span><span class="s1">'/service-worker.js'</span><span class="p">);</span> <span class="w"> </span><span class="p">});</span> <span class="w"> </span><span class="p">}</span> <span class="p">&lt;/</span><span class="nt">script</span><span class="p">&gt;</span> </pre></div> <h2 id="experience">Experience</h2><p>I love having an offline mode.</p><p>I think I have only used the offline mode once when I was at an IndieWeb event, sitting in a cafe with my WiFi off. I was writing a blog post and had my WiFi off in part because the connection was bad in the cafe and also in part because I wanted to focus on writing. I needed to consult a page on my website though. Offline mode lets me do that.</p><p>While I haven't used the feature much, given how much I consult my website on a day to day basis it is reassuring that I can access some of it offline (ideal if I am using my phone).</p><p>I have been working on a new project for <a href="https://amie.jamesg.blog/">sharing contacts at events</a> that stores all data locally. For this, too, I am using a service worker to add an offline mode. This means I can use the website even if I have variable or no connectivity.</p><p>Designing an offline mode has several parts: the technical infrastructure behind it (in this case, the service worker), the offline mode experience, and, in more complex cases, additional technical decisions that need to be made if a site has an offline mode (i.e. synchronisation for applications that need to send data back to a server). For a blog like this, the service worker does most of the heavy lifting, and my <a href="https://editor.jamesg.blog/offline">offline page</a> does the rest.</p><h2 id="see-also">See Also</h2><ul><li><a href="https://indieweb.org/offline" rel="noreferrer">IndieWeb offline wiki page</a></li><li><a href="https://indieweb.org/offline-first" rel="noreferrer">IndieWeb offline-first wiki page</a></li><li><a href="https://indieweb.org/service_worker" rel="noreferrer">IndieWeb service worker page</a></li></ul><p><strong><em>[</em></strong>1<strong><em>]: </em></strong>If a request is for an image, the cache is checked first, then the network and then finally an “Offline” placeholder image is displayed.</p> The Church at Varengeville by Monet - James' Coffee Blog https://jamesg.blog/2026/03/03/the-church-at-varengeville-by-monet/ 2026-03-03T15:13:49.000Z <p><em>I am writing about a few paintings to help me build my description skills. My analyses are not formal or comprehensive. If nothing else, I hope that you enjoy the painting that I feature!</em></p><p>The warm colours in Monet’s <a href="https://barber.org.uk/claude-monet-1840-1926/"><em>The Church at Varengeville</em></a> (1882) stood out to me the moment I saw them in a corner of the Courtauld Institute in London [1].</p><img alt="The Church at Varengeville" class="kg-image" loading="lazy" src="https://barber.org.uk/wp-content/uploads/2012/09/monet-1024x821.jpg"/><p>In the top left of the painting, the subject, the church of Varengeville, is painted. But the church takes up a relatively small portion of the painting: a much greater portion is dedicated to the cliffside, bushes, and two trees that span from the bottom to the top third of the canvas. This is in contrast to other paintings of churches that Monet has made like the Roen Cathedral and the Church at Vétheuil where the church takes up much more of the canvas.</p><p>The Church of Varengeville stood out to me for its use of colour; Monet paintings always make me feel something, and one question I would like to answer in my studies is why his use of colour makes me feel the way it does. The sky is a warm yellow. Is the sun about to set?</p><p>I appreciate the contrast between the sky and the ocean: the sky is yellow and bright, whereas the ocean is a soft blue with yellow tones. The sea and sky are separated by a horizon line.</p><p>The bushes in the foreground are more clearly defined than the fields of grass; the bushes use a mix of vivid yellows and reds and oranges, whereas the grass uses a more limited range of colours. The left side of the painting is orange. I am unsure what phenomena or flora it depicts.</p><p>I was mesmerised while looking at this painting, studying up close the detail of the brushstrokes in the bushes and from afar the overall composition and use of colour. I like to look at paintings from many different angles to help me understand what I see, and if what I see is different as I change my distance from the work.</p><p>Now that I am back home and analysing the painting, I realise that, if I put a romantic lens on, the two trees in the foreground take on new significance for me. There is something beautiful about there being two trees so close seeing the sun set together. </p><p>Visual analysis aside: this painting brings me joy.</p><p><strong><em>[</em></strong>1<strong><em>]: </em></strong>The painting is displayed as part of a temporary exhibit while the Barber Institute of Arts that usually houses the painting is renovated.</p> State of the Browser 2026 - James' Coffee Blog https://jamesg.blog/2026/03/03/state-of-the-browser-2026/ 2026-03-03T12:49:41.000Z <p><em>State of the Browser was electric.</em> This is how I summarised my experience at the annual <a href="https://2026.stateofthebrowser.com" rel="noreferrer">State of the Browser</a> event in London in my notes. I like to capture moments as they happen, then write about them later. The note is the essence of a blog post; the starting point. The note blossoms at home.</p><p>State of the Browser is a conference about the web. There is always a nice mix between web technologies, standards, and designing for the web. This year was no different. The day started by learning about CSS anchor positioning and ended with a demo of an interactive video game on the web, between which everything from accessibility compliance to introversion as covered.</p><p>What makes State of the Browser distinct is that the talks generally peel back layers of the web, allowing the audience an insight into a part of the web they may not see. This was exemplified by Jason Williams’ talk “<a href="https://2026.stateofthebrowser.com/speaker/jason-williams/" rel="noreferrer">Temporal: It’s about time</a>”, which was all about how the Temporal API standard was developed. If I heard correctly, work on the standard – which provides a more reliable, intuitive way to work with dates and times in the browser – has taken around ten years. There are four thousand tests that accompany the standard.</p><p>In learning about how much time was spent on the Temporal API – no pun intended – I can’t help but feel in awe of the work that goes into web standards: all the discussion, scoping, writing, implementing, documenting, testing, and adopting that goes into making parts of the web better. And when a new standard is available and implemented, all developers can use it with their applications.</p><p>One thought I had at the conference is that I am starting to look forward to new releases in the browser. The more I learn about HTML, CSS, and native JavaScript APIs the more I am excited about the cutting edge. Anchor positioning is implemented in most major browsers. Work is being done on masonry layouts. The technology that powers the web is improving. Behind every change and improvement are people. State of the Browser uniquely brings together many people who make, use, and appreciate standards. I appreciate that I can go to the conference and hear stories from the people who are actively building the web platform.</p><p>Mike Hall’s talk “<a href="https://2026.stateofthebrowser.com/speaker/mike-hall/" rel="noreferrer">Lessons from building for the bottom of the web</a>” was all about his experience building a website that had to work with 2.5G connections. It was fascinating to hear the design considerations behind that. The project team wanted to deliver a web page that was no heavier than 128 KB, including images. They succeeded in their goal through many creative optimisations and technical decisions. It made me think about how light I could make a web page. What would an “ultra-light” version of a web page look like, I wonder?</p><p>I have lots to say about every talk I saw, but I will end by reflecting on one more talk: “<a href="https://2026.stateofthebrowser.com/speaker/chad-gowler/" rel="noreferrer">The Plateau of Accessibility Compliance: Where do we go from here?</a>” by Chad Gowler. This talk opened my mind to the work that is being done in the video games industry on accessibility. Gowler showed a video game that had an “arachnophobia mode” that allowed users to change the appearance of spiders if they preferred. In another example, Gowler showed the plethora of accessibility options made for one game – so many that the page kept going on and on as they scrolled through the instructions.</p><p>I loved the mix of talks, and thoroughly enjoyed meeting so many interesting people. Indeed, one of the best parts of the event is the conversations with other participants – at the start of the event, in the breaks, at lunch, and at the pub at the end of the day.</p><p>The synopsis for all the talks mentioned above is available on the <a href="https://2026.stateofthebrowser.com/">State of the Browser website</a>. I suspect talks will be available on the <a href="https://www.youtube.com/@londonwebstandards8403/videos">London Web Standards YouTube channel</a> at some point. Thanks to <a href="https://front-end.social/@dletorey">Dave</a> for organising the event, and for the whole team that made the event happen.</p><p>Tickets for the next event will be available on the <a href="https://2026.stateofthebrowser.com/2027/" rel="noreferrer">2027 State of the Browser website</a>. The in-person Super Organised Bird tickets have already sold out, but <a href="https://front-end.social/@dletorey/116160580794337220" rel="noreferrer">more tickets should be available soon</a>. </p> Girl on a Divan by Berthe Morisot - James' Coffee Blog https://jamesg.blog/2026/03/03/girl-on-a-divan-by-berthe-morisot/ 2026-03-03T09:28:07.000Z <p>Berthe Morisot’s <em>Girl on a Divan</em>, <a href="https://www.nationalgallery.org.uk/paintings/berthe-morisot-girl-on-a-divan">displayed in the National Gallery, London</a>, caught my eye as soon as I saw it. The painting was the last one I saw in the Impressionist room in the Gallery, but despite having been on my feet for hours before I stood for several minutes looking at the painting from all angles. There was something wonderful about the painting.</p><p><em>Girl on a Divan</em> portrays a woman gazing directly at the viewer. The woman’s expression is relaxed and friendly; the woman has a slight smile on her face. The woman is wearing a white dress with several stripes of colour. The stripes are somewhat incongruent with the white, not having any particular pattern. With that said, the stripes add to the depth of the image, and the colours of the stripes – mainly blue and orange – contrast well with the blue background.</p><p>In the middle ground, a shade of blue/green is used to create what could be a chair. This further adds depth to the painting. The woman has one arm raised slightly. Could the arm be resting on the arm of the chair?</p><p>I love the use of blue in this painting; the colours are both soft (through the shades chosen) and eye-catching (through the extensive use of blue for the background) at the same time.</p><p>The painting is made with sketch-like brushstrokes for the dress, background, and the hair; the face is more relatively detailed.</p><p>After several minutes of looking at the painting, I noticed a white dot in the left eye: a glimmer of light. This brought me a lot of joy. First, it took a while to notice this detail! I love “<a href="https://www.tate.org.uk/art/guide-slow-looking">Slow Looking</a>”. Second, after noticing the glimmer in the eye, I thought about how much it adds to the expression of the sitter.</p><p><em>Girl on a Divan</em> is now one of my favourite paintings.</p><p><em>I didn’t include a photo of the painting in this post for licensing reasons. You can see a </em><a href="https://www.nationalgallery.org.uk/paintings/berthe-morisot-girl-on-a-divan"><em>detailed photo of the painting on the National Gallery website</em></a><em>.</em></p> How to change the Duolingo app icon - James' Coffee Blog https://jamesg.blog/2026/03/03/how-to-change-the-duolingo-app-icon/ 2026-03-03T09:03:20.000Z <p>I am using Duolingo to learn a bit of German. I have been using the app for a while and enjoy the exercises. With that said, I am not a fan of Duolingo’s changing application icons on iOS.</p><p>I don’t like that an application can set its own home screen icon without my permission. I further do not appreciate that there doesn’t seem to be a way to change the app icon in some states. For example, there is an icon where the application mascot, Duo, appears with a plaster. I find the icon relatively distressing.</p><p>This weekend I figured out a workaround to reset the icon. Now, I have an Apple Shortcut that does one thing: open Duolingo. Because you can set custom icons for Apple Shortcuts and add them to your home screen, you can create a Shortcut that opens Duolingo using whatever icon you like, including the original application icon.</p><p>Here is what my Shortcut looks like on my home screen:</p><img alt="Two app icons on an iOS homescreen: Pocket Casts on the left, and Duolingo on the right." class="kg-image" loading="lazy" sizes="(min-width: 720px) 720px" src="https://editor.jamesg.blog/content/images/2026/03/IMG_4168-Large.jpeg" srcset="https://editor.jamesg.blog/content/images/size/w600/2026/03/IMG_4168-Large.jpeg 600w, https://editor.jamesg.blog/content/images/size/w1000/2026/03/IMG_4168-Large.jpeg 1000w, https://editor.jamesg.blog/content/images/2026/03/IMG_4168-Large.jpeg 1206w"/><p>Whereas my current Duolingo app shows the plaster icon, my Shortcut shows the icon I chose.</p><p>This approach has a limit: because it isn’t the original application icon, I am unsure if you will see the red application notification icons on the icon. This is acceptable for my use of the app; my phone is mostly in Do Not Disturb so I don’t see the notification icons anyway.</p><p>Here is how the Shortcut is set up:</p><img alt="My Duolingo Shortcut with a single step: Open Duolingo." class="kg-image" loading="lazy" sizes="(min-width: 720px) 720px" src="https://editor.jamesg.blog/content/images/2026/03/IMG_4174-Large.jpeg" srcset="https://editor.jamesg.blog/content/images/size/w600/2026/03/IMG_4174-Large.jpeg 600w, https://editor.jamesg.blog/content/images/size/w1000/2026/03/IMG_4174-Large.jpeg 1000w, https://editor.jamesg.blog/content/images/2026/03/IMG_4174-Large.jpeg 1206w"/><p>To change your app icon, create a new Shortcut with one step: to open an application. Choose Duolingo as the application to open. Set the name of the Shortcut to “Duolingo”. Next, <a href="https://cdn.jim-nielsen.com/ios/512/duolingo-2019-01-02.png">download a copy of the Duolingo app icon</a> and save it to your device.</p><p>Then, click the share icon in the Shortcuts application:</p><img alt="" class="kg-image" loading="lazy" sizes="(min-width: 720px) 720px" src="https://editor.jamesg.blog/content/images/2026/03/IMG_4169-Large.jpeg" srcset="https://editor.jamesg.blog/content/images/size/w600/2026/03/IMG_4169-Large.jpeg 600w, https://editor.jamesg.blog/content/images/size/w1000/2026/03/IMG_4169-Large.jpeg 1000w, https://editor.jamesg.blog/content/images/2026/03/IMG_4169-Large.jpeg 1206w"/><p>Click “Add to Home Screen”:</p><img alt='The Share task tray with several buttons, including one that says "Add to Home Screen" indicated by a plus icon.' class="kg-image" loading="lazy" sizes="(min-width: 720px) 720px" src="https://editor.jamesg.blog/content/images/2026/03/IMG_4172-Large.jpeg" srcset="https://editor.jamesg.blog/content/images/size/w600/2026/03/IMG_4172-Large.jpeg 600w, https://editor.jamesg.blog/content/images/size/w1000/2026/03/IMG_4172-Large.jpeg 1000w, https://editor.jamesg.blog/content/images/2026/03/IMG_4172-Large.jpeg 1206w"/><p>Click "Image" to choose a custom image as an icon:</p><img alt='The home screen icon editor interface. "Image" is selected, which has three options: Choose Photo, Take Photo, and Choose File.' class="kg-image" loading="lazy" sizes="(min-width: 720px) 720px" src="https://editor.jamesg.blog/content/images/2026/03/IMG_4173-Large.jpeg" srcset="https://editor.jamesg.blog/content/images/size/w600/2026/03/IMG_4173-Large.jpeg 600w, https://editor.jamesg.blog/content/images/size/w1000/2026/03/IMG_4173-Large.jpeg 1000w, https://editor.jamesg.blog/content/images/2026/03/IMG_4173-Large.jpeg 1033w"/><p>Click “Choose Photo” if you saved the app icon as a photo. Choose the app icon you want to use. Then, click “Add” to add the shortcut to your device:</p><img alt="The Duolingo app icon is set in the home screen app icon preview page." class="kg-image" loading="lazy" sizes="(min-width: 720px) 720px" src="https://editor.jamesg.blog/content/images/2026/03/IMG_4171-Large.jpeg" srcset="https://editor.jamesg.blog/content/images/size/w600/2026/03/IMG_4171-Large.jpeg 600w, https://editor.jamesg.blog/content/images/size/w1000/2026/03/IMG_4171-Large.jpeg 1000w, https://editor.jamesg.blog/content/images/2026/03/IMG_4171-Large.jpeg 1010w"/><p>You will now have a Duolingo app icon that looks like this:</p><img alt="My Duolingo shortcut." class="kg-image" loading="lazy" sizes="(min-width: 720px) 720px" src="https://editor.jamesg.blog/content/images/2026/03/IMG_4168-Large-1.jpeg" srcset="https://editor.jamesg.blog/content/images/size/w600/2026/03/IMG_4168-Large-1.jpeg 600w, https://editor.jamesg.blog/content/images/size/w1000/2026/03/IMG_4168-Large-1.jpeg 1000w, https://editor.jamesg.blog/content/images/2026/03/IMG_4168-Large-1.jpeg 1206w"/><p>You can then remove the original Duolingo app from your home screen and keep your shortcut.</p><p>While this approach is a workaround, it satisfies the requirement of allowing me to use a custom Duolingo app icon.</p> I wish there was a (simpler) way to highlight text in inputs - James' Coffee Blog https://jamesg.blog/2026/03/03/highlight-text-inputs-css/ 2026-03-03T08:42:25.000Z <p>When I was building the search engine for my blog, one feature I wanted to implement was syntax highlighting within the search input field. I wanted special operators (i.e. <code>has:noalt</code>, which shows posts that contain one or more images without alt text) to have a different background colour indicating that a given segment of text had some semantic meaning.</p><p>Here is an example of the GitHub search feature which has semantic syntax highlighting:</p><img alt="" class="kg-image" loading="lazy" src="https://editor.jamesg.blog/content/images/2026/03/ghsearch.png"/><p>In the above image, the "capjamesg/indieweb-etherpad-archiver-v2" text is set in a light blue font; the text background is in a darker blue. This text is highlighted because it follows "repo:". This part of the query means that I want to scope my search to focus on a specific repository, "capjamesg/indieweb-etherpad-archiver-v2".</p><p>By highlighting the text that is part of the search query, I have a visual indication that what I have typed has some special meaning to the software.</p><p>Regex101 has a similar semantic syntax highlighting feature in the regular expression form field on their website:</p><img alt="" class="kg-image" loading="lazy" sizes="(min-width: 720px) 720px" src="https://editor.jamesg.blog/content/images/2026/03/regex101.png" srcset="https://editor.jamesg.blog/content/images/size/w600/2026/03/regex101.png 600w, https://editor.jamesg.blog/content/images/2026/03/regex101.png 726w"/><p>Various characters in the above screenshot appear with coloured backgrounds; each one has semantic meaning.</p><h2 id="the-status-quo">The status quo</h2><p>There doesn’t appear to be a semantic way to implement text highlighting in a native <code>input</code> tag. GitHub uses an <code>input</code> tag as the text and a lot of other code; a cursory read doesn’t make it obvious exactly what is going on. Regex101 uses a <code>contenteditable</code> div and gives every character in it a <code>span</code> tag. Both of these involve more code than I would like, all of which I would have to maintain.</p><p>I also explored an implementation of an <code>input</code> field that involved clipped background gradients, but there turned out to be many limits: maintaining state while scrolling, glitches in positioning the background, the requirement to use a monospaced font for the input so I can use <code>ch</code> to estimate where characters are in the input field.</p><h2 id="what-i-would-like">What I would like</h2><p>In my dream browser implementation, I would like to be able to apply the following styles:</p><ul><li>Text colour</li><li>Background colour</li></ul><p>I tried to use the <a href="https://developer.mozilla.org/en-US/docs/Web/API/CSS_Custom_Highlight_API">CSS Custom Highlight API</a> on an <code>input</code> field but it didn’t work. It feels like this API could be a stepping stone to highlighting text in an <code>input</code> field?</p><p>For my use case, which is to style a text input field, I would like to be able to specify the character indices at which a highlight should start and end. I can then use JavaScript with my own grammar parser to determine what character indices should be highlighted, and in what colour (I may want to use one colour for filter keywords, for example, and another for sort keywords).</p><h2 id="security">Security</h2><p>I suspect there are security considerations for this idea: what if the <code>input</code> field has white text that hides from a user what is in the form field? A malicious site could make it seem like there is no text in a form field visibly even if there is such text. With that said, I wanted to write down my thoughts to start a discussion.</p><h2 id="related-discussions">Related discussions</h2><ul><li><a href="https://github.com/w3c/csswg-drafts/issues/4603" rel="noreferrer">CSS Working Group Issue #4603</a></li></ul> My first and last frames of Kodachrome - Baty.net https://baty.net/posts/2026/03/my-first-and-last-frames-of-kodachrome/ 2026-03-02T11:14:27.000Z <p>Soon after I got my first real film camera (a Canon AE-1 Program), I shot Kodachrome for a short time. Here&rsquo;s the first frame with the new camera from 1982. It&rsquo;s a flower from our back yard.</p> <figure class="align-center "> <img loading="lazy" src="flower.webp#center" alt="Close up image of a pink flower" width="400px"/> <figcaption> <p>Flower (1982). Canon AE-1 Program / Kodachrome</p> </figcaption> </figure> <p>I switched to mostly color negative film, and only used Kodachrome occasionally. I don&rsquo;t remember why. Probably because it was cheaper and prints were 2 for 1 or something.</p> <p>Kodak stopped making Kodachrome in 2009 and Dwayne&rsquo;s Photo (the last place to process it) accepted their last roll at the end of 2010. I sent them my final roll late in 2010, just under the wire. Here&rsquo;s the final frame.</p> <figure class="align-center "> <img loading="lazy" src="tractor.webp#center" alt="Red tractor in field" width="800px"/> <figcaption> <p>Tractor (2010). Olympus OM-1n / Kodachrome</p> </figcaption> </figure> <p>I miss that film.</p> <div id="reply-by-email"> <a class="reply-by-email" href="mailto:jack@baty.net?subject=[baty.net] Re: My%20first%20and%20last%20frames%20of%20Kodachrome" data-meta="46736254466c76526e706a664549624e455d711469636e4c406c4f51464972146e706a634717724d4549724e4067715e76626e486e706a666e706d5377777262694d7110696771116b735c576e706d537d497148694e6617457c764b7e6c6e4c401648517e5d715d69637e5d46161448694e665e46166a547d735348694e66507e7376547d77715d755d715d69637e52474d715d69636148694e6617456348577e77715d755d715d69677262694d7110696772666a431919" >✍️ Reply by email</a > </div> Step aside, phone: week 3 - Manuel Moreale RSS Feed https://manuelmoreale.com/@/page/js9wsdrrg0n7ytzf 2026-03-01T12:00:00.000Z <p>Three-quarters of the way through this “challenge”, and the findings are mostly the same. Phone usage is very easy to keep in check if you decide to put your mind to it. The past seven days have been very similar to the previous seven, and that’s good, since this type of phone usage needs to become the new normal.</p> <hr /> <figure class="media-container" data-template="with"><div class="media-content"><img class="media-img" loading="lazy" src="https://manuelmoreale.com/media/pages/thoughts/step-aside-phone-week-3/f06c2ead82-1772366339/week3_1.jpg" style="aspect-ratio:915 / 994"></div><figcaption>Also included a screen from last Sunday</figcaption></figure> <p>Contrary to the previous week, this time it was the first half of the week that saw higher usage, and that was mostly due to a few long Telegram sessions late in the day on Monday and Tuesday. 44 or the 54 minutes logged on Monday, and 32 of the 45 logged on Tuesday, were spent on Telegram. Only 26 minutes out of 46 on Wednesday, the rest of the usage was work-related since I had to do a few phone calls and test a couple of things on mobile Safari.</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/step-aside-phone-week-3/dd94c09219-1772366339/week3_2.jpg" style="aspect-ratio:1000 / 724"></div></figure> <p>The second half of the week saw a lot less phone time, but I did have to spend a lot more time at my computer, taking care of client stuff, and that’s why I barely picked up the phone. Which is fine. I still have not consumed content on the phone, three weeks in. That’s awesome, and I want that to stay that way.</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/step-aside-phone-week-3/9a2bd20ab8-1772366339/week3_3.jpg" style="aspect-ratio:1000 / 724"></div></figure> <p>Again, very pleased with how this month-long experiment is going, and I do have some takeaways, but I’ll wait until next Sunday to share them.</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> IndieWeb Carnival March 2026: Museum memories - James' Coffee Blog https://jamesg.blog/2026/03/01/indieweb-carnival-museum-memories/ 2026-03-01T08:14:54.000Z <p>Museums and galleries are places we can go to learn about the past, think about the present, and consider the future. Museums are places we can connect: with times, people, and place. We can have conversations in museums. We learn in museums. We can explore.</p><p>The topic I have chosen for this month’s IndieWeb Carnival is “Museum memories”.</p><p>This month, I invite you to write a blog post about a memory that you have of a museum. It can be any museum: your local art gallery, a museum you visit often, a museum you visited on holiday, a museum dedicated to one of your interests (the sea, video games, transportation, your favourite football team), or a museum at a historic site you have visited.</p><p>To get you thinking about this month’s topic, I have a few questions that you can use as starting points:</p><ul><li>What is your favourite museum? When did you realise it became your favourite?</li><li>Do you recall a time when an object in a museum or an art gallery made you feel something? What was the feeling?</li><li>Do you remember when you first stumbled upon a new kind of history or art that you hadn’t thought or known about before?</li><li>Have you met anyone interesting at a museum? A new friend? A tour guide that got you thinking about something in a new way?</li><li>Is there a museum you loved as a child? What made it so interesting to you?</li><li>How does/did the physical space of a museum you visit or have visited affect you? Do you feel a certain way when you enter?</li></ul><p>This month’s IndieWeb Carnival runs from March 1st to March 31st. To participate, write a blog post on the topic of “Museum memories” on our website. Then, send me an email at <a href="mailto:readers@jamesg.blog">readers@jamesg.blog</a> with a link to your submission.</p><p>I will curate all of the submissions I receive on this page as I receive them. At the beginning of April, I will write a round-up that summarises all of the submissions I have received.</p><p>Entries are listed below in reverse chronological order of submission. This means that the most recently received posts are at the top of the list.</p><h2 id="entries"><strong>Entries</strong></h2><p>No entries have been received yet.</p> Dominik Schwind - Manuel Moreale RSS Feed https://manuelmoreale.com/@/page/zmenahpfxsyx4jcw 2026-02-27T12:00:00.000Z <p>This week on the People and Blogs series we have an interview with Dominik Schwind, whose blog can be found at <a href="https://lostfocus.de/">lostfocus.de</a>.</p> <p>Tired of RSS? <a href="https://manuelmoreale.com/interview/dominik-schwind">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>My name is Dominik Schwind and I'm from <a href="https://en.wikipedia.org/wiki/L%C3%B6rrach">Lörrach</a>, a small town on the German side of the <a href="https://en.wikipedia.org/wiki/Dreil%C3%A4ndereck_(Basel)">tri-border area with Switzerland and France</a>. I've been a web developer for a really long time now, mostly server-side and just occasionally dabbling in what is showing up in the browser. Annoyingly that's a hobby that I turned into work, so I guess that's ruined now. (Which doesn't stop me, though: I have too many half-finished side-project websites and apps to count.) </p> <p>Besides that I also really like to take <a href="https://dominik.photos/">photos</a> and after a few years of being frozen in place I started to travel again, which is always nice. I do like watching motorsports of almost all types, I can easily get sucked into computer games like <a href="https://en.wikipedia.org/wiki/Factorio">Factorio</a> and I like to listen to podcasts, top of them being the <a href="https://www.omnibusproject.com/">Omnibus Project</a>, <a href="https://dogoonpod.com/">Do Go On</a> and <a href="https://www.merlinmann.com/roderick/">Roderick on the Line</a>. </p> <h2>What's the story behind your blog?</h2> <p>I've had a website since before I had internet access - some computer game I had in the mid-90s had the manual included as HTML and I used it to learn how to make basic websites. The very first day my father came home with a modem, I signed up for <a href="https://en.wikipedia.org/wiki/GeoCities">GeoCities</a> and when I found a webhost that would allow me to run CGI scripts, I installed <a href="https://web.archive.org/web/20010509081826/http://www.amphibianweb.com/newspro/">NewsPro</a>, an early proto-blog system before blogging was even a thing. And while these early iterations of my website(s) are long gone, I haven't stopped since. </p> <p>The name came from an unease I started to feel in my final year of high school: once I finished school, I didn't know where to direct my energy and attention. That feeling hasn't really left since then.</p> <h2>What does your creative process look like when it comes to blogging?</h2> <p>Mostly there is none - when I think of something that I want to communicate to someone, <em>anyone</em>, I try to put it online. Quite often it ends up on <a href="https://nona.social/@dominik">Mastodon</a> but I do try to put things on my blog, especially when I know it is something <em>future me</em> would appreciate. </p> <p>A few years ago I noticed that I had neglecting my blog in favour of other ways of communicating and I started a pact with a couple of friends to write <a href="https://weeknotes.cafe/">weeknotes</a>. We're in our fourth year now, which feels like an accomplishment. I try to write those posts first thing on a Sunday morning, if possible.</p> <p>I write most of my posts in <a href="https://www.anildash.com/2026/01/09/how-markdown-took-over-the-world/">Markdown</a> in <a href="https://ia.net/writer">iA Writer</a>, which is probably the most arrogant Markdown editing app in the world. But I paid for it at some point, so I better use it, too. </p> <h2>Do you have an ideal creative environment? Also do you believe the physical space influences your creativity?</h2> <p>I basically only need a computer and a place to sit and I'm fine. I've tried to find ways to blog from my phone but in the end, I prefer a proper keyboard and a bigger screen. </p> <p>While I never observed any difference in blogging creativity depending on the physical space, I actually quite enjoy writing in places other than my desk. </p> <h2>A question for the techie readers: can you run us through your tech stack?</h2> <p>This one is actually pretty simple: I run <a href="https://wordpress.org/">WordPress</a>, currently on a DigitalOcean VM. One of the points on my long to-do list for my web stuff is to move it to <a href="https://www.hetzner.com/">Hetzner</a>, which probably would only take an evening. And yet, I procrastinate. </p> <p>I've (more or less) jokingly said I'd replace WordPress with a CMS of my own making for years now, but at some point I've resigned, even though my database is a mess. </p> <h2>Given your experience, if you were to start a blog today, would you do anything differently?</h2> <p>Probably not. </p> <p>Ever since the beginning I wrote for two audiences: my friends and future me. I'm really happy when someone else finds my blog and might turn into an internet friend, but I wouldn't know how else to achieve that other than what I've been doing for all these years now.</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>.de domains are pretty affordable, so it is that plus the server, which is around €100 per year. </p> <p>The blog doesn't generate any revenue, in many ways it's "only" a journal. </p> <p>When it comes to other bloggers, I'd say: go for it if you think your writing (or your photography or whatever it might be you're sharing on your website) is something that can be turned into revenue, one way or another. In many ways I'm a bit bummed that <a href="https://en.wikipedia.org/wiki/Flattr">Flattr</a> (or something similar) never really took of, I would happily use a service like that.</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>Of course I need to mention my friends and fellow weeknoters: <a href="https://www.dertagundich.de/">Martin</a> (blogs in German) and <a href="https://teymthebeast.com/blog">Teymur</a>. (NSFW) </p> <p>Three of the people whose blogs I read have been interviewed here already: <a href="https://anhvn.com/">Ahn</a> (<a href="https://manuelmoreale.com/interview/anh">Interview</a>), <a href="https://adactio.com/">Jeremy Keith</a> (<a href="https://manuelmoreale.com/interview/jeremy-keith">Interview</a>) and <a href="https://winnielim.org/">Winnie Lim</a> .(<a href="https://manuelmoreale.com/interview/winnie-lim">Interview</a>) </p> <p>Some other people whose blogs I read and who might be interesting people to answer your questions would be <a href="https://jennifermillsnews.tumblr.com/">Jennifer Mills</a>, (who has the best take on weekly blog posts I have ever seen) <a href="https://newsletter.nikkin.dev/">Nikkin</a>, (he calls it a newsletter, but there is an RSS feed) <a href="https://roytang.net/">Roy Tang</a> and <a href="https://rubenerd.com/">Ruben Schade</a>.</p> <h2>Final question: is there anything you want to share with us?</h2> <p>If you don't have one yet, go start a personal website! Don't take it too seriously, try things and it can be a nice, meditative hobby and helps against the urge to doomscroll. Also you might never know, your kind of people might find it and connect with you.</p> <hr> <h3>Keep exploring</h3> <p>Now that you're done reading the interview, <a href='https://lostfocus.de/'>go check the blog</a> and <a href='https://lostfocus.de/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'>130 interviews</a>.</p> <p>People and Blogs is possible because kind people support it.</p> Tuesday, February 24, 2026 - Baty.net https://baty.net/journal/24feb26/ 2026-02-24T13:45:05.000Z <p>Am I back? Not sure yet, but I think I&rsquo;m a static-blog kind of fella. <a href="https://pureblog.org">Pure Blog</a> is awesome, and Kev&rsquo;s done a great job with it. I like it a lot. And yet, there&rsquo;s this nagging feeling about it running &ldquo;out there&rdquo; and needing PHP, etc. Pure Blog is super simple to host, but not as simple or portable as a static site. A CMS with a nice, simple UI is pretty great, but I&rsquo;ve spent years honing my combination of Hugo and Emacs. Blogging is a &ldquo;solved&rdquo; problem, right? :) Anyway, I&rsquo;m going to try this again for a minute.</p> <hr> <div id="reply-by-email"> <a class="reply-by-email" href="mailto:jack@baty.net?subject=[baty.net] Re: Tuesday%2c%20February%2024%2c%202026" data-meta="46736254466c76526e706a664549624e455d711469636e4c406c4f51464972146e706a634717724d4549724e4067715e76626e486e706a666e706d5377777262694d7110696771116b735c576e706d537d497148694e6617457c764b7e6c6e4c401648517e5d715d69637e5d46161448694e665e46166a547d735348694e66507e7376547d77715d755d715d69637e52474d715d69636148694e6617456348577e77715d755d715d69677262694d7110696772666a431919" >✍️ Reply by email</a > </div> Dopplr colours - James' Coffee Blog https://jamesg.blog/2026/02/24/dopplr-colours/ 2026-02-24T09:03:45.000Z <p>Last year I was introduced to the idea of “Dopplr colours” in the IndieWeb community. This refers to an accent colour assigned to cities on the now-defunct travel website <a href="https://en.wikipedia.org/wiki/Dopplr" rel="noreferrer">Dopplr</a>. You can see examples by clicking through <a href="https://web.archive.org/web/20130116102419/https://www.dopplr.com/place/us/ny/new-york">different Dopplr city pages in the Internet Archive</a> and paying attention to the borders of the map.</p><p>While I haven’t been able to find an authoritative description of the algorithm, to the extent I understand the Dopplr colours were assigned using an MD5-based algorithm. Aaron implemented a <a href="https://pin13.net/city-color.php?city=jamesg.blog">demo of the Dopplr colour system</a> and <a href="https://chat.indieweb.org/dev/2025-09-10#t1757532888865800">described the algorithm in PHP</a> as:</p><pre><code>substr(md5($_REQUEST['city']), 0, 6)</code></pre><p>Here is an equivalent Python implementation:</p><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">hashlib</span> <span class="err">​</span> <span class="n">colour</span> <span class="o">=</span> <span class="n">hashlib</span><span class="o">.</span><span class="n">md5</span><span class="p">(</span><span class="s2">"jamesg.blog"</span><span class="o">.</span><span class="n">encode</span><span class="p">())</span><span class="o">.</span><span class="n">hexdigest</span><span class="p">()[:</span><span class="mi">6</span><span class="p">]</span> <span class="err">​</span> <span class="nb">print</span><span class="p">(</span><span class="s2">"#"</span> <span class="o">+</span> <span class="n">colour</span><span class="p">)</span> </pre></div> <p>These code snippets calculate the MD5 hash for a string, then take the first six characters. This creates a hexadecimal value that can then be used as a colour. The Dopplr colour for my domain name is <code>#e228f3</code>. It’s pink! Of note, you can calculate a Dopplr colour for any string, not just city names.</p><p>The IndieWeb community uses Dopplr to assign colours to cities in <a href="https://indieweb.org/IndieWebCamps">its timeline of in-person IndieWebCamp events:</a></p><img alt="A table showing a list of cities with cells coloured using the city's Dopplr colour if an IndieWebCamp event was held in the city in a given year." class="kg-image" loading="lazy" sizes="(min-width: 720px) 720px" src="https://editor.jamesg.blog/content/images/2026/02/timeline.png" srcset="https://editor.jamesg.blog/content/images/size/w600/2026/02/timeline.png 600w, https://editor.jamesg.blog/content/images/size/w1000/2026/02/timeline.png 1000w, https://editor.jamesg.blog/content/images/size/w1600/2026/02/timeline.png 1600w, https://editor.jamesg.blog/content/images/2026/02/timeline.png 1816w"/><p>I had never heard of the idea of Dopplr colours prior to the IndieWeb, and a Google Search was not fruitful in returning a page that described the algorithm. I thought I’d write this page to document the idea, and make it easier for people to find the idea.</p> Brainstorming search engine ranking introspection - James' Coffee Blog https://jamesg.blog/2026/02/23/search-engine-ranking-introspection/ 2026-02-23T12:57:26.000Z <p>Search is one of my favourite disciplines in computing. In 2024 I spent a lot of time working on a <a href="https://jamesg.blog/2024/09/20/search-query-lifecycle">NoSQL engine that I called JameSQL</a>. This tool now powers the search engine on my website.</p><p>Designing search engine ranking systems is tricky to say the least. When I use my blog search engine, I sometimes notice that the article for which I am looking does not show up at the top of the search results. Google set a high standard for search; when I type something in Google in a <code>site</code> search, I can often find what I am looking for.</p><p>I am not yet ready to delve back into the world of search, but I did want to take a note of an idea I had today: I want my next search project to have tooling for ranking introspection. By this I mean I want to have tools that let me know <em>why</em> a particular article ranks above another.</p><p>At present, JameSQL only returns a single attribute, <code>_score</code>, which is computed using either TF-IDF or BM25, with any additional boosts you have specified (i.e. give h1s 3x more weight). I imagine having a value like <code>_score_answer</code> that would tell me how much weight each attribute used in ranking had, for example:</p><div class="highlight"><pre><span></span><span class="p">[</span> <span class="w"> </span><span class="p">{</span><span class="nt">"bm25_on_post"</span><span class="p">:</span><span class="w"> </span><span class="mf">100.01</span><span class="p">},</span> <span class="w"> </span><span class="p">{</span><span class="nt">"score_after_h1_boost"</span><span class="p">:</span><span class="w"> </span><span class="mf">101.01</span><span class="p">},</span> <span class="w"> </span><span class="p">{</span><span class="nt">"score_after_inlinks_added"</span><span class="p">:</span><span class="w"> </span><span class="mf">109.01</span><span class="p">},</span> <span class="w"> </span><span class="err">...</span> <span class="p">]</span> </pre></div> <p>This would be an ordered list that specifies what calculation has been made, followed by the score at that point in time. This could then be used to calculate how many points each ranking factor added onto the final score. This can be done by calculating the difference between scores after each weight is applied.</p><p>This information would help me answer the question “why is this post ranking in this place for this query?” much more effectively than right now, by letting me see exactly how each calculation and ranking factor affects the final search engine ranking.</p><p>I started building a tool that lets me interactively experiment with different algorithms (<a href="https://playground.jamesg.blog/screenshots/search_algorithm.png">see image of the dashboard</a>) which was useful. I think I would like to revisit that dashboard to make it more useful if/when I work on a search project in the future.</p><p>Outside of the scope of this particular, developer-focused context, I generally want to use software that gives me a clear idea as to why I am seeing what I am seeing. As a user, I shouldn’t be left thinking “why did this show up?” With many opaque recommendation systems used on the web today, I am often left feeling exactly like that: “why did this show up?” This makes it a lot harder for me to understand, and therefore trust, a system.</p> Preserving calm in software over time - James' Coffee Blog https://jamesg.blog/2026/02/23/preserving-calm-in-software-over-time/ 2026-02-23T11:48:11.000Z <p>When I announced Artemis in 2024, I titled the announcement “<a href="https://jamesg.blog/2024/12/11/artemis-launch">Artemis, a calm web reader, is available (in beta)</a>”. So central to the philosophy of how I build the software is the principle “calm” that, when I write about Artemis, I still use the phrase “a calm web reader” to describe what the software is.</p><p>While exchanging blog post titles with <a href="https://britthub.co.uk">Britt</a>, she asked me a terrific question:</p><blockquote>How you maintain calmness in Artemis while still adding new features. Is there an upper limit on the amount of things a calm reader could do while still being calm?</blockquote><p>I ended up writing a post on another suggested topic “<a href="https://jamesg.blog/2026/02/14/art-in-person">A piece of art I would love to see in person</a>”, but the question about Artemis stuck in my mind. <em>How do I preserve calm in Artemis over time?</em></p><p>I have been using Artemis for over a year and a half now. In that time the software has gone from a static site that updates once a day to a service that others can use. I have added a lot of features since Artemis was a static site. With that said, I don’t think new features have reduced the sense of calm I feel when I use Artemis. I think “calm” is an attribute of a feature and its design: a feature can afford calm, or make the experience of using Artemis less calm.</p><h2 id="adding-features-while-preserving-calm"><strong>Adding features while preserving calm</strong></h2><p>My own experience using the software is that it feels like Artemis exists in the background. I go to see what my friends have written lately and then I go to their website. It doesn’t feel like it demands my attention; the update cadence is much slower than social media and other readers.</p><p>The new features I have added, and continue to add, are mostly around the topic of user preferences and control. <em>How can I let a user customise their reader more? How can I make sure the user controls what they see?</em> That latter question, for example, relates to the work I put in on keyword filters (which can now be applied both to all feeds and to individual feeds!). I have a few keyword filters set up which allow me to not have to think about topics I don’t want to see in my reader. In this way, the feature affords calm.</p><p>Preserving the calm I associate with the software is made up of intentional choices I make whenever I choose to add, or not add, a new feature. I ask myself questions like: How can I make this as unobtrusive as possible? Does this feature give a user more control over what they see in their reader? Will this feature affect the main reading experience and, if so, how will I make sure it is not disruptive? (For the last question, the answer is often to make something opt in by default.)</p><p>In addition, if someone thought a feature was intrusive or confusing, I would consider the feedback thoughtfully before writing a response and see what I can do better. Indeed, I have the experience of Artemis as the person who builds it; others’ feedback would help me improve the software beyond what I can see from my perspective.</p><h2 id="roadmaps,-ideas,-and-red-lines"><strong>Roadmaps, ideas, and red lines</strong></h2><p>There have been periods of weeks where I haven’t worked on Artemis. This is important to me. I don’t have a roadmap for Artemis with dates on when I plan to deliver features. Rather, I build what feels right when the idea comes. “<a href="https://jamesg.blog/2026/02/23/artemis-via">via</a>” came after a user highlighted a bug that I also noticed. “<a href="https://jamesg.blog/2026/01/19/announcing-artemis-roll-up">roll-ups</a>” came after I realised people may want to follow feeds that publish many posts at once, but may not want to see all their post sin their main reader.</p><p>There may come a time when I plan a short roadmap for Artemis, but at present all I can think of would be simplifying the code such that things are more stable. I would like to work on removing repetitive code in Artemis at sone point. It would take a lot of time and I would need to plan it out, but this work would make the software easier for me to understand while reading the code and therefore easier to maintain.</p><p>There are a few “red lines” for Artemis that I don’t want to cross. These are all essential philosophies of why the software exists. First, Artemis does and will not strive to refresh posts in real time. Second, I don’t want Artemis to become an inbox, so there are no unread counts. Third, I want Artemis to be a stepping stone, rather than a destination. Artemis should point you to sites you enjoy rather than trying to be the place where you go to read the web.</p><p>Regarding the question “Is there an upper limit on the amount of things a calm reader could do while still being calm?”, I think the answer is “yes”; the more features something has, the more complex it is. I am cognisant that having lots of user preferences will, over time, feel more overwhelming. To counter this I try to set as reasonable defaults as possible (and, related to the topic of <a href="https://jamesg.blog/2026/01/05/software-maintenance">software maintenance</a>, I need to revisit the defaults to make sure they are as good as they can be; I need to do a full run-through of using Artemis from sign-up to adding feeds to keep building my understanding of how the software works for new users).</p><h2 id="conclusion"><strong>Conclusion</strong></h2><p>The original question that motivated this post is prescient. I want to make software that is useful and makes people feel empowered. I think “calm” as a design philosophy is one part of this.</p><p>To keep following through on the reason Artemis exists – to provide a calmer way to follow websites you enjoy – means I need to continually consider that reason as I build the software. The obligation to be considerate in adding features is especially great because other people use the software. As a software author making something for other people, I want to make sure people have the experience they signed up for, and for that experience to persist over time.</p> Artemis “via” - James' Coffee Blog https://jamesg.blog/2026/02/23/artemis-via/ 2026-02-23T10:58:14.000Z <p>Recently, a feed a few users – including myself – were following with Artemis published a “bookmark”-like post. The markup in the corresponding feed was a bit different than expected, so Artemis ended up linking directly to the bookmarked post rather than to the author’s post itself.</p><p>I fixed the underlying bug in Artemis, but it left me thinking about an idea I have been considering for a while: should Artemis let users know when a post has a permalink that corresponds with a site other than the author’s?</p><p>I recently subscribed to a feed of bookmarks that someone published and had an idea: I could add “via” in the author’s name. So when they publish a post in this feed, dedicated to bookmarks, Artemis would show it as being published “via {their name}”. I liked this pattern but it meant that I had to proactively update bookmark feeds I follow to include “via” in the author name. And I would have to remember to do this when I followed other such feeds in the future.</p><p>This led me to develop a new feature: Artemis “via”. This feature shows “via” when Artemis thinks the permalink for a post is not the same as the site you are following. Here is what it looks like if a post in your reader links to a site other than the author’s:</p><img alt="" class="kg-image" loading="lazy" sizes="(min-width: 720px) 720px" src="https://editor.jamesg.blog/content/images/2026/02/artemisvia.png" srcset="https://editor.jamesg.blog/content/images/size/w600/2026/02/artemisvia.png 600w, https://editor.jamesg.blog/content/images/size/w1000/2026/02/artemisvia.png 1000w, https://editor.jamesg.blog/content/images/2026/02/artemisvia.png 1178w"/><p>Above there are three posts. The first post is published on the author’s site, so their author name appears as normal. The next two posts link to sites other than the author’s website that I am following. “(via)” appears before the author name when the entry links to another website. “(via)” is in italics which provides a subtle visual indication that Artemis has added this. Users can’t add italics to author names.</p><p>With the above "(via)" labels, I can see without clicking or hovering over a link that it will take me to another website.</p><p>The following things must be true for “via” to show up next to an author’s name for an entry:</p><ul><li>When your feed is calculated, the hostnames of all entries are calculated. The most popular hostname is found. If the number of posts with the most common entry name is not equal to the number of posts published in the author’s feed (as defined by how many days of posts you opt to show in your reader; ideally Artemis would look further back, but I still need to scope out this work) a given post in the author’s feed will be considered for a “via” label.</li><li>The entry URL hostname must be different than the feed’s domain for the entry to be considered for a “via” label.</li></ul><p>If both of these conditions are met, “(via)” shows up before the author’s name for an entry.</p><p>For example, if I have a feed <code>jamesg.blog/bookmarks</code> and the post permalinks in the feed point to <code>example.com</code> and <code>coffee.com</code>, my author name would appear as “<em>(via)</em> James’ Bookmarks” in Artemis.</p><p>This implementation accounts for an important edge case: some feeds may publish the same hostname for every entry but the feed URL itself has a different hostname. I saw this come up in the case of feeds for a blogging platform that supports custom domains; sometimes, the underlying feeds linked to the blogging platform itself rather than the custom domain.</p><p>Suppose I publish <code>jamesg.blog</code> and all posts use <code>jamesg.example.com</code> as the hostname. This would mean the first condition in the above bullet point list (a hostname for an entry must match the most popular hostname) would fail, so “via” would not show up. This means that if a site has a different hostname for all entries, “via” will not show up.</p><p>Without this condition, I saw sites that I knew to be linking to the right URL showing up as “via”. This is suboptimal: seeing “via” in cases where it is not applicable would be confusing.</p><p>The “via” logic is still very much under development: it may be the case that I need to come up with other heuristics. With that said, I think it is a good start. The overarching motivation is to make it more clear when an entry permalink points to an external site, as is common in the case of bookmark feeds. By adding “via”, Artemis can help users understand that what they are seeing is not going to be on the site they followed, but rather go to another site that the author they followed found interesting enough to put in their feed.</p> Interviews, interviews, interviews - Manuel Moreale RSS Feed https://manuelmoreale.com/@/page/wk8wbn3tt1ietpo7 2026-02-23T10:35:00.000Z <p>For some weird combination of factors, I ended up answering questions to three different people for three entirely unrelated projects, and all three interviews went live around the same time.</p> <p><a href="https://lazybea.rs/ovr-054/">I answered a few questions</a> for the <a href="https://lazybea.rs/overunder/">Over/Under</a> series run by <a href="https://lazybea.rs/">Hyle</a>. Love the concept, this was a lot of fun.</p> <p>I also answered a few questions from <a href="https://zacharykai.net">Kai</a> since he’s running a <a href="https://roadlessread.com/lists/iwc#host-interviews">great series</a> where he asks previous IndieWeb Carnival hosts to share some thoughts about the theme they chose.</p> <p>And lastly, Kristoffer asked me to talk a bit more about my most recent project/newsletter, <a href="https://buttondown.com/dealgorithmed">Dealgorithmed</a>, for his <a href="https://www.naiveweekly.com/p/unlocked-doors">Naive Weekly</a>, another newsletter you definitely want to check out because it’s fantastic.</p> <p>Click those links and check these projects; they’re all wonderful. And especially go check all the other interviews, so many wonderful people are listed on all three sites.</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>