Here at Mobile Jazz, we use open source projects and code almost everyday. As engineers, we try to solve difficult problems and in doing so, we have to rely on other libraries that help speed processes up and in some cases, in a more secure and robust method than implementing it ourselves. This is down to a team or individual being able to focus and spend a significant amount of time on any given library, framework or plugin.

If you’re new to open source, I would like to cite some of the advantages of embracing this philosophy for your company (summarized in this talk by Michael Schulz):

  • When programmers can read, redistribute and modify the source code for a piece of software, the software itself evolves.
  • People will improve it, people will adapt it and people will fix bugs.
  • So we can say that there will always be more smart people outside of any organization than the proper organization could ever employ.
  • And this can happen at a speed which, compared to conventional software development, often seems astonishing.
  • Open Source Software provides access to real world examples of how technologies can be implemented. How stuff works and how sometimes not.

At Mobile Jazz, we’ve always respected and cared for open source and it’s principles. We’re always improving the quality of our contributions, but recently, we cleaned our GitHub repository and right now (arguably more important) we’re busy standardizing our code styles. We’re also improving how we present the information to the user (README) and focusing our attention on top notch code.

I recently stumbled on a post from Pedro Vicente wrote on Karumi’s blog, and I couldn’t agree more, as the same applies to us.

All members of the Karumi team love their job, profession and the team. We respect each other personally and professionally. We enjoy facing new challenges and working together. We create software as a team and collaborate to improve as engineers everyday, sharing our knowledge with other developers when possible.

Projects

I would like to introduce three of our open source projects, which we have been developing for quite a while, and that we use on a daily basis (including our clients projects):

MJApiClient

MJAPIClient

Inside the iOS community there is a very popular framework to manage network connections called AFNetworking. This library provides a nice interface to send HTTP requests and serialize/deserialize them.

MJApiClient is a layer that sits on top of AFNetworking, providing a user-friendly interface oriented for typical actions we frequently perform in our projects: creating a network request, adding parameters, deserializing a JSON response and uploading images etc. Perhaps the most useful feature of MJApiClient is that it provides an abstraction over the networking layer, adding the ability to put OAuth authentication management (or any other customized system) in the middle.

MJApiClient is not yet published on CocoaPods as we are still implementing a couple of extra features, however, you can grab it now on GitHub.

Motis

Motis

JSON is very popular format when it comes to sending and receiving data through a network. We needed a way to convert our JSON network responses into real Objective-C objects, so we created Motis.

Motis is a library that extends Cocoa’s basic NSObject class to be able to perform JSON mapping. Motis takes advantage of the famous built-in KeyValueCoding system to map JSON dictionaries in a distributed way into real objects. Furthermore, Motis reads the types or properties defined inside the objects and transforms the received JSON values into them.

There are many similar libraries in the open source community. However, when creating Motis, we wanted to create the most simplistic interface, so users could perform JSON mappings with ease (just couple of lines of code here and there).

Motis is being used in all of our projects at Mobile Jazz, as well as trusted by many other developers from the Open Source community. It has already reached a staggering 100,000+ downloads.

Colloc

Colloc

Maintaining translations inside apps can sometimes be a pain. Colloc tries to simplify that process by exporting translations from a Google Sheet into a format for both iOS and Android:

Colloc Sample File

The project contains one important file, colloc.php which performs all the magic.
Colloc exports translations from a Google Spreadsheet, which gives us incredible power as we can create our own formula on the spreadsheet to manipulate strings.

There are some little tricks to it explain in the GitHub project page, but everything is quite straightforward, you’ll be setup and using this in no time, even if you need to maintain apps in both operating systems.

At Mobile Jazz, we integrated Colloc into our daily workflow, we can be rest assured that our apps always have the latest translations version.

We’ve got so much more on the horizon, so stay tuned!

Joan Martin

Starting with a mathematics degree, continuing with a computer science master's degree, and working on mobile and backend development during the past 10 years, Joan is a proficient software engineer. Motivated by great projects and an awesome team, Joan is currently leading the Mobile Jazz team and enjoying the MJ philosophy at its best.