Skip to main content

A Handwritten Message or Why It Paid to Write a Book (and homage to Richard Bolz)

A month ago, Miguel ordered a signed copy of my book from my website. So I wrote him a message, signed it, and shipped it off.

I soon after received the following handwritten letter:

Dear Steven,

I spent last week on vacation, and right before leaving, I put in an order for the newest "Oracle PL/SQL Programming" book. I was happy to get back home and find the book package on the front porch. Yeah!!!!!

When I opened the book I noticed your handwritten note on tyne first page and I felt very special. Not even my mother sends me handwritten messages anymore --- your message made me feel special, and I am still happy to this day when I think of it.

Thanks for the message and for sharing your knowledge and experience with us. Your enthusiasm, views, attitude and energy makes me think about the most important mission every software developer has - do what is right, with responsibility, quality and respect to others.

When I moved to the United States in February 1999, I was lucky enough to join a team that was taught PL/SQL by Richard Bolz. His teachings, not only the language, but life in general, made me think differently, and pushed me to design and implement solutions that I as and am still proud of.

Because of Richard Bolz, I started studying PL/SQL, read, studied and practiced with your book, attended a few seminars where you were the presenter and had the opportunity to meet you in person.

So it is my turn now to write you a message - a handwritten one - to say thanks for impacting and changing my life through PL/SQl. I have been living in Indianapolis, Indiana, for the past 15 years, and have been successful doing consulting work for clients, using PL/SQL, Oracle Forms, Oracle Reports, and sometimes supporting Oracle Enterprise Business Suite Solutions, thanks to the Knowledge tI have acquired ion PL/SQL.

Thanks for everything you do for PL/SQL developers!

You are most welcome, Miguel, and I am honored that my message meant something to you.

Now, as for the sub-title for my post: Why it paid to write a book.

I have been paid big time for writing Oracle PL/SQL Programming (1st edition 1994, now in its 6th edition) and (a few too many) other books. Now, certainly, I mean - in part -  that I have received a decent amount of money from royalties on sales of those books. But the real payoff for my writing comes when I hear about how my work has improved another person's life.

For one thing, that probably means that I have indirectly help bring more happiness and health to lots of kids (children of my readers). I really like that idea. Beyond that, well, I don't know, call me un-American or old fashioned, but I don't think that corporations are people, too. I like helping people more than I like helping corporations.

But, don't worry, I'm OK with helping companies, too.

I also wanted to publish this letter so that more developers can be introduced to the name Richard Bolz.

I've known and worked with Richard for years, sadly (for us, not him) he's retired now. Richard was involved deeply with the Ada language. In fact, back in 1978, as Associate Professor of Computer Science at the Air Force Academy, Bolz taught the very first course on the Ada programming language. He also did a presentation on Ada to the folks at Oracle when they were deciding which programming language would serve as the model for PL/SQL. So it is likely that we can, at least in part, thank Richard for the wonderful decision to build PL/SQL based on Ada.

Richard was one of the finest trainers I have ever met. The level of professionalism he brought to both his training materials and his presentation of them shamed me with their quality and polish (I hate to prepare. There, finally I've admitted it). He was totally devoted to his students and co-workers, which was reflected by their admiration for and loyalty to Richard. He received the ODTUG Best Speaker award in 2002 for his presentation titled "An Overview of PL/SQL".  

If any of my readers ran into Richard or was trained by him, I'd love to hear from you!



Comments

Popular posts from this blog

Running out of PGA memory with MULTISET ops? Watch out for DISTINCT!

A PL/SQL team inside Oracle made excellent use of nested tables and MULTISET operators in SQL, blending data in tables with procedurally-generated datasets (nested tables).  All was going well when they hit the dreaded: ORA-04030: out of process memory when trying to allocate 2032 bytes  They asked for my help.  The error occurred on this SELECT: SELECT  *    FROM header_tab trx    WHERE (generated_ntab1 SUBMULTISET OF trx.column_ntab)       AND ((trx.column_ntab MULTISET             EXCEPT DISTINCT generated_ntab2) IS EMPTY) The problem is clearly related to the use of those nested tables. Now, there was clearly sufficient PGA for the nested tables themselves. So the problem was in executing the MULTISET-related functionality. We talked for a bit about dropping the use of nested tables and instead doing everything in SQL, to avoid the PGA error. That would, however require lots of work, revamping algorithms, ensuring correctness, you know the score. Then my eyes snagge

How to Pick the Limit for BULK COLLECT

This question rolled into my In Box today: In the case of using the LIMIT clause of BULK COLLECT, how do we decide what value to use for the limit? First I give the quick answer, then I provide support for that answer Quick Answer Start with 100. That's the default (and only) setting for cursor FOR loop optimizations. It offers a sweet spot of improved performance over row-by-row and not-too-much PGA memory consumption. Test to see if that's fast enough (likely will be for many cases). If not, try higher values until you reach the performance level you need - and you are not consuming too much PGA memory.  Don't hard-code the limit value: make it a parameter to your subprogram or a constant in a package specification. Don't put anything in the collection you don't need. [from Giulio Dottorini] Remember: each session that runs this code will use that amount of memory. Background When you use BULK COLLECT, you retrieve more than row with each fetch,

Quick Guide to User-Defined Types in Oracle PL/SQL

A Twitter follower recently asked for more information on user-defined types in the PL/SQL language, and I figured the best way to answer is to offer up this blog post. PL/SQL is a strongly-typed language . Before you can work with a variable or constant, it must be declared with a type (yes, PL/SQL also supports lots of implicit conversions from one type to another, but still, everything must be declared with a type). PL/SQL offers a wide array of pre-defined data types , both in the language natively (such as VARCHAR2, PLS_INTEGER, BOOLEAN, etc.) and in a variety of supplied packages (e.g., the NUMBER_TABLE collection type in the DBMS_SQL package). Data types in PL/SQL can be scalars, such as strings and numbers, or composite (consisting of one or more scalars), such as record types, collection types and object types. You can't really declare your own "user-defined" scalars, though you can define subtypes  from those scalars, which can be very helpful from the p