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.

Why Do We Still Write CRUD Applications?

Probably every software developer - since the 1990s at least - has been there once, asking him- or herself: "Why do I have to write tedious, repetitive CRUD code time and time again?" Being good, virtuous programmers some of those developers did what software development in the end mostly is about: They tried to automate a cumbersome, repetitive process that like any repetitive process should be performed by machines rather than humans. Some have succeeded - to some degree at least - ... Read more

Using Netflix Zuul As a Reverse Proxy / API Gateway

Zuul, which like the service discovery tool Eureka and the fault tolerance library Hystrix is part of Netflix' cloud orchestration stack, is a reverse proxy / API gateway. A reverse proxy conceptually works like this: A reverse proxy allows you to route requests to a single domain to multiple backing services behind that proxy. This can be conducive in situations where you want to break up your application into several loosely-coupled components that externally, that is facing the user, nonetheless act as if ... Read more

Should Web Apps Behave More Like UNIX Programs?

Recently, through various discussions about the nature of the web and web applications I came up with an intriguing (to me at least ...) idea: Web apps should behave like UNIX command-line tools. Please hear me out and let me elaborate. Probably the most widespread pattern in modern web app development is that of single-page applications (SPAs). Though that particular term isn't used as abundantly anymore as it used to be a few years ago the design pattern it promoted still persists: Web apps ... Read more

What Causes Over-engineering and How Can You Prevent It?

Last year software engineer Fagner Brack wrote an interesting and thoughtful article on "How To Accept Over-Engineering For What It Really Is" The article is very much worth the read in its entirety. There are a few key takeaways though I derived from it personally: I like the definition of over-engineering (quoted from Jeff Sternal) as "Code that solves problems you don’t have.". Fagner's conclusion is that what constitutes over-engineering depends on both context and the people involved. Over-engineering is usually brought about by unclear ... Read more

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

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

Matt Ranney @ GOTO 2016: What I Wish I Had Known Before Scaling Uber to 1000 Services

At the GOTO Chicago 2016 enterprise software conference Matt Ranney, chief systems architect at Uber and co-founder of Voxer gave a presentation on what they learned from adopting microservices on a massive scale at Uber: "To Keep up with Uber's growth, we've embraced microservices in a big way. This has led to an explosion of new services, crossing over 1,000 production services in early March 2016. Along the way we've learned a lot [ ... ]" Now you probably aren't Uber but the ... 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

Internal, company-specific software frameworks are evil

OK, I'm exaggerating a little here, company-specific software frameworks aren't exactly evil as in the true definition of the word but who isn't fond of the occasional hyperbolic headline? What I'm trying get across is that most of the times, software frameworks developed within an organization specifically for solving that organization's business problems in a reusable, maintainable manner do more harm than good. Everybody who's been exposed to enterprise software development for longer than a very brief period has come across them in ... Read more
« Previous Page