All posts by Evert Wagenaar

The Jva Spring MVC Framework logo


Lately I followed this Spring tutorial step-by-step and learned about:

      • Aspect Oriented Programming
      • Application Context and Dependancy Injection
      • Data Acess (JDBC in Spring)
      • Autowiring of subclassed methods.
      • Inversion of Control (IoC).

My Conclusion

The returning visitors of this blog probably know I’m not a ‘big fan’ of frameworks. Spring however combines the flexility of using your own POJO’s with Dependancy Injection and an easy to use XML configuration.

In my future projects I will definitely use Spring!


Selling Sambal in the Philippines


Unlike Indonesia, the Philippines don’t know the tasty, sweet and spicy Sambal. Instead they are messing around with Chilly from their gardens!

Time to change!

We tried our home-made recipe with 10 families and they keep asking us daily for a new supply!

Time to start a professional production factory!

First we’ll start at a small scale and supply the local shops. After this has proved to be succesful and the market increases we will expand our production capacity and grow to the next level.  The SM Supermalls, the largest in SE Asia with over 200.000 shoppers a day!


Send an e-mail to

Outsourcing from the Philippines. logo

Outsourcing is an agreement in which one company hires another company to be responsible for a planned or existing activity that is or could be done internally.

It often involves the contracting of a business process (e.g., payroll processing, claims to process), operational, and/or non-core functions, such as manufacturing, facility managementcall center support). The term “outsourcing” came from “outside resourcing” and dates back to at least 1981. Outsourcing sometimes involves transferring employees and assets from one firm to another.

Outsourcing is also the practice of handing over control of public services to private enterprises.

Outsourcing includes both foreign and domestic contracting, and sometimes includes offshoring (relocating a business function to a distant country) or nearshoring(transferring a business process to a nearby country).

Offshoring and outsourcing are not mutually exclusive: there can be one without the other.

Here in the Philippines, we have access to a fast amount of highly qualified Software Developers in virtually every discipline.

Their rates are just 10% of EU rates. As a Consultant from Europe with over 20 years of business experience, I can assess each candidate for suitability for your project.

The advantages of hiring people from the Philippines:
  • No language barrier, English is their (second) native language. Studying English starts here at basic school so every child speaks and understands English at 8 years of age! Unlike Indians who have a bad accent which is hard to understand for native speakers!
  • No culture barrier, unlike India they tell you openly what’s possible and what are the limits. For questions, they will directly contact you, the customer. Every expat in India will sooner or later freak out because Indians (due to their feudal past won’t say ‘no’ ever! This can lead to difficult situations, for example when the expat asks the airport employee what time his flight will leave. The employee knows that the flight is canceled but answers: ‘Very soon sir!’ Many expats based in India who are retired now live in mental hospitals!


With our experts this will never happen to you!

Laboratory Information Management Systems(LIMS)

laboratory information management system (LIMS), sometimes referred to as a laboratory information system (LIS) or laboratory management system (LMS), is a software-based solution with features that support a modern laboratory’s operations. Key features include—but are not limited to—workflow and data tracking support, flexible architecture, and data exchange interfaces, which fully “support its use in regulated environments”. The features and uses of a LIMS have evolved over the years from simple sample tracking to an enterprise resource planning tool that manages multiple aspects of laboratory informatics.

Not all LIMS systems comply with GLP standards, which is essential for Pharmaceutical Researh and Pharmaceutical production companies who need to comply with FDA requirements.

One of the most cost-effective validation strategies is to follow the Good Automated Manufacturing Practice (GAMP) Guide for Validation of Automated Systems. The Guide draws together key principles and practices and describes how they can be applied to determine the extent and scope of validation for different types of automated systems. The principles of GAMP concern five different software categories, namely operating systems, hardware and instrument embedded software, COTS, configurable systems and customized LIMS.

Following the Guide provides significant cost benefits by aiding the production of systems that are fit for purpose, meet user and business requirements and have acceptable operation and maintenance costs. The time and effort taken to achieve compliant systems is also reduced and compliance with regulatory expectations is improved by defining a common and comprehensive life cycle model. Thermo Fisher Scientific offers purpose-built or COTS solutions — such as Darwin LIMS™ for pharmaceutical manufacturing R&D and QA/QC and Watson LIMS™ for Bioanalytical laboratories — to reduce the complexity and risk of system validation.

In order to achieve validation with the minimum cost possible while also speeding up the whole project, organizations should purchase validation services only from experienced providers. The ideal vendor should be fully aware of the GLP regulations, the principles of GAMP, the validation needs of the specific application area as well as the operation and usability of the specific application software that needs to be validated. Additionally, the vendor should possess relevant information technology expertise and be knowledgeable of validation industry best practice. Finally, the vendor should comprehend the internal validation procedures of the specific organization.

Effective, timely validation can be most effectively accomplished by a validation team that has been thoroughly trained through a course that brings together the different experiences of validation approaches of the team members so that everybody agrees a common approach. Furthermore, cost-effective validation can be achieved via standardization of a single LIMS solution across all laboratory facilities of an organization or via rollout of the same system sequentially. Following one of these strategies will greatly reduce validation costs as a percentage of the overall project expenditure since only minimal acceptance testing is needed at every site and most testing can be cross-referenced.

Risk analysis may be also used but always with caution. It is true that many GLP laboratories process low risk records, however only functions, not records, can be validated. In the LIMS area it is common for the same generic functions to be used across all records, whether high or low risk. Therefore all functions must be considered high risk and subject to full validation. It can be more efficient to conduct a high-level risk analysis of the entire LIMS, which acknowledges that the whole system is high risk, rather than conduct a detailed risk analysis of every function which eventually reaches the same conclusion, but with more effort(1).

Organizations should also make appropriate use of the testing that the vendor has already carried out. For this reason, they should consider purchasing a vendor-supplied validation kit and also avoid validating functionality which they do not intend to use.

Finally, organizations should ensure that the validated state of the systems is maintained. The principles of GAMP define that this is achieved by ensuring that existing operational procedures are kept up-to-date. Maintenance of the validated state is primarily the responsibility of the system owner, and is typically achieved by defined service-level agreements with, for example, the IT function. For COTS, the vendor support package is also a vital component of the overall system maintenance.


Compliance with the principles of GLP is of high importance when registering or licensing pharmaceuticals, veterinary drugs. LIMS solutions have emerged as the most appropriate tool to assist towards compliance with the principles of GLP. Such systems can efficiently and safely record, report, store and retrieve study plans, raw data and final reports, thereby addressing the complexity of the regulations.

In order to comply with the principles of GLP, LIMS solutions need to be fully validated. This may be a particularly expensive process but costs can be considerably minimized by following certain strategies; adhering to the principles of GAMP, sourcing validation services from experienced vendors, employing a consistently trained validation team, standardizing on a single solution and ensuring long-term maintenance of the validated state of the systems.

How we can help

  • We can advise you in choosing the most cost-effective LIMS for your organization.
  • Where possible we make use of Open Source solutions and adjust these to meet your specific requirements.

Pharmaceutical Registration Services

  1. Pharmaceutical Registration Consulting.

From 1989 to 2000 I was a pharmaceutical researcher at R&W Bio Research, a Netherlands based CRO. See also this post. During this time I was (amongst others) responsible for (veterinary)  Pharmaceutical registration.

Starting with part 2 (pharmaceutical part) and later on also Pharmacokinetics and Pharmacodymics and later on also safety studies (GLP, Good Laboratory Practice). I also conducted  clinical trials as well as Bioequivalence studies.

After one year in the lab as active researcher I became Study Director for analytical method development using GC, HPLC, MS, GC-MS and LC-MS.

During this period me and  my team developed and validated all over 25 analytical methods for determining pharmaceutical active ingredients in body tissues, blood, urine, faeces and the environment and over 300 analytical methods to measure the concentration of active ingredients in the end-products (pharmaceutical forms).

Finally I registered about a hundred Pharmaceutical products for our customers according to international FDA requirements.

How can I help you?

We can help you with the following services:

We are specialized in concentrated multivitamins and minerals for poultry.

Poultry is the food of the future (Think of everything that can be nade of it. MacNuggets, McChicken, KFC, etc. etc.) and has an enormous potential! Think of a country like China. With almost 1.5 billion people from which maybe a few percent eat chicken products daily the potential market is huge! Billions of US dollars, just by adding 1% to this market!

Furthermore we offer:

As a Consultant I’m not doing the lab work myself anymore. Research projects (except Online, which I still do myself) are outsourced to different CRO’s. This allows us to interact directly with you, the customer and advise you on marketing strategies.

MapReduce logo

MapReduce in a nutshell

We talked about MapReduce in previous articles. Many people asked me since then what it is. MapReduce is a programming model for processing huge amounts of data in a parallel and distributed. In this model, there are two tasks that are undertaken Map and Reduce and there is a map function that processes a key/value pair to generate a set of intermediate key/value pairs and a reduce function that merges all intermediate values associated with the same intermediate key. MapReduce is used by Hadoop.

example– Consider the problem of counting the number of occurrences of each word in a large collection of documents.

The map function emits each word plus an associated count of occurrences (just ‘R’ in this simple example). The reduce function sums together all counts emitted for a particular word.



Professionals Wanted! logo

We are hiring Professionals!

For our customers in EU, ASIA, and EMEA We are looking for:

Software Developers / Architects (M/F)

Preferrably living in the S/E Asia Area.


  • College degree in a Scientific or Technical area.
  • Affinity with automized processe(s).
  • Pre: Previous experience in consulting.
  • 3++ years of Software Development (Java, J2EE, J2ME, Android, IOS, Objective C, C#, C++).
  • Excellent communicative skills.
  • No 9 to 5 mentality.
  • Willing to work overseas for longer periods.

Salary 500 ₱++ per hour, depening on skills and experience.


Send your CV and motivation by e-mail to

NOTE: ONlY APPICATIONS WITH CV WILL BE ACCEPTED!!!!! Mails without CV will be rejected!

Why would you want Java FX?

Why would you want Java FX?


The reasons why you should switch to JavaFX are many. Here are just a few:

  • The GUI has a much more fresh and modern look compared to Swing or AWT. (To me it looks more to MacOS Aqua).
  • Lightweight and hardware accelerated.
  • Easier and faster to develop thanks to Oracle Theme Builder.
  • CSS Support (Desktop and Web).
  • Ready to use GUI Widgets (like the calendar).
  • Accurate and fast positioning of Desktop (and web) widgets.
  • 3D support.
  • Supports a native XML format named FXML. It’s somewhat similar to HTML, Which makes it easy for we developers to work with.



JavaFX, the new platform for creating and delivering desktop applications


JavaFX is a software platform for creating and delivering desktop applications, as well as rich Internet applications (RIAs) that can run across a wide variety of devices. JavaFX is intended to replace Swing as the standard GUI library for Java SE, but both will be included for the foreseeable future. JavaFX has support for desktop computers and web browsers on Microsoft Windows, Linux, and macOS.


Similar to Eclipse SWT, It’s written for the Desktop and replaces Swing and AWT. Next to the Desktop, JavaFX can also be used to be used with Webbrows.

The code below shows how a Window named ‘HelloWorld’ with a button ‘HelloWorld’ named  is created. When the button is clicked, the console prints Hello World.

package javafxtuts;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class JavaFxTuts extends Application {
    public JavaFxTuts()
        //Optional constructor
    public void init()
         //By default this does nothing, but it
         //can carry out code to set up your
         //It runs once before the start
         //method and after the constructor.
    public void start(Stage primaryStage) {
        // Create the Java button
        final Button button = new Button();
        // Setting text to button
        button.setText("Hello World");
        // Registering a handler for button
        button.setOnAction((ActionEvent event) -> {
            // Printing Hello World! to the
            // console
            System.out.println("Hello World!");
        // Please note that this Synax is a
        // Lambda Expression 
        // Initializing the StackPane class
        final StackPane root = new StackPane();
        // Adding all the nodes to the StackPane
        // Creating a scene object
        final Scene scene = new Scene(root, 300,
        // Adding the title to the window
        // (primaryStage)
        primaryStage.setTitle("Hello World!");
        // Show the window(primaryStage);
    public void stop()
        //By default this does nothing
        //It runs if the user clicks the 
        //go-away button
        //closing the window or if 
        //Platform.exit() is called.
        //Use Platform.exit() instead of
        //This is where you should offer to save
        //any unsavedstuff that the user 
        //may have generated.
     * Main function that opens the "Hello
     * World!" window
     * Note that Main starts the execution of the
     * Application, just as in any regular 
     * Java Application.
     * @param args the command line arguments
        public static void main(final String[] 
        arguments) {
    // The actual start takes place with the
    //  launch(arguments);
    //  launch(arguments); Command:
References and Tutorials

There exist many on the web: