<?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>Eduardo Silva Pereira</title>
	<atom:link href="http://edsiper.linuxchile.cl/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://edsiper.linuxchile.cl/blog</link>
	<description>edsiper's personal website</description>
	<lastBuildDate>Thu, 17 May 2012 01:37:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>New look for Monkey web site</title>
		<link>http://edsiper.linuxchile.cl/blog/2012/05/16/new-look-for-monkey-web-site/</link>
		<comments>http://edsiper.linuxchile.cl/blog/2012/05/16/new-look-for-monkey-web-site/#comments</comments>
		<pubDate>Thu, 17 May 2012 01:37:00 +0000</pubDate>
		<dc:creator>Eduardo Silva</dc:creator>
				<category><![CDATA[Announces]]></category>
		<category><![CDATA[Monkey]]></category>
		<guid isPermaLink="false">http://edsiper.linuxchile.cl/blog/?p=696</guid>
12345		<description><![CDATA[<p style="text-align: left;"><a href="http://monkey-project.com">Monkey Project</a> web site has been updated today, it now have a 2.0 look plus a cleaner interface.</p>
<p style="text-align: left;"><a href="http://edsiper.linuxchile.cl/blog/wp-content/uploads/2012/05/monkey_home_0011.png"><img class="aligncenter size-full wp-image-699" title="monkey_home_001" src="http://edsiper.linuxchile.cl/blog/wp-content/uploads/2012/05/monkey_home_0011.png" alt="" width="536" height="531" /></a><br />
Its good to mention also that the same site is serve by Monkey <img src='http://edsiper.linuxchile.cl/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;"><a href="http://monkey-project.com">Monkey Project</a> web site has been updated today, it now have a 2.0 look plus a cleaner interface.</p>
<p style="text-align: left;"><a href="http://edsiper.linuxchile.cl/blog/wp-content/uploads/2012/05/monkey_home_0011.png"><img class="aligncenter size-full wp-image-699" title="monkey_home_001" src="http://edsiper.linuxchile.cl/blog/wp-content/uploads/2012/05/monkey_home_0011.png" alt="" width="536" height="531" /></a><br />
Its good to mention also that the same site is serve by Monkey <img src='http://edsiper.linuxchile.cl/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://edsiper.linuxchile.cl/blog/2012/05/16/new-look-for-monkey-web-site/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dear lazy web: I need an automovil expert</title>
		<link>http://edsiper.linuxchile.cl/blog/2012/05/01/dear-lazy-web-i-need-an-automovil-expert/</link>
		<comments>http://edsiper.linuxchile.cl/blog/2012/05/01/dear-lazy-web-i-need-an-automovil-expert/#comments</comments>
		<pubDate>Tue, 01 May 2012 21:14:48 +0000</pubDate>
		<dc:creator>Eduardo Silva</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">http://edsiper.linuxchile.cl/blog/?p=688</guid>
12345		<description><![CDATA[<p>I need some assistance to purchase the right replacement for my car, if you can give me a hand it will be more than appreciated:</p>
<p>My car:</p>
<ul>
<li>Kia Sportage GE &#8217;97 (made in America)</li>
<li>Failure: flywheel</li>
</ul>
<p>This is my flywheel:</p>
<p><a href="http://edsiper.linuxchile.cl/blog/wp-content/uploads/2012/05/flywheel.jpg"><img class="aligncenter size-medium wp-image-689" title="flywheel" src="http://edsiper.linuxchile.cl/blog/wp-content/uploads/2012/05/flywheel-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>the Flywheel have two sides, one with teeths and the other with a small squares. My teeth side is almost broken so i need to change the whole part, Googling a bit i found some vendors from the US that can ship the replacement but no one is able to confirm if the part is about both sides or just one of them. Its a very old car so they do not have full specs about each part.</p>
<p>Would you please point me to the right vendor  to purchase the whole part ?, any help is appreciated.</p>
]]></description>
			<content:encoded><![CDATA[<p>I need some assistance to purchase the right replacement for my car, if you can give me a hand it will be more than appreciated:</p>
<p>My car:</p>
<ul>
<li>Kia Sportage GE &#8217;97 (made in America)</li>
<li>Failure: flywheel</li>
</ul>
<p>This is my flywheel:</p>
<p><a href="http://edsiper.linuxchile.cl/blog/wp-content/uploads/2012/05/flywheel.jpg"><img class="aligncenter size-medium wp-image-689" title="flywheel" src="http://edsiper.linuxchile.cl/blog/wp-content/uploads/2012/05/flywheel-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>the Flywheel have two sides, one with teeths and the other with a small squares. My teeth side is almost broken so i need to change the whole part, Googling a bit i found some vendors from the US that can ship the replacement but no one is able to confirm if the part is about both sides or just one of them. Its a very old car so they do not have full specs about each part.</p>
<p>Would you please point me to the right vendor  to purchase the whole part ?, any help is appreciated.</p>
]]></content:encoded>
			<wfw:commentRss>http://edsiper.linuxchile.cl/blog/2012/05/01/dear-lazy-web-i-need-an-automovil-expert/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Monkey HTTP Daemon / Google Summer of Code 2012</title>
		<link>http://edsiper.linuxchile.cl/blog/2012/03/17/monkey-http-daemon-google-summer-of-code-2012/</link>
		<comments>http://edsiper.linuxchile.cl/blog/2012/03/17/monkey-http-daemon-google-summer-of-code-2012/#comments</comments>
		<pubDate>Sat, 17 Mar 2012 03:56:24 +0000</pubDate>
		<dc:creator>Eduardo Silva</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">http://edsiper.linuxchile.cl/blog/?p=668</guid>
12345		<description><![CDATA[<p><img class="alignleft" src="http://monkey-project.com/monkey_head_64x53.png" alt="" width="64" height="53" />This year have been very exciting for <a href="http://monkey-project.com">Monkey Project</a>, we are implementing cool features for our next v1.0 release and today we got the most great news that we could expect:</p>
<p>&nbsp;</p>
<blockquote>
<p style="text-align: center; padding-left: 30px;"><em><a href="http://www.google-melange.com/gsoc/org/google/gsoc2012/monkey">Your Organization Application for &#8220;Monkey HTTP Daemon&#8221; in<br />
Google Summer of Code 2012 has been accepted.</a></em></p>
</blockquote>
<p style="text-align: left;">Today begins a new stage for our project, after thousands of work hours and many years putting our best effort, we are finally being recognized internationally as a strong community with serious objectives and delivering a high quality product. This is a great opportunity to grow in different aspects of the project: organization, community and software improvement.</p>
<p style="text-align: left;">We invite to any student around the world to apply for our organization, we are committed to improve the server side of the web, we deal with embedded devices, performance, scalability, networking, and many cool stuff , innovation is one of our primary focus. Please review our project ideas site:</p>
<ul>
<li><a href="http://monkey-project.com/gsoc2012/ideas">http://monkey-project.com/gsoc2012/ideas</a></li>
</ul>
<p style="text-align: left;">If you think that the web can still be improved, we are in the same page and we are looking to hear from you, meet us on irc.freenode.net #monkey or through our <a href="http://lists.monkey-project.com/listinfo/monkey">mailing list</a></p>
]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://monkey-project.com/monkey_head_64x53.png" alt="" width="64" height="53" />This year have been very exciting for <a href="http://monkey-project.com">Monkey Project</a>, we are implementing cool features for our next v1.0 release and today we got the most great news that we could expect:</p>
<p>&nbsp;</p>
<blockquote>
<p style="text-align: center; padding-left: 30px;"><em><a href="http://www.google-melange.com/gsoc/org/google/gsoc2012/monkey">Your Organization Application for &#8220;Monkey HTTP Daemon&#8221; in<br />
Google Summer of Code 2012 has been accepted.</a></em></p>
</blockquote>
<p style="text-align: left;">Today begins a new stage for our project, after thousands of work hours and many years putting our best effort, we are finally being recognized internationally as a strong community with serious objectives and delivering a high quality product. This is a great opportunity to grow in different aspects of the project: organization, community and software improvement.</p>
<p style="text-align: left;">We invite to any student around the world to apply for our organization, we are committed to improve the server side of the web, we deal with embedded devices, performance, scalability, networking, and many cool stuff , innovation is one of our primary focus. Please review our project ideas site:</p>
<ul>
<li><a href="http://monkey-project.com/gsoc2012/ideas">http://monkey-project.com/gsoc2012/ideas</a></li>
</ul>
<p style="text-align: left;">If you think that the web can still be improved, we are in the same page and we are looking to hear from you, meet us on irc.freenode.net #monkey or through our <a href="http://lists.monkey-project.com/listinfo/monkey">mailing list</a></p>
]]></content:encoded>
			<wfw:commentRss>http://edsiper.linuxchile.cl/blog/2012/03/17/monkey-http-daemon-google-summer-of-code-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Duda: web services framework for Monkey</title>
		<link>http://edsiper.linuxchile.cl/blog/2012/03/13/duda-web-services-framework-for-monkey/</link>
		<comments>http://edsiper.linuxchile.cl/blog/2012/03/13/duda-web-services-framework-for-monkey/#comments</comments>
		<pubDate>Tue, 13 Mar 2012 21:40:26 +0000</pubDate>
		<dc:creator>Eduardo Silva</dc:creator>
				<category><![CDATA[Announces]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Monkey]]></category>
		<guid isPermaLink="false">http://edsiper.linuxchile.cl/blog/?p=664</guid>
12345		<description><![CDATA[<p>[OBS: this is a repost from <a href="http://blog.monkey-project.com/2012/03/13/duda-web-services-framework-for-monkey/">http://blog.monkey-project.com/2012/03/13/duda-web-services-framework-for-monkey/</a>]</p>
<p>There is one fact: we are in exciting times for the project. Our <a href="http://monkey-project.com">HTTP</a> core is consolidated since a while ago, it works in non-blocking mode, it has a nice indented configuration model and provide an advanced API to extend the core behavior, through this we support different behaviors by layers like IPv4, IPv6, SSL encription, security by subnets, basic auth, shell, log writer, etc.</p>
<p>There is a common question from people around the project: &#8220;where are you going ?&#8221; and the answer is: do you see that embedded Linux Box ?, there&#8217;s where we go. Common web servers lack of performance for embedded systems, most of them have focused in high production environments. our focus is different.</p>
<p>Our tech world is service oriented and i would say that implemented through a fat HTTP software stack, simple things are done in scripting languages that requires a process context or even be ran in a JVM environment, that is not lightweight and requires extra resources to be scalable. If you plan to implement a web service for embedded you should start forgetting about Java and PHP and think in lightweight options. Please Google a little about the options available and then continue reading here.</p>
<p><span id="more-664"></span></p>
<p>I am pleased to announce <strong>Duda</strong>, a web services framework built on top of Monkey, is event-driven oriented and expose a friendly C API for the implementation of web services. It goals are performance and easy deployment. It target Linux embedded devices based on ARM (x86 and x64). It implementations is licensed under the LGPL so it allows to link your private web service with our GPL product.</p>
<div id="attachment_2229" class="wp-caption aligncenter" style="width: 410px"><a href="http://blog.monkey-project.com/wp-content/uploads/2012/03/duda_stack1.png"><img class="size-full wp-image-2229" title="Duda stack overview" src="http://blog.monkey-project.com/wp-content/uploads/2012/03/duda_stack1.png" alt="" width="400" height="129" /></a><p class="wp-caption-text">Duda stack overview</p></div>
<p style="text-align: left;">&nbsp;</p>
<p style="text-align: left;">There are many mechanisms to achieve a great performance, but talking in an embedded context the primary answer will be: do it in C. <strong>Duda</strong> and it&#8217;s API is made for C developers looking for an event-driven framework supporting URI maps and callbacks. We define an URI map as follows:</p>
<blockquote>
<pre style="text-align: left; padding-left: 30px;">/webservice_name/interface/method/param_1/param_2/param_N</pre>
</blockquote>
<ul>
<li><span style="text-decoration: underline;">webservice_name</span>: the web service name, a short name like &#8216;myapp&#8217;</li>
<li><span style="text-decoration: underline;">interface:</span> an interface group a set of methods, think it like a main class, mostly for ordering purposes.</li>
<li><span style="text-decoration: underline;">method:</span> a routine who take cares of the main request, this is mapped internally by a callback and is able to send response data</li>
<li><span style="text-decoration: underline;">param:</span> parameters passed through the URI, it&#8217;s limited to 16 parameters per request.</li>
</ul>
<p>&nbsp;</p>
<p>If you desire to pass a huge amount of data, you can consider using the POST HTTP method, <strong>Duda</strong> supports <strong>JSON</strong> in case you wanted to use it.</p>
<p><strong>Performance: Duda v/s NodeJS</strong></p>
<p>Now how we compare Duda versus the NodeJS framework ?: Duda is for C developers looking for achieve performance with low resources usage, NodeJS is for javascript developers who wanted to write server side implementations. You could claim that NodeJS is pretty faster compared to Apache.. and let me tell you that any non-blocking implementation will be faster than Apache, but.. could be a Javascript engine be faster than something written in C ?, the answer is <strong>NO.</strong> You can great things with NodeJS, but this last one is not the ultimate solution.</p>
<p>For the following tests i have created a NodeJS script with 5 workers (same as monkey) which replies a &#8220;Hello World!\n&#8221; string (13 bytes)</p>
<p><strong>Requests per second</strong></p>
<p>I have done the easiest bechmark test with Apache benchmark: 50000 request with 100 concurrents hitting the hello world of each server:</p>
<div id="attachment_2331" class="wp-caption aligncenter" style="width: 410px"><a href="http://blog.monkey-project.com/wp-content/uploads/2012/03/duda_vs_node_reqs.png"><img class="size-full wp-image-2331" title="duda_vs_node_reqs" src="http://blog.monkey-project.com/wp-content/uploads/2012/03/duda_vs_node_reqs.png" alt="" width="400" height="300" /></a><p class="wp-caption-text">Duda + Monkey is 24% faster than NodeJS</p></div>
<p style="text-align: center;">&nbsp;</p>
<p><strong>Total transferred bytes</strong></p>
<p>Something is wrong here, why Monkey transferred almost twice bytes than NodeJS ?, looking at the response header we can see that NodeJS is being tricky, its not sending the HTTP Date header, i expected the framework do this by its own.</p>
<div id="attachment_2355" class="wp-caption aligncenter" style="width: 410px"><a href="http://blog.monkey-project.com/wp-content/uploads/2012/03/duda_vs_node_transferred.png"><img class="size-full wp-image-2355" title="duda_vs_node_transferred" src="http://blog.monkey-project.com/wp-content/uploads/2012/03/duda_vs_node_transferred.png" alt="" width="400" height="300" /></a><p class="wp-caption-text">Duda + Monkey sent twice of data and we continue being faster</p></div>
<p><strong>Memory Usage</strong></p>
<p>Its importan to know how much memory is using each service when is running, check the results and</p>
<div id="attachment_2367" class="wp-caption aligncenter" style="width: 560px"><a href="http://blog.monkey-project.com/wp-content/uploads/2012/03/duda_vs_node_memusage.png"><img class="size-full wp-image-2367" title="duda_vs_node_memusage" src="http://blog.monkey-project.com/wp-content/uploads/2012/03/duda_vs_node_memusage.png" alt="" width="550" height="304" /></a><p class="wp-caption-text">Duda + Monkey only uses 264KB while NodeJS requires 35MB</p></div>
<p style="text-align: center;">&nbsp;</p>
<p style="text-align: left;">A graphical comparison of Memory usage:</p>
<div id="attachment_2397" class="wp-caption aligncenter" style="width: 410px"><a href="http://blog.monkey-project.com/wp-content/uploads/2012/03/duda_vs_node_bytes2.png"><img class="size-full wp-image-2397" title="duda_vs_node_bytes" src="http://blog.monkey-project.com/wp-content/uploads/2012/03/duda_vs_node_bytes2.png" alt="" width="400" height="300" /></a><p class="wp-caption-text">35MB isn&#39;t too much ?</p></div>
<p style="text-align: left;">&nbsp;</p>
<p style="text-align: left;"><strong>Conclusion</strong></p>
<p style="text-align: left;">Duda since it&#8217;s beginning is hitting a huge performance, is ready for embedded due to it lightweight nature. We are hard working to implement required features such as Redis, Memcache, MySQL and others. All of this is part of Monkey v1.0 so stay tuned. We keep rocking, and now harder <img src='http://edsiper.linuxchile.cl/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p style="text-align: left;">&nbsp;</p>
<p style="text-align: left;"><strong>[UPDATE]</strong></p>
<ul>
<li>You can get the Apache Benchmark results and code for each services from <a href="http://edsiper.linuxchile.cl/duda_test.tar.gz">here</a></li>
</ul>
]]></description>
			<content:encoded><![CDATA[<p>[OBS: this is a repost from <a href="http://blog.monkey-project.com/2012/03/13/duda-web-services-framework-for-monkey/">http://blog.monkey-project.com/2012/03/13/duda-web-services-framework-for-monkey/</a>]</p>
<p>There is one fact: we are in exciting times for the project. Our <a href="http://monkey-project.com">HTTP</a> core is consolidated since a while ago, it works in non-blocking mode, it has a nice indented configuration model and provide an advanced API to extend the core behavior, through this we support different behaviors by layers like IPv4, IPv6, SSL encription, security by subnets, basic auth, shell, log writer, etc.</p>
<p>There is a common question from people around the project: &#8220;where are you going ?&#8221; and the answer is: do you see that embedded Linux Box ?, there&#8217;s where we go. Common web servers lack of performance for embedded systems, most of them have focused in high production environments. our focus is different.</p>
<p>Our tech world is service oriented and i would say that implemented through a fat HTTP software stack, simple things are done in scripting languages that requires a process context or even be ran in a JVM environment, that is not lightweight and requires extra resources to be scalable. If you plan to implement a web service for embedded you should start forgetting about Java and PHP and think in lightweight options. Please Google a little about the options available and then continue reading here.</p>
<p><span id="more-664"></span></p>
<p>I am pleased to announce <strong>Duda</strong>, a web services framework built on top of Monkey, is event-driven oriented and expose a friendly C API for the implementation of web services. It goals are performance and easy deployment. It target Linux embedded devices based on ARM (x86 and x64). It implementations is licensed under the LGPL so it allows to link your private web service with our GPL product.</p>
<div id="attachment_2229" class="wp-caption aligncenter" style="width: 410px"><a href="http://blog.monkey-project.com/wp-content/uploads/2012/03/duda_stack1.png"><img class="size-full wp-image-2229" title="Duda stack overview" src="http://blog.monkey-project.com/wp-content/uploads/2012/03/duda_stack1.png" alt="" width="400" height="129" /></a><p class="wp-caption-text">Duda stack overview</p></div>
<p style="text-align: left;">&nbsp;</p>
<p style="text-align: left;">There are many mechanisms to achieve a great performance, but talking in an embedded context the primary answer will be: do it in C. <strong>Duda</strong> and it&#8217;s API is made for C developers looking for an event-driven framework supporting URI maps and callbacks. We define an URI map as follows:</p>
<blockquote>
<pre style="text-align: left; padding-left: 30px;">/webservice_name/interface/method/param_1/param_2/param_N</pre>
</blockquote>
<ul>
<li><span style="text-decoration: underline;">webservice_name</span>: the web service name, a short name like &#8216;myapp&#8217;</li>
<li><span style="text-decoration: underline;">interface:</span> an interface group a set of methods, think it like a main class, mostly for ordering purposes.</li>
<li><span style="text-decoration: underline;">method:</span> a routine who take cares of the main request, this is mapped internally by a callback and is able to send response data</li>
<li><span style="text-decoration: underline;">param:</span> parameters passed through the URI, it&#8217;s limited to 16 parameters per request.</li>
</ul>
<p>&nbsp;</p>
<p>If you desire to pass a huge amount of data, you can consider using the POST HTTP method, <strong>Duda</strong> supports <strong>JSON</strong> in case you wanted to use it.</p>
<p><strong>Performance: Duda v/s NodeJS</strong></p>
<p>Now how we compare Duda versus the NodeJS framework ?: Duda is for C developers looking for achieve performance with low resources usage, NodeJS is for javascript developers who wanted to write server side implementations. You could claim that NodeJS is pretty faster compared to Apache.. and let me tell you that any non-blocking implementation will be faster than Apache, but.. could be a Javascript engine be faster than something written in C ?, the answer is <strong>NO.</strong> You can great things with NodeJS, but this last one is not the ultimate solution.</p>
<p>For the following tests i have created a NodeJS script with 5 workers (same as monkey) which replies a &#8220;Hello World!\n&#8221; string (13 bytes)</p>
<p><strong>Requests per second</strong></p>
<p>I have done the easiest bechmark test with Apache benchmark: 50000 request with 100 concurrents hitting the hello world of each server:</p>
<div id="attachment_2331" class="wp-caption aligncenter" style="width: 410px"><a href="http://blog.monkey-project.com/wp-content/uploads/2012/03/duda_vs_node_reqs.png"><img class="size-full wp-image-2331" title="duda_vs_node_reqs" src="http://blog.monkey-project.com/wp-content/uploads/2012/03/duda_vs_node_reqs.png" alt="" width="400" height="300" /></a><p class="wp-caption-text">Duda + Monkey is 24% faster than NodeJS</p></div>
<p style="text-align: center;">&nbsp;</p>
<p><strong>Total transferred bytes</strong></p>
<p>Something is wrong here, why Monkey transferred almost twice bytes than NodeJS ?, looking at the response header we can see that NodeJS is being tricky, its not sending the HTTP Date header, i expected the framework do this by its own.</p>
<div id="attachment_2355" class="wp-caption aligncenter" style="width: 410px"><a href="http://blog.monkey-project.com/wp-content/uploads/2012/03/duda_vs_node_transferred.png"><img class="size-full wp-image-2355" title="duda_vs_node_transferred" src="http://blog.monkey-project.com/wp-content/uploads/2012/03/duda_vs_node_transferred.png" alt="" width="400" height="300" /></a><p class="wp-caption-text">Duda + Monkey sent twice of data and we continue being faster</p></div>
<p><strong>Memory Usage</strong></p>
<p>Its importan to know how much memory is using each service when is running, check the results and</p>
<div id="attachment_2367" class="wp-caption aligncenter" style="width: 560px"><a href="http://blog.monkey-project.com/wp-content/uploads/2012/03/duda_vs_node_memusage.png"><img class="size-full wp-image-2367" title="duda_vs_node_memusage" src="http://blog.monkey-project.com/wp-content/uploads/2012/03/duda_vs_node_memusage.png" alt="" width="550" height="304" /></a><p class="wp-caption-text">Duda + Monkey only uses 264KB while NodeJS requires 35MB</p></div>
<p style="text-align: center;">&nbsp;</p>
<p style="text-align: left;">A graphical comparison of Memory usage:</p>
<div id="attachment_2397" class="wp-caption aligncenter" style="width: 410px"><a href="http://blog.monkey-project.com/wp-content/uploads/2012/03/duda_vs_node_bytes2.png"><img class="size-full wp-image-2397" title="duda_vs_node_bytes" src="http://blog.monkey-project.com/wp-content/uploads/2012/03/duda_vs_node_bytes2.png" alt="" width="400" height="300" /></a><p class="wp-caption-text">35MB isn&#39;t too much ?</p></div>
<p style="text-align: left;">&nbsp;</p>
<p style="text-align: left;"><strong>Conclusion</strong></p>
<p style="text-align: left;">Duda since it&#8217;s beginning is hitting a huge performance, is ready for embedded due to it lightweight nature. We are hard working to implement required features such as Redis, Memcache, MySQL and others. All of this is part of Monkey v1.0 so stay tuned. We keep rocking, and now harder <img src='http://edsiper.linuxchile.cl/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p style="text-align: left;">&nbsp;</p>
<p style="text-align: left;"><strong>[UPDATE]</strong></p>
<ul>
<li>You can get the Apache Benchmark results and code for each services from <a href="http://edsiper.linuxchile.cl/duda_test.tar.gz">here</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://edsiper.linuxchile.cl/blog/2012/03/13/duda-web-services-framework-for-monkey/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Education, limits and conscience&#8230;</title>
		<link>http://edsiper.linuxchile.cl/blog/2012/02/22/education-limits-and-conscience/</link>
		<comments>http://edsiper.linuxchile.cl/blog/2012/02/22/education-limits-and-conscience/#comments</comments>
		<pubDate>Wed, 22 Feb 2012 17:17:08 +0000</pubDate>
		<dc:creator>Eduardo Silva</dc:creator>
				<category><![CDATA[Articles]]></category>
		<guid isPermaLink="false">http://edsiper.linuxchile.cl/blog/?p=651</guid>
12345		<description><![CDATA[<p>I have seen a few videos about the paradigms of the education model and how we lives&#8230; i cannot stop thinking about that things are really wrong about how we are educated, how we manage our life and how we will be fine working in the others dreams, but what about ours ?. Often when people grow smile less, get depressed and not all of them are able to see the light and get some happiness&#8230; this is not ok and should not be something common&#8230;</p>
<p>When you are a child your imagination does not have limits, when you grow you are instructed to limit the scope of your imagination to what you just have to learn, i do not say that teaching is bad, i say that the knowledge must be share but also people should be inspired to be connected  with the &#8220;creativity&#8221;, I consider the creativity a state of collective conscience where everything already exists, when you &#8220;create something&#8221; you are just being able to pick up a piece of that conscience, commonly named an &#8220;idea&#8221;.</p>
<p>Also if we see how we commonly work i would describe two scenarios: people working in a company and people working by their own. When you work for a company you are mostly working in the other person dreams, at least you share the same vision and feel part of what is being done. For people doing their own stuff  or working as independent, they are trying to reach their dreams. There is nothing wrong with the mentioned scenarios, except when you do not share the same vision or you are not able to &#8220;create&#8221; due to &#8220;limits&#8221; imposed.</p>
<p>Said that, i can conclude that the main problem is the education model, because you are educated about how to think, what to accept and then what to do to work. Would not be a coincidence that some successful people in the tech area broke their traditional educational model and then were able to create great things ?: Steve Jobs, Bill Gates, Mark Zuckerberg.. no one of them continue their studies, they just took ideas, connected points, imagine an improved work scenario, connected people.. etc.  I do not know if they were or are happy, but i am sure that they are satisfied with their archived goals&#8230;</p>
<p>Talking about educational models I cannot omit to mention One Laptop Per Child project, just to reminder it is not about cheap laptops, it is about access to the information and have an extra tool to help to explore and create.. you should review the success of this project with children in different countries&#8230;leave them a time alone and you will realize the amazing things that they do&#8230;</p>
<p>As this is just &#8220;my truth, I would suggest to watch the following videos, get your own conclusions:</p>
<ul>
<li><a href="http://www.youtube.com/watch?v=Z78aaeJR8no">Ken Robinson &#8211; Changing Paradigms</a></li>
<li><a href="http://vimeo.com/32646756">Tom Preston Werner &#8211; Optimizing for Happiness</a></li>
<li><a href="http://www.youtube.com/watch?feature=endscreen&amp;NR=1&amp;v=o_QTFPdnrjY">Steven Johnson &#8211; Where good ideas come from ?</a></li>
</ul>
<p>This is not just about do what you want to do, it is about to wake up your conscience and listen your self&#8230; we can do something better for our kids and our selfs&#8230;</p>
<p>&nbsp;</p>
]]></description>
			<content:encoded><![CDATA[<p>I have seen a few videos about the paradigms of the education model and how we lives&#8230; i cannot stop thinking about that things are really wrong about how we are educated, how we manage our life and how we will be fine working in the others dreams, but what about ours ?. Often when people grow smile less, get depressed and not all of them are able to see the light and get some happiness&#8230; this is not ok and should not be something common&#8230;</p>
<p>When you are a child your imagination does not have limits, when you grow you are instructed to limit the scope of your imagination to what you just have to learn, i do not say that teaching is bad, i say that the knowledge must be share but also people should be inspired to be connected  with the &#8220;creativity&#8221;, I consider the creativity a state of collective conscience where everything already exists, when you &#8220;create something&#8221; you are just being able to pick up a piece of that conscience, commonly named an &#8220;idea&#8221;.</p>
<p>Also if we see how we commonly work i would describe two scenarios: people working in a company and people working by their own. When you work for a company you are mostly working in the other person dreams, at least you share the same vision and feel part of what is being done. For people doing their own stuff  or working as independent, they are trying to reach their dreams. There is nothing wrong with the mentioned scenarios, except when you do not share the same vision or you are not able to &#8220;create&#8221; due to &#8220;limits&#8221; imposed.</p>
<p>Said that, i can conclude that the main problem is the education model, because you are educated about how to think, what to accept and then what to do to work. Would not be a coincidence that some successful people in the tech area broke their traditional educational model and then were able to create great things ?: Steve Jobs, Bill Gates, Mark Zuckerberg.. no one of them continue their studies, they just took ideas, connected points, imagine an improved work scenario, connected people.. etc.  I do not know if they were or are happy, but i am sure that they are satisfied with their archived goals&#8230;</p>
<p>Talking about educational models I cannot omit to mention One Laptop Per Child project, just to reminder it is not about cheap laptops, it is about access to the information and have an extra tool to help to explore and create.. you should review the success of this project with children in different countries&#8230;leave them a time alone and you will realize the amazing things that they do&#8230;</p>
<p>As this is just &#8220;my truth, I would suggest to watch the following videos, get your own conclusions:</p>
<ul>
<li><a href="http://www.youtube.com/watch?v=Z78aaeJR8no">Ken Robinson &#8211; Changing Paradigms</a></li>
<li><a href="http://vimeo.com/32646756">Tom Preston Werner &#8211; Optimizing for Happiness</a></li>
<li><a href="http://www.youtube.com/watch?feature=endscreen&amp;NR=1&amp;v=o_QTFPdnrjY">Steven Johnson &#8211; Where good ideas come from ?</a></li>
</ul>
<p>This is not just about do what you want to do, it is about to wake up your conscience and listen your self&#8230; we can do something better for our kids and our selfs&#8230;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://edsiper.linuxchile.cl/blog/2012/02/22/education-limits-and-conscience/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Online courses from Stanford University</title>
		<link>http://edsiper.linuxchile.cl/blog/2011/11/23/online-courses-from-stanford-university/</link>
		<comments>http://edsiper.linuxchile.cl/blog/2011/11/23/online-courses-from-stanford-university/#comments</comments>
		<pubDate>Wed, 23 Nov 2011 14:43:01 +0000</pubDate>
		<dc:creator>Eduardo Silva</dc:creator>
				<category><![CDATA[Announces]]></category>
		<guid isPermaLink="false">http://edsiper.linuxchile.cl/blog/?p=639</guid>
12345		<description><![CDATA[<p>FYI: The <a href="http://www.stanford.edu/">Stanford University</a> will start doing some public and free classes on their web site starting on January 2012, for more details check the following links:</p>
<h4>Entrepreneurship</h4>
<ul>
<li><a href="http://www.launchpad-class.org/">Lean Launchpad</a></li>
<li><a href="http://www.venture-class.org/">Technology Entrepreneurship</a></li>
</ul>
<h4>Civil Engineering</h4>
<ul>
<li><a href="http://www.greenbuilding-class.org/">Making Green Buildings</a></li>
</ul>
<h4>Electrical Engineering</h4>
<ul>
<li><a href="http://www.infotheory-class.org/">Information Theory</a></li>
</ul>
<h4>Computer Science</h4>
<ul>
<li><a href="http://www.cs101-class.org/">CS 101</a></li>
<li><a href="http://jan2012.ml-class.org/">Machine Learning</a></li>
<li><a href="http://www.saas-class.org/">Software as a Service</a></li>
<li><a href="http://www.hci-class.org/">Human-Computer Interaction</a></li>
<li><a href="http://www.nlp-class.org/">Natural Language Processing</a></li>
<li><a href="http://www.game-theory-class.org/">Game Theory</a></li>
<li><a href="http://www.pgm-class.org/">Probabilistic Graphical Models</a></li>
<li><a href="http://www.crypto-class.org/">Cryptography</a></li>
<li><a href="http://www.algo-class.org/">Design and Analysis of Algorithms I</a></li>
</ul>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></description>
			<content:encoded><![CDATA[<p>FYI: The <a href="http://www.stanford.edu/">Stanford University</a> will start doing some public and free classes on their web site starting on January 2012, for more details check the following links:</p>
<h4>Entrepreneurship</h4>
<ul>
<li><a href="http://www.launchpad-class.org/">Lean Launchpad</a></li>
<li><a href="http://www.venture-class.org/">Technology Entrepreneurship</a></li>
</ul>
<h4>Civil Engineering</h4>
<ul>
<li><a href="http://www.greenbuilding-class.org/">Making Green Buildings</a></li>
</ul>
<h4>Electrical Engineering</h4>
<ul>
<li><a href="http://www.infotheory-class.org/">Information Theory</a></li>
</ul>
<h4>Computer Science</h4>
<ul>
<li><a href="http://www.cs101-class.org/">CS 101</a></li>
<li><a href="http://jan2012.ml-class.org/">Machine Learning</a></li>
<li><a href="http://www.saas-class.org/">Software as a Service</a></li>
<li><a href="http://www.hci-class.org/">Human-Computer Interaction</a></li>
<li><a href="http://www.nlp-class.org/">Natural Language Processing</a></li>
<li><a href="http://www.game-theory-class.org/">Game Theory</a></li>
<li><a href="http://www.pgm-class.org/">Probabilistic Graphical Models</a></li>
<li><a href="http://www.crypto-class.org/">Cryptography</a></li>
<li><a href="http://www.algo-class.org/">Design and Analysis of Algorithms I</a></li>
</ul>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://edsiper.linuxchile.cl/blog/2011/11/23/online-courses-from-stanford-university/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Infocast 8 + Chumby OpenEmbedded (Angstrom Linux Kernel)</title>
		<link>http://edsiper.linuxchile.cl/blog/2011/11/18/infocast-8-chumby-openembedded-angstrom-linux-kernel/</link>
		<comments>http://edsiper.linuxchile.cl/blog/2011/11/18/infocast-8-chumby-openembedded-angstrom-linux-kernel/#comments</comments>
		<pubDate>Fri, 18 Nov 2011 13:12:35 +0000</pubDate>
		<dc:creator>Eduardo Silva</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">http://edsiper.linuxchile.cl/blog/?p=622</guid>
12345		<description><![CDATA[<p>Last few days i was playing with an <a href="http://www.chumby.com/pages/infocast">Infocast 8&#8243;</a>, the goal was to change the base OS provided by <a href="http://www.insigniaproducts.com/connected/infocast.html">Insignia Inc.</a> and replace it with the <a href="http://www.angstrom-distribution.org/">Angstrom Linux Kernel</a> provided by the <a href="http://wiki.chumby.com/index.php/Building_OpenEmbedded_(Beta)">Chumby OpenEmbedded</a> packages builder. For some reason there&#8217;s no similar images available for download.</p>
<div id="attachment_623" class="wp-caption aligncenter" style="width: 310px"><a href="http://edsiper.linuxchile.cl/blog/wp-content/uploads/2011/11/infocast_ftdi.jpg"><img class="size-medium wp-image-623" title="infocast_ftdi" src="http://edsiper.linuxchile.cl/blog/wp-content/uploads/2011/11/infocast_ftdi-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">FTDI Interface</p></div>
<p>&nbsp;</p>
<p>After doing minor tweaks to the <a href="https://github.com/clearwater/chumby-oe/">chumby-oe</a> project, get some help from <a href="https://github.com/guyc">Guy Carpenter</a> (thanks!) and fix some bitbake files, i managed to create a new bootable image with Wifi support (i mention this because the Marvel wifi chip requires some specific firmware files)</p>
<div id="attachment_626" class="wp-caption aligncenter" style="width: 310px"><a href="http://edsiper.linuxchile.cl/blog/wp-content/uploads/2011/11/infocast_booting.jpg"><img class="size-medium wp-image-626" title="infocast_booting" src="http://edsiper.linuxchile.cl/blog/wp-content/uploads/2011/11/infocast_booting-300x225.jpg" alt="Infocast 8 booting" width="300" height="225" /></a><p class="wp-caption-text">Infocast 8 booting Angstrom Linux Kernel</p></div>
<p>Now connect to the Wifi AP is a little tricky, you need to set something in the following order:</p>
<blockquote><p># iwpriv mlan0 setregioncode 0&#215;10<br />
# ifconfig mlan0 up<br />
# iwconfig mlan0 mode managed<br />
# iwconfig mlan0 key YOUR_WEP_KEY<br />
# iwconfig mlan0 key on<br />
# iwconfig mlan0 essid YOUR_ESSID<br />
# udhcpc -i mlan0</p></blockquote>
<p>After that you will be able to connect to your AP and have network access.</p>
<p>You can download the ROM image from <a href="http://edsiper.linuxchile.cl/chumby-silvermoon/rom-chumby-silvermoon-chumby-starter-image.img">here</a>, or if you prefer, you can <a href="http://edsiper.linuxchile.cl/chumby-silvermoon/">browse the whole content</a>. Once you get the ROM image you need to <em>burn it </em>into the internal 2G SD Card, you can do it with: dd if=<a href="http://edsiper.linuxchile.cl/chumby-silvermoon/rom-chumby-silvermoon-chumby-starter-image.img">rom-chumby-silvermoon-chumby-starter-image.img</a> of=/dev/sdX bs=8M. Make sure before to run the <em>dd</em> command, do a manual umount for each partition.</p>
]]></description>
			<content:encoded><![CDATA[<p>Last few days i was playing with an <a href="http://www.chumby.com/pages/infocast">Infocast 8&#8243;</a>, the goal was to change the base OS provided by <a href="http://www.insigniaproducts.com/connected/infocast.html">Insignia Inc.</a> and replace it with the <a href="http://www.angstrom-distribution.org/">Angstrom Linux Kernel</a> provided by the <a href="http://wiki.chumby.com/index.php/Building_OpenEmbedded_(Beta)">Chumby OpenEmbedded</a> packages builder. For some reason there&#8217;s no similar images available for download.</p>
<div id="attachment_623" class="wp-caption aligncenter" style="width: 310px"><a href="http://edsiper.linuxchile.cl/blog/wp-content/uploads/2011/11/infocast_ftdi.jpg"><img class="size-medium wp-image-623" title="infocast_ftdi" src="http://edsiper.linuxchile.cl/blog/wp-content/uploads/2011/11/infocast_ftdi-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">FTDI Interface</p></div>
<p>&nbsp;</p>
<p>After doing minor tweaks to the <a href="https://github.com/clearwater/chumby-oe/">chumby-oe</a> project, get some help from <a href="https://github.com/guyc">Guy Carpenter</a> (thanks!) and fix some bitbake files, i managed to create a new bootable image with Wifi support (i mention this because the Marvel wifi chip requires some specific firmware files)</p>
<div id="attachment_626" class="wp-caption aligncenter" style="width: 310px"><a href="http://edsiper.linuxchile.cl/blog/wp-content/uploads/2011/11/infocast_booting.jpg"><img class="size-medium wp-image-626" title="infocast_booting" src="http://edsiper.linuxchile.cl/blog/wp-content/uploads/2011/11/infocast_booting-300x225.jpg" alt="Infocast 8 booting" width="300" height="225" /></a><p class="wp-caption-text">Infocast 8 booting Angstrom Linux Kernel</p></div>
<p>Now connect to the Wifi AP is a little tricky, you need to set something in the following order:</p>
<blockquote><p># iwpriv mlan0 setregioncode 0&#215;10<br />
# ifconfig mlan0 up<br />
# iwconfig mlan0 mode managed<br />
# iwconfig mlan0 key YOUR_WEP_KEY<br />
# iwconfig mlan0 key on<br />
# iwconfig mlan0 essid YOUR_ESSID<br />
# udhcpc -i mlan0</p></blockquote>
<p>After that you will be able to connect to your AP and have network access.</p>
<p>You can download the ROM image from <a href="http://edsiper.linuxchile.cl/chumby-silvermoon/rom-chumby-silvermoon-chumby-starter-image.img">here</a>, or if you prefer, you can <a href="http://edsiper.linuxchile.cl/chumby-silvermoon/">browse the whole content</a>. Once you get the ROM image you need to <em>burn it </em>into the internal 2G SD Card, you can do it with: dd if=<a href="http://edsiper.linuxchile.cl/chumby-silvermoon/rom-chumby-silvermoon-chumby-starter-image.img">rom-chumby-silvermoon-chumby-starter-image.img</a> of=/dev/sdX bs=8M. Make sure before to run the <em>dd</em> command, do a manual umount for each partition.</p>
]]></content:encoded>
			<wfw:commentRss>http://edsiper.linuxchile.cl/blog/2011/11/18/infocast-8-chumby-openembedded-angstrom-linux-kernel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Monkey ? NodeJS ?, when &amp; where&#8230;</title>
		<link>http://edsiper.linuxchile.cl/blog/2011/11/08/monkey-nodejs-when-where/</link>
		<comments>http://edsiper.linuxchile.cl/blog/2011/11/08/monkey-nodejs-when-where/#comments</comments>
		<pubDate>Wed, 09 Nov 2011 01:58:57 +0000</pubDate>
		<dc:creator>Eduardo Silva</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Monkey]]></category>
		<guid isPermaLink="false">http://edsiper.linuxchile.cl/blog/?p=578</guid>
12345		<description><![CDATA[<p>I can not omit the huge impact that the <a href="http://www.nodejs.org">NodeJS project</a> is having as a server side solution with performance and features for new projects nowadays. As i wrote yesterday, i attended the <a href="http://startechconf.com">Startechconf</a> and at least two companies are putting their efforts to move to <a href="http://nodejs.org">NodeJS</a> as backend solution for their web infraestructure in a few projects: <a href="http://www.yahoo.com">Yahoo</a> and <a href="http://forkhq.com">ForkHQ</a>.</p>
<p>I did not know too much about <a href="http://nodejs.org">NodeJS</a>, so i dedicated some time to read the documentation and papers available, so being a web server side guy i would like to share my opinion, because i listen too much about that <em>everybody must move to <a href="http://nodejs.org">NodeJS</a>. </em></p>
<p>The primary feature of NodeJS is that provides a framework  based in a language thats handled by thousands of people: Javascript, if you are a real web developer you know what is JavaScript and you know how to deal with it, so you can jump directly from the client to the server side and write your own implementation, based on an event driven infrastructure with reduced I/O and better performance than dynamic content generators available such as <a href="http://www.ruby-lang.com">Ruby</a>, <a href="http://www.python.org">Python</a> or <a href="http://www.php.net">PHP</a>.  It&#8217;s pretty interesting as technology which expose new possibilities to improve backend sides, but you must know when and where to use it.</p>
<p>The good thing is that Node abstract you from the dirty low level concepts of a web server like threading, shared memory, asynchronous sockets, reduced I/O, etc. But this have a cost, this is not magic, is just cool, because it works and have demonstrated to perform very well and have a level of trust as is written on top of <a href="http://code.google.com/p/v8/">V8 JavaScript engine</a> supported by <a href="http://www.google.com">Google</a>. The cost of an event driven solution is that if for some reason the program have an exception, the whole service will block or even crash depending of the case, so you must be aware because if something similar happen. As an example, if some Apache context fails, it will kill the process or thread and start a new one, which is not the case of a common event driven web server. What happen if you have 1000 connections transferring data and the program fail ?, it will be critical, and this things happens when working in high production environment, if you have 50 requests per day you are safe and you can stop reading now <img src='http://edsiper.linuxchile.cl/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Node fills fine if you have thousands of incoming connections and your computing time is reduced, but if you will work with some complexity querying a database, doing some memcache or similar, you should start considering different options.</p>
<p>From now i start talking about solutions for really higher performance, Node is fast, but you cannot compare it with <a href="http://httpd.apache.org">Apache</a>, because <a href="http://httpd.apache.org">Apache</a> is the slowest web server available, compare it with <a href="http://www.nginx.org">NginX</a> or <a href="http://monkey-project.com">Monkey</a>. I will do a test now using the Apache Benchmark Utility comparing the <a href="http://nodejs.org">NodeJS</a> <em>hello world</em> example against Monkey which will serve a file which contains the <em>Hello World</em> message, the benchmark utility will perform 100.000 requests through 5000 concurrent connections.</p>
<blockquote><p><strong>NodeJS Benchmark</strong></p>
<p>edsiper@monotop:/home/edsiper/# ab -n 100000 -c 5000 http://localhost:8888/<br />
This is ApacheBench, Version 2.3 &lt;$Revision: 655654 $&gt;<br />
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/<br />
Licensed to The Apache Software Foundation, http://www.apache.org/<br />
Benchmarking localhost (be patient)</p>
<p>Completed 10000 requests<br />
Completed 20000 requests<br />
Completed 30000 requests<br />
Completed 40000 requests<br />
Completed 50000 requests<br />
Completed 60000 requests<br />
Completed 70000 requests<br />
Completed 80000 requests<br />
Completed 90000 requests<br />
Completed 100000 requests<br />
Finished 100000 requests</p>
<p>Server Software:<br />
Server Hostname:        localhost<br />
Server Port:            8888<br />
Document Path:          /<br />
Document Length:        11 bytes</p>
<p>Concurrency Level: 5000<br />
Time taken for tests: 9.403 seconds<br />
Complete requests: 99747<br />
Failed requests: 0<br />
Write errors: 0<br />
Total transferred: 7481025 bytes<br />
HTML transferred: 1097217 bytes<br />
<span style="color: #ff0000;"><strong>Requests per second: 10608.48 [#/sec] (mean)</strong></span><br />
Time per request: 471.321 [ms] (mean)<br />
Time per request: 0.094 [ms] (mean, across all concurrent requests)<br />
Transfer rate: 776.99 [Kbytes/sec] received</p>
<p>&nbsp;</p></blockquote>
<p>The <a href="http://www.nodejs.org">NodeJS</a> server was capable to serve <strong><span style="color: #ff0000;">10608 requests per second</span></strong> and took <span style="color: #003366;"><strong>9 seconds</strong></span> to serve the 100.000 requests. Now let&#8217;s see how <a href="http://monkey-project.com">Monkey</a> did&#8230;</p>
<p>&nbsp;</p>
<blockquote><p><strong>Monkey HTTP Daemon Benchmark</strong></p>
<p>edsiper@monotop:/home/edsiper/# ab -n 100000 -c 5000 http://localhost:2001/h.txt<br />
This is ApacheBench, Version 2.3 &lt;$Revision: 655654 $&gt;<br />
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/<br />
Licensed to The Apache Software Foundation, http://www.apache.org/<br />
Benchmarking localhost (be patient)</p>
<p>Completed 10000 requests<br />
Completed 20000 requests<br />
Completed 30000 requests<br />
Completed 40000 requests<br />
Completed 50000 requests<br />
Completed 60000 requests<br />
Completed 70000 requests<br />
Completed 80000 requests<br />
Completed 90000 requests<br />
Completed 100000 requests<br />
Finished 100000 requests</p>
<p>Server Software:        Monkey/0.30.0<br />
Server Hostname:        localhost<br />
Server Port:            2001<br />
Document Path:          /h.txt<br />
Document Length:        13 bytes<br />
Concurrency Level:      5000<br />
Time taken for tests:   5.718 seconds<br />
Complete requests:      100000<br />
Failed requests:        0<br />
Write errors:           0<br />
Total transferred:      20300000 bytes<br />
HTML transferred:       1300000 bytes<br />
<span style="color: #ff0000;"><strong>Requests per second:    17489.54 [#/sec] (mean)</strong></span><br />
Time per request:       285.885 [ms] (mean)<br />
Time per request:       0.057 [ms] (mean, across all concurrent requests)<br />
Transfer rate:          3467.16 [Kbytes/sec] received</p></blockquote>
<p>&nbsp;</p>
<p>Monkey did <strong><span style="color: #ff0000;">17.489 requests per second</span></strong> and took <strong><span style="color: #003366;">5.7 seconds</span></strong> to serve the 100.000 requests. Ooops! <img src='http://edsiper.linuxchile.cl/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>&nbsp;</p>
<p>The impressive results are even better, because Monkey performed 100.000 I/O to retrieve a file from the hard disk and also send a couple of extra bytes one each response (Monkey does not cache file contents or metadata). Serve a file is a slow process due to I/O, so i will do a test later with the same case serving some fixed content through a plugin (something similar to what Node is doing in the test example).</p>
<p>What am trying to say here, is that depending of what are you trying to accomplish and the complexity of your backend., NodeJS can be the solution for your environment as well you could need something even more scalable like <a href="http://monkey-project.com">Monkey</a>, but the learning curve of NodeJS is short and the learning curve of Monkey is a little high, but this last one  provides a better performance because all is <strong>well written</strong> in C, as well any extension through the C API interface requires some knowledge which in NodeJS are hidden, you have to balance between goals, knowledge, learning curve and deadlines.</p>
<p>[UPDATE]:</p>
<ul>
<li>Joe provide me a new code to launch Node with multiple workers, so Node increase the performance, the new values were updated.</li>
</ul>
]]></description>
			<content:encoded><![CDATA[<p>I can not omit the huge impact that the <a href="http://www.nodejs.org">NodeJS project</a> is having as a server side solution with performance and features for new projects nowadays. As i wrote yesterday, i attended the <a href="http://startechconf.com">Startechconf</a> and at least two companies are putting their efforts to move to <a href="http://nodejs.org">NodeJS</a> as backend solution for their web infraestructure in a few projects: <a href="http://www.yahoo.com">Yahoo</a> and <a href="http://forkhq.com">ForkHQ</a>.</p>
<p>I did not know too much about <a href="http://nodejs.org">NodeJS</a>, so i dedicated some time to read the documentation and papers available, so being a web server side guy i would like to share my opinion, because i listen too much about that <em>everybody must move to <a href="http://nodejs.org">NodeJS</a>. </em></p>
<p>The primary feature of NodeJS is that provides a framework  based in a language thats handled by thousands of people: Javascript, if you are a real web developer you know what is JavaScript and you know how to deal with it, so you can jump directly from the client to the server side and write your own implementation, based on an event driven infrastructure with reduced I/O and better performance than dynamic content generators available such as <a href="http://www.ruby-lang.com">Ruby</a>, <a href="http://www.python.org">Python</a> or <a href="http://www.php.net">PHP</a>.  It&#8217;s pretty interesting as technology which expose new possibilities to improve backend sides, but you must know when and where to use it.</p>
<p>The good thing is that Node abstract you from the dirty low level concepts of a web server like threading, shared memory, asynchronous sockets, reduced I/O, etc. But this have a cost, this is not magic, is just cool, because it works and have demonstrated to perform very well and have a level of trust as is written on top of <a href="http://code.google.com/p/v8/">V8 JavaScript engine</a> supported by <a href="http://www.google.com">Google</a>. The cost of an event driven solution is that if for some reason the program have an exception, the whole service will block or even crash depending of the case, so you must be aware because if something similar happen. As an example, if some Apache context fails, it will kill the process or thread and start a new one, which is not the case of a common event driven web server. What happen if you have 1000 connections transferring data and the program fail ?, it will be critical, and this things happens when working in high production environment, if you have 50 requests per day you are safe and you can stop reading now <img src='http://edsiper.linuxchile.cl/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Node fills fine if you have thousands of incoming connections and your computing time is reduced, but if you will work with some complexity querying a database, doing some memcache or similar, you should start considering different options.</p>
<p>From now i start talking about solutions for really higher performance, Node is fast, but you cannot compare it with <a href="http://httpd.apache.org">Apache</a>, because <a href="http://httpd.apache.org">Apache</a> is the slowest web server available, compare it with <a href="http://www.nginx.org">NginX</a> or <a href="http://monkey-project.com">Monkey</a>. I will do a test now using the Apache Benchmark Utility comparing the <a href="http://nodejs.org">NodeJS</a> <em>hello world</em> example against Monkey which will serve a file which contains the <em>Hello World</em> message, the benchmark utility will perform 100.000 requests through 5000 concurrent connections.</p>
<blockquote><p><strong>NodeJS Benchmark</strong></p>
<p>edsiper@monotop:/home/edsiper/# ab -n 100000 -c 5000 http://localhost:8888/<br />
This is ApacheBench, Version 2.3 &lt;$Revision: 655654 $&gt;<br />
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/<br />
Licensed to The Apache Software Foundation, http://www.apache.org/<br />
Benchmarking localhost (be patient)</p>
<p>Completed 10000 requests<br />
Completed 20000 requests<br />
Completed 30000 requests<br />
Completed 40000 requests<br />
Completed 50000 requests<br />
Completed 60000 requests<br />
Completed 70000 requests<br />
Completed 80000 requests<br />
Completed 90000 requests<br />
Completed 100000 requests<br />
Finished 100000 requests</p>
<p>Server Software:<br />
Server Hostname:        localhost<br />
Server Port:            8888<br />
Document Path:          /<br />
Document Length:        11 bytes</p>
<p>Concurrency Level: 5000<br />
Time taken for tests: 9.403 seconds<br />
Complete requests: 99747<br />
Failed requests: 0<br />
Write errors: 0<br />
Total transferred: 7481025 bytes<br />
HTML transferred: 1097217 bytes<br />
<span style="color: #ff0000;"><strong>Requests per second: 10608.48 [#/sec] (mean)</strong></span><br />
Time per request: 471.321 [ms] (mean)<br />
Time per request: 0.094 [ms] (mean, across all concurrent requests)<br />
Transfer rate: 776.99 [Kbytes/sec] received</p>
<p>&nbsp;</p></blockquote>
<p>The <a href="http://www.nodejs.org">NodeJS</a> server was capable to serve <strong><span style="color: #ff0000;">10608 requests per second</span></strong> and took <span style="color: #003366;"><strong>9 seconds</strong></span> to serve the 100.000 requests. Now let&#8217;s see how <a href="http://monkey-project.com">Monkey</a> did&#8230;</p>
<p>&nbsp;</p>
<blockquote><p><strong>Monkey HTTP Daemon Benchmark</strong></p>
<p>edsiper@monotop:/home/edsiper/# ab -n 100000 -c 5000 http://localhost:2001/h.txt<br />
This is ApacheBench, Version 2.3 &lt;$Revision: 655654 $&gt;<br />
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/<br />
Licensed to The Apache Software Foundation, http://www.apache.org/<br />
Benchmarking localhost (be patient)</p>
<p>Completed 10000 requests<br />
Completed 20000 requests<br />
Completed 30000 requests<br />
Completed 40000 requests<br />
Completed 50000 requests<br />
Completed 60000 requests<br />
Completed 70000 requests<br />
Completed 80000 requests<br />
Completed 90000 requests<br />
Completed 100000 requests<br />
Finished 100000 requests</p>
<p>Server Software:        Monkey/0.30.0<br />
Server Hostname:        localhost<br />
Server Port:            2001<br />
Document Path:          /h.txt<br />
Document Length:        13 bytes<br />
Concurrency Level:      5000<br />
Time taken for tests:   5.718 seconds<br />
Complete requests:      100000<br />
Failed requests:        0<br />
Write errors:           0<br />
Total transferred:      20300000 bytes<br />
HTML transferred:       1300000 bytes<br />
<span style="color: #ff0000;"><strong>Requests per second:    17489.54 [#/sec] (mean)</strong></span><br />
Time per request:       285.885 [ms] (mean)<br />
Time per request:       0.057 [ms] (mean, across all concurrent requests)<br />
Transfer rate:          3467.16 [Kbytes/sec] received</p></blockquote>
<p>&nbsp;</p>
<p>Monkey did <strong><span style="color: #ff0000;">17.489 requests per second</span></strong> and took <strong><span style="color: #003366;">5.7 seconds</span></strong> to serve the 100.000 requests. Ooops! <img src='http://edsiper.linuxchile.cl/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>&nbsp;</p>
<p>The impressive results are even better, because Monkey performed 100.000 I/O to retrieve a file from the hard disk and also send a couple of extra bytes one each response (Monkey does not cache file contents or metadata). Serve a file is a slow process due to I/O, so i will do a test later with the same case serving some fixed content through a plugin (something similar to what Node is doing in the test example).</p>
<p>What am trying to say here, is that depending of what are you trying to accomplish and the complexity of your backend., NodeJS can be the solution for your environment as well you could need something even more scalable like <a href="http://monkey-project.com">Monkey</a>, but the learning curve of NodeJS is short and the learning curve of Monkey is a little high, but this last one  provides a better performance because all is <strong>well written</strong> in C, as well any extension through the C API interface requires some knowledge which in NodeJS are hidden, you have to balance between goals, knowledge, learning curve and deadlines.</p>
<p>[UPDATE]:</p>
<ul>
<li>Joe provide me a new code to launch Node with multiple workers, so Node increase the performance, the new values were updated.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://edsiper.linuxchile.cl/blog/2011/11/08/monkey-nodejs-when-where/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Startechconf was a great event!</title>
		<link>http://edsiper.linuxchile.cl/blog/2011/11/07/startechconf-was-a-great-event/</link>
		<comments>http://edsiper.linuxchile.cl/blog/2011/11/07/startechconf-was-a-great-event/#comments</comments>
		<pubDate>Mon, 07 Nov 2011 13:23:18 +0000</pubDate>
		<dc:creator>Eduardo Silva</dc:creator>
				<category><![CDATA[Talks]]></category>
		<guid isPermaLink="false">http://edsiper.linuxchile.cl/blog/?p=542</guid>
12345		<description><![CDATA[<p>The past weekend i attended the <a href="http://www.startechconf.com">@startechconf</a> to give a talk about <a href="http://www.monkey-project.com">Monkey Project</a> with <a href="http://twitter.com/sxd">Jonathan Gonzalez</a> called <em>&#8220;Monkey, HTTP Server everywhere&#8221;. </em>But let&#8217;s talk about the event it self..</p>
<p>The psychical place where the event was done, was in the Santa Maria University in Santiago, the chosen place was really nice, 1 big conference room which split in 3 parts for later hold the parallel track sessions. Outside of the conference room, exists a ground where you can talk with each other, take some sun (others a nap), lunch and maybe drink some beer (will describe above).</p>
<p>There were different teams helping to develop the event, i can remember people from the following teams: Security, Support, Presenters, Personal assistance (for international speakers who do not speak Spanish)..etc.  I would count no less than 120 people helping on this, so the event was something big. Just to mention that when i arrive the past Friday in the morning there were about 600 attendances and then after the accreditation&#8230;about 800.</p>
<p>I met very nice speakers, like <a href="http://caridy.name">Caridy Patino</a> (Yahoo Senior Search Engineer), <a href="http://twitter.com/headius">Charles Nutter</a> (leader of JRuby), <a href="http://twitter.com/stefsull">Stephanie Rewis</a> (Founder of <a href="http://www.w3conversions.com/">W3Conversions</a>), <a href="http://twitter.com/markramm">Mark Ramm</a> (Technical leader at <a href="http://sourceforge.net">Sourceforge.net</a>), <a href="http://twitter.com/janogonzalez">Jano Gonzalez</a> (Continuum Developer), Hannu Krosing (PostgreSQL hacker) and <a href="http://www.forkhq.com">Tomas Pollak</a> (creator of <a href="http://www.preyproject.com">Prey Project</a>). All speakers were very open and nicely, some of them dedicated a lot of time to talk with the attendances and get involved in different activities around the event, which is really good for all attendances, is not common that the whole events the speakers dedicate some time to talk to everyone (even drink a beer).</p>
<p>I went to a couple of sessions and i would like to remark four of them: <a href="http://caridy.name">Caridy</a> talked about how are they implementing Node.JS in Yahoo, before the talk we discussed a lot of what <a href="http://nodejs.org">Node.JS</a> is and where is going&#8230; seems like a strong competitor for web services is already around and positioning in huge production environments. The talk was pretty good, covering different details about business requirements and technical stuff as solutions. <a href="http://twitter.com/stefsull">Stephanie</a> (who opened the event, gave the first key note), talked about CSS3 ( i have to admit that i am not a fan of CSS, HTML, i use them&#8230; but well..), she gave a master class of new features of CSS3 and tips to provide nice user interfaces, as well how to deal with different browsers.<a href="http://scottchacon.com"> Scott Chacon</a> (author of <a href="http://progit.org">ProGit book</a>, and VP of <a href="http://www.github.com">GitHub</a>) gave an excellent speak about <a href="http://www.git-scm.com">GIT</a> with focus in trees and the reset command, very nice slides and well done presentation. And i would consider the talk of <a href="http://tom.preston-werner.com/">Tom Preston-Werner </a>(GitHub CTO) the one with a huge personal impact to me. He talked about <strong>optimizing for happiness</strong> in your daily job, and how the external and internal motivators act directly in benefit of your happiness (or maybe not). I felt very identified when he described a simple example: you go to the office, you do your work, back home and then you work (or hack) your personal projects, and i have to admit that&#8230; i am that guy.</p>
<p>The non-technical part, was really impressive that sponsor companies provided free beer for all attendances after each session day!, the two days ended with a beer party in the ground, this is not common, trust me, and is very valuable!, not just for the free beer, just for a different context where all attendances (including speakers and organization) could interact in a different way and relax. Also i can not omit to mention the effort putted by <a href="http://www.movistar.cl">Movistar</a> and (specially) <a href="http://www.microsoft.com">Microsoft</a> to make than more than 800 hackers disconnect from their laptops or geek devices to enjoy something different, if you attended the event you know what i am referring to <img src='http://edsiper.linuxchile.cl/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>This is the first time that i do not see any bad points in a conference, the organization did an excellent work, sometimes they look tired but always moving on, putting all their energies to have a successful event and it was. i just say THANK YOU! for have the opportunity to be part of this and enjoy a nice two days event.</p>
<p>I am sure that <strong>Startechconf 2012</strong> is something that&#8217;s coming, and i cannot imagine how it could be better than the first version. If you could not attend this year, please consider to prepare for the next one, because it will rock!</p>
]]></description>
			<content:encoded><![CDATA[<p>The past weekend i attended the <a href="http://www.startechconf.com">@startechconf</a> to give a talk about <a href="http://www.monkey-project.com">Monkey Project</a> with <a href="http://twitter.com/sxd">Jonathan Gonzalez</a> called <em>&#8220;Monkey, HTTP Server everywhere&#8221;. </em>But let&#8217;s talk about the event it self..</p>
<p>The psychical place where the event was done, was in the Santa Maria University in Santiago, the chosen place was really nice, 1 big conference room which split in 3 parts for later hold the parallel track sessions. Outside of the conference room, exists a ground where you can talk with each other, take some sun (others a nap), lunch and maybe drink some beer (will describe above).</p>
<p>There were different teams helping to develop the event, i can remember people from the following teams: Security, Support, Presenters, Personal assistance (for international speakers who do not speak Spanish)..etc.  I would count no less than 120 people helping on this, so the event was something big. Just to mention that when i arrive the past Friday in the morning there were about 600 attendances and then after the accreditation&#8230;about 800.</p>
<p>I met very nice speakers, like <a href="http://caridy.name">Caridy Patino</a> (Yahoo Senior Search Engineer), <a href="http://twitter.com/headius">Charles Nutter</a> (leader of JRuby), <a href="http://twitter.com/stefsull">Stephanie Rewis</a> (Founder of <a href="http://www.w3conversions.com/">W3Conversions</a>), <a href="http://twitter.com/markramm">Mark Ramm</a> (Technical leader at <a href="http://sourceforge.net">Sourceforge.net</a>), <a href="http://twitter.com/janogonzalez">Jano Gonzalez</a> (Continuum Developer), Hannu Krosing (PostgreSQL hacker) and <a href="http://www.forkhq.com">Tomas Pollak</a> (creator of <a href="http://www.preyproject.com">Prey Project</a>). All speakers were very open and nicely, some of them dedicated a lot of time to talk with the attendances and get involved in different activities around the event, which is really good for all attendances, is not common that the whole events the speakers dedicate some time to talk to everyone (even drink a beer).</p>
<p>I went to a couple of sessions and i would like to remark four of them: <a href="http://caridy.name">Caridy</a> talked about how are they implementing Node.JS in Yahoo, before the talk we discussed a lot of what <a href="http://nodejs.org">Node.JS</a> is and where is going&#8230; seems like a strong competitor for web services is already around and positioning in huge production environments. The talk was pretty good, covering different details about business requirements and technical stuff as solutions. <a href="http://twitter.com/stefsull">Stephanie</a> (who opened the event, gave the first key note), talked about CSS3 ( i have to admit that i am not a fan of CSS, HTML, i use them&#8230; but well..), she gave a master class of new features of CSS3 and tips to provide nice user interfaces, as well how to deal with different browsers.<a href="http://scottchacon.com"> Scott Chacon</a> (author of <a href="http://progit.org">ProGit book</a>, and VP of <a href="http://www.github.com">GitHub</a>) gave an excellent speak about <a href="http://www.git-scm.com">GIT</a> with focus in trees and the reset command, very nice slides and well done presentation. And i would consider the talk of <a href="http://tom.preston-werner.com/">Tom Preston-Werner </a>(GitHub CTO) the one with a huge personal impact to me. He talked about <strong>optimizing for happiness</strong> in your daily job, and how the external and internal motivators act directly in benefit of your happiness (or maybe not). I felt very identified when he described a simple example: you go to the office, you do your work, back home and then you work (or hack) your personal projects, and i have to admit that&#8230; i am that guy.</p>
<p>The non-technical part, was really impressive that sponsor companies provided free beer for all attendances after each session day!, the two days ended with a beer party in the ground, this is not common, trust me, and is very valuable!, not just for the free beer, just for a different context where all attendances (including speakers and organization) could interact in a different way and relax. Also i can not omit to mention the effort putted by <a href="http://www.movistar.cl">Movistar</a> and (specially) <a href="http://www.microsoft.com">Microsoft</a> to make than more than 800 hackers disconnect from their laptops or geek devices to enjoy something different, if you attended the event you know what i am referring to <img src='http://edsiper.linuxchile.cl/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>This is the first time that i do not see any bad points in a conference, the organization did an excellent work, sometimes they look tired but always moving on, putting all their energies to have a successful event and it was. i just say THANK YOU! for have the opportunity to be part of this and enjoy a nice two days event.</p>
<p>I am sure that <strong>Startechconf 2012</strong> is something that&#8217;s coming, and i cannot imagine how it could be better than the first version. If you could not attend this year, please consider to prepare for the next one, because it will rock!</p>
]]></content:encoded>
			<wfw:commentRss>http://edsiper.linuxchile.cl/blog/2011/11/07/startechconf-was-a-great-event/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Monkey] Startechconf: Monkey, HTTP Server everywhere!</title>
		<link>http://edsiper.linuxchile.cl/blog/2011/11/03/monkey-startechconf-monkey-http-server-everywhere/</link>
		<comments>http://edsiper.linuxchile.cl/blog/2011/11/03/monkey-startechconf-monkey-http-server-everywhere/#comments</comments>
		<pubDate>Thu, 03 Nov 2011 19:31:07 +0000</pubDate>
		<dc:creator>Eduardo Silva</dc:creator>
				<category><![CDATA[Monkey]]></category>
		<category><![CDATA[Talks]]></category>
		<guid isPermaLink="false">http://edsiper.linuxchile.cl/blog/?p=533</guid>
12345		<description><![CDATA[<p><a href="http://edsiper.linuxchile.cl/blog/wp-content/uploads/2011/11/startechconf-hd.png"><img class="alignleft size-medium wp-image-534" title="startechconf-hd" src="http://edsiper.linuxchile.cl/blog/wp-content/uploads/2011/11/startechconf-hd-300x113.png" alt="" width="300" height="113" /></a></p>
<p>This Friday and Saturday (Nov 4th &#8211; 5th), <a href="http://monkey-project.com">Monkey Project</a> will be present at the <a href="http://www.startechconf.com">Startechconf.com</a>, we will give a talk about the project goals, internals and current features. We are preparing a really nice presentation, including a few presents for the lucky attendances.</p>
<p>Do not forget to follow us at <a href="http://twitter.com/monkeywebserver">@monkeywebserver</a></p>
<p>&nbsp;</p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://edsiper.linuxchile.cl/blog/wp-content/uploads/2011/11/startechconf-hd.png"><img class="alignleft size-medium wp-image-534" title="startechconf-hd" src="http://edsiper.linuxchile.cl/blog/wp-content/uploads/2011/11/startechconf-hd-300x113.png" alt="" width="300" height="113" /></a></p>
<p>This Friday and Saturday (Nov 4th &#8211; 5th), <a href="http://monkey-project.com">Monkey Project</a> will be present at the <a href="http://www.startechconf.com">Startechconf.com</a>, we will give a talk about the project goals, internals and current features. We are preparing a really nice presentation, including a few presents for the lucky attendances.</p>
<p>Do not forget to follow us at <a href="http://twitter.com/monkeywebserver">@monkeywebserver</a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://edsiper.linuxchile.cl/blog/2011/11/03/monkey-startechconf-monkey-http-server-everywhere/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

