<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/stylesheets/rss.css" type="text/css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Brainspl.at</title>
    <link>http://brainspl.at/</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Brainspl.at</description>
    <item>
      <title>You got ur Erlang in my Ruby</title>
      <description>&lt;p&gt;Here are the slides from my keynote this morning at the &lt;span class="caps"&gt;SF &lt;/span&gt;Erlang Factory conference:&lt;/p&gt;


&lt;div style="width:425px;text-align:left" id="__ss_1369972"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/ezmobius/erlangfactory?type=powerpoint" title="Erlangfactory"&gt;Erlangfactory&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=erlangfactory-090430135345-phpapp01&amp;#38;stripped_title=erlangfactory" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=erlangfactory-090430135345-phpapp01&amp;#38;stripped_title=erlangfactory" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/ezmobius"&gt;ezmobius&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;</description>
      <pubDate>Thu, 30 Apr 2009 18:56:00 +0000</pubDate>
      <guid>urn:uuid:8f4814cd-60f8-4d44-a52e-265cb1b36f7b</guid>
      <author>ezmobius</author>
      <link>http://brainspl.at/articles/2009/04/30/you-got-ur-ruby-in-my-erlang</link>
      <category>ruby</category>
      <category>erlang</category>
      <category>amqp</category>
      <category>nanite</category>
      <category>redis</category>
      <trackback:ping>http://brainspl.at/articles/trackback/5176</trackback:ping>
    </item>
    <item>
      <title>Engine Yard hiring developers to help build our cloud</title>
      <description>&lt;p&gt;I&amp;#8217;m looking for a few good folks to join my team. You need to be able to work on site in San Francisco, we can assist with moving expenses for the right candidate.&lt;/p&gt;


	&lt;p&gt;You would work with my team(currently 5 devs). We do no bs agile style development with pairing where appropriate and test infected mentality . generally we have a fun, tight team and get to work on some of the hardest and most rewarding areas of software development relevant today.&lt;/p&gt;


	&lt;p&gt;You would be on my team working on &lt;a href='http://engineyard.com/solo'&gt;http://engineyard.com/solo&lt;/a&gt; and it&amp;#8217;s successors as well as Engine Yard&amp;#8217;s on premises infrastructure.&lt;/p&gt;


	&lt;p&gt;You would be working on/with the following ruby technologies:&lt;/p&gt;


&lt;pre&gt;
Ruby
Merb
Rails
Sinatra
DataMapper
Nanite
Chef
Event Machine
Many others..
&lt;/pre&gt;

	&lt;p&gt;You would be working on the following problem domains:&lt;/p&gt;


&lt;pre&gt;
Scalable Ruby Deployment Architectures
Scalable Cloud Computing Architectures
Scalable Database Architecture
Distributed Computing
Key Value Data Stores
Infrastructure automation
Cloud provider API's
Multi-Cloud portability
Monitoring and alerting systems
Security in the Cloud
Horizontally Scalable Architectures
Many other interesting areas of computing
&lt;/pre&gt;

	&lt;p&gt;Familiarity with the following tech is nice but not necessarily required if you can learn fast:&lt;/p&gt;


&lt;pre&gt;
Gentoo Linux
Nginx
Apache
Monit
Daemontools
Mysql
Postgresql
Memcached
Passenger
Mongrel
Thin
SSL Certs
Iptables/Networking
Erlang
&lt;/pre&gt;

	&lt;p&gt;If you think you have the &amp;#8220;right stuff&amp;#8221; and you have the kick ass take names attitude then send a resume with a short intro about who you are and why you are the person we should hire.&lt;/p&gt;


	&lt;p&gt;&lt;a href='mailto:ez@engineyard.com'&gt;ez@engineyard.com&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 07 Apr 2009 20:19:00 +0000</pubDate>
      <guid>urn:uuid:c9fd92a1-948f-49a6-adc8-1a4ca0fc9d63</guid>
      <author>ezmobius</author>
      <link>http://brainspl.at/articles/2009/04/07/engine-yard-hiring-developers-to-help-build-our-cloud</link>
      <category>cloud</category>
      <category>deployment</category>
      <category>automation</category>
      <category>chef</category>
      <category>merb</category>
      <category>datamapper</category>
      <category>nanite</category>
      <category>aws</category>
      <trackback:ping>http://brainspl.at/articles/trackback/5159</trackback:ping>
    </item>
    <item>
      <title>Cooking with Chef 101</title>
      <description>&lt;p&gt;One of the things I really like about chef is that it scales down as well as up. You can get started using it right away with chef-solo and then graduate to chef-client and chef-server when you need more cowbell. And then as you grow you can horizontally partition each component of the chef infrastructure, web servers, couchdb servers with messaging queues to decouple each part so you can go from tiny to large and in charge with the same recipes.&lt;/p&gt;


	&lt;p&gt;So let&amp;#8217;s get started with a simple set of recipes to install some rubygems, and setup some directories for deploying a few apps with capistrano after chef configures the base system.&lt;/p&gt;


	&lt;p&gt;First you will need to clone my chef-101 repo from github:&lt;/p&gt;


	&lt;p&gt;&lt;a href='http://github.com/ezmobius/chef-101/tree/master'&gt;http://github.com/ezmobius/chef-101&lt;/a&gt;&lt;/p&gt;


&lt;pre&gt;
$ git clone git://github.com/ezmobius/chef-101.git
&lt;/pre&gt;

	&lt;p&gt;First we need to get chef installed.&lt;/p&gt;


&lt;pre&gt;
$ sudo gem install chef ohai --source http://gems.opscode.com --source http://gems.rubyforge.org
&lt;/pre&gt;

	&lt;p&gt;(the two sources are needed so that dependencies can be installed form rubyforge even though chef is hosted on gems.opscode.com. Rubygems quirk but at least it works this way ;)&lt;/p&gt;


	&lt;p&gt;Now lets just run the recipe set so you can see chef in action! (this will install a few rubygems on your system so you can skip this step if you want. It will also create a few directories underneath /data.)&lt;/p&gt;


	&lt;p&gt;You will need to change the user attribute in the config/dna.json file to a user that exists on your system before this will run(unless you have an &amp;#8216;ez&amp;#8217; user like I do ;)&lt;/p&gt;


&lt;pre&gt;
$ cd chef-101
$ sudo chef-solo -l debug -c config/solo.rb -j config/dna.json
&lt;/pre&gt;

	&lt;p&gt;You will see a bunch of output scroll by, first you will see the ohai output, ohai is the systems information collector. The you will see a bunch of info about compiling recipes and applying recipes. It will end with this line if it was successful:&lt;/p&gt;


&lt;pre&gt;
INFO: Chef Run complete in 1.093957 seconds
&lt;/pre&gt;

	&lt;p&gt;Congratulations! You are now cooking with fire. Now let&amp;#8217;s take a look at the recipes and how they are put together so you know how this thing works.&lt;/p&gt;


	&lt;p&gt;First off what is this dna.json file we passed in to chef-solo?&lt;/p&gt;


&lt;pre&gt;
{
  "apps": [
    "beast",
    "mephisto" 
  ],
  "user": "ez",
  "gems": [
    {
      "name": "rake",
      "version": "0.8.3" 
    },
    {
      "name": "tmm1-amqp",
      "source": "http://gems.github.com",
      "version": "0.6.0" 
    }
  ],
  "recipes": ["main"]
}
&lt;/pre&gt;

	&lt;p&gt;This is what I am calling the &lt;span class="caps"&gt;JSON DNA&lt;/span&gt; of your recipe set. These are the parameters that will be available in your recipes as the node object. So you can see we have some applications, a username and some rubygems to install.&lt;/p&gt;


	&lt;p&gt;You can see that we have set the &amp;#8220;recipes&amp;#8221; array to contain &amp;#8216;main&amp;#8217;. Let&amp;#8217;s take a look at the main recipe, as this is our entry point into the system.&lt;/p&gt;


&lt;pre&gt;
include_recipe 'gems'
include_recipe 'applications'

template "/data/someservice.conf" do
  owner node[:user]
  mode 0644
  source "someservice.conf.erb" 
  variables({
    :applications =&amp;gt; node[:apps]
  })
end
&lt;/pre&gt;

	&lt;p&gt;You can see that we use include_recipe, this command will pull in the named recipe and run it in place top down right there in the recipe. This allows for chef recipes to run in deterministic order every time, if you want one resource to run before another, just make sure it comes first in the recipe run.&lt;/p&gt;


	&lt;p&gt;So we are including the gems recipe and then the applications recipe. After that we render a template for some config file. You can see that the template resource is easy to define, you name it with the target location, and you tell it what permissions, what the source template is named and any variables to pass in to the template.&lt;/p&gt;


	&lt;p&gt;Now on to the gems recipe:&lt;/p&gt;


&lt;pre&gt;
node[:gems].each do |gem|
  gem_package gem[:name] do
    if gem[:version] &amp;#38;&amp;#38; !gem[:version].empty?
      version gem[:version]
    end
    if gem[:source]
      source gem[:source]
    end
    action :install
  end
end
&lt;/pre&gt;

	&lt;p&gt;What we&amp;#8217;re doing here is looping over all of the gems in our dna.json hash and creating a gem_package resource for each gem. Gems can have versions and sources, but we take care to not set these if they are empty. If you don&amp;#8217;t specify a version it will install the latest available and if you don;t specify a source it will default to rubyforge.org. finally we say action :install, which will run the install action for each rubygem. This will not install the gems again if they are already installed on your system.&lt;/p&gt;


	&lt;p&gt;Now let&amp;#8217;s look at the applications recipe:&lt;/p&gt;


&lt;pre&gt;
directory "/data" do
  owner node[:user]
  mode 0755
end

node[:apps].each do |app|

  cap_directories = [
    "/data/#{app}/shared",
    "/data/#{app}/shared/config",
    "/data/#{app}/shared/system",
    "/data/#{app}/releases" 
  ]

  cap_directories.each do |dir|
    directory dir do
      owner node[:user]
      mode 0755
      recursive true
    end
  end

end
&lt;/pre&gt;

	&lt;p&gt;First we create the /data directory and give it the permissions we want and owner we specified in our json. Then we loop over all the applications from our json and create the proper set of capistrano deploy directory resources for each app.&lt;/p&gt;


	&lt;p&gt;So ends our first installment of chef-101, this should be a good starting point for you to take on more advanced recipes.&lt;/p&gt;


	&lt;p&gt;Pro tip:  once you have a nice set of recipes, you can create a tarball of them, put them on an http server somewhere and then use a quick capistrano script to fire the off on remote machines.&lt;/p&gt;


	&lt;p&gt;Say we create a chef-101.tgz recipe set and we put it up on the web at http://foo.com/chef-101.tgz. We can then log into a server with chef-solo installed vias ssh or via a cap script and run this command:&lt;/p&gt;


	&lt;p&gt;$ sudo chef-solo -l debug -j /etc/chef/dna.json -r http://foo.com/chef-101.tgz&lt;/p&gt;


	&lt;p&gt;That will download the recipe set, untar it and run chef on it with the json you passed in. You will first need to create /etc/chef directory and put a solo.rb as well as your dna.json in there.&lt;/p&gt;


	&lt;p&gt;/etc/chef/solo.rb should look like this:&lt;/p&gt;


&lt;pre&gt;
cookbook_path     "/etc/chef/recipes/cookbooks" 
log_level         :info
file_store_path  "/etc/chef/recipes/" 
file_cache_path  "/etc/chef/recipes/" 
&lt;/pre&gt;

	&lt;p&gt;Hope you liked cooking with chef-101. See you all next time.&lt;/p&gt;</description>
      <pubDate>Sat, 31 Jan 2009 19:00:00 +0000</pubDate>
      <guid>urn:uuid:3dd5ed8b-a1f6-4c78-ac63-8acc5f900e30</guid>
      <author>ezmobius</author>
      <link>http://brainspl.at/articles/2009/01/31/cooking-with-chef-101</link>
      <trackback:ping>http://brainspl.at/articles/trackback/5138</trackback:ping>
    </item>
    <item>
      <title>Chef: Suck on my chocolate salty balls</title>
      <description>&lt;p&gt;Yesterday we announced http://engineyard.com/solo which is our new engine yard on &lt;span class="caps"&gt;AWS&lt;/span&gt; platform. If you haven&amp;#8217;t yet watched the screencast then you should check it out:&lt;/p&gt;


	&lt;p&gt;&lt;a href='http://ey-ec2.s3.amazonaws.com/ey-solo.mov'&gt;Engine Yard Solo Screencast&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;m using a really sweet configuration management engine called Chef that is being open sourced today. My good friends at &lt;a href='http://www.opscode.com/'&gt;OpsCode&lt;/a&gt; are responsible for the project.&lt;/p&gt;


	&lt;p&gt;&lt;img src='/chef.jpg'/&gt;&lt;/p&gt;


	&lt;p&gt;If you have ever used or thought about using a system like Puppet then you owe it to your self to give Chef a try. Chef is a state based, declarative configuration management engine. You define recipes of how you want your system to look and then chef makes it so.&lt;/p&gt;


	&lt;p&gt;The big advantage chef has over puppet is that the codebase is 1/10th the size and it is pure ruby, including the recipe &lt;span class="caps"&gt;DSL&lt;/span&gt;. Puppet&amp;#8217;s biggest flaw is its configuration language that is not quite ruby and not quite turing complete. So you end up wrestling with it to get it to do anything.&lt;/p&gt;


	&lt;p&gt;Chef is just pure ruby so anything you can do in ruby you can do in your recipes. It also uses a simple merb-core/couchdb server for centralized storage of node configs and each server you manage gets an openid for identity.&lt;/p&gt;


	&lt;p&gt;If you have a hand in building or configuring any servers, you need to learn chef &lt;strong&gt;now&lt;/strong&gt;.&lt;/p&gt;


	&lt;p&gt;You need two repos to get chef running, chef and ohai:&lt;/p&gt;


	&lt;p&gt;&lt;a href='http://github.com/opscode/chef'&gt;chef&lt;/a&gt;
&lt;a href='http://github.com/opscode/ohai'&gt;ohai&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Ohai is a gem that interrogates your system and gathers facts about it. Chef is the gem that runs your recipes and actually does the work of configuring the system.&lt;/p&gt;


	&lt;p&gt;Here are the docs to get started with:&lt;/p&gt;


	&lt;p&gt;&lt;a href='http://wiki.opscode.com/display/chef/Home'&gt;Chef Wiki&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;I believe that chef will play a very important role in the future of building and managing servers in the ruby community as well as anyone else who needs repeatable server build outs.&lt;/p&gt;


	&lt;p&gt;We will expose a way to have your own custom chef recipes applied via our management app so that anything we haven&amp;#8217;t already written recipes for you can write yourself and get applied as part of a server build.&lt;/p&gt;


	&lt;p&gt;Put em in your mouth and suck em.&lt;/p&gt;</description>
      <pubDate>Thu, 15 Jan 2009 21:35:00 +0000</pubDate>
      <guid>urn:uuid:c4ce1d7b-a435-40ce-b2a0-7710109fc0f1</guid>
      <author>ezmobius</author>
      <link>http://brainspl.at/articles/2009/01/15/chef-suck-on-my-chocolate-salty-balls</link>
      <category>chef</category>
      <category>configuration</category>
      <category>ey-solo</category>
      <category>awesome</category>
      <trackback:ping>http://brainspl.at/articles/trackback/5124</trackback:ping>
    </item>
    <item>
      <title>Merb *is* Rails</title>
      <description>&lt;p&gt;Wow this has been a hectic, emotional week. The Rails and Merb core teams have been silently working together towards this monumental announcement. The announcement is that Merb &lt;strong&gt;is&lt;/strong&gt; Rails and Rails &lt;strong&gt;is&lt;/strong&gt; Merb.&lt;/p&gt;


	&lt;p&gt;Merb and Rails are joining forces and merging the two code bases for Rails-3.0. We&amp;#8217;re targeting RailsConf for the first cut of this magic.&lt;/p&gt;


	&lt;p&gt;When I first started merb way back in the day it was just a fun little project to hack on. But it became more serious as I explored the options. I always considered merb-core a clean room rewrite of ActionPack and I think this tended to upset some people who were very attached to rails.&lt;/p&gt;


	&lt;p&gt;Fast forward to current day and Merb-1.0 has been out for a while and there is a whole brouhaha of Rails &lt;span class="caps"&gt;VS &lt;/span&gt;Merb memes on the twitters and blogs. This has to stop as it is tearing apart the community and is very non productive.&lt;/p&gt;


	&lt;p&gt;So our two teams started talking to see if we could put our differences aside and come together for the common good. We&amp;#8217;ve laid out a roadmap of what and how to integrate merb&amp;#8217;s best features into rails-3.0. I think we have a great plan that will make Rails the best framework in existence. It will be a blend of the best things we have discovered while working on merb, while keeping the Rails aesthetic people have grown to love.&lt;/p&gt;


	&lt;p&gt;You can expect to get a kick ass, &lt;strong&gt;fast&lt;/strong&gt;, memory efficient version of rails(merb) this spring!&lt;/p&gt;


	&lt;p&gt;Merb folks will not be left out in the cold. We will continue to support bug and security fixes for the merb 1.0.x line. And we will provide a clear upgrade path to Rails 3.0 for merb apps. We still have quite a few merb apps running internally at ey and will want an upgrade path for our own apps as well.&lt;/p&gt;


	&lt;p&gt;This is going to be a lot of work for everyone involved but in the end I think this may just be the most inspiring open source story in history.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;m so impressed with everyone involved. All the core team members from both sides have been able to put away the weapons and egos and really come together, committed to making this transition work seamlessly.&lt;/p&gt;


	&lt;p&gt;2009 is going to be a seriously strong year for the ruby community. With everyone working together, we have such a kick ass team of smart people that this whole framework thing is going to be a solved issue.&lt;/p&gt;


	&lt;p&gt;Merb is dead, long live Merb(Rails-3.0)!&lt;/p&gt;


	&lt;p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href='http://rubyonrails.org/merb'&gt;http://rubyonrails.org/merb&lt;/a&gt;&lt;br /&gt;
&lt;a href='http://weblog.rubyonrails.org/2008/12/23/merb-gets-merged-into-rails-3'&gt;http://weblog.rubyonrails.org/2008/12/23/merb-gets-merged-into-rails-3&lt;/a&gt;&lt;br /&gt;
&lt;a href='http://yehudakatz.com/2008/12/23/rails-and-merb-merge/'&gt;http://yehudakatz.com/2008/12/23/rails-and-merb-merge/&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 23 Dec 2008 18:21:00 +0000</pubDate>
      <guid>urn:uuid:0a921e18-f7c3-4c64-b8c7-fc7bd6b1a1b2</guid>
      <author>ezmobius</author>
      <link>http://brainspl.at/articles/2008/12/23/merb-is-rails</link>
      <category>merb</category>
      <category>rails</category>
      <category>lovefest</category>
      <trackback:ping>http://brainspl.at/articles/trackback/5061</trackback:ping>
    </item>
    <item>
      <title>Merb master/worker monit control setup</title>
      <description>&lt;p&gt;Going into 1.0, Merb has changed the way it handles options and processes. This tends to break people&amp;#8217;s existing monit configs. So today I&amp;#8217;m releasing a custom Engine Yard monit script for controlling merb master/worker processes.&lt;/p&gt;


	&lt;p&gt;You can get the script from here: &lt;a href='http://pastie.org/333352'&gt;monit_merb_mpc&lt;/a&gt;. Put this somewhere in your $PATH, or make it live here:  /engineyard/bin/monit_merb_mpc and make sure it is executable.&lt;/p&gt;


	&lt;p&gt;In order to make proper use of this script it assumes certain paths are setup. In this example we will assume you have an app called &amp;#8216;iggy&amp;#8217; that lives at  /data/iggy/current, where /data/iggy is the main app dir that contains the capistrano releases and current directory. The script assumes these paths so if you want top use different paths you will need to hand edit the script as desired.&lt;/p&gt;


	&lt;p&gt;This script also assumes a logging directory of  /var/log/engineyard/$appname, you can edit the script if you want to change this as well.&lt;/p&gt;


	&lt;p&gt;You need to have one master configured per app, as well as monit configuration for each worker.&lt;/p&gt;


	&lt;p&gt;Master Config&lt;/p&gt;


&lt;pre&gt;
check process merb_iggy_master
  with pidfile /var/log/engineyard/iggy/iggy-production-merb.main.pid
  start program = "/engineyard/bin/monit_merb_mpc iggy start_master -c3 -n5000" 
  stop program = "/engineyard/bin/monit_merb_mpc iggy stop_master" 
  #if totalmem is greater than 80.0 MB for 2 cycles then restart       # eating up memory?
  group merb_iggy
&lt;/pre&gt;

	&lt;p&gt;Note that the start program needs to be adjusted if you need more/less instances or want to run the workers on different ports /engineyard/bin/monit_merb_mpc iggy start_master -c&lt;number of workers&gt; -n&lt;port of first worker&gt; . Also, memory monitoring is turned off for this process because the memory includes all processes under its control, including the workers and they are already monitored.&lt;/p&gt;


	&lt;p&gt;Worker Config (one for each port)&lt;/p&gt;


&lt;pre&gt;
check process merb_iggy_5000
  with pidfile /var/log/engineyard/iggy/iggy-production-merb.5000.pid
  start program = "/engineyard/bin/monit_merb_mpc iggy register_worker 5000" 
  stop program = "/engineyard/bin/monit_merb_mpc iggy restart_worker 5000" 
  if totalmem is greater than 80.0 MB for 2 cycles then restart       # eating up memory?
  group merb_iggy
&lt;/pre&gt;

	&lt;p&gt;How it works&lt;/p&gt;


	&lt;p&gt;Since Merb 1.0 (actually version 0.9.8 and above) uses a master process and a spawner process in addition to the worker processes, the monit_merb_mpc (multi-process-control) script needs to control the master process separately from the worker processes. To accomplish this, there is a fair amount of trickery to make monit treat the merb processes in a way monit was never intended to be able to handle. When the master process is started, it will create all the worker processes, so when monit starts the worker processes, they are infact already started – so the start command for the worker simply &amp;#8220;registers&amp;#8221; the worker – in other words, it just ensures that the pid files contains the worker pid. Also since the master process will automatically restart the worker processes, the stop action for the workers is actually a restart.&lt;/p&gt;


	&lt;p&gt;Notes:&lt;/p&gt;


	&lt;p&gt;Although this looks like it should use the monit dependency directive, the scripts are actually written to not need it, and making the worker processes dependent on the master process, it will cause problems during shutdown.
since the master specified the number of worker processes using the -c option, you can&amp;#8217;t simply shutdown a single worker process by stopping it with monit – it will simply restart by itself and operate unmonitored, thus making it a possible runaway process.&lt;/p&gt;


	&lt;p&gt;Thanks to all the EY support guys who worked on this one to make it smooth. Hopefully this clears up how to deploy merb with the master/worker server cluster setup under monit.&lt;/p&gt;</description>
      <pubDate>Sun, 07 Dec 2008 19:55:00 +0000</pubDate>
      <guid>urn:uuid:edeea39f-f37b-44a4-b073-01925ad909f4</guid>
      <author>ezmobius</author>
      <link>http://brainspl.at/articles/2008/12/07/merb-master-worker-monit-control-setup</link>
      <trackback:ping>http://brainspl.at/articles/trackback/5052</trackback:ping>
    </item>
    <item>
      <title>Ruby Deployment and Engine Yard as a Service</title>
      <description>&lt;p&gt;I gave a talk today at the #prorubyconf on Ruby Deployment, past present and future. You can view my slides below.&lt;/p&gt;


	&lt;p&gt;We will start doing some private beta testing of our new EY platform in December so let me know if you want to beta test and havce some interesting apps to run in the cloud.&lt;/p&gt;


&lt;div style="width:425px;text-align:left" id="__ss_765541"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/ezmobius/ruby-deployment-presentation?type=powerpoint" title="Ruby Deployment"&gt;Ruby Deployment&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=prorubyconf-1227043037524469-9&amp;#38;stripped_title=ruby-deployment-presentation" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=prorubyconf-1227043037524469-9&amp;#38;stripped_title=ruby-deployment-presentation" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View SlideShare &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/ezmobius/ruby-deployment-presentation?type=powerpoint" title="View Ruby Deployment on SlideShare"&gt;presentation&lt;/a&gt; or &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/upload?type=powerpoint"&gt;Upload&lt;/a&gt; your own. (tags: &lt;a style="text-decoration:underline;" href="http://slideshare.net/tag/cloud"&gt;cloud&lt;/a&gt; &lt;a style="text-decoration:underline;" href="http://slideshare.net/tag/engineyard"&gt;engineyard&lt;/a&gt;)&lt;/div&gt;&lt;/div&gt;</description>
      <pubDate>Tue, 18 Nov 2008 20:54:00 +0000</pubDate>
      <guid>urn:uuid:8dc20aeb-687c-4113-881c-5711d1ea9c68</guid>
      <author>ezmobius</author>
      <link>http://brainspl.at/articles/2008/11/18/ruby-deployment-and-engine-yard-as-a-service</link>
      <category>cloud</category>
      <category>deployment</category>
      <trackback:ping>http://brainspl.at/articles/trackback/5033</trackback:ping>
    </item>
    <item>
      <title>Merb 1.0</title>
      <description>&lt;p&gt;Umm, w00t! It&amp;#8217;s been a little over two years since merb was a  twinkle in my eye, and a &lt;a href='http://pastie.org/14416'&gt;pastie&lt;/a&gt;. Since then it has undergone many drastic transformations, working its way towards a very solid, fast foundation for people to build their homesteads on.&lt;/p&gt;


	&lt;p&gt;It&amp;#8217;s very exciting for me to see it grow into what it wants to be, based on the awesome merb community that has popped up around the project. It just shows that if you put in the work on something you love, polishing every little corner it will attract other like minded individuals and they will help you take the project to levels higher then your wildest dreams.&lt;/p&gt;


	&lt;p&gt;So,  gem install merb and get the 1.0 final now, it is propogating its way through the rubyforge tubes. If you can&amp;#8217;t get it from the &amp;#8216;forge yet then you can get it from our gem server:&lt;/p&gt;


	&lt;p&gt;&lt;br /&gt;&lt;/p&gt;


	&lt;p&gt;gem install merb&amp;#8212;source http://edge.merbivore.com&lt;/p&gt;


	&lt;p&gt;&lt;br /&gt;&lt;/p&gt;


	&lt;p&gt;Thank you to everyone who helped make this happen with code, feedback and blood, sweat and tears. It&amp;#8217;s been totally worth the effort &lt;span class="caps"&gt;IMHO&lt;/span&gt;.&lt;/p&gt;


	&lt;p&gt;The merb is dead, long live the merb.&lt;/p&gt;</description>
      <pubDate>Sat, 08 Nov 2008 06:08:00 +0000</pubDate>
      <guid>urn:uuid:ef0dce94-2c3d-49ab-963d-bd4bb3d3edb9</guid>
      <author>ezmobius</author>
      <link>http://brainspl.at/articles/2008/11/08/merb-1-0</link>
      <category>merb</category>
      <trackback:ping>http://brainspl.at/articles/trackback/4983</trackback:ping>
    </item>
    <item>
      <title>MerbCamp Keynote and Introducing Nanite</title>
      <description>&lt;p&gt;Just a quick post to share some news. I just finished giving my keynote at MerbCamp about past and present merb and the core tenets of merb development.&lt;/p&gt;


	&lt;p&gt;I also introduced &lt;a href="http://github.com/ezmobius/nanite/tree/master/README"&gt;Nanite: self assembling cluster of ruby processes&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;You can watch the full video of my talk here: &lt;a href="http://mattjaynes.com/keynote-ezra.wmv"&gt;Keynote Video&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;&lt;span class="caps"&gt;WMV&lt;/span&gt; format ^^ Thanks to Matt Jaynes for mirroring the video on a higher bandwidth connection&lt;/p&gt;


	&lt;p&gt;And you can see my slides on slideshare below.&lt;/p&gt;


&lt;div style="width:425px;text-align:left" id="__ss_651473"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/ezmobius/merb-nanite-presentation?type=powerpoint" title="Merb &lt;ins&gt; Nanite"&gt;Merb &lt;/ins&gt; Nanite&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=merb-1223752011264884-9&amp;#38;stripped_title=merb-nanite-presentation" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=merb-1223752011264884-9&amp;#38;stripped_title=merb-nanite-presentation" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View SlideShare &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/ezmobius/merb-nanite-presentation?type=powerpoint" title="View Merb + Nanite on SlideShare"&gt;presentation&lt;/a&gt; or &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/upload?type=powerpoint"&gt;Upload&lt;/a&gt; your own. (tags: &lt;a style="text-decoration:underline;" href="http://slideshare.net/tag/merb"&gt;merb&lt;/a&gt; &lt;a style="text-decoration:underline;" href="http://slideshare.net/tag/nanite"&gt;nanite&lt;/a&gt;)&lt;/div&gt;&lt;/div&gt;

	&lt;p&gt;Thanks to all the merbcamp organizers, the venue is awesome and I have never spoken at a ruby conference that streamed all of the talks live. Very cool setup here.&lt;/p&gt;


	&lt;p&gt;I will follow up with some more posts on nanite and the what why and how of it shortly. But you can get a pretty good overview of it by watching my talk.&lt;/p&gt;</description>
      <pubDate>Sat, 11 Oct 2008 18:41:00 +0000</pubDate>
      <guid>urn:uuid:76de1d49-fd7c-48fe-87fe-3d8086a3e34c</guid>
      <author>ezmobius</author>
      <link>http://brainspl.at/articles/2008/10/11/merbcamp-keynote-and-introducing-nanite</link>
      <category>merbcamp</category>
      <category>nanite</category>
      <trackback:ping>http://brainspl.at/articles/trackback/4967</trackback:ping>
    </item>
    <item>
      <title>EY Looking for Mad Scientists</title>
      <description>&lt;p&gt;We&amp;#8217;ve got a few job openings I wanted to float out there for your consideration. Here are the listings:&lt;/p&gt;


	&lt;p&gt;&lt;a href='http://engineyard.com/careers/ruby_developer'&gt;Ruby Developer&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;&lt;a href='http://engineyard.com/careers/systems_engineer_sac'&gt;Systems Engineer in Sacremento&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;&lt;a href='http://engineyard.com/careers/systems_engineer_sf'&gt;Systems Engineer&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;We need another team member for the Vertebra project. You know ruby like the back of your hand and are interested in distributed systems as well as learning erlang.&lt;/p&gt;


	&lt;p&gt;Systems engineers work on our cluster systems and will help with our custom Gentoo linux build as well as be involved with the Load Balancers, Switching Fabric, Linux, Xen, Coraid and helping design the latest and greatest platform for running Ruby applications in the cloud.&lt;/p&gt;


	&lt;p&gt;If you think you have the chops for any of these jobs then we want to hear from you. Please send a resume and a short email describing who you are and why you kick ass to jarnold@engineyard.com and cc ezra@engineyard.com&lt;/p&gt;</description>
      <pubDate>Tue, 19 Aug 2008 22:51:00 +0000</pubDate>
      <guid>urn:uuid:ad3768ee-a761-4a7e-b151-3c86d379a163</guid>
      <author>ezmobius</author>
      <link>http://brainspl.at/articles/2008/08/19/ey-looking-for-mad-scientists</link>
      <category>engineyard</category>
      <category>jobs</category>
      <trackback:ping>http://brainspl.at/articles/trackback/4962</trackback:ping>
    </item>
  </channel>
</rss>
