Err… yeah

Poor Facebook, but also WTF?!?
I think Matt puts it better than I ever could. See here.
It’s true though that it’s impressive as hell that they coded something like this. I mean, I can’t imagine how difficult it must be to keep track of every single action a user makes and then broadcast that to all of said person’s friends… I imagine the algorithm to do that had to be optimized a ton to make page loads bearable. Or I guess, depending on how they have friend structures organized (I imagine as a graph with bidirectional edges), it’s really not that difficult, just space-intensive.

I got new glasses today. They make me happy, I think. I’m gonna have to get used to wearing them higher up on my nose since they’re not as tall as my old ones. Also got a bunch of gummy treats from my parents… and 16 rolls of film. Yay film!

Yearbook meeting was today. Tomorrow is the Activities Fair. Whee.

Algo algo algo algo
Quicksort, quicksort
Algo algo algo algo
Quicksort, quicksort
Algo algo algo algo
Quicksort, quicksort
Algo algo algo algo
Ahhh it’s a Tom, a Tom, ohhhh it’s a Tom

Edit: Actually, this is interesting to think about, from a technical point of view… and I guess it’s not as simple as I originally thought.
Let’s say a user has n friends. Each person has their last 10 actions stored (this isn’t exactly true, since you can delete actions and older ones take their place… and I haven’t deleted enough of mine to see how many they store). Finding the last k actions by your friends incurrs an automatic lookup of 10nlog(10n) to sort all the actions and find the k most recent. Many of these actions may also incurr an additional cost, as they require looking up the tagged people (i.e. photos or notes) in your friends list to see if they exist… likely either a cost of n or 1 amortized, depending on how friends links are stored. Either way, that’s unimportant asymptotically, so you incurr an automatic cost of O(nlogn) with every home page view, assuming the content is generated dynamically, which it seems to be.
Dealing with issues of untagging, deleted groups, removing your actions, and such seem to be relatively easy… just delete the corresponding entry in the log for the person (incurring an additional O(n) each time someone does one of these actions), and those actions are automatically removed from any feeds.
Dealing with multiple people joining a group seems to be more difficult though, since the feed combines such things into “X, Y, and Z joined group G”. This likely incurrs another computation of order n (although I guess they could process duplicates here too, like if two of your friends entered a relationship).
Some people have on the order of 1000+ friends. I don’t even want to think about how many people are logging into facebook (and seeing the home page with the feed info) at any given time.
Even an algorithm that can run in O(nlogn) would be immensely horrible to generate on every login… I can’t think of anything else on Facebook right now that has to do that, besides your friends page (ordering friends by profile update time), which people probably don’t use as much.

The feeds on each user’s page probably aren’t as bad… tagging someone probably adds an action to their log that they were tagged and such, which doesn’t seem incredibly time-intensive, and it’s trivial to store what the user did and then sort the actions.

Meh. My analysis is probably all wrong… but still, it’s quite impressive what they managed to achieve.
Too bad it wasn’t a practical application :-\

POTATO

It’s the weirdest thing… I’ve been feeling really antisocial lately, at least in groups consisting of more than 2 other people. I spent some time in the cluster today doing homework and I just felt incredibly uncomfortable the entire time. I went to Alan’s birthday celebration foo thing last night, and felt uncomfortable most of the time. I decided to avoid KGB today because I don’t want to be around groups of people. I keep having to leave for (short) periods of time when playing games with Apphia/Tim/Ian/Dan/people. I went to play ITG today and almost didn’t because there were other people in Scotland Yard. Meh. Whatever.

POTATO!

Updates

Meh, using the same post title for every entry is good in that I don’t have to think very hard, but I imagine it’ll make posts hard to find in the future. Then again, my titles are never very descriptive anyway, so what does it matter?

This weekend has been full of homework. Like, omg, I didn’t know I could have so much homework… and it’s only the first week. Slowly working away at them… I need to start the graphics assignment today and go to office hours for algo tomorrow. Still need to finish numerical methods (which was supposed to be the easiest one…) and algo. Also, once my film arrives, I need to shoot a couple rolls in varying light to see how colors change.

Went to see SoaP yesterday with Everett. Surprisingly, it wasn’t nearly as bad as I thought it would be. In fact, if it wasn’t for the name, I’d be temped to call it a decent movie.
Now they just need the trilogy… BoaT (Bears on a Train) and HoaC (Hamsters on a Car)… despite the fact that the last one doesn’t make a word, and that they’d have to be rabid hamsters.

Bagelfish sandwich! :D

Last night was lots of puyo fun with people, pizza, and brownies. Then I felt antisocial and came and holled myself up in my room with algo.

Whee life is good :)

Work, day 33

So my equation parser now seems to work very well. The extraction of parts seems to work in almost all cases. It’s now just a matter of getting it to correctly interpret signs, which is actually really annoting (the extractor is already at over 3000 lines, and that’s just the part that extracts… not the classifier or preprocessing for extraction or tagging for extraction).
Also got systems parsing (i.e. You work at a job that makes $5/hour and you would get a bonus of $200. You could get a new job that makes $7/hour.) working relatively well. It was annoying getting it to work correctly with years (things like “In 1916, there were…”).
Overall though, I’m happy with my parser.

Passed two more 10-rating songs in ITG today-Hispanic Panic with a B and Bend Your Mind with a B-. I actually really like Bend Your Mind… the steps it in seem completely random and stuff, but it has hands (which I love), and it has amazingly fun (but difficult) crossover holds. Wheeee.
Also came close to an S+ in Land of the Rising Sun (93.39%).

Currently at Alan and Shawn’s house watching movies. Tomorrow is stuff with Tim at his apartment. Sunday is Yearbook proofing. The following week is my last week of work. Time is really flying by…

Ben playing doubles:

You meet the most awesome people playing ITG… this makes three people now I’ve met through ITG.
Whee!

OMG Full

Today was Klipper’s birthday. We all went to a Brazillian steakhouse of yummyness. By far the most expensive meal I’ve had in Pittsburgh, but OMG worth it… As usual, I overstuffed myself (I don’t ever seem to get full *while* I’m eating), so I’m sitting here now not really wanting to move and feeling like I need to burp but being unable to (since I’m full of meat, not gas). Wheee.

But oh god it was so good.

Um, yeah.
Played more ITG today (unsurprisingly).
Wheeeeeee.

I’m surprised that none of the ITG-playing people who read this pointed out that the screenshot I posted last night looks strange.
Major props to the first person who says why and explains away the inconsistency (the screenshot has not been altered in any way except for resizing) keeping in mind that the screen was taken in Stepmania.