Friday, 27 February 2015

Docker, Shippable and continuous integration

Recently, I’ve been having fun with continuous integration and questions about deployment. As a result, I’ve fallen a little bit in love with Docker, which is just a lovely way to run your applications. I’m not going to go into detail because the documentation is great, and anyway this post is more of an opinion piece; if you want to know the details you can take a look at my Docker guide here: http://guide.andigital.com/devops/docker-quick-reference.html

Getting a little bit carried away with all things new and shiny, I decided to embark on implementing Shippable as our CI tool of choice. But my feelings on this topic are much more mixed.

What’s to like? Well, it's super easy to set up. You really can get a CI environment up and running in very little time - which was not my experience with Jenkins or Team City, despite assurances to the contrary. If you know you really should get something resembling CI in place but cba to actually get round to it, shippable might be what you need.

I was instantly drawn to the fact that shippable is built on docker (did I mention how great docker is?). You pop a shippable.yml in your project root directory just like your dockerfile, and with pretty similar content. That made things super easy - I already had a dockerfile, so it was just a copy, paste and tweak job, apart from the 15 submits I had to do before I finally got the syntax and space indenting right.

Unfortunately, all this dockeryness doesn't translate to easy integration with docker. Ideally, shippable would have triggered a dockerfile build and pushed this to my docker repo. In reality, and after huge amounts of faffing, I resorted to a manual download of the archive file and a little shell script to build the docker image and push it to docker hub. For the folks out there doing continuous deployment, it looks like Shippable has some decent-ish PaaS integrations, but our clients are mostly enterprise-scale outfits with multiple test environments and distributed production environments that may need a more carefully managed approach, at least as a starting point. Shippable falls a way short of having the level of control that I wanted from my CI tool.

So, a manual download and a little script and the whole thing just about does the job, but it’s hardly the new shiny I wanted. Also, when you can already do all these things in your Docker image, you can't help but wonder why you're bothering with Shippable in the first place. Especially when you find out that Docker have implemented their own automated build capability http://docs.docker.com/docker-hub/builds/. Unfortunately other work and family commitments means I don’t have time to play with this at the moment, but Docker has already gathered plenty of momentum in our team so it’s being looked at.

All the technical details for the shippable.ml, docker build file and shell script that I put together can be found here: http://guide.andigital.com/devops/CI-docker-deploy.html


But ultimately I have to face the music: if I'm serious about becoming a fully-fledged CI pro, I need to get to grips with Jenkins. The dated UI and daunting prospect of getting to grips with 1001 plugins and extensions really is no excuse. Anyway, I've heard you can run it in a docker container...

Wednesday, 4 February 2015

Escaping Trinity Syndrome

Not that long ago I came across the term "Trinity Syndrome" to describe films with a "Strong Female Character" who starts in a blaze of success, being the best at whatever it is that's central to the film, only to become a supporting role for a male character as the story develops, and ultimately relying on said male character, usually to rescue her from some peril that she would have adequately handled on her own before male had arrived. It is of course named after Trinity from The Matrix.

Here's a good summary by the ever-excellent Saturday Morning Breakfast Cereal:



It struck me that Trinity Syndrome is alive and well in the real world too. I have a good degree from Cambridge University. My career started well, with rapid progress up the steps to technical lead, and a bit of a reputation for being a "rising star". And then... Well, what happened? Things faltered in my meteoric rise. They did for my husband as well, so he got another job. I considered moving, but the company I was in had a reputation for being family friendly and I knew I could work part time. Instead of choosing to get a different job, I chose to get pregnant. Over the next five years, I spent two years on maternity leave, a year and a half being pregnant, and the rest of the time working part time. My momentum at work was lost, and my "personal brand" damaged and polluted by the "mummy" image.


Something unexpected happened - my confidence was shattered. In the mean time, my husband's career was back on track, a hundred minor successes for my hundred minor set-backs. Strictly speaking, we didn't need my income. My husband could provide all the material goods I needed, while my children would be more than enough to occupy my life. I knew I was lucky – isn’t this the dream, a lovely home, a loving husband, the freedom to spend as much time as I wanted with my children? Shouldn’t I be so glad that I’m not forced to make that gut-wrenching choice to leave my beautiful little kids in the care of some stranger every day, when they need their mummy?


And then it struck me - real-life Trinity Syndrome had happened to me. I'd started on this journey with every bit as much potential and ability as my husband. But not only had his career eclipsed mine, I'd also become reliant on him and my children in the process, and my own role in life was relegated to ensuring their success. So I’ve set off on a mission to breathe life back into my half-dead career. I've left my comfortable, family-friendly job with its temptations of part-time working and safety of knowing exactly what to expect, and joined an exciting new startup. The last few weeks have been eye-opening for me… I know more than I realise, my experience really counts for something, and – most shocking of all – I’m good at this stuff. At the moment, I’m absolutely sure I’ve done the right thing.


“Having it all” is that standard term to bandy around working mothers, but it has such negative connotations. Children are just another trophy in the cabinet for these ultra-career driven women. For them, the labour ward is something they fit in between the gym and the boardroom, and knocking out a couple of sprogs, or even three, will do nothing to dim that drive or determination. I have a certain amount of admiration for these women, but the having-it-all label is not one I identify with. It doesn't capture the doubt, the guilt, and the barriers to success that working mums face. It doesn't recognise the thousand tiny barriers between motherhood and a career, as opposed to just a job. And it doesn't recognise the fact that I'm not having it all, because my career will never be what it could have been if I had forsaken having children altogether.


So I prefer the term "escaping Trinity Syndrome". It's been a struggle to return to having a career, and my aim is to avoid the decline into obscurity and obsolescence that a neglected part-time job would have inevitably become. My ambitions are relatively modest and I will always be looking to find a harmonious balance between the different aspects of my life. Who knows where this next step will take me, or how it will pan out? One thing's for certain - I'm looking forward to the future with optimism.