It turns out that relaxing properly is hard work.

Codebits took a bit more of a toll than I expected, so even though I’m ecstatic about the news coverage, I’ve been single-mindedly focusing on clearing my head.

So I spent most of the past couple of weeks sipping mint tea and attending to real life pursuits, with some weekend breaks devoted to reading, photography (first time this year I broke out my 350D) and crashing my Hubsan X4 into various pieces of greenery – it’s quite fun to fly but all too easily diverted by gusts of wind due to its relatively low weight, so I’ve had to re-assemble it twice now.

Following the Heartbleed fracas, I took advantage of the recent Linode upgrades to update to Ubuntu 14.04 and fiddle with apparmor and LXC inconsistencies (in short, blindly upgrading both host and containers will cause some grief unless you tweak your configuration files), which led me to re-think my hosting options – I do need a VPS for development and fooling around with various runtimes, but I’d rather not have to mess about too much to host this site.

Fortuitously, I had decided to take a stab at Google App Engine again a few weeks ago, so I had a somewhat working version off the ground already.

Considering that the overall changes I needed to do in order to complete the “modernization” of Yaki into a proper WSGI/MVC app are mostly about done, it’s not much of a stretch to finish them atop GAE – after all, it provides memcache and task queue services that are close enough1 to my standard setup of Redis and Celery.

And since I like to plan ahead, I’m making sure I can also run the end result on AppScale – it’s a great exit strategy if I decide to go back to a VPS later.

The big catch with GAE is its utter lack of file system support, which is kind of a pain when you consider that the entire site is based on editing flat files stored on Dropbox.

But then I had an epiphany:

Since I’m slowly moving my stuff away from Dropbox and into MEO Cloud anyway, why not just access the API directly (after all, MEO Cloud is API-compatible with Dropbox) and build things in such a way that my visitors lazily migrate my content across for me?

Devious, I know.

And since I’ve been meaning to write mostly civilized code from now on, the foray into GAE also provides an opportunity to dive back into Clojure (incidentally, go and buy the Clojure Cookbook now, it’s great).

Running Clojure on GAE makes perfect sense and has been possible for a while and I came across this quite extensive post on the topic this week, which led to a couple of quick and dirty tests already.

But mostly I’ve been cheating by using Hy – which, if you’ve missed my previous posts, is a LISP that compiles down to Python bytecode and just happens to be a delight to use inside GAE – it’s habit-forming, to say the least…

  1. Even though, to be perfectly, honest, Redis would have made for much simpler and concise code since I could leverage it to do a lot of the grunt work for me. ↩︎