Welcome to the lab.

More TaskPaper fun with Keyboard Maestro

[Tweet : nvALT]

I’ve put together a few of my Keyboard Maestro macros for TaskPaper 3 that I think might have general appeal. I have to thank Rob Trew at the very top of this post, he’s saved me a significant amount of time in figuring out how to automate these apps1.

You can read on to see how they work, or download the bunch as a Macro Library below.

Natural language dates

First, an update to my Natural Language macro specifically for TaskPaper 3. Rather than bundling Sugar.js or relying on other tools, it now just uses TaskPaper’s own DateTime API. A much shorter (and self-contained) script. The macro is set up to trigger via regular expression any time you type a tag with a value, e.g. @due(tomorrow). When you close the parenthesis, it will scan the entire task for tag values that will translate to dates and convert them. You can specify which tags it will consider using the “dateTags” variable in the macro, a space separated list of tag names (e.g. due start done).

You can use language like “tomorrow,” “next tuesday,” “2 weeks” or just “3” to set the date to three days from now. If a string isn’t recognized, it won’t change.

It can also be triggered by a keyboard shortcut, customizable in the macro editor.

The JavaScript it runs is available in a gist, in case you want to pick it apart.

Note, if you’re looking for an update to my scripts for incrementing and decrementing dates, you can take a look at Jesse Grossjean’s JSA version.

Increment/Decrement tags

The increment/decrement macros are used for cycling numeric values in tags like @priority(5). You can define the tag and the increment (value to add or subtract) in the macro variables, and create additional macros on different hotkeys to add new tags (and unique values). The library I’ve created for download includes “priority” (1-5) and “completed” (10-100%) macros.

For the @priority macros, the minVal is 1, maxVal is 5, and the increment is +1 or -1.

For @completed, the minVal is 10, maxVal is 100, and the increment is +10 or -10.

When triggered, it will look for the defined tag and add/subtract the defined increment (incValue). You can set the minValue and maxValue variables to define the scale.

If the tag doesn’t exist on the task when the macro runs, it will be added with the minValue (or maxValue if decrementing). If it’s at the top of the scale when you increment (or at the bottom when you decrement), it will be removed entirely. Triggering the macro again starts the cycle over from either direction. Otherwise it just adds/subtracts the defined increment from the current value.

Again, here’s the gist if you’d like just the code.


Keyboard Maestro macros for TaskPaper 3 v1.0.0

A collection of Keyboard Maestro macros for cycling numeric tags, natural language dates, and probably more to come.

Updated Mon Feb 19 2018.

DonateMore info…

  1. I’m still clumsy with JavaScript for Automation. As annoying as I’ve found AppleScript over the years, I’m just not loving JSA much more.

Web Excursions for February 13, 2018

[Tweet : nvALT]

Web excursions brought to you by MightyDeals.com, featuring great deals on software, training, and design resources.

Visual Studio Code - Code Editing. Redefined
I’ll probably be writing more about this, (and maybe everyone already knew this,) but Visual Studio Code is a free code editor from Microsoft that is so good it’s on the verge of replacing Sublime for me. If you’re under the same impression I was — confusing VS Code with VS IDE and assuming it wasn’t for you — shed the misconceptions and give it a try. It’s awesome. For Linux, Mac OSX, and Windows (listed in that order on the website, Windows last, which I find interesting).
Findings - All Your Research, In One App
I’m linking this for now because the dev asked me to review it and I don’t feel qualified but it looks amazing. A lab notebook: organize experiments, track results, and manage protocols. Free for Mac (Basic version), iOS and Watch.

: If you happen to be a researcher and interested in doing a guest review, please let me know!
Farrago: Robust, rapid-fire soundboards
Rogue Amoeba introduced a new app recently called Farrago. I’m giving it a shot right now — if it fits my use cases I’ll be writing it up in more detail. For now, I’ll say: it’s a soundboard app geared toward broadcasters (or podcasters) with a slick keyboard-navigable interface, extensive customization, and a complete organization toolset including sound banks and sequenced lists with sounds and notes for planning out shows.
SoundSource: A Superior Sound Control
Speaking of Rogue Amoeba, I had totally missed this utility, but I’m using it daily now. It replaces the Volume control in your menu bar with a panel that allows easy individual control of devices/volumes for Input, Output, and Sound Effects. It also has a Play-Thru feature that lets you easily monitor any input source from any output source. Lastly, if you own any other Rogue Amoeba product (Farrago, Airfoil, Audio Hijack, Fission, etc.) you can get a complimentary license.
uzairfarooq/arrive: Watch for DOM elements creation and removal
A handy javascript wrapper for Mutation Observer, used to detect the arrival (or removal) of DOM elements without polling.
mvdan/sh: A shell parser, formatter and interpreter (POSIX/Bash/mksh)
A handy shell parser, formatter and interpreter. Includes shfmt, a great tool for beautifying bash scripts.

SearchLink 2.2.8

[Tweet : nvALT]

I just updated SearchLink to v2.2.8. Yes, if you’re paying attention, I did skip a few increments there since the 2.2.5 release. I’ve added a few features and then kept holding release off until I had tested, and then life gets busy. You know.

This version adds a !imov search for movie links from the iTunes store (credit to Sebastian Szwarc for the contribution), as well as the ability to search all Pinboard bookmarks for a phrase (with limited fuzzy matching). To use the Pinboard search, you’ll need to get your API token from the Pinboard settings page. Add pinboard_api_key: 'YOUR_USER:TOKEN' to your ~/.searchlink file.

It currently searches your tags and “description,” which is generally the title of the site. I don’t have it combing the url or the extended description at this point, but I’ll see what issues I run into over time. The Pinboard searches currently download your entire bookmark collection every time it runs (doesn’t take an excessively long time, but it’s highly inefficient). I’m working on caching those and only updating as needed, but I’m running into trouble with writing large cache files to disk. Eventually I’ll figure that out, I promise.

I also added a utility dependency for !spell searches. It now uses aspell locally rather than relying on APIs. You can install it with brew install aspell or download it from aspell.net. A search on a word or a string with !spell will take an educated guess at the best possible result and replace words inline. For example, running SearchLink on !spell harber will result in “harbor.” If you never use SearchLink for spelling correction, you don’t have to install aspell to use everything else.

I also switched the !def (definition) search to use Wordnik directly. It will return the first definition provided on the site, with a link to the definition page and the definition itself in a title string. !def forces titles to show in the output even if your preferences have them disabled in other cases. This one’s kind of a silly feature anyway, so I won’t put a lot more time into figuring out ideal ways to handle it.

As a side note, I’m at a point where I really want to turn this into an app. A PopClip style popup on selected text, the ability to select from multiple results, and an option to preview (URL Preview style).

You can download the latest version below, but check the project page for more details and documentation.

SearchLink v2.2.8

Generate Markdown links from web searches without leaving your editor.

Updated Fri Feb 09 2018.

DonateMore info…

Best of 2017: Personal Projects

[Tweet : nvALT]

See all the 2017 roundups!

As you may be aware, I publish a lot of projects. Mostly tools and scripts I give away for free, a couple that actually pay my bills. One yearly recap I never get around to actually finishing is a list of my own favorite personal projects for the year. This year I got around to it.

60 Mac Tips
David Sparks and I finished a new edition of 60 Mac Tips in time for the High Sierra release. We also updated volume 1, so all total there are 120 unique tips, with video demonstrations, all valid on the latest macOS.
Marked 2
Marked continues to be my primary focus. It was released at an opportune time when Markdown was finally getting a lot of momentum among writers and bloggers. It’s become a standard in its genre, and the further development of writing tools and integrations has made it a lot of fun to continue working on.
Far from my most popular project, SearchLink is still the one I love the most out of all of my free projects. These roundups would be impossible without the ability to automatically link text without jumping back and forth between the browser and my editor. This year saw the addition of new features and additional (easier) syntax.
My chart of features for all of the iOS text editors on the App Store continued to grow (and shrink a little, it’s been log enough that some are dying off). It remains one of the most consistently high-traffic pages on my blog.
As a side note, I’ve been rewriting the whole thing to use a database and dynamically generated chart. It allows more flexibility in searching and filtering, as well as easier addition of criteria (and potentially entire genres of apps). This kind of stalled, but I do hope to get back to it.
nvALT (and BitWriter)
nvALT got an update to make it work with High Sierra, which is good because I’d still be lost without it. BitWriter progress was slow, as anyone waiting for it knows, but it’s been getting more attention these last few months.
I made more shirts. My favorite new one is the Markdown-inspired **BOLD**, and I’m still partial to the I Wanna Be shirt from the Rock Paper series.
It was a great year for Systematic. I loved every guest I got to talk to, including Sal Soghoian, Shawn Blanc, Allison Sheridan, and Merlin Mann, as well as fascinating interviews with people you might never have heard of. Rabbi Eric Linder came back, and folks like Jai Bentley-Payne, Adam Wuerl, Steve Harm, and Stuart Turner (among many others) made it a pleasure to keep things going.
While the regularity of publication slowed down at the end of the year when Christina switched jobs, it was a year of delightfully weird conversations. A little dark at times, but that’s part of the point of the podcast for me. Very good topics on both sides.

Macstock Early Bird ticket sales are open. You should come.

[Tweet : nvALT]

I had a blast at Macstock in 2016. It was a perfect combination of tech personalities and tech lovers, great presentations, and lots of fun mingling. In 2017 it grew, and the attendees, presentations, and the social events got even better. Based on that, I’m betting on Macstock 2018 being the best one ever in the history of Macstock (ok, sure, it’s only a few years old, but let’s keep making new records to break).

The lineup of speakers is always top notch. I learned a lot last year, which surprised me because I don’t do well in auditorium settings. It’s why I failed Calc 2. They even let me speak last year and I loved it. If all goes well with my pitch, I’ll be speaking again this year (and doing a deep dive session).

It’s the attendees, though, that really make it worth the trip. Remember Macworld? I think I went to three sessions (five if you count the two talks I gave) total, but I showed up every year because it was the Apple-lover’s social event of the year. As I hoped it would, Macstock is growing to be that social event for me. And the more people who show up, the better it gets.

There was a great barbecue in the middle of the conference the first year, a great mingle last year, and this year there’s a Welcome Party the first night, [a ton of great talks], an After Party on Saturday, a Game Night after the After Party for those who can handle late, late nights, and a wrap-up event on Sunday.

So, all of that said, early bird ticket sales are open now, and you can get a weekend pass for $179 (will be $249) and a day pass for $89 (to be $99). It takes place on July 21st and 22nd, so you have plenty of time to plan travel and lodging.

Head to macstockconferenceandexpo.com for more details, and follow @macstockexpo on Twitter for updates. I sincerely hope to see you there!

Web Excursions for January 26, 2018

[Tweet : nvALT]

Web excursions brought to you by CleanMyMac 3, all the tools to speed up your Mac, in one app.

Since excursions are the result of my travels over recent days, they tend to follow a theme. The theme of this one turns out to be web design and app marketing…

How To Get Your App Featured in the App Store and Google Play
For all the marketing tips for developers that I’ve read (and even proffered), nothing really beats an App Store feature, if you can get it. Here’s a good checklist.
Responsive HTML Email Templates for Developers, Marketers & Startups
Nobody liked coding HTML emails even before mobile. Now you have to plan for so many variables while using CSS and markup restricted for cross-client compatibility. Enjoy this collection of responsive HTML email templates and save the tears.
I’ll admit it, I’m not great with designing gradients. This free, curated collection of 180 linear gradients is a welcome addition to my toolbox. Download them in CSS3, Photoshop and Sketch formats.
Another great toolbox addition for web designers. Animista offers a place where you can play with and customize ready-to-use CSS animations, with code ready to download and incorporate into your project.
AppLaunchpad Mockup Generator
A free web app for generating high-res product mockups for apps, putting your app screenshot in a real-life context easily (and for free). All iOS devices (including iPhone X and Apple Watch), iMac, Macbook, and even Windows machines. (AppLaunchPad’s tool for generating iOS App Store screenshots looks pretty sweet, too.)

CleanMyMac 2

Another Product Hunt bookmarklet update

[Tweet : nvALT]

The PHOpen bookmarklet that quickly opens links from Product Hunt pages broke again despite my efforts to make a foolproof version. Man, DOM hacking is a fragile thing in an era of frequent design updates.

This update works with the new sidebar layout. It just chooses the first link in the block (usually containing Website, App Store, and More info), so it should always get the direct link to the website and open it in the same tab.

Because of my brilliant plan of serving the bookmarklets straight from the CDN, if you have the bookmarklet installed already, it should just start working again. If not, just drag the button below to your bookmarks bar and click it when you’re on a Product Hunt product page.


Hanging Punctuation in Keynote on Mac

[Tweet : nvALT]

I ran into a problem editing a slide in Keynote with a large blockquote. It was left-aligned, which I’m great with, but the quote started inside the left margin, which caused visual flow issues. In typography, this is solved with hanging punctuation.

I haven’t done print design for a long time, but I remembered there being a “hang punctuation” feature in most of the apps I’d used. I apparently never learned how to do this manually in apps like Pages or Keynote. People who’ve been designing in these apps (and probably a dozen others) are scoffing at me right now. I’ll take it.

If you’re curious, it turns out it’s as simple as showing the rulers (View->Show Rulers or ⌘R) and dragging the indent marker behind the left margin marker. Here, I made you a video.

Vimeo Video

Hope that’s of use to enough people that it outweighs everyone who’s rolling their eyes now.