Tuesday, April 22, 2008

Posting HTML items in an APEX environment

Ever got a nasty HTTP 404 error message in APEX? Or your url stays at /pls/apex/wwv_flow.accept and it doesn't do anything?

I had one on apexblogs.info, but not all the time, only occasionally. I couldn't understand what was going on.

What I normally do is having a look insight my page in Application Express to see what's going on. If I don't see it directly, I try some debugging techniques to investigate further, but I didn't find anything special in APEX or SQL Developer.
With Screen Sharing on my Mac I can easily show it to others too. Especially with XP programming it's useful, so also this time I showed John Scott, my partner at Apex Evangelists. His reaction is always to look into the Apache logs and most of the time that's where you find more information, but even then...

This is what was in the Apache log when I got a 404 error on apexblogs.info:

Tue Apr 22 09:02:54 2008] [error] [client] [ecid: 1208851374:a.b.c.d:29454:0:667,0] mod_plsql: /pls/apex/wwv_flow.accept HTTP-404 \nwwv_flow.accept: SIGNATURE (parameter names) MISMATCH\nVARIABLES IN FORM NOT IN PROCEDURE: CODE\nNON-DEFAULT VARIABLES IN PROCEDURE NOT IN FORM: \n 11:44 MISMATCH\nVARIABLES IN FORM NOT IN PROCEDURE: CODE

I was pretty sure my variables where correct... John spotted it. Some posts included html items which APEX interpreted not correctly. Well, APEX shouldn't interpret it neither, so the fix was to escape the items. I couldn't escape the whole message (or data I get from the rss feeds) as I want to reproduce the post as accurate as possible.

I hope the problems with apexblogs.info are fixed now. Time to develop further and in the meanwhile, if you find another error, please tell me.

APEX SIG meeting - latest news

As I posted earlier, we had an APEX SIG (Oracle Application Express Special Interest Group) meeting at Collaborate 08.

David Peake, product manager of Application Express, gave some unofficial insights in what's coming... David just wrote an article on his blog about the Oracle Application Express New Features (> 3.1) 

I guess everybody knew the next release of APEX would be 3.1.1 which includes some fixes for the 3.1 release.

Other things we (as APEX community) requested for a while:  improved Tabular Forms and Error handling, 3.1 updated packaged applications, new white papers... They are logical next steps for post 3.1 (maybe not yet 3.1.1, but 3.2 or 4.0)

The biggest announcement however was the migration of Oracle Forms to Application Express. There were already some rumors about it, but it was never really said. I believe this migration tool and that APEX comes with 11g out-of-the-box, will be the big break-through for APEX.

In December, during the APEX vs ADF shootout, a lot of Forms people were in the room. Before (and still) Oracle marketing is pushing these Forms people to the Java stack, but in my opinion, migrating from Forms to APEX is the most logical step. Will migrating to APEX be a fit in 100% of the cases? Probably not, but the experience of the Forms people is more in line with APEX than with Java.

I'm curious to see how the APEX vs ADF shootout will be at ODTUG. I'm expecting to get a lively discussion in New Orleans as  there will be a lot of passionate and knowledgeable people in the room for both technologies! But I feel confident that the other "APEX-names" will back me up! I posted before APEX vs ADF: Round 2, that picture might become reality. When "they" catch me, Carl, John, Patrick etc will get into the ring ;-) It will be great fun!

Monday, April 21, 2008

RIP orablogs, welcome apexblogs.info

There's already somewhat written about the death of the orablogs site. That site was one of my main sites, especially a few years ago. It's a pity it's out of air.

I more often read some posts that their blog disappeared, got hacked or got corrupted. I wanted to backup my blog, so I build something to do that in APEX. Later I extended it to include all blogs covering Oracle Application Express. It's not only easy to see what's new in APEX land, but it also allows me to search through the blogs even when they are off line.

For people not having a blog, the site also allows you to create a blog post. You require to login to the site (for free) to do that, but once logged in you can also do other things like rate the articles.

The website I created is called "Apex Blog Aggregator" or "Apex Blogs" which you find at http://www.apexblogs.info. There are still some things that don't work like I wish, but feel free to comment on this post to make it better...

Thursday, April 17, 2008

Collaborate 08 - Thursday

Today is packing day. I liked the conference, but I look forward to go home and see my family. Especially it will be nice to see my little son again. I see him when we have our video chats, but he doesn't understand it yet. He laughs when he hears and sees me, but then he turns to mammy to ask what's happening.

My first session of the day was "Housewife meets HTMLDB" by Nimmi Vempati.
Just the title alone took my attention. Her story was really nice. She's effectively a housewife who started with APEX. This session was very good for starting people. Nimmi spoke from her experience when she started with APEX. She talked about how APEX works and where to find information.

At the same time there was another APEX session going on. Karen Cannell talked about Debugging APEX applications. As Nimmi's session didn't take the whole time, I sneaked into Karen's session to see the last 20 minutes of her presentation. She touched how to debug APEX applications from within SQL Developer. A side note on that, David Peake wrote a paper in Oracle Magazine which describes how to do it too. Other useful tools I heard here speaking about were Firebug and the Web Developer Tool Bar, which I think every APEX developer should have.

I'll grab some lunch and head off to the airport. The sun is back again, but it's still cold.

Bye, bye Denver.

Collaborate 08 - Snow in Denver

My presentation on Wednesday was the last of the day. When we went back to the hotel, we couldn't believe our eyes! The day before it was over 20°C and now there was snow! At a moment there was a heavy wind and some people said snow was coming, but I wouldn't believe that. But a few hours later, it was true, unbelievable... I told you Denver is a strange place!

Yesterday night there was the Collaborate Party. As you can expect for a party; lots of food, drinks and music.

During the party I met somebody from Belgium. Nothing special? If you know there are more than 8000 people at Collaborate...
We were together at school, but didn't have that much contact. We both started to work for Oracle in 2000, without knowing from each other. So we met again at Oracle. We worked in different departments, so we didn't see each other that much, until we were together on the same project (after 4 years).
At a moment we both quit Oracle and we didn't see each other anymore. After 4 years we meet again in Denver! It was nice to see him again. It shows how small the world is or how strange it can be.

Collaborate 08 - Wednesday

The jet lag is getting worse. I didn't wake up at 5 AM anymore, but I felt so tired in the morning. After a shower it always get better...

After having a quick breakfast I went to the first session of the day "Creating Visual Impact with Custom APEX Templates and Themes" David Scott.
It was interesting to see this presentation as I also gave a Templates presentation at our European Apex Training Days. Same topic, but a totally different presentation, although a lot of content was in one or another form there. David also gave a lot of nice tips to get a good design (or how you can avoid a bad design). Although this session was a less technical one, I really enjoyed his presentation.

I took a break after David's session to do some work. John went to "Add Style to Your APEX Apps Using .css" by Tony Jedlinski and apparently the people liked the session.

After lunch I went to the extended version of Debra's presentation of Monday, "Apex, LDAP and Active Directory". On the APEX site of things I knew most of it. Creating an Authentication Scheme and hook it up with LDAP.

My next session was "APEX Under the Covers" by Karen Cannell.
Karen talked about how she learned APEX and discovered some jewels. It's a good tip to learn from APEX itself. Application Express is written in APEX, so whatever you see in the development tool, you can also do it in your project. Just look how the APEX Development team did it. Karen showed one of her applications and some features she implemented in it. She also discussed what you need to know to become a better APEX developer.

Right after that session it was my turn. This time I talked about "Creating advanced charts in Oracle Application Express". I could have renamed my title to "Understanding Flash charts in Application Express" or "How to get a raise" or ...
I was talking about:
- Why do charting
- How to create and customize a chart in APEX
- Insights into APEX charts
- Charting beyond APEX

I really like demos, so most of my time I spend on "showing" the people. Sometimes I think to go completely into the "no-slide-zone", but then I think it's useful to keep the minimal powerpoint (keynote) to show the structure of the presentation.
I presented in one of the bigger rooms (see picture, taken 10 minutes before my presentation), Ballroom 2A. That room gets recorded, so you might hear me presenting online soon. It's a pity they didn't tape the presentation as I guess it will be hard to follow the presentation when I'm demoing things, but you can't see it. I look forward to hear myself, although it will be scary to hear your own voice. I enjoyed doing this presentation and I got some nice questions out of the public. David Scott challenged me with his question: "Can you dynamically scale your chart based on the data?" I always say, don't believe me on my word, so most of the time I show them the proof. Oh and the answer to his question: Yes you can.

I'll probably do this presentation on our next APEX training days in the Netherlands, which we'll announce soon!

Collaborate 08 - Tuesday

On Tuesday there were less APEX sessions.

The first session of the day was "Application Express Best Practices" by John Scott.
We already gave this presentation at our European APEX Training days, so it was not completely new for me. Nevertheless John changed quite a bit in the presentation. - Edit -
One of Johns best presentations is "Debugging in APEX", but this presentation must come close...

For my next session I went to Steven Feuerstein talk about "Collect Yourself: Optimize PL/SQL Code with Collections".
I always enjoy presentations by Steven, but this time he talked really fast! He tried to fit in 1 hour a 2 hour session ;-) I believe collections are very underutilized in a lot of development projects. Maybe you don't know collections, but have heard of PL/SQL tables, which is the old naming. Click on the link for more information about PL/SQL Collections.

In the afternoon I went to David Scott's "Using External Tables with Application Express".
He talked about his data warehouse environment and how external tables helped him to load and display data. As a starting point he used the packaged application which he changed for his needs.

At 6 PM we had the APEX SIG meeting. At the same moment there were free "shots" (drinks) served in the Exhibition Hall. There was also a little mess-up with the agenda, so there weren't that many people for our meeting. But having said that, we had a lively discussion for over an hour!

The people in the room could ask any (APEX) question to the panel. My panel existed out of:
- Tony Jedlinski, Director of Konoso and Apex Developer of the year 2005
- John Scott, my partner and co-founder of Apex Evangelists and Apex Developer of the year 2006
- Doug Gault, Director of Product Development (R&D) at Hotsos and a very knowledgeble person
- David Peake, Product Manager of Application Express at Oracle

There were a lot of interesting questions and comments, especially David Peake gave some nice insights in the future of APEX. I'll do another post dedicated to it as I think there were some important messages and insights in the future of APEX.

After the meeting a nice guy called Michael stopped us for some questions and to have a picture with him. Apparently he did a bet or a challenge at his company to get a picture taken with John and me and appear on the blog. So here you go Michael, the picture...

After the SIG meeting we went to the Rock Bottom bar/restaurant to have some food, drinks and fun. On the picture from left to right: John Scott, myself, David Peake, Doug Gault and Tony Jedlinski.

I already said, in the States everything is big, but that pie... was huge!

Thanks guys! It was a fun night, but I had to leverage what I did as on Wednesday I have my presentation!

Tuesday, April 15, 2008

Collaborate 08 - Monday

On Sunday evening I went to the SIG reception. It was nice to already meet some of the regular faces, but the real welcome reception was planned for Monday.

Today, Collaborate started at full speed... breakfast in a hall, packed with people, a lot of sessions, people running everywhere, the normal conference stuff ;-)

There are a lot of people, but it's unbelievable that you bump into people you know. In the morning, while I was updating the online APEX schedule to fit on an handheld, we met Bill Ferguson. Bill is also doing a lot of APEX. It was really nice to meet him in real life.

My first session was "Extend your existing Business Solution with Application Express developed functions" by Wolfgang Scherrer.
Wolfgang talked about how he extended his cobol application with Oracle Application Express. The first modules were developed on an Oracle XE database with APEX 2.1. The connection between APEX and the (old) cobol application was first through ODBC and later through Oracle Heterogeneous Services. He finished by saying he's planning to look into APEX 3.1 and take over more modules of the cobol application.

My second session was "The UPs and DOWNS of Loading External Data via APEX" by Tony Jedlinski.
Tony is a well known person in IOUG. He's a member of the IOUG board and a long time member. Tony was also Apex Developer of the Year 2005. Tony talked about different features in APEX all related to data. The standard upload of excel files, pdf support, upload of your own files etc. APEX has a lot of possibilities out of the box.

The third session I followed was something I'm not that familiar with; "Oracle, LDAP and AD (Active Directory) Integrating the Three Together" by Debra Addeo.
Debra talked about the general concepts of LDAP and how Microsoft implemented LDAP in Active Directory. She briefly touched the integration with APEX, but a more detailed presentation about that integration is planned for later this week.

Lunch was served in a big hall. It's quite impressive to see so many people having lunch.

The next session I followed was "Taking APEX Applications to the Next Level" by Todd Arave.
Todd talked about his experience in APEX applications and how you can benefit from using features like Shared Components when you are developing multiple applications. I also believe it's a good idea to have a Master application where others subscribe too (for ex. for LOVs, templates, Authentication schemes etc).

My last APEX session of the day was "APEX Cheat Sheet" by Karen Cannell.
I already know Karen for some time and I always like to listen to her view on things. This presentation is a very good starting point for people when they played with APEX for some days. All the difficulties Karen discovered while she was working with APEX, she wrote down in this presentation. The f?p syntax, when to use which syntax &ITEM., :ITEM, v('ITEM') are only a few examples of all the goodies she talked about.

At 3.30 PM I planned to meet Steven Feuerstein to talk about life and some updates on iloveplsqland.net. We decided to pick one last session of the day before we would work a bit.

So my last session of the day was "All about Autonomous transactions" by Michael Rosenblum.
Michael discussed when to use Autonomous transactions in triggers and procedures (PRAGMA AUTONOMOUS_TRANSACTION). He was very funny at times as he talked what could go wrong or when you would get unexpected behavior. For these kinds of features it's best that you know a bit of the Oracle database.

At 6 PM the Exhibition Hall opened where we got some food. I had a quick chat with David Peake and David Gambino at the APEX booth.

In the evening there was a Welcome Party, but I was too tired to stay long at it. I decided to go into the hot tub and have an early nap. The jet lag is getting stronger...

Monday, April 14, 2008

Geeky: APEX sessions@Collab08 on handheld

On the sig reception at Collaborate 08 yesterday, some people asked about the APEX sessions. We printed a paper which shows the agenda of the sessions, but I told them I also created a little app which holds all that data.

They liked that! Immediately the handhelds were fired up!
John tried the app on his Iphone and the normal app worked nicely (even the interactive reports!). Jason tried it on his HP handheld and it worked but he had to scroll a bit (and the interactive reports didn't work).

As we're a bit geeky, I copied the app and changed the theme to the Mobile one (new in APEX 3.1).

So for the people on the conference:
- The "normal" Application (theme 20): http://apex.oracle.com/pls/otn/f?p=COLLAB08F
- The "mobile" Application (theme 19): http://apex.oracle.com/pls/otn/f?p=COLLAB08H

The mobile app should be faster to load and better to see (less scrolling).

It's 6 AM now, I woke up early as I'm still jet lagged. I should get ready for the first real day at Collab08. Write you tomorrow!

Sunday, April 13, 2008

Denver is a strange place

Today I explored a bit of Denver. It's actually a very nice place. At the moment it's a bit cold, but it wasn't snowing or raining and sometimes the sun came out, so not to bad to walk.

For me, Denver has two faces. You've the nice looking (and big) buildings. But if you look the other side (or in some alleys) you'll see the other face of Denver; some places are rather old.

Another thing that took my attention: the smoke out of the ground! What's happening there? Does Denver have lava streams? Are they making some cookies under the ground? Strange ;-)

There's a nice street called 16th Street. On that street there're a lot of shops, bars and places where you can have some food. Also Denver is getting ready to receive Collaborate 08! In the streets you see the signs for the Oracle conference.

Although you can only register from Sunday onwards I had a quick look where the conference is going to be held. In fact I thought it was in the Hyatt hotel, but it's just across the hotel, in the Convention Center. It's a big place! Very nice... even the bears like it ;-)

The first day in Denver was nice. Although to give you another anecdote why I think Denver is a strange place. I asked the way to the Apple Store, which is located in Cherry Creek Mall. I was told it took about 20 minutes to walk there (from 16th Street)... yeah right! After 45 minutes I decided to go into a shop to ask where that mall was. The answer: "oh that's too far, although if you're in good shape you can get there in 30 minutes or you can take the bus". I was waiting for the bus and when it finally arrived I said I want to go to the shopping center. The bus driver told me he didn't go that way of course! I decided to walk a bit further and after 2hours and 45minutes I finally arrived. The shopping center itself was nice. As my feed were hurting, I took a taxi to go back and after 10 minutes I already arrived in the hotel.

Saturday, April 12, 2008

Post APEX 3.1 - Enhancement requests

There's a thread going on in the APEX Forum to provide your enhancement requests for post APEX 3.1 (APEX 3.2 - 4.0?). So if you feel something should be added, have a look at that thread and if it's not already in, log it.

I had some draft posts in my blog folder about enhancement requests.

I'm asked a lot of questions for printing and the integration with BI Publisher. To make the printing even better, the enhancements requests I logged:

Report Queries enhancement request:

  1. Generic Layout excepts multiple queries instead of just the first one.
  2. Add a Delete Query button.
  3. When you Add a Query, automatically save it in APEX, so when you forget to click Apply Changes they are kept.
  4. Possibility to set the Bind Variable at the level of Session State instead of going into every query to set the bind variable. If you use the same bind variable in multiple queries, now you need to set it in all queries. If you could set the bind variable at Session State, it would only have to be done once.
  5. It looks like the bind variables for rowset 3 and further are not taken into account. When you try to download the xml, while the bind variable for rowset 3 is set, there's no data in the xml.
  6. If you set the bind variable, this works for the query, but it gets not set for Session State, so in your report you won't see the value of the items.
  7. Possibility to enter large queries. At the moment there's a limit of 32k which your query can be (xml tags included).
Enhancement request for Printing a Report Region:
  1. In a report region, you can enable printing.
  2. In that screen it would be nice to download the xml data of that report.
  3. It allows you to create your custom template in BI Publisher (for ex) without doing a workaround of creating a report query of the same select just to download the xml data.

Arrived in Denver

After a long and tiring flight I finally arrived in Denver. The flight from Brussels to London wasn't to bad, but in London I had to wait a long time.

The plane itself wasn't as nice as two weeks ago. I couldn't chose my own video, instead you get channels where movies are played in a loop. I guess I get to used to the "good" life ;-)

As we had a delay of 3 hours it was already 10 o'clock at night in Denver. It looks like the city is still awake, but I'm to tired to go out.

I'm staying in the Hyatt hotel. This is the hotel where Collaborate08 is going to be held in the next days. The Hyatt looks nice, although I didn't have time to explore all yet. But the pictures are promising.

Thursday, April 10, 2008

APEX Sessions at Collaborate

There're 18 APEX sessions going on at Collaborate 08 next week, that's almost double of last year!

I quickly created an Interactive Report in APEX to show all APEX sessions.

Update: the APEX SIG meeting is on Tuesday, April 15 from 6 till 7pm. After that we'll have our APEX Meetup (the "after party").

Wednesday, April 09, 2008

SQL Developer EA3 available

Just installed the new version of SQL Developer without a problem.

My old version was (EA 2 -beta)

The new version is (EA3)

Some first tests where going fine on my Mac.

Tuesday, April 08, 2008

When you're sure your code is correct, but APEX shows something different...

I already blogged once what you can do when you're looking at one of your bugs and you just don't see it.

Today I had it again... a customer was calling me that something was not behaving as expected. So I went into my development system and had a look at it. Worked like a charm on my system. I login to their system and test it and yes they were right: there was a piece visible that shouldn't be there!

The code was identical... Argh!

It happened to me before, but for an odd reason it always takes me a few minutes to remind myself!

Do you know you can Cache your page in APEX? Well, you can (go to your Page Attributes - Cache). I use it to improve performance. The feature is great, until you change something on the page and forgot it's cached ;-)

It would be nice if the APEX engine detected you changed the page in your development environment (sort of page checksum for the whole page) and verifies this. If the checksum is different it should get the new version, but it doesn't.

You can flush your cache manually by using following procedures in the APEX_UTIL/HTMLDB_UTIL package:

procedure purge_regions_by_app (
-- Purges all cached regions for a given application.
p_application in number);

procedure purge_regions_by_name (
-- Purges all cached regions of a given name for a given application
-- and page.
p_application in number,
p_page in number,
p_region_name in varchar2);

procedure purge_regions_by_page (
-- Purges all cached regions for a given application and page.
p_application in number,
p_page in number);

Caching (APEX 3.0) is a really nice feature, but I wouldn't put it on till you end the development...

Monday, April 07, 2008

APEX SIG Meeting & APEX Meetup @ Collaborate 08

Dear APEX-lovers,

The first big Oracle conference of the year is almost starting... In one week time Denver will be red colored! The streets will be Microsoft and SAP free as the people at Collaborate 08 will rule the city!

Just as last year we'll organize another APEX SIG meeting. We thought it would be nice to do another Q&A like at Oracle Open World. Sort of free forum for all the people in the room.
My panel exists out of some very smart and friendly people: David Peake, Product Manager of Application Express at Oracle, Tony Jedlinski, Apex Developer of the year 2005 and last but not least, John Scott, Apex Developer of the year 2006.

The APEX SIG meeting is on Tuesday, April 15 from 6 – 7 p.m. in Korbel Ballroom 4D.

After the APEX SIG Meeting we're planning to do another APEX Meetup. That would be the "after party" where we can talk more relaxed with some nice drinks! All APEX (aka Marvel) Heroes, that's our (APEX developers) new nick name, will make the local bar criminal free! I'm not sure that thing has been launched in Las Vegas, but I read it on a blog of somebody over there ;-)

So feel free to pop-in! Let my panel sweat and join us afterwards to celebrate our new Heroes name.

Hope to see you there,