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.
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
yeah, i like Boost. i really like the smart pointers.
i alwys use printf – habit, i guess.
Psyched about your list BTW. Can’t wait for the next instalment…
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!