Freelancer, Java Architect and Developer

Content in English

This is a short summary of English content on my homepage:

Content Year Description
Onboarding Tasks - Effective Onboarding in Software Development Teams 2024

Onboarding a new developer to an existing software development team is a process that aims to introduce them to and familiarize them with the project, the team, and their expected role in the team. The Onboarding Tasks Pattern is an approach where the team creates a series of exploratory onboarding tasks for new team members to help them quickly familiarize themselves with the system and the team.

Expand and Contract - A Pattern to Apply Breaking Changes to Persistent Data with Zero Downtime 2018

The Expand and Contract pattern provides a way to implement breaking changes to a system in a safe manner. The pattern is particularly helpful in an environment where maintenance downtime is unacceptable. This paper examines the details on how to apply the pattern when the structure of persistent data needs to be changed. The paper is supposed to be a useful read for every software developer who operates in such an environment.

Entity View - Simplify Data Access in Domain-Driven Applications 2015

In a domain-driven application, the Entity View pattern can be used to provide cohesive information about an entity that cannot be retrieved from the entity directly. The pattern is particularly useful if some client requires data about an entity that is stored beyond the entity's boundaries. In that case a service facade aggregates the relevant data and provides it in form of a dedicated object: an entity view.

Start Writing on Site - A Pattern to Return to a Pattern Conference 2015

This has been a fun submission to the 20th EuroPLoP conference. It gives a solution to the problem how you can increase the likelyhood to return to a PLoP conference if you are at a PLoP conference and enjoy it very much.

Highly Scalable, Ultra-Fast and Lots of Choices - A Pattern Approach to NoSQL 2012

Venturing into the NoSQL solution space for the first time brings up many new concepts and features that you may not be familiar with. How can you decide what features you need and which product to chose?

How to Write a Pattern? A Rough Guide for First-Time Pattern Authors 2011

Pattern writing is a creative, iterative process. For new pattern authors, however, it is often not obvious where to start and how to proceed. Although well-written patterns typically follow a strict format, the number of available formats push first-time authors right at the start to choose a specific format without knowing its advantages and liabilities. This paper aims at smoothing the learning curve of pattern writing by proposing a step-by-step guide that enables you to write a pattern in a simple but complete format.

Patterns for Data Migration Projects 2010

Data migration is a common operation in enterprise computing. Whenever a new system is introduced and after each merger and acquisition, existing data has to be moved from a legacy system to some hopefully more suitable target system. This paper presents several patterns that deal with the complexity involved in matching two distinct domain models and, at the same time, ensuring that the migrated data is of high quality.

Handling Application Properties - Simplify Application Customization in Different Environments 2009

This paper aims at evolving a language of patterns dealing with application properties. It contains patterns dealing with flexible ways of loading properties, providing common properties for multiple deployments and enforcing the explicit setting of some properties. Using the patterns facilitates maintenance of properties, allows for simplified refactoring and gives the possibility to keep varying environment settings under version control. As property storages, property files and database tables are discussed.

Using a Profiler Efficiently - Strategies that Help you to Find Performance Problems and Memory Leaks 2008

Sooner than later most software development projects suffer from severe runtime problems. When features are given top priority, caring for non-functional requirements such as performance or stability is most often postponed during the initial development phase. Once a system is in production, however, performance problems and memory leaks quickly catch more attention. A Profiler is a very useful development tool to find the causes of these problems. Using a Profiler is not that easy; you need good strategies to detect the actual causes. This paper gives you advice how to use a Profiler efficiently.

Shepherding Workshop at EuroPLoP 2008 2008

Collected notes for a workshop at EuroPLoP 2008 on how to become a shepherd or how to become a better shepherd, respectively. Shepherding is a process in which an experienced pattern authors gives feedback to another author who submitted a paper to a pattern conference. The shepherd works closely with the author so that he or she can improve the paper before the actual conference starts.

Object Prefetch Filter - A Pattern for Improving the Performance of Object Retrieval of Object-Relational Mapping Tools 2007

Object-relational mapping tools provide a bridge between object-oriented programming languages and relational database systems. Although the concepts of object-relational mapping are well understood, the performance of object retrieval still is a crucial point in using the tools. Prefetching objects is a means to improve the performance, in particular to avoid the so-called n+1 selects problem. This problem arises when a list of objects is retrieved from a database and for each object another database call needs to be executed to retrieve referenced objects. This paper presents a pattern that, if applied to the implementation of a mapping tool, gives application developers the choice to explicitly define for every query which part of a network of objects to prefetch.

Business Logic in the Presentation Layer - Design Patterns on the Implementation of Business Logic on the Client-Side 2006

As a general rule of thumb, business logic in a multi-layered information system should be implemented in a dedicated domain layer and be separated from the presentation layer. Although this rule has demonstrated its validity, it restricts the options for designing information systems. At times, there may be good reasons to deploy some types of business logic locally in the presentation layer.

This paper presents a collection of design patterns that address the forces of implementing business logic in the presentation layer in the context of an object-oriented business domain layer.

User Interfaces for Searching - A Pattern Language 2005

The ability to perform search requests in business data is an important asset of any information system. To be accepted by its users, an information system needs a front-end user interface that leverages the features and complexity of the back-end search facilities. Intended for GUI designers and developers, this paper proposes a pattern language for the design of such user interfaces.

Query Engine - A pattern for performing dynamic searches in information systems 2004

This paper presents an architecture pattern for information systems that require complex search capabilities. The pattern includes means to generically describe search requests, a service that interprets search requests and executes them on data sources, and strategies for transmitting results back to the requesting clients.

Binonymizer - A Two-Way Web-Browsing Anonymizer 1999

Research report, on behalf of the Venture Capital company Equinet Venture Partners AG, Frankfurt

Global Surveillance and Economic Espionage 1999

Seminar paper, written at the University of British Columbia, Vancouver

Social Impact of Y2K 1999

Seminar paper, written at the University of British Columbia, Vancouver