The List, 2008 Preliminaries

It's been two years since I did my last 100 Favorite Albums post, so it's time to do a new one.

But first, the geeky preliminaries!

The last time round, I made the list by picking 120 or so records and painstakingly ordered them by-hand - I probably spent a week, on and off, sorting them. I posted them in batches of ten over the course of a few weeks, and I continued to arrange them as I posted each batch. Even the last batch wasn't set until I posted it.

I did this one a little differently...

Supreme Geekitude Follows!

I took the 2006 list, added a few more records to it, then sorted it alphabetically, to destroy the old order. Then I did a rough ordering by-hand, just to get a feel for what was there. Then I automated the process, somewhat, by writing a little C++ program to help sort them.


bool recComp(const string &a, const string &b)
{

    printf("n "%s" > "%s" ?", a.c_str(), b.c_str());
    string yns;
    cin >> yns;

    return (toupper(yns.at(0))=='Y');

}

int main(int argc, char* argv[])
{

    vector < string > file;
    string line;
    file.clear();

    ifstream infile ("c:/temp/records_list.txt", std::ios_base::in);
    while (getline(infile, line, 'n'))
    {

      if (line.length() > 0)
      {

        file.push_back (line);

      }

    }

    std::sort(file.begin(), file.end(), recComp);

    ofstream outFile("c:/temp/outrecords.txt", std::ios_base::out);

    for (vector < string > ::iterator it = file.begin(); it != file.end(); it++)
    {

      outFile << (*it) << "n";

    }
    return 0;

}

Geek out!

Basically, it went through the list of 124 records asking me questions like this:

    "Big Star : Radio City (1974)" > "Bob Dylan : Highway 61 Revisited (1965)" ? y/n
    "Pavement : Crooked Rain Crooked Rain (1994)" > "Spoon : Girls Can Tell (2001)" ? y/n
    "Talking Heads : Remain In Light (1980)" > "Spoon : Girls Can Tell (2001)" ? y/n
    "Talking Heads : Remain In Light (1980)" > "Pavement : Crooked Rain Crooked Rain (1994)" ? y/n
    "The Pretenders : The Pretenders (1980)" > "Spoon : Girls Can Tell (2001)" ? y/n
    "Pink Floyd : Dark Side Of The Moon (1973)" > "Spoon : Girls Can Tell (2001)" ? y/n
    "Sea And Cake : Nassau (1994)" > "Spoon : Girls Can Tell (2001)" ? y/n
    "Sea And Cake : Nassau (1994)" > "Pink Floyd : Dark Side Of The Moon (1973)" ? y/n
    ...(my actual answers removed)

... for close to two hours. It doesn't compare every record to every other record, it uses a smarter algorithm than that, but it still took a hell of a long time to get through the 1000+ comparisons. Also, I'm pretty sure subjective input is terrible for this kind of thing, since I certainly contradicted myself more than once:

A > B
B > C
C > A
?

But, it kept on chugging through the list, and didn't complain. And at the end, I had a sorted list of records! While I find some of the placements surprising, I can see how they make sense in the grand scheme of things. And so that order is what I'm posting here.

4 thoughts on “The List, 2008 Preliminaries

  1. Rob Caldecott

    printf? Why didn’t you use std::cout and avoid those string::c_str() calls? :)

    I love the STL.

    Have you ever used Boost? It has a great ‘foreach’ macro, e.g.:

    foreach (const string& str, file)
    {
    outFile

  2. cleek

    i think i’m going to post them 2x a week, as i did last time: Monday and Friday.

    there are still a few albums that i’m having trouble finding videos for, so i might end up making my own… ha!

Comments are closed.