<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Helion-Prime Solutions blog</title>
	<atom:link href="http://blogs.helion-prime.com/feed" rel="self" type="application/rss+xml" />
	<link>http://blogs.helion-prime.com</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Mon, 10 May 2010 17:51:32 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>3 great ways to improve website usability</title>
		<link>http://blogs.helion-prime.com/2010/04/12/3-great-ways-to-improve-website-usability.html</link>
		<comments>http://blogs.helion-prime.com/2010/04/12/3-great-ways-to-improve-website-usability.html#comments</comments>
		<pubDate>Mon, 12 Apr 2010 12:10:39 +0000</pubDate>
		<dc:creator>vasiliy.kiryanov</dc:creator>
				<category><![CDATA[design]]></category>
		<category><![CDATA[web-development]]></category>

		<guid isPermaLink="false">http://blogs.helion-prime.com/?p=846</guid>
		<description><![CDATA[web heatmap systems
They have been used for displaying areas of a Web page most frequently scanned by visitors, and allow you to understand how people are using your website. This is quite useful to find layouts that don’t work as intended or areas that should be changed.

There are many open-source tools that you can integrate [...]]]></description>
			<content:encoded><![CDATA[<h2>web heatmap systems</h2>
<p>They have been used for displaying areas of a Web page most frequently scanned by visitors, and allow you to understand how people are using your website. This is quite useful to find layouts that don’t work as intended or areas that should be changed.</p>
<p><img src="http://blogs.helion-prime.com/wp-content/uploads/2010/04/heatmap_510.png" alt="heatmap screenshot" title="heatmap screenshot" width="506" height="268" class="alignnone size-full wp-image-850" /></p>
<p>There are many open-source tools that you can integrate into your site, free solutions and paid services with enormous amounts of features. Just make a Google search, and check few most appropriate solutions.</p>
<h2>user testing</h2>
<p><b>There are few steps: </b><br />
1. Understand what are your users, find out target group.<br />
2. Establish use cases of your system, main flows of your system like: site sing-up, password recovery, post search, etc.<br />
3. Ask some users from target group to go thru all use cases.</p>
<p><b>Few notes:</b><br />
Check where users stuck and simplify the flow.<br />
Ask simple questions, let them explain why they made something and if the result corresponded with the idea they had in mind.<br />
Ask them what functionality your site lack?<br />
Ask them what was hard to use on your site.</p>
<p>It can be hard to estimation how many users you may need for testing. Jeff Sauro wrote great article where explained why five users should be sufficient to find most of your interface problems.<br />
Check it: <a href="http://www.measuringusability.com/five-users.php">http://www.measuringusability.com/five-users.php</a></p>
<h2>log analysis/analytics</h2>
<p>You can get a lot of useful information that can make your site better by analyzing information from logs or by installing external tracking tools.</p>
<p>Features that can help to improve site usability:<br />
Visiting by days of week and rush hours,<br />
Domains/countries of hosts visitors,<br />
Most viewed posts and exit pages,<br />
Browsers used,<br />
HTTP errors,<br />
Screen size, etc.</p>
<h2>related links</h2>
<p>Scrolling and Attention : <a href="http://www.useit.com/alertbox/scrolling-attention.html">http://www.useit.com/alertbox/scrolling-attention.html</a><br />
Do users fail a task and still rate it as easy? : <a href="http://www.measuringusability.com/failed-sat.php">http://www.measuringusability.com/failed-sat.php</a></p>
<p>also I want to recommend 1 book that impressed me:<br />
<a href="http://www.amazon.com/gp/product/0321657292?ie=UTF8&#038;tag=usabil0b-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0321657292">Steve Krug’s &#8220;Rocket Surgery Made Easy: The Do-It-Yourself Guide to Finding and Fixing Usability Problems&#8221;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.helion-prime.com/2010/04/12/3-great-ways-to-improve-website-usability.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Deployment of Ruby on Rails applications on OpenBSD</title>
		<link>http://blogs.helion-prime.com/2010/04/05/deployment-of-ruby-on-rails-applications-on-openbsd.html</link>
		<comments>http://blogs.helion-prime.com/2010/04/05/deployment-of-ruby-on-rails-applications-on-openbsd.html#comments</comments>
		<pubDate>Mon, 05 Apr 2010 12:35:56 +0000</pubDate>
		<dc:creator>alex.shapovalov</dc:creator>
				<category><![CDATA[openBSD]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[RoR]]></category>

		<guid isPermaLink="false">http://blogs.helion-prime.com/?p=768</guid>
		<description><![CDATA[Preamble
In this post I will define typical production environment on OpenBSD OS for deployment of Ruby on Rails applications.
There are few common things:
1. The Ruby on Rails framework doesn&#8217;t  support concurrent running in multiple threads within the same process, and so to scale it and fully utilize available hardware we need to execute application [...]]]></description>
			<content:encoded><![CDATA[<h2>Preamble</h2>
<p>In this post I will define typical production environment on OpenBSD OS for deployment of Ruby on Rails applications.</p>
<p>There are few common things:<br />
1. The Ruby on Rails framework doesn&#8217;t  support concurrent running in multiple threads within the same process, and so to scale it and fully utilize available hardware we need to execute application in several processes.<br />
2. We need load-balancer to spread incoming requests between application instances.<br />
3. We need separate web-server to serve static content.</p>
<h2>Overall configuration</h2>
<p>At first all incoming HTTP requests from a clients come to httpd web-server, it servers all static content, and send other requests to HAProxy.<br />
HAProxy receives requests and selects free Thin instance, forwards the request to it, receives a response and passes it back to httpd.</p>
<p>Following diagram should give you basic understanding about common work of components :<br />
<img class="alignnone size-full wp-image-779" title="deployment diagram" src="http://blogs.helion-prime.com/wp-content/uploads/2010/03/deployment_diagram.png" alt="deployment diagram" width="465" height="502" /></p>
<h2>OpenBSD Httpd – standard OpenBSD web-server</h2>
<p>I suggest OpenBSD standard web-server as you can find it as part of OpenBSD base installation, it checked for security issues and being updated as part of OpenBSD. We will use it to serve static content and don&#8217;t bother our Thin servers.</p>
<p>file: httpd.conf</p>
<div class="codecolorer-container apache mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br /></div></td><td><div class="apache codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #00007f;">BindAddress</span> SERVER_IP_ADDRESS<br />
<br />
<span style="color: #adadad; font-style: italic;"># Dynamic Shared Object (DSO) Support</span><br />
<span style="color: #adadad; font-style: italic;"># caching proxy</span><br />
<span style="color: #00007f;">LoadModule</span> proxy_module /usr/lib/apache/modules/libproxy.so<br />
<br />
<span style="color: #adadad; font-style: italic;"># allow Symbolic Links for root of our static content and all sub-directories</span><br />
<br />
<span style="color: #00007f;">Options</span> +<span style="color: #0000ff;">FollowSymLinks</span><br />
<span style="color: #00007f;">ServerAdmin</span> ADMIN_EMAIL<br />
<br />
<span style="color: #adadad; font-style: italic;"># path to root of our static content</span><br />
<span style="color: #00007f;">DocumentRoot</span> /var/www/railsdocs/RAILS_PROJECT/public<br />
<span style="color: #00007f;">ServerName</span> SERVER_NAME<br />
<span style="color: #00007f;">ServerAlias</span> www.SERVER_NAME<br />
<br />
<span style="color: #adadad; font-style: italic;"># directories that contain static content (they excluded from dispatching to HAProxy)</span><br />
<span style="color: #00007f;">ProxyPass</span> /images !<br />
<span style="color: #00007f;">ProxyPass</span> /stylesheets !<br />
<span style="color: #00007f;">ProxyPass</span> /javascripts !<br />
<span style="color: #00007f;">ProxyPass</span> /<span style="color: #ff0000;">500</span>.html !<br />
<span style="color: #00007f;">ProxyPass</span> /<span style="color: #ff0000;">503</span>.html !<br />
<br />
<span style="color: #adadad; font-style: italic;"># address where to send and from receive requests (HAProxy listens that address)</span><br />
<span style="color: #00007f;">ProxyPass</span> / http://127.0.0.1:<span style="color: #ff0000;">4000</span>/<br />
<span style="color: #00007f;">ProxyPassReverse</span> / http://127.0.0.1:<span style="color: #ff0000;">4000</span>/<br />
<br />
<span style="color: #adadad; font-style: italic;"># Disallows remote servers to be mapped into the space of the local server.</span><br />
<span style="color: #00007f;">ProxyRequests</span> <span style="color: #0000ff;">Off</span><br />
<br />
<span style="color: #adadad; font-style: italic;"># Don't use incoming Host HTTP request header for proxy request.</span><br />
<span style="color: #00007f;">ProxyPreserveHost</span> <span style="color: #0000ff;">Off</span><br />
<br />
<span style="color: #00007f;">ErrorLog</span> logs/SERVER_NAME-error_log<br />
<span style="color: #00007f;">CustomLog</span> logs/SERVER_NAME-access_log common</div></td></tr></tbody></table></div>
<p>see for configuration details: man httpd</p>
<p><strong>For OpenBSD 4.6/4.6 -Stable</strong><br />
It&#8217;s the hard part, OpenBSD4.6 has a bug in mod_proxy module so &#8216;!&#8217; directive doesn&#8217;t work.<br />
You have to edit following file:  /usr/src/usr.sbin/httpd/src/modules/proxy/mod_proxy.c</p>
<p>Find method: static int proxy_trans(request_rec *r)<br />
in that method after condition: if (len &gt; 0) {<br />
add 2 string:</p>
<div class="codecolorer-container c mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="c codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>ent<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #202020;">real</span><span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #ff0000;">'!'</span> <span style="color: #339933;">&amp;&amp;</span> ent<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #202020;">real</span><span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #ff0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #b1b100;">return</span> DECLINED<span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>so final part of code:<br />
&#8230;</p>
<div class="codecolorer-container c mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="c codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>len <span style="color: #339933;">&gt;</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>ent<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #202020;">real</span><span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #ff0000;">'!'</span> <span style="color: #339933;">&amp;&amp;</span> ent<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #202020;">real</span><span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #ff0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #b1b100;">return</span> DECLINED<span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>&#8230;</p>
<p>Then recompile your system, it&#8217;s common procedure for following -stable so you should already know it otherwise see for details for building instructions: <a href="http://www.openbsd.org/faq/faq5.html">http://www.openbsd.org/faq/faq5.html</a></p>
<h2>Thin – high performance ruby web server</h2>
<p>We need some Ruby web-server, and it seems that at this time Thin provides best performance.<br />
At least we see such results on Thin homepage: <a href="http://code.macournoyer.com/thin/">http://code.macournoyer.com/thin/</a></p>
<p>file: start.sh</p>
<div class="codecolorer-container bash mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;"># start work instances</span><br />
thin start <span style="color: #660033;">-C</span> thin-production.yml</div></td></tr></tbody></table></div>
<p>file: thin-production.yml</p>
<div class="codecolorer-container yaml mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br /></div></td><td><div class="yaml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">---<br />
<span style="">environment</span>: production<br />
<br />
<span style="">port</span>: <span style="">4001</span><br />
<span style="">address</span>: 127.0.0.1<br />
<span style="">daemonize</span>: true<br />
<span style="">servers</span>: <span style="">4</span><br />
<br />
<span style="">chdir</span>: /var/www/railsdocs/RAILS_PROJECT<br />
<span style="">pid</span>: tmp/pids/thin.pid<br />
<span style="">log</span>: log/thin.log<br />
<br />
<span style="">user</span>: myuser<br />
<span style="">group</span>: mygroup<br />
<br />
<span style="">require</span>: <span class="br0">&#91;</span><span class="br0">&#93;</span></div></td></tr></tbody></table></div>
<p>see for configuration details: <a href="http://code.macournoyer.com/thin/usage/">http://code.macournoyer.com/thin/usage/</a></p>
<h2>HAproxy &#8211; TCP/ HTTP load balancer</h2>
<p>As Rails doesn&#8217;t  support concurrent running each incoming request should be assigned to a separate process. HAProxy can be configured to send only one request at a time to every Thin server, it will always pick instance that is not busy with something.</p>
<p>It provides bunch of other useful things like:<br />
– route HTTP requests depending on statically assigned cookies ;<br />
– switch to backup servers in the event a main one fails ;<br />
– accept connections to special ports dedicated to service monitoring ;<br />
– add/modify/delete HTTP headers both ways ;<br />
– block requests matching a particular pattern ;<br />
for full documentation see: <a href="http://haproxy.1wt.eu/#docs">http://haproxy.1wt.eu/#docs</a></p>
<p>note:<br />
If someone thinks that we could use nginx for that purpose check following performance comparison of HAProxy and Nginx:<br />
<a href="http://affectioncode.wordpress.com/2008/06/28/another-comparison-of-haproxy-and-nginx/">http://affectioncode.wordpress.com/2008/06/28/another-comparison-of-haproxy-and-nginx/</a></p>
<p>file: haproxy.cfg</p>
<div class="codecolorer-container bash mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">defaults<br />
log &nbsp; &nbsp; global<br />
mode &nbsp; &nbsp;http<br />
<br />
<span style="color: #666666; font-style: italic;"># provides more detailed information about HTTP contents, such as the request and some cookies</span><br />
option &nbsp;httplog<br />
<span style="color: #666666; font-style: italic;"># do not to log any session which didn't transfer any data</span><br />
option &nbsp;dontlognull<br />
<span style="color: #666666; font-style: italic;"># allow the proxy to break their persistence and redistribute connections in case of failure</span><br />
option &nbsp;redispatch<br />
<br />
<span style="color: #666666; font-style: italic;"># the number of attempts to reconnect after a connection failure to a server</span><br />
retries <span style="color: #000000;">3</span><br />
<br />
<span style="color: #666666; font-style: italic;"># the time we accept to wait for a connection to establish on a server</span><br />
contimeout &nbsp; &nbsp; &nbsp;<span style="color: #000000;">100000</span><br />
<span style="color: #666666; font-style: italic;"># the time we accept to wait for data from the client, or for the client to accept data</span><br />
clitimeout &nbsp; &nbsp; &nbsp;<span style="color: #000000;">100000</span><br />
<span style="color: #666666; font-style: italic;"># the time we accept to wait for data from the server, or for the server to accept data</span><br />
srvtimeout &nbsp; &nbsp; &nbsp;<span style="color: #000000;">100000</span><br />
<br />
listen project_proxy 127.0.0.1:<span style="color: #000000;">4000</span><br />
balance roundrobin<br />
<br />
<span style="color: #666666; font-style: italic;"># creates an HTTP 'X-Forwarded-For' header which contains the client's IP address.</span><br />
<span style="color: #666666; font-style: italic;"># This is useful to let the final web server know what the client address was</span><br />
option forwardfor<br />
<br />
<span style="color: #666666; font-style: italic;"># using “maxconn 1″ improves performance with Rails.</span><br />
<span style="color: #666666; font-style: italic;"># As Rails instance can process only 1 request “maxconn 1″ force HAProxy to select next free instance</span><br />
<br />
server &nbsp;app1_1 127.0.0.1:<span style="color: #000000;">4001</span> check inter <span style="color: #000000;">60000</span> rise <span style="color: #000000;">2</span> fall <span style="color: #000000;">5</span> maxconn <span style="color: #000000;">1</span><br />
server &nbsp;app1_2 127.0.0.1:<span style="color: #000000;">4002</span> check inter <span style="color: #000000;">60000</span> rise <span style="color: #000000;">2</span> fall <span style="color: #000000;">5</span> maxconn <span style="color: #000000;">1</span><br />
server &nbsp;app1_3 127.0.0.1:<span style="color: #000000;">4003</span> check inter <span style="color: #000000;">60000</span> rise <span style="color: #000000;">2</span> fall <span style="color: #000000;">5</span> maxconn <span style="color: #000000;">1</span><br />
server &nbsp;app1_4 127.0.0.1:<span style="color: #000000;">4004</span> check inter <span style="color: #000000;">60000</span> rise <span style="color: #000000;">2</span> fall <span style="color: #000000;">5</span> maxconn <span style="color: #000000;">1</span><br />
<br />
<span style="color: #666666; font-style: italic;"># httpd web-server will handle it in case of 503, 504 errors due to it's static content</span><br />
errorloc &nbsp; &nbsp;<span style="color: #000000;">503</span> &nbsp;http:<span style="color: #000000; font-weight: bold;">//</span>DOMAIN_NAME<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">503</span>.html<br />
errorloc &nbsp; &nbsp;<span style="color: #000000;">504</span> &nbsp;http:<span style="color: #000000; font-weight: bold;">//</span>DOMAIN_NAME<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">504</span>.html<br />
<br />
<span style="color: #666666; font-style: italic;"># statistics page thru http://127.0.0.1:8080</span><br />
listen stats 127.0.0.1:<span style="color: #000000;">8080</span><br />
balance roundrobin<br />
mode http<br />
stats uri &nbsp; <span style="color: #000000; font-weight: bold;">/</span></div></td></tr></tbody></table></div>
<p>see for configuration details: <a href="http://haproxy.1wt.eu/#docs">http://haproxy.1wt.eu/#docs</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.helion-prime.com/2010/04/05/deployment-of-ruby-on-rails-applications-on-openbsd.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>3 new great book you should read</title>
		<link>http://blogs.helion-prime.com/2010/04/02/3-new-great-book-you-should-read.html</link>
		<comments>http://blogs.helion-prime.com/2010/04/02/3-new-great-book-you-should-read.html#comments</comments>
		<pubDate>Fri, 02 Apr 2010 12:53:53 +0000</pubDate>
		<dc:creator>vasiliy.kiryanov</dc:creator>
				<category><![CDATA[be smart]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[design]]></category>

		<guid isPermaLink="false">http://blogs.helion-prime.com/?p=825</guid>
		<description><![CDATA[Rework
Jason Fried, and David Heinemeier Hansson&#8217;s  &#124; buy on Amazon
&#8220;Jason Fried and David Hansson follow their own advice in REWORK, laying bare the surprising philosophies at the core of 37signals&#8217; success and inspiring us to put them into practice. There&#8217;s no jargon or filler here just hundreds of brilliantly simple rules for success. Part [...]]]></description>
			<content:encoded><![CDATA[<h2>Rework</h2>
<p>Jason Fried, and David Heinemeier Hansson&#8217;s  | <a href="http://www.amazon.com/Rework-Jason-Fried/dp/0307463745/ref=pd_cp_b_1">buy on Amazon</a></p>
<p>&#8220;Jason Fried and David Hansson follow their own advice in REWORK, laying bare the surprising philosophies at the core of 37signals&#8217; success and inspiring us to put them into practice. There&#8217;s no jargon or filler here just hundreds of brilliantly simple rules for success. Part entrepreneurial handbook for the twenty-first century, part manifesto for anyone wondering how work really works in the modern age, REWORK is required reading for anyone tired of business platitudes.&#8221;<br />
<strong>&#8211;Chris Anderson, New York Times bestselling author of THE LONG TAIL and FREE</strong></p>
<h2>The Laws of Simplicity</h2>
<p>John Maeda&#8217;s | <a href="http://www.amazon.com/gp/product/0262134721?ie=UTF8&amp;tag=usabil0b-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0262134721">buy on Amazon</a></p>
<p>&#8220;Keep it simple, Stupid&#8221; is an old piece of advice, so much so that it&#8217;s often abbreviated as the &#8220;KISS principle.&#8221; But it&#8217;s advice that&#8217;s often ignored, and MIT Professor John Maeda aims to change that. . . . Designers and marketers will find Maeda&#8217;s book both interesting and useful&#8230;.&#8221;<br />
<strong>— New York Post</strong></p>
<h2>Rocket Surgery Made Easy: The Do-It-Yourself Guide to Finding and Fixing Usability Problems</h2>
<p>Steve Krug’s | <a href="http://www.amazon.com/gp/product/0321657292?ie=UTF8&amp;tag=usabil0b-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0321657292">buy on Amazon</a></p>
<p>“It&#8217;s been known for years that usability testing can dramatically improve products. But with a typical price tag of $5,000 to $10,000 for a usability consultant to conduct each round of tests, it rarely happens.</p>
<p>In this how-to companion to Don&#8217;t Make Me Think: A Common Sense Approach to Web Usability, Steve Krug spells out an approach to usability testing that anyone can easily apply to their own web site, application, or other product.</p>
<p>By paring the process of testing and fixing products down to its essentials, Rocket Surgery makes it realistic for teams to test early and often, catching problems while it&#8217;s still easy to fix them. Rocket Surgery Made Easy adds demonstration videos to the proven mix of clear writing, before-and-after examples, witty illustrations, and practical advice that made Don&#8217;t Make Me Think so popular.“<br />
<strong>&#8211; Amazon editorial</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.helion-prime.com/2010/04/02/3-new-great-book-you-should-read.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Top factors of software development cost</title>
		<link>http://blogs.helion-prime.com/2010/03/26/top-factors-of-software-development-cost.html</link>
		<comments>http://blogs.helion-prime.com/2010/03/26/top-factors-of-software-development-cost.html#comments</comments>
		<pubDate>Fri, 26 Mar 2010 12:09:46 +0000</pubDate>
		<dc:creator>henadiy.atroshko</dc:creator>
				<category><![CDATA[business]]></category>

		<guid isPermaLink="false">http://blogs.helion-prime.com/?p=745</guid>
		<description><![CDATA[Location
It depends on where the software is built due to there are countries with cheap labor, tax benefits, etc.
To get valid results we should compare costs based on equal productivity of labor. The productivity estimation is a separate and hard task.
The outsourcing is not only about &#8220;Cost savings&#8221; it has number of advantages and disadvantages.
Check [...]]]></description>
			<content:encoded><![CDATA[<h2>Location</h2>
<p>It depends on where the software is built due to there are countries with cheap labor, tax benefits, etc.<br />
To get valid results we should compare costs based on equal productivity of labor. The productivity estimation is a separate and hard task.</p>
<p>The outsourcing is not only about &#8220;Cost savings&#8221; it has number of advantages and disadvantages.<br />
Check for details: <a href="http://en.wikipedia.org/wiki/Outsourcing">http://en.wikipedia.org/wiki/Outsourcing</a></p>
<h2>Duration</h2>
<p>The duration of development heavily impacts cost, and is not inversely to number of developers, there are at least 2 factors:<br />
1. Work can&#8217;t be divided intentionally into several independent parts.<br />
2. Developers should spend part of their time on interaction.</p>
<h2>Complexity</h2>
<p>The unit cost of software is different for software of different complexity.<br />
Think about corporate blog where bug can cause annoyance and bank(aerospace, medical) software where we can lose millions of dollars or people.</p>
<p>We should distinguish between accidental complexity and essential complexity.</p>
<p><strong>Accidental complexity</strong> relates to problems that we create on our own and can be fixed— for example, the details of writing and code optimization or platform related disadvantages for particular software development.</p>
<p><strong>Essential complexity</strong> is caused by the problem to be solved, and nothing can remove it— if customer wants  program with 10 different features, then those 10 things are essential and the program must do those 10 different things.</p>
<h2>Finish line</h2>
<p>I&#8217;ve noted 3 most influential factors and missed other 997, also some universities created complex theories of software price calculations. But the knowledge of life says that software cost estimation is still hard task and only previous experience together with risk management still work well.</p>
<p>Related information:<br />
<a href="http://en.wikipedia.org/wiki/Software_development_methodology">http://en.wikipedia.org/wiki/Software_development_methodology</a><br />
<a href="http://en.wikipedia.org/wiki/Project_management">http://en.wikipedia.org/wiki/Project_management</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.helion-prime.com/2010/03/26/top-factors-of-software-development-cost.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tools for easy user-interface(UI) prototyping</title>
		<link>http://blogs.helion-prime.com/2010/03/17/tools-for-easy-user-interfaceui-prototyping.html</link>
		<comments>http://blogs.helion-prime.com/2010/03/17/tools-for-easy-user-interfaceui-prototyping.html#comments</comments>
		<pubDate>Wed, 17 Mar 2010 16:22:06 +0000</pubDate>
		<dc:creator>vasiliy.kiryanov</dc:creator>
				<category><![CDATA[design]]></category>
		<category><![CDATA[web-development]]></category>

		<guid isPermaLink="false">http://blogs.helion-prime.com/?p=715</guid>
		<description><![CDATA[preamble
Every software development company needs special software to make prototypes of user-interface,
and it doesn’t mater if we do a new system or redesign of old one.
Often people say: they don’t need to prototype or they have special person for such tasks. Don’t believe them, it’s task of developers as well as writing tests.
If you still [...]]]></description>
			<content:encoded><![CDATA[<h2>preamble</h2>
<p>Every software development company needs special software to make prototypes of user-interface,<br />
and it doesn’t mater if we do a new system or redesign of old one.<br />
Often people say: they don’t need to prototype or they have special person for such tasks. Don’t believe them, it’s task of developers as well as writing tests.</p>
<p>If you still think differently about prototyping read famous book of Alan Kuper<br />
“The Inmates Are Running the Asylum” : <a href="http://www.amazon.com/Inmates-Are-Running-Asylum/dp/0672316498">http://www.amazon.com/Inmates-Are-Running-Asylum/dp/0672316498</a></p>
<h2>let&#8217;s do prototyping</h2>
<p>On Interaction Design Association (IxDA) [<a href="http://www.ixda.org/">http://www.ixda.org/</a>] discussion forum we can find that people use almost any tool to do prototyping: ACD Canvas, Microsoft Word, SmartDraw, Inspiration, Microsoft Power Point, etc.</p>
<p>First of all forget about software for graphic manipulations like: Adobe photoshop or Corell draw, then about software that don’t have any connection to prototyping at all. With such software you will lose your time, and will think that prototyping is hard work for designers.</p>
<p>There are big amount of commercial software to prototype user-interfaces.</p>
<p>As famous commercial software I can note:<br />
Axure: <a href="http://www.axure.com/">http://www.axure.com/</a><br />
Adobe inDesign: <a href="http://www.adobe.com/products/indesign/">http://www.adobe.com/products/indesign/</a><br />
Omnigraffle: <a href="http://www.omnigroup.com/products/omnigraffle/">http://www.omnigroup.com/products/omnigraffle/</a><br />
Pidoco: <a href="http://pidoco.com/en">http://pidoco.com/en</a></p>
<h2>great and free applications</h2>
<h3>Pencil</h3>
<p>site: <a href="http://www.evolus.vn/pencil/">http://www.evolus.vn/pencil/</a><br />
* Multi-page document with background page<br />
* Good text editing with rich-text supports<br />
* Exporting to HTML, PNG, Openoffice.org document, Word document and PDF.<br />
* Installing user-defined stencils and templates</p>
<p><img class="alignnone size-full wp-image-717" title="pencil editor" src="http://blogs.helion-prime.com/wp-content/uploads/2010/03/pencil.jpg" alt="pencil editor" width="475" height="313" /><br />
<br/></p>
<h3>Mockingbird</h3>
<p>site: <a href="http://gomockingbird.com/">http://gomockingbird.com/</a><br />
* Multi-page document<br />
* Good text editing<br />
* Exporting to PNG, and PDF.</p>
<p><img class="alignnone size-full wp-image-718" title="mockingbird editor" src="http://blogs.helion-prime.com/wp-content/uploads/2010/03/mockingbird.png" alt="mockingbird editor" width="475" height="329" /><br />
<br/></p>
<h3>Balsamiq Mockups</h3>
<p>site: <a href="http://www.balsamiq.com/products/mockups">http://www.balsamiq.com/products/mockups</a><br />
* No multi-page document, and background<br />
* Good text editing<br />
* Exporting only to PNG<br />
* Installing of user-defined elements only thru importing them as a pictures</p>
<p>additional feature: integration to popular project management tools</p>
<p><img class="alignnone size-full wp-image-719" title="balsamiq editor" src="http://blogs.helion-prime.com/wp-content/uploads/2010/03/balsamiq.png" alt="balsamiq editor" width="475" height="262" /><br />
<br/></p>
<h2>Still can&#8217;t select something</h2>
<p>As start point try Pencil: <a href="http://www.evolus.vn/pencil/">http://www.evolus.vn/pencil/</a><br />
It should meet all you basic expectations and save your money. </p>
<p>If you prefer to have commercial software that contain all features you ever wanted then try Axure:<br />
<a href="http://www.axure.com/">http://www.axure.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.helion-prime.com/2010/03/17/tools-for-easy-user-interfaceui-prototyping.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
