That syllabus may have been a tad over-ambitious and ultimately unrealistic. While it would be cool to learn a new programming language and a new data storage paradigm at the same time, that’s just too much and it would take soooo long before I could actually build anything significant with these new tools. Also, I’m currently wading through the quagmire of another important aspect of web development – server administration. It can be…maddening.
In past posts I’ve mentioned my love-hate relationship with Microsoft’s Azure cloud system. While Microsoft offers a wide variety of cloud services to the open source crowd, the only first-class citizens in Azure land are pure Microsoft. I base this claim mostly on Azure websites in particular. They make it easy to spin up a bunch of different flavors of web platforms in a few seconds. This is great for testing and demo purposes. But the devil is in the details and for non-Microsoft applications Azure just isn’t set up for primetime.
OK, maybe that’s being a little harsh on Azure because I’m basing my opinion on a very specific corner of the Azure matrix: Wordpress. Tweaking the performance of Wordpress sites running on Azure websites is a nightmare since the backing MySQL database is a third-party bolt-on from ClearDB. To be fair, the base level db is free, and it’s hard to beat free, but it’s also hard to upgrade that base db to something decent without spending a boatload of money compared to similar options from other cloud providers like AWS or Google. Take a look at the pricing plan: the free db is 5MB and up to 10 connections. $10/month gets you 1GB of space and 15 connections. For the same amount of money spent on an AWS RDS instance you could get a 10+ GB instance without any connection throttling and full admin privileges and you can scale up or down with the push of a button.
In summation, I’ve grown frustrated with MySQL db administration on Azure so I’ve taken the somewhat drastic step of setting up a full LAMP VM on Azure and just hosting all my Wordpress sites there. OK, not really an earth-shattering feat, but for me it was a big bite that required lots of chewing. I’m certainly no Linux wiz and I was getting deep into shell commands, adjusting Apache configs, setting up MySQL dbs, etc. It was trying. Ultimately, though, I’m really happy with my new setup and it vastly outpaces the old setup on Azure websites. All those Wordpress plugins are still pretty inefficient, but they don’t take a day for each db roundtrip anymore. You should now notice a much more pleasant user experience on 5 on Sundays, Over Under Game, and this site (ok, no Wordpress here, but still).
One of the really nice things about Azure websites was the baked in Git auto-deployment functionality. How could I get along in life without this nugget of efficiency?! Well, I was able to recreate the same effect on my custom LAMP server with a nice little open source PHP library: Simple PHP Git deploy. All I had to do was add the files on my server, set a few config variables, and point my Git post-receive hook to the php endpoint. Right? Eh, not so fast. I’ll tackle the headache and subsequent revelation of getting everything to work in my next post. Stay tuned.
Whoa, that was a bit of diversion. Back to the topic at hand: learning new stuff. I’ve ditched the idea of learning MongoDB because I’ve realized that in addition to learning Ruby I’ll have to get a lot more proficient at all kinds of server admin type stuff. That means a lot more shell scripting, deployment planning, and db migration in my future. Ruby on Rails is great for getting a basic web stack up and running quickly, but if I want to do anything of consequence then I’ll need to learn what’s going on behind the scenes. So that’s the new plan.