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:
- Build in procedures, reviews, and other safeguards to make sure that mistakes are caught; or
- 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;
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:
- 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.
- 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. - 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) - 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.
Current and past customers
Some of the companies where I have been involved in projects:- In the Netherlands: Rabobank (Banking), Philips Display Systems (Manufacturing), Delta Lloyd/NSF (Insurance), Amsterdam Power eXchange (Finance), Vodafone (Telecom), Rottink Reizen (Travel), Carrier1 (Telecom)
- In Germany: Deutsche Flugsicherung (Federal Government), Deutsche Aerospace/Dornier (Telecom), Bosch-Siemens Haushaltgeraete (Manufacturing)
- In Switzerland: Kanton Thurgau (Government), Sandoz Pharma (Pharmaceutical), UBS (Banking), Fides (IT/Banking), Hoffmann-La Roche (Pharmaceutical).
- In the UK: Inmarsat (Telecom), NHS (Government), Digital Equipment (IT). </ul>