Measuring execution time in Kotlin coroutines

    Danu Pranantha, on 11-05-2021
    Category: Development

    1. Background kotlinx.coroutines is one of the asynchronous (and concurrency) libraries in Kotlin for writing asynchronous, non-blocking code. Kotlin coroutines are cooperative subroutines that can suspend and resume their execution at any suspension point (awaiting a result). Coroutines themselves have been around since the 1960s. Coroutines are lightweight cooperative multitasking, often referred to as ‘lightweight threads.’ They yield control upon suspension. Other coroutines can then use it to start/continue their execution. Thus, they don’t depend on a scheduler and operating system. On the other hand, threads are based on the…

    Read more

    Building an Engineering Culture

    Peter Paul van de Beek, Peter Brouwers, on 8-04-2021
    Category: Blog, Development

    In the bol.com Tech Community, we get quite some questions on how we build a great engineering culture. Mid-March 2021 the hosts of our podcast joined the Hackages podcast which was live recorded with almost 100 attendees. They shared their experiences and answered many questions from the audience. Hackages is a community based platform to help developers and businesses grow and empower each other through content, training and consultancy services In bol.com we believe that autonomy of the teams brings the creativity, knowledge and craftmanship needed to build the leading…

    Read more

    Know what you deploy – a script using git log for listing all features that go live

    Nick Tinnemeier, Dennis de Bode, on 19-03-2021
    Category: Blog, Development

    Introduction For me, even after having pushed the deploy button many times, deploying to production keeps being dreadful. Accidentally pushing an unwanted feature that sneaked in somehow is one of the many things I am afraid of. In this blog post I show you how we reduced our deployment anxiety with a script using git log for listing all the features that go live after pushing that deploy-to-pro button. In this blog post I first introduce you to the way we work and provide you with the necessary information to…

    Read more

    HPA: how it can save you headaches and money

    Alexandra Egher, on 12-03-2021
    Category: Cloud, Development

    In this blog, we show you how to automatically scale your application resources according to either the CPU consumption or to the incoming load of your application.  Background As humans, we are capable of adapting to variable inputs and situations. Some of us are slower, whereas others easily adapt to change. In dynamic environments, flexibility has become one of the most valued skills. As engineers, we also thrive for adaptability. We embrace new technologies, new responsibilities, and new ways of working together. We want to build future proof solutions that react quickly…

    Read more

    Product Development for Data Science – From Idea to Production in 7 Phases

    Simon Stiebellehner, on 26-02-2021
    Category: Data Science & AI, Development

    Towards the end of 2020, Melissa Perotti and I held a talk on Product Development for Data Science Products at GoDataFest – the (this time virtual) festival of Data Technology. We elaborate on how we follow a 7-phase process to take Data Science projects from idea to prototype and from prototype to production.   About the talk In every industry, a remarkably large share of Data Science (DS) projects fail. There are various reasons why DS projects may come to a halt:  Data quality or size is insufficient,  the model doesn’t…

    Read more

    Moving to the cloud? Don’t let your application become a downer!

    Richard Deurwaarder, on 12-02-2021
    Category: Blog, Cloud, Infrastructure, Development

    Introduction At bol.com we have two main ways of running our applications. We can deploy them in a Datacenter (DC) managed by us or we can run them on Google Cloud Platform (GCP). Many applications are being migrated from DC to the GCP to take advantage of the different products available in GCP. Switching to the cloud isn’t just a matter of lift ‘n shifting your application though, there are several changes that you should take into account. One of those changes is, how the behavior of the underlying platform…

    Read more

    How to map optional fields with MapStruct

    Nick Tinnemeier, on 5-02-2021
    Category: Development

    Introduction MapStruct is a framework that alleviates us, programmers, from the unexciting task of writing code to copy one object model to another, field by field. In this blog we show you how to map optional fields with MapStruct. If, after reading this, you still wonder what MapStruct is and what it can do for you, then this blog could answer those questions for you: https://techlab.bol.com/mapping-object-models-case-study/. This blog zooms in on MapStruct’s capabilities of dealing with source fields that are not always present, i.e. might be null. In particular, we…

    Read more

    How to write MapStruct mappers for object hierarchies

    Nick Tinnemeier, on 1-02-2021
    Category: Development

    Introduction MapStruct is a framework that alleviates us, programmers, from the unexciting task of writing code to copy one object model to another, field by field. This blog elaborates on how to write MapStruct mappers for object hierarchies. If, after reading this, you still wonder what MapStruct is and what it can do for you, then this blog might be a good read: https://techlab.bol.com/mapstruct-case-study/. To already spoil the fun, MapStruct is not able to generate mappers for classes that all inherit from the same (abstract) base class or interface. In…

    Read more

    Mapping object models with MapStruct – a case study

    Nick Tinnemeier, on 6-01-2021
    Category: Development

    Introduction I was once told that a good programmer is a lazy programmer. A good programmer avoids typing tedious code, where the code could basically write itself. Self-writing code – wouldn’t that be great? Unfortunately, we’re not quite there yet. We show you how close to self-writing code you can get. In this blog we will present a case study using MapStruct for mapping object models. In particular, we zoom in on how the MapStruct framework alleviates us from the dull task of writing code to copy one object model…

    Read more

    Spaces Talk #5: Super Mario’s Dive Through The Gitlab Pipelines

    Patrick van Dissel, on 5-10-2020
    Category: Cloud, Development, Testing

    Spaces Summit is our annual internal bol.com conference for IT, by IT, and friends: Two fun days of inspiration, knowledge sharing, bragging, and community. This year, our 4th edition, was our first digital version of the summit. All our summits are recorded and published on YouTube, free to watch for everyone. Check https://spacessummit.bol.com for all info on all our summits and their recordings. As one of the organizers of Spaces Summit 2019 and 2018, as well as mentor of the 2020 organizers, I’m proud that we were able to very…

    Read more