Matthew Lang avatar

Tools

Software tools, utilities, and the things that make work easier.

For the first time in a long time, I am seriously giving some thought to changing my RSS reader from Feedbin to something else. I don’t know where I saw the original link posted, but Gobbler might tick all the boxes for what I need.

I have been using the Zed text editor for such a long time now. The nightmares of using VS Code are now distant memories.

So what do I go and do? Install Vim again. This time, it’s the Vim Classic version. A fork of Vim 8.x, maintained without the use of generative AI tools.

The SaaS desktop app

I’ve been looking at several PostgreSQL clients as I migrate my local development databases away from Docker containers and back to a native PostgreSQL installation.

As I evaluated several desktop apps to manage these databases, I was disappointed to find that many require a monthly subscription.

The subscription model makes sense for server-dependent software. The server is part of how the product works and is often a key component. The product might use the server to sync information between devices or to process information in the background. The subscription model covers the ongoing costs of running and maintaining the servers on which the product depends.

Why a subscription model for a desktop app though? In most cases, the desktop app runs on your own hardware. In the case of a PostgreSQL client, it can open databases that exist on my laptop or even on another remote server, but the product itself doesn’t need a server to do this.

The justification is revenue predictability. One-time purchases tend to spike at launch and taper off, making it hard to forecast earnings or plan for the future. A subscription smooths that out.

I get why developers go down this route. Predictable revenue is easier to build a business around than the feast-and-famine cycle of one-off sales. But predictability is a benefit to the developer, not a justification rooted in the product itself. A $20/month subscription for a desktop app will cost $240 a year, every year, for software whose core functionality was largely complete on day one.

There’s a better model from back in the day before subscriptions. A one-time purchase with an optional paid upgrade for major versions, the approach taken by apps like Postico and TablePlus, gives the developer ongoing revenue tied to actual new work and gives the consumer a cost that reflects what they’re actually getting. If the subscription model is justified by ongoing server costs or continuous development, fine. But if it’s just a pricing decision dressed up as a product decision, it’s not a product that I think I will give my money too.

Dedicated devices

Over the last year, a line has been forming between my laptop and my phone. And it became really clear last week when I tried out Obsidian Sync for a few days.

I thought it would be good to run Obsidian on my phone as well as my laptop, so I set up Obsidian Sync, got the remote vault working with my local vault, and set it up on my phone. I must admit, it was tricky to get my local vault up and running with it, but that wasn’t the reason why I cancelled it.

After a few days of use, I found I didn’t like using my phone to interact with Obsidian. I preferred a bigger screen, and so, I found myself reaching for my laptop more during this time. The sync feature wasn’t the problem. Trying out Obsidian Sync solved a different question. Which device do I want to use? The answer was obvious: the laptop, almost every time.

It was from this point that the divide between phone and laptop was clear.

My laptop is for head-down work. Coding, writing, researching. Anything that requires me to spend more than a few minutes on a single task. Anything like that and I use the laptop. There are two benefits to this.

The first is that the laptop is a dedicated workhorse. There are very few social media applications on it, so notifications are infrequent.

The second is that I no longer require as many app subscriptions. Many subscriptions are based on the premise that they can sync your information between devices. With just one device, that cost disappears. And given that just about everything is a subscription these days, that’s not a bad thing.

For everything else I do, and there’s not much left thankfully, there’s my phone.

I use it mostly for messaging family and friends as well as for golf club-related comms. I use it to arrange teams matches, organise competitions for the club’s junior section and organise other junior events.

I do use social media on my phone as well, but I keep my interaction light there. Reddit is still a good source for many things. I’m more of a lurker on Instagram. I prefer to share most of my photos on my blog rather than on Instagram. Then there’s BlueSky and Mastodon for news.

There’s one exception to the laptop rule. I have iA Writer installed on my phone and my laptop. Why? Just for when the need arises for putting some words down and I’m away from my laptop. For everything else, though, the divide between them is clear: each has its own dedicated use.

It’s taken me until I am almost 50 years old to get to this point and recognise that each device has its purpose. It’s taken a while to get here, but at least I have arrived. Better late than never.

Digital wandering

Every few months, I start to question the tools and processes I use to build a couple of side projects. It invariably stems from at least one of the following questions:

  • Is there a better way of doing this?
  • Are there better tools than the ones I am currently using?
  • Will I be better off with these new tools?

What follows is a process that leads me right back to the very beginning. I view it as a curse, and it is in a never-ending loop.

Here’s how it works.

I am wondering if the processes that I am using are working for me. This usually happens between tasks when I think something isn’t quite right. I might have dropped the ball on something, or I haven’t checked in on some code I’ve been writing for a few days. Simply put, I have lost my place. It’s at this point that I start to wonder if there are better tools or apps I could be using.

A few days go by as a gremlin sits in the back of my brain, rewiring my thoughts in favour of how a shiny new tool would solve my woes. After a week, I start to look at different apps and products that will get the job done better. After a couple of weeks, I sign up for one or two apps I may or may not have used before and start trying them out alongside my existing processes. After another week, I conclude that these apps are not going to work for me and delete their accounts.

I then go back to my original tools and find the fault is actually me, not what I am using.

A few weeks later, and the whole process starts again.

So what gives? Why do I put myself through the cycle of doubt and time-wasting?

Reading back what I just wrote at the start of this post, it’s clear that even the slightest break in the routine of progress has me questioning what I use and how I use it. And to be honest, that break in routine is usually me procrastinating or external factors breaking my planned time on something.

I’m sure I’m not alone in this cycle, and it was probably more of a thing back in the day, when we had a new todo app or task manager released every month, and everyone wanted to use the latest and greatest app, but didn’t really know why.

Over the past five years, I can count on both hands the number of times I have tried Todoist and Basecamp in vain attempts to find that golden feature I have missed. I know full well it’s not there, but clicking about through the apps is probably the one highlight from this cycle.

It’s taken me many cycles to get to where I am with the tools I use for web development and writing, too. Many subscriptions to different products and apps, and what has this many years of digital wandering taught me?

It’s the analogue tools that keep sticking. The notebook, the pens, the index cards. Despite all the technological advancements, and with the age of artificial intelligence and LLMs marking a major change in the world, I still fall back on my trusty notebooks. I think for me, they’re more robust than digital tools; they have an offline mode and, finally, they’re a damn sight more interesting to look at than a screen.

Don’t get me wrong, I still use several tools and apps to support my web development, where a notebook can’t be used. I use issue-tracking software to manage a backlog of features and bugs. I use LLMs to act as pairing buddies when working on features. I have digital tools that have their place, and analogue tools that have theirs.

I think I’ve finally found the balance between the two, and I should accept that this works.

One of my biggest Obsidian peeves is that the graph view doesn’t retain the settings you change. Yes, some plugins do this, but surely there’s been discussions about persisting these settings without a plugin.

One of the newest things that many notes apps are doing with Markdown is callouts. They add context to your notes. I first came across these in Bear, but good to see that Obsidian also supports callouts.

Moving on from GitHub

It’s been quite a week for GitHub and not in a good way.

It’s no secret that GitHub outages have been more frequent recently. The Missing GitHub Status Page definitely paints a more accurate picture of the outages that GitHub have been experiencing.

This week, Kev Quirk shared his reasons for migrating his public repositories away from GitHub to Codeberg. While he acknowledged the significant downtime, Kev’s main reason for leaving GitHub is to reduce reliance on big tech.

Recently, Mitchell Hashimoto, author of Ghostty, also indicated that the Ghostty project will be moving away from GitHub. Mitchell cited the increasing outages of GitHub as being the main driver behind the project moving elsewhere.

My move away from GitHub stemmed from a sense of division between work and personal life. I use GitHub for work and for personal projects. Despite using separate laptops for work and personal, I actually have the same GitHub account for both. So while I changed my laptop, the GitHub account was still the same. GitHub was convenient, and that convenience blurred the line between work and personal. Eventually, I found myself tuning out more on my personal projects as I felt I was still in my work environment in GitHub. It was time to consider another place for my personal projects.

GitHub’s centralisation made it hard to consider leaving. Everything is already there. All the popular open source projects, lots of social features and thousands of developers that you can follow. I imagine it’s the Facebook for developers (even though I don’t have a Facebook account).

I started looking for an alternative platform to host my projects on and eventually settled on Sourcehut.

Yes, it lacks several features that are perhaps taken for granted in other platforms like GitLab and GitHub, but it was this minimalism that attracted me to the platform. It just had the essentials that I needed. Git hosting for my projects and the ability to track tickets for those projects. I can still manage my personal projects with ease, perhaps even easier now that I do everything through the terminal.

As for the social side of GitHub, I don’t feel I have missed out on anything by moving to SourceHut. I’m still keeping up to date with new open source projects and libraries through the different RSS feeds and newsletters I subscribe to. As for people, I subscribe to their blogs. If it’s important, they’ll write about it.

GitHub’s recent outages have sparked several conversations on websites like Hacker News and Lobsters. It would be easy to identify outages as the main reason people are moving away from GitHub, but clearly, it’s rarely the whole story.

I might have found a notes system that sticks

I’ve tried a lot of different systems for note-taking and task management over the years, but one downside of each has been the time needed to maintain its organisation to a level that keeps it useful. I have lost track of how many different systems and methods I have tried, but I always ended up with a small collection of notes until I settled on the Bear notes app a few years ago. Even using the Bear notes app, though, I was still not 100% settled on using it and wanted something more from my notes. And that’s where the LLM wiki pattern came in.

The LLM wiki pattern, described here as a GitHub Gist, has been an absolute game-changer since I started using it last week. The gist on GitHub explains the system and how the LLM can help maintain your wiki over time.

The migration

It hasn’t taken me long to migrate my Bear notes and Instapaper queue to Obsidian, and, coupled with the ability to automate parts of the schema and for the LLM to handle management of concepts, entities, and summaries, I have managed to get my current notes in Bear to a better shape than I have ever had them in before. Migrating my Bear notes and Instapaper queue to this new system was quite expensive in terms of LLM usage, but I managed to spread it out over a few days.

What I am left with after this initial migration is a list of 150+ articles from my Instapaper queue that I need to vet and decide whether to keep in my notes. I’ll be doing these in batches of five or six each morning to avoid burning through my Claude Pro subscription. I found out early on that this process of fetching and summarising articles can be quite expensive in terms of token usage.

The benefits

My notes are now plain text Markdown files once again. Many note-taking apps use Markdown, but not many of them allow you to access your notes as files and update them outside of the app. Having plain-text files means I am not tied exclusively to Obsidian, and I can use other tools with them if I want to. They might not always be in the right format or syntax for linking between notes, but they are in a fairly common format that is easy to update and migrate.

I am also choosing not to sync these notes to my phone. The intended outcome is that anything I need to do with my notes should be done on my laptop during a dedicated time slot for that task. This should also reduce the amount of time I spend on the phone, which is never a bad thing.

I am migrating my tasks from Things to a separate section of the wiki, still within the same vault in Obsidian. The structure of these files is based on Nicholas Bate’s six compass points, and is a mixture of projects, notes and next actions. The six compass points allow me to allocate a project or task to a specific compass point and make organising such items much easier. The big benefit of this system is that, while I can allocate tasks across different compass points, I can bring all of them together into a single view in Obsidian using the Dataview plug-in.

So far, so good

The LLM wiki pattern is great because it does most of the work for you. It maintains the index, summaries, fetches and breaks down sources for you. I’m quite happy to review additions as they come into the system, but the self-organisation of the information is what makes this a quite powerful tool.

There are other benefits to this, but the big one for me is that the information across my wiki is back to plain text again. I’m happy to have a collection of files I can maintain myself if needed.

I admit it’s early days with the LLM wiki pattern, but the gains from it over the first week have been impressive. In a few months, I’ll touch back on its usage, what I have changed with it, and whether I will continue using it.

Today I cancelled my Bear and Instapaper subscriptions. I’ve had both for what seems like years, but for very different reasons, I have cancelled both. My Instapaper had been unused for months. Bear, on the other hand, was still being used daily, but I have moved in another direction for my notes.

I’ve been using DuckDuckGo for years, but other than their privacy stance, there’s not much else to keep me there.

I’ve been intrigued by the interest in Kagi in my Micro.blog timeline over the last few months. So much so that I created a free account for myself today. Loving it so far!