Skip to main content

APEX Connect 2019 - After the first ever conference speech

This year I was first time presenter on APEX Connect 2019 in Bonn. First time ever!
This was a huge for me. Before this one I did some internal presentations and worked as APEX trainer from time to time, but this was a first one on international conference. The amount of stress was far above my normal limits! :)

But. It's all worth it! The venue was great! The organization was great! The people were great!

We all know that going to conferences take time and money, but going there will give you more. You can gain some knowledge from presentations. You can talk with others about same problems you had. And ask some valuable questions to Oracle developers who are responsible for things you work with (eg. APEX or SQL Developer). This is huge!

Above that there is this nice community where you can feel like one of this big herd of nerds like you ;) You'll feel great as you can finally talk with someone that understands your "IT" talks and will actually response to you with something that matters (not like my wife does, no offence ;) )

PS. The presentation was "MIP - Make It Pretty" that explains the unicorn in the slide :D as it is very pretty and makes all cheer and happy :D
The presentation can be found here:


Popular posts from this blog


About 10 years ago I tried to build APEX application on MS SQLServer. It was possible but performance was not satisfactory. (You can read this post here) ... Today I will describe how to use APEX with MySQL. Obviusly I don't think it is good idea to build APEX app only on MySQL. It can be used as part of Hybryd solution (Oracle + MySQL or Postrgres). My description covers integration with MySQL. As a result will be APEX application with Interactive Report and CRUD form based on MySQL data. Description contains two parts: First part is a MySQL site, Second part is a APEX application part Prerequisites: Oracle 11g+ APEX 18.1+ MySQL/Postgres RestSQL I. MySQL Part 1. MySQL contains simple  apexdb database with one apexutil table. 2. To use this database install RestSQL. What is RestSQL? RestSQL is an open-source, ultra-lightweight data access layer for HTTP clients. RestSQL is a persistence framework or engine in the middle tier of a classic three tier archi

TWO-Factor Authentication with APEX application.

Two-factor authentication means that you must have two factors, to access your account. The first factor is something you know, like your login and password combination. The second is something you have, like a mobile device with a security app installed. That second factor — the mobile device with a security app — adds an extra layer of protection to your account. Even if hackers steal your password, they can’t log in, because they don't have your mobile device. Try 2FA on our SANDBOX environment! It is the most popular 2FA option based on Times-based One-Time Password (TOTP) alghoritm described in RFC 6238 and RFC 4226. TOTP is supported by Google Authenticator, Microsoft Authenticator, Authy 2-Factor Authentication and many other mobile apps. The most popular online services like Facebook, Google, Twitter use TOTP to protect user's accounts. TOTP is a standard algorithm based on cryptographic hash method SHA-1. SHA-1 algorithm's implementation is available sin

SQL query result as JavaScript array

Today there was a need of using simple, dictionary SQL query result as an array in JavaScript. Solution is quite simple - region with PL/SQL Dynamic Content. Here you have a short video with example. Changing Select List causes showing Checkboxes in rows, on which specific action can be processed. Code of PL/SQL region, which creates array: htp.p('<script>'); htp.p('var actions = [];'); for x in (select ID, STATUS_FROM from ACTIONS ) loop htp.p('actions[' || || '] = "' || x.status_from || '";'); end loop; htp.p('</script>'); JavaScript code for Dynamic Action, which uses the array: $("input[name='f02']").each(function(){ if (this.getAttribute("status") == actions[$v("P18_ACTION")]) { = "block"; } else { = "none"; } });