Tuesday, April 03, 2007

DGT updated with QF

The UEFA Champions League starts again tonight!
There're some great matches...

I added the schedule of the Quarter final in DG Tournament.

So, you can start betting now!

Good luck to everyone and may the best win ;-)

Monday, April 02, 2007

We shall not use APEX!?

During the weekend John Scott and I were discussing an article on Chris Muir's blog. John commented on the article and posted his opinion on his blog (Carl Backstrom and Scott Spendolini posted also a very nice comment). I also added a comment to Chris' post and promised to go into more detail on my blog soon.

Chris' article "A career path for Oracle developers - consider JDeveloper!" is about the choice for JDeveloper as *the* tool for next generation Oracle development.

Do I share Chris' opinion? No. I believe in all Oracle tools but IF I had to go to a deserted island with only one Oracle tool, I would choose the Oracle Database (as I get APEX free of charge with it ;-))!

If one tool was best for everything, Oracle wouldn't have more tools... I strongly believe that APEX can do most of the development and is a true solution for most of the business problems of today. I also believe JDeveloper is a great tool and ADF has its place in this world too.
In my APEX projects I use also other tools like SQL Developer and JDeveloper! I really like the ERD, UML and PL/SQL-tools in JDeveloper.
Some years ago I made a production application in BC4J with JDeveloper. I liked this "new technology", but when I look back, BC4J is already "old" and today you should probably go for ADF or JSF (if you would like to stay in the JAVA arena). Just to say that the JAVA arena is changing quickly, as for APEX it's proven technology (SQL, PL/SQL, JavaScript, CSS, ...)

The comparison.

Last week I read this article (in Dutch). That company did an internal competition: 4 teams, each team uses his favourite technology. They got one day and a half to develop a business case with as much functionalities as possible (in the time frame of that 1,5 day).

The goal of the game

  • find the most suited tool to do RAD (Rapid Application Development).
The technology choices of the teams
  • Oracle Designer, Oracle JDeveloper (with ADF), Adobe Flex Builder and APEX.
Most important area's of the game
  • user friendliness and security.
How could a team score points
  • 80 business rules to implement from webservices, lovs, printing of pdf documents, authentication, calculation of positions etc.
The Game
  • Oracle Designer / Developer Suite
    They got the back-end nicely up and running, but at the front-end there was still some work to do
  • APEX
    The jury was impressed by their application, as they asked how much time they still need to make it a full application ;-) They got almost all back-end done and I can imagine that the front-end was nice and slick.
  • JDeveloper and ADF
    They needed a lot of time to make their data controls (webservices, java-beans, pl/sql functions etc.). They would use these data controls as components in their application (by drag-drop). They also needed a lot of time to make all pages individual, as also multi-record and master-detail screens. Their architecture was nice, but 1,5 day was a bit too short for these guys, I think ;-)
  • Flexbuilder
    This is a new tool of Adobe (I also did some testing with it, as you find in some other posts on this blog). It's a nice tool, but these guys made such a complex architecture that they couldn't get the prototype finished. So they retreated out of competition, but showed what it could do.
The Results
  • The jury was unanimous on this: APEX won the match, but the jury added that changing the templates to a custom lay-out would take some time, which would compensate some of the time they were ahead of the others.

So, shall we *not* use APEX? Hell no!!

The people reading this blog more often know I'm a big fan of Oracle and APEX.
That won't change that fast ;-)

Tuesday, March 27, 2007

Somebody to get you introduced

A friend sent me this link. Have a look at that video, it's unbelievable!!

I really would like to hire him to begin our Apex Evangelists training days!
When somebody like that introduces us... oh boy, I'm sure you won't forget our trainings ;-)

APEX getting famous

Last week, a new version of APEX came out.
A lot of us blogged about it (my blog-roll intercepted these):

Before, "the world" didn't care much about it, but today I get the impression that APEX is getting serious business! Following articles proof this statement:
Probably a lot more articles will follow!

Thursday, March 22, 2007

Adobe Flex and Oracle

A few weeks ago I tried to run the sample Adobe Flex application on an Oracle Application Server (Fusion Middleware) and an Oracle Database.

It's not that difficult to get it running. I got a hint of Marc M. which parameters I should use in the startup of my oc4j and from that moment it worked really nice.

You should start the oc4j as:

"%JAVA_HOME%\bin\java" %JVMARGS% -Xmx1024m -Doc4j.jmx.security.proxy.off=true -jar "%OC4J_JAR%" -userThreads %CMDARGS%

What did I use and why? (my configuration):

  1. Oracle Database 10gR2 - data
  2. Oracle Application Server 10g (stand-alone - 10.1.3.1) - hosting app and monitoring
  3. Adobe Flex Data Services - binding with data
  4. Adobe Flex Builder (with sample apps) - building Flex app
  5. JDeveloper (10.1.3.1) - deploying app

A screenshot to show you the proof ;-)

Friday, March 16, 2007

APEX 2.2.1 upgraded to 3.0 with success

As you can see below, the upgrade to APEX 3.0 on my local instance was successful.
It took me about 56 minutes to have the upgrade running.

(During the upgrade I received an ORA-00257 = problem with archiver - if you've the same error, look at Note:278308.1 in Metalink to solve it)

The first tests were successful... To get pdf printing working, a bit more is necessary, as BI Publisher or an XSL-FO server is necessary. You find the integration steps here.


The new version of APEX 3 on my local machine, exact version Application Express 3.0.0.00.20

The screen after installing APEX 3.0


Thanks APEX-Dev team! This new version is great!

APEX 3.0 out! Get it now!

I'm downloading APEX 3.0 at this very moment! You find the download here, it's about 75MB.

Also, the APEX OTN page is restyled!

Even before I finished my blog post, the download is finished ;-)
Now it's time to get it installed... I also saw that there's something specified about web 2.0.
In the next hours I'll post about the installation/upgrade to APEX 3.0 ;-)

Wednesday, March 14, 2007

Apex Evangelists goes live!

Today John Scott and myself are launching Apex Evangelists, we formed the idea for an Application Express services company during one of our many discussions at Oracle Openworld and over the last few months have honed our idea of what we are going to provide.


The idea behind Apex Evangelists is that we will use our knowledge and experience of Application Express to provide a range of services, some of which are listed here -

  • Application & Website Development (plus of course hosting)
  • Training & Coaching (onsite and in our European Training Days)
  • Application and Database Migrations
  • Support Services

Our primary goal is to be able to provide these services to the European market and to generally evangelise (hence the name!) about how beneficial using APEX can be to European companies. We also decided that in order to take on bigger projects than just two of us could handle and to also cover more of the European market we would also need to involve other great enthusiastic APEX developers, so we're pleased to announce that Dietmar Aust, Patrick Wolf, Denes Kubicek will be helping us in our quest.

These are very exciting times and I'm sure that there are busy times ahead!

APEX 3.0 public (online)

Well, as expected... APEX 3.0 is already on the public APEX site.
I'm sure the downloadable version will be available soon!


I suppose I don't need to say that APEX 3.0 is so, soooo great ;-)

Saturday, March 10, 2007

The history (I know) of APEX

During one of my chats with John Scott, the question popped up how long we were already playing with APEX. I began searching in my archives...

A short overview of how I got in touch with APEX (aka HTMLDB aka Project Marvel).

In 2000 (I was working at Oracle) I saw a demo of an application made in WEB DB. I didn't play that much with WEB DB, but some of my (ex-)Oracle colleagues really loved it. Nevertheless in some projects around that time I used mod_plsql...

A few years later I saw a powerpoint presentation of "Project Marvel". From the beginning I thought, "waaaw" this looks very good and promissing. I think it was around February 2003 I got more information about this project. I even found a screenshot in my archives from that time.


In September 2003 I first heard the name HTML DB. That was the first time I really played with it, I think it was v1.3. I still have a zip of version 1.4 ;-)
I think my first message about APEX (HTMLDB) in the OTN forum was on Oct 1, 2003 2:06 AM. Apparently at that time I was working with v1.4: http://forums.oracle.com/forums/thread.jspa?messageID=554340
Raj, at that time one of the HTMLDB developers, answered me!


The rest you know, as it was public: HTML DB v1.5 -> v1.6 -> v2 -> APEX.
I also found a pdf describing the history.

To show you the difference, a screenshot of the current APEX version
(but that you know, I suppose)

Friday, March 09, 2007

Document management in ApEx

A lot of people still think that ApEx is just a replacement of Excel or Access.
But come on! That's changed already for a long time. ApEx is a real development framework! The community already released a lot of applications and sample code. A lot of the people in the ApEx community are sharing their knowledge and experience...

Still not convinced? Have a look at the below application... It's a free application that you can download on the OTN site. The roll-over menu when you click on readme.txt is very nice, as is all the rest in there. This is just one example of what ApEx can do.

You can login as dg_docm/dg_docm (username/password)

Tuesday, March 06, 2007

Getting to know yourself

I'm currently looking into myself. I really want to know who I am and where I stand for.
The more and better you know yourself, the more and better you can be there for others.
Thanks to somebody I really appreciate I got in touch with Enneagrams.
This is a really nice theory about a person... It's nothing IT or Oracle related, but I thought to blog about it, as this can maybe help some others to find themselves.

An Enneagram looks like this:


Not sure if this is "well-known" in the world of IT and Consulting.

Saturday, March 03, 2007

SQL injection? No, Cursor injection

Just came across a paper called "Cursor Injection - A New Method for Exploiting PL/SQL Injection and Potential Defences" of David Litchfield.

It shows once more that writing proper code is important, as is getting your database to the right patch level.

--
Off topic: Carl Backstrom blogged about a music clip called "Code Monkey" here. You should see it, it's fantastic!
--

Friday, March 02, 2007

Doing a whitepaper? Begin early enough!

This will probably be my last night working on my whitepaper for Collaborate 07. I look forward to get a long night in the weekends!

This night I was not alone! My friend John Scott was also working on his presentation ;-) When you know you're not alone doing these things that need to be done, it's a bit easier. We also triggered each other once and a while. Thanks John to keep me alive!

It's my first whitepaper for a big event, so I thought I should blog about my experience doing that and also to warn the others not to make the same mistake.

I submitted my extract, that's easy... I had also my presentation in my "head" (I thought), so writing this whitepaper shouldn't take that long. That was a *big* mistake, or should I say a miscalculation. ;-)

I started with the concept of what I wanted to tell: ApEx Shared Components, what can they do? and why and how I used them in DG Tournament. A manual is great, but it doesn't show you that specific thing working in a real environment, so I wanted to cover that area.
Of course I love some screenshots, as an image says more then thousand words, so I made a lot of them and included it in the whitepaper.

When I was writing things down, I thought: "Will this be interesting enough for the public?", "Does all this get fit in an one hour presentation?" etc.

So, I asked John Scott and Doug Gault to have a look at the very first draft of the paper. They sent me some comments and tips how to improve (thanks guys).
That's something I learned from Tom Kyte, he told once that it's important to have good reviewers.
I realize now I should have asked more people to read my whitepaper or let them reread the current version. Well, next time I'll try to do better and think about what happened this week.

Finally my Tips & Hints when you want to do your first whitepaper:
  1. Prepare yourself
  2. Know what you want to write about
  3. Know what you want to tell to the audience
  4. Start early
  5. Let good people review your paper
  6. Adapt accordingly
  7. If time becomes an issue: get enough coffee ;-)

This is my advice so far, I wish I had followed all of that myself!
If you're having some other tips for me, don't hesitate to put a comment.

Thursday, March 01, 2007

Session State Protection and URL Tampering in ApEx

For the third night in a row I'm working on my whitepaper "APEX by Example: Shared Components" for the IOUG Collaborate 07 conference. I need to upload it tomorrow, so no time to loose! Nevertheless I wanted to blog about URL Tampering, which I was investigating when I came to "Session State Protection" in the Shared Components area of ApEx.

For the moment I described it like this in my whitepaper (comments to make it better are welcome):

Session State Protection

Enabling Session State Protection can prevent hackers from tampering with the URLs within your application. URL tampering can adversely affect program logic, session state contents, and information privacy.

In DG Tournament


Why?

For security reasons! URL Tampering - Web based applications, including those developed in Oracle Application Express often pass values from one page to another through a URL. A clever enough user may observe this and override a value by typing his own value in the location field of his browser. For example in DG Tournament, when logged in as Admin, I can see a list of all users. When I click on that user for his details I see the same screen as a normal user would see in the “Your Profile” page. The URL that’s doing that call looks like this:

f?p=103:10:240848379705417::NO::P10_USER_ID:70

My application is 103, on page 10 with session id 240848379705417 (my session has a unique nr) you see at the end: P10_USER_ID:70 which means that my record (Dimitri Gielis) is user_id 70. By putting this in the url, the session knows about this value.
When “Session State Protection” is disabled you can easily see another user by changing the url to

f?p=103:10:240848379705417::NO::P10_USER_ID:71

This will give me the record (user) with user_id 71, without passing through the application I can obtain other information.
When “Session State Protection” is enabled you get a message like on the above screenshot, which tells you that the session state protection is violated.

How?

  1. At the moment the Session State Protection is disabled.


  2. To enable, disable, or configure Session State Protection using a wizard, click Set Protection.


  3. Click the Enable Session State Protection button


  4. We can see that the Session State Protection is now Enabled


  5. By clicking on the Page button you get following screen


  6. Select the page you want to protect, in DG Tournament for ex. User Detail and change the Page Access Protection.You can also go onto Item level to set the protections.


  7. That will add to the end of the url a checksum. An example of the previous url, but protected:
    f?p=103:10:240848379705417::NO::P10_USER_ID:70&cs=3831E8EB498FF406064BE08337E72A9DF When you try to change the user_id from 70 to 71 you get a message that the session state protection is violated.

Wednesday, February 28, 2007

Most famous Belgian penguin springs back to life

After one year, Wim Coekaerts blogged again! He explains very well what he did in the last months and what the Oracle Linux program is all about.

The last weeks I also got a lot of questions about "Oracle linux" and if it was a distro or something else? In fact it's a support program from Oracle, so not a real "distro". The source is the same as Redhat Enterprise Linux (RHEL), but the trademarks are removed and replaced by Oracle ones. The complete package is free, you only pay for support!

This paragraph, copied from Wim's post, says it all:
We HAD to re-brand the RHEL setup because you just can't get free for download from anywhere. So we take out trademarks, copyrights and graphics and we replace it with, well, other names and definitely a cuter logo ! Between Red Hat, Novell and Oracle, we 're the only one with a penguin as a mascot ! duh. And that becomes our "distribution". Do we want to fork ? No, not at all, not one bit, do we do this for fun ? No. Do we do this to create more work ? No. We do it because that's the only way we can build a CD set based on an open source product from an open source company that we can make available for download for free.

Oracle Enterprise Linux 4 can be downloaded from http://edelivery.oracle.com/linux

The Unbreakable Linux Network can be found here. Did you know that this site is written in Apex? ;-) You see; Apex is all over the place!

Tuesday, February 27, 2007

The Apex name is confusing me

I'm preparing my white paper for Collaborate 07 about ApEx Shared Components, more in particular, today, I was searching for more information about the "Build Option" as I didn't use it that often in DG Tournament.

While I was googling "build option apex" I came on some unexpected sites. Of course when you put oracle with the other words, it should filter better.

I came across these links on the first page of my google search:
- an Apex bootloader
- an Apex developer framework - Salesforce.com’s Apex on SaaS Blogs
- and Apex SQL Tools

They have nothing to do with the Oracle Apex... or do they?
It was really confusing as SQL and development framework are really Oracle Apex related.

I knew Apex was a more known "name", due to the Google Fight I did some time ago. APC (Andrew Clarke) also made the comment on my blog, but today it was the first time it popped-up so hard to me... so I must agree with his statement, that HTMLDB was a better name to find immediately the right results!

I'm not the only one crazy ;-)

Just saw the below picture on Tom Kyte's Blog and I couldn't stop myself not to blog about it.
I just wonder why they didn't write MSFT (or M$)?!


Apparently SAP is a bigger competitor now? or it was somebody from the "Suites"-group and not from Technology. When I was still working for Oracle, you had the "Apps"-persons and the "Technology"-persons, don't know if it's still like that.
But, I hope they know that SAP is also one of the biggest partners of Oracle. ;-)

Saturday, February 17, 2007

Next round of European Champions League + New Feature

For the people playing in DG Tournament, don't forget to bet on the next round of the Champions League. On Tuesday it's again football time!


For the APEX people, reading this... I added a new feature in DG Tournament. Thanks to Patrick Wolf's Framework, I made the "Your message" textarea resizeable.

To see it working:
  • Login as guest/apexisit
  • Go to Shoutbox
  • It's now possible to enlarge (vertically) the textarea of "Your message" by dragging the right corner downwards

Patrick also made a new version available of the APEX Builder plugin.
This plugin enhances the Apex Builder development environment.
In the beginning it wasn't easy for me to get it configured, but now it works great!
Basically you need to download the Greasemonkey add-on for Firefox and do File - Open File and load Patrick's file. The latest download of the Apex Builder plugin has a terrific How To!
To see the plugin in action, here's a nice video.

Thursday, February 15, 2007

Creating an APEX-team

As I already blogged at the end of last year, my goal for 2007 is to promote Oracle and ApEx even more. But honestly, I'm not sure that's possible, as during the day I only speak about Oracle and at night I dream of it!

I'm still searching for the right balance between my two passions... Yes, my family is one of them ;-)

In the past, I promoted ApEx through this blog, by making applications with it or by talking to customers about it.
In 2007 I want to go a step further! In the coming weeks you'll read more about it, but I can already announce that I'm currently building an ApEx-team (first in Belgium). I dream of guiding the people in the wonderful world of Oracle and ApEx and I hope to find a lot of ApEx-projects for this team. If you're interested to join this team, you may sent me your cv by mail.

Tuesday, February 13, 2007

APEX on Windows Vista

I just read the statement of direction for the Oracle Database on Windows Vista.

As Application Express runs completely in the database, this implies that ApEx will get fully supported at the same time.

Planned Support

Below are the current plans for Windows Vista support for Oracle Database software:

32 Bit Windows Vista (Vista Business, Ultimate and Enterprise Editions)

Oracle Software

Planned

32-bit Oracle Database 10g Release 2
(with latest patch set and patches available at the time of release)

1st Quarter CY 2007

32-bit Oracle Database 11g

CY 2007


64 Bit Windows Vista for x64-based systems (Vista Business, Ultimate and Enterprise Editions)

Oracle Software

Planned

64-bit Oracle Database 10g Release 2
(with latest patch set and patches available at the time of release)

2nd Half CY 2007

64-bit Oracle Database 11g

CY 2007

Thursday, February 08, 2007

APEX in Las Vegas (on Collaborate 07) - update

Below an update of the Application Express sessions at Collaborate 07.
Apparently I forgot some sessions, so here's another try, in a more visible way...


Sunday - April 15
9:00 AM-5:00 PM
U10
Getting Started with Oracle Application Express (APEX - Formerly HTMLDB)Corfman, Robert
Monday - April 16
9:15 AM-11:30 AM
404
Implement a Smart Reporting System Using APEXSingh, Ashok
1:00 PM-2:00 PM
415
Lessons from the ApEx TrenchesHoltzman, Bill
Tuesday - April 17
9:45 AM-10:45 AM
Lag C
Integrate Oracle Application Express with the Oracle E-Business Suite Bryant, Joshua
12:15 PM-12:45 PM
Q433
Search, Protect or Disclose with ApEx, JavaScript, LDAP etc Persand, Indira
1:45 PM-2:45 PM
117
APEX: Delivering Pages in Three Seconds or Less (Because Users Don't Like Waiting!)Scott, John
Wednesday - April 18
9:45 AM-10:45 AM
447
ApEx Cheat SheetCannell, Karen
12:15 PM-12:45 PM
Q454
ApEx Cheat Sheet - Quick TipCannell, Karen
3:15 PM-4:15 PM
461
Mastering Application Express e-mailJedlinski, Tony
Thursday - April 19
8:30 AM-9:30 AM
467
APEX by Example - Shared ComponentsGielis, Dimitri

Tuesday, February 06, 2007

APEX in Las Vegas (on Collaborate 07)

I had another look at the Collaborate 07 site.
A lot of new info is available about this Oracle training and education event.

The APEX Collab'07 presentations I found:

  • Session Number: Q101
    Presentation Title: Advanced Oracle Application Express Tips and Techniques
    Speaker: Bradley Brown, TUSC
  • Session Number: 117
    Presentation Title: APEX - Delivering pages in 3 seconds or less (because users don't like waiting!)
    Speaker: John Scott, Shellprompt Hosting
  • Session Number: 415
    Presentation Title: Lessons from the ApEx trenches
    Speaker: Bill Holtzman, National Air Traffic Controllers Association
  • Session Number: 447
    Presentation Title: ApEx Cheat Sheet
    Speaker: Karen Cannell, Integra Technology Consulting
  • Session Number: 461
    Presentation Title: Mastering Application Express E-mail
    Speaker: Tony Jedlinski, Roman Inc.

And ...

  • Session Number: 467
    Presentation Title: APEX by Example - Shared Components
    Speaker: Dimitri Gielis, Ordina

We'll also do another APEX SIG round table (like we did on OOW)

Date: Tuesday, April 17th from 3:30 pm - 4:30 pm
Title: APEX SIG Meeting/Round table
Abstract: Announcements and plans for the APEX SIG followed by an expert round table discussion of APEX issues, questions, and ideas
Presenters: Steve Howard with APEX experts Dimitri Gielis, Tony Jedlinski, John Scott

As already said before we're also organizing another APEX Meet up. You can register here.

Thursday, February 01, 2007

APEX 3.0 first screenshots

Here're some screenshots after my first run through APEX 3.0.
(I'ld also like to thank John to help me with my first Apex 3.0 experience)


The first page is still the same, but when you go into an Application, you've now real icons.
The UI is more user friendly...


The drag and drop feature isn't easy to find... Go to the items sections and you'll see a little square icon. Click on that and you should see this new feature!

Pretty cool, isn't it?

The PDF printing part is nice too... although there is a little in the "Print Attributes" tab. You can only click on it by clicking on the Report link in the Page (you'll see what I mean if you try it). This is how PDF printing looks like:



That's it for now... more screenshots later.

APEX 3.0 sees the light!

You can now register for the early access release of Application Express 3.0. I already registered, but I'm waiting for my password ;-) In the next hours I'll post some screenshots about this new version.

What's new in APEX 3.0 (based on
this text)

  • PDF Printing
  • Access Migration
  • Flash Charts
  • Drag and Drop Item Layout
  • Improved Web Services
  • New Item Types:
    - Shuttle
    - HTML Editor Minimal - available under Textarea
    - HTML Editor Standard - available under Textarea
    - Popup Color Picker - available under Popup List of Values
    - Date Picker (use format mask)
  • Calendar Enhancement
  • Supporting Objects Enhancement
  • Page and Region Caching
  • Item Finder Enhancements
  • Application and Schema Comparison
  • Friendly URL Syntax to Facilitate Bookmarks
  • New Password and Account Controls
  • Improved Workspace Management
Ooh boy, if I see all these nice features, I can't wait to get APEX 3.0 up and running!

Also: if you review APEX 3.0 don't forget to give some feedback in the feedback application.

Thursday, January 25, 2007

What APEX? How APEX? Why APEX? The best APEX book is coming...

I often get questions about where to find information about APEX.

Till today we can say:
- see the Oracle Application Express homepage on OTN
- read the APEX manual and Help
- try APEX yourself, there's an online development environment available on http://apex.oracle.com
- read some APEX pdf's (for ex. the Two Day APEX Dev. Guide)
- read some blogs (for ex. this one ;-) see also my APEX links section)
- ...

But now we can add to this;
- read "the very best APEX book" (written by John Scott and Scott Spendolini)

I had the privilege to already read some parts ;-)
and I must say, this book will conquer a lot of APEX fans.
I'm not sure I'm allowed to give a lot of details, but this is what John said on his Blog:
I’ve approached it from the angle of how to solve ‘real world problems’ with APEX, e.g. ‘I want to do XYZ, how can I do it?”. The book definitely assumes you
have a reasonable working knowledge of APEX already, so I don’t have to cover things that are already covered in the Oracle supplied documentation.
I can agree with John's explanation .
And for the inpatients persons... you can already pre-order it on Amazon.

Monday, January 22, 2007

Presenting at Collaborate07 and APEX meetup

Last week I received a confirmation my paper for Collaborate07 was accepted by the IOUG Conference Committee.

I really look forward to do my first presentation in the States... and can there be a better place then Las Vegas? Glitter and glamor! I'll try to adapt my presentation to the theme of the place ;-)

If you want to see me presenting, you should get up early in the morning on the last day:
Session Code: 467
Abstract Title: APEX by Example - Shared Components
Date: 19-Apr-2007 at 8:30 AM - 9:30 AM

We're also organising another APEX meetup. This time it's called: "Collaborate07 APEX meetup", or what did you expect? ;-)

If you like to meet some members of the APEX Development team, the APEX SIG or some other APEX lovers, feel free to subscribe here, like that we've an idea who will join. A few days before the start of Collaborate07 we'll fix the date and the place.
(PS: The Registration Application is created in APEX and uses XML Charts!)

Sunday, January 14, 2007

HTMLDB or APEX? The winner is ...

I was playing a bit with googlefight. It's so amusing to see that my wife could beat Pamela Anderson ;-)

I also did the test on popularity between HTMLDB and APEX. Oracle made the good decision to change the name (Application Express is even more popular)


And how about me against Larry Ellison?

Indeed... I've still some work to do.

Saturday, January 13, 2007

Can Larry do this?

A friend of me showed me a nice little video... Just have a look here.
Maybe you saw it already, as it's on YouTube from June 2006, but I find it really amazing!
I'm considering to open my next presentation like that too ;-)

Did you notice it? A little scream... I suppose Steve felt Oracle at a moment ;-)

Tuesday, January 09, 2007

Oracle and APEX to the top!

On June 9, 2007 I'll try to climb (with a bike) the "Mont Ventoux" in France.
I don't have any experience with climbing or biking, but I find it a challenge and decided to give it a try.

My goal is to get a picture on the top with an Oracle/APEX flag!

If you want to sponsor me, you're free to drop me a suggestion. ;-)

Of course I'll blog about my ride, so you definitely need to check this blog in June.

Monday, January 08, 2007

DGT Explained (1 bis) - Thumbnail Expander

This post shows how I integrated Highslide JS 2.2.7 in DG Tournament.

Background
Highslide, formerly Vevstein Thumbnail Expander, is a javascript written by Vikjavev that allows you to streamline the use of thumbnail images on web pages.

OS-level
1. download highslide and unzip the file
2. copy the higslide directory to your /i/ or www directory

APEX-level
1. Go to "Shared Components" and create a stylesheet

/* highslide */
.highslide {
cursor: url(highslide/graphics/zoomin.cur), pointer;
outline: none;
}
.highslide img {
border: 2px solid gray;
}
.highslide:hover img {
border: 2px solid white;
}
.highslide-image {
cursor: poiner; /* opera */
cursor: url(highslide/graphics/zoomout.cur), pointer;
border: 2px solid white;
}
.highslide-image-blur {
cursor: pointer;
cursor: hand;
}
.highslide-caption {
display: none;
border: 2px solid white;
border-top: none;
font-family: Verdana, Helvetica;
font-size: 10pt;
padding: 5px;
background-color: white;
}
.highslide-display-block {
display: block;
}
.highslide-display-none {
display: none;
}
.highslide-loading {
display: block;
color: white;
font-style: 'MS Sans Serif';
font-size: 9px;
font-weight: bold;
text-transform: uppercase;
text-decoration: none;
padding: 3px;
opacity: 0.60; /* w3c */
filter: alpha(opacity=60); /* ie */
border-top: 1px solid white;
border-bottom: 1px solid white;
background-color: black;
padding-left: 22px;
background-image: url(highslide/graphics/loader.gif);
background-repeat: no-repeat;
background-position: 3px 1px;
}
a.highslide-credits,
a.highslide-credits i {
padding: 2px;
color: silver;
text-decoration: none;
font-size: 10px;
}
a.highslide-credits:hover,
a.highslide-credits:hover i {
color: white;
background-color: gray;
}

2) In the template from the application, reference the created stylesheet and javascripts (Shared Components - Templates - Page)


3) Create a page and a region report based on a Select. In the Image_id column add this as HTML Expression (Edit Column)



4) create an HTML Region on the same page or on page 0 (to have it on every page)


5) create the procedures to show the thumbnail and the real image
create or replace PROCEDURE tdg_pr_show_image (p_image_id IN NUMBER)
AS
l_mime VARCHAR2 (255);
l_length NUMBER;
l_file_name VARCHAR2 (2000);
lob_loc BLOB;
BEGIN
SELECT mime_type, image_blob, image_name, DBMS_LOB.getlength (image_blob)
INTO l_mime, lob_loc, l_file_name, l_length
FROM tdg_image
WHERE image_id = p_image_id;

-- Set up HTTP header
-- Use an NVL around the mime type and if it is a null, set it to
-- application/octect - which may launch a download window from windows
OWA_UTIL.mime_header (NVL (l_mime, 'application/octet'), FALSE);
-- Set the size so the browser knows how much to download
HTP.p ('Content-length: ' l_length);
HTP.p ('Expires: ' TO_CHAR (SYSDATE + 50, 'Day, DD Month, YYYY HH24:MI:SS'));
-- The filename will be used by the browser if the users does a "Save as"
HTP.p ('Content-Disposition: attachment; filename="' l_file_name '"');
-- Close the headers
OWA_UTIL.http_header_close;
-- Download the BLOB
wpg_docload.download_file (lob_loc);
END tdg_pr_show_image;

create or replace PROCEDURE tdg_pr_show_thumbnail (p_image_id IN NUMBER)
AS
l_mime VARCHAR2 (255);
l_length NUMBER;
l_file_name VARCHAR2 (2000);
lob_loc BLOB;
BEGIN
SELECT mime_type, thumbnail_blob, image_name, DBMS_LOB.getlength (thumbnail_blob)
INTO l_mime, lob_loc, l_file_name, l_length
FROM tdg_image
WHERE image_id = p_image_id;

-- Set up HTTP header
-- Use an NVL around the mime type and if it is a null, set it to
-- application/octect - which may launch a download window from windows
OWA_UTIL.mime_header (NVL (l_mime, 'application/octet'), FALSE);
-- Set the size so the browser knows how much to download
HTP.p ('Content-length: ' l_length);
HTP.p ('Expires: ' TO_CHAR (SYSDATE + 50, 'Day, DD Month, YYYY HH24:MI:SS'));
-- The filename will be used by the browser if the users does a "Save as"
HTP.p ('Content-Disposition: attachment; filename="' l_file_name '"');
-- Close the headers
OWA_UTIL.http_header_close;
-- Download the BLOB
wpg_docload.download_file (lob_loc);
END tdg_pr_show_thumbnail;

When you click on the image (thumbnail) of the user on the Shoutbox in DG Tournament, the image will enlarge, click once more to make it back to normal (thumbnail).

Tuesday, January 02, 2007

Stats of this Blog for 2006

I started collecting stats in April last year. June was "the best" month due to the success of my APEX World Cup application (and the post on Tom Kyte's blog).

The statistics of this blog for the year 2006

Saturday, December 30, 2006

Happy New Year & the 100th post!

A happy New Year to you all! I hope 2007 will bring all the best for you... and many thanks for visiting my blog the last year.

This post is also very special, as it's the 100th post on my blog! In one year one hundred posts.

Friday, December 29, 2006

My new toy - HTC P3300

Yesterday I got my new smart mobility, the HTC P3300. My first experiences with this phone/pda are great. I love it. The sound of the phone is very good and although the processor is slow, windows mobile 5 is working very fast. This pda is unique due to the "ipod-kind" of navigation with the rotating weel (HTC RollR). Some people hate it, but so far, for me it's working nicely. Windows Mobile 5 is far from being perfect as Scott Spendolini posted so nicely, but you can get the job done although it won't be in the most user-friendly way.

I still have my IPAQ HP 4700hx, which I used happily for two years. The processor of the HP is far more powerful, but it doesn't have an integrated phone or gps. I'm not sure I will still use it in the future.

I doubted between taking a phone with (for ex. HTC TyTN) or without keyboard. I decided to take one without as I'll primarily use the pda as phone, gps and to search through my agenda and contacts. That the HTC P3300 wasn't as heavy and big as a phone with keyboard was an extra. Of course today I saw a post about the HTC phones for 2007 in this road map. Maybe the follow-up of the of the new HTC TyTN can be interesting too... as usual in IT, the moment you buy something, the next day a new and better one sees the light ;-)

Nevertheless I wanted to blog about this nice pda as I've spent a whole day playing with it and I really liked it.

Thursday, December 28, 2006

Follow-up comments with Cocomment

Did you already put comments on blogs? And did you find it also difficult to keep track of that reply or follow-up comments of others?
I saw some people came to my blog through cocomment and had a look what it was. It's a very nice utility to do exactly what I missed. It keeps track of the comments on the blogs you specify. You can find more information on the website of cocomment.

There's even a way to include it directly in your blog or in other words integrate cocomment as "one-click" for your visitors. Anybody did this with blogger? There're some example codes on the cocomment website, but I didn't try it yet.

DG Tournament updated with PW-Error Handling

Patrick Wolf and I exchanged some mails in the last weeks. I promised him to test his "ApexLib Framework" in my application.

As you can see on the picture, the package is integrated and works nicely. Patrick explains well how to integrate the package on his blog. I didn't follow the steps exactly like he wrote, for ex. I didn't make a region on page 0, but integrated a part in my template and a part in the page where I wanted to use the advanced error handling package. I also saved the javascript file as a static file in APEX.

You can't see this package working in DG Tournament for real, as I implemented this error-handling in the editor/admin part of the application. I didn't choose to implement it in the "Your Bets" page as I use (client side) javascript in that page to avoid "human"-errors. For ex. you can only type numbers in the score fields, so I don't need to check if a number was entered (and I avoid a round-trip to the server). But the picture shows you a nice error.

The ApexLib package is good, it shows very nicely what you can do and how you can improve APEX, but there's still room for improvement:
- check also if there's a number as value (now if you type 'A' the error isn't "right")
- more client-side scripting instead of server-side round-trips (but that also counts for APEX in general)

The page validation I used:
DECLARE
vMin NUMBER(3) := 0;
vMax NUMBER(3) := 99;
BEGIN
FOR i IN 1 .. ApexLib_TabForm.getRowCount
LOOP
IF ApexLib_TabForm.hasRowChanged(i)
THEN
IF ApexLib_TabForm.NV('HOME_SCORE', i) NOT BETWEEN vMin AND vMax
THEN
ApexLib_Error.addError
( pError => 'The score of the home team has to be a number between %0 and %1'
, pColumnName => 'HOME_SCORE'
, pRow => i
, p0 => vMin
, p1 => vMax
);
END IF;
IF ApexLib_TabForm.NV('VISIT_SCORE', i) NOT BETWEEN vMin AND vMax
THEN
ApexLib_Error.addError
( pError => 'The score of the visit team has to be a number between %0 and %1'
, pColumnName => 'VISIT_SCORE'
, pRow => i
, p0 => vMin
, p1 => vMax
);
END IF;
END IF;
END LOOP;
RETURN ApexLib_Error.getErrorStack;
END;

* Update 30-Dec:

If you specify a format mask for your text field, the error is as expected. In my case I had to specify for HOME_SCORE and VISIT_SCORE format mask 90.

Wednesday, December 27, 2006

Flashforward 2007

I'm not sure what 2007 will bring for me...

On professional life the goal is to promote Oracle even more as before.
I also love Application Express, so that will keep a place in my heart too. I also hope to work more on myself and explore new, unknown sides of myself.

My wishes in my private life; most important: to stay happy... but if I'm allowed to wish for more, we hope to find a house and maybe start a family.

Tuesday, December 26, 2006

Flashback 2006

When I look over my shoulder I can be an happy man. For me, 2006 was a fantastic year, both professional and private.

My highlights:

  • January, 18: Creation of this Blog and first post
  • February, 25: First public adoration for APEX on this blog
  • May, 30: Release of the World Cup 2006 APEX application to the world
  • June, 6: Tom Kyte's post about my application
  • June, 9: Start of the World Cup and the betting
  • June, 17-23: First time in the United States and first ODTUG conference
  • August, 11: Married with Kristel Geukens & honeymoon in Mauritius
  • October, 11: Launch of follow-up WC 2006 app, named DG Tournament
  • October, 21-28: First Oracle Open World in San Francisco (VS)
  • November, 10: Took decision to go for a new challenge in 2007
  • November, 15: Back to my old school to teach Oracle to new students
  • December, 6: Became Vice President of the IOUG APEX SIG

Of course not everything ran as smoothly as expected and I had also some doubts, but nevertheless I'm very happy with a year like this.

Thursday, December 21, 2006

Follow-up testing pre-tag with Blogger

I always had difficulties showing SQL statements on my Blog. At the blogger meet-up at OOW I talked with Eddy (Awad) about this and he told me to test the pre- and code-tag. So, finally, today I tested it (again) and apparently it works. Also thanks to Patrick Wolf to give me a css for the pre-tag.

I also noticed that Beta Blogger became Blogger (2). Great!

A statement without the pre-tag:

SELECT t.team_name, t.team_id FROM tdg_team t, (SELECT r.team_id, rank() over (PARTITION BY r.team_group_id ORDER BY r.points DESC, r.matches_won DESC, r.goals_difference DESC, r.goals_scored DESC) team_rank FROM tdg_match_rank r WHERE r.tournament_id = :TDG_AI_TOURNAMENT_ID) rt WHERE t.team_id = rt.team_id AND rt.team_rank IN (1,2);

A statement with the pre-tag:

SELECT t.team_name, t.team_id
FROM tdg_team t,
(SELECT r.team_id, rank() over (PARTITION BY r.team_group_id
ORDER BY r.points DESC, r.matches_won DESC,
r.goals_difference DESC, r.goals_scored DESC) team_rank
FROM tdg_match_rank r
WHERE r.tournament_id = :TDG_AI_TOURNAMENT_ID) rt
WHERE t.team_id = rt.team_id
AND rt.team_rank IN (1,2);
A statement with the pre- and code-tag:

SELECT t.team_name, t.team_id
FROM tdg_team t,
(SELECT r.team_id, rank() over (PARTITION BY r.team_group_id
ORDER BY r.points DESC, r.matches_won DESC,
r.goals_difference DESC, r.goals_scored DESC) team_rank
FROM tdg_match_rank r
WHERE r.tournament_id = :TDG_AI_TOURNAMENT_ID) rt
WHERE t.team_id = rt.team_id
AND rt.team_rank IN (1,2);

Testing pre-tag with Beta Blogger

A statement without the pre-tag:

SELECT t.team_name, t.team_id
FROM tdg_team t,
(SELECT r.team_id, rank() over (PARTITION BY r.team_group_id ORDER BY r.points DESC, r.matches_won DESC, r.goals_difference DESC, r.goals_scored DESC) team_rank
FROM tdg_match_rank r
WHERE r.tournament_id = :TDG_AI_TOURNAMENT_ID) rt
WHERE t.team_id = rt.team_id AND rt.team_rank IN (1,2)


A statement with the pre-tag:

SELECT t.team_name, t.team_id
FROM tdg_team t,
(SELECT r.team_id, rank() over (PARTITION BY r.team_group_id
ORDER BY r.points DESC, r.matches_won DESC,
r.goals_difference DESC, r.goals_scored DESC) team_rank
FROM tdg_match_rank r
WHERE r.tournament_id = :TDG_AI_TOURNAMENT_ID) rt
WHERE t.team_id = rt.team_id
AND rt.team_rank IN (1,2)

Wednesday, December 20, 2006

DG Tournament updated

I updated DG Tournament with the results of the drawing for the second round of the UEFA Champions League.

You can now start betting on the games of the 1/8 Finals! (see screenshot)

Some technical background about this update.
(you can't see the adaptation as it's in the "editor/admin" section of the application)
To add the matches of the next round I created a tabular form with dropdown lists of the teams.
I used an analytical functions to get the first two teams of each group:

SELECT t.team_name, t.team_id
FROM tdg_team t,
(SELECT r.team_id, rank() over (PARTITION BY r.team_group_id ORDER BY r.points DESC, r.matches_won DESC, r.goals_difference DESC, r.goals_scored DESC) team_rank
FROM tdg_match_rank r
WHERE r.tournament_id = :TDG_AI_TOURNAMENT_ID) rt
WHERE t.team_id = rt.team_id AND rt.team_rank IN (1,2)


I use analytical functions more and more. I find them really powerful!

Tuesday, December 19, 2006

Review of two J. Gennick books

In April I blogged about good books for my Oracle Team. One of the books was "Oracle Regular Expressions Pocket Reference" by Jonathan Gennick. Coincidence or not, but I met Jonathan at Oracle Open World this year! We went for a drink and had a really nice chat.
I find Jonathan a man with a lot of knowledge and he's a great story teller/writer ;-)
I also promised to write a review of two his books, so here we go.

SQL Pocket Guide (Second Edition)

Quoted from the Introduction of the book:

This book is an attempt to cram the most useful information about SQL into a pocket-size guide. It covers data manipulation and transaction control statements, datatypes and table creation and modification for the following platforms:

  • Oracle DB 10gR2 & XE
  • IBM DB2 8.2
  • MS SQL Server 2005
  • MySQL 5.0
  • PostgreSQL 8.1
I find it an excellent description what this book is about.
I would recommend this book to every DBA or Developer working on multiple database flavors!
You can quickly find how you can do something. For ex.: What Datetime Functions are available in Oracle or SQL Server or ...?
Not all implementations of SQL are the same in the different databases and not every SQL is available in the same way. This book not only tells you about SQL but it also proofs it on the hand of a sample schema. The sample schema can be downloaded from the O'Reilly site.
Next to the little "tips & warnings", I find this the biggest PRO for this book! THE PROOF! You can test and see the result yourself, which is important as things change... (although maybe for SQL a bit less)

Oracle Regular Expressions (Pocket Reference)

Quoted from the Introduction of the book:

This little booklet describes Oracle's regular expression support in detail. It's goal is to enable you to take full advantage of the newly introduced regular expression features when querying and manipulating textual data.

As above, I find it an excellent description what this book is about. The book explains the use of the regular expressions very well with clearly written examples.
For this book too, you can download a sample table with data to test the regular expressions yourself. I find regular expressions really powerful and one of the most underestimated/(used) features of the database. I used for example regular expressions to check for a valid email address in the registration page of the World Cup 2006 application.

Thursday, December 07, 2006

Apex Oracle User Group (or APEX SIG)

Is there an Oracle User Group specialized in Application Express?
Yes! It's called the APEX SIG: Application Express Special Interest Group

You can all make part of this User Group by registering on the IOUG (Independent Oracle User Group) website.
After the voting of the last weeks, yesterday, the APEX SIG leaders got announced. We're with a group of seven extraordinary people!

The seven people are:
  • President: Steve Howard
  • Vice President: Dimitri Gielis
  • Web Content Coordinator: Doug Gault
  • Web Master: Tony Jedlinski
  • SIG Officer: John Scott
  • SIG Officer: Scott Spendolini
  • SIG Officer: Vikas Agnihotri
Together with the others, I'm also looking forward to get this APEX SIG rock! Of course we can't do everything by ourselves, so you're input is really important! The purpose of the APEX SIG is to provide a centralised, cohesive resource for anyone and everyone involved with Application Express.

John Scott (JES) posted a nice thread on the APEX forum which explains the purpose of the SIG really well. His last paragraph:

On a final note, I want to stress again how important it is for us to have
your involvement in this, if you've ever sat and thought "I wish APEX did
this..." or "I hate the way it does that...", then please get involved with the
SIG, let's all make APEX an even better development environment because we'll
all benefit from that.

So go to the website and get involved into this APEX SIG!

Wednesday, December 06, 2006

asktom beta in APEX

I don't know if you already saw the "beta version of the new asktom interface"? I find it cool! You can see the new askTom here.

I've the impression that this askTom is more integrated into APEX and uses a lot more features that come "out-of-the-box" with APEX. For ex. the use of theme 18, tabs, breadcrumbs etc.

I really look forward to dowload this application from the "Packaged Application" page on the APEX OTN page. The application is called "Ask the Expert" and has following description:

Ask the Expert is an application based on Ask Tom (http://asktom.oracle.com/). Using this application, users can post questions to an expert and the expert can answer. The application is powered by interMedia for text search. The expert has the full power to control the application. They can limit the number of questions allowed and block new questions completely. If the question is found to be useful, it can be published so others can view it.