Thursday, 5 November 2015

Introducing Slack to the Oracle APEX community

If you're like me, the first time you ever heard of Slack was when you checked out launch last month.

Since then I've signed up, had a play, interacted with people and with the support of I thought about what it could do for our community. Slack's mission is “make your working life simpler, more pleasant and more productive.” To me that sounds like something we should think about getting involved with.

What is Slack?

Slack is a relatively new site but has grown extremely fast, compiling the some of the best bits of twenty years of Internet interaction in the one offering. It's basically a highly integrated chat app built by the guy that brought us Flickr. The best article I've seen describes how it's killing e-mail, and I can really see how. It's worth the read and will help you understand why we're a little excited.

Firstly let's consider the tools we currently use:


Email is a funny thing. I still email the colleagues that sit nearby. Don't get me wrong, nothing goes past a good face-to-face conversation, but we also work with code, visualisation, and our headphones on. We want to be disturbed on our own terms, so e-mail can be a convenient tool. However, an email conversation is quickly polluted with signatures, loss of context and which ones do you keep?


The OTN community is a great place to ask questions, float ideas and see what other developers are struggling with. I find it optimised for clear questions and concise responses. Anything requiring more interaction can be painful and slow as forum lag creeps in.


Need to float an idea? Need to consume information based on a particular tag like #orclapex? Twitter's a great tool in our community and you'll find plenty of the experts and gurus use it. Tim Hall induced an interesting discussion this week on its value. Journalists and sociologists worldwide love it's instantaneous nature and insight into the human psyche; information is extremely current but transient.

One downside is that sometimes it feels rude joining an existing conversation, despite the fact you're essentially writing on a public wall. Others also like to talk about things other than Oracle and related technologies, who knew? For me it's science and pseudoscience, a side hobby. Some like this insight into the personal nature of people, but it's not for everyone.

Following conversations between others can be hard unless you're directly involved, and trying to convey technical information with 140 characters can be tough. Unless of course you transfer your discussion to somewhere like Slack, where other perspectives are naturally welcome.


Remember this? It was fantastic for instant chat, we used to use it at university to communicate with students in other study rooms. Apparently it's till around, and I think Slack is a more advanced, more mature version of a chat room - built for engineers.


Imagine the benefits that instant messaging could give your team, one with a useful UI, one that's searchable, where you can set up a few different channels, include various forms of media, and one that integrates with a whole bunch of other frameworks. That's Slack.

What does do?

For those that aren't interested in registering with forms of social media, does a great job of aggregating information. screenshot

The first column lists all the conversations coming out of Slack, with a drop down list for the different channels. By registering with you can get invited to the domain.

The column on the right aggregates all messages coming from Twitter with any of the tags shown in the region heading, which are typically the cream of the crop for data mining. This differs from lists that people can make in Twitter that show any tweets by particular people, which sometimes aren't about Oracle or technology.

The middle column lists any link the team deem newsworthy. The first few in the screenshot relate to jobs, but the types of links are quite heterogeneous. The next in the feed was highlighting a particular tweet from Joel Kallman essentially confirming Oracle JET as the target charting engine in APEX 5.1.

Visiting means you don't need to be a member of Twitter nor Slack, nor do you even have to register at, but I'd like to convince you otherwise. I've previously posted about the advantages of Twitter as a work tool, and I'd like to familiarise readers with why Slack could help APEX community members.

Finally, the site is bigger than just this landing page and registering brings other benefits such as the job market.

Using Slack

Slack sidebar
I'm still a relatively new user to Slack, but Juergen tells me that makes me the prime candidate for spruiking my findings. It's certainly a new tool for the APEX community, and I'm sure there are uses we're yet to discover. Consider this a time of cultivation of a product that's already proved its worth - would not be possible without Slack due to the vast geographic separation of the development team.

Domain Header

The big "orclapex" in the top section provides a drop down with site level links of interest, including Preferences.
For instance, I've chosen a skin I like, separated private channels in the list and set emoji to text only. I also enabled desktop notifications for certain events.


The these predefined channels were devised by the team as to break up the orclapex domain into categories that hold their own weight when it comes to discussions.

If you have a question or thought regarding dynamic actions, there's a spot for you. If you need feedback on using plugins, ask a question over there. When you sign up you can opt in to channels that interest you, I've done subscribed to them all.

The channel displays bold when new content is present, as per the private apex-world channel in the screenshot. The UI does a great job at showing new information to suit your preference.

No doubt others will arise over time, perhaps more transitory channels for use in ODTUG webinars?

Private Channels

It's also possible to define private channels for your own projects, cities or languages... or who knows what in future. There are two in this screenshot, signified with the closed padlock.

We welcome non-native speaking communities to define private channels for their native tongue. First ask in the #_general channel if one has already been created in your language and you will be sent an invite since anyone who's a member can invite anyone else in slack domain.. If one doesn't already exist, we suggest create a language channel using the international format
  • apex_nl
  • apex_de
  • apex_ru
Or city based, eg:
  • apex_perth
  • apex_nyc
  • apex_birmingham
We hope this will reduce channel clashes and help consistency.

Direct Messages

Direct messaging is available, just like most other networking sites, but please consider standard etiquettes. Not everyone likes private messaging.

Back to a utilitarian perspective, you can define a group of people for a private conversation. New message appear bolded like the channels, with the addition of a message count.

Membership is growing quickly, so it's possible to put your friends, colleagues and favourite channels in a starred section, back up the top of the sidebar.

As a Gmail user, I find this perspective rather familiar.


The Slackbot helps you start out and has potential for future utility just like Siri, as you type commands into the message box prefixed with the / slash.

Command shortcuts
There are actions it can do now such as set reminders, but keen an eye out for this little AI. You can also use it as a place to test out messaging features.


I've found the message bar rather impressive. For a start it handles me pasting an image from the clipboard, enabling me to add some meta information before posting. In addition to this common need, it's possible to upload documents, pictures, videos and does it with a smooth UI.

This screen grab shows some examples that all programmers should be interested in. Inline code, the result of talking to the AI, multi line code and a snippet example I used after being gently prompted as I started to write code. There is a more direct option under the plus button.

Markup examples

The markup options are suggested on the bottom right. If you want to include something larger than a few lines of code, check out the snippet popup. Is this tool for built programmers or what?

Add snippet

You can use the @ symbol to mention people within a message so they receive addition notification. 

This can also be useful in a larger discussion if you need to keep information in the group but focus your contribution to someone in particular, just like Twitter but with more elbow room.

And hereby lies an example of how Slack can be effective, highlighting a nugget amongst the chaff in the #javascript channel.


The search facility is a clever looking bit of UX, and for a community our size it should filter through a decent look through the past. Ten thousand messages to be exact, enough to be current.

Slack search 
Back to the UX, as you can see from the screenshot the search for "workspace" was effective. Clicking on any of these cards expands the neighbouring conversation to help with context.

For a more generic guide on what you can do in Slack and how, try

There are some awesome shortcut commands for the keyboard warriors out there. For instance, after submitting message you can press the up arrow to quickly edit a mistake. Ctrl / will display the current shortcuts.

As good as I find the browser experience, apparently there's also dedicated applications for most device types.
I've tried the mobile app and it's clean and easy.


The tools I've mentioned serve their niche well. For instance the OTN forums are great for technical questions, but I'm not sure Slack is the best medium for this. Slack is more of a technical discussion board than a technical answer board.

Something might arise in Slack, but as soon as it starts looking like a forum post with connection details being passed, it probably belongs in the forum. Though people on the forum might get places faster in a private discussion on Slack, timezones permitting. In this time of exploration we'll probably find more examples of the Forums and Slack complimenting each other.

Twitter can also be good to throw something to the crowd in a sentence or two, hoping to elicit a response directing to more detailed information. If the conversation gets deep, transfer it to Slack. This might encourage others to contribute to a conversation that can get lost in the quicksand that is Twitter.

I find Slack a place where a conversation can be had about current events, or asking "has anyone done this potentially esoteric thing". Or something that used to be an email discussion where some listened, others contributed, and we all got frustrated at such an unconsolidated feed.

Keep an eye out for a concise set of guidelines from the team shortly, so we all try eke the best out of a useful tool.

Looking forward

Slack is a modern tool with a lot of potential. The #orclapex community is still exploring it but I think it's effectiveness is already shining through. People have asked various questions about current events and received feedback from around the world. It's similar to Twitter, but more focussed and digestible.

As I wrote this post I asked if anyone else had experienced what I thought was a strange behaviour I encountered today. Within minutes Patrick Wolf suggested I turn Escape Special Characters off my column, something I'm sure I thought I tried but sure enough, I was on my way.

As OOW15 was going on, people who weren't at the event wanted to get involved in the converation, seeking further information announcements like as Oracle JET. Sure, people were also doing the same thing on Twitter and the OTN forum, but the tone of the discussion on Slack was more accessible. I found it encouraged more participation. Less like we're on a giant spinning planet keeping us all geographically distant, well, me anyway.

There are downsides, Juergen read about a team that outgrew Slack, where the free plan allows search/browse of the last 10k messages. That sounds like a lot until you have thousands of users. The tool will still be a useful communication device, but one will hope the future 'Enterprise' pricing plan will help larger user sets since a per person charge for even a modest group would probably price communities like ODTUG out. The orclapex domain is currently at 321 confirmed members, so with modest participation rates I think we'll be ok for now. You never know, by that stage we might have a searchable archive on

I'm sure the greater community will work out how to use which tool most effectively and for what content. Either way, I recommend keeping in touch! Let's make this big world a little smaller.


Monday, 2 November 2015

ODTUG APEX Gaming competition submission - Boggex

This post announces my humble attempt for the ODTUG APEX Gaming Competition 2015.

You can play the game yourself at
The about section allows you to download the current source I have exported.

I originally wasn't going to submit anything since I was busy writing a book this year, but I got inspired by something one day and thought I could at least submit something as long as I follow two major criteria:

  1. Minimal time spent to create
  2. Declarative as possible

Besides some allowances made to work nicely on a mobile, I think I fit both of those fairly well. It's a fairly basic framework over a fairly basic idea.

Besides the simple but addictive game play, there are two other tabs of interest:

'Tech' begins to details some of the technical aspects of the game. I'll be converting some of this detail into a presentation, hoping to illustrate some interesting concepts.
'Stats' shows some pretty graphs that show some statistics people might find interesting. This is also the precursor to a presentation idea.

Feel free to use the Feedback option to send me thoughts, ideas and constructive criticism.

- iOS users - Fixed the fact you can't touch letters by adding touchpunch.js using 'touchstart click' as custom event for click letter. Wasn't a problem with the non-Apple devices I had on hand!

Otherwise, have fun! I can't wait to see the entries from those smarter and less time poor than I. On Twitter a few weeks ago I saw some submissions from other entrants, I think the organisers are thinking 'mission accomplished'.


Wednesday, 21 October 2015

Permission to board,

Let's see, what happened in the last 24 hours or so? announced, everyone feeling the awesome.

I joined slack, I must say the curiosity rover self portrait helped sway my decision.

Got involved in some geeky discussions, bounced some ideas around.

Put my hand up to help with content.

Now involved in project.

I must say, after talking with Juergen he's affirmed my first impressions of this project. It's 100% community driven, and the project group want to maintain that integrity. I think this serves a great basis to cultivate some even grander ideas for the future.

Tuesday, 20 October 2015

APEX 5.1 revised SOD and

Two big announcements, one awesome product.

Statement of Direction

Today I think David Peake saw the wave generated by the announcement of and decided to also announce a revised Statement of Direction (SOD) for APEX 5.1, or he could try convince me it was a coincidence.

Not long after I started blogged I decided to follow these documents to try keep a feel of what's going on. It seems there have been a few adjustments since the initial iteration of 5.1 direction.

  • Interactive Grid - I'm glad they've finally settled on a name, because I didn't think "multi-row edit region type" was really gonna slide. This will no doubt be the talk of 5.1, speaking of which I think someone's been waiting to do a presentation on this for years. I think with the quality of solutions now coming out of the APEX team this will surely impress. I envisage a widget where declarative settings and built-in dynamic actions replace a lot of jQuery, plus JSON magic for communication with the database.
  • Master detail detail - this has been included in the statement of direction at least since 4.1. I can't say I'm in a rush for it, but I could be swayed. 
  • New Charting Engine - this is probably the most interesting announcement of all. A new JavaScript based charting engine developed by Oracle which produces responsive and accessible HTML5 charts. That's a lot to digest. First, AnyChart is on the way out. The AnyChart version was not upgraded to HTML5 enabled library in APEX 5.0, and I remember a discussion at Kscope15 suggesting it was not the library for the future. Plenty of plug-ins are being produced in and out of Oracle using the D3 reporting engine, but posit they will build their own? Perhaps using as an existing framework as a basis? A feature that may have held the AnyChart engine back was the ability to export to PDF/Image, which may extra work with a HTML5 solution, but hopefully on the list. Maybe the biggest advantage of an in-house solution is the tighter coupling to the database, I can't wait to hear more.
    Update - some information from Patrick Wolf.
  • Page Designer - I didn't really understand this sentence about the integration of the component view, nor the comment about attributes moved from rendering pane to property editor. I think I need a picture to paint these words, though Christian's post describing a UKOUG event help fill some gaps.
  • Improved Wizards - Wizards are like propellers, continuous refinements over time make them even better and more efficient (but we'll always have steps/blades). Keep them coming. Though have you noticed how infrequently you're using wizards now? Add a shortcut key for Duplicate, please!
  • Declarative RTL support - common question in forums, bring it on for those in the world that need it. I think Universal Theme has already made steps towards this, it just needs more refinement. Hopefully we'll see even more improvements and templates with the Universal Theme itself, I've already noticed some.
  • Packaged apps - over time these updates seem to migrate to being baked into the product. They're also full of design ideas, and comparable to design solutions elsewhere in the market so consider that has confirmation of the Oracle finger on the community pulse, if you will.

Unless you're living under a social media rock, Juergen and friends in association with ODTUG announced To summarise, it was noticed at conferences that only the minority utilised social media tools like Twitter, even though they are a great resource of information, collaboration and light hearted humour. Other tools like Slack out there are appear to be used by engineering communities (among others) for collaboration, and I'm already hooked. 

Twitter is an open platform, you don't need to be a member to read most feeds. Integration options are out there for other sites. brings this information to one site, hopefully filterable in such a way that you get what you need.

On top of this, it opens the invitation to be the new home for APEX plugins, integrating very elegantly with github. A job market has also been included in the initial release.
Plenty of ideas are flowing in for expanding it as the one-stop-shop for other repositories. I suggested including a list of sample APEX applications, something I started once upon a time and planned to continue next year, but opportunity beckons for a more fitting home.

All built on Oracle tech of course, with plenty of community help integrating a number of services. Great work gang!

update - 5.0.2 now available

Thursday, 15 October 2015

The Oracle Development Community is Buzzing

I don't know about you, but it sure seems like a fire was lit somewhere in Oracle and now there are all sorts of things going on in the development community.

We've had some discussions about this over the water cooler and I think there are many positives we can take out of this engagement, and I think a deeper message being sent to veterans that Oracle is still up for the game against the younger competitors.

The Oracle Developer Advocates Team

I think this is one of the best initiatives to come out of Oracle for some time. They've basically recruited some of the most passionate voices in the Oracle community to help the rest of us create faster, secure, more maintainable applications.

I first noticed this with Dan McGhan running, a site I have not been able to keep up with considering other projects this year, but what a site it is. There is a long term coupling of JavaScript, Node and APEX and I can't think of a better person to spearhead the sharing of knowledge in the community.

I'm lucky enough to live in the same city as another advocate, Connor McDonald. This actually means I work within a stone's throw, but we don't nearly enough catch-up beers. I can't say enough about his presentation ability, but his on the job passion is second to none.

Steven is obviously Mr PL/SQL, and I met Todd briefly at Kscope15. Given this pedigree, I trust the others in the group bring superb qualities.


Tom Kyte has been running this site for a long time, just before I started my Oracle career. I'm impressed he's managed it by himself for so long, but now the reins have been handed over, and the choice of Chris Saxon and Connor for replacement is spot on.
When first started this site sure helped me form better practices in SQL and PL/SQL. I don't use it so much anymore, but I agree with the message from up high in Oracle that this site had to continue, and become more active.

If you've encountered, then you might have also seen Today on Twitter I saw an announcement for, complete with supplied scripts and tutorials.

This is a brilliant idea, and it's I think it's awesome they're using APEX for delivery. You'll no doubt find many AskTom answers and demonstrations linking to this site, and I think it will be a great repository for developers


I'm a long way from Rome, but with the aid of modern technology I'm able to keep my finger on the pulse, and it sure seems strong. It seems these days you kind find yourself a reasonably close conference targeting developers regardless of where you live. If you haven't been to one I highly recommend it, for the experience, the learning and the camaraderie.

If you're unable to attend a conference, ODTUG hosts many webinars, one of which is coming up next week that apparently all APEX developers should tune in for. Midnight challenge accepted.

I have more experiences to share from my time at Kscope15, still some hand written notes and mental thoughts I'd like to translate to the blog. It's still got me thinking about the community, and how amazing the ODTUG team is at serving it. Become a member and have your say in the board.

Oracle Open Source

If I were to guess the topic of the Top Secret APEX Community Event, I would say it has something to do with the gathering momentum of an Oracle open source project at I've heard a bunch of ideas and promises come from that direction, and so far the organisation of a bunch of stubs.

They have big, useful things in the works, time for pay dirt?

Oracle Database Developer Choice Awards

Voting closes at some point as the planet rotates today, but I hope you voted for a few people. It's another new initiative, maybe not done quite right but it's early days and there are many years to come.

If you're on social media it would be hard to miss ongoing commentary about some of the issues faced in regard to voting. I'm not going to go into detail, but let's remember it's early days in a new idea and mistakes will be made and learned from. It sure took a long time for the Nobel prizes to sort the crap out, just ask Rosalind Franklin.

Internet voting is hard. The organisers inherited an existing framework with some unforseen pitfalls. Perhaps next year a shiny APEX application will take its place. maybe with a modified voting system.

The spread of categories is certainly developer centric, another win for us. I was humbled when asked to be involved in the judging process for the APEX category. I figured if I'm a judge in something, surely that means I would warrant nomination for such an offer, or so my ego went.

However, this means congratulations should be forwarded to not only those nominated (and the other judges of course), but the many skilled developers out there who were not nominated simply due to community apathy, something that Tim Hall had a little rant about. There were also nominees that became ineligible by virtue of residing in a particular country. One nominee couldn't be added, ironically while organising a separate competition.

The same can be said for passionate, skilled developers out there who are not recognised as ACEs. I still have a post drafted diving into my thoughts on the program, but for the awards the APEX judges decided nominated ACEs have already received deserved recognition, and we as a community wanted to find some more diamonds in the rough. Some future ACEs no doubt.

As a judge I was ineligible to vote, but now voting is closed I thought I'd share some thoughts on each category.


This first category demonstrates an interesting issue regarding internet voting. With all due credit to Emrah, I think an active local community has come together to support their nominee, and he will come out of this a more noticeable member of the global community - mission accomplished.

I would like to thank Kim Berg Hansen for his very active presence online. I haven't participated in the PL/SQL Challenge site since Steven Feuerstein started wearing red shirts, but Kim's SQL quizzes are excellent and that takes commitment.


Kudos to some nominees here crossing categories, but for me the standout in helping my understanding of some of the most useful but slightly more complicated features of the database is Adrian Billington. The website has articles that effectively explain some tough topics. These OakTable fellows sure are made of the right stuff.


I haven't had enough time to really play with this product. A colleague has done most of the infrastructure work for our current client and I'm waiting for a chance to eke some more leverage out of this maturing product.

I asked a question on the forum about ORDS recently and was reminded how much I didn't know, and how much Dietmar is all over this product. In my mind a deserved inaugural winner.


Being so involved in this product now I could say plenty about each of the nominees, and illustrate how hard it must be to compare apples to oranges to mangoes. They've all contributed in relatively uniquely ways, and Morten in nominated once again.

Trent is probably the quietest achiever of the group, though I know his blog posts are quality over quantity and I've learned from his plugin dabblings.

If anyone has used the forum they've encountered Paul MacMillan as fac586. I think everyone must have learnt at least something from his replies.

Karen is the IR queen. I think our circles and geography differ somewhat, but that's why they asked for geographically diverse judges.

Morten has done amazing work in building a library of useful libraries. Hard to top and at this point he may have pipped Juergen, a new kid on the block but what a demo app for dynamic actions! And awesome work starting an APEX podcast with very interesting interviews.

Kiran Pawar has been a recent star in the forums, quick to provide good references to people looking for information. I have criticised some of his answers recently but I'm sure the same could be said for some of my responses, and certainly questions. I made some doozies recently.

Jari Laine is a JavaScript wizard that I've learned plenty of practical applications for jQuery. I could not have built such a versatile tablet application without integrating some work he's shared.

Database Design

Surely this is the most esoteric of the categories, but at times I really do miss some of the best designers I've encountered. I can't add much beyond congratulating fellow Perth technologist Mark Hoxey as a nominee. Someone obviously thought enough of his contribution to best practice to place a nomination, well done.

Final Thoughts

If you think support for Oracle technology is waning, think again. There's plenty I've missed, stuff I don't know, and time & spirit to nurture and cultivate some great ideas. With such a large amount to learn, I find solace in a community that facilitates such a variety of options to learn. I'm glad I have freedom to contribute my part.

Tuesday, 29 September 2015

Generating JSON from SQL cursor

It appears there will be a good 1001 uses for the APEX_JSON package in APEX 5, here is one of them.

Previously I had an AJAX PL/SQL callback that returned a relatively simple JSON string, using the LISTAGG technique described by Lucas here.
  l_json varchar2(32767);
  select listagg('{"id":"'||version||'","content":"'||version||'.x"}',',')  within group (order by null) json
  into l_json
  from (
    select distinct substr(version,1,1) version
    from  apex_timeline
    order by version

end getGroups;
Now it can be further simplified by taking LISTAGG out of the equation, which can be a problem for larger data sets:
  c sys_refcursor;
  open c for 
    select version    as id
       ,version||'.x' as content
  from (
    select distinct substr(version,1,1) version
    from  apex_timeline
    order by version

The output differs only slightly
[ { "ID":"1" ,"CONTENT":"1.x" } ,{ "ID":"2" ,"CONTENT":"2.x" } ,{ "ID":"3" ,"CONTENT":"3.x" } ,{ "ID":"4" ,"CONTENT":"4.x" } ,{ "ID":"5" ,"CONTENT":"5.x" } ]

A few extra spaces in the apex_json version. If lower case required for JSON attributes then use double quotes around column aliases, ie: select version as "id"

Oracle 12c JSON APIs seem to be all about validating and deconstruction, while this API has a bunch of overloaded apex_json.write() modules, including support for CLOBs.

Craig Sykes demonstrated how this could be done dynamically with a simple page.

Review: The Martian

I think we have a new genre of films for those consumers yearning for science and exploration.

First Gravity took us on a cinematographic journey into low earth orbit.
Then Interstellar took us on an inception style ride.
If you liked these you may enjoy Europa Report, which has a 2001 feel to it.

Now we have The Martian, which only a few years ago was still in the imagination of write Andy Weir. The book has an amazing backstory, you should have a listen.
Thank you 20th Century Fox

This review from Kirstin Acuna nailed the comparison to Castaway (another of my favourite movies), but I'd like to comment on some of her conclusions.

Biggest obstacle: Science.

Let's think about the target demographic for a moment, shall we? Audiences have been yearning for this style of moview, and good, sensical dialogue should not be compromised for the lowest common denominator. Have a read of this parody [cached] regarding if sports was reported like science, then come back to reconsider.

Book vs Movie

I haven't read the book yet, but I would agree with Kirstin in that you should watch the movie first. I don't know how the book ends, but the cinema took me on an amazing journey, and I can't wait to go deeper in the book.
I didn't come out of movie bummed out with disappointment like Sphere, though perhaps in that case it shows movies just can't always translate to the screen.

Comparisons to Interstellar.

Movies will be compared to other movies all the time. You know the amazing thing about The Martian? No bad guy, no agenda, just the "love letter to science".

See it in 2D.

I beg to differ, see it in 3D. We don't need scenes constructed simply to satisfy an intense 3D experience. The Martian does an amazing job of taking you to the planet, go experience it in 3D to help with that journey. I also recommend sitting near the front where the screen fully immerses your peripheral vision, though I recommend taking a few things to cover the little arm rest lights we had in our cinema.


Watch this movie, I can't recommend it enough.
Thanks to my colleague for getting me pre-screen tickets - I think I will be seeing it again before too long to help my brain process it all!
Also, hang around for the credits. Not only does it start perfectly, the credits blend nice and neat.