| Front Page | News Headlines | Technical Headlines | Planning Features | Advanced Search |
  Omni Solutions Sponsor Message

Mark Klein
VP Technology
ORBiT Software

Have an opinion about any of these items? Send your comments about this article to me. Include your name your company, or just post anonymously.

Ron Seybold, Editor In Chief

 

Payoffs from the Passion of Porting

In the hardest times in its history, the HP 3000 got a little help from its friends. One of the platform’s 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 3000’s 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 wouldn’t 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 3000’s 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 couldn’t 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 Klein’s invention moved through HP’s 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 wouldn’t 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 Klein’s C++ port today in the division labs, and he supports the compiler he created.

The news of a new C++ compiler didn’t 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 Klein’s resume. It’s 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 provider’s R&D staff from a single person to 10, and architecting Backup+. Along the way Klein has led more Master’s-Level HP 3000 programmers — those who are invited to the elite Master’s Conference each spring — than any other 3000 shop’s 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 3000’s 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 haven’t come at the cost of a personal life for Klein; he’s been married 21 years and is the father of two children. As the platform’s 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 couldn’t 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 wouldn’t touch it for a couple of months. Bootstrapping it was fun because I didn’t 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 doesn’t exist on the 3000, you can’t 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. I’d go away, because of the consulting and the other work I’d 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. He’s your father!” My philosophy is that when you’re 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! I’ve 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 won’t minimize that.

You’ve 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 aren’t [exclusive to Unix] anymore. Quest sells an NFS for the 3000. I haven’t tried to bring a real graphics-intensive package to the 3000. It’s not really a graphics platform.
The biggest thing for the HP 3000 is its reliability and ease of operability. We’ve 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 can’t 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 you’ve been able to apply to your own design and development projects?

Hard to point to any one thing. I’ve learned a lot of tricks over the years that all have their place. I’d 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 — I’m 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. I’m spending more time with Java than C++. The language is far superior to C++. With the work we’re doing here at ORBiT, I’m doing more in Java. The native compiler for Java exists and runs on MPE. The back-end run-time library is where I’m stuck, but the threading changes in MPE/iX 6.5 will help that.
Java does not use a pointer type, so you can’t 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 Gnu’s 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?

That’s 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 that’s not available by any other means?

I’m 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. I’ve 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. We’re 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. I’m 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 we’re 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 don’t have the ability to write drivers on the 3000 today.

What’s the utility or piece of software that you’ve 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 can’t 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 you’re working with Gnu C++.

I do like the visual editors. They help produce better code. I like the Visual Cafe IDE, and CodeWright. I’d 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.

You’re managing R&D for a company that’s 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 what’s 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, he’s the “newbie,” as most of the rest of us have between seven and 10 years working for ORBiT. It’s 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.

 


Copyright The 3000 NewsWire. All rights reserved.