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.

Testing REST Services with REST Assured

RESTful service testing can be unwieldy and difficult to get started with. Providing a REST API implies using a variety of technologies and techniques such as HTTP, JSON, authentication, various payload transfer mechanisms and content types. This is where a tool that abstracts over these technical details and facilitates their application comes in handy. REST Assured is a high-level DSL for testing REST APIs. It draws upon behaviour-driven development (BDD) and hence makes for readable test descriptions. A typical acceptance test with ... 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

Keeping database schemas up-to-date with Flyway

At least ever since Ruby on Rails' Active Record Migrations put an emphasis on keeping database schemas consistent with your software's source code both during development and in production database migration tools have become a staple in modern software development. Database migration (or database refactoring as this technique is sometimes called as well) tools allow you to apply data definition language (DDL) statements like "CREATE TABLE ..." or "ALTER ..." to databases in an automated, consistent and traceable manner instead of either ... 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

Deploying Spring Boot applications as old-fashioned WAR files

Spring Boot is an opinionated convention-over-configuration framework for creating stand-alone Spring-based Java applications. Its objective is to provide you with a preselected best practice choice of libraries (both from the Spring platform and by third parties) for a given task, e.g. building a web application that connects to a database and provides REST resources creating a scheduled batch task that exports and aggregates data from various data sources providing an API that connects to SOAP Web Services It both helps you with getting started quickly and ... Read more

The Blockchain’s Potential to Change Business And Society

I'm fascinated by the blockchain and in particular the potential it holds for decentralising and disintermediating business processes. Though certainly intriguing as well I'm not so much interested in the implications the blockchain and Bitcoin, the cryptocurrency that's built on the blockchain, have for payment and financial systems. My area of interest rather is with how the blockchain enables us to rethink business processes that until now required some sort of third-party intermediary to establish trust between parties. Think of transactions in ... Read more

Spring Batch Resources: Batch Processing, ETL And Data Conversion

ETL (extract, transform, load) processes, data processing, exporting data from one business system (ERP, CRM, accounting etc.) and importing it into another are common requirements in enterprise IT. So much so that the ability to export and import data often is the key feature of enterprise software. Spring Batch is a toolkit in the context of the widely used Spring framework that allows you to define and run batch jobs and data processing pipelines. Spring Batch provides features such as: data export / ... 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

Mockito 2 now available

Last week version 2.1.0 of the Mockito testing framework for Java has been released. For more information on this latest iteration check out this page. As the name suggests, Mockito allows you to mock object behaviour during unit tests. When writing unit tests you only want to test a particular unit's behaviour (hence the name). Depending on the programming language used such a unit might be a function, a procedure or - most commonly in today's object-oriented programming environments - a ... Read more
« Previous PageNext Page »