Stolen Articles : Why do you make such a big deal about it?

If you’ve followed me for any amount of time, you will know I get pretty uptight about people stealing my stuff. When I point it out I will often get some comeback from people asking why I make such a fuss about it. Here’s why.

Let me start by saying I am not delusional about what I do. I don’t think any one article in isolation is so special compared to all the other stuff out there. There are a lot of people that do what I do. It’s hard to be objective about yourself, but I think I have a few things going for me.

  • I’m pretty good at deciding what not to include in an article. Despite what a lot of people say, the Oracle documentation is good. The problem is there is much more detail than most people need for their day-to-day job. I think what I do pretty well is remove a lot of the extra stuff and make it seem less daunting, whilst giving links to the docs for those that want to dig deeper.
  • I try to include small simple copy/paste examples to demonstrate what I am saying. This is completely down to the influence of people like Tom Kyte. I did not invent this style.
  • I keep revising articles to try to improve them. It is rare something on the website goes live and is never touched again.
  • Other people have come and gone. I’ve consistently invested in my skill set (23+ years) and my website (18+ years).

Every article is what I (Tim Hall) think is important about the feature. Every blog post is my (Tim Hall’s) perspective on the issue. There is a bit of me, for better or for worse, in everything that goes out there. Over the years there have been plenty of people who have offered to write for me. I could easily have, and probably should have, turned this into a site that required almost none of my time, had a bigger scope and probably made a lot of money. Instead it is just me and what I’ve created.

I guess the best analogy would be the difference between someone stealing a car you’ve bought, compared with someone stealing a car you’ve spent years restoring. Both are bad, but the second one is gonna feel a lot worse as it feels personal.

With all that in mind, when someone takes something I’ve spent my time to produce and in a few seconds publishes it on their website I get pretty angry. Despite what you might think, I don’t mention every incident. Most get dealt with in private, but occasionally I go supernova and take to twitter. 🙂

So that’s it. That’s why you sometimes see me go ballistic over someone nicking some crappy article. 🙂

Cheers

Tim…

ORDS, SQLcl and SQL Developer 18.3 Updates (VirtualBox, Vagrant, Docker)

A few days ago we got version 18.3 of a bunch of Oracle tools.

Over the weekend I updated some of my VirtualBox and Vagrant builds to include these versions. If you want to play around with them you can see them on GitHub here.

I also updated my ORDS Docker container build, which uses both ORDS and SQLcl. You can find this on GitHub here.

I use this container for live demos of ORDS, as well as a demo for my “DBA Does Docker” talk, which I am doing at Oracle OpenWorld this year.

I put the latest versions of SQL Developer and SQLcl on my laptop. I’m doing an analytic functions talk at Oracle Code One this year. The demos use SQLcl on my laptop connecting to Autonomous Transaction Proccessing (ATP) on Oracle Cloud. I had a little bit of drama with SQLcl on Saturday, which turned out to be PEBCAK. I thought “SET ECHO ON” wasn’t working, but it turned out I had a “login.sql” file in the path that contained “SET TERMOUT OFF”. Once I removed that setting the demos ran fine. 🙂

I’m going to put a freeze on changing my stuff until after OpenWorld and Code One. Honest. 🙂

Cheers

Tim…

ODC Appreciation Day 2018 : It’s a Wrap (#ThanksODC)

Yesterday was the Oracle Developer Community ODC Appreciation Day 2018 (#ThanksODC).

Big thanks to everyone who took the time to join in. Here is the list of posts I saw in chronological order. If I missed you out, give me a shout and I’ll add you. 🙂

As always, it was good to see some posts in languages other than English. I’m particularly happy about the “Blog Birthday” celebration for Flora B., who started blogging at last years event! 🙂

There were a few people who forgot to include #ThanksODC in their tweets. I think all got picked up and retweeted including the hashtag by me or someone else. If I missed any, please let me know. I laughed at the inclusion of #ThanksOracleBase in a couple of tweets. 🙂

Once again, thanks everyone for getting involved and of course #ThanksODC! 🙂

Same sort of time next year! Hopefully not so close to OpenWorld. 🙂

Cheers

Tim…

ODC Appreciation Day : Effective Evangelism – Staying Positive

I’m coming at this year’s event from a different angle…

If you’ve ever been on the internet, you will have noticed negativity and drama get a lot of clicks. I try to keep the website, blog and my community contributions positive, but occasionally frustration gets the better of me and I launch into a tirade on the blog or on twitter. As soon as I do the hit rate shoots up. Drama draws attention.

In the short term this might feel good as you are getting more attention than you have previously, but it’s short lived and sometimes bridges get burned, leaving you in a worse position than you were before.

If you are in this for the long haul, you are far better trying to take the  positive approach. This doesn’t mean keeping quiet about stuff you don’t like, but the way you frame it can make a big difference. Rather than this.

“Feature X is crap.”

You might be better placed to write.

“Feature X would be better if… “

It’s not always easy, and I have some history of doing the former, but from experience I can tell you constructive criticism goes down a lot better than insults. 🙂

It’s up to you to decide how you want to contribute to the community, but I would suggest you try to build a positive community around you, and distance yourself from those that draw you to the dark side. 🙂

Cheers

Tim…

Oracle Application Express (APEX) 18.2 : Upgrades Complete

A few days ago Joel Kallman announced the release of Oracle Application Express (APEX) 18.2.

In a previous post I mentioned the updates to my Vagrant builds to include this version, as well as updates of Tomcat and Java. I’ve subsequently done the updates for APEX 18.2 on Docker too. If you are interested you can see them here.

In addition to this we’ve rolled APEX 18.2 out at work. We already had some installations of APEX 18.1, but many were stuck on version 5.1.4 because of time constraints. Now everything is up to APEX 18.2. We still have a range of database versions (11.2, 12.1, 12.2 and soon to be 18c) at work, and it’s worked fine on all of them.

I spied a couple of people asking about the upgrade process. There’s no difference to previous versions. In the past, if one of the first two numbers change you do a regular install. If it’s not one of those major version changes you download the patch from MOS and apply it. Since this is a major version number change, I installed it in the normal way and everything was fine. I’m not sure how this will work going forward, as I suspect all releases will start to use the new version format, so does that mean every release from now on will be an “install”, not a “patch”? Someone has probably discussed this already and I missed it. 🙂

I only have one little gripe about the upgrades, which is I have to run an ORDS Validate once it’s complete to make sure ORDS is working fine. It would be really nice if APEX could fix whatever gets broken in ORDS, so I don’t have to do it. It’s just one less step to do… 🙂

Happy upgrading…

Cheers

Tim…

VirtualBox and Vagrant : New RAC Stuff and Changes

There were a lot of changes in my Vagrant repository on GitHub last week and over the weekend.

First, I got asked a question about 12.2 RAC and I couldn’t be bothered to run through a manual build, so I took my 18c RAC hands-off build and amended it to create a 12.2 RAC hands-off build. Along the way I noticed a couple of hard-coded bits in the 18c build I hadn’t noticed previously, which I altered of course. I also had to move the 18c build to a version-specific sub-directory. I think I’ve altered all references to the location.

I went through some of my individual server builds and updated them to use the latest versions of Tomcat 9, Java 11 and APEX 18.2. All that was pretty straight forward.

On Sunday I was running some tests of the builds on my laptop while I was at my brother’s house, and I noticed I was not pulling packages from the yum repositories properly. I ended up adding “nameserver 8.8.8.8” to pretty much all the “/etc/resolv.conf” files inside the VMs. I’m not sure what has changed as that hasn’t happened before, so I’m not sure if it’s something to do with the networking… Anyway, it fixed everything, so happy days.

While I was doing these builds I learned something new. I forgot to amend the path to my ASM disks from a UNIX style path “/u05/VirtualBox/shared/ol7_183_rac/…” to a Windows style path. Vagrant didn’t care and just created the location under the C drive as “C:\u05\VirtualBox\shared\ol7_183_rac\”. I’ll have to add a note about that to my “README.md” files about that.

I’ve still got to update some Docker builds with the latest software. I’ll probably do that over this week…

Cheers

Tim…

 

Oracle Developer Community (ODC) Appreciation Day 2018 (#ThanksODC)

It’s that time of year where we say #ThanksODC…

History

Back in the day we had a community site called Oracle Technology Network (OTN), which is why the first incarnation of this event was called #ThanksOTN. Later OTN got re-branded as Oracle Developer Community (don’t call it ODC 🙂 ), so last year we got #ThanksODC. That confused a few people, as they thought this was about the Oracle Developer Champions, Oracle Database Cloud, Oracle Developer Cloud or some other such stuff. It wasn’t. Some people didn’t identify as developers, so thought it was not for them. None of that is true. It’s pretty simple. I can’t image there is anyone working with Oracle technology that hasn’t used forums, read articles or downloaded Oracle software from OTN/ODC over the years. You must have directly, or indirectly, benefited from the work done by the people at Oracle who support our community. This is just an opportunity to say thanks to those brave folks who endure our endless moaning. 🙂

When is it?

Every year I pick a date and have to change it because of a national holiday on some country. 🙂 At the moment the date of the event is in two weeks time on Thursday 11th October 2018.

Check back closer to the time to make sure the date hasn’t changed. If we have to move it, it will only be by a day either side.

How can I get involved?

Here is the way it works.

  • Write a blog post. The title should be in the format “ODC Appreciation Day : <insert-the-title-here>“.
  • The content can be pretty much anything. See the section below.
  • Tweet out the blog post using the hashtag #ThanksODC.
  • Publishing the posts on the same day allows us to generate a buzz. In previous years loads of people were on twitter retweeting, making it even bigger. The community is spread around the world, so the posts will be released over a 24 hour period.
  • Oracle employees are welcome to join in. I’m happy for you to post about a feature of your product you think adds value, but please don’t just do a sales pitch for your product. 🙂
  • As always, you are not allowed to call me a kiss-ass, then subsequently join in. 🙂

Like previous years, it would be really nice if we could get a bunch of first-timers involved, but it’s also an opportunity to see existing folks blog for the first time in ages! 🙂

The following day I write a summary post that includes links to all the posts that were pushed out through the day. You can see examples of the last two here.

What Should I Write About?

Rather than having an individual theme, which can exclude some people, this year you can write about whatever you want. Here are some suggestions that might help you.

  • My favourite feature of {the Oracle-related tech you work on}.
  • How I got started using Oracle technology.
  • My biggest screw up, and how I fixed it.
  • How the cloud has affected my job.
  • What I get out of the Oracle Community.
  • What feature I would love to see added to {the Oracle-related tech you work on}.
  • The project I worked on that I’m the most proud of. (Related to Oracle tech of course)

It’s not limited to these. You can literally write about anything Oracle-related. The posts can be short, which makes it easy for new people to get involved. If you do want to write about something technical, that’s fine. You can also write a simple overview post and link to more detailed posts on a subject if you like. In the previous two years the posts I enjoyed the most were those that showed the human side of things, but that’s just me. Do whatever you like. 🙂

So you have two weeks from now to get something ready!

Cheers

Tim…

Oracle Cloud Infrastructure (OCI) : Create a Compartment, VCN and DB

Having spent time playing on the Autonomous Data Warehouse and Autonomous Transaction Processing services, I kind-of lost sight of the Platform as a Service (PaaS) and Infrastructure as a Service (IaaS) stuff. I had a question recently about running (non-autonomous) databases on Oracle Cloud and I didn’t really have anything of my own to point them at, since my only DBaaS article was on the old “Classic” bit of Oracle Public Cloud. I figured it was about time I did a quick run through of the OCI version of that. This resulted in the following three posts, which are just scratching the surface of course.

At first glance it seems a little more complicated, as there are some prerequisites to think about, but actually it makes a lot of sense. The sales pitch demo of any cloud service is to click a few buttons and everything magically appears, but there is some thought needed in the real world. Defining a reasonable network topology for security, and separation of duties and functional areas are pretty common in most companies. This does feel more sensible, and sets you off on the right foot.

If you need a certain amount of manual control and access to the server, the Database VM approach is fine, and there are also Bare Metal and Exadata services too, but I think my starting position would be the autonomous services, unless I had a specific reason not to go that route. I’m all about doing as little as possible… 🙂

Cheers

Tim…

Debugging Code : Problem Solving Revisited

A couple of incidents/discussions happened recently that made me think about this topic again. Here are some random thoughts on a subject that should definitely not be approached in a random manner. 🙂

Systematic Approaches Pay Off

I know it is really boring, but a systematic and meticulous approach will always yield better results than randomly jumping at stuff. I’ve discussed this before here.

It’s easy to become focused on what *you know* is the problem, just because of a gut feeling, without any supporting evidence. When you eventually find the real issue, you feel a bit stupid for looking at the wrong thing for so long.

Sometimes you end up focusing on the symptom, not the root cause. If I do this it all works again. Great! Then the same problem happens the next day. Before you know it you have a bunch of voodoo operational tasks to keep the system running, with nobody knowing how and why it works.

It really does pay to take a scientific approach to fixing things.

A Leap of Faith

Over time you get to spot patterns, which will sometimes allow you to jump straight to the root cause of a problem without doing the necessary legwork. There is no problem doing this, provided you are willing to accept it won’t always pay off, and you don’t become controlled by your hunches. You have to know when to accept your hunch could be wrong, and take a step back to a more meticulous approach.

This is not a contradiction of the first point. It’s something that you will learn to do because of prolonged use of a systematic approach. Be careful when working with more experienced people, as it is easy to believe their seemingly random approach to problem solving is just that. Random.

I mentioned this here.

Instrument Everything

I can’t emphasise enough how important instrumentation is.

You should be able to determine what went wrong just by looking at the instrumentation, without having to know or look at the code. In my opinion if you are doing it correctly, non-developers should be able to figure it out from your instrumentation.

We have a perfect example of this in Oracle. I have never seen any source code for the database, but I can diagnose and fix issues by using the instrumentation built into that code. Things like SQL TraceReal-Time SQL Monitoring, ASH, AWR, ADDM are all possible because of instrumentation in the code.

The problem with Googling solutions is you often see cut-down code examples, which can promote bad programming practices. I have almost no instrumentation in the examples on my website. That’s because I’m trying to keep them small and lightweight. I don’t want you to have to install a bunch of tracing, logging and unit testing packages before you paste in a 10 line bit of example code. That doesn’t mean those things are not important in your real solutions. It’s all about context.

A Fresh Pair of Eyes

Your brain is a weird thing. You work on something and get nowhere. You walk away and do something completely different and you get a flash of inspiration. All that time your brain has been churning it over and come up with the solution. Sometimes walking away is enough to solve the problem.

You can also call someone in to help you. Talking through the problem can help for a couple of reasons.

  1. They don’t have the mental baggage you have, so they might spot something obvious you are refusing to see. 🙂
  2. In explaining the issue to them, you are ordering your thoughts and effectively explaining it to yourself. The net result is you sometimes answer the question for yourself. This is one of the reasons why you should learn to ask questions properly, especially on forums. In formulating the proper question, you may answer the question for yourself.

I wrote about the second point here.

Cheers

Tim…

The Future of Single-Discipline User Group Conferences

It’s just my opinion, but I think the days of the single discipline user group conference are numbered…

The big company flagship conferences will still happen, as they are more about hype and marketing, but I’m not sure what the future holds for regular user groups that want to stay with a single focus.

I don’t know many people who work on a single technology anymore. I certainly don’t know many people who would be allowed to go to a separate conference per technology they work on. That means they need to pick a subset of events, or not get involved. Either way they are being sold short.

I’m starting to think multi-discipline events like Riga Dev Days make a lot more sense. Even Oracle have gone this route with the Oracle Code events, which are multi-discipline, with an Oracle spin of course. These types of events are not without their issues too, as there has to be a limit on the content for each discipline and there can be scheduling clashes, but I think it makes it a lot easier for people to cover their bases with less conference visits per year.

There are some really strong user groups out there, but for those that are struggling, I wonder if widening the net would help? This could affect the enthusiasm of some sponsors, but it may open new opportunities too.

What do you think?

Cheers

Tim…

Update: As per comments and twitter discussion, people have cited successful “single-discipline” conferences. There will always be winners and losers, and I think many of these probably do have quite a diverse range of material, with a common thread running through them. This is how I think of Oracle Code, a diverse collection of subjects loosely woven together by an Oracle thread.

If someone has hit upon a winning formula that is still specialist, I’m not suggesting they change what is currently working for them. For those that are struggling, maybe now is the time for something different?