Skip to main content

Kscope18 flashback

After a few nights of good sleep (that means more than the average 4 to 5 hours at Kscope), it is time to sit back and evaluate what happened last week. I arrived on Thursday night before the event, just in time to catch Danny Bryant at the bar for "just one last beer" (I don't know how often I heard, and used, that phrase last week).
The whole Friday was filled with an all day Board Meeting, mainly discussing the future of ODTUG, a reception and a fine dinner. Since a couple of years, Saturday is the Community Service Day. This year, an impressive number of people showed up and were transferred to "Up Orlando", to make its easier for them to help the people that really need some help. All kinds of different activities were done, like cleaning, filling shelves, painting chairs etc.
 After that there is another tradition: bag stuffing. All those (about 1500) bags didn't get delivered with all those goodies in there! A number of volunteers created the most efficient human machinery to fill those bags. An hour or so at the poolside to wind down, before registration opened and the people started to drop in in huge numbers. The evening was concluded with an unscheduled "Spirit Tasting" event - very risky at the start of the conference!

The Sunday started off after breakfast with a joint Database/APEX symposium session by Mike Hitchwa on the Oracle RAD stack: REST. APEX. Database. You don't need more than that to create stunning, reliable applications in the most efficient way! Most other sessions that day I had to skip due to "Board Duties" like the rehearsal of Monday's General Session, but I returned just in time to hear Joel's "State of the Union". A great APEX future is ahead of us! An APEX MOOC, a new Certification (with NO WEBSHEETS QUESTIONS!) and APEX Office Hours. And of course rewarding Juergen Schuster for all his work for the APEX Community! Next was the Welcome Reception, dressed up as your favourite character. I was glad more people than the Board and the Conference Committee came dressed up! I got quite some attention and remarks wearing my Ironman costume (it took a few drinks to feel at least somewhat comfortable wearing it) ... even in the days after!
Apparently some things can't be unseen ;-)

Monday started off with the General session - with the clips we made in January as an attempt to make it somewhat funny. If we succeeded or not ... I leave that up to you. The videos will appear on YouTube soonish I heard.
In between the meetings, interviews etc I managed to catch at least two full sessions, one of it was  "APEX as a Progressive Web App (PWA)" by Vincent Morneau. Really interesting stuff, maybe not for the next couple of weeks or months, but keep an eye on it for the future!
After Happy Hour it was "Community Nights". Database/BI Trivia, EPM Lip Sync Battle and APEX Show & Tell. I went from one to the other and back to catch as much of the community vibe I could. After this there was another huge Happy Hour sponsored by some if the vendors in the hotel lobby bar (again "ok, just one more...").

Tuesday started early with the 5K "Fun Run" in the sauna named Florida. The temperature is not the
problem here, but the 98% humidity makes running longer than 10 minutes really hard. But nevertheless about a 100 people showed up early o' clock to torture themselves (and feel good afterwards).
After two interesting sessions, the ACE Briefing and one session by myself, it was time for the ACE Dinner. This turns more and more into a reunion. People you haven't even spotted during the first few days turn up here. And a lot of new ACE's were announced, amongst who quite a number of APEX developers! A recognition for the community!

Wednesday I managed to catch two more sessions (about Additional Templating Engines and Docker)  before I had to head up for the Leadership Graduation. For the people that are unaware of this: every year ODTUG invites a group of people into the Leadership Program. They work their way through a curriculum ending with a presentation of their end result to the Board. This year's group did very well with a very useful and elaborate project.
And after that it was time to get dressed up for the Wednesday event party at Andretti's. I guess the karts were everyones favourite, although I also spotted lines for the Zombie shooting and some other attractions. About half of the group went to the after party in Mangos, the other half created their own (just little more quiet) afterparty in the lobby bar - and that's were I was for just one more drink ;-)

Thursday, already the last day of the conference. A lot of people had quite a hard time to get up and attend the sessions, luckily we started rather late with the "#LetsWreckThisTogether APEX Talks". And as usual they were great. All grouped around one subject: JavaScript. And as I am most certainly not an expert in this matter, I picked up some interesting facts and ideas here and there!
And after the Closing Session it was time to end this year's show. I could finally spend another two hours at the pool before heading to the airport for the (long) trip home.

Although Kscope is a totally different experience when you are on the Board (not necessarily worse, just different), I had a blast - just like all the previous years.

I hope to see you all back in Seattle at Kscope19!


Comments

Popular posts from this blog

apex_application.g_f0x array processing in Oracle 12

If you created your own "updatable reports" or your custom version of tabular forms in Oracle Application Express, you'll end up with a query that looks similar to this one: then you disable the " Escape special characters " property and the result is an updatable multirecord form. That was easy, right? But now we need to process the changes in the Ename column when the form is submitted, but only if the checkbox is checked. All the columns are submitted as separated arrays, named apex_application.g_f0x - where the "x" is the value of the "p_idx" parameter you specified in the apex_item calls. So we have apex_application.g_f01, g_f02 and g_f03. But then you discover APEX has the oddity that the "checkbox" array only contains values for the checked rows. Thus if you just check "Jones", the length of g_f02 is 1 and it contains only the empno of Jones - while the other two arrays will contain all (14) rows. So for

Filtering in the APEX Interactive Grid

Remember Oracle Forms? One of the nice features of Forms was the use of GLOBAL items. More or less comparable to Application Items in APEX. These GLOBALS where often used to pre-query data. For example you queried Employee 200 in Form A, then opened Form B and on opening that Form the Employee field is filled with that (GLOBAL) value of 200 and the query was executed. So without additional keys strokes or entering data, when switching to another Form a user would immediately see the data in the same context. And they loved that. In APEX you can create a similar experience using Application Items (or an Item on the Global Page) for Classic Reports (by setting a Default Value to a Search Item) and Interactive Reports (using the  APEX_IR.ADD_FILTER  procedure). But what about the Interactive Grid? There is no APEX_IG package ... so the first thing we have to figure out is how can we set a filter programmatically? Start with creating an Interactive Grid based upon the good old Employ

Stop using validations for checking constraints !

 If you run your APEX application - like a Form based on the EMP table - and test if you can change the value of Department to something else then the standard values of 10, 20, 30 or 40, you'll get a nice error message like this: But it isn't really nice, is it? So what do a lot of developers do? They create a validation (just) in order to show a nicer, better worded, error message like "This is not a valid department".  And what you then just did is writing code twice : Once in the database as a (foreign key) check constraint and once as a sql statement in your validation. And we all know : writing code twice is usually not a good idea - and executing the same query twice is not enhancing your performance! So how can we transform that ugly error message into something nice? By combining two APEX features: the Error Handling Function and the Text Messages! Start with copying the example of an Error Handling Function from the APEX documentation. Create this function