In the hardest times in its history, the HP 3000 got a
little help from its friends. One of the platforms greatest
friends may be Mark Klein, the ORBiT Software R&D chief whose
greatest contribution happened off the clock, on his own time. Klein
did the bootstrap porting of the Gnu Software Foundation C++ compiler
that set the stage for the HP 3000s compatibility with other
systems. Without a C++ compiler, things like Web servers, Java, Samba
file sharing, Internet domain name services and many of the current
Posix tools wouldnt have arrived on the HP 3000 in time, if at
all. Working nights and weekends for the equivalent of a year of
full-time coding, Klein brought this new language to the HP 3000, one
that opened the door for the HP 3000s interoperability.
Klein also led the way in software porting to the platform
by bringing the freeware C++ to the system. Many commercial and Unix
programs are written in C++, but without this language on the 3000,
programs couldnt be ported. Solving the problem of
bootstrapping a port demands the skills of an inventor, since the
tools to finish the job have to be invented first. In 1995 word of
Kleins invention moved through HPs 3000 labs and the
developer community, and the system was on its way toward its next
generation. Without his C++ on the 3000 in this timeframe, the
platform wouldnt have gotten its Internet capabilities in time
and HP might have made a different decision about moving the
platform onto the IA-64 architecture. HP relies on Kleins C++
port today in the division labs, and he supports the compiler he
created.
The news of a new C++ compiler didnt have far to
travel to get to the 3000 labs. Klein has worked with the 3000
division as a contract consultant since 1983, which virtually
became a full-time job, according to Kleins resume.
Its an impressive document, showing his work on the compiler,
porting Java to the 3000, migrating TurboIMAGE to the PA-RISC systems
and supporting the Just In Time compiler for Java. He joined ORBiT in
1991 full time, building up the backup and datacenter providers
R&D staff from a single person to 10, and architecting Backup+.
Along the way Klein has led more Masters-Level HP 3000
programmers those who are invited to the elite Masters
Conference each spring than any other 3000 shops R&D
operation. The average level of HP 3000 experience at ORBiT is more
than 20 years.
With his own 25 years of HP 3000 experience and a key
contribution to the 3000s survival under his belt, Klein has
been honored by HP with the HP 3000 Contributor Award (above),
presented by the 3000 division to the person who has helped the
platform. The nights and weekends spent porting havent come at
the cost of a personal life for Klein; hes been married 21
years and is the father of two children. As the platforms
technical wizards and apprentices gather in California for training
and debate this month, we asked Klein how he manages his time and his
resources to work on continuing porting projects like the Gnu native
Java compiler for MPE another tool to help the HP 3000
grow.
What prompted you to begin porting the Gnu products to
the HP 3000? Did you imagine they would become as important to CSY as
they have?
It
was actually two separate events. The first was a comment by someone
from within HP that it couldnt be done in response
to a question about bringing a third-party C++ to the HP 3000. The
next was a plan by ORBiT to build a product that required an
object-oriented database. I had found something called Exodus that
was publicly available. The short of it was that Exodus implemented a
static C++ built upon Gnu C++. This language was called E and worked
with the Exodus Storage Manager. To make this work, we needed to port
Gnu C++ to the HP 3000.
It
began in 1992, and there would be times where I wouldnt touch
it for a couple of months. Bootstrapping it was fun because I
didnt have access to an HP-UX box at the time, and I ended up
doing all the work out of my house. I built a cross-compiler on an
SCO Unix box that generated PA-RISC code. I find the art of
bootstrapping a piece of software fascinating. Since the compiler
doesnt exist on the 3000, you cant compile it there.
How do you make that much work fit in with your personal
life?
I
have a very understanding family. My wife tells a story about my son
in his younger years. Id go away, because of the consulting and
the other work Id do, and work 60-70 hour weeks. I came home
once and he misbehaved, and I reprimanded him. He looked over at my
wife and said, Can he do that? Her answer was, Of
course he can. Hes your father! My philosophy is that
when youre in your 30s and 40s those are your best income
producing years, and you need to take advantage of it to build the
foundation for the rest of your life.
Was time management the biggest hurdle you had to overcome
to become a porting expert on the HP 3000?
Absolutely ... and it is still on the list! Ive done
the Gnu and other ports on my own time, typically weekends and
evenings, and that meant I needed to manage the time pretty well!
There is a learning curve too, I wont minimize
that.
Youve had enough experience with Unix to build a
cross-compiler on a system. How would you compare developing on a
3000 to working with Unix? What are the big advantages that each
environment has?
The biggest things going for Unix are its interoperability
and the size of its talent pool. Arguments can be made that when they
run, Unix systems run well. The things that you used to be able to
point to, like NFS, just arent [exclusive to Unix] anymore.
Quest sells an NFS for the 3000. I havent tried to bring a real
graphics-intensive package to the 3000. Its not really a
graphics platform.
The
biggest thing for the HP 3000 is its reliability and ease of
operability. Weve all heard stories of the HP 3000 used in some
back office somewhere where the machine is effectively managed by a
secretary with no computer knowledge and it just keeps on ticking. I
really cant think of something where the 3000 would not be
easier. When it hits the proverbial fan, you want the 3000, because
it can recover more quickly. To rebuild a Unix box after a
catastrophic failure is not as easy.
What have you learned about software design through
porting that youve been able to apply to your own design and
development projects?
Hard to point to any one thing. Ive learned a lot of
tricks over the years that all have their place. Id have to say
the biggest thing was the transition from procedural to object
orientation. It just kinda happened and was like a light turning on.
I think the biggest event to solidify that was doing the UNiBACK GUI
for ORBiT in Java.
Is
it safe to put you in the C++ advocate category, or do you keep your
hand in alternatives like Java, too? Which of these two languages do
you think holds more potential for the average HP 3000 application
developer/maintainer?
Better Im in the object orientation advocacy
category. Actually, I find Java to be a better language than C++. It
has removed the bad parts of C that carried over into C++. I really
like that language. Im spending more time with Java than C++.
The language is far superior to C++. With the work were doing
here at ORBiT, Im doing more in Java. The native compiler for
Java exists and runs on MPE. The back-end run-time library is where
Im stuck, but the threading changes in MPE/iX 6.5 will help
that.
Java
does not use a pointer type, so you cant have a pointer
pointing off into never-never land, that starts corrupting data. When
you create an object, that object is automatically initialized. Java
removes a lot of the problems left over from C and C++, by virtue of
the fact that it uses garbage collection. It pre-initializes
everything when you create something.
HP
is considering support of Gnus C++ versus porting the HP-UX C++
when it releases IA-64 systems. Any comments on which of these
choices would be better for the 3000 customer base?
Thats hard to say. HP is saying that their compiler
technology is what will make IA-64 be what it will be on the HP
platforms. But there are also a lot of bright people working on GCC,
and this virtual development lab is far greater than any
lab for any one company such as HP. Many people doing active
development on the GCC are in research facilities at some of the top
universities. When there is effectively only one platform
(IA-64), then GCC will probably become highly adapted to that
environment which will mean that the minimal performance differences
seen today because of generalization will probably disappear.
What kind of promise do you think storage area networks
hold for the 3000 community? Do they solve problems that are more
expensive without them, or deliver performance thats not
available by any other means?
Im still wrestling with that question myself. The
3000 needs to play in the enterprise-wide community. If other
machines in the enterprise are SAN-based machines, the 3000 needs to
play in that playground. Ive come to no clear conclusion. I
know that hardware technologies will have an impact on the backup
business in the future, but I still think that there will be some
niches where a software solution still fits into the picture.
Serverless-based backup is a possibility with SANs. Were
looking at our future strategies as well, based on the fact the 3000
is going to play in the SAN sandbox.
Is
there something that HP could release today that will help deliver
more tape library choices for MPE/iX?
A
much more robust pass-through driver. Im not sure we could use
the existing driver to get to some of the commands the various robots
would offer. If we could see a better driver that could handle
mistakes that a programmer like me might make, and not bring the
machine down because were talking about privileged
software that runs on a very low level then that might allow
us to bring other devices to the 3000 more quickly. We dont
have the ability to write drivers on the 3000 today.
Whats the utility or piece of software that
youve found enhances your 3000 programming productivity the
most? Are you a classic editor developer or do you like working with
something more visual?
There are a couple of things. I do use Qedit quite a bit
for the MPE stuff. But I also use vi quite a bit too, for the
Posix-based stuff. I think the tools that I use most in what I do are
the Lund Performance Tools written by Stan Sieler. I cant live
without Avatar reverse compiler or CSEQ. The nature of some of the
things we need to do demands a tool like Avatar. CSEQ is more
important if youre working with Gnu C++.
I
do like the visual editors. They help produce better code. I like the
Visual Cafe IDE, and CodeWright. Id like to see an IDE
available for MPE like Visual Cafe. I know that the Whisper
Programmer Studio is similar. Visual Cafe can do remote debugging, to
do compilations on the workstation.
Youre managing R&D for a company thats got
more than a few Masters members in it. How do you keep highly
experienced developers motivated and productive?
Now, why do you wanna open a can of worms? It is difficult
because all of us would like to be working on the latest and greatest
bleeding-edge technology. And we all have very strong personalities,
which can and does cause a bit of friction. But whats most
impressive with this group is its longevity, both in the HP community
and at ORBiT. Our newest member is Paul Taffel, who is well known and
respected in the community. By ORBiT standards, hes the
newbie, as most of the rest of us have between seven and
10 years working for ORBiT. Its unheard of in the high-tech
industry to have that type of longevity!
As
far as how do we keep motivated and productive, the flip answer is
our egos. We take great pride in doing very technical
work that very few outside of the company can do. I personally get to
enjoy the bleeding-edge technologies by working on them on my own
time. I support the Java JIT for MPE and am actively working on
porting the Gnu native Java compiler to MPE. But as a team, we have
experience that not even CSY can match.