Babbel Bytes

Insights from the Babbel engineering team

An approach to TDD in Android

Frederico Gonçalves

If you started your Android development around the time instrumentation tests were the only tests supported out of the box, you probably remember how tedious it was to test drive an app. In fact, writing tests, whether before or after the implementation was written, was so complicated and frustrating that some of us chose to avoid them entirely.

Well times have changed and what we now have at our disposal is enough to not only write a reasonable amount of tests but also to develop our apps and libraries driven by tests. In this article I’ll share how I do TDD in Android. I won’t dive deep into the concept of TDD, I’ll simply explain the approach I use and how it has greatly improved my development. I’ll approach this with a concrete example.

Continue reading…

How Travis CI helps us deploy to AWS Lambda


Want to simplify your infrastructure and reduce your operations overhead? Consider using AWS Lambda, and let Travis help you with the deployment.

If you don’t know AWS Lambda, here’s how Amazon describes it:

AWS Lambda is a compute service that runs your code in response to events and automatically manages the underlying compute resources for you.

Put simply, you write the code and AWS runs it for you. The “runs it for you” part can be either event-driven, scheduled, or via a manual trigger.

If you’re on the move to a more decoupled service architecture like we are, this can be a big help.

Continue reading…

Retrofit 2 and Rx Java call adapter error handling

Frederico Gonçalves

If you’ve kept yourself up to date with the latest in Retrofit you’ve soon came to the question “Should I or shouldn’t I update to Retrofit 2?”. At Babbel we’ve already answered the question, we updated our new Android app to use Retrofit 2.

Although still in a beta stage, Retrofit 2 already offers a lot. However, there are some crucial changes. Perhaps one of the changes that affected us the most was the removal of RetrofitError. There are more than one reason why this class was removed, but we weren’t ready to give up on it so fast. As an intermediate step we needed to port its behavior to Retrofit 2 while using RxJava.

The new Retrofit design helps you define call adapters that can help you customize how you handle errors in your calls.

Continue reading…

Babbel 4th Hackday - our review


Twice a year we break out of our everyday routine and meet somewhere in Berlin to form ad hoc teams working on our own project ideas and hacks. Some of them eventually become actual Babbel projects.

As the Babbel family is growing pretty fast lately – and so is the list of the Hackday attendants – the venue research can get really hard; this time we had an exciting option, though…our future office!

A completely empty 5–storey building close to Alexanderplatz just for us and during the Halloween weekend. Creepy!? Scary!? Exciting!

We took over its big empty open space and we brought tables, chairs, sofas, bin bags, lights, super Wifi, coffee, snacks, Club Mates, beers…and last but not least, 110 Babbel – Hackers; 110 people from Product, Engineering, Data Analytics, Marketing, Customer Support, Design, Didactics, Internal Communication worked from 10 am to 19.30 pm on 26 different projects.

4th Babbel Hackday

Continue reading…

How we upgraded a big Ruby on Rails monolith with Zero Downtime


In September 2015, we started taking the Rails upgrade of our monolith seriously. We were running Rails 3.2 up to that point, and with Rails 5 on its way, we ran into the risk of using an unmaintained version of the web framework. This was not an option. Hence, the upgrade to a current Rails 4 version was inevitable.

Continue reading…

Evolution of Babbel’s data pipeline on AWS: from SQS to Kinesis

Kirill Shirinkin

Various data storages have seen increased growth over the last few years. There are now so many of them that it becomes overwhelming to choose the right tool for the job. Among all of the Big Data ready replacements for traditional relational databases (think Cassandra or HBase), there are also a few tools that try to solve a slightly different problem: to provide a centralized log of data, that is both writable by multiple producers and easily readable by multiple consumers.

Continue reading…

Continuous integration for mobile


Sven Kroell, Mobile QA Engineer at Babbel & Thanos Karpouzis, Senior Android Developer at Babbel held a talk about Continuous integration for mobile at this year’s Droidcon conference.

The video recording is now to available on Youtube.