Yesterday I posted fresh content to this blog for the first time in almost nine months. This is not the first time the site has gone silent, nor will it be the last. I know it is cliche to write a post that talks about how long it’s been, how I’m going to promise to do better, etc, so I’m not going to do that. I can’t make any promises, because I know this will probably happen again. All I can do is document the causes, for posterity’s sake.
This bout of silence was all due to technology not working the way I’d like it to. I’ve always known that my biggest impediment to blogging is resistance. The easier it is for me to publish my thoughts, the more likely I’ll do it. But when the tech starts to falter, it leads to one frustration after another. At a certain point it started to take up too much of my time, either due to time spent troubleshooting, or because certain tasks started to take too long to complete.
As far as I can recall, here are some of the issues I delt with. At this point I’ve managed to fix most of them, and the publishing process is now fairly smooth again. I just don’t know for how long.
Web Development
I’m just not that good at it. Good web development requires a number of skills - coding, artistic skill, typesetting, typography, etc. I don’t have most of those, and I don’t think I ever will. So when I make a website, it’s always the same pattern - I borrow templates and snippets of CSS and HTML from other places, and hope I can get them to work the way I want them to. Most of the time, they don’t, and I find myself poking in the dark until either it works, or I give up. I’ve been wanting to make a reviews section for the longest time, somewhere where I can store my thoughts on games, records, and films. It still isn’t ready, and the reason why is because it’s the first time I’ve haven’t been able to find a mostly ready-made solution to plug in.
Hosting
This blog has always been hosted via Heroku. It’s worked fairly well, but I fully admit that it isn’t the best platform I could be using. I understand that deploying a Ruby app that does nothing but serve up static files is overkill. But it works, it’s free, and the strings attached to that free cost are reasonable. I can’t think of many other solutions that I feel that way about (Github Pages is the only alternative I’ve considered).
So Heroku it is, which means that every so often, I have to make sure I’m running a supported version of Ruby, and that my dependencies aren’t too out of date, or that I’m running on a supported Heroku stack. None of this work has cost me too much time, and I don’t think it’s ever caused the site to break, but it’s still a maintenance cost that wouldn’t exist if I could just FTP a folder of static content to a server.
Images
I’ve always hosted my images on Google Photos. It keeps my Heroku app size from ballooning, and the service has a very nice feature which allows you to alter the height and width of the image by tweaking the URL.
Some months ago, Google decided to finally kill off any traces of their old Picasa web albums service, as they broke Google Photos out of Google Plus to make it its own thing. This led to a whole new interface that I struggled to deal with. I could no longer find the link to the raw image, so I couldn’t tweak the size. And it seemed like none of my new photos were visible to other users.
I looked for solutions, but all the search results were from before the changeover to Google Photos. Until then, I thought I was stuck. It took me until this month to realize that I could just find another image host. I tried out Cloudinary, which you can easily add to a Heroku app. They have a great service, but I have issues with the way it is implemented, as well as with their interface. It took me a day to conclude that I might last a year or less on their free tier, so I dumped it and went back to Google.
In the eight months that the blog has been mothballed, many others have written about the same issues I was having, and others even found solutions (don’t get me started on the fact that these posts were mostly dated from June and July of 2016. I guess there’s a half year delay between when Google changes something and when people notice). Everything is working like it used to once again, but I know that it could break again at any time that Google decides to mix things up.
Site Generation
The site has always been generated with Middleman. Without it, I’m pretty sure I’d still be using Blogger or something. But I’m at the point where I think I can say that I should have found an alternative at some point in the past, considering how much grief it has shown me. Here’s what I can remember:
Whenever a new major version is released, the documentation for past versions vanish from their homepage. I downloaded the source repository for their docs so I could roll it back to the match the version I’m using, and built their homepage from scratch on my laptop. It’s the only way I can reliably get to them.
I tried five different solutions to get syntax highlighting for code snippets. Four of them broke the site. The fifth works, except code renders in a serif font on Android browsers for no apparent reason.
I recently discovered that tags weren’t working properly on the site. I found the problem, fixed it, and confirmed it all looked good locally. But when the blog deployed to Heroku, it was still broken. I solved this by generating the pages locally, then committing them to Git, and then pushing all the files to Heroku. It doesn’t take any more time, but it is one more step I have to perform, and that bothers me when there’s no good reason why it should happen.
Dependency versioning is sloppy - many time a Middleman library won’t lock in a specific version for some third party dependency. When that dep. updates in a way that isn’t compatible with middleman, your app will crash. The only way to solve this is to figure out a set of versions that you know will work, and add them all to your Gemfile.lock. - and then hope you have no good reason to upgrade to a newer version, lest you repeat the process.
In a sick twist of irony, the Middleman team actually has given us a reason not to update, via Middleman 4. Released some time in the last year, Middleman 4 no longer provides out of the box support for Sprockets, nor did they replace it with anything. According to the developers, it is up to us, the user, to choose the solution we think best. Though if you want a recommendation, they’ll give you a few. It just so happens that they’re all node.js-based tools.
Here’s the thing: I don’t want to crap on the developers. They had a great idea, and I can tell they’ve worked hard on it over the years. I just don’t like the way they’ve gone about developing it. At work, I deal almost exclusively with “enterprisey” software, which tends to be slow, conservative, heavy, and sometimes ugly as sin. But that same software also tends to be supported, in the sense that the developers host the documentation and installation media for older versions for at least some amount of time.
Middleman, on the other hand, is developed in the same way as a lot of other modern web tools. Everything is so seat-of-your-pants, and obsessed with the latest and greatest, regardless of compatability or quality control. And if that was Middleman’s only quirk, I could probably live with it. But with version 4, the product has fallen victim to another quirk of modern, hip (mostly javascript-based) web projects - stripping away funcationality in the name of “user choice and flexibility”.
That makes sense in the context of, say, Unix tools and the like. But - and maybe this is just me - I feel like the whole point of static site generators is to do a lot of stuff for you automatically. But Middleman has gone the way of other site generators (Metalsmith and Wintersmith come to mind) that basically offer you nothing, and tell you to fill in their functionality with plugins. It’s hardly better than creating a build system from scratch, and it makes me feel like I’m in Crazy World when no one else seems to look at this and think “this is a problem” (actually, hugo is at least one site generator that agrees with me. If I ever switch tools, that’s where I’m going to go).
It’s still my fault in the end
I really do believe these issues are ultimately my fault. Yes, almost every single technology I’ve tried to use has pulled the rug out from under me with unnecessary and unwanted changes. But I’m not paying for any of them, and I know that if I was willing to fork over some cash, then most of this would not be happening to me (the Middleman stuff still would, but oh well). As a developer, I want to see my peers to provide a better user experience. But as a user, I must face the fact that I get what I pay for.