Devoxx UK 2024 Recap
recommendationThe company I'm working at enabled two people from my team (including me) to attend this year's Devoxx UK in the beautifully bustling city of London.
At the start of such conferences, before descending into the dark spheres of detailed technical matters, there are usually reserved slots for special presentations. These keynotes are used for major announcements or deal with abstract topics. They are designed to create a wow effect and an inspiring atmosphere.
Code Play Repeat by Mey Beisaron and Fun for Now by Kevlin Henney especially serve the second purpose. Their message: stay curious, try things out and have fun.
Then we moved on to the nitty-gritty details. Krisztian Papp gave an introduction to Architecture Decision Records. We are already recording decisions, but could definitely do it more often. The simple and easy-to-understand structure of DRs belies the fact that you have to make substantial in-depth considerations upfront. The speaker begs the questions: how should they be created and reviewed, do they need a definition of done? Also: where to record them - another decision that could be recorded btw ;). To echo from another architecture talk (by Eoin Woods): if it concerns a specific repository, then it is best to record it there. There are various tools that can be used to navigate DRs (especially those that build on previous ones) easier than from a plain directory or wiki, e.g. adr-tools or log4brains.
Usually, there's an unwritten rule to avoid talks by companies that sponsor the conference (sometimes rightfully so). However we got lucky to disregard it when joining Harriet Taylor & Jimmy Ray's talk on Server Driven UI. It perfectly hit the nail on what we just started out to do: backend for frontend. They shared their wealth of experience and we soaked it all up like a sponge.
As a strong proponent of open source I couldn't walk past Distributed Tracing in Java? OpenTelemetry for the Rescue! by Dotan Horovits. I always disliked that our main observability tool Datadog is proprietary, but I'm also in no position to alter that. Nevertheless, it's possible to integrate OpenTelemetry to gradually start a small revolution from within.
Before our evening at the fantastic musical Hadestown (I've been told that you have to see at least one musical when you visit London - next time it will be The Book of Mormon), we had time for Spring Security: The Good Parts by Daniel Garnier-Moiroux. An entertaining excursion to a corner of Spring that is usually less frequented, after having it set up once.
Workshops have become an integral part of tech conferences. At Devoxx, the "mini labs" ran free-to-join in the exhibitor hall (sadly, level of noise was not conducive). I attended a few, but apart from one they were all the same: here's an online guide, if you have any questions I'm here. That was okay, but due to the limited time, many participants didn't get much further than the setup phase. I would have liked a bit more interaction and hands-on explanations, but this would have been difficult due to the soundscape. Ultimately, it was more helpful for those who were already familiar with the subject matter.
- Securing Spring Boot Microservices with OAuth and OpenID Connect - online tutorial
- Test Driven Architecture accompanied with Architecture as Code - online tutorial - slides
- Talk Nerdy To Me - Creating Effective Technical Presentations - this was the exception to the rule above. notes taken: keep your slides clean, one topic at a time - and if you really need to display source code use something like this
- OpenTelemetry Hands-On - online tutorial - to be fair the topic requires a lot of setup and they made a good choice outsourcing most of it to a managed development environment (GitHub codespaces)
The talk on Contract Testing (by Praveen Erode Mohanasundaram) resonated with me. I often have the feeling that there is no pragmatic way to carry out integration tests, e.g. whether a push notification triggered externally, routed through our services, actually ends up in a messaging broker and finally appears on the cell phone. For such things, you either have to create test environments that are complex to maintain or resort to time consuming manual testing. In both cases, it becomes demanding if there are frequent changes to the system under test. It would be simpler, but equally conclusive, to check whether the interfaces work as desired (e.g. with Pact) - and everything else is left to other types of test. The talk also covers consumer-driven vs. provider-driven contract testing. There's a lot to unpack.
After a series of deep dives, it felt good to come to the surface (or even bird's eyes view) again with Six Impossible Things by Kevlin Henney. The speaker has a charming way of getting programming gospel across and scratching all the right itches.
There were a few arcade machines (Pong, Space Invaders,...) in the entrance area. Whoever achieved the highest total score over the course of the days won Lego's Pac-Man set. During the breaks, however, we were more motivated to hack the system than to actually play the games. You had to enter a personalized code and the score was transmitted to a server via QR code. Unfortunately, after dismantling the URL and trying out a few things, we did not find any obvious weaknesses. The organizers probably knew their target group too well and took precautions accordingly.
I was glad to see a vegan option on the lunch menu every day. A banality that is unfortunately often sorely missed (also in our own canteen), especially if you mistakenly market yourself to be an animal- or eco-friendly entity.
The organizers are often exceptionally sophisticated when it comes to arranging advertising space. All too often, you have to go through them several times a day (toilet, eating, drinking, switching rooms). Usually, I just try to survive the exhibitor area without being drawn into pointless marketing drivel. It's a different matter with exhibitors whose products we already use. If you have the right questions ready, it pays off that there are usually a few people from the technical areas present at the booth. At Gradle, we were therefore able to pick up valuable tips that we put into practice just a few days later.
We utilize rather simple database queries in our services, which is why we've never asked ourselves Mocks vs Testcontainers (by Ivan Ponomarev). The contract testing presented earlier also makes this question less relevant. Nevertheless, it is good to know that there are testcontainers for Postgres, RabbitMQ and the like (even GCloud) in case we ever stray off the beaten tracks.
Everything you need to know about GraalVM for Java applications by Alina Yurenko proved to me once again: the more I learn about ahead-of-time compilation in relation to Spring Boot, the more I want to finally try it out. Still not super convinced that it will bring a big advantage, but it's time to collect the data as the technical compatibility is now ensured.
I was happy that with The smart home you didn’t know you have (by César Tron-Lozai & David Sheldon) the open source home automation platform Home Assistant was prominently mentioned. For many, this was the gateway drug to open source development - and is an exciting hobby.
Please answer these 4 questions:
- Do you do continuous integration?
- Does everybody on your team commit and push to a shared mainline (base branch) at least daily?
- Do these commits cause an automated build and test?
- If the build fails, is it usually back to green within 10 minutes?
If you answered "No" at least once, then jump right into Clare Sudbery's Continuous Integration – That’s not what they meant to find out how to get to "Yes" (or whether you have to at all).
The closing keynote could not have been more perfectly chosen than The AI Elections: How Technology Could Shape Public Sentiment (by Martin Förtsch, Thomas Endres & Jonas Mayer). A thought-provoking session with everything your heart desires (education, inspiration, humor, live demos) about the benefits and hazards of AI. For me, it just highlights the need for something similar to the Hippocratic Oath for IT professionals (e.g. "I WILL NOT USE my knowledge to spread disinformation... or create confusing cookie banners.")