Kenny Tilton posted this on May 26 to comp.lang.lisp
The question is _where_ is it gaining ground...
as a hobby (which I presume is what most c.l.l readers,
myself included, use it for), or as a substantial outfit
in a company or in academics, and in the latter I see none
of it in the last couple years (the almighty Java seemingly
smothering all and everything). Any recent success stories
(i.e. new or significantly increased use of Lisp) here from
non-hobbyist camps that someone is willing to share?
Sure, CliniSys.
Clinical drug trial management. Don’t ask. It is a big problem. Sites
by FDA requirement must operate independently of the drug sponsor in
conducting trials, which the FDA further want conducted in precise fashion
and with elaborate documentation. Investigators are busy people and often
screw up. Monitors from the sponsor visit every six weeks to corral things
temporarily.
Our mission was to bring everything under control with a thick client
installed at the site guiding sites thru the process, enforcing business
rules, and basically seeing to it that the whole process runs right while
documenting everything and with a precise audit trail of that process and
documentation. The thick client also meant we needed a sophisticated
application-level partial replication scheme to move clinical and audit
data around a wide-area network of collaborating trial professionals.
The hard part is that every trial is different. Even within a trial, the
documentation can vary from site to site. On the wish list is customizing
documentation to individual patients to support adaptable trials. To make
things worse, the documentation can change in the middle of a trial, but
data collected under one version of a document must remain associated with
that version as other versions come along.
And getting the documentation right means applying arbitrarily
sophisticated edits. eg, The pregnancy test result on Visit 2 is required
if the gender collected at Visit 1 was female, otherwise it must be
"Not applicable".
The final challenge is scaling any successful result to hundreds of trials
a year. Existing software does a small fraction of our intended
functionality and is so hard to configure to each trial that (a) they can
get $500k to do a big trial and (b) vendors max out at a couple dozen
trials a year. They hope sponsors will run the software (they call it
"technology transfer") and figure out how to configure the
software themselves faster than could the vendor. They do worse, and a lot
of these vendors go out of business.
So we needed to do WYSIWYG DTP, ICR (scanning and reading documents), our
own DBMS, workgroup software to support remote monitoring, and a full
browser app for reviewing and collaborating on the documentation set. ie,
we needed a GUI, too.
I knew right away that we would have to be able to configure the
application for a new trial without programming. Well, there would be a
scripting language, but it would be the kind of thing power users master
all the time. I also figured out pretty quickly that it would be easier to
make a programmable application with a programmable language.
The project was two years old and $2m spent when I signed on to take over
software development. My predecessor had just quit. In an exit interview I
determined that he was making the right move for himself, but that I would
like the gig.
The angel founder trusted me to use the right software, which only makes
sense since he was betting $3m on me succeeding. I brought on one other
person and in four man years we produced a system that was vastly superior
to systems built with tens of millions of dollars. 80kloc Lisp.
People in the business agree our system will revolutionize the conduct of
clinical trials. Some nice big partners have joined the effort to make our
case to our first customer. That helps since it is a little stange for a
three-person operation to have done what no one else even thought possible
(which is why they were all trying to use the Web to solve the problem).
Making progress, though. Close brushes more often <g> getting both
customer and investment.
How did we do it? First, I had done this programmable application thing a
couple times before. Second, Common Lisp. Third, Cells. Fourth,
AllegroCL’s AllegroStore database. Fifth, AllegroCL’s IDE and
Franz tech support.
|