<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Chad Remesch</title>
	<atom:link href="http://remesch.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://remesch.com</link>
	<description></description>
	<lastBuildDate>Tue, 01 Sep 2015 22:43:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='remesch.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Chad Remesch</title>
		<link>http://remesch.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://remesch.com/osd.xml" title="Chad Remesch" />
	<atom:link rel='hub' href='http://remesch.com/?pushpress=hub'/>
	<item>
		<title>Oskie RPC &#8211; Network agnostic RPC</title>
		<link>http://remesch.com/2015/07/09/oskie-rpc-network-agnostic-rpc/</link>
		<comments>http://remesch.com/2015/07/09/oskie-rpc-network-agnostic-rpc/#comments</comments>
		<pubDate>Fri, 10 Jul 2015 02:14:52 +0000</pubDate>
		<dc:creator><![CDATA[chadrem]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://remesch.com/?p=192</guid>
		<description><![CDATA[Oskie RPC is a simple RPC library and protocol for Ruby.  Main features: Network agnostic: You provide it with input and receive output using whatever transport mechanism you prefer.  Typically this will be a TCP/IP connection. Simple protocol: Though it has been developed for Ruby, the network protocol is extremely simple and should work well [&#8230;]<img alt="" border="0" src="http://pixel.wp.com/b.gif?host=remesch.com&#038;blog=19355004&#038;post=192&#038;subd=remesch&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><a href="https://github.com/chadrem/oskie_rpc">Oskie RPC</a> is a simple RPC library and protocol for Ruby.  Main features:</p>
<p><strong>Network agnostic:</strong> You provide it with input and receive output using whatever transport mechanism you prefer.  Typically this will be a TCP/IP connection.</p>
<p><strong>Simple protocol:</strong> Though it has been developed for Ruby, the network protocol is extremely simple and should work well with any language that supports JSON encoded strings.</p>
<p><strong>Easily modifiable:</strong> It was designed from the ground up to be modified both in code and in terms of protocol.  Prefer Message Pack over JSON?  Want to add compression?  All of these and more are easy to accomplish.</p>
<p><strong>Messages and Requests:</strong>  Both messages (fire-and-forget) and requests (receive return values) are supported.  This covers the most common forms of communication over a TCP/IP socket.</p>
<p><strong>Bi-directional:</strong> Both ends of a network connection are on equal footing once a connection is established.  This gives you great flexibility in designing your application.</p>
<p><strong>Thread safe:</strong> Ruby threading has improved greatly over the last few years and is especially useful with JRuby.</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/remesch.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/remesch.wordpress.com/192/" /></a> <img alt="" border="0" src="http://pixel.wp.com/b.gif?host=remesch.com&#038;blog=19355004&#038;post=192&#038;subd=remesch&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://remesch.com/2015/07/09/oskie-rpc-network-agnostic-rpc/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/eca5842f50ccc72f0037e7ab992b7a01?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chadrem</media:title>
		</media:content>
	</item>
		<item>
		<title>Filter Chain &#8211; Ruby gem for data manipulation</title>
		<link>http://remesch.com/2015/07/07/filter-chain-ruby-gem-for-data-manipulation/</link>
		<comments>http://remesch.com/2015/07/07/filter-chain-ruby-gem-for-data-manipulation/#comments</comments>
		<pubDate>Tue, 07 Jul 2015 16:47:24 +0000</pubDate>
		<dc:creator><![CDATA[chadrem]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[concurrency]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[jruby]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://remesch.com/?p=186</guid>
		<description><![CDATA[Filter Chain is a Ruby gem for processing data through a chain of filters in an object oriented style.  It includes a number of filters for simple tasks like compression, serialization, and multiplexing. It is very common in Ruby to use blocks and functional style programming to manipulate data.  The below example squares each element [&#8230;]<img alt="" border="0" src="http://pixel.wp.com/b.gif?host=remesch.com&#038;blog=19355004&#038;post=186&#038;subd=remesch&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><a href="https://github.com/chadrem/filter_chain">Filter Chain</a> is a Ruby gem for processing data through a chain of filters in an object oriented style.  It includes a number of filters for simple tasks like compression, serialization, and multiplexing.</p>
<p>It is very common in Ruby to use blocks and functional style programming to manipulate data.  The below example squares each element in an array and then removes the odd values:</p>
<p style="padding-left:30px;">[1,2,3,4,5].map { |i| i**2 }.reject { |i| i.odd? }</p>
<p>Such one-liners are an amazing feature of Ruby and very useful on the console.  Unfortunately, they can really start to break down in more complex situations.  This is where Filter Chain can be really useful.</p>
<p>Unlike in the above example, filters in Filter Chain are dedicated classes with a simple API.  This means each filter can easily have it&#8217;s own state, private helper methods, independent tests, and be reusable.  This is especially true for filters that include buffering, multithreading, and asynchronous IO.</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/remesch.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/remesch.wordpress.com/186/" /></a> <img alt="" border="0" src="http://pixel.wp.com/b.gif?host=remesch.com&#038;blog=19355004&#038;post=186&#038;subd=remesch&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://remesch.com/2015/07/07/filter-chain-ruby-gem-for-data-manipulation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/eca5842f50ccc72f0037e7ab992b7a01?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chadrem</media:title>
		</media:content>
	</item>
		<item>
		<title>Reactomatic &#8211; Reactor pattern for Ruby</title>
		<link>http://remesch.com/2015/07/07/reactomatic-reactor-pattern-for-ruby/</link>
		<comments>http://remesch.com/2015/07/07/reactomatic-reactor-pattern-for-ruby/#comments</comments>
		<pubDate>Tue, 07 Jul 2015 16:28:59 +0000</pubDate>
		<dc:creator><![CDATA[chadrem]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[eventmachine]]></category>
		<category><![CDATA[jruby]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://remesch.com/?p=184</guid>
		<description><![CDATA[Reactomatic is an implementation of the Reactor Pattern for Ruby.  It provides an EventMachine inspired interface for working with TCP/IP sockets in an asynchronous way.  Low level IO is provided by the nio4r gem so it works well on both MRI and JRuby.  Design goals include thread safety and minimalist API.  Reactomatic wants to do [&#8230;]<img alt="" border="0" src="http://pixel.wp.com/b.gif?host=remesch.com&#038;blog=19355004&#038;post=184&#038;subd=remesch&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><a href="https://github.com/chadrem/reactomatic">Reactomatic</a> is an implementation of the <a href="https://en.wikipedia.org/wiki/Reactor_pattern">Reactor Pattern</a> for Ruby.  It provides an <a href="https://github.com/eventmachine/eventmachine/">EventMachine</a> inspired interface for working with TCP/IP sockets in an asynchronous way.  Low level IO is provided by the <a href="https://github.com/celluloid/nio4r">nio4r</a> gem so it works well on both MRI and JRuby.  Design goals include thread safety and minimalist API.  Reactomatic wants to do one thing and do it well on all supported platforms.  This means many common EventMachine features aren&#8217;t included such as application level protocols, timers, and thread pools.</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/remesch.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/remesch.wordpress.com/184/" /></a> <img alt="" border="0" src="http://pixel.wp.com/b.gif?host=remesch.com&#038;blog=19355004&#038;post=184&#038;subd=remesch&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://remesch.com/2015/07/07/reactomatic-reactor-pattern-for-ruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/eca5842f50ccc72f0037e7ab992b7a01?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chadrem</media:title>
		</media:content>
	</item>
		<item>
		<title>Easy Lua &#8211; Add Lua scripts to ActionScript projects</title>
		<link>http://remesch.com/2014/03/31/easy-lua-the-easiest-way-to-add-lua-scripts-to-actionscript-projects/</link>
		<comments>http://remesch.com/2014/03/31/easy-lua-the-easiest-way-to-add-lua-scripts-to-actionscript-projects/#comments</comments>
		<pubDate>Mon, 31 Mar 2014 15:44:58 +0000</pubDate>
		<dc:creator><![CDATA[chadrem]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[CrossBridge]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[Lua]]></category>

		<guid isPermaLink="false">http://remesch.com/?p=157</guid>
		<description><![CDATA[This past weekend I released a new open source project called Easy Lua.  It&#8217;s a wrapper around the Lua port that is included in Adobe&#8217;s open source CrossBridge project.  It lets you easily integrate Lua scripts into any ActionScript project (Flash, AIR, etc) with a minimum of headache and zero knowledge of Lua&#8217;s C API. CrossBridge is an [&#8230;]<img alt="" border="0" src="http://pixel.wp.com/b.gif?host=remesch.com&#038;blog=19355004&#038;post=157&#038;subd=remesch&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>This past weekend I released a new open source project called <a title="Easy Lua" href="https://github.com/chadrem/easy_lua">Easy Lua</a>.  It&#8217;s a wrapper around the Lua port that is included in Adobe&#8217;s open source <a title="CrossBridge" href="https://github.com/adobe-flash/crossbridge">CrossBridge</a> project.  It lets you easily integrate Lua scripts into any ActionScript project (Flash, AIR, etc) with a minimum of headache and zero knowledge of Lua&#8217;s C API.</p>
<p>CrossBridge is an amazing piece of technology that unfortunately receives little press.  In summary, it combines GCC with FreeBSD&#8217;s libc and allows you to compile C/C++ code to ABC bytecode.  Since ABC is the native bytecode for Adobe Flash and AIR, you end up with a version of Lua that can fully integrate with all of Adobe&#8217;s runtimes (mobile, desktop, and web).</p>
<p>The main use case for Easy Lua is to add Lua scripts to ActionScript based games.  I plan on using it to implement card game engines in Lua so that the engine can be used both on the client (single-player mode) and on the server (mutli-player mode).  This will mean less development time, more code reuse, and hopefully fewer bugs.</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/remesch.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/remesch.wordpress.com/157/" /></a> <img alt="" border="0" src="http://pixel.wp.com/b.gif?host=remesch.com&#038;blog=19355004&#038;post=157&#038;subd=remesch&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://remesch.com/2014/03/31/easy-lua-the-easiest-way-to-add-lua-scripts-to-actionscript-projects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/eca5842f50ccc72f0037e7ab992b7a01?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chadrem</media:title>
		</media:content>
	</item>
		<item>
		<title>Totem &#8211; Now with services (daemons)</title>
		<link>http://remesch.com/2014/03/15/totem-now-with-services-daemons/</link>
		<comments>http://remesch.com/2014/03/15/totem-now-with-services-daemons/#comments</comments>
		<pubDate>Sat, 15 Mar 2014 14:47:00 +0000</pubDate>
		<dc:creator><![CDATA[chadrem]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[daemons]]></category>
		<category><![CDATA[jruby]]></category>
		<category><![CDATA[raad]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[totem]]></category>

		<guid isPermaLink="false">http://remesch.com/?p=143</guid>
		<description><![CDATA[As mentioned in my previous post, Totem is a new Ruby project generator that I&#8217;ve put together.  One major missing feature was the ability to easily create services (also known as background processes or daemons).  To solve this problem, I have created an add-on gem called Raad &#8211; Totem.  It is a fork of the [&#8230;]<img alt="" border="0" src="http://pixel.wp.com/b.gif?host=remesch.com&#038;blog=19355004&#038;post=143&#038;subd=remesch&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>As mentioned in my previous post, <a title="Totem" href="https://github.com/chadrem/totem">Totem</a> is a new Ruby project generator that I&#8217;ve put together.  One major missing feature was the ability to easily create services (also known as background processes or daemons).  To solve this problem, I have created an add-on gem called <a title="Raad - Totem" href="https://github.com/chadrem/raad_totem">Raad &#8211; Totem</a>.  It is a fork of the original <a title="Raad" href="https://github.com/colinsurprenant/raad">Raad</a> gem with a number of customizations to integrate it with a Totem project.  Much thanks go to the original Raad authors since they were able to make it work for both Ruby and JRjuby.</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/remesch.wordpress.com/143/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/remesch.wordpress.com/143/" /></a> <img alt="" border="0" src="http://pixel.wp.com/b.gif?host=remesch.com&#038;blog=19355004&#038;post=143&#038;subd=remesch&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://remesch.com/2014/03/15/totem-now-with-services-daemons/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/eca5842f50ccc72f0037e7ab992b7a01?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chadrem</media:title>
		</media:content>
	</item>
		<item>
		<title>Totem &#8211; Ruby Without Rails</title>
		<link>http://remesch.com/2014/03/13/totem-ruby-without-rails/</link>
		<comments>http://remesch.com/2014/03/13/totem-ruby-without-rails/#comments</comments>
		<pubDate>Thu, 13 Mar 2014 17:06:34 +0000</pubDate>
		<dc:creator><![CDATA[chadrem]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[jruby]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[totem]]></category>

		<guid isPermaLink="false">http://remesch.com/?p=113</guid>
		<description><![CDATA[Totem is my new Ruby gem for creating Ruby projects without having to depend on Rails.  Some of the features it provides are: Interactive console Logging Standard folder structure (very Rails like) Environments (development, production, etc) Generators Easy database access (via an add-on) Totem and Totem &#8211; Activerecord seek to bring these and many other features [&#8230;]<img alt="" border="0" src="http://pixel.wp.com/b.gif?host=remesch.com&#038;blog=19355004&#038;post=113&#038;subd=remesch&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><a title="Totem" href="https://github.com/chadrem/totem">Totem</a> is my new Ruby gem for creating Ruby projects without having to depend on Rails.  Some of the features it provides are:</p>
<ul>
<li>Interactive console</li>
<li>Logging</li>
<li>Standard folder structure (very Rails like)</li>
<li>Environments (development, production, etc)</li>
<li>Generators</li>
<li>Easy database access (via an add-on)</li>
</ul>
<p><a title="Totem" href="https://github.com/chadrem/totem">Totem</a> and <a title="Totem - Activerecord" href="https://github.com/chadrem/totem_activerecord">Totem &#8211; Activerecord</a> seek to bring these and many other features to your non-Rails application.  Give it a try and feel free to contact me with your feedback.</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/remesch.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/remesch.wordpress.com/113/" /></a> <img alt="" border="0" src="http://pixel.wp.com/b.gif?host=remesch.com&#038;blog=19355004&#038;post=113&#038;subd=remesch&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://remesch.com/2014/03/13/totem-ruby-without-rails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/eca5842f50ccc72f0037e7ab992b7a01?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chadrem</media:title>
		</media:content>
	</item>
		<item>
		<title>Tribe &#8211; Futures and Timers</title>
		<link>http://remesch.com/2013/05/25/tribe-futures-and-timers/</link>
		<comments>http://remesch.com/2013/05/25/tribe-futures-and-timers/#comments</comments>
		<pubDate>Sat, 25 May 2013 19:37:58 +0000</pubDate>
		<dc:creator><![CDATA[chadrem]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[concurrency]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[threading]]></category>
		<category><![CDATA[tribe]]></category>
		<category><![CDATA[workers]]></category>

		<guid isPermaLink="false">http://remesch.com/?p=85</guid>
		<description><![CDATA[I&#8217;ve added a few missing features to Tribe&#8211; Timers and Futures. Timers provide a way to tell an actor to do something in the future.  Tribe supports both one-shot and periodic timers so I believe all the major usage patterns are covered.  Adding this feature was fairly easy since all of the low level details are [&#8230;]<img alt="" border="0" src="http://pixel.wp.com/b.gif?host=remesch.com&#038;blog=19355004&#038;post=85&#038;subd=remesch&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve added a few missing features to <a title="Tribe" href="https://github.com/chadrem/tribe">Tribe</a>&#8211; Timers and Futures.</p>
<p><strong>Timers</strong> provide a way to tell an actor to do something in the future.  Tribe supports both one-shot and periodic timers so I believe all the major usage patterns are covered.  Adding this feature was fairly easy since all of the low level details are hidden in my <a title="Workers" href="https://github.com/chadrem/workers">Workers</a> gem.</p>
<p><strong>Futures</strong> make it easy for an actor to ask another actor to perform an operation and return the result.  Previously you would have to use custom events and a lot of boilerplate code to accomplish this.  Both synchronous (blocking) and asynchronous (non-blocking) futures are supported.  More information on both types can be found in the readme file.</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/remesch.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/remesch.wordpress.com/85/" /></a> <img alt="" border="0" src="http://pixel.wp.com/b.gif?host=remesch.com&#038;blog=19355004&#038;post=85&#038;subd=remesch&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://remesch.com/2013/05/25/tribe-futures-and-timers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/eca5842f50ccc72f0037e7ab992b7a01?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chadrem</media:title>
		</media:content>
	</item>
		<item>
		<title>Workers &#8211; New Features</title>
		<link>http://remesch.com/2013/05/17/workers-new-features/</link>
		<comments>http://remesch.com/2013/05/17/workers-new-features/#comments</comments>
		<pubDate>Sat, 18 May 2013 03:15:43 +0000</pubDate>
		<dc:creator><![CDATA[chadrem]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[concurrency]]></category>
		<category><![CDATA[jruby]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[threading]]></category>
		<category><![CDATA[workers]]></category>

		<guid isPermaLink="false">http://remesch.com/?p=57</guid>
		<description><![CDATA[Recently I added a number of features to my Workers gem: The Task and TaskGroup classes make it even easier to parallelize expensive computations (and blocking IO operations) using background threads.  They build on top of worker pools and standardize on various features such as success/failure handling, delayed execution, and arguments. Parallel Map is syntactic [&#8230;]<img alt="" border="0" src="http://pixel.wp.com/b.gif?host=remesch.com&#038;blog=19355004&#038;post=57&#038;subd=remesch&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Recently I added a number of features to my <a title="Workers" href="https://github.com/chadrem/workers">Workers</a> gem:</p>
<p>The <strong>Task and TaskGroup classes</strong> make it even easier to parallelize expensive computations (and blocking IO operations) using background threads.  They build on top of worker pools and standardize on various features such as success/failure handling, delayed execution, and arguments.</p>
<p><strong>Parallel Map</strong> is syntactic sugar built on top of tasks and task groups.  It works very similar to Ruby&#8217;s standard Array#map method except each element is mapped in parallel.</p>
<p><strong>Pools are now dynamically resizable</strong>.  The long term vision for this feature is to experiment with auto-resizing algorithms that adapt to an applications load.  In the short term it is mostly useful for quickly changing the size of the default pool (currently set to 20 workers) without having to create a new one.</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/remesch.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/remesch.wordpress.com/57/" /></a> <img alt="" border="0" src="http://pixel.wp.com/b.gif?host=remesch.com&#038;blog=19355004&#038;post=57&#038;subd=remesch&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://remesch.com/2013/05/17/workers-new-features/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/eca5842f50ccc72f0037e7ab992b7a01?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chadrem</media:title>
		</media:content>
	</item>
		<item>
		<title>Networking for Tribe</title>
		<link>http://remesch.com/2013/02/02/networking-for-tribe/</link>
		<comments>http://remesch.com/2013/02/02/networking-for-tribe/#comments</comments>
		<pubDate>Sat, 02 Feb 2013 16:49:00 +0000</pubDate>
		<dc:creator><![CDATA[chadrem]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[eventmachine]]></category>
		<category><![CDATA[jruby]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[tribe]]></category>

		<guid isPermaLink="false">http://remesch.com/networking-for-tribe</guid>
		<description><![CDATA[Recently I put together two new Ruby gems called Tribe EM and Tribe EM AMF Socket. Both gems build on top of my Tribe gem: Tribe EM bridges the gap between Tribe and EventMachine. Currently it provides basic TCP server functionality for Tribe acto...<img alt="" border="0" src="http://pixel.wp.com/b.gif?host=remesch.com&#038;blog=19355004&#038;post=23&#038;subd=remesch&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Recently I put together two new Ruby gems called <a title="Tribe EM" href="https://github.com/chadrem/tribe_em">Tribe EM</a> and <a title="Tribe EM AMF Socket" href="https://github.com/chadrem/tribe_em_amfsocket">Tribe EM AMF Socket</a>.  Both gems build on top of my <a title="Tribe" href="https://github.com/chadrem/tribe">Tribe</a> gem.</p>
<p>Tribe EM bridges the gap between Tribe and <a title="EventMachine" href="http://rubyeventmachine.com/">EventMachine</a>.  Currently it provides basic TCP server functionality for Tribe actors.  My intent is to use this as a base for implementing higher-level protocols such as HTTP.</p>
<p>Tribe EM AMF Socket is a wrapper around my existing <a title="AMF Socket - Ruby" href="https://github.com/chadrem/amf_socket_ruby">AMF Socket &#8211; Ruby</a> gem.  Currently it only supports messages and not requests (RPC).  I believe this to be a reasonable limitation for now since AMF Socket messages fit in very well with Tribe&#8217;s asynchronous messaging system.</p>
<p>One key difference between the two gems is what I refer to as native vs wrapper implementations:</p>
<p><span style="text-decoration:underline;">Native</span>: The Tribe::EM::Connection class is considered native since it pushes the higher level protocol implementation onto the actor threads.  This results in greater scalability since actors take advantage of multi-core systems (especially on JRuby).</p>
<p><span style="text-decoration:underline;">Wrapper</span>: The Tribe::EM::AmfSocket::Connection class is considered a wrapper since it wraps the AMF Socket gem for use with Tribe.  This means that a lot of work (serialization, deserialization, framing, keep alives, etc) are all performed on the EventMachine thread.  The result is lower performance than a native implementation, but less coding since I can reuse the existing Ruby implementation of AMF Socket.</p>
<p>Both gem are designed to be easily customized.  Feel free to contact me with your custom protocol implementations so that I can add them to the Tribe EM homepage.</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/remesch.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/remesch.wordpress.com/23/" /></a> <img alt="" border="0" src="http://pixel.wp.com/b.gif?host=remesch.com&#038;blog=19355004&#038;post=23&#038;subd=remesch&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://remesch.com/2013/02/02/networking-for-tribe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/eca5842f50ccc72f0037e7ab992b7a01?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chadrem</media:title>
		</media:content>
	</item>
		<item>
		<title>Workers and Tribe &#8211; Ruby threading simplified</title>
		<link>http://remesch.com/2013/01/22/workers-and-tribe-ruby-threading-simplified/</link>
		<comments>http://remesch.com/2013/01/22/workers-and-tribe-ruby-threading-simplified/#comments</comments>
		<pubDate>Tue, 22 Jan 2013 01:57:00 +0000</pubDate>
		<dc:creator><![CDATA[chadrem]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[actors]]></category>
		<category><![CDATA[jruby]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[threading]]></category>

		<guid isPermaLink="false">http://remesch.com/workers-and-tribe-ruby-threading-simplified</guid>
		<description><![CDATA[Recently I've created two new Ruby gems known as Workers and Tribe. The Workers gem turns low-level operating system threads into simple to use event-driven workers and worker pools. This allows you to focus on message passing instead of complex t...<img alt="" border="0" src="http://pixel.wp.com/b.gif?host=remesch.com&#038;blog=19355004&#038;post=26&#038;subd=remesch&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Recently I&#8217;ve created two new Ruby gems known as <a href="https://github.com/chadrem/workers" title="Workers">Workers</a> and <a href="https://github.com/chadrem/tribe" title="Tribe">Tribe</a>.</p>
<p>The <a href="https://github.com/chadrem/workers" title="Workers">Workers</a> gem turns low-level operating system threads into simple to use event-driven workers and worker pools. &nbsp;This allows you to focus on message passing instead of complex thread management. &nbsp;As an added bonus, it includes a timer system that can tell your workers to execute work in the future.</p>
<p>The <a href="https://github.com/chadrem/tribe" title="Tribe">Tribe</a> gem builds on top of Workers in order to implement the <a href="http://en.wikipedia.org/wiki/Actor_model" title="actor model">actor model</a>. It specifically focuses on event-driven actors such that each thread manages one or more actors. &nbsp;This way the system can support many more actors than is possible with implementations that force a 1:1 thread to actor relationship. &nbsp;A simple benchmark demonstrating one million actors using 20 threads can be found on the <a href="https://github.com/chadrem/tribe/wiki/Performance" title="performance">performance</a> wiki page.</p>
<p>Both gems have been tested with MRI Ruby 1.9.3 and JRuby 1.7. &nbsp;Due to MRI&#8217;s thread limitations, it is highly recommended that you use JRuby if you are concerned about multi-core CPU performance.</p>
<div>Inspiration comes from <a href="http://www.erlang.org/" title="Erlang">Erlang</a>, <a href="http://www.scala-lang.org/" title="Scala">Scala</a>, <a href="http://akka.io/" title="Akka">Akka</a>, and <a href="http://celluloid.io/" title="Celluloid">Celluloid</a>.&nbsp;</div>
<p>&nbsp;</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/remesch.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/remesch.wordpress.com/26/" /></a> <img alt="" border="0" src="http://pixel.wp.com/b.gif?host=remesch.com&#038;blog=19355004&#038;post=26&#038;subd=remesch&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://remesch.com/2013/01/22/workers-and-tribe-ruby-threading-simplified/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/eca5842f50ccc72f0037e7ab992b7a01?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">chadrem</media:title>
		</media:content>
	</item>
	</channel>
</rss>
