<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6363924398907149830</id><updated>2011-11-24T04:52:26.446-06:00</updated><category term='Personal'/><category term='Buying a small hotel'/><category term='charting'/><category term='Sumneva'/><category term='Software Development'/><category term='PL/SQL'/><category term='AJAX'/><category term='Photography'/><category term='Costa Rica'/><category term='Security'/><category term='Oracle'/><category term='Presentations'/><category term='ODTUG'/><category term='Blogging'/><category term='Lifestyle changes'/><category term='Rants'/><category term='RMOUG'/><category term='CHARTS'/><category term='Travel'/><category term='ApEx'/><category term='Authorship'/><category term='Book'/><category term='JavaScript'/><category term='Moving abroad'/><category term='Training'/><category term='Annoying Habits'/><title type='text'>Doug Gault's Blog...</title><subtitle type='html'>A bunch of stuff about MAC, Oracle, ApEx, Wine, Food, Life, Travel, Madness, Mayhem, and whatever else I can sling in here.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://douggault.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://douggault.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Doug Gault</name><uri>http://www.blogger.com/profile/16786329323466667017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-hrI0YmluzZM/Tg3wrGEXgRI/AAAAAAAAARk/o44IgBfNQ4A/s220/Face2.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>29</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6363924398907149830.post-4138137846743690978</id><published>2011-06-23T15:24:00.000-05:00</published><updated>2011-06-24T09:54:03.397-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='ApEx'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>'Growl' style notification messages for APEX</title><content type='html'>A question was asked in &lt;span style="text-decoration: underline;"&gt;&lt;a href="http://forums.oracle.com/forums/thread.jspa?threadID=2191306"&gt;this thread&lt;/a&gt;&lt;/span&gt; on the APEX forums that got me itching to do a science experiment.&lt;br /&gt;The basic question was this:&lt;br /&gt;&lt;br /&gt;"Is it possible to produce 'Growl' style notifications in place of the standard APEX Success and Failure messages?"&lt;br /&gt;In short the answer is an unequivocal 'Yes', and here's how:&lt;br /&gt;&lt;br /&gt;First, unless you're a JavaScript whiz and can write your own, you'll need to search out some sort of JavaScript library that provides the Growl style notification. After a quick Google search I found this page...&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;a href="http://webtoolkit4.me/2009/08/13/jquery-growl-likenotification-systems/"&gt;http://webtoolkit4.me/2009/08/13/jquery-growl-likenotification-systems/&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I chose to search for jQuery related notification systems because of the fact that jQuery is already integrated into APEX 4 and that would mean that there would be less in terms of external JavaScripts for me to load and manage.&lt;br /&gt;&lt;br /&gt;After looking at the individual option there, I chose to work with &lt;em&gt;&lt;strong&gt;Gritter&lt;/strong&gt;&lt;/em&gt; for a number of reasons.&lt;br /&gt;&lt;ol style="list-style-type: decimal"&gt;&lt;li&gt;I liked the look and feel of it's output. To me it felt the most like what I am used to seeing from Growl.&lt;/li&gt;&lt;li&gt;The JavaScript is very light. In total it's about 400 lines long un-minified. Much of that is white space and comments which means that minified it's going to be minute.&lt;/li&gt;&lt;li&gt;It pushes most of the heavy lifting back onto jQuery, where it should be, and the author doesn't try to over engineer the solution.&lt;/li&gt;&lt;/ol&gt;You can choose what ever library you wish, but in this example I'll be using Gritter.&lt;br /&gt;&lt;br /&gt;The first thing you need to do is put the Gritter JavaScript where it can be accessed by APEX. As a general rule of thumb, it's a very bad habit to get into to put your own code into the /i/ directory provided by Oracle. So we create a directory on our web server to hold all of our custom code, normally named /c/. Inside this directory I created a directory to hold the gritter objects. I ended up with the following directory entries:&lt;br /&gt;&lt;br /&gt;/c/gritter/js&lt;br /&gt;/c/gritter/css&lt;br /&gt;/c/gritter/images&lt;br /&gt;&lt;br /&gt;The next thing to do is to include these scripts into your application. I wanted to see if I could completely replace the standard way APEX handles SUCCESS and FAILURE messages, so I want these scripts to be available on every page. There are two ways I could do this: I could create an After Header region on Page Zero that loads the scripts, or I could edit the page template and insert the script calls there.&lt;br /&gt;&lt;br /&gt;To make things as quick and easy as possible to load and troubleshoot, I chose to create a Page Zero region as follows:&lt;br /&gt;&lt;br /&gt;Region Name:    &lt;strong&gt;GRITTER - INCLUDES&lt;br /&gt;&lt;/strong&gt;Region Type:    &lt;strong&gt;HTML Text&lt;/strong&gt; &lt;br /&gt;Template Type:  &lt;strong&gt;No Template&lt;/strong&gt;&lt;br /&gt;Display Point:  &lt;strong&gt;After Header&lt;/strong&gt;  &lt;br /&gt;&lt;br /&gt;and include the following code:&lt;br /&gt;&lt;br /&gt;&amp;lt;link href="/c/gritter/css/jquery.gritter.css" type="text/css" rel="stylesheet" /&amp;gt;&lt;br /&gt;&amp;lt;script src="/c/gritter/js/jquery.gritter.min.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt; &lt;br /&gt;After loading the scripts and doing a few tests, I found out a few things...&lt;br /&gt;&lt;br /&gt;&lt;ol style="list-style-type: decimal"&gt;&lt;li&gt;You can use JavaScript in the Success and Failure message of any validation or process and it will be executed. News to me and something I'll file away for later use!&lt;/li&gt;&lt;li&gt;This isn't scalable as you'd have to change every message within your application to a JavaScript call.&lt;/li&gt;&lt;li&gt;Because of the way JavaScript deals with nested quotes within strings, life gets extremely interesting when the message you're trying to relay to the end user contains either single or double quotes.&lt;/li&gt;&lt;/ol&gt;To make this work at the application level without forcing the developer to use JavaScript for every message we need to go a step higher and look at the templates. If you're unfamiliar with APEX templates you may not know that within a page template there are two sub-templates for the Success and Notification (failure) messages. By editing these areas within your page template you can move the handling of the JavaScript up so that the developers don't have to worry about it. They can treat the success and failure messages as they always have.&lt;br /&gt;&lt;br /&gt;To alter the template, navigate to the shared components for the application, click on Templates and edit the page template that you’re using throughout your application. In most cases there will probably only be one template that you’re using, but for more complex applications there may be 2 or 3 you need to edit. You really only need to edit the templates that are used on pages you want to use the growl notification. In my case, there was just one.&lt;br /&gt;&lt;br /&gt;Once you edit the template, you’ll need to scroll down to the &lt;em&gt;&lt;strong&gt;Subtemplate&lt;/strong&gt;&lt;/em&gt; region. This is where the &lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;Success Message&lt;/strong&gt;&lt;/span&gt; and and the &lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;Notification&lt;/strong&gt;&lt;/span&gt; (Fail) message templates are defined. &lt;br /&gt;&lt;br /&gt;In the Picture below you’ll see the code in both regions that replaced the original code included in the template. &lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh5.ggpht.com/-37hWSYdK8bI/TgSlCF7sqnI/AAAAAAAAARM/QurcdZwV9m4/PastedGraphic-2011-06-23-15-24.jpg" alt="PastedGraphic-2011-06-23-15-24.jpg" width="490" height="335" /&gt;&lt;br /&gt;&lt;br /&gt;In both cases, the first thing the code does is create a DIV, giving it an ID that we can grab ahold of later and sets its CSS style to “display:non”. This will keep the DIV from displaying until the Gritter script styles it. The contents of the DIV is the  appropriate message template replacement variable, #SUCCESS_MESSAGE# and #MESSAGE#.&lt;br /&gt;&lt;br /&gt;The next bit of code is a call to a piece of JavaScript code that we’ll talk about in just a moment. The first call, to growlSuccess takes two parameters. First is the ID for the DIV so the script can get a handle on it, and the second is the duration for how long the notification should be displayed. In this case, 5000 is about 5 seconds. The second call, to growlSticky only takes one parameter, the ID of the DIV. This function creates a “sticky” notification that the user will need to dismiss. The reason I created this one is because you want to make sure the end user sees and acknowledges the any error message.&lt;br /&gt;&lt;br /&gt;The last piece of the puzzle is the javascript that kicks off the Gritter script. Again, I chose to implement this on Page Zero.&lt;br /&gt;&lt;br /&gt;Region Name:    &lt;strong&gt;GRITTER - JavaScript&lt;br /&gt;&lt;/strong&gt;Region Type:    &lt;strong&gt;HTML Text&lt;/strong&gt; &lt;br /&gt;Template Type:  &lt;strong&gt;No Template&lt;/strong&gt;&lt;br /&gt;Display Point:  &lt;strong&gt;After Header&lt;/strong&gt;  &lt;br /&gt;&lt;br /&gt;And the code in this region is as follows.&lt;br /&gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;&lt;br /&gt;    function growlSuccess(vRegion, vLength){&lt;br /&gt;       // Get the message out of the DIV created by the page template&lt;br /&gt;       var vMessage = document.getElementById(vRegion).innerHTML;&lt;br /&gt;       // Instantiate the gritter message.&lt;br /&gt;       $.gritter.add({&lt;br /&gt;          // (string | mandatory) the heading of the notification&lt;br /&gt;          title: 'SUCCESS',&lt;br /&gt;          // (string | mandatory) the text inside the notification&lt;br /&gt;          text: vMessage,&lt;br /&gt;          // (bool | optional) if you want it to fade out on its own or just sit there&lt;br /&gt;          sticky: false, &lt;br /&gt;          // (int | optional) the time you want it to be alive for before fading out&lt;br /&gt;          time: vLength&lt;br /&gt;        }); &lt;br /&gt;      return false;&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;    function growlSticky(vRegion){&lt;br /&gt;       // Get the message out of the DIV created by the page template&lt;br /&gt;       var vMessage = document.getElementById(vRegion).innerHTML;&lt;br /&gt;       // Instantiate the gritter message.&lt;br /&gt;       $.gritter.add({&lt;br /&gt;          // (string | mandatory) the heading of the notification&lt;br /&gt;          title: 'MESSAGE',&lt;br /&gt;          // (string | mandatory) the text inside the notification&lt;br /&gt;          text: vMessage,&lt;br /&gt;          // (bool | optional) if you want it to fade out on its own or just sit there&lt;br /&gt;          sticky: true,  &lt;br /&gt;          // An image to place inside the gritter notification&lt;br /&gt;          image:'#IMAGE_PREFIX#menu/info_32.gif'&lt;br /&gt;       });&lt;br /&gt;     return false;  &lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;This is the definition of the two functions that we called in the template code. The comments in the code should document what it’s doing fairly well. But the main thing to understand are is the call to gritter.add. This is the “magic” code that creates the Gritter “floating message”. &lt;br /&gt;&lt;br /&gt;Referencing the Gritter documentation, you’ll see that there are quite a number of options that I’m not using. I wanted to keep things fairly simple just to make sure I wasn’t fighting against complexity in the early stages.  I did go an extra step and put an image inside the &lt;em&gt;&lt;strong&gt;sticky&lt;/strong&gt;&lt;/em&gt; message type that is used for Notifications, to differentiate it from the Success Message.&lt;br /&gt;&lt;br /&gt;Here’s the end result...&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh4.ggpht.com/-w1xF5odEOz0/TgSlCsm9uvI/AAAAAAAAARQ/oiPmNwb4h_8/PastedGraphic1-2011-06-23-15-24.jpg" alt="PastedGraphic1-2011-06-23-15-24.jpg" width="548" height="140" /&gt;&lt;br /&gt;&lt;br /&gt;Hopefully this not only answers the question, “Is it possible”, but also shows you that there is way more to APEX than meets the eye. You can use JavaScript in a number of places that you wouldn’t expect. I’m continually pleasantly surprised at the flexibility of APEX. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;EDIT (6/24/11)&lt;/strong&gt; - Patrick Wolfe, completely independently,  has created a Dynamic Action plugin that does much the same thing (see the demo &lt;a href="http://apex.oracle.com/pls/apex/f?p=654321:401:0"&gt;here&lt;/a&gt;). The reason I went down this path is because the DA Plugin isn’t easily implemented for the APEX Success and Failure message.  Anyway. Interesting that two people solved a strikingly similar problem and came up with much the same solution! &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6363924398907149830-4138137846743690978?l=douggault.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://douggault.blogspot.com/feeds/4138137846743690978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6363924398907149830&amp;postID=4138137846743690978' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/4138137846743690978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/4138137846743690978'/><link rel='alternate' type='text/html' href='http://douggault.blogspot.com/2011/06/style-notification-messages-for-apex.html' title='&amp;#39;Growl&amp;#39; style notification messages for APEX'/><author><name>Doug Gault</name><uri>http://www.blogger.com/profile/16786329323466667017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-hrI0YmluzZM/Tg3wrGEXgRI/AAAAAAAAARk/o44IgBfNQ4A/s220/Face2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/-37hWSYdK8bI/TgSlCF7sqnI/AAAAAAAAARM/QurcdZwV9m4/s72-c/PastedGraphic-2011-06-23-15-24.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6363924398907149830.post-6344743138908731288</id><published>2011-06-22T15:16:00.000-05:00</published><updated>2011-06-22T15:16:27.155-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='ApEx'/><category scheme='http://www.blogger.com/atom/ns#' term='Blogging'/><title type='text'>It's been quiet... Too Quiet!</title><content type='html'>You have probably noticed that this blog has been very quite for the last few months... Well, there is a reason for that.&lt;br /&gt;&lt;br /&gt;Apart from the &lt;a href="http://www.sumneva.com/apex/f?p=15000:410:0::NO::TRACKBACK:sumnevas_doug_gault_contributes_to_two_new_apex_books"&gt;books&lt;/a&gt; that I've been involved in writing, we at &lt;a href="http://www.sumneva.com/"&gt;Sumneva&lt;/a&gt; been working feverishly to put the finishing touches on our first product, &lt;b&gt;sumnevaSERT&lt;/b&gt;. And today, we release it into the wild.&lt;br /&gt;&lt;br /&gt;And with all of scary security breaches that have happened recently, the release couldn't have come at a better time.&lt;br /&gt;&lt;br /&gt;For those of you who aren't familiar, &lt;b&gt;sumnevaSERT&lt;/b&gt; is a simple yet powerful tool that outlines potential security risks in any Oracle APEX application and provides recommendations on how to mitigate them. You can the Sumneva news post about it &lt;a href="http://www.sumneva.com/apex/f?p=15000:410:0::NO::TRACKBACK:introducing_sumnevasert"&gt;here&lt;/a&gt;, and get more information about it &lt;a href="http://www.sumneva.com/sert"&gt;here&lt;/a&gt;. Or&lt;br /&gt;&lt;br /&gt;You can also come and see us at &lt;a href="http://www.kscope11.com/"&gt;ODTUG KScope11&lt;/a&gt;. We'll have a booth in the exhibition hall and will be giving a vendor presentation on securing your APEX applications.&lt;br /&gt;&lt;br /&gt;Now that the release is out in the wild, hopefully I'll have a bit more time to finish some half completed blog posts and get back out into the world a bit more.&lt;br /&gt;&lt;br /&gt;But keep an eye out, because &lt;b&gt;sumnevaSERT&lt;/b&gt; is just the beginning. We plan to continue to support our mission to make developing secure and performant APEX applications even easier.&lt;br /&gt;&lt;br /&gt;Watch this space!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6363924398907149830-6344743138908731288?l=douggault.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://douggault.blogspot.com/feeds/6344743138908731288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6363924398907149830&amp;postID=6344743138908731288' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/6344743138908731288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/6344743138908731288'/><link rel='alternate' type='text/html' href='http://douggault.blogspot.com/2011/06/its-been-quiet-too-quiet.html' title='It&apos;s been quiet... Too Quiet!'/><author><name>Doug Gault</name><uri>http://www.blogger.com/profile/16786329323466667017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-hrI0YmluzZM/Tg3wrGEXgRI/AAAAAAAAARk/o44IgBfNQ4A/s220/Face2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6363924398907149830.post-6387454325681573422</id><published>2011-06-10T12:45:00.000-05:00</published><updated>2011-06-10T12:45:11.562-05:00</updated><title type='text'>Oracle Author Podcast.</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;I recently had the pleasure of co-authoring the APress book, &lt;a href="http://www.apress.com/9781430231479"&gt;Beginning Oracle Application Express 4&lt;/a&gt;. It was both a trying and rewarding experience, but I'm glad I did it.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;A couple weeks ago I also participated in creating a &lt;a href="http://feedproxy.google.com/~r/OracleAuthorPodcasts/~3/RxkrKygPElk/10131468_AppXprss_4_061011.mp3"&gt;Podcast&lt;/a&gt; about the book.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Here's some information about it...&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;A conversation with Patrick Cimolini, Martin D'Souza, and Doug Gault; Authors of Beginning Oracle Application Express 4. &amp;nbsp;David Peake,&amp;nbsp;Principal&amp;nbsp;Product Manager for APEX, chats with some of the&amp;nbsp;authors&amp;nbsp;of the book. They will discuss&amp;nbsp;various aspects about the book including the main reason for the book, who the book is focused towards, and some behind the scenes information about it's writing.&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote&gt;&amp;nbsp;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6363924398907149830-6387454325681573422?l=douggault.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://douggault.blogspot.com/feeds/6387454325681573422/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6363924398907149830&amp;postID=6387454325681573422' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/6387454325681573422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/6387454325681573422'/><link rel='alternate' type='text/html' href='http://douggault.blogspot.com/2011/06/oracle-author-podcast.html' title='Oracle Author Podcast.'/><author><name>Doug Gault</name><uri>http://www.blogger.com/profile/16786329323466667017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-hrI0YmluzZM/Tg3wrGEXgRI/AAAAAAAAARk/o44IgBfNQ4A/s220/Face2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6363924398907149830.post-1267723725264823894</id><published>2011-05-07T08:35:00.001-05:00</published><updated>2011-05-07T08:36:17.797-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Development'/><category scheme='http://www.blogger.com/atom/ns#' term='ApEx'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='Sumneva'/><title type='text'>APEX 4.1 Early Adopter Available.</title><content type='html'>The APEX team has once again surpassed expectations and has released the Early Adopter version or APEX 4.1 on &lt;a href="http://tryaxpexnow.com/"&gt;http://tryaxpexnow.com&lt;/a&gt;.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A list of what's new appears in the &lt;a href="http://apex.oracle.com/pls/apex/f?p=52663"&gt;Feature Description&lt;/a&gt; application, but both &lt;a href="http://joelkallman.blogspot.com/"&gt;Joel Kallman&lt;/a&gt; and &lt;a href="http://www.blogger.com/"&gt;&lt;span id="goog_1914651215"&gt;&lt;/span&gt;David Peake&lt;span id="goog_1914651216"&gt;&lt;/span&gt;&lt;/a&gt; warn that there is likely to be more in the final production release.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After having a look at the features, here are some that really stand out to me:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Declarative Support for Buttons to Trigger Dynamic Actions &lt;/b&gt;- The initial version allows you to use any IMAGE or HTML button to trigger dynamic actions. Theme based buttons will currently only work in Theme 21, but I'm sure that will be expanded for the production release.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Dynamic Lists&lt;/b&gt; - The ability for a list to be based on a SQL statement or a PL/SQL function returning a SQL statement is huge. This will make it way easier to create menuing &amp;nbsp;systems (even CSS based tabs) based on dynamic content stored in tables or gleaned from meta data.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Improved Error Handling &lt;/b&gt;&amp;nbsp;- The features listed here are two-fold.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Settable Error Display Location for Processes&lt;/b&gt;&amp;nbsp;- For OnSubmit type page processes you can now set the "Error Message Display Location" to either a "Separate Error Page" or "Inline in Notification".&lt;/li&gt;&lt;li&gt;&lt;b&gt;New Error Handling Function&lt;/b&gt;&amp;nbsp;- A new function has been provided &amp;nbsp;that allows developers to modify or log any errors which occur in apex. (I wonder if they used &lt;a href="http://tylermuth.wordpress.com/2009/11/03/logger-a-plsql-logging-and-debugging-utility/"&gt;Tyler Muth's Logger Package&lt;/a&gt;). &amp;nbsp;&lt;a href="http://www.inside-oracle-apex.com/"&gt;Patrick Wolf&lt;/a&gt; is slated to let us know more soon!&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Plugin Enhancements&lt;/b&gt;&amp;nbsp;- There are several plug-in enhancements but the ones that caught my eye were&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Adding Plug-in Support for Authorization Schemes&amp;nbsp;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Increased number of custom attributes to 15&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;New Plugin Attribute type Checkbox&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Enhanced Tabular Forms &amp;nbsp;-&amp;nbsp;&lt;/b&gt;APEX 4.0 introduces HUGE leaps forward in Tabular forms and that theme has been continued in APEX 4.1.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Validations&lt;/b&gt;&amp;nbsp;- Tabular forms now support all validation types. Bind Variable syntax, substitution syntax and Column name are now available depending upon what type of validation you're implementing.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Processes &amp;nbsp;&lt;/b&gt;&amp;nbsp;- Processes can now be defined for tabular forms as well. These processes allow for easier processing of the each row's items without having to deal with the &lt;b&gt;&lt;i&gt;apex_application g_f0X&lt;/i&gt;&lt;/b&gt; arrays.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Use of ROWID &lt;/b&gt;&amp;nbsp;- You're now allowed to use ROWID as the primary key for Automatic DML Processing in tabular forms.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;Consistency of Item Based Buttons&lt;/b&gt;&amp;nbsp;- Item based buttons have now been brought in line and now offer the same behavior has Region based buttons.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;While I can't wait to get my hands on some of the new features, this also means that there will need to be some updates to our &lt;a href="http://www.sumneva.com/training"&gt;training material&lt;/a&gt;... *Sigh*, it never ends!&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6363924398907149830-1267723725264823894?l=douggault.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://douggault.blogspot.com/feeds/1267723725264823894/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6363924398907149830&amp;postID=1267723725264823894' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/1267723725264823894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/1267723725264823894'/><link rel='alternate' type='text/html' href='http://douggault.blogspot.com/2011/05/apex-41-early-adopter-available.html' title='APEX 4.1 Early Adopter Available.'/><author><name>Doug Gault</name><uri>http://www.blogger.com/profile/16786329323466667017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-hrI0YmluzZM/Tg3wrGEXgRI/AAAAAAAAARk/o44IgBfNQ4A/s220/Face2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6363924398907149830.post-6020621574983619728</id><published>2010-03-31T18:21:00.000-05:00</published><updated>2010-03-31T19:11:38.848-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ApEx'/><category scheme='http://www.blogger.com/atom/ns#' term='Authorship'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><title type='text'>Beginning Oracle Application Express 4</title><content type='html'>That’s the title of the book I’ve agreed to write for &lt;a href="http://www.apress.com"&gt;APRESS&lt;/a&gt;, or at least the working title.&lt;br /&gt;&lt;br /&gt;The book will be aimed at new comers to &lt;a href="http://apex.oracle.com/"&gt;Application Express&lt;/a&gt;, introducing them to the environment via the development of a full system and using as many of the new features as possible. However, I’m hoping that it will be useful for people who have dipped their toes in the waters of 3.2 and want to get up to speed on what 4.0 has to offer.  The book is due to hit shelved early next year, so it’s a ways off. But as APEX 4 is still only in Early Adopter, that’s probably a good thing.&lt;br /&gt;&lt;br /&gt;This is the first time I’ve attempted anything like this, and I’m taking it on with more than just a little trepidation. However my good friends, and business partners &lt;a href="http://spendolini.blogspot.com"&gt;Scott Spendolini&lt;/a&gt; and &lt;a href="http://jes.blogs.shellprompt.net/"&gt;John Scott&lt;/a&gt; (Co-Authors of the APRESS book &lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;&lt;a href="http://www.apress.com/book/view/159059827x"&gt;Pro Oracle Application Express&lt;/a&gt;&lt;/strong&gt;&lt;/span&gt;) assure me that it’s a wonderful experience that I will cherish for the rest of my days!   (Actually John said that the two best days are the day you start it and the day you finish, and I believe that to be closer to the truth!)&lt;br /&gt;&lt;br /&gt;I’m going to be blogging about my experience. Both about writing the book and about some of the things I learn along the way.  So watch this space for more on the book and my travels along the APEX 4.0 path.&lt;br /&gt;&lt;br /&gt;Wish me luck! &lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6363924398907149830-6020621574983619728?l=douggault.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://douggault.blogspot.com/feeds/6020621574983619728/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6363924398907149830&amp;postID=6020621574983619728' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/6020621574983619728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/6020621574983619728'/><link rel='alternate' type='text/html' href='http://douggault.blogspot.com/2010/03/beginning-oracle-application-express-4.html' title='Beginning Oracle Application Express 4'/><author><name>Doug Gault</name><uri>http://www.blogger.com/profile/16786329323466667017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-hrI0YmluzZM/Tg3wrGEXgRI/AAAAAAAAARk/o44IgBfNQ4A/s220/Face2.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6363924398907149830.post-8920864628231162771</id><published>2010-03-05T09:01:00.000-06:00</published><updated>2010-03-05T09:39:45.850-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ApEx'/><category scheme='http://www.blogger.com/atom/ns#' term='Training'/><category scheme='http://www.blogger.com/atom/ns#' term='Sumneva'/><title type='text'>Sumneva Education Slots Still Available.</title><content type='html'>There are still slots available on many of the Sumneva Education Courses world wide. The training will be covering APEX 3.2.1, but there will definitely be an opportunity to ask questions about the differences in APEX 4.0 and we might even have time to show you some of the highlights.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(252,82,63);"&gt;&lt;strong&gt;Brussels, Belgium (Public Classroom)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.sumneva.com/apex/f?p=15000:310:0::NO::P310_TRAINING_SESSION_ID:701"&gt;Introduction to Oracle APEX I&lt;/a&gt; &lt;span style="color: rgb(252,83,0);"&gt;&lt;/span&gt; - 08-MAR-2010&lt;br /&gt;&lt;a href="http://www.sumneva.com/apex/f?p=15000:310:0::NO::P310_TRAINING_SESSION_ID:702"&gt;Introduction to Oracle APEX II&lt;/a&gt; - 11-MAR-2010&lt;br /&gt;&lt;a href="http://www.sumneva.com/apex/f?p=15000:310:0::NO::P310_TRAINING_SESSION_ID:703"&gt;Advanced Oracle APEX&lt;/a&gt; - 15-MAR-2010&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(252,82,63);"&gt;&lt;strong&gt;Manchester, UK (Public Classroom)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.sumneva.com/apex/f?p=15000:310:0::NO::P310_TRAINING_SESSION_ID:701"&gt;Introduction to Oracle APEX I&lt;/a&gt; - 22-MAR-2010&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(252,82,63);"&gt;&lt;strong&gt;Alexandria, VA USA&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.sumneva.com/apex/f?p=15000:310:0::NO::P310_TRAINING_SESSION_ID:701"&gt;Introduction to Oracle APEX I&lt;/a&gt; - 12-APR-2010&lt;br /&gt;&lt;a href="http://www.sumneva.com/apex/f?p=15000:310:0::NO::P310_TRAINING_SESSION_ID:702"&gt;Introduction to Oracle APEX II&lt;/a&gt; - 15-APR-2010&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(252,82,63);"&gt;&lt;strong&gt;Americas (OnLine)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.sumneva.com/apex/f?p=15000:310:0::NO::P310_TRAINING_SESSION_ID:701"&gt;Introduction to Oracle APEX I&lt;/a&gt; - 22-MAR-2010&lt;br /&gt;&lt;a href="http://www.sumneva.com/apex/f?p=15000:310:0::NO::P310_TRAINING_SESSION_ID:702"&gt;Introduction to Oracle APEX II&lt;/a&gt; - 31-MAR-2010&lt;br /&gt;&lt;a href="http://www.sumneva.com/apex/f?p=15000:310:0::NO::P310_TRAINING_SESSION_ID:644"&gt;Intermediate Oracle APEX&lt;/a&gt;  - 12-APR-2010&lt;br /&gt;&lt;a href="http://www.sumneva.com/apex/f?p=15000:310:0::NO::P310_TRAINING_SESSION_ID:645"&gt;Troubleshooting and Debugging APEX&lt;/a&gt; - 21-APR-2010&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(252,82,63);"&gt;&lt;strong&gt;Discounts&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;Qualified companies can receive up to 10% off the cost of their booking. &lt;a href="mailto:info@sumneva.com"&gt;Contact us&lt;/a&gt; to find out if your company qualifies. &lt;br /&gt;&lt;span style="color: rgb(252,82,63);"&gt;&lt;strong&gt;Questions or want private on-site training?&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;Should you have any questions about the courses, technical requirements or want to discuss private on-site training, please send us a note at &lt;span style="text-decoration: underline;"&gt;&lt;a href="mailto:info@sumnertech.com"&gt;info@sumnertech.com&lt;/a&gt;&lt;/span&gt; or call us at (703) 879-4615 Americas / +44 113 386 9296 Europe . We look forward to seeing you soon!&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6363924398907149830-8920864628231162771?l=douggault.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://douggault.blogspot.com/feeds/8920864628231162771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6363924398907149830&amp;postID=8920864628231162771' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/8920864628231162771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/8920864628231162771'/><link rel='alternate' type='text/html' href='http://douggault.blogspot.com/2010/03/sumneva-education-slots-still-available.html' title='Sumneva Education Slots Still Available.'/><author><name>Doug Gault</name><uri>http://www.blogger.com/profile/16786329323466667017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-hrI0YmluzZM/Tg3wrGEXgRI/AAAAAAAAARk/o44IgBfNQ4A/s220/Face2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6363924398907149830.post-3234951902650201358</id><published>2010-03-03T19:31:00.000-06:00</published><updated>2010-03-04T16:05:13.091-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='CHARTS'/><category scheme='http://www.blogger.com/atom/ns#' term='ApEx'/><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><title type='text'>Refreshing Flash Charts with AJAX.</title><content type='html'>&lt;span style="color: rgb(252,83,0);"&gt;&lt;strong&gt;NOTE: &lt;/strong&gt;&lt;/span&gt;This post makes use of internal APEX JavaScript that is not part of the standard public API’s. Therefore it is likely not supported, so use at your own risk!&lt;br /&gt;&lt;br /&gt;--------------------------&lt;br /&gt;&lt;br /&gt;Yesterday, I ran across &lt;a href="http://forums.oracle.com/forums/thread.jspa?messageID=4139943#4139943"&gt;this post&lt;/a&gt; on the OTN APEX Forums.  The problem was basically this.&lt;br /&gt;&lt;br /&gt;Say you have a chart which you want to refresh each time someone changes a select list value. Sure you could have a select list with submit, but that would cause a redraw of the entire page and, depending on what else might be on that screen, could potentially incur some wait time on behalf of the user. &lt;br /&gt;&lt;br /&gt;Another way to do this would be to use the chart’s Asynchronous Refresh feature, but this would cause the chart to refresh on a set interval, not on an event. And to make this worth your while, the interval would have to be so small (seconds) that you would instigate an unnecessary amount of network traffic.&lt;br /&gt;&lt;br /&gt;So how &lt;em&gt;&lt;strong&gt;do&lt;/strong&gt; &lt;/em&gt;you get a chart to refresh asynchronously?  Lets have a look&lt;br /&gt;&lt;br /&gt;First, what I’ve done is to create a simple chart that selects the employees and their salaries from the EMP table. Along with it I created the select list upon which it will depend.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(252,83,0);"&gt;&lt;strong&gt;Select List SQL&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;select null link, ENAME label, SAL value1&lt;br /&gt;from  "SUMNEVA"."EMP"&lt;br /&gt;where deptno like decode(:P2_DEPT_NO,'%null%','%',:P2_DEPT_NO)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(252,83,0);"&gt;&lt;strong&gt;Select List SQL&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;select DNAME display_value, DEPTNO return_value &lt;br /&gt;from DEPT&lt;br /&gt;order by 1&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh5.ggpht.com/_bgUrBysnQFc/S5AuhyBF85I/AAAAAAAAAN4/WHbg0mqpHXU/PastedGraphic2.211Fch1GOGvR.jpg" alt="PastedGraphic2.211Fch1GOGvR.jpg" width="439" height="325" /&gt;&lt;br /&gt;&lt;br /&gt;If this were a select list with submit, then everything would work fine as the newly selected value for the department would get set in session state and the chart would redraw using that value when the page was refreshed. However i want to bypass the page submit and make the chart refresh without redrawing the entire screen. How can this be done? &lt;br /&gt;&lt;br /&gt;We can find the initial clues by looking at what APEX does internally when you turn ASYNCHRONOUS REFRESH on for a chart.&lt;br /&gt;&lt;br /&gt;Looking at the chart region’s SOURCE in the REGION DEFINITION tab, shows us that APEX uses a number of replacement variables, including #CHART_NAME# and #CHART_REFRESH#. &lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh5.ggpht.com/_bgUrBysnQFc/S5Auil3-ENI/AAAAAAAAAN8/T6CDFdWROX4/PastedGraphic3.AxFtSjJyjwb6.jpg" alt="PastedGraphic3.AxFtSjJyjwb6.jpg" width="445" height="235" /&gt;&lt;br /&gt;&lt;br /&gt;It’s the second of these that initially caught my attention. If you turn Asynchronous Refresh on for the chart and run the page, you can then view the source to see the javascript that is inserted in place of the #CHART_REFRESH# Variable. &lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh3.ggpht.com/_bgUrBysnQFc/S5Aujy5TOgI/AAAAAAAAAOA/ieM0Js9pGeU/PastedGraphic4.vEh8qFlWzfUf.jpg" alt="PastedGraphic4.vEh8qFlWzfUf.jpg" width="446" height="123" /&gt;&lt;br /&gt;&lt;br /&gt;I won’t go into the details of what this is doing, but the code that does the “heavy lifting” is&lt;br /&gt;&lt;br /&gt;apex_RefreshChart (2, '10588887924364140363', 'en-us');&lt;br /&gt;&lt;br /&gt;After tracking down the definition of this function, now now that the method has the following signature.&lt;br /&gt;&lt;br /&gt;apex_RefreshChart (A, D, C);&lt;br /&gt;&lt;br /&gt;A = Current Page Number&lt;br /&gt;D = Name of the chart with the initial ‘c’ removed&lt;br /&gt;C = Language &lt;br /&gt;&lt;br /&gt;So we could potentially use this function to our own ends, but to do that we need to know the value of #CHART_NAME#, which is only in context as the chart source is being rendered to the page. What this means to us is that what ever JavaScript function we create needs to be created as part of the rendering of the chart itself. &lt;br /&gt;&lt;br /&gt;Editing chart SOURCE in the REGION DEFINITION tab, I added the following JavaScript function below the #CHART_REFRESH# replacement variable.&lt;br /&gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;function myRefreshChart(){&lt;br /&gt;   var chartName = '#CHART_NAME#';&lt;br /&gt;   chartName = chartName.substring(1);&lt;br /&gt;   apex_RefreshChart(&amp;APP_PAGE_ID., chartName, 'en-us');&lt;br /&gt;}&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;The function basically creates a variable for the chart name and strips off the first character.  (This is required for the call to apex_RefreshChart as that function actually prepends the ‘c’ back on to the name parameter). It then calls the apex_RefreshChart function.&lt;br /&gt;&lt;br /&gt;Now it would be tempting to think that we could just hook this script to the on_change event for the select list, but there is a problem with that. The chart series query depends on the value of P2_DEPT_NO that is &lt;em&gt;in session state&lt;/em&gt;, and if we’re not submitting the page, then the session state value for the item won’t change. &lt;br /&gt;&lt;br /&gt;To force the change, we can use APEX’s standard AJAX toolkit; htmldb_get(). &lt;br /&gt;&lt;br /&gt;As with any AJAX function you need the following things. &lt;br /&gt;&lt;br /&gt;&lt;ol style="list-style-type: decimal"&gt;&lt;li&gt;Application Item(s) to pass values to the process &lt;/li&gt;&lt;li&gt;An Application Process &lt;/li&gt;&lt;li&gt;A JavaScript function to execute the AJAX call&lt;/li&gt;&lt;li&gt;An event that initiates the function&lt;/li&gt;&lt;/ol&gt;First we create an Application Item called AJAX_DEPT_NO that will be used to pass the value the user chose in the select list.&lt;br /&gt;&lt;br /&gt;Then we create an Application Process called SET_DEPT_NO that does just that.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh3.ggpht.com/_bgUrBysnQFc/S5Auk93foLI/AAAAAAAAAOE/stxG1N4YlqE/PastedGraphic5.ofvPSzE57SuC.jpg" alt="PastedGraphic5.ofvPSzE57SuC.jpg" width="483" height="244" /&gt;&lt;br /&gt;&lt;br /&gt;Now we need to create the Javascript that will do the AJAX call and then call the myRefreshChart() function. You could easily do this in the HTML HEADER, but I like to put these things in their own HTML REGION with a render sequence of AFTER HEADER.&lt;br /&gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;function selectChanged(filter)&lt;br /&gt;{&lt;br /&gt;   var get = new htmldb_Get(null,$v('pFlowId'), 'APPLICATION_PROCESS=SET_DEPT_NO',0);&lt;br /&gt;   get.add('AJAX_DEPT_NO', filter.value);&lt;br /&gt;   var ret = get.get();&lt;br /&gt;&lt;br /&gt;   myRefreshChart();&lt;br /&gt;}&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;If you’re used to using AJAX in APEX, then none of this should be of any surprise to you. We’re using htmldb_Get to call the application process and to send the current value of the select list (represented in the function by the &lt;em&gt;filter&lt;/em&gt; variable).&lt;br /&gt;&lt;br /&gt;Once the application process is complete we then run the myRefreshChart() function to tell the chart to refresh it’s data.&lt;br /&gt;&lt;br /&gt;The last thing we need to do is to put an on_change event on the select list and have it call the selectChange function indicated above. Edit the select list and in the ELEMENT region, enter the following in the &lt;strong&gt;HTML Form Element Attributes&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh6.ggpht.com/_bgUrBysnQFc/S5AuljWD07I/AAAAAAAAAOI/qYvQSaeEfuU/PastedGraphic6.dKBCJtih1T05.jpg" alt="PastedGraphic6.dKBCJtih1T05.jpg" width="506" height="131" /&gt;&lt;br /&gt;&lt;br /&gt;This calls the selectChanged JavaScript function each time the select list changes and passes it a reference to the select list itself. &lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(252,83,0);"&gt;&lt;strong&gt;Put it all together ...&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;Once everything is in place, we can now run the page and see that every time the select list changes, the graph updated without refreshing the page.&lt;br /&gt;&lt;br /&gt;You can see an example of this in the &lt;a href="http://apex.oracle.com/pls/apex/f?p=18570:2:"&gt;Sumneva workspace&lt;/a&gt; on &lt;a href="http://APEX.ORACLE.COM"&gt;APEX.ORACLE.COM&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6363924398907149830-3234951902650201358?l=douggault.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://douggault.blogspot.com/feeds/3234951902650201358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6363924398907149830&amp;postID=3234951902650201358' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/3234951902650201358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/3234951902650201358'/><link rel='alternate' type='text/html' href='http://douggault.blogspot.com/2010/03/refreshing-flash-charts-with-ajax.html' title='Refreshing Flash Charts with AJAX.'/><author><name>Doug Gault</name><uri>http://www.blogger.com/profile/16786329323466667017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-hrI0YmluzZM/Tg3wrGEXgRI/AAAAAAAAARk/o44IgBfNQ4A/s220/Face2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_bgUrBysnQFc/S5AuhyBF85I/AAAAAAAAAN4/WHbg0mqpHXU/s72-c/PastedGraphic2.211Fch1GOGvR.jpg' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6363924398907149830.post-1735678329940899639</id><published>2010-02-15T10:11:00.001-06:00</published><updated>2010-02-15T10:47:59.718-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Presentations'/><category scheme='http://www.blogger.com/atom/ns#' term='RMOUG'/><category scheme='http://www.blogger.com/atom/ns#' term='Travel'/><title type='text'>Headed to RMOUG</title><content type='html'>All my bags are packed, and ready to go....&lt;br /&gt;&lt;br /&gt;IN about 2 hours I’ll be stepping out the door to head to the &lt;a href="http://www.rmoug.org/"&gt;Rocky Mountain Oracle user Group&lt;/a&gt; (RMOUG). Both &lt;a href="http://spendolini.blogspot.com/"&gt;Scott Spendolini&lt;/a&gt; and I will be presenting there on behalf of &lt;a href="http://www.sumneva.com/"&gt;Sumneva&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Scott will be presenting &lt;em&gt;&lt;strong&gt;Troubleshooting Oracle Apex &lt;/strong&gt;&lt;/em&gt;on Tuesday, and I’ll be presenting &lt;em&gt;&lt;strong&gt;Performance Tuning APEX Applications&lt;/strong&gt;&lt;/em&gt; and &lt;em&gt;&lt;strong&gt;Replicating NetFlix Drag &amp;amp; Drop With APEX &lt;/strong&gt;&lt;/em&gt;on Wednesday and Thursday respectively.&lt;br /&gt;&lt;br /&gt;If you’re going to be there, please swing by and say ‘Hi’.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6363924398907149830-1735678329940899639?l=douggault.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://douggault.blogspot.com/feeds/1735678329940899639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6363924398907149830&amp;postID=1735678329940899639' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/1735678329940899639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/1735678329940899639'/><link rel='alternate' type='text/html' href='http://douggault.blogspot.com/2010/02/headed-to-rmoug.html' title='Headed to RMOUG'/><author><name>Doug Gault</name><uri>http://www.blogger.com/profile/16786329323466667017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-hrI0YmluzZM/Tg3wrGEXgRI/AAAAAAAAARk/o44IgBfNQ4A/s220/Face2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6363924398907149830.post-9222176948227609988</id><published>2010-02-09T17:18:00.006-06:00</published><updated>2010-02-09T17:39:38.457-06:00</updated><title type='text'>Warning a user that the form has changed he navigates away without saving.</title><content type='html'>For those of you who haven't visited the new Sumneva.com site, here's an excuse.&lt;br /&gt;&lt;br /&gt;We've added a &lt;a href="http://www.sumneva.com/apex/f?p=15000:1300:0::NO:::"&gt;Tips &amp;amp; Tricks&lt;/a&gt; section on the Support tab where we will be sharing little tid-bits of information that we learn as we work with APEX.  Our goal is to try to continually add new entries and make this a repository of useful information.&lt;br /&gt;&lt;br /&gt;I just posted my first tip - "&lt;a href="http://www.sumneva.com/apex/f?p=15000:1310:0::NO::P1310_TIP_ID:121"&gt;Warning a user that the form has changed.&lt;/a&gt;"&lt;br /&gt;&lt;br /&gt;Watch for more of these as time goes on, or you can follow &lt;a href="http://twitter.com/sumneva"&gt;@sumneva&lt;/a&gt; on Twitter to be notified of new Tips &amp;amp; Tricks.&lt;br /&gt;&lt;br /&gt;Enjoy&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6363924398907149830-9222176948227609988?l=douggault.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://douggault.blogspot.com/feeds/9222176948227609988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6363924398907149830&amp;postID=9222176948227609988' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/9222176948227609988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/9222176948227609988'/><link rel='alternate' type='text/html' href='http://douggault.blogspot.com/2010/02/warning-user-that-form-has-changed-he.html' title='Warning a user that the form has changed he navigates away without saving.'/><author><name>Doug Gault</name><uri>http://www.blogger.com/profile/16786329323466667017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-hrI0YmluzZM/Tg3wrGEXgRI/AAAAAAAAARk/o44IgBfNQ4A/s220/Face2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6363924398907149830.post-4287447745457669996</id><published>2010-02-09T07:08:00.002-06:00</published><updated>2010-02-09T07:15:52.845-06:00</updated><title type='text'>APEX @ Your Oracle User Group - Mach II</title><content type='html'>In &lt;a href="http://jes.blogs.shellprompt.net/2010/02/09/apexyour-oracle-usergroup/"&gt;this post&lt;/a&gt;, my new business partner (more on that in another post) &lt;a href="http://jes.blogs.shellprompt.net/"&gt;John Scott&lt;/a&gt; mentioned that if you wanted him to speak at your Oracle User Group meeting about APEX, he'd be very happy too.&lt;br /&gt;&lt;br /&gt;Not to miss out on any of the fun I think that I can speak for all four of us at &lt;a href="http://www.sumneva.com"&gt;Sumneva&lt;/a&gt; and say that if you need someone to speak about APEX at a User Group, or other technical related gathering, then do not hesitate to ask.&lt;br /&gt;&lt;br /&gt;The four of us are dedicated to furthering the APEX cause and would be more than happy to help spread the message.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6363924398907149830-4287447745457669996?l=douggault.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://douggault.blogspot.com/feeds/4287447745457669996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6363924398907149830&amp;postID=4287447745457669996' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/4287447745457669996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/4287447745457669996'/><link rel='alternate' type='text/html' href='http://douggault.blogspot.com/2010/02/apex-your-oracle-user-group-mach-ii.html' title='APEX @ Your Oracle User Group - Mach II'/><author><name>Doug Gault</name><uri>http://www.blogger.com/profile/16786329323466667017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-hrI0YmluzZM/Tg3wrGEXgRI/AAAAAAAAARk/o44IgBfNQ4A/s220/Face2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6363924398907149830.post-9113595639604893923</id><published>2010-01-14T08:26:00.001-06:00</published><updated>2010-01-14T08:28:01.114-06:00</updated><title type='text'>New Public APEX classes in Dallas Texas</title><content type='html'>&lt;p&gt;We've just added several &lt;em&gt;&lt;strong&gt;Dallas, Texas&lt;/strong&gt;&lt;/em&gt; based training dates to our public course schedule.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;&lt;strong&gt;Classroom Based Public Trainingå&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://sumnertechnologies.com/apex/f?p=10000:310:0::NO::P310_TRAINING_SESSION_ID:642" _fcksavedurl="http://sumnertechnologies.com/apex/f?p=10000:310:0::NO::P310_TRAINING_SESSION_ID:642"&gt;Introduction to Oracle APEX I&lt;/a&gt;  - March 22, 2010  (3 days)&lt;/li&gt;&lt;li&gt;&lt;a href="http://sumnertechnologies.com/apex/f?p=10000:310:0::NO::P310_TRAINING_SESSION_ID:643" _fcksavedurl="http://sumnertechnologies.com/apex/f?p=10000:310:0::NO::P310_TRAINING_SESSION_ID:643"&gt;Introduction to Oracle APEX II&lt;/a&gt; - March 25, 2010 (2 days)&lt;/li&gt;&lt;li&gt;&lt;a href="http://sumnertechnologies.com/apex/f?p=10000:310:0::NO::P310_TRAINING_SESSION_ID:644" _fcksavedurl="http://sumnertechnologies.com/apex/f?p=10000:310:0::NO::P310_TRAINING_SESSION_ID:644"&gt;Intermediate Oracle APEX&lt;/a&gt; - April 5, 2010 (2 days)&lt;/li&gt;&lt;li&gt;&lt;a href="http://sumnertechnologies.com/apex/f?p=10000:310:0::NO::P310_TRAINING_SESSION_ID:645" _fcksavedurl="http://sumnertechnologies.com/apex/f?p=10000:310:0::NO::P310_TRAINING_SESSION_ID:645"&gt;Troubleshooting and Debugging APEX&lt;/a&gt; - April 7, 2010 (1 day)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;&lt;strong&gt;Discounts&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Qualified companies can receive up to 10% off the cost of their booking. Contact us to find out if your company qualifies.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;&lt;strong&gt;Questions, or want private on-site training?&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Should you have any questions about the courses, technical requirements or want to discuss private on-site training, please send us a note at &lt;a href="mailto:info@sumnertech.com" _fcksavedurl="mailto:info@sumnertech.com"&gt;info@sumnertech.com&lt;/a&gt; or call us at (703) 879-4615.  We look forward to seeing you soon!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6363924398907149830-9113595639604893923?l=douggault.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://douggault.blogspot.com/feeds/9113595639604893923/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6363924398907149830&amp;postID=9113595639604893923' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/9113595639604893923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/9113595639604893923'/><link rel='alternate' type='text/html' href='http://douggault.blogspot.com/2010/01/new-public-apex-classes-in-dallas-texas.html' title='New Public APEX classes in Dallas Texas'/><author><name>Doug Gault</name><uri>http://www.blogger.com/profile/16786329323466667017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-hrI0YmluzZM/Tg3wrGEXgRI/AAAAAAAAARk/o44IgBfNQ4A/s220/Face2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6363924398907149830.post-6445334762455639900</id><published>2009-11-02T09:50:00.002-06:00</published><updated>2009-11-02T10:34:13.302-06:00</updated><title type='text'>New APEX training Dates...</title><content type='html'>&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;&lt;a href="http://www.sumnertechnologies.com/"&gt;Sumner Technologies&lt;/a&gt; has just announced a new set of public and on-line training dates:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 102, 0);font-family:trebuchet ms;" &gt;Classroom Based Public Training&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Alexandria, Virginia :&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul  style="font-family:trebuchet ms;"&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://sumnertechnologies.com/pls/htmldb/f?p=10000:901:::::P901_ID,P901_R_ID:561,"&gt;Introduction to Oracle APEX I&lt;/a&gt; - December 14th, 2009 (3 days)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://sumnertechnologies.com/pls/htmldb/f?p=10000:901:::::P901_ID,P901_R_ID:562,"&gt;Introduction to Oracle APEX II&lt;/a&gt; - December 17th, 2009 (2 days)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;As part of our way of saying thanks to you, these two sessions will be discounted even more than normal.  &lt;span style="font-style: italic;"&gt;Intro to APEX I&lt;/span&gt; will be only $1200 per student, and Intro to APEX II will be only $800.  And if you sign up for both classes, you can save another $100 and take both for only $1900 per student!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Salt Lake City, Utah :&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;&lt;a href="http://sumnertechnologies.com/pls/htmldb/f?p=10000:901:::::P901_ID,P901_R_ID:541,"&gt;Introduction to Oracle APEX I&lt;/a&gt; - January 18th, 2010 (3 days)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;&lt;a href="http://sumnertechnologies.com/pls/htmldb/f?p=10000:901:::::P901_ID,P901_R_ID:542,"&gt;Introduction to Oracle APEX II&lt;/a&gt; - January 21st, 2010 (2 days)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;&lt;a href="http://sumnertechnologies.com/pls/htmldb/f?p=10000:901:::::P901_ID,P901_R_ID:543,"&gt;Intermediate Oracle APEX&lt;/a&gt; - January 25th, 2010 (3 days)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;&lt;a href="http://sumnertechnologies.com/pls/htmldb/f?p=10000:901:::::P901_ID,P901_R_ID:581,"&gt;Troubleshooting and Debugging Oracle APEX&lt;/a&gt; - January 28th, 2010 (1 day)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;&lt;a href="http://sumnertechnologies.com/pls/htmldb/f?p=10000:901:::::P901_ID,P901_R_ID:582,"&gt;APEX Installation and Administration&lt;/a&gt; - January 29th, 2010 (1 day)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold; color: rgb(255, 102, 0);font-family:trebuchet ms;" &gt;On-Line Based Public Training&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;In addition to the public instructor-led training, we are also offering a number of public online classes.  Our online classes feature the same exact same content as our instructor-led classes, and are conducted over a web conference and toll-free phone line, making it easy to attend from either work or home.  All sessions are taught live by our same great instructors who conduct our on-site classes.  Each session will begin at 12:00 PM ET and run for approximately four hours.&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;&lt;a href="http://sumnertechnologies.com/pls/htmldb/f?p=10000:901:::::P901_ID,P901_R_ID:484,"&gt;Intermediate Oracle APEX&lt;/a&gt; - November 16th, 2009 (five 4-hour sessions)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;&lt;a href="http://sumnertechnologies.com/pls/htmldb/f?p=10000:901:::::P901_ID,P901_R_ID:583,"&gt;Introduction to Oracle APEX I&lt;/a&gt; - February 1st, 2010 (five 4-hour sessions)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;&lt;a href="http://sumnertechnologies.com/pls/htmldb/f?p=10000:901:::::P901_ID,P901_R_ID:584,"&gt;Introduction to Oracle APEX II&lt;/a&gt; - February 10th, 2010 (three 4-hour sessions)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;If you register more than one student from your organization for an online class, each student will receive a 10% discount.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(255, 102, 0);font-family:trebuchet ms;" &gt;Questions, or want private on-site training&lt;/span&gt;?&lt;br /&gt;&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;&lt;br /&gt;Should you have any questions about the courses, technical requirements or want to discuss private on-site training, please send us a note at &lt;a href="mailto:info@sumnertech.com"&gt;info@sumnertech.com&lt;/a&gt; or call us at (703) 879-4615.  We look forward to seeing you soon!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Oracle APEX and Oracle Application Express are registered trademarks of Oracle Corporation and/or its affiliates.  &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6363924398907149830-6445334762455639900?l=douggault.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://douggault.blogspot.com/feeds/6445334762455639900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6363924398907149830&amp;postID=6445334762455639900' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/6445334762455639900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/6445334762455639900'/><link rel='alternate' type='text/html' href='http://douggault.blogspot.com/2009/11/new-apex-training-dates.html' title='New APEX training Dates...'/><author><name>Doug Gault</name><uri>http://www.blogger.com/profile/16786329323466667017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-hrI0YmluzZM/Tg3wrGEXgRI/AAAAAAAAARk/o44IgBfNQ4A/s220/Face2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6363924398907149830.post-3638496037727066892</id><published>2009-06-15T17:12:00.002-05:00</published><updated>2009-06-15T17:29:43.822-05:00</updated><title type='text'>All Change Please...</title><content type='html'>As I mentioned in my &lt;a href="http://douggault.blogspot.com/2009/06/as-many-of-you-know-odtug-kaleidoscope.html"&gt;last post&lt;/a&gt;, on June 1, 2009 I joined the team at &lt;a href="http://sumnertechnologies.com/apex/f?p=10000:1:0"&gt;Sumner Technologies&lt;/a&gt;.  Since then, Scott Spendolini and I have been working on Sumner's portfolio to broaden the scope of what we're offering.&lt;br /&gt;&lt;br /&gt;New items include &lt;a href="http://sumnertechnologies.com/apex/f?p=10000:1010:0::NO:::"&gt;SumnerPrint&lt;/a&gt;, a PL/SQL-based solution that allows you to easily print APEX reports to PDF, HTML and XLS, and &lt;a href="http://sumnertechnologies.com/apex/f?p=10000:1020:0::NO:::"&gt;SumnerFramework&lt;/a&gt;, an application security and management framework for APEX.  We're also working on several new courses and service offerings.&lt;br /&gt;&lt;br /&gt;As part of the inevitable website changes, we've introduced a new &lt;a href="http://sumnertechnologies.com/apex/f?p=10000:400:0::NO:::"&gt;company blog&lt;/a&gt;. We'll be using this blog to provide information about products, services and training classes that we provide as well as unique technical tips and tricks on APEX and other Oracle-related technologies.&lt;br /&gt;&lt;br /&gt;You can subscribe to the SumnertechBlog at &lt;a href="http://feeds2.feedburner.com/SumnertechBlog"&gt;http://feeds2.feedburner.com/SumnertechBlog.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I'll still be updating my blog, but it will become much more personal, and much less about Oracle and APEX.&lt;br /&gt;&lt;br /&gt;And don't forget to come visit us at &lt;a href="http://odtugkaleidoscope.com/"&gt;ODTUG KALAIDOSOPE&lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6363924398907149830-3638496037727066892?l=douggault.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://douggault.blogspot.com/feeds/3638496037727066892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6363924398907149830&amp;postID=3638496037727066892' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/3638496037727066892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/3638496037727066892'/><link rel='alternate' type='text/html' href='http://douggault.blogspot.com/2009/06/all-change-please.html' title='All Change Please...'/><author><name>Doug Gault</name><uri>http://www.blogger.com/profile/16786329323466667017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-hrI0YmluzZM/Tg3wrGEXgRI/AAAAAAAAARk/o44IgBfNQ4A/s220/Face2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6363924398907149830.post-5016888940354739691</id><published>2009-06-11T13:49:00.005-05:00</published><updated>2009-06-11T14:43:55.144-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Presentations'/><category scheme='http://www.blogger.com/atom/ns#' term='PL/SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='ApEx'/><category scheme='http://www.blogger.com/atom/ns#' term='ODTUG'/><title type='text'>ODTUG Kaleidoscope - The countdown begins...</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.odtugkaleidoscope.com/images/imga__24.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 211px; height: 100px;" src="http://www.odtugkaleidoscope.com/images/imga__24.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;As many of you know, &lt;a href="http://odtugkaleidoscope.com/"&gt;ODTUG Kaleidoscope&lt;/a&gt; runs from June 21-25 in Monterey, California. Topics covered will range from Essbase and Hyperion, BI and Data Warehousing, SOA, BPM to my favorite, Application Express.&lt;br /&gt;&lt;br /&gt;This year there are over 40+ APEX related presentations, a number of which will be presented by Oracle ACE and ACE DIRECTORS. Pretty exciting stuff if you're an APEX geek like me. But for me there are several things that will make this particular conference "special".&lt;br /&gt;&lt;br /&gt;Of course, the opportunity to attend so many good sessions is high on my list, but I also get to see a number of people that I haven't seen for quite some time. I'm really looking forward to the &lt;a href="http://jes.blogs.shellprompt.net/2009/06/03/apex-meetup-at-odtug-2009/comment-page-1/#comment-417378"&gt;APEX Meet-Up&lt;/a&gt; that John Scott is organizing.&lt;br /&gt;&lt;br /&gt;But one thing that will be very different is that it will be my first conference as a partner in &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://sumnertechnologies.com/c/st/sumner_technologies_logo.gif"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 173px; height: 64px;" src="http://sumnertechnologies.com/c/st/sumner_technologies_logo.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;a href="http://sumnertechnologies.com/apex/f?p=10000:1:0"&gt;Sumner Technologies&lt;/a&gt;. As of June 1, 2009 I joined forces with Scott Spendolini to help broaden Sumner's offerings. And, not only will Sumner (Scott) be presenting, but we will also have a booth in the exhibitors area this year.&lt;br /&gt;&lt;br /&gt;To coincide with all of this, we've just relaunched our website outlining our full range of course, services and software offerings.&lt;br /&gt;&lt;br /&gt;On top of all of that, the 23rd of June is my 42nd Birthday. What a great opportunity to celebrate with all my APEX friends!&lt;br /&gt;&lt;br /&gt;So, if you're there, stop by the booth and say "Hi". I look forward to seeing you all there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6363924398907149830-5016888940354739691?l=douggault.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://douggault.blogspot.com/feeds/5016888940354739691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6363924398907149830&amp;postID=5016888940354739691' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/5016888940354739691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/5016888940354739691'/><link rel='alternate' type='text/html' href='http://douggault.blogspot.com/2009/06/as-many-of-you-know-odtug-kaleidoscope.html' title='ODTUG Kaleidoscope - The countdown begins...'/><author><name>Doug Gault</name><uri>http://www.blogger.com/profile/16786329323466667017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-hrI0YmluzZM/Tg3wrGEXgRI/AAAAAAAAARk/o44IgBfNQ4A/s220/Face2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6363924398907149830.post-4363228181325953903</id><published>2009-04-08T08:38:00.002-05:00</published><updated>2009-06-11T14:06:28.717-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Development'/><category scheme='http://www.blogger.com/atom/ns#' term='PL/SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>The trouble with DBMS_XPLAN...</title><content type='html'>&lt;p&gt;As some of you may know, I used to be the Product Development Director for &lt;a href="http://www.hotsos.com/" title="hotsos"&gt;Hotsos&lt;/a&gt;. Part of my job entailed work the &lt;a href="http://www.hotsos.com/laredo.html" title="Laredo"&gt;Laredo&lt;/a&gt; product, which helps identify potentials performance problem areas when making changes to your database structure, indexes, statistics, init parameters, etc.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Recently I was called back in on a particularly sticky problem that one of their customers was having in using Laredo. Without going into a long and arduous explanation, the problem boiled down to the fact that Laredo was using DBMS_XPLAN to emit formatted explain plans to the user and they were coming out &lt;span style="font-weight: bold; font-style: italic;"&gt;wrong.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;I suppose you would have expected me to learn my lesson by now, but I kind of expect the Oracle documentation to be correct for the most part. So when we looked up DBMS_XPLAN.DISPLAY in the &lt;a href="http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14258/d_xplan.htm#CACICEDJ"&gt;PL/SQL Packages and Types Reference for 10g&lt;/a&gt;, I kind of expected to be able to take the code example and use it verbatim.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Here is what it said:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;DISPLAY Function&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This table function displays the contents of the plan table.&lt;/p&gt;  &lt;p&gt;In addition, you can use this table function to display any plan (with or without statistics) stored in a table as long as the columns of this table are named the same as columns of the plan table (or V$SQL_PLAN_STATISTICS_ALL if statistics are included). You can apply a predicate on the specified table to select rows of the plan to display.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Syntax&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Courier;"&gt;DBMS_XPLAN.DISPLAY(&lt;br /&gt; table_name IN VARCHAR2 DEFAULT ‘PLAN_TABLE’,&lt;br /&gt; statement_id IN VARCHAR2 DEFAULT NULL,&lt;br /&gt; format IN VARCHAR2 DEFAULT ‘TYPICAL’,&lt;br /&gt; filter_preds IN VARCHAR2 DEFAULT NULL);&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Courier;"&gt;…&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Courier;"&gt;&lt;span style="font-family:Helvetica;"&gt;&lt;strong&gt;statement_id&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Specifies the statement_id of the plan to be displayed. This parameter defaults to NULL, which is the default when the EXPLAIN PLAN command is executed without a set statement_id clause.If no statement_id is specified, the function will show you the plan of the most recent explained statement.&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;And even came with an example that showed how to use it:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;To display the plan for a statement identified by ‘foo’, such as statement_id=’foo’:&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Courier;"&gt;SELECT * FROM table (DBMS_XPLAN.DISPLAY(‘plan_table’, ‘foo’));&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;So, when we coded a statement that went into the product that looked like the following, I would have expected to be shown the explain plan output for the correct statement.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style="font-family:Courier;"&gt;select * from table(DBMS_XPLAN.DISPLAY(‘LAR_SCENARIO_PLAN_VW’,’82-2476-34’, ‘BASIC’))&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;But instead what we got was THIS:&lt;span style="font-family:Courier;"&gt;&lt;br /&gt;&lt;br /&gt; &lt;img src="http://farm4.static.flickr.com/3337/3424100058_016cea22f1_o.jpg" alt="200904071835.jpg" height="201" width="426" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Notice that we get two “0” IDs and two “1” IDs. And they are OBVIOUSLY from two different statements! WHAT THE….&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Now I &lt;span style="font-weight: bold; font-style: italic;"&gt;know&lt;/span&gt; I specifically told it to get me only the the plan where “82-2476-34” was that STATEMENT_ID. Did I get the ordinal position of the parameters wrong? I tried again with the following statement:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style="font-family:Courier;"&gt;select *&lt;br /&gt; from table(DBMS_XPLAN.DISPLAY(TABLE_NAME =&gt;’LAR_SCENARIO_PLAN_VW’,&lt;br /&gt; STATEMENT_ID =&gt;;’82-2476-34’,&lt;br /&gt; FORMAT=&gt;;’BASIC’))&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Unfortunately, I received the same result. SO, I decided to go digging into the underlying plan table to see what was going on. I decided to select all rows where the STATEMENT_ID was equal to ‘82-2476-34’ to see if there was a duplicate STATEMENT_ID in the table. No luck.&lt;/p&gt;&lt;img src="http://farm4.static.flickr.com/3568/3424100230_dcf2c6d0e7_o.jpg" alt="200904071920.jpg" height="147" width="480" /&gt;&lt;br /&gt;&lt;p&gt;Hmm... That doesn't make any sense! There has to be something going on that makes DBMS_XPLAN bring back extraneous rows. My search then turned to the extraneous rows to try to find what they had in common with the rows that &lt;span style="font-weight: bold; font-style: italic;"&gt;should&lt;/span&gt; have been coming back. So I started looking at the expanded output of DBMS_XPLAN and trudged through the base table examining the individual attributes to see where DMBS_XPLAN might have been losing it's mind.&lt;/p&gt;&lt;p&gt;The search finally lead me to PLAN_ID. If I selected all the records from the base table where the PLAN_ID = 7191, the same PLAN_ID as my original statement, here is what I got.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://farm4.static.flickr.com/3372/3423292325_6338b8069a_o.jpg" alt="200904071926.jpg" height="184" width="476" /&gt;&lt;/p&gt;&lt;p&gt;EUREKA! But &lt;span style="font-style: italic; font-weight: bold;"&gt;WHY&lt;/span&gt; would DBMS_XPLAN bring back other statement ID's when I specifically passed in statement id "82-2476-34”? Luckily DBMS_XPLAN is not wrapped so I was able to use SQL-DEVELOPER's debug feature to walk through the execution of DMBS_XPLAN and grab the explain plan SQL.&lt;/p&gt;&lt;blockquote&gt;&lt;p style="font-family: courier new;"&gt;SELECT&lt;br /&gt; /*+ opt_param('parallel_execution_enabled','false') */&lt;br /&gt; /* EXEC_FROM_DBMS_XPLAN */&lt;br /&gt;    id,&lt;br /&gt;    position,&lt;br /&gt;    depth,&lt;br /&gt;    operation,&lt;br /&gt;    OPTIONS,&lt;br /&gt;    object_name,&lt;br /&gt;    cardinality,&lt;br /&gt;    bytes,&lt;br /&gt;    temp_space,&lt;br /&gt;    cost,&lt;br /&gt;    io_cost,&lt;br /&gt;    cpu_cost,&lt;br /&gt;    TIME,&lt;br /&gt;    partition_start,&lt;br /&gt;    partition_stop,&lt;br /&gt;    object_node,&lt;br /&gt;    other_tag,&lt;br /&gt;    distribution,&lt;br /&gt;    projection,&lt;br /&gt;    access_predicates,&lt;br /&gt;    filter_predicates,&lt;br /&gt;    NULL,&lt;br /&gt;    qblock_name,&lt;br /&gt;    object_alias,&lt;br /&gt;    NVL( other_xml, remarks ) other_xml,&lt;br /&gt;    NULL sql_profile,&lt;br /&gt;    NULL sql_plan_baseline,&lt;br /&gt;    NULL,&lt;br /&gt;    NULL,&lt;br /&gt;    NULL,&lt;br /&gt;    NULL,&lt;br /&gt;   NULL,&lt;br /&gt;    NULL,&lt;br /&gt;    NULL,&lt;br /&gt;    NULL,&lt;br /&gt;    NULL,&lt;br /&gt;    NULL,&lt;br /&gt;    NULL,&lt;br /&gt;    NULL,&lt;br /&gt;    NULL,&lt;br /&gt;    NULL,&lt;br /&gt;    NULL&lt;br /&gt; FROM&lt;br /&gt;    LAREDO.LAR_SCENARIO_PLAN_VW&lt;br /&gt; WHERE&lt;br /&gt;    plan_id =&lt;br /&gt;    &lt;span style="color: rgb(200, 9, 21);"&gt;(SELECT&lt;br /&gt;      MAX( plan_id )&lt;br /&gt;    FROM&lt;br /&gt;     LAREDO.LAR_SCENARIO_PLAN_VW&lt;br /&gt;    WHERE    id =0&lt;br /&gt;    AND statement_id = :stmt_id)&lt;/span&gt;&lt;br /&gt; ORDER BY  id&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;The problem shows up very clearly in the generated SQL. The WHERE clause is taking the STATEMENT_ID I passed and getting the MAX(PLAN_ID) and selecting ALL records that have that PLAN_ID. But &lt;span style="font-weight: bold; font-style: italic;"&gt;what if&lt;/span&gt;, as in my case, there are multiple statements with the same plan ID?&lt;/p&gt;&lt;p&gt;OK. Well, since DBMS_XPLAN provides the ability to add filter predicates, I'll try call the procedure as follows:&lt;br /&gt; &lt;/p&gt;&lt;blockquote style="font-family: courier new;"&gt;&lt;p&gt;select * from table(DBMS_XPLAN.DISPLAY(‘LAR_SCENARIO_PLAN_VW’,’82-2476-34’, ‘BASIC’, 'STATEMENT_ID= ''82-2476-34''')) &lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Adding the filter predicate changed the where clause, but not as I thought it might.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;...&lt;br /&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;FROM&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;      LAREDO.LAR_SCENARIO_PLAN_VW&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(200, 9, 21); font-family: courier new;"&gt;WHERE&lt;br /&gt;    1=1&lt;br /&gt; AND statement_id = :stmt_id&lt;br /&gt; AND STATEMENT_ID = '82-2476-34'&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;"&gt; ORDER BY  id&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;WHAT THE %*@#? ...&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Ok... I walked through the code again a little more carefully and came to the conclusion that this is just a run of the mill code error. Oracle are building pieces of the where clause and pasting them together based on certain criteria, mixing and matching based on what your PLAN_TABLE looks like. When it comes to the part where they paste in the STATEMENT_ID that you pass in, if you haven't passed anything to FILTER_PRED, they forget to paste the predicates limiting the selection to your chosen STATEMENT ID in all the necessary places.&lt;/p&gt;&lt;p&gt;While the resulting WHERE CLAUSE you get by actually passing something in to FILTER_PRED is not technically correct, it does work.&lt;/p&gt;&lt;p&gt;I hope this might save some people some time, if they run into something similar. In the mean time I'll be looking into METALINK to see it the bug is logged, and if not I'll log it.&lt;/p&gt;&lt;p&gt;Happy Coding!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6363924398907149830-4363228181325953903?l=douggault.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://douggault.blogspot.com/feeds/4363228181325953903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6363924398907149830&amp;postID=4363228181325953903' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/4363228181325953903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/4363228181325953903'/><link rel='alternate' type='text/html' href='http://douggault.blogspot.com/2009/04/trouble-with-dbmsxplan.html' title='The trouble with DBMS_XPLAN...'/><author><name>Doug Gault</name><uri>http://www.blogger.com/profile/16786329323466667017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-hrI0YmluzZM/Tg3wrGEXgRI/AAAAAAAAARk/o44IgBfNQ4A/s220/Face2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6363924398907149830.post-7822500949956905498</id><published>2009-02-24T08:54:00.002-06:00</published><updated>2009-06-11T13:59:44.899-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='PL/SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='ApEx'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>JavaScript and Dates.</title><content type='html'>&lt;p&gt;If you've ever tried to work with date manipulation and formatting in JavaScript, then you know what a hassle it can be. While trying to solve a particularly itchy problem with dates, I ran across &lt;a href="http://blog.stevenlevithan.com/archives/date-time-format"&gt;this post&lt;/a&gt; by Steven Levithan that everyone should be aware of.&lt;/p&gt;&lt;p&gt;He's put together a very nice little Java Script library that lets you format a JavaScript Date object very easily. The available date format masks have been abstracted in such a way that it is quite easy to make them match what you're used to as an Oracle developer.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;So, if you ever have to deal with Date formatting in Javascript, then this is definitely something to check out.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6363924398907149830-7822500949956905498?l=douggault.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://douggault.blogspot.com/feeds/7822500949956905498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6363924398907149830&amp;postID=7822500949956905498' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/7822500949956905498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/7822500949956905498'/><link rel='alternate' type='text/html' href='http://douggault.blogspot.com/2009/02/javascript-and-dates.html' title='JavaScript and Dates.'/><author><name>Doug Gault</name><uri>http://www.blogger.com/profile/16786329323466667017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-hrI0YmluzZM/Tg3wrGEXgRI/AAAAAAAAARk/o44IgBfNQ4A/s220/Face2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6363924398907149830.post-8534932901686710842</id><published>2008-12-05T11:37:00.001-06:00</published><updated>2008-12-05T13:34:25.719-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lifestyle changes'/><category scheme='http://www.blogger.com/atom/ns#' term='Costa Rica'/><category scheme='http://www.blogger.com/atom/ns#' term='Buying a small hotel'/><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><category scheme='http://www.blogger.com/atom/ns#' term='Travel'/><category scheme='http://www.blogger.com/atom/ns#' term='Rants'/><title type='text'>Of Rescessions and Research...</title><content type='html'>&lt;p&gt;It's been a long while since I last wrote about our grand &lt;span style="font-weight: bold; font-style: italic;"&gt;5 year plan&lt;/span&gt; and a lot has changed; in the world as well as with us.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;As for the world, I think we all know what's been going on there; Housing Bubbles bursting, Bank Failures, Bailouts, Elections, the confirmation of the dreaded 'R' word (a year after the fact, I might add) and most recently even the car companies have stepped out of their private Leers with tin cup in hand.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I think everyone will agree that we are living in interesting times. I don't know many people that have not been affected in some way by the recession that we are currently experiencing. I've got friends who have lost or are in danger of loosing their jobs, employees that I've seen let go, and small businesses that I know are fighting what looks like a losing battle.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The economy is sucking wind and that specific fact has made us look very hard at both our short and long term plans. Don't get me wrong, the long term plans for getting out of IT and into the business of being a professional host are still on the table. It just may take a little longer to get there.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;You see, a large amount of the capitol for this plan was supposed to come out of one of 3 places; 401k/Investments, House Equity, Cash Savings. If you have any view into the markets, you know that 401k's are now 201k's, home equity is in the basement, and cash savings are something to hold on to for dear life in fear that one might end up as an unemployment statistic. It's fair to say that life as we know it has gone into a deep hibernation and we're all in what my friend and current employer, Gary Goodman, calls "hunker-down mode".&lt;/p&gt;&lt;br /&gt;&lt;p&gt;That having been said, that has not stopped me from doing more and more research. I've read more and more about Costa Rica, and it is still as tantalizing on paper as it has always been. One particularly interesting piece of literature I've picked up is &lt;span style="font-style: italic; font-weight: bold;"&gt;How to Buy Costa Rica Real Estate Without Losing Your Camisa&lt;/span&gt; by Scott Oliver. Very useful and well presented, it gives you the benefit of experience and research that would be hard to gather together in a short time. Scott's web site ( &lt;a href="http://www.welovecostarica.com"&gt;www.WeLoveCostaRica.com&lt;/a&gt; ) is dedicated to helping people make the right decisions about moving to Costa Rica.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Another avenue of research has been in the realm of what it costs to run a small hotel in CR. I've been working with a very nice young man by the name of Kent Thompson from &lt;a href="http://www.2costaricarealestate.com"&gt;2CostaRica Real Estate&lt;/a&gt; who has helped me get about 3 years worth of running financial data for a small 12 room hotel in our preliminary target location of Quepos/Manuel Antonio on the west coast of Costa Rica.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;With this information and information on their occupancy rates for the same period I've managed to create a dynamic model that allows me to adjust the number of rooms, the occupancy rate, the average room rate, and see what type of break even/profitability a given hotel might have based on history and projections. It also takes into account putting in place a Mortgage on the Hotel and paying that off as part of the cash-flow plan.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://farm4.static.flickr.com/3103/3085245994_e2b049ae7b.jpg" width="480" height="262" alt="200812051128.jpg" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The bottom line is that after doing the math and understanding what we would likely be left with as "take home" after paying the bills, we are in need of more research. We need to understand what the real cost of living is in Costa Rica. We need to get a handle on not only the cost of day to day things, but exactly what those day to day things really are in when living in Costa Rica.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Moving anywhere like this is not only a change of location, but will constitute a huge change in lifestyle. Are we ready for that? Is it the lifestyle we want? Will we actually like the country once we see it in person. All questions to be answered.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;So, the next steps? More research! This time fun research! We plan to visit Costa Rica sometime in the spring of 2009 and spend about a week there traveling the country and seeking what we can of the different areas. If we like what we see, then we'll likely plan more fact finding missions and experience more of what it has to offer. If not, then we'll have to think long and hard about what next.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I'll keep you posted.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6363924398907149830-8534932901686710842?l=douggault.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://douggault.blogspot.com/feeds/8534932901686710842/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6363924398907149830&amp;postID=8534932901686710842' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/8534932901686710842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/8534932901686710842'/><link rel='alternate' type='text/html' href='http://douggault.blogspot.com/2008/12/of-rescessions-and-research.html' title='Of Rescessions and Research...'/><author><name>Doug Gault</name><uri>http://www.blogger.com/profile/16786329323466667017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-hrI0YmluzZM/Tg3wrGEXgRI/AAAAAAAAARk/o44IgBfNQ4A/s220/Face2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3103/3085245994_e2b049ae7b_t.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6363924398907149830.post-2196741355479803895</id><published>2008-10-28T15:21:00.000-05:00</published><updated>2008-10-28T15:22:02.515-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ApEx'/><category scheme='http://www.blogger.com/atom/ns#' term='Annoying Habits'/><category scheme='http://www.blogger.com/atom/ns#' term='Rants'/><title type='text'>ApExPOSED 2008 - T-1 day and counting or "Don't mock the afflicted...
They suffer so!"</title><content type='html'>&lt;p&gt;I'm sitting in the lobby of the &lt;a href="http://www.wyndham.com/hotels/ORDAP/main.wnt"&gt;Chicago O'Hare Wyndham&lt;/a&gt; hotel, waiting for the receptionist to signal that my room has been cleaned and is ready for occupancy. In the mean time I thought I would have a little rant about bus drivers.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I have noticed that, an inordinate amount of the time, shuttle bus drivers share a particularly obscure and annoying disease. This disease lies frighteningly dormant right up to the point they turn the key and begin to accelerate. Then some kind of bus driver specific epilepsy seems to grasp hold of them sending their right leg into convulsions. These seemingly uncontrollable convulsions causing their use of the accelerator to become spasmodic and pulsing, sending the bus into mild thrusting shudders similar to that of a boat bouncing mild waves.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;In some drivers the epilepsy is so severe that the bus lurches forward every three seconds, bringing your lunch up to your throat and making you wish you'd packed the Dramamine you usually only bring when heading on a cruise. God help those that are easily affected by motion sickness, which thankfully I am not!&lt;/p&gt;&lt;br /&gt;&lt;p&gt;My shuttle driver from O'Hare to the hotel had one of the most pronounced cases I have ever experienced. From my seat in the rear of the bus, I could actually see not only his foot, but his &lt;span style="font-style: italic; font-weight: bold;"&gt;whole leg&lt;/span&gt; twitching and bouncing on the accelerator. I was not the only one that seemed to notice. Shortly after the bus left the relative safety of it's parking space, the slight framed woman sitting a few seats ahead of me grabbed the back of the seat directly in front of her and remained white-knuckled until we arrived at the hotel. As I departed the bus her husband was gingerly trying to reassure her as he dug her fingernails out of the back of the seat.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I don't know what this disease is called, but its spreading and it must be stopped. I'll be talking to my doctor friends once I get home to see if there is a foundation to which I can direct these poor souls to for help.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6363924398907149830-2196741355479803895?l=douggault.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://douggault.blogspot.com/feeds/2196741355479803895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6363924398907149830&amp;postID=2196741355479803895' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/2196741355479803895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/2196741355479803895'/><link rel='alternate' type='text/html' href='http://douggault.blogspot.com/2008/10/apexposed-2008-t-1-day-and-counting-or.html' title='ApExPOSED 2008 - T-1 day and counting or &amp;quot;Don&amp;#39;t mock the afflicted...&#xA;They suffer so!&amp;quot;'/><author><name>Doug Gault</name><uri>http://www.blogger.com/profile/16786329323466667017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-hrI0YmluzZM/Tg3wrGEXgRI/AAAAAAAAARk/o44IgBfNQ4A/s220/Face2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6363924398907149830.post-7302034411857425632</id><published>2008-10-28T07:52:00.001-05:00</published><updated>2008-10-28T07:52:15.059-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ApEx'/><category scheme='http://www.blogger.com/atom/ns#' term='Blogging'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>Carl Bacskstrom</title><content type='html'>&lt;p&gt;I did not know Carl personally as I only met him once or twice, but I have dealt with him via e-mail and online for quite some time.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;His loss is tragic and he will be sorely missed by the Oracle and APEX Community.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;All of our thoughts are with his family.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6363924398907149830-7302034411857425632?l=douggault.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://douggault.blogspot.com/feeds/7302034411857425632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6363924398907149830&amp;postID=7302034411857425632' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/7302034411857425632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/7302034411857425632'/><link rel='alternate' type='text/html' href='http://douggault.blogspot.com/2008/10/carl-bacskstrom.html' title='Carl Bacskstrom'/><author><name>Doug Gault</name><uri>http://www.blogger.com/profile/16786329323466667017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-hrI0YmluzZM/Tg3wrGEXgRI/AAAAAAAAARk/o44IgBfNQ4A/s220/Face2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6363924398907149830.post-9058303661044949003</id><published>2008-09-03T15:36:00.001-05:00</published><updated>2008-09-03T15:36:29.246-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lifestyle changes'/><category scheme='http://www.blogger.com/atom/ns#' term='Costa Rica'/><category scheme='http://www.blogger.com/atom/ns#' term='Buying a small hotel'/><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>Doing your homework.</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-style: normal; font-weight: normal;"&gt;&lt;img src="http://farm4.static.flickr.com/3069/2826123346_19a417320d.jpg" width="245" height="163" alt="200809031001.jpg" /&gt;&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;It has begun&lt;/em&gt;&lt;/strong&gt;. We've actually started taking real steps to realize our dreams as stated in &lt;a href="http://douggault.blogspot.com/2008/08/decisions-have-been-made-steps-will-be.html"&gt;my last blog post&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;This has taken a number of forms; beginning real research on Costa Rica, trying to put forth a real financial plan and actually starting back to school.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;As far as beginning research on Costa Rica, the internet is a wonderful resource. You're able to gather a huge amount of information in a relatively short amount of time. And while that is great, it does promote a certain amount of information overload. I've already com across information on residency requirements, buying real estate, importing furniture and personal belongings, importing vehicles, requirements for taking your pets into the country.... More information than I can absorb.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I need to come up with a system of logging information, documents and URL's I've come across and what topics they support. I'm kind of looking for a piece of mind mapping software that allows this type of thing. I currently use &lt;a href="http://www.mindnode.com"&gt;MindNode&lt;/a&gt;, but it doesn't really allow you to link to outside documents and URL's. If anyone knows of one for the MAC, let me know.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Casting a budget and a financial plan is a lot more work than I thought it might be. To get the right information to our financial advisor, I need to have some idea of how much money we need to save. And to have any clue about that I need to know what our initial outlay for a property will be, what our business and personal cash flow situation is likely to need to be, and what requirements Costa Rica has for earning residency. Although I've been in touch with a realtor in Costa Rica, I'm not sure how accurate even what he provides us will be, so I think the right thing to do at this point is to make a best guess and then adjust the details as we move forward.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;We're planning a trip to CR sometime early next year. But we have to sandwich this somewhere between the annual &lt;a href="http://www.hotsos.com/sym09.html"&gt;Hotsos Symposium&lt;/a&gt;, the &lt;a href="http://www.diffadallas.org/"&gt;DIFFA&lt;/a&gt; charity event that we try to always attend, and our respective breaks in our course schedules.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Speaking of which, starting back to school is probably the strangest of the lot. This is the first time in over 20 years that "Back to School" time actually had a personal meaning to me other than worsening traffic. David has started his on-line courses at &lt;a href="http://www.ufl.edu/"&gt;University of Florida&lt;/a&gt; and I've started mine at &lt;a href="http://www.northlakecollege.edu/"&gt;North Lake College&lt;/a&gt; here in the D/FW area. David has it far worse than I do. His first class is &lt;em&gt;&lt;span style="text-decoration: underline;"&gt;Economics&lt;/span&gt;&lt;/em&gt; and he has to sit in on two 2 hour on-line lectures a week (Wednesday and Sunday) and has some pretty stringent deadlines for papers to be submitted. I, on the other hand, am taking &lt;span style="font-style: italic; text-decoration: underline;"&gt;Introduction to Computers&lt;/span&gt; and &lt;span style="font-style: italic; text-decoration: underline;"&gt;English Composition I&lt;/span&gt;. Neither of which require lecture attendance, and both of which should be an easy 'A'... thank GOD!&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I'm actually glad that my first two classes are pretty easy because I need to remember how to study. I was never really that good at it the first time, so maybe it's not so much &lt;span style="font-weight: bold; font-style: italic;"&gt;remember&lt;/span&gt; as &lt;span style="font-weight: bold; font-style: italic;"&gt;learn!&lt;/span&gt; I have a feeling that future classes will require a bit more focus and attention so I'm going to try to get myself into good habits on the easy courses. Or that is what I'm telling myself!&lt;/p&gt;&lt;br /&gt;&lt;p&gt;So with school, research and budget planing, I can see that it's going to be a busy fall. I'm hoping my determination won't flag too soon, and that our upcoming trip to Costa Rica will spur us both on to work as hard as possible to make this a reality.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Until next time....&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6363924398907149830-9058303661044949003?l=douggault.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://douggault.blogspot.com/feeds/9058303661044949003/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6363924398907149830&amp;postID=9058303661044949003' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/9058303661044949003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/9058303661044949003'/><link rel='alternate' type='text/html' href='http://douggault.blogspot.com/2008/09/doing-your-homework.html' title='Doing your homework.'/><author><name>Doug Gault</name><uri>http://www.blogger.com/profile/16786329323466667017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-hrI0YmluzZM/Tg3wrGEXgRI/AAAAAAAAARk/o44IgBfNQ4A/s220/Face2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3069/2826123346_19a417320d_t.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6363924398907149830.post-7963200589837757848</id><published>2008-08-15T15:29:00.001-05:00</published><updated>2008-08-16T07:47:23.476-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lifestyle changes'/><category scheme='http://www.blogger.com/atom/ns#' term='Costa Rica'/><category scheme='http://www.blogger.com/atom/ns#' term='Moving abroad'/><category scheme='http://www.blogger.com/atom/ns#' term='Buying a small hotel'/><title type='text'>Decisions have been made ... Steps will be taken!</title><content type='html'>&lt;p&gt;Anyone who has known me for any length of time has probably heard me say, and probably more than once,&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;  &lt;p&gt;This is my last job in the I.T. field!&lt;/p&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;It's not that I hate I.T. On the contrary, I've had a great time and made a great living doing what I loved, while having the opportunity to travel all over the world, often on the company's nickel. It's just that I've been doing some form of IT since 1987 (CRAP! That's more than 20 years!) and it's not the thrill and challenge that it used to be.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;As a byproduct of being less than mentally and spiritually sated by my job, I like so many other people, dream of breaking the bonds of the work-a-day world and setting off on some noble and exotic life adventure. Dreams that for the most part, I've kept to myself. Oh sure, my partner, David, and I have idly discussed how it might be interesting to open a B&amp;amp;B somewhere, or look into buying rental property and become property magnets, or move to some exotic place or another and work remotely. Nice dreams that would make our lives more of an everyday adventure, but dreams that no one, including ourselves, expected us to act upon.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Well recently, and for reasons known only to the Universe, we actually &lt;strong&gt;&lt;em&gt;are&lt;/em&gt;&lt;/strong&gt; starting to act on some of these discussions. In fact we've begun the initial stages of a plan that within 5 years would put us owning a small hotel in a Spanish speaking country in Central America or the Caribbean.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img src="http://farm4.static.flickr.com/3233/2765583889_2c3a6c06b1.jpg" width="336" height="207" alt="200808151516.jpg" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;We're currently in research phase looking at different countries, what's out there, how much it might cost, what the rules and regulations are, etc. etc. Our current favorite location is Costa Rica but there is still a lot to be done.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;In the mean time, David is serendipitously returning to school to get an MBA which will not only help him with his current career, but would help with running any business we get involved in, and I'm going back to get an AAS degree in Hotel Management so that we at least have some professional insight into how a hotel should be run.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I'm also reading everything I can get my hands on written by and about people who have done this type of thing before. There is a lot of good information on the web both from official sources and bloggers who are further down the road than we are.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;We've talked to our financial advisor, and after he stopped laughing ... and then stopped pleading us to take him too, he's working on putting our current investments to work to get us the best return in a 5 year time frame so we can realize our budding dream.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;So there has been a new element added to this blog... One that is decidedly non-IT focused, but that will very likely have a bit more zeal in the related postings.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Watch this space and you will be able to keep up with how an IT Geek (Programmer) and a Drug Pusher (Pharmacist) do in chasing their dreams to become Hoteliers.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Wish us luck, and if we succeed ... Come and visit us.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6363924398907149830-7963200589837757848?l=douggault.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://douggault.blogspot.com/feeds/7963200589837757848/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6363924398907149830&amp;postID=7963200589837757848' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/7963200589837757848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/7963200589837757848'/><link rel='alternate' type='text/html' href='http://douggault.blogspot.com/2008/08/decisions-have-been-made-steps-will-be.html' title='Decisions have been made ... Steps will be taken!'/><author><name>Doug Gault</name><uri>http://www.blogger.com/profile/16786329323466667017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-hrI0YmluzZM/Tg3wrGEXgRI/AAAAAAAAARk/o44IgBfNQ4A/s220/Face2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3233/2765583889_2c3a6c06b1_t.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6363924398907149830.post-7133873422841825105</id><published>2008-07-28T10:35:00.001-05:00</published><updated>2008-07-28T10:35:43.208-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Presentations'/><category scheme='http://www.blogger.com/atom/ns#' term='ApEx'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>Invited to present at the 2008 ODTUG APEX Exposed training event.</title><content type='html'>&lt;p&gt;Well, it's official... I'll be presenting "Performance Tuning APEX Applications" at the &lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;a href="http://www.odtugapextraining.com/"&gt;APEX EXPOSED&lt;/a&gt;&lt;/span&gt; event.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I'm in the process of updating the presentation based on feedback from audiences and friends who have seen the presentation, so if you have any favorite APEX performance tuning tips, please let me know. I'll give full credit in the presentation to those that submitted the tips.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I'll also be working with Scott Spendolini to present a "best practices" guide to APEX Development. Hopefully Scott's experience as an APEX Consultant and mine as a developer of Commercial Software using APEX will bring together an interesting mix of "Do's and Don'ts" for APEX Development.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Anyway, even though I'm up first thing, and share the last spot with Scott, I'm looking forward to the conference.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Hope to see you there.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6363924398907149830-7133873422841825105?l=douggault.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://douggault.blogspot.com/feeds/7133873422841825105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6363924398907149830&amp;postID=7133873422841825105' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/7133873422841825105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/7133873422841825105'/><link rel='alternate' type='text/html' href='http://douggault.blogspot.com/2008/07/invited-to-present-at-2008-odtug-apex.html' title='Invited to present at the 2008 ODTUG APEX Exposed training event.'/><author><name>Doug Gault</name><uri>http://www.blogger.com/profile/16786329323466667017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-hrI0YmluzZM/Tg3wrGEXgRI/AAAAAAAAARk/o44IgBfNQ4A/s220/Face2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6363924398907149830.post-5253328840920483306</id><published>2008-07-12T21:40:00.000-05:00</published><updated>2008-07-12T21:42:21.085-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Photography'/><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><category scheme='http://www.blogger.com/atom/ns#' term='Travel'/><title type='text'>Utah Day 2 &amp; 3</title><content type='html'>&lt;p style="font-size: 14px;"&gt;&lt;strong&gt;Day 2&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="font-size: 13px;"&gt;Today we spent the morning in and around &lt;a href="http://www.nps.gov/cany/"&gt;Canyonlands National Park&lt;/a&gt;, including a trip to &lt;a href="http://www.utah.com/stateparks/dead_horse.htm"&gt;Dead Horse Point&lt;/a&gt; state park. I've been to the Grand Canyon, and that is definitely impressive, but it's really hard to get a sense of the scale there. Canyonlands, however, is in some way more impressive than the Grand Canyon.&lt;/p&gt;&lt;br /&gt;&lt;p style="font-size: 13px;"&gt;The views you get in Canyonlands are far better than any I've seen at the Grand Canyon and in many cases far easier to get to.&lt;/p&gt;&lt;br /&gt;&lt;p style="font-size: 13px;"&gt;Let me show you what I mean. Here are some of the views that were just along the road while driving through Canyonlands and Dead Horse Point, or within a very easy walk that any typical (read, lazy) American could do.&lt;/p&gt;&lt;br /&gt;&lt;p style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="font-size: 13px;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://farm4.static.flickr.com/3035/2662193111_3019713461.jpg" width="480" height="360" alt="Dead Horse Point" /&gt; &lt;img src="http://farm4.static.flickr.com/3258/2662191445_09a4c9eac4.jpg" width="480" height="360" alt="Dead Horse Point " /&gt; &lt;img src="http://farm4.static.flickr.com/3171/2663016888_ab5b82c1cb.jpg" width="480" height="360" alt="CanyonLands" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="font-size: 13px;"&gt;If you're willing to hike a bit, you get to witness views like these.&lt;/p&gt;&lt;br /&gt;&lt;p style="font-size: 13px;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://farm4.static.flickr.com/3199/2663019702_3631bfa058.jpg" width="480" height="360" alt="Arch" /&gt; &lt;img src="http://farm4.static.flickr.com/3060/2662193565_8c2ae5f4c7.jpg" width="480" height="360" alt="Canyon" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="font-size: 13px;"&gt;The rest of the day was mostly driving from the Moab area to &lt;a href="http://www.utah.com/culture/fruita.htm"&gt;Fruita&lt;/a&gt; in the &lt;a href="http://www.nps.gov/care"&gt;Capitol Reef&lt;/a&gt;. The City of Fruita was a small Mormon Settlement on a little river and is quite the oasis in the middle of what seems to be a complete wasteland.&lt;/p&gt;&lt;br /&gt;&lt;p style="font-size: 13px;"&gt;The drive was anything but boring with some of the most beautiful scenery I think I've ever seen.&lt;/p&gt;&lt;br /&gt;&lt;p style="font-size: 13px;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://farm4.static.flickr.com/3271/2662192251_134660e729.jpg" width="480" height="360" alt="Drive to Fruita" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="font-size: 13px;"&gt;&lt;span style="font-size: 14px; font-weight: bold;"&gt;Day 3&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;We woke up in the Fruita camp grounds and the wildlife was abundant. Deer, Marmots, Chipmunks, horses, birds of all sorts.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;We took a scenic drive to Long Canyon where we had lunch on a cliff top.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://farm4.static.flickr.com/3105/2663018424_2ca7321334.jpg" width="480" height="360" alt="Lunch on the cliff" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;We then drove a ways farther to Escalante where we will be camping for tonight. After checking in to the camp ground we drove to the Escalante Petrified Forest state park.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://farm4.static.flickr.com/3042/2663017680_d01fec55ae.jpg" width="480" height="360" alt="Petrified Wood" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Right now we're getting ready to eat dinner and have a nice evening "at home" in the RV.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Two big hikes planned for tomorrow...&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Check back soon!&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6363924398907149830-5253328840920483306?l=douggault.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://douggault.blogspot.com/feeds/5253328840920483306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6363924398907149830&amp;postID=5253328840920483306' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/5253328840920483306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/5253328840920483306'/><link rel='alternate' type='text/html' href='http://douggault.blogspot.com/2008/07/utah-day-2-3.html' title='Utah Day 2 &amp;amp; 3'/><author><name>Doug Gault</name><uri>http://www.blogger.com/profile/16786329323466667017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-hrI0YmluzZM/Tg3wrGEXgRI/AAAAAAAAARk/o44IgBfNQ4A/s220/Face2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3035/2662193111_3019713461_t.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6363924398907149830.post-7066940571222307269</id><published>2008-07-11T09:03:00.000-05:00</published><updated>2008-07-11T09:05:17.397-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Photography'/><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><category scheme='http://www.blogger.com/atom/ns#' term='Travel'/><title type='text'>Utah Day 1 - Arches National Park</title><content type='html'>&lt;p&gt;After a &lt;span style="font-weight: bold; font-style: italic;"&gt;very long&lt;/span&gt; drive from &lt;a href="http://maps.google.com/maps?f=d&amp;amp;hl=en&amp;amp;geocode=&amp;amp;saddr=Las+Vegas,+NV&amp;amp;daddr=Moab+UT&amp;amp;sll=37.58164,-112.35207&amp;amp;sspn=4.674729,11.381836&amp;amp;ie=UTF8&amp;amp;z=7"&gt;Las Vegas, NV to Moab, UT&lt;/a&gt; we finally arrived at our Trailer Park Camp grounds at nearly midnight.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://farm4.static.flickr.com/3137/2657914371_2e59ea71ce_m.jpg" width="181" height="241" alt="David with the RV" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;After getting up, fixing breakfast, and unhooking the many RV umbilical cords, we were off to &lt;a href="http://www.nps.gov/arch/"&gt;Arches National Park.&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://farm3.static.flickr.com/2286/2657913763_de4ee4ed45.jpg" width="243" height="182" alt="Arches National Park" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The day was spent driving the RV from beauty spot to beauty spot, and hiking (sometimes several miles) to see what turns out to be some of the most beautiful scenery in the world. There were many very lovely spots, but the three hi-lights were ...&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://farm4.static.flickr.com/3116/2657915369_ee917e1322.jpg" width="338" height="253" alt="Double Arches" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Double Arch: This is a beautiful set of arches on a grand scale that you can climb. It was about a .5 mile hike over a really flat sandy trail so very easy to get to. This alone was worth the trip. Here are some more images...&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://farm4.static.flickr.com/3176/2657913071_8c947d53aa.jpg" width="209" height="278" alt="David @ Double Arches" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img src="http://farm4.static.flickr.com/3087/2658740232_6e3d19df13.jpg" width="291" height="218" alt="Double Arches 2" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Sand Dune Arch: You reach this from just off of a small trail but it 's well hidden and and probably one of the most beautiful places we saw today. The sand is very fine, better than most beaches I've ever been to. You walk through a crevasse and over some rocks to an area that opens us to a beautiful arches.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://farm3.static.flickr.com/2117/2657913993_89740ed9cd.jpg" width="198" height="264" alt="Crevasse to Sand Dune Arch" /&gt; &lt;img src="http://farm4.static.flickr.com/3027/2657912781_fcfa8d3597.jpg" width="352" height="264" alt="Sand Dune Arch " /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;We even had time for some "Glamor Shots" of David...&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://farm4.static.flickr.com/3041/2657914625_2cf03b3f18.jpg" width="212" height="282" alt="David's Glamour Shot" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Last hike of the day, and definitely the most strenuous was to the Delicate Arch. This is the quintessential landmark of Utah, appearing on their license plates and on most of the literature they hand you. It was a 3 mile round trip hike and was up hill most of the way there. We started our hike at about 4:00PM when it was somewhere around 98 degrees. It took a good 1.5 hours to get there, and the landscape between the parking lot and the arch itself wasn't what I would call "beautiful" ... More "barren". But when you round the corner and see the arch, it literally takes your breath away...&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://farm4.static.flickr.com/3027/2658741548_bf5c59ae74.jpg" width="274" height="205" alt="Delicate Arch" /&gt; &lt;img src="http://farm3.static.flickr.com/2218/2658741746_5b13c9d6b0.jpg" width="274" height="205" alt="Delicate Arch Close Up" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img src="http://farm4.static.flickr.com/3038/2658739948_4975dc409a.jpg" width="271" height="361" alt="Delicate Arch" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Pictures do not do any of this justice...&lt;/p&gt;&lt;br /&gt;&lt;p&gt;More tomorrow.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6363924398907149830-7066940571222307269?l=douggault.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://douggault.blogspot.com/feeds/7066940571222307269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6363924398907149830&amp;postID=7066940571222307269' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/7066940571222307269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/7066940571222307269'/><link rel='alternate' type='text/html' href='http://douggault.blogspot.com/2008/07/utah-day-1-arches-national-park.html' title='Utah Day 1 - Arches National Park'/><author><name>Doug Gault</name><uri>http://www.blogger.com/profile/16786329323466667017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-hrI0YmluzZM/Tg3wrGEXgRI/AAAAAAAAARk/o44IgBfNQ4A/s220/Face2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3137/2657914371_2e59ea71ce_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6363924398907149830.post-615175586513027342</id><published>2008-07-11T08:29:00.000-05:00</published><updated>2008-07-11T08:30:14.057-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Photography'/><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><category scheme='http://www.blogger.com/atom/ns#' term='Travel'/><title type='text'>The Great American (White Trash) Adventure - Day 1</title><content type='html'>&lt;p&gt;As I may have already told some of you, we're taking a "different" kind of vacation this summer. Often we do an exotic adventure to far off lands. For instance, last year we went to VietNam for 16 days and toured almost the entire length of the country. In prior years, I've been places like Hong Kong, Antigua, France and Portugal. But not this year. &lt;strong&gt;This year&lt;/strong&gt; we decided to have something of a &lt;a href="http://en.wikipedia.org/wiki/Staycation"&gt;stay-cation&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;So right not I'm writing to you from the dining table of a &lt;a href="http://www.elmonterv.com/vd-13.aspx"&gt;26 ft. RV&lt;/a&gt;! That's Recreational Vehicle for the uninitiated. Yes, we're having a full blown White Trash Holiday!&lt;/p&gt;&lt;br /&gt;&lt;p&gt;It all started at 4:15 this morning when the alarm rang, far too soon for my liking. We had done the right thing and packed the day before so that all we had to do was stumble through the shower, throw some clothes on and find our way to the front door where our friends Greg and Terry were waiting to ferry us to the airport.&lt;img src="http://farm4.static.flickr.com/3054/2657851727_e45e607b1f_m.jpg" width="174" height="232" alt="Greg &amp;amp; Terry @ LV Airport" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;We got to the airport and through security in record time, with no long lines at security. I think this had something to do with the hour of the day, but a lot to do with the fact that American Airlines has started charging you for everything they can think of.&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;  &lt;p&gt;"That'll be $15 for each bag, there will be no meal service but stale cookies and rancid tea will be available for purchase on the plane. You might want to have some cash with you as the flight attendants get a bit touchy if they have to run credit cards... Oh and you'll want to keep in mind that if you use the toilet there will be a surcharge for toilet paper. Enjoy your flight and thank you for chosing American Airlines."&lt;/p&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;Our flight was on time, leaving and 7:10 and arriving &lt;strong&gt;&lt;em&gt;early&lt;/em&gt;&lt;/strong&gt; in Las Vegas, Nevada. A near merical if you know anything about AA. We picked up our bags and made a hasty get away to the Excalibur hotel where we were to meet our shuttle to pick up or RV.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I honestly thought, because of gas prices right now, we might be the only ones on the shuttle, but to my surprise the shuttle was almost full and when we arrived at the rental office, there were literally about a dozen groups waiting to sign in and drive there RV's into the Nevada sunset. It was on the shuttle that I notices something different about everyone else. Somehow we were the odd men out. What was it that was different? Their clothes? No... Their socioeconomic class? No... Their Accents? EUREKA!&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Everyone, and I mean EVERYONE else that was in the line to rent RV's was NOT AMERICAN! German, yes... Spanish, yes... Even Swedish, but no other Americans. We were the only Americans on the Great American (white trash) Adventure!&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I guess the value of the Almighty (or is that all-slight-y) dollar means that not only can families from Europe afford to travel here but the price of Gas here in America is actually still significantly less that what Europeans have been paying for a long time.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;So, here I sit, at the dinging table of the RV while Greg drives, Terry navigates and David sleeps. We're on our way to Moab, UT, due to arrive there approximately 10:30 Mountain Time. From there we plan to hit several very impressive state parks while winding our way back to Las Vegas by July 18th.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;We'll be getting up early, hiking and taking lots of pictures. So stay tuned for a park by park blog fest!&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://farm3.static.flickr.com/2392/2658678132_768fe7a37b.jpg" width="256" height="192" alt="Doug &amp;amp; David" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;PS... WIsh us luck! I've already had to troubleshoot the electrical system in the RV to get the Air Conditioner running again! A must in 100°+ weather!&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6363924398907149830-615175586513027342?l=douggault.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://douggault.blogspot.com/feeds/615175586513027342/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6363924398907149830&amp;postID=615175586513027342' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/615175586513027342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/615175586513027342'/><link rel='alternate' type='text/html' href='http://douggault.blogspot.com/2008/07/great-american-white-trash-adventure.html' title='The Great American (White Trash) Adventure - Day 1'/><author><name>Doug Gault</name><uri>http://www.blogger.com/profile/16786329323466667017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-hrI0YmluzZM/Tg3wrGEXgRI/AAAAAAAAARk/o44IgBfNQ4A/s220/Face2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3054/2657851727_e45e607b1f_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6363924398907149830.post-7956824823888055596</id><published>2008-07-02T09:20:00.001-05:00</published><updated>2008-07-02T09:20:24.203-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Development'/><category scheme='http://www.blogger.com/atom/ns#' term='ApEx'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>A very interesting Open question on Oracle Mix</title><content type='html'>&lt;p&gt;José Carlos Monteiro posed &lt;a href="https://mix.oracle.com/questions/35988-describe-your-current-apex-working-environment-from-development-to-production"&gt;a question&lt;/a&gt; on &lt;a href="https://mix.oracle.com/"&gt;Oracle Mix&lt;/a&gt; that I would really love to see some answers to.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;His question was...&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;  &lt;p&gt;&lt;em&gt;Please, can you describe here in Oracle Mix your current working environment for APEX solutions, from Development stage to Production stage?&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;&lt;em&gt;I'm looking for answers about:&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;ul&gt;&lt;br /&gt;    &lt;li&gt;&lt;em&gt;Version Control&lt;/em&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;    &lt;li&gt;&lt;em&gt;Configuration Management&lt;/em&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;    &lt;li&gt;&lt;em&gt;Continuous Integration &amp;amp; Build&lt;/em&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;    &lt;li&gt;&lt;em&gt;Unit Testing&lt;/em&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;    &lt;li&gt;&lt;em&gt;Functional Testing&lt;/em&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;    &lt;li&gt;&lt;em&gt;Integration Testing&lt;/em&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;    &lt;li&gt;&lt;em&gt;Acceptance Testing&lt;/em&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;    &lt;li&gt;&lt;em&gt;Deployment (Migrations/Releases)&lt;/em&gt;&lt;/li&gt;&lt;br /&gt;  &lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;&lt;em&gt;Are there any "official" Best Practices as to what an APEX Solutions ISV should setup or each one is "flying solo" through "uncharted territories"?&lt;/em&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;/blockquote&gt;I would especially like to hear from the APEX development team themselves. They have a history of turning out such stable product, that an insight into their working methods would be a welcome lesson.&lt;br /&gt;&lt;br /&gt;If you have something to say about this, please go and respond to the question on Oracle Mix.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6363924398907149830-7956824823888055596?l=douggault.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://douggault.blogspot.com/feeds/7956824823888055596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6363924398907149830&amp;postID=7956824823888055596' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/7956824823888055596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/7956824823888055596'/><link rel='alternate' type='text/html' href='http://douggault.blogspot.com/2008/07/very-interesting-open-question-on.html' title='A very interesting Open question on Oracle Mix'/><author><name>Doug Gault</name><uri>http://www.blogger.com/profile/16786329323466667017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-hrI0YmluzZM/Tg3wrGEXgRI/AAAAAAAAARk/o44IgBfNQ4A/s220/Face2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6363924398907149830.post-1780571562314609645</id><published>2008-06-25T12:10:00.001-05:00</published><updated>2008-06-25T12:10:55.647-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Presentations'/><category scheme='http://www.blogger.com/atom/ns#' term='ApEx'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>My Performance Tuning Presentation up for vote on Oracle Mix.
(SHAMELESS PLUG)</title><content type='html'>&lt;p&gt;As has been mentioned by &lt;a href="http://carlback.blogspot.com/"&gt;Carl&lt;/a&gt;, &lt;a href="http://dgielis.blogspot.com/"&gt;Dimitri&lt;/a&gt; and many others, there is a vote going on at &lt;a href="http://mix.oracle.com/"&gt;Oracle Mix&lt;/a&gt; to help decide what presentations and sessions YOU would like to see at &lt;a href="http://www.oracle.com/openworld/2008/registration.html?src=6623141&amp;amp;Act=26"&gt;Oracle Open World&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I've posted a presentation I've written on Performance Tuning ApEx Applications, so if you would like to see that at Open World then, &lt;a href="https://mix.oracle.com/ideas/35638-performance-tuning-apex-applications"&gt;please vote for me!&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6363924398907149830-1780571562314609645?l=douggault.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://douggault.blogspot.com/feeds/1780571562314609645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6363924398907149830&amp;postID=1780571562314609645' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/1780571562314609645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/1780571562314609645'/><link rel='alternate' type='text/html' href='http://douggault.blogspot.com/2008/06/my-performance-tuning-presentation-up.html' title='My Performance Tuning Presentation up for vote on Oracle Mix.&#xA;(SHAMELESS PLUG)'/><author><name>Doug Gault</name><uri>http://www.blogger.com/profile/16786329323466667017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-hrI0YmluzZM/Tg3wrGEXgRI/AAAAAAAAARk/o44IgBfNQ4A/s220/Face2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6363924398907149830.post-6295826223261745400</id><published>2008-06-10T11:18:00.001-05:00</published><updated>2008-06-11T08:41:45.812-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Development'/><category scheme='http://www.blogger.com/atom/ns#' term='ApEx'/><category scheme='http://www.blogger.com/atom/ns#' term='charting'/><title type='text'>Finally upgrading to 3.1.1</title><content type='html'>&lt;p&gt;In the wonderful world of commercial software development, adoption of technology tends to happen in a bit of a "leap-frog" fashion. For instance, our &lt;img src="http://farm4.static.flickr.com/3060/2567373095_b86f2671ec.jpg" width="283" height="212" alt="200806101104.jpg" style="float:right;" /&gt; current release of &lt;a href="http://www.hotsos.com/hawcs"&gt;HAWCS&lt;/a&gt; is coded using 2.2.1 of ApEx, but we're getting ready to add some new features to our upcoming 2.1 release that very specifically take advantage of ApEx 3.1 features.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;In some ways, this can be helpful. For example, we let the world at large test 3.1 and get to jump straight to the benefits of the 3.1.1 patch. However it can be very frustrating too. I've been reading blogs and forum posts for ages that talk about the great things in 3.1 and have not been able to really try them out on our software.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Another example of playing "leap-frog" is the graphing in our product. In the early days of ApEx, back when dinosaurs like SVG graphs ruled the earth, we took a huge step and decided to use &lt;a href="http://www.maani.us/xml_charts/"&gt;MAANI XML-SWF&lt;/a&gt; charts instead. They were way more pleasing to the eye and were cross browser compatible. We spent loads of time building a graphing framework and sewing that into our ApEx application.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Now with 3.1+ of ApEx, Oracle have included the Flash based &lt;a href="http://www.anychart.com/home/"&gt;AnyChart&lt;/a&gt; graphing solution directly in their product. Now we have to make the decision as to whether we abandon our home grown framework and the XML-SWF charts in favor of the built in AnyChart solution. Something that makes this a little bit more interesting is that Oracle ships both V3 &lt;strong&gt;&lt;span style="font-style: italic;"&gt;and&lt;/span&gt;&lt;/strong&gt; V4 of the AnyChart software with ApEx 3.1+&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The built in graphs use V3 while the Interactive reports use V4. If you look at them side by side, there is definitely a difference in their style and attractiveness, V4 being far superior in quality and functionality.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;So what is a Product Manager to do? I now have 4 choices in front of me.&lt;/p&gt;1. Continue to use our home grown XML-SWF chart solution&lt;br /&gt;&lt;br /&gt;2. Switch to the built in V3 graphs and wait for Oracle to upgrade THOSE to V4&lt;br /&gt;&lt;br /&gt;3. Try to use Interactive Reports for everything I want to graph and just have the default view be the graph&lt;br /&gt;&lt;br /&gt;4. Build a new (or alter our current) graphing framework to use the V4 charts&lt;br /&gt;&lt;br /&gt;&lt;p&gt;My XP training tells me to do the least amount of work necessary to get the job done, so that would mean staying with option 1, but I know that at some point I will want to move to the built in graphs, if for no other reason, so that we can stop maintaining our complex graphing framework and spend more time on the CORE code that people are actually paying us for.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Anyway, I'm upgrading our development environment to 3.1.1 as I type this, so I guess I'll have to do a little research to see how hard it will be to migrate the SQL statements that drive our graphs into the built in graphing solution.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I'll let you know how it goes.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6363924398907149830-6295826223261745400?l=douggault.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://douggault.blogspot.com/feeds/6295826223261745400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6363924398907149830&amp;postID=6295826223261745400' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/6295826223261745400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/6295826223261745400'/><link rel='alternate' type='text/html' href='http://douggault.blogspot.com/2008/06/finally-upgrading-to-311.html' title='Finally upgrading to 3.1.1'/><author><name>Doug Gault</name><uri>http://www.blogger.com/profile/16786329323466667017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-hrI0YmluzZM/Tg3wrGEXgRI/AAAAAAAAARk/o44IgBfNQ4A/s220/Face2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3060/2567373095_b86f2671ec_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6363924398907149830.post-992742602466519031</id><published>2008-06-09T15:19:00.001-05:00</published><updated>2008-06-09T15:22:02.525-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PL/SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Blogging'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>Add my name to the blog role.</title><content type='html'>&lt;p&gt;Well, I've finally succumbed to peer pressure. I've been getting hounded by many and varied people to join the infamous blogosphere and splat my thoughts and opinions out on the web for everyone to see.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Now don't get me wrong. I'm a big fan of blogs, and read and/or monitor many blogs every day (see my Blog List to the right). However, I've never thought that I had enough to say to actually add to the wealth of information out there without diluting the quality.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;In the last few months though, things have happened that drove me to research things that would have made interesting blog posts, and that I haven't necessarily seen in other places.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Therefore you can add my name to the list of people adding data to the virtual encyclopedia that is the internet.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;My subject areas will likely focus on:&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://www.oracle.com/technology/products/database/application_express/index.html"&gt;Application Express&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;PL/SQL&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://www.oracle.com/technology/products/database/sql_developer/index.html"&gt;SQL Developer&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Oracle Performance&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Writing Commercial Software&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Software Instrumentation&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://www.apple.com"&gt;MAC&lt;/a&gt; (because recent converts are the evangelists)&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;I look forward to sharing my journey with you.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6363924398907149830-992742602466519031?l=douggault.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://douggault.blogspot.com/feeds/992742602466519031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6363924398907149830&amp;postID=992742602466519031' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/992742602466519031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6363924398907149830/posts/default/992742602466519031'/><link rel='alternate' type='text/html' href='http://douggault.blogspot.com/2008/06/add-my-name-to-blog-role.html' title='Add my name to the blog role.'/><author><name>Doug Gault</name><uri>http://www.blogger.com/profile/16786329323466667017</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/-hrI0YmluzZM/Tg3wrGEXgRI/AAAAAAAAARk/o44IgBfNQ4A/s220/Face2.jpg'/></author><thr:total>2</thr:total></entry></feed>
