Things I like this week, volume 17.

Imaginary Worlds
I came across this podcast purely by chance because I’m a listener of 99% Invisible and it was featured this week in a special episode. After that episode and one more, it has become my absolute favorite new thing, full stop.

Imaginary Worlds is a show “about sci-fi and other fantasy genres — how we create them and why we suspend our disbelief”. It’s filled with great contextual audio clips, a lot of humor, and a ton of heart. I’ve listened to exactly two full episodes–the one featured by 99% Invisible, “Fixing the Hobo Suit”, and 1977, which is part one of a five-part series on the effect Star Wars had on our collective cultural consciousness.

It. Is. Delightful. I can’t wait to listen to the rest of the archives. I’ve been exploring other kinds of podcasts, and this one is a really great surprise. If the rest of the episodes are half as good as the ones I’ve heard, it’s going to be wonderful.

Imaginary Worlds (iTunes)

Things I like this week, volume 16.

Hours Time Tracking
Things have been well, crazy lately, in the best way possible. I have a ton of new responsibilities that I’m trying to balance, and Hours has been absolutely instrumental in keeping things straight and accounting for my days lately.

It’s an iPhone app with Apple Watch integration that tracks your time in a really attractive and flexible way. It’s highly customizable and has a ton of options, and there’s even more on the way. Tapity is working on extending the app to the Mac and including team functionality, which is going to be huge.

The app is (as of today) free for a limited time as the company prepares to expand it. If you have any reason to want to track time, whether for work or personal reasons, it’s definitely worth checking out. And Tapity is throwing its full weight behind it going forward, so you can trust that it’s going to continue to be great for a while.

Hours Time Tracking

Things I like this week, volume 15.

Byword
I first purchased Byword years ago and was pleased with its clean and elegant UI. I’ve bounced between Markdown writing apps quite a bit since then, but recently downloaded it again on all my devices (iOS and OS X) just to play around. Not too much seems to have changed at first glance, but significant iOS 9 changes have made it a great option again, with additions like Spotlight integration and multitasking/split screen support.

It won’t do all the things an app like Editorial can do, but it’s great at what it does. It’s decidedly simple, but that’s not a bad thing at all. I’ve been using it for certain types of personal writing (still using Drafts with custom actions for blogging) and I’ve been delighted with the updates.

iOS / Mac

Aimee Mann’s ‘Bachelor No. 2‘.

Right around the time she did the Magnolia soundtrack, I fell hard for Aimee Mann’s solo career. Something about the place I found myself in my life combined with the smart and scathing songwriting she’s so great at just broke my brain in the best way and I was infatuated. Ever since, I’ve studied her successive albums and pored over every note, every chord change, every sardonic and heartfelt lyric. Her music’s changed the way I think about songwriting in a way that few other influences can claim.

Bachelor No. 2 (Or, the Last Remains of the Dodo) is quite possibly the canonical collection of songs that exemplifies the best parts of her craft. There are a ton of songs among the albums that followed that absolutely crush me, but the set that appears on Bachelor is so perfectly organized that it defies understanding. From start to finish, it swings poppy hooks tempered with the gravity of lyrics that paint pictures from the cheeky to the utterly melancholy. The vocal tracks are layered in such exquisite ways and the songs move along at a perfect pace, carrying you to the end of the album without even realizing how you got there.

She’s an incredible artist, and continues to release fantastic work. But Bachelor is the album I return to time and time again to wallow in a perfect sadness, surrounded by brilliant song structure and melodies. I was listening to it again today for the millionth time and wanted to put some thoughts down on it. If you appreciate great songwriting, it’s worth your time.

Clipboard automation with Slack, Automator, and AppleScript.

Several weeks ago I wrote about using a personal Slack team for notifications and other personal info. Since then, I’ve continued to experiment with adding channels and connecting services, trying to find the right mix of utility and centralized information gathering for me.

One of the things I really love is using a #clipboard channel, which allows me to instantly synchronize anything between my Mac and iOS devices. Some people use Slackbot for this, and yes, you could also use AirDrop or any of the myriad clipboard syncing apps, but I’ve tried almost all of them, and they all disappoint in some way. Nothing beats Slack for sheer speed and reliability in this arena, believe it or not.

Given that I’m always looking for ways to waste time streamline workflows for maximum productivity power ups, I was curious to know if I could make the copying of text (my main use case) faster within this process. I asked the following question:

and was met with a chasm of silence. And a few people who wanted me to let them know if I figured out a way to do it.

Slack’s Mac app is essentially a web wrapper for the site itself. Which isn’t a horrible thing, but does make for some less-than-stellar integration points. It’s actually easier to automate this kind of thing on iOS, believe it or not, due to the extension system provided to developers beginning with iOS 8. But I had a little time this weekend and was determined to figure it out, so I decided to get my hands dirty with Automator like any other rational person. I was able to get highlighted input text copied to the clipboard and sent to the right channel on the web easily, but that meant I needed to open a web page every time and wait for it to load… like an animal. So I began thinking about UI scripting and decided to try it with the Mac app using AppleScript.

I will admit this right now: I’ve never really used AppleScript before, and I’ve used Automator only peripherally over the years, so the result of this little experiment is a bit of a dumpster fire. But it actually does what I want it to, which is kind of cool.

First, I needed to understand at least basic AS stuff. I did a little reading and managed to get a handle on it fairly quickly. It’s quite a bit of fun, and I’m actually sorry I waited this long to play with it. Once I felt comfortable, I put together as much as I could in Automator to get the app focused and ready. Then I began assembling the script. In order to really win, once Automator launched the app, it needed to do the following:

  • from whatever team I last left the app in, switch to my personal team (Cmd-1)
  • activate the quick launch dialogue (Cmd-K)
  • enter “cl” to highlight my #clipboard channel
  • simulate a press of the return/enter key
  • paste the text into the field (Cmd-V)
  • simulate another press of the return/enter key
  • switch back to the app I was working in (Cmd-Tab)

All of this is totally possible, and not even that hard in AS. I found this awesome app that displays the key codes and other info for keys as you press them, so I was able to keep the script a little bit tidier. The tricky part–the part that drove me nuts and took me the longest to figure out because it wasn’t instantly apparent–was that I needed to build tiny delays into the script to allow the Slack app to catch up to the simulated inputs. I added a few tenths of a second between the steps in the script, and the result was that the app looked like I was just typing super fast, pasting, and tabbing back to the previous app, as opposed to just farting out the failed alert sound your computer makes when you do a thing it doesn’t want you to (which happened a lot as I was tripping through figuring this out). The finished result looks like this (seasoned AS users, avert your gaze; don’t look upon this atrocity):

tell application "System Events"
key code 18 using command down
delay 0.3
key code 40 using command down
delay 0.5
keystroke "cl"
delay 0.3
key code 36
delay 0.3
key code 9 using command down
delay 0.3
key code 36
end tell

Like I said, not the prettiest piece of work. A second smaller AS block just handles the Cmd-Tab after this is done. But it works, and I’m pleased as punch that it does. I mapped a keyboard shortcut to the Services menu entry in System Preferences, so now I can highlight text with my right hand, and with my left, hit a key combo and instantly run the action, returning to the current app in about 3 seconds. And the pasted snippet is available on all my devices, instantly.

So yeah. There you go. Waste of time? Probably. Useful? Actually, yeah, very. And I learned a little something. So let’s just move on.