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 | 3 hours 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 | 3 hours 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 | 3 hours 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 | 1 day 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 | 1 day 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 | 1 day 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 days 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 days 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 days 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 days 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 days 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 | 6 days 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 | 7 days 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 | 9 days 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 | 9 days 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 | 10 days 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 | 10 days 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 | 11 days ago

melody

the melody of the moment | Continue reading


@jamesg.blog | 12 days 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 | 12 days 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 | 12 days 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 | 12 days ago

the cafe

The quiet of the cosy city cafe. | Continue reading


@jamesg.blog | 12 days 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 | 12 days ago

Freshly made smiles

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


@jamesg.blog | 12 days ago

Filter before running computationally expensive tasks

In “Regular Expression Matching with a Trigram Index or How Google Code Search Worked”, Russ Cox describes a system that allows for code search with regular expressions. It has taken me several reads of the article to understand roughly what is going on, and I still don’t have a … | Continue reading


@jamesg.blog | 21 days ago

Ideas for performance testing infrastructure

ClickHouse is a database that aims to provide “lightning fast analytics for everyone.” They have published several resources online about how they strive toward making ClickHouse as fast as possible, including Why is ClickHouse so fast? In one post, Testing the Performance of Cli … | Continue reading


@jamesg.blog | 21 days ago

The long view of a blog

Nestled within the annals of my notes is “The long view of blogs,” followed by my wondering whether a blog could be a magnum opus. I later coalesced these ideas into the “long view” of a blog. I imagine this as thinking about the blog not as any single post, but rather as the col … | Continue reading


@jamesg.blog | 21 days ago

Showing incremental progress for longer actions

Showing feedback is an essential part of user experience design. When a user takes an action, it should be clear to the user that the action has been recognised by the system and that, as a result, something is happening. If an action is instant, feedback may mean showing the res … | Continue reading


@jamesg.blog | 21 days ago

Documenting user interfaces and experiences

Earlier this year, a friend told me that an essential part of learning design is to take note of what you like and don’t like. Once you notice that you like and don’t like, you can ask yourself why. From there begins the potential to analyze and build an eye that you can use to m … | Continue reading


@jamesg.blog | 21 days ago

Search filters in Slack

Slack uses keyword search. I can type in a keyword, like “optimization”, and find words that match the keyword. I can also add filters that refine my query. For example, I can say “optimization from:@James” to say that I only want to see messages that contain “optimization” and w … | Continue reading


@jamesg.blog | 21 days ago

How to use cProfile and snakeviz to profile Python code

Before you optimize your code, you should run a profiler to understand how your code performs. In Python, you can use cProfile to profile your code. cProfile is part of the Python standard library. With cProfile, you can find out: How long functions take to run in your code, both … | Continue reading


@jamesg.blog | 22 days ago

Impact

The theme for this month’s IndieWeb Carnival is impact. In the announcement, Xandra, who is hosting the event this month, noted “has someone made a profound impact on you?” as a potential question to explore. While saying to a friend “I’m not sure where to start with such a big t … | Continue reading


@jamesg.blog | 22 days ago

Precomputation

I have noticed a pattern across my work in search and on static site generators: in both cases, the key to offering good performance for users is to precompute as much information as you can. Text search engines rely on “reverse indices,” which map words to the documents they are … | Continue reading


@jamesg.blog | 23 days ago

Rich content presentation on personal search engines

Search engines help us find information. Over the years, web search engines such as Google have experimented extensively with how that value proposition translates into a user experience. At first, search engines helped you find web pages that addressed queries. Google famously s … | Continue reading


@jamesg.blog | 23 days ago

Readable and memorable URLs

The IndieWeb wiki, like Wikipedia, uses concise, descriptive URL slugs. A “slug” is the part of the URL after the domain name. For example, the following page takes you to the wiki page on coffee. https://indieweb.org/coffee I have recently been thinking about two benefits of co … | Continue reading


@jamesg.blog | 24 days ago

URL search in the browser address bar

The Firefox address bar lets you search for URLs given a series of characters. You can then select a URL with your arrow keys and press enter to navigate to that URL. One use of this for me is finding files on GitHub. For example, I can type gith jam def to find the default.html … | Continue reading


@jamesg.blog | 24 days ago

How to export images from Google Docs as a folder

When you copy images directly from a Google Document into Ghost, and potentially other rich text editors, URL references to the images in the Document are copied instead of the underlying image. This means that if the document is deleted, the images will be broken. Thus, before y … | Continue reading


@jamesg.blog | 1 month ago

Morning coffee

Read this article on James' Coffee Blog | Continue reading


@jamesg.blog | 1 month ago

Search engine shortcuts in Firefox

Firefox has a feature that lets you map a character or sequence of characters typed in the Firefox address bar to a custom search engine. For example, you can map w to Wikipedia, so the query w coffee would take you to the Wikipedia search page for coffee (which auto-redirects to … | Continue reading


@jamesg.blog | 1 month ago

Stargazing

How does one encapsulate this feeling of awe? I’m looking up at the stars and it’s beautiful. It’s beautiful. All the glimmers, from the intense to the twinkling. The moon, with a tint of red, is to my left. As I look West, I don’t see the comet for which I was looking. But it al … | Continue reading


@jamesg.blog | 1 month ago

in design, craft: this week in my blog

Read this article on James' Coffee Blog | Continue reading


@jamesg.blog | 1 month ago

from links, adventure

from links, adventure from links, adventure: № 1 october 9th, 2024 by James' Coffee Blog. 1. Designing for Users with Anxiety by the United Kingdom Government 2. Garfield: September 18th, 2024 by Jim Davis 3. A quote on words by Ursula K. Le Guin 4. Contronym on Wikipedia 5. Colo … | Continue reading


@jamesg.blog | 1 month ago

The writing equivalent of a duet

At Homebrew Writing Club yesterday, someone asked “What is the writing equivalent of a duet?” I explore this concept with reference to collaborative writing, then extend the idea further of applying musical metaphors to writing. This led to thinking about the literary equivalent … | Continue reading


@jamesg.blog | 1 month ago

Notes on performance

When I am designing technology, I like to think about how fast I can make the experience. This involves making conscious engineering decisions at the beginning of a project to lay the foundation for building a fast application (i.e. choosing the right data structures). Then, as I … | Continue reading


@jamesg.blog | 1 month ago

Brainstorming a design for audio note transcription

This evening, I started to think about what the experience should be on audio notes. Could I offer transcriptions? What would that look like? What design elements should I have on the page? What features could I add to afford greater utility to the transcript, like search? I expl … | Continue reading


@jamesg.blog | 1 month ago

A Monologue on Modality

At Homebrew Writing Club this evening, we spoke about modalities of content: of writing, audio, video, and more. We also spoke about the best way to make something is to get started, and to make it as easy as possible to get started. For example, instead of worrying about how to … | Continue reading


@jamesg.blog | 1 month ago

The longevity of technical documents

I have recently been reflecting on how technical writing goes out of date, and what that means as a technical writer. In the voice note below, I explore how technical documents have relevance far beyond their immediate utility as a reference material. Your browser does not suppor … | Continue reading


@jamesg.blog | 1 month ago