First Crack 1.0
Since starting this website nearly two years ago, I have written specifically about the engine that runs it exactly four times: in Introducing First Crack, I detailed my long journey to the realization that I needed to build something completely my own, from the ground up; later, I talked about some of my creation’s niceties in First Crack in Practice, before outlining the changes an innocuous redesign brought about in First Crack’s Complete Overhaul. Finally, some eleven months later, I returned to once again briefly run down my latest updates in Changes to First Crack. Since then, however, for the last six months, I have not said a peep. Today, that changes with the release of First Crack 1.0 to the public.
I could wax on for paragraphs extolling the virtues of this CMS over others, explaining why I built it and believe it superior to the alternatives, or talking about the neat, helpful features I tried to tuck in wherever I could. However, I have done that before, and I doubt anyone wants to read that once again any more than I want to write it all over again. So instead, I wrote out a short, five-item list of highlights I want everyone to walk away from this article with:
- Fast. First Crack is, by any standard, remarkably fast: it can take a completely empty directory structure and build a fully-functioning website of 725 articles, along with a full-text RSS feed to boot, in less than 1.25 seconds. That’s pretty darn quick.
- Simple. First Crack runs on the widely-available Python engine using only built-in libraries, and works with simple plain text files formatted in Markdown. This means that on a Mac, you can go from nothing to having a website in just slightly longer than it will take you to write your first article. First Crack also works on a PC thanks to the magic of Cygwin, although you will have to install Python as well; unfortunately, it does not come pre-installed on every computer.
- Portable. Wherever you have access to Python, you can run First Crack. With some minor modifications, that even means iOS.
- Customizable. At less than 700 lines of well-documented code, customizing First Crack to fit your needs will prove much easier than you might at first suspect. Even if you don’t write Python for a living, or just don’t feel as strong a kinship with the language as I do, you can still easily change the structure and presentation of your site thanks to the modular approach I took when building this. Instead of messing with XML or YAML configuration files, just add or remove elements from a simple HTML document whenever you want to change the structure of your site; and if you want to change the look and feel, go ahead and make the necessary modifications the the standalone CSS document. Easy.
- Beautiful. By no means the furthest thing from my mind throughout the development process, I designed every aspect of First Crack — from the back-end code parsing the Markdown files to the front-end HTML documents — with an eye for the difficult balance between form and function. And although I could just be biased, I think I have struck it well, and doubly so on the user-facing side: First Crack generates an attractive, responsive site that will look beautifully simple regardless of you and your readers’ chosen device. So whether it’s Federico Viticci viewing your site on his iPad or Marco Arment with his Mac Pro and massive DELL monitors, you have absolutely nothing to worry about.
First Crack is not the simplest CMS on the market, but I did not create it with that goal in mind: I wrote First Crack intending it to serve as a simple, fast, and easy-to-use blogging engine I could run on anything from my iPhone to a server, and in that respect it has succeeded remarkably well. Nevertheless, I am not so naive to believe that it is perfect — but that’s the point: I have honed it to a degree where I believe it suitable for public release, and so I have decided to put it out today in the hopes that some of you will try it and then let me know where I have fallen short, what needs improved, and where I should take this in the future. So please, head over to Github and give it a shot: the only things you need are Python, a terminal window, and a willingness to give some script a kid from Ohio wrote in his spare time a try.