Taking Ownership of your Workflow

As a developer, you are constantly learning and improving. There are a lot of different benchmarks you are supposed to fulfill. When you are applying for a job, you are supposed to check all the boxes. Do you know Java? Do you have experience working in an agile environment? Design patterns? TDD? In consulting, you get to do this again with every new customer and project. But what then?

In our daily business, things get a bit fuzzier. It boils down to perceived competence and speed. Does this developer know what they are talking about? Do they get work done on time? The first boils down to the checkboxes again. The latter, though … How do you become faster? Without compromising on quality, that is.


Busyness as usual

Are you busy? I’m glad that you found some time to read this article. It has an average reading time of 10 minutes. Sounds like a short amount of investment in time.

But, likely, you will not make it till the end, some important messages are dropping in already in parallel, or your next meeting will start in five minutes. In this case, this article may end up on one of your reading lists for later. You want to read it when you have some time. How likely is it that you will find this time? How many articles or tasks are already waiting for this particular time slot?

So far, everything is busy as usual. You are busy as usual!


Knowledge Management for Software Engineers

… or: How I learned to stop worrying and love the Zettelkasten.

Everyone has been there. An error message pops up, and recognition begins to dawn. I have seen this error message before, you think. But where?

You google it. The Stackoverflow links for this topic are all purple. You have been down this rabbit hole before. You remember. It was something weird … involving a specific version of … something. You recall solving this error message to get another error message to solve to get yet another. You remember solving the problem eventually. You also remember it took you more than a day, but you have no clue where to find the solution.


Nats JetStream with NestJS

In the first blog post of this series, we learned how to send serialized data from a React frontend to a NestJS backend with Axios and Cap’n Proto. This blog post will focus on propagating the received data from service to service in a Kubernetes environment using NestJS clients coupled with a Nats JetStream message bus. 

I will explain how to install a properly configured Nats JetStream message bus in a Kubernetes cluster using Helm and Ansible and how to connect the NestJS clients to JetStream afterward. To avoid complexity, we’ll use Minikube, an easy-to-install Kubernetes cluster with just one node. We will also partially use the code and generated data from the last blog article. Both code and data are available on GitHub.


The Tricky Thing About Expectations

Expectations are everywhere. Especially in business, one overly used term is “managing expectations.” We have to manage the expectations of our stakeholders, business, and users – to name a few. 

The unspoken truth is that it is not possible to manage expectations. They are something personal that lives inside a person’s perception, and you can try, but you can hardly change or even manage them. So it is a good idea to stop thinking about expectations management and find a more accessible and objective way of aligning expected outcomes and results.


We Need to Align!

Please answer yourself a question: How many meetings “just to align each other” did you have in the last week? Feel free to check your calendar and think about all the meetings you had with the initial purpose of alignment. All these fancy circles, squads, all-hands, or whatever they called, meetings consuming a lot of working time during a week. They are set up with the best intentions, but often they feel awkward and somehow useless because they are not fulfilling the promise they brought – alignment.

Don’t get me wrong! Alignment is important, and it is definitely one of the key drivers in agile environments. But the more I observe attempts to align in the wild, the more I see the point that there are a lot of common misunderstandings of what alignment is about.


Practice Illusion

Do you know managers or salespeople talking about their real practical experiences? How many times have you had the feeling that these stories were not practical at all? 

Welcome to what I call „practice illusion“. But what is the problem, and how can you solve it?


Working efficiently with GraphQL-CodeGen types in TypeScript

In our project, we’re using GraphQL, and we’re using graphql-codegen to generate types for our queries. While this is very convenient, it’s almost impossible to extract sub-types from these generated types. Let me explain.


Audit Events in your GraphQL Stack with the postgraphile-audit-plugin

In many projects, one needs to track changes in data in your database. With pgMemento, you can automatically generate audit information like that. It extends your PostgreSQL tables by an audit_id column, which in turn refers to the specific audit event in the pgMemento tables, which are by default stored in a separate database schema.

So far, so good.