TCBN Algorithms
Saturday, June 14th, 2008Recently I wrote a few new algorithms for a college blogging site that I am apart of called The College Blog Network. I went to lunch and had a few beers with Dan (the lead developer), and basically discussed with him the good and the bad of TCBN. The site is a great idea, and has a lot of potential, but we both agreed the scoring algorithms needed some work.
So, with a little discussion, I had come up with a couple algorithms. One of which has been implemented already, and one that will be implemented in the near future. I have outlined the general workings of these algorithms, but left out some of the details to prevent unforeseen exploitation.
Hot Topics Algorithm
The main goal of this algorithm is to score a blog entry based on how “hot” it is. Hotness is essentially popularity and freshness. Even if a posting was one of the most popular, 3 months later, it is no longer considered hot. At the same time, a post that has been popular for the last week should still be considered hot, even if it has been around for a few days.
The solution was simple, apply a weighting system to the score that is used to calculate “hotness”. The main factor is time or “freshness value”, which is an adjustable value that can be changed to accommodate TCBN as it grows.

As shown in the graph, full weighting will be applied to newer posts, but over time, the weight a post has will begin to degrade. Lets say your initial weighted score on your post is 10 initially. After X time, it will degrade to 5. To maintain a weighted score of 10, you will need a unweighted score of 20. This will allow for consistently popular posts to remain hot, but only initially popular posts to fade away quickly. Thus maintaining an accurate “hot list”.
Overall Blog Scoring Algorithm
The second algorithm I worked on is much more complex. The goal of this algorithm is to try to calculate the “goodness” of a blog. Currently the overall blog score is calculated by adding all blog “bumps” together, then removing the blog “dumps”. In the case of a tie, the blog “views” are used. While providing an decent ballpark estimate, this score is not easily changeable (you must specifically go out of your way to bump a blog), does not account for postings, and can be exploited positively and negatively if a group of people bump or dump all at once.
The main goal of this algorithm is provide accurate ratings for blogs. The requirements were that a visible score would still need to be generated, it would still be primarily based on user feedback (bumps/dumps), and would be less susceptible to exploitation.
Simply put, the new algorithm breaks down to this:
Base “Goodness” + Posting “Goodness” + Viewability
I can’t reveal all the details of how each value is calculated, but here is the gist of it:
Base Goodness is essentially the current rating system, with some minor changes to make it a little more robust.
Posting Goodness takes consideration of posts scores (which will be more apparent when post bumping and dumping is added in the next TCBN revision). This value considers all posts. If one post in a great while is “good”, your score will not be as high as if most posts are considered “good”.
Viewability is a non-user controlled value that takes unique post views into account. A post that never gets bumped, but is viewed a lot will contribute a small amount to the overall score of the blog.
Overall these algorithms were a fun little side project for me, and hopefully will come in great use for TCBN. Tweaking might occur once we start to see how the scores turn out, but these are the basic principles behind them.



