Welcome to the lab.

Web Excursions for July 10, 2018

[Tweet : nvALT]

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

Text Case on the App Store
A cool $1, one-trick utility for iOS that takes selected or copied text and performs case transformations: title case, URL Encoded, uppercase, lowercase, capitalized, reversed, and “Mocking Spongebob” (random capitalization). Available through a share sheet in any editor or text field.
Katharos Tones
A $10, 60-sound collection of ringtones combining a selection of digital and acoustic sounds. If you’re tired of unnecessarily checking your phone every time the tri-tone goes off in a TV show, you might want to check these out. I’ve been using them for a couple of weeks now and can vouch that there are some great ringtone/alert replacements in here. (Admittedly, I still use some other ringtones for per-caller customization…)
DevTube - The best developer videos in one place
A curated collection of the best tech videos on the web.
Easily create a beautiful digital portfolio/résumé. Mural gives you a way to display and categorize your work, Pinterest style, and tell a story with each piece. Handy.
Do you like Futura but want something that looks a little less… 90 years old? This pay-what-you want font — named after Futura designer Paul Renner and created by Indestructible Type — is worth trying out for your next sans-serif design need. Check out their other fonts while you’re there, they’re doing some cool stuff.

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

The most demonstrably valuable text expansion snippet ever

[Tweet : nvALT]

I’m not being hyperbolic: this “one simple trick” is going to save a lot of people a lot of time. (I know, it’s really hard to read that sentence as anything other than hyperbole, but give me a chance.)

I talk a lot about TextExpander and how much time it saves me (and full disclosure, Smile is a regular sponsor of my blog and podcasts). I was recently delighted by an unconventional use for text snippets that came from a Facebook post from Peter Cohen (and pointed out in Bob “Dr. Mac” LeVitus’ newsletter):

One of the smartest text substitutions I’ve made turns “gfy” into “thanks for your valuable feedback.”

— Peter Cohen

I can’t think of a snippet that would save me more time than this. When I feel attacked, offended, or receive negative feedback I consider unfounded, here’s the process I try to stick to:

  1. Type out a smartass or otherwise scathing response
  2. Erase smartass or otherwise scathing response prior to sending
  3. Meditate, take a walk, and/or listen to some favorite music until the initial reaction passes
  4. Force myself to wait until the next morning to reply
  5. Sit down (if still necessary, gritting my teeth) and writing something polite and understanding

Step 5 always ends up being about the same, and a snippet that just reverses my thinking in an instant would literally save me 12 hours of time, and some physical exertion. Talk about a productivity hack…

As an aside, I’ve found that this type of response to aggressive emails almost always changes the conversation immediately. If an angry customer (or otherwise unfamiliar person) suddenly feels heard, everyone proceeds in a civil fashion. Most people who start out angry are simply assuming that they need to be aggressive in order to be heard. I’ve written about this before, and I’ll refer back to my post on “How to write a customer support request.”

(I’ll further note that this isn’t as effective on Twitter. People directly attacking me rarely seem able to read a short, civil response as anything other than sarcastic or condescending. It takes a bit of eloquence that’s not easy in 140-280 characters. Sarcasm, on the other hand, is really easy in only 50-100 characters.)

I’ll add a group to the TE-Tools if I finish up my new “inverse reactions for better customer service” snippet collection.

Web Excursions for June 25, 2018

[Tweet : nvALT]

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

Nvidia Transforms Standard Video Into Slow Motion Using AI
Nvidia demonstrates using AI to turn 30fps video to super-smooth ultra-slowmo (240fps) video. It’s amazing.
transfer.sh - Easy and fast file sharing from the command-line.
Easy and fast file sharing from the command-line. Share up to 10GB, fully encrypted and automatically deleted after 14 days. And free.
This is pretty awesome. Machine learning movie recommendations on the command line. Installs with pip and sources the Carnegie Mellon Movie Summary Corpus to provide recommendations based on a selected movie.
Strapdown.js - Instant and elegant Markdown documents
Easy Markdown documents in the browser. Just add a script link at the bottom of an HTML page containing Markdown inside an <xmp> tag and it generates an HTML version on the front end using Bootstrap themes (switchable).
Chatamo Alexa Skill Builder
Chatamo creates chat bots for automating customer service. They now offer an Alexa skill-building tool that makes it possible to build skills with point and click.

CleanMyMac 2

Curiouser and curiouser

[Tweet : nvALT]

Some of us always follow the rabbit. It’s not because we want to. It’s just that the rabbit…

10 a.m., somewhere in Minnesota

Sit down to write a blog post. It’s basically written already in my head, just need 20 minutes to get it down.

Double check some code I’m including, and realize it doesn’t work right in an edge case that just crossed my mind.

Drop back to Sublime Text for some testing. This edge case is revealing a more substantial failure. Get a little frustrated and head to StackOverflow.

Find a StackOverflow answer that wasn’t exactly what I needed but follow a link to GitHub and start examining some code, out of context, that I think might have the answer. See a function used that I’ve never heard of and have to track it down through the repository. Turns out it’s a native function in the language that I’d never seen before.

Consider the possibilities of this functionality. What’s the use case for this? Why was it considered important enough to be part of the core functionality. Figure out some cases, start to think “so what else could this be used for?” I can think of some code that could be refactored to play with.

Grep through to find an old script and start trying out the new method. Little snag, I need to convert the data when it’s ingested. That will require a separate library. Package manager gives me a missing library error.

Run brew update to prepare for installing the needed package. See the list of changed and new packages. Wait, what does that one with the cool name do? brew home newcoolness. What? I didn’t even know this was possible!

Dig into the new package, consulting docs and trying out various pipelines. Holy cow, I should write a blog post about this. Wasn’t I doing that already? Check timestamp. Look at watch. Tomorrow, I guess, it’s time to make dinner now.

Cognitive Productivity With macOS: 7 Principles for Getting Smarter With Knowledge

[Tweet : nvALT]

The latest book from Luc P. Beaudoin is out: Cognitive Productivity with macOS: 7 Principles for Getting Smarter with Knowledge, available on Leanpub, the iBookstore and Amazon.

Luc is the co-founder of CogSci Apps (creator of mySleepButton), founder of CogZest, and most importantly, a Cognitive Scientist who specializes in Mac and iOS-based productivity. So he’s got credentials. You may even have heard my chat with him on Systematic.

If you’re a fan of this blog, or a listener of shows like Systematic, Mac Power Users, or any of the Mac shows with a productivity focus, this book will be for you. While it certainly has appeal to the academic side of knowledge gathering and consumption, it breaks the processes down in a way that will help anyone working to organize their information. By focusing on key principles in the areas of knowledge gathering, organizing, assessment, and mastery. It includes great info and tips for using Mac apps like OmniFocus and OmniOutliner, Anki, Timing, Leap and Yep, working with plain text and Markdown, and great tips for working in Finder and keeping projects and knowledge organized and accessible.

Luc has a 2-second rule that says any information you use frequently should be accessible on your Mac within two seconds. It’s a rule I clearly love, as I’ve dedicated a good part of my adult life to making it happen for myself. I’ve learned a lot from reading through Luc’s tips surrounding the 2-second rule, and I can’t imagine there’s anybody who wouldn’t walk away with at least 5 new ideas.

Cognitive Productivity with MacOS is currently listed on the iBookstore and there’s a Kindle Version available, but if you purchase directly through Leanpub using coupon brettterpstra2018, you can get a 20% discount on PDF, EPUB, MOBI, and Kindle versions all at once (plus free updates if the book is changed or added to). I highly recommend taking the time!

PodTagger 1.1

[Tweet : nvALT]

I know a few people are using PodTagger, so I thought I should publish the latest updates. It’s mostly fixes, but it also now adds a “metadata” section at the top of the shownotes.md file that it writes out that looks like:

<!-- Metadata
Duration Seconds: 5243
Duration: 01:27:23
Filesize: 63004650

When I post a Systematic to SquareSpace, this is info I need when setting up the external mp3 link, so I figured I’d just have podtagger figure it out for me. A few more steps saved.

Download below, or check out the PodTagger project page for full details!

PodTagger v1.1.0

Automated ID3 tagging for podcasts

Updated Sun May 06 2016.

DonateMore info…

PodTagger.app v1.1.0

An application version of PodTagger

Updated Thu Jun 21 2018.

DonateMore info…

The XML Data Liberation Front

[Tweet : nvALT]

Despite the grandiose title, this post is pretty specific: converting RegExRX files to Markdown so I can include them in my nvALT snippets collection. Despite that, I’m sharing it because you can use it as a base to modify and start “rescuing” your own data out of other applications. I understand why applications of any complexity store their data in structured files, whether XML, JSON, or a database format, but I like to keep my data portable. Since the Data Liberation Army isn’t huge in number, the onus falls on us to find our own ways.

This script specifically works with XML and outputs to Markdown, but you could easily make the idea work with JSON files, binary XML (with a little help from plutil), or SQLite database queries, and output to any format you wanted with a little templating.

Ok, diatribe over. Back to the script.

Out of all the editors/testers for regular expressions out there, I’ve always come back to RegExRx. It’s not pretty (the Mac App Store icon couldn’t even get shadow transparency right), but it has all the features I could ask for. As I work, I save my successful regular expressions to RegExRX files. These are plain text XML files with the patterns stored as hex. This makes them pretty human-unreadable, and you know me…

I wrote a script to convert a folder full of these .regexrx files to Markdown files I could drop into nvALT or Quiver. I won’t go into a ton of detail on this because I’m pretty sure there aren’t more than 5 people in the world who will ever need this script, but…

In this script, you can specify a few options when you run it:

$ regexrx2md.rb -h
Usage: /Users/ttscoff/scripts/regexrx2md.rb [OPTIONS]
-o, --output-dir=DIRECTORY       Output folder, defaults to "markdown output"
-p, --prefix=PREFIX              Prefix added before output filenames
-t, --template=TEMPLATE          Use alternate ERB template
-h, --help                       Display this screen

Specify an output folder, a note title prefix, and your own template for the output (there’s a default one if you don’t make your own). A template is an ERB file that uses the variables @title, @flags, @search, @replace, and @source. The @source one is the contents of the “source text” in RegExRX, a string or text block to test the expression against. There are also helpers like “@source.indent” which will take every line and indent it 4 spaces (to make a Markdown code block). Also, .to_js simply replaces forward slashes with \/ so you can use /[search]/ in your template. Note that it doesn’t account for already-escaped slashes because I don’t use them in RegExRX (its copy-as feature does it automatically), but that’s something I’ll probably fix sooner than later.

Here’s an example template that imports nicely into Quiver:

The result in Quiver:

Side note: annoyingly, a lot of other snippet apps (like SnippetsLab) can’t just import Markdown files as notes. I had to import the results of this script in Codebox (which I think is now defunct) and then import that library in SnippetsLab.

And here’s the Ruby script. You need to have Nokogiri installed, which is (usually) just a matter of running gem install nokogiri (though depending on your setup you may need sudo gem install nokogiri and there’s a 50% chance you run into issues with libXML that you’ll have to search the web about).

Even if you don’t use RegExRX, I hope this inspires some data liberation for some folks.