Hello! I'm James (he/him/his) ✨ I'm a writer, art history student, and Taylor Swift fan.
At Homebrew Website Club this evening we had a conversation about how to encourage people to make things together using the web. This could mean writing a blog post with someone, responding to someone…
The fifth episode of Wonders of Web Weaving is out:. [...]
The familiar sounds of the espresso machine never cease to calm me – the joy of the familiar, but also the potential of the variable: of sounds at new tones, of different cadences. Watching as the bar…
Today I attended my first Magic the Gathering (MtG) draft: a “secret draft,” where players did not know ahead of time what series of the trading card game would be played. The event was held in a brea…
One of my favourite parts of writing – and, by extension, blogging – is that I can document a moment: I can, in words, capture a little bit of a day.. [...]
“No way,” I exclaim with wonder and glee and surprise. I look up and stare for a few moments, transfixed by the delicate wisps of cloud that rest side by side. [...]
The Artemis reading interface consists of a section tag for each day for which there are blog posts to show. Each section contains a h2 denoting the date the posts were published, and a ul that lists …
I have been thinking a lot about categories over the last week or so. It started by Thomas sharing the work he has been doing to build a category index page. [...]
This is amazing. I could hardly contain my excitement. [...]
I have several ideas swirling around for projects I would like to see happen. Sometimes, these ideas manifest as a project. [...]
This is my entry for this month’s Bear Blog Carnival, on the topic of staying connected while practicing digital minimalism. Thank you Juni for hosting the Carnival, and for choosing such a fascinatin…
The fourth episode of Wonders of Web Weaving is out:. [...]
In her love letter to creative spaces, Britt appreciates “anywhere that is welcoming to the big table full of slightly chaotic artists who might make a mess of their carpet from time to time.” Reading…
Artemis now has a feature to flag websites that you have subscribed to as suspicious. This feature appears in two places:. [...]
In recent weeks, I have been talking with a lot of people about personal websites. In so many of my discussions, I mention that one of the reasons I love coming back to my personal website is the comm…
When I was designing the inline message to indicate a link in a user’s Artemis reader has been flagged as malicious, I intentionally designed the system message and state to be distinguished from the …
I remember I was on a trip a few years ago to a place I had wanted to visit for years. Toward the end of the trip, I said to someone that I “missed the poetry” of home. [...]
I have been a long-time lover of Tunnocks Caramel Wafers, made in Uddingston (near Glasgow), Scotland. Made with alternating thin layers of caramel and wafer and chocolate, Caramel Wafers are among my…
I love to write while I am walking around in the world. I keep a digital notebook in which I write down what I observe: sights, sounds, scents; emotions, hopes, dreams. [...]
Since I am thinking about delicious Scottish treats this evening, I thought this would be an apt time to write about another of my favourite Scottish sweets: milk chews.. [...]
Note: The logic described in this post may be a stepping stone to a more robust system in the future. Please keep that in mind as you read and know that my solution may not be optimal, rather a start …
There is beauty in the moments between arriving and reaching your destination. I felt this yesterday in the moments before attending an event in Edinburgh last night. [...]
The book for this month’s IndieWeb Book Club, hosted by Nick, is Christopher Alexander’s book The Timeless Way of Building.. [...]
I have been working on a few new features for Artemis, the calm web reader I maintain. You can read a summary of what’s new below.. [...]
Trafalgar Square is a special place. The architecture and views are breathtaking. [...]
This is my entry for this month’s IndieWeb Carnival on the topic “Museum memories”.. [...]
I had spent half of the day travelling and the other half looking at art. Whenever I am going anywhere, I like to arrive as early as I can and either walk around or go to an art gallery; ideally, I li…
The days are getting longer and brighter. The bite of the winter air is being replaced by a delicate breeze. [...]
My blog has an offline mode that lets you view articles you have previously read on my website. This mode allows you to read something on my website even if you don’t have an internet connection. [...…
I am writing about a few paintings to help me build my description skills. My analyses are not formal or comprehensive. [...]
State of the Browser was electric. This is how I summarised my experience at the annual State of the Browser event in London in my notes. [...]
Berthe Morisot’s Girl on a Divan, displayed in the National Gallery, London, caught my eye as soon as I saw it. The painting was the last one I saw in the Impressionist room in the Gallery, but despit…
I am using Duolingo to learn a bit of German. I have been using the app for a while and enjoy the exercises. [...]
When I was building the search engine for my blog, one feature I wanted to implement was syntax highlighting within the search input field. I wanted special operators (i.e. [...]
Museums and galleries are places we can go to learn about the past, think about the present, and consider the future. Museums are places we can connect: with times, people, and place. [...]
When I was in high school, I used to keep a pencil or pen up my sleeve. I don’t remember anyone else doing it, or why I started. [...]
Last year I was introduced to the idea of “Dopplr colours” in the IndieWeb community. This refers to an accent colour assigned to cities on the now-defunct travel website Dopplr. [...]
Search is one of my favourite disciplines in computing. In 2024 I spent a lot of time working on a NoSQL engine that I called JameSQL. [...]
When I announced Artemis in 2024, I titled the announcement “Artemis, a calm web reader, is available (in beta)”. So central to the philosophy of how I build the software is the principle “calm” that,…
Recently, a feed a few users – including myself – were following with Artemis published a “bookmark”-like post. The markup in the corresponding feed was a bit different than expected, so Artemis ended…
This evening I added an idea I have had for a while to Artemis: a dense layout.. [...]
Artemis lets you subscribe to ActivityPub feeds (i.e. accounts on Mastodon). [...]
The IndieWeb community chat has a feature that lets you create a wiki page from a chat interaction. You can say “what is {term}?” in the chat and, if there is a definition on the community wiki, the d…
Earlier this week I started to feel something I haven’t felt in a while: I felt lost. I started to look ahead and feel disoriented. [...]
Jo and I are trading blog post titles. The title Jo chose for me is “A perfect day.”. [...]
I am trading blog post titles with Joe. He gave me a few suggestions for what to write about. [...]
I have been thinking about the rhythm of my writing recently. I wrote in my drafts:. [...]
I visit the IndieWeb wiki almost every day. The wiki is maintained by the IndieWeb community, documenting everything from interfaces for creating posts to POSSE.. [...]
This is a test post.. [...]
Sending messages.. [...]
Britt and I are trading blog post titles. The topic Britt chose for me is “A piece of art you would like to see in person”.. [...]
I love winter mornings when the sky is clear. Looking out the window, the sky is a clear blue, interspersed with the occasional white cloud so faint that it is almost invisible. [...]
I wondered if it would snow again this season. The weather has been persistently cloudy, but there has been little snow. [...]
I maintain a web page that lists notes from IndieWeb events. Entries are added to the page when notes from meet-ups are archived to the community wiki.. [...]
Ava and I are trading blog post titles. The topic Ava chose for me to write about was “What I associate with my name”.. [...]
Zachary’s website introduced me to “Proust’s questionnaire”, a series of questions by Marcel Proust. I thought it would be fun to try and respond to them!. [...]
Ruben, after responding to the sandwich questionnaire that Zachary blogged about, added a few more questions. When I saw the blog post, I thought: these questions are exactly what I need today. [...]
In “Build a search index in Python”, I walked through how to create a search index using the “inverted index” structure. This structure is commonly used in document search.. [...]
Artemis has been open for registration with an invite code for over a year. In that time, many people have signed up. [...]
As I have been building Artemis, I have learned that the account deletion flow requires constant review. For example, whenever I add a new database table, I need to make sure that table is in the acco…
Some time in January, I was going through my browser tabs and came across an Artemis tab that had been opened a while ago. But it took me a moment to realise that the tab might be out of date. [...]
Last year, I worked on a bookmarklet for editing pages on my website. When clicked, the bookmarklet would open the page in GitHub that corresponded with the page I was viewing. [...]
I have been thinking about hand-writing and websites in the background for a little while.. [...]
I love sandwiches. Earlier today I was thinking about how you can eat a sandwich at any time of the day. [...]
Every so often, I use the word delightful in conversation. That is delightful! I try not to use “delightful” too often, but I do like to bring it into a discussion every now and again. [...]
Ever since I moved to using Ghost as the tool for publishing my blog posts [1], I have forgotten to add categories to some of my blog posts. My old system had a few if statements that would automatica…
Last weekend, I went to the National Gallery of Scotland. This time, I started my trip on the bottom floor where all the Scottish art is on display. [...]
I have been waking up with anticipation every morning recently. I say “good morning, world”, and then anxiously peek through the edge of the curtains. [...]
One of the areas of the Artemis codebase that I update the most is the logic that relates to the list of posts published by authors to which a user is subscribed. Because Artemis works with so many di…
When I run the Artemis codebase, one of the first things it does is look for an environment variable that indicates what “environment” the application is running in. There are two modes: development a…
Earlier this week a reader pointed out that posts listed on my date archive pages were linking to the wrong URLs. For example, the link for /2026/01/25/kind-software would instead be /2026-01-25-kind-…
Artemis, the calm web reader I maintain, runs as a systemd process. When I want to update the software, I deploy the new code to the server and then restart the systemd process. [...]
A few weeks ago I did a day-long training Carbon Literacy Project training course through my university. When I was taking the course and considering ways I can reduce my carbon footprint, I started t…
A while ago, I purchased an Aranet 4 indoor CO2 monitor. The device has sat on my desk ever since. [...]
For the last few weeks I have been thinking about the intersection of calendars and web readers.. [...]
Last year, one of my goals was to learn more about design. I wanted to apply what I learned to making web pages. [...]
The Autumn/Winter 2025 edition of the good internet magazine is out! I contributed a piece, Build the web you want to see, in which I reflect on the last five years of James' Coffee Blog and some of w…
On Wednesday, February 11th at 7pm - 8:30pm UK time I am hosting an event I’m calling the “Software Design Meetup” online.. [...]