<?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>The Brian Olore Story &#187; work</title>
	<atom:link href="http://brian.olore.net/wp/category/work/feed/" rel="self" type="application/rss+xml" />
	<link>http://brian.olore.net</link>
	<description>Less of a story, more of a brain dump</description>
	<lastBuildDate>Sat, 19 Jun 2010 12:25:21 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Compleat Rubyist &#8211; Day 1</title>
		<link>http://brian.olore.net/wp/2010/06/compleat-rubyist-day-1/</link>
		<comments>http://brian.olore.net/wp/2010/06/compleat-rubyist-day-1/#comments</comments>
		<pubDate>Sat, 19 Jun 2010 12:25:21 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[work]]></category>
		<category><![CDATA[compleatrubyist]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[training]]></category>

		<guid isPermaLink="false">http://brian.olore.net/?p=193</guid>
		<description><![CDATA[Day 1 of 2 of my notes for the Compleat Rubyist training course
Ruby Versions and Implementations  &#8211; David
http://ruby-versions.net/ &#8211; David&#8217;s home for ruby versions &#38; implementations for learning &#38; historical reference
Ruby version manager &#8211; http://rvm.beginrescueend.com &#8211; lets you install several ruby versions/implementations and easily switch between (including your own custom compiled version). Suggestion &#8211; don&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>Day 1 of 2 of my notes for the <a href="http://www.compleatrubyist.com">Compleat Rubyist</a> training course</p>
<h2>Ruby Versions and Implementations  &#8211; David</h2>
<p><a href="http://ruby-versions.net/">http://ruby-versions.net/</a> &#8211; David&#8217;s home for ruby versions &amp; implementations for learning &amp; historical reference</p>
<p>Ruby version manager &#8211; <a href="http://rvm.beginrescueend.com">http://rvm.beginrescueend.com</a> &#8211; lets you install several ruby versions/implementations and easily switch between (including your own custom compiled version). Suggestion &#8211; don&#8217;t install as root, even though it is allowed.</p>
<p>Notes on a few of the existing options:</p>
<ul>
<li>MacRuby &#8211; interacts with Cocoa</li>
<li> Rubinius &#8211; Ruby in Ruby</li>
<li> JRuby &#8211; Ruby on JVM</li>
<li> REE &#8211; optimized &#8211; created by Phusion Passenger team</li>
<li> MagLev &#8211; built in object persistence, repository instead of files, smalltalk-ish</li>
<li> IronRuby &#8211; Ruby on .NET</li>
<li> URABE &#8211; ?</li>
</ul>
<p>rvm allows you to compare performance between versions/implementation:</p>
<pre>rvm ruby-1.8.6,ruby1.9.2 benchmark filename.rb</pre>
<p>Why does everyone use 1.8 instead of 1.9?</p>
<ul>
<li>Same amount of people are using it as last year (like almost no one)</li>
<li>Rails considerations</li>
<li>1.9 is not 100% backwards compatible</li>
<li>1.8.7 backported many of the features of 1.9, so people feel safer</li>
</ul>
<p>Ruby Enterprise Edition has major memory and speed improvements</p>
<p><strong>Highlights of changes between 1.8 &amp; 1.9</strong></p>
<ul>
<li> Enumerators</li>
<li> Method parameters</li>
<li> Block variable binding &amp; scope</li>
<li> Syntax changes</li>
</ul>
<p>Discussion</p>
<ul>
<li>&#8220;Ruby 1.9 was plenty different enough to be 2.0&#8243; &#8211; David</li>
<li>1.9.1 is currently the stable supported version and has been for about a year.</li>
<li>1.8.6 to 1.8.7 was a big jump &#8211; major backporting of 1.9 features into 1.8</li>
<li>1.8.7 was a safe harbor for those that wanted 1.9 features but were scared of 1.9</li>
<li>rails3 + ruby 1.9.1 = segfaults <img src='http://brian.olore.net/wp/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />    … works with certain revisions of 1.9.2 HEAD</li>
</ul>
<p><strong>Enumerator object &#8211; 1.9</strong></p>
<ul>
<li>mixes in Enumerable</li>
<li>you write the &#8216;each&#8217; method
<ul>
<li> borrow from another object (can be lazy)</li>
<li> or</li>
<li> pass in code block on instantiation (via a yielder)</li>
</ul>
</li>
<li>once it knows how to &#8216;each&#8217;, it can do select, map, each_cons ….</li>
<li>1.8.6 &#8211; require &#8216;enumerator&#8217; &#8211; Enumerable::Enumerator</li>
<li>1.9.x &#8211; no require needed &#8211; promoted to top level &#8216;Enumerator&#8217;</li>
</ul>
<p>side bar: each_cons vs each_slice</p>
<p>Note to self: I need to memorize each/select/map/collect</p>
<p>What methods do I get with Enumerator that I don&#8217;t get with Enumerable (Array)?</p>
<pre>Enumerator.instance_methods - Array.instance_methods
:with_index, :with_object, :next, :rewind</pre>
<p><strong>Method argument semantics<br />
</strong>required args can now come after optional args<br />
def m(a, b=1, c)<br />
def m(a, *b, c)<br />
def m((a,b),c)<br />
required arguments get filled first</p>
<p><strong>Block variable scope</strong></p>
<ul>
<li>probably the most important/annoying/significant change</li>
<li>breaks stuff in surprising ways</li>
<li>but if it does break stuff, you were likely doing something buggy before</li>
</ul>
<p>Example 1:</p>
<pre>a = [1,2,3]
a.each {|x| p x}</pre>
<p>x gets value of 3 when you are done</p>
<p>|x| literally assigns x ( |x=…| ), so it becomes available outside the block</p>
<p>Example 2:</p>
<pre>a = 1
array.each { a = 2 }</pre>
<p>does not change the value of a</p>
<ul>
<li>Matz said he wished he had done this from the beginning</li>
<li>Unifies the parameter syntax between methods &amp; lambas</li>
</ul>
<p><strong>1.9 Miscellany</strong></p>
<ul>
<li>no more String#each
<ul>
<li>&#8220;Hello&#8221;[0] = &#8220;H&#8221;  #in 1.8 it returns 72</li>
</ul>
</li>
<li>new instance_exec is like instance_eval but takes a param to inject</li>
</ul>
<p>JRuby &#8211; ask David about using ArrayList instead of [] in playpoker.rb</p>
<h2></h2>
<h2>The Testing Landscape</h2>
<p>Test::Unit is gone in 1.9<br />
Test::Unit::TestCase -&gt; Mini::Test::TestCase<br />
Mini::Test has a new option: refute_match<br />
require &#8217;shoulda&#8217; &#8211; makes it more like RSpec without going full RSpec<br />
RSpec is the defacto standard for Behavior-driven testing</p>
<p>Jeremy &#8211; wrote &#8216;context&#8217; and &#8216;match&#8217;<br />
Given/When/Then &#8211; cucumber is most popular<br />
&#8220;Think in units of features rather than units of code&#8221; &#8211; Gregory<br />
require &#8216;could&#8217; &#8211; another tool &#8211; include feature test right in the same file as tests</p>
<p><strong>Test data </strong></p>
<ul>
<li>YAML/CSV &#8211; hard to maintain, csv is kinda nice because you can open in spreadsheet program (or rather your testers can)</li>
<li>model_stubbing  <a href="http://github.com/technoweenie/model_stubbing">http://github.com/technoweenie/model_stubbing</a></li>
<li>Factories is the new hotness
<ul>
<li> FactoryGirl</li>
<li> Machinist &#8211; <a href="http://github.com/notahat/machinist">http://github.com/notahat/machinist</a>
<ul>
<li> create shams &amp; blueprints</li>
<li> &#8220;way slower&#8221; than fixtures</li>
</ul>
</li>
</ul>
</li>
<li>mocking/stubbing
<ul>
<li> can extend a class to do it</li>
<li> can use OpenStruct to do it require &#8216;ostrich&#8217;</li>
<li> Jeremy likes using &#8216;rr&#8217;</li>
<li> RSpec has it&#8217;s own stubbing</li>
<li> flexmock</li>
</ul>
</li>
<li>Proxies
<ul>
<li>Proxies are like mocks &amp; stubs &amp; real code combined</li>
<li>Proxies are the Ken Jennings of mocks &amp; stubs</li>
</ul>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://brian.olore.net/wp/2010/06/compleat-rubyist-day-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RailsConf &#8211; Day 3 &#8211; Lightning talks</title>
		<link>http://brian.olore.net/wp/2010/06/railsconf-day-3-lightning-talks/</link>
		<comments>http://brian.olore.net/wp/2010/06/railsconf-day-3-lightning-talks/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 21:48:56 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[work]]></category>
		<category><![CDATA[lightning]]></category>
		<category><![CDATA[railsconf]]></category>

		<guid isPermaLink="false">http://brian.olore.net/?p=190</guid>
		<description><![CDATA[Brian C &#8211; DNC
http://github/dnclabs
- client_side_validations &#8211; gem that does client side validation for rails
- takes AR validations &#8211; serves them via json &#8211; used by jquery.validate
how to kill rails
github.com/michel
bad practices by a few rails developers
Don&#8217;t reduce yourself to $20/hr, stick to your price, delivery quality
Communication is important!
Democracy.com
Raimond Garcia
Revolutionize Democracy
Parsed Congress web page &#8211; created a [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Brian C &#8211; DNC</strong></p>
<p>http://github/dnclabs</p>
<p>- client_side_validations &#8211; gem that does client side validation for rails<br />
- takes AR validations &#8211; serves them via json &#8211; used by jquery.validate</p>
<p><strong>how to kill rails</strong><br />
github.com/michel<br />
bad practices by a few rails developers<br />
Don&#8217;t reduce yourself to $20/hr, stick to your price, delivery quality<br />
Communication is important!</p>
<p><strong>Democracy.com</strong><br />
Raimond Garcia<br />
Revolutionize Democracy<br />
Parsed Congress web page &#8211; created a prototype on heroku in 48 hours<br />
legal palitical party in spain &#8211; &#8220;partido de internet&#8221;</p>
<p><strong>What&#8217;s new in RSpec-2</strong><br />
David Chelimsky<br />
in beta right now<br />
Old rspec won&#8217;t work with Rails 3<br />
doesn&#8217;t work with rails &lt; 3 (yet)</p>
<p>http://github.com/rspec</p>
<p>$rspec spec<br />
modularized, rspec-core is built on micronaut</p>
<p><strong>Surveyor gem</strong><br />
Mark Yoon<br />
Surveys in your Rails app<br />
write surveys in DSL<br />
exmaple Kitchen Sink survey<br />
dates, ranges, plck any, grids, multiple answers<br />
needs: admin ui, validations in UI, Rails3 support</p>
<p>http://github.com/breakpointer/surveyor</p>
<p><strong>MySQL is awesome</strong></p>
<p>@igrigorik<br />
Don&#8217;t believe all the NoSQL hype</p>
<p>http://bit.ly/bgi1Wf</p>
<p>more flexibility in the relational model<br />
em-proxy gem &#8211; tcp level proxy<br />
- used to rewrite SQL queries on the fly</p>
<p><strong>Michael Hartl</strong><br />
railstutorial.org<br />
Joy of publishing online<br />
goal &#8211; write a source file, publish HTML &amp; PDF with syntax highlighting &amp; linking to other sections<br />
PolyyTeXnic<br />
HTML &amp; PDF stay in sync</p>
<p><strong>Jake Scruggs </strong><br />
@jakescruggs<br />
ActiveMQ &amp; ActiveMessaging<br />
Mostly a Java shop, so not Resque, delayed job<br />
sending messages is easy<br />
pass id&#8217;s NOT serialized objects<br />
Tips:<br />
- Tell ActiveMessage to not be greedy<br />
- Namespace your queues<br />
- Name your pollers<br />
- Double Kill &#8211; Die Poller Die &#8211; script/poller run vs script/poller start</p>
<p><strong>Greg Nelson</strong><br />
foreign assistance</p>
<p>http://bit.ly/RwandaOnRails</p>
<p><strong>Jim Rumsick (Big Tiger)- HashRocket</strong><br />
Improv &#8211; Comedy to Coding<br />
Programming is about communication</p>
]]></content:encoded>
			<wfw:commentRss>http://brian.olore.net/wp/2010/06/railsconf-day-3-lightning-talks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RailsConf &#8211; Day 3 &#8211; Persistence Smoothie</title>
		<link>http://brian.olore.net/wp/2010/06/railsconf-day-3-persistence-smoothie/</link>
		<comments>http://brian.olore.net/wp/2010/06/railsconf-day-3-persistence-smoothie/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 19:34:36 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[work]]></category>
		<category><![CDATA[datamapper]]></category>
		<category><![CDATA[mongodb]]></category>
		<category><![CDATA[nosql]]></category>
		<category><![CDATA[railsconf]]></category>

		<guid isPermaLink="false">http://brian.olore.net/?p=188</guid>
		<description><![CDATA[Persistence Smoothie &#8211; Blending SQL &#38; NoSQL &#8211; Flip  Sasser (Intridea, Inc.)
@flipsasser
http://github.com/flipsasser/Persistence-Smoothie
NoSQL means no ACID
Keep what you know &#8211; don&#8217;t throw out your MySQL
DataMapper is the swiss army knife of ORM
- can point different models to different datastores
- Have a lot of refactoring to do
Sample Store App
- Authentication &#8211; keep in Reational DB
- Products [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.oreilly.com/rails2010/public/schedule/detail/11245">Persistence Smoothie &#8211; Blending SQL &amp; NoSQL</a> &#8211; <a href="http://en.oreilly.com/rails2010/public/schedule/speaker/81272">Flip  Sasser</a> (Intridea, Inc.)<br />
@flipsasser</p>
<p>http://github.com/flipsasser/Persistence-Smoothie</p>
<p>NoSQL means no ACID<br />
Keep what you know &#8211; don&#8217;t throw out your MySQL</p>
<p>DataMapper is the swiss army knife of ORM<br />
- can point different models to different datastores<br />
- Have a lot of refactoring to do</p>
<p>Sample Store App<br />
- Authentication &#8211; keep in Reational DB<br />
- Products &#8211; store metadata<br />
- Purchases &#8211; keep it in RDB<br />
- Activity Stream &#8211; denormalize with key/value store</p>
<p>mongofy &#8211; gem for moving data from mysql to mongo</p>
<p>Drawbacks<br />
- DataPortability is lowered<br />
- Lot more moving parts<br />
- Say goodbye to all your fun AR mixins</p>
]]></content:encoded>
			<wfw:commentRss>http://brian.olore.net/wp/2010/06/railsconf-day-3-persistence-smoothie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RailsConf &#8211; Day 3 &#8211; Introduction to Cassandra and CassandraObject</title>
		<link>http://brian.olore.net/wp/2010/06/railsconf-day-3-intro-to-cassandra/</link>
		<comments>http://brian.olore.net/wp/2010/06/railsconf-day-3-intro-to-cassandra/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 18:40:35 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[work]]></category>
		<category><![CDATA[cassandra]]></category>
		<category><![CDATA[cassandraobject]]></category>
		<category><![CDATA[railsconf]]></category>

		<guid isPermaLink="false">http://brian.olore.net/?p=184</guid>
		<description><![CDATA[Introduction to Cassandra and CassandraObject &#8211; Michael  Koziarski (Koziarski Software Limited)
Scales linearly &#8211; increases not only read access, but also write access
A ColumnFamily per query
CassandraObject
- Mostly AR compatible
- In flux
- taking patches
]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.oreilly.com/rails2010/public/schedule/detail/14740">Introduction to Cassandra and CassandraObject</a> &#8211; <a href="http://en.oreilly.com/rails2010/public/schedule/speaker/4847">Michael  Koziarski</a> (Koziarski Software Limited)</p>
<p>Scales linearly &#8211; increases not only read access, but also write access</p>
<p>A ColumnFamily per query</p>
<p>CassandraObject<br />
- Mostly AR compatible<br />
- In flux<br />
- taking patches</p>
]]></content:encoded>
			<wfw:commentRss>http://brian.olore.net/wp/2010/06/railsconf-day-3-intro-to-cassandra/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RailsConf &#8211; Day 3 &#8211; Redis, Rails and Resque</title>
		<link>http://brian.olore.net/wp/2010/06/railsconf-day-3-resque/</link>
		<comments>http://brian.olore.net/wp/2010/06/railsconf-day-3-resque/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 17:52:55 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[work]]></category>
		<category><![CDATA[railsconf]]></category>
		<category><![CDATA[redis]]></category>
		<category><![CDATA[resque]]></category>

		<guid isPermaLink="false">http://brian.olore.net/?p=181</guid>
		<description><![CDATA[Redis, Rails, and Resque &#8211; Background Job Bliss &#8211; Chris  Wanstrath (GitHub)
redis is a key value store for data structures
redis is not use for everything because entire dataset used to have to fit into RAM &#8211; would have to shard across machines
github &#8211; uses redis for routing, can add, remove.modify routes quickly &#38; easily [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.oreilly.com/rails2010/public/schedule/detail/14595">Redis, Rails, and Resque &#8211; Background Job Bliss</a> &#8211; <a href="http://en.oreilly.com/rails2010/public/schedule/speaker/45877">Chris  Wanstrath</a> (GitHub)<br />
redis is a key value store for data structures</p>
<p>redis is not use for everything because entire dataset used to have to fit into RAM &#8211; would have to shard across machines</p>
<p>github &#8211; uses redis for routing, can add, remove.modify routes quickly &amp; easily &#8211; can determine what server to put new users on, etc</p>
<p>Old &#8211; HAProxy sending to mongrels<br />
New &#8211; Unicorn &#8211; instead of receiving requests, it asks for one using &#8217;select&#8217;, pooled, forks similar to passenger</p>
<p>Used 6 or 7 different bg &#8211; SQS, DelayedJob<br />
Used Delayed job for 2 years</p>
<p>resque is built on redis, jobs are serialized to json and workers can be in any language http://github.com/defunkt/resque</p>
<p>resque has a plugin API &#8211; 15 or so plugins already exist &#8211; http://wiki.github.com/defunkt/resque/plugins</p>
<p>has admin interface</p>
<p>github has 35 types of background jobs</p>
<p>Notes: lightning fast talker! Lots of good information though. I&#8217;d have a beer with this guy!</p>
]]></content:encoded>
			<wfw:commentRss>http://brian.olore.net/wp/2010/06/railsconf-day-3-resque/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RailsConf &#8211; Day 3 &#8211; Million Dollar Mongo</title>
		<link>http://brian.olore.net/wp/2010/06/railsconf-day-3-million-dollar-mongo/</link>
		<comments>http://brian.olore.net/wp/2010/06/railsconf-day-3-million-dollar-mongo/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 15:44:59 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[work]]></category>
		<category><![CDATA[monogodb]]></category>
		<category><![CDATA[railsconf]]></category>

		<guid isPermaLink="false">http://brian.olore.net/?p=178</guid>
		<description><![CDATA[Million Dollar Mongo - Obie  Fernandez (Hashrocket),  	 	  		Durran  Jordan (Hashrocket)
mongo was a good choice because only one patient record was worked on at a time
get entire object graph in a single query
previously did 35 joins and took 20 minutes to return
comparison between mongo, couch &#38; cassandra
big selling point was [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.oreilly.com/rails2010/public/schedule/detail/11265">Million Dollar Mongo</a> -<a href="http://en.oreilly.com/rails2010/public/schedule/speaker/2747"> Obie  Fernandez</a> (Hashrocket),  	 	  		<a href="http://en.oreilly.com/rails2010/public/schedule/speaker/70573">Durran  Jordan</a> (Hashrocket)<br />
mongo was a good choice because only one patient record was worked on at a time</p>
<p>get entire object graph in a single query<br />
previously did 35 joins and took 20 minutes to return</p>
<p>comparison between mongo, couch &amp; cassandra<br />
big selling point was dynamic queries &#8211; nice happy medium when coming from relational databases<br />
&#8220;I don&#8217;t want to write any more ****** XML, so goodbye Cassandra&#8221;</p>
<p>No universal agreement that a NOSQL solution was the right idea</p>
<p>&#8220;Easiest database to install ever (except maybe Redis)&#8221;<br />
No schema migrations</p>
<p>Forked MongoMapper -&gt; Monoid<br />
- MongoMapper was very young</p>
<p>Mongoid<br />
- Prefers Embedding Documents<br />
- Atomic Operations by Default, based on attribute changes<br />
- rich criteria api<br />
- master/slave suppor<br />
- simple versioning<br />
- is NOT ActiveRecord (and should be treated as such)<br />
- Features always have performance in mind</p>
<p>mongo &#8211; can index in background as of 1.4<br />
regex queries on fields<br />
Denormalization is acceptable, embed as much as possible (no FK constraints)</p>
<p>Hybrid DB model<br />
- Hierarchical Data Stored in MongoDB<br />
- Relational Data stored in MySQL<br />
- Data that required transactions stored in MySQL<br />
- Simple Data in Redis<br />
- Favor suitability over simplicity</p>
<p>It&#8217;s ok to use more than one datastore</p>
<p>Working without transactions<br />
- Atomic updates generally cover you<br />
- fairly easy to roll your own optimistic locking<br />
- need to do manual rollback in integration tests<br />
- selenium tests can run in a separate process</p>
<p>in production<br />
- deployed on engine yard cloud / ec2<br />
- 0.5 TB of data<br />
- put mongodb on it&#8217;s own utility space<br />
- feed it lots of ram, lots of disk space<br />
- chef scripts easy due to simple installation</p>
]]></content:encoded>
			<wfw:commentRss>http://brian.olore.net/wp/2010/06/railsconf-day-3-million-dollar-mongo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RailsConf &#8211; Day 2 &#8211; MongoDB Metamorphosis</title>
		<link>http://brian.olore.net/wp/2010/06/railsconf-day-2-mongodb/</link>
		<comments>http://brian.olore.net/wp/2010/06/railsconf-day-2-mongodb/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 21:51:21 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[work]]></category>
		<category><![CDATA[mongodb]]></category>
		<category><![CDATA[railsconf]]></category>

		<guid isPermaLink="false">http://brian.olore.net/?p=173</guid>
		<description><![CDATA[The MongoDB Metamorphosis: Data as Documents &#8211; Kyle  Banker (10gen)
http://try.mongodb.com &#8211; mini tutorial
MongoDB tries to fit between key-value stores &#38; relational databases
Data as Documents &#8211; documents are in BSON (binary json)
mongoDB operates on documents using special syntax
update() takes a query and an update (what to do) .. the update is applied to the results [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.oreilly.com/rails2010/public/schedule/detail/12005">The MongoDB Metamorphosis: Data as Documents</a> &#8211; <a href="http://en.oreilly.com/rails2010/public/schedule/speaker/74347">Kyle  Banker</a> (10gen)</p>
<p><a href="http://try.mongodb.com">http://try.mongodb.com</a> &#8211; mini tutorial</p>
<p>MongoDB tries to fit between key-value stores &amp; relational databases</p>
<p>Data as Documents &#8211; documents are in BSON (binary json)</p>
<p>mongoDB operates on documents using special syntax</p>
<p>update() takes a query and an update (what to do) .. the update is applied to the results of the query</p>
<p>Embedded documents &#8211; i.e. Comments become embedded within Posts<br />
Or you can normalize &#8211; Post id within each comment<br />
Decisions to be made on what makes most sense for how you need to access the data</p>
<p>Embedded &#8211; fast queries, document always appears with parent</p>
<p>Hash is the object used to represent MongoDB objects</p>
<p>MongoMapper</p>
<p>Very informational, I want to try using this!</p>
]]></content:encoded>
			<wfw:commentRss>http://brian.olore.net/wp/2010/06/railsconf-day-2-mongodb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RailsConf &#8211; Day 2 &#8211; Beyond git push heroku</title>
		<link>http://brian.olore.net/wp/2010/06/railsconf-day-2-heroku/</link>
		<comments>http://brian.olore.net/wp/2010/06/railsconf-day-2-heroku/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 19:41:53 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[work]]></category>
		<category><![CDATA[heroku]]></category>
		<category><![CDATA[railsconf]]></category>

		<guid isPermaLink="false">http://brian.olore.net/?p=169</guid>
		<description><![CDATA[Beyond Git Push Heroku: Battle Stories from Cloud  Samurais &#8211; Oren  Teich (Heroku),  	 	  		Morten   Bagai (Heroku)
heroic had down time this morning, so we&#8217;ll talk about that for a bit then resume our normal schedule
use something similar to nagios
problem was occurring somewhere in http stack
form hypothesis &#38; find [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.oreilly.com/rails2010/public/schedule/detail/15351">Beyond Git Push Heroku: Battle Stories from Cloud  Samurais</a> &#8211; <a href="http://en.oreilly.com/rails2010/public/schedule/speaker/61693">Oren  Teich</a> (Heroku),  	 	  		<a href="http://en.oreilly.com/rails2010/public/schedule/speaker/25593">Morten   Bagai</a> (Heroku)<br />
heroic had down time this morning, so we&#8217;ll talk about that for a bit then resume our normal schedule<br />
use something similar to nagios<br />
problem was occurring somewhere in http stack<br />
form hypothesis &amp; find a way to test it quickly and in a non-disruptive manner &#8211; don&#8217;t want to make the problem worse<br />
disabled misbehaving systems &#8211; took them out of the cluster &#8211; didn&#8217;t turn off, wanted to diagnose</p>
<p>2 of the 3 cofounders here in room<br />
Do one thing well &#8211; deploy a rails application onto the web<br />
$git push heroku master<br />
let developers use tools to deploy that they are already using<br />
&#8220;No step 1&#8243;</p>
<p>heroku stacks &#8211; let&#8217;s you target a version of a vm &amp; libraries that you want to target &#8211; linux version, ruby, etc</p>
<p>http://docs.heroku.com/rails3</p>
<p>http://www.scvngr.com</p>
<p>http://www.syphir.com</p>
<p>http://getcloudapp.com</p>
<p>pandastream &#8211; cloud based video encoding</p>
<p>Anything can be a cloud service as long as it&#8217;s deployed in the same infrastructure &#8211; memcached, monogohq, etc</p>
]]></content:encoded>
			<wfw:commentRss>http://brian.olore.net/wp/2010/06/railsconf-day-2-heroku/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RailsConf &#8211; Day 2 &#8211; What should we work on next?</title>
		<link>http://brian.olore.net/wp/2010/06/railsconf-day-2-work-on-next/</link>
		<comments>http://brian.olore.net/wp/2010/06/railsconf-day-2-work-on-next/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 18:34:08 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[work]]></category>
		<category><![CDATA[railsconf]]></category>

		<guid isPermaLink="false">http://brian.olore.net/?p=164</guid>
		<description><![CDATA[What should we work on next? &#8211; Brian Doll (New Relic)
My note: this is probably a sales pitch on RPM, but at least I know that gong in  

Performance is value
Apdex &#8211; how your customers feel about the service they are getting &#8211; how satisfied they are
Awesome &#8220;Knuth is my homeboy&#8221; image with appropriate [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.oreilly.com/rails2010/public/schedule/detail/15388">What should we work on next?</a> &#8211; Brian Doll (New Relic)</p>
<p>My note: this is probably a sales pitch on RPM, but at least I know that gong in <img src='http://brian.olore.net/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<ul>
<li>Performance is value</li>
<li>Apdex &#8211; how your customers feel about the service they are getting &#8211; how satisfied they are</li>
<li>Awesome &#8220;Knuth is my homeboy&#8221; image with appropriate quote: &#8220;premature optimization is the root of all evil&#8221;</li>
<li>Nice charts to compare metrics vs 24 hours ago, a week ago, a month ago</li>
</ul>
<p>My note: I was right, and now I am bored&#8230;but I am going to go read about <a href="http://lucene.apache.org/solr/">solr</a></p>
]]></content:encoded>
			<wfw:commentRss>http://brian.olore.net/wp/2010/06/railsconf-day-2-work-on-next/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RailsConf &#8211; Day 2 &#8211; Metrics Magic</title>
		<link>http://brian.olore.net/wp/2010/06/railsconf-day-2-metrics-magic/</link>
		<comments>http://brian.olore.net/wp/2010/06/railsconf-day-2-metrics-magic/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 16:28:48 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[work]]></category>
		<category><![CDATA[metrics]]></category>
		<category><![CDATA[railsconf]]></category>

		<guid isPermaLink="false">http://brian.olore.net/?p=159</guid>
		<description><![CDATA[Metrics Magic - Aaron  Bedra (Relevance, Inc.) &#8211; maintains rcov
How did we get here?
Technical Debt &#8211; but there is no bailout program! Good idea if you intend on paying back.
Metrics are a great way to facilitation conversation
It&#8217;s ok to ask others how/why the code was written
if its hard to write tests around your code, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.oreilly.com/rails2010/public/schedule/detail/11500">Metrics Magic</a> -<a href="http://en.oreilly.com/rails2010/public/schedule/speaker/2634"> Aaron  Bedra</a> (Relevance, Inc.) &#8211; maintains <a href="http://github.com/relevance/rcov">rcov</a></p>
<p>How did we get here?<br />
Technical Debt &#8211; but there is no bailout program! Good idea if you intend on paying back.</p>
<p>Metrics are a great way to facilitation conversation<br />
It&#8217;s ok to ask others how/why the code was written</p>
<p>if its hard to write tests around your code, that&#8217;s a smell</p>
<p>output of metrics tools is just text &#8211; you can make these metrics tool fail the build !</p>
<p>There&#8217;s no substitute for peer review</p>
<p><strong>rcov</strong> can fail the build by setting &#8220;&#8211;failure-threshold n&#8221;<br />
- should increase the threshold as your code coverage goes up so that you know when it drops</p>
<p><strong>reek</strong> &#8211; fail the build by capturing the output<br />
result = %x{reek app lib}<br />
exit 1 unless result.empty?</p>
<p><strong>flog</strong> -<br />
flog app  awk &#8216;NR==4&#8242; | awk &#8216;{print $1}&#8217;<br />
exit 1 if result.gsub(&#8220;:&#8221;,&#8221;").to_i &gt;= 20</p>
<p><strong>metric-fu</strong><br />
wraps tests in pretty pictures</p>
<p>Compare charts to previous sprints &#8211; generate conversation</p>
<p>Great presentation materials &#8211; cartoony, fun<br />
Good speaker, useful demo</p>
]]></content:encoded>
			<wfw:commentRss>http://brian.olore.net/wp/2010/06/railsconf-day-2-metrics-magic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
