Chris Hannah
My little piece of the internet

Currently Listening

👋 Hi, I’m Chris. I build things.

👨🏻‍💻 I work as a Senior Software Engineer at WorldFirst where I work on all types of software, using Java, Python, JavaScript, and anything else I can get my hands on.

💻 Even when I'm not at work, I still spend most of my time writing code. I've got a bunch of open-source stuff on GitHub, and also a few apps: Text Case, and Text Shot.

📝 When I’m not writing code, I’m usually writing here on my blog. It tends to be focussed on technology, but is now becoming a bit more personal.

📸 I also sometimes think of myself as a photographer. I post some of that here, but I also post a lot more to Instagram.

📫 If you want to reach me, I’d suggest Mastodon, Twitter, or Email.

Recent Blog Posts

I just watched Perfect Days (2023). I haven't yet fully understood the effect it's had on me. But I think it's one of the best films I've ever seen.

What's Holding Me Back From Android?

I've been creating a list of what I use my iPhone for, and what would happen if I switched to Android.

For most cases, it wouldn't make any difference. For example, for things like Notes, Email, Photos, etc. I use standard Apple apps, so I'd just as happily use Google apps.

For social networking, entertainment, and all the third-party stuff, everything is available on Android.

However, there are a few minor hurdles that could annoy me. They wouldn't necessarily stop me switching though. But they are things like iCloud Drive, Apple Photo sync, Universal Clipboard, AirPlay, etc.

All of those I can live without. However, even though all of my group chats are on iMessage, most private chats are on iMessage. So that would definitely cause some friction.

Therefore, when iOS gains support for RCS, and you can send photos across much easier between the platforms, there would be nothing major holding me to the iOS platform.

That's not to say I'd switch immediately, and never go back. But I'd certainly feel less locked in.

I do sometimes use a Pixel 6 as my main phone. But it's only ever been for a short period of time. So most annoyances don't really matter as I've usually still got my iPhone near me anyway.

But for a long-term switch. That's not only tempting, but also looking more possible by the day.

The Millennial Captcha

For years, CAPTCHAs have helped separate bots from humans. But sometimes, more subtle distinctions are needed.

No surprise that I passed this one!

If I ever switch away from using an iPhone, it would cause a massive cascading effect on nearly every part of my digital (and some physical) life.

Simply because, if I could ever bring myself to break out of Apple's walled garden, I would want to steer clear of anything similar. I wouldn't want to just replace everything Apple with everything Google, for example.

And yet, as much as I can imagine this would be hard work, I wouldn't say it's a major part in why I still use an iPhone. And if I'm honest, the list of reasons is slowly getting smaller and smaller.

Last year I decided to upgrade to the big iPhone 15 Pro Max, after two years of the iPhone 13 Pro. And while there are definitely benefits of a larger phone, (and I've definitely enjoyed having it at times) there have been quite a few times where I've been frustrated that it's not really usable with a single hand.

Not sure what that means for my next phone though. Because at times, I thought the 13 Pro was too small for me.

Some Recent Bash Scripting Fun

I've been writing more and more bash scripts recently (GitHub repo). It started when I was playing around with a script called tmux-sessionizer from The Primeagen, that uses fzf to search for directories in a preset location, and then open the selected directory in a tmux session.

The first three I came up with were all mainly some sort of selector-style tools powered by fzf:

(they may seem like odd names, but I wanted to be able to use these scripts really quickly)

  • tg (right-top)- a customed version of tmux-sessionizer that lets you quickly fuzzy find a directory and then attach/reattach to a tmux session with it.
  • ala (left)- fuzzy finder for alacritty (my terminal choice) themes, which is then applied on selection.
  • fd (right-bottom) - fuzzy finder that searches the current directory for any subdirectories with a max depth of 3. And then changes into the selected directory.

I also made another one that replaces my existing alias for quickly committing and pushing my local changes with Git, and makes the flow a bit more interactive.

Previously I had an alias gacp, which basically meant (to me) "git add commit push", and did the following:

git add --all
git commit -m "$input"
git push

And I'd use it like this:

gacp "my wonderful code change"

But now with my (aptly) named tool, gt, I just need to type those two letters, and it then lets me quickly run through the process of pushing my latest changes.

First of all, it asks if I want to stage all my current changes (defaults to yes), then it asks what type of commit it is (using conventional commit style), asks for a commit message, and then if I want to push to my remote repo.

So a pretty simple process, but just a bit faster thanks to this little script.

As you can see, I'm clearly having a bit of fun writing these scripts, so don't be surprised when I start uploading even more.

Although my next script/tool will definitely have to be making blog posts easier to start writing. I have a half-baked bash script that creates a basic template, but I think I want to make one with a bit more power, that can be flexible for multiple types of posts. Let's see.

A CLI Tool to Post to Micro.Blog

I've been working on a small command line tool recently. It's essentially a simple way to write a short post on Micro.blog from the command line, called pst.

It's probably not the typical place people tend to do their microblogging. But I did it for a few reasons:

  1. I live in a terminal when I use a computer, so it's easy for me to quickly write a post, or share a link. I don't always have Micro.blog open.
  2. There's obviously less distractions when you can just post and carry on with whatever you were doing.
  3. It's a simple idea, so it would be perfect to use it as a learning oppurtunity.
  4. I don't get many ideas for small projects like this, so I have to run with them. Otherwise I'd never build anything.

So, now you know the reasons, I'll explain a bit more about pst, how to install it, configure your blog, and also how to use it.

First of all, you can install pst from crates.io or homebrew:

crates.io

cargo install pst

homebrew

brew tap chrishannah/pst
brew install pst

To configure pst, all you need to do is to generate an app token from Micro.blog (find that in your Account settings), and then store that in a JSON file under ~/.config/pst/config.json. The specific format is in the README.

Using pst is pretty simple, you have the pst command, followed by the type (post or draft), and then your content. Examples:

pst draft "don't show this to anyone"

pst post "hello, losers!"

After that, you'll see some handy links in the terminal for where you can view, preview, or edit the post on Micro.blog.

I forgot to also say that it's built with Rust! I'd been wanting to write something in Rust for a while, but it was never the right time, and I also didn't have the correct project. Luckily for me, it's a small project, so I decided to use it to learn some Rust.

Obviously I haven't used it for long (or for much), but I've really enjoyed using the language. And especially for these types of tools, I can see myself using Rust even more in the future. (Especially because I have my Neovim config working perfectly with Rust now.)

Apple vs the World

I can't say I'm completely up to date with Apple's various ongoing issues with various government entities, so I can't exactly offer any well thought out opinions. And I also want to say that I'm not exactly that interested in getting into the weeds of it all.

I'm sure in all cases, Apple are right in some areas, and wrong in others. However, what I'm more intruiged in, is the long-term effect that it will have on Apple as a company, and also on the products it builds.

The changes could be related to hardware, software, how Apple's devices interact with devices of other companies, the restrictions they apply to their stores, or it could even affect the company itself. Either way, I'm sure something will end up changing as a result of these various battles.

I'm no longer a die-hard Apple fan, so I'm not going to get overly caught up on any of the arguments for or against them. But there's a reason people talk about Apple's "walled garden". And rightly or wrongly, it seems that more and more people are starting to want to tear down the wall.

It's been just shy of 2 weeks since I started watching The Walking Dead[1], and I've just finished off the third season. Which puts me around 20% of the way through all 11 seasons (177 episodes).

I've definitely missed out having only just started the show recently, but at least I'm now able to binge it non-stop. I'm watching it at night, in my lunch break, on my commutes, I literally fill any free time with it right now.

One thing's for sure, the next time a show like this comes out, I'm not waiting over 13 years to give it a try.


  1. It's a bit funny that my last post was me getting excited about starting the fourth episode, and right now I'm about to start the fourth series. ↩︎

I've been following the progress of the upcoming version of System76's Pop!_OS ever since I heard about their idea to write their own desktop environment in Rust. It's going to be a pretty huge update by the looks of it, and it goes by Cosmic.

From what I've read on the blog, and also watched via the episode of Tech Over Tea with YouTuber (Host) Brodie Robertson and System76 founder Carl Richell, I'm 100% going to try it out when it's' available. And I really think there's a chance that if I like it, I could eventually persuade myself into buying a System76 computer in the future.