Pattern: Pre-rendering content

This article is the fifth edition of the Advent of Patterns series. In this series, running from December 1st to December 24th 2024, I will document one design or programming pattern I have noticed recently. Read more about this series. Pre-rendering refers to rendering something … | Continue reading


@jamesg.blog | 2 months ago

Spotify Wrapped 2024

Before my first sip of coffee today, I saw a colleague share their Spotify Wrapped. It’s that time of year again! Excited to see the collection of songs I had listened to most this year, I picked up my coffee and sipped it as I went to the other room to get my phone. First, coffe … | Continue reading


@jamesg.blog | 2 months ago

Advent of Patterns: Define once, reference everywhere

This article is the fourth edition of the Advent of Patterns series. In this series, running from December 1st to December 24th 2024, I will document one design or programming pattern I have noticed recently. Read more about this series. This year, I commissioned a holiday-themed … | Continue reading


@jamesg.blog | 2 months ago

Things I have been reading lately

One of my joys in the morning is to open my web reader and to look through all the new things to read. I may read some posts in the morning, or bookmark others for later. Sometimes, I add links to my personal notes, a sort of bookmark for my future self. The links in my web reade … | Continue reading


@jamesg.blog | 2 months ago

Advent of Patterns: Incremental computation

This article is the third edition of the Advent of Patterns series. In this series, running from December 1st to December 24th 2024, I will document one design or programming pattern I have noticed recently. Read the introduction to the series to learn more about the series. Stat … | Continue reading


@jamesg.blog | 2 months ago

Advent of Patterns: Filter, then compute

This article is the second edition of the Advent of Patterns series. In this series, running from December 1st to December 24th 2024, I will document one design or programming pattern I have noticed recently. Read the introduction to the series to learn more about the series. Whe … | Continue reading


@jamesg.blog | 2 months ago

Designing navigation on my personal website

There are a few categories of navigation features on my personal website: My website homepage. The sidebar, which appears on most pages. It is the main, global navigation for my website. Category and date links that appear on articles. My search feature. All of these features ser … | Continue reading


@jamesg.blog | 2 months ago

Advent of Patterns: Highlighted time since article publication

This article is the first edition of the Advent of Patterns series. In this series, running from December 1st to December 24th 2024, I will document one design or programming pattern I have noticed recently. Read the introduction to the series to learn more about the series. The … | Continue reading


@jamesg.blog | 2 months ago

prefers-reduced-motion and search-as-you-type

The more people talk about CSS features, the more likely it is that developers will hear about them. I learned about oklch in a talk about CSS colours. I learned why rem and em are significant after conversations with friends and reading about the topics online. I love the spectr … | Continue reading


@jamesg.blog | 2 months ago

Advent of Patterns

In 2021 and 2023, I challenged myself to publish a blog post on a specific theme every day from December 1st to December 24th. The 2021 theme was Advent of Bloggers, in which I discussed a blog I liked in each post. In 2023, I wrote my Advent of Technical Writing series, in which … | Continue reading


@jamesg.blog | 2 months ago

Pattern: Link contexts

External links on my website now show a small icon commonly associated with an external link. The icon, which is part of each link and implemented using the CSS ::after pseudo-element, is a visual indicator that the linked material is on another website. This provides important c … | Continue reading


@jamesg.blog | 2 months ago

Designing a calm web reader

My equivalent of the “morning paper” is reading personal websites. I sometimes get so excited to check what new blog posts are out that I write down on my TODO list that I should check my reader in the morning to see what’s new. 1 I designed my web reader – the interface I use to … | Continue reading


@jamesg.blog | 2 months ago

Inspiration

My inspiration ebbs and flows: some days, I have many ideas; others, I think hard but no ideas come. I have found that speaking with friends helps me to think of new things to make and write about. Spending more time out and about helps too. I haven’t been walking around a lot re … | Continue reading


@jamesg.blog | 2 months ago

Coffee preferences

Back when I used to attend coffee festivals – something I should plan to do next year! – I would revel in the prospects of trying coffees that vary by varietals, roasting method, region, and more. For each coffee I tasted, I could learn something new; I learned some flavour profi … | Continue reading


@jamesg.blog | 2 months ago

More on forgiving interfaces

In my recent blog post “Forgiving interfaces,” I reflected on the ways in which software can be designed to be “forgiving.” I was thinking about forgiveness in design through Tantek’s original definition of “able to undo or otherwise correct your mistake.” This evening, I started … | Continue reading


@jamesg.blog | 2 months ago

Front End Study Hall

Front End Study Hall One of my goals for this year has been to learn more about the tools of the web platform: HTML, CSS, and a bit of JavaScript. I am excited to learn about the possibilities of these tools and what I can do with them. I have particularly enjoyed learning about … | Continue reading


@jamesg.blog | 2 months ago

Writing on whiteboards

Last night, before bed, I was thinking about ideas for what to blog about in December. I am interested in doing another writing series, although I was unsure on what topic to write. I still am, but now I have a few more ideas. As inspiration struck – one idea, then another – I st … | Continue reading


@jamesg.blog | 2 months ago

Forgiving interfaces

Tantek introduced me to the idea of forgiveness as a property of a trustworthy tool, defined as “Forgiving — if you make a mistake, you should be able to undo or otherwise correct your mistake.” I was thinking about this when reflecting on a notes archiving tool I made. The tool … | Continue reading


@jamesg.blog | 2 months ago

The joy of bookshops

Last month, the Guardian published an article on how “young people are shunning AI algorithms and online retailers to experience the joy of visiting bookshops.” The article makes me feel excited, and matches my experience going to a bookshop. I go to bookshops to explore, to wand … | Continue reading


@jamesg.blog | 2 months ago

The joy of making tiny tools

A year or two ago, I made a tool that saves notes from IndieWeb meetups to MediaWiki. I made the tool because it was tedious to copy-paste the notes from our note-taking software, Etherpad, to the wiki. Archiving also involved adding a few tags so that the page would have various … | Continue reading


@jamesg.blog | 2 months ago

Web Writer’s Workshop on December 3rd

I am hosting a Web Writer’s Workshop event on December 3rd, 2024. The event, scheduled to last 90 minutes, is a place to chat about all things writing: what to write about, writing tips, staying motivated, how to collaborate on written projects, and whatever else comes up on the … | Continue reading


@jamesg.blog | 2 months ago

Confidence

I want to learn about design, I thought to myself, excitedly. I was interested in why some things feel better to use than others – why do some tools feel like a delight, while others feel rough around the edges? What makes an effective tool? What makes a tool a delight to use? Ho … | Continue reading


@jamesg.blog | 2 months ago

Ideas and friends

When I woke up this morning and opened the window, it was snowing. This was the first time this year I have seen more than a small flutter of snow fall from the sky. The ground and hills were coated with snow; the imprint of footprints followed the pavements. It was cold. And it … | Continue reading


@jamesg.blog | 2 months ago

live more & love more

live more & love more Recommended by a friend, I first listened to Cat Burns’ live more & love more on an early morning train. The songs I listen to often were flowing through my headphones; the usual playlist going. The music soothed the transition from tiredness to feeling read … | Continue reading


@jamesg.blog | 2 months ago

What do you want for the web?

The web is empowering. Through the web, we can find information, read and share stories, find inspiration for the next thing we want to do, and communicate with others. We can make art: poems, essays, fiction, websites. We can share what makes us human. I was thinking earlier tod … | Continue reading


@jamesg.blog | 2 months ago

Adding dark mode to my website

When I redesigned my website earlier this year, I removed the dark mode theme from my website. I wanted to focus on getting the website working first – a functional design was the goal. Now that I have been using my new theme for a few months and, in the process, refined several … | Continue reading


@jamesg.blog | 2 months ago

Designing search filters for my personal website

As I continue to build my blog search engine, I have been asking myself “given my search engine is for my website, what features can I build that would be most helpful to me?” I have been thinking a lot about search filters since I wrote my blog post on how helpful I find Slack’s … | Continue reading


@jamesg.blog | 2 months ago

Make a two-column list layout with CSS grid

I have several lists on my website that have two columns. For example, my archive pages have a column for the date on which a post was published and a column for the post title. My link garden has a column for the link title and another for a tag related to the content. Here is a … | Continue reading


@jamesg.blog | 2 months ago

Ideas and friends

When I woke up this morning and opened the window, it was snowing. This was the first time this year I have seen more than a small flutter of snow fall from the sky. The ground and hills were coated with snow; the imprint of footprints followed the pavements. It was cold. And it … | Continue reading


@jamesg.blog | 2 months ago

Planting a link garden

I have so many links I can share, I said to a friend with excitement. I often feel this way. I have websites and web pages in my head that I often refer to when I’m talking with friends. Perhaps one of the reasons I love search so much is that I don’t necessarily keep all my favo … | Continue reading


@jamesg.blog | 2 months ago

Some things that bring me joy

Toward the top of my notepad, I wrote I miss personal writing. I realised this in a conversation earlier this week where I felt that something was missing from the more technical writing I have been doing lately on this website. As I was singing and dancing while waiting for the … | Continue reading


@jamesg.blog | 2 months ago

Share a compliment with a creator you appreciate

One of the joys of making something is that you never know the extent to which it can inspire someone. I was just thinking about all the things I have on my bookshelf. The authors will never know that their books touched me in a particular way. Thus is the nature of creativity: w … | Continue reading


@jamesg.blog | 2 months ago

Adding direct answers to my website search engine

My website search engine now supports direct answers. Any query starting with what is or what are is processed with logic that aims to find a direct answer to the question. For example, consider the query “what is a trie”. When this query is run, the search engine returns a “dire … | Continue reading


@jamesg.blog | 2 months ago

Ideas take time to garden

Sometimes, I have an idea for something to create – an essay, a blog series, a program, a tool – that I realise I am not ready to make yet. I felt this way when I wanted to write about technical writing. I knew I had something to say, but I wasn’t sure what yet. I feel this way w … | Continue reading


@jamesg.blog | 2 months ago

Improving search relevance with word proximity

My website search engine uses text search to identify documents relevant to a given term. Up until recently, the search engine treated every word in a term independently. For example, consider the query “all too well”. Documents would be found that contain any of the words in the … | Continue reading


@jamesg.blog | 3 months ago

How to find word collocations in a document

My blog search engine used to treat every word independently in evaluating a query. For example, results for “homebrew website club” were calculated by finding documents that contained all those words. The words did not necessarily have to be in sequence. For many queries, docume … | Continue reading


@jamesg.blog | 3 months ago

Learning from human experience interviews

In Let’s replace “user experience” with human experience, I posit that we should use “human experience” instead of “user experience,” the former expressing more directly the fact that we design software for people. When I make this website, I like to follow my curiosities. With t … | Continue reading


@jamesg.blog | 3 months ago

Let’s replace “user experience” with human experience

I recently asked two friends to give feedback on part of the experience on my website. I invited both to calls, separately, and gave the requisite context about the feature I wanted them to try. I then watched as they navigated around the website in pursuit of a goal. I was tempt … | Continue reading


@jamesg.blog | 3 months ago

Hopes

I love being the person who can make sound from a piano where there was silence. I hope that I can also be the person who inspires more people to find their own sound. | Continue reading


@jamesg.blog | 3 months ago

Reunited through time, for a moment

It was with the sounds of the cicadas, that Sestuna walked through the streets, looking for the rumored cafe with the ability to travel in time. She could hear the sounds of the first fireworks in the background, the children running around the streets. She passed the Obon festiv … | Continue reading


@jamesg.blog | 3 months ago

Organising content by theme

I have spent a lot of time thinking about how to organise content on my website. I want you, my readers, to be able to learn about the different types of content to write – from poetry to technical blog posts to stories – and find the posts that may be most interesting to you. Th … | Continue reading


@jamesg.blog | 3 months ago

melody

the melody of the moment | Continue reading


@jamesg.blog | 3 months ago

Musical concepts and blogging

I have been thinking about how musical concepts apply to blogging recently. For example, could you make “playlists” of your content that are curated by theme or the mood of the posts? For example, could I have a list of “Monday morning pick-me-ups” with heartwarming stories I hav … | Continue reading


@jamesg.blog | 3 months ago

Watching the world go by

Music from Bon Iver plays in the background of a cosy cafe in the heart of Mitte, Berlin. The cafe is elevated from street level, which gave me a different perspective of the street. After a few days of cold mornings, the city had started to warm up a little bit. People will stil … | Continue reading


@jamesg.blog | 3 months ago

Freshly made smiles

Freshly made smiles at a supermarket in Berlin. | Continue reading


@jamesg.blog | 3 months ago

Making, collaboratively

A few weeks ago, I wrote a blog post with a friend in real time using Google Docs. We started with a blank page and conversed in the document to develop an idea. Then, we started writing, together. The result was a delightful story. We only spoke in Google Docs; our communication … | Continue reading


@jamesg.blog | 3 months ago

the cafe

The quiet of the cosy city cafe. | Continue reading


@jamesg.blog | 3 months ago

Seasons

The hills on the horizon are becoming clearer, I think to myself. I reflect on the faint haze that remains after the heavy fog that painted the landscape white earlier in the morning. The low sun is shining, illuminating the few remaining colourful leaves on the trees in front of … | Continue reading


@jamesg.blog | 3 months ago