The Quizlet Blog

Archive for January, 2007

Quizlet gets smarter: Private Messages + Autosave + Sticky Accents

Tuesday, January 30th, 2007

I just pushed through another big update to Quizlet. I gotta say, it feels good to spend a good hunk of time programming. After all the business stuff I’ve been doing the past couple weeks, it’s refreshing to do something that will directly help users.

What’s new today:

  • Private messages. They allow you to send individual messages to other members without anyone else seeing. On your dashboard, you’ll see a link to your own messages. On other people’s pages, you’ll see a link to message them. Also, you’ll receive a notifying email anytime someone sends you a message. You can turn that off on your preferences page.
  • Autosave for creating sets. Ever entered a bunch of data then closed the window? D’oh! Quizlet now saves your data in a cookie every 5 seconds, and lets you restore it or delete it if you revisit the create set page. Note, this is not enabled on the edit set page.
  • Sticky accents. If you open the accents bar on one page, it will remember it and open it on all the other pages that use accents. If you click hide on any page, it remembers that too, of course.
  • Removed the profanity filter on new sign ups. It was causing some legitimate users to be denied.
  • Removed the Real Name field for all users. It shouldn’t matter what your name is. All information on peoples’ real names has been deleted from the Quizlet database. That makes the sign up form simpler too…

I’m the most excited about the Private Messages, because so far the feedback form has been 100% one-way and I’ve wanted to thank you for all your suggestions and comments. I’ll try to get back to most of them, so keep it coming, as always :)

So, big feature update, there might be some bugs lurking or some improvements necessary. That’s why blogs have comments, yo!

Quizlet on your site - send in your API suggestions

Monday, January 29th, 2007

A lot of people have been asking for some way to hook into Quizlet on other sites to use its data and functionality. This is, of course, a great idea. So I’m in the process of gathering ideas on what an API for Quizlet might do. So far, I think:

Embeddable lists:

  • JavaScript embedded code that displays a list, also with data available via JSON
  • List of your own sets
  • List of all terms for a certain set
  • List of all sets for a certain tag
  • Most recently created sets, most studied sets, stuff like that

Some limited studying functionality would be cool too - maybe an embedded version of the Test mode or Familiarize mode.

If you want to have Quizlet on your website, send in your own suggestions! I’m in the very beginning stages of planning an API, so anything is possible. Let’s hear it.

Mootools: the perfect JavaScript framework

Sunday, January 28th, 2007

Quizlet users - this is a technical post about the wonders of mootools, a programming framework I used to build Quizlet. Feel free to move along.

Short story:

mootoolsMootools is awesome because:

  • Above all, it’s intuitive. You can read mootools code and it makes perfect sense.
  • The code is compact. With every component of the code included, mootools 1.0 is just 35.2k (compressed). I would recommend downloading your file twice, one with compression and one without, so you can employ the compressed code on your site but reference the readable code when developing.
  • The code is modular. You can choose what parts of mootools you need, and which you don’t. So if you don’t need accordion functionality, your own download can be even smaller than 35.2k.
  • It does everything. Effects, Ajax, JSON, drag-n-drop, cookies, DOM manipulation, and more.
  • The code is beautiful. Beautiful code saves headaches. Beautiful code is easy to change.
  • It’s Object Oriented. You never need to rewrite anything, just inherit code from parent classes!
  • It’s superbly documented. The documentation includes full examples and details on every parameter of every function.
  • It has a support forum and an IRC channel (freenode: #mootools).

Long story

Back in October 2005, when I started Quizlet, there was really only one JavaScript framework in the mainstream: Script.aculo.us. So that’s what I started with, and it worked alright. It let me do some neat effects, and I could figure out the code enough to use the basic features. But I never used it to it’s full 150k potential - I used my own AJAX code and didn’t take advantage of many of its features, probably because they weren’t obvious enough.

Then, last summer, I met Valerio, the creator of Mootools. He gave me a demo of the mootools code, then in its early stages. It blew my mind. Walking out of the demo, I fantasized a page of random boxes flying around, changing color and fluctuating widths, in perfect symphonic beauty.

Let’s have an example, shall we?

new fx.Styles('mydiv').custom({
    'top' : [10, 200],
    'opacity' : [0, 1],
    'color' : ['#133ea5', '#8b1616']
});

The above code will make the element with id="mydiv" move its top position from 10px to 200px, change its opacity from 0% to 100%, and transition its text color (with beautiful hue changing) from blue to red, all at the same time!. Tell me that doesn’t astound you!

So I thought to myself, screw script.aculo.us! And I began transitioning all of my Quizlet code from script.aculo.us to mootools (it wasn’t a fun task, but I’m glad I did). I actually still haven’t finished, as the Learn and Combine pages on Quizlet still use script.aculo.us. They’ll be transitioned soon, when I figure out new specs and functionality for those pages.

Mootools is perfect for web applications. It’s small and easy to use, saving developers precious time. I feel clever when I’m using it, and it saves me tons of time. If you don’t believe me, how about some real-world code examples?

  • Discuss.js - for Quizlet’s live discussion box feature. This code incorporates all sorts of cool mootools functionality, including JSON, Ajax, DOM manipulation, the mind-blowing pass() function, and nice height effects.
  • Familiarize.js - for Quizlet’s flash card feature. It’s very simple functionality.

Note: my code isn’t even half as beautiful as the mootools code. If you want to see these scripts in use, grab a free Quizlet account.

So that about sums it up. Mootools is all good.

Graph: Quizlet user ages

Saturday, January 27th, 2007

Hey. No sweet feature updates today, but I do have this cool graph to make up for it:

Number of Users by Age

It shows age (years) and the frequency they occur among Quizlet members. There are a few interesting notes: It’s hottest among 15-17-year-olds (the high school crowd). It hasn’t gained much popularity among colleges, but then it picks up again with people in their mid-late twenties. I suspect this is because a lot of the Web 2.0 early-adopter types are checking out Quizlet, as they do with many new apps that come onto the scene. Lastly, there are still a good deal of people in the 40-60 range. I suspect these are more Web 2.0 people but also teachers and people in the education sector.

That’s my basic analysis. It will be very interesting to see how this data changes over time, so I’ll be sure to post again with updated graphs. Speaking of graphs, these absolutely drop-dead gorgeous graphs are courtesy of Swivel. It’s a new site that graphs data you enter in a very slick way. Some of the interface is overcomplicated, but overall it’s a very fine place to graph data.

And lastly, I’ve got some super-slick features coming in the next couple days - Auto-save, sticky accents, and private messages. Later!

A Quizlet limerick + New stuff

Friday, January 26th, 2007

The Quizlet logo shines at SFBeta

I went to SFBeta last night to present Quizlet in front of a bunch of Web 2.0 types. That was a lot of fun. What was not so fun was the fact that I had my AP Bio final the next morning! I survived…

During the presentation, we were required to recite a limerick. So here’s my beauty:

There once was a boy who could not remember
The difference between June and December
So he logged onto Quizlet
And soon had to admit
That his flashcards were fine to dismember

Yes, I know it’s not syllabically perfect or whatever. No one else’s was either. We’re founders, not poets :)

Okay, on to the good stuff:

I just released a new revision of Quizlet with the following updates:

  • People without a username can try Quizlet now. The new home page (for logged-out users) has lists of recent sets and some other fun data. This will be nice for people who want to see what Quizlet is really about without creating an account. I had to disable some features for logged-out users, such as the live discussion boxes and the Learn mode. Learn requires being logged in because it records every one of your right and wrong scores and it has to be able to link your data to a username.
  • Changed ‘Confused?’ to ‘Curious?’ - it’s a little more friendly.
  • Fixed a bug that didn’t allow you to create groups protected by passwords (thanks johnnylaguardia)
  • Improved various small things (the obligatory and vague message that makes my list more impressive).

Coming up:

  • Autosave. Just in case you close a window without meaning to…
  • Private messages between users. I especially want this so that I’ll be able to respond to all the great that’s been coming in from everyone.

Video: Andrew Explaining Quizlet

Tuesday, January 23rd, 2007

On the day of Quizlet’s launch (January 17th) I went to this thing called Stirr founder’s mixer. Stirr is an organization that puts on networking events for startup founders, and it conveniently had an event on my launch day.

Right at the beginning, I was asked if I had a “pitch” - a quick explanation of an entrepreneur’s idea. I figured I did, so they took me out into the parking lot and recorded me giving the 48-second masterpiece you see above. The people who filmed it work for Vator.tv, a site that lets entrepreneurs upload videos of themselves giving their pitches and then shows these videos to potential investors (venture capitalists).

So anyway, it’s pretty fun to watch. I definitely should have focused on the camera more. I’d never done anything like that before, and I had no time to rehearse or think about what I was going to say. But hey, that’s the way it should be! I end it on a good note with a pretty spectacular :-D face. Good times.

Oh, and did I really say “a bus-load of collaboration features”? I didn’t even know “bus-load” was in my vocabulary. Oy. Should have been studying on Quizlet more

In actually useful news, I’m going to be opening up the site to people who don’t have Quizlet accounts. They’ll be able to see all public data and use the Test and Familiarize mode. The Learn mode is a trickier because it stores all your right and wrong answers in a database and the database has to be able to connect its data to particular user. Look for that soon.