Chris Hannah
My little piece of the internet

Currently Listening

Software I've Enjoyed in 2023

2023 is nearly at a close, so I thought I'd write about the software that I've enjoyed using this year. Some of these I've been using for a while, others I've either moved back to this year, or tried out for the first time.

Things

Screenshot

I'm not exactly a big user of task manager apps, but for the odd occasion where i want to track important tasks, or keep track of things like packing luggage for a trip, or purchasing/wrapping christmas presents, Things has been a really good fit for me. I'm pretty sure it's capable of much more than I use it for, but I'd rather that, than use something that forces me to change my habits.

Neovim

Screenshot

This is probably symbolic of my the general way I've been using my computers recently, but I have to give a massive mention to Neovim. You may not have heard of Neovim, but if you've heard of Vim/Vi, I'm sure you'll have a rough idea of what it is.

I've been using Neovim for most of my development work (outside of Java), writing short notes, editing small files, and also to write blog posts. It's a truly powerful piece of software, and the more I'm both learning and customising it, I'm becoming faster at using it, and it's becoming much more moulded to my own use cases.

If you're interested, my Neovim config is available on GitHub.

Artifact

Screenshot

Apart from social media, I've found Artifact to be a really good tool to surface news, blog posts, links, apps, etc. that are both relevant and interesting to me. I don't use it every day, but I can easily get lost in there if I want to. It sends articles that it things I'd like regularly as push notifications, which aren't always perfect, but they're still useful enough that I've left them on.

The only downside to Artifact is that it's iOS only. I'd love to either see a native Mac app, or even just a web interface that I could use.

NetNewsWire

Screenshot

This is an app I've used for a while. But it's such a great RSS reader, I can't say I've even wanted to even think about switching to anything else. I'm using NetNewsWire mainly to follow people, whether it's developers, personal bloggers, or even a few newsletters.

It seems to me that there's been a bit of a resurgence in personal blogging recently, so I've definitely been using NetNewsWire more than past years. And I hope it continues.

Homebrew

Screenshot

The world of package managers[1] for macOS is a lonely one. Fortunately, what we have is Homebrew. Maybe it's because I appreciate command line tools, or just that I dabble occasionally with Linux, but having a package manager is becoming essential for me. Whether it's to install a CLI tool like eza, neovim, or ripgrep, or even non-open source software through Homebrew Cask, it's a really easy way to both install and manage software.

I use Homebrew myself as a developer as well. I distribute Text Case CLI through a custom Homebrew tap. Simply because I didn't want to go through the hassle of signing and notarising it as an app, and then have the extra baggage of maintaining it that way. Instead, when you use Homebrew to install Text Case CLI, it clones the public repository, and then compiles it on your machine.

I've been through a few laptops at work recently, and that's when I really notice how useful it is to have a package manager. Because in one command you can pretty much get all your required tools installed. Which means you don't need to go through the boring task of going to various app websites, downloading installers, expanding DMGs, etc.

Amethyst

Screenshot

I've been using this for a while, but I'm a big fan of tiling window managers[2], and Amethyst is the best one I've come across for macOS so far.

Sure, I'd much prefer a proper native tiling window system with better workspace support. But at least Amethyst gives me the tiling support, and also some keybindings that can help you throw windows between macOS spaces. It's definitely not for everyone, but as someone that typically works from a laptop screen, it's super handy to be able to manage my windows and spaces from my keyboard.

Safari Web Apps

Screenshot

This isn't an app in it's own right. But the recent feature in macOS Sonoma to save any website in Safari as a web app is so useful for when an app or service only exists online. Back when I was playing Chess a lot, I had the Chess.com website saved in my dock as a web app. At home I just have a web app for Fosstodon (the Mastodon instance I'm on), and at work, I have a bunch of them for internal web tools that we use.

The best thing is that they're not the same as typical web app turned native, like you may see with Electron-based apps. Instead, they look, feel, and perform, exactly how they would if they were opened in Safari.


  1. Basically, a tool that helps you automate the management of installing, configuring, and removal of software (packages). Read more. ↩︎

  2. A window manager that resizes your windows into always-visible tiles on your screen (or workspace). Read more. ↩︎

A Better Version of the ls Command

I was watching various videos recently about various command line tools that could be useful on macOS, and one peaked my interest, a replacement for the ls (list directory contents) command, called exa. It's still just listing the contents of a directory, but it has a lot of nice-to-have features like better colouring, better visualisation of metadata, knowledge about more file types, and a bunch of options that you can use.

TL;DR, exa is no longer being maintained. However, a replacement has now risen out of the ashes, and is called eza.

Essentially, eza, is a maintained fork of exa, and adds even more features, that you definitely didn't know you needed. Nevertheless, even just using the default behaviour, you'll find it much more pleasant to use than ls.

I have it currently replacing three commands, ls maps directly to eza, ll is mapped to eza --long, and also because it has support for trees, tree is also mapped to eza --tree.

Some examples to give you an idea what it looks like:

eza

eza --long

eza --tree

You can find the code, docs, and install instructions via the GitHub repo. But if you're on a Mac, and you use Homebrew, you just need to type brew install eza.

Using an Old Computer for New Writing

Ruben Schade has an interesting idea, that's started flipping a lot of switches in my head, using an old computer as a dedicated device for writing.

I’ve seen more people on Mastodon take up old computers for this purpose, which as a self-respecting retrocomputing nerd has inspired me tremendously. These are some of the reasons I’ve seen:

  • Single-tasking operating systems force the text editor to be front and centre, and nullify any temptation to ALT+TAB to a browser, or chat window, or a quick game of Chips Challenge running in Wine.

  • Spartan GUIs or text interfaces have fewer distracting Das Blinkin Lights, relatively speaking.

  • Old machines and word processors have their charms. Why wouldn’t you want to write on something old and cool, instead of something new and meh?

  • Some old keyboards were garbage. Some were wonderful. The latter, turns out, are still great to type on.

  • Writers have muscle memory going back to the days of WordPerfect or Paperback Writer. I think The Beatles sang a song about that.

  • Fast character recognition. Modern computers have higher latency between key presses and typing, which I absolutely notice now.

Just reading this post makes me want to get out my X1 Carbon ThinkPad, play around with Arch, and configure myself a device dedicated to writing. It wouldn't even be that complicated for me, since my blog is really just a bunch of markdown files that are put together on my server using Hugo.

The idea makes my mind go back to a video by Joshua Blais where he talked about using a 10 year old ThinkPad, and also how he uses various devices to keep contexts defined and separate.

I think it's time to download a fresh Arch ISO, make myself a coffee, watch some of Joshua Blais' videos, and play around with a ThinkPad.

Sony Playstation Removes Access to Already Purchased Content

PlayStation:

As of 31 December 2023, due to our content licensing arrangements with content providers, you will no longer be able to watch any of your previously purchased Discovery content and the content will be removed from your video library.

I'm so glad this didn't affect me. Because something like this would annoy me so much I'd stop buying things digitally. And I'm not quite ready for that yet.

One a Month

Manuel Moreale writing about supporting people online:

But I recently realized that tiers are the wrong approach. At least for me. I believe in kindness. I believe that if you decide to support something I do, you should get all the benefits, no matter how much you pay.

I also realized that 1$+/month is the best price possible when it comes to supporting online creators. The 1$ part means you can set it up and forget about it because it’s a low enough amount that won’t make too much of a difference for the majority of people who are considering supporting online creators. The + part allows you to contribute more if you want to do so. And that’s just perfect.

As a result of this idea, I've also gone ahead and updated my Ko-fi page to be up to date, and to also have an option for a £1 a month membership.

Previously I've had links to BuyMeACoffee on my sites, but I think the idea of a £1 (or higher) subscription is a better model for supporting people like me online.

At the moment, this subscription is more of a tip to support the work I do here on my blog, and also the software I write. However, this may expand in the future.

For example, I've always liked the idea of a newsletter, and I've tried it a few times in the past, so I think I may bring that back at some point. And I also want to write more open-source software in the future. Right now the only open-source project I'm really working on is Text Case CLI, and I think I want to do more of this in the future. Along with maybe even working on some free apps.

With all that being said, you can find (and support) me on Ko-fi.

4 Days of Advent of Code

It's only the 4th of December, so there hasn't been much of Advent of Code so far. Just 8 puzzles, out of the 50 total that we will get to solve.

This is the first time that I'm attempting all of the puzzles, and my aim is do them roughly within the same day. Although I'm not sure I'll get much code written on Christmas Day.

That being said, while some days have been tougher than others, I've had a lot of fun so far.

I've seen a lot of people talk about Advent of Code being the perfect tool to help you learn a new programming language. I'm not doing that myself, but I am writing it in Java 21, so I'm both refining my Java skills, and also seeing what is new with the language at the same time.

So far it's been mainly string manipulation, iterating through arrays, and some fiddly counting logic. It can be a bit tedious at times, but maybe after 25 days it will come a lot more naturally.

If you want to have a look at my solutions so far, I have a public repo on GitHub with the logic for each puzzle.

Well, I Guess I'm a Java Developer

I've written a few times about my progressional career as a software engineer, and how I've had troubles working out what my programer identity was.

Needless to say, right now, professionally, I'm 90% a Java developer [^1].

With that in mind, I updated my LinkedIn and my online CV to reflect my latest situation (and skills, experiences, etc.), and I'm now "officially" casually open for a new role. I say it like that, because I'm in no rush to leave my current role, but I've decided that I'm going to start keeping my ears peeled for any interesting opportunities.

I've also now decided to take a more formal approach to learning more about Java, and how I can become a better Java developer. Even though I used it for a few years at university, and also quite a number of years professionally, I think I'm going to try and focus more time on getting even better.

That has meant that I've been having some fun on LeetCode solving various problems. But I'm going to have an attempt at this years Advent of Code. I've done some individual puzzles in the past, but I've never tried to do them each day (or close to) as they are available. So that should be fun.

I don't know if I'll be posting my Java-related content here. But it wouldn't surprise me if I decided to have fun with a few more side-projects while I spent more time refining my Java skills.

Analogue Pocket Now Comes in Authentic GameBoy Colours

Andrew Webster, writing at The Verge:

Analogue seems obsessed with recreating the Game Boy family as faithfully as possible. For its latest endeavor, it’s bringing the classic colorways of the Game Boy Advance and Pocket to the Analogue Pocket. These Classic Limited Edition Pockets have, according to the press release, been “carefully color-matched” to resemble the colors of the Game Boys of old, offering blue, green, indigo, spice orange, pink, red, silver, and yellow.

I've been interested in the Analogue Pocket for some time. Although I've always held back because I'm not sure if I'd actually use it.

However, I have to say, I love it in the true GameBoy colours.

Meta Thinks That It's Apple's Fault That They're Letting Teenagers Download Facebook and Instagram

Ben Lovejoy, reporting for 9To5Mac:

Apple and Google should be held legally responsible for gatekeeping app downloads by teenagers, suggests Facebook and Instagram developer Meta.

Yeah, sure.

“It’s not our fault we actively develop and promote software that negatively affects teenagers health, they downloaded it from your App Store”

Small Communities

I've been thinking about online vs real-life communities, and how in the real-world, there are many aspects that separate individuals, but also groups apart from each other. And yet, I'd estimate that most people feel more connection to people in the real world than on any online community.

For years I've had the same overarching thought in my head, that we humans simply cannot comprehend or deal with the scale that the internet has opened up to us. This both applies to things like the scope of news that is presented to us, and also when it comes to having human interactions with each other.

Traditional social networks are the worst offenders in my opinion. Especially ones who's foundations are built on everyone being connected, and having recommendation algorithms trying their hardest to force any form of interaction.

Whether it's a chef sharing their cultures cuisine via Instagram, a student sharing their learnings via X/Twitter, or a group of young people making fun videos and posting them to YouTube. There's always going to be one or many individuals/groups that won't be it's biggest fan. However, in the real world, you wouldn't expect someone to read a cook book, just to then tell the writer that they did it wrong, or go up to a group of young people and tell them that whatever they're doing, they could have done it better.

And yet online, it's quite typical to see negative replies to any form of human interaction. I don't to be hyperbolic and say that social networks encourage us to be negative to each other, but I do think that most social networks try to connect us together in ways that simply isn't natural.

We've gone from having small local communities, to what can feel like at times, having the entire world in your living room.

It's probably why some people just make their online presence completely private. Because then they can control the scope of their interaction, and avoid an abundance of negativity in the case where something was picked up by an algorithm and shown to a huge number of people.

In Ricky Gervais' show, Humanity, he had a funny segment on the typical replies you can find on Twitter. This is just a small snippet:

That’s like going into a town square, seeing a big notice board and there’s a notice with guitar lessons, and you go, "But I don’t fucking want guitar lessons!".

It's absurd behaviour, but it's pretty typical. It might to some extent be the reason why don't always feel comfortable being themselves online.

Scale changes how we interact massively. For example, the interaction that most people would have with another individual in a local pub is likely a lot different than it would be on a platform like Instagram, Twitter, or YouTube.

I don't think it's realistic, or even valuable enough for it to exist, but I have found myself sometimes wanting a more local social platform. Something like a UK-only Instagram for example, or a European-only Twitter. Because I'd assume most people in the UK are not interested in what Americans get up to on the 4th of July, and probably most Americans aren't interested in the Eurovision Song Content. These types of platforms would certainly have their own problems. But I think it just stems from me trying to invent a form of separation, where you're not by default connected to the entire world.

I guess the closest we got to small online communities were web forums. These were typically centred on a shared interest or activity, so it tended to bring somewhat likeminded people together.

Web forums still exist, but I for one don't use them anymore. However, I do think there is some good news. Because it seems like platforms like Mastodon encourages a better level of human interaction than we've seen on others.

You could argue that there's nothing stopping people behaving as they did on Twitter or Instagram, on Mastodon. But because Mastodon is not one big network, it's decentralised nature means that small (or sometimes large) communities can join together to form a federation allows both levels of interaction. It's by no means perfect, but I think it somewhat encourages people to both find a place where they feel comfortable, but also give them the choice to interact outside of their sphere.

I'm hoping that this means we're at least moving in the right direction.