I am available on a part-time basis for consulting, development, coaching, and troubleshooting. Rates vary based on contract length, contact me with project details for a quote.

Geografically, I can 'reach' most of the Netherlands and in Germany most of the Ruhr area and Cologne; for interesting projects, I'll happily telecommute to other parts of the world.

Consulting

The term 'consulting' has been overloaded beyond recognition, to include probably even janitorial tasks. My consulting services are a bit stricter defined:

Technology
Often, big decisions need to be made at the start of projects: which platform, which language, which tools? Where these questions fall within my core competencies (distributed systems like Jini/JavaSpaces, networks, persistence systems, Unix), I am able to help with decision support and architectural sketches.
Open Source strategies
Having worked with, and often even 'bet the farm on', Open Source products, I can help your organization to chart a course through these often muddy waters. I believe in the usefulness of Open Source, but being an entrepeneur myself I know that first, a business case must be made.
Internet strategies
As CTO of an internet company, and previously CTO of a software house that was targeted at Application Service Providers, I am in a good position to help you deciding which parts of your business, if any, could benefit from using the Internet to help generate value.
Security
It's a big word these days, and there is a lot of bad stuff on the market. As an independent consultant, I can help separating the chaff from the wheat. Note that I do have a tendency to recommend Open Source systems - please don't contact me if you've set your mind on Windows or other proprietary systems for your security solution.

Development

As member of an existing development team, or alone, I'm available to actually implement all the wonderful stuff that consultants dream up. See my resume for a list of languages and environments I'm familiar with (I greatly prefer Smalltalk, Python over most other languages I know).

Another option is to let me act as a contractor. For interesting projects I can create a high-quality team and still quote very sharp prices. Contracting is limited to projects where the customer agrees to cooperate on an agile methodology.

Coaching

I firmly believe in what is called today 'agile methods'. Putting aside a lot of fluff, here's what I think the core theme is: given the fact that a software development project is often done by a team that doesn't possess all the knowledge it would ideally have, a development method can do two things to make sure that this situation doesn't result in mistakes:

  1. Build in procedures, reviews, and other safeguards to make sure that mistakes are caught; or
  2. Plan the project so that on-the-job training becomes possible and the team possesses 'just-in-time' knowledge at every step in the project;
The advantage of the second approach is that the effort is put into making the people better, not in making corporate procedures better. Companies that want to know more about modern development methods, most notably eXtreme Programming, can hire me to give talks to management, XP workshops to programmers, or mix development and coaching by appointing me a (coaching) member of an XP development team.

Troubleshooting

More often than not, projects run into tricky problems that require broad technical skills to solve them; often, these skills are not available. It's hard to give a description of 'troubleshooting' activities, so I'll present a couple of cases here:

  1. One of the top three mobile providers in the Netherlands had ongoing performance problems with its website. Response times were really bad, but they missed the expertise to systematically analyse the various components (a complex networking infrastructure with load balancers, apache reverse proxies, EJB servers, lots of compartimentalization with firewalls, etcetera). I was called in and helped the emergency team to quickly zoom in on the worst problems; after day one we had brought the response times from "really bad" back into the "barely acceptable" realm, and a couple of days later the site was running ok. A hardware upgrade pointed out by the analysis took care of the rest.
  2. A development team working in Smalltalk for the Schweizerische Kreditanstalt (now Credit Suisse Group) was developing a Windows 3.1 application in VisualAge that talked to a Sybase database which in turn fed a banking application through Sybase stored procedures that called out to Unix (and from there on to the mainframe).
    Some of the Use Cases in the application triggered a long running procedure on the banking application; the Windows PC needed notification when the job was done in order to print a report with Crystal reports. The company that developed the application had Smalltalk specialists, Unix administrators, and Sybase developers and dba's, but no-one with the cross-cutting skills to write a simple piece of client-server software (with the server on Windows) that did the callback to pop-up a Windows notification. I wrote a light weight messaging package that could be called from Sybase database triggers on the Unix side and talked to the Windows notification server that was part of that package.
  3. A project for Germany's Air Traffic Control needed to hook up a lot of platforms and systems so that ATC operators could send messages to each other, for example to hand over planes through the new system.
    I helped in making the decision for DCE as the common 'glue' platform and in architecting and implementing the basic communication interface in C++, after which the various platform specialists could continue with their own jobs (in C, C++, Uniface and Lisp)
  4. Sofware that supports pharmaceutical product development has to to through stringent testing and documentation protocols. Manual testing in a project I did at Sandoz Pharma (now part of Novartis) quickly became too tedious, and it also became clear that Windows PCs with word processors weren't the right environment for multi-thousand page VMS software documentation.
    I instrumented the main development environment (Uniface) with the help of C language extensions so that we could automatically test and take screen snapshots (this was software running on serial terminals on a VMS machine) and store these in the database in a test protocol; furthermore, I implemented a suite of DCL scripts, LaTeX macro files, VAX Pascal parsers, and Uniface code to automatically extract as much documentation as possible from source code comments (in Uniface, SQL scripts, DCL scripts and C and Pascal source code), mix it with hand-written LaTeX documentation, and produce coherent and up-to-date software manuals.
The common theme with troubleshooting is that with relatively simple, but often cross-cutting, solutions, projects are at least saved from serious delays but often from total failure.

Current and past customers

Some of the companies where I have been involved in projects: