First Crack in Practice

Last month I published Introducing First Crack shortly after this site went life. In that post I outlined a number of goals I set for First Crack during its development, as well as a few of the advantages I believed my new CMS would have over the incumbents. Since making that post nearly two months have gone by. During those two months I have used First Crack exclusively, and I have not looked back.


One of the main motivations behind the advent of First Crack as well as one of my main goals in designing it was to facilitate a great degree of customization. Not only in the site’s look and feel, but also in the way the CMS works. Just a few weeks ago I did a total redesign of the site. I started with blank HTML, CSS, and Javascript documents, designed the new site, and fed it into First Crack; the build went off without a hitch.

In addition to redesigning this site, I have also added a number of features to First Crack over the past few months, some of which I will touch on later in this article. Thanks to First Crack’s modular design and well-documented code it was very easy for me to make these changes. All in all I am very satisfied with First Crack’s customizability.


As with my goal of complete customization, I feel my intent to make the installation and use of First Crack as easy as possible has been achieved. This process was extremely simple to begin with, and little has changed since then.


I designed First Crack to be as quick as possible with the relatively limited programming knowledge I have as compared to the developers of other content management systems. Pursuant of that goal, roughly a third of the way in to the development of First Crack, I shifted from dynamically generating pages to using static files. This made my site much less complicated to debug and also caused it to preform much faster. These were both great boons to my system over some of the others I had tried and heard about in the past.

My decision to employ static pages rather than generating them on the fly proved to be a good choice: without any prior caching, my website loads in just under a second on relatively low-end servers; with caching, that time is cut in half. Generating the site is also very quick, even when I force First Crack to rebuild every article from source: updating a single article, along with parsing the first paragraph of every post for the front page and generating the RSS feed, takes less than three seconds with thirty-one articles; rebuilding all the articles on the site, including the homepage and RSS feed, takes around five seconds. First Crack is very fast.

Over Christmas Break a few weeks ago I began adding a few new features to First Crack. In addition to simple regular expression improvements and greater versatility, I added the ability to automatically update the site over FTP as well. Now, entering the “authoring mode” with the -a parameter has another option in the list of acceptable commands: -U. Entering -U at the prompt instructs First Crack to upload the entire site — HTML, CSS, and Javascript — to a server specified within the CMS, thereby eliminating the need for me to manually update the site. I have also increased the granularity with which a post’s publish date can be manually modified. Whereas previously First Crack only allowed for the date to be set with granularity down to the day, entering -t at the prompt now asks for an update time down to the second.

As I said earlier, I have been using First Crack for nearly two months, and I haven’t looked back once. First Crack is everything i need in a CMS, and should I happen to come across something I need but do not have, I have the ability to build it. The previous version of First Crack is available on GitHub. If I get around to updating it soon, the new version will be there as well; however, the previous version will work just fine for whatever you need it to do. So go and try it out and tell me what you think. I welcome any sort of feedback.