INTERVIEWS by STEPHEN IBARAKI, I.S.P.
World-Renowned, 20-Year Development Expert in C, Unix, Shell Programming, and Authority on Cold Fusion
This week, Stephen Ibaraki, I.S.P., has an exclusive interview with Stephen Kochan, the world-renowned 20-year development expert in C, Unix, Shell Programming, Cold Fusion, and Web technologies; authority in printing technologies; and expert in major operating environments.
Stephen Kochan is the best-selling author or co-author of eight classic books on C programming and Unix, a former senior software consultant to the famous Bell Laboratories, co-inventor of the software patent for printing in reduced memory environments (PowerBand technology), former co-founder and president of Pipeline Associates Inc., and currently president and founder of TechFitness.
His book credits include the widely known and classic titles: "Topics in C Programming, Programming in C", "Programming in ANSI C, Programming C for the Mac", "UNIX Shell Programming", "Exploring the UNIX System", and "UNIX System Security". He has been the consulting or technical editor for more than nine additional books on Unix, C programming, and ColdFusion.
His most recent offering is the widely regarded, "Programming in Objective-C".
Discussion:
Q: Stephen with your remarkable history, we are very fortunate to have you with us. Thank you!
A: Thanks, Stephen. I’m happy to be here!
Q: Detail your work with AT&T Bell Laboratories.
A: I worked at Bell Labs before divestiture. Bell Labs at that time was a very exciting place, where a lot of research work was going on. It was actually close to working in an academic environment. I worked in a support group at Bell Labs that was responsible for capacity planning and monitoring for the computer labs throughout all the Bell Labs’ facilities. Needless to say, my work was done under Unix. I did a lot of shell programming while I was there. I also started teaching classes internally at Bell Labs on subjects like C, emacs, shell programming, and Unix.
Q: What prompted you to start writing at that time?
A: Before working at Bell Labs, I worked for a company that was an early adopter of C in the commercial world. At the time, the Kernighan and Ritchie book was the only book on C programming. Even as an experienced programmer, it was not so easy for me to learn how to program in C from that book. While the book was an excellent reference, it was not written as a tutorial. So I felt there was a real void that needed to be filled and I decided to write an introductory C programming text. That was "Programming in C", which was published in 1983. The book ended up selling over 1,000,000 copies and is still in print in it revised form (and under the name Programming in ANSI C). In fact, I am currently revising it again!
Q: Please share your most valuable writing tips.
A: I think my approach of teaching by example has proven to be very effective. I like to introduce new concepts to the reader in a graduated, logical manner. I also don’t like to overwhelm the reader with too many terms and technical details that are not needed to learn a particular concept. I have no problems “holding back” from the reader and clarifying a concept later. Sometimes you can get criticized for taking that approach, but I have found it is the best way for a reader to learn. I also don’t believe in writing tomes. Many of the best programming books have been fewer than 300 pages or so. My books tend to be a little larger than that, but I can’t see myself ever writing one of those 1,000 page books that you see out there.
Q: Provide the background behind Pipeline Associates Inc.
A: Pipeline evolved from my teaching experience at Bell Labs and the writing experience from my C and Unix books. Pat Wood, who was an associate of mine at Bell Labs, and I decided to start a company so that we could continue to write and train full-time. Since we typeset our own books for our publisher at the time, the Apple LaserWriter, which had just been released, got our attention immediately. This printer used a new language called PostScript, so we ended up writing some software to talk to the printer from our Unix systems. One thing led to another, and we ended up developing our own PostScript clone interpreter called PowerPage that we licensed to companies like Sharp, Konica, Kodak, Hitachi, and Fujitsu. Pipeline also specialized in color printing technology. One of our customers was a company called Electronics for Imaging, Inc. (EFI) and they acquired Pipeline in 1997.
Q: What prompted you to start TechFitness?
A: TechFitness came from my desire to combine my passion with health and fitness with my technology
experience. It was something for me to do after leaving Pipeline!
Q: Throughout your very successful career, profile the major challenges you faced, and the important lessons you learned.
A: The most important lesson I learned, which also presented a great challenge, was the principle of running my business without compromising my ethics. Many of my competitors would promise unrealistic delivery dates for their software, for example. By being honest with my customers, I was able to gain their trust. I think that was particularly important when dealing with my Japanese customers. I was also able to leave my company feeling proud of what I had accomplished and how I had done it.
Q: Describe your current role and projects?
A: Right now I have returned to writing full time. I have always been a big fan of the Macintosh. Now that it runs Unix (and does such a good job at it); I would like to stay on this platform and write books that would be helpful to Mac programmers.
I am also pursuing the idea of marketing some of my older texts online in Pdf format.
Q: Where do you see yourself and your company in five years?
A: Hmm, over the last five years I’ve learned not to try to predict that far ahead!
Q: What are your thoughts on the Open Source movement?
A: I think it’s great. The fact that Apple has embraced Open Source for their operating system has enabled them to deliver a solid operating system that is malleable. With all the developers making contributions, Apple can remain on the forefront of operating system technology and quickly deliver new releases to the consumer.
Q: Who are the big winners and losers?
A: I’m not sure if there are any losers here. Maybe some companies that made versions of software that are now available for free will be hurt, but there’s always a way to offer a distinguishing product.
The winners are the companies that can embrace the technology and still figure out a way to make money! The consumers are also big winners, because they don’t have to absorb the large costs associated with development of large software systems.
Q: Can you share your thoughts on Unix and C?
A: These are two very mature environments. Unix has proven to be a robust operating system that has lived up to its reputation. Apple now has the largest installed Unix base in the world. The C language still remains the most efficient language for systems development. There are still many applications (such as in embedded environments) where C is still the language of choice because of its efficiency and control over its environment (such as with memory allocation).
Q: Describe the relationship between C and Objective-C?
A: Hmm, Objective-C is layered on top of C, so they will always remain intimately related!
Q: What’s in the future for Objective-C?
A: Good question. The language was dead for all intents and purposes before Mac OS X. Right now, it remains the language of choice for application development on that platform. The Mac OS X installed base continues to grow at a very fast pace. So I see a steady growth in the language over the next several years.
Q: And the response from the Mac community to Objective-C?
A: I think the response has been mixed. Programmers with C++ or Java experience are not always thrilled about the idea of learning Objective-C for doing Mac OS X development work. Apple has tried to make that bridge a little easier to cross.
Q: What makes your book, "Programming in Objective-C", particularly compelling?
A: There’s not much out there on Objective-C right now. And my book is the only tutorial. Apple publishes an excellent reference book that is available at no charge. With Programming in Objective-C, I took the radical approach of teaching the language to programmers who don’t already know how to program in C. That was the premise of all previous books (or chapters from books) on the language. But it’s a mistake to have to learn how to program in a procedural language (C) before learning an objected-oriented one (Objective-C). A novice programmer can pick up bad programming habits by taking that path. So my book teaches the language as an entity unto its own; that is, without teaching the underlying C language first. The language that is taught is Objective-C, not C followed by Objective-C.
Many of the existing books that have some information on Objective-C are Cocoa programming books. These books are often very comprehensive in nature and cover user interfaces, the Mac development tools, etc. This is a tremendous amount of information to cover, which is one reason why the Objective-C language typically gets minimal coverage in these books.
Since Objective C compilers are available for all major OS platforms (you can get gcc with Objective-C support for Windows and Linux, for example), the book does not assume you are learning the language exclusively for programming on the Mac. Half of the book is devoted to learning how to use the Foundation framework, which a set of classes that have become fairly standardized across all Objective-C platforms. That allows you to write portable Objective-C programs.
Q: Provide your predictions about the evolution of hardware and software? Are there any areas we should be watching?
A: Certainly wireless and personal networks are the hot areas in technology.
Q: Share your top study tips for learning programming?
A: 1) Make sure you set yourself up in an environment where you can test out your program examples. Programming is a pro-active experience. You can’t learn how to program just by sitting and reading a book.
2) Get a good recommended tutorial on the language. Many prefer a book that teaches by example rather than just having terminology and syntax pounded into them.
3) Don’t get bogged down with terminology or minutiae in the beginning; you can always pick that up once you feel more comfortable with the language.
4) Make sure you actually type in and try program examples from the book.
5) Make changes to the program examples and see their effect on the output. Make sure you understand the cause and effect relationship.
6) Find some good online resources that you can turn to with problems or get answers to questions.
7) Challenge yourself with a problem or do the exercises at the end of the chapters.
Q: What are the most compelling issues facing technology professionals today and in the future? How can they be resolved?
A: Certainly the loss of programming jobs to overseas programmers is a crisis that is facing the programming community today. There have been many jobs filled by programmers in countries like India, where the cost of hiring a programmer can be as little as 1/10th the cost of a programmer with similar experience in the US. I don’t know the resolution to this problem. You just have to always strive to keep your skill set current and marketable.
Q: What future books can we expect from you?
A: As noted earlier, there will be a revised edition of my ANSI C book forthcoming. There will likely be a Mac OS X Programming book and perhaps an AppleScript book as well.
Q: What kind of computer setup do you have?
A: I have many computers! For Windows, I’m using a Toshiba notebook running Windows XP. For my Mac system, I’m using a 15” PowerBook running Panther. Perhaps a Mac G5 will be next?
Q: What drives you to do what you do?
A: I think learning is what keeps me motivated and is what makes me feel like I’m alive. I also always like to challenge myself. Writing is particularly rewarding if you find you’ve helped someone. Getting positive feedback to one of my books is very gratifying.
Q: How do you keep up with all the changes?
A: I gain a lot of information from the Internet. When I have the time I like to read periodicals in my field as well.
Q: Stephen, thank you again for your time, and consideration in doing this interview.
A: You’re very welcome!