It's not hard to learn the syntax and features of a
computer language. They are much, much easier to learn than human languages --
because you use them to converse with a linguistically dumb entity: the
computer.
[T]here's been lots of discussion inside Oracle Corporation the
last few years about just what PL/SQL should be and do for the development
community. This discussion arose because of the introduction of objects into
the Oracle database and the rise of Java.
The beauty
of the built-in packages is that they provide a tightly controlled way for
Oracle to make available to PL/SQL developers all sorts of wonderful new
technology they have developed -- often originally solely for their own
purposes.
[M]y background would not seem to have
lent itself to the writing of such a text. I have very little formal education
in programming. I took 3 different "101" computing classes in college: Algol,
Lisp, and Pascal.
Who would have thought that five years of actively protesting Ronald Reagan's
war against the people of Central America (for which I was investigated
illegally by the FBI) would help land me a job at Oracle Corporation?
You couldn't write fiction as strange as that!
|
I often tell students at my classes that if they really want to learn a
technology, just write a book on it.
|
The issue facing Oracle developers will be how to take advantage of both
PL/SQL and Java; they'll both be there and they'll both play a role in the
life of any Oracle application developer in the coming years...Oracle will
make interoperability a possibility. It is up to us, the developers,
the make it a reality.
Support for Linux is significant because (a) Oracle generally hasn't
previously had a presence in or much vocal support for the
Open Source movement
and (b) it shows that Oracle is much more responsive to the user community
than in the past.
In some recent classes, some key demonstrations flopped entirely (you can read
about that experience in my October diary entry at the Pipeline). I was
embarrassed, but everyone else seemed to just love it. I was just
like them!
|
An Interview with Steven Feuerstein, PL/SQL Evangelist
Steven Feuerstein is the author of an impressive collection of
Oracle PL/SQL documentation that includes
Advanced Oracle PL/SQL
Programming with Packages,
Oracle Built-in
Packages
(with Charles Dye & John Beresniewicz),
Oracle PL/SQL Built-ins
Pocket
Reference (with John Beresniewicz & Chip Dawes, and
Oracle PL/SQL
Programming, now in a second edition and considered
to be a classic among PL/SQL programmers. Steven is an acknowledged PL/SQL
guru who travels the globe lecturing and teaching at tradeshows and
seminars. He builds Oracle developer utilities and knowledge bases for
RevealNet, and also hosts the RevealNet PL/SQL Pipeline, a free and
non-commercial online community for PL/SQL developers.
O'Reilly Web site editor Allen Noren caught up with Steven the day after he
returned from Dublin, Ireland, and asked Steven what gets him excited
about PL/SQL.
- Noren:
- What gets you excited about PL/SQL? The passion you seem to have for the
language really sets your books apart from so many other computer texts.
- Feuerstein:
- To be honest, I think what you are seeing is not so much a passion for
PL/SQL,
as much as it is a public display of my obsessive-compulsive personality.
Don't get me wrong. I like PL/SQL an awful lot. It is a very well designed
language; fortunately Oracle did not think they could build a programming
language better than everybody else. They "shopped around" for a language
they could copy and eventually chose Ada over PL/1. This Ada foundation
gives a depth and integrity to PL/SQL that is often lacking in the procedural
languages of competing database vendors, like Sybase's Transact-SQL and
Informix 4GL. Packages and exception handling, for example, make PL/SQL stand
out from the crowd (and stack up nicely against an even more modern language
like Java).
So, sure, PL/SQL is hot stuff. But mainly my brain likes to latch onto
abstract problems and figure out ways to solve them. In fact, I like to tell
my students that they should not think of themselves as programmers, but as
problem solvers. It's not hard to learn the syntax and features of a
computer language. They are much, much easier to learn than human languages --
because you use them to converse with a linguistically dumb entity: the
computer. I bet lots of people think that computers are really smart. But
they're not. They're mostly just fast. If they were smart, I could say to
the PL/SQL compiler things like this:
BEGIN
IF my_function
THEN
NULL;
ENDIF;
END;
and the compiler would say to itself "Oh, he meant to put a space between
the END and IF instead of ENDIF. I'll take care of that for my good old
buddy Steven." But it doesn't, so the PL/SQL compiler is not particularly
smart, and it's not my friend either.
Where was I (you can see how I have ended up writing over 2000 pages of
published material on PL/SQL!)? Right, we are not programmers, we are problem
solvers. You can learn all the syntax you want, but if you can't proceed step
by step, logically, from the problem to a solution, well, I don't want to
have to see the code you end up writing in your application!
So the things I really get excited about are: solving tough problems in
the abstract, and also helping other developers enhance their skills, to
learn how to take full advantage of the PL/SQL language.
Noren:
What can programmers DO with PL/SQL?
Feuerstein:
Actually, there's been lots of discussion inside Oracle Corporation the
last few years about just what PL/SQL should be and do for the development
community. This discussion arose because of the introduction of objects into
the Oracle database and the rise of Java.
PL/SQL stands for Procedural Language extensions to SQL, and that describes
it very accurately: it is a database programming language. But when objects
were added to Oracle (and PL/SQL was enhanced to support manipulation of
those objects), this question naturally popped up: should PL/SQL become a
true object-oriented language? Or should it continue to focus on providing a
tight, efficient programming path to the Oracle database? Or should it, can
it, do both?
And, in a way, Java has decided the issue for Oracle. Now that Java is moving
into the database itself (with Oracle8i), Oracle doesn't have to feel
pressured to transform PL/SQL into an O-O language. If you want to do
object-oriented programming, use Java. If you want to write high-performance
programs to work with the Oracle database, and you want to write them in the
most productive, straightforward way possible, use PL/SQL.
Noren:
You make it sound as if the alignment with Java happened quite naturally.
Was that the case?
Feuerstein:
Well, I have to say that I am not privy, or at least haven't tried too hard
to become privy, to the internal politics at Oracle headquarters. I avoided
it like the plague when I was an employee (and it was a very political place
to work); and I sure don't want to spend my time keeping up with which
director has it in for which vice president. I know that there were some
very strong opinions being tossed about behind closed doors. There were and
probably are any number of people inside the company who felt that Java is
so wonderful, so extraordinary, that every other language should be
immediately dropped and all Oracle software rewritten in Java. Cooler heads
prevailed, fortunately, and we now have a very sensible parallel path strategy.
Was it a "natural" process? Well, I like to think that everything we humans
do is natural, since we are a part of Nature, but that doesn't mean that what
we do is not perverted in any number of ways (socially, ethically,
environmentally, etc.). I believe that Larry Ellison decided early on that
Java was strategic (both for technical reasons and Microsoft-bashing reasons)
and pushed hard to reorient the company.
Noren:
You've just published your third book on PL/SQL, Oracle Built-in Packages.
Why did you take a year of your life to write that book (with co-authors
John B and Charles D)? Why should developers care about those packages?
Feuerstein:
First of all, a "built-in package" is a package that is created by Oracle
and installed in the database when you install PL/SQL. A package contains
one or more programs that allows you to perform certain actions. The beauty
of the built-in packages is that they provide a tightly controlled way for
Oracle to make available to PL/SQL developers all sorts of wonderful new
technology they have developed -- often originally solely for their own
purposes.
I could write for, well, 900 pages about all the great things you can do
with built-in packages: Read/write operating system files, execute
dynamically-constructed SQL and PL/SQL programs, parallelize program execution
to reduce greatly elapsed time for applications, manipulate LOBs and RAW
values, submit stored procedures for scheduled execution. I could go on and on.
The bottom line for me is that developers who build PL/SQL applications and
do not use the built-in packages:
1. Will find themselves telling their managers and users that something
cannot be done, when in fact it most certainly can be.
2. Are limiting their skill-set and ability to excel (and thereby limiting
their revenue generation capabilities) in the world of PL/SQL.
Many developers undoubtedly will get that first book,
Oracle PL/SQL
Programming, and think they have everything they need, but it just
ain't so! I couldn't fit into a single book everything you need to know
about PL/SQL -- and still include all the examples that people seem to
appreciate deeply.
So I would strongly recommend that every single PL/SQL developer in the
whole wide world buy a copy of
Oracle Built-in
Packages. And -- I am being perfectly honest here, really I am -- I
would suggest that they buy that book even if it were written by someone else
and published by another publisher. The information in it is that
good, that crucial.
Noren:
Does that mean you'll be working on yet another book? Maybe a book of
examples, like
Java Examples in a
Nutshell?
Feuerstein:
Well, if it was up to my editor, I'd be working on three new books at
any given time. I'd be a full-time author, and I would hop on my
Harley-Davidson and cruise around the country visiting only independent
bookstores to hawk my texts, just like Stephen King. Only problem is I don't
own a Harley and I continue to remain thoroughly unconvinced that you can make
a stand-alone living as a technical writer. I think we've sold around 80,000
copies of
Oracle PL/SQL
Programming, making it a "best seller" in the computer world. But
those royalties just don't pay all the bills...yet!
Anyway, yes, it is true, that I am thinking about doing a book of
examples, a kind of workbook, but I haven't made any commitments yet. I
suppose that if after this interview is published, I am flooded with requests
from my dear readers to provide such a book, I will be more likely to write it.
Noren:
You are seen as The guru of PL/SQL. How does that make you feel?
Feuerstein:
Well, heck, it makes me feel terrific! Everyone likes to be appreciated
and I
think I have that disease more than most: I want (need?) to be liked, and as a
result (and in the context of my work with PL/SQL) I go out of my way to help
and to explain the concepts behind programming techniques to my readers.
To be honest, I have also been very, very surprised by the response to my
first book,
Oracle PL/SQL
Programming. I can't tell you the number of times I have received
email, or students in my seminars have come up to me, with a story that goes
something like this (actual quote):
"This is by far the best programming text I have ever read. The style you use
is easy to follow, extremely smooth-flowing, and contains enough humor to keep
me chuckling through every chapter.
After endless examples of alphabet soup, student_id, order_detail, etc., it
does my little brain good to see 'Sam I Am' and winterizing task programming.
With every bit I learn from your book, I see how powerful PL/SQL is and how
much fun it is to program in. Who'da thunk it? ...
I graduate in March and intend on landing a job in data base management as
soon as possible. After 25 years of restaurant management, I kick myself for
not pursuing this career earlier."
I do get tickled pink whenever anyone tells me that Oracle PL/SQL Programming is the best book on
programming they have ever read. See, my background would not seem to have
lent itself to the writing of such a text. I have very little formal education
in programming. I took 3 different "101" computing classes in college: Algol,
Lisp, and Pascal. I fell into a programming job at the University of Rochester
and just sort of drifted around from one Fortran job to another, until I
answered a headhunter's ad for a database-related position. Turned out to be
a "pre-sales" technical consulting job with Oracle Corporation. I didn't know
a thing about relational databases at the time, so I hunted down an article
on Codd's 12 Rules for Relational Databases, memorized them, and went to my
interview.
Of course, my future manager didn't ask about any of that stuff. In the true
Oracle style, he wanted to find out if I had the raw smarts to do the
job, and also whether I could handle making presentations to small and large
groups. And at this point, I must admit, the whole experience got a bit
strange and wonderful all at once, because I found myself telling John of
Oracle Corporation about my political organizing background and how I would
give speeches to groups of several hundred people, at conferences and
demonstrations.
Who would have thought that five years of actively protesting Ronald Reagan's
war against the people of Central America (for which I was investigated
illegally by the FBI) would help land me a job at Oracle Corporation?
You couldn't write fiction as strange as that!
Well! So I got my job and learned PL/SQL and SQL*Forms and all that other
good stuff, then left Oracle after five years to join the ranks of
consultants. But to make a long story at least a little bit shorter, I
thought I knew PL/SQL very well and in 1994 publishers were starting to very
aggressively seek out authors for Oracle books. I thank my lucky stars that I
ended up with O'Reilly (a truly wonderful, eclectic publisher with
lots of personality) and a contract to write a book on PL/SQL.
At first I thought that I would have trouble coming up with 400 pages on the
topic. After all, PL/SQL is such a straightforward language! Ha, ha, ha! 1,200
pages later we had to cut 400 pages out of the book to make it
publishable in a single volume -- and I had discovered just how much of PL/SQL
I had not known at the time. For example, prior to writing the book, I
didn't know about packages, named notation, PRAGMAs and so much more.
I often tell students at my classes that if they really want to learn a
technology, just write a book on it.
So I didn't come to the project (writing that first PL/SQL book) with lots
of formal training, which resulted in a trade-off: I didn't have a lot of the
buzzwords and theories down pat, but I also wasn't restricted by those
theories. I could think about things in my own way, and offer my own, often
very "creative" solutions. I also made no effort to exclude my somewhat
bizarre sense of humor from my writing; I don't think I could have, if I
wanted to. And my editor, Debby Russell, was always very supportive of my less
than thoroughly technical content (though she did make a number of suggestions
for cuts, for which I am thankful). The result is, according to many
developers, a very accessible, readable book -- and as far as I can tell, we
technical people are just desperate for books like that.
Noren:
Your personality and sense of humor aside, what makes you such a good
technical writer? What makes any technical writer good?
Feuerstein:
I think that it comes down to communication skills. You have to be able to
take technical content and make it interesting enough that people want to
read it and clear enough for them to understand what they are reading. This
means, of course, that you yourself have to understand the underlying
technology very well, and have thought through the kinds of issues your
readers may be addressing. From there, it seems to be very important to
include lots of examples in the text; people seem to learn by example much
more effectively than they learn by reading theories.
Noren:
Tell us about Oracle8 and Oracle8i. What do they mean for Oracle in
general, and PL/SQL in particular?
Feuerstein:
Oracle8i in particular looks interesting not only for its new PL/SQL
features (from autonomous transactions to a revamped and much faster
implementation of dynamic SQL), but also for iFS, the Internet File System.
Oracle is apparently going to give us a new option: forget about the
underlying operating system! You can do everything from within Oracle! I
haven't seen the details, but I can see how this could be very handy. I can
also see how this would really get under Bill Gates' skin, and that
does seem to be one of Larry Ellison's dominant motivations.
In the next six months, I will be taking a much closer look at all the new
technology. I will be integrating what I learn into various products from
RevealNet (such as PL/Vision and the
PL/SQL Knowledge
Base). I will also be coming up with a plan of action for modifying existing
books or perhaps providing additional texts (much shorter, though, I promise!)
to cover the new features.
Noren:
What's the potential irritant to Microsoft? It sounds a little like the
Network Computer idea again.
Feuerstein:
Honestly, I'll be able to tell you more after the
Oracle Open World show in November 1998 in
San Francisco. It's certainly not as vulnerable as the Network Computer,
because we don't have to convince people to go out and buy special pieces of
hardware. Instead, I believe that Oracle is saying, in essence: "Look DBAs and
developers, you are spending lots of time in the database anyway, so why
leave? We'll give you the software you need to live inside Oracle full-time,
while still accomplishing all the operating system tasks you would have
normally done through other programs."
It's way to early to tell if this will even be noticed by Mr. Gates,
much less irritate the poor guy.
Noren:
How does Java in the database impact PL/SQL?
Feuerstein:
Well, if I was going to be a totally selfish and self-centered individual,
I would get out my magic lantern, rub it three times and ask my genie to MAKE
JAVA GO AWAY! Then PL/SQL would be the only choice for programming inside the
Oracle database, demand for my considerable talents and experience
would stay strong, and I wouldn't have to learn anything new!
Being that I am not such a self-centered person (or I at least hide those
tendencies pretty well), I will save my wish for something much more
important. Seriously, I am feeling very positive about the addition of Java
as a database programming language in Oracle for several reasons:
- The performance and quality of the Java engine has compelled Oracle to
do some serious tuning of the PL/SQL engine - finally!
- Java is a very powerful and exciting development in the world of software.
I want to be a part of it, but I also don't want to give up my connection to
Oracle technology.
The issue facing Oracle developers will be how to take advantage of both
PL/SQL and Java; they'll both be there and they'll both play a role in the
life of any Oracle application developer in the coming years. With a solid
technology like PL/SQL (not to mention thousands of PL/SQL developers and
millions of lines of in-production PL/SQL code), the approach that makes the
most sense is to learn how to integrate PL/SQL and Java -- within
projects, applications, and an individual's skill-set. Oracle will make
interoperability a possibility. It is up to us, the developers, to make it a
reality.
So my approach in the coming months and years will be to help developers
figure out how to use Java effectively in the Oracle environment without
sacrificing the investments that they've made in PL/SQL. I intend to pay
close attention to the issues PL/SQL developers confront as they move into
and within the Java environment. And, unless I suddenly lose the power of
expression (and my compulsion to communicate), you can bet that what I learn
will show up in books, articles, and software over the next couple of years.
Noren:
How has your life changed since you published your first Oracle book?
Feuerstein:
It has changed dramatically. When I wrote the book, I was just finishing up three years of daily consulting at a corporation famous for the production and selling of many, many hamburgers. I was ready for a change, and
Oracle PL/SQL Programming made that change possible.
I no longer do hourly consulting. I present three day seminars on PL/SQL technology (many of them sponsored by Oracle Corporation) all around the country - and even the world. I am amazed at my good fortune! All because of PL/SQL and my writing on it, I have visited Australia, Amsterdam, Madrid, Caracas, Mexico City, Vienna, London, Belfast, and Oslo.
When I am not traveling, I work out of my house, spend time with my family, build software for RevealNet, write articles and text for books - and sometimes I even get away from my computers to do non-PL/SQL things, like play racquetball and work with the Crossroads Fund, a foundation that funds grassroots organizing working for fundamental change in the Chicago area.
Much of my professional time is now devoted to crafting software that PL/SQL developers and development managers can use to improve the quality and performance of their Oracle-based software. I am especially proud of
PL/Vision, a code library of over 50 packages, and
PL/Generator, a coded generator which I believe
personally has the potential of being a "killer app" in the Oracle
arena. Of course I am biased, but I think that it is absolutely nuts
for any development organization to not take a serious look at the
RevealNet product line. Why write code when someone else already wrote it
for you? Why write code when you can have a product generate it for you
instead?
Noren:
How have you seen Oracle change over the last 10 years?
Feuerstein:
That's a big question and, of course, what you should REALLY do is
interview Larry Ellison for the "inside scoop". From my perspective,
though, I have seen Oracle evolve in some significant ways as relates to the
developer community. The built-in packages as a whole offer an excellent
example of this change. In the "old days", Oracle would come up with
all sorts of amazing new technologies, but it would all be buried inside
the database engine. With the advent of packages in Oracle7, the
corporation began to exhibit a startling willingness to "expose"
enhancements in the engine, making all the great, new stuff available
to any and all PL/SQL developers.
Another example of Oracle's evolution is its recent embrace (well,
that might be a bit too strong a word) of the Linux operating system. After
lots of "grassroots" pressure, Oracle announced that it would port its
database to Linux. Rumor has it that the port was already largely
completed, done by a group even before official blessing was bestowed.
Support for Linux is significant because (a) Oracle generally hasn't
previously had a presence in or much vocal support for the
Open Source movement
and (b) it shows that Oracle is much more responsive to the user
community than in the past. So, on the one hand, don't be looking
forward to an Open Source version of the Oracle8i server technology.
But on the other hand, let's be glad that Oracle remains committed to
putting their database on just about any and every operating system
known to the human species.
Noren:
One thing we at O'Reilly appreciate a lot is that you like to have an
ongoing relationship with your readers.
Feuerstein:
I am a strong believer in sharing knowledge and avoiding inflated egos
(i.e., not letting my own get too big and staying away from people in the
Oracle world who have trouble fitting their heads through doorways).
As I tell my classes, I don't know everything there is to know about PL/SQL --
no one does. Every time I give a presentation, I learn something new -- from
my students!
I believe that people respond to this openness, and feel less threatened or
intimidated. I have also worked hard to create (with the support,
encouragement and effort of my friends at RevealNet) the
PL/SQL
Pipeline, an on-line and totally non-commercial community for
PL/SQL developers.
The Pipeline is probably the most active site on the Internet for PL/SQL
developers (we also have a DBA Pipeline that boasts similar high traffic).
What can you do at the Pipeline? You can:
- Ask questions, post solutions, offer advice, share interesting code. I
host the Pipeline, but there are dozens of incredibly gifted developers from
around the world who have adopted the Pipeline as their own, and visit there
daily to answer questions and help improve the expertise of the PL/SQL
community -- at an incredibly low hourly consulting rate of ZERO.
- Read my monthly diary. If you think some of what you are reading in
this interview is a bit, well, zany, you should check out my diary! I tell
about my travels, things I have learned about PL/SQL, code I am writing or
wrestling with, I create totally fictional conversations with interesting
people like Larry Ellison and Bill Gates. I even get to talk politics now and
then. I don't mean to sound like I am bragging, but I don't think there's
anything else quite like this out there for PL/SQL developers!
- Learn from monthly tips, download great code and presentations from the
Archive, link to many other Oracle sites.
The success of the Pipeline has far exceeded my expectations -- and some of
that was very selfish. Through the Pipeline, I have met several developers who
are contributing not only to the Pipeline, but to the RevealNet product set as
well.
Noren:
Your generosity comes through in your trainings and presentations at shows
too. I understand that you frequently win awards for your presentations.
Feuerstein:
People do seem to respond well to my presentation style. I am probably not
the best person to explain why this is so, but I think that a part of it is
that I am able to admit mistakes -- and make fun of myself in the process. In
some recent classes, some key demonstrations flopped entirely (you can read
about that experience in my October diary entry at the Pipeline). I was
embarrassed, but everyone else seemed to just love it. I was just
like them!
Also, once I get going in my presentation, the rest of my world drops away
and suddenly there is nothing else there to talk about or be interested in
but PL/SQL. So, perhaps, in a desperate bid for survival, I get
really excited about PL/SQL, and that excitement or manic state is
transferred to my students or attendees. They might not follow everything I
say to them (partly because I just talk too darn fast), but I sure am
entertaining.
In terms of the awards, I would be a lying son of a gun if I did not admit
that I love the recognition (in fact, at IOUW 98 my presentation ranked
third overall, and I just know that if I had only handed out copies
of the presentation to my 500 attendees and the heck with the trees, I could
have moved up to #2 or maybe even #1. But, hey, I don't pay attention to
stuff like that).
Yet, really and truly, what is most important to me is that people seem to
learn from me and hopefully pick up new and better ways to get their job done,
and increase their level of satisfaction with their work.
Noren:
Earlier in the interview you mentioned RevealNet.
Tell us about your work there.
Feuerstein:
RevealNet is
a great company and I am very fortunate to be able to work with my partners
there, Steve Hilker and Tom White (as well as everyone else in the company)!
We have worked hard over the last few years to put together a suite of unique
and powerful tools for Oracle developers (both DBAs and PL/SQL programmers).
Rather than get into all the details here, I would just urge readers to visit
the web site and try out the software.
Noren:
What about your life outside Oracle and PL/SQL. What do you do with what
little time is left?
Feuerstein:
There is no doubt that there are days when I spend way too much of my life
working with PL/SQL. I rationalize this by saying to myself that it is
important to take advantage of opportunities as they are presented to you.
Still, I used to spend much more time writing non-technical material (such as
children's books - not that I've gotten any of those published. It's much
harder to write and publish fiction than technical content), playing with my
younger son, Eli (though now he is now 12 and is not too interested in doing
anything with me, anyway), and getting involved in various political campaigns.
Still, I am a referee for Eli's AYSO (American Youth Soccer Organization)
soccer league, and truly love bossing those little kids around. I am on the
board of directors of the Crossroads Fund, a progressive foundation. I visit
the Maryville-Columbus Reception Center every Sunday morning (if they need me)
to hold and feed and play with babies who have been taken from their parents
for any number of reasons. I really like babies. I want to believe (though I
also know this belief is incredibly naive) that if men would only spend more
time with (and be more responsible for the raising of) children, especially
infants, they would be less likely to take a life -- to murder on either an
individual or institutional level.
I play racquetball whenever possible and try hard to get exercise on a
regular basis so I don't get fat as I get older and so I can live as long as
possible. I have a wonderful life (in large part because I have a wonderful
wife, Veva Silva) and I want to accomplish "great" things in the time I have
left.
Noren:
Well, I'd better let you get back to those great things. Thanks very
much for your time, Steven.
Return to: oracle.oreilly.com
|