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.
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 occassionaly 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.