Welcome to the lab.

HardWrap extension for PopClip

I made a quick PopClip extension today for adding hard line wrapping to blocks of text. In general I’m a fan of letting text wrap automatically, but when I’m coding I prefer hard line breaks at 70-80 columns. Easy to do in almost any decent text editor, but elsewhere (ahem, Xcode) I wanted a fast way to do it.

You can install the extension from the latest version of Brett’s PopClip Extensions (download directly below), and the source is available on GitHub.

Credit for the heart of the wrapping code goes to Allan Odgaard of TextMate fame because why reinvent the wheel?

When you install the extension you can define the column at which the text will wrap. You can also define an alternate column, which can then be accessed by holding down Option when clicking the extension (which shows up as \n in your PopClip bar). Holding down Command will unwrap selected text, removing newlines at line endings but preserving multiple consecutive newlines and trailing space.

Just a quick side project, but I thought others might find it useful. Of course, I’d bet money something like this already exists, but it was a nice break from other tasks anyway.

Brett’s PopClip Extensions v1.27

A few PopClip extensions for Markdown writing and other useful tools

Published 11/30/14.

Updated 02/11/21. Changelog

DonateMore info…

LinkChecker: a bookmarklet for web writers

I did a little more weekend work on Bunch, and I’ll probably post an update on some exciting new stuff soon. I’d love it if you helped test by downloading the beta version and checking the changelog to see what’s up. Anyway, that’s not the point of this post.

As part of working on the new release, I’ve been doing a lot of documentation. And because the documentation has continued to grow, there’s been a lot of reorganizing. And as a result of that, I keep breaking links between pages. So I made a quick tool to make finding broken links easier.

Web Excursions for February 04, 2021

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

If you’re not keeping up with the latest in Bunch, there have a been more updates since my last post. I’d love to have as many beta testers as I can right now, so give it a shot!

Defining a Hyper Key in BetterTouchTool
BetterTouchTool can now create a Hyper Key without the need for Karabiner Elements. Since I define most of the shortcuts I use my Hyper Key for in BetterTouchTool, I’m excited about moving all of this functionality into one place.
Vitor Galvao wrote a great Ruby script for command line control of Do Not Disturb settings under Big Sur. It’s a lot more complicated than it was with previous OSs, so this is a pretty cool feat.
RCDefaultApps was a cool Mac utility for controlling what apps owned which filetypes and url handlers. It kind of faded away around macOS 10.12 (though some say it still works), but SwiftDefaultApps modernizes and revives it. Seems to be working well so far.
VSCode Notion
This is not for me. While I’m always impressed with VSCode, it hasn’t grabbed me yet, despite my Overtired co-host’s enthusiasm. And while I’m impressed with Notion, it’s not my thing either. But I know I have readers who like both of these things, so here you go.
2020 Mac Developers Survey: Key insights
The results of the MacPaw 2020 Mac Developer Survey are in, with some good insights into the state of the industry.
Apple in 2020: The Six Colors report card – Six Colors
Speaking of annual surveys, Jason Snell’s 2020 Apple report card is out, with input from a bunch of Apple bloggers and podcasters (and me).

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

Bunch gets scheduling (and lots more)

Are you ready? I kinda went down a rabbit hole with Bunch this last week. It’s a lot. Because this release is so big, I’m releasing it as a beta first. All of the documentation for the new version is at brettterpstra.com/bunch-beta/docs, and the download link can be found at brettterpstra.com/bunch-beta/download.

The documentation for everything here is fully updated (and expanded, as part of the aforementioned rabbit hole), and all of the pertinent pages are linked from the changelog. You can just skip there if you like.

First, the blame for this whole development cycle belongs partially to one Jake Bernstein. He had a couple ideas that I thought were pretty clever, and it was a slippery slope from there. Scheduled Bunches and Spotlight searches were mostly his fault. I’m far from blameless in this, but just I want him to share in the responsibility. Well, really I just wanted to give him credit.


The first big thing is that I’ve introduced frontmatter. It’s YAML-esque formatting that lets you define attributes and variables at the top of your Bunch file. This means additional settings without further complicating the syntax. Just nice, readable keys and values.

title: 👍🏻My Cool Bunch
startup: true

First benefit: you can use a title key to define a display name that’s different from the filename. Which, of course, means that you can use emojis in your menu titles. A vanity feature, but I really like it.

You can define whether a Bunch launches at startup with the startup key, as an alternative to using startup scripts.

You can also define arbitrary keys and values that can then be referenced as variables in your snippets.

I know what you’re asking yourself at this point. “Did he really stop with just having static data at the top of a file?” No, of course not. Frontmatter can also be dynamically loaded from external files or shell script output.

So that’s nice and all, you say, but is there any real benefit to having frontmatter?

Another round of Bunch Updates

Ok, one more batch of updates for Bunch. It’s just so much fun to work on that I spent last weekend on it. Don’t worry, nvUltra is getting an equal amount of love.

By the way, if you want to keep tabs on all of my latest work, apps, and special discounts, I formally invite you to subscribe to my new email list. It’ll be low-traffic and a great way for me to let you know about the important stuff.

Anyway, Bunch…

FIXED: Marked 2, Big Sur, and blurry PDFs

I wrote back in November that Marked had an incompatibility with Big Sur that was causing the PDFs it generated to come out as raster images, rather than as vector-based text that would be scalable and selectable. I’m happy to report that Apple has fixed this issue on their end and it’s now 100% safe to use Marked 2 on Big Sur.

I’ve spent the last couple of months working on the massive rewrite that was required to incorporate Apple’s new WebKit version into Marked 2’s existing architecture. I’ll admit, it wasn’t going great. I’m ecstatic that Apple has fixed their bug and I don’t have to work around it right now. That said, the rewrite will continue as I work to avoid such issues in the future.

I first noticed the bug was fixed on the Developer Beta 2 of Big Sur. I had a couple of people test on the current public release and it seems the fix is already available to everyone. As long as you’re on the current release of Big Sur, Marked 2 is good to go.

Thanks everyone for your patience on this. To celebrate I’m running a little 10%-off sale. Just use the coupon code ILOVEMARKDOWN (or click here to apply it automatically). It’s good until March 1st, feel free to share it with someone you care about!

If you’d like to stay up-to-date with Marked news, tips, and discounts, please join the mailing list!

And then there were interactive Bunches

Here’s the latest stuff in Bunch 1.3.1!

This is all the result of a combination of new (better) ADHD meds (I refer you to the last couple episodes of Overtired) and the fact that the latest developer seed of Big Sur fixed the blurry PDF issue that I’ve been dedicating an inordinate amount of time to working around, so I suddenly have a little extra time in my day. Thank you Apple. For fixing what you broke, I mean. But still, I’m grateful.

(I’ll do an official announcement post on the Marked bug when this fix makes it into the stable release and is available to everyone.)

So what’s new with Bunch?