Quality pattern 2: Automate your acceptance tests

Welcome to my second blog in the series of five quality patterns in Agile development that can help you to deliver the right software with great quality. In my previous blog, I’ve introduced Example Mapping as a method to get to specific examples for scenarios or rules that your user story is made up of. The output of the refinement sessions are your requirements and thus your tests. In this blog, we will take a further look at these test cases and why it is important to automate these acceptance tests. Not just from a development team perspective, but also what they can bring to your business.

Read more →

A layman’s introduction to socio-technical systems

Nowadays, there is an increasing interest and mentioning of socio-technical engineering, socio-technical systems. And although the words do not strike as odd on its own I personally have struggled quite a bit with the different meanings of the terms and understanding the field of socio-technical systems. So in this article, I will provide a layman’s introduction to socio-technical systems. Knowledge about socio-technical engineering can help you to understand what constraints might prevent or help you to succeed in your current project.

Read more →

How to reduce AWS Lambda latency using custom runtimes

When using AWS Lambda functions you typically want to return a response to the client ASAP. However, imagine a situation where you calculate the response for the client and want to do some actions after sending the response to the client (e.g., write some metrics). Since standard AWS Lambda functions do not allow you to execute any actions after returning the response,  the client will experience extra latency due to the other actions which must be completed first. This blog explains how to use AWS Lambda custom runtimes to reduce the added latency and still do the additional processing.

Read more →

Package management with Nix

As software engineers we use package managers on a daily basis. We use them to install dependencies we need to run and build software we write. Probably every software engineer can relate to the frustration that will eventually arise from using these package managers. Sometimes packages that seem to work on your colleagues machine just fine, are broken on yours. Even though package managers have improved substantially over time, issues like these still arise. Maybe there is some fundamental design flaw in the way we approach package management. There is a package manager that tries to do things different and it is called Nix. Let’s take a look at what Nix is and how you can use it on your machine today.

Read more →

Advent of Code, day 12: Shooting for the moon

I won’t lie. I’m usually not the most competitive person out there. But when December nears, I’m getting a bit restless. And when I run into fellow players from previous year, the conversation quickly turns to the coming season of Advent of Code. “Will you be joining again this year?”, “Have you started preparing yet?”, “Which language will you use?” or “Going for the top position again this year?” are just some of the questions asked.

Read more →

Advent of Code, day 11: to be or not to be…

Though I’m not a fanatic participant in Advent of Code I still like to join in on the fun and challenge myself to solve the puzzles posted every day. I’m one of those players that plays whenever there is time, instead of the top players that set their alarm clocks to be at the ready when the assignment gets published.

When I opened up the assignment for this morning I was pleasantly surprised to see yet another one involving our beloved IntCode computer 😉 (As Jochem already predicted in his blog)
Today’s challenge involves moving a paint robot around using an IntCode program. There was just another twist. Now the IntCode’s program needed to output to a grid from which it read via the input operation. Fortunately for day 7 part 2 I already had to create a helper function that used a generator as input instead of a fixed set of values so I could easily reuse that again.

Read more →

ResizeObserver – a new powerful tool for Responsive Web

The word “responsive” is something we don’t mention that often these days in web development, it’s a standard already. There is a vast and ever-growing variety of screens. We want to be able to support all the possible sizes and still keep a good user experience. And CSS media-queries are a great solution to this challenge. But how about responsive components? Modern web development is about components and we need a way to make them responsive as well. Today I want to talk about ResizeObserver API, a new powerful tool for Responsive Web, which in contrast to media-queries, allows detecting a size change of a particular element rather than a whole viewport.

Read more →

How to use Mycroft in a different language

Mycroft is a voice system that can be configured for any language but it requires language files and most importantly a parser for that language. I was listening to some music the other day and this one line in a song really struck me: “Praat Nederlands met me” (“Speak Dutch to me”). I have been working on a Voice Assistant built on Mycroft for quite a while now but it was always in English. So I thought “How hard can it be?”. Well it is not that hard, but I learned a lot along the way. I’ll show you the steps you need to take to achieve this followed by some insights into how language support is evolving within the Mycroft ecosystem.

Read more →

Show who is pair programming on tasks in your Azure DevOps boards

Are you using pair programming to learn from your peers, write better code and save time spent on code reviews? In that case, you might want to make it visible on your digital issue board too. However, in Azure DevOps, you can only have a single assignee per task. Through customizing your process and board you can still show who are working together on a task. Here is how to do it.

Read more →

Use Git and Markdown to Store Your Team’s Documentation and Decisions

Do you sometimes feel like Bill Murray in Groundhog Day? Reliving the same day over and over again? I sure feel like that in some discussions with my team: revisiting the same discussion multiple times, because we fail to document decisions properly. Redrawing that diagram one more time, to come to the same conclusion. Searching for that one document in your email? Sifting through several versions of the same document, not sure which version is the latest? 

Next time around you can avoid these situations, using simple tools that your team is already using: Git and Markdown. Add Architecture Decision Records into the mix to capture the important decisions and the context in which those decisions were made.

Read more →