In the beginning of August, data science teams at bol.com came together for a dynamic two-day datathon. Collaborating with different teams from different disciplines, their mission was to re-imagine how we discover similar products. This innovative approach involved combining the insights of text (titles/descriptions) and images. To achieve this, they converted both text and image data into vectors and then find similar products by for example using a Faiss index and other.
Contributing to change & equality for women in tech
“Working at bol.com allows me the freedom to innovate, inspire, and empower other women to do the same.” We are talking to Noha Shafik, who started her career in Egypt and has recently been promoted as bol.com’s Principle Engineering Manager. Guided by her search for personal values, Noha leads a diverse team at bol.com while staying true to herself, her strengths and her purpose.
Bye Bye Hibernate – Discovering alternatives to Hibernate in Kotlin
At bol.com we host a hackathon day every so many months. Developers get to pitch their hackathon idea, so that other developers can join and help them. Sander was curious about other ORM frameworks available for Kotlin. And so, the idea to look for alternatives of Hibernate in Kotlin as a hackathon project came up.
At bol.com we believe Site Reliability Engineering (SRE) is the best way to balance product innovation and reliability. In essence it’s a particular set of standards, tools and practices that govern how you balance Dev and Ops in a DevOps software engineering team. But when should SRE teams be happy?
Spicing up your app’s performance - a simple recipe for GC tuning
The garbage collector is a complex piece of machinery that can be difficult to tune. Not surprisingly, many developers dread touching the GC. If you don’t give the GC just a little bit of care, your whole application might be running suboptimal. This blog post shows how we got two production applications to perform better by following simple tuning steps.
Coroutine Gotchas - Bridging the Gap between Coroutine and Non-Coroutine Worlds
Coroutines are a wonderful way of writing asynchronous, non-blocking code in Kotlin. Think of them as lightweight threads, because that’s exactly what they are. Lightweight threads aim to reduce context switching, a relatively expensive operation. Moreover, you can easily suspend and cancel them anytime. Sounds great, right?
At bol.com we like our teams to be autonomous when it comes to implementing solutions to help our customers. However if people are completely free to do whatever they want to reach a team goal we might end up in the bottom right corner of the picture due to lack of direction. We like to be in the upper right corner where there’s both freedom and alignment. The other parts of the diagram are of course less desirable for our software engineers and data scientists.
Forecasting demand at bol.com during the COVID-19 pandemic
The COVID-19 pandemic has affected millions of people around the world and in very different ways. While governments and health organisations seek to find solutions to this global humanitarian crisis, online retailers have been put to the test of how well they can serve their customers’ needs during these challenging times. Being part of bol.com’s Forecasting Team brought these challenges closer to home, and not only because of the working from home situation.