I prefer static websites to a CMS for simple product websites because:
- Static websites are fast.
- I have more low-level control over the HTML/CSS.
- I don’t have to worry about the very-real threat of a CMS being hacked.
Obviously writing every page separately in raw HTML/CSS would go against one of the cardinal rules of development, Don’t Repeat Yourself. But you can avoid this using a static website generator such as Hammer for Mac.
Hammer uses a simple syntax embedded in HTML comments to ‘compile’ a website from source files. I have now used Hammer to create several static HTML/CSS websites, including my perfecttableplan.com and hyperplan.com websites.
I like the simple syntax of Hammer. For example:
I can put the HTML for a page header in an _header.html file and then each page just needs to start with:
<!-- @include _header.html -->
I can define and use variables:
<!-- $current_year 2016 -->
<p>Copyright <!-- $current_year -->.</p>
And I can let Hammer work out relative paths:
<img src="@path image.png" />
If Hammer can’t make sense of a source file (e.g. it can’t find the image file), it generates a compilation error.
Because everything is text based I can easily manage all the source in a version control system. Also, if I have to move away from Hammer, it should be relatively straightforward to change the syntax to another static generator (or even write a replacement for Hammer!).
Overall I like Hammer. But it does have a number of shortcomings:
1. The user interface is very limited. Hammer shows you a list of source files and you can click on a source file to see the compiled version or edit the source. But the source files are listed in the order they were edited and you can’t filter or sort the list. This seems such a simple and basic feature, that I can’t understand why the developers have omitted it.
2. Hammer takes a dumb, brute force approach to compilation. If you change any file in a source folder, it recompiles *everything*, without checking if other source files include that file. This is a pain if you have 100+ source files. Surely it wouldn’t be that hard to work out which files depend on which and only recompile the files that need recompiling?
3. You can’t nest variables. For example you can’t do this:
<!-- $current_year 2016 -->
<!-- $copyright_message Copyright <!-- $current_year --> -->
This might sound minor. But it limits the expressiveness of variables significantly.
4. The vendor doesn’t do email support. If you want to communicate with them you have to use Slack or Twitter. I am old fashioned, I like email.
5. It only runs on Mac OS X (the clue is in the name).
At one point Hammer looked like abandonware, but owner riothq.com sold it to beach.io and active development has resumed.
Currently Hammer is priced at £15.39 (and presumably some round number of US dollars). That seems way too cheap. I wish they would price it a bit higher and fix some of the issues above.
** Update Jan-2022 **
Hammer4mac doesn’t run on recent versions of macOS and seems to have been quietly abandoned by the developer for some time.
This reminds me a bit of CityDesk from FogCreek, a piece of software I would have liked to continue using but they stopped updating it.
Correction. The original creators of Hammer was riothq.com, not panic.com. My mistake.
I’ve been working with static site generators for some time, and I’d like to recommend you the following options, which don’t require an UI and are cross platform:
* JBake (www.jbake.org): it’s java-based and pretty easy to work with, it uses markdown or asciidoctor for content.
* Jekill (www.jekyllrb.com): It’s ruby-based. It’s pretty popular and also works with markdown or asciidoctor for content.
* Hexo (www.hexo.io): It’s based on node.js and it’s pretty much the same, it has lots of templates.
* Hugo (www.gohugo.io): It’s based on Go, it also has lots of templates to choose from.
There are a lot of other options (just check http://www.staticgen.com) but in my opinion, these are the most easy to work with.
Useful to know some alternatives. Thanks!