Babbel is all about empowering people to learn languages — to better communicate and have conversations all over the globe. We are passionate about our purpose, and we want to find developers who care about this too.
Read more about Why babbel developer’s make a difference
Hi! I’m Gábor. I want to tell you about an exciting new training program I’m running at Babbel, Berlin for aspiring software engineers. It’s called Babbel Neos. But first, a bit about how I ended up in this position.
I learnt web development during high school for fun. I got my first full-time job during university but I eventually never finished my studies. I always found it easy to find a job that was meaningful to me and helped me develop professionally. I did not only have the chance to progress in my career as a software engineer, but also change my role a couple of times and explore new fields. I transitioned from web development to QA engineering to engineering management to product management. I had the option to work in San Francisco at the Bay Area tech scene.
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.
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.
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.
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.
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.