Thanks to TextExpander for sponsoring BrettTerpstra.com this week!
TextExpander helps you communicate smarter. What do we mean by that? Let’s say you get home from a conference. You’ve got a collection of new contacts, and you want to follow up. You can create a single TextExpander snippet with your follow-up message, perfectly worded with no typos. Use fill-in fields for the contact name and a custom subject, and presto, you’re breezing through that stack of business cards in minutes, instead of hours.
You can also share your snippet with colleagues, and everyone gets things done faster, and more consistently. Consistent, company-wide messaging is simple with shared snippet groups.
That’s the power and the magic of snippets, and it’s just one example of what you can do with TextExpander. Also check out the new Past and Future Dates snippet group. It’s a great demonstration of a small subset of TextExpander’s capabilities.
I almost missed a chance to point to the Curio Core sale, but it’s been extended for a week so there’s still time to get it at 33% off.
If you’re not familiar with Curio, it’s basically what I consider the ultimate in brainstorming apps. It’s also great for project management and information gathering. You can integrate mind maps, outlines, text, images, file attachments and more, all in a free-form space that can adapt to fit your needs. I’ve written about it many times over the years.
I suppose for starters I should reiterate my love of the two topics of conversation here: MailMate and SaneBox.
MailMate is my email app of choice on macOS, and not only because it supports Markdown. It’s customizable to an extreme, and for a nerd like me it allows me to use exactly the email management and organization system I choose (i.e. “spend too much time refining and modifying”). I use it with Readdle’s Spark on iOS and have it correspond tags to Gmail labels, use Gmail style single-key shortcuts, and all kinds of other fun stuff. MailMate was one of my 2016 picks for best productivity apps.
SaneBox is a service that intelligently sorts my email into categories. My inbox only contains emails that are actually of importance, other messages get sorted into “Later”, “Bulk”, “News”, “Reading”, etc.. Also, “BlackHole” for senders I never want to see again but don’t want to click a sketchy “unsubscribe” link. It’s easily trainable and completely indispensable. One of its features is “SaneAttachments,” which automatically finds emails with large attachments, moves them to Dropbox, and replaces the email with one containing only the Dropbox links. The originals are saved for a period of time, then cleared out of your mailbox. I love this feature.
My only issue with it is that the links go to the Dropbox website. Obviously, that’s the best solution for cross-platform compatibility. But when I’m on my Mac, getting to the files requires opening the link in a browser and then using Dropbox’s slightly inconsistent interface to reveal the files locally. So I wrote a MailMate bundle command to reveal the files directly in Finder with a keystroke.
I started a MailMateMate bundle on GitHub. Right now it only has two commands, and one of them is completely useless since MailMate comes with a “Copy Message URL” command built in. But the new command, “Reveal SaneAttachments,” is delightful, if I may say so. Hit ⌘Y, choose the command, and it will scan the email body for all of the file links, then open a Finder window with all of the files from that message selected.
To install this custom bundle, download the latest release from GitHub, unzip it, and place the entire “.mmbundle” folder into ~/Library/Application Support/MailMate/Bundles/. Once it’s there, you can select a message with SaneAttachments and hit ⌘Y (Command-Y) to run it.
If you’re into git and want to easily keep the bundle updated, you can clone the repo in Terminal:
cd ~/Library/Application Support/MailMate/Bundles/
git clone https://github.com/ttscoff/MailMateMate.mmBundle.git
Then when you want to update, use:
cd ~/Library/Application Support/MailMate/Bundles/MailMateMate.mmBundle
I don’t know how many more I’ll add, but there might be more fun stuff coming. If you’re a bit of a nerd (er, Power User) and haven’t taken a look at MailMate, you should. And everyone should take a look at SaneBox. No nerdery needed there, it’s effortless and automatic. Worth it.
I’ve been editing podcasts in Logic for a few years, but have only recently learned a few tips that made me realize I’ve essentially been doing it wrong the whole time. I’m sure Logic veterans will smack their heads reading these, but for anyone new to producing podcasts with Logic, they might be great time (and frustration) savers.
There are a lot of things in the control bar (top of the window, where the time/tempo are) that you’ll never need when editing podcasts. Things like BPM, for example. You can clean it up significantly by using the dropdown on the right of the “LCD” display and choosing Customize Control Bar and Display….
Note that you can have different “screensets” for different types of recording/editing. Use 1—4 to switch between them. Pick a placeholder (or create a new one) to set up for podcast editing, then once you’re done customizing, choose Save as Defaults. Then you won’t lose your “normal” control bar in the process.
I’ve trimmed mine down to just what you see below. I use keyboard shortcuts for almost every button on the control bar, so there’s really no point in having them.
Note the Varispeed option under the LCD section…
Varispeed is a feature I didn’t realize existed until recently, but had always wished for. It lets you speed up the audio playback so you can basically listen through your podcast at 2x while editing.
Once the toolbar item is enabled, just use ⌃F (Control-F) to toggle it on and off. (I think that’s the default, but I might have edited that one. We’ll get to that below.)
Once it’s up, ensure that the type is set to Speed Only (click the top line for a menu), then double click on the percentage to edit it anywhere between -50% and 100% (100% being double normal playback speed). While playing back you can just hit the shortcut to speed up and then toggle it back off to return to normal speed. Scrubbing!
I only use this one when there are issues with background noise. It’s most helpful when you’re trying to put together more than two participants, but even when there’s just a microphone picking up too much ambient noise, it removes all the parts where the person isn’t talking.
It doesn’t silence those parts, it actually cuts the sections out so you’re left with a few hundred small clips that are then easy to adjust left and right to fix talkover, etc. Jason Snell did a good writeup on this.
To use it, right click on an audio region and choose Split->Remove Silence from Audio Region. Or you can just select the clip and hit ⌃X.
Then you can adjust the settings for threshold and minimum length to get the results you need. Generally a threshold of 1.0 and a minimum length of 0.1 work for me.
If you want to edit quickly, you really have to learn as many keyboard shortcuts as possible. You can see everything that’s assigned (and edit them) with Logic Pro X->Key Commands->Edit (or ⌥K).
The first thing to learn is the zoom controls. Zooming out to jump around an hour or two of audio is a necessity, and zooming in to find edit points is something I do a lot. So learning the basic ⌘←/→ to zoom horizontally, and ⌘↑/↓ to zoom vertically is a must.
Logic can also store zoom presets. I changed these keybindings from their default to simple ⌥1, ⌥2, ⌥3 shortcuts. I left the shortcuts for saving the presets at the full ⌃⌥⇧⌘1 (etc.) because then I can just use my Hyper key to trigger them. Once that’s set up, you can zoom out and save that as preset 1, then zoom into a point where waveforms are clearly visible and save it as preset 2, then zoom all the way in to where you can actually pick out syllables and make that preset 3. Then just ⌥2 to do an edit and ⌥1 to jump back to a wider view.
Another handy assignment is the Delete and Move command. This is basically a ripple delete, and used in combination with the ⌘-Drag super select, it makes it dead simple to cut out an entire section and pull the ends together in one action. I assign ⌥⌘X to this. By default that combo inserts a new MIDI track, which is kind of useless here.
Templates and Presets
This will likely be obvious (and admittedly a practice of mine from the beginning), but creating a template for your podcast saves a ton of time on setup. This is especially true if you create or edit multiple podcasts.
The easiest way to create a podcast template is to take one you’ve already edited. Delete all of the audio except for things like intro/outro music that are used in every episode. Be sure to clean the audio files out of the project library as well, or they’ll persist in every new episode and give you huge project files. Leave the plugin settings for voice tracks and any automation data for the intro/outro tracks in place, and Save as Template.
My templates only ever have two tracks, and I have them ordered in the way that Ecamm Call Recorder exports the two sides of a call. Then when I drag the files into the first track, I can select “Use Existing Tracks” and the right voices end up on tracks that already have the usual plugins and settings enabled.
Any time I make significant alterations to EQ/Compressor settings, I save the preset with a name to describe what type of issue I was using it to deal with. Then I have a starting point if that need arises again.
I hope if you read this far that at least one of these tips was new to you. Happy editing, and keep an eye out for Aaron Dowd’s upcoming Logic course, it’ll be worth it!
I wholeheartedly endorse the guidelines that Kent C. Dodds and Sarah Drasner lay out in this post. From “Saying thank you for the project before making an inquiry about a new feature or filing a bug is usually appreciated” to “Don’t close a PR from an active contributor and reimplement the same thing yourself,” this is a concise compendium of rules everyone involved in open source should take to heart. (And yes, I’ve been guilty of some of these in the past and have seen the fallout, so my agreement with them has been earned through experience.)
I don’t usually include politics in the roundups, but this opinion piece covers a topic in our current “situation” that I’ve found morbidly fascinating. The rate and maliciousness with which Trump lies is historic. Not just for a president, but for a human. The internet makes it possible, but it also makes speedy fact-checking easier. So, break even? Not really.
I’ve gone from “hoo boy, will SuperDuper still work the same with APFS” to “oh man, this is way better.” Time machine-like backups with history image restore, plus your clone drive can boot to multiple historical snapshots… awesome.
Thanks to Stockio for sponsoring BrettTerpstra.com this week!
Design assets are the lifeblood of any creative process. Images inspire, typefaces communicate, icons clarify. Whatever the scope of your project, assets are the building blocks of your design.
Any fresh source of stock assets is a boon to the design community, and the latest treasure trove of resources is stockio.com with photos, videos, vectors, icons, and even fonts, designed to inspire and stock the toolboxes of the web design industry.
Stockio resources are absolutely free to download, and can be used for both personal and commercial projects. Sourced from some of the most popular asset producers, Stockio’s assets have been handpicked to be useful to designers.
Stockio has the great search options you need to take advantage of a resource this vast. When browsing images, similar photos are displayed on the download page; some of the best discoveries come by simply clicking on the next thumbnail and seeing where it takes you.
You can even search by color and quickly locate photos or vectors containing the color you need. It’s perfect when you’re working with a brand-specific palette and need assets to match.
Stockio includes enough assets to pack your toolbox until next year. There are over 4,500 icons and the collection is growing. When it comes to free fonts, you’re spoiled for choice. There are over 11,000 free fonts on Stockio, more than you can use in a lifetime of design. And they aren’t the usual low quality fonts you often find for free, whether you’re looking for a typeface for a logo, or something readable for body text, there are some real gems here.
I’ve had a few really good coding days in a row here, which has meant not as much blogging this week. I figure Friday is a great time to offer a quick overview of how I manage coding projects with TaskPaper and a few command line scripts, since I’ve been doing a lot of that this week.
This system is for people working on projects that involve time in Terminal. That’s going to be mostly programmers and web developers, I think. Everyone else should probably just wait for my next fun post on mind mapping or something…
I keep a TaskPaper file for each project in the root of the project folder. This gets included in a git repo, syncing to everywhere I work on the project, and allows me to go nuts with todos for a particular project without terribly cluttering up OmniFocus. I’ve been doing this for a long time and it’s always worked really well.
When I start a new project, I just run td (info below) to create a base skeleton. I can edit this directly in TaskPaper or in any text editor (or TaskMator on my iPhone).
While I’m working, I add new todo items to my Inbox using na. Often todo items are bugs reported via my ticketing system, so they’ll be a quick description with priority level and a link to the ticket. Sometimes I notice a bug while working on another one, and I’ll add it as a todo so I don’t get off-track. Same with new ideas for the roadmap (or feature requests from users).
When I cd into a project folder, na shows me my top todo items via a prompt_command hook. I can also type na at any time to see what’s up next. na works with sub-projects, listing them recursively, and even with seeing what’s next in a project in any other folder where I’ve used na before. Global todo lists.
Tags in TaskPaper are created with an @tag syntax, and you can add a value to a tag using parentheses, e.g. @priority(5), which is how I quickly sort my roadmaps and bug reports. My priority system uses 1-5, with 5 being the highest. It translates to:
1 and 2: Very low priority, but still intend to do when possible. 2s are things that I think I should tackle before 1, but still considered unimportant.
3: Important but not urgent. They definitely need to be tackled. Eventually.
4: Top priority, but not roadblocks for the current release.
5: Urgent, and must be completed in order to release this version.
I regularly review the items in each priority, modifying them based on changing circumstances. Because I only work for myself (and my customers), I rarely have to deal with other people defining my priorities. Something that originally seemed like a 4 can quickly become a 2 as things change in the roadmap.
After a release, all of the tasks with @priority(5) should have been cleared and archived. Then it’s time to review the 4s and see what should be bumped up to top priority for the next release. A lot of level 4 priority tasks are urgent, but weren’t roadblocks to the current release. If I’m trying to get a release out, I’ll also review the 5s to see what can be demoted to a 4 for now, revisiting them after shipping.
I rarely overload these project files with tags. My Next Action tag is @na, and na uses it to list what to work on from the command line (obviously, that’s why it’s called na). Because na adds the @na tag to every new task unless I tell it not to, this tag is reviewed regularly from a TaskPaper search. I just click the @na tag and sort through what’s actually a “next action,” adding priorities where needed.
The other tag I always use is @maybe. This one is for tasks that have no priority, usually ideas I have while working on something else, or requested features that would be kind of cool but need further consideration.
Here’s an overview of the tools I’ve mentioned thus far.
My td function simply looks for a TaskPaper file in the current directory and opens it in TaskPaper. If one doesn’t exist, it creates one with my default skeleton. It names it based on an argument, or just uses the current directory name. na actually has this functionality built in if you use it to add a task when there’s no TaskPaper file, but td is a simple way to both create a file and/or open the current project in TaskPaper. Here’s the script:
Now, from a directory called myNewProject, I can just type td and it will create myNewProject.taskpaper, filling it in with:
I get an Inbox and an Archive, some basic categories common to all my projects, and some default search definitions for TaskPaper 3.
Note: if you already use na, be sure to update your script from the GitHub repo. I just pushed a new version this morning with all of the local changes I’ve made as I’ve been working over the last couple of years.
I actually use na more often than TaskPaper itself while I’m working on a project. I won’t go into full detail as this is all documented, but I’ll give you an overview.
I can add new tasks with na -a. If you include a task description, it will just add that task directly to the inbox: na -a "write about my TaskPaper project management system". That will add the task along with the @na tag to my Inbox. If you don’t include the task description, it will prompt you for it with readline.
I can also set a priority immediately when adding a task with the -p flag, e.g. na -a -p 5 "another thing to do". If I want to include additional tags, I can put them right in the task description, na -a "one more thing @maybe". If the task needs a note or a link, I just use the -n switch, which will prompt me for an additional note before adding the task, attaching it to the task in TaskPaper format (no leading ‘-‘).
Using na for listing tasks is just as easy. Running na with no arguments will list all @na tasks in the current project. It allows you to have other task files in subfolders as well, and you can list everything within the current project at once with na -r. For example, I have a separate task file for the help documentation in Marked, in the Docs subfolder. (I don’t really remember how this happened, but it’s never been an issue to separate the two.) I can see all of my next actions between Marked and its documentation combined.
You can list tasks based on tags other than @na. na -t maybe finds all @maybe tasks. You can even search for specific values by tagging on a -v VALUE, so listing all @priority(5) tasks, even without the @na tag, looks like na -t priority -v 5. There’s a shortcut for @priority, though: na -p 5.
(In case you’re wondering, g is my alias for Bashmarks.)
TaskPaper makes managing, reviewing and organizing these project files much simpler than a command line tool. The search definitions I include make it easy to quickly see priorities and edit them. I can move tasks from the inbox to a section with ⌘\ (the Move to Project shortcut). I can add tags manually or using various scripts that I have as shortcuts.
I can also just click on a tag in a task and see everything with that tag. That makes it easy to remove that tag from other tasks as needed. As an obvious example, I can click @na and then remove the next action tag from any that aren’t actually next actions.
TaskPaper makes it easy to navigate and drill into the sections of the project file. It makes it easy to add new tasks and sections. It makes it easy to flip tasks from one section to another. And the search/filter features make it easy to reference the task file in ways that na can’t.
Ok, now that I’ve shared all that, I have a list of bugs to squash (I see them every time I cd bitwriter or cd marked). I hope this was at least interesting to other coders… share your own thoughts in the comments!
Thanks to tigerVPN for sponsoring BrettTerpstra.com this week!
You might be surprised to find out the flight tickets you just bought were much cheaper in a different country. The marketing industry calls this Geo-IP pricing discrimination and it happens more often than you think.
When you enter a website, your device communicates with a server revealing your IP address. At first, that IP looks just like a random number, but it includes country, city, and heck, even district information.
Companies like Google (especially Analytics) then map your Geo-IP, allowing marketers to estimate your spending value and shopping habits while you browse the Internet. That leads to price surges on things you buy: the higher your country ranks on the GDP list, the higher the prices.
So what can you do about it? Get tigerVPN’s privacy & geo-location app for Windows, Mac, iOS and Android and pick any of the 63 locations in over 43 countries on all continents.
You can score much better prices when purchasing “abroad,” and on top of the immediate benefits of changing geo-locations and hopping restriction fences while traveling, your entire communication is encrypted and secure — so take that, NSA!
tigerVPN launched in 2011 and has helped hundreds of thousands customers protect their privacy over the years. They’re currently running a no-brainer promo: 77% off! For just $2.75/month you enjoy geo unblocking and privacy protection at the cost of a cup of coffee - so get tigerVPN now!
If I were better at marketing, I would have made sure I got Marked 2 into some roundups and spread this deal far and wide, but I’m busy and stressed out, and I’m bad at marketing when I’m busy and stressed out. So you get to read about it here.
For today and tomorrow only, you can get 40% off the direct version of Marked 2. That’s the non-sandboxed version that allows more full-fledged running of your own custom scripts and processors, but is otherwise the same as the Mac App Store version. Use the coupon MARKEDMONDAY at checkout and get Marked for $8.39, 40% off the usual price of $13.99. Follow this link to apply the coupon automatically.
Already have Marked 2? Share this coupon with anyone you think needs it! Marked can make collaborating easy with consistent previews and full CriticMarkdown support.
Also, the next update got a little delayed with a couple of bugs I really wanted to fix, but I’m going to push it out this week anyway and do some more incremental updates. In addition to the previously-teased new features, the latest version does update Scrivener support for version 3 (new document format) while maintaining compatibility with version 2. Buy Marked 2 at a discount today and get the update for free in a couple of days!
I don’t promote a lot of bundles — at least relative to the number I get notified about — and I leave gathering the best Black Friday/Cyber Monday deals to the bigger sites. But Creatable happens to be really great at asking those of us who link them what we’d like to see offered, so I’m excited about this deal.
The Black Friday Bundle only has three apps in it. And they’re all apps I can highly recommend.
Hpye 3 is a keyframe-based editor for HTML5/CSS animations. It has all the features you’d need, and makes animation tasks that normally require a lot of code into simple keyframe and drag transitions. You can also get Hype Reflect for previewing live on iOS.
iStat Menus 6 is pretty much the de facto standard in system monitoring tools. A customizable collection of charts and indicators that sit in your menu bar, reporting on stats such as CPU, GPU, network, and disk usage, and it can even do weather, calendar and time management tasks.
Screens 4. I love Screens 4. As a VNC (Remote Desktop) client for connecting to remote machines, Screens has been the my favorite 3rd-party tool for a long time, on both Mac and iOS. Version 4 added a few features that were notably missing versus Apple’s default screen sharing app, including drag-and-drop file transfer support. It also got a speed boost, resulting in reduced screen lag and ultra-sharp image.
The usual cost for all three of these is about $100. This bundle is priced at $29.99. It’s a good deal no matter how you look at it. If you need at least 2 of these apps, this would be a good time to buy.