Capgemini Bluemix Hackathon

I’m currently sitting at an airport in Paris awaiting my flight back to Cardiff and thought it would be a good time to share my experience of using IBM Bluemix.

First off some background: Capgemini has its own University Campus Capgemini Les Fontaines! It’s not mentioned enough when attracting people to our team (btw we’re hiring!), good food and drink - catering for all tastes. I’d come for a hackathon on DevOps and IoT with IBM Bluemix. We assembled engineers from across the company spanning the globe, all with the intention of winning learning. The objective: create a mobile application using various sensor data from a bunch of Raspberry Pi’s to provide extra security for a private jet, Rihanna’s no less. We were split into teams mixing technical skillsets, nationality, age, gender, etc. to maximise the diversity and experience in each team and told we had two days, at the end of which we had to present a working solution to the representatives of a private jet manufacturer.

Onto Bluemix, it’s a vast array of services, boilerplate templates, virtual machines, databases and tools. I’ll be honest, I was a bit overwhelmed with my options initially. Personally I’ll always actively avoid proprietary software, I believe in open source and freedom from licenses. Saying that, when you get what you pay for with tools like IntelliJ or Slack, I don’t mind. This brings me onto my first criticism. Cloudant, an IBM noSQL database, it’s a variant of the open source CouchDB. I’d love to know the reasoning behind not using the open source option. I spun an instance up and started feeding IoT data into it using another service Node-RED (I’ll get back to that). Then I had to try and get the data back out…mind blown. Gone were the SQL queries I am so used to, replaced with a JavaScript function to create a view to map-reduce the data. I just about got something working using Stack Overflow for CouchDB questions, but thats only fruitful when you know it’s CouchDB. Perhaps IBM could make this clearer on Bluemix e.g. powered by CouchDB. Giving kudos back to the community would be a powerful gesture and not feel like an attempt to lock you in to something vendor specific.

Criticism two: if you’re providing boilerplate code I expect high standards and good basic structure to the code. Unfortunately the ones I saw were primitive “Hello World”-type examples, which for us fell down like a house of cards as you try and bend it into some sort of order and coding standards. This is something I think should be addressed quickly and would happily contribute to. Our team started off using the mobile app builder. We toiled away for four hours, eventually abandoning it to start again writing an Android application from scratch. This is my first tip, avoid using the boilerplate for anything other than getting snippets of code or experimenting with connections to other services on Bluemix.

Criticism three: the explosion of browser tabs trying to configure anything. Every service basically has its own landing screen and then opens its interface into another tab, try using more than three services and its starts becoming irritating. Combining services together results in a series of copy/pastes of the generated credentials from one service to the next. This isn’t the case for all services, some integrate nicely but not nearly enough.

I’ve finally got to a point where I feel like I’ve got some stuff off my chest, did I like any of it? Yes, back to Node-RED. It’s a browser-based flow editor using Node.js to wire up IoT data. The best way I can describe it is as an electronic circuit for streams of IoT data. It’s really simple, really powerful and something I’d recommend getting kids into to hack stuff with IoT (something I’ve thought more about since finding out about devoxx4kids). There’s a subset of the plugins available on the service but I think that’ll improve. One issue I did find with Node-RED was that occasionally it lost my changes and the source control wasn’t integrated well, again something I think will be addressed soon. The integration with other services for this was really easy, Twitter, Watson, Push notifications to name but three - and it has a host of custom functions. We used it to send push notifications when the plane detected an intruder for example and read a twitter feed using a Watson component to assess the sentiment of the tweet. The potential power of this really excites me; the ability to drag and drop to combine datasources ranging from IoT streams, social feeds, api’s, database etc. then filter for the data you need and apply cognitive behaviour from Watson opens up endless possibilities.

I also liked the DevOps pipeline service - you essentially build a delivery pipeline and an app can be built, tested and deployed even with green / blue deployments on commit. It’s a really easy way to get started and had support for Ant, Maven and Gradle. Do I think it’ll replace Jenkins? No. However for small projects it’s perfect, the online code editor and git client work well and there’s even an issue tracking option. This would’ve been ideal on some of my university group assignments for example.

Getting back to the hackathon, what have I learnt? Training based on a challenge, throwing people together with diverse backgrounds and cultures, being well supplied in coffee and doughnuts whilst having limited sleep produces great results. Why? Because as Software Engineers we’re highly skilled, analytical, agile and have an ingrained culture of sharing. When another team found out I’d cracked querying CouchDB (I refuse to call it Cloudant) I was in a competition but still gave them ten minutes of my time. This trait could be seen across all the teams.

Something I’d love to see is an even broader mix of abilities within the teams, perhaps going so far as to include VPs onto each hackathon team. I think they’d learn a lot witnessing the DevOps process, agility and a sharing culture first hand. Who knows they could even learn some coding skills (Node-RED was very easy for newbies to pick up).

Would I use Bluemix again? Yes, in the right circumstance the ability to get a database, web server and deployment pipeline up and running in minutes is great. Node-RED and the IoT platform impressed me, especially given it’s a domain I’ve little experience in. I’d like to end by saying thanks to everyone who organised the hack, my fellow hackletes and the two IBM experts who had the unenviable task of assisting us. Hopefully there’ll be more events of this style. I’ve certainly learnt a lot more about IBM Bluemix than I would have in a standard training based event.

Join our team

If you like the sound of what you've read and would like to join our team, we're hiring!

Find out more about working with Capgemini