Things I Have Written

Random Terminal Message of the Day

Dan Moren posted a Terminal Message of the Day tip on Six Colors a few days ago, and I decided I would configure my Mac with a MOTD as well. However, I want a random one from a list every time I open a terminal rather than seeing the same one over and over.

The easiest way to do this is to avoid the /etc/motd file altogether and use a script to read a random line out of a text file and display that when you open a terminal window. There are three parts to this, two of which take all the work: a text file full of messages of the day, a script to randomly grab one, and a means by which to execute it automatically when you open terminal.

Find a place on your Mac you want to store scripts, if you don’t already have one. …

(Read More)

Regular Expressions and Shortcuts, Part 3.5

This post is part of a series on Regular Expressions and their applications in the Shortcuts app.

Regular Expressions and Shortcuts, Part 1

Regular Expressions and Shortcuts, Part 2

Regular Expressions and Shortcuts, Part 3

Before continuing on and looking at how to integrate the regular expression we’ve been talking about so far into a shortcut, I want to incorporate a piece of feedback from Allister Jenks.

I originally came up with this:

^(?:.+\/){1,}(.+)\.json$

Allister points out that there’s a much more logical and concise way of doing it.

He’s right, of course. The following works perfectly and makes more sense.

^(?:.+\/)+(.+)\.json$

Actually, we don’t even need the + after the first group, thanks to greedy matching. By …

(Read More)

Regular Expressions and Shortcuts, Part 3

This post is part of a series on Regular Expressions and their applications in the Shortcuts app.

Regular Expressions and Shortcuts, Part 1

Regular Expressions and Shortcuts, Part 2

Hi, it’s me again, the guy with the terrible regular expression that I keep yammering on and on about:

^(?:.+\/){1,}(.+)\.json$

Last time I explained how (.+\/){1,} works to match file path directories in a file name, like these:

hugo-files/data
hugo-files/
hugo-files/data/links/

I did not explain, however, why the first part of the regular expression contains ?: inside the first set of parenthesis, like this:

(?:.+\/){1,}

In order to understand this, you have to understand the role of the parenthesis in regular expressions.

First, they do what I said last time they do: group things together for the purposes of applying a subsequent modifier to everything in the group. In our case, because …

(Read More)

Regular Expressions and Shortcuts, Part 2

Last time, I presented a case in which I wanted to take a list of files complete with file path, and extract just the file name without the extension.

So basically, I get a list of file names that come back like this:

hugo-files/data/links/cars.json
hugo-files/data/links/podcasts.json
hugo-files/data/links/language.json
hugo-files/data/links/apps.json
hugo-files/data/links/security.json
hugo-files/data/links/linux.json
hugo-files/data/links/programming.json
hugo-files/data/links/apple.json

And I want to turn it into the following list instead, by getting rid of the directory paths and the .json file extensions:

cars
podcasts
language
apps
security
linux
programming
apple

I do this in my shortcut using a Match Text action with the following regular expression:

^(?:.+\/){1,}(.+)\.json$

It looks mind-bogglingly weird if you’re not used to regular expressions, and certainly someone skilled with them could probably perform the same task with a much more elegant version, but this does the job for me, and it’s really quite simple. Basically, it looks for strings that match the following: …

(Read More)

 Affinity Sale

Right now Affinity Photo and Affinity Designer are 50% off on both iPad and Mac versions. These are incredible bargains for two very powerful programs with feature parity on both devices.

iPad: Affinity Photo: $10 (Reg. $20)

Mac: Affinity Photo: $25 (Reg. $50)

iPad: Affinity Designer: $10 (Reg. $20)

Mac: Affinity Designer: $25 (Reg. $50)

I’m not much of an artist or designer, but I still love and use these regularly, especially on the iPad. And Affinity Photo may be THE best overall photo editing app available on Mac or iPad.

 Permalink

Regular Expressions and Shortcuts, Part 1

Today as I worked on finishing up a major revision to my Blog Post Publish shortcut, it occurred to me that, in a relatively short period of time, I went from struggling to understand regular expressions in general, and how regular expressions worked in Shortcuts in particular, to using them all the time in my shortcuts.

I decided I’d start a series about regular expressions and how to use them productively with the Shortcuts app, not because I’m a genius with regular expressions, but to show that anyone can learn them and that they are indeed useful and powerful when used for creating shortcuts.

Regular Expressions

The term “regular expressions” sounds a little odd, but basically regular expressions are just patterns used for searching text. They are extremely useful for things like extracting specific bits of information from text, for replacing specific things in text, or for validating text input for an app or web page.

To be …

(Read More)

Hugo “in slice” versus union queries

As you may remember, I use Hugo sections to structure my site content, and that affects my queries for things like site comprehensive RSS feed and my “Things I’ve written” section, which shows all posts from every section.

The way I have my site set up is that I have several blog sections, starting with Blog, which currently has 3 posts in it that don’t fall under other sections, and then under Blog I have subsections for iOS, Mac, Hugo, and Apple history. Finally, I have a Podcasts section at the same level as Blog.

Podcasts is mostly unused at the moment as it’s where I’m going to make repositories of past (inactive) podcasts, as well as descriptions and links to current and (and future current) podcasts. However, I’ll also post in that section about different episodes of things I’m in.

Anyway, it …

(Read More)

 BubbleSort TV Better Call Saul Series

Yes, Vic and I are finally able to talk again about one of the TV shows we love the most, Better Call Saul. It’s season 5, it’s weekly, and it should be a fun ride.

BubbleSort TV – Better Call Saul S05E01: Magic Man

It’s not really our fault that our last Better Call Saul Episode was posted in October of 2018. You can blame Vince Gilligan for that. 😂

By the way, you can find a list of all TV shows discussed on BubbleSort TV here:

https://bubblesort.show/tv-shows/

 Permalink

Editing JSON files with Shortcuts and Data Jar

If you visit my links page, you’ll see a bunch of categories with a unique-per-category icon, a category name, and a bunch of links in that category. Each of those categories is generated from its own JSON file. Simple enough.

However, I don’t really want to have to log onto the server, manually edit JSON files, and recompile the site. First of all, directly editing any kind of file like JSON or XML that has tags or characters that are required for it to make sense which can be accidentally deleted is a bad idea. Mistakes get made. Secondly, it’s just easier mentally to view them a different way.

Since I also want to update my git repository after changing something on my site, I like to use shortcuts that will let me download files to edit, or upload new or edited files, and then update my git repositories and compile my site without me having to do anything other than run the shortcut.

In …

(Read More)