~hedy's blogroll - BlogFlock The blogroll listed on my website. https://home.hedy.dev/blogroll/ 2026-04-06T18:24:26.108Z BlogFlock Seirdy, erock, James' Coffee Blog, Manuel Moreale RSS Feed, Sloum, Protesilaos Stavrou: Master feed with all updates, Ploum.net, ~hedy, Baty.net Monday, April 6, 2026 - Baty.net https://baty.net/journal/06Apr26/ 2026-04-06T16:56:47.000Z <figure><img src="https://baty.net/img/2026/2026-Roll-008_11.webp" alt="Black and white film photo of abstract sculpture"><figcaption>Sculpture in waiting room (2026). Olympus OM-1n. Zuiko 85mm f/2</figcaption></figure><p>I plan to avoid most news and all social media for a week. It's to the point where, between the daily barrage of horrible, incompetent people doing stupid, horrible things and the incessant misinformed chatter about all of it on social media, I'm going to lose my shit. I need a brief respite in order to reset.</p> <p>Since I'm mostly <a href="https://baty.net/posts/2026/04/macos-for-now/">only using macOS</a> right now, I've punted on the NetNewsWire &lt;--&gt; Miniflux connection. There has been something <em>off</em> about it for a while. I've moved all my NNW feeds into the iCloud synced collection and it's working better.</p> <p><a href="mailto:jack@baty.net?subject=[Baty.net] Re: Monday%2C%20April%206%2C%202026">✍️ Reply by email</a></p> 2026 Roll 008 (Olympus OM-1n) - Baty.net https://baty.net/posts/2026/04/2026-roll-008-olympus-om-1n/ 2026-04-06T16:35:08.000Z <p><a href="https://en.wikipedia.org/wiki/Jane_Bown">Jane Bown</a> is one of my favorite photographers. She commonly used an Olympus OM-1n with the Zuiko 85mm f/2 lens. I happen to have that exact setup, so I went Jane Bowning with a roll of HP5.</p> <!-- more --> <p>I'm no Jane Bown! As much as I love the viewfinder in the OM-1n, I could not seem to get a handle on focusing that lens. Nearly every frame was out of focus. To be fair, 85mm at f/2.0 or 2.8 doesn't leave much room for error, but still.</p> <figure> <img src="/img/2026/20260406-2026-roll-008/2026-Roll-004-28.jpg"> <figcaption>Mirror self-portrait</figcaption> </figure> <figure> <img src="/img/2026/20260406-2026-roll-008/2026-Roll-004-08.jpg"> <figcaption>Shuffleboard table in waiting room</figcaption> </figure> <figure> <img src="/img/2026/20260406-2026-roll-008/2026-Roll-004-19.jpg"> <figcaption>Sculpture in waiting room</figcaption> </figure> <figure> <img src="/img/2026/20260406-2026-roll-008/2026-Roll-004-45.jpg"> <figcaption>Grandson showing off while I screwed up the photo</figcaption> </figure> <p><a href="mailto:jack@baty.net?subject=[Baty.net] Re: 2026%20Roll%20008%20(Olympus%20OM-1n)">✍️ Reply by email</a></p> Alan Jacobs on the comment section - Baty.net https://baty.net/notes/2026/04/alan-jacobs-on-the-comment-section/ 2026-04-06T13:48:05.000Z <p><a href="https://blog.ayjay.org/comments/">Alan Jacobs on the Iron Laws of the Comment Section</a>:</p> <blockquote> <ol start="6"> <li>Those who have read and understood the post, whether they agree with it or not, will email you if they have something to say.</li> </ol> </blockquote> <p>All of the rules sound right, but that last one nails it. It's one reason why I have a &quot;Reply by email&quot; link instead of comments.</p> Emacs live stream for writing Denote tests and more on Monday 6 April @ 20:00 Europe/Athens - Protesilaos Stavrou: Master feed with all updates https://protesilaos.com/codelog/2026-04-06-emacs-spontaneous-live-tonight-denote/ 2026-04-06T00:00:00.000Z <p>[ The stream will be recorded. You can watch it later. ]</p> <p>Tonight I will work on my <code class="language-plaintext highlighter-rouge">denote</code> package. There is a feature branch I implemented this morning and am now ready to continue refining the code. The immediate goals:</p> <ul> <li>Update unit tests that are still calling deprecated functions.</li> <li>Write new tests, starting with the <code class="language-plaintext highlighter-rouge">denote-dired</code> command and all its ancillary functions.</li> <li>Review all the commands that filter the query buffers (which are produced by commands such as <code class="language-plaintext highlighter-rouge">denote-grep</code>, <code class="language-plaintext highlighter-rouge">denote-backlinks</code>, <code class="language-plaintext highlighter-rouge">denote-query-contents-link</code>).</li> <li>Edit the manual accordingly.</li> </ul> <p>I expect the stream to go on for 2-3 hours, but we will see.</p> <p>I will keep the chat open in case there are any comments. I am happy to respond to them.</p> Sunday, April 5, 2026 - Baty.net https://baty.net/journal/05Apr26/ 2026-04-05T16:50:41.000Z <figure><img src="https://baty.net/img/2026/20260405-stellas.webp" alt="Color film photo of the front of restaurant painted in a skull pattern"><figcaption>Stella&#39;s Lounge (2015). Olympus Stylus Epic / Fuji Superia</figcaption></figure><p>&quot;README-driven development&quot; is a phrase <a href="https://fedi.simonwillison.net/@simon/116350177326555134">Simon Willison</a> used and it's kind of perfect.</p> <p>I'll never understand why people get such a boner over ridiculing someone else's code. It's not a good look.</p> macOS for now - Baty.net https://baty.net/posts/2026/04/macos-for-now/ 2026-04-05T16:44:03.000Z <p>I've been using macOS exclusively for about a week and I'm a little embarrassed to admit how smooth things have felt. Not because of macOS specifically, but because I don't need to worry about keeping things set up and synced on Linux, too. I've been worrying about it a lot lately. More than that, I've spent a dizzying amount of time on it and taking a break from all that has been a relief.</p> <p>The advantage of using macOS is that all of the comfort food software I love is there. I get my photo processing workflow the way I like it. I get all my little utilities like PopClip and Keyboard Maestro and Alfred. I get Tinderbox and DEVONthink. I get dead-simple sync via iCloud and backups using Time Machine. Trying to replicate this is an unrealized dream for me when using Linux.</p> <p>There's a lot of friction introduced by managing two OSes on two or three computers. I don't enjoy it and I'm not sure it's worth the trouble.</p> <p>The benefits I get from Linux are real, but they are more about philosophical alignment than about practical day-to-day computing. I'm convinced that one day I'll switch fully to Linux, but I'm not quite ready yet.</p> Flowers; snow - James' Coffee Blog https://jamesg.blog/2026/04/05/snow-on-the-hills 2026-04-05T00:00:00.000Z <p>There were only one or two other patrons seated with a warm drink on this cool morning. For the first time in a few weeks, I got my favourite table. I’m not sure why it is my favourite, but it is the one I gravitated toward when the place opened. </p><p>When I looked out the window, I noticed that a few of the flowers in the hedge outside were starting to bloom. The red blossom took me back to this time last year when I was looking out at the same flowers. I thought about how much there is to see when you stay in the same place.</p><p>I don't know the name of the flowers, but I know someone who would: my grandmother. I have a memory of being a kid in the back of the car and her remarking on the weeping willows growing over the bridge in a small village. Now I know what weeping willows are too! I still have a long way to go, though: I know of the flowers on the hedge outside the coffee shop only as red flowers. I should take notes on the flowers and ask what kind they may be.</p><p>As the time passed, the rain started to fall outside. <em>Was that a snowflake?</em> I was cosy inside. There was a faint scent of cinnamon in the air which warmed my heart. I wrote down a few notes from my morning, sipping away on my decaf flat white as I did. Then, I caught the bus to go to my destination for the day.</p><p>Half-way through the journey, the rain turned into snow. I did see a snowflake! With every passing minute, the intensity of the snow grew. As we journeyed the luscious green hills became blanketed in white. I thought back to my memories of Winter, watching the snow fall.</p><p>Watching the snow fall, I was overjoyed and, at the same time, bewildered. I didn’t think I would be mesmerised by big snowflakes falling on the front window of the bus and being brushed away by the windscreen wipers. The snow kept falling. Then it was brushed away. Then more snow fell. And it kept going. I think part of my joy came from the surprise – of seeing the yellow sun beaming through my bedroom window only a few hours ago, and then seeing snow. And the other part of the joy came from my inner child: the part of me that sees snow and can’t help but be transfixed.</p><p>The snow didn’t fall for long – the skies are clear and blue. The sun shines through the window casting a golden light across the room. In my head and my heart I still feel the snow though, saving the memory and the feeling so that, for next year, I have another point of reference to help me navigate the seasons. Maybe, by then, I will know the name of the red flower too.</p> Saturday, April 4, 2026 - Baty.net https://baty.net/journal/04Apr26/ 2026-04-04T16:50:16.000Z <figure><img src="https://baty.net/img/2026/20260404-maximum-occupancy.webp" alt="Key hanging on wall next to maximum occupancy sign"><figcaption>Maximum Occupancy (2019). Leica M3 / Summicron 50mm / Tri-X @800 in HC-110 </figcaption></figure><p>I'm spinning today. I want to do everything at once.</p> <p>One of the things I did was completely revamp my Obsidian vault, with Claude Cowork's help. I wouldn't have done it without the help. Made the whole thing consistent, easy, and complete. Don't ask yet why I'm even looking at obsidian.</p> A couple of music devices - Baty.net https://baty.net/posts/2026/04/a-couple-of-music-devices/ 2026-04-04T16:40:05.000Z <figure><img src="https://baty.net/img/2026/20260404-music-devices.jpg" alt="A FiiO Echo and iPod Classic"><figcaption>The FiiO Echo Mini vs the iPod Classic</figcaption></figure><p>Last week I impulse-ordered a <a href="https://www.fiio.com/echomini">FiiO Echo Mini</a> because it's cute and isn't expensive.</p> <p>I've been listening to it daily. It's a fun and rather good audio player for the price, but as a device it is nowhere near in the same league as the iPod Classic. Maybe I'll pair it to the car and use it on the road. For around-the-house listening, the iPod wins.</p> E.B. White's morning decision - Baty.net https://baty.net/notes/2026/04/e-b-white-s-morning-decision/ 2026-04-04T11:18:38.000Z <blockquote> <p>If the world were merely seductive, that would be easy. If it were merely challenging, that would be no problem. But I arise in the morning torn between a desire to improve the world and a desire to enjoy the world. This makes it hard to plan the day.</p> <p><cite>E.B. White</cite></p> </blockquote> Emacs live stream with Sacha Chua on 2026-04-16 17:30 Europe/Athens - Protesilaos Stavrou: Master feed with all updates https://protesilaos.com/codelog/2026-04-04-emacs-live-with-sacha-chua/ 2026-04-04T00:00:00.000Z <p>The other day I had a coaching session with Sacha Chua. Sacha asked me if she could record and publish it, to which I agreed. More here: <a href="https://sachachua.com/blog/2026/04/yayemacs-10-emacs-coaching-with-prot-packaging-emacs-lisp/">https://sachachua.com/blog/2026/04/yayemacs-10-emacs-coaching-with-prot-packaging-emacs-lisp/</a>/.</p> <p>Our next meeting will be done live on the 16th of April 2026 at 10:30 America/Toronto, 17:30 Europe/Athens time: <a href="https://youtube.com/live/djE_pVlgDHg">https://youtube.com/live/djE_pVlgDHg</a>.</p> <p>I will check with Sacha how she imagines doing this. Though I am the laissez faire type, so will adapt as we go.</p> <p>[ Note that all my coaching sessions are private: I never share details of my meetings. This is an exception because Sacha asked me about it. ]</p> Saturday morning reading - James' Coffee Blog https://jamesg.blog/2026/04/04/saturday-morning-reading 2026-04-04T00:00:00.000Z <p>My warm breath steams up my glasses a little bit. I have my cold pillow resting on my chin. I’m still under the covers. I started my morning with a book, <em>Hot Chocolate on Thursday</em>, a cosy tale that took me to Japan and Sydney all without my leaving my bedroom. I love reading in the mornings, although of late I have been a bit too busy to read so early. Saturday mornings, however, are always there for reading.</p><p>The prospect of staying warm under the covers for a while longer was enticing – and the cold of the pillow was comforting, too – but the light of morning encouraged me to get up. I had no bread in the house so I went out for breakfast, another one of those things I haven’t done for a few Saturdays now. Going out to a coffee shop and getting breakfast is one of my favourite things to do. Reading there makes the experience even more special.</p><p>I packed my book and set off to go and get some breakfast and coffee.</p><p>On my journey I noticed the changes in the trees and the bushes. The winter branches were budding. The green of each bud, collectively, brought new life to the trees and bushes. <em>Spring is here.</em> The same white blossom tree that caught my eye a week or two ago is still in full blossom. I know, soon, too, the tree will be green. </p><p>After placing my order at the coffee shop, I sat down and unpacked my book. I have run out of bookmarks and so the inside of the dust jacket serves as my bookmark. Soon I will make my way through all the mangas and books I have started. This morning was my way of making a bit of progress to that end. <em>Decaf flat white for James.</em> I went and got my coffee then settled in with my book.</p><p>Moments later, I heard a voice I hadn’t heard for a while. The song on the radio. It took me only a few moments to realise which song it was: Brightside by the Lumineers. I started singing along to myself. I remember when the album came out. I haven’t listened to that song in so long. Just as it had been a while since I had been in a cafe, enjoying a coffee and reading a book that brings me joy.</p> Anthony Nelzin-Santos - Manuel Moreale RSS Feed https://manuelmoreale.com/@/page/aep4e1mcxbd65nef 2026-04-03T11:00:00.000Z <p>This week on the People and Blogs series we have an interview with Anthony Nelzin-Santos, whose blog can be found at <a href="https://z1nz0l1n.com">z1nz0l1n.com</a>.</p> <p>Tired of RSS? <a href="https://manuelmoreale.com/interview/anthony-nelzin-santos">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><em>Bonjour !</em> I’m a militant wayfarer, budding typographer, pathological reader, slow cyclist, obsessive tinkerer, dangerous cook, amateur bookbinder, homicidal gardener, mediocre sewist, and fanatical melomaniac living in Lyon (France). I was a technology journalist and journalism teacher for sixteen years, but i now work in instructional design.</p> <p>In my spare time, i take <a href="https://archityp.es/">photos of old storefronts</a> to preserve a rapidly fading typographical tradition. One of these days, i’ll finally finish the typefaces i’ve been working on forever. And my novel. And the painting of the bathroom. (My wife is a saint.)</p> <h2>What’s the story behind your blog?</h2> <p>I was born a few years before the web was invented and grew up at this fascinating time when everybody wanted to do something with it, but nobody knew quite what yet. We were still supposed to learn Logo and Pascal in technology class, but most of the teachers understood the importance of the web and taught us the basics of HTML and CSS. I built my first website in 2000… as a school assignment!</p> <p>By 2007, i was one of those insufferable tech bloggers who made enough money to feel entitled, but not enough to feel safe. (I moonlighted as a graphic designer.) When more established outlets came knocking at my door, i shut down my blog and became one of those insufferable tech journalists who make enough money to feel entitled, but not enough to feel safe. (I moonlighted as a journalism teacher.)</p> <p>I kept a personal blog under the “zinzolin” moniker. <a href="https://en.wikipedia.org/wiki/Zinzolin">This shade of purple</a> is my favourite colour, partly because it sounds a bit like my name. Over the years, it became more and more difficult to find the energy to write recreationally after having spent the day writing professionally. In 2025, feeling more than a little burnt out, i rebooted my blog and switched from French to English. Fortunately, the name is equally weird in both languages.</p> <h2>What does your creative process look like when it comes to blogging?</h2> <p>I don’t have a process so much as a way of managing the incessant chatter in my head. I write to give myself the permission to forget, and i publish to gift myself the ability to remember. You’ll never catch me without some way to capture those little “brain itches” — a notebook, the <a href="https://apps.apple.com/app/bloom-notes-daily-writing/id6443783029">Bloom</a> app, a digital recorder, the back of my hand… (I wrote part of this interview as a long series of text messages to myself!)</p> <p>In the middle of the week, i start reviewing my notes to find a common theme or extract the strongest idea. When an incomplete thought keeps coming back, i don’t try to force it by staring at a blinking cursor. I take a long walk, and usually, i have to stop part way to write. Most of the actual blogging is done long before i sit down to properly draft my weekly note.</p> <h2>Do you have an ideal creative environment? Also do you believe the physical space influences your creativity?</h2> <p>I have this romantic notion that the more comfortable i am, the more i can edit, the worse my writing tends to get. If i could, i’d write everything longhand in a rickety train, stream-of-consciousness style, and publish the raw scans of my notebooks. You wouldn’t be able to read half of it, but i can assure you the illegible half would be Nobel-prize worthy.</p> <p>But then, some things only happen after a few hours of diligent editing. If i give myself enough time, i can stop transcribing my notes and start conversing with them. There’s always something worth exploring in the gap between our past and present selves – even if the past was two days ago – but that delicate work requires a conducive environment.</p> <p>Judging by my recent output, it looks like this environment comprises <a href="https://www.vitsoe.com/eu/620">a good chair</a>, a MacBook Air on one of those ugly lap desks, <a href="https://github.com/anthonynelzinsantos/QWeuRTY">my custom international QWERTY layout</a>, <a href="https://ia.net/writer">iA Writer</a> for writing and <a href="https://www.antidote.info/en/">Antidote</a> for proofreading, cosy lighting, just the right amount of background noise, and most important of all, a pot of delicious coffee.</p> <h2>A question for the techie readers: can you run us through your tech stack?</h2> <p>I’ve tried pretty much every CMS and SSG under the sun, but i’ve always come back to WordPress, until Matt Mullenweg reminded us that a benevolent dictator <a href="https://www.theverge.com/2024/9/27/24256361/wordpress-wp-engine-drama-explained-matt-mullenweg">still is a dictator</a>. <em>Z1NZ0L1N</em> is now built on <a href="https://ghost.org/">Ghost</a> and hosted by <a href="https://www.magicpages.co?aff=28KZ2RKopuJG">Magic Pages</a>. </p> <p>I used to use <a href="https://tinylytics.app">Tinylytics</a> and <a href="https://buttondown.com">Buttondown</a>, but i’m now using Ghost’s integrated analytics and newsletter features. My other websites are hosted on a VPS with <a href="https://www.infomaniak.com/goto/fr/home?utm_term=5fd3bff1d1501">Infomaniak</a>, which is also where i get my domain names, e-mail, and assorted cloud services.</p> <h2>Given your experience, if you were to start a blog today, would you do anything differently?</h2> <p>That’s a question i had to ask myself when i rebooted <em>Z1NZ0L1N</em> last year. I switched to English in a bid to better separate my professional output from my recreational output. I jettisoned most of my audience, but i found a new community around the <a href="https://indieweb.org/IndieWeb_Carnival">IndieWeb Carnival</a> and quickly rebuilt a readership on my own merits. I get excited each time i get an e-mail from someone i don’t know from a country on the other side of the globe.</p> <p>I wanted to find a way to publish regularly without turning <em>Z1NZ0L1N</em> into the umpteenth link blog. After a few experiments, i’ve settled on a weekly note that’s part “what i’m doing”, part “what the rest of the world is doing”. This is old-school blogging meets recommendation algorithms — and i love it.</p> <p>Some things haven’t changed, though, and will never change. I use an open-source CMS that i could host myself, not a proprietary platform that i can’t control. I designed my theme myself. I don’t play the SEO/GEO game.</p> <h2>Financial question since the Web is obsessed with money: how much does it cost to run your blog? Is it just a cost, or does it generate some revenue? And what’s your position on people monetising personal blogs?</h2> <p>I pay a little less than €10/month for Magic Pages’ starter plan with the custom themes add-on. Considering that it saves me €15/month in third-party services, i’d say it’s a fair price. I pay €12/year for the <code>z1nz0l1n.com</code> domain, but i also registered a few variations, including <code>zinzolin.fr</code>, which was first registered in 1999! Blogging is my least expensive hobby — by far.</p> <p>As someone who’s worked a lot on the economics of independent publishing, i’m happily subscribed to a few news outlets and magazines. I like the idea of $1/month memberships for blogs, but in practice, i find it hard to track multiple micro-subscriptions on top of my existing (and frankly far too numerous) digital subscriptions.</p> <p>I wonder if we should create blogging collectives, almost like unions and coops, to collect and redistribute a single subscription in between members. In the meantime, i’ll continue not talking about <a href="https://ko-fi.com/z1nz0l1n">my Ko-Fi page</a>.</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><a href="https://theforest.link">The Forest</a> and <a href="https://chronosaur.us/">Ye Olde Blogroll</a> are fantastic discovery tools. A lot of my favourite bloggers have already been featured in <em>People and blogs</em>: VH Belvadi, BSAG, Frank Chimero, Keenan, Piper Haywood, Nick Heer, Tom McWright, Riccardo Mori, Jim Nielsen, Kev Quirk, Arun Venkatesan, Zinzy… I’d love to see how <a href="https://v7.robweychert.com/blog/">Rob Weychert</a>, <a href="https://chrisglass.com">Chris Glass</a>, <a href="https://thenewsprint.co">Josh Ginter</a> or <a href="https://melanie-richards.com">Melanie Richards</a> would answer. Their approach to blogging couldn’t be more different, but they each informed mine in their own way.</p> <h2>Final question: is there anything you want to share with us?</h2> <p>Since 2008, i’ve taken thousands of photos of old storefronts. It began as a way to inform my typographical practice, but it rapidly became an excuse to go out and pay attention – really pay attention – to the world around me. You wouldn’t believe the things i’ve discovered in side streets, the number of conversations i’ve struck after taking a picture of a once-beloved shop, and how my way of looking at the evolution of cities has entirely changed.</p> <p>If you’re up for a little challenge, find your own collection. It might be cool doors, weird postboxes, triangular things, every <a href="https://www.everybookshopinnovascotia.com">bookshop in Nova Scotia</a>, sewer manholes, purple things, number signs… It’ll give you another perspective not only when travelling in foreign places, but also on your (not so) familiar surroundings. It doesn’t cost a penny, but it’ll pay off immensely.</p> <hr> <h3>Keep exploring</h3> <p>Now that you're done reading the interview, <a href='https://z1nz0l1n.com'>go check the blog</a> and <a href='https://z1nz0l1n.com/rss/'>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'>135 interviews</a>.</p> <p>People and Blogs is possible because kind people support it.</p> 3D-printed cameras - Baty.net https://baty.net/notes/2026/04/3d-printed-cameras/ 2026-04-03T10:34:58.000Z <p><a href="https://printed.analogcamera.space/">printed analog camera space</a></p> <p>Good lord, just look at all the 3D-printed cameras! I had no idea.</p> <p>(via <a href="http://82mhz.net/posts/2026/04/linkdump-no-101/">82MHz</a>)</p> Friday, April 3, 2026 - Baty.net https://baty.net/journal/03Apr26/ 2026-04-03T09:31:13.000Z <figure><img src="https://baty.net/img/2026/20260402-couple.webp" alt="Black and white film photo of couple with small dog sitting on pier"><figcaption>Couple on Pier. Grand Haven, MI (2023). Leica MP / Summilux-M 35mm</figcaption></figure><p>Much of yesterday was swallowed by <a href="/posts/2026/04/eleventy/">converting this blog</a> from Hugo to Eleventy (Like Twitter, I'll probably never <a href="https://www.11ty.dev/blog/build-awesome/">call it Build Awesome</a> 🙄). I wondered if I'd wake up today feeling like I'd made a mistake. So far, I don't miss Hugo. It's only been a day, though. Whether I continue to like the <em>design</em> is another story. I meant for it to be basic and simple, then decided to put everything on the home page. I like the individual pages, but home is pretty messy. That's probably OK, since most people read this via RSS anyway.</p> Emacs: new sequence scheme for the ‘denote-sequence’ package - Protesilaos Stavrou: Master feed with all updates https://protesilaos.com/codelog/2026-04-03-emacs-denote-sequence-new-alphanumeric-delimited-scheme/ 2026-04-03T00:00:00.000Z <p>The <code class="language-plaintext highlighter-rouge">denote-sequence</code> package is an optional extension to <code class="language-plaintext highlighter-rouge">denote</code> that empowers users to write “sequence notes”, else “folgezettel”, in the style of Niklas Luhmann.</p> <p>Sequence notes are created in relation to other notes, as parent, child, or sibling. <code class="language-plaintext highlighter-rouge">denote-sequence</code> communicates such relationships by writing a “sequence” to the file name, in accordance with the Denote file-naming scheme (technically, it uses the optional <code class="language-plaintext highlighter-rouge">SIGNATURE</code> component of the file name, which is defined as a free-form field for users to use as they see fit—so this is just one application of it).</p> <h2>The package supported two schemes before</h2> <p>The exact presentation of such sequences is subject to the user option <code class="language-plaintext highlighter-rouge">denote-sequence-scheme</code>. The package has hitherto supported two schemes, the <code class="language-plaintext highlighter-rouge">numeric</code> and <code class="language-plaintext highlighter-rouge">alphanumeric</code>.</p> <p>In the numeric scheme, each level of depth is delimited by the equals sign. The sequence <code class="language-plaintext highlighter-rouge">1=2=3</code> thus has three levels of depth. It means “the third child of the second child of the first parent”.</p> <p>By contrast, the alphanumeric scheme relies on the alternation between numbers and letters to communicate levels of depth. The above example is thus expressed as <code class="language-plaintext highlighter-rouge">1b3</code>.</p> <h2>The new <code class="language-plaintext highlighter-rouge">alphanumeric-delimited</code> scheme</h2> <p>Many users have told me that the alphanumeric scheme looks cleaner. Though I think it is hard to read when sequences get really long, like <code class="language-plaintext highlighter-rouge">2a13c6d2a</code>. To this end, the new sequence scheme augments the alphanumeric style with delimiters that are placed after the first level of depth and every third level of depth thereafter. Thus: <code class="language-plaintext highlighter-rouge">2=a13=c6d=2a</code>.</p> <p>Users may find this easier to work with.</p> <h2>Remember the <code class="language-plaintext highlighter-rouge">denote-sequence-convert</code> command</h2> <p>This command has been part of the package since its inception. It can convert from one sequence scheme to the others.</p> <p><code class="language-plaintext highlighter-rouge">denote-sequence-convert</code> has a “do what I mean behaviour” with regard to which file or files it should operate on:</p> <ul> <li> <p>When called from inside a file with a Denote sequence, it operates on the current file.</p> </li> <li> <p>When called from a Dired buffer, it operates on all the marked files.</p> </li> <li> <p>When there are no marked files in the Dired buffer, it operates on the file at point.</p> </li> </ul> <p>The target sequence scheme for the conversion is whatever is assigned to the user option <code class="language-plaintext highlighter-rouge">denote-sequence-scheme</code>. If, however, <code class="language-plaintext highlighter-rouge">denote-sequence-convert</code> is called with a prefix argument (<code class="language-plaintext highlighter-rouge">C-u</code> by default), then it will prompt for the target sequence scheme.</p> <h2>Coming in version 0.3.0</h2> <p>I just merged the code into trunk. Users who are building the package from source can try the new feature right away. Otherwise, it will be available in the next stable version of the package. I hope to have that ready some time in mid-April.</p> <ul> <li>Package name (GNU ELPA): <code class="language-plaintext highlighter-rouge">denote-sequence</code></li> <li>Official manual: <a href="https://protesilaos.com/emacs/denote-sequence">https://protesilaos.com/emacs/denote-sequence</a></li> <li>Git repository: <a href="https://github.com/protesilaos/denote-sequence">https://github.com/protesilaos/denote-sequence</a></li> <li>Backronym: Denote… Sequences Efficiently Queue Unsorted Entries Notwithstanding Curation Efforts.</li> </ul> Eleventy - Baty.net https://baty.net/posts/2026/04/eleventy/ 2026-04-02T17:39:52.000Z &lt;blockquote class=&quot;callout&quot;&gt; &lt;p&gt;&lt;strong&gt;It has been &lt;span style=&quot;font-size: larger&quot;&gt; 0 &lt;/span&gt; days since I changed blogging platforms on baty.net.&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt; &lt;!-- more --&gt; &lt;p&gt;Hugo and I go way back, and our relationship has been tumultuous at times. Sometimes I get mad at it for introducing yet another breaking change. Sometimes I&#39;m bored with it. Sometimes I get frustrated with the way things work (or don&#39;t). All three of those came up for me this week, so I did something about it.&lt;/p&gt; &lt;p&gt;Rather than fix what was broken, I completely revamped site using &lt;a href=&quot;https://www.11ty.dev&quot;&gt;Eleventy&lt;/a&gt;. I&#39;ve made passes at it like this before, but this time I started from scratch and, with a bit of robot help, made it about as simple as I could.&lt;/p&gt; &lt;p&gt;All the content has been migrated. I&#39;ve tried to keep URLs the same as before. Post and Journal URLs should be good. Notes might break, though, sorry.&lt;/p&gt; &lt;p&gt;I&#39;m missing a few things yet, but I&#39;m started to lose momentum today. I did all this in half a day, but I need a break. I&#39;m going to deploy it, since that will motivate me to finish.&lt;/p&gt; &lt;p&gt;It&#39;s deliberately simple, theme-wise. I may have gone too far by include all content types on the home page, but we&#39;ll see how it settles in.&lt;/p&gt; &lt;p&gt;Let me know if you hate it or if anything is broken.&lt;/p&gt; Paul Ford on The Ghost Effect - Baty.net https://baty.net/notes/2026/04/paul-ford-on-the-ghost-effect/ 2026-04-02T17:24:03.000Z &lt;p&gt;&lt;a href=&quot;https://mailchi.mp/aboard/zkd26k8jzm-10345011?e=903e56dc11&quot;&gt;The Ghost Effect&lt;/a&gt;:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;That said, for $200 a month (or $20), you have a team of cybercriminals on tap that you can call at any time. You are now an absolute elite hacker, if you take time to learn some basics. Congratulations! Seeing state-level cyberweapons become a commodity is kind of a new thing, and I thought you should know about it.&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;It&#39;s a wild world out there. I&#39;m a little nervous about it.&lt;/p&gt; Using my edit button shortcut - James' Coffee Blog https://jamesg.blog/2026/04/02/using-my-edit-button-shortcut 2026-04-02T00: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>In 2025 I built a <a href="https://jamesg.blog/2025/05/21/building-an-edit-button-browser-extension">browser extension that adds an edit button to your browser</a>. The edit button pages if a page either has:</p><ul><li>A <code>rel=edit</code> link;</li><li>A custom edit link set in the extension preferences, or;</li><li>A link with an anchor like “edit page” (only available if you enable the setting, since this is a heuristic).</li></ul><p>Back when I built the extension, I added in a keyboard shortcut to open the edit link associated with a page. On Mac, the shortcut is Command + Shift + E.</p><p>I forgot all about this shortcut until recently, when I accidentally pressed Command + Shift + E instead of Command + Shift + R, the shortcut to refresh a page. At first, I was surprised, but the mis-press gave me the reminder I needed that this feature exists.</p><p>Since then, I have been using the Command + Shift + E shortcut almost daily to edit pages on my website.</p><p>I like that the shortcut has a similar hand position to refreshing, a shortcut that I find relatively comfortable to use. I also like that the shortcut only requires use of my left hand, so that I can press the edit button while using my mouse to navigate to my next task.</p><p>My flow to edit a page now usually looks something like this:</p><ul><li>Go to a page on my website (i.e. my <a href="https://jamesg.blog/software-notes" rel="noreferrer">software notes page</a>).</li><li>Press Command + Shift + E.</li><li>Ghost opens in my browser.</li><li>I use my mouse to navigate to Apple Notes, where I usually have notes I want to copy onto my website.</li><li>I use my mouse to go back to Ghost where I paste in my notes and organise and develop them a bit where necessary.</li><li>I save my edits.</li></ul><p>While I could also use the mouse to press the edit link button that appears in my browser, the shortcut is so convenient.</p><p>The irony is that I forgot the shortcut existed until I accidentally encountered it. Indeed, overall, I struggle with remembering keyboard shortcuts beyond the basics (copy, paste, quit, refresh), preferring to opt for a menu or another visible affordance. But the edit keyboard shortcut is now becoming one I use regularly so it is increasingly etched into my memory. I think there was a gap to bridge between adding the shortcut as a feature in the development process and making a habit around its use.</p> <a class="tag" href="https://jamesg.blog/2025/05/21/building-an-edit-button-browser-extension">browser extension that adds an edit button to your browser</a> <a class="tag" href="https://jamesg.blog/software-notes">software notes page</a> Prot Asks: Hjalmar about Emacs for music, the joy of art, and Internet sociability - Protesilaos Stavrou: Master feed with all updates https://protesilaos.com/prot-asks/2026-04-02-hjalmar-emacs-music-joy-art-internet-sociability/ 2026-04-02T00:00:00.000Z <p>In this 2-hour video, I talk with Hjalmar about using Emacs to write music, the joy of artistic expression, and sociability in the Internet era.</p> <p>Hjalmar is a viola player and composer who currently studies composition at the Norwegian Academy of Music. We start our discussion with me asking how it is to study music. I learn about Hjalmar’s experiences in that regard.</p> <p>Hjalmar writes music in Emacs using a setup that involves Org, the Org Babel system, and the LilyPond music notation. Hjalmar describes in further detail how this process works.</p> <p>I was curious how Hjalmar discovered Emacs to learn that it was a hobby that developed during the Covid pandemic. We discuss how even though Emacs is known as a programmer’s tool, it is equally capable for people who do not write code, such as musicians, academics, and journalists. A large part of that is Org and its wider ecosystem of extended functionality.</p> <p>I ask about Hjalmar’s creative process. It is an iterative process of accumulating lots of pieces and then jumbling them to produce a result. Hjalmar will typically settle for the second version, given that it is an attempt to address all the mistakes of the first draft.</p> <p>A large part of our exchange is about the process of artistic expression. Hjalmar is interested in creating playful interactions with the audience, to blur the lines between what is and what is not music, and to make everyone present a participant. I learn more about how this works and the relevant ideas that inform the approach.</p> <p>The other big theme of our talk is the human experience in the context of digital technology and the Internet. This is about artistic stimuli as well as interpersonal affairs. We discuss the community aspect of art and how that relates to the feelings of connection and creativity. The gist is how we benefit from face-to-face interactions in ways that our technology cannot replicate.</p> <h2>Links from Hjalmar</h2> <ul> <li>Personal website: <a href="https://hjalmarbjerner.com/">https://hjalmarbjerner.com/</a></li> <li>YouTube channel: <a href="https://youtube.com/@hjallis22">https://youtube.com/@hjallis22</a></li> </ul> <h2>About “Prot Asks”</h2> <p>In this video series, I talk to anybody who is interested to have a video call with me (so do contact me if you want!). The topics cover anything related to Emacs, technology, and life in general. More here: <a href="https://protesilaos.com/prot-asks">https://protesilaos.com/prot-asks</a>.</p>