How to examine what a facebook 'topic' encapsulates? - facebook

When selecting topics for facebook ads, many are duplicates. If my experience with databases has taught me anything, it's that humans enter data in all sorts of ways. So I guess facebook's algorithms have found 'topics' based on how humans have entered them. So I guess duplicates could result because of a trailing space or something like that.
From the UI, I cannot tell the difference between topics which appear identical, but which may have very different followings (e.g. one may have 10m associated users, another might just have 100 if it's an uncommon typo with a trailing space).
How can I view more information on facebook 'topics'? Is there an API call for this?
Example
Here is an example of a duplicate topic
Here's where the topics can be found (requires login)
NB: as a corollary to the above, when there are duplicates (or triplets) is it beneficial to select all of them, or is selecting just one enough to maximise the effect?

You can find the solution by creating an ad from the Business Manager. Short answer is that the duplicates belong to different categories.
In your case, if you look for "Sonic drive-in", Facebook will give you the following choices (see pic):
Sonic drive-in as interest (e.g. to target those who like a related page)
Stackoverflow as an employer (to target those working there)
So, it depends on what you need for your ads.

Related

Extracting data from background - Facebook

I am inspecting a page on Facebook now. These describers indicate that some interesting data is being gathered on the users, but I can't find it.
Is there a way to extract the data? (i.e. userborn, males, females, gpslocation) from the response below:
["user","page","group","app","event","friendlist","shortcut"],"browse_functions":{"intersect":{"numParamsUnbounded":true,"minNumParams":1,"maxNumParams":100,"allowsFreeText":false},"fuzzy-intersect":{"numParamsUnbounded":true,"minNumParams":1,"maxNumParams":100,"allowsFreeText":false},"union":{"numParamsUnbounded":true,"minNumParams":1,"maxNumParams":100,"allowsFreeText":false},"fbids":{"numParamsUnbounded":true,"minNumParams":1,"maxNumParams":100,"allowsFreeText":false},"story-fbids":{"numParamsUnbounded":true,"minNumParams":1,"maxNumParams":100,"allowsFreeText":false},"all":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"pages":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"users":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"present":{"numParamsUnbounded":false,"minNumParams":0,"maxNumParams":1,"allowsFreeText":false},"past":{"numParamsUnbounded":false,"minNumParams":0,"maxNumParams":1,"allowsFreeText":false},"future":{"numParamsUnbounded":false,"minNumParams":0,"maxNumParams":1,"allowsFreeText":false},"ever":{"numParamsUnbounded":false,"minNumParams":0,"maxNumParams":1,"allowsFreeText":false},"ever-past":{"numParamsUnbounded":false,"minNumParams":0,"maxNumParams":1,"allowsFreeText":false},"class":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":2,"allowsFreeText":false},"date":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":2,"allowsFreeText":false},"after":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":2,"allowsFreeText":false},"before":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":2,"allowsFreeText":false},"duration-past":{"numParamsUnbounded":false,"minNumParams":2,"maxNumParams":2,"allowsFreeText":false},"duration-future":{"numParamsUnbounded":false,"minNumParams":2,"maxNumParams":2,"allowsFreeText":false},"users-age":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":2,"allowsFreeText":false},"users-younger":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":2,"allowsFreeText":false},"users-older":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":2,"allowsFreeText":false},"users-born":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":2,"allowsFreeText":false},"users-interested":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"users-named":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":true},"users-birth-place":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":2,"allowsFreeText":false},"females":{"numParamsUnbounded":false,"minNumParams":0,"maxNumParams":0,"allowsFreeText":false},"males":{"numParamsUnbounded":false,"minNumParams":0,"maxNumParams":0,"allowsFreeText":false},"members":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"friends":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"online-friends":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"non-friends":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"acquaintances":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"close-friends":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"restricted-friends":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"followers":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"users-followed":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"creators":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"admins":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"contacts":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"groups":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"non-groups":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"groups-privacy":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"groups-named":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":true},"groups-about":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"communities":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"communities-named":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":true},"relatives":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"siblings":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"brothers":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"sisters":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"parents":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"fathers":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"mothers":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"children":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"sons":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"daughters":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"aunts":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"uncles":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"nieces":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"nephews":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"cousins":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"grandchildren":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"grandsons":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"granddaughters":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"grandparents":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"grandmothers":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"grandfathers":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"stepsiblings":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"stepsisters":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"stepbrothers":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"stepparents":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"stepfathers":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"stepmothers":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"stepchildren":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"stepdaughters":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"stepsons":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"sisters-in-law":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"brothers-in-law":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"fathers-in-law":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"mothers-in-law":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"sons-in-law":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"daughters-in-law":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"partners":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"boyfriends":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"girlfriends":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"users-any-relationship":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"users-dating":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"users-relationship":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"users-open-relationship":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"spouses":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"fiances":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"users-its-complicated":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"users-civil-union":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"domestic-partners":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"wives":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"husbands":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"students":{"numParamsUnbounded":false,"minNumParams":0,"maxNumParams":7,"allowsFreeText":false},"employees":{"numParamsUnbounded":false,"minNumParams":0,"maxNumParams":5,"allowsFreeText":false},"major":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"degree":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"job":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"schools-attended":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":4,"allowsFreeText":false},"school-location":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"high-schools-attended":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":4,"allowsFreeText":false},"colleges-attended":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":4,"allowsFreeText":false},"grad-schools-attended":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":4,"allowsFreeText":false},"employer-location":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"employers":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":3,"allowsFreeText":false},"residents-near":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":4,"allowsFreeText":false},"home-residents":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":2,"allowsFreeText":false},"hometowns":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"residents":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":2,"allowsFreeText":false},"current-cities":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"current-regions":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"current-countries":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"users-of-nationalities":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"nationalities":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"speakers":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"languages":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"likers":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"exact-page-likers":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"job-liker-union":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"listeners":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"readers":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"watchers":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"actors":{"numParamsUnbounded":false,"minNumParams":2,"maxNumParams":2,"allowsFreeText":false},"page_raters":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"commenters":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"users-religious-view":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"users-political-view":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"admirers":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"religious-views":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"political-views":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"visitors":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"users-checked-in":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"places-checked-in":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"places-visited":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"recent-places-visited":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"places-recommended-for":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"places-reviewed":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"pages-in":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"places":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"places-in":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"places-near":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":4,"allowsFreeText":false},"places-liked":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":false},"places-named":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":true},"places-near-address":{"numParamsUnbounded":false,"minNumParams":1,"maxNumParams":1,"allowsFreeText":true},"gps-location":
Sorry, but there isn't any information in there. You just copied past some bunch of useless codes.
There is no hidden information, those hashes are only used for their needs, and there's nothing we can actually do to fully analyse it.
Well, we can obviously parse those data, but what will it serve to? You don't even know what does for instance numParamsUnbounded means. What do you want to do when you got it parsed? You'll just got the same thing.
Between, it's not HTLM, but HTML, and this code isn't even HTML.
#Jake_Mill22 these are parameters utilized on the Facebook Graph and it's search. It's basically a graph traversal-based search that goes on behind the scenes, and is also based on Set theory. Your search consists of some filterings on entities (people, places, pages, groups, etc) by their semantic relationships to one another. For example:
https://www.facebook.com/search/str/rock%20music/pages-named/likers/str/stack%20overflow/pages-named/likers/intersect
Says show me all people who both like pages on Facebook with "rock music" in their names who also like other pages with "Stack Overflow" in their names.
You can put together some pretty interesting queries. Check out here for more info here:
http://booleanblackbelt.com/2015/02/important-facebook-graph-search-developments/

What is the significance of OrderedFriendsListInitialData?

When you're logged in, in the page source, there is a list called OrderedFriendsListInitialData.
According to rumour, it's a list of people that visit your profile the most, others say that it's a list of profiles you view the most, and yet other say it's the friends you interact with the most.
Can anyone shed some light on this by providing a definitive answer, or at least an educated one?
If You check the code You will notice it has something to do with right sidebar. Just before it in there is this url https://s-static.ak.facebook.com/rsrc.php/yT/r/q-Drar4Ade6.ogg
As it is JSON string obviously it has to be related, file this url is pointing at is sound notification for chat.
As You may notice it is initial data not chat list probably later chat script use this data to fill up people on list and make some extra check etc..
There is word ordered as well, Myself I'm not really active on facebook so have no way of checking it but it is known that fb analyses all Your steps and make this list based on thousands of factors to provide You with list of users You are likely to chat.
You father may be there because fb knows You are family and consider it as high possibility of conversation.
Send email to them If You want details.
Well in the time passed since you first posted this they've changed the name of the list to InitialChatFriendsList which I suppose is a little more descriptive of what it is, but as far as how they determine what to put on there I think my friends and I have come up with a very plausible explanation.
When determining who you are most likely to communicate with on their chat system, facebook will obviously use a whole number of factors weighted differently to determine who you most want to talk to and who you most need to talk to.
the most important is who you actually talk to... who on fb chat that you communicate with most frequently will obviously show up on your chat list.
who you have public interactions w/ (i.e tagging in at some location, picture tagging, actual wall comments etc.)
Now those two are two very large factors when determining who they put on your list, beyond that it is a combination of who looks at your page and whose page you look at. Based on my list and the list of my friends, we determined that if you are inclined to look at somebody else's page/posts a lot and they are likely to do the same for you, they will move up in rank even if you don't have an actual interactions on facebook. A couple of people who I would admit to "stalking" the most on fb are not even on my list (at least not on the top 50 which is where i stopped checking) while other people who I do occasionally look at and I have reason to believe they would be looking at my profile as well are fairly high on my list (around 10-15th place). And of course there are the completely random individuals who show up on the list who probably are stalkers.
Anyways, my point is there are so many factors that determine who is going to be on this list, you really can't just attribute it all to people who stalk you and people you stalk. While in for some people that would be the case, for most of the people on the list there is a whole list of reasons they're on there.
Of course this is all based on a very small pool of data, so who knows...
I think it may be the list of people who are on the top part of your chat list - the people you're statistically most likely to talk to. But! I may be wrong.
It definitely is the people who facebook considers are the most likely you are going to chat with. There are two lists of people in chat, one of the above, and the other friends who are online.
I believe the first 3 are accurate. When I checked for myself, my boyfriend was one, and my two best friends were 2 & 3. Everything after that seems to be a bit random, because #4 was a person I haven't interacted with for years.

From the two approaches I list, which one is better for CMS page management and why?

Here are the two scenarios:
First one: You have a CMS you log into go to the page manager, select a template, then add a page into the system, edit the page, save it done.
Second one: You sign in, then go to the URL you want to exist but doesn't exist yet but still shows up as a template to enter in stuff. For example, "/articles/article" and since the URLs were mapped to be dynamic, the article template shows up and has the placeholders to edit right there. Different types of pages or templates would be mapped to different URL patterns such as "/product/[product-number]" etc etc.
Is there any security concerns for doing the latter since I like the second one better in terms of programming as there is no management of pages, just authentication then navigating to the desired page. The first one is more structured and is good listing them out or individiual permission settings.
Please advise.
Beyond the authentication considerations, I think both approaches are fine. I see them as ultimately accomplishing the same thing through different user experiences. To answer the question, I would paper prototype each, then pull users into a room and perform a quick / informal usability study, giving them tasks such as "create a page with ..." etc. Evaluate which model performed better. You really should answer this question by including the users that will use the system.

How does Facebook search work?

More specifically, what factors determine the priorities they assign in response to a given query? I'm looking for answers that address numerous scenarios including queries that...
Specify the "type" of result (objects such as users, posts, pages, etc. or connections like friendships, likes, tags, etc.),
Have authentication tokens as well as ones that don't.
Have conditionals such as "since" and "until."
Don't even specify a type, such as this search for the word query.
I am actually working on an app that uses /search to search places and I use a bit of all scenarios. I couldn't write down a specific order they appear in and to be honest I highly doubt it's something as easy.
I'm 99% sure it works like the Search in Facebook does, using the user data to bring up the most relevant results. I live in Ireland for 2 years now, but while testing the app I constantly receive search results from Romania and actually close to my Hometown, which are relevant to me.
Regarding your observations, Facebook's algorithms might take into account the source of the request as well - which would be good, means it only improves as your app gets more users.

Is tagging organizationally superior to discrete subforums?

I am interested in choosing a good structure for an online message board-type application. I will use SO as an example, as I think it's an example that we are all familiar with, but my question is more general; it is about how to achieve the right balance between organization and flexibility in online message boards.
The questions page is a load of random stuff. It moves quickly (some might say, too quickly) and contains a huge number of questions that I'm not interested in.
The idea, I imagine, is that we can use tags to find questions that we're interested in. However, I'm not sure that this works: you can't use tags negatively. I'm not interested in PHP or perl or web development. I want to exclude such posts. But with the tags, I can't.
Although discrete subforums are in a sense less flexible, as they generally force you to pick a category even if a question might fit into two (if SO had, say, areas for "Web Development", "Games development", "Computer Science", "Systems Programming", "Databases", etc. then sure, some people might want to post about developing of web-based games, for example) is it worth sacrificing some of that flexibility in order to make it easier to find the content that you are interested in, and hide the content that you are not interested in?
Is there any way with a pure tagging system to achieve the greater ease of use that subforums provide?
The real problem with subforums comes when you guess wrong about which topics have enough interest to get their own subforums. While some topics end up with their own vibrant subcommunities others end up as empty ghettos, with little activity or feeling of community. Topics that might flourish as occasional subjects in a larger forum end up fragmented among many subforums, none of which has the critical mass of people necessary to have an active, vibrant community.
Though I think that tagging is supperior to grouping, people tend to think hierarchically.
In general it depends on the target group for the forum.
Maybe you can go with a mixture: use tagging and later use tag groups to order to posts. Delicious uses this, for example, and I find it rather helpful.
If you're worried about the divide between specific forums and open tag-based systems, like Stack Overflow, consider making a query system that allows you to do a bit more complex queries than just the AND operator, like here on Stack Overflow.
I cannot make a query here that will give me all questions in .NET, SQL or C#, combined, and that is the biggest irritation I have with the tags. With such a query system, you can create virtual forums at least.
Other than that, I don't really have a good opinion. I like both, and I haven't yet decided which one is best.
The idea, I imagine, is that we can use tags to find questions that we're interested in. However, I'm not sure that this works: you can't use tags negatively. I'm not interested in PHP or perl or web development. I want to exclude such posts. But with the tags, I can't.
While it's currently the case that you can't use tags to hide content, it shouldn't be impossible. Using SO as an example again, there's no reason that a system similar to the ignore function on a forum couldn't be made for the tag system. By adding a right-click context menu or a small "X" link somewhere in the tag display, tags could be marked as ignored. This would also allow the current tag feature to function; Seeing everything (minus your ignore list), or clicking a tag to see only questions with that tag.
Ignored tags could be managed in your profile if you should later develop an interest in PHP or INTERCAL that you lacked before.
The real question is that of performance. In my head it's as simple as replacing a SELECT [stuff] WHERE Tag = 'buffer-overflow' with SELECT [stuff] WHERE Tag NOT IN ('php','offtopic','funny-hat-friday') but I've not put together any DB backed sites that get absolutely pounded on by thousands people.