﻿<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"><channel><title>Stritar's chronolog</title><link>http://www.stritar.net</link><description>Category: Mathematics</description><copyright>Neolab d.o.o.</copyright><ttl>5</ttl><item><title>The Risk board game dice roll probability calculator and battle simulator</title><pubDate>Sun, 17 Mar 2013 16:32:12 GMT</pubDate><description>&lt;p&gt;I know there are plenty of you out there who love to play the board game &lt;a href="http://en.wikipedia.org/wiki/Risk_%28game%29" class="more" target="_blank" title="Risk (game) on Wikipedia"&gt;Risk&lt;/a&gt;. We're hooked on the Lord Of The Rings edition, and I still need to check out the &lt;a href="http://boardgamegeek.com/boardgame/8504/risk-lord-of-the-rings-expansion-set-incl-siege-o" class="more" target="_blank" title="Risk: Lord of the Rings Expansion Set (incl. Siege of Minas Tirith game)"&gt;very rare expansion pack&lt;/a&gt; one of my friends recently got. As you will see, I'm getting ready for it with all I've got, developing myself a &lt;b&gt;weapon that will help me dominate the game&lt;/b&gt;. Something that will turn the odds in my favor without actually cheating. Say hi to my &lt;b&gt;Risk battle simulator&lt;/b&gt;, which is able to calculate the chance of winning for specific Risk situations.&lt;/p&gt;

&lt;p align="center"&gt;&lt;a class="button2" title="Launch The Risk board game dice roll probability calculator and battle simulation" target="_blank" href="http://diceroll.stritar.net/risk.html"&gt;Launch&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Risk is an interesting game, powered by &lt;b&gt;simple mathematics&lt;/b&gt;. In the battle, the attacker throws three dice, the defender throws two. The attacker's advantage is the one extra die. The defender's advantage is that he/she wins when the dice are tied. Which, in the general situation of 3 dice vs. 2 dice roll, translates into the &lt;a href="http://www.plainsboro.com/~lemke/risk/" class="more" target="_blank" title="Dice Odds in the Board Game Risk"&gt;following odds&lt;/a&gt;: the &lt;b&gt;attacker has 37.17% chance&lt;/b&gt; of winning, the &lt;b&gt;defender has 33.58% chance&lt;/b&gt; of winning, and there's a &lt;b&gt;29.26 % chance of tie&lt;/b&gt; - they will both lose one army. But what about specific situations? How can I know if my 10 armies are enough against my opponent's 5+4?&lt;/p&gt;

&lt;p&gt;Since I'm a developer and not a mathematician, I decided I will rather build a &lt;a href="http://diceroll.stritar.net/risk.html" class="more" target="_blank" title="The Risk board game dice roll probability calculator and battle simulation"&gt;simple brute force JavaScript simulator&lt;/a&gt; than try to derive the formula behind the battles. An application that simulates &lt;b&gt;10.000 Risk fights&lt;/b&gt; (around 50.000 dice rolls) and calculates the result odds. That should be enough to make an approximation, right?&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.hasbro.com/common/instruct/risk.pdf" class="more" target="_blank" title="Risk Instructions and Rules"&gt;Risk's rules&lt;/a&gt; specify that the attacker always has to &lt;b&gt;leave one army behind&lt;/b&gt; (can't use it to attack), and can &lt;b&gt;attack any number of territories&lt;/b&gt; in a single turn. Which the calculator also takes into account. Every territory the attacker wins, his/her number of armies is subtracted by 1 (one army is left behind), and the last army is not able to attack. I think I got it right, but if you find and error, please let me know. &lt;/p&gt;

&lt;p align="center"&gt;&lt;img alt="Risk Dice Roll Battle Simulation" src="http://stritar.net/Upload/Images/Risk-Dice-Roll/Risk-Dice-Roll-Battle-Simulation.jpg"&gt;&lt;/img&gt;&lt;/p&gt;
&lt;p class="underpicture"&gt;&lt;a class="more" title="The Risk board game dice roll probability calculator and battle simulation" target="_blank" href="http://diceroll.stritar.net/risk.html"&gt;Risk dice roll&lt;/a&gt; battle simulation.&lt;/p&gt;

&lt;p&gt;Besides, the simulator also knows how to calculate probabilities for specific single battle situations for different numbers of dice the attacker and defender throw, by going through all the possibilities of dice throw results (which means 7.776 (6&lt;sup&gt;5&lt;/sup&gt;) different dice throws in 3 vs. 2 battle).&lt;/p&gt;

&lt;p align="center"&gt;&lt;img alt="Risk Dice Roll Possibilities and Odds" src="http://stritar.net/Upload/Images/Risk-Dice-Roll/Risk-Dice-Roll-Possibilities-and-Odds.jpg"&gt;&lt;/img&gt;&lt;/p&gt;
&lt;p class="underpicture"&gt;&lt;a class="more" title="The Risk board game dice roll probability calculator and battle simulation" target="_blank" href="http://diceroll.stritar.net/risk.html"&gt;Risk dice roll&lt;/a&gt; possibilities and odds.&lt;/p&gt;

&lt;p&gt;I made this to help myself and others understand and appreciate the statistics behind the dice. So, the next time you play Risk, don't forget to bring your phone and use the simulator to your unfair advantage. And if you're a developer, feel free to upgrade the algorithm (&lt;a href="https://github.com/gstritar/DiceRoll" class="more" target="_blank" title="gstritar / DiceRoll on github"&gt;available on Github&lt;/a&gt;). Game on.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://diceroll.stritar.net/risk.html" class="more" target="_blank" title="The Risk board game dice roll probability calculator and battle simulation"&gt;http://diceroll.stritar.net/risk.html&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/gstritar/DiceRoll" class="more" target="_blank" title="gstritar / DiceRoll on github"&gt;https://github.com/gstritar/DiceRoll&lt;/a&gt;&lt;/p&gt;
</description><link>http://stritar.net/Post/The-Risk-board-game-dice-roll-probability-calculator-and-battle-simulator.aspx</link></item><item><title>A case study in agile development: the algorithm for Ljubljana Realtime's event discovery</title><pubDate>Mon, 22 Oct 2012 20:01:16 GMT</pubDate><description>&lt;p&gt;When &lt;a href="http://neolab.si" target="_blank" title="Neolab, software development" class="more"&gt;we&lt;/a&gt; started working on &lt;a href="http://stritar.net/Post/Discover-what-is-happening-in-Ljubljana-in-real-time.aspx" class="more" target="_blank" title="Discover what's happening in Ljubljana in real-time"&gt;Ljubljana Realtime&lt;/a&gt;, we decided to approach it in an &lt;b&gt;agile way&lt;/b&gt;. Amongst others, we wanted to use a few interesting lean concepts such as &lt;a href="http://en.wikipedia.org/wiki/Rapid_application_development" class="more" target="_Blank" title="Rapid application development"&gt;rapid development&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Minimum_viable_product" class="more" target="_blank" title="Minimum viable product"&gt;Minimum Viable Product&lt;/a&gt; and the &lt;a href="http://lean.st/principles/build-measure-learn" class="more" target="_blank" title="The Lean Startup - Build Measure Learn"&gt;Build - Measure - Learn&lt;/a&gt; iterations. Less than two months later, the results are in, and they are very pleasing. The &lt;b&gt;MVP&lt;/b&gt; in the shape of an &lt;a href="http://ljrt.neolab.si/" class="more" target="_blank" title="Ljubljana Realtime"&gt;activity map&lt;/a&gt; was developed in a few weeks, only to show there is a lot of &lt;b&gt;social noise&lt;/b&gt; which will somehow need to be taken under control. But that's currently low priority, since the first &lt;a href="http://www.forbes.com/sites/martinzwilling/2011/09/16/top-10-ways-entrepreneurs-pivot-a-lean-startup/" class="more" target="_blank" title="Top 10 Ways Entrepreneurs Pivot a Lean Startup"&gt;pivot&lt;/a&gt; is already taking place, slowly shifting the focus from the &lt;a href="http://ljrt.neolab.si/" class="more" target="_blank" title="Ljubljana Realtime"&gt;rich map application&lt;/a&gt; towards an &lt;a href="https://twitter.com/LjubljanaRT" class="more" target="_blank" title="Ljubljana Realtime on Twitter"&gt;event discovery algorithm and stream&lt;/a&gt;. That's where I see the &lt;b&gt;most potential&lt;/b&gt; of &lt;a href="https://twitter.com/ljubljanaRT" class="more" target="_blank" title="Ljubljana Realtime on Twitter"&gt;Ljubljana Realtime&lt;/a&gt;, and in the last weeks, that's where the most work was done. &lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://ljrt.neolab.si/" class="button2" target="_blank" title="Launch Ljubljana Realtime"&gt;Launch&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://stritar.net/Post/Discover-what-is-happening-in-Ljubljana-in-real-time.aspx" class="more" target="_blank" title="Discover what's happening in Ljubljana in real-time"&gt;Ljubljana Realtime&lt;/a&gt; event discovery engine uses &lt;b&gt;Foursquare&lt;/b&gt; trending venues and geo-tagged posts from &lt;b&gt;Twitter&lt;/b&gt;, &lt;b&gt;Instagram&lt;/b&gt; and &lt;b&gt;Flickr&lt;/b&gt; to discover what's happening in real life. At least &lt;b&gt;6 people checked-in&lt;/b&gt; on Foursquare or &lt;b&gt;two different people tweeting or posting photos&lt;/b&gt; in a single hour could mean something is going on. These events are posted to &lt;a href="https://twitter.com/LjubljanaRT" class="more" target="_blank" title="Ljubljana Realtime on Twitter"&gt;Twitter&lt;/a&gt; and &lt;a href="http://facebook.com/ljubljanaRT" class="more" target="_blank" title="Ljubljana Realtime on Facebook"&gt;Facebook&lt;/a&gt;, with links to the posts. A few versions of this algorithm were already deployed, each one solving new problems, resulting in a few micro &lt;b&gt;Build - Measure - Learn&lt;/b&gt; cycles in a single month.&lt;/p&gt;

&lt;h2&gt;Iteration 1: Foursquare, no duplicates&lt;/h2&gt;
&lt;p&gt;The first version of the &lt;a href="https://twitter.com/LjubljanaRT" class="more" target="_blank" title="Ljubljana Realtime on Twitter"&gt;stream (bot)&lt;/a&gt; was a simple one, at that point it was meant to work as &lt;b&gt;promotion for the map&lt;/b&gt;. The only thing it knew how to do was to wait a few hours until it posted the same thing again. I think Foursquare checkins are alive for &lt;b&gt;three hours&lt;/b&gt;, so if a trending venue was still trending after that time, new people had to checkin and the venue was still buzzing.&lt;/p&gt;
&lt;p&gt;Problem: Plain, &lt;b&gt;no real added value&lt;/b&gt;.&lt;/p&gt;

&lt;h2&gt;Iteration 2: Adding activity from other sources&lt;/h2&gt;
&lt;p&gt;When we were trying to make some space on the &lt;a href="http://ljrt.neolab.si/" class="more" target="_blank" title="Ljubljana Realtime"&gt;crowded map&lt;/a&gt;, we started &lt;b&gt;grouping posts&lt;/b&gt; from Twitter and Instagram by the nearest Foursquare venue, which meant having &lt;b&gt;less boxes on the screen&lt;/b&gt;. This turned out to be quite a complex thing to do properly, but it was worth the effort. On only a few occasions, one venue would have &lt;b&gt;multiple posts&lt;/b&gt; in a single hour, and in most cases, that meant something was happening there. This provided another very interesting potential for the activity stream. Actually, it made the stream bigger than the map could ever be.&lt;/p&gt;
&lt;p&gt;(I love it when such things happen, when you are trying to solve a problem, and it turns out there is much more hidden behind the resolution.)&lt;/p&gt;

&lt;p align="center"&gt;&lt;img src="http://stritar.net/Upload/Images/Ljubljana-Realtime/Ljrt-Event-Athletic-Meeting.gif" alt="Ljubljana Realtime event athletic meeting"&gt;&lt;/p&gt;
&lt;p class="underpicture"&gt;Groupping posts by a venue. Did &lt;a href="https://twitter.com/LjubljanaRT" class="more" target="_blank" title="Ljubljana Realtime on Twitter"&gt;Ljubljana Realtime&lt;/a&gt; just discover an athletic meeting taking place?&lt;/p&gt;


&lt;p&gt;The next problem: Activity in some venues, specially generic ones such as "Ljubljana" would &lt;b&gt;trigger the stream almost every day&lt;/b&gt;. Similarly, some large venues, such as supermarkets, would be &lt;b&gt;trending too many times on Foursquare&lt;/b&gt;.&lt;/p&gt;

&lt;h2&gt;Iteration 3: Balancing the posts&lt;/h2&gt;
&lt;p&gt;The algorithm needed an update, which would &lt;b&gt;lower the amount of times when a venue would be recognized as an event&lt;/b&gt;, either on Foursquare or on other channels. At first I though about an upgrade which would set the amount of people or tweets needed to trigger the "event discovered" action for a specific venue. This would enable us to &lt;b&gt;reduce the importance of some venues&lt;/b&gt;, but it would also require &lt;b&gt;manual work&lt;/b&gt;. Luckily, we came up with another brilliant idea: the more times a venue is trending, the harder it is for it to be trending again, at least for the next few days. &lt;b&gt;Automatic balancing&lt;/b&gt;.&lt;/p&gt;


&lt;p align="center"&gt;&lt;img src="http://stritar.net/Upload/Images/Ljubljana-Realtime/Ljrt-Generic-Venues.gif" alt="Ljubljana Realtime generic venues"&gt;&lt;/p&gt;
&lt;p class="underpicture"&gt;Venues with the most discovered events. Generic ones, besides massive places, such as train stations, cinemas, squares and shopping centers are too dominating.&lt;/p&gt;


&lt;p&gt;The next problem: At this point, we have launched other test instances of &lt;a href="https://twitter.com/ljubljanaRT" class="more" target="_blank" title="Ljubljana Realtime on Twitter"&gt;Ljubljana Realtime&lt;/a&gt; (&lt;a href="https://twitter.com/MariborRT" class="more" target="_blank" title="Maribor Realtime on Twitter"&gt;Maribor&lt;/a&gt;, &lt;a href="https://twitter.com/ZagrebRT" class="more" target="_blank" title="Zagreb Realtime on Twitter"&gt;Zagreb&lt;/a&gt; and &lt;a href="https://twitter.com/ZurichRT" class="more" target="_blank" title="Zurich Realtime on Twitter"&gt;Zurich&lt;/a&gt;), to see how the system behaves in other environments. Some cities are bigger, some are smaller, which means they produce &lt;b&gt;different amount of activity&lt;/b&gt;. Besides, &lt;b&gt;different services are used differently&lt;/b&gt; in different cultures.&lt;/p&gt;

&lt;h2&gt;Iteration 4: Supporting local instances&lt;/h2&gt;
&lt;p&gt;Foursquare is big in Croatia (&lt;a href="http://zgrt.neolab.si" class="more" target="_blank" title="Zagreb Realtime"&gt;Zagreb&lt;/a&gt;), but not so much in Switzerland (&lt;a href="http://zhrt.neolab.si" class="more" target="_blank" title="Zurich Realtime"&gt;Zurich&lt;/a&gt;), which means Zagreb Realtime's stream had a lot of Foursquare trending posts, while Zurich's had a lot of "Increased activity on Twitter and Instagram" posts. It was obvious that &lt;b&gt;local instances needed different algorithms&lt;/b&gt;. While having an option to set the &lt;b&gt;amounts which would trigger the post&lt;/b&gt; on a specific venue would be too much to moderate, having the same logic on a specific region could work. And it does. &lt;a href="https://twitter.com/ZagrebRT" class="more" target="_blank" title="Zagreb Realtime on Twitter"&gt;Zagreb&lt;/a&gt; now needs &lt;b&gt;more people checked-in on Foursquare&lt;/b&gt;, while &lt;a href="https://twitter.com/ZurichRT" class="more" target="_blank" title="Zurich Realtime on Twitter"&gt;Zurich&lt;/a&gt; needs &lt;b&gt;more unique people tweeting or sharing photos&lt;/b&gt;.&lt;/p&gt;

&lt;p align="center"&gt;&lt;img src="http://stritar.net/Upload/Images/Ljubljana-Realtime/Ljrt-Too-Many-Trending-Events.gif" alt="Ljubljana Realtime too many trending venues"&gt;&lt;/p&gt;
&lt;p class="underpicture"&gt;Number of discovered events by type (Foursquare vs. Twitter + Instagram) on each day. Foursquare trending venues are dominating Zagreb, while social streams are dominating Zurich Realtime.&lt;/p&gt;

&lt;p&gt;The next problem: The basic algorithm requires two different people to tweet/post from the same location in one hour. In case of &lt;a href="https://twitter.com/ZurichRT" class="more" target="_blank" title="Zurich Realtime on Twitter"&gt;Zurich&lt;/a&gt;, this amount was set to three, but it turns out this situation happens rarely, around &lt;b&gt;10 times fewer than with two people&lt;/b&gt;, or only two to three times a day. Obviously not enough.&lt;/p&gt;

&lt;h2&gt;Iteration 5: Improving the "increased activity" weight&lt;/h2&gt;
&lt;p&gt;You can only have a &lt;b&gt;whole amount of people tweeting&lt;/b&gt; in the past hour. Two or three. In our case, we needed something in the range of 2 1/2. The modified solution adds the number of posts divided by ten to the number of users, which means that currently, at &lt;b&gt;least two people making at least three posts&lt;/b&gt; in an hour will determine a trending event in Zurich. This is not a perfect solution from the event discovery view, but it does what urgently needed to be done: &lt;b&gt;prevent having too many tweets&lt;/b&gt; in the stream.&lt;/p&gt;
&lt;p&gt;The next problem: we currently have four Twitter accounts that &lt;a href="https://twitter.com/neolab_si/realtime" class="more" target="_blank" title="@neolab_si/Realtime on Twitter"&gt;tweet events for these four cities&lt;/a&gt;. Our target was for each of them to make around 10 - 15 tweets a day, which seems like a number that is not spam. But how can a person see which of these events is &lt;b&gt;THE event&lt;/b&gt;?&lt;/p&gt;

&lt;h2&gt;Iteration 6: Going super venue level 2&lt;/h2&gt;
&lt;p&gt;The latest version of the algorithm now recognizes &lt;b&gt;two levels of events&lt;/b&gt;. An event (mostly 6 people on Foursquare, mostly 2 different people tweeting), and an outstanding event (around 12 people on Foursquare, around 4 people tweeting). Our goal was to make this super event happen only &lt;b&gt;once a few days&lt;/b&gt;, on rare occasions two times per day, and it has already happened a few times. &lt;/p&gt;

&lt;p align="center"&gt;&lt;img src="http://stritar.net/Upload/Images/Ljubljana-Realtime/Ljrt-Super-Event-Philips-Fashion-Week-Kino-Siska.jpg" alt="Ljubljana Realtime super event for Philips Fashion Week in Kino Šiška"&gt;&lt;/p&gt;
&lt;p class="underpicture"&gt;Sometimes super events happen, with tens of posts in a single hour, such as the one for &lt;a href="http://www.elle.si/fashionweek/" class="more" target="_blank" title="Philips Fashion Week - Elle.si"&gt;Philips Fashion week&lt;/a&gt;. These events definitely require more exposure.&lt;/p&gt;

&lt;h2&gt;The next iterations&lt;/h2&gt;
&lt;p&gt;At this point, I'm very satisfied with how the algorithm works, even though a few other modifications need to be done (specially to support different days of week specifics and behavior). By &lt;b&gt;measuring&lt;/b&gt; what is happening, &lt;b&gt;learning&lt;/b&gt; from that information and &lt;b&gt;building&lt;/b&gt; the next releases based on that knowledge, the activity stream logic has come a long way from the initial version. Measuring is crucial, and rarely we have went to such extent to enable this in the widest way possible (e.g. the update to balancing the posts based on the previous events would be trivial by itself, but we wanted to log things that would happen but didn't happen, besides things that actually happened). &lt;/p&gt;

&lt;p&gt;These cycles of &lt;b&gt;Build - Measure - Learn&lt;/b&gt; can be a lot &lt;b&gt;hard work&lt;/b&gt;, but they provide &lt;b&gt;great results&lt;/b&gt;, which are also very fun and rewarding. Some people simply need to see how deep the rabbit hole is. Do you have any other interesting cases or experience with this approach?&lt;/p&gt;</description><link>http://stritar.net/Post/A-case-study-in-agile-development-the-algorithm-for-Ljubljana-Realtime-s-event-discovery.aspx</link></item><item><title>Putting 'people who look at you' to your Facebook profile would be the smartest thing to do</title><pubDate>Sat, 02 Jun 2012 10:50:34 GMT</pubDate><description>&lt;p&gt;Are you one of those people who are wondering how Facebook decides which &lt;b&gt;friends they put on your profile&lt;/b&gt;? I admit I am, both out of &lt;a href="http://stritar.net/Post/The-Chronolog-Now-Understands-Connections-Between-Content.aspx" class="more" target="_blank" title="The chronolog now understands connections between content"&gt;programmer's curiosity&lt;/a&gt; and of course, there have been &lt;b&gt;rumors&lt;/b&gt; that those individuals are the ones &lt;a href="http://www.shinyshiny.tv/2010/12/has_facebook_finally_introduced_whos_looking_at_your_profile.html" class="more" target="_blank" title="Has Facebook finally introduced 'who's looking at your profile'? + UPDATE: Facebook respond"&gt;who look at your profile&lt;/a&gt;. While LinkedIn offers this &lt;b&gt;"who looks at your profile"&lt;/b&gt; insight &lt;a href="http://learn.linkedin.com/the-homepage/profilestats/" class="more" target="_blank" title="LinkedIn Profile Stats"&gt;to its (premium) users&lt;/a&gt;, Facebook is still very mysterious about it, &lt;b&gt;denying&lt;/b&gt; this is how this &lt;a href="http://www.facebook.com/help/?faq=116320945119338" class="more" target="_blank" title="Which friends appear in the left column of my profile?"&gt;particular algorithm works&lt;/a&gt;. But there is a simple reason I don't believe them: if I would be Facebook, I would design it &lt;b&gt;exactly like this&lt;/b&gt;.&lt;/p&gt;


&lt;h2&gt;EdgeRank&lt;/h2&gt;
&lt;p&gt;Facebook uses &lt;a href="http://thenextweb.com/socialmedia/2011/05/09/everything-you-need-to-know-about-facebooks-edgerank/" class="more" target="_blank" title="Everything you need to know about Facebook’s EdgeRank"&gt;EdgeRank&lt;/a&gt; to calculate the &lt;b&gt;connection between two people&lt;/b&gt;, determined by the amount of mutual friends, interactions, tagged photos, attended events and other parameters in a time period. Besides other things, the EdgeRank influences which posts get &lt;a href="http://www.thedailybeast.com/articles/2010/10/18/the-facebook-news-feed-how-it-works-the-10-biggest-secrets.html" class="more" target="_blank" title="Cracking the Facebook Code"&gt;displayed in your news feed&lt;/a&gt;. It seems Facebook is saying that a &lt;b&gt;similar algorithm&lt;/b&gt; is used for the &lt;a href="http://www.facebook.com/help/?faq=116320945119338" class="more" target="_blank" title="Which friends appear in the left column of my profile?"&gt;friends on your profile&lt;/a&gt;, but is it really?&lt;/p&gt;


&lt;h2&gt;The exploit&lt;/h2&gt;
&lt;p&gt;Some time ago, someone managed to find a &lt;a href="http://thekeesh.com/2011/08/who-does-facebook-think-you-are-searching-for/" class="more" target="_blank" title="Who Does Facebook Think You Are Searching For?"&gt;way inside the EdgeRank results&lt;/a&gt;. &lt;a href="https://twitter.com/#!/jkeesh" class="more" target="_blank" title="Jeremy Keeshin (jkeesh) on Twitter"&gt;This guy&lt;/a&gt; noticed that Facebook &lt;b&gt;caches the list of your friends&lt;/b&gt;, together with the level of &lt;b&gt;proximity&lt;/b&gt; you have with each one. This stored part of the &lt;b&gt;social graph&lt;/b&gt; helps search and other lists on Facebook to work faster and be sorted better. He was nice enough to write a &lt;b&gt;script&lt;/b&gt; and &lt;a href="http://thekeesh.com/2011/08/who-does-facebook-think-you-are-searching-for/" class="more" target="_blank" title="Who Does Facebook Think You Are Searching For?"&gt;made it public&lt;/a&gt;, so everybody can see &lt;b&gt;who their Facebook BFFs are&lt;/b&gt;. The results looks like the real deal, and it's actually quite fascinating that Facebook &lt;b&gt;hasn't patched&lt;/b&gt; this potential abuse yet, it's been available for almost a year.&lt;/p&gt;

&lt;p&gt;Bottom line: the list of friends in your &lt;b&gt;EdgeRank&lt;/b&gt; and the list of friends on &lt;b&gt;your profile&lt;/b&gt; are almost, but not quite, entirely &lt;b&gt;unlike&lt;/b&gt; each other.&lt;/p&gt;
&lt;br&gt;
&lt;img src="http://stritar.net/Upload/Images/Facebook-Enge-Rank-Friends.jpg" alt="Facebook Best Friends According To EdgeRank"&gt;
&lt;p class="underpicture"&gt;Comparing my closest friends to those that are showing up on my Facebook profile&lt;/p&gt;

&lt;h2&gt;Why bother?&lt;/h2&gt;
&lt;p&gt;Facebook needs to constantly &lt;a href="http://stritar.net/Post/The_Awesomeness_Of_The_Facebook_Like_Button.aspx" class="more" target="_blank" title="The awesomeness of the Facebook Like button"&gt;drive your engagement&lt;/a&gt;, and they have &lt;b&gt;infinite data&lt;/b&gt; about you. They are trying to &lt;a href="http://www.slate.com/articles/technology/technology/2011/09/not_sharing_is_caring.html" class="more" target="_blank" title="Not Sharing Is Caring"&gt;seamlessly integrate their experience&lt;/a&gt; into every pore of your life and make you &lt;b&gt;even more connected&lt;/b&gt;. They are saying they can &lt;b&gt;predict&lt;/b&gt; when &lt;a href="http://www.mobiledia.com/news/135107.html" class="more" target="_blank" title="Facebook Can Predict Hookups, Breakups"&gt;hookups and breakups&lt;/a&gt; will happen. Who do you think they would put on your profile? &lt;/p&gt;

&lt;h2&gt;It would work&lt;/h2&gt;
&lt;p&gt;Adding &lt;b&gt;"people who look at you"&lt;/b&gt; to your Facebook profile would act as the &lt;b&gt;poke that never got clicked&lt;/b&gt;. The most basic (inter)action, something that wants to &lt;b&gt;lead to something bigger&lt;/b&gt;. The invisible act of someone &lt;b&gt;longing for engagement&lt;/b&gt;. Potential connection, potential partnership, potential relationship. The beyond EdgeRank scary &lt;b&gt;social experiment&lt;/b&gt;, which holds infinite possibilities, &lt;b&gt;positive and negative&lt;/b&gt;. An almost godly algorithm. Why would anyone even think of doing it differently? It simply doesn't get much better than this.&lt;/p&gt;

&lt;p&gt;I would do it, I believe Facebook would do it as well, but even if they did, it's pretty clear why they &lt;b&gt;can't tell us&lt;/b&gt;. This feature would work only as long as we wouldn't really &lt;b&gt;believe it's being used&lt;/b&gt;. That's why you need to forget about all of this and simply enjoy your virtual life.&lt;/p&gt;
&lt;p style="color: rgb(190, 190, 190);"&gt;Trademarks and logos are the property of their respective owners.&lt;/p&gt;</description><link>http://stritar.net/Post/Putting-people-who-look-at-you-to-your-Facebook-profile-would-be-the-smartest-thing-to-do.aspx</link></item><item><title>Did Google just admit Apple's Siri is the future of search?</title><pubDate>Sun, 04 Dec 2011 15:21:19 GMT</pubDate><description>&lt;p&gt;I don't know if you saw The evolution of Google search video, which they've &lt;a href="http://googleblog.blogspot.com/2011/11/evolution-of-search-in-six-minutes.html" class="more" target="_Blank" title="The evolution of search in six minutes"&gt;published a few days ago&lt;/a&gt;. You should, it's a cool movie, portraying the history of search and Google's vision of its future. But something went wrong. One of the punchlines of the video was a story from one of the engineers, who said that next-generation search engines will be able to answer complex questions such as the following:&lt;/p&gt;

&lt;p align="center"&gt;&lt;i&gt;"Hey, what is the best time for me to sow seeds in India given that monsoon was early this year?’"&lt;/i&gt;&lt;/p&gt;&lt;br&gt;
&lt;iframe width="565" height="320" src="http://www.youtube.com/embed/mTBShTwCnD4" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br&gt;

&lt;p&gt;A very legitimate question.&lt;/p&gt;


&lt;p&gt;I don't know if you've tried out &lt;a href="http://www.apple.com/iphone/features/siri.html" class="more" target="_Blank" title="Apple - iPhone 4S - Ask Siri to help you get things done."&gt;iPhone's new personal assistant, Siri&lt;/a&gt;. It's awesome in every bit. Not only does it have a &lt;a href="http://www.youtube.com/watch?v=SHoukZpMhDE" class="more" target="_Blank" title="Microsoft's TellMe vs Apple's Siri"&gt;state-of-the-art voice recognition&lt;/a&gt;, it's also packed with super smart artificial intelligence that supposedly allows you to ask &lt;a href="http://www.apple.com/iphone/features/siri-faq.html" class="more" target="_Blank" title="Apple - Siri - Frequently Asked Questions"&gt;crazy things things such as&lt;/a&gt;:&lt;/p&gt;


&lt;p align="center"&gt;&lt;i&gt;"Can you remind me to call my wife when I leave the office?"&lt;/i&gt;&lt;/p&gt;&lt;br&gt;
&lt;iframe width="565" height="320" src="http://www.youtube.com/embed/rNsrl86inpo" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br&gt;

&lt;p&gt;Another very legitimate question.&lt;/p&gt;


&lt;p&gt;And there's a strong resemblance there. Both requests are really abstract and probably require quite a bit of computational power to be understood by a program. They have nothing to do with mathematical or &lt;a href="http://stritar.net/Post/Reinventing-SEO-Search-Engine-Optimization-The-Social-Media-Effect.aspx" class="more" target="_Blank" title="Reinventing SEO: The social media effect"&gt;social ranking&lt;/a&gt; currently used by Google (search), they are all about &lt;a href="http://stritar.net/Post/Can-You-Believe-Watson-Got-The-Question-About-Slovenia-Wrong-On-Jeopardy.aspx" class="more" target="_Blank" title="Can you believe Watson got the question about Slovenia wrong on Jeopardy?"&gt;Artificial Intelligence and semantic interpretation&lt;/a&gt;. And while Google currently doesn't provide (or at least market) services that would be able to understand such sentences, Apple does.&lt;/p&gt;

&lt;p&gt;I've noticed quite a few articles saying &lt;a href="http://tech.fortune.cnn.com/2011/11/09/yes-google-siri-is-a-serious-threat/" class="more" target="_Blank" title="Yes, Google, Siri is a serious threat"&gt;concepts such as Siri are the future of search&lt;/a&gt;. It's obvious &lt;a href="http://stritar.net/Category/Artificial_Intelligence.aspx" class="more" target="_Blank" title="Artificial intelligence on Stritar's chronolog"&gt;artificial intelligence&lt;/a&gt; will play a big role in this segment. Apple's already in. Even if their technology is not superior to Google's, who is also &lt;a href="http://www.businessweek.com/technology/content/sep2010/tc20100920_708019.htm" class="more" target="_Blank" title="Google Uses AI to Make Search Smarter"&gt;working on embedding AI into search&lt;/a&gt;, it's fully available today, and everybody knows it. Google should really be careful with such statements concerning their core business, Web search. Specially if they are competing against the marketing wizards of Apple, who know how to sell things even if they don't fully work.&lt;/p&gt;

&lt;p&gt;Promoting a technology you don't have and &lt;a href="http://stritar.net/Post/The-Great-Technology-Wars-And-The-Transition-Of-Software-From-B2B-To-B2C.aspx" class="more" target="_Blank" title="The great technology wars and the transition of software from B2B to B2C"&gt;your competition&lt;/a&gt; does? Stupid consumers such as myself might do something stupid. &lt;/p&gt;
&lt;p&gt;UPDATE (5.12.2011): You can join the discussion on &lt;a href="http://news.ycombinator.com/item?id=3311076" class="more" target="_blank" title="Siri vs. Google on HackerNews"&gt;HackerNews&lt;/a&gt;.</description><link>http://stritar.net/Post/Did-Google-Just-Admit-Apple-s-Siri-Is-The-Future-Of-Search.aspx</link></item><item><title>Television and Social media? How did my recommendation engine miss this connection?</title><pubDate>Sun, 27 Nov 2011 14:58:20 GMT</pubDate><description>&lt;p&gt;
November has been a great month for &lt;a href="http://stritar.net/Projects/Chronolog.aspx" class="more" target="_blank" title="Grega Stritar's blog"&gt;this blog&lt;/a&gt;. For the first time in history, I managed to get more than 1.000 unique users on two different blog posts in a single month. Which is awesome, thanks! The first post was about the &lt;a href="http://stritar.net/Post/Is-Dexter-And-Its-Social-Game-Slice-Of-Life-The-Future-Of-Television-Shows-But-No-One-Noticed.aspx" class="more" target="_blank" title="Is Dexter and its social game Slice of Life the future of TV shows (but no one noticed)?"&gt;TV show Dexter and its Facebook game Slice of life&lt;/a&gt;. The other was about &lt;a href="http://stritar.net/Post/Supporting-Events-On-Twitter-How-Pop-TV-And-Soocenje-Owned-The-Slovenian-Twitterverse.aspx" class="more" target="_blank" title="Supporting events on Twitter: how Pop TV and Soočenje owned the Slovenian Twitterverse"&gt;Slovenian TV show Soočenje and its buzz on Twitter&lt;/a&gt;. Just two posts, nothing special, right? Wrong. It's really obvious, but I missed it somehow. Both posts are talking about combining television and social media, silly me! I can't believe I failed to see it, but I did, and so did my blog. Not that it really matters anymore. You know those fantastic coincidences that happen sometimes and put everything into place? This story is full of them.&lt;/p&gt;


&lt;h2&gt;Function&lt;/h2&gt;
&lt;p&gt;Some of you may know this blog has an &lt;a href="http://stritar.net/Post/The-Chronolog-Now-Understands-Connections-Between-Content.aspx" class="more" target="_blank" title="The chronolog now understands connections between content"&gt;internal recommendation engine&lt;/a&gt; that calculates the correlation between different posts based on shared tags and their frequency, offering related reading in the bottom. It missed the connection. Others may know I'm a bit obsessed with &lt;a href="http://stritar.net/Post/The-Art-Of-Internal-Hyperlinking.aspx" class="more" target="_blank" title="The art of internal hyperlinking"&gt;cross-referencing my posts&lt;/a&gt;, which I do manually. I missed it too. Perhaps &lt;a href="http://stritar.net/Series/Facebook_Vs_Twitter.aspx" class="more" target="_blank" title="Facebook vs. Twitter on Stritar's chronolog"&gt;Facebook and Twitter&lt;/a&gt; aren't as similar as &lt;a href="http://stritar.net/Post/Facebook_Vs_Twitter_Part_3_The_Phase_Of_Unification.aspx" class="more" target="_blank" title="Facebook vs. Twitter, Part 3: The phase of unification"&gt;I would like to believe&lt;/a&gt;, but I'm putting my bet mostly on the different concepts of combining television and social media. The Dexter case was about entertainment, gaming and story-telling. Pop TV's case was about politics, news and ordinary people co-creating content. Different problem, different tags, but still, the strong relation between the two is very much there.&lt;/p&gt;

&lt;h2&gt;Try&lt;/h2&gt;
&lt;p&gt;The first funny coincidence was a blog post by &lt;a href="http://twitter.com/anejmehadzic" class="more" target="_blank" title="Anej Mehadzic (anejmehadzic) on Twitter"&gt;@anejmehadzic&lt;/a&gt; written a few days after mine, discussing the general possibilities of a &lt;a href="http://anej.si/televizija-proti-ali-z-druzbenimi-mediji/" class="more" target="_blank" title="anej mehadzic - Televizija proti ali z družbenimi mediji?"&gt;symbiosis between television and social media&lt;/a&gt; (in Slovene). The post provided enough insight to make me see what I missed. TV shows using Facebook, Twitter and YouTube to provide additional content to viewers was really something in between the two cases of mine. Revelation. At this point I knew I missed the connection myself, but how did my very smart algorithm also miss it?&lt;/p&gt;

&lt;h2&gt;Catch&lt;/h2&gt;
&lt;p&gt;The next lucky coincidence was a lecture on &lt;a href="http://wwwh.si/" class="more" target="_blank" title="#wwwh | Spletne urice &amp;#8211; vsako sredo ob 19h v Kiberpipi"&gt;wwwh&lt;/a&gt; happening yet a few days later. &lt;a href="http://twitter.com/zbrchka" class="more" target="_blank" title="sara bozanic (zbrchka) on Twitter"&gt;@zbrchka&lt;/a&gt; was talking about &lt;a href="http://www.giantmice.com/archives/2010/04/towards-a-definition-of-transmedia/" class="more" target="_blank" title="Towards a definition of transmedia…"&gt;transmedia&lt;/a&gt;, a term I haven't heard about before. I thought multi-platform or cross-platform could be concept that connected these two blog posts, but transmedia feels so much better. Transmedia is a technique for creating integrated content for different mediums, just the thing what I was looking for. Something that's becoming so important it deserves exposure on this blog too.&lt;/p&gt;

&lt;h2&gt;Finally&lt;/h2&gt;
&lt;p&gt;With the new gathered knowledge, I made a new tag &lt;a href="http://stritar.net/Category/Transmedia.aspx" class="more" target="_blank" title="Transmedia on Stritar's chronolog"&gt;Transmedia&lt;/a&gt;, putting it on both posts, besides the one about &lt;a href="http://stritar.net/Post/Forget-Facebook-Sport-TV-And-Their-Billboards-Found-Twitter-With-Style.aspx" class="more" target="_blank" title="Forget Facebook. Šport TV and their billboards found Twitter, with style."&gt;Šport TV tweeting about the basketball championship&lt;/a&gt;. It worked like a charm. Since this tag is used so rarely, it dominated the recommendation engine, and to my great relief, all three posts gained the correlation they require to be listed as related content one to another.&lt;/p&gt;

&lt;p&gt;The blogosphere kicks ass, since bloggers are mutually inspiring each other and moving things forward. Wwwh is a great place to hang out and share knowledge and experience. My &lt;a href="http://stritar.net/Post/The-Chronolog-Now-Understands-Connections-Between-Content.aspx" class="more" target="_blank" title="The chronolog now understands connections between content"&gt;recommendation algorithm&lt;/a&gt; is awesome, fully working as expected. And those lucky coincidences are a thing that make this existence an interesting place to be visiting. Everything is just the way it should be.&lt;/&gt;

&lt;p style="color: rgb(190, 190, 190);"&gt;* &lt;a href="http://en.wikipedia.org/wiki/Exception_handling_syntax#C.23" class="more" target="_blank" title="Exception handling syntax"&gt;try-catch-finally&lt;/a&gt; is a an exception handling syntax used in some programming languages. 
&lt;/p&gt;
</description><link>http://stritar.net/Post/Television-And-Social-Media-How-Did-My-Recommendation-Engine-Miss-This-Connection.aspx</link></item><item><title>The great aquarium cleaning dilemma: should you be removing or replacing water?</title><pubDate>Tue, 01 Nov 2011 18:44:18 GMT</pubDate><description>&lt;p&gt;Everybody that owns an aquarium probably came across this decision at one point. The water is filthy and needs to be replaced. All you have is a jar. And you ask yourself:  should you be emptying the aquarium first, adding new water later on, or should you be replacing filthy water with clean water? The first choice seems more rational, but sometimes you can't fully empty the aquarium (e.g. you have fish), and you need to do more runs since you're not taking water both ways. The other option seems interesting since you're efficient both ways, but at the same time you're taking back fresh water mixed in the aquarium. So, what should you do?&lt;/p&gt;

&lt;h2&gt;The situation&lt;/h2&gt;

&lt;p&gt;In reality, you do have other options. A water pump, a larger intermediate basin or other things that can make this task easier. But believe me, sometimes you don't have the time to do it properly and you just want to clean the water a bit. And that's when you'll wonder what to do. It happened to me, and that's why I've made myself a model that would answer this question, a model that would determine the breaking point (where both options are equally effective) between the two techniques.&lt;/p&gt;

&lt;p&gt;The model described contains the following parameters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the aquarium volume (V - volume)&lt;/li&gt;
&lt;li&gt;the jar volume (d - change)&lt;/li&gt;
&lt;li&gt;number of two-way runs (x)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And it looks something like this:&lt;/p&gt;&lt;br&gt;
&lt;img src="http://stritar.net/Upload/Images/Aquarium/Aquarium-Cleaning-Model.gif" alt="Aquarium Cleaning Model"&gt;
&lt;p class="underpicture"&gt;The aquarium cleaning situation&lt;/p&gt;


&lt;h2&gt;The initial model&lt;/h2&gt;

&lt;p&gt;The original view I made in Excel is based on simple mathematics, where each one-way run is represented by one line in the table. Adding and removing water both-ways constantly reduces filthiness, but makes each additional run less effective. On the other hand, removing water first and adding fresh water later takes more runs (since your jar is empty in one direction, you require four one-way runs to replace an additional unit), but you're not removing clean water. Here's a preview of how this looks:&lt;/p&gt;&lt;br&gt;

&lt;img src="http://stritar.net/Upload/Images/Aquarium/Aquarium-Cleaning-Model-Calculation-1.gif" alt="Aquarium Cleaning Model Basic Calculation"&gt;
&lt;p class="underpicture"&gt;The basic calculation&lt;/p&gt;

&lt;h2&gt;The advanced model&lt;/h2&gt;

&lt;p&gt;The basic model is more understandable, but not appropriate to make a full mathematical equation. That's why I made a second model, which is based on two-way runs and exponential functions. Here's what I got:&lt;/p&gt;&lt;br&gt;


&lt;img src="http://stritar.net/Upload/Images/Aquarium/Aquarium-Cleaning-Model-Calculation-2.gif" alt="Aquarium Cleaning Model Basic Calculation"&gt;
&lt;p class="underpicture"&gt;The advanced calculation&lt;/p&gt;

&lt;h2&gt;The results&lt;/h2&gt;

&lt;p&gt;The results show that if you don't have much time, it's better if you're replacing water, taking it both ways. This accounts for faster cleaning, which is slowing down in the long run. But the point is that no matter what the parameters are (aquarium and jar size), the breaking point happens more to the end of the cleaning. So, if you're not prepared to fully empty the aquarium, it's generally better if you use the the first option, removing and adding water at the same time.&lt;/p&gt;&lt;br&gt;
&lt;img src="http://stritar.net/Upload/Images/Aquarium/Aquarium-Cleaning-Model-Calculation-Graphs.gif" alt="Aquarium Cleaning Model Graphs"&gt;
&lt;p class="underpicture"&gt;The graphical results displaying water filthiness based on number of two-way runs for different jar and aquarium sizes&lt;/p&gt;

&lt;h2&gt;The breaking point equation&lt;/h2&gt;

&lt;p&gt;The results are there, and I managed to make the following equation which would calculate where both ways are the equally effective:&lt;/p&gt;&lt;br&gt;
&lt;div align="center"&gt;
&lt;img src="http://stritar.net/Upload/Images/Aquarium/Wolfram-Alpha-1.gif" alt="Aquarium Cleaning Model Equation"&gt;&lt;/div&gt;&lt;br&gt;

&lt;p&gt;This makes calculating the number of runs so complex it can't be calculated in basic Excel (because of the Lambert W or product log function).&lt;/p&gt;&lt;br&gt;
&lt;div align="center"&gt;
&lt;img src="http://stritar.net/Upload/Images/Aquarium/Wolfram-Alpha-2.gif" alt="Aquarium Cleaning Model Equation"&gt;&lt;/div&gt;&lt;br&gt;

&lt;script&gt;
function wolfram() {
V = document.getElementById("textV").value;
d = document.getElementById("textd").value;
window.open('http://stritar.net/Redirect.aspx?chronologid=16662&amp;r=http://www.wolframalpha.com/input/?i=%281-' + d + '/' + V + '%29^x+=+%28' + V + ' +-+%28%28x*' + d + '%29/2%29+-+' + d + '/2%29+/+' + V + '');
}

&lt;/script&gt;

&lt;p&gt;But luckily, you can use &lt;a href="http://www.wolframalpha.com/input/?i=%281-d/V%29^x+=+%28V+-+%28%28x*d%29/2%29+-+d/2%29+/+V" class="more" target="_blank" title="Wolfram Alpha"&gt;Wolfram Alpha&lt;/a&gt; to calculate the breaking point of two-way runs by entering the aquarium and jar size in the boxes below. If you're prepared to make less two-way runs than the result, take water both-ways, otherwise, one-way.&lt;/p&gt;
&lt;p&gt;Aquarium: &lt;input type="text" id="textV" style="width: 80px" /&gt;&amp;nbsp;Jar: &lt;input type="text" id="textd" style="width: 80px" /&gt;&amp;nbsp;
&lt;input type="button" value="Calculate" onclick="wolfram()" /&gt;

&lt;p&gt;If you want to play around a bit, you can even &lt;a href="http://stritar.net/Redirect.aspx?chronologid=16661&amp;r=http://stritar.net/Upload/Files/Aquarium-Cleaning-Model.xls" class="more" target="_blank" title="The aquarium cleaning model"&gt;download the complete model in Excel format&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;Perhaps there's an easier way to calculate the great aquarium cleaning dilemma, which speaks in favor of water replacement (taking water both ways). There's also a chance I've made an error somewhere (please let me know!). But the results seem correct, and I hope you find all of this amusing and / or helpful when you need to update your water. Aquarium cleaning will never be the same again.&lt;/p&gt;
&lt;p&gt;Update (26.11.2011): While this may have been a fun experiment, I've just read it's not that smart to fully remove water in the aquarium, since it &lt;a href="http://www.redearslider.com/forum/viewtopic.php?t=14579" class="more" target="_blank" title="Why is it not good to do a 100% water change?"&gt;disrupts the balance of bacteria&lt;/a&gt;.&lt;/p&gt;</description><link>http://stritar.net/Post/The-Great-Aquarium-Cleaning-Dilemma-Should-You-Be-Removing-Or-Replacing-Water.aspx</link></item><item><title>Please help me upgrade my Twitter bot</title><pubDate>Tue, 30 Aug 2011 20:33:12 GMT</pubDate><description>&lt;p&gt;Half a year ago I decided to make something &lt;a href="http://stritar.net/Post/I-Have-Developed-A-Magazine-Based-On-My-Delicious-Bookmarks-And-A-Twitter-Bot.aspx" class="more" target="_blank" title="I've developed a magazine based on my Delicious bookmarks. And a Twitter bot."&gt;out of my Delicious bookmarks&lt;/a&gt;. The &lt;a href="http://stritar.net/Magazine.aspx" class="more" target="_blank" title="Magazine - Stritar's chronolog"&gt;magazine-style display&lt;/a&gt; inspired by Flipboard wasn't enough, I wanted to publish these links somewhere outside my &lt;a href="http://stritar.net/Projects/Chronolog.aspx" class="more" target="_blank" title="Stritar's chornolog"&gt;chronolog&lt;/a&gt;, somewhere on Twitter. So I made a &lt;a href="http://twitter.com/stritar_net" class="more" target="_blank" title="Stritar's chronolog on Twitter"&gt;bot&lt;/a&gt;. It's doing quite well, posting like mad, but it's really not where I want it to be. Until now, it made about 3.000 tweets (around 500 per month), but has only 67 followers. I know &lt;a href="http://delicious.com/user/stritar" class="more" target="_blank" title="Stritar on Delicious"&gt;my taste in content&lt;/a&gt; is a bit obscure, but still, only 67 followers?&lt;/p&gt;

&lt;p&gt;This calls for an upgrade. And since I won't change my interests and bookmarking habits, something else needs to be done. That's where I need your advice. Crowdsourcing the concept and stuff.&lt;/p&gt;

&lt;h2&gt;The brand&lt;/h2&gt;
&lt;p&gt;This is probably one of the greatest fails of the project. At first, I thought of it as an extension of my blog. Hence the account &lt;a href="http://twitter.com/stritar_net" class="more" target="_blank" title="Stritar's chronolog on Twitter"&gt;@stritar_net&lt;/a&gt;, the name Stritar's chronolog, together with the description it has. Should I rename it and try to make it a standalone "brand"? Should I openly say it's a bot (Stritar's bot or something)?&lt;/p&gt;

&lt;h2&gt;The selection&lt;/h2&gt;
&lt;p&gt;The bot currently posts &lt;a href="http://delicious.com/user/stritar" class="more" target="_blank" title="Stritar on Delicious"&gt;ALL my bookmarks&lt;/a&gt; to Twitter (as mentioned, around 15 per day or 500 per month) without any selection. But it could be done. Since my bookmarks are originally &lt;a href="http://stritar.net/Post/A-Few-Thoughts-On-Content-Categorization-No-Surprises-There-Less-Is-More.aspx" class="more" target="_blank" title="A few thoughts on content categorization. No surprises there, less is more."&gt;tagged&lt;/a&gt;, it could leave out those with too few tags (since I use the same method of counting tags to determine the &lt;a href="http://stritar.net/Post/I-Have-Developed-A-Magazine-Based-On-My-Delicious-Bookmarks-And-A-Twitter-Bot.aspx" class="more" target="_blank" title="I've developed a magazine based on my Delicious bookmarks. And a Twitter bot."&gt;initial weight of content&lt;/a&gt; for the magazine). Or specialize in specific segments according to tags. There could even be more of them bots. What do you think?&lt;/p&gt;

&lt;h2&gt;The frequency&lt;/h2&gt;
&lt;p&gt;Currently, the bookmarks I make go into a queue. I hate those Twitter accounts that post 10 tweets in 5 minutes and go silent for a day. I wanted to make it more smooth. So the queue always knows how many items it holds and adapts the frequency of posting according to it (less bookmarks in queue mean less frequent tweets). But that produces the situation where most of them are already a few hours or days out of date when they are published. A higher publishing frequency would solve some of it, but it opens a great dilemma: what's the lesser evil, over-spamming or being out of date?&lt;/p&gt;

&lt;h2&gt;The order&lt;/h2&gt;
&lt;p&gt;The order of bookmarks posted on Twitter is determined by two factors. The number of tags and the date they were published. More tags equals more importance. Older bookmarks get published sooner, otherwise they would get even more out of date. Should I do it the other way around and post more recent links sooner? This would make some of them more interesting and up-to-date, but other worse. &lt;a href="http://stritar.net/Post/Facebook_Vs_Twitter_-_Part_2_-_Privacy_And_Real-Time_Web.aspx" class="more" target="_blank" title="Facebook vs. Twitter - Part 2: Privacy and real-time web"&gt;Breaking content&lt;/a&gt; or consolidated content?&lt;/p&gt;

&lt;p&gt;So many decisions… In this case, the best way probably doesn't exists, but trade-offs can always be decided for the better. Please let me know what you think, your help would be more than appreciated. I could help back if I can.&lt;/p&gt;</description><link>http://stritar.net/Post/Please-Help-Me-Upgrade-My-Twitter-Bot.aspx</link></item><item><title>Determining if an element is in the last row of a table</title><pubDate>Mon, 25 Jul 2011 11:57:52 GMT</pubDate><description>&lt;p&gt;Once upon a time I stumbled upon a problem, where I needed to calculate if an element is in the last row of a table. Here's the scenario: you have a number of items, which are put in a table from left to right. When the row is full, the items continue in the next row. Imagine an airplane or a theater where people start sitting front-left and continue to the right until they run out of space, then going to the next row and so on. Now we want to know which people are sitting in the last of the populated rows.&lt;/p&gt;

&lt;p&gt;A weird problem, but hopefully I will be able to show you some cool results produced by this algorithm someday (yes, it's usable).&lt;/p&gt;

&lt;p&gt;The equation has 2 parameters: the total number of elements and the number of columns in a single row. There are a few ways to do it, using division with remainders (the &lt;a href="http://en.wikipedia.org/wiki/Modulo_operation" class="more" target="_blank" title="Modulo operation"&gt;modulo operation&lt;/a&gt;). The simple way would be comparing the total number of rows with the element's current row. Another one would be to calculate the number of elements in the last row and see if our element is in those last few. While both seem logically easy, they actually suck, because they contain exceptions (some states need to be handled specifically - if the last row is full or not).&lt;/p&gt;

&lt;p&gt;That's why I went for the ultimate way, using abstract mathematics which requires real magic, and since it would be too boring to explain it, just take it if you need it and don't try to understand - to be honest, even I'm not perfectly sure how I did it.&lt;/p&gt;

&lt;h2&gt;The number of rows way:&lt;/h2&gt;
&lt;p&gt;&lt;i&gt;lastRow = ((Math.DivRem(currentElementIndex + 1, numberOfColumns, out remainder1) + Convert.ToInt16(remainder1 &gt; 0)) &gt;= Math.DivRem(totalElements, numberOfColumns, out remainder2) + Convert.ToInt16(remainder2 &gt; 0))&lt;/i&gt;&lt;br&gt;
&lt;span style="color: rgb(190, 190, 190);"&gt;* Math.DivRem returns the division result and the remainder, since both are required for the calculation&lt;/span&gt;

&lt;h2&gt;The number of items in the last row way:&lt;/h2&gt;
&lt;p&gt;&lt;i&gt;lastRow =  (totalElements - (totalElements % numberOfColumns) - (numberOfColumns * Convert.ToInt16((totalElements % numberOfColumns) == 0)) &lt; currentElementIndex + 1)&lt;/i&gt;&lt;br&gt;
&lt;span style="color: rgb(190, 190, 190);"&gt;* % is the modulo - remainder from dividing&lt;/span&gt;


&lt;h2&gt;The ultimate way:&lt;/h2&gt;
&lt;p&gt;&lt;i&gt;lastRow = totalElements &lt; ((numberOfColumns + currentElementIndex) - (currentElementIndex % numberOfColumns) + 1)&lt;/i&gt;&lt;br&gt;
&lt;span style="color: rgb(190, 190, 190);"&gt;* % is the modulo - remainder from dividing&lt;/span&gt;&lt;/p&gt;



&lt;p&gt;&lt;a href="http://stritar.net/Category/Mathematics.aspx" class="more" target="_blank" title="Mathematics"&gt;Mathematics&lt;/a&gt; is awesome.&lt;/p&gt;
&lt;p&gt;UPDATE (27.7.2011): Silly me. Overwhelmed by "The ultimate way", I missed the opportunity to simplify "The number of rows way". I guess this is one of the cases which explain why counting starts with 0 instead of 1 in programming.&lt;/p&gt;

&lt;h2&gt;The improved number of rows way:&lt;/h2&gt;
&lt;p&gt;&lt;i&gt;lastRow = Math.DivRem(currentElementIndex, numberOfColumns, out result1) &gt;= Math.DivRem(totalElements - 1, numberOfColumns, out result2))&lt;/i&gt;&lt;br&gt;
&lt;span style="color: rgb(190, 190, 190);"&gt;* Math.DivRem returns the division result and the remainder, since we need the number rounded down.&lt;/span&gt;&lt;/p&gt;

&lt;br&gt;
&lt;img src="http://stritar.net/Upload/Images/Last-Row-In-Table.gif" alt="Last Row In Table"&gt;
</description><link>http://stritar.net/Post/Determining-If-An-Element-Is-In-The-Last-Row-Of-A-Table.aspx</link></item><item><title>Is Delicious aiming to become the next Twitter?</title><pubDate>Thu, 26 May 2011 17:03:41 GMT</pubDate><description>&lt;p&gt;The bookmarking service &lt;a href="http://delicious.com/stritar" class="more" target="_blank" title="stritar's Bookmarks on Delicious"&gt;Delicious&lt;/a&gt; has had an interesting life. It was one &lt;a href="http://soshable.com/wp-content/uploads/2011/05/social-media-infographic.png" class="more" target="_blank" title="Social media infographic"&gt;of the first social services&lt;/a&gt; available, later bought by Yahoo and &lt;a href="http://thenextweb.com/media/2010/12/17/official-delicious-is-not-shutting-down/?awesm=tnw.to_17Cm6&amp;utm_content=twitter-publisher-main&amp;utm_medium=tnw.to-twitter&amp;utm_source=direct-tnw.to" class="more" target="_blank" title="Official: Delicious is NOT Shutting Down"&gt;almost canceled&lt;/a&gt;, then being &lt;a href="http://www.delicious.com/help/transition" class="more" target="_blank" title="The answers to frequently asked questions about the AVOS transition"&gt;sold to Avos&lt;/a&gt; about a month ago. Avos was founded by the same people who've created YouTube (Chad Hurley and Steve Chen), and these guys obviously know what they're doing. A few days after acquiring Delicious, Avos also bought a social media analytics startup Tap11, and here's what they had to &lt;a href="http://www.avos.com/youtube-founders-acquire-tap11/" class="more" target="_blank" title="YouTube Founders Acquire Tap11!"&gt;say about it&lt;/a&gt;:&lt;/p&gt;

&lt;p align="center"&gt;&lt;i&gt;"Our vision is to create the world's best platform for users to &lt;b&gt;save&lt;/b&gt;, &lt;b&gt;share&lt;/b&gt;, and &lt;b&gt;discover&lt;/b&gt; new content. With the acquisition of Tap11, we will be able to provide consumer and enterprise users with powerful tools to publish and analyze their links’ impact in real-time."&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;While some bloggers think Avos will start &lt;a href="http://gigaom.com/2011/05/09/avos-tap11-acquisition/" class="more" target="_blank" title="With Tap11 Buy AVOS Is Playing a Big Game With Big Data"&gt;competing against Google and Salesforce.com&lt;/a&gt; by analyzing social data, I can imagine a different strategy may be plotting. Let me explain.&lt;/p&gt;

&lt;p&gt;Delicious was always ahead of its time, but did not really make it to broad mainstream. It allows online bookmarks, which you can &lt;a href="http://stritar.net/Post/A-Few-Thoughts-On-Content-Categorization-No-Surprises-There-Less-Is-More.aspx" class="more" target="_blank" title="A few thoughts on content categorization. No surprises there, less is more."&gt;tag&lt;/a&gt;, bundle and keep in a library for later use. It knows &lt;a href="http://bokardo.com/archives/relationship-symmetry-in-social-networks-why-facebook-will-go-fully-asymmetric/" class="more" target="_blank" title="Relationship Symmetry in Social Networks"&gt;asymmetric relationships&lt;/a&gt;, so you can check out bookmarks by the people you follow. The bookmarking engine is really powerful, but something was missing. Delicious' biggest problem is its social layer - too weak and of secondary importance. In the mean time, other services such as &lt;a href="http://digg.com/stritar" class="more" title="Grega Stritar (stritar) - Digg" target="_blank"&gt;Digg&lt;/a&gt;, &lt;a href="http://www.reddit.com/user/stritar" class="more" target="_blank" title="overview for stritar"&gt;Reddit&lt;/a&gt; and &lt;a href="http://www.stumbleupon.com/stumbler/gstritar/" class="more" target="_blank" title="gstritar's reviews - StumbleUpon"&gt;StumbleUpon&lt;/a&gt; took their place on the web and added communities and different types of recommendation to link sharing. And of course, there's &lt;a href="http://twitter.com/gstritar" class="more" target="_blank" title="Grega Stritar (gstritar) on Twitter"&gt;Twitter&lt;/a&gt;, the current &lt;a href="http://www.briansolis.com/2011/05/this-just-in-news-no-longer-breaks-it-tweets/" class="more" target="_blank" title="This just in…News no longer breaks, it Tweets"&gt;ruler of content&lt;/a&gt; and &lt;a href="http://stritar.net/Post/Facebook_Vs_Twitter_-_Part_2_-_Privacy_And_Real-Time_Web.aspx" class="more" target="_Blank" title="Facebook vs. Twitter - Part 2: Privacy and real-time web"&gt;real-time&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Actually, Twitter is slowly becoming a content sharing platform rather than a microblogging platform (I guess microblogging should involve content creation, not sharing). But while your links may bring you audience, they are not categorized and useful to you. Still, most people use Twitter that way, and even authority-measuring services such as &lt;a href="http://www.peerindex.net/help/faq" class="more" target="_blank" title="Questions on scores and rankings - PeerIndex"&gt;PeerIndex&lt;/a&gt; and &lt;a href="http://klout.com/kscore?from=ks" class="more" target="_blank" title="Understanding the Influence Metric: What is a Klout Score?"&gt;Klout&lt;/a&gt; encourage you to share links, because that's what Twitter is all about and that's what will make you influential.&lt;/p&gt;

&lt;p&gt;I'm not saying Twitter is not useful, it is very much useful. But imagine having a solid bookmarking platform, very useful for the person who uses it (&lt;b&gt;save&lt;/b&gt;). Add a generic social layer of friends and followers, a few comments, perhaps something similar to what YouTube has (&lt;b&gt;share&lt;/b&gt;). Now add a hard core mathematical layer which is able to calculate what you'll like based on what you already liked (&lt;b&gt;discover&lt;/b&gt;). What you get is something that could be very special, something that could compete even with Twitter. And it could be happening right now in Avos' laboratories.&lt;/p&gt;

&lt;p&gt;One guy said that the age &lt;a href="http://www.businessinsider.com/matchbook-jason-schwartz-social-bookmarking-iphone-app-end-2011-5?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+typepad%2Falleyinsider%2Fsilicon_alley_insider+%28Silicon+Alley+Insider%29&amp;utm_content=Twitter" class="more" target="_blank" title="The Age Of Social Sharing Has Reached Its End"&gt;social sharing is coming to an end&lt;/a&gt;. I think not, there's loads of information thirsty people surfing the web. What's really missing is a new innovative and powerful platform, something useful in many different ways, for keeping, dispatching and receiving new, personalized content. Delicious 2.0?&lt;/p&gt;
&lt;p style="color: rgb(190, 190, 190);"&gt;Trademarks and logos are the property of their respective owners.&lt;/p&gt;</description><link>http://stritar.net/Post/Is-Delicious-Aiming-To-Become-The-Next-Twitter.aspx</link></item><item><title>A few thoughts on content categorization. No surprises there, less is more.</title><pubDate>Fri, 29 Apr 2011 12:26:00 GMT</pubDate><description>&lt;p&gt;Since I've started collecting bookmarks using &lt;a href="http://delicious.com/stritar" class="more" target="_blank" title="stritar's Bookmarks on Delicious"&gt;Delicious&lt;/a&gt;, I've put a lot of effort into their categorization, organizing them in such a way their browsing would be as simple as possible. The service supports two level categorization (tag – bundle) which helps to control massive amounts of links people have gathered. But it's the experimentation with different structures that gives real insight into content categorization, and because this topic was already &lt;a href="http://stritar.net/Post/The_Chronolog_Is_Almost_Complete.aspx" class="more" target="_blank" title="The Chronolog is almost complete"&gt;mentioned&lt;/a&gt; and &lt;a href="http://stritar.net/Post/The-Chronolog-Now-Understands-Connections-Between-Content.aspx" class="more" target="_blank" title="The chronolog now understands connections between content"&gt;discussed&lt;/a&gt; a few times on this blog, it deserves a special mention. Let's begin.&lt;/p&gt;

&lt;h2&gt;Categories vs. Tags&lt;/h2&gt;
&lt;p&gt;Observing other blogs, I've noticed a lot of them use both Categories and Tags. While I can understand the SEO (Search Engine Optimization) benefit in having as many different entry points (landing pages) as possible, I don't see any other added value in using both. From the logical point of view, they do the same (categorize content), but on a different level. Here's where tag bundles come handy. With my bookmarks, I use tag bundles such as Wibe, Science, Brands, Work, etc., to combine different tags into groups according to their qualities. And aren't Categories and Tags just another form of the same thing, just two different tag bundles? Perhaps not, but that doesn't change the fact one is probably redundant.&lt;/p&gt;

&lt;p&gt;I still see cases when Categories are used as single items (one post is filed under one category), while Tags are always used as multiple items (one post can have many tags). This corresponds with the technical 1:N and M:N database relationship, and even though the second is a bit more complex to create and maintain, it provides much more flexibility. Hierarchy vs. matrix.&lt;/p&gt;

&lt;h2&gt;Less is more, and intersections rock&lt;/h2&gt;
&lt;p&gt;Another thing I've noticed is that people use a lot of different tags. Too many to handle. I try to keep the number of tags as low as possible, working rather with intersections of tags (e.g. &lt;a href="http://www.delicious.com/stritar/marketing+twitter" class="more" target="_blank" title="stritar's marketing and twitter Bookmarks on Delicious"&gt;marketing + twitter&lt;/a&gt;) than looking for specific tags, used only a few times. I made a quick calculation on how this works, estimating a model with 10.000 contents and 200 tags, which corresponds with my situation on Delicious:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;10.000 contents, 200 unique tags, average 5 tags per content&lt;/li&gt;
&lt;li&gt;10.000 contents * 5 tags = 50.000 total tags&lt;/li&gt;
&lt;li&gt;50.000 total tags / 200 unique tags = 250 occurrences of each tag (contents per tag)&lt;/li&gt;
&lt;li&gt;5/200 probability of first tag * 4/199 probability of second tag = 1/1.990 (0,0005) probability of two specific tags on a single content&lt;/li&gt;
&lt;li&gt;or (200! / (2!*(200-2)!) = 19.900 unique combinations of two tags; one bookmark with 5 tags allows 10 pairs of bookmarks, making a combination's probability 1/1.990&lt;/li&gt;
&lt;li&gt;1/1.990 * 3/198 = 1/131.340 (0,0000076) probability of three specific tags on a content&lt;/li&gt;
&lt;li&gt;Result: on average, 5 contents out of 10.000 will contain two desired tags and 0,07 three tags&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The model is built on the assumption that all tags are spread evenly, which is far from reality, but you get the picture, the number of contents with multiple tags is pretty low. But if you lower the number of unique tags (e.g. 150 tags instead of 200 would raise the number of contents with a pair of tags from 5 to 8,9) or use the same tags more often (e.g. 6 instead of 5 tags per content would raise the number from 5 to 7,5), the results get even better. Basic mathematics is a powerful tool, and intersections with two, three or more tags are definitely the way to go. &lt;/p&gt;
 
&lt;h2&gt;Applications&lt;/h2&gt;
&lt;p&gt;I've made a few applications using the techniques mentioned. For general Categories of &lt;a href="http://stritar.net/Projects/Chronolog.aspx" class="more" target="_blank" title="Stritar's chronolog"&gt;this blog&lt;/a&gt;, I used a combination both, having Categories behave like Tags, using a few of them as possible (but attaching many on a single post), displaying them as a tag cloud (bottom of the page). I used a similar approach on my &lt;a href="http://stritar.net/Post/Organizing_Music_Collections_Using_iTunes.aspx" class="more" target="_blank" title="Organizing music collections using iTunes"&gt;iTunes library&lt;/a&gt;, abusing song Comments to act as Tags for advanced smart playlists. And some time ago, I developed a simple &lt;a href="http://stritar.net/Post/The-Chronolog-Now-Understands-Connections-Between-Content.aspx" class="more" target="_blank" title="The chronolog now understands connections between content"&gt;engine for related content&lt;/a&gt;, based on occurences of different Categories / Tags on my blog posts, acting both as an additional feature for readers, as a tool for internal hyperlinking, used for SEO.&lt;/p&gt;

&lt;p&gt;These are a few cases which display the power of simplicity, using as little data as possible to create a lot of information. And while I know this is hard to do, I must continue to pursue this philosophy, may it be in software development or blogging (I ironically failed with this one). Things that are similar on an abstract, logical level, should be the same on the technical level. Try it, you'll be amazed by the results which will present themselves.&lt;/p&gt;
</description><link>http://stritar.net/Post/A-Few-Thoughts-On-Content-Categorization-No-Surprises-There-Less-Is-More.aspx</link></item><item><title>Can you believe Watson got the question about Slovenia wrong on Jeopardy?</title><pubDate>Wed, 09 Mar 2011 07:33:12 GMT</pubDate><description>&lt;p&gt;&lt;a href="http://stritar.net/Categories/Slovenia.aspx" target="_blank" title="Slovenia" class="more"&gt;Slovenia&lt;/a&gt; made it to the spotlight again, for the first time after the soccer world cup (when Slovenia was &lt;a href="http://twitter.com/trendingtopics/statuses/16836863243" class="more" target="_Blank" title="Twitter Trending Topics"&gt;trending topic on Twitter&lt;/a&gt; and &lt;a href="http://www.huffingtonpost.com/2010/06/18/slovenia-map-tops-google_n_617472.html" class="more" target="_blank" title="
'Slovenia Map' Tops Google With Confused Searches For 'Where Is Slovenia?'"&gt;top search on Google&lt;/a&gt;). This time, it happened because IBM's supercomputer Watson &lt;a href="http://venturebeat.com/2011/02/16/ibms-watson-wins-final-jeopardy-match/" class="more" target="_Blank" title="It's alive: IBM's Watson supercomputer defeats humans in final Jeopardy match"&gt;competed against human champions&lt;/a&gt; in the famous TV show Jeopardy. IBM's computers are known to destroy people in various challenges, &lt;a href="http://www.chesscorner.com/games/deepblue/deepblu.htm" class="more" target="_blank" title="Kasparov Vs Deep Blue"&gt;Deep Blue beat the world champion Garry Kasparov&lt;/a&gt; in a chess tournament in 1997. But chess is simple for computers to play, because it is pure logic and mathematics – the capability of a player is determined by the number of operations and actions it can calculate in advance. But a quiz is a totally different story, where the biggest challenge is &lt;a href="http://en.wikipedia.org/wiki/Semantics" class="more" target="_blank" title="semantics"&gt;semantics&lt;/a&gt; – understanding the meaning of words.&lt;/p&gt;

&lt;p&gt;In 1950, Alan Turing, one of the greatest pioneers of computing introduced the &lt;a href="http://en.wikipedia.org/wiki/Turing_test" class="more" target="_blank" title="Turing test"&gt;Turing test&lt;/a&gt;, a methodology that could separate humans from computers using a set of questions, some of them formed in such a way computer wouldn't be able to understand and answer them. There are &lt;a href="http://greatbird.com/turing/" class="more" target="_blank" title="Turing test questions"&gt;many questions&lt;/a&gt; which can't be answered with pure logic, the one I remember from high school goes something like this:&lt;/p&gt;

&lt;p align="center"&gt;&lt;i&gt;"Jack attended Sally's party, bring a doll. What was the present?"&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;The catch is in the connection between party – (birthday) – present – doll, which can't be noticed without abstract thinking humans are capable of. And today's computers still face the same problem - even though Watson dominated Jeopardy, it failed miserably on the following question about Slovenia:&lt;/p&gt;

&lt;p align="center"&gt;&lt;i&gt;"As of 2010, Croatia &amp; Macedonia are candidates but this is the only former Yugoslav republic in the EU"&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.zdnet.com/blog/open-source/what-makes-ibms-watson-run/8208" class="more" target="_blank" title="What makes IBM's Watson run?"&gt;Watson's computing capabilities&lt;/a&gt; and knowledge banks are huge, but a question and an answer so obvious to humans presented a huge problem. Watson surely knows which countries are EU members, but it obviously didn't understand the question, thinking it was asked about which country would be next to start negotiating for EU membership, answering Serbia. The right answer was, of course, Slovenia.&lt;/p&gt;&lt;br&gt;

&lt;object width="565" height="400"&gt;&lt;param name="movie" value="http://www.youtube.com/v/fR26DeG9e1E?fs=1&amp;amp;hl=en_US&amp;start=140"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/fR26DeG9e1E?fs=1&amp;amp;hl=en_US&amp;start=140" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="565" height="400"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;br&gt;
&lt;p&gt;The video is also fascinating from the cultural point of view – and extremely creepy. Those who have watched (&lt;a href="http://stritar.net/Post/Arthur_C_Clarke_Envisioning_The_World_Wide_Web_In_1968.aspx" class="more" target="_Blank" title="Arthur C. Clarke envisioning the World Wide Web in 1968"&gt;or read&lt;/a&gt;) "2001: A Space Odyssey" may have experienced a slight shiver and carefully waited if Watson would say it: &lt;a href="http://www.youtube.com/watch?v=HwBmPiOmEGQ" class="more" target="_Blank" title="Hal 9000 VS Dave - Ontological scene in 2001: A Space Odyssey"&gt;"Hello Dave"&lt;/a&gt;. Others might have enjoyed this science fiction presentation, but besides Watson's obvious advantage in being the fastest to answer the question, it's clear that computers are still &lt;a href="http://www.businessinsider.com/why-ibms-watson-computer-is-still-a-moron-2011-2" class="more" target="_blank" title="Why IBM's Watson Computer Is Still A Moron"&gt;far away from being intelligent&lt;/a&gt;. And hopefully they will stay that way.&lt;/p&gt;
</description><link>http://stritar.net/Post/Can-You-Believe-Watson-Got-The-Question-About-Slovenia-Wrong-On-Jeopardy.aspx</link></item><item><title>The chronolog now understands connections between content</title><pubDate>Wed, 03 Nov 2010 21:20:56 GMT</pubDate><description>&lt;p&gt;I once made a promise that I will try to incorporate as many interesting features as possible into &lt;a href="http://stritar.net/Projects/Chronolog.aspx" class="more" target="_blank" title="Stritar's chronolog"&gt;my blog&lt;/a&gt;. My previous development sessions were based mostly on &lt;a href="http://stritar.net/About/Statistics.aspx" class="more" target="_blank" title="Chronolog statistics and analytics"&gt;interactions of readers&lt;/a&gt; with the posts, the peak of it being the &lt;a href="http://stritar.net/Post/Hot_On_The_Chronolog_-_And_How_It_Works.aspx" class="more" target="_blank" title="Hot on the chronolog - and how it works"&gt;Hot on the chronolog algorithm&lt;/a&gt;. But now, as the chronolog finally reached &lt;a href="http://stritar.net/Post/My_50th_Blog_Post_-_Time_To_Contemplate.aspx" class="more" target="_blank" title="My 50th blog post. Time to contemplate."&gt;critical mass&lt;/a&gt; in the amount of content it operates with, the time has come to do something new. The next step is focused on a different functionality, and a few days ago, the chronolog received an algorithm for recognizing relationships between different blog posts.&lt;/p&gt;

&lt;h2&gt;The connections&lt;/h2&gt;
&lt;p&gt;The whole concept is based on the occurrences of categories (which are actually tags) on different blog posts, the most obvious being the number of the same tags two different posts share. We did something similar on a web portal &lt;a href="http://neolab.si/Portfolio/Nogomania-Web-Portal.aspx#down" class="more" target="_blank" title="Nogomania.com web portal"&gt;we launched a few months ago&lt;/a&gt;, and it works pretty well. Sure, the proper way to do it would be using real text mining, where the strength of the relationships would be based on meaning and occurrences of words and external hyperlinks in a specific post. But in this stage, I'm keeping it simple: if two posts share a lot of tags, they appear more related.&lt;/p&gt;

&lt;h2&gt;The weight&lt;/h2&gt;
&lt;p&gt;Since some categories (tags) are used more often, they appear in many posts, making these posts too heavily related with each other. The number of categories attached to a single post also varies, giving a post with many tags a much stronger chance to appear as related to another. Therefore the general equation contains two modifiers, which are giving weight to each shared tag between two posts.&lt;/p&gt;

&lt;p&gt;Categories that appear only a few times globally, have more weight, because they represent a more scarce and therefore a more interesting and stronger connection. This takes care of the tags which are used very often, making them not too dominant. On the other hand, the weight of each tag on a post drops with the total number of tags the post has, so those posts, which have a lot of tags, don't become every other's related post. It may sound confusing, but it's probably a bit simpler to develop than to explain.&lt;/p&gt;

&lt;h2&gt;The results&lt;/h2&gt;
&lt;p&gt;I was actually quite surprised about the result the algorithm makes (which you can now see on the bottom of every post). As I was playing around a bit, observing how the calculation behaves and playing with constants, I actually found some interesting connections between posts which I didn't notice before. The engine finds quite a strong relationship between the post about using &lt;a href="http://stritar.net/Post/Slovenian_Grocers_Going_For_Web_20_design.aspx" class="more" target="_blank" title="Slovenian grocers going for Web 2.0 design"&gt;Web 2.0 logos in TV commercials&lt;/a&gt; and the one about &lt;a href="http://stritar.net/Post/Why_Are_All_Browser_Logos_And_Icons_Round_And_Blue.aspx" class="more" target="_blank" title="Why are all browser logos and icons round (and blue)?"&gt;Round browser icons&lt;/a&gt;, both of them being design clichés. &lt;a href="http://stritar.net/Post/I_Want_It_All_-_The_Curious_Case_of_Microsoft.aspx" class="more" target="_blank" title="I want it all - the curious case of Microsoft"&gt;The case of Microsoft&lt;/a&gt; and &lt;a href="http://stritar.net/Post/Google_2-0_-_Take_Infinity_-_Google_Me.aspx" class="more" target="_blank" title="Google 2.0, take infinity: Google Me"&gt;Google going social&lt;/a&gt; also made it strong, as the two posts are describing the struggle of two technology giants trying to adapt to the new situation. I could go on and on, but than you would probably just say I was doing SEO too hard.&lt;/p&gt;

&lt;p&gt;Search Engine Optimization (SEO) is actually another hidden benefit of the feature, something that occurred to me after I've already finished working on it. Google likes it if you have your content &lt;a href="http://www.searchengineguide.com/scott-allen/the-importance-of-internal-linking.php" class="more" target="_blank" title="The Importance of Internal Linking, and How to Do it Right"&gt;internally cross linked&lt;/a&gt;, so what better way to do it than to have automation take care of it. So until &lt;a href="http://paidcontent.org/article/419-seo-is-dead-and-the-new-king-is-smo/" class="more" target="_blank" class="more" title="SEO Is Dead, And The New King Is 'SMO'"&gt;SEO dies&lt;/a&gt;, this new functionality is actually a double win, because the chronolog became more optimized for crawlers and hopefully more useful for the readers. Even though most of you probably won't even notice.&lt;/p&gt;
</description><link>http://stritar.net/Post/The-Chronolog-Now-Understands-Connections-Between-Content.aspx</link></item><item><title>Twitfluence prototype calculation for measuring Twitter influence</title><pubDate>Sun, 01 Aug 2010 11:54:40 GMT</pubDate><description>&lt;p&gt;The prototype calculation of &lt;a href="http://stritar.net/Projects/Twitfluence.aspx" class="more" target="_blank" title="Twitfluence"&gt;Twitfluence&lt;/a&gt; uses the data available form Twitter API to measure your Twitter influence and coolness. The basic &lt;a href="http://stritar.net/Post/Twitfluence_Application_Basic_Technical_Specifications.aspx" class="more" target="_blank" title="Twitfluence application basic technical specifications"&gt;technical specifications of the application&lt;/a&gt; is available, but I will also be supplying the basic information about how the algorithm works. The actual calculation is already &lt;a href="http://twitfluence.org" class="more" target="_blank" title="Twitfluence - A tool for measuring Twitter influence"&gt;online for beta users&lt;/a&gt;, and generally speaking, there are three major components that add up to the score: your followers, your mentions and retweets, and your lists, all accounted as ratios between you and others.&lt;/p&gt;

&lt;h2&gt;Followers&lt;/h2&gt;
&lt;p&gt;The strongest component of the calculation is the number of followers you have. In my opinion, your presence on Twitter and getting followers can be influenced by at least the following three major factors concerning you and your Twitter account:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Persona – how known you are. Measured by the number of followers you have, compared to your time on Twitter.&lt;/li&gt;
&lt;li&gt;Engagement – how engaged you are. Measured by the number of followers you have, compared the number of people you follow; Measured by the number of followers you have, compared to the number of mentions and retweets you’ve made.&lt;/li&gt;
&lt;li&gt;Wits – how smart and creative your tweets are. Measured by the number of followers you have compared to the total number of tweets you've made.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For this part, I gave the followers/following ratio the weight of 3, the followers/tweets a weight of 2 and the followers/time a weight of 1. The followers/(mentions + retweets) has a weight of 0.5 and works in the negative way, so people who bother other people get a bit of a minus to their followers result. Besides, those who are able to get the same number of followers without mentioning people, must have a small advantage.&lt;/p&gt;

&lt;p style="color: #BEBEBE;"&gt;(Needs to be upgraded with taking into account only your mentions and retweets of people who don’t follow you.)&lt;/p&gt;

&lt;h2&gt;Interaction (mentions, replies, retweets)&lt;/h2&gt;
&lt;p&gt;The second most important part of the calculation is the ratio between mentions and being mentioned, together with the number of retweets you get with the absolute "reach" of those retweets (measured in the number of people who follow people that retweeted you). A similar reach is also accounted in the mentions and replies. This component of the calculation uses only the data from the last month, also to make Twitfluence a bit dynamic for multiple calculations for a single user over time. To finalize this part, the total number of tweets in the last month also contributes a small score.&lt;/p&gt;

&lt;p style="color: #BEBEBE;"&gt;(Needs to be upgraded with unique reaches of your retweets and mentions. For now, it just adds them together.)&lt;/p&gt;

&lt;h2&gt;Lists&lt;/h2&gt;
&lt;p&gt;Twitter lists are getting used more and more, so they are also considered in the calculation. The number of lists you appear on, the number of people who follow those lists and the number of people, who follow lists you've created are the basic parameters for the calculation. This component adds only a small bit to the final score.&lt;/p&gt;
&lt;p style="color: #BEBEBE;"&gt;(Needs to be upgraded with unique reaches)&lt;/p&gt;

&lt;h2&gt;The basic ratio calculation&lt;/h2&gt;
&lt;p&gt;All ratios in the calculation are based on the same elementary formula, which looks like this:&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Generic result = Sqrt(others / you) * Log10(modifier + 10)&lt;br&gt;
Followers = Sqrt(followers / following) * Log10(followers + 10)&lt;br&gt;
Mentioned = Sqrt(mentioned / mentions) * Log10(mentioned + 10)&lt;/i&gt;&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;I've decided to go for this architecture because of a number of reasons. F.i., the followers / following and other ratios are used to get an objective value for all Twitter users. This ratio gets square rooted so the differences between people are not so huge. The multiplication is there for adjustment, so people who have the same ratio and the absolute number are bigger, get more points. The logarithm is used to make this modifier of absolute number smaller, while + 10 is used so this number is always bigger than 1 (and the logarithmic function becomes more stable after the result 1: Log10(10) = 1). This means that the modifier for those who follow 10 people is around 1, 100 people around 2, 1000 around 3 etc.&lt;/p&gt;
 
&lt;h2&gt;Putting it together&lt;/h2&gt;
&lt;p&gt;The three major components currently have the following weight in the final score:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Followers: around 60%&lt;/li&gt;
&lt;li&gt;Mentions and retweets: around 30%&lt;/li&gt;
&lt;li&gt;Lists: around 10%&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's about it for now. I've tested the behavior with some real accounts (thanks for help @&lt;a href="http://twitter.com/tejasmeja" target="_blank" class="more" title="TejaSmeja"&gt;TejaSmeja&lt;/a&gt; and @&lt;a href="http://twitter.com/jakasibicekaka" class="more" target="_blank"&gt;jakasibicekaka&lt;/a&gt;), together with some projections, and it seems to be working quite OK. But the real test will happen after it analyzes results of actual people, which will allow real insight into the performance and objectivity. The Twitfluence will be online soon, and I will be asking you to help with testing the prototype. You also more than welcome to leave any kind of feedback about the calculation as I've described it.&lt;/p&gt;
&lt;p&gt;Let's play.&lt;/p&gt;</description><link>http://stritar.net/Post/Twitfluence_Prototype_Calculation_For_Measuring_Twitter_Influence.aspx</link></item><item><title>An approach to statistics and data analysis</title><pubDate>Mon, 30 Nov 2009 20:32:06 GMT</pubDate><description>&lt;p&gt;When information systems evolve, they become greedier for both operational and advanced strategic statistics and data analysis. This need is a part of a natural evolution. The more data you have, the higher potential for extracting information you have. Looking at business environments using IT platforms, that's what analytics are actually all about - getting useful information from usually bad data. It turns out the task of analytical reporting is not so complex as it seems, but you definitely need a set of different skills / people to make it work.&lt;/p&gt;
&lt;p&gt;There are tons of different statistical approaches, methods and theories, but it turns out that for average business needs you only need basic mathematics, where the most complex operations are sometimes logarithms. So, if it's so simple, where does the problem lay? Why do information systems often lack analytical support, which can be used for decision making?&lt;/p&gt;
&lt;p&gt;In my opinion there are three main steps to consider when trying to make useful statistics and data analysis, and ignoring or underestimating any one of them will make your reports suck.&lt;/p&gt;
&lt;h2&gt;Data&lt;/h2&gt;
&lt;p&gt;Data is the king. If you don't have the data, you might as well give it up. If your data is bad or weak, you might consider rebuilding it. But you should know one thing - the better the structure of your data is, the better your analysis will be. Using a flat database such as a text file or an Excel spreadsheet gives you few analytical opportunities. Relational databases, such as Access, MySQL or SQL offer cross-data querying and advanced reporting, but huge and complex calculations can take a lot of time. For those, a multidimensional OLAP database designed strictly for analysis becomes the only option.&lt;/p&gt;
&lt;p&gt;Challenges in this step: Technical&lt;/p&gt;
&lt;h2&gt;Information&lt;/h2&gt;
&lt;p&gt;The data discussed above defines the scope of potential information you can deliver. In this step, the main goal is simple - you need to know what you want to know. Business needs, process flow, strategic goals or just plain simple amusement are the main factors that need to be addressed. Having someone who is able to recognize these opportunities is crucial, because data is just numbers, but aggregated data - information - is knowledge. It's quite clear you won't be able to get something if you don't know what you want to get.&lt;/p&gt;
&lt;p&gt;Challenges in this step: Analytical&lt;/p&gt;
&lt;h2&gt;Visualization&lt;/h2&gt;
&lt;p&gt;A picture can tell a thousand words and this goes a long way for data visualization. Even if you can't use charts, you can color information and use measures such as font size to represent another dimension of information or trends. Besides, always keep in mind that less is more, so you should put irrelevant information in the background and punchlines in the spotlight. Check out different chart types, they're useful for different representations and experimenting with them can display things that don't seem there at first sight. Observe patterns. Try to imagine a playground, where information can satisfy your curiosity and while doing it, it also brings useful and valuable results.&lt;/p&gt;
&lt;p&gt;Challenges in this step: Creative&lt;/p&gt;
&lt;p&gt;If you have the will, you can do all sorts of crazy stuff with statistics and data analysis, but you should know they sometimes take a lot of time. I'm proud my &lt;a href="http://stritar.net/Projects/Chronolog.aspx" class="more" target="_blank" title="Stritar's chronolog"&gt;chronolog&lt;/a&gt; already has two nice looking children of these activities. The first one is a simple &lt;a href="http://stritar.net/Post/Hot_On_The_Chronolog_-_And_How_It_Works.aspx" class="more" title="Hot on the chronolog - and how it works" target="_blank"&gt;recommendation engine&lt;/a&gt; used for content ranking and the other one &lt;a href="http://stritar.net/About/Statistics.aspx" title="Chronolog statistics and analytics" class="more" target="_blank"&gt;a set of reports&lt;/a&gt; which offer insight into activity and interactions of the chronolog. What can I say, I like to play around, and it may as well be any information system I can get my hands on. Give me the data and I'll give you information.&lt;/p&gt;</description><link>http://stritar.net/Post/An_Approach_To_Statistics_And_Data_Analysis.aspx</link></item><item><title>Hot on the chronolog - and how it works</title><pubDate>Sat, 10 Oct 2009 19:49:41 GMT</pubDate><description>&lt;p&gt;When I first published my &lt;a href="http://stritar.net/Projects/Chronolog.aspx" class="more" target="_blank" title="Stritar's chronolog"&gt;chronolog&lt;/a&gt;, a few people were making remarks about how it resembles FriendFeed, Twitter or Tumblr. I can't deny that. The influences of Web 2.0 are huge both on my personal and business life, so why should the chronolog be any different? It is a mashup of different web services and it displays information from different sources, so it's a kind of a Web 2.0 stream. But besides that, it's also my own personal playground for testing and developing high level services and functionalities, which will hopefully be cool and fun and make the chronolog interesting for all of us. Demonstration of concept and technology, if you like.&lt;/p&gt;
&lt;p&gt;I already have a few of those smart features planned, and I can give you a little teaser already. I really look forward to developing the custom view of the chronolog, where advanced users will be able to do a bit of configuration. The prototype is already half developed, but sadly far from production. A different thing I'm working on is a complex set of &lt;a href="http://stritar.net/About/Statistics.aspx" title="Chronolog statistics and analytics" target="_blank" class="more"&gt;statistics and analytics&lt;/a&gt;, which should give us deeper insight into the chronolog, it's data and our interactions with it. This one will probably go out next and it actually inspired the one already complete. From this day forward, the chronolog supports &lt;a href="http://stritar.net/Hot.aspx" title="Hot on the chronolog" target="_blank" class="more"&gt;Hot on the chronolog&lt;/a&gt;, accessible from the views menu top right, which shows the most interesting posts in the desired time period.&lt;/p&gt;
&lt;p&gt;A few Web 2.0 portals (specially those oriented in social news or social bookmarking) have &lt;a href="http://en.wikipedia.org/wiki/Recommendation_engine" class="more" target="_blank" title="Recommender system"&gt;recommendation engines&lt;/a&gt;, which give users access to information based on their interaction with the system. I would like to try that one out too once, but because I don't have registered users, the chronolog probably won't be the environment. What I can give you now, is the Hot view, which displays the most important posts based on the interaction (views, likes, comments) of all users of the chronolog. A global recommendation engine of some sort. I'm quite pleased with the algorithm I've developed, it looks like it's working, so you can give it a try.&lt;/p&gt;
&lt;p&gt;Some of you will be interested in how it works. The core is a really super mega awesomely complex algorithm that gives ponders to different interactions in the selected time span. Well, it's not that complex from the mathematical point of view, but it still pretty smart. Combining these ponders and number of interactions, using a few square roots and logarithms, plus a small modifier for insert date (if two posts are tied, the older one appears "stronger"), it calculates which posts are more interesting and relevant and gives them a score accordingly. Simple as that. Besides, is also able to make that calculation for any time period. You can even hack it by changing the ?d=# in the url to any number of days you like.&lt;/p&gt;
&lt;p&gt;When viewing longer periods (months, years), blog posts will probably take most of the top spots, because they are supported with social networking sites and have the most interactions. In the shorter periods (days, weeks), other types of posts will also take higher ranks. We will see if the algorithm works in the longer term too, when more users will be clicking around, but if needed, the calculation will be changed or modified. Oh, I almost forgot about the design touch I added - the importance of a post is portrayed using transparency, which looks quite cool and is a great exaple of using design for function.&lt;/p&gt;
&lt;p&gt;The chronolog becomes smart. Hope you like it.&lt;/p&gt;</description><link>http://stritar.net/Post/Hot_On_The_Chronolog_-_And_How_It_Works.aspx</link></item><item><title>Billion = Trillion: who is the one that can't count?</title><pubDate>Sun, 21 Jun 2009 18:53:07 GMT</pubDate><description>&lt;p&gt;There are a lot of cultural differences around the world and between individual countries of the western civilization. On which side of the road should I drive, how hot the weather is or perhaps most importantly - how big this beer is. The reaches of different measurement and interpretation are immense, so why should counting be any different.&lt;/p&gt;
&lt;p&gt;How big is a billion? There are two different ways of naming big numbers, and they are called the &lt;a href="http://en.wikipedia.org/wiki/Short_scale" target="_blank" class="more" title="Long and short scales"&gt;Short scale and the Long scale&lt;/a&gt;. The long scale numerical system was used first, but in the 17th century, when traditional six-digit groups were split up into three-digit groups, short scale slowly came to use. Today, short scale numerical system is in use mainly in English speaking countries, while long scale is used in central Europe and around the world.&lt;/p&gt;
&lt;p&gt;I personally prefer using the long scale, as it is mathematically more correct. Actually, I have no other choice, but it seems easy to represent something you were born into.&lt;/p&gt;
&lt;p&gt;So what is the main difference? Long scale numerical system uses a word Billion to represent million millions or million square (1.000.000&lt;sup&gt;2&lt;/sup&gt; = 1.000.000.000.000), and a Trillion is a million to the power of three or million billions (1.000.000&lt;sup&gt;3&lt;/sup&gt;). On the the other hand, short scale uses "one more" for every new term greater than million. In this case, Billion represents thousand millions (1.000.000.000), Trilion is a million millions (1.000.000.000.000) etc., so yup, billion equals trillion.&lt;/p&gt;
&lt;p&gt;It's an interesting world we live in. And different date formats are a pain in the ass for software developers.</description><link>http://stritar.net/Post/Billion_=_Trillion_Who_Is_The_One_That_Cant_Count.aspx</link></item></channel></rss>