Skip to main content

Posts

Showing posts from 2014

Can you build business critical applications with APEX?

Now and then this question pops up. And today this question was delivered in my mailbox again. A customer is starting a project to replace a current Oracle Forms application. So he asked Oracle and one of the Oracle partners: What should we use, APEX or ADF? A valid question that has been asked - and will be asked - by numerous customers. 
Of course, there is only one correct answer and that is: "It depends…"

But in this case, the Oracle representative and the partner answered (according to the client - so their might be some noise on the line) that you can’t build a business critical application with APEX, but only in ADF. My reaction was: "Sigh, here we go again…"
The mean reason was : Many APEX users means a high load on your database server. Most other solutions will have a high load on the application server, but the database server doesn’t suffer from that.

So what would my reaction be? Herewith some of my thoughts:

1. As this application is positioned as a replac…

UKOUG 2014 - A special edition

Although I’ve attended the UKOUG conferences since 2008, this year’s edition was somewhat special to me. Based on the attendee reviews of last year’s UKOUG, I was elected as “Best Overseas Speaker”. And for me that’s quite an honour and of course a recognition for years of work - and practice ;-)
And with a title comes a plaque - it’ll get a special place on my bookshelf. 

I didn’t just get all the way to Liverpool to collect my award. I also did three presentations - from my point of view it was only 2.5, but I have to round up according to Brendan Tierney…
The first one I did was “Ten Tiny Things” about a couple of the less known new features of APEX 5. And I showed something even one of the APEX Development Team members didn’t know ;-) . The second one was together with Brendan (that’s why I usually count this one only as .5) about the things you can do with the Oracle Data Miner and Oracle Text features in combination with APEX. We both thought it went very well and we had some very …

I am running for the ODTUG Board of Directors

After some thought, I decided I will be running for the ODTUG Board of Directors this year. I have been attending Kscope since 2008 (New Orleans). Presented at Kscope and APEXPosed since 2009. Did a few webinars. Was a member of the APEX Content Team for Kscope12 and 13. And now I am the Content Lead for the APEX track for KScope14 and Kscope15. So I like spending my free time for ODTUG, to keep Kscope the best conference out there. But ODTUG is more than Kscope. And I would love to add my time, expertise and network to ODTUG in order to do more. So that's why I am running for the Board.

But it seems I am not the only one running.... As for four positions, there are 24 nominations. Twenty-four! That means the changes are slim, but it shows how vivid ODTUG is. Most organisations that run on volunteers have a hard time filling these kind of positions. ODTUG doesn't. I don't have a full list of names, but I now know about six of them. And they are all well known persons and e…

What happened at the first ORCLAPEX-NL Meetup?

Yesterday the first ORCLAPEX-NL Meetup was held. Finally. We seemed to be a little behind other locations - but pretty sure we'll catch up quickly!

After (a lot of) great pizza - kindly sponsored by smart4apex - and a round of introduction of every attendee, Richard kicked off the meeting by explaining the concept of these kinds of meetups. He also gave a nice review of his first experience of Kscope during Kscope14. The weather was summer like outside - but the real die-hards were listening and discussing inside ....
... where Dick explained the limitations and challenges of developing web applications for smart phones.
During the Open Mic Night part of the evening, Steven showed a very nice APEX Web Application developed for mobile devices. The user interface looked very good and the flow was very well thought through. And it uses some very neat features like Local Database Storage and WebWorkers to temporarily storage pictures and send them over the wire when possible without i…

What happened at the first ORCLAPEX-BE Meetup?

Yesterday I attended the first ORCLAPEX-BE Meetup. Very well organised by Dimitri and Roeland. Remarkable fact: I was not the only "foreigner" as around 30 - 40% of the - around 16 - attendees where Dutch! So Meetups can even easily cross borders ...




So after some initial socialising....  ... ... Roeland explained the concept of these kind of meetups.





In the next hour Dimitri went over all the great new features of APEX5, like Page Designer, Modal Pages, Syntax Highlighter etc.




Then there was plenty of pizza (and more socialising).




And then I went over the smaller - but nevertheless cool - features of APEX5 (as described in earlier blogposts).
Alas I had to leave after my presentation - looking at an almost 3 hour drive back home. But I know that the last 20 minutes or so where filled with two "Open Mic Night"-style demo's. I think all attendees had a good time. I really like the concept: relaxed networking, some presentations - with a lot of interaction due to …

Your Kscope15 abstract is due today (or before Oct 15)!

It is still a long time before Kscope15. But if I look at the website .... I can hardly wait! 
A good conference needs a good time for preparation. An awesome conference .... needs even more time. So that's why we need your abstracts a.s.a.p. After the close every member of the review committee will go over every abstract and will give it a rating and a comment. When that's all done, the committee will have a number of (virtual) meetings to select the best abstracts and create the stunning program you expect from Kscope. And last but not least the schedule for the event has to be created where everything falls into it's place ... So we really do need some time after October 15!
But what are we looking for - and this only applies to the Oracle Application Express track as every track has it's own "wish list"...you can see that when you enter your abstract in the Sub Category field. We split it up into these six: Integration: We often see that it is not "j…

First ORCLAPEX-NL Meetup !

Earlier this year Dan McGhan - inspired by local JavaScript meetups - started the first Oracle APEX Meetup. Since then it has gone viral. As you can see on ApexMeetups the meetups are more or less global nowadays!
And even in The Netherlands we will officially join this virtual group and have our first ORCLAPEX Meetup on Thursday September 18. The location is central and well known: The Dutch Oracle HQ alongside the A2 highway. Thanks Oracle for providing the accommodation!
From 6PM onwards you can come in and join the group with a slice of pizza and a soda. As usual with these meetups, the structure of the meeting is more or less free format. The most important goal is to meet and greet fellow APEX Developers. We will have one or two (short) presentations: One about the concept of these Meetups - to set everyone's expectations - some and one about using Angular JS for mobile APEX development. If you want to share your experiences, questions knowledge etc : this is the place to b…

10 New APEX 5 Features

The last two weeks I wrote a daily blogpost about a new feature in APEX 5. And intentionally I didn't cover the "big" features, like the new Page Designer, the Modal Pages, the Universal Theme etc as these probably are - or will be - covered by other people. So in my 10 blogposts I covered "Ten Tiny Things" ... 
For those who missed it - all or parts of it - herewith a list of subjects with the links: CalendarSupporting ObjectsColumn LinkDeveloper PreferencesPassword ResetRuntime API LockdownSubstitution SyntaxAuthorization Evaluation PointsPackages / API'sStatic Files I hope you liked it!

APEX 5 New Static File Features

In APEX 4 you could upload files - like CSS files, JavaScript files, Images and whatever else you like - into the APEX Repository. When you navigate to Shared Components, there is a Files section that offers three different options:
CSS Files are always uploaded (and changed !) for the whole Workspace. For Images and Static Files (usually JavaScript) you could choose whether they should be available for the whole Workspace or for a specific Application only. And if you had a lot of files - e.g. a lot of images - then you had to go through the upload process one-by-one. But that's usually a one time only thing. If you make changes to the CSS and JavaScript files - and that's a continuous process in development - then you had to delete the existing file and upload the new one. Over and over again. And meanwhile fighting the cache of the webserver and your browser.  And another irritating issue: You couldn't use relative references in your CSS or JavaScript files as they just…

APEX 5 New Package Features

To get a proper list of the new packages and API's APEX 5 provides us, we have to wait for the documentation of course. But if you're impatient and want to now more, you can get a list of all package procedures and functions by running this SQL on the APEX 5 Early Adopter instance:


select distinct s.synonym_name, p.procedure_name from all_procedures p join all_synonyms s on p.object_name = s.table_name where p.owner like 'APEX%'   and s.synonym_name like 'APEX%' order by 1, 2;
You'll get a list of over 700 procedures/functions. Most should look familiar. But there are some new kids on the block like : APEX_JSON, APEX_SPATIAL and APEX_ZIP. You can examine the ALL_SOURCE view to get more insight by looking at the parameters and the examples in the comments.
The APEX_ZIP package is - according to the comments in the package - based on the work of Anton Scheffer (see this blog post). The functions / procedures can be used to zip and upload a file or to download and …

APEX 5 New Authorization Evaluation Point Features

In APEX 4 you can define Authorization Schemes. This is a very useful feature to prevent code repetition all over the place. For instance and Authorization Scheme "Is Admin" might use a select on one or more tables (or web service calls or whatever is necessary) to determine whether a user, the :APP_USER, has an Admin role or not. And you can use any value in session state, like :APP_ID or :APP_PAGE_ID in your query (or function call). The result of this call is usually pretty static. So you could specify when the code should be evaluated: Once per Page View or Once per Session. The latter is obviously more efficient as it will run only once from login to logout.
This works fine. Until you want to build your own fine-grained access control mechanism. As an example: If you have a page with three buttons on it, you can define an Authorization Scheme for this buttons and use that. So all three buttons use the same Authorization Scheme and are all visible on the page or not. As …

APEX 5 New Substitution Syntax Features

You've probably all heard about XSS, a.k.a. Cross Site Scripting. One of the ways you make yourself vulnerable to XSS is by creating JavaScript in your APEX applications that accepts unescaped user input - either direct or data retrieved from the database. As a - very stupid and simple - example, create a Page with a Text Item (say P3_TEXT).  Next create a Dynamic Action that executes this snippet of Javascript on Page Load :
alert("You entered &P3_TEXT.")
When you now enter some text like "Hello world" and submit the page, the response is an alert box with "You entered Hello world". But now enter something like:
the dark world");window.open("http://www.google.com
This looks like half a piece of code - and in fact it is. It is completed by the (other) Javascript snippet that's using this snippet as input. Now you get an alert saying "You entered the dark world" and an extra window is opened showing the Google search page. Th…

APEX 5 New Runtime API Lockdown Features

In APEX 4.x the developer could implement a feature that involves a call to the APEX API. E.g. you could create new pages on the fly if you would like to (just examine an export file for the how-to). You could drop an application using a procedure from the APEX_INSTANCE_ADMIN package. You could drop a user using APEX_UTIL.REMOVE_USER. If this is all on purpose and secured than that's fine. But maybe you created some opportunities for SQL Injection ... and someone else could use that technique to call those very same procedures. So the bad guy (or girl) could drop your application - or maybe even worse : could create a user and give himself full access to everything! Of course you should prevent that from happening by fixing the SQL Injection holes. But next to that: You can prevent that your application uses those API's at all! And in APEX 5 that's even the default setting. So you're safe by default ;-)
But assume you really need access to those API's, there is an …

APEX 5 New Password Reset Features

Now and then it happens when we're logging in into our APEX instance: We have to change our password again .... And that means, typing it in an awful number of times:
1. Current Password
2. New Password (and of course preferably the same as the current one ...)
3. Confirm New Password
4. Press Apply Changes
5. Press Retun
6. And we're back at Square One : The login screen - and here we type that password again...
But in APEX 5 the APEX Development Team made it easier for us: When you have to change your password, you're automagically logged in with that brand new password. Finally. Sigh ....

It's a very small thing - but it takes away just that little bit of irritation every few months or so ;-)

APEX 5 New Developer Preferences Features

As a lot of the new APEX 5 features are "by developers for developers", this one is also a nifty little thing that make our lives easier. Only the developer part of our lives of course....
In the upper right corner of APEX 5 you'll see your login name and a rather anonymous avatar. Just for fun - and recognisability - you can add your own face there. Or a picture of your dog of you like that one better. Just click "Edit Profile" to upload a picture. O yeah - you can change your username and password as well in that pop up. Way more functional is what's below the "Preferences" button. You can specify here how you want APEX to act when you press a "Run Application" button. You can define whether the Application should start in a new tab or in a new window. What's pretty cool is that when you keep that tab or window open and press the Run button again, focus will switch to that tab/window and your page will be reloaded there. So you don…

My OOW14 Performances

Oracle Open World 2014 starts in just over 4 weeks from now. And I am one of the (50,000?) lucky people who will be there ....
I will even take part in three sessions, one straight at the start and one almost at the end:
What Are They Thinking? With Oracle Application Express and Oracle Data Miner [UGF2861]
Sunday, Sep 28, 9:00 AM - 9:45 AM - Moscone South - 304

Panel Discussion: Bring Your Questions About Integration (or Anything Else) [UGF9093]
Sunday, Sep 28, 3:30 PM - 4:15 PM - Moscone South - 300

The Best of Both Worlds: Going Hybrid with Your Mobile Oracle Application Express Applications [CON2296] Thursday, Oct 2, 10:45 AM - 11:30 AM - Moscone South - 303
Hope to see you there!

APEX 5 New Column Link Features

In the current version of Oracle Application Express you could use up to three items in a Column Link.
Most of the times that is enough. But there were always some use cases where you needed four or even five. And of course, just like with all limitations, you can figure out a work around. But wouldn't it be just awesome if APEX offers us more items out of the box.
And in APEX 5 they do! The number of items you can use in a Column Link isn't restricted anymore. So you don't get four. Or five. Or even six. You get "unlimited" (between " because there's probably some 32k sizing limit somewhere.. but you'll get the point).
But wait ... there's more! The "Target Type" isn't limited to "URL" or "Page in this Application". You can now - declaratively ! - link to Pages in other Applications as well as you can see below. So one more reason to add to the already long lists of reasons to upgrade to APEX 5 as soon as we can…

APEX 5 New Supporting Objects Features

In the current version of APEX the Supporting Objects feature is undervalued. You can create (sort of) self installing applications with it, but it is not widely used. Why? Because people don't realy know the feature or people do and experience lack of functionality. In both cases : Check out the functionality of APEX 5!
When you have scripts for creating tables, packages etc., in the current version you have to manually keep those install scripts in sync with "reality". You have to do it manually - so it'll go wrong sooner or later. But in APEX 5 you can sync your scripts with the click of a button. Well, in fact two clicks: one for the check box and one for the button. See the animation below.
So when you click "Refresh Checked" your script will be recreated, reflecting the current situation of your database.
Well how does that work? If you click on the pencil icon and then navigate to the "Script Editor' tab, you'll see that the script is as…

APEX 5 New Calendar Features

While playing around in the APEX 5 EA2 environment I discovered a few neat little features for Calendar regions.

First of all you can export the data of the calendar - only the data that's currently visible - to four types of format. Especially the iCal format is new and interesting as this is readable by most calendar applications. Right now, in EA2, the PDF option doesn't seem to work yet. And alas, the iCal format is not readable by the Apple Calendar - but I hope that'll be fixed when the product becomes available! It is promising nevertheless....

Another cool feature is the Google URL. You can enter a URL of a public Gcalendar (or your private calendar if you want to) and your appointments will show up in your APEX application (see the green entries in the screenshot below)!

And last but not least : You can add your own (or someone else's) RESTful webservice feed to the calendar as well. By defining your own Resource Handler using a query to return a JSON string, …

Kscope Wednesday

Also today is packed with excellent sessions. The first one, "Cookie Monster", by Tim St.Hillaire covered the different type of cookies and how you can set and read them from within your APEX application. For a lot of purposes you could nowadays use local storage as well, but there's still a case for cookies - and that's not a jar ;-)
The second one, "Single Sign On", by Anton Nielsen was excellent as well. He made clear that just Authentication is not enough: In most cases we need to get back our previous session state as well. A feature that will be included in APEX 5: Session joining. Only in a multi-tenant infrastructure it is not a good idea to enable this as this might open up the possibility to hijack a session. He also explained that from a security point of view, it is important that the APEX authentication is based on both the cookie and the sessionID in the URL.
In session number three, "Pins, Polygons and Perspective", Christoph Rueppr…

Kscope Tuesday

This day was quite busy: I had two presentations and a panel session, more or less back to back. My first presentation "Intro into Mobile APEX Development" went ok, but I was especially pleased with the way my second presentation "Creating Hybrid APEX Applications" did go. I think I got the message across that it is not that hard to create APEX Applications with native iOS (or Android) functionality, like accessing the Contacts on the phone and use the native Twitter app (or Facebook, Mail, etc) to send a message straight from your APEX application. And I received some very positive feedback, either via Twitter or directly ..


And - also important - I had really fun while presenting as this pic (by Jorge Rimblas) proves.


In the evening we had a great ACE Dinner at a local brewery. So that included good food. And beer. And more beer ....
And a poker game concluded another awesome day (although I didn't win) !

Kscope Monday

The Monday started off with the general session. The most awaited announcement was: Where will Kscope have it's residence in 2015? The answer can be found on www.kscope15.com (in short: in an awesome resort in Florida).
After that, the selection begins ... which session should I attend... I picked two interesting sessions about the APEX Listener / Oracle Rest Data Service. This product is growing fast in functionality and will get more important in the Oracle infrastructure soon!
My favorite session of the day was the one from John Scott, called "Removing the boring from testing". A maybe slightly misleading title, as he was covering utterly cool "headless browsers". Apart from NodeJs, which is a headless server, you can also have an headless browser: a browser without a screen output. Using these tools you can programmatically - using JavaScript - call webpages and examine the result. So using this technique you can write test scripts - in an easy and familia…

Kscope is awesome ....

As a tradition, this Sunday Kscope kicked off with a full day of presentations by Oracle's APEX Development Team. And of course it was all about "5.0". Joel started with the "Awesome revolution of APEX" - the term "awesome" (and the associated song) seems the be the conference team this year. After that the Page Designer, Interactive Reports, Mobile development all got the special attention they deserve. But the best part - or at least the most surprising part - was the "UI" presentation by Shakeeb. He introduced the new Universal Theme (number 42) with the Template Options feature - so you need less templates because special settings are driven by the options.


But - with a great "one more thing", he surprised everyone with the demo of the Universal Theme Roller. Similar to http://themeroller.jquerymobile.com/ but it looked better. So you can "live style" the look and feel of your application. CSS knowledge becomes less n…