About: Oscar Westra van Holthe - Kind

The blood of the mathematician runs thick through Oscar's veins. There are few algorithms that do not reveal themselves under his scrutiny. A shrewd observer of a problem domain with a quick mind for understanding its intricacies, Oscar is a favorite for discussing architecture issues and finding solutions for problems found.

Oscar understands the need for Don't Repeat Yourself and goes a long way towards implementing the best solution for the customer. He is not one for cutting corners, preferring the long-term solution over the quick fix.

He has a mindset for the quality approach, aspiring for high test coverage, architecture compliance and low complexity. Oscar helps his team to live up to these high standards, by coaching and mentoring.

Author Archives:

JOSS Tutorial: using JOSS to access OpenStack Storage

In Accessing OpenStack Object Storage with Java through JOSS, Robert Bor introduced the JOSS library. JOSS allows developers to connect their Java applications to OpenStack Storage. This article demonstrates how.

Making web applications available offline

With the arrival of HTML 5 (which commonly means more than just HTML), web development has become even more of a joy that it used to be. Clean semantics in HTML, elegance through CSS, new scripting possibilities, it’s all there. This blog post describes two new features, offline applications and name/value storage, which allow developers to make web applications available offline.

REST and DDD: incompatible?

The past years, we’ve seen two new terms become popular: REST (REpresentational State Transfer) and DDD (Domain Driven Design). However, where DDD is often used to prevent an Anemic Domain (now considered an anti-pattern), a domain model for REST is often anemic. This blog post explains how we can reconcile these opposites.

JavaEE 6 Web Profile and the Instant Developer Experience

When starting a new project, its common to create an "Instant Developer Experience": a new developer can get started by issuing two commands: get the code, and build&run the application. The only things needed are Java, Maven and an IDE.

Managing Complexity – Multiple Components and Release Schedules

Have you ever needed to simultaniously develop in several modules? Did those modules have their own trunk/tags/branches in subversion, their own release cycle, etc.? Did everything build with a single Maven command?

The Dependency Inversion Principle

Controlling complexity is the essence of computer programming.

— Brian Kernigan in [Kernighan-Plauger]

Advanced unit testing (with) your Spring configuration

If you drop XML and configure your Spring web application in Java, you’ll still want to test your application. In fact, you can now also test your configuration.
A previous blog post describes how.

REST webservices do not need integration tests

For REST webservices, integration tests have become superfluous. Not that testing them is not important (it is), but because we can fully test them using component tests.
This post continues our series to replace our Spring XML configuration with code and to fully test it and the code that uses it. As a finale, I’ll demonstrate how to test REST webservices during the unit/component test phase, thus reducing the amount of time spent testing.

Drop XML: configure your Spring web application in Java

Since Spring 3.0, configuration of your application context is possible in Java (using the @Configuration annotation). But it is only now maturing to a point where you can fully configure your web application, with the coming release of Spring 3.1 (milestone 2 was released just a few days ago). This blog post describes how.

Leveraging the Spring MVC 3.1 HandlerMethodArgumentResolver interface

A familiar problem when implementing a REST server, is that your framework limits what you can do. Sometimes, this problem can be mitigated (not solved) by reformulating (i.e. changing) your business needs. For example, you can reformulate save multiple changes to an invoice and its invoice lines with one click on a save button to save each of multiple changes to an invoice and its invoice lines as separate UI actions. Unfortunately, this change increases your audit trail and thus technology trumps business needs.