Babbel Bytes

Insights from the Babbel engineering team

What is dependency injection after all?

Frederico Gonçalves

Are you starting your developer career and came across tools like Dagger, Guice and Roboguice and got a bit confused? Is it hard to grasp the concepts of dependency injection and inversion of control? Then this might help you out. This post tries to explain what dependency injection is and why it is so important in software development.

Continue reading…

Innovation in Language Learning @ Babbel


Although handcrafted content from our language experts lies at the heart and soul of our offering, Babbel is constantly looking at ways to enhance the experience of our users through cutting-edge technology. For this reason, we are actively involved in the international scientific community, so that we can stay up to date with the latest technological developments. We also conduct our own research in how to apply computational linguistics methodologies to language learning applications. Our computational linguistics team recently presented original research at the 12th Workshop on Innovative Use of NLP for Building Educational Applications (BEA12) in Copenhagen, Denmark.

Continue reading…

7th Hackday Review


Wouldn’t it be better, make you stronger, to have your soul in more pieces, I mean, for instance, isn’t seven the most powerfully magical number, wouldn’t seven — ?” (Harry Potter and the Half-Blood Prince, 2005)

At Babbel we work with words. But sometimes numbers are just as important. This year, the number seven was very important, because our seventh Babbel Hackday took place! According to some religions, seven signifies perfection and wholeness, and according to Harry Potter it’s said to be the most powerfully magical number. Thus, hopes were high for participants on our last Hackday, the 7th!

The seventh Babbel Hackday took place on Friday, April 7th, 2017 (isn’t that wonderful?), at Betahaus Berlin. Every six months we organize a Hackday mainly for our engineers, but not exclusively, so a lot of coworkers from other departments participate as well. We had a colleague working remotely from Italy, a team that thought it was a costume party and some new joiners whose very first day at Babbel was a Hackday. New this time was the introduction of a second winning category. Previously, we designated one team for ‘Best Hack’, but since Babbel is a learning company (inside and out), this year we came up with a second category: ‘Make you speak the language like you’ve always wanted to’, which pursues the best learning hack.

Continue reading…

Launch an AWS EMR cluster with Pyspark and Jupyter Notebook inside a VPC

Franziska Adler, Nicola Corda

When your data becomes massive and data analysts are eager to construct complex models it might be a good time to boost processing power by using clusters in the cloud … and let their geek flag fly. Therefore, we use AWS Elastic Map Reduce (EMR) which lets you easily create clusters with Spark installed. Spark is a distributed processing framework for executing calculations in parallel. Our data analysts undertake analyses and machine learning tasks using Python 3 (with libraries such as pandas, scikit-learn, etc.,) on Jupyter notebooks. To enable our data analysts to create clusters on demand and not completely change their programming routines we choose Jupyter Notebook with PySpark (Spark Python API) on top of EMR. We mostly followed the example of Tom Zeng in the AWS Big Data Blog post. For security reasons we run the Spark cluster inside a private subnet of a VPC, and to connect to the cluster we use a bastion host with SSH tunnelling, so all the traffic between browser and cluster is encrypted.

Continue reading…

Improving the Performance of Complex Angular Applications


At Babbel our learning content is maintained and created using a custom-made content authoring system based on Angular 1.x. The application has become quite complex by now, counting about 80 custom directives, 35 services and 10 filters, which are tested by about 1400 unit tests (just so you get an idea of the sheer size). The application is under continuous development for two years now and recently we have experienced some serious performance issues for the first time. Our most complex view consists of a spreadsheet-like layout containing, on average, about 50-80 of rows filled with content. When users switched between content packages, resulting in the view being updated, there was a noticeable lag of 2-3 seconds, which became annoying quickly.

This article will walk you through our process and explain in detail how we cut the rendering time in half.

Continue reading…

WTM Berlin Android Study Jam at Babbel


Do you want to learn how to create you own Android app, but you don’t have any developing experience? What about joining your local Android Study Jam?

A study Jam is a community-run study group. Members of local Google Developer Groups support beginners learn Android development.

And this week we hosted in our offices the first session of the “WTM Berlin Android study Jam” season 3!

Continue reading…

Introduction to Test Automation


At Babbel, we revised our test automation strategy about 1.5 years ago. Since then, our focus has been on frontend testing (browser and mobile) for crucial parts of our business. Which, in our case, is mostly that a user can register or login and navigate through the language lessons after subscribing.

I’ll give a short introduction to test automation here, so if you’re a test automation engineer, what I’ll be covering is probably not new to you. If, however, you’re new to the topic, read on!

Continue reading…