Text Case 2021.1

The major update to Text Case that I've been working on for a while is finally here!

🌟 Flows

The major feature of this update is the addition of flows!

These are customisable combinations of formats, that can be put together to create more complex and personal text transformations.

  • Tap on the + in the top-right to create a flow.
  • Tap on a flow to have it apply the transformation to your copied text.
  • Tap on the pencil to edit a flow.
  • Tap on the play button to open a scratchpad with the flow to test the transformation.
  • Long-press or right-click on a flow to access all functionality:
    • Format Clipboard
    • Edit Flow
    • Preview Flow
    • Duplicate Flow
    • Delete Flow

👀 New Formats

There are 8 new formats to use now!

These formats are more complex than the previous formats, since they all have customisable parameters.

There are:

  • Add prefix
  • Add suffix
  • Replace all occurrences of a given string with another string
  • Replace the first occurrence of a given string with another string
  • Replace the last occurrence of a given string with another string
  • Remove all occurrences of a given string
  • Remove the first occurrence of a given string
  • Remove the last occurrence of a given string

All of these new formats are available to use within a flow, and also via dedicated actions in the Shortcuts app.

⚙️ Share Extension Customisation

  • It can be configured to show just flows, just formats, or both.
  • You can also choose whether you want formats to have their default colour styling.

❇️ New Icons

There are 12 new icons to choose from! Alongside the previous 21.

💽 Download

This update is available right now for iOS, iPadOS, and macOS!

Experimenting with Email

I've been annoyed with email for a while, and I wrote recently that I wanted to find a new way to deal with it. I was mainly thinking about services like Hey, but I was also concerned that it's essentially an email replacement, not an email service that can be linked to other accounts or clients. So I had some thinking to do.

I decided to try and keep a log of my thinking while I tried various things, and then this log began.

The main reason behind keeping a log like this was to keep me trying new things. Even if it was a small tweak, just try one thing and see if it works. And at "the end", I could see my thought process behind the decisions, and the steps I made. I think this is important because I might have made a decision based on a whim, rather than treating it objectively.

There's also the fact that I find experiments fun, and it might be fun for other people to see my thought process.

Current State

I'll start with the current state of my email solution. I have three email addresses, my "primary" email address which is on iCloud, a Gmail account, and also a G Suite account which is linked to this custom domain.

Ideally, I want to switch to using one address, the G Suite one, but I know there's a lot of emails going to the other accounts. So it might be a painful process.

I also want some sort of system of organisation or automatic sorting. Because even if all emails go to one account, not all of them are important. And eventually, I want an inbox that has only important and urgent emails.

So now that's what I have currently, and also a few ideas for where I want to end up.

Monday, 25th January

Entry 1: After many recommendations, I signed up to SaneBox. I connected all three of my email accounts.

Entry 2: I shortly realised that dealing with SaneBox folders on three accounts would be a hassle. So I set one of my email addresses (least commonly used one) to forward to my ideal address.

The plan is to write off the third address by slowly dealing with all forwarded emails until none come through. Then I can focus on going from 2 to 1.

That leaves me with this:

  • Two email addresses:
    • iCloud (Primary)
    • Gmail → Forwarded to G Suite
    • G Suite (Ideal)
  • Email Client: Apple Mail (All devices)
  • Email Services: SaneBox

Tuesday, 26th January

Entry 3: Today I made the decision to remove SaneBox from my iCloud account, leaving it only enabled on the email I want to use long-term.

I plan on slowly moving important accounts and information to my desired address as they arrive in iCloud. Although I’ll have to be aggressive with deleting junk emails when they come in since I want to be able to keep on top of that account still.

Entry 4: I've seen a few emails being picked up by SaneBox and placed in the @SaneNews folder, it seems to be fairly accurate.

Entry 5: Strangely, it's becoming easier to deal with emails in my iCloud account. Maybe it's because I know I plan to eventually stop using that account, but whenever an email comes through that I like, I tend to quickly switch it to my ideal address. And the same with emails I don't want, they either get unsubscribed from, placed in the junk folder, or deleted.

Wednesday, 27th January

Entry 6: My use of email seems to have been whittled down to 6 places, which are probably quite predictable:

  • Inbox (Combined iCloud + G Suite)
  • @SaneArchive
  • @SaneBlackHole
  • @SaneLater
  • @SaneNews
  • @SaneNoReplies

To be honest, I'm not sure if I'll need to keep @SaneNoReplies around since I've only glanced at it once. And I can't remember a time where I've needed to wait a long time to receive an expected reply.

But it leaves me thinking that right now may be a good idea to try out a few email clients. Since I'm not exactly doing anything complicated. Thanks to SaneBox, everything is handled by moving emails between folders, which I assume every email client can do.

Entry 7: It's time to check out Spark. After a small amount of customisation, I think the macOS app will suit me. I slightly prefer the design to the built-in Mail app, although that's not a big enough reason to switch. But I do like how the sidebar only contains the inbox and favourite folders. It annoyed me that inside Mail, all accounts would be visible. Which was annoying if there was an unread email in the junk folder because for some reason it thinks that's important and shows it next to the account name.

I tried Spark a long time ago and didn't quite like it, but this time I've turned off a few of the features that got in the way. Such as showing avatars, smart notifications, calendar, snoozing, and a few more. It's left me with quite a modern email client.

Although I did leave one feature on, Smart Inbox. I have a theory that alongside SaneBox, this feature may be of some use. It means that any email that isn't automatically sorted by SaneBox may be sorted into separate groups like newsletters, pins, or seen emails. I think I'll have to wait a few days to see how good this actually is.

Entry 8: After today, my email situation is basically the same, but with a small tweak:

  • Two email addresses:
    • iCloud (Primary)
    • Gmail → Forwarded to G Suite
    • G Suite (Ideal)
  • Email Client:
    • Mac: Spark
    • iPhone/iPad: Mail
  • Email Services: SaneBox (G Suite only)

Thursday, 28th January

Entry 9: This morning I decided to go all-in on Spark. So my iPhone, iPad, and Mac all have Spark set up. All with the minimal configuration.

Everything seems to be good, except that I've noticed I'm getting a ton of junk mail today. Maybe Thursday is a popular day to send email? Although this does seem to be only happening on my iCloud email. Maybe that's because more people know about that email address, or because I have SaneBox on the G Suite account, I'm not sure. One thing is for sure, and that's I'm looking forward to not dealing with this account in the future.

Entry 10: I listened to episode 62 of Cal Newport's Deep Questions podcast where he answered questions regarding email. It mostly work scenarios, where you deal heavily with email, rather than a personal inbox. But I did come out with two things to think about:

  • Not everything needs to be an email. Maybe instead of finding a fix for an email problem, the solution is to create a separate process that doesn't use email.
  • Not all emails are equal. Some are more important and urgent than others.

Friday, 29th January

Entry 11: After settling making the change to having just two email addresses, I'm really contemplating making the switch to just the one very soon.

When I made the decision to forward all emails from a Gmail account to my G Suite account, I imagined I would need to deal with a lot of emails coming through that I needed to migrate. However, this hasn't been the case. This could be the fact that SaneBox is dealing well with the spam, or maybe I just don't get that through that account. Either way, I think I can mark that account as resolved.

The main issue I'm annoyed with at the moment is that my previous primary address (iCloud) just has so much rubbish going to it. I made the decision to not enable SaneBox for this account because I don't want to manage two versions of every SaneBox folder. But I think the organisation and filtering benefits of SaneBox are what I need with this iCloud account. Because otherwise, it might be a bit unmanageable. Therefore, I expect I'll end up setting my iCloud to forward all emails to my G Suite account.

Entry 12: I had a look through some more email apps on the App Store again, and I decided to try out Canary. Straight away I was presented with the option to upgrade to some kind of pro account, which I wasn't expecting. I don't mind paying for apps, but at least tell me why I should first.

After I found the trial button, I set up one of my email addresses in the app, and I was immediately turned off but the design. It seems like they've taken the native look of Mail but then tried to add their own functionality on top. Except it just looks a bit brutal to me. So I've already given up on that one.

Entry 13: I did end up forwarding my iCloud emails to my G Suite account, which means I finally have the one inbox to keep on top of. And also, I've got everything going through SaneBox, which I'm finding very helpful.

That means my email situation has changed even more:

  • One active email address
    • iCloud → Forwarded to G Suite
    • Gmail → Forwarded to G Suite
    • G Suite (Primary)
  • Email Client:
    • Mac: Spark
    • iPhone/iPad: Spark
  • Email Services: SaneBox

Saturday, 30th January

Entry 14: After looking at loads more email apps on iOS, I can't really find one that stands out as being better than Spark for my needs. Mainly because I don't need that many "smart" features, I have SaneBox to do its magic via folders, and that's it.

It led me to try to personalise Spark even more, and I think with what I've managed to do, I'll be settling on Spark on all of my devices.

As I wrote before, I've already customised what folders appear in the sidebar and turned off a lot of features like snoozing, so it was already customised. But now I've had a look at swipe actions and also the toolbar.

For swipe actions, I have these four:

  • Left Short - Toggle Read/Unread
  • Left Long - Move to @SaneLater
  • Right Short - Delete
  • Right Long - Move to @SaneBlackHole

I think they're a good fit, and will allow me to do nearly every common action via a swipe.

As for the toolbar, the items I have are pretty similar:

  • Toggle Read/Unread
  • Reply
  • Move To
  • Junk
  • Delete

I think I'd prefer it if I could add more specific folder actions, rather than a single action that brings up a list every time. But I think I'm pretty happy with my client set up right now.

Entry 15: Since I've got all my emails going to the singular email address now (even if most are being forwarded from other accounts), and that account has SaneBox enabled, I decided to enable notifications for all of my emails.

I wouldn't have done that before this experiment, because I would be getting too many notifications about emails I don't care about. But now I know that most of the unimportant or junk email will be being sorted before arriving in my inbox, I feel a bit better about being notified about my emails.

Hopefully, I'll only see important emails. But if I don't, I know I can move them to various SaneBox folders to further train the service.

Entry 16: I just read Matt Birchler's blog post, 'How I'm Using Hey Email, Almost One Year Later', and I think the way I've been using my email over the past few days is quite similar. Although, not using Hey.

So it's good to see that how I deal with email, is probably possible to an extent via Hey. I'm not sure I'd use Hey now, because of the lock-in, and lack of custom domain support, but maybe in the future? Who knows.

Sunday, 31st January

Entry 17: There's been no changes today, and to be honest I don't see myself making any changes for a while. My solution is working well, and I'm pretty please.

I now have four places where my email goes:

  • @SaneNews - Newsletters and mailing lists.
  • @SaneLater - This is a trained folder that has everything that isn't urgent.
  • Apps - This is a custom trained folder that will filter out anything related to my apps.
  • Inbox - Everything else goes here. And if it shouldn't belong in the inbox, I can move it to the correct folder, and SaneBox will do the same next time.

Final Results

I'm pleased to say that I have achieved my goal of reducing the email I receive, only using the one account, having a level of automated sorting, and also having methods to permanently block annoying emails via SaneBox's Black Hole feature.

I'm now using one G Suite email account, Spark as my client on all my devices, and SaneBox to keep everything working smoothly. I'm honestly surprised that I didn't need a ton of extra services to achieve a good solution.

Now, I know this post is very long. And to be honest, I didn't expect my entries to be as large as they are. Some of them could have probably been blog posts on their own. But I do think that having everything together and in order is much more valuable.

Even for myself, having this log to refer back to while doing this experiment has been helpful. That's why I think it might also be helpful to others that are wondering about what to do with their email solution.

I could have simply written a post at the end of the experiment with my final decisions and how I ended up with a solution. But I think with that, a lot of thinking would have been missed. So not every decision would have been clear. It reminds me of having to include your working out" when doing maths at school, rather than just writing the answer.

I'll probably end up doing more experiments like this in the future. It seems effective, and hopefully interesting to read.


Photo: (Yannik Mika via Unsplash)

Listen to Random Forests

I wrote a while ago about ASMR Rooms and what I called 'Adaptive Background Environments', and I've just come across something similar via Kottke, called Tree.fm.

Tree.fm places you in random forests, immersing you in the sounds, and also providing some nice photography of nature.

I really like listening to nature, forests especially. So I think I'll be using this for some background noise when I'm working, or even when I'm just relaxing. Like now, I'm reading some blogs, and listening to a forest.

All of the sounds are from a project called 'Sounds of the Forest', which form an open source library for anyone use. If you go to the website, you get a world map where you can see exactly where each recording came from.


If like me, you are a fan of nature, then I would encourage you to check out Ecologi. Essentially, it's a subscription service to plant trees and help fund climate projects.

One cool feature of Ecologi is that as you plant more trees, your online forest grows. My forest, Christopia (I couldn't think of a better name) has been going for 4 months, has 418 trees, and has offset over 9 tonnes of CO2e. __ If you use this magical link, we both get 30 extra trees.


Photo: (kazuend via Unsplash)

Being Late on the Internet

The internet can sometimes seem everlasting. Until it's not. And you notice that more when you're late to something.

That happens to me quite a lot.

This time, I've noticed a story involving GameStop, Reddit, and hedge funds. Apparently the Redditors did something together, which made rich people lose money. Or something.

Either way, I was late to the party.

I seemed to find the conversation after everything had happened, it had been picked up in the press, and everyone was offering their hot takes on it.

Maybe it's my personality, but when something gets to that stage, I just ignore it. Sure, I'll most likely see things mentioned on Twitter, so I'll possibly grasp a basic understanding. But I tend to just actively ignore things that I've missed out on, especially when it feels like a lot of effort to go back and understand a situation, that I just don't think will provide me any benefit.

What I need is for someone to say something like "Something interesting happened, X did Y, to do Z, but then A, did B, because of C". Then I'd say "Oh! That's interesting.", and move on with my life.

That might sound a tad drastic. But it's honestly how I treat news and events nowadays.

A while ago, I would treat every event and piece of knowledge as something I needed to understand. But recently I've realised that sometimes I'm just not that interested.

Dealing with Email

I’ve been thinking a lot about email recently. It’s been a thing that’s mildly annoyed me for some time. But the episode Federico Viticci and John Voorhees did on App Stories about email and switching to Hey, triggered me to properly think about my situation and my options.

So to explain my situation, I have three email addresses that I regularly deal with. An iCloud one that's kind of been my primary account for quite some time, a Gmail address that is tied to my Google account and a few other things online, and a G Suite account with my chrishannah.me domain.

One thing I've wanted to do for a while is to use a singular email address for everything. Ideally my @chrishannah.me one. I think I could make that work relatively easily, but it would most likely take quite a long time until I could be sure that everything important has been migrated. However, that's only one improvement I want with my email.

I also want a new way to deal with email. I find that too much nonsense gets through to my inbox, and even if I have filters to move some emails to various folders, it's still visible and distracting. So I want to stop some emails getting through to me, but also once I’ve dealt with an email I want it to get out of the way.

All of this is very much making me think about giving Hey a try. Except for the fact that I don’t want an @hey.com email address. I don’t want any new email addresses. But, if they add support for custom domains, I think I would at least give it a try. Although I do have some more reservations about Hey. Such as paying quite a large amount of money for an email service, when others are free. And also that from what I’ve seen, I’m not sure if I like how emails are organised once they are dealt with.

Maybe what I need is a client-side change, and that’s certainly possible since I only use email on the usual devices — iPhone, iPad, and Mac. Or maybe it’s something like SaneBox that I should try since I could migrate my emails slowly to one, and at the same time keep my current client apps (The default Mail app on all devices).

No matter what happens, I guess I’ll be thinking about email for some time.

I’ll try to write about anything I try along the way, and hopefully, I can find a solution that fits my needs.

Photos in the Snow

It snowed pretty heavily near my house this morning, which meant I had to go out and take some photos.

Luckily for me, there's a small area of woodland just behind my street. So I grabbed my iPhone 12 and my Fujifulm XT100, and went to see what I could capture.

The iPhone 12 seemed to put a green tint on most photos, and sometimes over-exposed the photos. Halide seemed to work great though.

After playing around in Lightroom, I've got 12 photos that I'm happy with. They're pretty similar, since they were taken in the same area. But I have tried to give them slightly different looks.

You can see them all on my Flickr, but here are my 6 favourites:

Text Case 2021.1 Beta

After quite a long time of development, the major update to Text Case that I've been working on is finally ready for a public beta.

This update changes the focus of the app from simply using built-in formats, to focus on user-created flows. A flow is a collection of formats, which together can become a more complex text transformation.

Along with flows, 6 more complex formats have been added. The complexity in them is that they support parameters. So when you add them to your flow, you will need to configure them. The new formats are:

  • Replace all occurrences of text a specified string of text another string of text.
  • Replace the first occurrence of a specified string of text with another string of text.
  • Replace the last occurrence of a specified string of text with another string of text.
  • Remove all occurrences of a specified string of text.
  • Remove the first occurrence of a specified string of text.
  • Remove the last occurrence of a specified string of text.

As they are more complex actions, they have specific Shortcuts actions, Replace and Remove. You can obviously also access them if you add them as part of a flow, as flows are now accessible via the Shortcuts app too.

There's a few extra tweaks to the design, and also some configuration options for the Share extension. But that's essentially the main changes in this update. I'll write a much more comprehensive post when the update is finalised and ready to download from the App Store.

If you want to give it a try, you can join the TestFlight beta. Any feedback or ideas are completely welcome.

Custom Key Caps for My Keychron K2 Keyboard

A new set of key caps for my keyboard finally arrived yesterday, after nearly a month of waiting, so I thought I'd share some photos and also how I got them made.

For starters, the keyboard I own is the Keychron K2. From what I've seen, it may not be the most popular board, as it's relatively cheap, and a small form factor. But I find it to be very solid and one of the best keyboards I've used. However, the basic light/dark grey keys always seemed a little boring to me.

That's why when I saw much more hype around custom mechanical keyboards, I thought I'd finally look into seeing if I can customise mine at all. Turns out, the Keychron K2 uses Cherry MX style key caps, which are very common, so it looked like I'd be able to find a new set for myself.

Although, when I saw the specification for the key sizes for the K2 (included on the page for the K2 key set page), I started thinking that the task would be much more hassle than I imagined. Since I was expecting that I'd need to go and purchase either a massive set of keys and hope the weird sizes of my keyboard are all included, or I'd need to find a way to buy seperate keys using the sizes from the spec sheet.

Luckily, I was doing some searching on the WASD Keyboards suport page, and found an article for "non-standard layout keycap sets". There have some information regarding colour availability for certain sizes, and information on how backlit keys show throw their keys. But I was more focussed on the fact they specifically mentioned the 84-key Keychron K2 layout, and had a link to their online customiser tool.

From there, I just needed to choose the colour of each key, legend, and also select that I wanted the Mac modifier keys. And after a while, I was pretty happy with my design.

The main colour I liked was the mint for the modifier keys, but I wanted to mix a bit of pink in there somewhere. And also, I wanted to seperate the top row somehow, and the four keys on the right that I really never use.

So I ordered the keys, and after them being sent through the U.S., they eventually arrived, and this is what they look like:

Replacing the keys was pretty easy, there was a key remover tool included in the box. But it sure took a while to remove all the existing keys. That's not something I could ever enjoy.

As you can see from a few close ups, I also went a step further than just having different key colours. On the top row, I styled the text in a few colours to make them stand out just a bit more. The brightness keys have yellow symbols, the media keys are the same mint as the modifier keys, and the volume keys are pink. And I also had to match the delete key, so that's red on dark grey, with the big delete key being white on red, just like the escape key.

I'm very happy with how they turned out. Maybe the only thing I would change would be the symbol colour on the arrow keys, but then again I'm not sure what I'd change it to anyway.

I definitely think that just by customising the key caps, the keyboard feels way more personal than it did before. Before I had a Keychron K2 keyboard, but now this is my keyboard.

If you're thinking about changing your key caps, I'd definitely recommend looking into WASD keyboards. The online customiser tool is really easy to use, and the results are great too. And while I'm happy with my keyboard, if you don't have a mechanical keyboard, it may be worthwhile looking at what WASD offer themselves, since you'll be able to get it ordered from scratch with a complete custom key layout.

If you go ahead with ordering from Keychron, my link will get you 10% off your order.

Forced Detox

I'm not sure there are many parts of being ill that I actually like, but one thing is certainly the forced detox of basically anything unessential.

If you noticed my sudden lack of writing here, or how I've been inactive on Twitter for a while, it's mainly down to the fact I was ill1.

A common trait of me being ill is a complete lack of energy. So for around a full week, I did nothing except wake up in the afternoon, watch a Harry Potter movie, barely eat anything, and then go back to bed. To be honest it wasn't all bad.

But because of my lack of energy, I couldn't exactly spend hours in front of a computer doing any writing, I wasn't interested in reading, and keeping up with Twitter felt like work. So I just gave it all up. It was pretty good.

Now I've essentially recovered, or at least I'm well enough to start working again, so I'm now trying to get back in to my normal habits. But like any good detox would do, the way I think about things has changed.

Twitter has become too political for me right now, which makes it super boring to use. Especially when it's mostly US politics, which I don't have an interest in. So I've been using Instagram and TikTok more. Mainly because the content is more fun, and not just online bickering.

As for reading, I haven't been keeping up with my RSS feeds at all, and I haven't read any books recently either. But I've started to go through my RSS reader now, and I do plan on starting On Writing by Stephen King soon.

This might not exactly be a revelation to most, but I'm impressed with how much just a little time away can clear your head and put things into perspective. Maybe getting ill isn't the best way to start a detox, but it worked for me.


  1. Yes, coronavirus ↩︎

The Division of 2020

One thing that really bugged me last year was the apparent level of divisiveness that seemed to grow between people. I think most of it was caused by politics, with the popular reasons to divide being the US elections and UK leaving the EU.

Those two examples are obviously contentious since both of them resulted in major differences in opinions. But that’s not what bugged me since you’ll always find people with different opinions to your own. Instead, it was the constant degradation of the “opposition”. Every situation was simplified down to two sides, all nuance was removed, and every side seemed to think the opposition were idiots. Not people with different opinions, instead they were people that you could look down upon.

I don’t want to get into specifics on this issue, since I think it will only cause more division. But I think a lot of people will recognise how split the world is becoming.

I’m not sure how the current divides between people can be fixed, but I know that the first step has to be recognising that other people won’t always have the same opinions or priorities as you, and it doesn’t make you or them bad because of it. And that’s something I’m definitely going to be focussing on this year.