For those that don't know, our beer board down at our bar in Macclesfield is electronically displayed on a TV above our keg lines...
Last Wednesday, just about to leave the brewery when I got a call that the bar had a power cut and the beer board refused to start. So, I grabbed the dog and wandered down expecting it to be a fairly simple fix. Unfortunately the hard drive had got a little mangled and it took me a good hour or so to get it into a fit state to work. Which led me once again to the conclusion that I need to deploy the beer board onto a cloud based service and just have a simple bit of hardware to show the web page and check I've got enough Raspberry Pi's lying around to make it the obvious choice.
So, quick scan through the docs for deploying a rails application on the Amazon Compute cloud and I figured it would probably take me a couple of hours to deploy the app, a few more hours to add some additional security, how hard could it be?! A statement I almost jokingly ask myself before starting a difficult project...
It turned out to not necessarily hard, just bloody frustrating. I've been out of the IT world for 7 years now, which is long enough to discover that what was obvious and second nature, is now only familiar and I had completely forgotten the arcane and frustrating quagmire of package dependency/versions etc.
Mac OSX package management sucks, spend a good few hours trying to follow the Elastic Bean Stalk deployment examples, but in the end, the dependencies made me want to open a bottle of gin.
In the end I decided to download Ubuntu, don't want to actually install it, but don't want to run it off a live install. Then downloaded Virtual Box, the Ubuntu ISO, created a virtual machine and installed Ubuntu there. RVM installed, but then could not remember which version of Rails and Ruby I had set the beer board up on whilst on holiday all those years ago.
Finally decided "sod it", rummaged through the cupboard of abandoned hardware projects, dug out a Raspberry Pi and installed the correct envs, copied across the beerboard and got it running. An hour or so of messing around with XServer settings etc it was up and running. Purchased a cheap and cheerful LIPO iPhone charger thing that allowed simultaneous charge and power as a UPS and it is up and running.
Installed it at the bar, set up dynamic dns (noip.com), configured the router for port forwarding and now we can access the bars beer list from anywhere. Slight momentary panic when I realized it was not exactly designed to be internet facing, so some quick and dirty hardening and authentication written and it is live! This is something I have wanted to do for ages so customers can view what's on the taps before they have even arrived at the bar. Or even lazier, look at the beer board from their phone without having to get up from their table and squint at the TV.
In a pervese way, I had forgotten how much I enjoy messing around with computers.
I've been planning on integrating the beer board with the EPOS system for a while, so time to brush of my JSON skills and see what can be done (I’ve got a couple of ideas on the gamification of prices based on demand) but in the mean time, the live beer board is publicly available.