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.
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!
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!
Jana Rekittke from the Engineering gave us a recap of the EWIT16* conference she attended, presenting some topics and ideas. Enjoy reading the summary of her talk!
Tech workplaces tend to be often typically male dominated. Women might find a “Brogrammer” culture in which they may feel out of place, uncomfortable, or less valued. An unappealing workplace could also be a reason for women to not consider it in the first place. Yet, changes in the workplace tend to only happen when more women start working there.
So the question is: How do we achieve gender parity? And do we actually want that? Does it make sense for a company? Quite probably so: a mixed workplace (think of “not only white middle aged male”) will give the company access to a more diverse pool of ideas. If everyone who makes decisions has the same background, similar ideas and opinions, how can a company/country/… evolve and adapt to ever-changing requirements?
How about women in leadership? Do we need more women in middle/upper management and on company boards? Several studies (see links below) indicate that companies with women in upper management and on boards are more successful than their male-run counterparts by achieving greater productivity, creativity, and profitability. However, companies founded by women receive less funding. Which is odd considering that a company run by a woman is more likely to succeed than a company run by a man.
Sadly, the percentage of companies that have women in upper management is around 70% (big companies, first world), and the percentage of women vs. men in management positions of these companies lies between 0 and 30%. The percentage of women in tech teams is just as low.
We are therefore far from parity - and those who say that feminism or gender studies are outdated and not needed should reconsider their position. There is obviously still work to be done.
For further reading on this broad and interesting topic, please consider these:
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.