Monday, November 27, 2006

A tale of two blog sites (updated)

Update 08-OCT-2007

In the original version of this article I named somebody who had posted other people's articles verbatim and without proper attribution. This person claims that it was an honest mistake and they had no intention of passing off other people's work as their own. They asked me to remove their name from this article. Originally I simply added a postscript. However they have now repeated the request. After due consideration I have decided to remove their name and the link to their blog. In all honesty I should have done so sooner. However, the Internet being what it is (i.e. a hall of mirrors) I'm sure multiple versions of the original wording will be around for ages.

I visited two new Oracle blogs today. The first, Oracle Brains, by Rajender Singh is workmanlike, and to be frank, doesn't contain much that is strange or startling. It will be a while before the site lives up to its name. But everybody has to start somewhere. Also, Raj showed initiative by advertising his blog in the OTN forums. More importantly, it is all his own work.

Unlike the second blog I visited this lunchtime. [name deleted] claims he will use his [name deleted][url deleted] blog "to keep my knowledge on Oracle RDBMS spread over this blog and share some light moments". But what he is actually sharing are articles by Jonathan Lewis, Fairlie Rego and Steve Adams, although attributing them to himself. So that's light as in light-fingered rather than light-hearted.

This is not as blatant as the nimrod who recently cloned Tim Hall's entire Oracle Base site but it is still pretty stupid. Passing off other people's work as your own is dishonest. Doing so on a web site merely shows a complete ignorance of the power of search engines. It took me a couple of minutes to identify the real authors of those pieces, and I'm not even a black belt in Google Fu.

Jakob Nielsen advised us to remember that our future bosses might be reading our blogs and post accordingly. Advertising oneself as someone who takes the credit for other peoples' efforts and knows nothing about how the Internet works strikes me as a bad tactic for impressing people looking to hire good technical staff. A Dilbert-esque line about people looking to hire managers has occurred to me, but my future - or even my current - boss may be reading.


[name deleted] has contacted me to say that he was not intending to pass off other peoples' works as his own. He has amended his blog to acknowledge the original inspirations for those articles. So I am happy to accept [name deleted]'s explanation and I withdraw any imputation of dishonesty on his part.

Programming with Oracle SQL TYPE constructs, Part 1

In my presentation at the UKOUG, "At last! A use for TYPEs!", I tried to explain why a sensible person might choose to write an API using Oracle's SQL Types rather than Plain Old PL/SQL Packages. My current project uses an API built out of Type objects but it is the only such implementation I have know.

During the Q&A at the end Oracle's Sue Harper asked a pertinent question. When she had worked on Oracle Designer they had introduced the ability to work with Types but there had been no real take-up amongst the Designer users. Was this because the Oracle Type implementation was not very good or was it that nobody really knew what to do with Types? In my opinion the answer is both.

This article is an extended (two part) response to Sue's question. In this part I will briefly describe Oracle SQL Types; I am not trying to provide a substitute for the documentation, I outline what I think are the shortcomings with the existing Oracle Implementation which may deter people from using them. In the second part I will I have addressed Sue's request for a simple yet non-trivial example of the advantages to programming with Types.

An old COBOL hack explains OO programming in less than 200 words

In procedural programming we have data in tables and executable code in packages. In Object-Oriented programs we have objects which combine data (attributes) with procedural code (methods) to manipulate that data. OO programming has three principles:
Encapsulation. By gathering code and related data into a single object we shield the application developer from the gnarly details of our implementation. We all understand encapsulation: PL/SQL packages do this very well.
Inheritance. We can define a hierarchy of objects starting with the general and getting more specific. For instance we might have a type called Customer to represent generic behaviours and extend that to two sub-types CompanyCustomer and IndividualCustomer to model more specialised behaviours. We can add new attributes and methods in the sub-types and also override methods defined higher up the hierarchy.
Polymorphism. This is the ability to treat an object as different types according to our needs. For instance we can instantiate an IndividualCustomer object and pass it to a program which takes a Customer object. In my opinion it is polymorphism and substitutability which make programming with types an interesting proposition.

A quick note on terminology. The Object-Oriented vocabulary is ripe for confusion. I will use Type to as shorthand for Oracle SQL TYPE (also known as User Defined Types or Complex Data Types). A Type is a definition of something (other OO languages use Class to signify the same thing). When I use object I am talking about an instance of a Type, that is, an actual thing populated with data. Unless of course I am talking about objects in the regular Oracle meaning of tables, sequences, etc. :D

A brief history of TYPE

Oracle introduced Types in 8.0, branding the product as an Object-Relational database. You will no doubt be shocked to learn that the whole ORDBMS thang was largely marketing. The initial Type offering was very incomplete, lacking inheritance and polymorphism. So experienced OO programmers looking at Oracle 8.0 found so much missing that they could not work in PL/SQL and experienced PL/SQL programmers couldn't see what all the fuss was about. Oracle 8i added Java as an option for writing the code behind the methods but otherwise didn't extend the OO functionality.

In Oracle 9i we were given the inheritance and polymorphism. We also gained the ability to evolve our type definitions with the ALTER TYPE syntax. In Oracle 8 the only option at our disposal was the CREATE OR REPLACE TYPE syntax, which hurled with types that had dependents (other types and tables). The constant need to drop dependent objects was a major impediment to building APIs with types. The other major impediment was relieved in 9iR2 when Oracle gave us the ability to define our own constructor functions. The constructor is the method called when we instantiate an object. This is crucial because the constructor is the place to set default values and apply business rules. So really it only was with Oracle 9iR2 that Types became a viable programming option.

No additional object-relational features were added in Oracle 10g. Does this mean we now have a complete OO implementation? Heck no!

What remains to be done

We cannot create types that consist of methods only...
4 , MEMBER FUNCTION get_whatever RETURN varchar2)
6 /

Warning: Type created with compilation errors.

SQL> Show errors
-------- -----------------------------------------------------------------
1/1 PLS-00589: no attributes found in object type "ABSTRACT_TYPE"

So we cannot create abstract types or interfaces. Furthermore we cannot have private variables in our type bodies ...

2 ( attr number
3 , MEMBER PROCEDURE keep_count)
5 /

Type created.

2 AS
3 private_attr number ;
6 IS
8 private_attr := private_attr+1;
9 END keep_count;
10 END:
11 /

Warning: Type Body created with compilation errors.

SQL> Show errors
-------- -----------------------------------------------------------------
3/5 PLS-00103: Encountered the symbol "PRIVATE_ATTR" when expecting
one of the following:
not final instantiable order overriding static member
constructor map


Nor can we have private functions ...

2 AS
4 RETURN number
5 IS
6 private_attr number ;
8 private_attr := private_attr+1;
9 RETURN private_attr;
10 END;
11 MEMBER PROCEDURE keep_count
12 IS
14 SELF.attr := SELF.cntr();
15 END keep_count;
16 END;
17 /

Warning: Type Body created with compilation errors.

SQL> Show errors
-------- -----------------------------------------------------------------
3/21 PLS-00539: subprogram 'CNTR' is declared in an object type body
and must be defined in the object type specification


There is also a minor problem with OVERRIDING methods in subtypes. We lack a mechanism for inheriting behaviour from the parent's implementation (equivalent to Java's super() command)1. The upshot is, we cannot properly encapsulate our business logic inside our types. If we want to have private attributes or private methods we have to use tables and PL/SQL packages, which rather defeats the purpose.

So I hope this answers the first part of Sue's question. It has taken a long time for Oracle to provide a viable Type implementation and even now it is incomplete. So that is a possible explanantion for the low take-up of programming with Types. But are programmers missing a trick? This is the question I will attempt to answer in Part 2.

1. In one of his Open World 2006 sessions PL/SQL product manager Bryn Llewellyn included support for super() as one of the new features in next generation Oracle (the usual BETA! caveats apply).

Thursday, November 23, 2006

UKOUG 2006: In review

So another UKOUG conference is over. Now begins the task of downloading all the presentations I couldn't see this year because they clashed with the ones I did see.

UKOUG followed hard on the heels of Open World, and I was still a bit jaded last week. Birmingham is different from San Francisco. For instance, the Fujitsu-Siemens branded umbrella was a wholly irrelevant inclusion in the OOW2K6 conference bag. Whereas a similar giveaway in the UKOUG bag would be genuinely useful. Anybody who sponsored such an item would likely get a great deal of brand exposure over the week, not to mention actual gratitude from the delegates.

Another difference from Open World is that the UKOUG agenda is much more substantial, at least for DBAs. Lots of juicy topics and a wide variety of perspectives. So it was a shame that the schedule was loaded with the bulk of the Technology presentations in the first day. I met several people who were only attending on the Tuesday. For me, the Development side of things seemed even thinner than usual. The topics on offer were good, but there was not much choice. There seemed to be very little on process, as opposed to functionality braindumps and cookbook-style presentations. It was the usual lean pickings for those of us who don't build front-end applications. Of course, if developers won't submit papers there's not much which the selection committee can do about it.

Because I didn't do the full four days I missed out on much of the socialising this year. Still, I enjoyed the Bloggers/SIG Chairs' do. Organisationally, one successful innovation was the no-comps policy for the event dinner. Apparently if you make people pay for the ticket they will actually turn up. Who'd a thunk it?

I thought the round table sessions worked quite well. With the Dev Tools one, as is often the case, it took a long time for the conversation to warm up. In fact it was just towards the end of the session that people started to offer opinions rather than just asking questions of the "experts". We really could have done with another forty-five minutes. Perhaps next year we should start with some beers beforehand. Unfortunately I failed in my role as facilitator and didn't remind people to fill in the evaluation sheets; I hope other facilitators were more diligent.


Overall in was an enjoyable conference but not a classic. The following are some random things which have stuck in my mind from last week.

The look on Tim Hall's face. He really should have stopped asking Doug Burns about those furry housemates of his. Mind you, as Tim has just read all ten of Anne Rice's Vampire Chronicles books in two months I'm not sure he is in a postition to accuse anybody else of having weird or unhealthy obsessions.

A copy of Oracle Scene on the floor of a toilet cubicle. To be honest this is not the sort of magazine one expects to find discarded in the Gents.

Tom Kyte's Instrumentation 1010 presentation saved by a Windows bug. Tom's laptop went into hibernation mode just as he was about to run his last demo. I was chairing this session so I pointed out he only had a minute to go anyway. Then the hibernation failed due to a Windows error so Tom was able to run the script and finish his presentation tidily.

"We're not wearing a company uniform, no siree." Both SolStonePlus and IBM decided to kit out their employees in snazzy dress shirts rather than polo shirts or business suits. It was unfortunate (in more than one sense) that both companies had gone for a pyjama-style design with stripes of varying hues of blue. Even more unfortunate that both companies stands were adjacent. I smirk because I know how these things happen. The first time I did a presentation at Open World I was issued with a branded, canary yellow rugby shirt. I held out for the black polo shirt with a discreet logo. Only the Dalai Lama can carry off yellow.

And finally

Because this year's conference theme was art related ("Create your masterpiece with Oracle"? What was that about?) the ambient music filling the space between sessions in the main hall was dominated by a tune called Leftbank II. Which is better know to Brits of a certain age as the music from the Vision On gallery. I have still that mellow jazz groove and those ethereal vibes slinking around my brain. All together now: do-di do-di DO do-do do DO do do do-do DI-di-di DI di-di DI di di di di-di ...

Friday, November 17, 2006

UKOUG 2006: Day Three

Just after I finished writing up Wednesday I met Mark Rittman. He was still shellshocked from discovering that his ISP had failed to back up his site properly and so he had lost three years worth of blogs, articles and other stuff. This is not just gutting for Mark, it is a loss of a major web resource for us all. By Thursday he had become more philosophical: the forcible purge of the site at least gives him an opportunity to reassess what he does with it and cleared away some of his more embarrassing early posts. Not that I'm sure Mark had much to be embarrassed about. Anyway, in future he will be adopting a belt and braces approach to backing up his articles. A lesson for us all.


I was actually on leave on Thursday. So I only attended a couple of sessions in the morning and made a last tour of the exhibition hall before coming back to London.

The first session I attended was Mike Hichwa, the Oracle VP for SQL Developer, ApEx and sundry other tools, offering some insights into his various projects. This is the sort of thing that justifies these conferences. Mike is the guy who wrote the first version of HTMLDB, having been the guy who wrote its predecessor, WebDB. So it was great to hear what he has to say about his thought processes as he started the development of HTMLDB.

The original model for HTMLDB was the ATM - a page flow with validation and decision points. From the beginning Mike wanted the tool to be declarative for ease of coding and consistency of execution. This also promotes modularity. He also wanted it to be more flexible than Forms, which is great for building standard apps but gets very truculent when we want to go off-piste. Another important decision was that HTMLDB would build metadata driven applications rather than being a code generator. This makes it much more interactive. During the earlier days of development Mike was working in the same room as Tom Kyte. So he had instant access to AskTom, as a result of which ApEx is highly optimised for assembling apps on the fly.

Also Mike and his team are committed to building a community around ApEx as a tool. For instance, they actively participate in the forums. They are also looking to build up a library of packaged applications which can be downloaded from SourceForge and installed for free.

The next major release of ApEx is like to feature Flash widgets for generating charts, integration with XML Publisher and an AJAX-driven WYSIWYG form layout editor.
Version control still seems somewhat clunky, requiring as it does several manual steps to get the application out of the workspace and into the source control repository. I think this is a barrier to its acceptance as an enterprise tool; I will be waiting to see whether the ApEx team manage to take advantage of the 11g (BETA!) object versioning feature.

The second session I attended was Cecil Hamilton-Jones talking on The Search For A Generic Data Model: Introducing The Associative Data Model. This was a quest for "life beyond the relational data model" and was always going to be a provocation. Which is fine: we can all benefit from having our assumptions challenged by new ideas. The problem with Cecil's presentation was that it was that was riddled with inaccuracies, confusions and unsubstantiated assertions. He repeatedly blurred the distinction between the relational data model and the process of building applications. He alleged that every time we start a new project we build a new set of tables. He also said that existing RDBMS products were not fit for the Internet business model; this will be news to Google, Amazon and all those other outfits limping along. As for his statement that the relational model was "a perfect fit for SQL", well, it was a shame Hugh Darwen was not present.

The associative data model itself is an interesting theory. It builds on concepts from social science - triple stores, semantic networks and other interesting stuff - to organise data. Everything is either an entity or an association. Associations specify the links between entities. The resulting patterns of data are built up like sentences: subject verb object. This is recursive, so that a subject can itself be built up of prior triple stores. However, as Noam Chomsky once pointed out, it is perfectly possible to write sentences which are syntactically correct but meaningless. Without relational integrity and candidate keys how does the ADM ensure meaning? Apparently it is handled by the application. Hmmm.... Of course the real reason why similar key-value pair solutions have failed in the past is that they fail to scale. Cecil interpreted this question as a matter of number of users but the problem is one of querying large tables with no meaningful indexing.

I'm trying not make this seem like a hatchet job but it's difficult. I'm totally in favour of the UKOUG offering presentations which fall outside the realm of Oracle technology and applications. I think they provide interesting perspectives on the main topic. But the standard of proof for theoretical papers needs to be as high as that for practical papers on query optimisation and the like.

Wednesday, November 15, 2006

UKOUG 2006: Day Two

Having arrived at the ICC way too early I steeled myself to attend the keynotes. Ronan Miles, the Old Master, confounded my expectations by not pronouncing this conference as the biggest and best ever, as he had done every year since I started attending. In fact he seemed slightly concerned about it. He wants everybody's opinion on the four day conference (after Friday). Next year's conference is also going to be four days long so I think it is important that everybody contribute (constructive) observations and suggestions for improving the structure of the 2007 event.

Ian Smith (wearing brown shoes in town, tsk tsk) gave a very polished speech - from a teleprompt - on the future of applications. Which boils down to Fusion With Choice. Oracle Apps under the Fusion brand will be the main way ahead but Oracle will continue to maintain and enhance PeopleSoft, JDEdwards and Seibel, on DB2 and MSSQL, for the long term. Apparently JDE World A9.1 will be the first new version of that product since 1998. Guess the users must like it. There were a few words that recurred through Ian's speech. See if you can spot a pattern: integrated; consolidated; coherent; focused; sincere; passionate; standards-based. There was a digression on Web 2.0 but I'm not sure quite how that applies to ERP applications. I mean, just what Sarbanes-Oxley compliance is possible in Wikipedia or MySpace?

Exhibition Hall

The exhibition hall opened today. Hurrah! But nobody seemed to be giving away promotional T-Shirts. Alas! But Oracle University were. Hurrah! So I will be sporting an their T-Shirt tomorrow. I was right that nobody was giving away promotional socks, although I may have planted the idea in the minds of the folks on the OU stand.

After Open World the hall seems terribly small and sedate.


I chaired four sessions today. The first was Tom Kyte talking about Instrumentation 101. For the benefit of anybody who hasn't experienced the American education system, 101 means an Introductory course. Instrumentation is embedding trace and debug messages in our applications from the word go. Specifically it means having a debug message after every line of "real" code, with the ability to easily switch things on and off. Tom covered DBMS_APPLICATION_INFO, SQL Trace, DBMS_MONITOR and auditing. No mention of DBMS_OUTPUT. Strange that.

After lunch I facilitated (dread word) the Tools Round Table. It quickly became obvious that almost everybody had turned up to give Grant Ronald a hard time about the future of Forms. So we had just the one big circle rather than several separate tables. Once we had got the FOF question out of the way the conversation roamed widely over the various options for developing applications. I was interested to hear from Mike Hichwa that the Chicago Police Dept are running a system with hundreds of multi-page modules for thousands of users, all built out of ApEx. That's an enterprise level tool. We had the traditional bashing of Java developers over the question of whether business logic belongs in the database or the middle tier. But the session finished with Sten Vesterli advocating the need for communication and understanding between javaheads and database people.

The third session was Hugh Darwen on The Importance Of Column Names. This was an entertaining dissection of the third most severe mistake in SQL (after nulls and duplicate rows). It was a (revised) version of a keynote Hugh gave to the Ingres User Group a few years back, which is probably why it contained a blatent plug for Ingres as an open source database. Amongst many things he said that may strike some people as controversial was this gem:
"It is debatable whether a 'nanny state' attitude is appropriate for a computer language."

This was in the context of SELECT * being a bug. As Hugh points out, the problem really lies with the way people implement their FETCHes.

From the theoretical to the down-and-dirty technical. All the chip geeks turned out for James Morle speaking on Database System Architectures For The Commodity Age. I'm not sure I entirely understood the relevance of Julian Clancy and Chuck Norris as the avatars of commodity and non-commodity products respectively (I would have chosen Chantelle as the embodiment of commodisation) but then there were several other things which I didn't understand. One thing which I did find illuminating was this analysis:

  • Servers: commoditised
  • Operating systems: commoditised
  • Database software: on the way to commoditisation
  • App Servers: not really commodities yet.
  • Very far from being commodities.

James pointed out how neatly this aligns with Oracle's business strategy. Coherent? Focused? You bet!

UKOUG 2006: Day One

My conference started off badly: I left my suitcase on the tube. A total senior moment: I just stood up, picked up my rucksack and got off at Euston. I only noticed I didn't have my luggage after I'd bought a coffee prior to getting on the train to Birmingham. That was to be my first coffee of the day but caffeine deprivation is really no excuse. With fifteen minutes before my train was due to leave I had to go back to the tube station to admit my bloomer. At this point I was just keen to not be responsible for a major disruption to the rush hour tube service. I now have my Lost Property claim form and I hope to be reunited with my suitcase sometime next week.

So I arrived in Birmingham with only hand luggage. There's further bad news: the exhibition hall was closed on Tuesday which means I won't be able to get through the week by wearing promotional T-Shirts. I'm going to have to go shopping. Besides, I don't expect any vendors will be giving away promotional underpants or socks. Maybe they are missing a trick here. I know people who would wear socks with a cartoon toad on them.

On the other hand at least I didn't have to check into my hotel immediately, so I caught almost the whole of Tom Kyte's keynote, What's Coming Next? This was a whiz through the likely contents of Oracle 11g (subject, of course, to the standard BETA! caveats). Tom devoted quite some time to the version control functionality, which he regards as the killer feature. It does sound quite neat, having an API layer of version controlled views, packages, etc so we can apply patches to our live applications without downtime. Certainly this might have saved me some late hours last month.

There are other features which catch the eye (such as native PL/SQL and Java compilation, virtual columns, flashback data archive) but I remain unconvinced that there is a compelling argument for upgrading. In John King's presentation on XML he did the traditional database version survey: some people on 8i, some more on 10 but roughly two-thirds on 9i. He said he came across the same proportions in the USA. Even Oracle only claim a 50:50 split between 9i and 10g. Oracle need to shift more of their customers onto newer versions for obvious business reasons. But as the major features in 10g (like the automated management stuff) still haven't achieved that it seems likely that Oracle will have to resort to coercion. At the very least they should seriously consider backporting some of the upgrade smoothing features to make it easier to move sites from 9i straight to 11g.

Session chairing

I chaired two sessions yesterday. This amounts to little more than reminding people to switch off their mobile phones and asking them to fill in the evaluation sheets. And giving the speaker time checks at the ten, five and one minute to go points.

Not that this was necessary for the first session. Chris Roderick from CERN spoke on Capturing, Storing and Using Time-Series Data for the World's Largest Scientific Instrument. Maintaining data from the Large Hadron Collider is an interesting business problem: sixty millions records per day (and likely to increase) that have to be searchable online, across a data set which will eventually hold twenty years' worth of data. The LHC Logging architecture is probably as close to a template solution as it is possible to have with such an esoteric scenario. They have an API which batches up the client records to allow bulk DML operations. The data is stored in range-partitioned index organized tables. The queries make extensive use of analytic functions. I would liked to hear more on the decision making process. How did they decide on index organized tables rather than regular ones? How did they model the scalability of the solution? But the UKOUG sessions are only forty-five minutes long and Chris did a very good job of explaining the project in the allotted time.

The next session I chaired went right to the wire. John King's gave us an overview of XML in Oracle. This was a (coherent) gallop through the entire feature set from simple basic SQL support through to WebDAV. It was like having the entire XML DB guide distilled and injected straight into your veins. John thinks that XML DB is primarily a marketing thing, gathering up a whole bunch of features under a name than is trademarkable. Oracle indulging in marketing? Surely not. One other he said that struck me was that XML in the database is used primarily for backup, in case people need to reproduce XML documents. I would like to think this is true but I suspect all sorts of nasty implementations are lurking out there.

My presentation

In the film of The Right Stuff (and possibly in real life too), the first Mercury astronaut Alan Shepherd sits in the capsule on the launch pad and recites the following prayer: "Dear Lord, please don't let me f**k up". This is a great prayer for presenters too. I skipped lunch to run through my presentation one more time. Which was just as well because I discovered that I had left a whole bunch of DBMS_OUTPUT messages in one of my demo scripts.

From my side of the podium I think the actual presentation went well. The scripts ran, my mind didn't go blank and the questions at the end suggested that at least some people had been paying attention. There was one minor blip: when I submitted the paper it turn's out I had called it At Last! A Use For Objects whereas my slides used TYPE, because I was speaking about programming with SQL TYPEs. Nobody seemed bothered, but you can never tell: some OO people get terribly particular about terminology.

Time passes

We're S-H-O-P-P-I-N-G, we're shopping

The bloggers' meeting

After the SIG Chairs' meeting we decamped to All Bar One for a joint SIG Chairs/Bloggers thrash. I discussed PowerPoint technique with Peter Scott. I'm moving towards a style that has fewer slides and fewer - or no - words on the slides I do have. I think Peter thought I was criticising him for having 55 slides in his session but I wasn't. Tim Hall is still jetlagged, poor guy. At least he's got his luggage back, whichI hope is a good omen for me. I completely failed to engage Babette Turner-Underwood in an interesting conversation about Data Pump. But she forgave me and we moved on to Funny Things Children Say. And Mike Durran asked me a very pertinent question: "So what do you blog about?" Mike, I'll get back to you when I find out.

Wednesday, November 08, 2006

OOW2K6: The presentations we can't see

As several other bloggers have noted the Open World presentations are now online. The "attendees only" password is widely circulated. It also is derivable from the passwords for previous years: no doubt what the experts call security through over-familiarity. My slides and supporting collateral are there, although it looks like you will have to use your skill and judgement to figure out which paperclip is the Powerpoint and which is a SQL script.

One category of presentations which is not available are any Oracle presentations alluding to features which may or may not be in the next release of Oracle. It would seem the legalistic get-out at the start of each presentation covers the session itself but not subsequent publication of the slides anywhere else. So if like me you missed a presentation or just didn't take adequate notes, well, you'll know better next time.


Since posting this I have tried to download some other presentations. For some reason PowerPoint will not open Oracle-sourced presentations. I don't think it is due to corruption in the content management system as I could open a non-Oracle PPT file. It may be a trojan macro embedded in the template by Oracle's legal department ;) Anyway, this is another good reason to convert presentations to PDF. I've been using Primo PDF, as recently recommended by Tom Kyte, and it really does the business.

Tuesday, November 07, 2006

UKOUG Conference: Development Tools Round Table

The guy who taught the first Unix course I ever attended could edit command line strings faster then we could read them. After one particular bravura display of text manipulation his audience gave a collective gasp. David (I think that was his name) looked up and said, almost sheepishly, "Well vi is the only word processor I know". Even in 1992 that seemed impressive. Bizarrely, in his spare time this bloke wrote software for the Apple Newton, a gadget about as far from the Unix command line as it was possible to get at the time. If I had have read Neal Stephenson's In the Beginning Was The Command Line then, I would have had a finer appreciation of the nuances of this contradiction.

Tools are one of the things that unite and divide developers. Spats frequently break out in the forums over the vexed matter of PL/SQL IDEs vs text editors and SQL*Plus. On the one hand GUIs allow us to be more productive, by automating tedious or complicated processes. On the other hand they shield us from an understanding of the task in hand, which makes it harder for us to work when we have to deal with something the GUI cannot handle. The question of which text editor is another one which frequently causes the hackles to rise. The alpha geeks argue whether vim or emacs is the most studly. Whereas my penchant for TextPad marks me out as a wussy Windows user. I am just starting to use UltraEdit and appreciate some of its features (the hex mode saved my bacon recently) but I don't think I will grow to love it like I love TextPad.

Of course in the Oracle tools realm there has been a lot of activity in the last couple of years. On the one hand the traditional tools like Forms, Reports and Designer are in various levels of neglect, as newer technologies like JDeveloper and XML Publisher come into the ascendant. On the other hand there has been a flurry of activity on the part of Oracle to hook in developers early: SQL Developer, ApEx, Oracle XE. This is a belated recognition by Oracle that at least part of the reason for Microsoft's dominance has been its wooing of developers. Getting developers' mind share is crucial in the uptake of development tools for one reason: recruitment. Nobody ever said "We can't build this in VB, where we find people who know the language?" Perhaps the question "Where will find VB developers with sufficient smarts to build a half-decent application?" should have been asked more often, but the same is true of almost any programming language.

At the UKOUG Conference this year I will be facilitating a round table session on Development Tools. This is a new format for the UKOUG this year and I don't think anybody is quite sure how it is going to work in practice. But the theory is simple: a room of, er, round tables at which people sit and discuss the topic in hand. No podiums, no Powerpoint, just discussion. It might turn out to be the Focus Pubs without the beer. I'm not sure whether the tables will be switched at fixed intervals (like speed dating)

We have on hand four experts to assist me in the generation of debate:

  • Sue Harper, Oracle, SQL Developer Product Manager
  • Grant Ronald, Oracle, Forms Product Manager
  • Omar Tazi, Oracle, Open Source Evangelist
  • Sten Vesterli, Scott/Tiger, consultant

Each of us will host a table dedicated to one topic in the Tools space. Grant will be majoring on the roadmap for Oracle development tools. Sue will be drawing on her experience in Designer, JDeveloper and SQL Dev to assess options for modelling database applications. Omar will be there to discuss open source tools for Oracle, both what's available and opportunities for participation. Sten will be bringing his expertise in Comparative Tools Studies - Forms, J2EE, even Oracle Power Objects. And I will be hosting a table on miscellaneous tools and utilities which may just turn into a session of What's On Your USB Drive?

Of course this is all irrelevant if nobody else turns up. So please come along. Bring your questions, your suggestions, your opinions. Bring your USB drives if you must :). The more fervent your opinions and the more searching your questions the better the session will be.

Monday, November 06, 2006

UKOUG: Comin' up fast

"I count as lost any November that does not include a visit to Birmingham."
Gore Vidal

Yes the grand old man of American letters really said that. And even more unbelievably he was talking about Birmingham, England and not some other Birmingham. In other words, whilst I have barely had time to recover from Open World, it's already time to gear up for the UKOUG Annual Conference. The juxtaposition of these two events is an unfortunate piece of timing for me personally: it means I have had to turn down a chance to speak at the LogicaCMG LOUD event in Amsterdam. On the face of it there is no contest between the canals of Birmingham and the canals of Amsterdam. But as a UKOUG committee member I have overriding commitments to the conference. Dedication indeed.

I am still working on my presentation. Originally my submission on Oracle Types didn't make the cut. I was disappointed but over the summer my workload got tough and I found it hard to get the time to finish my paper for Open World let alone anything else. So eventually I had been quite relieved that I wasn't presenting at the UKOUG. Then last month I got an e-mail from Rachel saying my paper had been accepted after all; I was on the reserve list and somebody had dropped out. On top of which I am facilitating a round table session on development tools. But, in the words of Col. "Hannibal" Smith, I'm sure the plan will come together. It certainly gives me the adrenalin jolt I need after Open World.

The conference this year has been stretched to accommodate the additional members we gained due to the various Oracle purchases. Oracle themselves fixed this in San Francisco by hiring additional venues but this option wasn't open to the UKOUG. So the conference now extends over four days. The directors have taken the decision to offer a compelling conference experience for the newer members of the UKOUG family. The schedule has been organised around a core of PeopleSoft, JD Edwards and Apps presentations on Wednesday and Thursday. The sessions for the technology stack have been spread, sometimes very thinly, across the four days. Tuesday is very strong, there's a dip in choice on Wednesday, a single stream on Thursday and an upturn on Friday.

I understand why the schedule has been so structured and I suppose it is the correct decision. But the upshot is that it is tough for technologists who don't use Apps to justify their attendance for all four days. Certainly I will only be doing two whole days. This is a shame because the Annual Conference has always been strong its range and depth of presentations; traditionally it has been much stronger than Open World, which is more of a networking and marketing event (albeit still the most exciting Oracle event I get to attend). So it's ironic that this year OOW2K6 put a lot of effort into attracting developers, with a whole separate series of presentations under the Oracle Develop banner - and a free T-shirt too!

At least the Development Engineering SIG still has a visible presence at the UKOUG Conference. We seem to have subsumed at the poor old Modelling and Design SIG altogether. And, despite all my grumbling, there are still more sessions I want to attend than there is time available. I'm going to miss some of the ones I really want to hear because they clash with my presentation and the SIG Chairs' meeting. Oh well. I'll be chairing a few sessions and propping up the bar at the Bloggers' thrash. So one way or another I hope to meet some of you next week.

Thursday, November 02, 2006

Oracle Guru: is it you?

Robert Vollman has written a response to an article by Don Burleson on "Oracle Gurus". In it he writes:"Strictly translated, guru can mean 'teacher' - and in many places like India and Indonesia I understand that guru is generally used in that sense."

Anu Garg, of A Word A Day, has this to say about the word:
When we talk about a software guru or an economics guru, we're invoking a word from this classical language [Sanskrit - Ed.]. The word "guru" came to English from Sanskrit via Hindi. It literally means "venerable" or "weighty". Going farther back, it descended from the same Indo-European root that gave us "gravity", "engrave", "grave" and "aggravate" to name a few.

It is only in the sense of being "one who is weighty" that I consider myself a guru ;)

The thing about gurus (in the original sense) is that they are spiritual teachers, people with a handle on the numinous and the ability to transmit their understanding to their students (followers). We should be puzzled by the common use of the term to describe IT experts. After all, computers are machines and programming is an exercise in logic not mysticism. Obviously there are a lot of people in computing who are interested in martial arts and yoga. But there are just as many who are into heavy rock and we don't say Tom Kyte is an Oracle lead guitarist1. So why do we label our experts "guru"? Is there anything less spiritual than tracing 10053 events? Has anybody ever attained satori by ploughing through a hex dump of a rollback segment's block headers?

According to Anthony Storr:
"almost all spiritual gurus are solitary children who have passed through a period of intense personal crisis, often provoked by feelings of isolation, leading to breakdown. They resolve the crisis through a revelation, usually arrived at in private, often on a long and never wholly explained journey."
Actually that does sound an awful lot like ploughing through a hex dump of a rollback segment's block headers.

I suppose the thing is computer systems have become so complicated that they frequently exhibit emergent behaviour. Given all the variables involved - hardware, operating systems, the many layers of software and the vagaries of user activity - it is tempting to think that anybody who can actually explain why our application just did that peculiar thing must be tapping into a store of arcane knowledge. In fact modern systems are generally so well instrumented that most things are (or ought to be) explicable to anybody with a basic level of understanding.

For several years in my twenties I studied T'ai Chi Chuan. My teacher's teacher's teacher was Cheng Man Ching. One of Professor Cheng's aphorisms was "There are no secrets." In other words, as a teacher he had no esoteric transmissions to pass on. He just had the principles of T'ai Chi and everything else preceded from them. To become a master in T'ai Chi is simply a matter of practicing the principles and reflecting on our practice. Or, as another guru recently put it:"forget the mystic, magic, cool in theory internal stuff - learn and master the basics and you’ll blow way past someone who has learned a handful of really cool internal tricks." That sounds simple enough. "Master the basics"? Well we can all read that fine manual. But it takes a lot of practice and reflection until we have the sort of real understanding that constitutes mastery.

On the matter of how we can tell a good Oracle guru from a bad 'un all I can say is that anybody who styles themselves "guru" almost certainly ain't. This unattributed article has some sound guidelines for spotting fake Buddhist gurus which I think apply to gurus in other areas. Remember, a guru is not just somebody who offers you advice: they are teaching you an approach to living (or a methodology for tuning Oracle databases) which will require you to make changes to who you are. At some point in your practice you stop learning the teachings and start learning the teacher. So always ask yourself if you want to be like this person. If the answer is "No" then they are not the guru for you.

1. Of course, if Tom was a lead guitarist it would be in an analytics rock'n'roll band.