❌

Normal view

  • βœ‡James' Coffee Blog
  • Rewriting
    This weekend I started work on rewriting the static site generator that I use for this website, Aurora. I was looking over the codebase and wondered if I could make the code a bit more efficient and easier to understand. I had ideas for new abstractions – things I could do to reduce the amount of code needed.One of the areas I wanted to improve on was the logic for generating category and date pages. The existing version of Aurora had large functions that generated these pages. This weeke
     

Rewriting

17 March 2026 at 00:00

This weekend I started work on rewriting the static site generator that I use for this website, Aurora. I was looking over the codebase and wondered if I could make the code a bit more efficient and easier to understand. I had ideas for new abstractions – things I could do to reduce the amount of code needed.

One of the areas I wanted to improve on was the logic for generating category and date pages. The existing version of Aurora had large functions that generated these pages. This weekend I realised I could create what I have been thinking of as a “virtual page”, which is basically adding the category name to the list of templates to be generated with an identifier that the page is a category page.

While the rewrite doesn’t have several of the features in the current version – and for this reason, as well as incompatibilities with how templates are generated, I have not yet open sourced the code – the code works well for the use case I have in mind right now (this website!). Importantly, I had a lot of fun with the rewrite, challenging myself to figure out how to reduce the number of lines of code in the project while keeping the code clear.

This is the third time I have written a static site generator. Every time I have rewritten the code, my code has been shorter. I think it is because I understand the problem better every time I do a rewrite, and every time I come with new knowledge about programming.

Looking through the current Aurora codebase, I realised there were features I really like too: the hooks API that lets you “hook into” the generator and process templates with your own Python logic works well. In cases where I really liked how a feature was designed, I brought it into the new codebase.

On the topic of rewriting, a few weeks ago I removed almost 1,000 lines of code from the Artemis codebase by creating a better abstraction for forms. The codebase had a lot of repetitive code that came from copy-pasting form boilerplate; one abstraction allowed me to reduce a significant amount of repetition.

I don’t have a timeline for releasing an update to Aurora. This was more a project for me to practice my skills. I started with a few ideas that I wanted to explore and ended with implementations of those ideas. And: my new generator is now running this blog! If any pages don’t look right, please let me know.

Aurora
  • βœ‡James' Coffee Blog
  • Starting; playing; maintaining
    I think back to how I used to think about how my finger tips would hurt if I learned to play the guitar. I was right: my fingers do get a bit sore. But with practice playing for longer gets easier. I am so glad I started to play.I have been continuing to learn new Taylor Swift songs lately, singing along where I can. Because I have only been playing for a few months, every song has something challenging to practice: singing with the strumming pattern that fits with the song, moving between two
     

Starting; playing; maintaining

17 March 2026 at 00:00

I think back to how I used to think about how my finger tips would hurt if I learned to play the guitar. I was right: my fingers do get a bit sore. But with practice playing for longer gets easier. I am so glad I started to play.

I have been continuing to learn new Taylor Swift songs lately, singing along where I can. Because I have only been playing for a few months, every song has something challenging to practice: singing with the strumming pattern that fits with the song, moving between two chords, using a chord I don’t use much. I love when I am playing and I realise I am getting the hang of something that was difficult and is now getting easier. This is learning.

Last week I started to learn The Bolter, one of my favourite Taylor Swift songs. That was one of the surprise songs Swift played on the night I went to the Eras Tour in Edinburgh. I didn't know many of the words to the song that night, but I sang with all the passion I have the words that I did know.

This week I want to try and learn a song by The Revivalists, an indie band whose music I love. I tried to start playing a song by The Revivalists yesterday but I broke a guitar string early into the song. Ironically, I later went to listen to a few songs by The Revivalists and their lead musician broke a guitar string during the performance; it seems part of playing.

When I broke my first guitar string a few weeks ago, the thought of changing it was a bit overwhelming. Thankfully, Fender has a video online that demonstrates how to change a guitar string. I am still learning how to do it, but I am sure I will become more proficient with practice. In repairing a string, the guitar feels a bit more like it is mine. I maintain my guitar so it sounds its best when I play.

  • βœ‡James' Coffee Blog
  • Sparking joy
    I am trading blog post titles with Frances. Frances wrote Where art exists in my life. I will be writing “Sparking joy”.On the top right corner of my bedroom whiteboard, written in orange pen – one of my favourite colours! – reads:Have a great day xxxWhenever I read this message, added a few days ago, I smile a little bit.The whiteboard is positioned in front of my bed, next to the door. This means I have many opportunities to see what is written on the whiteboard: when
     

Sparking joy

17 March 2026 at 00:00

I am trading blog post titles with Frances. Frances wrote Where art exists in my life. I will be writing “Sparking joy”.

On the top right corner of my bedroom whiteboard, written in orange pen – one of my favourite colours! – reads:

Have a great day xxx

Whenever I read this message, added a few days ago, I smile a little bit.

The whiteboard is positioned in front of my bed, next to the door. This means I have many opportunities to see what is written on the whiteboard: when I wake up, when I am going to sleep, when I am moving around.

I write messages that make me smile every so often on my whiteboard; whenever I think I need an extra bit of cheering up, I’ll write something down. The little things – those small notes: smiley faces, “have a great day”, “you matter” – make all the difference.

Through the power of blogging, I can share a little moment that brings me joy with you, dear reader. Oh! how wonderful the web can be.

_Frances_ _Where art exists in my life_
  • βœ‡James' Coffee Blog
  • Blossom
    When I write about nature, I sometimes go to my archives and search for what phenomena I am thinking about. I was looking at my previous posts on blossom and saw that I last wrote about the topic on the 5th of April, 2025. I started my post with “One of my favourite times of the year is when trees blossom.” These words are as true today as they were when I first wrote them. I am always glad when I write about nature; I can save a moment for future James to read. The seasons are refl
     

Blossom

17 March 2026 at 00:00

When I write about nature, I sometimes go to my archives and search for what phenomena I am thinking about. I was looking at my previous posts on blossom and saw that I last wrote about the topic on the 5th of April, 2025. I started my post with “One of my favourite times of the year is when trees blossom.” These words are as true today as they were when I first wrote them. I am always glad when I write about nature; I can save a moment for future James to read. The seasons are reflected in the dates in my archive.

The tips of the branches on the trees outside my flat are starting to turn pink. Soon there will be blossom! My excitement to see the first pink leaves emerge from the buds grows with every passing day. It may still be a few weeks before the tree fully blossoms; Nature sets its own pace. Nevertheless, like the anticipation that comes from knowing the scent of coffee in the morning means you will soon drink coffee, the changing colour of the trees from winter to spring means that, soon, the trees will be full of blossom leaves.

Some trees have already started to blossom. I noticed a tree with white blossom while idly gazing through the bus window this weekend; the moment made me smile. On a walk last week I stopped to look up close at a tree and study the colour, eager to see if any petals have yet emerged.

I find myself thinking about the trees I know that have pink blossom – those in my neighbourhood, and those in the city – as well as those that are a surprise and a delight to see. I could draw a map of several blossom trees I know; namely, those that I study every year: the ones I keep coming back to because they are close or in a place steeped with meaning and memory.

Blossom is a magnet in spring: the colour, the meaning, the rhythm all call out in Nature’s silent tone. Spring is almost here. Then, with time: Spring is here.

  • βœ‡James' Coffee Blog
  • Ideas for managing post volume in web readers
    As I subscribe to more web feeds, I am starting to think about whether there are features that a “calm” web reader should have that are designed specifically for managing the number of posts in one’s reader.I recently introduced Artemis roll-up to “roll up” a week’s posts from an author into a single list that is added to a user’s feed once per week. This was designed to help reduce the risk of feeling overwhelmed if you subscribe to authors that post s
     

Ideas for managing post volume in web readers

17 March 2026 at 00:00

As I subscribe to more web feeds, I am starting to think about whether there are features that a “calm” web reader should have that are designed specifically for managing the number of posts in one’s reader.

I recently introduced Artemis roll-up to “roll up” a week’s posts from an author into a single list that is added to a user’s feed once per week. This was designed to help reduce the risk of feeling overwhelmed if you subscribe to authors that post several times per day.

Since then, I have had a few more ideas related to managing post volume in web readers. I have not yet added many of the ideas I have recently to Artemis, but I wanted to document my ideas so that I can: (i) share them with you, and; (ii) think through them a bit more. My ideas are below.

Timed subscriptions

I have noticed that I sometimes follow a website because I see a good blog post. I sometimes realise a week or two later that I am not interested in seeing all the posts from the website in my reader. After realising this, it sometimes takes me a few days to remove an author from my reader. It is only when I realise the number of posts in my reader is getting higher that I end up unsubscribing.

This gave me the idea of a “timed subscription”: a feature that would let you follow an author for a specified number of days and then receive a notification to ask whether you still want to follow the author. This would allow me to follow an author and also have a prompt to evaluate whether I still want to follow their website after a few days. For me, if I hadn’t read any of the posts from the author since I subscribed, this is a good signal I would want to end my timed subscription.

Pausing subscriptions

Sometimes I want a break from a web feed without having to unsubscribe. This made me think about the idea of “pausing” a subscription. I have since added this feature to Artemis, accessible in the Author settings page. When you pause a subscription, you will stop seeing posts from the paused author until either: (i) you unpause the subscription, or; (ii) the pause period is over. [^1]

Hide posts on the weekend

I had this idea earlier today so it is a bit raw. The premise is that you may not want to see some kinds of content on a weekend. For example, if you follow news sources you may want to hide them on the weekend so that personal websites can take up more space in your web reader interface. This idea related to the idea of a “paused” subscriptions, except this idea makes the pause recurring (i.e. every weekend).

Rate limiting

Back when I first made Artemis, I added a feature that would let you see only the top n most recent posts from a author published on a day (i.e. top post, top three posts, top ten posts), n random posts, or the top n posts in terms of how high they appear in the source feed file. The idea was to add a “rate limit” for web sources that publish regularly (i.e. Subreddit RSS feeds, which may publish dozens of posts in a day).

Artemis no longer supports this feature because it needed to be reworked after a refactor. But, I still like the idea. For example, I am following a Tumblr account that publishes pictures of paintings and art. I love the account. But it posts too frequently. Ideally, a random post or two is chosen every day to appear in my reader. I should be able to set how many posts I want to see.

Grouping by main post

This idea started with a narrow edge case. I saw someone whose blog I follow publish a blog post. I also follow their Mastodon account, where they posted an announcement for their post. Ideally, a web reader would group the announcement under the main post in the reader interface so that: (i) I still know there is some information on, for example, Mastodon, and; (ii) the blog post itself is prioritised in the reader interface.

Conclusion

This post summarises a few ideas I have had lately about what a web reader could do to help people manage the volume of posts in a web reader interface. As I reflect on this piece, I realise there is a relationship in my mind between a “calm” approach to a technology and user agency. All of the features above give a user control over what posts they see, when they see the posts, and for how long they may see posts from an author. Indeed, technology should be for people. The more control a user has over a technology, the more potential that technology has to feel calm. [^2]

[^1]: Artemis doesn’t technically have an “unpause” button yet; to unpause you need to set the paused date to any date in the past. I will need to add an “unpause” button explicitly so the user experience for unpausing a subscription is more explicit.

[^2]: The opposite – a technology where someone has little control, especially when control is wanted – feels restrictive at best; the downsides of a lack of control range from significant to chilling.

Tumblr account that publishes pictures of paintings and art Artemis roll-up
❌