﻿<?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: Lifehacks</description><copyright>Neolab d.o.o.</copyright><ttl>5</ttl><item><title>Solving global and local records in SaaS database design</title><pubDate>Sat, 20 Jul 2013 23:50:56 GMT</pubDate><description>&lt;p&gt;Lately, we've been seriously considering developing a &lt;a href="http://www.neolab.si/" class="more" target="_Blank" title="Neolab, Software Development"&gt;new version of our framework&lt;/a&gt;. This one is already a few years old, and besides other problems it's facing, it lacks one very important thing - it's &lt;b&gt;not suited for SaaS&lt;/b&gt; &lt;a href="http://en.wikipedia.org/wiki/Software_as_a_service" class="more" target=_blank" title="Software as a service"&gt;(Software as a Service)&lt;/a&gt; applications. Often, we would like to host a few simple projects (like multiple web pages) in a single database, but we are also thinking about developing a product / service, which we could &lt;b&gt;offer to multiple clients&lt;/b&gt;. Making &lt;a href="http://www.solidcageblog.com/2009/11/top-5-database-design-considerations.html" class="more" target="_blank" title="Top 5 Database Design Considerations For SaaS Software"&gt;a product for different clients&lt;/a&gt; that would &lt;b&gt;live in the same database&lt;/b&gt; is not simple, and requires an architecture that is both rigid and flexible, micro-useful and scalable. &lt;/p&gt;

&lt;p&gt;The database model we currently use is doing quite well. It's able to support complex &lt;a href="http://www.neolab.si/Information-Systems.aspx#down" class="more" target="_blank" title="Neolab Information Systems"&gt;business-oriented systems&lt;/a&gt;, &lt;a href="http://www.neolab.si/Web-Portals.aspx#down" class="more" target="_Blank" title="Neolab Social Web Portals"&gt;social portals&lt;/a&gt; and &lt;a href="http://www.neolab.si/Web-Pages.aspx#down" class="more" target="_blank" title="Neolab Web Sites"&gt;web sites&lt;/a&gt;, the core tables being the same across all applications. Sure, there are many redundant things, but we are aware where we should scale-down. More importantly, we have to decide how to upgrade this database model which is used in different applications to be able to &lt;b&gt;work in a single database&lt;/b&gt;. I'm not that fond of &lt;a href="http://stackoverflow.com/questions/69128/saas-database-design-multiple-databases-split" class="more" target="_blank" title="SaaS database design - Multiple Databases? Split?"&gt;using multiple databases or schemas&lt;/a&gt; in SaaS architecture, since this is a similar situation to which we have now, and it doesn't work that well. &lt;b&gt;I'm certain having the same database for different clients&lt;/b&gt; is most suited for &lt;a href="http://www.neolab.si/Integrated_Information_Solutions.aspx#down" class="more" target="_blank" title="Neolab Integrated Information Solutions"&gt;our business&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;This means we will be &lt;b&gt;having a ClientID (ApplicationID)&lt;/b&gt; in all the tables that will be used by all clients / applications. But what is the best way to take care of &lt;b&gt;global and local records&lt;/b&gt; - records that are used by everyone versus those in only a few applications?&lt;/p&gt;


&lt;p&gt;Let's assume we are building a CMS system for many sites, for which we will be needing two global Roles (Administrator, Moderator), but one instance will have its own Role as well (News editor). There are many ways we can go.&lt;/p&gt;


&lt;h2&gt;1. Local roles&lt;/h2&gt;


&lt;p&gt;This architecture means &lt;b&gt;each client having it's own Roles&lt;/b&gt;. It's a simple solution, very flexible, but has many flaws - the most obvious being the benefits of global functionalities. E.g. if you're and Administrator, you can restart the site. Since we now have multiple Administrators (ID = 1,3,…), features like these get a bit harder to implement, and you can end up developing a totally different application for each client.&lt;/p&gt;

&lt;br&gt;
&lt;table cellspacing="0" cellpadding="3" border="0" align="center" &gt;
&lt;tr&gt;&lt;th&gt;ApplicationID&lt;/th&gt;&lt;th&gt;RoleID (PK)&lt;/th&gt;&lt;th&gt;Role&lt;/th&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Administrator&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;&lt;b&gt;2&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Moderator&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;&lt;b&gt;3&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Administrator&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;&lt;b&gt;4&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Moderator&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;&lt;b&gt;5&lt;/b&gt;&lt;/td&gt;&lt;td&gt;News editor&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;



&lt;h2&gt;2. Global Roles with a M:N table&lt;/h2&gt;


&lt;p&gt;The other option is to have &lt;b&gt;global Roles, which are attached to a single application using a M:N table&lt;/b&gt;. This is an elegant and very flexible solution, but from my experience, you should avoid using M:N tables if possible. Of course, there are logical cases in which you can't, but you should always consider other options. Adding another table to the equation complicates queries, makes direct data browsing less understandable, besides raising the possibilities of errors.&lt;/p&gt;
&lt;br&gt;
&lt;table cellpadding="0" cellspacing="0" width="100%"&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;
&lt;table cellspacing="0" cellpadding="3" border="0"  &gt;
&lt;tr &gt;&lt;th&gt;RoleID (PK)&lt;/th&gt;&lt;th&gt;Role&lt;/th&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Administrator&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;b&gt;2&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Moderator&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;b&gt;3&lt;/b&gt;&lt;/td&gt;&lt;td&gt;News editor&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/td&gt;
&lt;td align="right"&gt;
&lt;table cellspacing="0" cellpadding="3" border="0"  &gt;
&lt;tr&gt;&lt;th&gt;ApplicationID (PK)&lt;/th&gt;&lt;th&gt;RoleID (PK)&lt;/th&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;2&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;b&gt;2&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;b&gt;2&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;2&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;b&gt;2&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;3&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;


&lt;h2&gt;3. Composite key&lt;/h2&gt;


&lt;p&gt;Another possibility that comes to mind is to &lt;b&gt;use a composite key, which in reality, makes a single table from the above two&lt;/b&gt; (Roles, ApplicationsRoles). This allows using the same IDs for the same Roles in different systems. But it also requires having a composite key, which makes other things more complicated. It prevents making simple joins (you need to make a join by both primary keys), which means all the tables joined to Roles would need the ApplicationID field as well, even if they wouldn't really require it. Not to mention this model simply calls for trouble.&lt;/p&gt;
&lt;br&gt;
&lt;table cellspacing="0" cellpadding="3" border="0" align="center" &gt;
&lt;tr&gt;&lt;th&gt;ApplicationID (PK)&lt;/th&gt;&lt;th&gt;RoleID (PK)&lt;/th&gt;&lt;th&gt;Role&lt;/th&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Administrator&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;2&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Moderator&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;b&gt;2&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Administrator&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;b&gt;2&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;2&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Moderator&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;b&gt;2&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;3&lt;/b&gt;&lt;/td&gt;&lt;td&gt;News editor&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;



&lt;h2&gt;4. Fake composite key&lt;/h2&gt;
&lt;p&gt;Sometimes, it makes sense using an &lt;b&gt;additional primary key in a M:N relationship&lt;/b&gt;, so you can easily join the table further. We could do this as well, making the previous case a bit more easy-going. But this situation makes all the magic that we could do across the system a bit harder - since all the joins would be made using new local IDs, we are getting too close to the first solution (you can't make joins with the RoleID field, since it's not unique).&lt;/p&gt;
&lt;br&gt;
&lt;table cellspacing="0" cellpadding="3" border="0" align="center" &gt;
&lt;tr &gt;&lt;th&gt;ID (PK)&lt;/th&gt;&lt;th&gt;ApplicationID&lt;/th&gt;&lt;th&gt;RoleID&lt;/th&gt;&lt;th&gt;Role&lt;/th&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;Administrator&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;b&gt;2&lt;/b&gt;&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;Moderator&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;b&gt;3&lt;/b&gt;&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;Administrator&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;b&gt;4&lt;/b&gt;&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;Moderator&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;b&gt;5&lt;/b&gt;&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;News editor&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;



&lt;h2&gt;5. NULL-able ApplicationID&lt;/h2&gt;
&lt;p&gt;A different architecture enables &lt;b&gt;using global Roles that have no ApplicationID, and local Roles that have it&lt;/b&gt;. Each application is set to use both sets of Roles, allowing flexibility and understandability. But this model has a problem as well - we can't prevent an application from seeing a global Role - those are intended for everybody, which means that in the long run, the system would start gravitating towards not having any global roles at all, to assure flexibility. To simplify - this architecture is great, but needs something that takes care of Denying.&lt;/p&gt;
&lt;br&gt;
&lt;table cellspacing="0" cellpadding="3" border="0" align="center" &gt;
&lt;tr&gt;&lt;th&gt;ApplicationID&lt;/th&gt;&lt;th&gt;RoleID (PK)&lt;/th&gt;&lt;th&gt;Role&lt;/th&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;NULL&lt;/td&gt;&lt;td&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Administrator&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;NULL&lt;/td&gt;&lt;td&gt;&lt;b&gt;2&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Moderator&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;&lt;b&gt;3&lt;/b&gt;&lt;/td&gt;&lt;td&gt;News editor&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;



&lt;h3&gt;5. a) Creating a table for Deny&lt;/h3&gt;
&lt;p&gt;Let's put another application (ApplicationID = 3) into the equation, which, for some reason, doesn't want to have the global Role named Moderator (RoleID = 2). &lt;b&gt;Adding another table to care of Denied Roles&lt;/b&gt; would solve the problem perfectly, but do we really need another table? We want to keep our database with as little tables as possible, so it's easier to use. That's why we should consider extending the Roles table to handle denying as well. &lt;/p&gt;

&lt;br&gt;
&lt;table cellpadding="0" cellspacing="0" width="100%"&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;
&lt;table cellspacing="0" cellpadding="3" border="0" &gt;
&lt;tr&gt;&lt;th&gt;ApplicationID&lt;/th&gt;&lt;th&gt;RoleID (PK)&lt;/th&gt;&lt;th&gt;Role&lt;/th&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;NULL&lt;/td&gt;&lt;td&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Administrator&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;NULL&lt;/td&gt;&lt;td&gt;&lt;b&gt;2&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Moderator&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;&lt;b&gt;3&lt;/b&gt;&lt;/td&gt;&lt;td&gt;News editor&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/td&gt;
&lt;td align="right" valign="top"&gt;

&lt;table cellspacing="0" cellpadding="3" border="0" &gt;
&lt;tr &gt;&lt;th&gt;ApplicationID (PK)&lt;/th&gt;&lt;th&gt;DeniedRoleID (PK)&lt;/th&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;


&lt;h3&gt;5. b) Adding two fields for Deny&lt;/h3&gt;
&lt;p&gt;In the most normalized way, we need &lt;b&gt;two fields to take care of Deny&lt;/b&gt; - a boolean to mark we are working with a Deny record type, and an integer to tell which record we are denying. But what if we want to optimize even further?&lt;/p&gt;

&lt;br&gt;
&lt;table cellspacing="0" cellpadding="3" border="0" align="center" &gt;
&lt;tr&gt;&lt;th&gt;ApplicationID&lt;/th&gt;&lt;th&gt;RoleID (PK)&lt;/th&gt;&lt;th&gt;Role&lt;/th&gt;&lt;th&gt;IsDenied&lt;/th&gt;&lt;th&gt;DeniedRoleID&lt;/th&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;NULL&lt;/td&gt;&lt;td&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Administrator&lt;/td&gt;&lt;td&gt;false&lt;/td&gt;&lt;td&gt;NULL&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;NULL&lt;/td&gt;&lt;td&gt;&lt;b&gt;2&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Moderator&lt;/td&gt;&lt;td&gt;false&lt;/td&gt;&lt;td&gt;NULL&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;&lt;b&gt;3&lt;/b&gt;&lt;/td&gt;&lt;td&gt;News editor&lt;/td&gt;&lt;td&gt;false&lt;/td&gt;&lt;td&gt;NULL&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;&lt;b&gt;4&lt;/b&gt;&lt;/td&gt;&lt;td&gt;NULL&lt;/td&gt;&lt;td&gt;true&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;



&lt;h3&gt;5. c) Using an existing field for Deny&lt;/h3&gt;
&lt;p&gt;We could put &lt;b&gt;information about which record we are denying into the existing Roles.Role field&lt;/b&gt;, since we don't really need it in these cases. But there's a major setback; if a non-numeric field would be accidentally stored in the denied Role, the SQL engine would throw an error.&lt;/p&gt;
&lt;br&gt;
&lt;table cellspacing="0" cellpadding="3" border="0" align="center" &gt;
&lt;tr&gt;&lt;th&gt;ApplicationID&lt;/th&gt;&lt;th&gt;RoleID (PK)&lt;/th&gt;&lt;th&gt;Role&lt;/th&gt;&lt;th&gt;IsDenied&lt;/th&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;NULL&lt;/td&gt;&lt;td&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Administrator&lt;/td&gt;&lt;td&gt;false&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;NULL&lt;/td&gt;&lt;td&gt;&lt;b&gt;2&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Moderator&lt;/td&gt;&lt;td&gt;false&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;&lt;b&gt;3&lt;/b&gt;&lt;/td&gt;&lt;td&gt;News editor&lt;/td&gt;&lt;td&gt;false&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;&lt;b&gt;4&lt;/b&gt;&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;true&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;


&lt;h3&gt;5. d) Using a single field for Deny&lt;/h3&gt;


&lt;p&gt;It's much easier to combine the first two fields into one, &lt;b&gt;marking the record implicitly&lt;/b&gt;. If the DeniedID is NULL, it means we are working with a regular record, otherwise, we are dealing with a denying record. Information about which Role we are denying is stored in the same field, which &lt;b&gt;works both as a boolean, as an integer&lt;/b&gt;. &lt;/p&gt;
&lt;br&gt;

&lt;table cellspacing="0" cellpadding="3" border="0" align="center" &gt;
&lt;tr&gt;&lt;th&gt;ApplicationID&lt;/th&gt;&lt;th&gt;RoleID (PK)&lt;/th&gt;&lt;th&gt;Role&lt;/th&gt;&lt;th&gt;DeniedRoleID&lt;/th&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;NULL&lt;/td&gt;&lt;td&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Administrator&lt;/td&gt;&lt;td&gt;NULL&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;NULL&lt;/td&gt;&lt;td&gt;&lt;b&gt;2&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Moderator&lt;/td&gt;&lt;td&gt;NULL&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;&lt;b&gt;3&lt;/b&gt;&lt;/td&gt;&lt;td&gt;News editor&lt;/td&gt;&lt;td&gt;NULL&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;&lt;b&gt;4&lt;/b&gt;&lt;/td&gt;&lt;td&gt;NULL&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;



&lt;h2&gt;The decision&lt;/h2&gt;
&lt;p&gt;&lt;b&gt;The last architecture (5. d) is the one I think it's best.&lt;/b&gt; It's very transparent and flexible, and it has only one major problem I can currently think of; if only a few (of many) applications would require to share a Role, this wouldn't be possible to solve with this model, but I can live with that.&lt;/p&gt;

&lt;br&gt;

&lt;table cellspacing="0" cellpadding="3" border="0" align="center" style="font-size: 17px;" &gt;
&lt;tr&gt;&lt;th&gt;ApplicationID&lt;/th&gt;&lt;th&gt;RoleID (PK)&lt;/th&gt;&lt;th&gt;Role&lt;/th&gt;&lt;th&gt;DeniedRoleID&lt;/th&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;NULL&lt;/td&gt;&lt;td&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Administrator&lt;/td&gt;&lt;td&gt;NULL&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;NULL&lt;/td&gt;&lt;td&gt;&lt;b&gt;2&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Moderator&lt;/td&gt;&lt;td&gt;NULL&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;&lt;b&gt;3&lt;/b&gt;&lt;/td&gt;&lt;td&gt;News editor&lt;/td&gt;&lt;td&gt;NULL&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;&lt;b&gt;4&lt;/b&gt;&lt;/td&gt;&lt;td&gt;NULL&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;


&lt;h2&gt;The SQL statement&lt;/h2&gt;
&lt;p&gt;I have played around a bit with the 5. d) and it works very well. Here's the &lt;b&gt;SELECT statement that retrieves the records for each specific application&lt;/b&gt;, supporting the mentioned scenarios.&lt;/p&gt;

&lt;p&gt;
&lt;i&gt;SELECT Roles.*&lt;br&gt;

FROM Roles &lt;br&gt;

WHERE &lt;br&gt;

(Roles.ApplicationID = 3 OR Roles.ApplicationID IS NULL) --retrieve local and global roles&lt;br&gt;

AND&lt;br&gt;

Roles.DeniedRoleID IS NULL --use only regular records&lt;br&gt;

AND &lt;br&gt;

Roles.RoleID NOT IN --remove denied roles&lt;br&gt;

(&lt;br&gt;

    SELECT DeniedRoles.DeniedRoleID FROM Roles AS DeniedRoles&lt;br&gt;

    WHERE DeniedRoles.ApplicationID = 3&lt;br&gt;

    AND DeniedRoles.DeniedRoleID IS NOT NULL&lt;br&gt;

)&lt;br&gt;

&lt;/i&gt;&lt;/p&gt;


&lt;p&gt;The same query, solved with a &lt;b&gt;JOIN instead of WHERE IN&lt;/b&gt;, which is faster, but probably less understandable.&lt;/p&gt;



&lt;p&gt;
&lt;i&gt;SELECT RealRoles.*&lt;br&gt;

FROM Roles AS RealRoles --regular records&lt;br&gt;

LEFT OUTER JOIN&lt;br&gt;

Roles AS DeniedRoles --denying records&lt;br&gt;

ON RealRoles.RoleID = DeniedRoles.DeniedRoleID --join by the ID of the role&lt;br&gt;

AND RealRoles.DeniedRoleID IS NULL  --but only those records that are real&lt;br&gt;

AND DeniedRoles.DeniedRoleID IS NOT NULL --vs those that are denying&lt;br&gt;

AND DeniedRoles.ApplicationID = 3&lt;br&gt;

WHERE &lt;br&gt;

(RealRoles.ApplicationID = 3 OR RealRoles.ApplicationID IS NULL) --retrieve my and global roles&lt;br&gt;

AND &lt;br&gt;

RealRoles.DeniedRoleID IS NULL -- take all regular roles&lt;br&gt;
AND &lt;br&gt;

DeniedRoles.RoleID IS NULL --that don't have a deny
&lt;/i&gt;&lt;/p&gt;

&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;There are many ways to solve a database model in a SaaS architecture, but because of many reasons, &lt;a href="http://www.neolab.si/Organization_Marketing_Consulting_And_Information_Technologies.aspx#down" class="more" target="_Blank" title="Neolab, Software Development Team"&gt;we've decided&lt;/a&gt; to &lt;b&gt;use a single database with an additional foreign key&lt;/b&gt; that defines the client in all the required tables. One of the biggest concerns in this architecture is solving global and local records, but the &lt;b&gt;model presented here takes care of most requirements&lt;/b&gt; a typical Saas system might stumble upon, by using a NULL-able ApplicationID, with another field to take care of exceptions that require denying.&lt;/p&gt;

&lt;p&gt;This architecture solves most of the problems, and if you're leaning towards a single database architecture, it's probably the best way to go.&lt;/p&gt;







 





</description><link>http://stritar.net/Post/Solving-global-and-local-records-in-SaaS-database-design.aspx</link></item><item><title>Note to self: when writing blog post titles, forget about SEO</title><pubDate>Mon, 01 Apr 2013 09:23:23 GMT</pubDate><description>&lt;p&gt;A few days ago, I wrote a blog post about &lt;a href="http://stritar.net/Post/Reinventing-the-blog-part-1-User-Experience-Analysis-of-the-most-innovative-and-best-designed-blogs.aspx" class="more" target="_blank" title="Reinventing the blog, part 1: Dissecting the most innovative and best-designed blogs"&gt;innovative blog designs and solutions&lt;/a&gt; that are emerging everywhere. I think it's a great post, it offers a very detailed overview of new fascinating concepts and features that are driven by new ways we consume content. But right before publishing, I've decided to &lt;b&gt;change the post's title&lt;/b&gt; from "Dissecting the innovative blogs..." to "UX analysis of the innovative blogs...". I did this because I wanted to include "user experience" and "analysis" in the blog's title and url for &lt;b&gt;better SEO performance&lt;/b&gt;, but this turned out to be a huge mistake.&lt;/p&gt;

&lt;p&gt;This article is the &lt;b&gt;first part of a series&lt;/b&gt;, focused on new generation blogs, which will (hopefully) form a complete user experience study of modern online media. But I've chosen the wrong title for it, since the core of every UX analysis are the &lt;b&gt;problems and goals&lt;/b&gt; each solution is trying to solve and achieve. By thinking about &lt;a href="http://en.wikipedia.org/wiki/Search_engine_optimization" class="more" target="_blank" title="Search engine optimization"&gt;SEO&lt;/a&gt;, I've devalued the content of the story by &lt;b&gt;presenting it as something it is not&lt;/b&gt;. Even if the the new bible would be written inside the post, user experience experts would probably think "This guy doesn't know shit about UX" because of the title. It's very easy for something to be stained by a corrupt detail and be &lt;a href="http://www.rdegges.com/the-positive-programmer/" class="more" target="_blank" title="The Positive Programmer"&gt;perceived in a negative way&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Even though I know most of the traffic on my blog doesn't come from &lt;b&gt;search&lt;/b&gt;, but rather from &lt;b&gt;referrals&lt;/b&gt;, I always subconsciously think about this tradeoff when I'm writing a post - &lt;b&gt;appealing titles vs. SEO optimized titles&lt;/b&gt; with high keyword density. Pressured by the amount of time I've invested in this &lt;a href="http://stritar.net/Post/Reinventing-the-blog-part-1-User-Experience-Analysis-of-the-most-innovative-and-best-designed-blogs.aspx" class="more" target="_blank" title="Reinventing the blog, part 1: Dissecting the most innovative and best-designed blogs"&gt;specific post&lt;/a&gt; (&gt;10 hours), I went for the latter, also because it's every blogger's dream his / her work will once be self-sustainable. Traffic without active (social media) involvement. I do the writing, Google does its magic, the readers to the rest.&lt;/p&gt;


&lt;p&gt;Search engine rankings are influenced mostly by &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 media) backlinks&lt;/a&gt;. This means you need &lt;a href="http://stritar.net/Post/I-guess-I-am-a-real-blogger-now.aspx" class="more" target="_blank" title="I guess I'm a real blogger now"&gt;social activity&lt;/a&gt; first, only then the &lt;b&gt;keywords start to matter&lt;/b&gt;. Which makes it much more important for your blog's &lt;b&gt;title to capture attention&lt;/b&gt; than to be SEO friendly.&lt;/p&gt;

&lt;p&gt;By the way, I've changed the title back to the &lt;a href="http://stritar.net/Post/Reinventing-the-blog-part-1-User-Experience-Analysis-of-the-most-innovative-and-best-designed-blogs.aspx" class="more" target="_blank" title="Reinventing the blog, part 1: Dissecting the most innovative and best-designed blogs"&gt;intended original one&lt;/a&gt;, but the URL stayed the same. And I'm never thinking about SEO when writing blog titles again. &lt;/p&gt;
</description><link>http://stritar.net/Post/Note-to-self-when-writing-blog-post-titles-forget-about-SEO.aspx</link></item><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>I guess I'm a real blogger now</title><pubDate>Tue, 12 Feb 2013 08:28:48 GMT</pubDate><description>&lt;p&gt;How glorious my previous week! My post about &lt;a href="http://stritar.net/Post/Five-reasons-why-I-will-not-steal-your-idea.aspx" class="more" target="_blank" title="5 reasons why I won't steal your idea"&gt;not stealing other people's ideas&lt;/a&gt; made it big time. It took me four years, but I finally managed to write something that was read by &lt;b&gt;more than 10.000 different readers&lt;/b&gt;. Ok, there's still a long way to go before I'll reach &lt;a href="http://swizec.com/blog/numbers-that-baffle/swizec/5887" class="more" target="_blank" title="Numbers that baffle"&gt;Swizec's league&lt;/a&gt;, but I'm very happy about my evolution as a blogger. The amount of feedback I received this time was amazing, infinite comments on &lt;a href="http://news.ycombinator.com/item?id=5170354" class="more" target="_blank" title="Why I won't steal your idea | Hacker News"&gt;Hacker News&lt;/a&gt; and &lt;a href="http://www.reddit.com/r/startups/comments/17xhun/5_reasons_why_i_wont_steal_your_idea/" class="more" target="_blank" title="5 reasons why I won't steal your idea : startups"&gt;reddit&lt;/a&gt;, tweets from startup accelerators &lt;a href="https://twitter.com/Wayra/status/298814968885817344" class="more" target="_blank" title="Twitter / Wayra: A must-read for reluctant ..."&gt;Wayra&lt;/a&gt; and &lt;a href="https://twitter.com/HackFwd/status/299127060234899457" class="more" target="_blank" title="Twitter / HackFwd: 5 reasons why I won&amp;#39;t steal ..."&gt;HackFwd&lt;/a&gt;, there was a also a great post on &lt;a href="http://www.whiteboardmag.com/" class="more" target="_blank" title="European startups, entrepreneurship and innovation news &amp; insights: Whiteboard"&gt;Whiteboard&lt;/a&gt; that added an &lt;a href="http://www.whiteboardmag.com/ideas-are-expensive-the-6th-reason-why-no-one-will-steal-your-business-ideas/" class="more" target="_blank" title="Ideas are expensive: the 6th reason why no one will steal your business ideas"&gt;additional sixth reason to my original five&lt;/a&gt;. Great results. But what makes this post so important is the fact it's been &lt;b&gt;amplified by all social media channels&lt;/b&gt;. Not a few, like my &lt;a href="http://stritar.net/Post/I-Got-Another-Scent-Of-Going-Viral-On-Social-Media-And-I-Am-Loving-Every-Bit-Of-It.aspx" class="more" target="_blank" title="I got another scent of going viral on social media. And I'm loving every bit of it."&gt;previous viral posts&lt;/a&gt;, but all of them. Which confirms I was spot on this time.&lt;/p&gt;&lt;br&gt;
&lt;img src="http://stritar.net/Upload/Images/Viral-Blogger-Social-Shares.gif" alt="Social shares of '5 reasons why I won't steal your idea'"&gt;
&lt;p class="underpicture"&gt;The balanced social activity about the post &lt;a href="http://stritar.net/Post/Five-reasons-why-I-will-not-steal-your-idea.aspx" class="more" target="_blank" title="5 reasons why I won't steal your idea"&gt;5 reasons why I won't steal your idea&lt;/a&gt;.&lt;/p&gt;&lt;br&gt;

&lt;p&gt;Before this, I was afraid I would stay "&lt;a href="http://stritar.net/Series/The-Silicon-Valley-tour.aspx" class="more" target="_Blank" title="Series: The Silicon Valley Tour"&gt;the Slovenian who went to Silicon Valley and blogged about it&lt;/a&gt;", since those posts were read by many, and &lt;a href="http://stritar.net/Post/The-Silicon-Valley-tour-part-7-A-few-exciting-new-business-models-that-actually-work.aspx" class="more" target="_blank" title="The Silicon Valley tour, part 7: A few exciting new business models that actually work"&gt;one of them&lt;/a&gt; managed to attract more than 5k uniques. Which happened almost a year ago... Luckily, persistence comes a long way, and I was able to double that! Currently, I feel very motivated to push my blogging forward, hopefully beating the high benchmark I've set on previous Tuesday as soon as possible again. Hooked on social feedback, like all other bloggers.&lt;/p&gt;

&lt;br&gt;
&lt;img src="http://stritar.net/Upload/Images/Viral-Blogger-Traffic-Content-Overview.gif" alt="Total pageviews and unique users of '5 reasons why I won't steal your idea'"&gt;
&lt;p class="underpicture"&gt;The traffic of &lt;a href="http://stritar.net/Post/Five-reasons-why-I-will-not-steal-your-idea.aspx" class="more" target="_blank" title="5 reasons why I won't steal your idea"&gt;5 reasons why I won't steal your idea&lt;/a&gt;. Around half of all referrals came from &lt;a href="http://news.ycombinator.com/" class="more" target="_blank" title="Hacker News"&gt;Hacker News&lt;/a&gt;.&lt;/p&gt;&lt;br&gt;

&lt;p&gt;Lessons learned? I admit I started off with very sterile posts, but found "my style" as I went along, learning to master the art of writing. I know this may sound weird, but I noticed the &lt;b&gt;less I was trying to appeal to everyone, the better my posts became&lt;/b&gt;, so I just kept playing with words, unconcerned. I guess adding personality to the writing can make wonders. I also noticed how important &lt;b&gt;passion&lt;/b&gt; is. This specific post was fueled by my frustrations with different clients, so if you want to blog well, you just have to write about things you really love, hate, or have a strong opinion about. Otherwise the results will just turn out boring and dull.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Thank you for sticking around&lt;/b&gt;, hopefully I will be able to deliver more &lt;a href="http://stritar.net/Post/Is-it-even-possible-to-create-original-content-in-this-age.aspx" class="more" target="_Blank" title="Is it even possible to create original content in this age?"&gt;interesting thoughts&lt;/a&gt; in the future and improve my writing even further. I love doing it, so I promise to increase the frequency of posting as well. And &lt;a href="http://stritar.net/Post/Redesigning_The_Blog_-_Behold_The_Chronolog.aspx" class="more" target="_blank" title="Redesigning the blog - behold the Chronolog"&gt;redesign the chronolog&lt;/a&gt;. Again. Many things have &lt;a href="http://stritar.net/Post/What_To_Do_With_My_Blog.aspx" class="more" target="_blank" title="What to do with my blog"&gt;happened since 2009&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Challenges await!&lt;/p&gt;</description><link>http://stritar.net/Post/I-guess-I-am-a-real-blogger-now.aspx</link></item><item><title>One of the most important things ever written</title><pubDate>Fri, 28 Dec 2012 12:51:28 GMT</pubDate><description>&lt;p&gt;Every once in a while your &lt;a href="http://www.saintsal.com/2012/12/self-improvement-messing-up-your-potential/" class="more" target="_blank" title="Self-improvement vs self-confidence"&gt;read something&lt;/a&gt; that &lt;b&gt;takes you to another level&lt;/b&gt;. Something that can change the way you've been thinking and doing things for years already. Which means looking for ways to optimize everything, drilling yourself, studying every day of the year, gathering knowledge, battling procrastination and low energy, looking for new ways to grow. Lifehacks whenever possible, fixes and improvements that come on a daily basis. And then one day your find out that you've perhaps been &lt;b&gt;doing it all wrong&lt;/b&gt;.  Not possible? Let me tell you a story about a great idea.&lt;/p&gt;

&lt;p&gt;tl;dr: &lt;a href="http://www.saintsal.com/2012/12/self-improvement-messing-up-your-potential/" class="more" target="_blank" title="Self-improvement vs self-confidence"&gt;The article&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You've probably heard about &lt;a href="http://en.wikipedia.org/wiki/Maslow's_hierarchy_of_needs" class="more" target="_blank" title="Maslow's hierarchy of needs"&gt;Maslow's hierarchy of needs&lt;/a&gt;, where people need to fulfill their primitive requirements, like &lt;b&gt;food and intimacy&lt;/b&gt;, to reach higher needs like &lt;b&gt;self-actualization&lt;/b&gt;. Classic psychology. Which is perhaps also doable the other way around.&lt;/p&gt;

&lt;p&gt;A few days ago &lt;a href="https://twitter.com/saintsal" class="more" target="_blank" title="Salim Virani (SaintSal) on Twitter"&gt;Salim Virani&lt;/a&gt; wrote a great post about the perceived causality between &lt;a href="http://www.saintsal.com/2012/12/self-improvement-messing-up-your-potential/" class="more" target="_blank" title="Self-improvement vs self-confidence"&gt;self-improvement and self-confidence&lt;/a&gt;. We usually think we need to &lt;b&gt;improve ourselves first&lt;/b&gt;, to make it to the next step. Well, he made me believe it's &lt;b&gt;rather the opposite&lt;/b&gt;. The problem these days is, at least in the &lt;a href="http://stritar.net/Projects/Neolab.aspx" class="more" target="_blank" title="Neolab on Stritar's chronolog"&gt;technology startup environments&lt;/a&gt;, that we are all hyper pumped up do crazy shit everybody drools over, while the competition is fierce and global, tight schedules and stress are everywhere, most clients expect you to overdeliver things, better, cheaper, faster. A never-ending story, sucking every bit of blood you have, leaving you empty. Which makes you &lt;b&gt;not evolve&lt;/b&gt; as much as you would like to, both professionally and spiritually.&lt;/p&gt;

&lt;p&gt;But wait, what if we try to self-actualize first, could that help us find the energy for self-improvement? &lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.saintsal.com/2012/12/self-improvement-messing-up-your-potential/" class="more" target="_blank" title="Self-improvement vs self-confidence"&gt;Read the article now&lt;/a&gt;! Yes, forget about how to do this and how to improve that, you've been doing it all wrong! You've read tons of shit like that, &lt;a href="http://delicious.com/stritar" class="more" target="_Blank" title="Stritar on Delicious"&gt;just like me&lt;/a&gt;, and what happened - &lt;b&gt;nothing&lt;/b&gt;. You are still the same. No matter the technique, &lt;b&gt;you can't change how things are&lt;/b&gt;, you can't be happy at work if you're not, you can't force yourself to do things you don't want to do.&lt;/p&gt;

&lt;p&gt;From this day on, I'm doing it the &lt;b&gt;other way around&lt;/b&gt;. Focusing on the things that make me happy first, believing other things will magically become more pleasant. Because this guy is right, I can see the way self-confidence can help me towards self-improvement. I will do all the things I really want to do besides my job, and those things I hate about my job will become a &lt;b&gt;piece of cake&lt;/b&gt;, since they will be downgraded to just another activity required to reach the higher goal of finding my self-confidence and self-actualization.&lt;/p&gt;

&lt;p&gt;Now that I think about it, I feel I've been intuitively going into that direction already, but now that I'm fully aware about the science behind it, I'm going all-in. Which means more fun, more blogging, more crazy prototypes, I've also decided to start working on this idea I have for a boardgame. Just because. &lt;b&gt;Not really giving a fuck&lt;/b&gt; if these things actually make sense or if they will be financially feasible. I need to start enjoying life, I need to satisfy my urge to create, and &lt;b&gt;confidence and growth will come&lt;/b&gt;. Thank you Salim, for discovering and pointing out this amazing perspective on life.&lt;/p&gt;</description><link>http://stritar.net/Post/One-of-the-most-important-things-ever-written.aspx</link></item><item><title>Hey developer, here's something that will make you sound smart</title><pubDate>Thu, 13 Dec 2012 08:21:02 GMT</pubDate><description>&lt;p&gt;I've met many developers in my life, and quite a few of them share a similar problem. Being mathematical geniuses and all, but not being able to &lt;b&gt;put into words what the hell they are doing&lt;/b&gt;. At least so it would sound &lt;b&gt;marketable and awesome&lt;/b&gt;. After all, it's not their job to sound smart, the developer's role in the &lt;a href="http://www.forbes.com/sites/andyellwood/2012/08/22/the-dream-team-hipster-hacker-and-hustler/" class="more" target="_blank" title="The Dream Team: Hipster, Hacker, and Hustler"&gt;Hipster - Hustler - Hacker&lt;/a&gt; dream team is a bit different. But talking like an &lt;b&gt;MBA&lt;/b&gt; can have it's advantages, specially when it comes to individuals &lt;b&gt;communicating with their clients&lt;/b&gt;.&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://mbadev.neolab.si/" class="button2" target="_blank" title="Launch #mbadev - MBA developer talk"&gt;Launch&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Take my example, half of the time my customers don't fully understand what I'm saying even though I'm trying really hard. But I've noticed some phrases have a &lt;b&gt;better effect than others&lt;/b&gt;, some simply sound like &lt;b&gt;special awesome things&lt;/b&gt; are happening (which they are) and that &lt;b&gt;everything is under control&lt;/b&gt;. The funny thing is that the recipe to speak like that is very simple: say hi to the &lt;a href="http://mbadev.neolab.si/" class="more" target="_blank" title="#mbadev - MBA developer talk"&gt;MBA developer talk&lt;/a&gt;.&lt;/p&gt;

&lt;p align="center"&gt;&lt;i&gt;[MBA verb] + [technical noun] = [#mbadev]&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;The equation for the &lt;a href="http://mbadev.neolab.si/" class="more" target="_blank" title="#mbadev - MBA developer talk"&gt;#mbadev&lt;/a&gt; talk is elementary. Take a &lt;b&gt;power verb&lt;/b&gt; that has a really active meaning. Like "structuring", "evaluating" or "utilizing". These are often used to make an activity sound way cooler than it actually is. Then, take a &lt;b&gt;noun that is very hacker-specific&lt;/b&gt;, something that non-technical people don't fully understand. Like "metadata", "framework" or "encapsulation". Put them together, and you have a winner. Developers, face it, no one really understands what you're saying, so you might as well &lt;b&gt;make it sound cool&lt;/b&gt;.&lt;/p&gt;

&lt;p align="center"&gt;&lt;i&gt;"Dear client, I'm very busy &lt;b&gt;structuring metadata&lt;/b&gt;, thank you for your understanding".&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;The &lt;a href="http://mbadev.neolab.si/" class="more" target="_blank" title="#mbadev - MBA developer talk"&gt;MBA developer talk&lt;/a&gt; seems such a great concept that &lt;a href="http://neolab.si/" class="more" target="_blank" title="Neolab, software solutions"&gt;we&lt;/a&gt;'ve even made a &lt;b&gt;generator for it&lt;/b&gt;. Feel free to &lt;a href="http://mbadev.neolab.si/" class="more" target="_blank" title="#mbadev - MBA developer talk"&gt;take it for a spin&lt;/a&gt;, you'll be amazed by how such a basic combination can yield such &lt;b&gt;interesting results&lt;/b&gt;. Now all developers can sound really smart.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://mbadev.neolab.si/" class="more" target="_blank" title="#mbadev - MBA developer talk"&gt;http://mbadev.neolab.si&lt;/a&gt;&lt;/p&gt;</description><link>http://stritar.net/Post/Hey-developer-here-is-something-that-will-make-you-sound-smart.aspx</link></item><item><title>How I managed to train myself for a half-marathon in six months</title><pubDate>Thu, 01 Nov 2012 21:42:33 GMT</pubDate><description>&lt;p&gt;I'm not that fit of a person, about half a year ago I had well over 100 kg. That's when I decided to start running to get in shape. I began with workouts of &lt;b&gt;around 2km&lt;/b&gt;, I couldn't do more, I ran out of breath. But each time I went running again, the &lt;b&gt;easier it was&lt;/b&gt;. Supposedly you need to &lt;a href="http://www.dudleyladies.co.uk/running_to_lose_weight.htm" class="more" target="_blank" title="Running to Loose Weight"&gt;exercise at least 30 minutes to start losing weight&lt;/a&gt;, which is about 5 km of running. I clearly remember the first time I managed to run that distance, the feeling was overwhelming, and I &lt;b&gt;sensed the ecstasy&lt;/b&gt; - when you get the impression you could run until exhaustion. After you hit that &lt;b&gt;half hour mark&lt;/b&gt;, you start progressing faster, which made me think about doing a 10 km or even a 21 km run this October on &lt;a href="http://www.ljubljanskimaraton.si/en/" class="more" target="_blank" title="17. Ljubljanski maraton"&gt;Ljubljana Marathon&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Which I did, and it was awesome! And I think you can do it too, because it's really &lt;b&gt;not that hard&lt;/b&gt;. After running a 21 km &lt;a href="http://en.wikipedia.org/wiki/Half_marathon" class="more" target="_blank" title="Half marathon"&gt;half-marathon&lt;/a&gt; (with the &lt;a href="http://www.ljubljanskimaraton.si/en/result/16lm" class="more" target="_blank" title="17. Ljubljanski maraton - Results Men 1978 - 1982"&gt;time of 2:14:02&lt;/a&gt;, which is not that great, but still), I did a bit of contemplation on my workouts, and I can tell you a bit about it. The half-marathon was my &lt;b&gt;40th run this year&lt;/b&gt;, not as big a number as you would expect. The whole "training" took me half a year. I say training, but I didn't stick to any methodologies, I just went out &lt;b&gt;two or three times a week&lt;/b&gt;. The more you run, the easier it becomes, and I noticed I run best after work, specially if I'm stressed or pissed off at someone / something. &lt;b&gt;Running clears your head&lt;/b&gt;.&lt;/p&gt;

&lt;p align="center"&gt;&lt;img src="http://stritar.net/Upload/Images/Ljubljana-Marathon/Running-Ljubljana-Marathon-Route.jpg" alt="The Ljubljana Marathon Route"&gt;&lt;/p&gt;
&lt;p class="underpicture"&gt;My longest run ever - October 28th, 2012: the Ljubljana half-marathon.&lt;/p&gt;

&lt;p&gt;The exercises took me through &lt;b&gt;three different conquests&lt;/b&gt;. At the beginning, &lt;b&gt;running out of breath&lt;/b&gt; was my biggest problem, but you overpower that after ten runs or so. Later, the &lt;b&gt;physical pain&lt;/b&gt; set the limits (sore muscles, side stitch, etc.), but you triumph that too, mile by mile. The last phase is the &lt;b&gt;blood circulation problem&lt;/b&gt;, which makes you dizzy after long runs, preventing you from thinking straight. If you manage to survive that, you're good to go. My longest run before the half-marathon was about 17 km.&lt;/p&gt;

&lt;p align="center"&gt;&lt;a href="http://stritar.net/Upload/Images/Ljubljana-Marathon/Running-Training-Ljubljana-Marathon-Large.jpg" target="_blank"&gt;&lt;img src="http://stritar.net/Upload/Images/Ljubljana-Marathon/Running-Training-Ljubljana-Marathon.jpg" alt="Training for Ljubljana Marathon" border="0"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="underpicture"&gt;The list of my runs in from April to October 2012. &lt;a href="http://stritar.net/Upload/Images/Ljubljana-Marathon/Running-Training-Ljubljana-Marathon-Large.jpg" target="_blank" class="more"&gt;Click&lt;/a&gt; for a larger version.&lt;/p&gt;

&lt;p&gt;Needless to say the half-marathon is a major test, both &lt;b&gt;physically and mentally&lt;/b&gt;. The first three quarters were easy, but I became totally exhausted the last few kilometers, stuck with my messed up malnourished brain who was asking me "why the hell did you have to do this shit?". But I managed to somehow run to the end, counting minute by minute - the kilometer signs were too far apart. The &lt;b&gt;physical pain was immense&lt;/b&gt;, you notice it when you stop for a few seconds to drink and your legs start to shake, but you keep on going, like the others, your body can do much more than you expect from it. When you come to the finish line, everything is paid for and forgotten, and knowing you did something so extreme &lt;b&gt;fills you with pride&lt;/b&gt;. &lt;/p&gt;

&lt;p&gt;I would like to thank everybody that cheered for us in that cold weather, specially my support team that gave me the final bits of energy I needed to complete the race. You guys rock!&lt;/p&gt;

&lt;p align="center"&gt;&lt;img src="http://stritar.net/Upload/Images/Ljubljana-Marathon/Ljubljana-Marathon-Finish-Line.jpg" alt="The Ljubljana Marathon Finish Line"&gt;&lt;/p&gt;
&lt;p class="underpicture"&gt;Closing in on the finish line. Your support group is invaluable at those critical moments. (photo by Iva Pirc Šepec)&lt;/p&gt;

&lt;p&gt;You can barely walk for the next few days, but that's &lt;a href="https://www.youtube.com/watch?feature=player_embedded&amp;v=m-hCuYjvw2I" class="more" target="_blank" title="The day after the Marathon"&gt;simply a part of it&lt;/a&gt;. Like thinking of what your challenge for the next year will be. Doing a 21 under 2 hours or going for the big one? &lt;b&gt;Everything's possible&lt;/b&gt;, even if you are an overweight geek who smokes too much. Believe me.&lt;/p&gt;

&lt;p align="center"&gt;&lt;img src="http://stritar.net/Upload/Images/Ljubljana-Marathon/Ljubljana-Marathon-Certificate-Medal.jpg" alt="The Ljubljana Marathon Medal and Certificate Line"&gt;&lt;/p&gt;
&lt;p class="underpicture"&gt;This makes it worth it. Take that, bucket list.&lt;/p&gt;</description><link>http://stritar.net/Post/How-I-managed-to-train-myself-for-a-half-marathon-in-six-months.aspx</link></item><item><title>Finally, a reason for bloggers to use Google+</title><pubDate>Sat, 22 Sep 2012 13:20:55 GMT</pubDate><description>&lt;p&gt;Despite &lt;a href="http://www.theverge.com/2012/7/27/3192928/google-plus-traffic-stats-june-2012" class="more" target="_blank" title="Google+ traffic soars: 66 percent increase in nine months"&gt;the traffic&lt;/a&gt;, there isn't that much going on on &lt;a href="http://gplus.to/stritar" class="more" target="_blank" title="Grega Stritar on Google+"&gt;Google+&lt;/a&gt;, and the referrals from this social network are still not that numerous. Most of mine &lt;a href="http://stritar.net/Post/I-Got-Another-Scent-Of-Going-Viral-On-Social-Media-And-I-Am-Loving-Every-Bit-Of-It.aspx" class="more" target="_blank" title="I got another scent of going viral on social media. And I'm loving every bit of it."&gt;come from other sources&lt;/a&gt;, but Google has a plan, and this plan is a smart one - using their services to push forward other services. You've probably noticed more and more results in Google search &lt;a href="http://support.google.com/webmasters/bin/answer.py?hl=en&amp;answer=1408986" class="more" target=_"blank" title="Author information in search results"&gt;contain the author's picture&lt;/a&gt;. They stand out from the rest, and since most bloggers want to get as much traffic to their site as possible, this fact can make a difference between which link is clicked or not. If you ask me, setting this up is a must, and it's really easy to do. But you need to have and pimp your Google+ profile.&lt;/p&gt;

&lt;p&gt;There are three steps you need to follow:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;have an "Author" page, which links to your &lt;a href="http://gplus.to/stritar" class="more" target="_blank" title="Grega Stritar on Google+"&gt;Google+ profile&lt;/a&gt; with rel="me"&lt;/li&gt;
&lt;li&gt;have a link to your "Author" page on your post, which contains rel="author"&lt;/li&gt;
&lt;li&gt;have a link from your Google+ profile to your "Author" page (in "Contributor to" section)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here are the &lt;a href="http://www.labnol.org/internet/author-profile-in-google/19775/" class="more" target="_blank" title="Display your Profile Picture in Google Search Results"&gt;full instructions on how to technically implement this&lt;/a&gt;. It should take you about 10 minutes, and I've waited for about a week for Google's search results to actually start displaying my profile picture.&lt;/p&gt;
&lt;p align="center"&gt;
&lt;a href="http://stritar.net/Post/Did-Apple-and-Samsung-just-pull-the-greatest-trick-in-the-mobile-universe.aspx" class="more" target="_blank" title="Did Apple and Samsung just pull the greatest trick in the mobile universe?"&gt;
&lt;img src="http://stritar.net/Upload/Images/Google-Search-Profile-Picture-Results.jpg" alt="Google Search Profile Picture Results" border="0" &gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This feature has been available for quite some time, but I still see many bloggers that haven't implemented it yet, also because its availability was mostly unnoticed. Combining search and social is definitely an &lt;a href="http://techcrunch.com/2012/09/16/faceboogle/" class="more" target="_blank" title="Investors Are Salivating Over Zuckerberg’s Plans For Search. Here’s Why"&gt;advantage Google (still) has over Facebook&lt;/a&gt;, and they should've made more promotion about this interesting upgrade. Bloggers are &lt;a href="http://stritar.net/Post/Is-it-even-possible-to-create-original-content-in-this-age.aspx" class="more" target="_blank" title="Is it even possible to create original content in this age?"&gt;content creators&lt;/a&gt;, and you want as many content creators inside your social network as possible. They are the ones who provide original thoughts that others are looking for and will eventually follow.&lt;p&gt;

&lt;p&gt;It's hard to estimate if this fact (and different pictures) will have any significant &lt;a href="http://www.seomoz.org/blog/google-author-photos" class="more" target="_blank" title="How Optimizing My Ugly Google+ Pic Increased Free Traffic 35%"&gt;impact on search traffic&lt;/a&gt;, I'll keep you posted. But before everyone has it, it's a nice little feature that makes your results look different and much more appealing. Good job, Google, content is king, and you should stay its steward.&lt;/p&gt;</description><link>http://stritar.net/Post/Finally-a-reason-for-bloggers-to-use-Google-Plus.aspx</link></item><item><title>What Apple's headphones can teach us about user experience design</title><pubDate>Sun, 17 Jun 2012 12:25:17 GMT</pubDate><description>&lt;p&gt;I've always been fascinated by things that simply work. By the &lt;b&gt;details that convince&lt;/b&gt;, by the &lt;b&gt;experience that fulfills expectations&lt;/b&gt;. Enter the case of Apple's headphones. They may be just an accessory that supports something else, but this little gadget is a brilliant example of &lt;b&gt;how ux design should be approached&lt;/b&gt;. I'm not saying other vendors don't make equivalent or even better headphones (don't know, so please comment!), but Apple has proved many times that they really &lt;a href="http://reviews.cnet.com/2300-3121_7-10009693.html" class="more" target="_Blank" title="Steve Jobs' most revolutionary Apple products"&gt;know what they are doing&lt;/a&gt;, &lt;a href="http://stritar.net/Post/How_Nokia_Lost_Its_Mobile_Interface_Domination_And_How_Apple_Took_It.aspx" class="more" target="_blank" title="How Nokia lost its mobile interface domination and how Apple took it"&gt;reinventing stuff as they go along&lt;/a&gt;. Bottom line: as weird as it may seem, when your are designing &lt;a href="http://stritar.net/Category/User_Experience.aspx" class="more" target="_blank" title="User experience on Stritar's chronolog"&gt;user experience&lt;/a&gt;, you should think about Apple's headphones. They are one of the &lt;b&gt;most perfect examples of how to do it right&lt;/b&gt;.&lt;/p&gt;

&lt;h2&gt;Form follows function&lt;/h2&gt;
&lt;p&gt;As most great designers will tell you, the design is only as good as its &lt;b&gt;ability to solve a problem&lt;/b&gt;. The focus is not so much on &lt;b&gt;aesthetics&lt;/b&gt;, as it is on &lt;b&gt;function&lt;/b&gt;. If you manage to persuade someone to do &lt;b&gt;what you wanted&lt;/b&gt;, design did its job well. Otherwise, it failed, even if it looks great.&lt;/p&gt;

&lt;p&gt;Apple's headphones come with a controller for the iPod and other phone functions. This controller is ergonomically &lt;b&gt;shaped in such a way&lt;/b&gt;, that you can use it with your eyes closed, or while running. Your finger will always find its &lt;b&gt;orientation&lt;/b&gt;. The volume up button is physically on the top. The &lt;b&gt;form follows function&lt;/b&gt;, being beautiful comes secondary.&lt;/p&gt;

&lt;br&gt;
&lt;img src="http://stritar.net/Upload/Images/Apple-iPhone-Headphones-Controller.jpg" alt="Apple iPhone Headphones Controller"&gt;
&lt;p class="underpicture"&gt;The controller is designed in such a way it does exactly what you expect it to do, without guessing.&lt;/p&gt;


&lt;p&gt;There are infinite ways you can implement this philosophy into software, but you have to &lt;b&gt;know what you are trying to do&lt;/b&gt;. That's the main objective of user experience in general, &lt;b&gt;understanding your goals&lt;/b&gt;, and adapting everything to &lt;b&gt;help users reach them&lt;/b&gt;.&lt;/p&gt;

&lt;h2&gt;"Less is more" generates intuitiveness&lt;/h2&gt;
&lt;p&gt;The controller comes with only three buttons, but these buttons can do more that it seems. The age when a single control could &lt;b&gt;perform only one function is over&lt;/b&gt;, and this fact can easily be applied to the new generation of software, supporting &lt;a href="http://www.html5rocks.com/en/mobile/touch/" class="more" target="_Blank" title="Multi-touch web development"&gt;advanced (native and HTML 5) interactions&lt;/a&gt; (swipes, multi-finger gestures, etc.) on devices such as &lt;a href="http://stritar.net/Post/Web-2-5-Looking-For-The-Missing-Link-Between-Web-2-0-And-Web-3-0.aspx" class="more" target="_blank" title="Web 2.5: Looking for the missing link between Web 2.0 and Web 3.0"&gt;smartphones and tablets&lt;/a&gt;. Here's what these three buttons can do:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;volume up and down are dedicated&lt;/li&gt;
&lt;li&gt;the main button can play and pause with a single press. The same goes for answering and hanging up the phone.&lt;/li&gt;
&lt;li&gt;pressing the main button twice goes to the next song, three times for the previous song&lt;/li&gt;
&lt;li&gt;holding the main button activates Siri / Voice control&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;Less is more&lt;/b&gt; is a very important approach, and it's one of the reasons why the &lt;a href="http://venturebeat.com/2012/06/15/apple-and-samsung-account-for-90-of-smartphone-industry-profits-says-abi/" class="more" target="_blank" title="Apple and Samsung account for 90% of smartphone industry profits, says ABI"&gt;iPhone did what it did&lt;/a&gt;, having a &lt;a href="http://stritar.net/Post/How_Nokia_Lost_Its_Mobile_Interface_Domination_And_How_Apple_Took_It.aspx" class="more" target="_blank" title="How Nokia lost its mobile interface domination and how Apple took it"&gt;single button instead of many&lt;/a&gt;. Users shouldn't be faced with &lt;b&gt;too many options and choices&lt;/b&gt;, it's better to design these choices in such a way they offer advanced behavior. Only then, users will find something &lt;b&gt;intuitive and easy to use&lt;/b&gt;.&lt;/p&gt;


&lt;h2&gt;Think adaptation and multi-functionality&lt;/h2&gt;
&lt;p&gt;As mentioned before, the headphones controller can &lt;b&gt;adapt its behavior to the state&lt;/b&gt; the system is currently in. When you are listening to music, it controls music, when you're on a call, it controls the call, when you are using Siri, you're the weirdo who's talking to your phone. Software can do the same; when I launched this blog, I played around with the idea of the &lt;a href="http://stritar.net/Post/Introducing_The_Dynamic_Home_Button.aspx" class="more" target="_blank" title="Introducing the dynamic Home button"&gt;home link adapting to the fact where the visitor currently is&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Software users come in &lt;b&gt;various shapes&lt;/b&gt; and find themselves in &lt;b&gt;various situations&lt;/b&gt;. First time user vs. second time user, potential client vs. client etc. Advanced systems can adapt to this fact and offer a different kind of experience to each of them, acting &lt;b&gt;multifunctional&lt;/b&gt;. You want to present yourself to the first time user, and inform the second time user. You want to close the potential client, and do everything to retain the current client. Software is not static anymore, it &lt;b&gt;adapts to different personas and scenarios&lt;/b&gt;.&lt;/p&gt;
 
&lt;h2&gt;Consistency FTW&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.fastcodesign.com/1669048/4-elements-that-make-a-good-user-experience-into-something-great" class="more" target="_blank" title="4 Elements That Make A Good User Experience Into Something Great"&gt;Great user experience&lt;/a&gt; is &lt;b&gt;consistent&lt;/b&gt; inside a product and across &lt;b&gt;multiple channels&lt;/b&gt;. Even if something is not solved perfectly, analog functions must be &lt;b&gt;solved in the same way&lt;/b&gt; all across the same and other systems, to &lt;b&gt;avoid confusion&lt;/b&gt;. Apple's headphones also work with a Mac computer. With the controller, microphone and everything. The little cherry that makes Apple's complete listening and controlling ecosystem &lt;a href="http://stritar.net/Post/The-future-of-software-is-in-platforms.aspx" class="more" target="_blank" title="The future (of software) is in platforms"&gt;a platform&lt;/a&gt;.&lt;/p&gt;

&lt;br&gt;
&lt;img src="http://stritar.net/Upload/Images/Apple-iPhone-Headphones-Mac.jpg" alt="Apple iPhone Headphones Controller"&gt;
&lt;p class="underpicture"&gt;The headphones are fully compatible with a Mac.&lt;/p&gt;

&lt;p&gt;This is  very important fact, making &lt;a href="http://www.peterme.com/2012/05/04/user-experience-is-strategy-not-design/" class="more" target="_blank" title="User experience is strategy, not design"&gt;user experience a holistic strategy&lt;/a&gt;, that goes beyond the single product / implementation. A part of mentality that CEO is not about &lt;b&gt;Executive&lt;/b&gt; anymore, &lt;a href="http://onstartups.com/tabid/3339/bid/72404/The-CEO-Should-Be-The-Chief-Experience-Officer.aspx" class="more" target="_blank" title="The CEO Should Be The Chief Experience Officer"&gt;it's about Experience&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;Great &lt;a href="http://stritar.net/Post/The-Silicon-Valley-tour-part-8-Lessons-learned-time-to-reevaluate.aspx" class="more" target="_blank" title="The Silicon Valley tour, part 8: Lessons learned, time to reevaluate"&gt;user experience is becoming a competitive advantage&lt;/a&gt;, but at the same time something that's really hard to master. Knowing what &lt;b&gt;problems and goals&lt;/b&gt; you are trying to solve is crucial, everything else must adapt. Thinking outside a single product and implementing the same philosophy &lt;b&gt;across multiple systems and channels&lt;/b&gt; is slowly shaping (user) experience design into a &lt;b&gt;strategic business function&lt;/b&gt;. &lt;/p&gt;

&lt;p&gt;&lt;b&gt;Apple's headphones&lt;/b&gt; with their controller are a great example of &lt;b&gt;how to do user experience right&lt;/b&gt;. Something so basic, but at the same time so advanced. Solving so many problems with so little, by fully understanding what you are trying to do in &lt;b&gt;different situations&lt;/b&gt;, and leaving you only with the choices you need to make in the &lt;b&gt;specific moment&lt;/b&gt;. It simply doesn't get much better than that.&lt;/p&gt;</description><link>http://stritar.net/Post/What-Apple-s-headphones-can-teach-us-about-user-experience-design.aspx</link></item><item><title>I got another scent of going viral on social media. And I'm loving every bit of it.</title><pubDate>Sun, 22 Jan 2012 19:58:42 GMT</pubDate><description>&lt;p&gt;I can't believe how much has happened since &lt;a href="http://stritar.net/Post/I_Got_The_Scent_Of_Going_Viral_On_Social_Media_-_Now_I_Am_A_Bit_Confused.aspx" class="more" target="_blank" title="I got the scent of going viral on social media. Now I'm a bit confused."&gt;I first wrote about going viral on social media&lt;/a&gt;. I also can't believe what I wrote then, talking mostly about how virality has the most to do with luck. Well, it does, but any &lt;a href="http://stritar.net/About/Skills.aspx" class="more" target="_blank" title="Grega Stritar's Skills"&gt;proper RPG character&lt;/a&gt; can fully understand luck can be influenced one way or another. As you evolve as a blogger, you learn a lot about &lt;a href="http://www.blogussion.com/content-management/better-blog-titles/" class="more" target="_blank" title="18 Resources to Help you Write Better Blog Titles"&gt;writing good headlines&lt;/a&gt;, &lt;a href="http://captico.com/when-is-the-best-time-to-tweet-blog-share-content/2011/04" class="more" target="_blank" title="When is the best time to Tweet, Blog and Share Content?"&gt;best times to publish&lt;/a&gt;, &lt;a href="http://stritar.net/Post/Adding-Share-Buttons-To-Your-Blog-Or-Website-A-Comprehensive-Guide.aspx" class="more" target="_blank" title="Adding share buttons to your blog or website - a comprehensive guide"&gt;using various platforms&lt;/a&gt; to promote content and other &lt;a href="http://delicious.com/stritar/blogging+lifehacks" class="more" target="_blank" title="Blogging Lifehacks"&gt;general best practices&lt;/a&gt;, all adding a bit to the chance of going big. Of course, you're still competing in your own league, but a few hundred posts more, and you might do something &lt;a href="http://swizec.com/blog/5-months-of-blog-traffic-in-4-days/swizec/3218" class="more" target="_blank" title="5 months of blog traffic in 4 days"&gt;extraordinary like swizec did&lt;/a&gt;. Get noticed and amplified by a heavy influencer.&lt;/p&gt;

&lt;h2&gt;The situation&lt;/h2&gt;
&lt;p&gt;Here's my situation - the full overview of traffic on this blog &lt;a href="http://stritar.net/Post/What_To_Do_With_My_Blog.aspx" class="more" target="_blank" title="What to do with my blog"&gt;since it's beginning&lt;/a&gt;, according to Google Analytics. Spikes, which happen when something goes viral, all over the place. At this point, I'm almost at 100 posts, and around 10 are worth mentioning, making it on a single or more platforms. The list almost fully corresponds with &lt;a href="http://stritar.net/Hot.aspx?d=730" class="more" target="_blank" title="Hot on the chronolog"&gt;my internal top list&lt;/a&gt;, and you can click on any of them if you would like to what they're about. Quite various, actually.&lt;/p&gt;

&lt;img border="0" src="http://stritar.net/Upload/Images/Viral-Content-Traffic-Google-Analytics.gif" alt="Viral Content Traffic Google Analytics" usemap="#Viral-Content"&gt;
&lt;map id="Viral-Content" name="Viral-Content"&gt;
&lt;area shape="rect" coords="109,94,198,132" href="http://stritar.net/Post/Arthur_C_Clarke_Envisioning_The_World_Wide_Web_In_1968.aspx" alt="Arthur C. Clarke envisioning the World Wide Web in 1968" title="Arthur C. Clarke envisioning the World Wide Web in 1968" target="_blank"    /&gt;
&lt;area shape="rect" coords="203,96,309,134" href="http://stritar.net/Post/Facebook_Vs_Twitter_-_Part_1_-_The_Battleground.aspx" alt="Facebook vs. Twitter - Part 1: The battleground" title="Facebook vs. Twitter - Part 1: The battleground"  target="_blank"     /&gt;
&lt;area shape="rect" coords="0,228,115,266" href="http://stritar.net/Post/Apple-Has-Enough-Money-To-Buy-Slovenias-Entire-Yearly-Production.aspx" alt="Apple has enough money to buy Slovenia's entire yearly production" title="Apple has enough money to buy Slovenia's entire yearly production"  target="_blank"    /&gt;
&lt;area shape="rect" coords="28,299,135,337" href="http://stritar.net/Post/I-Have-Developed-A-Magazine-Based-On-My-Delicious-Bookmarks-And-A-Twitter-Bot.aspx" alt="I've developed a magazine based on my Delicious bookmarks. And a Twitter bot." title="I've developed a magazine based on my Delicious bookmarks. And a Twitter bot." target="_blank"     /&gt;
&lt;area shape="rect" coords="135,279,242,317" href="http://stritar.net/Post/Can-You-Believe-Watson-Got-The-Question-About-Slovenia-Wrong-On-Jeopardy.aspx" alt="Can you believe Watson got the question about Slovenia wrong on Jeopardy?" title="Can you believe Watson got the question about Slovenia wrong on Jeopardy?"  target="_blank"     /&gt;
&lt;area shape="rect" coords="230,228,321,266" href="http://stritar.net/Post/Crazy-About-Beer-Visit-Brussels.aspx" alt="Crazy about beer? Visit Brussels." title="Crazy about beer? Visit Brussels."   target="_blank"   /&gt;
&lt;area shape="rect" coords="344,276,469,314" href="http://stritar.net/Post/Is-Dexter-And-Its-Social-Game-Slice-Of-Life-The-Future-Of-Television-Shows-But-No-One-Noticed.aspx" alt="Is Dexter and its social game Slice of Life the future of TV shows (but no one noticed)?" title="Is Dexter and its social game Slice of Life the future of TV shows (but no one noticed)?"  target="_blank"    /&gt;
&lt;area shape="rect" coords="348,200,517,238" href="http://stritar.net/Post/Supporting-Events-On-Twitter-How-Pop-TV-And-Soocenje-Owned-The-Slovenian-Twitterverse.aspx" alt="Supporting events on Twitter: how Pop TV and Soočenje owned the Slovenian Twitterverse" title="Supporting events on Twitter: how Pop TV and Soočenje owned the Slovenian Twitterverse"  target="_blank"    /&gt;
&lt;area shape="rect" coords="420,240,560,278" href="http://stritar.net/Post/Did-Google-Just-Admit-Apple-s-Siri-Is-The-Future-Of-Search.aspx" alt="Did Google just admit Apple's Siri is the future of search?" title="Did Google just admit Apple's Siri is the future of search?"    target="_blank"  /&gt;
&lt;/map&gt;
&lt;p class="underpicture"&gt;Traffic overview and the most visited contents on &lt;a href="http://stritar.net" target="_blank" title="Stritar's chronolog" class="more"&gt;stritar.net&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;The winners&lt;/h2&gt;
&lt;p&gt;While the above chart may show those posts that got the most traffic, only a few of them are the real winners. Interaction and impact is what counts. Feedback from the people. My first real viral post about &lt;a href="http://stritar.net/Post/Facebook_Vs_Twitter_-_Part_1_-_The_Battleground.aspx" class="more" target="_blank" title="Facebook vs. Twitter - Part 1: The battleground"&gt;Facebook vs. Twitter&lt;/a&gt; got &lt;a href="http://tweetmeme.com/story/541112680/stritars-chronolog-facebook-vs-twitter-part-1-the-battleground" class="more" target="_blank" title="Tweetmeme: Facebook vs. Twitter - Part 1: The battleground"&gt;100+ retweets&lt;/a&gt;, while newer ones managed to unlock a few other interesting achievements. The one about &lt;a href="http://stritar.net/Post/Apple-Has-Enough-Money-To-Buy-Slovenias-Entire-Yearly-Production.aspx" class="more" target="_blank" title="Apple has enough money to buy Slovenia's entire yearly production"&gt;Apple and Slovenia&lt;/a&gt; ended by people &lt;a href="http://twitter.com/#!/gstritar/statuses/4484997482287104" target="_blank" title="Cian Mac Mahon (@Cianmm) on Twitter" class="more"&gt;tweeting about how Apple will buy Slovenia&lt;/a&gt; since there was a mysterious announcement on their homepage (which turned out to be The Beatles in the iTunes store). The post about &lt;a href="http://stritar.net/Post/Crazy-About-Beer-Visit-Brussels.aspx" class="more" target="_blank" title="Crazy about beer? Visit Brussels."&gt;Beer in Brussels&lt;/a&gt; produced more than &lt;a href="http://www.reddit.com/r/beer/comments/jfpjp/crazy_about_beer_visit_brussels/" class="more" target="_blank" title="Crazy about beer? Visit Brussels. : beer"&gt;80 funny comments on reddit&lt;/a&gt;. Discussing 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;Pop TV and  events on Twitter&lt;/a&gt; established an arrangement between the &lt;a href="https://twitter.com/#!/nzs_si/status/138585814446768128" target="_blank" title="Nogometna zveza Slo (@nzs_si) on Twitter" class="more"&gt;Slovenian soccer association&lt;/a&gt;, the established sports journalist &lt;a href="http://twitter.com/#!/IEBergant/status/138669234384404480" target="_blank" title="Igor Evgen Bergant (@IEBergant) on Twitter" class="more"&gt;Igor E. Bergant&lt;/a&gt; and the leading Slovenian soccer portal &lt;a href="http://twitter.com/#!/Nogomania/status/138621781887029248" target="_blank" title="Nogomania.com (@Nogomania) on Twitter" class="more"&gt;Nogomania&lt;/a&gt; to &lt;a href="http://twitter.com/#!/gstritar/status/138623717747073024" target="_blank" title="Grega Stritar (@gstritar) on Twitter" class="more"&gt;cover the next national soccer match on Twitter together&lt;/a&gt; (we'll see on February 29th). Fantastic turns of events.&lt;/p&gt;

&lt;h2&gt;The platforms&lt;/h2&gt;
&lt;p&gt;There is &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;no viral without the platform&lt;/a&gt;. While &lt;a href="http://facebook.com/stritar" class="more" target="_blank"&gt;Facebook&lt;/a&gt; may have been the biggest referrer of traffic in this blog's history, it's a stable referrer, which can hardly make something viral. &lt;a href="http://twitter.com/gstritar" class="more" target="_blank"&gt;Twitter&lt;/a&gt; is better, since the whole concept behind retweeting can amplify you outside your social circle, even though it's much harder to master. But the platforms really worth mentioning are the community based curation / recommendation engines: &lt;a href="http://reddit.com/user/stritar" class="more" target="_blank"&gt;Reddit&lt;/a&gt;, &lt;a href="http://stumbleupon.com/stumbler/gstritar" class="more" target="_blank"&gt;StumbleUpon&lt;/a&gt; and &lt;a href="http://news.ycombinator.com/user?id=stritar" class="more" target="_blank"&gt;Hacker News&lt;/a&gt;.  They are much more complex to use, since you have to be a part of the community one way or another, but that's how it works - there is no taking without giving.&lt;/p&gt;
&lt;br&gt;
&lt;img src="http://stritar.net/Upload/Images/Viral-Content-Referrers-Google-Analytics.gif" alt="Viral Content Referrers Google Analytics"&gt;
&lt;p class="underpicture"&gt;Top referrers for &lt;a href="http://stritar.net" target="_blank" title="Stritar's chronolog" class="more"&gt;stritar.net&lt;/a&gt;. Twitter referrals are included in Twitter and t.co.&lt;/p&gt;

&lt;p&gt;The downside: publishing to all these channels and the aftercare (commenting, animating) can &lt;a href="http://stritar.net/Post/Impressions-From-My-First-Guest-Blogging-Experience.aspx" class="more" target="_blank" title="Impressions from my first guest blogging experience"&gt;take quite some time&lt;/a&gt;, but you're nothing without it.&lt;/p&gt;

&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;If you have good content, going viral can be managed and influenced, and it happens when the parameters align. Since you have to have as many chances for that to happen, you need to blog as much as you can. That's the real recipe, if there is any. For permanent readers, for real supporters that can help you tip the scale, for additional lottery tickets.&lt;/p&gt;

&lt;p&gt;But why go through all this trouble? Well, imagine getting 100 likes and comments on a Facebook post. Or 20 retweets of a really witty tweet you're so proud of. Multiply that by 10, and you'll get the picture of how it feels when you go viral. That's why you blog in the first place, you only don't know it.&lt;/p&gt;</description><link>http://stritar.net/Post/I-Got-Another-Scent-Of-Going-Viral-On-Social-Media-And-I-Am-Loving-Every-Bit-Of-It.aspx</link></item><item><title>Supporting events on Twitter: how Pop TV and Soočenje owned the Slovenian Twitterverse</title><pubDate>Sun, 20 Nov 2011 10:13:58 GMT</pubDate><description>&lt;p&gt;Supporting events on &lt;a href="http://twitter.com/gstritar" class="more" target="_blank" title="Grega Stritar (gstritar) on Twitter"&gt;Twitter&lt;/a&gt; is becoming very popular, and it's a perfect case study of what Twitter can do. After all, this channel allows &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;an additional layer&lt;/a&gt; for following things that are going on in real-life, in &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;. Coverage sometimes happens accidentally, if there are enough Twitterers around, but more and more often, it happens as a result of a carefully planned tactic of those behind the event. Only then it can fully work, enabling organizers, participants and observers a totally new type of involvement. Crowdsourcing event support can produce a better overview of what's happening than any well-trained team of journalists can provide, offering an experience that is broad, objective and subjective, interactive. And like using Twitter itself, &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;some know how to do it&lt;/a&gt;, and some don't.&lt;/p&gt;

&lt;h2&gt;My experience&lt;/h2&gt;

&lt;p&gt;When I tried it out it myself, it was fun and rewarding, In May, &lt;a href="http://www.facebook.com/Trkaj" class="more" target="_blank" title="Trkaj on Facebook"&gt;Trkaj&lt;/a&gt;, &lt;a href="http://www.facebook.com/pages/Jacuzzy/76577097677" class="more" target="_blank" title="Jacuzzy on Facebook"&gt;Jacuzzy&lt;/a&gt; and our neighborhood &lt;a href="http://savska.org" class="more" target="_blank" title="Savsko naselje, Ljubljana, Slovenija"&gt;Savska&lt;/a&gt; held a festival &lt;a href="http://savska.org/Blok-Party-2011.aspx" class="more" target="_blank" title="Blok Party 2011"&gt;Blok Party&lt;/a&gt;, which attracted a lot of people. &lt;a href="http://neolab.si" class="more" target="_blank" title="Neolab, Software Development"&gt;We&lt;/a&gt; were there, live-tweeting about it. We've also asked other Twitterers (thanks &lt;a href="http://twitter.com/loudandwicked" class="more" target="_blank" title="Vini (loudandwicked) on Twitter"&gt;@loudandwicked&lt;/a&gt;!), who attended the festival, to use and amplify the same hashtag #savska, and in the end, more than 10 people tweeted about the event, producing over 50 tweets, most of them with pictures. Which isn't that bad on the Slovenian scale. My friend &lt;a href="http://twitter.com/jakasibicekaka" class="more" target="_blank" title="Jaka Potrpin (jakasibicekaka) on Twitter"&gt;@jakasibicekaka&lt;/a&gt; did something similar, asking Trbovlje town councillors to tweet about a meeting with the #sejaOStrb hashtag, which attracted other people to participate as well (&lt;a href="http://jpotrpin-interneti.posterous.com/kako-smo-obcinsko-sejo-skupaj-preslikali-na-t" class="more" target="_blank" title="Kako smo občinsko sejo SKUPAJ preslikali na Twitter"&gt;here's his blog post about it, in Slovene&lt;/a&gt;). Great results enabled by collaboration of many users.&lt;/p&gt;

&lt;p&gt;It can work on a small scale. What about the major league, it should be even better? Let's analyze two nation-wide events that happened this week in &lt;a href="http://stritar.net/Category/Slovenia.aspx" class="more" target="_blank" title="Slovenia on stritar.net"&gt;Slovenia&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;How to do it wrong&lt;/h2&gt;
&lt;p&gt;The first case mentioned was the Slovenia vs. USA friendly soccer match. At the stadium, the National soccer association (&lt;a href="http://twitter.com/nzs_si" class="more" target="_blank" title="Nogometna zveza Slo (nzs_si) on twitter"&gt;@nzs_si&lt;/a&gt;) promoted their Twitter account which does live coverage of matches. Which they did. But that doesn't mean they did the whole Twitter thing right. They forgot about the extremely witty journalist &lt;a href="http://twitter.com/IEBergant" class="more" target="_blank" title="Igor Evgen Bergant (IEBergant)"&gt;@IEBergant&lt;/a&gt; also tweeting about the match. They forgot about &lt;a href="http://twitter.com/gstritar" class="more" target="_blank" title="Grega Stritar (gstritar) on Twitter"&gt;me&lt;/a&gt;, and they forgot about you and 8 other thousand people watching the game live, probably quite a few geeks included. While NZS used the hashtag #fuzbal (slang for soccer), some used the hashtag #nogomet (soccer), #slovenia, #slovenija, and the mentioned Igor Evgen Bergant used #soccerSI-US. The results: a scattered pool of tweets which didn't really offer users the complete picture. The event went mostly unnoticed on Twitter.&lt;/p&gt;
&lt;br&gt;
&lt;img src="http://stritar.net/Upload/Images/Soocenje/NZS-Twitter.jpg" alt="NZS promoting Twitter"&gt;
&lt;p class="underpicture"&gt;The Slovenian soccer association promoting their Twitter account on the match&lt;/p&gt;



&lt;h2&gt;How to do it right&lt;/h2&gt;
&lt;p&gt;On the other hand, Pop TV (&lt;a href="http://twitter.com/24ur" class="more" target="_blank" title="Oddaja 24UR POP TV (24ur) on Twitter"&gt;@24ur&lt;/a&gt;), the biggest commercial television network in Slovenia, did it more than right. Their show "Predvolilna soočenja", which does political confrontations before the upcoming elections, won big time. And while using Twitter to support television has been done for ages abroad, this actually happened for the first time in Slovenia (at least so I think). And they did at least three smart things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;they've promoted the hashtag &lt;a href="http://twitter.com/#!/search/%23soocenje
" class="more" target="_blank" title="#soocenje on Twitter"&gt;#soocenje&lt;/a&gt;, not minding about their Twitter profile&lt;/li&gt;
&lt;li&gt;they've invited five influential Twitterers (&lt;a href="http://twitter.com/alivea" class="more" target="_blank" title="Živa (alivea) on Twitter"&gt;@alivea&lt;/a&gt;, &lt;a href="http://twitter.com/had" class="more" target="_blank" title="Roni Kordis (had) on Twitter"&gt;@had&lt;/a&gt;, &lt;a href="http://twitter.com/Lacn" class="more" target="_blank" title="Žiga Stojanović (Lacn) on Twitter"&gt;@Lacn&lt;/a&gt;, &lt;a href="http://twitter.com/madpixel" class="more" target="_blank" title="madpixel (madpixel) on Twitter"&gt;@madpixel&lt;/a&gt;, &lt;a href="http://twitter.com/tamejhna" class="more" target="_blank" title="tamejhna (tamejhna) on Twitter"&gt;@tamejhna&lt;/a&gt;) to the studio audience to generate the initial buzz on Twitter, besides live-tweeting from the studio. &lt;a href="http://www.facebook.com/photo.php?fbid=10150459331781438&amp;set=a.146701426437.147542.136285731437&amp;type=3&amp;theater" class="more" target="_blank" title="Wall photos by 24ur"&gt;Here they are&lt;/a&gt;, appearing with &lt;a href="http://twitter.com/miharejc" class="more" target="_blank" title="Miha (miharejc) on Twitter"&gt;@miharejc&lt;/a&gt;, who tweets for &lt;a href="http://twitter.com/24ur" class="more" target="_blank" title="Oddaja 24UR POP TV (24ur) on Twitter"&gt;@24ur&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;they've broadcasted a selection of tweets with this hashtag live on television, and encouraged people to participate and ask questions on Twitter&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;The results were amazing. Hundreds, if not thousands of tweets all over place. Local trending topic. They owned the Slovenian Twitterverse like no one else before them. It worked like a charm. You can check out the partial report (which only displays 100 of #soocenje tweets, happening in 5 minutes!) &lt;a href="http://www.tweetdoc.org/View/29258/24ur-soo%C4%8Denje" class="more" target="_blank" title="#soocenje 24ur on tweeetdoc.org"&gt;on the following link&lt;/a&gt; or use the &lt;a href="http://twitter.com/#!/search/%23soocenje
" class="more" target="_blank" title="#soocenje on Twitter"&gt;#soocenje Twitter search&lt;/a&gt;, if tweets are still available. Epic stuff, moving the Slovenian media sphere a few years forward.&lt;/p&gt;

&lt;br&gt;
&lt;img src="http://stritar.net/Upload/Images/Soocenje/Twitter-Pop-Tv.jpg" alt="Twitter on Pop TV's show Predvolilna soočenja"&gt;
&lt;p class="underpicture"&gt;Pop TV displaying and promoting #soocenje tweets live on television&lt;/p&gt;&lt;br&gt;
&lt;img src="http://stritar.net/Upload/Images/Soocenje/Twitter-Sitweet.jpg" alt="Local Slovenian trending topics on Sitweet"&gt;
&lt;p class="underpicture"&gt;#soocenje (besides various politicians and the show host) became a local trending topic in Slovenia according to &lt;a href="http://sitweet.com/" class="more" target="_blank" title="SiTweet"&gt;sitweet.com&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I'm only a &lt;a href="http://stritar.net/About/Skills.aspx" class="more" target="_blank" title="Skills of Grega Stritar"&gt;level &lt;strike&gt;26&lt;/strike&gt; 27 social media ninja&lt;/a&gt;, but I know a few things. If you're organizing an event,  the most important thing is: promote Twitter hashtags, not profiles. Even if they are nothing more than just clickable search queries, they simply work. Search Twitter in real-time and look for people who are talking about the event. Ask them and other people attending to amplify and use the same hashtag. Thank them if they do. Most of them will join you, since it'll make it more interesting for them too. Offer something more if you can (like displaying tweets on a website). Use multiple accounts (official, personal) with different wibes. Upload pictures. Retweet. Interact. Have fun.&lt;/p&gt;

&lt;p&gt;Twitter, a funny service proving that a collective effort of many people will always provide a way more interesting picture than a single person can. More objective, more diversified, more everything. Perhaps even better than the original event itself. Real players are fully aware of that. Don't worry, even if you don't have the same power, publicity and followers, you can compensate with additional energy, time and mobile bandwidth. The results can be surprising. And if it does work, I promise you'll enjoy every little bit of it.&lt;/p&gt;

&lt;p&gt;UPDATE (22.11.2011): I got contacted by &lt;a href="http://twitter.com/24ur" class="more" target="_blank" title="Oddaja 24UR POP TV (24ur) on Twitter"&gt;@24ur&lt;/a&gt;, who told me this was already their second Soočenje show (I missed the first one - the irony - playing soccer), and the first one generated over 1800 #soocenje tweets. I also got feedback from &lt;a href="http://twitter.com/nzs_si" class="more" target="_blank" title="Nogometna zveza Slo (nzs_si) on twitter"&gt;@nzs_si&lt;/a&gt; and &lt;a href="http://twitter.com/IEBergant" class="more" target="_blank" title="Igor Evgen Bergant (IEBergant)"&gt;@IEBergant&lt;/a&gt;, they've agreed we should make a joint effort the next time Slovenia plays soccer, also involving the biggest Slovenian soccer portal &lt;a href="http://nogomania.com" class="more" target="_blank" title="Nogomania, največji slovenski nogometni portal"&gt;Nogomania&lt;/a&gt;. Awesome stuff.&lt;/p&gt;

&lt;p&gt;UPDATE (25.11.2011): Pop TV is on fire. Today, they've added another medium &lt;a href="http://24ur.com/novice/volitve/janez-zakaj-je-nisi-poslusal.html" class="more" target="_blank" title="Twitteraši niso prizanašali nikomur"&gt;to support Soočenje on Twitter&lt;/a&gt;, their news portal &lt;a href="http://24ur.com/" class="more" target="_blank" title="24ur.com - Najbolj obiskana spletna stran v Sloveniji"&gt;24ur.com&lt;/a&gt;, which is the &lt;a href="http://moss-soz.si/si/rezultati_moss/obdobje/default.html" class="more" target="_blank" title="MOSS - Measuring Slovenian web traffic"&gt;most visited site in Slovenia&lt;/a&gt;.&lt;/p&gt;</description><link>http://stritar.net/Post/Supporting-Events-On-Twitter-How-Pop-TV-And-Soocenje-Owned-The-Slovenian-Twitterverse.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>Project 5000: Assembling a 5.000 piece jigsaw puzzle of an ancient map</title><pubDate>Sun, 16 Oct 2011 17:24:17 GMT</pubDate><description>&lt;p&gt;Sometimes you need something to set your mind at ease. That's why &lt;a href="http://twitter.com/TejaSmeja" target="_blank" class="more" title="TejaSmeja on Twitter"&gt;@TejaSmeja&lt;/a&gt; in &lt;a href="http://twitter.com/gstritar" class="more" target="_blank" title="gstritar on Twitter"&gt;I&lt;/a&gt; decided to build a 5.000 piece jigsaw puzzle, an &lt;a href="http://en.wikipedia.org/wiki/Early_world_maps#.22Nova_totius_Terrarum_Orbis.22_by_Hendrik_Hondius_.281630.29" class="more" target="_blank" title="'Nova totius Terrarum Orbis' by Hendrik Hondius (1630)"&gt;ancient map of the world from 1630&lt;/a&gt; by &lt;a href="http://www.ravensburger.com/" class="more" target="_blank" title="'Ravensburger jigsaw puzzles"&gt;Ravensburger&lt;/a&gt;. It took us about two months or an estimated 500 hours of effective work, but it was fun and definitely worth the time. Looking at thousand of similar pieces for hours is a great way to relax after stressful work, the progress is very challenging and the results mentally very rewarding. &lt;/p&gt;

&lt;p&gt;We've been evolving the technique as we went along, approaching the jigsaw puzzle in the following order:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the puzzle edges&lt;/li&gt;
&lt;li&gt;the equator and world edges&lt;/li&gt;
&lt;li&gt;the poles and the tropic&lt;/li&gt;
&lt;li&gt;at this point, we've split apart. Mateja started working on the pictures around the world, I started working on the map.&lt;/li&gt;
&lt;li&gt;we almost managed to put all the pieces out of the box. About one room of space.&lt;/li&gt;
&lt;li&gt;I worked on the world from the inside out (since meridians and parallels are the most vertical and horizontal in the center)&lt;/li&gt;
&lt;li&gt;Mateja worked on the pictures surrounding the world one by one, since each had specific colors&lt;/li&gt;
&lt;li&gt;we've been adding significant elements as we went along (coastlines, signs, faces, etc.)&lt;/li&gt;
&lt;li&gt;we used regular A4 sheets of paper for categorization and transporting&lt;/li&gt;
&lt;li&gt;the sea came last since the pieces were very similar to each other. But It became easier with every step, since there were fewer left.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here are a few pictures representing our assembly of  &lt;a href="http://en.wikipedia.org/wiki/File:Nova_totius_Terrarum_Orbis_geographica_ac_hydrographica_tabula_(Hendrik_Hondius)_balanced.jpg" class="more" target="_blank" title="'Nova totius Terrarum Orbis' by Hendrik Hondius (1630)"&gt;Nova totius Terrarum Orbis geographica ac hydrographica tabula&lt;/a&gt;. It was fun, so if you're searching for a new hobby for the next few months, jigsaw puzzles could be something worth looking at. We will probably do another one one day, when we find a big one we like.&lt;/p&gt;&lt;br/&gt;


&lt;img src="http://stritar.net/Upload/Images/Puzzle/Jigsaw-Puzzle-01-Init.jpg" alt="Jigsaw Puzzle Start"&gt;
&lt;p class="underpicture"&gt;Opening the box and noticing there are too many pieces to fit in the room&lt;/p&gt;&lt;br&gt;

&lt;img src="http://stritar.net/Upload/Images/Puzzle/Jigsaw-Puzzle-02-Edges.jpg" alt="Jigsaw Puzzle Edges"&gt;
&lt;p class="underpicture"&gt;Assembling the edges&lt;/p&gt;&lt;br&gt;

&lt;img src="http://stritar.net/Upload/Images/Puzzle/Jigsaw-Puzzle-03-Equator.jpg" alt="Jigsaw Puzzle Equator and World Edges"&gt;
&lt;p class="underpicture"&gt;Working on the equator and the edges of the world&lt;/p&gt;&lt;br&gt;

&lt;img src="http://stritar.net/Upload/Images/Puzzle/Jigsaw-Puzzle-04-Orientation.jpg" alt="Jigsaw Puzzle Connecting Equator and World Edges"&gt;
&lt;p class="underpicture"&gt;Connecting the equator and the edges of the world to puzzle edges&lt;/p&gt;&lt;br&gt;

&lt;img src="http://stritar.net/Upload/Images/Puzzle/Jigsaw-Puzzle-05-Poles-And-Tropic.jpg" alt="Jigsaw Puzzle Poles and Tropic"&gt;
&lt;p class="underpicture"&gt;Doing the poles and the tropic&lt;/p&gt;&lt;br&gt;

&lt;img src="http://stritar.net/Upload/Images/Puzzle/Jigsaw-Puzzle-06-Inside-Out.jpg" alt="Jigsaw Puzzle Pictures and World"&gt;
&lt;p class="underpicture"&gt;Assembling the outer pictures and the world from the inside out&lt;/p&gt;&lt;br&gt;

&lt;img src="http://stritar.net/Upload/Images/Puzzle/Jigsaw-Puzzle-07-Build.jpg" alt="Jigsaw Puzzle Build"&gt;
&lt;p class="underpicture"&gt;The bottom pictures are done, the world is coming together&lt;/p&gt;&lt;br&gt;


&lt;img src="http://stritar.net/Upload/Images/Puzzle/Jigsaw-Puzzle-08-Almost-Complete.jpg" alt="Jigsaw Puzzle Almost Complete"&gt;
&lt;p class="underpicture"&gt;The jigsaw puzzle is almost complete, all that's missing is the sea&lt;/p&gt;&lt;br&gt;


&lt;img src="http://stritar.net/Upload/Images/Puzzle/Jigsaw-Puzzle-09-Complete.jpg" alt="Jigsaw Puzzle Complete"&gt;
&lt;p class="underpicture"&gt;The final masterpiece&lt;/p&gt;&lt;br&gt;




&lt;img src="http://stritar.net/Upload/Images/Puzzle/Jigsaw-Puzzle-10-Grega.jpg" alt="Jigsaw Puzzle Bonus Grega"&gt;
&lt;p class="underpicture"&gt;Bonus: finding a piece with your name on it&lt;/p&gt;
</description><link>http://stritar.net/Post/Project-5000-Assembling-A-5000-Piece-Jigsaw-Puzzle-Of-An-Ancient-Map.aspx</link></item><item><title>Solid-state drives (SSD) are the biggest win in hardware ever</title><pubDate>Wed, 21 Sep 2011 08:01:42 GMT</pubDate><description>&lt;p&gt;Guess what? My new computer has a &lt;a href="http://en.wikipedia.org/wiki/Solid_state_drive" class="more" target="_blank" title="Solid-state drive"&gt;Solid-state drive&lt;/a&gt;. In case you don't know what I'm talking about, that's the new super fancy high-tech computer storage unit. And I must say it's so amazing it's almost silly. &lt;a href="http://www.youtube.com/watch?v=OzT_Q4QqByg" class="more" target="_blank" title="MacBook Air booting with Intel i5 processor, 4 GB DDR3, 128 GB SSD"&gt;Extra fast boot times&lt;/a&gt;, complex applications &lt;a href="http://www.youtube.com/watch?v=atvlWP5qxCY" class="more" target="_blank" title="Photoshop CS5 Load Time on MacBook Air 2010 128Gb SSD"&gt;opening up in seconds&lt;/a&gt;, &lt;a href="http://news.cnet.com/8301-13924_3-10078111-64.html" class="more" target="_blank" title="Intel: solid-state drives boost battery life"&gt;less power consumption&lt;/a&gt; and no humming from the hard disk. What else could you wish for in your new sexy computer? I love it, and I love it so much I had to tell the world.&lt;/p&gt;

&lt;p&gt;In my laptop career, I went from from &lt;a href="http://en.wikipedia.org/wiki/Centrino" class="more" target="_blank" title="Centrino"&gt;Centrino&lt;/a&gt; to &lt;a href="http://en.wikipedia.org/wiki/Core_2_Duo" class="more" target="_blank" title="Core 2 Duo"&gt;Core 2 Duo&lt;/a&gt; to &lt;a href="http://en.wikipedia.org/wiki/Intel_Core_i5" class="more" target="_blank" title="Core i5"&gt;i5&lt;/a&gt;. Never noticed much difference in performance. Well, with the last one, I also got the mentioned SSD and it blew my mind. And I was wondering, besides the famous &lt;a href="http://www.youtube.com/watch?v=26enkCzkJHQ" class="more" target="_Blank" title="Samsung SSD Awesomeness"&gt;Samsung SSD in RAID&lt;/a&gt; movie, I haven't heard much about it, nor seen impressed geeks writing poems about its awesomeness. Sure, people are &lt;a href="http://www.computerworld.com/s/article/9134468/Review_Hard_disk_vs._solid_state_drive_is_an_SSD_worth_the_money_" class="more" target="_blank" title="Review: Hard disk vs. solid-state drive -- is an SSD worth the money?"&gt;testing how faster it is&lt;/a&gt; and arguing about the fact if it consumes &lt;a href="http://gizmodo.com/5021166/swindled-solid-state-drives-dont-extend-battery-life-they-shorten-it" class="more" target="_blank" title="Swindled: Solid State Drives Don’t Extend Battery Life, They Shorten It"&gt;less battery or more&lt;/a&gt;. But who cares, what you really want to know is if it makes a significant difference or not.&lt;/p&gt;

&lt;p&gt;So trust me on this one: nothing will make more difference in personal computer performance than a Solid-state drive. By miles. Lightyears even. And while I know they are &lt;a href="http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&amp;field-keywords=ssd&amp;x=0&amp;y=0" class="more" target="_blank" title="Amazon.com: ssd"&gt;expensive as gold&lt;/a&gt;, I still think you should consider getting one with your new computer. They are worth every penny. If you're not a hardcore gamer, make movies or process calculations with thousand of parameters, you really don't need an extremely capable processor and a state-of-the-art graphic card. Memory, you need that, but it's cheap. What you need the most is a Solid-state drive. Casual user or one of the mentioned.&lt;/p&gt;

&lt;p&gt;There's always a downside. After some time, Solid-state drives supposedly &lt;a href="http://techcrunch.com/2009/05/09/warning-your-ssd-will-slow-down-like-a-35-inch-floppy/" class="more" target="_blank" title="Warning: Your SSD will slow down like a 3.5-inch floppy"&gt;start to behave a bit slower&lt;/a&gt; and are still not as &lt;a href="http://www.theregister.co.uk/2010/12/10/flash_fails_more_than_hdd/" class="more" target="_blank" title="Flash is not that reliable"&gt;reliable as hard disks&lt;/a&gt;. Luckily, most of these problems have been taken care of with the &lt;a href="http://www.ibtimes.com/articles/128054/20110329/intel-ssd-ssd-320-solid-state-drive-hard-disc-drive.htm" class="more" target="_blank" title="Intel's Latest SSD Faster, More Secure Than Previous Generations"&gt;current generations&lt;/a&gt;, so we'll see what happens. At this point, all I can say is that I'm very very impressed and think that SSDs deserve much more than just this post. They're pure win. And another item for your wish list.&lt;/p&gt;</description><link>http://stritar.net/Post/Solid-State-Drives-SSD-Are-The-Biggest-Win-In-Hardware-Ever.aspx</link></item><item><title>Optimizing computer input performance: learning to use the trackpad with both hands</title><pubDate>Mon, 12 Sep 2011 17:20:05 GMT</pubDate><description>&lt;p&gt;I'm left-handed. Which is not that optimal for general use of computers, since they are designed for right-handed people. You use the external mouse with your stronger right hand, which means your weaker left hand stays on the left side of the keyboard, where most of the function keys are. I managed to adopt that. But now a much greater challenge awaits: learning to do the same with the trackpad.&lt;/p&gt;
&lt;p&gt;When I bought my first Mac, I also went for the Mighty mouse, which &lt;a href="http://www.macworld.com/article/145310/2010/01/appleduds.html" class="more" target="_blank" title="Insanely bad: Ten Apple duds of the decade"&gt;more or less sucked&lt;/a&gt;. After some time I abandoned it and started using the trackpad, which is really cool since it also supports multi-touch gestures. The new Macs and their trackpads are a lot bigger, and their &lt;a href="http://www.apple.com/macbookair/features.html#multitouch" class="more" target="_blank" title="Apple - MacBook Air Multi-Touch Trackpad"&gt;multi-touch even more capable&lt;/a&gt;, so I'm not even thinking about getting an external mouse. Besides, I think having your hands near the keyboard by using a trackpad makes your inputting (navigating and typing) a bit faster and more optimal, since you don't have to move that much. And of course, it's better if you use the trackpad with your right hand because of the keybeard function keys.&lt;/p&gt;

&lt;p&gt;When Apple introduced the first iPhone, &lt;a href="http://www.engadget.com/2007/01/18/steve-ballmer-laughs-off-the-iphone-deems-it-most-expensive-i/" class="more" target="_blank" title="teve Ballmer laughs off the iPhone, deems it 'most expensive' in the marketplace"&gt;people were laughing&lt;/a&gt; at its underperforming capabilities. But the iPhone had something significant that made it the success as it is today. The outstanding &lt;a href="http://electronics.howstuffworks.com/iphone1.htm" class="more" target="_blank" title="How the iPhone Works"&gt;capacitative display&lt;/a&gt; and &lt;a href="http://stritar.net/Post/How_Nokia_Lost_Its_Mobile_Interface_Domination_And_How_Apple_Took_It.aspx" class="more" target="_blank" title="How Nokia lost its mobile interface domination and how Apple took it"&gt;amazing user experience&lt;/a&gt;, which set &lt;a href="http://www.cultofmac.com/how-iphone-changed-the-world/103229" class="more" target="_blank" title="How iPhone Changed the World"&gt;new standards for mobile industry&lt;/a&gt;. I'm not sure if the same capacitative technology is used in Mac trackpads, but the fact is they simply work. &lt;/p&gt;

&lt;p&gt;Looking at modern &lt;a href="http://stritar.net/Post/Web-2-5-Looking-For-The-Missing-Link-Between-Web-2-0-And-Web-3-0.aspx" class="more" target="_blank" title="Web 2.5: Looking for the missing link between Web 2.0 and Web 3.0"&gt;tablets and smartphones&lt;/a&gt;, it's pretty obvious that the future lies in devices with touch capabilities. Why should computers be any different? Besides, we will probably be using both hands sometime soon. So this mission of mine may have multiple benefits. Be better today (ok, tomorrow, since adoption will take some time), and be prepared for the super high-tech virtual touch future by having two touch-adopted hands. And when I actually manage to make it work, I already have an idea for the next, even more optimal inputting method: Using the trackpad with my right thumb, so both my hands can stay on the keyboard. Wish me luck.&lt;/p&gt;</description><link>http://stritar.net/Post/Optimizing-Computer-Input-Performance-Learning-To-Use-The-Trackpad-With-Both-Hands.aspx</link></item><item><title>The art of internal hyperlinking</title><pubDate>Sun, 04 Sep 2011 21:00:02 GMT</pubDate><description>&lt;p&gt;
Everybody wants traffic on their blog or website. Direct traffic. Referring traffic. Search traffic. All good in their own way. Direct traffic means having a strong brand. Referring traffic means having a strong network. Search traffic means having a strong team. The first two are hard to influence, but search - that's the one you can influence the most. And even if search technology has changed a lot in the past few years, with &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;mathematical algorithms slowly getting replaced by social ones&lt;/a&gt;, old school search engine optimization can still make a difference.&lt;/p&gt;

&lt;p&gt;Let's say you already have good content. And you have it technically optimized and search engine friendly. &lt;a href="http://stritar.net/Post/Adding-Share-Buttons-To-Your-Blog-Or-Website-A-Comprehensive-Guide.aspx" class="more" target="_blank" title="Adding share buttons to your blog or website - a comprehensive guide"&gt;Like, Tweet and +1 buttons&lt;/a&gt; implemented where applicable, since they are more and more &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;important for search result rankings&lt;/a&gt;. All good, but you might have missed something. Since it's very hard to persuade other people to link to your site giving you a higher &lt;a href="http://en.wikipedia.org/wiki/Page_rank" class="more" target="_blank" title="Page Rank"&gt;PageRank&lt;/a&gt;, you just have to do it yourself. I'm talking about &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;internal hyperlinking&lt;/a&gt;, where you cross-reference the content you already have.  &lt;a href="http://googlewebmastercentral.blogspot.com/2008/10/importance-of-link-architecture.html" class="more" target="_blank" title="Importance of link architecture"&gt;Google loves it so much&lt;/a&gt; that &lt;a href="http://googleblog.blogspot.com/" class="more" target="_blank" title="Official Google Blog"&gt;their official blog&lt;/a&gt;, besides influential blogs such as &lt;a href="http://mashable.com" class="more" target="_blank" title="Social Media News and Web Tips – Mashable – The Social Media Guide"&gt;Mashable&lt;/a&gt; and &lt;a href="http://readwriteweb.com" class="more" target="_blank" title="ReadWriteWeb - Web Apps, Web Technology Trends, Social Networking and Social Media"&gt;ReadWriteWeb&lt;/a&gt;, have main headings referencing itself.&lt;/p&gt;

&lt;p&gt;I approached this issue from two different angles. Sometime in October 2010 I took the time to systematically cross reference all my blog posts. It took me a lot of time, but I think it was worth it. Besides, I developed a &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;"similar content" module&lt;/a&gt;, which additionally does it for me. The results on the diagram below, which display search-based traffic on my blog, are not real proof of that fact, since the experiment was not fully scientific;  there are many other SEO factors, additional content and optimizations that were put into the equation. But still, most energy was put into content cross referencing and the trend looks pretty good.&lt;/p&gt;
&lt;br&gt;
&lt;img src="http://stritar.net/Upload/Images/Hyperlinks/Search-Referrer-Trend.gif" alt="Search referrer trend"&gt;
&lt;p class="underpicture"&gt;Traffic to &lt;a href="http://stritar.net" class="more" target="_blank" title="Stritar's chronolog"&gt;http://stritar.net&lt;/a&gt; via search engines&lt;/p&gt;

&lt;p&gt;Since internal hyperlinking is an ongoing process, you have to have a good overview about the content you own, something that provides you with the complete picture. I used a plain Excel file, grouping my posts into general categories and started drawing arrows representing hyperlinks. At this point, it's already become a bit of a mess, so I'm thinking about moving to a stronger diagram-oriented software, but I think you get the picture. &lt;/p&gt;&lt;br&gt;
&lt;img src="http://stritar.net/Upload/Images/Hyperlinks/Internal-Hyperlinks-Cross-Reference.gif" alt="Internal hyperlinks cross reference"&gt;
&lt;p class="underpicture"&gt;&lt;a href="http://stritar.net" class="more" target="_blank" title="Stritar's chronolog"&gt;http://stritar.net&lt;/a&gt; internal hyperlink structure&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.mediavisioninteractive.com/blog/index.php/link-development/seo-tips-internal-linking-101" class="more" target="_blank" title="SEO Tips: Internal Linking 101!"&gt;Internal hyperlinking can help&lt;/a&gt;, and it's something you can do even if you don't have a lot of technical skills. Just a lot of time, but we're in a recession anyways. Now go for it and let me know about the results.&lt;/p&gt;</description><link>http://stritar.net/Post/The-Art-Of-Internal-Hyperlinking.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>Adding share buttons to your blog or website - a comprehensive guide</title><pubDate>Mon, 06 Jun 2011 12:05:14 GMT</pubDate><description>&lt;p&gt;A lot has happened in the field of share buttons in the past year: &lt;a href="http://mashable.com/2011/06/01/google-plus-one-button-2/" class="more" target="_blank" title="Google's +1 Button Challenges Facebook’s Like Across the Web"&gt;Google +1 button for web pages&lt;/a&gt; was introduced, Facebook started to &lt;a href="http://mashable.com/2011/02/27/facebook-like-button-takes-over-share-button-functionality/" class="more" target="_blank" title="Facebook Like Button Takes Over Share Button Functionality"&gt;migrate the Share and Like buttons&lt;/a&gt;, TweetMeme button is slowly getting replaced by the &lt;a href="http://blog.twitter.com/2010/08/pushing-our-tweet-button.html" class="more" target="_blank" title="Pushing Our (Tweet) Button"&gt;offical Tweet button&lt;/a&gt;, etc. Enough to make maintenance of these buttons a pain in the ass. But since social activity is getting &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;more and more important for SEO&lt;/a&gt;, this needs to be done, one way or another. To make it easier, I've put together a comprehensive list of different share widgets, together with some explanation, sample code and direct links to full documentation.&lt;/p&gt;


&lt;h2&gt;Keep it simple: Use basic links&lt;/h2&gt;
&lt;p&gt;Most social services support direct linking to share forms, which can be populated using a proper request. This means the URL of the target content (and sometimes title) must be passed in the query string (e.g. "?url=http://stritar.net"). In case you require a simple solution that doesn't require a lot of space, or you would like to style your share buttons on your own, this could be what you're looking for.&lt;/p&gt;
&lt;p&gt;
Facebook: &lt;a href="http://facebook.com/sharer.php?u=http://stritar.net/Post/Adding-Share-Buttons-To-Your-Blog-Or-Website-A-Comprehensive-Guide.aspx" class="more" target="_blank"&gt;http://facebook.com/sharer.php?u=&lt;b&gt;&lt;%=contentUrl%&gt;&lt;/b&gt;&lt;/a&gt;
&lt;br&gt;Twitter: &lt;a href="http://twitter.com/?status=Adding share buttons to your blog or website - the complete guide http://stritar.net/Post/Adding-Share-Buttons-To-Your-Blog-Or-Website-A-Comprehensive-Guide.aspx" class="more" target="_blank"&gt;http://twitter.com/?status=&lt;b&gt;&lt;%=contentTitle%&gt;  &lt;%=contentUrl%&gt;&lt;/b&gt;&lt;/a&gt;
&lt;br&gt;Reddit: &lt;a href="http://reddit.com/submit?url=http://stritar.net/Post/Adding-Share-Buttons-To-Your-Blog-Or-Website-A-Comprehensive-Guide.aspx&amp;title=Adding share buttons to your blog or website - the complete guide" class="more" target="_blank"&gt;http://reddit.com/submit?url=&lt;b&gt;&lt;%=contentUrl%&gt;&lt;/b&gt;&amp;title=&lt;b&gt;&lt;%=contentTitle%&gt;&lt;/b&gt;&lt;/a&gt;
&lt;br&gt;Digg: &lt;a href="http://digg.com/submit?url=http://stritar.net/Post/Adding-Share-Buttons-To-Your-Blog-Or-Website-A-Comprehensive-Guide.aspx" class="more" target="_blank"&gt;http://digg.com/submit?url=&lt;b&gt;&lt;%=contentUrl%&gt;&lt;/b&gt;&lt;/a&gt;
&lt;br&gt;Delicious: &lt;a href="http://delicious.com/post?url=http://stritar.net/Post/Adding-Share-Buttons-To-Your-Blog-Or-Website-A-Comprehensive-Guide.aspx&amp;title=Adding share buttons to your blog or website - the complete guide" class="more" target="_blank"&gt;http://delicious.com/post?url=&lt;b&gt;&lt;%=contentUrl%&gt;&lt;/b&gt;&amp;title=&lt;b&gt;&lt;%=contentTitle%&gt;&lt;/b&gt;&lt;/a&gt;
&lt;br&gt;StumbleUpon: &lt;a href="http://stumbleupon.com/submit?url=http://stritar.net/Post/Adding-Share-Buttons-To-Your-Blog-Or-Website-A-Comprehensive-Guide.aspx&amp;title=Adding share buttons to your blog or website - the complete guide" class="more" target="_blank"&gt;http://stumbleupon.com/submit?url=&lt;b&gt;&lt;%=contentUrl%&gt;&lt;/b&gt;&amp;title=&lt;b&gt;&lt;%=contentTitle%&gt;&lt;/b&gt;&lt;/a&gt;
&lt;br&gt;&amp;nbsp;&lt;/p&gt;

&lt;h2&gt;Keep it simpler: Use AddThis&lt;/h2&gt;
&lt;p&gt;If you're not a demanding users and you're OK with a plain solution, the service AddThis may be just what you need. Set the parameters and you're good to go, and the number of supported services is really huge (and you also get the Print button).&lt;/p&gt;
&lt;p style="font-family: Courier;"&gt;&amp;lt;div class=&amp;quot;addthis_toolbox addthis_default_style&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;addthis_button_facebook_like&amp;quot; addthis:url=&amp;quot;&lt;b&gt;&amp;lt;%=contentUrl%&amp;gt;&lt;/b&gt;&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;addthis_button_tweet&amp;quot; addthis:url=&amp;quot;&lt;b&gt;&amp;lt;%=contentUrl%&amp;gt;&lt;/b&gt;&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;addthis_counter addthis_pill_style&amp;quot; addthis:url=&amp;quot;&lt;b&gt;&amp;lt;%=contentUrl%&amp;gt;&lt;/b&gt;&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://s7.addthis.com/js/250/addthis_widget.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/p&gt;

&lt;p&gt;&lt;table cellpadding="0" cellspacing="0" width="400"&gt;&lt;tr&gt;&lt;td&gt;Result:&lt;/td&gt;&lt;td&gt; 
&lt;div class="addthis_toolbox addthis_default_style "&gt;
&lt;a class="addthis_button_facebook_like" addthis:url="http://stritar.net/Post/Adding-Share-Buttons-To-Your-Blog-Or-Website-A-Comprehensive-Guide.aspx"&gt;&lt;/a&gt;
&lt;a class="addthis_button_tweet" addthis:url="http://stritar.net/Post/Adding-Share-Buttons-To-Your-Blog-Or-Website-A-Comprehensive-Guide.aspx"&gt;&lt;/a&gt;
&lt;a class="addthis_counter addthis_pill_style" addthis:url="http://stritar.net/Post/Adding-Share-Buttons-To-Your-Blog-Or-Website-A-Comprehensive-Guide.aspx"&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js"&gt;&lt;/script&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Possible modifications: too many to mention&lt;/p&gt;
&lt;p&gt;More info: &lt;a href="http://addthis.com" target="_blank" title="AddThis - The #1 Bookmarking &amp;amp; Sharing Service" class="more"&gt;http://www.addthis.com/&lt;/a&gt;
&lt;br&gt;&amp;nbsp;&lt;/p&gt;

&lt;h2&gt;Facebook&lt;/h2&gt;
&lt;p&gt;So, you'll rather go for the real thing? Let's begin with Facebook. If you're trying to get the code for the Like button and it says you have to be a registered developer, don't worry, just logout and everything will be great. After that you will be offered with two sets of code, both of them work. I used the second one, which also support "Send to".&lt;/p&gt;
&lt;p style="font-family: Courier"&gt;&amp;lt;div id=&amp;quot;fb-root&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;http://connect.facebook.net/en_US/all.js#xfbml=1&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;fb:like href=&amp;quot;&lt;b&gt;&amp;lt;%=contentUrl%&amp;gt;&lt;/b&gt;&amp;quot; send=&amp;quot;false&amp;quot; layout=&amp;quot;button_count&amp;quot; width=&amp;quot;130&amp;quot; show_faces=&amp;quot;false&amp;quot; action=&amp;quot;like&amp;quot; font=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/fb:like&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;table cellpadding="0" cellspacing="0" width="200"&gt;&lt;tr&gt;&lt;td&gt;Result:&lt;/td&gt;&lt;td&gt; 
&lt;div id="fb-root"&gt;&lt;/div&gt;&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="http://stritar.net/Post/Adding-Share-Buttons-To-Your-Blog-Or-Website-A-Comprehensive-Guide.aspx" send="false" layout="button_count" width="130" show_faces="false" action="like" font=""&gt;&lt;/fb:like&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Possible modifications: layout (standard, button_count, box_count), colorscheme (light, dark), action (like, recommend), show_faces, font, width, send (add send button), etc. &lt;/p&gt; 
&lt;p&gt;More info: &lt;a href="http://developers.facebook.com/docs/reference/plugins/like/" target="_blank" title="Like Button - Facebook developers" class="more"&gt;http://developers.facebook.com/docs/reference/plugins/like/&lt;/a&gt;
&lt;br&gt;&amp;nbsp;&lt;/p&gt;



&lt;h2&gt;Twitter&lt;/h2&gt;
&lt;p&gt;Since Twitter introduced the new Tweet button, the &lt;a title="TweetMeme Button" target="_blank" class="more" href="http://help.tweetmeme.com/2009/04/06/tweetmeme-button/"&gt;original TweetMeme button&lt;/a&gt; started to behave strangely (sometimes it doesn't count tweets correctly). On the other hand, the official Tweet button doesn't count the tweets for older posts, so all your viral posts from the past will show 0 tweets (and I was so proud one of my posts &lt;a href="http://stritar.net/Post/I_Got_The_Scent_Of_Going_Viral_On_Social_Media_-_Now_I_Am_A_Bit_Confused.aspx" class="more" target="_blank" title="I got the scent of going viral on social media. Now I'm a bit confused."&gt;got more than 100 retweets!&lt;/a&gt;). Your choice, I've decided to go for the new one.&lt;/p&gt;
&lt;p style="font-family: Courier"&gt;&amp;lt;a href=&amp;quot;http://twitter.com/share&amp;quot; class=&amp;quot;twitter-share-button&amp;quot; data-url=&amp;quot;&lt;b&gt;&amp;lt;%=contentUrl%&amp;gt;&lt;/b&gt;&amp;quot; data-count=&amp;quot;horizontal&amp;quot;&amp;gt;Tweet&amp;lt;/a&amp;gt;&lt;br&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://platform.twitter.com/widgets.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;table cellpadding="0" cellspacing="0" width="200"&gt;&lt;tr&gt;&lt;td&gt;Result:&lt;/td&gt;&lt;td&gt; 
&lt;a href="http://twitter.com/share" class="twitter-share-button" data-url="http://stritar.net/Post/Adding-Share-Buttons-To-Your-Blog-Or-Website-A-Comprehensive-Guide.aspx" data-count="horizontal"&gt;Tweet&lt;/a&gt;&lt;script type="text/javascript" src="http://platform.twitter.com/widgets.js"&gt;&lt;/script&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;
&lt;p&gt;&lt;table cellpadding="0" cellspacing="0" width="200"&gt;&lt;tr&gt;&lt;td&gt;TweetMeme:&lt;/td&gt;&lt;td&gt;
&lt;script type="text/javascript"&gt;
tweetmeme_url = 'http://stritar.net/Post/Adding-Share-Buttons-To-Your-Blog-Or-Website-A-Comprehensive-Guide.aspx';
tweetmeme_style = 'compact';
&lt;/script&gt;
&lt;script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"&gt;&lt;/script&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Possible modifications: data-count (vertical, horizontal, none), which modifies the layout. You can also set the default text and specify @via, etc.&lt;/p&gt; 
&lt;p&gt;More info: &lt;a href="http://twitter.com/goodies/tweetbutton" target="_blank" title="Twitter / Tweet Button" class="more"&gt;http://twitter.com/goodies/tweetbutton&lt;/a&gt;
&lt;br&gt;&amp;nbsp;&lt;/p&gt;

&lt;h2&gt;Reddit&lt;/h2&gt;
&lt;p&gt;Reddit is a great community that can get you quite a bit of traffic if your topic is more on the geeky side.&lt;/p&gt;
&lt;p style="font-family: Courier;"&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
reddit_url='&lt;strong&gt;&amp;lt;%=contentUrl%&amp;gt;&lt;/strong&gt;';&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://reddit.com/static/button/button1.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;table cellpadding="0" cellspacing="0" width="200"&gt;&lt;tr&gt;&lt;td&gt;Result:&lt;/td&gt;&lt;td&gt; 
&lt;script type="text/javascript"&gt;                      reddit_url='http://stritar.net/Post/Adding-Share-Buttons-To-Your-Blog-Or-Website-A-Comprehensive-Guide.aspx';
&lt;/script&gt;
&lt;script type="text/javascript" src="http://reddit.com/static/button/button1.js"&gt;&lt;/script&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Possible modifications: tens of different layouts&lt;/p&gt; 
&lt;p&gt;More info: &lt;a href="http://www.reddit.com/buttons/" target="_blank" title="reddit.com: reddit buttons" class="more"&gt;http://www.reddit.com/buttons/&lt;/a&gt;
&lt;br&gt;&amp;nbsp;&lt;/p&gt;

&lt;h2&gt;Digg&lt;/h2&gt;
&lt;p&gt;Since Digg's last upgrade, I haven't been seeing any traffic from it, but it's nice to dream about the old times. Not working properly on FF2.&lt;/p&gt;
&lt;p style="font-family: Courier"&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
(function() {&lt;br /&gt;
var s = document.createElement('SCRIPT'), s1 = document.getElementsByTagName('SCRIPT')[0];&lt;br /&gt;
s.type = 'text/javascript';&lt;br /&gt;
s.async = true;&lt;br /&gt;
s.src = 'http://widgets.digg.com/buttons.js';&lt;br /&gt;
s1.parentNode.insertBefore(s, s1);&lt;br /&gt;
})();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;DiggThisButton DiggCompact&amp;quot; href=&amp;quot;http://digg.com/submit?url=&lt;strong&gt;&amp;lt;%=contentUrl%&amp;gt;&lt;/strong&gt;&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;table cellpadding="0" cellspacing="0" width="200"&gt;&lt;tr&gt;&lt;td&gt;Result:&lt;/td&gt;&lt;td&gt; 
&lt;script type="text/javascript"&gt;
(function() {
var s = document.createElement('SCRIPT'), s1 = document.getElementsByTagName('SCRIPT')[0];
s.type = 'text/javascript';
s.async = true;
s.src = 'http://widgets.digg.com/buttons.js';
s1.parentNode.insertBefore(s, s1);
})();
&lt;/script&gt;
&lt;a class="DiggThisButton DiggCompact" href="http://digg.com/submit?url=http://stritar.net/Post/Adding-Share-Buttons-To-Your-Blog-Or-Website-A-Comprehensive-Guide.aspx"&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Possible modifications: class (DiggWide, DiggMedium, DiggCompact, DiggIcon), which modifies the layout.&lt;/p&gt; 
&lt;p&gt;More info: &lt;a href="http://about.digg.com/downloads/button/smart" target="_blank" title="Integrate: The Digg Button" class="more"&gt;http://about.digg.com/downloads/button/smart&lt;/a&gt;
&lt;br&gt;&amp;nbsp;&lt;/p&gt;

&lt;h2&gt;Delicious&lt;/h2&gt;
&lt;p&gt;We'll probably be seing &lt;a href="http://stritar.net/Post/Is-Delicious-Aiming-To-Become-The-Next-Twitter.aspx" class="more" target="_blank" title="Is Delicious aiming to become the next Twitter?"&gt;a new version of Delicious button&lt;/a&gt; soon, but for now, you can either put &lt;a href="http://www.delicious.com/help/savebuttons" class="more" target="_blank" title="'Bookmark this on Delicious' Button"&gt;a simple link without the count&lt;/a&gt; to your blog or some hacking is required. You practically have to make your own button that retrieves the data from Delicious and puts it into correct HTML tags. For advanced users only.&lt;/p&gt;

&lt;p style="font-family: Courier"&gt;&amp;lt;span id=&amp;quot;deliciouscount&amp;quot; style=&amp;quot;font-size: 12px; font-weight: bold;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;a id=&amp;quot;deliciouslink&amp;quot; style=&amp;quot;font-size: 12px; font-weight: bold; text-decoration: none;&amp;quot; target=&amp;quot;_blank&amp;quot; title=&amp;quot;View details&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br/&gt;
&amp;lt;script type='text/javascript'&amp;gt;&lt;br /&gt;
function displayURL(data) {&lt;br /&gt;
var urlinfo = data[0];&lt;br /&gt;
if (urlinfo == null) {&lt;br /&gt;
document.getElementById('deliciouscount').innerHTML = &amp;quot;Bookmarks: 0&amp;quot;;&lt;br /&gt;
return;&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
document.getElementById('deliciouslink').innerHTML = &amp;quot;Bookmarks: &amp;quot; + urlinfo.total_posts;&lt;br /&gt;
document.getElementById('deliciouslink').href = 'http://delicious.com/url/' + urlinfo.hash;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;http://badges.del.icio.us/feeds/json/url/data?url=&lt;strong&gt;&amp;lt;%=contentUrl%&amp;gt;&lt;/strong&gt;&amp;amp;amp;callback=displayURL&amp;quot; &amp;gt;&amp;lt;/script&amp;gt;&lt;/p&gt;

&lt;p&gt;&lt;table cellpadding="0" cellspacing="0" width="200"&gt;&lt;tr&gt;&lt;td&gt;Result:&lt;/td&gt;&lt;td align="left"&gt; 
&lt;span id="deliciouscount2" style="font-size: 12px; font-weight: bold;"&gt;&lt;/span&gt;
&lt;a id="deliciouslink2" style="font-size: 12px; font-weight: bold; text-decoration: none;" target="_blank" title="View details"&gt;&lt;/a&gt;
&lt;script type='text/javascript'&gt;
function displayURL(data) {
var urlinfo = data[0];
if (urlinfo == null) {
    document.getElementById('deliciouscount2').innerHTML = "Bookmarks: 0";
    
    return;
}
 else {
    document.getElementById('deliciouslink2').innerHTML = "Bookmarks: " + urlinfo.total_posts;
    document.getElementById('deliciouslink2').href = 'http://delicious.com/url/' + urlinfo.hash;
}
}         
&lt;/script&gt;    
&lt;script src="http://badges.del.icio.us/feeds/json/url/data?url=http://stritar.net/Post/Adding-Share-Buttons-To-Your-Blog-Or-Website-A-Comprehensive-Guide.aspx&amp;amp;callback=displayURL" &gt;&lt;/script&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Possible modifications: the world is not enough&lt;/p&gt; 
&lt;p&gt;More info: &lt;a href="http://stritar.net/About/Contact.aspx" class="more" target="_blank" title="Contact Grega Stritar"&gt;contact me&lt;/a&gt;&lt;/p&gt;
&lt;br&gt;&amp;nbsp;&lt;/p&gt;



&lt;h2&gt;StumbleUpon&lt;/h2&gt;
&lt;p&gt;I'm not sure if I'm using StumbleUpon properly, but I haven't managed to get a single stumble since I started blogging, so I temporarily removed it from my blog (due to lack of space).&lt;/p&gt;
&lt;p style="font-family: Courier"&gt;&amp;lt;script src=&amp;quot;http://www.stumbleupon.com/hostedbadge.php?s=2&amp;amp;r=&lt;strong&gt;&amp;lt;%=contentUrl%&amp;gt;&lt;/strong&gt;&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;table cellpadding="0" cellspacing="0" width="200"&gt;&lt;tr&gt;&lt;td&gt;Result:&lt;/td&gt;&lt;td align="left"&gt; 
&lt;script src="http://www.stumbleupon.com/hostedbadge.php?s=2&amp;r=http://stritar.net/Post/Adding-Share-Buttons-To-Your-Blog-Or-Website-A-Comprehensive-Guide.aspx"&gt;&lt;/script&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Possible modifications: many different layouts&lt;/p&gt; 
&lt;p&gt;More info: &lt;a href="http://www.stumbleupon.com/badges/" target="_blank" title="StumbleUpon Badges" class="more"&gt;http://www.stumbleupon.com/badges/&lt;/a&gt;
&lt;br&gt;&amp;nbsp;&lt;/p&gt;


&lt;h2&gt;Google +1&lt;/h2&gt;
&lt;p&gt;It's too soon to say if +1 button will be a game changer, or it's just too lame, too late, like other &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's social services&lt;/a&gt;. We'll see. Not working properly on FF2, FF3.5 and IE7.&lt;/p&gt;
&lt;p style="font-family: Courier"&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://apis.google.com/js/plusone.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;g:plusone size=&amp;quot;medium&amp;quot; href=&amp;quot;&lt;strong&gt;&amp;lt;%=contentUrl%&amp;gt;&lt;/strong&gt;&amp;quot;&amp;gt;&amp;lt;/g:plusone&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;table cellpadding="0" cellspacing="0" width="200"&gt;&lt;tr&gt;&lt;td&gt;Result:&lt;/td&gt;&lt;td align="left"&gt; 
&lt;script type="text/javascript" src="http://apis.google.com/js/plusone.js"&gt;&lt;/script&gt;
&lt;g:plusone size="medium" href="http://stritar.net/Post/Adding-Share-Buttons-To-Your-Blog-Or-Website-A-Comprehensive-Guide.aspx"&gt;&lt;/g:plusone&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Possible modifications: size (small, standard, medium, tall)&lt;/p&gt; 
&lt;p&gt;More info: &lt;a href="http://www.google.com/webmasters/+1/button/index.html" target="_blank" title="Google +1 your website" class="more"&gt;http://www.google.com/webmasters/+1/button/index.html&lt;/a&gt;
&lt;br&gt;&amp;nbsp;&lt;/p&gt;


&lt;h2&gt;LinkedIn (Update 28.11.2011)&lt;/h2&gt;
&lt;p&gt;LinkedIn may not be your dynamic social platform, but perhaps you may still find use for it.&lt;/p&gt;
&lt;p style="font-family: Courier"&gt;
&amp;lt;script src=&amp;quot;http://platform.linkedin.com/in.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;IN/Share&amp;quot; data-url=&amp;quot;&lt;strong&gt;&amp;lt;%=contentUrl%&amp;gt;&lt;/strong&gt;&amp;quot; data-counter=&amp;quot;right&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;table cellpadding="0" cellspacing="0" width="200"&gt;&lt;tr&gt;&lt;td&gt;Result:&lt;/td&gt;&lt;td align="left"&gt; 
&lt;script src="http://platform.linkedin.com/in.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;script type="IN/Share" data-url="http://stritar.net/Post/Adding-Share-Buttons-To-Your-Blog-Or-Website-A-Comprehensive-Guide.aspx" data-counter="right"&gt;&lt;/script&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Possible modifications: layour (vertical, horizontal, nocount)&lt;/p&gt; 
&lt;p&gt;More info: &lt;a href="https://developer.linkedin.com/plugins/share-button" target="_blank" title="Share Button | LinkedIn Developer Network" class="more"&gt;https://developer.linkedin.com/plugins/share-button&lt;/a&gt;
&lt;br&gt;&amp;nbsp;&lt;/p&gt;


&lt;h2&gt;Special: Like Facebook page and follow on Twitter&lt;/h2&gt;
&lt;p&gt;If you have a Facebook page, all you need to do is point the Like button to the URL of the page, and people will automatically become "fans". Similarly, you can implement the new Twitter Follow button and hopefully get new followers.&lt;/p&gt;
&lt;p style="font-family: courier"&gt;&amp;lt;div id=&amp;quot;fb-root&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;http://connect.facebook.net/en_US/all.js#xfbml=1&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;fb:like href=&amp;quot;&lt;strong&gt;http://facebook.com/neolab.si&lt;/strong&gt;&amp;quot; send=&amp;quot;false&amp;quot; layout=&amp;quot;button_count&amp;quot; width=&amp;quot;130&amp;quot; show_faces=&amp;quot;false&amp;quot; action=&amp;quot;likel&amp;quot; font=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/fb:like&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;div id="fb-root"&gt;&lt;/div&gt;&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="http://facebook.com/neolab.si" send="false" layout="button_count" width="130" show_faces="false" action="like" font=""&gt;&lt;/fb:like&gt;&lt;/p&gt;
&lt;p style="font-family: Courier"&gt;&amp;lt;a href=&amp;quot;&lt;strong&gt;http://twitter.com/gstritar&lt;/strong&gt;&amp;quot; class=&amp;quot;twitter-follow-button&amp;quot; data-show-count=&amp;quot;false&amp;quot; &amp;gt;Follow @gstritar&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;http://platform.twitter.com/widgets.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://twitter.com/gstritar" class="twitter-follow-button" data-show-count="false" &gt;Follow @gstritar&lt;/a&gt;
&lt;script src="http://platform.twitter.com/widgets.js" type="text/javascript"&gt;&lt;/script&gt;&lt;br&gt;&amp;nbsp;&lt;/p&gt;

&lt;h2&gt;Other platforms&lt;/h2&gt;
&lt;p&gt;All of these buttons can be modified to some extent, and most of them will work without the specified URL. But you'll probably need to set it anyways so they will also work on your homepage with many posts.&lt;/p&gt;
&lt;p&gt;The cases presented were made for asp.net, but they can be modified for other platforms such as WordPress or Blogger by replacing the &lt;b&gt;&lt;%=contentUrl%&gt;&lt;/b&gt; with something like &lt;b&gt;&amp;lt;?php the_permalink() ?&amp;gt;&lt;/b&gt; or &lt;b&gt;data:post.url&lt;/b&gt; (sorry, no experience). But if you managed to get the Facebook Like button to work, you will surely be able to modify others too.&lt;/p&gt;
&lt;p&gt;There you go, time to share.&lt;/p&gt;
</description><link>http://stritar.net/Post/Adding-Share-Buttons-To-Your-Blog-Or-Website-A-Comprehensive-Guide.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>Reinventing SEO: The social media effect</title><pubDate>Tue, 19 Apr 2011 09:00:38 GMT</pubDate><description>&lt;p&gt;Looks like the time for classic search and Search Engine Optimization (SEO) is &lt;a href="http://mashable.com/2011/03/04/search-marketing-changes/" class="more" target="_blank" title="Why the Search Marketing Industry Must Adapt or Perish"&gt;slowly running out&lt;/a&gt;, waiting to be replaced by more advanced and efficient algorithms than mathematical - &lt;a href="http://traackr.com/blog/2011/02/from-pagerank-to-peoplerank/" class="more" target="_blank" title="The Future of Search: from PageRank to PeopleRank"&gt;human powered&lt;/a&gt;. The &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;Facebook Like button&lt;/a&gt;, the Twitter retweet button and other social share widgets are on the uprise, and Google is fighting back with all its might. For now, their business model &lt;a href="http://techcrunch.com/2011/03/25/search-googles-castle-moat/" class="more" target="_blank" title="Search Is Google's Castle, Everything Else Is A Moat"&gt;relies heavily on search&lt;/a&gt; (other project like Android and Chrome too), but their &lt;a href="http://www.businessinsider.com/larry-page-just-tied-employee-bonuses-to-the-success-of-the-googles-social-strategy-2011-4" class="more" target="_blank" title="Larry Page Just Tied ALL Employees' Bonuses To The Success Of Google's Social Strategy"&gt;future social success&lt;/a&gt; was named the number one priority by the new old CEO Larry Page.&lt;/p&gt;

&lt;p&gt;Google still has a problem with providing a &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;solid social alternative&lt;/a&gt; to the newly crowned social players, and for now (we'll have to see what happens with the &lt;a href="http://googleblog.blogspot.com/2011/03/1s-right-recommendations-right-when-you.html" class="more" target="_blank" title="+1's: the right recommendations right when you want them - in your search results "&gt;new +1 button&lt;/a&gt;), all they can do is to &lt;a href="http://www.searchenginejournal.com/google-clarifies-url-shortenings-impact-on-seo/29312/" class="more" target="_blank" title="Google Clarifies URL Shortening's Impact on SEO"&gt;somehow play along&lt;/a&gt;. In the mean time, a lot of people have been noticing the &lt;a href="http://www.seomoz.org/blog/tweets-effect-rankings-unexpected-case-study" class="more" target="_blank" title="A Tweet's Effect On Rankings - An Unexpected Case Study"&gt;impact of Facebook likes and Tweets&lt;/a&gt; on their Google results ranking, and guess what – I've noticed the same thing. Welcome to the age of &lt;a href="http://mashable.com/2011/03/17/curation-importance/" class="more" target="_blank" title="Why Curation Is Just as Important as Creation"&gt;social curation&lt;/a&gt;, where rating content is slowly getting as important as generating content. I guess there's about a billion times too much of it online, and who else knows it better than &lt;a href="http://www.seomoz.org/blog/google-bing-confirm-twitter-facebook-influence-seo" class="more" target="_Blank" title="Google and Bing Confirm that Twitter/Facebook Influence SEO"&gt;Google and Bing&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;While we knew Google is very good at &lt;a href="http://stritar.net/Post/The_Impact_Of_Hyperlinks_Toolbars_And_Url_Shorteners_On_Google_Analytics.aspx" class="more" target="_blank" title="The impact of hyperlinks, toolbars and URL shorteners on Google Analytics
"&gt;adapting its services&lt;/a&gt; to new trends, we are quite happy they actually went this far, embracing social virality into their search results. But what happened to the world's most powerful mathematic algorithm, &lt;a href="http://en.wikipedia.org/wiki/PageRank" class="more" target="_blank" title="PageRank"&gt;Google's PageRank&lt;/a&gt;? Is it becoming obsolete to the Facebook Like's search algorithm, which will surely come around soon in its full glory? Actually, it's getting clear it became obsolete together with the static Web 1.0, but only to get reborn for the &lt;a href="http://stritar.net/Post/Why_Web_2-0_Is_So_Important.aspx" class="more" targeT="_blank" title="Why Web 2.0 is so important"&gt;social world of Web 2.0&lt;/a&gt;. Slowly, almost underground, while we were being fed with news about how &lt;a href="http://thenextweb.com/google/2010/04/09/google-site-speed-search-ranking-factor/" class="more" target="_blank" title="Google Now Using Site Speed As A Search Ranking Factor"&gt;loading speeds&lt;/a&gt; make a significant difference on Google ranking.&lt;/p&gt;

&lt;p&gt;I've written a few blog posts that have been generating some &lt;a href="http://stritar.net/Post/I_Got_The_Scent_Of_Going_Viral_On_Social_Media_-_Now_I_Am_A_Bit_Confused.aspx" class="more" target="_blank" title="I got the scent of going viral on social media. Now I'm a bit confused."&gt;social buzz&lt;/a&gt;. A few Tweets, Likes and Reddit upvotes, and you have a winner (thank you!). "&lt;a href="http://www.google.com/search?hl=en&amp;client=safari&amp;q=jeopardy+slovenia&amp;btnG=Search&amp;aq=f&amp;aqi=&amp;aql=&amp;oq=" class="more" target="_blank" title="jeopardy slovenia - Google Search"&gt;Jeopardy Slovenia&lt;/a&gt;" may not be a power search, but it became the first result on Google the same day I've published &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;the post&lt;/a&gt;. With PageRank 0! And "&lt;a href="http://www.google.com/search?hl=en&amp;client=safari&amp;q=apple+slovenia&amp;btnG=Search&amp;aq=f&amp;aqi=&amp;aql=&amp;oq=" class="more" target="_blank" title="appleslovenia - Google Search"&gt;Apple Slovenia&lt;/a&gt;", a keyword much more interesting, is also displaying &lt;a href="http://stritar.net/Post/Apple-Has-Enough-Money-To-Buy-Slovenias-Entire-Yearly-Production.aspx" class="more" target="_blank" title="Apple has enough money to buy Slovenia's entire yearly production"&gt;my post&lt;/a&gt; on the first page. Not bad. And that's something we will probably be seeing even more of in the future, and that's why blogging is still (if not more than ever) very important.&lt;/p&gt;

&lt;p&gt;It's time to start &lt;a href="http://sethgodin.typepad.com/seths_blog/2011/04/wasting-the-digital-dividend.html" class="more" target="_blank" title="Wasting the digital dividend"&gt;monetizing your social capital&lt;/a&gt;. And of course, upgrade SEO marketing strategies with more efficient SMO (Social Media Optimization) strategies. Before you'll get your page on top of Google the old school way, you'll grow old. So be cool and remember, sharing is caring. Yes, that means you should click the button.&lt;/p&gt;
</description><link>http://stritar.net/Post/Reinventing-SEO-Search-Engine-Optimization-The-Social-Media-Effect.aspx</link></item><item><title>The impact of hyperlinks, toolbars and URL shorteners on Google Analytics</title><pubDate>Tue, 09 Mar 2010 18:51:45 GMT</pubDate><description>&lt;p&gt;In the past few weeks I've done an extended analysis of visits on &lt;a href="http://stritar.net/Projects/Chronolog.aspx" class="more" title="Stritar's chronolog" target="_blank"&gt;my blog&lt;/a&gt;, which made me wonder how the super fancy new web gadgets and features influence Google Analytics and traffic reports. By these new gadgets I mean the nowadays very popular &lt;a href="http://en.wikipedia.org/wiki/URL_shortener" class="more" target="_blank" title="URL Shortening"&gt;URL shorteners&lt;/a&gt;, such as tinyurl or bit.ly, and the annoying inside-browser toolbars, used by Digg, Stumbleupon, Google images and other services. These inventions made me wonder, as well as probably many other bloggers, web developers and marketers do - are these things messing up the traffic statistics? To be sure, I had to try it out by myself and found out the following: No, they do not. Or better put, Google is smart enough to know what's happening.&lt;/p&gt;
&lt;h2&gt;The methodology&lt;/h2&gt;
&lt;p&gt;Google Analytics and other statistical software is based on combining the user agent (operating system, browser), IP and &lt;a href="http://www.cookiecentral.com/c_concept.htm" class="more" target="_blank" title="The Cookie Concept"&gt;browser cookies&lt;/a&gt; to calculate visits on a site. While others are captured for different information, cookies are still the base of elementary &lt;a href="http://www.squidoo.com/webmetrics" class="more" target="_blank" title="Web Metrics"&gt;web metrics&lt;/a&gt;, so it's crucial to understand them and have them under control. I did just that each time I did a test – clean Google's cookies, close the browser, open the browser, check it out. I made a &lt;a href="http://stritar.net/Post/This_Is_A_Hidden_Post.aspx" class="more" target="_blank" title="This is a hidden post"&gt;hidden post&lt;/a&gt; for testing, one which definitely wouldn't get any other referrers other than me, besides using some old and already forgotten posts I made on Digg months ago and some indexed by Google images. Then I started testing different cases, which would help me understand the behavior of all the above mentioned things.&lt;/p&gt;

&lt;h2&gt;Referring vs. navigating&lt;/h2&gt; 
&lt;p&gt;The first interesting thing I found out was that Google Analytics knows the difference between clicking on a link and manually navigating to a page by entering the URL in the browser. In the first case it recognizes the referrer, and in other one it doesn't (it is displayed as google / organic in the statistics). This is caused by the referrer information captured in the &lt;a href="http://en.wikipedia.org/wiki/HTTP_referrer" class="more" target="_blank" title="HTTP referrer"&gt;HTML header&lt;/a&gt; of every web page. So, if somebody manually enters your web page's address after seeing a link on Facebook, Facebook won't be counted as a referrer, but if they click on the link, it will be.&lt;/p&gt;

&lt;h2&gt;Url shorteners&lt;/h2&gt;
&lt;p&gt;I tested a few url shorteners, tinyurl, is.gd, skrci.me and the one Twitter automatically uses (bit.ly). I found out that the ones I manually created and clicked on them inside the URL shortening site showed this site as the referrer. But in the case of Twitter, on which I made a tweet, clicked on the link and deleted it within seconds, Twitter was correctly shown as the referrer, even though the click first went to bit.ly and than to my blog. I went further, created a new shortened URL, put it in a hyperlink on a server, clicked on it, and again, this server was shown as the referrer. Because url shorteners only make the redirect, the click is keeping the original referrer, which enables the referrers to be fully captured, even if they go through the shortened URL.&lt;/p&gt;

&lt;h2&gt;Toolbars&lt;/h2&gt;
&lt;p&gt;I use a few Web 2.0 services to promote my blog, and it's been a trend for them to provide toolbars, which display the target site inside the parent site. The main reason for them doing this is to keep users inside their site, and in my opinion, it's annoying and it sucks. But at least it doesn't influence the statistics. I tested this behavior on Digg toolbar and on Google images (without removing or closing the toolbar) and in both cases it worked perfectly – the referrer was correctly recognized. After all, upon technically examining both cases, it's only an iframe opening the designated page below the toolbar, so the target page actually does fully open anyways.&lt;/p&gt;
 

&lt;h2&gt;Proof&lt;/h2&gt;
&lt;p&gt;The screenshots of Google Analytics below support my theory. In the case of the hidden post, I managed to create the following situations which prove my discussed behaviour of hyperlinks and URL shorteners:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I clicked on a link from neolab.si (one referrer from neolab.si),&lt;/li&gt;
&lt;li&gt;I manually navigated to the post from neolab.si twice (by entering the url in the browser while being on neolab.si), shown as google / organic,&lt;/li&gt;
&lt;li&gt;I clicked on a shortened link on the is.gd site, later I pasted another is.gd short url directly to my browser (two referrers from is.gd),&lt;/li&gt;
&lt;li&gt;I clicked on a shortened link on the tinyurl site (a referrer from tinyurl),&lt;/li&gt;
&lt;li&gt;I clicked on the automatically bit.ly generated url in a tweet (a referrer from Twitter),&lt;/li&gt;
&lt;li&gt;I generated the skrci.me short url, put it in a hyperlink on localhost and clicked on it (a referrer from localhost).&lt;/li&gt;
&lt;/ul&gt;
&lt;img src="http://stritar.net/upload/Images/Analytics1.gif"&gt;&lt;br&gt;&lt;br&gt;

&lt;p&gt;The second report displays the referrers from Digg and Google images, both services using toolbars. On the first occasion, I opened two different posts inside the Digg toolbar, and on the second, two posts inside Google images toolbar, all of them without closing the toolbar (I went for one post twice, to check out if a session is also created and found out it is). As you can see, the referrers are all there and the toolbars don't corrupt the data in any way.&lt;/p&gt;&lt;br&gt;
&lt;img src="http://stritar.net/upload/Images/Analytics2.gif"&gt;&lt;br&gt;&lt;br&gt;
&lt;img src="http://stritar.net/upload/Images/Analytics3.gif"&gt;&lt;br&gt;&lt;br&gt;

&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Look like we don't need to worry about these things anymore. I'm actually quite surprised about finding out the mentioned things work like a charm, not influencing the analysis and statistics in any case. From now on, there can be no more blaming these new features and gadgets on low traffic and weird referrers. The World Wide Web has been well planned and Google Analytics is able to know everything, so if your statistics seem weird, there is probably more chance that you are the one who's wrong.&lt;/p&gt;</description><link>http://stritar.net/Post/The_Impact_Of_Hyperlinks_Toolbars_And_Url_Shorteners_On_Google_Analytics.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>Organizing music collections using iTunes</title><pubDate>Wed, 02 Sep 2009 20:32:46 GMT</pubDate><description>&lt;p&gt;When I got my first iPod a few years ago as a business gift, I was overwhelmed. The thing was pure cuteness and usability. Then I got a cold shower few minutes later, as I tried to put my mp3s on it. The damn thing wouldn't work without iTunes. Apple's strategy to force software to users is a bit Microsofty, and is in my oppinion one of the worst things the company is doing, getting &lt;a href="http://www.microsoft-watch.com/content/operating_systems/apples_windows_invasion.html" target="_blank" class="more" title="Apple's Windows Invasion"&gt;criticism&lt;/a&gt; all around. But It turns out this approach is helping them on their world domination tour that's been going on in the past years, as more and more people are switcing to Apple and Macs.&lt;/p&gt;
&lt;p&gt;Switching from Winamp to iTunes got me acquainted to music libraries. Winamp also supports it, but it was a bit in the background those days. iTunes had it in the main and at first I though that's just another stupid thing I had to do for nothing. But the more I went into it, the more fond I was of it. Today I am a power iTunes user and I think my library is a piece of art, with houndreds of hours put into it's organization and optimization. &lt;a href="http://en.wikipedia.org/wiki/Meta_data" target="_blank" class="more" title="Metadata"&gt;Meta data&lt;/a&gt; is very powerful, and having songs classified, tagged and labeled leads to simple and flexible use, after the bigger initial investment.&lt;/p&gt;
&lt;p&gt;Here are a few approaches that can help you keep my giant library under control: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Labeling and smart playlists: &lt;/b&gt;Using correct labels for artists, genres, etc. and rating songs enables the use of smart playlists. I have one main playlists that combines all songs rated more than 2 stars. I have a few similar which focus on specific genres. These are the playlists I use the most. Their biggest advantage is that I can add new songs to iTunes and after I rate them, the automatically go to all the correct playlists, so I don't need to worry about making generic playlists with listenable songs.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Using album covers: &lt;/b&gt;This feature is very cool for browsing album collections. Instead of having to read what's in the library, you just look for a specific album cover. They say a picture is worth a 1000 words and it's true. By using cover flow or grid view, you can quickly and easily find the album you are looking for.&lt;/p&gt;
&lt;li&gt;&lt;b&gt;Using folders for playlists: &lt;/b&gt;Albums should be organized using folders. In my case, I use a root folder named Albums, which contains sub folders according to genres (Rock, Electronica, Pop, etc.), which contain subfolders according to sub-genres (Classic Rock, Alternative Rock, Indie Rock, etc.). This allows me to easily browse (or shuffle) all albums, if I feel more specific, just albums of one genre, and if I am in a really picky mood, just specialized collection of music from a sub-genre. This structure could be achieved by using smart playlist focused on genres, but then all the singles would also be added to the lists, so I prefer managing this by hand.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Using Comment as a tagging tool: &lt;/b&gt;Comments can be used as tags, because smart playlists can be configured to play songs where comment contains a word. This means that the system will work even if you put more words (tags) into the comment field. I use comments such as Replace (this song needs a better version), Label (this song is not correctly labeled) and New (this is something new and should be listened to - because date of adding to library is not correct in all the cases) to have a better overview over the songs in my library, and better choice for listening.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Making advanced logical statements: &lt;/b&gt;iTunes smart playlists only work with ALL or ANY of the rules or conditions you apply to them, which corresponds to mathematical OR or AND statements. I can set the smart playlist to contain ALL the songs of the genre pop AND rated more than 2 stars AND last more than 2 minutes. Another possibility is to set it in a way it contains ANY the songs that have a bit rate of less thant 192 OR have a comment that contains Replace (these songs need to be replaced). But you can't combine both OR and AND statements in one playlist.
&lt;br&gt;Actually there's a workaround, but you have to put a bit of efford into it and use a folder as a container. All the playlists inside the folder will be treated between themselves as ANY (OR), but each playlist can be configured as ALL. For instance, if you want a playlist of both best and fresh rock songs that will contain (ALL rock songs AND rated at least 4 stars) OR (ALL the rock songs AND made in the year 2009 AND rated with any stars), you just create two separate smart playlists (one for best, one for fresh), add them to a folder and the folder acts as the complex AND/OR playlist, combining both.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These techniques can probably be used also with other music libraries software and can hopefully make easier and better use of music collections. And if you know any other cool tricks, please let me know.&lt;/p&gt;</description><link>http://stritar.net/Post/Organizing_Music_Collections_Using_iTunes.aspx</link></item></channel></rss>