Ben Chinn

Slightly nerdy ramblings and linkage

Hammer and Anvil

I recently had to put together a static site in a hurry and remembered coming across a Mac app designed to make the process easier. The app in question Is Hammer. This is a great app, especially when used in conjunction with Anvil.

Hammer has some basic functions which make generating multi-page static sites much easier. First, it automatically compiles SASS and Coffeescript whenever those files are saved. It also lets you use includes and variables. There are a lot of other nice features such as a “nav helper” feature which automatically adds a “current” class to a link if that link is to the current page. Basically Hammer gives you most of the benefits of a server side templating engine without requiring any programming or server configuration.

Anvil is great for serving up sites from your local machine without having to configure virtual hosts. It relies on pow and integrates with xip.io so that you can browse your local site from other devices (just browse to site.dev.LOCAL.IP.ADDRESS.xip.io).

For quick static prototypes or full static sites these apps make everything much easier. Anvil is free and Hammer is well worth it’ price for the time it will save you. Both are available in the Mac App Store.

They're Too Kind

Regarding the new iPhone app, Vesper, I have to agree with Dr. Drang’s assessment that the app is being treated with kid gloves by the digerati because of its highly respected developers (John Gruber, Dave Wiskus, and Brent Simmons). Here’s an interesting quotation from Shawn Blanc’s take on Vesper:

Whether or not Vesper become my new go-to note-taking app or not is irrelevant. An app doesn’t have to become my most-used app before I can appreciate its design considerations and its delightful details.

Likewise Jason Snell, writing for Macworld, before praising the app’s beauty, simplicity and grace admits, “I certainly can’t guarantee that I’ll stick with Vesper for the long haul”.

Yeah, I guess whether you actually want to continue using an app often isn’t worth talking about when considering its merits.

Vesper seems to me like a honey trap. It’s beautiful, sexy and has a stellar pedigree. Every detail has been painstakingly massaged and optimized. It runs fast and the transitions are like butter. You’re going to love it…for a week or two before its limitations become unmanageable and you want to access your notes on your desktop machine, use your TextExpander snippets, etc.

It could very well be that there is a market for this app and that it deserves to be successful in serving that market. I just cannot believe that the audience for it includes the tech writers who have in every other way shown themselves to be the power users who would normally demand the features Vesper leaves out.

I understand the impulse behind all this gushing. I want to see beautiful apps created by talented people, to encourage that kind of innovation and creativity. I also find myself desiring the latest shiniest example of a [insert common app type here]. Tech blogs exist in part to fuel that desire, to boost the dynamism of the developer community, which is all to the good. In the end though, good judgment is also called for, even if it feels like a wet blanket.

App Momentum

There seem to be so many great mac apps available now that it can be tricky to figure out which one is best for any given purpose, especially in areas where several apps seem to be just as good. You can looks at features, reviews, price, etc. but there’s another metric I’ve been thinking about that can be just as important. Let’s call it “momentum”.

Momentum is about the popularity of an app but also about how engaged its developers and users are. If an application is getting regular updates then it might be worth buying on the assumption that however good it is now it’s also likely to get substantially better. This may be enough to recommend one app over another that is otherwise comparable. Of course this is about the quality as well as the quantity of development - many open source projects see regular updates but each iteration doesn’t represent the kind of improvement one often sees in a app made by a small team with a clear vision.

Another component of momentum is the size and involvement of the user base, especially with apps that scriptable or extensible in some way. Sublime Text 2 is a great text editor made much better by the huge number of plugins developed by users. There are also numerous guides, tips, tricks and tutorials you can find online that have been posted by the user community. This breadth of functionality and support just doesn’t exist for every text editor.

For years I’ve been using LaunchBar, a terrific app launcher and general productivity booster. I’ve sung the praises of the app to anybody that will listen and have happily used it and extended it through hooking in AppleScripts that can be used to create additional actions the app can perform. Now I’m looking at Alfred, an app that does pretty much the same things as launchbar. I don’t know that Alfred is a better app (although it is a bit prettier) but it seems to have momentum behind it right now. A new version 2 has just been launched that supports user created “worflows” - essentially plugins - and folks have already created a bunch of them. Although there were gaps between Alfred and LaunchBar in terms of features those gaps have been closed and workflows represent an area where Alfred has now gone beyond what Launchbar can do (Launchbar can access scripts as actions but doesn’t have its own UI for creating and accessing plugins the way Alfred now does).

Alfred now has all the elements of momentum: rapid delivery of updates, an involved user base and more and more attention being paid to it by bloggers, online media, etc. I don’t like it much more than launchbar right now but I have a hunch that I will fairly soon.

Momentum is a funny thing though. It can swing another way fairly quickly and today’s hot app can be tomorrow’s barely supported dinosaur. TextMate suffered this fate, as did another launcher, Quicksilver. Both of those projects are now open source and development continues but without the same buzz as before.

There are exceptions. In the realm of text editors Vim is the stalwart, gathering moderate numbers of enthusiasts all the time even though the application itself has remained unchanged for many years. It’s so extensible that the functionality continues to grow even without official development. The learning curve is such that once you master it there’s little chance of wasting that investment by switching to something else. It seems invulnerable to the shifting winds of momentum.

For me, at least, momentum has been a significant factor. I often wish that I could stay satisfied with the tools I already have but hot new apps continue to turn my head and exploring them is just too much fun to give up.

A Small Triumph

I was just faced with that email. You know, the one that sits in the inbox from somebody you don’t have time to deal with asking for something you don’t have time to do. I don’t want to blow it off completely because there’s a chance that the relationship or the offer being made may be valuable but I don’t want to do anything about it right now either. That message had been in my inbox for days floating among the flotsam and jetsam of other message cruft until I processed my messages today and it was the last one staring me in the face, mocking me. To make things worse this was a follow up email asking for a reply after I had already ignored an earlier one.

I had a few options:

  1. Ignore it, and have it keep taunting me.
  2. Delete it, and probably receive another follow up.
  3. Reply to it.

With those options in front of me I could see that number three was the only acceptable course of action. So I sent a short message in reply saying that I wasn’t going to take the time to act on the matter right now but I’d get to it and send a reply in a couple of weeks. Then I created an action in Omnifocus to take the required action with a start date of a week from now.

That felt good. It felt like I had just given myself the gift of a week or two and had sent a clear but polite message that I had more important things to do and would reply in my own time rather than respond to any further badgering. The next step is to convert my message into a template for automating replies to similar solicitations, which I receive fairly often.

For me this is what Getting Things Done is all about: finding ways to blow away the annoying bits of friction creating grit so I can get back to the real stuff of my life.

Git Branch Deletion

One great thing about git is that branching and merging are cheap. For this reason I create a lot of branches and there’s a whole bunch of them sitting around in my repo and on the remote I share with my team. Many of these branches are out of date and useless, cluttering up the repository and making it more difficult to see branches that are still active. I had been deleting these one at a time but figured there had to be a better way. A google search later it was Stack Overflow to the rescue.

First I wanted to clean up the remote repository. I found this SO page that provided the following one-liner:

git branch -r | awk -F/ '/\/PREFIX/{print $2}' | xargs -I {} git push origin :{}

Just replace PREFIX with the appropriate string and the matching branches will be deleted from origin. In my case feature branch names begin with Jira issue numbers so deleting a bunch using this method was a snap.

Then I needed to remove outdated local branches as well. Another line (given in another SO thread) will take care of that:

git for-each-ref --format="%(refname:short)" refs/heads/PREFIX\* | xargs git branch -D

Now my local and remote repositories are cleaned up in minutes and I can do this easily again when it gets messy. Sweet!