24 May, 2017

Things I have done in my life.

Maybe its the fact that I'm coming up on my 50th birthday. Maybe its that I'm kind of at a crossroads in my career. Maybe its because I'm a sappy sentimentalist that just like to nostalgically recount his experiences.
What ever it is that drove me, few months ago I started writing down the things I have accomplished in my life. As the weeks moved on I'd think of something else and write it down. To date I've compiled quite a list and going over it, I feel very proud of what I've done. Hopefully this list will continue to grow.
I'm not sharing this to brag. Some of the things I would definitely brag about. I'm sharing this to encourage people to create their own lists. You may be surprised at what’s on it. If not, get out of your comfort zone and live life! Stop thinking What if? and start thinking Why Not!

Thing I have done in my life 
  • Lived on another continent 
  • Loved unconditionally
  • Risked everything to do something that I didn't know whether I could do 
  • Given up everything for love
  • Become a recognized expert in a technical field 
  • Built and sold a company
  • Completely failed and rebuilt my life 
  • Sold everything I own, twice 
  • Written a book (4 actually)
  • Lived completely outside of my comfort zone
  • Learned a martial art 
  • Seen the remains of an incarnation of Buddha 
  • Prayed with a Buddhist monk, baptist minister, catholic priest and a shaman
  • Seen someone I love die 
  • Met and conversed with celebrities 
  • Dined in the UK Houses of Parliament
  • Learned about wine 
  • Visited 4 of 7 continents (working on the other 3)
  • Learned another language 
  • Felt true passion 
  • Stood up for what I believed regardless of the cost 
  • Performed a completely selfless act 
  • Left what a relationship knew to be “safe" because I knew it wasn't right for me
  • Changed several peoples perception about what it means to be gay
  • Helped raise a child 
  • Sabotaged something good in my life because I didn’t think I deserved it
  • Been poorer than most people can imagine 
  • Earned more money than I thought I ever could 
  • Escaped small town midwest life to become a world citizen
  • Been plucked from death by an unseen force 
  • Been a professional dancer 
  • Mastered a musical instrument 
  • Sung in front of thousands of people 
  • Been brought to tears by beauty
  • Been completely and utterly rejected 
  • Built something from scratch 
  • Cooked a meal of 4 star restaurant quality
  • Owned over 30 cars 
  • Rescued an animal
  • Killed for my dinner 
  • Celebrated my birthday twice by crossing the international date line 
  • Skied a double black diamond 
  • Taken drugs 
  • Married the person I love 
  • Considered taking my own life 
  • Written poetry
  • Longed for something so much it made me physically ill 
  • Disappointed my parents
  • Cut my family out of my life 
  • Lost friends to AIDS 
  • Come close to death 
  • Cruised the Caribbean 
  • Seen an Alaskan glacier calve 
  • Hiked where few people have ever walked 
  • Been diagnosed with a life threatening illness 
  • Lied to feel more popular 
  • Been so scared I could not move
  • Had a panic attack 
  • Shared a rare intimate and personal moment with a complete stranger 
  • Had an unrequited love
  • Been physically abused in a relationship 
  • Been beaten up and bullied at school
  • Worked in a factory
  • Spoken in front of hundreds of people
  • Taught people my skills
  • Laughed till I cried
  • Contributed to Open Source Projects
  • Stolen food when I had no money to pay for it.
  • Broken my shoulder
  • Seen a Psychic
LIVED WITHOUT REGRETS!

04 April, 2016

Warning APEX Users of Form Changes on Navigation away from the page.

It has come to my attention the the link back to this article that originally appeared on the Enkitec.com web site is broken. Knowing that people still find this useful, I've copied it here so that it can be easily found and referenced.



It's a common problem. A user spends time entering data into a form and then, for some reason, clicks a button or tab that will navigate away from the form without saving his data. Wouldn't it be nice if there were a way to warn the user that the data hasn't been saved, and that they may lose their work?Well, there actually is a way to do this in JavaScript, and you don't have to do a lot of work yourself. Here's how...

The following JavaScript is the key for Standard APEX Forms. You can include it either in the HTML HEADER of the page, or in an HTML Region on the page:

<script type="text/javascript">

function onChangeinit() {

// This function sets up those fields in <strong>STANDARD APEX FORMS</strong>
// which should trigger the "Are You Sure" Popup box upon
// navigating away from the page.
// First set up the array of elements in the form
// This method uses JavaScript to create an array of elements.

var fields = document.getElementById('wwvFlowForm').elements;

// Now loop through the array and assign the on-change event
// The onchange function sets the value of a JavaScript variable
// to '1' to show that something has changed.

for (var i=0; i<fields.length; i++) {
     $x(fields[i]).onchange = function () {
     window.unsaved=1;
     }
   }
}

// Now Set up the UNSAVED variable
// and the function that checks it on UNLOAD.

window.unsaved = '';
window.onbeforeunload = function() {
    return window.unsaved ? 'There may be unsaved changes to your data.' : undefined;
}
// And you're done.
</script>

For APEX Tabular Forms, the code needs to change just a bit to cover all the iterations of the fields on the page:

<script type="text/javascript">

function onChangeinit() {

// This function sets up those fields for a <strong>TABULAR FORM</strong>
// which should trigger the "Are You Sure" Popup box upon navigating
// away from the page.

// First set up the array of elements in the form
// This method uses JavaScript to create an array of elements.

var fields = document.getElementById('wwvFlowForm').elements;

// Now loop through the array and see if the id matches the format f99_9999
// If it does, assign the on-change event.
//
// The onchange function sets the value of a JavaScript variable
// to '1' to show that something has changed.

for (var i=0; i<fields.length; i++)
    if (fields[i].id.match('^f[0-9]{2}_{1}[0-9]{4}$'))
    {
      $x(fields[i]).onchange = function () {window.unsaved=1;}
    }
}

// Now Set up the UNSAVED variable
// and the function that checks it on UNLOAD.

window.unsaved = '';
window.onbeforeunload = function() {
    return window.unsaved ? 'There may be unsaved changes to your data.' : undefined;
}

// And you're done.
</script>

The onChangeinit JavaScript function needs to be run whenever the page loads. To do that, we call it by placing the following JavaScript in the Execute when Page Loads attribute at the page level.

onChangeinit();

Finally, we want to provide a way to short circuit this for instances where we want them to be able to press a button without getting the message. The most common example of this would be the SAVE button. Again, you can include it either in the HTML HEADER of the page, or in an HTML Region on the page.

<script type="text/javascript">
function preSubmit() {
    // Call this before any action where you want the user
    // to be able to navigate without the warning message.
    // For instance, add this to the BUTTON ATTRIBUTES of the
    // SAVE button of your form.

    window.unsaved='';
}
</script>

The last thing to do is edit any buttons that we want to be able to submit the page without being warned and make sure they call the preSubmit JavaScript function.

To make this change to SUBMIT buttons, edit the button and do the following:

• In the Action When Button Pressed region, change the Action to Redirect to URL
• in the URL Target enter the following:

javascript:preSubmit();apex.submit('<>');

Make sure the that <> in the code above is actually the name of the button that you’re editing. That way when the apex.submit JavaScript function is called, it will be as if the user pressed the button.

For the DELETE buttons, edit the button and do the following:

• In the Action When Button Pressed region, change the Action to Redirect to URL
• in the URL Target enter the following:

javascript:preSubmit();apex.confirm(htmldb_delete_message,'<>');

Again, make sure the that <> in the code above is actually the name of the button that you’re editing.

That's it. That's all there is to it. The nice thing about this is that it will even catch changes made by other JavaScript.

08 January, 2016

Beginning Oracle Application Express 5 is OUT!

After a few grueling months, late nights, long weekends and some cursing into my sleeve, it’s finally out.

Beginning Oracle Application Express 5 is the updated version of the book which not only includes an all new guided tour of the APEX 5 Page builder, but also takes you through developing an entire system from soup to nuts. 

My thanks to all the people at A-Press for being patient while the initial versions of APEX 5 were still being released. (FYI - Writing a book against beta and early adopter versions isn’t the smartest decision!). Also thanks to my technical reviewer Warren Capps. Again he was an invaluable resource and caught things that I would not have thought about.

I hope that this book helps not only guide those new to Oracle APEX, but also helps some of those that want to get fast tracked on APEX 5.0.

The book can be found at the APRESS Site or on Amazon.

Enjoy

 

9781484204672

16 October, 2015

Google Chrome+ OS X + VMWare Fusion 8.0.1 = No Bueno

As those who read my blog know, I recently started a new job with Oracle. A very large part of what i do means being connected internally through the Oracle VPN. Having been a consultant for many MANY years, I’ve come to the realization that putting a fence around VPN is a good idea wherever possible.

So instead of installing the VPN, Proxies, and the required software on my iMac, I created an OS X based VM using VMWare Fusion 8.0.1. This worked great! I could have my VPN up and running and access what I needed to without affecting all the things that were running perfectly on my desktop.

That was until yesterday morning. I woke up, went through emails, switched over to my VM, startup up Chrome and was greeted with this:

Bad Chrome

I had no idea what was going on, and really didn’t even know what to search for.  However, I did know it was working the day before and being a VM, I just restored a snapshot. Hurray. Everything was working again … Until this morning.

Once again I started up chrome and it greeted me with the snowed out display. This time I knew I had to solve the problem. I couldn’t revert to a snapshot everyday and lose all the work I’d done the prior day. That would get me nowhere.

After some searching, cursing, more searching and a couple cups of caffeine, I finally found something on the Chromium forums at Google. According to this thread, it’s a problem with Chrome using it’s in-built hardware acceleration with VMWare 8.0.1. so that feature has to be turned off.  But to turn it off you have to run chrome, navigate to its settings (which is displayed as a web page), uncheck a box and then restart Chrome. No easy task when you can’t ready anything chrome says.

However you can start Chrome from the command line and apply run-time settings to it. Open a Terminal window and type the following:

open -a “Google Chrome" --args --disable-gpu

Then navigate to the Preferences section of Chrome, scroll to the bottom and click Show advanced settings...

 

Scroll down until you find the SYSTEM area and uncheck Hardware Acceleration.

Restart Chrome and you’ll be back on track!

Not sure if this bug affects any other OS’s besides OS X, but just in case ...

25 September, 2015

A CHANGE IN DIRECTION

Having just re-read quite a few of my previous blog posts (especially the last two), I can see that over the last while I’ve been a bit restless and unsettled.

Looking back over my career recently I realized that I've been doing consulting for probably 20+ of my 28 year tenure. I don't regret any part of it as it's taken me all over the world, introduced me to some amazing people and given me hundreds of memorable work and personal experiences.

But if I look at the last 10 years, the things that I've most enjoyed have not been consulting. For instance:
  • My stint as Lead Architect at TXI (where I initially came in contact with HTMLDB) actually kept me from getting out of IT all together.
  • My time as Product Development Director for Hotsos was amazingly rewarding as I not only got to help create something from scratch, but got to manage and work with a great team of smart people for an extended period of time and was introduced to various different programming languages and technologies.
  • Working with Scott Spendolini at Sumneva to help create eSERT and eFramework was much the same. We were able to see a need, fill it, support it and watch it grow and succeed.
  • Working with the Enkitec team to help harden and productize a few of their offerings.
My next obvious question was where to go. And after thinking long and hard about that and examining all the options available to me, one option stuck out in my mind as the next logical step. Over the 28 years I've been working with Oracle technology, I've never actually worked for Oracle itself. And the prospect of doing so was very interesting to me.

So I decided to explore and reach out to a select group of people I knew inside of Oracle who might know of opportunities that I might be a fit for. As it turns out, Mike Hichwa had just the thing.

NewImageStarting October 5th, I’ll join Mike’s group and be working on Oracle’s Cloud solutions. I’ll initially be working on a number of Back-Office APEX applications that help monitor and maintain the various cloud offerings and communicate between operations, account managers and customers. From there I’m sure that Mike and Kris Rice have a list as long as their arms of things they’ll want me to jump in to.

While I see joining Oracle as a huge opportunity, it also means a number of things that I’ll have to leave behind:

First, I’ll be leaving my friends and long time business partners, Scott Spendolini and Tim St. Hilaire, behind to continue with Sumner Technologies alone. I have no doubt that they will continue to make a success of whatever they attack. But it will be weird to be moving in a different direction for the first time in what seems like forever.

Second, joining Oracle means giving up being an ACE Director. The ACE Program has helped me in ways that I cannot express. It helped me focus my energies, become a better ambassador for Oracle, and allowed me to meet and socialize with people that I might now have otherwise been able to. I’ll not only miss the ACE Members, but the lovely people who administer the program. It’s been fun y’all!

Lastly, by joining Oracle so close to OOW, it means that headcount was already set and approved so I won’t be seeing any of you at OOW this year. Maybe next year and probably at the demo grounds!

I’m really looking forward to starting my new adventure and will endeavor to blog as much as I can about my experiences and what I’m learning and doing.

Good luck to Scott and Tim at Sumner as well. Success for everyone! 



01 June, 2015

Coming Full Circle.

In April’s blog post, I alluded to the fact that the future had a number of changes in store and that I wasn't exactly sure what shape those changes would take. Since April, a lot has happened; avenues have been explored, opportunities have been entertained, and decisions have been made. It’s been a very interesting few weeks, but I believe that the end result has been worth the time investment.

So it is with great pride and more than just a bit of nostalgia that I’d like to announce that Scott Spendolini, Tim St.Hilaire and I have re-launched Sumner Technologies; the original company that Scott and I ran together way back in the day.

We’re going to be focusing out efforts on the following areas: 

  • APEX Consulting 
  • APEX Education
  • Security Reviews
  • APEX Architecture
  • Health Checks
  • Oracle Database Cloud Technology 
We’re also going to be working on bringing some SaaS offerings to market, but that will have to wait for a different blog post.
 
I’m excited to start this new chapter of the story and especially excited to be able to provide the types of hard-hitting offerings that can really make a difference to companies using or looking to use APEX. 
 
Come visit the web site, and connect with us on social media! Hope to see you all at KSCOPE15.
 
 Sumner-Logo

Web:  http://www.sumnertech.com
LinkedIn: https://www.linkedin.com/company/sumnertech
FaceBook: https://www.facebook.com/sumnertech 
Twitter: @sumnertech 

 

PS. Many thanks to the crew at Studio Cufflink for the incredible re-branding job they did for us. Incredible work and amazingly professional, even after a bit of a false start on our part. If you need brand Identity work - USE THEM!

20 April, 2015

The Road Not Taken

In June 2012, Scott Spendolini and I signed the papers whereby Enkitec acquired the assets of Sumneva. We announced this big news at ODTUG KSCOPE and it was met with quite a lot of interest and more than a few congratulatory beers. Our goal was to step away from the day-to-day trappings of running your own business (i.e. Accounting, Sales, Paying the electric bill, etc) and focus our core skills in APEX.

During the next two years we hired another person (Tim St. Hilaire) to work with us on expanding our APEX based product suite, continued to work on eSERT, expanded our training offering, and built a world-class consulting team with many of the brightest APEX minds in the US. While not without its challenges, work under the Enkitec umbrella was challenging and rewarding.

However, hovering in the background, just under the surface, the entrepreneurial itch never really went away.

Almost 2 years to the day later, Enkitec announced that it was being purchased by Accenture. Again, we announced publicly at ODTUG KSCOPE, and again the announcement was met with a flurry of questions and more congratulatory beers. The year that followed was an interesting one and again, not without it’s challenges. The APEX team grew. The focus on Consulting was accentuated as Training and Product became less important.

The major change we saw was that the size of engagement we were being pulled into were moving up the scale from reasonably large to huge. There was more to do than ever, and as Practice Directors, that meant being involved at the top level of trying to keep the practice focused and moving forward. No small task but working with such talented people, it was undeniably exciting.

And yet, still waiting in the background, a bit less quietly, a bit more insistent, the entrepreneurial itch was calling.  And here I am, once again just before KSCOPE, making another life changing decision. It was a hard one to make, but I have learned over the years to trust my instinct and follow the call of that annoying little itch. 

What’s next is still a little unclear. There are a number of opportunities to explore and likely by the end of this week, I’ll have a better understanding of what the future holds. Until then I’ll be spending time on the APEX 5.0 Beginner book, to be sure. Which means getting in-depth with APEX 5. 

What I do know is that, “... knowing how way leads on to way, I doubt if I should ever come back…"

Let the adventure begin!