At work I’ve reverted back to ‘old’ Outlook. It’s still so much better than ‘new’ Outlook. It makes me sad to see how old powerful applications are being set aside for lowest common denominator webapps. Dumbing down. Or enshittification.
At work I’ve reverted back to ‘old’ Outlook. It’s still so much better than ‘new’ Outlook. It makes me sad to see how old powerful applications are being set aside for lowest common denominator webapps. Dumbing down. Or enshittification.
Joan Westenberg’s post, The Case for Blogging in the Ruins has been working around the ‘blogosphere’. Is the blogosphere even a thing anymore? It used to be massive, which is exactly the point of Westernberg’s piece.
I’ve blogged for decades now. The early Blogger and Movable Type accounts are gone now. Some of the latter I saved, but despite not having a full archive here on this site, there is certainly enough.
Over the years my blogging has had different foci, probably reflecting the growth and change in me and my own interests over the years. My blogging has also been influenced by short-form social media, in that most of my posts now are short. I rarely have the time or motivation to put forward a longer think-piece.
Westenberg says this in their post about what makes a blog work:
“They build. The best blogs create posts that reference and extend earlier posts, developing ideas over time rather than starting from scratch each week. Gwern’s site is an extreme example, with entries that get updated for years, accumulating evidence and refinement. But even a modest version of this works: a body of work that compounds.”
To confirm this, I can refer back to a post I made on August 14, 2018, Blogging As an Exercise in Thought where I also talk about my history of blogging. I’m reminded by this post that I also hosted a blog on Blot for a number of years! There we go, my blog has supported my own memory!
I still read many blogs every day, mainly via RSS. I still prefer them to social media. I hope that they don’t wither and die completely, and that people will continue to find ways to use the medium to build their own long-lasting presence on the web.
I appreciate Westenberg’s post and I hope that I will find time to blog a little more this year.
Finished reading: Are You Mad at Me? by Meg Josephson 📚Like so many “self-help” books there is a lot of fluff around built around some short but core concepts. A book where I think, “this could have been a blog post”, which might actually be where the book originated - but I haven’t done my research as I bought the book on a whim.
I finished The Drifter. What a great game. Adventure point and clicks are the best!
Is this the best subscription cancellation deal ever?
Christmas movie on the outdoor screen at Perth Stadium. 🚴
Summer Ride
I couldn’t take anymore Tahoe Liquid Glass shenanigans. So I’m back to this classic look.
At least I have my proxy icons back.
It has been more than 2 years (😱) since Episode 097 of my podcast Hemispheric Views, where we held a Duel of the Defaults! competition.
Two years on, where do I stand now?
If there is a change from my list last year, I’ve indicated it with a leading ✨.
| Change? | Category | Default | Comment on Change |
|---|---|---|---|
| ✨ | Mail Client | Fastmail | Goodbye Fmail3 |
| Mail Server | Fastmail & Apple Mail | iCloud is there, but I don’t actively use it | |
| Notes | Obsidian for Work; Apple Notes for Home | ||
| To-Do | OmniFocus | ||
| iPhone Photo Shooting | Camera.app | ||
| Photo Management | Photos.app | ||
| Calendar | BusyCal (plus Calendar.app) | ||
| Cloud file storage | iCloud (plus OneDrive) | ||
| RSS | Reeder with FreshRSS | ||
| Contacts | Contacts.app | ||
| ✨ | Browser | Safari | Despite trying Vivaldi and Firefox, I always come back to Safari |
| Chat | Signal | ||
| Bookmarks | Safari | Goodlinks is gone; back to basics | |
| Read It Later | GoodLinks | Rarely used now; very few worthwhile things to read (later) on the web | |
| Word Processing | n/a | I don’t process words | |
| Spreadsheets | Numbers (plus Excel) | ||
| Presentations | n/a | I don’t do presentations | |
| Shopping Lists | AnyList | ||
| Meal Planning | AnyList | ||
| Budgeting & Personal Finance | Actual Budget on PikaPods | ||
| ✨ | News | RSS & NYTimes | |
| Music | Apple Music | ||
| ✨ | Podcasts | Castro | I got bored with PocketCasts |
Four changes this year from 23 categories. 8 of the 23 are true defaults.
For about the 14th time in my life I am once again experimenting with David Seah’s Emergent Task Planner sheets.
It’s Hemispheric Views episode 150 Or is it 152? Or 153? Who knows, but it’s here! We’ve got mail and Martin has coffee! Pay attention, there is homework for you in this one.
I’m sure I’m not supposed to see the icons being drawn consecutively onto the screen in iOS 26.1. Such poor software quality.
Saw Gomez perform tonight. So awesome!
Inktober 2025 Day 31. Award
Inktober 2025 Day 30. Vacant
Inktober 2025 Day 29. Lesson
Inktober 2025 Day 28. Skeletal
Inktober 2025 Day 27. Onion
The following article is predominantly a record for my future self. The solution as described was imagined and thought through by me, but development was helped by ChatGPT because I don’t have the necessary coding skills. As it took a long time with multiple iterations, I asked ChatGPT to summarise and document the flow of my attempts.
As such, the majority of this article is AI-generated, but proofread and edited by me, a human.
For years, I’ve kept OmniFocus as my single source of truth for tasks. Every commitment lives there — work projects, household jobs, even odd ideas that might grow into something.
But my work notes live in Obsidian. That’s where meeting records, brainstorms, and running logs of ideas go. The two systems complement each other perfectly — except when they don’t talk.
I wanted a way to extract the tasks I jot into Obsidian (- [ ] Do the thing) and have them appear automatically in my OmniFocus inbox. No manual copy-and-paste. No Quick Entry window. No duplicative reliance on the Tasks plugin for Obsidian. Just seamless capture.
In short, bridge the gap between where ideas start (Obsidian) and where they’re managed (OmniFocus).
I thought this would be quick and easy. It definitely wasn’t quick.
OmniFocus supports AppleScript. The theory was to have a script read tasks from the note, feed them to OmniFocus, and be done.
It didn’t go well.
AppleScript threw up errors like:
“Expected end of line but found plural class name.”
Keyboard Maestro tried to help, but AppleScript didn’t behave the same when triggered from automation tools. Even when it ran, nothing actually appeared in the Inbox. After several dead ends, I concluded AppleScript might be powerful — but it’s also brittle, opaque, and slow to debug.
That led me to OmniFocus’s x-callback-url API. This allows new tasks to be created via a simple URL such as:
omnifocus://x-callback-url/add?name=Test¬e=Hello&autosave=true
The autosave=true parameter was the key. It bypasses Quick Entry completely and saves the task directly into the Inbox.
That was exactly what I wanted: a silent, background handoff.
My first working prototype ran from LaunchBar.
I created an action that triggered a shell script, which in turn parsed the current Obsidian file and sent the tasks via the OmniFocus URL scheme.
At first, it looked promising. LaunchBar picked up the script, presented it as an action, and I could trigger it with a simple keyword. But then the gremlins arrived:
“The script does not implement a handler named 'run'”.After hours of troubleshooting, I realised the reliability wasn’t there. The script itself worked — but LaunchBar wasn’t the right launcher.
I rebuilt the automation inside Keyboard Maestro, which handles timing, focus changes, and system permissions much more predictably.
The macro:
Everything was almost perfect — except nothing happened. The logs said “No open tasks found.”
After several tests, I discovered the real culprit: macOS’s ancient Bash 3.2, which lacks mapfile. My whole parser depended on that command, so the script never captured anything.
The fix was to make it Bash-3.2-safe. The parsing logic was recreated in Perl, which handles UTF-8 and regex. Instead of mapfile, it outputs each task line to a temporary file and loops through them safely.
/usr/bin/perl -ne 'if (/^\s*[-*]\s*\[\s\]\s+(.+?)\s*$/){print "$1\n"}' "$FOUND" > "$TITLES_FILE"
Each task line is then URL-encoded and sent directly to OmniFocus:
open "omnifocus://x-callback-url/add?name=${NAME}¬e=${NOTE}&tags=Obsidian&autosave=true"
No Quick Entry panel, no intermediate prompts — direct to the Inbox.
The final piece was Alfred. After LaunchBar’s unreliability, I moved the trigger there. Alfred handled it flawlessly.
Now I just type cap in Alfred (for , and it fires the Keyboard Maestro macro that runs the script. Within a second, all unchecked tasks from my current Obsidian note appear in OmniFocus, tagged “Obsidian” with a backlink to the note.
No friction, no crashes, and no mysterious “handler” errors.
When the first test task appeared silently in my OmniFocus Inbox, I felt great satisfaction and relief. After all the false starts — AppleScript’s syntax chaos, Bash’s 2007 limitations, and LaunchBar’s quiet failures — it finally worked.
That single, silent task represented a perfect workflow: low friction, invisible automation, total reliability.
mapfile or other modern features.capIt’s simple, fast, and utterly reliable — everything good automation should be.
When people talk about “seamless capture” in GTD, this is what they mean. The tools fade away, leaving nothing but flow. Now, if only I could have this work on Windows…
Inktober 2025 Day 26. Puzzling