Thursday, 6 March 2008

The JDev vs Apex vs Forms wars continue - now in print!

About a year ago I started a mini Internet war on which was the best Oracle development tool: JDeveloper or Apex or Forms; in the following blog post: A career path for Oracle developers - consider JDeveloper!

This was followed by a number comments and posts by Apex bloggers including Patrick Wolf, John Scott and Dimitri Gielis.

Whether you agree or not with the outcome of these discussions the topic certainly hit a nerve and is still a popular point of contention and discussion in Oracle circles.

In the famous words of Kim Jong-Il "can't we all just get along?", a number of Oracle specialists worked together to publish "The Oracle development tool review" article looking at the pros and cons of Apex, Forms and JDeveloper, to help readers decide the relative merits of each tool, in particular what they are suited to.

This article has been published in the UKOUG OracleScene Q1-2008 issue and is also scheduled for print in the Q2 IOUG Select magazine. Hopefully you're lucky enough to be a member of one of these organisations and can pick up a copy of the relevant magazine.

Very special thanks on my part must go to Grant Ronald for driving through the format of the article and providing sage advice, Wilfred van der Deijl for his input on Oracle Forms, John Stegeman for his assistance with the JDeveloper section, and Penny Cookson for the Apex section. All these people delivered a timely response to the article that allowed us to publish.

In addition thanks must go to John Scott, Dimitri Gielis, Bill Ferguson and Patrick Wolf for their contributions behind the scenes, and the UKOUG and IOUG editors and staff for their assistance on publishing this article. There's also thanks to a number of other Oracle staff who helped review the article but will remain nameless, and I'm sure I forgot somebody, so thanks to you to :)

Amazingly the original blog post was March 2007 and the final articles published in March 2008. This shows great patience, persistence and faith from all of those above and I think a great recommendation on how the Oracle community is willing to work together even though they have different opinions. Well done.

Wednesday, 5 March 2008

Welcome new Oracle Aussie ACEs

I'm happy to have the scoop that a long time mentor Penny Cookson and a well known and dedicated Canberra Oracle personality Marcel Kratochvil have been recognized for their efforts by Oracle and have been awarded Oracle ACE status.

So what makes an Oracle ACE? These two show a staggering background:

Penny's Oracle history:
  • 2004 Oracle Educator of the Year awarded by Oracle Magazine.
  • President of the Western Australian branch of Australian Oracle User Group (AUSOUG) 2006, conference chair 2007, and still a standing and active committee member.
  • Awarded AUSOUG life membership 2003
  • Best user paper award at Western Australian and Victorian Oracle User Group Conference 2003 for her paper "Whose fault is it – A review of Application tuning problems"
  • Best user paper award at the Western Australian Oracle User Group Conference 2002 for her paper "Oracle Forms and Reports 9i"
  • Best user paper award at Queensland Oracle User Group Conference 1999 for her paper "Application Tuning in Oracle 8i"
  • Best user paper award at Oracle Asia Pacific OpenWorld 1997 for her paper "Optimising SQL in the Oracle 8 Object / Relational Database"
  • 2nd best user paper award at Oracle Asia Pacific OpenWorld 1996 for her paper "Minimum Ingredients for Generating and Application in Designer 2000"
  • Best user paper award at Oracle Asia Pacific OpenWorld 1996 for her paper " 20 Application Tuning Tips"
  • Best user paper at Oracle Asia Pacific OpenWorld 1995 for her paper "How to Perform a 20 point Health Check on your database"
+ the following presentations:

(For your reference most of these presentations are available from the Sage website)
  • Quality Assurance of Data Models - Oracle User Group Conference (WA) - 1994
  • Oracle Forms Standards - Oracle User Group Conference (WA) - 1994
  • Using Oracle Case for easily Maintained Applications - Oracle User Group Conference (WA) - 1995
  • How to Perform a 20 point Health Check on your database - Oracle Asia Pacific Openworld - 1996 - Oracle User Group Conference (VIC, WA, QLD, ACT) - 1995+1996
  • Using Oracle Reports in a Financials Data Warehouse - Oracle Asia Pacific Openworld - 1996
  • 20 Application Tuning Tips - Oracle Asia Pacific Openworld - 1997 - Oracle User Group Conference (VIC, ACT) - 1996 + 1997 - Singapore OUG Conference - 1998 - Malaysia OUG Conference - 1998
  • Minimum Ingredients for Generating and Application in Designer 2000 - Oracle Asia Pacific Openworld - 1997 - Oracle User Group Conference (WA) - 1997
  • Designing Applications for Performance and Ease of Maintenance - Oracle User Group Conference (ACT, QLD) - 1997 - Oracle Asia Pacific Openworld - 1997 - Singapore OUG Conference - 1998 - Malaysia OUG Conference - 1998 - Oracle Asia Pacific Conference (Sing) - 1999 - Oracle N.Z. Conference - 1999
  • Optimising SQL in the Oracle 8 Object / Relational Database - Oracle Asia Pacific Openworld - 1997 - Oracle User Group Conference (WA) - 1998
  • Oracle Forms 5 New Features - Oracle User Group Conference (WA) - 1998
  • Developing Form Builder applications for a - Oracle User Group Conference (QLD) - 1998
  • Web and Client Server environment - Oracle Asia Pacific Conference (Sing) - 1999 - Oracle N.Z. Conference - 1999 - Oracle User Group Conference (WA) - 1999
  • Oracle Forms 6 New Features - Oracle User Group Conference (WA) - 1999 - Oracle User Group Conference (ACT) - 1999
  • Creating Libraries and Templates for 100% Definition in Designer 2.1 - Oracle User Group Conference (WA) - 1999 - Oracle Asia Pacific Conference (Sing) - 1999 - Oracle User Group Conference (ACT) - 1999
  • Application Tuning in Oracle 8i - Oracle User Group Conference (QLD) - 1999 - European Oracle User Conference (Madrid) - 2000 - Oracle N.Z. Conference - 2001
  • WebDB Mini Lesson - Oracle User Group Conference (WA) - 2000 - New Zealand conference - 2000
  • Managing the Cost Base Optimiser in Oracle 8i (Full Day Tutorial) - Eurpoean Oracle User Group Conference (Madrid) - 2000
  • Oracle Portal Components - Oracle User Group Conference (WA) - 2001
  • Materialized Views for Summary Management - Oracle User Group Conference (WA) - 2001 - Brisbane Oracle Masters conference - 2001
  • Indexing Strategies in Oracle 8i - New Zealand conference - 2001
  • Converting to Oracle Web Forms - New Zealand conference - 2001 - Brisbane Oracle Masters conference - 2000
  • Whats in Oracle 9iAS - Oracle User Group Seminar (WA) - 2001
  • Understanding the Oracle Portal API - Oracle User Group Conference (WA) - 2002
  • Oracle Forms and Reports 9i - Oracle User Group Conference (WA) - 2002
  • Whose fault it it – A review of Application tuning problems - Oracle User Group Conference (WA) - 2003 - Oracle User Group Conference (VIC) - 2003
  • Content management with Oracle Portal - Oracle User Group Conference (VIC) - 2003
  • Oracle 9i Features for developers - Oracle User Group Conference (WA, VIC, SA) - 2003
  • Oracle 10g New features - Oracle User Group Conference (WA, VIC, QLD) - 2004
  • Oracle Portal Case Studies - Oracle Openworld Melbourne - 2004
  • HTMLDB mini lesson - User Group Conference (VIC, QLD) - 2004
  • Masterclass – Database and application tuning - Brisbane, Melbourne, Sydney, Adelaide, Hobart, Perth - 2005
  • Development techniques for HTMLDB - User Group Conference (WA) - 2005
  • Lost Without a Trace - User Group Conference (WA) - 2005
  • Whose fault it it – A review of Application tuning problems - Oracle Openworld (USA) - 2005
  • Masterclass – Database and application tuning - Auckland, Hamilton, Wellington, Christchurch NZ - 2006
  • Oracle Application Express (mini lesson) - Oracle User Group Conference (WA, VIC) - 2006
  • How can I tune it if I can't change the code - Oracle User Group Conference (WA, VIC) - 2006
  • Oracle Application Express (mini lesson) - NZOUG Conference - 2007
  • How can I tune it if I can't change the code - NZOUG Conference - 2007
And for Marcel:
  • 2007 New Scientist Sleek Geek Winner
  • 2004 PL/SQL Developer of the year
  • 2002 Australia Recognition Award for building Strang Shipping System
  • 1999 Oracle Asia Pacific User Conference Paper (Joint paper: voted 2nd)
  • 1993 Asia Pacific Oracle Conference – Best Paper
+ the following presentations & podcasts:
  • How to Multimedia - Enable Your Applications with Oracle Multimedia - Oracle OpenWorld San Francisco - 2007
  • Podcast: Best Practices using Mod PL/SQL - On the external - donut web site - 2007
  • Podcast: Multimedia - On the external - donut web site - 2007
  • Podcast: Being Locked In - On the external - donut web site - 2007
  • Podcast: Question Everything - On the external - donut web site - 2007
  • Podcast: Extreme DBA Programming - On the external - donut web site - 2007
  • Preach and Teach: Configuring the Mod PL/SQL Gateway - Oracle User Conference – Melb / Perth - 2006
  • Conditional Compilation and Ajax - Oracle User Conference – Melb / Perth - 2006
  • Developing Multimedia Applications for the Internet - Edinburgh User Group May 2006 - 2006
  • Who wants to be a DBA - ACT User Group - 2005
  • Web Based Interfaces - Chicago PL/SQL Conference - 2005
  • Multimedia and PL/SQL - Chicago PL/SQL Conference - 2005
  • Internet Security - Chicago PL/SQL Conference - 2005
  • Hierarchical Queries and XML - ACT Oracle User Group - 2005
  • Enterprise Manager - ACT Oracle User Group - 2004
  • RMAN - ACT Oracle User Group - 2004
  • Building Web Services - ACT Oracle User Group - 2004
  • Oracle XML Roadmap for Developers - ACT Oracle User Group - 2003
  • Oracle Database Objects - ACT Oracle User Group - 2002
  • New Features in 9i R2 for Developers - ACT Oracle User Group - 2002
  • Donuts for DBAs - Australian SELECT Magazine - 2002
  • Understanding Mime Types - ACT Oracle User Group - 2001
  • Dynamic SQL in Oracle8i - ACT Oracle User Group - 2000
  • Good DBA – Bad DBA - Australian Oracle Open World - 1999
  • Top Ten Oracle 8i features for a Database Administrator - QLD Oracle User Group 1999 - 1999
  • Rapid Application Development and Oracle - ACT and QLD Oracle User Group 1999 - 1999
  • Understanding the Business Issues behind a Data Warehouse - A Business Perspective - Oracle Business Conference 1998 - 1998
  • Using Oracle8 to Web Enable the Data Warehouse - OpenWorld 1997, QLD Oracle User Group 1997 - 1997
  • An overview of the Oracle8 Database Server - Federal Dept of Social Security - 1997
  • Using Oracle8 to address the Child File Design - Federal Dept of Social Security - 1997
  • Issues in establishing a world wide web site for a business - Canberra local seminar - 1997
  • A Review of the Development of Commercial Applications for the World Wide Web - OpenWorld ’96,
  • Australian Computer Society ‘96 - 1996
  • Tips and Techniques for designing and building an application using the Oracle WebServer product - OpenWorld ‘96 - 1996
  • Oracle PL/SQL Course Notes - Over 20 training courses - 1996
  • Moving to a Proactive Database Environment - ACT User Group 1995 - 1995
  • Implementing Repeating Fields within the Relational Model using PL/SQL and Oracle7 Release 7.1. - ACT User Group 1995 - 1995
  • Implementing Hyper Indexes using Oracle7 Technology - Submitted to Oracle Magazine Jan 1996 - 1995
  • Advanced uses of Oracle7 Technology - OpenWorld ‘94 - 1994
  • Advanced Uses of Oracle7 and Oracle Glue in the Desktop Environment - OpenWorld ‘94 - 1994
  • The Centralised Database Model vs. The Distributed Database Model - Local Seminar - 1994
  • Understanding the Rowid and Rownum Pseudo Columns - Never Presented - 1994
  • Using Oracle7 and Forms 4 Technology to address the problem of poor performance in the Client/Server Environment - Federal Department of Health - 1994
  • Managing the external Oracle environment - OpenWorld 1993 - 1993
  • Query Optimisation and Database Fine Tuning - OpenWorld 1992,IOUG 1993,QLD Oracle User Group 1992
  • Managing Client/Server Technology - OpenWorld 1993 - 1992
  • The User Authorisation System - OpenWorld 1990 - 1990
And there is more..... Sheesh, over achievers or what?

Penny works for Sage Computing Services as the MD in Perth Australia and Marcel at Piction in Canberra Australia. I know Penny's presenting at Collaborate 08 this year, and I'm willing to bet you'll have the chance to see Marcel at OOW08.

Friday, 29 February 2008

New Aussie "Oracle" bloggers

The secretive, sinister, gloomy, doomy and sightly damp Oracle Australian halls maybe opening themselves to a bit of outward inspection ;) Oracle's Barry Matthews, Carl Terrantroy, Paul Ricketts, Saul Cunningham and Steve Williamson have started the GTMi Team Blog - Australia New Zealand (ANZ).

Now to be honest GTMi sounds suspiciously like a marketing **** term, but I know enough about these guys to give them the benefit of the doubt that they know the Aussie and Kiwi crowd will turn their nose to such dribble. Instead I hope they will aim at some very interesting down to earth local content rather than towing the Oracle corporate line (which mainly involves wearing suits and attempting to talk like an American I might add ;).

Good luck to the crew and hopefully we'll see more bloggers from the Aussie Oracle halls soon?

Wednesday, 27 February 2008

4 things I read more recently about JavaServer Faces

It's been a while since I published a "4 things I read more recently" post. Here's one on JSF:

Monday, 25 February 2008

Web Service Development Practicalities

With a current client we've attempted to capture larger issues and practical development ideas beyond just the technical ABCs on implementing web services. We've published it here to hopefully be useful to the casual reader.

The following contains:

1. A brain dump of issues experienced in the past on web service projects that can blow out project delivery, affect the quality of the technical solution, and just plain frustrate users, developers and project managers alike. As web service projects bring in a 3rd party to supply part of the service, there appears to be an "error multiplier" (much like the military's concept of a "force multiplier") meaning that there is a greater chance of problems occurring.

2. A discussion on small ideas to help reduce the pain and build into your project plan and development beyond just building programs to consume/publish web services.

As this is a brain dump the following is certainly not a definitive guide, and not overly well structured or articulated article. In other words your mileage may vary.

Note that the discussion bends towards development from the Oracle database with mention of transactions, triggers, PL/SQL routines and the like. The discussion is also more considerate of the consumer, not publisher of web services - though both parties can take value in reading the points below to consider the other party's issues in using web services.

If you have anything to add, agree or disagree with any of the following points we'd appreciate in hearing your experience and ideas.

Development Issues

Documentation - 3rd parties publishing web services will often supply documentation on the web services to the new consumer, include descriptions of the WSDL files, their URL locations, the SOAP XML payloads and the business processes that result. New development teams should take care to confirm that the documentation supplied matches the actual services published as this is an early indicator that if they differ, the web service and external organisation are off the rails.

Network Connectivity - if you've ever sat at an organisation where you're frequently yelling at the network administrator that "I can't get to Google" or the XYZ sub-domain isn't accessible, chances are you're sitting on an unreliable network. Such network issues will become exasperating in a web services development project as you try and work out what's gone wrong this time, or are waiting once again for the network to come up.

Server Connectivity - as an extension of network connectivity, server connectivity and stability of the Application Server that publishes the web services is essential. If the web services reside on an App Server, Operating System or hardware box that goes up and down on a daily basis, it's pretty much guaranteed to go down during development.

Test Environment Verification - a good test web service needs to provide facilities beyond that of the production web service for development purposes, such that you can verify your transactions. Without this you may need to manually verify the transactions, or god-forbid actually phone somebody and check the results.

Test Environment Stability - it's common to provide a test web service environment in addition to the production web service servers. However there is a difference between providing a test environment for your own testing and development, and providing a test environment for other parties to test with; these should not be the same server. If you're currently using a published test web service from an organisation that is using that test service to do their own testing and development on, chances are you see that server go up and down, slow to a crawl, time out, change it's functionality, report garbage data, report no data, or the web service APIs will change.

Firewalls - typically at each end a firewall will exist between the consumer and publisher, and the firewalls will need to be configured to let web service traffic through. This may be both IP and Port blocking. As soon as you find out what needs to be configured in the development and test environments, request that the changes be made for the production environment so this isn't a roadblock for your production install. Because of red-tape and security constraints at your organisation and the web service publishers, this may be a long fight.

Solution Considerations and Practical Development

Error Handling - web service transmissions can fail at a number of different points and consideration on how to handle the error conditions needs to be applied. This may require flagging the unsent data and attempting to "resend" at a later time.

After a number of failed attempts for 1 or more messages the system should log the error in such a fashion that a human will be notified (either via email, in Oracle OEM logs etc). Once failed the system should stop attempting to resend and will not automatically restart but instead must be manually restarted. This requires the appropriate procedure for operations staff.

If the publishing server has been down for considerable time such that a number of waiting messages have accumulated, on the external service becoming available consideration should be given to only sending a batch of the waiting messages as to not flood the external server and network (and bring it down again via a DOS attack).

If your system fails after transmitting its payload the transaction needs to be written in such a manner that it doesn't rollback to a point where it thinks the message was not sent and doesn't erroneously send it again. Considered use of PL/SQL autonomous_transactions will take of this.

Soap Failures - the Soap web service protocol has an error reporting "fault" mechanism. Any custom code you deliver needs to be able to detect what is an expected response and what is an unexpected response, how to handle known faults or unknown faults and log them appropriately with as much detail as possible for debugging purposes. Though the Soap protocol defines a number of different soap fault responses and mechanisms to deal with these, as web services may be hand-crafted solutions you may see totally arbitrary error handling capabilities.

Network and Server Latency - the publishing server's response time can be variable dependent on network latency and server load. As such any solution should consider carefully not communicating to the external server within the same transaction that a human is part of; the wait time can become infuriating for the user. Instead write the message to be sent to a separate table/data structure then commit, with a separate independent process periodically searching for new records to be sent.

In particular be mindful of having database table triggers that call the web service routines to send messages. If a user undertakes DML on the table the operation may hang until the web service call is complete.

Test Utilities - as web services can fail at many different areas (connection, timeout, payload errors etc), it's prudent to write simple test programs that help diagnose these issues rather than depending on your final production code under development. Such utilities will help you debug and diagnose the issues without the bloat of your own code. If written properly such tools can be included in production solutions to detect issues as they occur and log the issue or notify the appropriate operational person.

Own Test Web Services
- if the external provider is having issues with providing a consistent test service, consider creating your own test web service based on the WSDL and XML payloads that they have published to keep your development going.

Service Level Agreements - care needs to be given to get the web service publisher to provide SLA on both the test and production environments. In particular uptime, not changing the specifications, not changing the business process, and notifications of system disruptions and potential future changes are essential. If you detect a casual response to this, be wary what this implies, a casual response or non concern of providing you the services.

Verification Utilities - the publisher of the web service could change their custom web service API at any time regardless of SLAs. Programs to detect changing WSDLs as well as fault handling in your programs to detect changing SOAP XML payload structures, along with reporting to a higher authority can initiate discussions about "what have you guys changed now?" rather than wasting time on "why isn't our program working now?"