A brief follow-up to my little semi-rant and tools post from a few days ago. First off I was shock at the number of emails I received regarding questions about Jekyll/Middleman as well as some other techno-related-crap. Seems there are quite a few of you out there looking for something faster, cheaper, and a bit more elegant than the standard Wordpress steaming pile o themeo-plug-in spaghetti made from shit.
At this point I think I must have walked a half dozen people through getting a reasonable minimal environment up and going - it's not really difficult if you just want to know the how vs. the how everything works. That might take a bit longer if you are not already neck-deep in current development tech. I also received a couple of questions regarding if I actually use this stuff for regular people and various hosting questions. Let me try to consolidate that into a few brief answers.
I use this stuff (Jekyll, Middleman, SASS, HAML, etc) for things that involve real people all the time. Typically it's in developing things for them and they don't have a clue as to any of the what's or the hows. In a few cases I have non-tech people actually indirectly using a couple of these things as sort of an experiment. One person in particular I have using a Jekyll based site directly adding content as he pleases. This sort of stemmed from the pain and suffering caused (mostly to me) by originally hosting his site using the common wisdom based solution - specifically Wordpress.
For a few years I battled security issues, de-blacklisting of his site a couple of times, re-re-re-re answering the same old questions of how to do something or why something was not working etc, etc. The entire reason I chose Wordpress was for him to be self-sufficient. No dice. In reality he never ever ever did anything but type posts into that little new post browser text box and even then dealing with actually causing things to happen they way he wanted them to via the easy Wordpress interface was a hit or miss affair. Typically I would have to get involved about half the time he posted. No kidding. Did he ever install a theme himself? Ever understand anything about any theme's specific features? Ever really get what any of the custom post fields did? No.
This is typical for most non-tech kind of people that need a website that has periodically updated and new content. Honestly they want nothing to do with the administration, styling, layout, maintenance, upkeep, debugging, nada. They just want something predictable to happen when they would like to change something or post something new. That's it. Actually they want it to happen the same exact way every time. They have no desire to re-engineer what's going to happen post to post. No need to re-do the way it looks. No desire to mess around with the navigation. None of that. So typical regular people want someone else to take care of all that. In a lot of cases that's me and when I choose Wordpress it's painful - to me. Hence an experimental thing - the Jekyll based site that is updated by that same user.
Since the original steep uphill learning curve of about a month or so to get Markdown to register vs. WYSIWYG everything is really smooth - I have no issues. No security breaches. Far better performance and when I do have to fix something or adjust layout or anything else it takes me about 10% of the time it used to. Here's the secret - he doesn't have a development environment on any of his gear. He doesn't run ruby, he doesn't run Jekyll, he has no ability or even clue how to do that and I don't have to maintain any of it. He can post a new post from any of his Macs and I can set up a new one in about two minutes - or even walk him through it. Unknown to this regular person he's using git via Gitbox and when he hits "push" a git post receive hook runs on a server I own and builds the site via Jekyll and it's associated technology stack. It takes about the same amount of time to build the static site as it did to hit the post button on his old Wordpress installation.
As an added bonus every change is version controlled and replicated in about 92 places. No matter what happens I can reproduce all of his web properties from anywhere on the planet at any point in time on any hosting platform with one click. No kidding. I have done it. From his point of view hey types up a post or new content in the plain text editor of his choice - hits the push button on gitbox and boom - done. All the tech is on the backend in terms of running the Ruby/SASS/Jekyll stack with all of it's dependencies managed real time via Bundler.
Now this is not for everyone but as I mentioned if anyone is looking to explore this either for prototyping, accelerated CSS development via SASS, looking for a better Hammer for Mac that's free and capable of hooking in any templating language or asset pipeline do let me know. If you don't need any of that but would like to explore something a bit easier than Wordpress and the mess it brings along let me know. I can help ether with the setup or all the way to helping pull all of you Wordpress content and putting it into nice neat plain text Markdown files or whatever.
Moving on to hosting platforms. Hmmm that's a tough one. There are a million of them and I use about half of that. Well not quite but there really isn't a one size fits all. I could use one and just one and then re-sell the hosting back to some of my tech clients but I really am not in that business. I do for a few of them but that's for really small stuff and it's break-even at best. I think I have actually forgot to charge them here and there - no big deal - small stuff. For larger stuff I am not into building out a way to re-sell or do cost recovery as part of some sort of periodic service charge - I like to work simply so Typically I will use whatever hosting provider is a good fit for one particular client and pass the cost directly through to them - with the vast majority it's just a direct bill they pay to the provider even if I manage it for them. So what do I use a lot???
- Amazon AWS - typically for larger scale stuff. For virtualized servers via EC2 and a lot of their other large grained services it's cost prohibitive for most normal people things. They don't sell small enough chunks. For storage S3 is another story and I use it all the time. More on that in a second.
- Heroku - which runs on top of AWS. Again very appropriate for big stuff or… very small stuff. Medium sized stuff is not a good fit. They have a free tier which is fantastic with one App engine and 10,000 Postgres DB rows being free. I run a ton of stuff on the Heroku free tier. If you need a bunch of data retention actually a medium sized it's too too expensive. If you need huge stuff it's actually okay.
- For medium sized stuff I tend to use Rackspace
- For small or medium stuff where I prefer BSD it's BSDvm or Root BSD
- For really small stuff which might be far far more than what anyone needs for a personal site or blog I have about 42 different shared hosting accounts. For the most part all of them have really sucked in one way or another but one… The one that has not sucked and I am bit by bit moving everything on a shared hosting platform to is Webfaction. Great performance, I have not seen an instance where their servers are oversubscribed, great support, pretty much do anything you want as long as you know how with shell access. Awesome. Even if you have no idea what you are doing they have some of the best/most up to date "one click" installers for just about any tech-stack you might want to use. Heck someone mentioned Ghost as a simple, pretty, Node.js based blogging platform alternative to Wordpress in the comments of the last post - Webfaction has an installer - boom, done.
So there you have it. That's the stuff I use. What about this blog? The one that you see and about the only thing I run that's "mine". Well… This happens to be generated via Jekyll at the moment. With all the assets hosted via Amazon S3 - the images, the HTML, the JS, everything. I sometimes generate it via Middleman as shown here… which was quite an easy port - should be exactly the same.. permalinks and all. If you can't see it it's because you are reading this very late and I prolly took it down.
Now if you use some high tech stuff to look at the response headers the real site doesn't look like it's on S3 - that's because I use CloudFlare as a CDN to front-end it. You might notice that the duplicate version is actually faster served directly from S3. Two reasons. First off is because the Middleman asset pipeline is super easy to use as opposed to the Jekyll asset pipeline add-on. In english the asset consolidation and minification features in Middleman are far far more pleasant and up to date and awesome so I use them. Jekyll asset pipeline is so complicated that I prefer to do my own and usually don't bother with my little blog. The second reason is that CloudFlare actually slows my site down. Yep - supposed to make it "faster" - nope. Actually it adds about 500ms latency in the US. So why do I use it? Well it's free and it knocks about 80% off my S3 egress data hits. So my huge blog and it is huge costs nothing to host on S3. Like $3/month and that's mostly data storage with a little bandwidth. So it's my little cheap-ness experiment - how much can I do for just about no money - any complaints about the performance? There shouldn't be it tests consistently at about the "97% percentile" of all website page load time everywhere on the planet. My little eBook store? Well that's on Heroku's free single app-engine - free. But I run Unicorn so I actually am getting the ability to run a shitload of parallel requests on only one app engine.
As a static webpage server S3 performance is actually quite good - heck even with 30 or so way way too big images (I'm lazy I just resize them in the browser - even those bitty thumbnails over on the right) per page it's fairly awesome. If you want to see real performance Amazon Cloudfront coupled with S3 is really awesome world-wide edge performance - blows cloudflare out of the water w/ no latency and no bullshit re-writing of expiration headers. Using Cloudfront actually costs money though and has significant impacts if I need to invalidate it - which I do - very often due to my post it and figure out if it's right later workflow here… Also managing Cloudfront via Jekyll and Jekyll asset pipeline is a PIA - middleman is another story… piece of cake with things like this and this.
So where does that leave us… well. If you want to DIY try the tools I mentioned or ask if there's something you need but haven't tried it - I prolly have. Need help setting up your machine - no problem. Will give you an idea of how I do it and do it over and over again with no pain. I have a thing about reproducibility in setting up my environment anywhere I happen to be at the moment. I am not into tedious excruciating re-inventing of the wheel on every machine I have to work on. Don't want any of this and just want a good performing cheap blog - want it too look really great like Ghost does - super easy no options. Hit me up I am sure we can work something out for me to just set it up for you and be done with it. Need a "look" or a theme for Ghost? Even though I don't use it I happen to have had to mess about with handlebars and other JS templating engines so that's no big deal. Seriously I am on a mission to de-wordpress the planet.