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. In this blog we will present a case study using MapStruct for mapping object models. We show you how close to self-writing code you can get. 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
When it comes to developing software we use the adagio: You built it, You run it, You love it. Same should hold for all the -ilities or non-functional requirements. So, one should love their logging. One of the subjects that we did not really touch yet in our podcast is non-functionals. Today we take a closer look at logging. An aspect that typically fills some of the non-functionals or -ilities. Love your logs and Love the people after you. For the first time in the history of the bol.com Techlab…Read more
We take a sneak peek into the Utrecht JAVA User Group (JUG) Meetup next week, February 24th. Topics will be: are End-to-End test architectures a Dead End road? And there will be some live hacking: Breaking into your Java web app. This will really give a feel for the importance of security. Besides that, we discuss with one of the founders of the Utrecht JUG why it’s so great to be part of a community. He explains the great initiatives like for instance the Speaker Incubator the JUG offers. Guests…Read more
The subject of this podcast episode is totally in line with the holiday season. Time for the advent calendars in many different formats. One of these formats is the Advent of Code 2019! The bol.com Tech Community is participating in this event. In this episode, we talk with 2 participants and discover what it is all about. We explore what it could do. Our software engineers see it as a good way to sharpen their problem solving and a good exercise for the upcoming bol.com spaces programming championship. Some become really competitive. Guests Erik…Read more
The state of Reactive Streams – watch the presentation and listen to the podcast. International Keynote speaker Oleh Dokuka gave a presentation on the state of Reactive Streams at bol.com. We took advantage of this opportunity and interviewed him for the podcast. The Reactive Streams specification is state of the art for asynchronous, non-blocking data streams with the fine-grained flow control. Clearly, that was done for a good future… but, does it have any future nowadays? How other programming ecosystems reacted to the appearance of the reactive-streams standard and did they adopted that…Read more
Three years ago, a group of enthusiastic engineers gathered together during the Friday drinks. They wanted to interact more in the growing organization. Learn more from each other by sharing cool stories. The plan for a bol.com tech summit was born, they called it Spaces Summit. Three years later the 3rd edition in succession is organized by a dedicated team of committed engineers. It’s the 13th of June and the Techlab Podcast team is on the Spaces Summit 2019 location to give you an impression of the Spaces Summit. In the previous episode of the podcast we interviewed one…Read more
Three years ago a group of enthusiastic engineers gathered together during the Friday drinks. They wanted to interact more in the growing organization. Learn more from each other by sharing cool stories. The plan for a bol.com tech summit was born, they called it Spaces Summit. Three years later the 3rd edition in succession is organized by a dedicated team of committed engineers. It’s the 13th of June and the Techlab Podcast team is on the Spaces Summit location to give you an impression of the Spaces Summit. We interviewed one of the committee members to tell you the What, Why…Read more
In this episode, we talk about Axle. Axle is our internal framework for building Java-based applications. Well actually as you will learn in this episode it is not a framework. It is an opinionated approach to building Java applications like Spring Boot is an opinionated view of the Spring platform and third-party libraries so you can get started with a minimum of hassle. Since internally we use the same thing for cross-cutting concerns like logging and metrics these all come out of the box when using Axle. Besides that, it…Read more
At bol.com we use GraphQL in our IT landscape, and we’ve found a convenient way of working with these API’s we would like to share. By generating our GraphQL queries from Java objects by using annotations, developers don’t need to worry about the query, and don’t need to maintain both a query and a domain object anymore.Read more
In many systems at bol.com the response speed of our systems is very important. This blog is about the data structures and algorithms we used to make a specific analysis step a lot faster: Finding the longest matching string prefix.Read more
The biggest e-commerce company in the Netherlands and Belgium, bol.com, set out on a 4 year journey to rethink and rebuild their entire ETL (Extract, Transform, Load) pipeline, that has been cooking up the data used by its search engine since the dawn of time.Read more
Last June, Spaces Summit was organized by and for bol.com employees. At Techlab, we want to celebrate this event by highlighting two presentations every month. This month, let’s get meta, and talk about organizing a conference. After that, we’ll go full geek again and look at Kotlin, to cure the Java headache you probably didn’t realize you were having in the first place.Read more
Last year the Measuring 2.0 team at bol.com has started measuring user behavior on the bol.com website. Of course, we wanted to make the data widely accessible within the whole organization.Read more
Ever since I’ve started working for a WebAnalytics company in 2005 I’ve been working on problems related to making sense of web data. One of the most difficult elements in this type of analysis is making sense of the user agent.
Very often the raw web data I work with is stored in Apache HTTPD access log files that have been compressed using gzip.
When you build a service at bol.com your responsibility doesn’t end once the build is green. You’re actually supposed to run it (and keep it running) in production, too. Luckily, our team doesn’t have to do this all by ourselves: there are platform and infrastructure teams to turn to and other development teams to harass over coffee. It’s a bit like caring for a newborn baby I suppose: you try to do a lot yourself but when the baby starts crying for the first time you’ll need all the help…Read more