Welcome to the lab.

Reiki, a fix for my convoluted Rakefiles

[Tweet : ADN : nvALT]

I just published project called Reiki, a shell function that I’ve been using to make it easier to run the various (and often overly complex) Rake tasks that I use in a lot of my projects. The headline should probably have been “a stopgap for my convoluted Rakefiles.” To summarize, it turns:

rake generate[true,"commit message"] deploy


r gen true, commit message: d

Some of my tasks and their arguments get tedious to type with square brackets and quoting requirements, and aliasing tasks got out of hand with inconsistencies and bloated “available tasks” lists. I also suffer from inconsistency when naming tasks, usually with conjugation of their labels and order of arguments. A little fuzzy matching goes a long way.

Even among Ruby/Rake users, this is probably a non-issue, and this project won’t be overly helpful to most of you. If you abuse Rake the way I do, though, give it a try.

Web Excursions for January 20, 2015

[Tweet : ADN : nvALT]

“a living catalog of cocktails, spirits and beers made for people who drink by people who drink. Take a gander, and discover your next tipple.”
Wild Cherry
“A fairy-tale inspired theme for Zsh, iTerm, & Sublime.” I could live without the excessive emoji, but it’s a really slick theme and I thought of you when I saw it. I hope it brings you joy.
11 tips for prototyping with Sketch
From the Invision blog, some excellent tips for working efficiently in Sketch 3.

And some GitHub gems from Product Hunt

Another cool tool for creating a CMS from a GitHub repositories of Markdown files. Marked 2 even makes an appearance in the demo video!
Bitbooks turns a repo of markdown files into a “book” and hosts it for you.
Ever since GitHub changed the way they serve raw files, they’ve been unusable in web applications when served directly from GitHub. Here’s a fix that serves them with proper content-type headers!

Coming soon: never lose your Apple remote again

[Tweet : ADN : nvALT]

It’s coming…

If you own one of the silver Apple remotes (the kind that come with the Apple TV), you know that they were carefully designed for slipping between couch cushions, hiding under pieces of paper, or sliding under small crevices. I came up with a solution, and I’m going to sell it to you. It won’t be cheap, these are handmade, built to last, and gorgeous. Also guaranteed to work (I haven’t lost my remote once since the first prototype last year).

My father (a mechanical engineer who also happens to be a talented carpenter with amazing attention to detail), and I have gone through months of prototyping and even longer working out larger-scale production. It is now, in my opinion, perfect. More details and an unveiling coming soon.

Systematic 125 with Merlin Mann

[Tweet : ADN : nvALT]

Systematic logo

In case you missed it, Systematic was host once again to Merlin Mann this week for episode 125. I always love talking to Merlin.

I was a big fan of 43 Folders, Merlin’s first really popular project, back in the day. Merlin had already reached “nerd legend” status when I first had contact with him. It was in the form of a message he sent me (on GitHub, if memory serves) regarding the Blogsmith Bundle. It said, simply, “Jesus Christ.” It was very flattering.

Merlin and I continued to cross paths on the internet, and he started mentioning the crazy stuff I was working on in public forums. Then one year I was at Macworld with TUAW and Merlin was giving a talk for the Omni Group right across from our booth. At the time I didn’t know what he looked like (turns out he’s quite handsome), and it had to be pointed out to me by a friend. Doc Rock, I think. I waited until the presentation was done and snuck over before the Q&A session. He was shuffling some index cards. I tapped him on the shoulder and said “I don’t mean to be a dick, but I wanted to introduce myself. Brett Terpstra.” He dropped his index cards and hugged me.

Merlin and Brett at Macworld

Photo credit to Doc Rock. I think that’s Marina Epelman in the background, too, whom I didn’t know at the time but she’s also become a friend in recent years.

“A dick? Are you kidding?” He went on to introduce me as “the smartest man on the internet” to the crowd of nerds gathered for the presentation. We met up a few times at that Macworld, but didn’t manage to go out for the drinks we kept talking about that year. We did argue briefly about pit bulls, but he went immediately to “I can tell you’re really passionate about this…”

I feel successful in what I do these days, and I believe I owe a lot of that success to the popularity he lent me back then.

You know when someone you look up to becomes a friend? When a leader becomes a peer? I’ve had that happen a few times in my life, and this was a special one for me. Getting to know Merlin has been an honor, and he’s as charismatic, smart and funny in person as I had imagined.

Merlin’s been on Systematic a few times now, and we have managed to sync up schedules and hang out in person a couple of times when I’m in the bay area. I absolutely love talking to him. As I expected it would be, Systematic 125 was a blast, and I hope you all enjoy it as much as I do.

Inverter for Übersicht, bi-polarize your widgets

[Tweet : ADN : nvALT]

I made an Übersicht widget to fix an Übersicht frustration. Actually, it’s a frustration with every desktop info app I’ve ever used: if you get it looking perfect on a dark desktop image, you can never use a light desktop image, and vice versa. I use multiple spaces and tend to distinguish them with wallpaper. I needed a way to make Übersicht work across them.

I spent too long making the video considering how simple the task was, and now I’d feel guilty if I spent much more time writing about it. As noted in the video, I do not actually know how to correctly say “Übersicht” out loud. Forgive me. A lot of people sent me audio recordings of how to properly pronounce “Übersicht.” They differed enough that my untrained ear still couldn’t confidently pronounce the word, but I figured out a way…

YouTube Video

The widget is in the “ubersicht widgets” project page and up on GitHub if you’re interested.

Ubiquitous bookmarking with Fetching.io (+30% coupon)

[Tweet : ADN : nvALT]

I’ve been talking with the folks behind Fetching about future plans for the app. I’m excited about what they’re planning to offer (and what they already do), and wanted to pass on a coupon for 30% off of the service (or the locally-hosted native version).

Fetching uses browser plugins to save the full text of every page you visit in a database. You can then search for pages you didn’t bother to bookmark at the time using any phrase that the page contained. It also supports tagging and its own bookmarking system for marking pages you retrieve.

You can try it out free for 30 days, using either the hosted or the “native” version, and use the coupon brettterpstra-31415 for 30% off when signing up. The coupon is good until February 28, 2015, but has a limited number of uses, so grab it and run!

Macminicolo turns 10

[Tweet : ADN : nvALT]

My favorite Mac mini colocation service, macminicolo, turned 10 today. There’s a great timeline post on their blog that chronicles the history of the Mac mini and of macminicolo itself. They didn’t ask me to post this, but they’ve been long-time supporters (and sponsors) of this blog and I’m excited to wish them continued success.

I first got turned onto the mini by Erica Sadun, shortly after I started writing for TUAW. Starting at $499, it’s been a great, low-cost solution for Mac owners since it’s inception. The latest update to the platform may have dampened enthusiasm a bit by limiting upgrade options, but it remains a powerful machine for the price. I currently have two in service locally and one colocated. I’ve owned six minis over the years, if memory serves. I love them.

Colocating a mini (running it “headless” remotely) is great for a lot of “common” things. For example, this site and the Marked 2 website are hosted on one, and I run SSH tunnels/VPN, SFTP backups, file servers, and more. It’s also great for always-on chores such as Slogger and other scripts. If you keep Day One running on a remote mini along with Slogger, your Dropbox/iCloud journal is always synced and ready after your “social” entries are collected and injected.

Pro tip: if you’re running a headless mini (on macminicolo or elsewhere), check out this blog post on HDMI dongles. Tricking the mini into thinking you’re running a full size monitor on it improves various things, but most noticeably VNC (Remote Desktop) access. You will be grateful for the upgrade.

Macminicolo will host your mini (on a high-bandwidth, superfast pipeline) starting at $35 a month, which is a great deal if you have use for the myriad options it provides. They can also sell you a fully loaded mini and additional storage space at very competitive rates.

Check out the timeline post and see macminicolo.net for more info.

Web Excursions for January 11, 2015

[Tweet : ADN : nvALT]

iOS app of cocktail recipes using what you have on hand.
Regulex: Regular Expression Visualizer
Cool tool for converting regular expressions into diagrammatic views.
Input: Fonts for Code
I’m always up for playing with new monospace coding fonts…
Aqua Notes - Waterproof Notepad
These came up in Systematic 125 (coming soon), and I’m enamored with them. Write notes in the shower with a #2 pencil. h/t Merlin Mann
The Marked Bonus pack is now living on GitHub in the care of kotfu. We’re hoping it will stay more up-to-date as changes are required.

Vitag 1.0.2

[Tweet : ADN : nvALT]

Vitag has proven useful enough to me that I’ve added a bit of polish and some new features. I do think this is going to end up being a RubyGem eventually for ease of install, but at this point still only requires a single script file to run.

The main new feature is that you can add a config file at ~/.vitagrc. It currently supports just one section called ‘alias’, but it’s handy if you use a consistent tagging system the way I do.

The config file just includes a section header and then k=v pairs:

// comment...
#ar = #Archive

Formatting is loose; indentation is ignored, whitespace around separators (= and ,) is ignored, lines starting with // (after any indentation) are ignored. Anything before the = is an shorcut term, anything after becomes the tag(s) applied when the shortcut is found after saving a vitag file.

The above config file would allow me to change the tags on a file to [#ar,:systematic] and “#ar” would expand to “#Archive” before the tags were applied. An alias can also be expanded to two or more tags by separating with commas after the =, e.g. #as = #Archive,:systematic,podcast would expand “#as” in my tag file to all three tags when applying after save.

See the Vitag project page for updates and more info.

I also started working on a class in a separate file that will scan full hierarchies for all tags in use, then rank them by the number of files they’re each used on. It’s headed toward a tag-suggestion and cleaning set of tools, but isn’t implemented anywhere yet. Feel free to play with it if you like.