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.

Design Patterns: Event Sourcing and Command and Query Responsibility Segregation (CQRS)

Event Sourcing and Command and Query Responsibility Segregation (CQRS) are system design patterns that allow you to deal with event streams in a consistent manner. Common line-of-business applications typically are built using the MVC design pattern with the database tables representing the model tier in MVC as the single source of truth for the application state. Event-based systems are different - and inherently more complex - in that their single source of truth is the stream of events that led to the current ... Read more

‘Agile’ isn’t a new way of doing software development, it’s the normal way

Recently, during a conversation on software development "methodologies" (just the word "methodology" makes me cringe because it's a needlessly convoluted and complicated notion) one of the participants said something along the lines of "'Agile' isn't for everyone. Most people just aren't cut out for doing software development that way.". I strongly contest that notion. 'Agile' has become some bullshit bingo term that's slung around in order to perpetuate precisely those misconceptions the Agile Manifesto intended to upend. 'Agile' unfortunately is often seen ... Read more

Learning React Native Through Responsiveness and Instant Feedback

React Native Express is an interactive guide that enables you to learn React Native right in the browser. Getting started with React Native - and React for that matter - can be quite daunting. While the framework itself isn't all that difficult to grasp there are quite a few tools like transpilers such as Babel and state management libraries like Redux which are required for getting productive with React Native. React Native Express attempts to ease you in and make that initial ... Read more

RunKit: Instant, reproducible JavaScript playgrounds

I'm a huge proponent of the idea that programming tools should directly interact with coding and provide immediate, responsive feedback to changes. RunKit is such a tool that offers a comprehensive JavaScript / Node.js prototyping environment. The service supplies you with instant, sandboxed Node.js instances called "notebooks" that allow you to experiment with the whole gamut of NPM modules. Moreover, "from graphs and maps to low level hexadecimal inspectors" RunKit offers data visualisations for immediate visual feedback. Once done you can showcase your ... Read more

Googling For Developers

I sometimes jokingly say: "I’m not a good programmer. I just know how to use Google effectively." When programming and being confronted with an unknown error, stack trace or a specific exception message I usually turn to Google in order to find out how other developers with similar problems previously approached these issues. While at face value this might sound easy this requires experience. You have to know enough about software development in general and the environment (language, framework, library, you name it ... Read more

Interactive Flowcharts with code2flow

Visualisation often helps immensely when trying to understand complex systems and interactions. Visualising these systems and their behaviour can be a daunting task though: Covering each and every path a workflow or process might take can be quite arduous. In many cases it's not even possible to comprehensively describe a system that has not yet been implemented. Edge cases frequently only tend to surface once a software has been tried out under real conditions. Software in turn needs to adapt quickly, which all ... Read more

JSCity – Code Complexity Visualization For JavaScript Codebases

JSCity is a tool for visualising JavaScript source code complexity that uses the CodeCity metaphor. This approach makes use of the building blocks of modern cities for visualising the building blocks of software. Since in JavaScript functional programming is the predominant programming paradigm JSCity represents code artefacts like this: folders are districts files are sub-districts functions are buildings inner functions are represented as buildings on the top of their nested function / building This for example is the visualisation of the AngularJS source code. JSCity even allows you ... Read more

Anti-patterns: Rewriting Software

It's one of those fallacious patterns in software development that though well-known to cause trouble without creating any significant benefit unfortunately ever seems to truly go away: The Software Rewrite. In general, software developers tend to not particularly like working on old - or legacy - code, especially if it's not been written by themselves or if they feel that due to aspects like time and budget constraints they didn't have the opportunity to get the software architecture right from the get-go. ... Read more

Daily Standup Meetings: Anti-patterns And What to Do About Them

Daily standup meetings are a mainstay of agile software development methods, such as XP, Kanban (which used to be an inventory control system having originated at Toyota) and Scrum, of course. Given that agile development methods are by far the most dominant ones in the software industry today, it should come as no surprise that daily standup meetings are a common feature of software development processes these days. These meetings basically serve the purpose of informing everyone on the team about these 3 ... Read more

Code means communication

Writing software is all about communication. Code is a way of conveying the meaning of natural language requirements in an exact manner so that computers can make sense of the intentions of our fickle human minds and the often ambiguous ways we tend to express ourselves in. So, in that respect software development amounts to translating human concepts and notions into a language machines can understand. However, communicating with machines is only one, more technical aspect, of writing software. The by far more important ... Read more
« Previous PageNext Page »