Welcome to the lab.

The Morpho Converter Pro giveaway winners!

The Morpho Converter Pro giveaway has ended, and I have winners to announce!

The winners!

Congratulations to:

  • Carley Knight
  • Isaac Halvorson
  • Özgür Irmak
  • Giulio Galassi
  • Peter B.

You should have received an email with details, please let me know if you didn’t hear anything!

But I didn’t win!

If you didn’t win, sorry, but Morpho Converter Pro is still worth checking out. All your conversions in one place!

Next up is HoudahGeo. Check back every Monday through October, 2024 for more giveaways. The next giveaways include:

See the full list of upcoming giveaways!

If you want to suggest an app you’d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications!

Planter 3.0

Years ago (12!) I made a script called Planter that would generate directory and file structures based on an indented template. I decided to reimagine the whole thing and am happy to release Planter 3 today.

Instead of relying on a single template file, Planter now expects a template directory with all of the subdirectories and files you want to include already existing. To make this work, the template variable system has been completely reworked. It now supports named keys, prompts for values on the command line, and can even handle if/then logic and multiple choice variables.

Template variables can be applied to filenames (including if/then logic) and within any type of text-based file (including XML, RTF, JSON, etc., and Apple Binary PLIST will be converted automatically). This means you can template your source code, your notes, even your Mindnode mind maps, rich text notes, and Scrivener documents.

I’m not going to document the whole thing here, as I’ve written a pretty good README for the project. If this is of interest to you, let me know about anything that’s confusing in the documentation.

I will note that because of its interactive nature on the command line, it’s a bit more difficult to incorporate into something like a LaunchBar or Alfred workflow. But not impossible, as values can be passed as arguments, so if your automation handles the interaction for filling in the variables, you can easily call the script. It’s also now a Ruby gem, which means you can’t easily embed the whole script and would have to rely on it being installed on the user’s system.

If you regularly create projects that follow a similar directory/file structure, Planter will save you a ton of time. Check it out.

If you have ideas or need support, please use the Forum. I look forward to hearing from you!

Morpho Converter Pro giveaway!

I’m excited to offer the next giveaway, 5 lifetime Pro licenses ($19.99 value each) for Morpho Converter Pro. Morpho is an app for Mac, iOS, and Apple Watch that makes converting literally any number to any other unit possible. Miles to kilometers? Grams to ounces? USD to HKD? Anything you need to convert, Morpho is there for you, on your phone, in your menu bar, even on your watch.

From the developer:

Morpho is a fast and elegant, travel-focused unit and currency converter app for iPhone, iPad, Mac, and Apple Watch. In addition to providing instant conversions for your favorite units, it also includes helpful information for travel to 256 countries and regions.

Check out the Morpho Converter Pro site for more info.

Sign up below to enter. Winners will be randomly drawn on Friday, September 06, at 12pm Central. The drawing is for 5 lifetime Pro licenses ($19.99 value each) for Morpho Converter Pro, one per winner. Note that if you’re reading this via RSS, you’ll need to visit this post on brettterpstra.com to enter!

New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated!

Sorry, this giveaway has ended.

Stay tuned for more giveaways every week through October, 2024 (and maybe beyond).

If you have an app you’d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these!

Updated: generate slick changelogs from Git commits

7 years ago I wrote about a script I was using to generate changelogs for Marked. Since then I’ve continued updating the script to work with just about all of my projects, from Xcode projects to Ruby gems to scripts that just have a VERSION file in the same directory. It can output a few different formats of changelog to accommodate all of my different documentation formats. So I’m posting it again.

Since it’s unlikely anyone remembers, this script uses Git tags to determine what commits have been made since the last release. This works well with git-flow, but any setup that creates tagged releases will work. It parses commit messages for lines like - FIXED: description of fix, and it now works with a more “tag-like” syntax: @fix description of fix. It gathers all of these lines from the commit messages and outputs a Markdown-formatted changelog, ready for release notes or website posting.

It’s simple yet highly effective. Any time I make a change I want to include in the release notes, I just make sure to include a tagged line in the commit message. It works with commit subjects as well as commit notes. Then, when it’s time to release, I just run changelog and get my output for sharing. It can also update a CHANGELOG.md file by running changelog -u. It detects the format of the file and adds appropriately-formatted notes to the file, recognizing if there’s already an entry for the current version number and replacing it.

Some of the customizations are specific to the formatting I use for Bunch notes, which include syntax for custom Jekyll plugins for icons and availability. These won’t be of use to anyone else, but unless your directory structure happens to exactly match the one I use for Bunch, or you use the --format bunch flag, you’ll never see those. But if you want to edit the script to fit your specific needs, you can see how it’s done.

Eventually I’ll probably generalize this and make it work with templates and a config file with regexes for matching types and formats, but for now it’s just open to your hacking. This script has been a huge timesaver for me and has resulted in very complete release notes and changelogs I can be proud of. I hope it does the same for you.

Grab the script here.

The available tags are:

  • @change, @changed
  • @breaking, @deprecated
  • @rem, @removed
  • @fix, @fixed
  • @imp, @improved, @improvement
  • @add, @added, @new

All of these can be in the format - TAGNAME: description or @tagname description. The first letter of the description will be capitalized when the release notes are rendered.

You can also use changelog --select to pop up an fzf selection of all tags, allowing you to generate release notes added since any previous version. Use changelog --only TYPE to output only changes of a type (changed, new, improved, deprecated).

You can also use this script in combination with a tool like gh to output a changelog when creating a GitHub release. Just pass output of the changelog command to any command that accept input on STDIN.

Usage: changelog [options] [CHANGELOG_FILE] [APP_NAME]
      Gets git log entries since last tag containing CHANGED, NEW, IMPROVED, FIXED, REMOVED
    -c, --copy                       Copy results to clipboard
    -f, --format FORMAT              Output format (def_list|bunch|markdown)
    -o, --only TYPES                 Only output changes of type (changed, new, improved, fixed, deprecated)
        --file PATH                  File to read additional commit messages from (for commit-msg hooks)
    -s, --select                     Choose "since" tag
    -u, --update [FILE]              Update changelog file
    -v, --version=VER                Force version (skips version detection)
    -n, --no_version                 Skip version check (prevents header output)
    -h, --help                       Display this screen

Have fun, and may your changelogs be informative and complete. Again, here’s the script. That Gist will be updated as I make changes to the script over time, so check the Gist comments for additional notes as this post ages. If I get around to making a package out of this (with templates and config and such), there will be a new post about it, of course. Based on a quick search there are a ton of changelog generators already out there, so this will probably remain a script that fits my personal needs perfectly, and is easily hacked around with by others.

The Obsidian Sync giveaway winners!

The Obsidian Sync giveaway has ended, and I have winners to announce!

The winners!

Congratulations to:

  • Donovan Watts
  • Chip Morris
  • Stefan Kuhle
  • Florian Graessle
  • Greg Wallace

You should have received an email with details, please let me know if you didn’t hear anything!

But I didn’t win!

If you didn’t win, sorry, but Obsidian Sync is still worth checking out. Get all of your notes, everywhere, and sync with your team!

Next up is Morpho Converter Pro. Check back every Monday through October, 2024 for more giveaways. The next giveaways include:

See the full list of upcoming giveaways!

If you want to suggest an app you’d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications!

Obsidian Sync giveaway!

I’m excited to offer the next giveaway, 5 1-year subscriptions ($96 value each) for Obsidian Sync. Obisidan is an amazing tool that’s free to use, but if you want to sync and share your vaults, settings, and more, you’ll want to upgrade with Obsidian Sync. This giveaway is for a free year!

From the developer:

Obsidian Sync works in the background to keep your notes synchronized effortlessly and privately.

Check out the Obsidian Sync site for more info.

Sign up below to enter. Winners will be randomly drawn on Friday, August 30, at 12pm Central. The drawing is for 5 1-year subscriptions ($96 value each) for Obsidian Sync, one per winner. Note that if you’re reading this via RSS, you’ll need to visit this post on brettterpstra.com to enter!

New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated!

Sorry, this giveaway has ended.

Stay tuned for more giveaways every week through October, 2024 (and maybe beyond).

If you have an app you’d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these!

The iStat Menus giveaway winners!

The iStat Menus giveaway has ended, and I have winners to announce!

The winners!

Congratulations to:

  • Bhaskar Bhat
  • Leighton Price
  • Robert Shaw
  • Johan Romin
  • Yinan Chen

You should have received an email with details, please let me know if you didn’t hear anything!

But I didn’t win!

If you didn’t win, sorry, but iStat Menus is still worth checking out. Get all the info about your Mac in one place!

By the way, iStat Menus is also available on Setapp, along with hundreds of other amazing apps. You should probably get a subscription.

Next up is Obsidian Sync. Check back every Monday through October, 2024 for more giveaways. The next giveaways include:

See the full list of upcoming giveaways!

If you want to suggest an app you’d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications!

iStat Menus giveaway!

I’m excited to offer the next giveaway, 5 licenses ($11.99 value each) for iStat Menus. iStat Menus puts a bevy of system monitoring widgets right in your menu bar. Weather, CPU and GPU usage, Memory usage, date and time, network activity/bandwidth, battery and power, and disk usage. Any (or all) available at a glance, and detailed info on each is just a click away.

From the developer:

The ultimate system monitor. What’s new? Everything. iStat Menus 7 is a full reboot, sporting an all-new design with hundreds of big and small improvements. iStat Menus is unmatched in efficiency, and is the most CPU-friendly system monitoring app.

Check out the iStat Menus site for more info.

Sign up below to enter. Winners will be randomly drawn on Friday, August 23, at 12pm Central. The drawing is for 5 licenses ($11.99 value each) for iStat Menus, one per winner. Note that if you’re reading this via RSS, you’ll need to visit this post on brettterpstra.com to enter!

New rule: All signups must have a first and last name in order to be eligible. Entries with only a first name will be skipped by the giveaway robot. A lot of the vendors in this series require first and last names for generating license codes, and your cooperation is appreciated!

Sorry, this giveaway has ended.

Stay tuned for more giveaways every week through September, 2024 (and maybe beyond).

If you have an app you’d love to see featured in this series of giveaways, let me know. Also be sure to sign up for the mailing list or follow me on Mastodon so you can be (among) the first to know about these!

The SoundSource giveaway winners!

The SoundSource giveaway has ended, and I have winners to announce!

The winners!

Congratulations to:

  • Tim Stevens
  • Joe Wright
  • Stuart Liddell

You should have received an email with details, please let me know if you didn’t hear anything!

But I didn’t win!

If you didn’t win, sorry, but SoundSource is still worth checking out. If you have multiple sound sources/outputs, you need SoundSource. It makes controlling where apps send and recieve audio a powerful but simple affair. You can still save 15% on a purchase with the code TERPSTRA15.

Next up is iStat Menus. Check back every Monday through September, 2024 for more giveaways. The next giveaways include:

See the full list of upcoming giveaways!

If you want to suggest an app you’d like to see in this series, let me know on Twitter or Mastodon, and join the email list for notifications!

Relaunched T-shirts for The Lab and Rock Scissors

I had let the original TeeSpring stores I had set up languish, and TeeSpring changed a bunch of stuff that made all of my listings invalid. So I’ve relaunched the storefronts with the original designs, plus some new ones.

The Lab has some new logo designs, plus the “classic” ones. Not to be vain, but I’d love to see the lab out there once again. I’ve also updated the **BOLD** design with a new **STRONG** design, which makes for a great, though minimalist, coffee mug. Gruber took issue with the BOLD version from a technical standpoint, so the STRONG version should satisfy the requirements. The designs are available as various clothing items (men’s shirts, women’s shirts, some hoodies), and coffee mugs/stickers. Let me know if there’s something you want but don’t see.

The Rock Scissors store offers some of the old Rock and Roll-inspired designs, plus a new one I like: The hope you guess my name shirt as a tribute to the Stones. My favorite shirt, the tribute to Black Flag, The Ramones, and The Sex Pistols refuses to list, but I have a customer support query in and hope that one shows up soon.

I don’t make much profit off this stuff, it’s more of a labor of love, but it’s definitely a way of supporting my work. Please enjoy!