2023.11.29.

Follow-up on Liked “MailMate”:

I just bought MailMate a couple of minutes ago. It turns out I love to use plain-text email for writing and reading. It’s just way easier to edit my emails in MacVim than to fuck around with the Mail.app compose window.

The Things integration is also pretty cool. I can get the complete plain-text email in the to-do note, which is way more excellent than the jumbled text-fest I had previously parsed by the Things mail service forwarded from Mail.

I’m still developing my workflow around the rule-based smart mailboxes, which are pretty powerful.

I’ll write more about this app in the future.

2023.11.27.

2023.11.25.

2023.11.23.

Publish bookmarks from DEVONthink

  • I’m messing with my bookmarks today.

  • I keep a lot of cool articles in DEVONthink as my central repository, but I also want to share some of these links here.

  • I’m testing a simple workflow for this using a DEVONthink smart group, which shows me all my bookmarks from my Decoding database that aren’t published yet.

  • This workflow desperately needs automation, but I want to start as simple as possible and see how it works in practice.

  • Here’s a demo video.

Liked “MailMate”

MailMate is an IMAP email client for macOS featuring extensive keyboard control, Markdown integrated email composition, advanced search conditions and drill-down search links[…]

Sometimes, I wonder if I should try to use MailMate instead of Mail.app (at least for some specific tasks). It’s an app made for nerds.

I think it’s even have MacVim integration, and still makes emails available in the filesystem instead of closing them away for Spotlight only.

Related

2023.11.01.

Apple and journaling

Jason has concerns about the format of Apple Journal:

Like Apple Notes, the Journal app works without the Files app. Instead of your journal entries being discreet text files or similar that can be managed in the file system, they’re built into the app itself. It might work, like Apple Notes, using a SQLite database within the Journal app container.

I’m also moving into using more open formats for journaling, although I think there is a slight difference between a journal and a diary.

  • Keeping a journal in general is a mindfulness practice for keeping track of what I’m doing throughout the day.
  • Keeping a diary is more personal on the other hand. It helps us to write about our feelings and nice or bad things that happened to us.
    • This is the reason why I like to have the On This Day notification from Everlog in the morning.

Both of these practices provide a clearer picture, bringing us closer to the state of the past than just a simple memory.

Our memories give a false image because we can only remember the good things. This distorts the past and overvalues things that were not as good as we remember.

We can’t trust our memories, but we can trust a diary/journal, since it acts as a bookmark to the past, showing what happened in our lives. It functions as a backward tickler file, bringing things from the past to us. This retrieved information helps us to better understand ourselves in the future. We can see the difference between the past and our current state clearly, which can provide a new perspective on how we handle a current situation.

In essence: both of these practices allow us to compare our present self with our past one and draw conclusions.

So back to Apple Journal…

The only thing I see myself using Apple Journal for is the missing “add a description to multiple photos” app for now.

Sometimes I want to have a short description of an event that is stored in Photos, and since both apps are from Apple, hopefully, the integration will be better than duplicating my photos into yet another app as attachments.

Otherwise, I don’t see myself migrating away from Everlog in the foreseeable future.

2023.10.31.

2023.06.08.

Apollo is shutting down on June 30th.

It means that I officially end up using any social network.

I stopped using Twitter when Tweetbot was killed. I’ll do the same with Reddit too – which I liked better because the community was awesome, but I’m not going to visit a site that kills a superior app like Apollo.

All I need nowadays is a blog and an RSS reader and I’m good.

2023.04.06.

Fantastical adds broader Shortcuts support

Flexibits just released Fantastical 3.7.9, which adds a bunch of new Shortcuts actions, including the ability to filter events from a given Calendar Set in a given date range, and the ability to generate a simple schedule for a given day.

Nice! I have a shortcut which syncs up calendar events with agenda items in Things. Now, I can automatically do the following in one shortcut:

  1. Get all my meetings for today from Fantastical.
  2. Create or find existing agenda items about them in Things.
  3. Link the Things agenda item and Fantastical event using Hookmark.
  4. Start a new session from Things when the meeting is due.
    • I’ll write about how I manage deep sessions with Things one day.

2023.03.19.

Notational Velocity and Twitter as Birdhouse for Mac

This is an old post about how we can select text in any app and send it to places:

Here’s an nice solution to something I’ve been wanting. I love Birdhouse for iPhone, which stores tweets until they’re ready for publication. There’s no Mac alternative, so I’ve been putting potential tweets into Notational Velocity, and then copy-and-pasting them into Twitter when ready.

Today, MacStories points out that Twitter for Mac adds a contextual menu item that lets you tweet nearly any text you’ve selected in Mac OS X. You see where this is going: I can call up Notational Velocity with a keystroke, right-click on a tweet and send it off via the contextual menu. Awesome!

Translating this into the blogging world: we can publish micro posts directly from The Archive – which is the modern version of Notational Velocity – (or any other Cocoa app) using MarsEdit’s new Micropost feature.

2023.03.18.

Bookmarked “Scarlet“:

Scarlet is a personal issue tracker that saves to a file that you can include in your project directory, or anywhere you prefer. No accounts, no cloud services, no syncing, no third-party integration. Just a simple place to file away your project’s to-dos and close them when they’re complete.

2023.02.16.

2023.01.31.

2023.01.30.

The Open in Kaleidoscope Service

The Services menu is getting a well deserved love from the Kaleidoscope blog:

The Services menu, originally part of NeXTSTEP, was introduced to the Mac with the advent of OS X in 2001. Throughout the entire history of OS X (now called macOS), Services never received a lot of love or major updates. Luckily, Services continues to work to this day and can be remarkably helpful.

One of the things I like about LaunchBar is its integration with the Services menu. There is no need to install a bunch of LaunchBar plugins; you can simply reuse already provided system services and share extensions from installed apps.

Add to Kaleidoscope

2023.01.29.

Numbers can be used to store next actions and projects in a GTD system

I was thinking about making a more advanced GTD system in Numbers other than just using Reminders in macOS. This post lays out this idea in more detail.

First, create two tables for lists

We can store next actions of a GTD system in Apple Numbers by creating two tables for “Next Actions” and “Projects”.

  • The Projects list is just a list of projects with a completion checkbox, a title, and an optional due date field.
    • We could add optional notes or a project support field to link notes and other assets or link them using the title field.
  • The Next Actions list contains a completion checkbox, a title, a due date, a context, and an optional project field.
    • The context field can be a drop-down listing of all of our contexts.
    • The project field can be linked using a formula for the projects table title field.

Add groups for contexts

  • Grouping on the next actions table can be used to group next actions by context.
    • Contexts groupings can be folded, depending on where we are and what we want to see.
    • We can create sums for the number of next actions in a group.

Optionally, sync with Reminders

Writing an AppleScript for syncing with Reminders should be possible.

  • The script can create different Reminders lists for each context like Kinless GTD did for iCal back in the day.
  • The due date field should be assigned as a Reminders due date.
  • Next actions can be added to each Reminders list using the following format:
    • ✓ Next action title [Project Title]

Questions

  • Could it be possible to sync changes from Reminders back to Numbers using AppleScript?
  • How would we store task-related notes?
    • A new field can be long, but we can’t have fields under row without merging rows or columns.
  • What would be the benefit of this system other than just using a proper task management app like OmniFocus or Things?
    • I guess the reason is that Numbers is more flexible than Reminders and comes with every Mac.

2023.01.20.

Twitter Officially Bans All Third-Party Apps

Twitter today confirmed that it is no longer permitting third-party developers to create Twitter clients, with the information quietly shared in an updated developer agreement that was spotted by Engadget. A new clause under Restrictions says that developers are not able to “create a substitute or similar service or product to the Twitter Applications.”

The continued genius of Space Karen just impresses me.

This is the final nail in the coffin of Twitterrific and Tweetbot. These were great apps!

2022.12.26.

Downloading YouTube videos with DEVONthink

  • How I download YouTube videos into DEVONthink automatically.

    • 1. While browsing YouTube or checking my subscriptions from Reeder, I can save videos to my Decoding playlist.

    • 2. By subscribing to the channel using its hidden RSS feed from DEVONthink, I can get saved videos into my Decoding database.

    • 3. DEVONthink watches this RSS feed via a smart rule and downloads videos using yt-dlp.

    • 4. The script saves videos into my inbox folder at ~/Library/Application Support/DEVONthink 3/Inbox, which automatically gets imported by DEVONthink.

    • 5. From here, I can organize downloaded videos, start watching them and take notes.

Tweaking workflows

  • I constantly tweak my workflows this time of the year. I usually provide tools for others—that’s what I do for a living—but I also have to keep my knives sharp.

  • This year I’m tweaking two things.

  • Take better notes while watching a video.

  • Moving my Zettelkasten over to Bike.

    • I like to think about my Zettelkasten being a large outline. Keeping it inside Bike could be beneficial.

      • I’m trying to mimic the analog Zettelkasten (or Antinet).

        • I won’t use an analog one since I like the digital one’s benefits better, but I also want ideas from the analog one.

        • I’m a programmer and I use my Zettelkasten to understand coding concepts. I have some code snippets stored in SnippetsLab, so it’s easier to link to those from my Zettelkasten outline than keeping them on paper.

      • I can use the classical Luhmann IDs to add an ID each note.

      • I can nest notes under each other.

        • I can easily link notes together thanks to the Bike and Hook integration.

    • Disadvantages

      • I don’t have backlinks, but I’m not sure I need that inside a Zettelkasten.

2022.12.23.

Blogging with Bike

  • I had this short post from a couple of years ago, where Dave Winer showed how he could blog from an outliner in a video. Basically, he edits an OPML file that gets synced to his blog—the website also looks like an outline.

  • I still like this outline-based blogging approach. It is so easy to change and publish. I wanted to have this for myself too.

  • Jesse Grosjean (the guy who did TaskPaper) recently released an outliner app called Bike, which I often use. Since Bike is just using HTML behind the scenes, it occurred to me that if I feed that into a Ruby script, I could create something similar to what Dave has.

  • So, I created two scripts.

    • One is called publish_from_bike.rb, which accepts a Bike file and pushes changes to my blog.

    • The other is a simple AppleScript which starts the Ruby part, saves post permalinks into the Bike outline, and does some general housekeeping.

  • I have a small system to publish from my blogging outline. I use the following format.

    • 2022-12-23

      • 10:40

        • Posts with a timestamp are a published.

      • DRAFT

        • I can create drafts by marking them as DRAFT (or IDEA).

      • SKIP

        • I can also add notes or just bullets which will be skipped with the publishing script.

  • Here’s a video in action.

  • Plans

    • I want to have a proper toggles for these outline type posts, like Bike does.

    • It would be nice to mark them with a custom icon, like my other post formats has.

    • I may release these scripts if there is a need and they are well tested.

2022.03.21.

2022.02.23.

Archive Hook bookmarks with DEVONthink

I was in a Tinderbox Meetup last week, which was more about Hook than Tinderbox. I’m not a Tinderbox user, but I’m interested in how other people use their tools.

In the middle of the call, somebody had a question about Hook bookmarks. More specifically, can Hook archive its bookmarks as archive.org does with websites in general? Well there is no feature like that in Hook, and to be honest, doesn’t even need to be, because Hook has great Apple Script integration, so we can query bookmarks from its database.

In conjunction with DEVONthink, we can archive our bookmarks from Hook and save them as Pinboard does. I made a script for this a while back and it’s really helpful. It runs once a week, archives all websites from my Hook database into DEVONthink.

Setting up the script

First, download the script from here.

The scripts collect everything into one group in DEVONthink, so you have to create one where the archive can be stored. I would advise a new database even if you don’t have something similar already.

Open the script you downloaded. You’ll see two lines at the top of the file.

set webArchiveDatabaseUUID to "databaseUUID"
set hookedWebsitesGroupUUID to "groupdUUID"

You have to replace the databaseUUID and the groupdUUID part with the UUID of the database and group from DEVONthink. To do this, open DEVONthink, ⌃click on the database in the sidebar, and pick “Copy Item Link”.

Now, replace databaseUUID, with the link you copied. You’ll see something like this.

set webArchiveDatabaseUUID to "x-devonthink-item://CA3A9072-0650-4AF3-A608-1786F9D1A98D"
set hookedWebsitesGroupUUID to "groupdUUID"

Now, remove the x-devonthink-item:// part, so the top of the script should look like this.

set webArchiveDatabaseUUID to "CA3A9072-0650-4AF3-A608-1786F9D1A98D"
set hookedWebsitesGroupUUID to "groupdUUID"

Go back to DEVONthink and copy the group’s link from the same database (it is important to keep the group in the same database) by ⌃clicking on it and picking “Copy Item Link” again.

Replace groupdUUID with the copied link in the script again.

set webArchiveDatabaseUUID to "CA3A9072-0650-4AF3-A608-1786F9D1A98D"
set hookedWebsitesGroupUUID to "x-devonthink-item://B6C2C659-5682-45B5-8D59-107A641F8C2D"

Remove the x-devonthink-item:// part and then save your changes. The top of the script should look something like this now.

set webArchiveDatabaseUUID to "CA3A9072-0650-4AF3-A608-1786F9D1A98D"
set hookedWebsitesGroupUUID to "B6C2C659-5682-45B5-8D59-107A641F8C2D"

Now comes the fun part. You can run the script and DEVONthink will start downloading your Hook bookmarks into the group you choose.

The first run can take a while depending on the size of your Hook database. Subsequent runs should be faster since the script downloads only newly added bookmarks.

It is important to know that the script doesn’t sync Hook and DEVONthink, deleted bookmarks from Hook will still be present in DEVONthink.

Also good to know, if you want to archive sites behind a login, you have to sign-in in DEVONthink before you run the script.

Triggers

I keep this script in the ~/Libary/Scripts/Applications/DEVONthink 3 folder, so it’s available from the script menu in macOS – or in my case, from FastScripts. This way, you can run the script manually from DEVONthink.

You can even make it run automatically. If you use FastScripts, you can create a new DEVONthink reminder on the group you created to store Hook’s bookmarks and set it to run an Apple Script like this every week.

on performReminder(theRecord)
	tell application "FastScripts"
		set scriptItem to first script item whose name is "Archive Hook Bookmarks"
		tell scriptItem to invoke
	end tell
end performReminder

If you want to run it outside of DEVONthink, you can use for example Lingon, which makes it possible to run any Apple Script in the background daily, weekly, monthly, or whatever interval you want.

2022.01.14.

Tot for iOS is on sale, so I bought it, but I’m not sure if I need it when I’m already using Drafts. Tot almost does the same thing, but I like that is very fast. I used it multiple times today to draft Slack messages, store random pieces of information, keep a bunch of temporary links around for a coding session.

It is a better version of Stickies which syncs with my iPhone and my iPad.

I assigned ⌃⇧T as a global keyboard shortcut for Tot, which opens it from my menubar. Speaking of keyboard shortcuts, I like that I can open each slot via ⌘ paired with its corresponding number key; ⌘1 opens the first slot, ⌘2 opens the second one, etcetera.

Right now, I’m tinkering with Tot. I have Drafts running next to it, and I feel like they overlap too much, but Tot is just better for storing random pieces of bits and blobs.

Maybe at the end each of them will have its place in my tool chain.

2021.12.21.

So this is my workflow for blogging from Craft at the moment. It is fine, but I’m eager to write an extension that does this automatically, maybe with post formats and image uploads too.

2021.12.10.

11 of my favourite tips for Safari

  1. If you have bookmarks on the Favourites Bar, you can quickly open one by pressing ⌥⌘-1 through ⌥⌘-9 where the number corresponds to the number of the bookmark.
  2. You can do the same thing for tabs by pressing ⌘-1 through ⌘-9 and Safari will switch to the corresponding tab.
  3. If you do a Google search and go deep into a result, you can pick Search Results SnapBack from the History menu which instatly goes back to your Google results.
  4. You can reopen your recently closed tabs by long-pressing on the plus button in the top right.
  5. If you quickly want to switch to a different tab from your keyboard, you can go into the Address Bar with ⌘L and then type the title of the desired tab. Safari will show you search results in the Switch to Tab section. This even works across tab groups and iCloud Tabs.
  6. If you search for a video on YouTube, Safari will remember that. Next time you can type “youtube whatever you want to search for” into the Address Bar, and Safari will give you an option to search YouTube directly. This works with a bunch of websites, like Amazon, Wikipedia (with autocomplete) DuckDuckGo (with autocomplete).
  7. You can quickly switch your default search engine by going into the Address Bar, pressing Space, then picking another search engine from the list.
  8. If you want to keep and eye on a long-running download, open the Downloads popover from the toolbar, then detach it by dragging the popover off the main window. This will keep the Downloads window open until you close it or quit Safari.
  9. To disable auto-play on a website (like YouTube), go to the site, Control-click on the Address Bar and pick “Settings for website.com”. This will bring up a popover, where you can disable auto-play for videos.
  10. In the same popover, you can turn on “Use Reader when Available”, which will automatically bring up the Reader view on the website when you open an article. Useful for cluttered news sites.
  11. If you regularly want to quickly open the current tab in Chrome or Firefox, you can enable the Develop menu in the Advanced preferences, which will give you an option to “Open Page With” any browser installed on your Mac.

2021.08.14.

Where to go after 1Password 8?

After this week’s news on 1Password forcing users to the crappy experience of being an Electron app, I started to look for alternatives. I haven’t decided yet, but I’m considering the following options.

  1. Elpass: subscription-based, native iOS and macOS apps, looks good.
  2. Secrets: one-time payment, native iOS, and macOS apps, also look good.
  3. iCloud Keychain: free, built-in to iOS and macOS; also, it will have a couple of new features this autumn, like two-factor authentication.
  4. Update on 2021-08-14: Minimalist: I got this recommended in the comments, looks pretty cool as well.

I’m leaning toward iCloud Keychain because, nowadays, I like to use the built-in tools of the Apple ecosystem.

The only question I have with iCloud Keychain is where to store passwords of my servers and a couple of app licenses? I think the built-in Keychain app on macOS will be OK for this. It can store arbitrary username/password pairs (great for servers), and it has secure notes which can hold the small number of serial numbers I have.

Right now, the next step is to clean out my old passwords from my 1Password and iCloud Keychain databases before starting the migration process.