Hands-Free Tiling Window Management

Last year I read the excellent article “Hands-Free Coding” by Josh Comeau which went into detail about modifying his programming workflow to use dictation and eye-tracking after developing Cubital Tunnel Syndrome. I highly recommend reading the whole article and watching the demonstration videos of his approach.

This article was my first exposure to the dictation software Talon, which is specifically built to be hackable and naturally targets software developers.

If you know anything about me by now, it’s that I can’t use a computer without a tiling window manager anymore. I struggled so much when I switched to Windows that I ended up writing my own tiling window manager, komorebi.

Read more →

Dynamic vs. Static Config for My Tiling Window Manager

For the last few years I have been writing and maintaining a tiling window manager for Windows that has steadily grown in usage and popularity.

My first exposure to tiling window managers was on macOS with kwm (which was succeeded by chunkwm and later yabai). Naturally, this meant that whenever I used Linux, I would reach for bspwm.

I am a big proponent of what I call the “bspwm architecture” for tiling window managers.

Read more →

Ditching Docker for Local Development

Earlier this month I mentioned on Mastodon that I was replacing a Docker-based local development environment at my day job with a Nix-based one, orchestrated with overmind and a justfile.

There was quite a lot of interest in particular in how overmind and just could be used to replace a container / compose-based local development.

While I can’t share the details of the significantly more complex migration I did at my day job (yet! - I’m working internally on trying to find a way that we can disseminate the learnings publicly), I can share a simplified real-world example that I use for developing Notado.

Read more →

Notado 07/2023 Update: API Price Gouging, New Services, Archiving

The last few months have seen a flurry of changes on major social media websites like Twitter and Reddit with regards to API access. This has also resulted in a number of new competitors seeing rapid growth and becoming new hubs for online discussion.

Let’s start with the first point: you will always be able to save Reddit comments and Tweets to Notado by highlighting and saving a text selection. This doesn’t require any API access or scraping, and it will always work because it only relies on what is visible in your browser.

Read more →

Black Hole

Earlier this evening I finally had the opportunity to watch Spiderman: Across the Spiderverse, which I enjoyed a lot.

I have been reflecting on how my experience of films like these (films with teenage protagonists) has changed with age.

Even in my mid-to-late 20s, I would often identify clearly with the teenage protagonists, but over the last few years I have increasingly started identifying with the parents of the protagonists. Spiderman: Across the Spiderverse was no exception to this recent trend.

Read more →

The Bookmarking Data Model Is Wrong For Highlighting

The data model for bookmarking and highlighting services past and present can generally be distilled down to the following:

* URL
    * Title
    * Scraped Content
    * User Highlight
    * User Annotation
    * ... Other Metadata

The bookmark itself is tied to a URL, and anything else related to the bookmark, such as the title, the scraped content (if the service scrapes on your behalf), highlights and annotations are stored as additional metadata linked to that URL.

Read more →

The Banal Stupidity of Automated Chrome Store Reviews

For the past three years I have maintained a browser extension that I publish to both the Firefox and Chrome web stores.

I recently received an automated email from the Chrome web store overlords who had decided I was violating the “Use of permissions” policy by requesting the cookies permission “without using it”.

Here is a snippet from the manifest.json for my extension:

{
  "permissions": [
    "activeTab",
    "contextMenus",
    "notifications",
    "cookies",
    "https://<SPECIFIC_WEBSITE_RUN_BY_ME>/"
  ]
}

I request the cookies permission for https://<SPECIFIC_WEBSITE_RUN_BY_ME>/ so that I can transparently use the cookie set by that website when the user logs in to send authenticated HTTP requests from the extension. Nothing crazy:

Read more →

Overcoming Mental Barriers to Fitness and Aesthetics

In my mid-twenties my body was in pretty rough shape. I was suffering from chronic pain and had terrible mobility to the pain where my quality of life and mental state were being severely adversely impacted.

I was also terrified at the idea of entering a gym.

I worked with an excellent chiropractor in Birmingham (UK) who helped to provide significant pain relief and subsequently referred me on to a physical therapist. Through working with the physical therapist I realised that even without entering a gym, I still had a lot of avenues available to me to improve the state of my body.

Read more →

Resurrecting My Old Website With Ancient NixOS Packages

The past few weeks I have been putting off updating my personal website, which has sat untouched since October 2019. I’ve done quite a lot of interesting work since 2019, so finally this past weekend, I forced myself to sit down, clone the repository, and update it.

My personal website is nothing fancy; just a static website built with Hugo and a community theme, and hosted on S3. This should be simple, right?

Read more →