Inside Quizlet

On bugs, and how I recently squashed a particularly nasty one

News ·

Bugs are a fact of life for software programs, and Quizlet is no different. The extended 450-day testing cycle I put Quizlet through before it was launched to the public helped get rid of a vast majority of them, but there will always be those that get through. The feedback feature at the top-right corner of Quizlet has helped tremendously in rooting out some stragglers.

Someone recently sent me a bug report that said Quizlet wasn't grading her answers on the Test page, and additionally opening the accents bar would make the page blank. Bizarre, no? So I investigated further...

In the feedback messages, I log what browser people use, so I determined right away that this bug was only affecting Internet Explorer users. So I launched IE and started working on recreating the problem. It certainly didn't happen every time someone tried to grade their tests in IE. I was able to reproduce the bug when I explicitly had the 'Matching' section activated, and only when there were more than 25 questions in the pool, and only in Internet Explorer 6 (version 7 is fine). A pretty obscure scenario, but it was indeed causing problems.

So I rooted around the part of my javascript file that grades the Matching section, and it didn't have any red flags. Then I looked at my HTML, and realized the problem. To help the grading system determine correct answers, each <li> containing the input boxes for answers had an id with the correct answer (ex. <li id="c">). Apparently a certain one-letter id, I didn't bother to find out which, was causing IE to have problems. But not big obvious problems, only problems that show up when you open the accents bar or grade your test.

My solution was to change the ids to prepend "iesucks-" to each id (ex. <li id="iesucks-c">). That fixed both bugs, and everything is running silky smooth now. (Yes, this means you can View Source and find the correct answers - shock!) And yes, I realize this isn't a very good data structure.

Isn't HTML supposed to be a stable format? Has it not been around for fourteen years? The sad thing is, this is typical of Internet Explorer.

The funny thing is, I saw some form of this bug when I was originally building the matching feature. I made a little workaround, and thought I had it fixed, but I obviously hadn't seen the whole problem.

Now, can I interest you in Firefox? It's a rock-solid, free browser that doesn't have any of IE's weird problems. IE will always be supported by Quizlet, just because of its dominance, but you will always get the most stable experience with Firefox. And it has spellcheck! Safari will work too, if you're on a Mac (I use Safari).

If you ever spot bugs in Quizlet, please send them my way. You'll be doing everyone a big favor. Thanks!

Finally, what you really want to know. Where's Scatter? It's coming, along with a big update. I've been working hard the last two weeks, and I'll be releasing a big update soon. I just have a lot of testing to do before then. It's a good thing I have a week off from school now.


  1. Nik

    Nice job squashing that one, Andrew. I seem to recall, as a very early web designer, complaining about IE at length, and all the problems I was experiencing with it. The person absorbing my vents - shey (yes, <em>shey</em>) shall remain nameless - told me that IE wasn't that bad, you just had to create clean code, find the bugs, and eliminate them.

    Nevertheless, Internet Explorer sucks.

    Now, I haven't coded for awhile, but somehow I think I remember dealing with the same type of problem, though to a lesser scale. I often ran into problems when using the same id for multiple elements. Sure enough, the <a href="" rel="nofollow"> W3C says of id's</a>, "this attribute assigns a name to an element. This name must be unique in a document." Could you accomplish the same thing with a class, which doesn't have to be unique?

    Can't wait for the next update! Just make sure to enjoy your break, too.

  2. Andrew

    The one-letter id is most certainly unique. Class would work though too.

  3. Pyotr

    You should visit if you haven't already.

  4. MaioCo

    Man, people need to stop using IE. This is the year 2007! But, good work fixing the problem. I use Safari and have had no problems at all.

  5. scuba

    You should use a class. Ids are typically reserved for unique elements.

  6. Andrew

    Each li is a perfectly unique element, and no two ids repeat. I think it's a trivial argument, either way.

    Pyotr, yeah, I used to be into Spread Firefox, but I didn't want to waste time finding my referrer id. Heh.

    Just spent all night working on Scatter, it is going to be majorly addictive.

  7. maha247

    its not cool to the bugs what u did but its still cooooool! :) but can u use normal slang instead of weird wordz so i can understand k? thanx

  8. NeilKelty

    maha247: I thought he was ultra clear?

  9. Nik

    Andrew: I'm sorry, I was thinking (since it only applied to sets with more than 25 terms) that the ids repeat, since you run out of letters. I just went back to the testing page, and this isn't the case - it looks like you merely cap the number of matching choices to 26. Smart.

  10. NeilKelty

    Nik: Nice find, but Andrew, I really wouldn't reccomend doing that without some sort of notice as if I put in 50 then I expect 50 - what's wrong with a choice like aa or bb? or even ab?

  11. AmbushCommander

    NeilKelty: The demographic Quizlet appeals to, once we get beyond the tech-savvy early adopters, won't care very much for JavaScript debugging. Just a sad fact of life.

  12. yomamma

    who cares you guys are such nerds

  13. Andrew

    <blockquote>who cares you guys are such nerds</blockquote>

    Agreed! Perhaps I was just trying to fill in blog space in between Quizlet updates. Heh.

    Neil, have you ever tried doing matching with 50 questions? NOT FUN. It's a waste of time anyway. My thoughts..

  14. Nik

    Ah, blockquotes! I like!

    <blockquote>... if I put in 50 then I expect 50 ...</blockquote>

    You raise an interesting point that I was talking to Andrew about earlier – if you want to match the whole set, it's kinda infuriating to only get 26, right? At the time, Andrew said – and I agree – that it's not worth it. After all, how often does someone want to match 50 terms? With that many, the other testing options make a lot more sense.

    With that said, however, there needs to be <em>some</em> feedback. The user needs to know that his or her request for 50 matching questions was denied – and why. Some sort of alert along the lines of, "Sorry, this feature doesn't work with more than 26 terms" would be great, and easy to implement.

  15. <blockquote>told me that IE wasn’t that bad, you just had to create clean code</blockquote>

    How can you write clean code for IE when it doesn't follow standards? IE6 doesn't follow CSS2 or W3C standards and while IE7 may do those things, it still doesn't follow Javascript standards and won't follow CSS3 standards either.

    Verdict, IE still sucks and makes you run around in circles trying to get stuff working.

  16. prettynpink

    oh my god that is totally fabuloso. my name is caiti. whats yours im so cool. how about you i rok the house!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  17. Terabanitoss

    Hi all!
    You are The Best!!!

Leave a comment

Login to leave a comment