Things I Have Written

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:


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


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


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.


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 …

(Read More)

Data Jar Drag & Drop

Not too long ago, I wrote about JSON file editing using Shortcuts and Data Jar, but now it’s even better. Never one to rest on his laurels, Simon Støvring added drag and drop data insertion as well as keyboard shortcuts with the past couple TestFlight betas.

I made a super short video showing how easy it is to add a new link to a dictionary of links, for example.

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)

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)

 Firing Up the Apple IIc for “Not x86 Week”

Blake Patterson is always up to something fascinating with interesting retro hardware and software, and his Apple IIc project for r/Retrobattlestations’ “Not x86 Week” is a good one.

And just to show Blake is willing to go the extra mile to get all the details right, here’s just part of the convolutions he performed to transfer a file from Mac to Apple IIc:

I logged into Web Host Manager on my remote web server and used RPM Package Manager to install lrzsz. I then sftp’ed the Apple II HGR image to the server and used the //c, running ProTerm 3.0 and acting as a serial terminal to the Pi, to ssh (from the Pi) to my remote server and kicked off a Zmodem send of the 8K image using sz, which ProTerm recognized and began receiving.

Blake has a list of links to his previous entries for r/Retrobattlestations challenges that should keep you occupied for a few hours. 😂


Image Publish Shortcut

I’ve mentioned here before that I don’t want to have to remember the mechanics behind things like how post summaries work when writing posts. The same applies to images in my posts – I wrote an image handler shortcode but if I have to remember parameters or manually paste shortcodes in iA Writer as I crank out an article, I’ve failed.

Tech is supposed to seamlessly enable me to write and publish, not stand between me and my site like a high priest demanding complex incantations that require years of practice to master. Like I’ve said before, the whole point of me using an app like iA Writer is because it has the writing experience I want, and I don’t want to have to write text in Hugo templates. The site shouldn’t dictate how I write, it should just put whatever words I dictate on display when I’m done.

So… not …

(Read More)

Making the Newton

Apple Newton advertisement

Like every other Apple nerd alive at the time, I was aware of the Apple Newton when it came out in 1993, but I was paying a bit less attention to Apple at that point in my life. I was starting a career in a PC-centric semiconductor company, and that was the beginning of my years-long sojourn into the Windows PC world. As a result, I was unaware of some of the more fascinating stories about how the Newton came to be.

This week Stephen Hackett and Quinn Nelson kicked off their new podcast Flashback with an episode about the Newton. What followed was a couple enjoyable hours of me scouring the web and devouring articles about the Newton and the team that literally suffered and sacrificed everything to make it.

One of the articles they mentioned was a Gizmodo reprint of an article by Tom Hormby on Low End Mac, The Story …

(Read More)

Summary .Render

Having decided that I needed a custom summary rendering solution, I started whipping up a shortcode before realizing that wouldn’t work since I was calling it from a partial. So I started creating a partial, but an interesting conversation with Vic Hudson convinced me to create an alternate layout to call with .Render instead.

More on that conversation later. First, my summary.html layout file:

        <div class="post-title">
            <a href="{{ .Params.linkurl | default .RelPermalink }}">
                <h1 class="title">{{- if .Params.linkurl -}}<i
                        class="fas fa-link fa-sm"></i>&ensp;{{- end -}}{{ .Title }}{{- if .Params.linkurl -}}&emsp;<i
                        class="fas fa-external-link-alt fa-xs"></i>{{- end -}}</h1>
        <div class="post-meta">
            <div class="date">
                <span class="posted-on">
                    <i class="fas fa-calendar"></i>
                    <time datetime='{{ .Date.Format "2006-01-02T15:04:05Z07:00" }}'>
                            href="{{ .RelPermalink }}">{{ . …

(Read More)