Welcome to the lab.

Scatterbrained: Revisiting the “doing” CLI

Back in 2011 I started tracking the minutiae of my work days using VoodooPad. It was partly for record keeping, but mostly to be able to walk away from my computer and still be able to remember what I was doing when I got back. I can be very, very scatterbrained. After VoodooPad, I had a system going using QuickQuestion and nvALT. Then it was Day One. By 2014 I’d come up with a solution in the form of a command line utility called doing. The journey was well documented up to that point in a series called, appropriately enough, “Scatterbrained.”

I haven’t written much about doing since then, but I continue to use it daily. It’s come a long way. It not only creates rich logs of my time at my computer, it also handles time tracking and reporting and integrates with my system via LaunchBar, various automations, and GeekTool. You know how git log can be really useful after a long night of hacking, or a few days of being away?1 This is that, but for everything else, and it’s brimming with handy features.

Web Excursions for February 12, 2020

Brett holding map

Web excursions brought to you in partnership with MindMeister, the best collaborative mind mapping software out there.

Diagrams: Diagram Editor for Mac
An elegant diagram editor for macOS. I wish I could recall the name of the one I used to use quite happily, but it’s eluding me now. At $20, Diagrams a stripped-down, streamlined version of tools like OmniGraffle, but it looks to be a complete solution for all kinds of diagramming.
A command line search tool that “combines the usability of The Silver Searcher […] with the raw performance of GNU grep.” I can attest to the usability being on par with ag and ack, and while I haven’t run any actual benchmarks myself, it does seem to live up to its stated goals.
Yoganotch Personal Yoga Assistant
I mentioned Zenia recently, a camera-based AI yoga instructor. This one looks to offer the same kind of guidance, but using wearable sensors instead of relying on the camera, which I have to assume would offer more reliable feedback. I haven’t tried this yet, given I live with a yoga teacher and the investment seems extravagant, but I’m infinitely curious. As always.
A free iOS app that turns your voice into MIDI notes. That part of it is solid and worth the download on its own if you’re looking to turn musical ideas into actual notes on the page. The multi-track feature isn’t as polished or useful, but the quantize, key magnet, and auto-chord features work well.
Playlistor - Apple Music <-> Spotify playlists
Convert Spotify playlists to Apple Music and vice versa. I’ve been looking for a solid way to do this for a while and this seems to be working perfectly.

Check out MindMeister and start brainstorming, collaborating, and boosting productivity.

Launching the iOS Simulator without Xcode

Correction: This post originally stated that Spotlight was also unable to index Simulator. It was quickly pointed out to me on Twitter that this is incorrect and Spotlight is indeed able to find the Simulator, so this only applies to people who prefer to launch from LaunchBar or similar.

This is a quick tip for developers, or anyone who uses the iOS Simulator on macOS. It’s fairly obvious, but I hadn’t thought of it until yesterday.

I don’t do much iOS development, but I do use the iOS Simulator for testing web applications. (Which, by the way, is slow and not ideal, but it’s the only way I’ve found to catch certain quirks specific to Safari on iOS.) Launching the Simulator, though, always requires opening Xcode and going to Developer Tools. Because the Simulator.app is embedded within the Xcode app bundle, apps like LaunchBar won’t find it to index it. LaunchBar, which is my launcher of choice, also ignores aliases, so dragging Simulator.app out to /Applications as an alias also doesn’t help.

I came up with the idea to use Automator and was going to write about it, but a quick DuckDuckGo search led me to Swiss Mac Users’s site where he had already detailed and explained the process. It’s super simple, but I recommend building the app yourself rather than downloading because there’s a rigamarole to get around an unsigned app that takes just as long as the single-action Automator workflow takes.

Now I can launch the iOS Simulator using LaunchBar and I’m 5% happier than I was before.

Fantastical 3

In case you missed the big launch, there’s a new version of my favorite calendar app for Mac and iOS, Fantastical. Fantastical, which is almost 10 years old now, is a gem of a calendar app with fast natural language event parsing, an infinitely handy menu bar view on the Mac, and full support across all Apple devices (and the iPhone app is just as excellent as the Mac version, and the iPad version is awesome). Version 3 adds myriad new features and is an exciting leap forward for this handy app.

Web Excursions for January 24, 2020

Brett holding map

Web excursions brought to you in partnership with CleanMyMac X, all the tools to speed up your Mac, in one app.

JetBrains Mono: A free and open source typeface for developers
I think this is my new IDE font.
Building a Spotify player for my Mac SE/30
I stand in awe of this build.
Special sunglasses, license-plate dresses: How to be anonymous in the age of surveillance
Reading about Cleariew AI will make you want a pair of sunglasses that obscures your face from surveillance cameras…
Leonard Cohen - The Story of Thanks for the Dance
A mini-doc detailing the story behind Leonard Cohen’s posthumous record, Thanks for the Dance. The contrast of loss and creation made for a melancholy record. I love it.
I Invented the World Wide Web. Here’s How We Can Fix It.

The Contract for the Web is a global plan of action created over the past year by activists, academics, companies, governments and citizens from across the world to make sure our online world is safe, empowering and genuinely for everyone.

CleanMyMac X

Soundtrack - experiments with Spotify, Apple Music, and Last.fm

I made a thing I want to show you. It will provide neither of us with any particular value, but it was a fun little labor of love and I’d hate for you to never see it.

Under my “other stuff” heading, there used to be a “Last.fm Experiments” page. It had broken over the years, and a few weeks back I thought I’d go see if I could fix it up, which — over the course of the following weeks — resulted in a new Soundtrack page with a fair amount of fancy.

As an aside, music has always been important to me. The thing is, I used to have my identity overly wrapped up in the music I listened to. Going through my records was supposed to tell you a lot about me; what I cared about, the depth of my emotions, how goddamn cool I was. That’s faded away with age, thankfully, and now I can just enjoy music and not really worry about how a particular track “reflects” on me. Anyway, I mention this because this is not a situation where there’s any expectation on you to have any interest in or particular reaction to my musical tastes. I’m also not going to curate the output of these scripts. I listen to some potentially embarrassing stuff. I’m cool with it. Ultimately, I just had some data and some tools and I wanted to make something fun.

Side note: That said, as I mention in the descriptions further in, Apple Music occasionally returns results for Nickelback during completely unrelated searches. I haven’t filed a radar on this yet, but I would like to state definitively that under no circumstances are any appearances of Nickelback based on correct listening data.

Bunch 1.2.2

Wow, compared to the barrage of updates in the last half of last year, it’s been a while since the last Bunch release. For those who missed it, Bunch is my text-file-based batch application launcher, replete with handy features for setting up “contexts” in your digital workspace. This update focuses on Bunch’s features for sending key commands.

For a couple of versions now, Bunch has been able to send key combinations and type strings in target applications. While the current key combo syntax works great for modifer+letter combinations, it was pointed out on Twitter that it was unable to handle combinations containing system keys like arrows, delete, caps lock, or anything that needed more than one letter to describe it. This has been fixed in multiple ways:

  • You can just use a key name in the normal shortcut format, e.g. {@up} would press Command-Up Arrow
  • You can combine them with modifer names (spelled out) using hyphens, e.g. shift-cmd-up (a full list of recognized key names is available in the docs)
  • You can use unicode symbols for arrows, e.g. {@↑} (or ↑ ↑ ↓ ↓ ← → ← → b a enter).

As mentioned in the Tweet that triggered this update, this makes it easier to use Bunch with something like Moom, allowing you to extend your Bunches with window management capabilities.

I also (finally) noticed that the escape keys you can use when sending strings to be typed included a conflict where \\n tried to be both Enter and Down Arrow, leading to an identity crisis of sorts. The escape codes have been updated such that \\u is up and \\d is down (and \\n is Enter/newline as it should be). I also added \\h for delete, and \\a/\\e for home/end.

Lastly, I was using the typing feature to trigger TextExpander snippets and noticed that when I tried to use snippets that required whitespace to trigger them, it was failing. I cleverly had Bunch stripping whitespace from the beginning and end of the string, so any whitespace that was specified got lost. That’s fixed now, and Bunch will trust that you meant to include any and all spaces you send it. Just in case, I also added an escape for \\s to force a spacebar press if needed.

Grab the latest update from within Bunch using Bunch->Check for Updates. Or, if you’re not already using it, download it from the Bunch project page and give it a shot.