Artemis changelog #8

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. Organise subscriptions with folders You can now create folders in Artemis. This feature is designed to help you organise websites you follow into sep … | Continue reading


@jamesg.blog | 5 days ago

Take two

Trafalgar Square is a special place. The architecture and views are breathtaking. The National Gallery, the church of St. Martins in the Fields, Canada House, and more, all surround the Square. From the right place you can look down Whitehall and see Big Ben. In the heart of the … | Continue reading


@jamesg.blog | 6 days ago

Museum memories

This is my entry for this month’s IndieWeb Carnival on the topic “Museum memories”. When I was 10 or so – maybe younger; childhood can be hazy – my grandparents took me to the National Museum of Flight in Scotland for a day. My memory starts as many of my earlier museum memories … | Continue reading


@jamesg.blog | 6 days ago

Night time; walking

i'll spend my whole life looking for the next best thing but when I finally find it, i’ll be too busy looking for the next best thing 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 eit … | Continue reading


@jamesg.blog | 7 days ago

Guitar; sunset

The days are getting longer and brighter. The bite of the winter air is being replaced by a delicate breeze. It feels like Spring is here. I have been trying to play my guitar every day, usually before I eat dinner. Over the last week, I have noticed that the time I play the gui … | Continue reading


@jamesg.blog | 7 days ago

Offline mode

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. If the page you want to view has not been cached, you will see a custom page that li … | Continue reading


@jamesg.blog | 7 days ago

The Church at Varengeville by Monet

I am writing about a few paintings to help me build my description skills. My analyses are not formal or comprehensive. If nothing else, I hope that you enjoy the painting that I feature! The warm colours in Monet’s The Church at Varengeville (1882) stood out to me the moment I … | Continue reading


@jamesg.blog | 8 days ago

State of the Browser 2026

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. I like to capture moments as they happen, then write about them later. The note is the essence of a blog post; the starting point. The note bl … | Continue reading


@jamesg.blog | 8 days ago

Girl on a Divan by Berthe Morisot

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 despite having been on my feet for hours before I stood for several minutes looking at … | Continue reading


@jamesg.blog | 8 days ago

How to change the Duolingo app icon

I am using Duolingo to learn a bit of German. I have been using the app for a while and enjoy the exercises. With that said, I am not a fan of Duolingo’s changing application icons on iOS. I don’t like that an application can set its own home screen icon without my permission. I … | Continue reading


@jamesg.blog | 8 days ago

I wish there was a (simpler) way to highlight text in inputs

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. has:noalt, which shows posts that contain one or more images without alt text) to have a different backgrou … | Continue reading


@jamesg.blog | 8 days ago

IndieWeb Carnival March 2026: Museum memories

Museums and galleries are places we can go to learn about the past, think about the present, and consider the future. Museums are places we can connect: with times, people, and place. We can have conversations in museums. We learn in museums. We can explore. The topic I have cho … | Continue reading


@jamesg.blog | 10 days ago

Pens, sleeves, and whiteboards

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. But if I had a pen up my sleeve, I would at least know I had one nearby for when I’d need one. (I may be mis-remembering whether having a pen up my sle … | Continue reading


@jamesg.blog | 15 days ago

Dopplr colours

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. You can see examples by clicking through different Dopplr city pages in the Internet Archive and payi … | Continue reading


@jamesg.blog | 15 days ago

Brainstorming search engine ranking introspection

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. This tool now powers the search engine on my website. Designing search engine ranking systems is tricky to say the least. When I use my blog sea … | Continue reading


@jamesg.blog | 16 days ago

Preserving calm in software over time

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, when I write about Artemis, I still use the phrase “a calm web reader” to descr … | Continue reading


@jamesg.blog | 16 days ago

Artemis “via”

Recently, a feed a few users – including myself – were following with Artemis published a “bookmark”-like post. The markup in the corresponding feed was a bit different than expected, so Artemis ended up linking directly to the bookmarked post rather than to the author’s post its … | Continue reading


@jamesg.blog | 16 days ago

Artemis dense layout

This evening I added an idea I have had for a while to Artemis: a "dense" layout. By default, the Artemis interface appears in a single-column layout. The dense layout creates several columns. Each column from left-to-right shows posts for a given day. You can scroll down to the … | Continue reading


@jamesg.blog | 17 days ago

Grouping threaded posts in Artemis

Artemis lets you subscribe to ActivityPub feeds (i.e. accounts on Mastodon). To do this, you can type in an ActivityPub handle like @jamesg.blog@jamesg.blog [1] on the “Add a website” page. When you subscribe to a feed using an ActivityPub handle, Artemis can use the information … | Continue reading


@jamesg.blog | 17 days ago

Graduating between mediums of communication

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 definition will be returned by a bot. Otherwise, the bot, Loqi, will say that you … | Continue reading


@jamesg.blog | 17 days ago

Thinking; walking

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. Where do I want to be in a few years? What do I want to work on? What is my dream? I have never looked too far ahead in time, as long as I have a li … | Continue reading


@jamesg.blog | 18 days ago

A perfect day

Jo and I are trading blog post titles. The title Jo chose for me is “A perfect day.” What would my perfect day look like? Reflecting on this question, I started to think about the days that have brought me the most joy in the past. I realised that the days that stick out in my m … | Continue reading


@jamesg.blog | 20 days ago

Scotland’s brightness levels

I am trading blog post titles with Joe. He gave me a few suggestions for what to write about. I chose the title “Scotland’s brightness levels”. Place is a recurring theme when I am writing. Where am I? What do I see? What I write about Nature is what I see here in Scotland. In t … | Continue reading


@jamesg.blog | 20 days ago

Rhythm

I have been thinking about the rhythm of my writing recently. I wrote in my drafts: I have spent much of this evening writing. I started by working on a draft of a post about clouds that I wrote on my phone using Apple Notes while waiting for the bus. I then explored a few more i … | Continue reading


@jamesg.blog | 21 days ago

IndieWeb wiki pages I really like

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. I was thinking that, like all wikis, there are pages that are almost “hidden gems” in the sense that, while they are … | Continue reading


@jamesg.blog | 21 days ago

A piece of art I would love to see in person

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”. One of the many joys of art galleries is that you never know what you might see. A few weeks ago, I was surprised and delighted to encounter the J.M.W. Tur … | Continue reading


@jamesg.blog | 25 days ago

Clear sky

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. The snowy hills look like they are absorbing some of the blue, their hue a mixture of the snow and the … | Continue reading


@jamesg.blog | 25 days ago

Snow

I wondered if it would snow again this season. The weather has been persistently cloudy, but there has been little snow. Today, the weather changed. Just as I was about to go out for a walk, it started snowing heavily. It has been months since I have seen the snow like I did toda … | Continue reading


@jamesg.blog | 26 days ago

Adding multiple h-feeds to the same web page

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. This web page contains several h-feeds. h-feed is the microformats markup that says that the tagged area represents a feed. The … | Continue reading


@jamesg.blog | 26 days ago

What I associate with my name

Ava and I are trading blog post titles. The topic Ava chose for me to write about was “What I associate with my name”. When I was young, I remember distinctly looking through a kids’ encyclopaedia and finding “James” written in there a few times [1]. I don’t know why that memory … | Continue reading


@jamesg.blog | 26 days ago

Proust’s questionnaire

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! I am writing this blog post as the snow falls outside. I wasn’t expecting snow today, but here it is. Some of the most wonde … | Continue reading


@jamesg.blog | 27 days ago

A sandwich questionnaire, part two

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. Below I have responded to the delightfully-named “second helping” questions that Ruben … | Continue reading


@jamesg.blog | 27 days ago

The inverted index pattern

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. This week I was thinking about “inverting” data is more broadly applicable in software engineering than in … | Continue reading


@jamesg.blog | 28 days ago

Designing for inactive users: Account check-ins and deletion

Artemis has been open for registration with an invite code for over a year. In that time, many people have signed up. With that said, not everyone who signs up will end up using their account. This is par for the course with software. Signing up for an account doesn’t mean someon … | Continue reading


@jamesg.blog | 28 days ago

Redesigning the Artemis account deletion back-end

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 account deletion flow. I may also need to create an index in the database so I can e … | Continue reading


@jamesg.blog | 28 days ago

Notifying users of page updates

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. My eyes went first to the posts from authors to which I have subscribed, then to the da … | Continue reading


@jamesg.blog | 28 days ago

Brainstorming source code editing for web applications

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 used the bookmarklet so much I turned it into a browser extension, which I still use regularly to edi … | Continue reading


@jamesg.blog | 29 days ago

Drawing and hand-written fonts

I have been thinking about hand-writing and websites in the background for a little while. I made a hand-written font using Calligraphr a few months ago. I enjoyed making this font, but haven't used it for a web project yet. Here's what it looks like: While making the font, I e … | Continue reading


@jamesg.blog | 29 days ago

Sandwich Questionnaire

I love sandwiches. Earlier today I was thinking about how you can eat a sandwich at any time of the day. I have eaten sandwiches for breakfast, lunch, and dinner. When I saw Zachary’s “Sandwich Questionnaire“, I thought I have to respond to this! I have been thinking about respo … | Continue reading


@jamesg.blog | 1 month ago

Why I love my favourite words

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. It is one of my favourite words. The word delightful, like the word awe, makes me feel a certa … | Continue reading


@jamesg.blog | 1 month ago

Design and missing categories

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 automatically select a category. If none of the rules triggered and I did not choose a cat … | Continue reading


@jamesg.blog | 1 month ago

Noticing

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. A few minutes after entering the gallery, I was captivated by paintings of Nature and of Edinburgh. I noticed that one wall was ded … | Continue reading


@jamesg.blog | 1 month ago

Clouds

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. I hope for the blue sky. This last week has been rainy and grey. I tried to understand why but the meteorology went over my head … | Continue reading


@jamesg.blog | 1 month ago

Debug mode

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 different formats of information – web feeds like RSS or h-feed, Mastodon posts, B … | Continue reading


@jamesg.blog | 1 month ago

Staging banners

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 and production. If no mode is specified, development mode is set by default. Whe … | Continue reading


@jamesg.blog | 1 month ago

Redirecting YYYY-MM-DD-slug.md to /YYYY/MM/DD/slug with Nginx

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-software.md. This was caused by my static site generator using the markdown file … | Continue reading


@jamesg.blog | 1 month ago

Reducing Artemis’ deployment downtime with blue-green deployments

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. This has a significant downside: while the Artemis process is restarting, the software is unavailable … | Continue reading


@jamesg.blog | 1 month ago

Does your website run on green energy?

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 thinking about technology. I don’t know much about calculating emissions from tec … | Continue reading


@jamesg.blog | 1 month ago