20 December 2013

Improving Website Performance: An Update

I announced earlier this week that I was suspending all work on new features until we improved the performance on the site.

Since then we have done the following:
  • Reduced by .5 seconds each and every page load time.
  • Optimized an LOV on the home page, resulting in faster load time.
  • Optimized the Library query so that you will see quizzes much faster.
  • Changed the Switch Quiz LOV on the Quiz Details page to improve load time on that page.
We will continue to seek out opportunities to streamline processing on the site. Please feel free to post a comment on this blog with any other suggestions for places on the site to focus our efforts.

Many thanks for your patience!
Steven Feuerstein

16 December 2013

PL/SQL Challenge Website Now Available

Just in time for Tuesday!

Hurray!

Well, you know how you just sometimes have one of those days?

This was one of mine.

I am still analyzing the full extent of my stupidity and incompetence (and I fear the results may be classified).

But I can say this:

First of all, thank you, John Scott, for being available and so, well, non-judgmental, as you once again bailed me out.

Second, we now do hope and expect that the website will stay up and you can take your quizzes. I will look into extending what is now yesterday's quiz so it can be played today as well (an excellent idea urged by Iudith Mentzel).

My apologies for inconvenience and any mental anguish,
Steven Feuerstein

Poor, Sad Website: Voiding Today's Quiz

At 9:45 AM Chicago time, the PL/SQL Challenge website became unresponsive. It looks like we were and are being hammered by bots. We have been unable to stop the onslaught and so after a few hours of on again, off again access, I must announce with great sadness that we will void the results for today's quiz.

This means they will not be included in rankings for the quarter.

Now, having said that, I plan - when the site and backend become available again - to see how easily we can extend the end date for today's quiz....to tomorrow (make it a "two day quiz").

If that is possible (it should be, but you know how it is with unique indexes and constraints and code), then anyone who couldn't get to the quiz today, can do it tomorrow and then I will not void the results.

In the meantime, I will go take a walk in 12 degree weather (crisp but clear).

ALSO: make sure to follow PLSQLChallenge @ twitter.com so you can receive announcements about site status.

05 December 2013

Daily Quizzes Will Continue in 2014

I am very pleased to announce that I have decided to continue the daily PL/SQL quiz in 2014.

There are two reasons for this change from my earlier plan to terminate the daily quiz.

First, I realized that I hadn't made it as easy as I should have to write and submit quizzes. I never really gave you, my dear players, much advice about how best to write a quiz, and the Submit Quiz wizard requires too much effort on your part.

Second, even with the suboptimal wizard available today, many more players have started writing quizzes, and pledge to do so in 2014.

So it would be mean-spirited to say the least to stop the daily quizzes at this point.

Bottom Line: daily quizzes will continue at least through the end of Q1 2014. 

And very soon we will announce significant improvements to our quiz submission features, including templates, the QuickQuiz smart script, and more.

Many thanks for your interest, enthusiasm and devotion to your craft!

Steven Feuerstein

11 November 2013

Results from the Q3 2013 PL/SQL Championship now available!

You will find below the rankings for the 2013-3 championship; the number next to the player's name is the number of times that player has participated in a championship.

Congratulations first and foremost to our top-ranked players:

1st Place: Michal Cvan of Slovakia

2nd Place: mentzel.iudith of Israel

3rd Place: Janis Baiza of Latvia


We do not see 100% correct on the championship very often. Michal took his time, answered with care...and walked away with the top prize! Iudith was not far off Michal's flawless accuracy, with just one incorrect choice. Janis took a somewhat different approach, cruising through the quizzes in just 14-1/2 minutes and still scoring quite a high level of correctness.

Congratulations to everyone who played in the championship. I hope you found it entertaining, challenging and educational. And for those who were not able to participate in the championship, you can take the quizzes next week through the Practice feature.

Steven Feuerstein

Note: Below the table of results for this championship, you will find another list showing the championship history of each of these players.

Rank Name Country Total Time % Correct Total Score
1Michal Cvan (10)Slovakia31 mins 08 secs100%3127
2mentzel.iudith (12)Israel26 mins 41 secs96%3066
3Janis Baiza (8)Latvia14 mins 28 secs88%3011
4Jeroen Rutte (6)Netherlands21 mins 05 secs88%2878
5Peter Schmidt (5)Germany21 mins 56 secs88%2861
6Ivan Blanarik (7)Slovakia24 mins 50 secs88%2803
7Ingimundur Gudmundsson (2)Norway31 mins 38 secs88%2667
8_tiki_4_ (5)Germany20 mins 13 secs80%2596
9Frank Schmitt (7)Germany20 mins 43 secs80%2586
10Andrey Zaytsev (1)Russia29 mins 03 secs84%2569
11Viacheslav Stepanov (11)Russia30 mins 55 secs84%2532
12Frank Puechl (3)Germany17 mins 37 secs76%2498
13Niels Hecker (13)Germany10 mins 47 secs72%2484
14Pavel Vorontsov (1)Russia16 mins 23 secs72%2372
15james su (7)Canada20 mins 07 secs72%2298
16Tony Winn (4)Australia23 mins 33 secs72%2229
17Siim Kask (12)Estonia24 mins 36 secs72%2208
18Stelios Vlasopoulos (9)Belgium30 mins 48 secs72%2084
19Denis Ivin (1)Russia31 mins 44 secs72%2065
20Tobias Stark (3)Germany32 mins 21 secs72%2053
21Zoltan Fulop (6)Hungary31 mins 49 secs68%1914
22Giedrius Deveikis (4)Lithuania11 mins 31 secs56%1870
23Hamid Talebian (1)Netherlands34 mins 19 secs68%1864
24Thierry Poels (6)Belgium25 mins 55 secs60%1732
25swart260 (6)Netherlands18 mins 49 secs52%1574
26Rakesh Dadhich (4)India16 mins 00 secs48%1480
27Oleksiy Varchyn (1)Norway30 mins 19 secs40%894
28Rich Barnhart (1)United States25 mins 12 secs36%846

Championship Performance History

After each name, the quarter in which he or she played, and the ranking in that championship.
Name History
Michal CvanQ3 2010:22nd, Q4 2010:25th, Q3 2011:21st, Q1 2012:11th, Q3 2012:14th, Q4 2012:14th, Q1 2013:14th, Q2 2013:11th, Q3 2013:1st
mentzel.iudithQ4 2010:4th, Q1 2011:17th, Q2 2011:23rd, Q3 2011:5th, Q4 2011:4th, Q1 2012:7th, Q2 2012:16th, Q3 2012:33rd, Q4 2012:4th, Q1 2013:2nd, Q2 2013:7th, Q3 2013:2nd
Janis BaizaQ2 2010:3rd, Q4 2010:7th, Q3 2011:9th, Q4 2011:1st, Q3 2012:23rd, Q1 2013:4th, Q2 2013:4th, Q3 2013:3rd
Jeroen RutteQ3 2010:19th, Q3 2012:10th, Q4 2012:11th, Q1 2013:8th, Q2 2013:18th, Q3 2013:4th
Peter SchmidtQ3 2010:2nd, Q4 2010:14th, Q3 2012:27th, Q2 2013:5th, Q3 2013:5th
Ivan Blanarik Q1 2012:3rd, Q2 2012:12th, Q3 2012:16th, Q4 2012:24th, Q2 2013:6th, Q3 2013:6th
Ingimundur GudmundssonQ1 2013:25th, Q3 2013:7th
_tiki_4_Q4 2011:26th, Q1 2012:16th, Q2 2012:20th, Q4 2012:8th, Q3 2013:8th
Frank SchmittQ4 2011:22nd, Q2 2012:2nd, Q3 2012:21st, Q4 2012:3rd, Q1 2013:13th, Q2 2013:1st, Q3 2013:9th
Andrey ZaytsevQ3 2013:10th
Viacheslav StepanovQ1 2011:8th, Q2 2011:4th, Q3 2011:13th, Q4 2011:19th, Q1 2012:17th, Q2 2012:9th, Q3 2012:6th, Q4 2012:21st, Q1 2013:18th, Q2 2013:22nd, Q3 2013:11th
Frank PuechlQ3 2012:26th, Q1 2013:15th, Q3 2013:12th
Niels HeckerQ2 2010:2nd, Q3 2010:1st, Q4 2010:15th, Q1 2011:6th, Q3 2011:7th, Q4 2011:10th, Q1 2012:2nd, Q2 2012:3rd, Q3 2012:2nd, Q4 2012:7th, Q1 2013:6th, Q2 2013:3rd, Q3 2013:13th
Pavel VorontsovQ3 2013:14th
james suQ3 2010:56th, Q2 2011:7th, Q3 2011:11th, Q4 2011:14th, Q2 2012:15th, Q1 2013:7th, Q3 2013:15th
Tony WinnQ3 2010:16th, Q2 2013:17th, Q3 2013:16th
Siim KaskQ1 2011:28th, Q2 2011:6th, Q3 2011:10th, Q4 2011:3rd, Q1 2012:8th, Q2 2012:4th, Q3 2012:31st, Q4 2012:10th, Q1 2013:11th, Q2 2013:16th, Q3 2013:17th
Stelios VlasopoulosQ4 2010:37th, Q4 2011:20th, Q1 2012:27th, Q2 2012:30th, Q3 2012:1st, Q4 2012:1st, Q1 2013:27th, Q2 2013:23rd, Q3 2013:18th
Denis IvinQ3 2013:19th
Tobias StarkQ1 2012:32nd, Q3 2012:3rd, Q3 2013:20th
Zoltan FulopQ1 2012:15th, Q2 2012:26th, Q3 2012:22nd, Q4 2012:17th, Q1 2013:22nd, Q3 2013:21st
Giedrius DeveikisQ2 2012:5th, Q3 2012:9th, Q3 2013:22nd
Hamid TalebianQ3 2013:23rd
Thierry PoelsQ3 2011:22nd, Q1 2012:24th, Q1 2013:26th, Q3 2013:24th
swart260Q2 2012:21st, Q3 2012:25th, Q4 2012:25th, Q1 2013:29th, Q2 2013:26th, Q3 2013:25th
Rakesh DadhichQ2 2012:10th, Q1 2013:23rd, Q2 2013:28th, Q3 2013:26th
Oleksiy VarchynQ3 2013:27th
Rich BarnhartQ3 2013:28th

22 October 2013

Questions Arising from First Database Design Quiz


[This post is from Chris Saxon, manager of the weekly Database Design quiz.]
 
The database design quiz for the 12th-18th October covered implementation of  a preferred address feature for customers. The first choice in the answers added a DEFAULT_ADDRESS_ID column to the customers table. 

This answer was marked as correct, however many players selected this choice as incorrect and a few objected on the basis that no foreign key was defined (on the DEFAULT_ADDRESS_ID column). 

The requirements in the question stated that customers could select "at most one" of the addresses to be their preferred address. By definition the PLCH_CUSTOMERS.DEFAULT_ADDRESS_ID meets this, as it's only possible to store one default address per customer. In my opinion, adding a FK to this column to an address table while a very desirable action isn't strictly necessary to meet the "at most one" requirement. 

This also brings up a wider concern I have with these quizzes regarding foreign keys. This week's quiz (18th-25th October 2013) includes a CURRENCY_CD field. If I was designing "for real", there would definitely be a FK on this column to a CURRENCIES table. I excluded the FK and additional table from the question however to keep it shorter and easier to read. There are a couple of other "missing" FKs and tables from the question, which also aren't strictly necessary to answer the question. 

Based on the response to the default address in the previous quiz, some players may feel these are necessary for some of the choices to be correct. 

So I would like to gather your thoughts on how we should handle these issues. 

The questions I have are: 
  • If a quiz includes a choice with fields that reference a key from another table, is it necessary to define a FK for the choice to be correct? (If the question states that we must do something, for example to use valid addresses, I certainly agree that a FK would be necessary) 
  • In general, should questions include as many FKs and tables as possible? Or should FKs only be listed where directly impact the correctness of some of the choices? 
Please let us know your thoughts on this!

Also, remember that we will not publish any comments that reference the details of this week's quiz! No spoiler alerts!

Feedback Needed: A new vision for the PL/SQL Challenge

We started the PL/SQL Challenge in April 2010 with a daily PL/SQL quiz. Over the years since, we have added weekly APEX, SQL and Logic quizzes, as well as monthly quizzes, quarterly championships and much, much more: over 1,200 to date!

Through it all we published five new quizzes on PL/SQL each week, come rain or shine, holiday or workday. And it should come as no big surprise, given that this whole site was my idea (Steven Feuerstein), that I have written more quizzes than everyone else combined: over 1,000. Wow.

I've gotten pretty good at it (productive, that is) and I actually do enjoy it. 


Yet I now feel that the time has come to end the daily quizzes. I know that many of you may have strong feelings about this, so I would like to share (a) my reasons for feeling this way and (b) what I would like to do in place of the daily quiz.

I plan to put these changes into effect on 1 January 2014, so I very much want your feedback.

Here are my reasons:

1. It's very time consuming to write five quizzes per week, along with verification code and resources. It's also quite a job to review all these quizzes, and much of that effort has fallen at this point to a single, valiant player: Elic.

I have greatly enjoyed writing these quizzes. I've learned even more about PL/SQL in the process and, certainly, feel good about the impact of these quizzes on thousands of developers around the world.

But the bottom line is that by committing so much of my time to these quizzes, I have that much less time for other activities, both related to Oracle technologies and completely distinct from them.

And I must tell you that whether it is a mid-life crisis (I just celebrated my 55th birthday) or just one more human being coming to his or her senses, I feel more and more strongly with each passing day that I need to spend more time out in the natural world, away from computers and the Internet and plastic.

2. It's quite a burden on our reviewers to ensure a high quality for five quizzes each week. For a while, I had four-five PL/SQL developers checking my quizzes (well, usually 2-3 for any given quiz), but lately the main responsibility has fallen on our most excellent and diligent reviewer, Elic. He shows no signs of wear and tear, but it worries me....

3. Hmmm. I guess that's really about it. :-)

So what would I like to do instead? (with the PL/SQL Challenge, that is. Check out feuerthoughts.blogspot.com for occasional disclosures about what I plan to do with the rest of my life, overall. My views on that have been changing a lot in the past year.)

Here's what I am thinking about right now:

Offer THREE weekly quizzes on PL/SQL, as follows:

1. The PL/SQL Challenge: a weekly quiz authored by me that covers the gamut of PL/SQL features, as we have been going with the daily quiz - just once per week. See? I am not going to stop writing quizzes entirely!

2. The Community PL/SQL quiz: a weekly quiz that is authored by others (anyone but Steven Feuerstein). Currently we restrict how many questions authored by players can be used per quarter to just three. At least one player (Iudith Mentzel) has written lots of great questions that could be played and appreciated better with this new weekly quiz. And I hope that having a weekly quiz specifically showcasing the knowledge and creativity of others will encourage you to submit your own!


3. Deja Vu PL/SQL: a weekly quiz that features a question previously played in the daily PL/SQL quiz. Of course, if you spend lots of time practicing past quizzes, these will, over time, get ridiculously easy for you, but hey there's nothing wrong with that. You are internalizing programming patterns, leading to improved productivity and code quality in your own work. I am certain of it!

The PL/SQL Challenge quiz will be the primary quiz for rankings and qualifications for championships (more on that below). We would also rank the Community PL/SQL and Deja Vu PL/SQL quizzes, but they would not be used directly to qualify for championships. Instead, some players of these quizzes would qualify through a variety of special rules (play all quizzes in a quarter with N% correct or higher, that sort of thing).

Keep the Quarterly PL/SQL Championship

One could argue that there will no longer be enough quizzes in a quarter (12 weekly vs roughly 60 daily) to establish clearly who should participate in the championship. I was thinking about switching to a semi-annual (every 6 months) championship, but that complicates matters in our backend (support for a new frequency) and I don't really want to give players any fewer reasons to think about and visit the site.

We will probably adjust the rules around what it takes to qualify for the championship. And we will continue to play at a single time, to ensure the integrity of the competition.

Add a New Annual PL/SQL Championship

We are adding annual championships for SQL and Logic in 2014. We will do the same for PL/SQL, maybe starting in 2014 or wait until 2015.

Still sorting out the rules for participation. Maybe we will "loosen" things up and make it an "open" contest: anyone can play!Or have an open qualifier: take three quizzes (everyone at the same time), top 50 play in the annual championship.

Set Up More Tests
We recently rolled out the new Tests feature, which currently gives you the ability to take a past PL/SQL Quarterly Championship under the same conditions as the original players.

We will add more tests with specific feature area foci, such as a test on dynamic SQL or bulk processing. These will consist of multiple quizzes (not from those already played) that are designed to test how thoroughly you understand a particular area of functionality, and will include a mix of code-based and word quizzes.

Build the Community

I spend so much time writing quizzes, I don't have enough time to more fully develop the community side of the PL/SQL Challenge. I would like to start highlighting player accomplishments (Player of the Year, Reviewer of the Year, etc.), as well as provide better-organized and fully-realized utilities and reusable code.

And more generally I want to make the site less about/from me and more about featuring the knowledge and experience of PL/SQL experts all around the world!