<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Blog on Scale X</title><link>/blog/</link><description>Recent content in Blog on Scale X</description><generator>Hugo</generator><language>en</language><atom:link href="/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>2 years with Shape-Up, and why we switched back</title><link>/blog/2-years-with-shape-up/</link><pubDate>Tue, 09 Dec 2025 07:00:00 +0000</pubDate><guid>/blog/2-years-with-shape-up/</guid><description>&lt;p>&lt;figure>
 &lt;a class="paragraph-image">
 &lt;img data-src="/img/winding-path.jpg" data-action="zoom" alt="" class="lazyload">
 &lt;/a>
 
&lt;/figure>&lt;/p>
&lt;p>After 2 years, we decided to end our journey with the Shape-Up software development methodology. We hoped the longer cycles would help us ship projects faster, but ultimately we found the rigid structure wasn&amp;rsquo;t the right fit for our evolving needs. Here are my takeaways on why it was no longer a good match and what I learned from the experience.&lt;/p>
&lt;h3 id="why-we-tried-shape-up">Why we tried Shape-Up&lt;a class="anchorjs-link" href="#why-we-tried-shape-up">&lt;/a>&lt;/h3>&lt;p>At Customaite, we were sometimes struggling with projects that dragged on across multiple sprints and it felt we kept adding on to work-in-progress. Shape-Up&amp;rsquo;s promise of longer focus periods and value-based prioritization seemed very appealing to tackle these challenges in a different way.&lt;/p></description></item><item><title>Simplifying Code: migrating from Reactive to Virtual Threads</title><link>/blog/simplifying-code-journey-from-reactive-to-virtual-threads/</link><pubDate>Wed, 13 Aug 2025 09:00:00 +0000</pubDate><guid>/blog/simplifying-code-journey-from-reactive-to-virtual-threads/</guid><description>&lt;p>&lt;figure>
 &lt;a class="paragraph-image">
 &lt;img data-src="/img/virtual-threads-problem.jpg" data-action="zoom" alt="" class="lazyload">
 &lt;/a>
 
&lt;/figure>&lt;/p>
&lt;p>Four years into building &lt;a href="https://customaite.ai" target="_blank">Customaite.ai&lt;/a>, we made the decision to migrate away from reactive programming. Here&amp;rsquo;s why, and how Java&amp;rsquo;s Virtual Threads made it possible without needing to trade-off performance.&lt;/p>
&lt;p>Recently I gave a talk on how the new Java Virtual Threads feature allowed us to simplify the codebase at Customaite. I spoke about our journey from migrating away from a reactive framework (Quarkus Mutiny) and which additional patterns we needed to address some gaps in the standard library.
The discussion afterwards, with Burr Sutter, went into detail on the origin of the reactive web server and why complicated reactive frameworks may not make sense for you.&lt;/p></description></item><item><title>Beyond the beep and saving sleep: optimizing the On-Call experience</title><link>/blog/2024-02-28_beyond-the-beep-and-saving-sleep--optimizing-the-on-call-experience-84776f2e513c/</link><pubDate>Wed, 28 Feb 2024 12:56:41 +0000</pubDate><guid>/blog/2024-02-28_beyond-the-beep-and-saving-sleep--optimizing-the-on-call-experience-84776f2e513c/</guid><description>&lt;p>&lt;figure>
 &lt;a class="paragraph-image">
 &lt;img data-src="/img/birds.png" data-action="zoom" alt="" class="lazyload">
 &lt;/a>
 
&lt;/figure>&lt;/p>
&lt;p>Behind the curtains of any application there’s a team of on-call engineers keeping the lights on. A bad on-call experience for any team could become a strong driver for employee unhappiness and churn, and result in increased downtime.&lt;/p>
&lt;p>Here follow some lessons I’ve learned from the trenches in small start-ups and larger engineering teams, to improve your on-call shift experience and remediation time for production issues and make sure you’re spending on-call efforts on what has the most impact.&lt;/p></description></item><item><title>How to make software architecture trade-off decisions</title><link>/blog/how-to-make-architecture-trade-off-decisions-cb23482e1dfe/</link><pubDate>Thu, 24 Feb 2022 04:27:07 +0000</pubDate><guid>/blog/how-to-make-architecture-trade-off-decisions-cb23482e1dfe/</guid><description>&lt;p>&lt;figure>
 &lt;a class="paragraph-image">
 &lt;img data-src="/img/1__FvGsEux3Z8tA7O0ePojbOA.jpeg" data-action="zoom" alt="" class="lazyload">
 &lt;/a>
 
&lt;/figure>&lt;/p>
&lt;p>How do you come up with &lt;em>the best&lt;/em> software solution for a problem and pitch that choice to both your technical and non-technical peers in your organization? And what are some common pitfalls in comparing your options?&lt;/p>
&lt;p>A simple framework that has worked well for me for all kinds of technical decisions is prioritizing a set of criteria and mapping the possible solutions to them in tiers. Here’s how it goes:&lt;/p></description></item><item><title>building bringr: learnings from a corporate start-up</title><link>/blog/building-bringr-learnings-from-a-corporate-start-up-264b0f0ace55/</link><pubDate>Sun, 03 May 2020 12:56:41 +0000</pubDate><guid>/blog/building-bringr-learnings-from-a-corporate-start-up-264b0f0ace55/</guid><description>&lt;p>Four years ago we embarked on an innovation project within bpost, the Belgian post group. You can send parcels through the mail, but what about items which do not easily fit in a small box such as bouquets, ping-pong tables or bicycles for your family trip at the beach? Could we bring these people into contact with drivers who would like to perform these services for a fee? Enter &lt;a href="https://www.vrt.be/vrtnws/en/2016/06/18/have_your_neighbourdeliverapostpackagewithbringer-1-2688087/" target="_blank">bringr,&lt;/a> a crowdsourcing platform for deliveries.&lt;/p></description></item><item><title>On building high performing teams, resilient systems and micro-frontends</title><link>/blog/on-building-high-performing-teams-resilient-systems-and-micro-frontends-6ead0af889bf/</link><pubDate>Sun, 08 Mar 2020 21:57:46 +0000</pubDate><guid>/blog/on-building-high-performing-teams-resilient-systems-and-micro-frontends-6ead0af889bf/</guid><description>&lt;p>This week I attended the software engineering conference QCon in London. Like &lt;a href="https://medium.com/@alex.wauters/the-main-stories-from-qcon-london-19-6d9b90ce2919" target="_blank">last year&lt;/a>, I noticed a further trend in moving away from &lt;em>more shiny tools!&lt;/em> towards how to more effectively guide teams to deliver value (using whatever tools). Here are my main take-aways on the themes which resonated with me the most: building resilient systems for humans, building high performing teams and whether or not your frontends are safe from the microservices virus.&lt;/p></description></item><item><title>5 learnings from making a chatbot count free parking spots through cameras</title><link>/blog/5-learnings-from-making-a-chatbot-count-free-parking-spots-through-cameras-f80a7af4f579/</link><pubDate>Thu, 24 Oct 2019 14:38:26 +0000</pubDate><guid>/blog/5-learnings-from-making-a-chatbot-count-free-parking-spots-through-cameras-f80a7af4f579/</guid><description>&lt;h3 id="creating-an-automated-parking-attendant">Creating an automated parking attendant&lt;a class="anchorjs-link" href="#creating-an-automated-parking-attendant">&lt;/a>&lt;/h3>&lt;p>As our company has been growing over the years, the parking lot has gotten more crowded. If it’s full you’ll need to back out and drive to the new building, located down the street. As you are driving you may wonder, ‘Should I head to the second lot straight away, or take my chances with the main parking lot?’&lt;/p>
&lt;p>Wouldn’t it be nice if we could pose this question to the voice assistant on our phones and spare us the detour?&lt;/p></description></item><item><title>How to get started with Threat Modeling, before you get hacked.</title><link>/blog/how-to-get-started-with-threat-modeling-before-you-get-hacked-1bf0ea3310df/</link><pubDate>Wed, 26 Jun 2019 11:01:03 +0000</pubDate><guid>/blog/how-to-get-started-with-threat-modeling-before-you-get-hacked-1bf0ea3310df/</guid><description>&lt;p>If you want to achieve security by design in your project and mitigate cyber threats before they hit your applications, you will need to discuss these risks with your team and plan ahead. If you don’t know how to get started to get security from an afterthought to a feature, this guide is for you.&lt;/p>
&lt;p>By the end you should be able to organize your first threat modeling session, to get to a shared understanding in your team of the security threats and agree with the business stakeholders on what you will do to mitigate them.&lt;/p></description></item><item><title>Lessons learned at CraftConf—the new face of software architecture and making the right decisions</title><link>/blog/lessons-learned-at-craftconf-the-new-face-of-software-architecture-and-making-the-right-decisions-3bb2601d110e/</link><pubDate>Sat, 18 May 2019 11:22:11 +0000</pubDate><guid>/blog/lessons-learned-at-craftconf-the-new-face-of-software-architecture-and-making-the-right-decisions-3bb2601d110e/</guid><description>&lt;p>Craft Conference 2019 took place last week in Budapest, and I had a blast. It’s a conference focused on software craftsmanship; with several talks, meetups and discussions taking place over two days in a lovely train museum.&lt;/p>
&lt;p>&lt;figure>
 &lt;a class="paragraph-image">
 &lt;img data-src="/img/0__Gh433ZLAj3vu__px9.jpg" data-action="zoom" alt="" class="lazyload">
 &lt;/a>
 
&lt;/figure>&lt;/p>
&lt;p>Here are my takeaways from the stories discussed at Craft, divided into three themes: the new face of software architecture and technical leadership, choosing the right layers of abstraction and breaking rigid rules.&lt;/p></description></item><item><title>How to integrate a Firebase web app with Azure Active Directory</title><link>/blog/how-to-integrate-a-firebase-web-app-with-azure-active-directory-b5c0f01a0c24/</link><pubDate>Sun, 14 Apr 2019 16:57:07 +0000</pubDate><guid>/blog/how-to-integrate-a-firebase-web-app-with-azure-active-directory-b5c0f01a0c24/</guid><description>&lt;p>&lt;figure>
 &lt;a class="paragraph-image">
 &lt;img data-src="/img/1__fuetmY7R7ua__viLxffXTjg.png" data-action="zoom" alt="" class="lazyload">
 &lt;/a>
 
&lt;/figure>&lt;/p>
&lt;p>&lt;a href="https://firebase.google.com/" target="_blank">Firebase&lt;/a> is an application platform from Google which offers many useful services to get your mobile or web app project started up quickly. To authenticate your users, the Firebase Auth service offers registration screens and authorization functionalities. You can link Firebase Auth with a public sign-in provider (such as Google or Facebook log-in) but unfortunately Firebase auth does not support out-of-the-box integration with a custom OpenID Connect provider, which are often used to authenticate employees within an organization.&lt;/p></description></item><item><title>The main stories from QCon London ’19: building microservices the right way</title><link>/blog/the-main-stories-from-qcon-london-19-6d9b90ce2919/</link><pubDate>Sun, 10 Mar 2019 17:16:13 +0000</pubDate><guid>/blog/the-main-stories-from-qcon-london-19-6d9b90ce2919/</guid><description>&lt;p>The QCon Software Development Conference took place this week in London. Three days of interesting talks left me with a lot to digest, here are my takeaways on the recurring themes of the conference.&lt;/p>
&lt;h4 id="how-to-use-your-shiny-new-toysright">How to use your shiny new toys right&lt;a class="anchorjs-link" href="#how-to-use-your-shiny-new-toysright">&lt;/a>&lt;/h4>&lt;p>The organizers of the event, InfoQ, choose to focus the content on the topics they consider to be in the Innovator and Early Adopter stages of the software adoption graph. The latest &lt;a href="https://www.infoq.com/articles/architecture-trends-2019" target="_blank">version of their graph&lt;/a> looks like this:&lt;/p></description></item><item><title>Data Mining CVs: Tools &amp; Lessons learned</title><link>/blog/moving-from-docx-cv-documents-to-a-web-app-cleaning-and-extracting-knowledge-4cb12b976223/</link><pubDate>Sun, 10 Mar 2019 15:09:25 +0000</pubDate><guid>/blog/moving-from-docx-cv-documents-to-a-web-app-cleaning-and-extracting-knowledge-4cb12b976223/</guid><description>&lt;p>Organizations often possess a lot of data that’s being stored in unstructured formats. Most of the time, this involves data that people were able to enter as free text, such as e-mails, call center logs, presentations, manuals etc.&lt;/p>
&lt;p>In this example, I show what I used to parse resume and CV documents and extract the skills listed by my consultant colleagues at AE. This helped us move from manually wrangling .docx files to a new UX-friendly custom web app. With everyone’s skills are already filled in along with suggestions to the user for new skills, the transition to use the new tool is a lot smoother.&lt;/p></description></item></channel></rss>