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.

2021.05.09.

Drafts is a digital Hipster PDA

  1. Drafts is an app optimized for taking quick notes and sending them to other places instead of storing them in the long term.
  2. Each Drafts note has a unique ID which can be understood as a digital index card linkable from anywhere.
  3. These notes are temporary, so I’m not keeping them in the system. After I processed one, it can be thrown away.
  4. Notes in Drafts don’t need much organization; everything is on a simple list. When I’m done with a note, it can be trashed or archived.

2021.04.13.

Posting status updates from Craft

I’m tinkering with Craft, using it as a daily running journal. The outline-like logging format grouped by dates feels natural because I can write things out without much organization. The freeform nature of Craft makes this process relatively quick and easy.

It just occurred to me that I could also publish posts started as a block in my journal. I started writing this post’s idea, then turned it into a subpage inline and fleshed out more; finally, it was published via Ulysses.

Having this freeform block-level editing in Craft makes it an all-in-one tool for drafting out ideas into whatever I want.

2021.04.06.

Is Reminders App Linkable?

I just want to share a script which syncs due reminders to the Calendar app and it also links back to the original reminder. So it contains a way to link to specific reminders.

This undocumented x-apple-reminderkit://REMCDReminder/${UUID} URL scheme works on the latest version of iOS and macOS. The ${UUID} part can be found via AppleScript.

The only problem remaining for Hook right now that there no scripting API that I’m aware of to get the currently selected reminder.

Linking from real life objects via QR codes

I’m using paper based material in my GTD system too, linking to that is really hard.

  1. Hook could generate a QR code to any link, so I can print and attach it to paper based folders for example.
  2. Later Hook could scan QR codes by the Mac’s camera and bring up OmniFocus projects, Pages files, whatever we need.

Maybe it sounds dumb and not something I consider high priority, but I wanted to leave the idea here for consideration.

2021.02.26.

The readability of GTD list managers

Three was a topic I saw a couple of days ago on /gtd, where redditors discussed which GTD app is the most good looking. It reminded me of a problem I wanted to write about for a while now: their list design’s readability. I know OmniFocus, Things, and Reminders well, so I concluded my experience about their typography below:

A lot of people would say it’s Things. It has a friendly UI, but from a readability point of view, it is one of the worst.

In my daily work, I have two problems with Things:

  • It only displays one line per task, which means, if you have longer task titles, you’ll end with a bunch of text clipped out, which is annoying on an iPhone. You have to open each task to see the full title, which is no fun when you quickly want to review your errands list.
  • Things displays every task list grouped by project. If you like me, you’ll usually have one next action per project, so having each project being this prominent is making your lists very noisy.

I stopped using Things because of these issues, and I switched back to OmniFocus, which displays full task titles, and has nicer list readability overall. Apple Reminder is also good at showing lists, which matters the most at the end, so I would go with OmniFocus and Reminders.

Let’s see these apps next to each other. From left to right are OmniFocus, Reminders, and Things.

As you can see, Things overflows the text and group actions by projects which makes the readability of a typical next actions list much worse. It was the main reason I left Things after using it for two years and switched back to OmniFocus.


I also made a switch from OmniFocus to Reminders in December, but that’s a topic of another post.

2021.02.25.

Remote work is not local work at a distance

Jason Fried wrote a post about doing remote work, with the expectations of local employment. This post resonated with me very well since I had a couple of weird interviews lately. Just a side note: yes, I quit my current job as a Ruby backend developer at TerraCycle about three weeks ago, and I’ll start working as a frontend developer/product designer at Nearcut on March 10th.

There are still companies that refuse to accept that remote work is a viable alternative. They want you to be in the office because “this is what we did before the pandemic, and everything should be back to normal soon.” No, nothing will be like before, and companies should embrace that, not deny it.

Not everyone’s like that. Even big ones consider remote work a viable alternative but don’t have the hiring process and experience to work like that, so they’re relying on old habits.

The enlightened companies coming out of this pandemic will be the ones that figured out the right way to work remotely. They’ll have stopped trying to make remote look like local. They’ll have discovered that remote work means more autonomy, more trust, more uninterrupted stretches of time, smaller teams, more independent, concurrent work (and less dependent, sequenced work).

I’m interested in what COVID-19 will do to remote work because, seriously considering remote work is one of the positive changes of the pandemic that happened in many workplaces. People were forced to work from home. Many companies figured out how to do this successfully, and they don’t want to throw out this knowledge because “everything will be back to normal.”


Jason also writes about native platforms:

Porting things between platforms is common, especially when the new thing is truly brand new (or trying to gain traction). As the Mac gained steam in the late 80s and early 90s, and Windows 3 came out in 1990, a large numbers of Windows/PC developers began to port their software to the Mac. They didn’t write Mac software, they ported Windows software. And you could tell – it was pretty shit. It was nice to have at a time when the Mac wasn’t widely developed, but, it was clearly ported.

When something’s ported, it’s obvious. Obviously not right.

Stuff that’s ported lacks the native sensibilities of the receiving platform. It doesn’t celebrate the advantages, it only meets the lowest possible bar. Everyone knows it. Sometimes we’re simply glad to have it because it’s either that or nothing, but there’s rarely a ringing endorsement of something that’s so obviously moved from A to B without consideration for what makes B, B.

Maybe Basecamp should create a Catalyst version of HEY for Mac from their iOS app, which is quite nice, instead of having a cross-platform Electron thing on the desktop called a “native Mac app.”

2021.02.23.

Testing Craft for my Zettelkasten with external folders

Yesterday I installed the latest version of Craft. I waited for iCloud sync because I’m very conservative about where I sync my stuff, and Craft only had its sync server.

The update released yesterday makes it possible to add external folders from iCloud Drive or even offline folders. It is a start, although I was expecting full CloudKit sync, not just an external folder.

It still has some issues and bugs related to syncing. I migrated my Zettelkasten from DEVONthink to Craft; it has about 150 notes right now. I installed Craft on all of my devices, and I’m still experiencing sync errors.

It seems like Craft is stuck in a state where it stops updating files from the iCloud Drive folder I set as a space. I have to reload the folder every time I change something, which is annoying.

The app itself is lovely, way better to use for Zettelkastens than DEVONthink on iOS. I like the initial experience, but syncing problems doesn’t make me trust in the app. I saw the developers are responsive and fix stuff quickly, so I’m hopeful. Until then, I keep testing Craft and see how it will change my habit of writing into my Zettelkasten.

2020.11.11.

2020.11.10.

Small surprises of Siri Suggestions

Siri’s suggestions are starting to get better on my iPhone. Let’s see the following screenshot from yesterday.

Siri suggestions

I usually write entries to my food log via Drafts and check my sleep patterns in the Health app around noon. These recommendations are spot-on. But I love how Siri recommends Handoff as well.

I was in the middle of reviewing a next action list yesterday in OmniFocus on my iMac, and I had to leave for a couple of minutes. I grabbed my iPhone to continue, and even before starting to search for that specific next action list via Spotlight, my iPhone was already recommending what I wanted to do.

I love small UX surprises like this.

2020.09.23.

2020.07.07.

Shrugs.app

Miután az új csapatban Slacket használunk kommunikációra, így megint felmerült a hivatalos Electronos kliens, amit nem vagyok hajlandó használni – akkor inkább megnyitom Safariban. Szerencsére most jött velem szembe a Shrugs app, ami egy egész pofás natív Slack kliens Macre.

Ezt a screenshotot pedig csak itt hagyom a poszt végén.

Screen Shot 2020 07 07 at 10 08 23

2020.02.24.

2020.02.05.

2020.02.02.