Browse files

Lots of tweaks, added new post

  • Loading branch information...
1 parent b928e73 commit 2fa66480dd4ea0753a1c602f50f8189866ba8853 @ivanjovanovic committed Feb 11, 2012
2 .rvmrc
@@ -1 +1 @@
-rvm use 1.9.2-p290@blog
+rvm use 1.9.2-p290@site
@@ -9,7 +9,7 @@ GEM
chunky_png (1.2.1)
classifier (1.3.3)
fast-stemmer (>= 1.0.0)
- columnize (0.3.4)
+ columnize (0.3.6)
compass (0.11.5)
chunky_png (~> 1.2)
fssm (>= 0.2.7)
@@ -5,3 +5,8 @@ $noise-bg: image-url('noise.png') top left;
@import 'code/utilities';
@import 'code/syntax';
+figure[role=code] {
+ font-size: 13px;
+ line-height: 16px;
@@ -7,13 +7,21 @@ body {
background-color: $base03;
+header {
+ h1 {
+ color: #B58900;
+ margin-left: 60px;
+ }
::-moz-selection { background: $magenta; text-shadow: none; }
::selection { background: $magenta; text-shadow: none; }
#main {
color: $green;
font-size: 14px;
+ padding-left: 25px;
a, & a:visited, & a:hover {
text-decoration: none;
@@ -66,7 +74,7 @@ body {
width: 700px;
margin-left: auto;
margin-right: auto;
- font-family: 'Helvetica Neue';
+ font: 16px 'Inconsolata';
#post & {
margin-top: 30px;
@@ -79,6 +87,10 @@ body {
div.image {
float: left;
+ nav {
+ margin-top: 10px;
+ }
header {
@@ -107,8 +119,12 @@ header {
article {
color: $base0;
- line-height: 24px;
- font-size: 14px;
+ line-height: 18px;
+ font-size: 15px;
+ p {
+ margin-top: 0px;
+ }
a, & a:visited, & a:hover {
text-decoration: none;
@@ -124,25 +140,42 @@ article {
font-size: 16px;
margin-top: 25px;
margin-bottom: 5px;
+ letter-spacing: 1px;
h3 {
font-size: 14px;
margin-top: 25px;
margin-bottom: 5px;
+ h4 {
+ color: $solar-red;
+ font-size: 14px;
+ margin: 0;
+ font-weight: normal;
+ }
.article-signature {
float: right;
color: $violet;
- .article-content {
- font-family: Verdana, "Times New Roman";
+ strong {
+ font-weight: normal;
- p {
- margin-top: 5px;
+ .article-read-more {
+ font-size: 14px;
+ line-height: 20px;
+ .article-read-more time {
+ display: block;
+ float: left;
+ width: 100px;
+ text-align: right;
+ margin-right: 10px;
+ }
#main nav[role=pagination] {
@@ -3,7 +3,7 @@
<li>I put my code on <a href="">GitHub</a></li>
<li>I hang mostly on <a href="">Google+</a> and <a href="{{ site.twitter_user }}">Twitter</a></li>
<li>I participate in organization of <a href="" title="Random Hacks of Kindness">RHoK</a></li>
- <li>I work at <a href="" title="Swiss PhoneBook"> AG</a></li>
+ <li>I work at <a href="" title="Swiss PhoneBook"> ag</a></li>
<ul class="toolbox">
<li>You can grab my <a href="">RSS Feed</a></li>
@@ -12,11 +12,11 @@ <h1 class="article-title">{{ page.title | titlecase }}</h1>
<div class="article-content">{{ content }}</div>
{% include post/sharing.html %}
{% if site.disqus_short_name and page.comments != false %}
- <section>
- <h1>Comments</h1>
- <div id="disqus_thread">{% include post/disqus_thread.html %}</div>
- </section>
-{% endif %}
+ <section>
+ <h1>Comments</h1>
+ <div id="disqus_thread">{% include post/disqus_thread.html %}</div>
+ </section>
+ {% endif %}
{% endif %}
@@ -0,0 +1,5 @@
+ <h1 class="article-title">{{ page.title | titlecase }}</h1>
+ {% include post/sharing.html %}
+ <div class="article-content">{{ content }}</div>
@@ -3,7 +3,8 @@
<div id="container">
+ <img src="images/header.png" alt="Ivan Jovanovic in search for the next abstraction" />
+ <h1>in search for the next abstraction</h1>
<div id="main" role="main">
{{ content | expand_urls: root_url }}
@@ -1,42 +1,13 @@
-layout: default
+{% include head.html %}
+<body id="article">
+ <div id="container">
+ {% include header.html %}
+ {% include page_content.html %}
+ {% include footer.html %}
+ </div>
+ {% include bottom_scripts.html %}
- {% if page.title %}
- <header>
- <h1 class="entry-title">{{ page.title | titlecase }}</h1>
- {% if %}<p class="meta">{% include post/date.html %}{{ time }}</p>{% endif %}
- </header>
- {% endif %}
- {{ content }}
- {% unless page.footer == false %}
- <footer>
- {% if or %}<p class="meta">
- {% if %}{% include post/author.html %}{% endif %}
- {% include post/date.html %}{% if updated %}{{ updated }}{% else %}{{ time }}{% endif %}
- {% if page.categories %}{% include post/categories.html %}{% endif %}
- </p>{% endif %}
- {% unless page.sharing == false %}
- {% include post/sharing.html %}
- {% endunless %}
- </footer>
- {% endunless %}
-{% if site.disqus_short_name and page.comments == true %}
- <section>
- <h1>Comments</h1>
- <div id="disqus_thread">{% include post/disqus_thread.html %}</div>
- </section>
-{% endif %}
-{% unless page.sidebar == false %}
-<aside role=sidebar>
- {% if site.page_asides.size %}
- {% include_array page_asides %}
- {% else %}
- {% include_array default_asides %}
- {% endif %}
-{% endunless %}
@@ -0,0 +1,141 @@
+layout: post
+title: '"Nobody Cares About Your Software" Is a Very Dangerous Point of View'
+date: 2012-02-11 12:47
+comments: true
+I work for company that is building its own software for the purpose of
+bringing some value to its users. So, we don't sell software but we sell
+what software does.
+I noticed that people are regularly throwing overgeneralizations and
+telling that bringing value is the only important thing, neglecting that
+having your own software platform is the way you communicate that value
+to your users. By making decisions on the platform you are inducing
+heavily the ways you convey the value. You are enabling yourself to
+communicate some messages but from the other side you are restricting
+yourself for the others. Most probably lot of technical decisions on the
+platform will heavily affect how you bring the value to the end user.
+## Lets dissect overgeneralized Nobody
+Most of the people are big generalizators. When they want to say
+something, it is easier to tell it in more general way, because getting
+into details need explanations and can remove focus from te point. That
+works for some cases, but there are cases when we can't simplify things
+more than the problem allows.
+**Nobody** in this case means **Nobody that is willing to pay for our
+service** cares about how it works in the background until it is
+satisfying their expectations. In case of web development, simply said
+**Your users don't care about your software**
+## When does it happen that our users have to care about our software
+Lets see, why would our users be forced to care about the software.
+That usually happens when software starts to get into their way. Lets
+take one invented example sketch.
+Imagine two step process of filling the form on your website. You fill
+in the first step, then click `next` to go to the next step and fill the in second
+step. You did not fill in properly second step and the process returned
+you to refill first step again in order to do everything correctly.
+Wat!!! Your website just made my day. And the days of lot of other
+The history of this feature usually goes something like this:
+* Product owner comes with really great idea of multistep form, and with the deadline for yesterday.
+* Engineers explain that their framework don't really support multistep
+ forms, but they will make it work somehow.
+* They make it work somehow, exactly as described above.
+**Here is important to see the relation of the state of this particular software and
+technical explanation of this problem with the effect on the user**. And
+obviously, user really doesn't care that your framework doesn't have
+expected features and that you don't really know or have no time to
+implement it properly.
+## 5 Whys of this problem
+#### Why does user have to go to the first step again?
+Because we didn't have time to properly implement the multistep form
+#### Why didn't you have time to implement it properly?
+Because our framework didn't support this option and we had to implement
+it in a very short time.
+#### Why didn't you choose framework that has a bit more features?
+Because we didn't really get time to plan properly migration to a new
+framework. We took someting that we where most familiar with.
+#### Why didn't you take your time for such an important decision?
+Well, there are other things to do, and we just thought this is going to
+be enough for now and did not think that much about future. We thought
+that we'll be able to add features we need, but then we got understaffed
+and we didn't find new employees fast so we had to do everything in a
+hurry ....
+#### Why is that, it looks more like a management and staffing issue
+Because, you know, in our company we have attitude that **Noboday cares
+about software, we only care about bringing value to our users**
+## The other part of Nobody
+At the beginning we extracted **User** of our software from the
+that we introduced at the start of the story. So, if we said that user doesn't want to
+care about our software, what should others in the process than do.
+Well, in my opinion that is what building business that is relying on
+a software product to deliver some user value is all about. **Others
+should care that user can fulfil his goal by using software and not
+caring about software itself.** In fact what user is paying us for is to
+care about the things he doesn't want to care. Unfortunatelly, when user
+starts to feel that software is getting into his way, lack of care for
+software has probably got too far away to fix in an easy way.
+Just to prove my point I have to list some responsibilities of standard
+roles in a company that produces software of any kind.
+**Management** should care that service company provides is satisfying
+and that users are not leaving for the competition. They should as well
+care that software is maintainable with reasonable
+price because they pay that maintainence at the end, stable and reliable
+and that it produces more happy than unhappy uses, easy to understand
+and documented well so they can expand the team fast, people are
+educated for the position they do so they don't introduce stupid things
+into the codebase, environment is optimized for long time work of this
+kind, motivation is high ... mostly non-technical things that make life
+of people that produce software confortable and make environment in
+which software is built stable and predictable.
+**Product owners** should care that they can use software as the modeling
+tool for easy prototyping and trying out new ideas, that quality of the
+product is not restricted by the software fallacies, that software is
+not just visible implementation but as well statistics gathering tool
+through which they can develop business ideas and prove some theories
+they might have. At the end they are responsible that give yo user value
+that is not restricted by the techical explanations of engineers.
+**Engineers** should do their best to learn and understand the software
+building and how to produce more quality, maintanability, flexibility
+and stability with the least effort involved and with lowest resources.
+We as engineers should as well really understand the domain we are working on and be
+aware of the environment in which we operate, company strategy and short
+and long terms goals ... and lots of other things.
+Goal of listing all of these responsibilities is not to make proper or
+correct list but to give a glimpse at the fact that **all we
+have to do is to make users of our software not care about the
+software. And the way to achieve this is that you as company
+that is giving software tool to the users should care about that software so
+they don't have to.**
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@@ -1,7 +1,6 @@
layout: home
-<h1>Ivan Jovanovic in search for the next abstraction</h1>
{% include about_me.html %}
{% assign index = true %}
@@ -0,0 +1,8 @@
+layout: page
+title: "Quotes that inspire me along the jurney"
+date: 2012-01-22 23:27
+comments: true
+sharing: true
+footer: true

0 comments on commit 2fa6648

Please sign in to comment.