Hi:
I was tasked to create a modern upgrade to the central experiment
controller for each of 8 multi-million $$$ research laboratories. They
are still using a DOS based system, except for the first proto that
we've deployed.
I get to make the real-time hardware and software, and the programmer
who worked with the department since the PDP-11 days and developed the
old system gets to make the PC GUI, which has to be backward compatible
with old-style text input files.
The new system has to account for all the lab variations, including one
with a dual experiment necessitating various multiplexers and
complications. And add oodles of new capabilities.
There are no written specs. I poll the scientists to pin down all the
requirements. In the process I suggest to them what we could do, which
they want all of and more. I write down most of the requirements and
set to work. Every once in a while they request new capabilities or
decide to use higher resolution sensors that the programmer promised we
would never need, so my design had better incorporate enough headroom to
be able to adapt without re-spin.
So over the course of several years, while also being the department's
Laser Technologist, completing numerous other electronics projects, and
getting sidetracked by upper management to become an electrical safety
guy and UL inspect 2000 pieces of equipment--which I finally threatened
to leave over and they backed down after I got done with about 20:
I created what I think is an innovative approach to eliminate the old
practice of custom tweaking the real-time code to implement each variant
of the experiment and enable the deployment of a flexible yet standard
solution for all the labs. I chose to implement a dynamically
reconfigurable state machine which outputs sequenced digital waveforms
and pulse generator parameters. All glitch-free, and able to be
reconfigured on the fly while running. Oh, and the state machine
execution engine meets the real-time deadline of the 4.17us period
between 240kHz shaft encoder ticks.
Now that it's done, they don't want to deal with any complexity, don't
want to read any documentation or learn any new concepts (such as a
concept that is central to elementary control theory--the state
machine--and these are all Ph.D. engineers), and the programmer is
having fits because he doesn't like the state machine control model and
is 2nd guessing all of my design decisions because the metaphor doesn't
fit a canonical "programming loop" construct.
Other than that, it's a great job and they provide me with lots of cool
equipment and for the most part let me explore many neat new ideas, so
I'm not complaining. It's just funny (so funny I was up at 3:30am last
night worrying about it all).
Let me guess, this is par for the course?
--
_____________________
Mr.CRC
SuSE 10.3 Linux 2.6.22.17