Monday, February 11, 2013

My work with Multiple Choice Testing

One of my projects for work was to create an online testing application with the following goals:
Able to quickly generate a test and populate with multiple-choice questions and answers
Able to edit a question while keeping track of the previous question
Able to edit each answer while keeping the same history
Keep track of users
Keep track of users tests they've taken
Grade users tests as they are taken and report to management

This all is fairly easy. The real hard part is defining the different types of multiple-choice questions. At current there are 4 different types.

 1. Standard single answer question

  • This is with only one correct answer out of 2 or more answers. So pick A or B.
  • This question is worth one point.

 2. A single choice question, with multiple possible answers

  • So if you have a questions with 2 or more answers, two or more of them can be correct. 
  • Example question: "Do you know what a bear looks like?"
    Answers: A: Yes
                   B: No, what is a bear
                   C: Maybe, their brown, black or white right?
    In the example both A, and C could be considered correct. But this is a "pick one" question, so choosing either A or C would net you one point.
  • This question is worth only one point as only one answer can be selected.

 3. A multiple choice question (the complexity begins here)

  • The questions will typically have 3 or more answers.
  • Of the answers all of them can be selected.
  • Example question: "What colors are bears?"
    Answers: A: White
                   B: Black
                   C: Brown
                   D: Purple
    In this example A, B and C are all possible correct answers.
  • Because this is a multiple choice question each possible correct answer nets one point for a total of 3 points for this one question. 
  • If the user only picks B and C as their answers they will lose one point and the overall question is then not correctly answered.
In this I refer to a "point" based system. It's finding a balance on how to correctly grade a multiple choice question.

Some other fun test level options are:
Test Category
Group any number of tests into a category for an index display
Total possible wrong answers
Set the number of answers you can have wrong before failing the test
Test attempts
The number of times you can take the test in the selected Retake Interval (difficult issue)
Retake interval
The amount of time between passing the test, or failing it in a select number of attempts.
Multi-part test
Allows to break the test up and add reading material between groups of questions. Each part or section of the test has it's own individual questions and answers.
Test Order (ok this is boring)
Do I really need to explain this???

To explain Test Attempts and the Retake Interval a bit: Because this is testing, a tester should only be able to take the test just so many times before the system stops them. Once you either pass the test or fail the test N times in a selected retake interval, the application will then send an email notification that the test was completed, and give the results. The test, it's questions, and associated answers are all kept and the results will be stored and retained for future review.

A limitation so far is that a test is it's own entity. So each test has it's own questions and answers. There is no shared pool of questions. While this may not be a bad thing in some cases, the ability to "clone" a question and answers into another test might be nice for some cases.

One goal I have is adding another level to this and having it be "org" or group based. So something like a group of school teachers can each have their own index of tests. They could then assign them per student. The issue, how do you know the students before hand? My thought is that a given course would be handed a unique class code to register with so all of their class tests would be shown and not just every test possible.

Let me know if you have any questions or comments about the application. I'm really wanting to get a version of this, or something like it, built and opened up to the public. As is I haven't seen too many applications that can accommodate this.

Sunday, April 8, 2012

PSA: Stop watching teh pron (social engineering and you)

It's a little know fact but watching porn on your computer will lead to viruses. But sadly this is not the most common infection site. It's all to common for users to casually click on every single link on the internet. Worse yet, they have no idea what their clicking on.

But let me back up. Why do I care what you click on? Because I'm your friendly neighborhood IT man. When you go pushing through pages like their going out of style your undoubtedly going to walk away from it with an itchy biting feeling, and in a few days or weeks end up with a bill from your IT friend.

The web is not your friend. The web is full of dirty tricks and garbage specifically designed to trick you into clicking on it. It's damn near an epidemic how bad things are, and only getting worse.

As much as I hate AntiVirus software, you need it on a PC. But you don't have to pay for it. Their are free, open source AV programs. Just ask your IT friend for a solid recommendation.

But please before you even do that, do yourself a favor and think before you click!

Wednesday, February 22, 2012

The good; the bad, and why verified backups are important

Last night I was posting a few links of pictures on a QA site that I often visit when I realized that my house address was clearly posted on my website. While I normally am not huge on my personal privacy; as I clearly post picture of my house and family on the open internet without a care. But I thought I was paying attention to not post my address up there too. But there is was in black and white. So like a good person I edited out my address. This is where it all went wrong. Apparently my TinyMCE did not like the horrible HTML that was also in my post. So it cleaned it up for me and removed all of the good information about me house that I was trying to save all along.

Now what

How can I get this back? Epiphany, I got it! I keep a history of all my posts so if I ever screw one up I can go back, Wiki style. Nope. That’s only for blog entries, not image galleries. Time to restore the database to 5 minutes ago. First. Lets take a clean backup just in case it goes wrong.

My backup plan

Currently I take a full backup 3 times a week. I also ship transaction logs. I can do a point in time to 5 minutes ago with no problem, right? Wrong.

The Bad

It seems I never changed my backup plan to coincide with the removal of a drive where my backups were pointed. My last full backup was November 21st 2011. This hurts.

The Good

I have a nightly job that cleans up old transaction logs from older than 4 days ago. This nightly job keeps running like a champ. This is also where I shake my head. This is bad too.

In the wash

Left with a backup from November, and 4 days of transaction logs I quickly find that I’m not able to do a restore. Time to restore into another database and copy the missing information over to the working database. Thankfully this is old information and I have it captured in my existing backup. I now have another clean backup and 4 days to get my nightly backups running, before I’m left in the same position of not having all my logs.

Verified backups are important!

Thursday, January 5, 2012

Blogging with Mobile Client Apps

In my quest to rewrite my very own website I've been wondering a few things. What use is it to have a mobile client app that you use to write your blog posts? Your already mobile, why not use a refined web app to do it? Or why not use a desktop app like Windows Live Writer?

My thinking is to have more of an overview, or admin mobile app. Approve and moderate comments. Look at page statistics. Then after all that, maybe have a portion of the app devoted to jotting off a quick blog post.
Why do I think about this? Because I've used the blogger mobile app to write a post.

It sucked.

Why did it suck? Because cell phones are *not* designed to write long form. Anything more that a couple hundred characters at a shot and the screen size inhibits your abilities to proof read and check to be sure your not just rambling on.

But why make my personal site have any client app at all? Because it is designed to be shared multi-user environment, with both shared and separate spaces. My current site hosts 8 people (ooohhh 8 whole people). The flaw in my current site is the lack of separation. Plus the new site will be honed for many people including shared contributions. But all of this is topic for another post.

Maybe I can get some feedback from people on this though: Why have a mobile client app to write blog posts?

Monday, November 21, 2011

From the beginning

Hello, I'm Harry Richard. I'm a developer, and a self-admitted computer geek and technology evangelist. Often times I find myself thinking too much. This has the obvious issue that it causes me to not be able to think about other things. Other things that my employer may want me thinking about while I'm at work, like you know, work. So this is my way of relieving some of these other thoughts.

As a point of openness, I'm a developer, not an english major. I have no college education. I also lacked capacity in grade school. Because of this, I'm bound to screw up my words. Use the wrong spellings. And abuse the hell out of commas. I'm not saying this so I can screw up on purpose, or to use a crutch. I say this because I honestly screw up. While I do try my best, and am working on getting it right, just know that if you do read my work, it's bound to have some error.

At times the things I say are highly controversial and may ruffle some feathers. I do have an opinion. I do speak my mind and apply my opinion. But it is just that, my opinion. Also for full disclosure I am *not* always right despite people telling me I think that.

I will be writing on any number of topics, not all of which will be technology. I do hope to write often and I do hope to have people read often. I hope you enjoy.