Babbel Bytes

Insights from the Babbel engineering team

Android Modular Project - Organizing your library dependencies

Frederico Gonçalves

As your project grows you might have found the need to split it into several modules. This becomes even more prominent when you’re working in a company where several teams develop the same app, but different features.

It’s not so uncommon to have the same library dependencies accross the modules. Usually modules tend to use the same library to achieve similar things and keep the number of used libraries to a minimum. However, it’s also not so uncommon to accidentally use different versions of the same library in this setup.

Here at Babbel we recently faced this issue and in this blog post I’ll share with you a possible solution to overcome this.

Continue reading…

Hackday 6.0 - our review

Cemre, Rajibul, Veronika & Carlien

Lots of ideas, people, Club Mate and pizzas. Hello again, with our own review after a successful Hackday.

The 6th Hackday was held at Magazine in der Heeresbäckerei, an impressive industrial monument with a prominent appearance in Kreuzberg, directly next to the Spree. It is extremely important to have a amazing location for such a long, intensive day and we’re happy that we could spend it in this wonderful venue! To make sure nobody was hungry we had lunch from Knofi and delicious Italian pizzas from our good friends at LaPausa.

Unlike the participants of the hackday, our organization team had a little longer than 10 hours to prepare their ‘product’: the first steps towards the event were taken already a couple of months before. It is very satisfying to see how all the small parts we’ve been working on are coming together like puzzle pieces, creating one big event that so many people can enjoy.

Enough background, let’s talk about the actual Hackday!

The 6th Babbel Hackday started at 8 o’clock in the morning - which is considered the middle of the night for some of the Babbellonians - with coffee and sleepy faces, and people happily putting on their work uniforms: this year’s Babbel Hackday T-shirts. With every zip of hot beverage, more and more smiles appeared and our day with ten hours of hacking was ready to begin. The energy levels were rising by the minute and if this Hackday would have had background music, it would definitely be Reel 2 Real’s ‘I like to move it’!

6th Babbel Hackday

Continue reading…

How I got the job I wanted (even though I wasn’t qualified)

Clyde & Jeanny

At Babbel, we’re constantly looking for new and unconventional ways to get our customers over the hurdle of speaking in a foreign language. As a result, finding talented people to help move our organization forward can also come in unexpected ways. This week, we invited Jeanny (Director of Product) and Clyde (Product Specialist) to share one of our more amusing hiring stories.

Continue reading…

Hackday 5.0 - our review

Cemre & Giulia

Powered by lightning fast internet, lasagne and tons of Club Mate, our 5th Hackday was a success! So, here we are with our own review about a day full of projects, sun - and caffeine.

This year’s Hackday took place at Colonia Nova, a proper Berlin-style venue in the famous Neukölln district. Let’s be honest, the huge and sunny rooftop terrace on the 5th floor made our day even better. It was great to enjoy the sunshine while hacking with our colleagues - because yes, we set up the wifi there too!

5th Babbel Hackday

Continue reading…

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…