As prompted by Brent Simmons’ investigation into alternative blogging engines, I started thinking about some of Camel’s pain points. This includes both what bothers me, as well as what would bother others. As it often turns out, what bothers me is what bothers others.
One of Camel’s biggest benefits is that it uses the filesystem as its data store. Camel does not use a database; it does not (knowingly) use Dropbox. All the posts in Camel are simply in an expected directory structure within the project. Convention over configuration, you see.
This reliance on the file system, however, is also Camel’s biggest drawback.
There is no native way to upload a new post, say, by way of an iOS device. Since I’m currently hosting this blog on Heroku, I must commit and push a new post using Git in order to see it on the web. That’s not possible using any iOS app I’ve come across, and doesn’t strike me as something terribly enjoyable to code myself.
The obvious and easier answer is to have some sort of API within Camel to accept Markdown file uploads. This, too, runs into a snag. Heroku has an ephemeral filesystem, so even if I can get a file to Heroku, there is no guarantee it will stay there.
Which begs the question, how do I upload a post from iOS?
I see no obvious answer.
This does, however, give me an excuse to start digging into Azure. Perhaps there are options there that aren’t available on Heroku? Perhaps Azure doesn’t have an ephemeral filesystem; can I easily point it to some “external” filesystem that isn’t ephemeral? At a glance, this doesn’t seem to be the case — I see no obvious indication that Azure is any different.
I know Azure has a robust web interface; I’ll have to investigate and see if that interface would be allow me to add or edit posts in a pinch.
Am I missing any other obvious answers? Specifically, ones that don’t require me to rewrite Camel to use a different data store? I know I can go the virtual private server / self-hosted route, but I have zero interest in taking that on. What’s left?