my blog. for you.

Let’s talk digital.

I’m an independent IT consultant and entrepreneur in the Internet and software business. I’m interested in design, enterprise applications, web apps and SaaS products. I design and develop business solutions and applications. I help companies in terms of software quality and knowledge transfer, e.g. with Angular and Spring Boot.

Automating Processes: Meeting Notes

One of the key benefits of business software, or as a matter of fact, any software, is automation of tedious, repetitive tasks. One of the three great virtues of a programmer according to Perl creator Larry Wall is laziness as defined in: "The quality that makes you go to great effort to reduce overall energy expenditure. It makes you write labor-saving programs that other people will find useful and document what you wrote so you don't have to answer so many ... Read more

Keeping a Record of Software Architecture Decisions

The need for asynchronous communication in organisations has become particularly obvious since 2020, when remote work and distributed work environments rapidly became the default setting for knowledge workers. Asynchronous communication essentially means that instead of exclusively communicating objectives, goals and the way by which to achieve them in-person (i.e. synchronously with everyone involved present at the same time - whether on-site or in a virtual space such as Slack or Zoom) we try and keep a digital record of decisions, the decision ... Read more

Working Across Timezones in Remote Work Settings and Distributed Environments

When working in a distributed environment or remote work environment, as is increasingly - and quite fortunately - becoming the default for knowledge workers, and the software industry in particular, chances are, rather sooner than later you'll be collaborating across timezones. I'm currently collaborating with people from EDT, GMT, CEST, MYT, JST, and AEST timezones, for instance. Asynchronous communication is crucial in a remote work setting already when no time differences are involved. It becomes absolutely vital when people from different timezones depend ... Read more

Cloud Design Patterns

In the past few months, I've been working a lot with distributed applications and more complex cloud architectures, both in terms of Stratospheric - From Zero to Production with Spring Boot and AWS (the eBook I'm currently writing together with Tom Hombergs and Philip Riecks) and client work. Microsoft's library of Cloud Design Patterns (as previously mentioned in this blog post) is a collection of cloud-related software and infrastructure design patterns that can help you with weighing up the merits of common ... Read more

Push Notifications with Amazon MQ – Sample From “Stratospheric – From Zero to Production with Spring Boot and AWS”

The following is an excerpt from the chapter on "Push Notifications with Amazon MQ" from the eBook "Stratospheric – From Zero to Production with Spring Boot and AWS" I'm currently writing together with Tom Hombergs and Philip Riecks. You can get the eBook over at Leanpub. Push Notifications With Amazon MQ As discussed in the chapter "Sharing Todos with SQS and SES" we might want to share our Todos with others. Being able to share Todos is already quite helpful for working on tasks ... Read more

Blogumentation Revisited

Some time ago I wrote about a process called "blogumentation": Derived from the insight that arguably the best way to learn something and to internalise knowledge is to write about it and to try and explain that knowledge to others, blogumentation essentially means writing about a subject matter (e.g. a solution to a particular programming problem or a new practice you've just learned about) that you consider worth documenting and publishing the result. It means that instead of documenting something just for ... Read more

CORS: What It Is and How It Works

Expanding on last week's article on best practices for REST API Design I'd like to point to a specific aspect working REST APIs frequently entails: A browser security feature called "Cross-Origin Resource Sharing (CORS)". This feature allows you to define which resources provided by a web application are supposed to be accessible from which origin, which in turn typically is comprised of protocol, host / domain name and port. This website's origin for example is https://bjoernkw.com:80 (port 80 is the default port ... Read more

REST API Design: Best Practices

It's probably safe to say that REST (REpresentational State Transfer - originally described by Roy Fielding) is the most widely used architectural pattern when it comes to APIs in web application contexts. From statelessness, to self-descriptive messages, and hypermedia as the engine of application state (HATEOAS) REST comes with quite a few principles, constraints, patterns, and flavours, not all of which are used or applied consistently with each REST API. REST often is a rather loosely-applied architectural pattern or a continuum, on ... Read more

Stratospheric – Almost in Orbit: Three More Chapters Available

Last week, we released the fourth version of of our eBook "Stratospheric - From Zero to Production with Spring Boot and AWS"! Again, about two months have passed since the last release in February 2021. We hope that you like the new content we've been working on during that time. These are the new chapters you'll get with the latest update: ​ Building a Continuous Deployment Pipeline: Software delivery performance is highly correlated with organizational performance, so we'll want to deploy often. That means ... Read more

A Simple Yet Powerful Tool: Decision Tables

Decision tables are a tool for specifying which actions to perform given a number of conditions. They represent business logic in terms of rules for connecting actions with required conditions for those actions. While they might appear deceptively simple and trivial they can be a tremendously powerful tool for defining business logic and certain types of software requirements. This article on Decision Table Patterns by Hillel Wayne describes the general concept as well as patterns, techniques, and best practices for using decision ... Read more
Next Page »