New APEX Blog

David Peake the Application Express PM has joined the blogging community with his blog.

Drop by and say hello and hassle him for some posts.

Actually the first rule is probably require user login.

So I've been watching the usage on my tagging functionality, and it's not quite what I was hoping for. While I know people were applying and adding tags there was significant amount of people that were applying and adding tags just any old page, probably just to see the nifty AJAX effect I'm sure ;).

So I'm turning off the user initiated tagging, and going with an administrative tagging setup, which is basically just me adding them. I'm actually going to replace my breadcrumbs with this since I think it will be more useful.

User entered tags would work great if I required login to my application and then people could tag pages with personal tags that only they could see. And then the tag package could create tag weights based on that compared against the administered tags.

I will be allowing for voting on tags to change their weights on page but you can only vote on tags the administrator has entered.

Anyway I should have PL/SQL package that can be plugged into any APEX application to provide tagging functionality next week. I'm thinking I might make a package that contains the tagging/rating/comments functionality into ones package , configurable of course.

If course there is always my regular 40 hour to think of but this is much funner ;)

F stands for FOP and Fun

So as I've stated before I almost always deal with static XSL files when building my XML/XSL to FOP transformations.

When I do almost always start with one of two generic XSL files as a starter. One is a Generic Report XSL and another is a Generic Name Value Pair XSL , I've cleaned them up a bit and some commenting and put them up for everybody to try out.

To use them just upload them as a Named Column Template XSL and then apply to any APEX report, the named value pair page breaks after each row because I usually use it to create pages where there is one item with lots of detail.





You will get a very generic PDF but it can used as a base for other XSL files.






These templates also show some extra XSL features, like xsl:if or xsl:choose and xsl:attribute-set. I'll be posting some more specifics on XML+XSL=FOP transforms over the next couple weeks using these two files as examples but for you people that like reverse engineering stuff these files will immediately be useful.

A working example and files for download can be found here.

http://apex.oracle.com/pls/otn/f?p=11933:139

I suggest this site for people unfamiliar with XSL and FOP
http://www.w3schools.com/xsl/default.asp
http://www.w3schools.com/xslfo/default.asp

And I personally use XMLSpy ,one of the few Windows programs I use , for working with XML and XSL files it can directly create PDF's from an XML+XSL transform.
http://www.altova.com/products/xmlspy/xml_editor.html

So I saw Eddie Awad's QuickConnect card for Oracle World and I thought that's pretty cool. So I went and got one of my very own.

Join Me at Oracle OpenWorld Connect!

See you there!

I just got a very nice email from our HR dept, sure it's an automatic email but at least the computers know I'm here ;)

Congratulations Carl, on reaching your employment anniversary of 5 years of dedicated service.

The success of Oracle is a direct result of every employee striving to be the best they can be. The talent, skill, and knowledge you develop over the years allow you the opportunity to make significant contributions. In recognition of your dedicated service.........


Wow has it been 5 years? It seems like yesterday that I replied to a craigslist posting about a position at Oracle , craigslist and Oracle now there are two words you don't hear together very often, about the need for a Senior Developer in "Applications Research" that knew javascript , xml , xsl , html ,css ,sql and on and on. I need to find my copy of the posting but it was pretty cool. Considering for the previous couple of years, I have been from startup to startup and consulting for startups a nice corporate job sounded like a good idea.

So I drove down to Redwood Shores for my interview and showed some people my ( IE 5.5 only ;) PHP , MySQL , xplanet ) XMLHTTP based application that screenscraped yahoo and showed news headlines near the right place on the map, well at least on the right side of the continent.

At some point in the process Kris Rice , asked me some logic question about chasing a duck around a circular pond what was the fastest way to catch it on the other side. I remember answering back with a question , something like , "Well since I'm obviously hunting a duck do I have a gun?" , what can I say I'm results oriented.

Well over the 2 hour interview I must have said something right because on the drive back to the city I got a call back that I could start whenever I wanted to.

So here I am 5 years later, a couple group changes in , and some product releases later. It's definitely been fun , interesting and eye opening, I've worked with some of the smartest people I've ever meet on some of the funnest and most challenging projects/products I've ever messed with.

I can't wait to see what the future has in store !

APEX Developer Feedback

So I posted this thread on the forum and the APEX team definitely wanted to get comments on it.

If you didn't know we are all in lovely Reston, VA going over new/improved features for future versions of APEX.

While the big 3.1 enhancement thread has been a great help and discussion point we particularly wanted to get feedback on this posting by Oracle ACE Patrick Wolf.

Please feel free to provide feedback, actually the more the better.

Tagging 101

A nice article with tagging guidelines, even I don't/won't follow them all the time but is something to think about when tagging data.

http://tagamac.com/2007/07/best_practices/

Web Too Point 0

Well I haven't bought into the whole Web 2.0 thing, I'm not talking about the technology part of course. I think AJAX and new RIA features are here to stay. They are excellent tools in the toolkit. I'm talking about the social networking part, I've signed up on services like facebook and such but mostly I have people that are already my friends and I have IM or email contact already, and really don't see the need to add random people but hey maybe it's just me, plus some of the hype is really starting to remind me of Web 1.0.

BUT!! I am sold on tagging, I think it's one of the most important ways of dealing with the flood of data I collect, I'm an avid del.icio.us user now , thanks Tyler , and want to tag everything. I want private tags for me and public tags for outside consumption,

I want to tag my dog , good dog or bad dog, I want to tag my nephew mohawk or sans mohawk.

Plus and most importantly I'm really pushing to include tagging into this.

So in the spirit of this , and as a simple testbed, I built a very simple tagging mechanism for the examples on my sample application.

I'm still working all the kinks especially with how I deal with weighting of tags but so far I'm pretty happy with the result.

When I'm finished this will make an nice addition to the examples on my application and hopefully help people find things they need easier. I think it's much more useful than the breadcrumbs which I will probably be removing soon.

Since I don't require logins you could game the system by voting for tags multiple times or even put in ....... lets just say nonsensical tags, but I'll be administering it since I want it to be useful people.

Well have at it.

http://apex.oracle.com/pls/otn/f?p=11933:136

11g and Application Express

Well I'm sure you've read that Oracle has released the 11g. For me personally the best part of it is that Application Express is installed by default.

That's right!
No more having to beg your friendly neighborhood DBA into installing this extra Application Express thing you heard about because it's installed by default.

This should defiantly improve the uptake and usage of Application Express and shows that Oracle is serious about the future of APEX , though that question hasn't come up in awhile.

Songbird (Non Oracle)

I just ran across Songbird.

It's a media player built on top of the Mozilla engine. I've been playing with it for about 2 hours now and am absolutely thrilled with it.

It has some issues playing shoutcast through proxy though that might just be my setup (linux with gstreamer) but without the proxy it works as advertised and with my own mp3's it works great, it has some lastfm / audioscrobbler features but it doesn't look like it play lastfm directly in it, again though it might be something that needs to be setup on my end better.

If your own of those people like me that can't hardly work without music give try.

The UGLY side of FOP

I tracked down an issue for a customer with the default FOP PDF output from APEX. When you change the page to portrait layout the table would extended off the right side of the page.

What causes this issue is a hardcoded width for the table, width="658.8pt"

So how do you get around this, well simple you just remove it.


  1. Go to the Report Layout page

  2. Home > Application Builder > Application NNN > Shared Components > Report Layouts

  3. Choose Create Button

  4. Choose Generic Columns (XSL-FO)

  5. In Report Layout look for and remove this string width="658.8pt"

  6. Save the template and then apply it to your report in it's printing options tab.



It's pretty simple but can cause people some definite pain if you don't know where to look, and it will be removed in next version.

As you get more advanced another thing to look for is the page declaration in that same section.

Right now it is listed as this.

<:fo:simple-page-master master-name="master0" margin-left="66.6pt" margin-right="66.6pt" page-height="#PAGE_HEIGHT#pt" page-width="#PAGE_WIDTH#pt" margin-top="36.0pt" margin-bottom="36.0pt">


But if you need more exacting you can change to something like this.

<fo:simple-page-master master-name="master0" margin-left=".5in" margin-right=".5in" page-height="11in" page-width="8.5in" margin-top=".5in" margin-bottom=".5in">


As you can see I've hardcoded the widths and margins in instead of using the substitution variables. At the moment I'm a big fan of just creating your own edited default portrait and landscape templates as starters templates.

Plus it's a first step into getting into the UGLY world of editing raw FOP and XSL, and won't that be fun.

OW Session Sneak Peek

So I just got a sneak peek at abstract for a particular Oracle OpenWorld session and let me tell you it sounds impressive.

Well sneak peak isn't quite the right word since I had to write the thing.

Advanced Application Express - Building Web 2.0 Applications (Carl Backstrom)

With Oracle Application Express you can quickly create applications that include custom Web 2.0 functionality. In this session you will learn about using the built-in JavaScript libraries and application views to build AJAX based interfaces and functionality. Efficient debugging, development techniques to improve reuse and the future direction of AJAX functionality in Application Express will also be covered.


It's a whole lot to cover but I talk fast, especially when I'm nervous but don't worry I also talk LOUD.

I have some ideas of what I'm going to be cover but if your going to be there or want to have the slides after and want me to cover something specific now is the time to comment.

I'm defiantly going to try and make this an advanced session so you better have studied at least the basics of your HTML/CSS/Javascript as it is only going to get about 30 seconds of overview before I jump right in.

I'm taking a hint from John's and Dimitri's posts about starting early to get all the material ready and well I'm starting early.

Though you will be probably seeing this on other APEX centric blogs I want to make sure I post about it too.

Patrick Wolf author of the ApexLib and leading member of the APEX community has become an Oracle Ace, I've been lucky enough to have corresponded with him in the past and he's a very knowledgeable and nice (they don't always go together) guy.

Drop him a congratulations in the forum.

And visit his blog.
http://inside-apex.blogspot.com/

Also take a look at the ApexLib it's plugin features like that that internally keep us on our toes with development and it's well worth seeing if it has features meet a need you have.

http://apexlib.sourceforge.net/