|
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;
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:
- 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.
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:
- 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).
|
|