❌

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
  • βœ‡James' Coffee Blog
  • Library memories
    One of the ideas Frances shared when we exchanged blog post titles was to write about a memory from a library. While the prompt “Sparking joy” is the one I ended up writing about, as soon as I started to think about library memories a few ideas came to mind. One memory in particular stands out.Last year I visited Philadelphia. At the time, I wrote about my experience at the Barnes Foundation, a museum that got me thinking about how a piece of art relates to the objects around the ar
     

Library memories

18 March 2026 at 00:00

One of the ideas Frances shared when we exchanged blog post titles was to write about a memory from a library. While the prompt “Sparking joy” is the one I ended up writing about, as soon as I started to think about library memories a few ideas came to mind. One memory in particular stands out.

Last year I visited Philadelphia. At the time, I wrote about my experience at the Barnes Foundation, a museum that got me thinking about how a piece of art relates to the objects around the artwork. The Barnes Foundation is on the Benjamin Franklin Parkway, a long stretch of road in the centre of the city. At both sides of the road are museums: the Barnes Foundation, Rodin Museum, The Franklin Institute. The road leads to the Philadelphia Museum of Art. [^1] Museums everywhere!

Also on that stretch of road was the Parkway Central Library run by the Free Library of Philadelphia. Between the tall pillars at the front of the building – a building with grand architecture – there were banners that together read “FREE LIBRARY”. Intrigued by the architecture, the message, and my love of libraries, I went in and walked around, enjoying the exhibits in the hallway.

A building with classical architecture with purple banners that read "Free Library".
A building with classical architecture with purple banners that read "Free Library".

I remember one exhibition vividly. On the top floor, where the reading rooms are, there were glass exhibition cases that surrounded the large taking visitors back to the ground floor. One of the pieces of paper in one of the glass cases was mainly black, save for a few words. This, I later learned, was an example of blackout poetry. As far as I can remember, this was my first time seeing blackout poetry. Several months after the trip, I was inspired to make a web page that adds blackout areas to text on the web page.

On that trip, I saw lots of art in museums. I even learned that Winston Churchill liked to paint; one of his artworks was on display in the Philadelphia Museum of Art. But the blackout poetry still stands out to me. It stood in contrast to all the other exhibitions: the amount that was hidden caught my eye by the black on the paper. My attention caught, the poetry invited me to focus on what the author had chosen to make visible, demonstrating how, when seen through the right lens, poetry can be in the most unexpected of places.

[^1]: The steps that lead up to the museum were made famous in the movie Rocky.

^1]: The [steps that lead up to the museum _Frances_ Barnes Foundation _Sparking joy_ adds blackout areas to text on the web page
  • βœ‡James' Coffee Blog
  • Space
    Two years ago, I visited Greenwich in London. I had been to London before, but Greenwich was that bit further out so I hadn’t made the trip. What drew me to Greenwich was the Royal Observatory and the Prime Meridian line. The day I visited, I had great joy standing over the Prime Meridian line, thinking I had one foot in one meridian and one foot in another.The Royal Observatory was fascinating. I remember vividly some of the clocks and timepieces I saw. There, I learned about the connect
     

Space

18 March 2026 at 00:00

Two years ago, I visited Greenwich in London. I had been to London before, but Greenwich was that bit further out so I hadn’t made the trip. What drew me to Greenwich was the Royal Observatory and the Prime Meridian line. The day I visited, I had great joy standing over the Prime Meridian line, thinking I had one foot in one meridian and one foot in another.

The Royal Observatory was fascinating. I remember vividly some of the clocks and timepieces I saw. There, I learned about the connection between time and the sea. Celestial navigation. Ships can use clocks to more accurately calculate where they are in the world.

I remember vividly the physical spaces in that museum: the spacious interior of the observatory dome, the equipment at the Prime Meridian line, the display cases with various time pieces. I remember the joy I felt at seeing different clocks. I remember in what direction I was looking. Even if the details of a specific exhibit allude me, I remember the place where I stood when I saw it.

After visiting the Royal Observatory, I walked down the hill and went to the National Maritime Museum. While a maritime museum is not as interesting to me as an art gallery, I heard from a friend that the award winning pictures from the Astronomy Photographer of the Year competition were on display in one of the galleries.

One of the things I love about museums is that one exhibit can draw you in and, hours later, you can find yourself with a new interest. The Astronomy Photographer of the Year exhibition was my anchor. From there, I wandered around the museum and explored other exhibits. I learned so much: of voyages to the arctic and antarctic, of the extent of the British Navy, and so much more. After that experience, I would definitely visit a maritime museum again.

Within the maritime museum, I have vivid memories of being in different spaces. I remember the wall on which a particular photograph that caught my eye was on display. I could walk you to the picture today (although the exhibition has since rotated, so I could only take you to the wall, not the picture itself). I can’t remember the name of the photograph, but I remember where I was when I saw it. I remember the vivid blue colour of the ocean, illuminated by, if I remember, some kind of plankton. I was in awe at so many of the paintings in that room.

Many of my museum memories are anchored in a specific place: a room, a hallway, a specific wall. The images of some spaces are vivid. I remember where I was when I saw a work of art that particularly caught my attention (Even if, ironically, I couldn’t tell you how I got from the entrance of the museum to that piece. Oh! Museums can be labyrinths).

I started writing this post because I read Elena’s contribution to the IndieWeb Carnival this month that mentioned the term “Wildlife Photographer of the Year”. Reading those words instantly reminded me of the aforementioned Astronomy Photographer of the Year exhibit, and the specific wall on which the picture that really caught my attention was.

I have just found the picture: Like Blue Lava by Petr Horalek. The photograph is wonderful.

I started that day in Greenwich with the desire to see the Royal Observatory and the Prime Meridian. I ended the day with a newfound appreciation for astronomy photography and maritime history, and memories that, when recalled, make me feel as if I am back in Greenwich.

Celestial navigation Elena’s contribution to the IndieWeb Carnival Like Blue Lava by Petr Horalek
  • βœ‡James' Coffee Blog
  • Landscape by Moonlight
    Whenever I visit an art gallery, there is inevitably a painting that sparks joy, or otherwise leaves me with an impression that sticks with me. Peter Paul Rubens’ Landscape by Moonlight was one such painting.The painting depicts a landscape at night time. The ground and the trees on the left are dark. The river in the bottom left is illuminated by reflection of moonlight which draws attention to an animal in the foreground. A full moon peeks through an otherwise cloudy sky.The sky, and th
     

Landscape by Moonlight

18 March 2026 at 00:00

Whenever I visit an art gallery, there is inevitably a painting that sparks joy, or otherwise leaves me with an impression that sticks with me. Peter Paul Rubens’ Landscape by Moonlight was one such painting.

The painting depicts a landscape at night time. The ground and the trees on the left are dark. The river in the bottom left is illuminated by reflection of moonlight which draws attention to an animal in the foreground. A full moon peeks through an otherwise cloudy sky.

The sky, and the top of the trees, are dotted with specs of white paint. Stars.

I didn’t think too much about the stars until I read the commentary for the painting written by Francesca Herrick, the Public Programmes Educator at The Courtauld (plaque visible in the interactive view of the Permanent Collection), which notes:

The little flecks of white paint that form the twinkling stars suggest relaxed and joyful experimentation.

Notably, the stars appear in front of the clouds.

I remember smiling when I saw this painting. I stared at it for a while. I remember being struck by those words “joyful experimentation”, especially when reflecting on how the piece was painted between 1635-40. I was surprised and delighted that an attribute in a painting from centuries ago – the way the stars were painted – was perceived by someone as exhibiting “joyful experimentation”.

I started to think about how Rubens felt working on this piece. Why did he decide to add the stars as he did? Did Rubens smile when adding the stars? We will never know, but this perspective stuck with me.

As I moved onto the next room, I took one last look back at the painting to savour it for one more second. It is a beautiful piece.

_Landscape by Moonlight_ plaque visible in the interactive view of the Permanent Collection
  • βœ‡James' Coffee Blog
  • The Timeless Way of Building
    The book for this month’s IndieWeb Book Club, hosted by Nick, is Christopher Alexander’s book The Timeless Way of Building.The book is about architecture, but its principles have broader application to any discipline involved with building something.The idea of a “pattern language”, discussed throughout the book, is one that has stuck with me. I was thinking about “patterns” before reading the book, but The Timeless Way of Building put the idea of a pattern i
     

The Timeless Way of Building

18 March 2026 at 00:00

The book for this month’s IndieWeb Book Club, hosted by Nick, is Christopher Alexander’s book The Timeless Way of Building.

The book is about architecture, but its principles have broader application to any discipline involved with building something.

The idea of a “pattern language”, discussed throughout the book, is one that has stuck with me. I was thinking about “patterns” before reading the book, but The Timeless Way of Building put the idea of a pattern into perspective:

Your language generates the buildings which you make, and the buildings live or not, according to the life your language has.

The word “live” in this sense is related – but not equal – to the “quality without a name” that is introduced early in the book. This quality roughly captures the extent to which a building reaches its potential.

The idea behind a pattern language is that there are, and you can define, a library of concepts for use in building.

Patterns are like tools: concepts that you can apply in a design. Alexander also talks about how patterns are defined not only in isolation, but by their relationship to other patterns:

Beyond its elements each building is defined by certain patterns of relationships among the elements.

[…]

When we look closer, we realize that these relationships are not extra, but necessary to the elements, indeed a part of them.

Alexander gives the example of how an isle in a cathedral would not be an isle if it did not have connections to other architectural features like a nave. The idea of relationships between patterns is something I am now starting to think about more thanks to Alexander’s book.

The book is immensely quotable. Every time I open the book, no matter at what page, there is an insight that could be explored. But the book comes alive when read in full: indeed, the book in its entirety, propels the reader forward toward new ways of thinking about how to build.

I am writing this review a few months after reading the book, when I had time to read it in full; it is likely there are so many more conclusions that can be drawn. Every point above could be developed further. This post is my way of saying that the idea of a pattern language is increasingly foundational to how I think about designing software and technology.

I keep a running list of software patterns, and in 2024 I did a series dedicated to software patterns. I started writing about patterns because I wanted to put into words what I was seeing in software, and I wonder if, through their broader influence, Alexander’s ideas of “patterns” influenced my thinking even before I knew about them.

a series dedicated to software patterns running list of software patterns this month’s IndieWeb Book Club
  • βœ‡James' Coffee Blog
  • Colour
    Hues of red and lavender blended together in the clear evening sky. I don’t think I have seen the sky like this before. I write with my laptop propped up on one lap as I gaze out the window, trying to find the words to describe the sky. As the minutes pass, the sky changes. The sun sets further over the hills; pink rises and the lavender turns to grey. The street lights illuminate.I sometimes think about how sunsets are never the same. I know what colours to expect and in what direction I
     

Colour

19 March 2026 at 00:00

Hues of red and lavender blended together in the clear evening sky. I don’t think I have seen the sky like this before. I write with my laptop propped up on one lap as I gaze out the window, trying to find the words to describe the sky. As the minutes pass, the sky changes. The sun sets further over the hills; pink rises and the lavender turns to grey. The street lights illuminate.

I sometimes think about how sunsets are never the same. I know what colours to expect and in what direction I need to look to see them, but there is always a surprise: the arrangement of the clouds, or the lack of them, the position of the sun and how it relates to the hills or the trees, or something else. This evening, it was the hues of red and lavender. I felt like I was seeing a sunset I had never seen before. No two sunsets are the same.

Before the sun set over the hills earlier this evening, the sun peeked over and below clouds, creating bands of yellow through the greys and the whites in the sky. I smiled as I admired the details of the sky – the clouds, the colours, the width of the horizon.

Looking back, I realise that this is now the time of year where I can watch more of the setting sun. The clouds of winter have receded; the spring breeze blew them away. The sun sets later.

From my window I no longer see the pink in the sky; the sky is now a deep blue. Things change with time. But the colour is forever in my words: the way that the red and lavender blended in a way I have never seen before, now here, in words.

This was the sunset of March 19th, 2025, seen from here, the place I call home.

  • βœ‡James' Coffee Blog
  • 🌸
    When I loaded my website this morning – an hour or two after having woken up with great joy to rays of golden light radiating through the edges of the curtains – I noticed the cherry blossom emoji (🌸). It must be the first day of spring! I love moments like this when my website surprises me. The seasonal emojis almost feel like a gift from past James. Today means something. Every day does.The spring weather has motivated me to go on more walks. When the sky is clear, the fre
     

🌸

20 March 2026 at 00:00

When I loaded my website this morning – an hour or two after having woken up with great joy to rays of golden light radiating through the edges of the curtains – I noticed the cherry blossom emoji (🌸). It must be the first day of spring! I love moments like this when my website surprises me. The seasonal emojis almost feel like a gift from past James. Today means something. Every day does.

The spring weather has motivated me to go on more walks. When the sky is clear, the fresh breeze – the one that blows through the windows I can now have open – is seductive. It looks warm outside. I should go out. With the energy that comes from feeling the spring air and the golden sun after a long winter, I decided I would go for a walk at lunch.

Before I left, I had a thought: maybe I should take my spring jacket. In the moment, I realised what this meant: spring is really here.

While walking, I decided to take the longer route. The air was refreshing. I could see for miles. I knew that there were sights to be seen: scenes I haven’t seen since before the winter kept me indoors and closer to home. I kept my headphones out so I could listen to the rhythm of the walk. Birdsong, birds walking through the leaves left over since last autumn, the rustle of the single fallen leaf that followed me briefly, propelled by the gentle breeze of spring.

The autumn leaves were memories of the last season. The birdsong? The sounds of the next one.

As I was heading home, after stopping to admire the hills in the distance and how radiant they were with the spring light, I noticed a tree in blossom: the first pink cherry blossom in bloom I have seen this year. One of my favourite parts about walking are the surprises like this one – of being on familiar paths and seeing something that brings both surprise and joy.

  • βœ‡James' Coffee Blog
  • Crescent
    I love watching the sun set, from golden hour to the moment when the last pink hues fade from the sky. Every moment is magical. As I write, there are bands of purple radiating behind the ripples of thin clouds on the horizon.I periodically look out the window when the sky is clear and the sun is setting, eager to see as many of the colours of the sky as possible – the oranges and the yellows, the pinks and the purples, the blues. I know that every time I look, there will be something new
     

Crescent

20 March 2026 at 00:00

I love watching the sun set, from golden hour to the moment when the last pink hues fade from the sky. Every moment is magical. As I write, there are bands of purple radiating behind the ripples of thin clouds on the horizon.

I periodically look out the window when the sky is clear and the sun is setting, eager to see as many of the colours of the sky as possible – the oranges and the yellows, the pinks and the purples, the blues. I know that every time I look, there will be something new to see. In the same place, a different perspective.

When I looked out the window a few moments ago, I saw a faint silver arch in the sky. Is that… a crescent moon? I smiled and laughed a little to myself. It was as if I had never seen a present moon before. I am looking at the moon now as I write this sentence, searching for words to describe the new, silvery, light in the sky.

The silver crescent stands out in front of the darkening blue sky. It has been a while since I have seen a crescent moon so narrow.

I turned the light off indoors so that the interior light would not reflect on the window so that I could see more. Shortly thereafter, I noticed, below the moon, at a distance I cannot quantify for I know not how to measure the night sky (some things are beautiful because they are indescribable), a star: the first star visible this evening.

The lavender is fading and the blue of the late evening envelops more of the sky, the colours of sunset giving way to the celestial. I look eagerly to the horizon for the next star to appear.

  • βœ‡James' Coffee Blog
  • Saturday
    When I woke up this morning, I knew I wanted to open the blinds early – to let the spring light in. The previous night, I had made sure the book I wanted to read was sitting by my bedside, ready for me in the morning. I enjoyed the soft yellow light shining through the room as I read, my book temporarily taking me into the world of motorcycles and maintenance and care.I love how books let you be in two places at once: where you are, and another world crafted by the author. Maybe that is p
     

Saturday

21 March 2026 at 00:00

When I woke up this morning, I knew I wanted to open the blinds early – to let the spring light in. The previous night, I had made sure the book I wanted to read was sitting by my bedside, ready for me in the morning. I enjoyed the soft yellow light shining through the room as I read, my book temporarily taking me into the world of motorcycles and maintenance and care.

I love how books let you be in two places at once: where you are, and another world crafted by the author. Maybe that is part of why I love writing, too: I can craft a little world for you to be in for a few moments.

After spending my time immersed in another world, I got up and looked out the window. There was a light blanket of frost on the grass that, just yesterday, was more green than I have ever seen it, illuminated by the light of spring. Seasons and times blend together: the cold of winter and night lingers in the morning, the sun bringing new perspective to the frost.

I love frosty mornings: the chill wakes me up. I went for a walk to get some bread; I had half an avocado in the fridge that I didn't want to let go to waste.

Outside, the world was quiet. I myself was still waking up; the fresh air helped. I paid attention to my breath with every step I took. I have a bit of a cold; being in Nature was exactly what I needed. On one part of the walk, with nobody else around, I closed my eyes and recalled memories of other mornings where the air was just like this. I felt connected both to the world around me and other moments in time.

The frost outside has melted. After my walk – and my delicious breakfast – now sit in my armchair, gazing out the window with a sense of peace. I just finished my cup of tea. I always like to hold my tea cup for as long as I can so that I can feel all the warmth it has. Since I am writing, the tea cup is next to my left knee. I can still feel its warmth.

  • βœ‡James' Coffee Blog
  • Tinkering
    I love making incremental improvements to my website. All the changes I make to this website build up to what you see. This has me thinking that websites are both a place to reflect on, discuss, and make change, as well as being something that can, and does, change over and with time. My website grows with me. While exploring my website, I noticed in the past that the bold typeface in the headings and in my website name looked a bit different in Safari to Firefox. This week, I learned why: I di
     

Tinkering

21 March 2026 at 00:00

I love making incremental improvements to my website. All the changes I make to this website build up to what you see. This has me thinking that websites are both a place to reflect on, discuss, and make change, as well as being something that can, and does, change over and with time. My website grows with me.

While exploring my website, I noticed in the past that the bold typeface in the headings and in my website name looked a bit different in Safari to Firefox. This week, I learned why: I didn’t supply a bold typeface for my website. This meant that both browsers were trying to create a bold effect rather than relying on the typeface itself to supply bold characters. This has now been fixed. My site, which uses the Standard web font, now loads the bold version of the web font too.

Today I also set out to fix how links appear in italics in my blog posts. Links are styled in blue with an underline, but the colour rules for the em tag were overriding the colour of links within the em tag. This meant that links in em tags preserved their underline, but had the same colour as the surrounding text. This, too, is now fixed. It felt good to finally make this change. Small changes collectively make a big difference.

I also have a new “Make a Website” page. I wrote this page to be a short introduction to how to make a website, referring to the excellent resources others have made on the topic, as well as communities of people building websites. I now link to this page both on my home page and my website sidebar. If you have been looking for a sign to start a website, this is it. The web is wonderful.

On a side note, I learned that Ghost, which I use for publishing blog posts – my static site generator reads posts from Ghost, stored as text files – does not allow emojis in permalinks. I learned this while trying to set the permalink for 🌸 to be the eponymous emoji. This is probably for the best: emojis in permalinks do not, on reflection, necessarily fit into how I think about URL design:

In a sense, URLs are user experience. I use them to navigate through websites. As a site creator, clearly defining URLs helps me know what is where. This is important to me. I want the experience of searching for a page – either for reference, or as I develop my site – to be as intuitive as possible.

Finally, I created a new “for you” page. It reads:

This entire website is for both me and you.

Thank you for visiting!

I much prefer my for you page to any one I have seen so far.

Related is what Sir. Tim Berners-Lee says of the web: “This is for everyone”.

Note: My site styles may be cached for you, so to see any changes to the typeface you may need to do a hard refresh of a page. One day I will figure out how to clear the styles that power my offline mode from readers' caches when I update the styles. That, however, is a task for another day.

incremental improvements to my website URL design _offline mode_ 🌸 “for you” page Make a Website This is for everyone
  • βœ‡James' Coffee Blog
  • River
    The verdant foliage on the steep hillside, the path that you know was made just for this place — the wooden planks delineating where to walk, the stairs up and down following the ebb and flow of the hill, the bridges that wove through the trees and over the edge of the river. I was in awe. I have never been on a path like this before. All around: Nature; life.I have walked by the river before, but never at this exact point. As I walked, I noticed signs for fishing. I wonder when salmon se
     

River

21 March 2026 at 00:00

The verdant foliage on the steep hillside, the path that you know was made just for this place — the wooden planks delineating where to walk, the stairs up and down following the ebb and flow of the hill, the bridges that wove through the trees and over the edge of the river. I was in awe. I have never been on a path like this before. All around: Nature; life.

I have walked by the river before, but never at this exact point. As I walked, I noticed signs for fishing. I wonder when salmon season is. I saw nobody fishing, but I did see the occasional person walking their dog, as well as a group of hikers following the path. Otherwise, the only sound in the air was that of the rolling river. Flowing water calms me.

Continuing to walk, I found a place to stop. There was a bench there. I didn’t sit down, though: I stood by the river so I could see further up and downstream.

I wondered who else has come here to enjoy the river; who else has stopped exactly where I was standing, listening to the water. The clear water. The water so clear I could see the river bed: the pebbles and the kind of grass that grows under water. And… tadpoles! The sight brought me back to primary school when I first learned about them. I can’t recall the last time I saw a tadpole in the water. I felt the magic of rediscovery.

Standing still, watching the water flow, I wondered: Why does something moving so fast make me feel still? Is it the shimmer of the light reflecting off the river? The sound of falling water? The best answer I could devise is of two words: here, Nature.

I stood for innumerable moments gazing at the river: watching the water flow, the tadpoles swim, the occasional duck soar over the water. I thought about how I wanted to keep standing here to watch the water flow, to hear the birds sing, to feel Spring. I heard new birdsong. I felt the gentle breeze on my neck. I smelled the wild garlic, so potent that it pierced through my light cold in the way that only Nature knows how. I heard the song of a bird I don’t think I have heard before.

  • βœ‡James' Coffee Blog
  • The artist was here
    I love the storytelling work that the Metropolitan Museum of Art in New York does. For example, the Frame of Mind podcast highlights short stories of people’s relationships with museums – around fifteen minutes long each. It is a great listen.Last year, I watched a video by The Met on their YouTube channel as part of their “Meet Me at the Met” series. The video was an interview with Orhan Pamuk, a Nobel Prize-winning author. The video has stuck with me ever since.When I
     

The artist was here

23 March 2026 at 00:00

I love the storytelling work that the Metropolitan Museum of Art in New York does. For example, the Frame of Mind podcast highlights short stories of people’s relationships with museums – around fifteen minutes long each. It is a great listen.

Last year, I watched a video by The Met on their YouTube channel as part of their “Meet Me at the Met” series. The video was an interview with Orhan Pamuk, a Nobel Prize-winning author. The video has stuck with me ever since.

When I think about “the artist was here,” the interview with Pamuk comes to mind. Orhan mentions that he found inspiration in several paintings in the museum. Museums can inspire writers. That has stuck with me. On reflection, I have written a fair bit about museums as places, and I have so much more I want to say. Museums inspire me.

Pamuk talks about the “museum-ness” of the museum. This makes me think about all the qualities of the museum as a place: the interior design, how each room feels, how it feels to walk between rooms, the art on the walls, the conversations that people have while studying an artwork.

A trip to the museum engages all my senses. I become aware of the past (through the art I am looking at) and the present (through the people I hear in the room) all at once. I think about the future (by reflecting on what I see and what it means), too.

What stood out to me most about the video was that both Pamuk, who in addition to being a writer also painted, and I had visited the museum. The artist was here. Watching the video again, Pamuk enters the Monet room in which one of my favourite works of art is kept: Ice Floes. A painting in front of which I stood for many minutes, admiring every detail. A painting so captivating I didn’t want to leave the gallery.

Countless people will have been in the Monet room; the same can be said of every room in every museum. Two people who have been to a museum have shared space, maybe not at the same time, but through time. When a friend mentions a museum that we have both been to, I think about this idea. We have both been there; we both have a story to tell.

This post was inspired by a prompt Frances gave me when we were exchanging blog post titles. I knew I wanted to write something for this prompt, but I had no idea what. I ended up writing about Sparking joy, but I kept the idea of "The artist was here" in my mind for when I was ready to write about it. Some things take time.

_Frances_ _Sparking joy_ Frame of Mind podcast an interview with Orhan Pamuk
  • βœ‡James' Coffee Blog
  • Single-file web applications
    A few weeks ago I made Amie, an application for keeping track of who you meet at conferences. Amie lets you create an event, then add people by name and/or domain, Mastodon, or BlueSky handle. 1I was inspired to build Amie because I went to a web meetup a few months ago where I met many people with websites. I wanted a better way to keep track of the sites people shared with me than to leave browser tabs open on my phone, which I may accidentally close or otherwise lose track of. I haven’
     

Single-file web applications

27 March 2026 at 00:00

A few weeks ago I made Amie, an application for keeping track of who you meet at conferences. Amie lets you create an event, then add people by name and/or domain, Mastodon, or BlueSky handle. 1

I was inspired to build Amie because I went to a web meetup a few months ago where I met many people with websites. I wanted a better way to keep track of the sites people shared with me than to leave browser tabs open on my phone, which I may accidentally close or otherwise lose track of. I haven’t used Amie at an event yet, but I plan to!

When I built Amie, an architectural question came to mind: can I build all of this in a single file using HTML, CSS, and JavaScript? The advantage of this approach would be: (i) I wouldn’t need to maintain a back-end (note: the kind of back-end I would want to build for an application storing contacts would involve significant privacy and security planning), and; (ii) a single file would mean that I could share the application with others. All data would be local.

With a single-file application, anyone could save the source of Amie, put it on their website, and their your own instance that works on their device. With this flexibility, people could add their own features, change the colour scheme of the application to make it their own, and make any other changes they want. If someone sees Amie and wants it to be pink, they can make a copy of the source code and make it pink!

This is related to my thoughts around how to promote a remix culture for the web. I am interested in tools built on, of, and for the web that people can copy, remix, and use for themselves. While Amie does not come with a license, I will at some point make sure it is under a public domain-compatible license like MIT 0 such that people have confidence all the code is theirs to play with and share.

I have another example of a time when I applied this single-file application pattern. Last year I built Athena (see live version), an experimental HTML editor for mobile devices, on a similar principle. I wanted all the code to be in a single file so that the application could be more easily shared. I was able to achieve that goal, so anyone could copy the source and have their own version of Athena. (Note: Athena is really experimental. I don’t recommend using it, but it is fun to play around with.)

The idea of a single-file application introduces difficulties around updates. If I update Amie to fix a bug, for example, how can I share those changes with everyone else? There could be some kind of email list to which people could subscribe for significant updates. People could do a diff to see what has been changed and decide what to keep in their version of the code. I don’t have a solution for update notifications for this kind of remixed software, but I thought I’d document this point anyway.

I also see a potential downfall of a single-page web application that is huge just so that it is in a single page. I would consider that an anti-pattern. The goal is not to compress an application into a page, but to consider what could be built as a small, shareable web page like Amie or Athena or my coffee/water ratio calculator page.

Technically, Amie is a few files: it has a service worker and manifest, for example, to support offline mode and a progressive web application mode, as well as a font that is used. But, the bulk of the application is in a single file and so I consider it in the spirit of the idea I am discussing here.

[1]  Amie doesn’t make any requests to validate profiles: it just saves them in a list; @example@example.com is, for example, enough to know that a handle is for Mastodon, without having to do any validation.

Amie see live version Athena coffee/water ratio calculator page
  • βœ‡James' Coffee Blog
  • Gardening
    At Front End Study Hall yesterday there was a discussion about what endeavours are similar to web development. There was a particularly rich discussion (documented in the afore-linked notes) related to gardening and web development. My takeaway from the discussion was that building for the web has more in common with other tasks than I had thought about before.I have been thinking about one-off pages on my website that I use to document different ideas, like my ideas list or my patterns list. I
     

Gardening

27 March 2026 at 00:00

At Front End Study Hall yesterday there was a discussion about what endeavours are similar to web development. There was a particularly rich discussion (documented in the afore-linked notes) related to gardening and web development. My takeaway from the discussion was that building for the web has more in common with other tasks than I had thought about before.

I have been thinking about one-off pages on my website that I use to document different ideas, like my ideas list or my patterns list. I keep thinking about how I should present these. Should I have a page that lists all of the pages? But what if a page isn’t ready yet? The benefit of the current way I share these pages – either directly with friends or, more commonly, by linking to them in a blog post when they are relevant – seems to work well. With the current system, I share when I am ready.

I sometimes think of these one-off pages as “wiki-like pages”, in the sense that they are updated over time – they grow. I don’t consider these pages a digital garden because they aren’t heavily linked. Many of my one-off pages stem from some notes I have taken in Apple Notes that I think, after reaching some point of maturity, should have a URL. You could call them “slash pages”, but I am not a fan of that term.

The reason I think about all these words is that they have a certain weight to them. A wiki implies something different than a digital garden, just as a page implies something different to a blog post. While “wiki-like pages” made sense to me for one-off, growing pages, “page” may be the best way for me to think of these for now.

When I consider how I want to share these pages, the best system is the one I have right now – the one where I link to pages in a blog post every so often, when I am ready. The one where I can put a URL on something without the pressure of it showing up on a list of all the pages I garden. My system is a bit inefficient, but it is maybe good enough? It is good enough for now, at least.

On reflection, there is something joyful about being able to casually share a new page in a blog post, where the page is most appropriate. The one-off pages I garden aren’t a notebook so much as they are an amalgamation of bullet points, a potential starting point – a place with more information. In blogs, I refine and define and synthesise and reflect. In pages, I often want to get the notes down so they have a home. So that I can build on the idea later.

Indeed, building on things feels very much in the spirit of having a website. We’re always building on what we have. I garden where I can. As Jeremy said in the aforementioned Front End Study Hall discussion about gardening and web development: “the joy of the thing is in the development - you cannot plan for it.”

In the spirit of talking about one-off pages, this may be a fun time to share I have a page on this website that lists songs that are related to rhubarb pie. If you have any suggestions that I can add to the list, please do let me know!

Front End Study Hall discussion Front End Study Hall yesterday ideas list patterns list _songs that are related to rhubarb pie_
  • βœ‡James' Coffee Blog
  • Interface stability
    The main Artemis interface has remained largely the same since I made the software available for others to use. Here is the interface in December 2024. Here is the interface in 2026 [^1] [^2]:The main change that I have made is that the navigation bar now has a “search” link, now that search is supported.When I added the search link, I spent quite a bit of time thinking about whether I should make it opt-in via a settings toggle [^3]. I knew that adding the search link in the place
     

Interface stability

27 March 2026 at 00:00

The main Artemis interface has remained largely the same since I made the software available for others to use. Here is the interface in December 2024. Here is the interface in 2026 [^1] [^2]:

The Artemis web reader showing a list of posts under the heading "Friday, March 27th".

The main change that I have made is that the navigation bar now has a “search” link, now that search is supported.

When I added the search link, I spent quite a bit of time thinking about whether I should make it opt-in via a settings toggle [^3]. I knew that adding the search link in the place where I wanted it to be – after the “add” link used to add an author to one’s reader – would shift other links, which would mean that two navigation links that had been there for months would now be in different places.

After some thought, I ultimately opted to add the link in for everyone. I thought the search feature was sufficiently useful that it should be in the navigation bar.

Aside from that, the interface now has supported for “nested” posts, which appear in certain contexts (mostly: when you are subscribed to a Mastodon account, you replies that make up a thread of posts by the same author in lighter grey text and nested below the main post, to preserve space). This is an enhancement; it doesn’t disrupt the core functionality of showing the list of posts.

I haven’t had any impulse to redesign the software. I like the way things are. The software feels visually stable. It works, and doesn’t change much. I have added a few new layouts, but those layouts co-exist – users can choose what layout they want to use from their account settings.

I was thinking about this today after reflecting on all the times when a redesign has been jarring for me. I am cognisant of redesigns in software I have used that still, sometimes years on, don’t do essential things as easily as was possible before their redesign.

Of note, there are areas where the interface has changed more substantially. Such changes primarily pertain to settings or subscription management. Indeed, software changes: Artemis does a lot more than it did two years ago. The interface reflects that. For example, the account settings page started to grow significantly, so I broke it up into several sub-pages. This reorganisation felt better than the alternative of continuing to add more options to a single page.

As software changes, so too might a UI; there is no part of me that can reasonably make any blanket statement about how redesigns are not a good idea, or that redesigns are essential, or that UI stability should be prioritised over another design principle. Context matters. Rather, I aim to document that UI stability should be a design consideration. It feels good when everything is in roughly the same place.

[^1]:  The colours are different because I have since set a custom colour theme in my account settings.

[^2]: You may notice that the 2024 version had an "invite" button. This was something I had enabled only for my account if I remember correctly so that I could manage invite codes.

[^3]: Another thought that crossed my mind was to make the link opt-in, but on by default for new users. This would have been substantially more engineering so I didn’t do it, but I still love this idea.

Here is the interface in December 2024
  • βœ‡James' Coffee Blog
  • Brainstorming web guides
    I am interested in the field of content design, which thinks of information as not only what it represents (i.e. facts) but how that information is represented. The UK Government says:Good content design allows people to find out what they need to know or do quickly.When I am navigating the UK Government website, I feel like I can find what I am looking for. I feel the same way when I am looking through the NHS website, too.This week I had an idea: what would a gov.uk-style website look like fo
     

Brainstorming web guides

27 March 2026 at 00:00

I am interested in the field of content design, which thinks of information as not only what it represents (i.e. facts) but how that information is represented. The UK Government says:

Good content design allows people to find out what they need to know or do quickly.

When I am navigating the UK Government website, I feel like I can find what I am looking for. I feel the same way when I am looking through the NHS website, too.

This week I had an idea: what would a gov.uk-style website look like for getting people set up on the web?

This idea was explored in the IndieWebGuides project in 2017, although the project covered more of the technical aspects of setting up a website. I think such a resource would still be incredibly valuable today, but the lens through which I was thinking about the idea was more about helping people make informed choices about how to use the web.

I thought about a website that would cover things like:

  • How to choose a browser (and why it matters)
  • How to set up a web presence for a community (and why social media isn’t enough)
  • How to use web readers like RSS readers (and why they are useful)
  • How to choose a search engine (and why it matters)
  • What does it mean for information to be online? (talk about public vs. private, how web pages can be archived, and more)

One piece of motivation was to have a place on the web that helps highlight why things like browser choice, search engine choice, and using open web technology matters, in as few words as possible, and written for an audience that doesn’t have a technical background.

I wrote a little sample of what such a guide might look like for choosing a web browser.

I thought it would be nice to have a site where information is concise, consistent, and where every word is scrutinised for its relevance and necessity. I also thought it would be nice for such a site to not take a position against a technology (i.e. social media) and instead show the benefits, downsides, and alternatives that are more of the spirit of the web.

I’m sure my idea needs more development; I registered a domain name for this project – yourweb.guide – way too early. This is not a project I plan to build right now. It may be the case that short, well-designed guides exist for all my ideas above; if so, perhaps a site that aggregates them would be nice. In any case, despite having no intentions to bring this idea to life right now, it is an idea I wanted to write down in case anyone else sees something in the idea and is inspired.

content design IndieWebGuides says I wrote a little sample of what such a guide might look like for choosing a web browser
❌