We’re excited to announce our newest Couchbase Community Champion, Iain Cartledge, who is based in Cambridge, U.K.
Tell us about yourself and what you do in your daily role?
I’m a software architect at Bango, where I’ve been working for about five and a half years. We primarily enable app stores to offer mobile payment options to their customers through our payment platform, which is integrated with carriers and alternative payment providers in a variety of countries around the world. Throughout my time here I’ve worked in a variety of areas, starting in the integrations team – involved in the adaption layer between our platform and payment providers, and also working on core platform APIs (many of which are still in use today), our data flows, and the main platform advancements. Now I’m mostly concerned with ensuring our platform can scale out and handle increasing demand, investigating technologies that can help us generate even more value for our customers, and evangelising code quality and coherent design within development, while keeping an eye on how we put together our bigger projects and helping coordinate the different parts to make a better whole. The vast majority of our codebase is written in C#, which I’ve been using for about eight years, but I have a history in C++ and I do indeed miss template meta-programming (occasionally and briefly).
Where are you based and what do you like to do in your spare time?
Bango is based in Cambridge, and I live a little outside in Ely – England’s smallest city – although I like to remind people that I grew up just outside of Glasgow. When I’m not spending time with my wonderful family, I switch between interests depending on the time of the year, although there are a few things I come back to regularly. I’ve always been an avid gamer and I’m currently having a lot of fun playing around with a Vive, but I also enjoy chess (which, luckily, my older son is also really getting into), playing football (soccer), and learning new things – currently focusing on golang and Japanese.
What made you choose Couchbase?
We initially chose Couchbase because we had experience with memcached, which we used for caching certain request information for fast access. To squeeze more performance out of our platform we started using Couchbase for fast access to live transactional data, which gave us a great boost in terms of data access times. In this regard, Couchbase has been excellent, allowing us to store and read documents incredibly quickly. To facilitate the things that Couchbase originally didn’t do, our in-house ETL solution moves the data to SQL Server for supporting offline processes such as reporting. This allows us to separate out the core payments functionality with supporting tasks, and gives us an independently scalable system with the benefits of both data models.
What one feature of Couchbase do you use and what should people know about it?
While not technically a Couchbase feature, I’d like to talk about this because I think it’s really cool. One of the things I think we’ve really done well is the API layer we use for interacting with the Couchbase API, which wraps the core functionality with libraries that support the main patterns required for interacting with a NoSQL system. For one of our internal projects we wanted the speed and scalability of Couchbase, but also needed to be able to update multiple documents safely. To this end we spent some time putting together an atomic transaction pattern which is now included in our internal APIs and guarantees that all documents update or none do. The bit I love the most is that it is a culmination of several other patterns (from the simple, plain old counter patterns and lookups to slightly more complex ones like versioned document history) that results in something that appears quite complex at first glance, but can be easily broken out into simple parts on inspection, and once someone has a grounding in the component patterns it’s fairly straightforward to grasp the overall concept. It was also fun to come up with, and great to see it working as expected when we incorporated it into the project in question.
If you could have three wishes for Couchbase what would they be?
As far as Couchbase wishes, I’d love to see a more streamlined way of setting up a cluster in Docker. At the moment it still requires some configuration via the console or the REST API, and while this is adequate, it would be really nice if there was an officially supported way of spinning up a containerized cluster with standard settings very quickly such as using K8s Helm, as I think this would really increase the Couchbase footprint. I’d also (sorry guys) like a better console built in. While it’s fine for day-to-day processes, proper role-management would be useful and allow more security, plus there are a few niggles around document viewing and modification that make it a requirement that we have our own admin tools in place. Once again, that’s not a huge problem, but it might put people off a bit if they can’t use the console the way they would like to when they’re getting used to Couchbase as well. My third wish would be to have an online N1QL sandbox. It would be really cool to have a bucket that was preloaded with some data that could be queried from a web page, that way you could go through tutorials with no installation or configuration requirements and just get your hands dirty straight away.
What is your favorite book or author, and why?
I have a few favourite books and authors for different occasions. I’ve always liked Asimov and the “I, Robot” collection, which holds a special nostalgic place in my heart, along with Stephen King’s “The Bachman Books,” having read both collections when I was younger. I was also lucky enough to get into “Game of Thrones” early, and loved how new and epic it was when my flatmate introduced me to the books. For a favourite though I’d have to go with a slightly off-the-wall choice of “The Feynman Lectures” compiled from Richard Feynman’s lectures at Caltech, which are brilliantly written and still offer a fantastic gateway to modern physics. It’s not just enjoyable from a learning point of view but Feynman’s style is incredibly entertaining and always enticing.