<?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> &#187; sarah</title>
	<atom:link href="http://blog.blazingcloud.net/author/sarah/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.blazingcloud.net</link>
	<description></description>
	<lastBuildDate>Wed, 16 May 2012 00:38:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.5</generator>
		<item>
		<title>Paid Design Internship</title>
		<link>http://blog.blazingcloud.net/2012/05/15/paid-design-internship/</link>
		<comments>http://blog.blazingcloud.net/2012/05/15/paid-design-internship/#comments</comments>
		<pubDate>Wed, 16 May 2012 00:36:34 +0000</pubDate>
		<dc:creator>sarah</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.blazingcloud.net/?p=3125</guid>
		<description><![CDATA[Blazing Cloud creates innovative mobile products to clients ranging from startups to Fortune 500 companies. At the core of our success is a continuous appetite for becoming experts at new techniques and technologies, paired with our willingness to pay it forward. Over the past year, our classes and events were the main outlet for sharing [...]]]></description>
			<content:encoded><![CDATA[<p>Blazing Cloud creates innovative mobile products to clients ranging from startups to Fortune 500 companies.  At the core of our success is a continuous appetite for becoming experts at new techniques and technologies, paired with our willingness to pay it forward.  Over the past year, our classes and events were the main outlet for sharing our knowledge with the community. Today, we are happy to announce our Design Mentorship program. </p>
<p>We are ready to take one design trainee under our wing, opening up a full time, paid internship for a junior designer who can show good design sense and the drive to become great in this profession. </p>
<p>To benefit fully from what we have to teach, you&#8217;ll need to be very comfortable in Photoshop or other graphics software, familiar with HTML + CSS, and a good writer.  In addition, you will demonstrate the ability to think critically and show a true passion for products and design. These required building blocks will allow you, under our mentorship, to develop into a full stack product designer capable of tackling UX problems in a cross-disciplinary way.</p>
<p><strong>The Program</strong><br />
From Day 1 you will be involved in design activities for client projects, under the guidance of one of our lead designers. You will be expected to learn and contribute to all aspects of product design, from research and brainstorming to visual design and asset production.<br />
Given the focus of the company, you will learn mobile design from the inside out. You will have insight into methodologies like Agile and Lean UX, and you will learn what types of activities and deliverables are suitable to fast-paced, iterative design. </p>
<p>At the end of the program, we hope to graduate you into a full time design position with our team, perhaps the best indicator that we take our investment in you very seriously. </p>
<p><strong>To Respond</strong><br />
* <a href="http://www.captainrecruiter.com/jobs/318">Captain Recruiter</a> will be the first point of contact.<br />
* All applications will receive a response.<br />
* To apply, <a href="http://www.captainrecruiter.com/jobs/318">click here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blazingcloud.net/2012/05/15/paid-design-internship/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>looking for great developers (mobile &amp; web)</title>
		<link>http://blog.blazingcloud.net/2012/04/03/looking-for-great-developers/</link>
		<comments>http://blog.blazingcloud.net/2012/04/03/looking-for-great-developers/#comments</comments>
		<pubDate>Tue, 03 Apr 2012 22:42:31 +0000</pubDate>
		<dc:creator>sarah</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.blazingcloud.net/?p=2914</guid>
		<description><![CDATA[Blazing Cloud isn&#8217;t your typical startup or consulting agency. We&#8217;re a bunch of startup people who work together to deliver products for hire, creating a structure to give us freedom to pursue our own entrepreneurial ideas or other life plans. I&#8217;ve been intentionally slow to grow the company over the past year, as we settled [...]]]></description>
			<content:encoded><![CDATA[<p>Blazing Cloud isn&#8217;t your typical startup or consulting agency.  We&#8217;re a bunch of startup people who work together to deliver products for hire, creating a structure to give us freedom to pursue our own entrepreneurial ideas or other life plans.</p>
<p>I&#8217;ve been intentionally slow to grow the company over the past year, as we settled into a groove, focusing on mobile apps (native and web).  We&#8217;ve defined some great processes and techniques for agile product development that are our own mix of XP and Lean Startup, and we&#8217;re always learning.  In fact, learning and teaching are part of everything we do.  In addition to the formal instruction we do in our classes and events, we all love to learn new APIs and languages, and getting really good at the best techniques.  We always aspire to create beautiful, usable products and we collaborate with our clients in making that happen.</p>
<p>I&#8217;m excited that we&#8217;re ready to grow the company just a little bit more. Our last few awesome engineers were hired opportunistically thru the grapevine, but I strongly believe that the best practice in hiring is to post a job description and have an open process.</p>
<p>We&#8217;re looking for someone excited about native and/or mobile web development &#8212; we usually work with Objective-C for iOS, Java for Android, and Ruby/Rails/JavaScript for mobile web. You can be a generalist or specialize in a specific area. On Day 1 you&#8217;ll be coding on a customer facing project appropriate to your skill level. We are optimized to teach you whatever you don&#8217;t know. We are open to full-time employees or project-based contractors.</p>
<p>As a full-time employee you can look forward to:</p>
<ul>
<li><strong>Opportunity for advancement</strong>. We&#8217;re small and growing. You&#8217;ll be instrumental in shaping the company and we encourage you to pursue a leadership role.</li>
<li><strong>Flexibility</strong>. In addition to paid vacation, we&#8217;ll allow you to take a sabbatical or incubate your own startup. Last summer, one of our engineers took of 6 weeks, spending most of her time learning Spanish in Guatemala. Another of our engineers took a few weeks off to develop an idea for his startup. Other engineers have spent extra time off farming, studying dance, and working on a mobile game.</li>
<li><strong>Mentorship</strong>. We believe in helping each other.  You can leverage our deep experience to learn what it takes to build and ship successful software products, and we expect we&#8217;ll learn a lot from you.</li>
<li><strong>Transparency</strong>. You&#8217;ll have visibility into all aspects of the business, from how decisions are made to the financial health of the company.</li>
<li><strong>Benefits</strong>. We offer full medical, dental, vision and paid vacation. We&#8217;ll pay for one SmartPhone expense (monthly plan + device) and provide a top-of-the-line MacBook if you need one. Also, you can take any of our classes for free.</li>
</ul>
<p>Equality Opportunity Employer: we welcome applicants from diverse backgrounds. We currently have 50% women/men and engineers with and without CS degrees.  We welcome ninjas, rockstars, and pirates, but you also need to be able to write great code and work well in a team.</p>
<p>Feel free to contact me or anyone else at Blazing Cloud directly, but also apply with <a href="http://captainrecruiter.com/jobs/296">Captain Recruiter</a> &#8212; they&#8217;ll make sure we don&#8217;t lose track of anyone.  Github and LinkedIn profiles are a fine substitute for a resume if they are up to date.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blazingcloud.net/2012/04/03/looking-for-great-developers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pivotal Labs acquired by EMC</title>
		<link>http://blog.blazingcloud.net/2012/03/27/pivotal-labs-acquired-by-emc/</link>
		<comments>http://blog.blazingcloud.net/2012/03/27/pivotal-labs-acquired-by-emc/#comments</comments>
		<pubDate>Tue, 27 Mar 2012 16:01:18 +0000</pubDate>
		<dc:creator>sarah</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.blazingcloud.net/?p=2864</guid>
		<description><![CDATA[Last week EMC acquired Pivotal Labs. Pivotal Labs anticipates accelerated growth, which, along with the EMC relationship, will position them well for going after even bigger enterprise customers. While they still plan to work with startups, an interview with Pivotal&#8217;s Eduard Hiatt highlights the opportunity presented by the acquisition to &#8220;spread our message faster.&#8221; The [...]]]></description>
			<content:encoded><![CDATA[<p>Last week <a href="http://www.emc.com">EMC</a> acquired <a href="http://pivotallabs.com/">Pivotal Labs</a>.  Pivotal Labs anticipates accelerated growth, which, along with the EMC relationship, will position them well for going after even bigger enterprise customers.  While they still plan to work with startups, an <a href="http://www.betabeat.com/2012/03/21/emc-acquires-pivotal-labs-agile-development-startups-03212012/">interview with Pivotal&#8217;s Eduard Hiatt</a> highlights the opportunity presented by the acquisition to &#8220;spread our message faster.&#8221;   The Pivotal process is their message, which helps their clients increase software development velocity by introducing agile techniques as well as cultural change.  Pivotal Lab&#8217;s founder, <a href="http://pivotallabs.com/users/rob/blog/articles/2053-a-new-chapter-for-pivotal-labs">Rob Mee writes</a> how they &#8220;challenged conventional methods of software development, and &#8230;built a culture that encourages discipline while fostering creativity.&#8221;  </p>
<p>By creating Pivotal Labs, Rob Mee has been successful in bringing agile techniques to hundreds of companies.  The impact has been more dramatic than if he had written a book or created a training course.  When Blazing Cloud was just starting, Rob was supportive in offering advice and referring smaller clients, but even more importantly, Pivotal Labs had set a tone in San Francisco of how good software development was done.  Since those values aligned with mine, it was easy to create a consulting business that followed similar software development practices, providing a firm foundation to innovate complementary product development techniques.</p>
<p>In addition to agile techniques, Pivotal Labs culture also embraces open source as an effective means of achieving velocity.  They have created and contribute to many open source test frameworks and tools.  They have a culture of supporting the community and sharing knowledge.  In addition to publishing their <a href="http://pivotallabs.com/talks">tech talks</a>, they have hosted countless <a href="http://www.sfruby.info/">SFRuby Meetups</a> and the San Francisco office has committed to hosting <a href="http://workshops.railsbridge.org/">RailsBridge workshops</a> quarterly.</p>
<p>Acquisitions are always challenging, but Pivotal Labs is well-practiced in working with larger companies while retaining their culture and instigating positive change.  I expect they&#8217;ll have a positive impact on EMC, as well as current and future clients.  We wish Pivotal Labs all the best in their future expansion.  </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blazingcloud.net/2012/03/27/pivotal-labs-acquired-by-emc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting Started with Jasmine and Rails 3.2</title>
		<link>http://blog.blazingcloud.net/2012/03/03/getting-started-with-jasmine-and-rails-3-2/</link>
		<comments>http://blog.blazingcloud.net/2012/03/03/getting-started-with-jasmine-and-rails-3-2/#comments</comments>
		<pubDate>Sat, 03 Mar 2012 17:55:57 +0000</pubDate>
		<dc:creator>sarah</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blazingcloud.net/?p=2797</guid>
		<description><![CDATA[tldr; check out the git repo Some good folks have been putting together gems that really help getting started with Javascript testing in Rails, which became somewhat more challenging with the Rails 3.1 asset pipeline.  I decided to dig through some of this and get up to speed with a fresh install of Rails 3.2.2 [...]]]></description>
			<content:encoded><![CDATA[<p>tldr; check out the <a href="https://github.com/blazingcloud/jasmine-rails32-example">git repo</a></p>
<p>Some good folks have been putting together gems that really help getting started with Javascript testing in Rails, which became somewhat more challenging with the Rails 3.1 asset pipeline.  I decided to dig through some of this and get up to speed with a fresh install of Rails 3.2.2 using my favorite JS testing framework, the BDD-style Jasmine.</p>
<p>I started with <a href="http://www.derekhammer.com/2012/02/18/testing-coffeescript-for-rails-with-jasmine.html">Derek Hammer&#8217;s testing coffeescript tutorial</a> &#8212; I&#8217;m not sold on coffeescript, so I reimplemented the first &#8220;sanity&#8221; spec in plain old javascript.</p>
<p>Note: do not name your .coffee files the same root name as your .js file &#8212; only one of them will be executed twice.  Here&#8217;s a comparison of the syntax:</p>
<p>Coffeescript Jasmine Spec:</p>
<pre>
describe "sanity", ->
  it "1 should == 1", ->
    expect(1).toBe(1)

  it "says hello", ->
    expect(helloWorld()).toEqual("Hello!")
</pre>
<p>Javascript Jasmine Spec:</p>
<pre>
describe("sanity js", function() {
  it("2 equals 2", function() {
    expect(2).toEqual(2);
  });

  it("says hello", function() {
    expect(helloWorld()).toEqual("Hello!");
  });

});
</pre>
<p>Ok, I&#8217;m almost won over to coffeescript by this example &#8212; it&#8217;s nice that I can write my specs in coffeescript and code in Javascript (and I assume vice versa), so I can experiment without having to make a binary decision.</p>
<p>I can see failing specs by running <code>rails s</code> and going to http://localhost:3000/jasmine and it looks like this (when I&#8217;ve defined the helloWorld() function but it returns the wrong thing):<br />
<img src="https://img.skitch.com/20120303-dgmr4me12d7fit6s5gphicqcuk.png"/></p>
<p>Even better, using jasmine-guard, I can see this on the command line:<br />
<img src="https://img.skitch.com/20120303-bigwtntpyc1tp3sw18jh5wymhi.png"/></p>
<p>Summary of getting this all working:</p>
<p>Using rails 3.2.2&#8230;</p>
<pre>
$rails new jasminerice-example
$cd jasminerice-example
</pre>
<p>add the following to your Gemfile</p>
<pre>
group :development, :test do
  gem "jasminerice"
  gem "guard-jasmine"
end
</pre>
<pre>
bundle
brew install phantomjs
</pre>
<p>I got a &#8220;SHA1 mismatch&#8221; error, fixed with</p>
<pre>
  brew update
  brew install phantomjs
</pre>
<p>Then</p>
<pre>
bundle exec guard init jasmine
mkdir -p spec/javascripts
touch spec/javascripts/spec.js
touch spec/javascripts/spec.css
</pre>
<p>in spec/javascripts/spec.js</p>
<pre>
//= require application
//= require_tree .
</pre>
<p>in spec/javascripts/spec.css</p>
<pre>
/*
 *= require application
 */
</pre>
<p>Now any coffee or js you put in spec/javascripts will be executed when you <code>rails s</code> and go to <a href="http://localhost:3000/jasmine">http://localhost:3000/jasmine</a> or see your specs run on the command line with:</p>
<pre>
bundle exec guard
</pre>
<p>Happy Testing!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blazingcloud.net/2012/03/03/getting-started-with-jasmine-and-rails-3-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Lauren Ipsum: CS Fiction for Kids</title>
		<link>http://blog.blazingcloud.net/2011/10/10/lauren-ipsum-cs-fiction-for-kids/</link>
		<comments>http://blog.blazingcloud.net/2011/10/10/lauren-ipsum-cs-fiction-for-kids/#comments</comments>
		<pubDate>Mon, 10 Oct 2011 14:14:35 +0000</pubDate>
		<dc:creator>sarah</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blazingcloud.net/?p=2594</guid>
		<description><![CDATA[We just backed the Lauren Ipsum project on KickStarter. This children&#8217;s story is an adventure through computer science concepts. The main character, Lauren Ipsum, meets a Wandering Salesman in the first chapter who is finding his way home using the algorithm of that name. It&#8217;ll be interesting to read the rest of the book and [...]]]></description>
			<content:encoded><![CDATA[<p>We just backed the <a href="http://www.kickstarter.com/projects/512752850/lauren-ipsum-computer-science-for-kids">Lauren Ipsum project</a> on KickStarter.  <iframe align="right" frameborder="0" scrolling="no" height="380px" src="http://www.kickstarter.com/projects/512752850/lauren-ipsum-computer-science-for-kids/widget/card.html" width="220px"></iframe></p>
<p>This children&#8217;s story is an adventure through computer science concepts. The main character, Lauren Ipsum, meets a Wandering Salesman in the first chapter who is finding his way home using the algorithm of that name. It&#8217;ll be interesting to read the rest of the book and to see whether it can inspire children to think about algorithms and data from a fun perspective without introducing them as computing concepts.</p>
<p>Pledges on KickStarter go towards translating the book into Spanish, Portuguese, and other languages. This is pretty awesome, since much of software development lingo is taken from English, it is great to evangelize learning computer science concepts in kids&#8217; native languages.  </p>
<p>We applaud this effort and look forward to hanging one of the book&#8217;s illustrations in our office after the completion of the project.</p>
<p>Even though they have already met their goal, more funding will enable translation in more languages.  </p>
<p>Learn more about <a href="http://www.kickstarter.com/projects/512752850/lauren-ipsum-computer-science-for-kids">Lauren Ipsum on KickStarter</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blazingcloud.net/2011/10/10/lauren-ipsum-cs-fiction-for-kids/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mobile Lean UX</title>
		<link>http://blog.blazingcloud.net/2011/08/14/mobile-lean-ux/</link>
		<comments>http://blog.blazingcloud.net/2011/08/14/mobile-lean-ux/#comments</comments>
		<pubDate>Sun, 14 Aug 2011 18:56:51 +0000</pubDate>
		<dc:creator>sarah</dc:creator>
				<category><![CDATA[Lean Startup]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://blazingcloud.net/?p=2431</guid>
		<description><![CDATA[Agile development is an ideal way to create production software, but how do we apply agile methodologies to the design of the user experience? User experience design benefits from a holistic approach and if we aren&#8217;t careful, doing iterative development can result in a disjointed and confusing user experience or expensive re-designs. I gave a [...]]]></description>
			<content:encoded><![CDATA[<p>Agile development is an ideal way to create production software, but how do we apply agile methodologies to the design of the user experience?  User experience design benefits from a holistic approach and if we aren&#8217;t careful, doing iterative development can result in a disjointed and confusing user experience or expensive re-designs.  I gave a talk last week at <a href="http://founderlabs.org/">Founder Labs</a> about how to apply agile and &#8220;lean startup&#8221; to the definition of the user experience. I shared some details about tools that can be used for both prototyping and building production software and talked about how to choose between developing for the mobile web, native apps or taking a hybrid approach.</p>
<p>Here are the slides from my talk at Founder Labs:</p>
<div style="width:425px" id="__ss_8848451"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/blazingcloud/mobile-lean-ux" title="Mobile Lean UX" target="_blank">Mobile Lean UX</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/8848451" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
<div style="padding:5px 0 12px"> View more presentations from <a href="http://www.slideshare.net/blazingcloud" target="_blank">Blazing Cloud</a> </div>
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.blazingcloud.net/2011/08/14/mobile-lean-ux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rack for Easy HTTP redirect</title>
		<link>http://blog.blazingcloud.net/2011/08/04/rack-for-easy-http-redirect/</link>
		<comments>http://blog.blazingcloud.net/2011/08/04/rack-for-easy-http-redirect/#comments</comments>
		<pubDate>Thu, 04 Aug 2011 18:05:15 +0000</pubDate>
		<dc:creator>sarah</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blazingcloud.net/?p=2419</guid>
		<description><![CDATA[We recently moved our class sign-up to EventBrite.  It used to be hosted on heroku with the subdomain classes.blazingcloud.net.  However, when we changed our DNS to direct to eventbrite, it didn&#8217;t end up targetting our eventbrite subdomain: blazingcloud.eventbrite.com &#8212; hitting the EventBrite homepage instead.  Rack to the rescue! We set up another Heroku app with [...]]]></description>
			<content:encoded><![CDATA[<p>We recently moved our <a href="http://blazingcloud.eventbrite.com/">class sign-up</a> to EventBrite.  It used to be hosted on heroku with the subdomain <a href="http://classes.blazingcloud.net/">classes.blazingcloud.net</a>.  However, when we changed our DNS to direct to eventbrite, it didn&#8217;t end up targetting our eventbrite subdomain: <a href="http://blazingcloud.eventbrite.com/">blazingcloud.eventbrite.com</a> &#8212; hitting the EventBrite homepage instead.  Rack to the rescue!</p>
<p>We set up another Heroku app with just a one-line rack application.  All it needed was a rackup config file, called &#8220;config.ru&#8221; with the following line:</p>
<pre>
run Proc.new { [ 302, {'Location'=> 'http://blazingcloud.eventbrite.com' }, [] ] }
</pre>
<p>and voila! It does a simple re-direct to the new site.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blazingcloud.net/2011/08/04/rack-for-easy-http-redirect/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>remarkable validations for rails 3</title>
		<link>http://blog.blazingcloud.net/2011/07/21/remarkable-validations-for-rails-3/</link>
		<comments>http://blog.blazingcloud.net/2011/07/21/remarkable-validations-for-rails-3/#comments</comments>
		<pubDate>Thu, 21 Jul 2011 17:26:21 +0000</pubDate>
		<dc:creator>sarah</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blazingcloud.net/?p=2390</guid>
		<description><![CDATA[I&#8217;ve been working on upgrading an app from Rails 2.3.11 to Rails 3.1.  It was using the old rspec-on-rails-matchers plugin to get validators like: it 'verifies that login is between 3 and 40 characters' do User.new.should validate_length_of(:login, :within =&#62; 3..40) end I like that validation syntax, but lately when I see a plugins, I worry [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working on upgrading an app from Rails 2.3.11 to Rails 3.1.  It was using the old rspec-on-rails-matchers plugin to get validators like:</p>
<pre class="brush: plain; title: ;">
it 'verifies that login is between 3 and 40 characters' do
   User.new.should validate_length_of(:login, :within =&gt; 3..40)
end
</pre>
<p>I like that validation syntax, but lately when I see a plugins, I worry that I&#8217;m in for some archaeology.  I did find a replacement gem, but it didn&#8217;t work on first try, so I read up on my options.  I briefly considered shoulda, which is now compatible with rspec, but I settled on <a href="https://github.com/remarkable/remarkable">remarkable</a> because it seems to match the syntax already in use.  I wrote a little test <a href="https://github.com/blazingcloud/remarkable_example">rails app with a couple of models</a> and was pleased the results.  </p>
<h2>Setup</h2>
<pre class="brush: plain; title: ;">
rails new remarkable_app -T&quot;
cd remarkable_app
</pre>
<p>add to Gemfile:</p>
<pre class="brush: plain; title: ;">
    group :development, :test do
      gem &quot;rspec&quot;, &quot;2.6.0&quot;
      gem &quot;rspec-rails&quot;, &quot;2.6.1&quot;
      gem &quot;remarkable_activerecord&quot;, &quot;4.0.0.alpha4&quot;
    end
</pre>
<p>Then back on the command line, set up rspec:</p>
<pre class="brush: plain; title: ;">
rails g rspec:install
</pre>
<p>edit spec/spec_helper.rb to include (after require &#8216;rspec/rails&#8217;):</p>
<pre class="brush: plain; title: ;">
    require 'remarkable/active_record'
</pre>
<h2>Create a Model</h2>
<p>Then make a model to play with (on the command line):</p>
<pre class="brush: plain; title: ;">
rails g model person name:string email:string
rake db:migrate
rake spec
/Users/sarah/.rvm/rubies/ruby-1.9.2-p290/bin/ruby -S bundle exec rspec ./spec/models/person_spec.rb
*

Pending:
  Person add some examples to (or delete) /Users/sarah/src/mv/experiment/remarkable_app/spec/models/person_spec.rb
    # Not Yet Implemented
    # ./spec/models/person_spec.rb:4

Finished in 0.00026 seconds
1 example, 0 failures, 1 pending
</pre>
<p>yay! ready to get started test driving some remarkable validations&#8230;</p>
<h2>Test Driven Validation</h2>
<p>Let&#8217;s test drive our first validation..</p>
<pre class="brush: plain; title: ;">
describe Person do
  should_validate_length_of :name, :within =&gt; 3..40
end
</pre>
<p>note that remarkable also supports:<br />
<code>it { should validate_length_of :name, :within => 3..40 }</code><br />
For my new code I&#8217;ll probably write the more concise version, but it is nice that my old code should work.</p>
<pre class="brush: plain; title: ;">
$ rake spec
/Users/sarah/.rvm/rubies/ruby-1.9.2-p290/bin/ruby -S bundle exec rspec ./spec/models/person_spec.rb
F

Failures:

  1) Person
     Failure/Error: send(should_or_should_not, send(method, *args, &amp;block))
       Expected Person to be invalid when name length is less than 3 characters
     # ./spec/models/person_spec.rb:4:in `block in &lt;top (required)&gt;'
     # ./spec/models/person_spec.rb:3:in `&lt;top (required)&gt;'

Finished in 0.30367 seconds
1 example, 1 failure

Failed examples:

rspec /Users/sarah/.rvm/gems/ruby-1.9.2-p290@remarkable_rails3/gems/remarkable-4.0.0.alpha4/lib/remarkable/core/macros.rb:26 # Person
rake aborted!
ruby -S bundle exec rspec ./spec/models/person_spec.rb failed
</pre>
<p>add validation to my model&#8230;</p>
<pre class="brush: plain; title: ;">
class Person &lt; ActiveRecord::Base
  validates_length_of :name, :within =&gt; 3..40
end
</pre>
<p>Test passes!</p>
<pre class="brush: plain; title: ;">
$ rake spec
/Users/sarah/.rvm/rubies/ruby-1.9.2-p290/bin/ruby -S bundle exec rspec ./spec/models/person_spec.rb
.

Finished in 0.27601 seconds
1 example, 0 failures
</pre>
<p>More validations:</p>
<pre class="brush: plain; title: ;">
describe Person do
  should_validate_length_of :name, :within =&gt; 3..40
  should_allow_values_for :email, &quot;sarah@foo.com&quot;
  should_not_allow_values_for :email, &quot;sarah&quot;, &quot;@foo&quot;, &quot;whatever.com&quot;
end
</pre>
<p>Reasonably nice error output:</p>
<pre class="brush: plain; title: ;">
$ rake spec
/Users/sarah/.rvm/rubies/ruby-1.9.2-p290/bin/ruby -S bundle exec rspec ./spec/models/person_spec.rb
..F

Failures:

  1) Person
     Failure/Error: send(should_or_should_not, send(method, *args, &amp;block))
       Did not expect Person to be valid when email is set to &quot;sarah&quot;
     # ./spec/models/person_spec.rb:6:in `block in &lt;top (required)&gt;'
     # ./spec/models/person_spec.rb:3:in `&lt;top (required)&gt;'

Finished in 0.29054 seconds
3 examples, 1 failure

Failed examples:

rspec /Users/sarah/.rvm/gems/ruby-1.9.2-p290@remarkable_rails3/gems/remarkable-4.0.0.alpha4/lib/remarkable/core/macros.rb:26 # Person
rake aborted!
ruby -S bundle exec rspec ./spec/models/person_spec.rb failed
</pre>
<p>Cheated a little on implementation by copying email validation from ActiveRecord docs&#8230; all good.</p>
<h2>Now let&#8217;s add an association!</h2>
<p>In app/model/person.rb:</p>
<pre class="brush: plain; title: ;">
describe Person do
  should_validate_length_of :name, :within =&gt; 3..40
  should_allow_values_for :email, &quot;sarah@foo.com&quot;
  should_not_allow_values_for :email, &quot;sarah&quot;, &quot;@foo&quot;, &quot;whatever.com&quot;
  should_have_many :addresses
end
</pre>
<p>Watch it fail:</p>
<pre class="brush: plain; title: ;">
$ rake spec
/Users/sarah/.rvm/rubies/ruby-1.9.2-p290/bin/ruby -S bundle exec rspec ./spec/models/person_spec.rb
...F

Failures:

  1) Person
     Failure/Error: send(should_or_should_not, send(method, *args, &amp;block))
       Expected Person records have many addresses, but the association does not exist
     # ./spec/models/person_spec.rb:7:in `block in &lt;top (required)&gt;'
     # ./spec/models/person_spec.rb:3:in `&lt;top (required)&gt;'

Finished in 0.32615 seconds
4 examples, 1 failure
</pre>
<p>Make it pass:</p>
<pre class="brush: plain; title: ;">
$ rails g model address street:string person:belongs_to
      invoke  active_record
      create    db/migrate/20110721161741_create_addresses.rb
      create    app/models/address.rb
      invoke    rspec
      create      spec/models/address_spec.rb
$ rake db:migrate

.

Pending:
  Address add some examples to (or delete) /Users/sarah/src/mv/experiment/remarkable_app/spec/models/address_spec.rb
    # Not Yet Implemented
    # ./spec/models/address_spec.rb:4

Finished in 0.2998 seconds
5 examples, 0 failures, 1 pending
</pre>
<p>the rest is left as an exercise for the reader :)</p>
<h2>Summary</h2>
<p>Overall, I like the remarkable syntax. It seems reliable and on its way to a good release for Rails 3.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blazingcloud.net/2011/07/21/remarkable-validations-for-rails-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Brad Smith, Intuit: entrepreneurship in a large company</title>
		<link>http://blog.blazingcloud.net/2011/05/27/brad-smith-intuit-entrepreneurship-in-a-large-company/</link>
		<comments>http://blog.blazingcloud.net/2011/05/27/brad-smith-intuit-entrepreneurship-in-a-large-company/#comments</comments>
		<pubDate>Sat, 28 May 2011 05:13:51 +0000</pubDate>
		<dc:creator>sarah</dc:creator>
				<category><![CDATA[Lean Startup]]></category>

		<guid isPermaLink="false">http://blazingcloud.net/?p=2248</guid>
		<description><![CDATA[A conversation with Intuit CEO Brad Smith and Eric Ries: The Relevance of Entrepreneurship at Intuit. Brad had a number of really awesome lines, which unfortunately came off as a bit too rehearsed, so much so, that it made me wonder if there are many Intuit engineer that have a real opportunity to innovate as [...]]]></description>
			<content:encoded><![CDATA[<p>A conversation with Intuit CEO Brad Smith and Eric Ries: The Relevance of Entrepreneurship at Intuit.  Brad had a number of really awesome lines, which unfortunately came off as a bit too rehearsed, so much so, that it made me wonder if there are many Intuit engineer that have a real opportunity to innovate as entrepreneurs. I still felt that he had a lot of good things to say, and I wish more big company CEOs would talk like this.</p>
<p><img title="Brad Smith of Intuit" src="https://img.skitch.com/20110528-cqeb14hx4q588hgdg282jaw5md.png" /></p>
<p>&#8220;Entrepreneurship is the heartbeat of the company. We have 8000 entrepreneurs: our employees.&#8221;<br />
&#8220;Everyday 	we work very hard to rage against the machine. Big company culture will kill innovation&#8221; (via <a href="http://twitter.com/jbollinger">@jbollinger</a>)</p>
<p>Corporate government can&#8217;t impose more than 3 rules<br />
We don&#8217;t ask questions, we watch<br />
Innovation is born out of constraint<br />
A team must be able to be fed by two pizzas<br />
Keep teams small and iterate quickly<br />
We suffer a rich man&#8217;s disease. Innovation is borne out of constraints<br />
The 	problem with big companies is with the managers, who are too used to playing Caesar.<br />
As a leader, it is not the answers you have or the questions you have &#8212; asking the right questions 	at the right time in a startup team is the most important thing as a leader<br />
Setup  an environment of experimentation<br />
Ultimately what led Intuit to success was exposing their stuff to customers early<br />
Double down on the stuff that  works<br />
The culture of experiments beats the culture of powerpoint and articulation<br />
<strong>The 	two most dangerous words in business are &#8220;sounds good&#8221;</strong><br />
Managers 	remove roadblocks<br />
&#8220;Build just in time not just in case&#8221; &#8211; don&#8217;t build a multi-generational platform that will change the world<br />
Create the environment, and let the small teams figure it out to attain success</p>
<p>For a new product, Brad considered it a big success to have two groups of customers: raging advocates and pissed off people<br />
Big  companies put processes in the way of innovation. It&#8217;s not about  spreadsheets, and processes, and planning, but that&#8217;s what managers 	do.<br />
The 	worst management philosophy is that of a genius with a thousand helpers. You have to hire people who are working closely with 	the customer to solve a problem you would never have solved.</p>
<p>Brad described a &#8220;reverse 	acquisition&#8221; where they acquire a company and put the new guy in charge.  For example, the Mint 	entrepreneur took over a division that included Mint and Quicken.</p>
<p>Q: How 	to overcome internal resistance? internal employees feeling like they lost to a competitor that is bought.<br />
A: If we didn&#8217;t invent it ourselves, it doesn&#8217;t mean we failed<br />
    Learn from startups or bring them onboard</p>
<p>&#8220;The greatest minds closest to the customer develop the great ideas&#8221;</p>
<p>Hire entrepreneurial engineers: engineers who are in love with the outcome of the science, NOT JUST the technical stuff. You have to find someone who loves watching and learning from customers</p>
<p>Horizon planning<br />
- Existing 	business groups increase market share, increase word-of-mouth</p>
<p>Q: Do you plan to put more of Quickbooks online and what are your plans for growing to other countries?<br />
A: Connected services companies are 60% of revenue<br />
    Desktop products aren&#8217;t growing</p>
<p>60/30/10 revenue distribution<br />
60% to horizon 1 products, 30% to the teenagers, 10% to new projects</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blazingcloud.net/2011/05/27/brad-smith-intuit-entrepreneurship-in-a-large-company/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eric Ries: Stop Wasting People&#8217;s Time</title>
		<link>http://blog.blazingcloud.net/2011/05/23/eric-ries-stop-wasting-peoples-time/</link>
		<comments>http://blog.blazingcloud.net/2011/05/23/eric-ries-stop-wasting-peoples-time/#comments</comments>
		<pubDate>Mon, 23 May 2011 19:13:20 +0000</pubDate>
		<dc:creator>sarah</dc:creator>
				<category><![CDATA[Lean Startup]]></category>

		<guid isPermaLink="false">http://blazingcloud.net/?p=2222</guid>
		<description><![CDATA[At SLLConf this year, we decided to try an experiment of live blogging via typewith.me. The event is being simulcast to a global audience, just like last year. This is the first of a series. Eric Ries kicked it off with an update on the Lean Startup &#8220;movement.&#8221; Eric Ries says he&#8217;s just a figurehead, [...]]]></description>
			<content:encoded><![CDATA[<p>At <a href="http://www.sllconf.com/">SLLConf</a> this year, we decided to try an experiment of live blogging via <a href="http://typewith.me">typewith.me</a>.  The event is being simulcast to a global audience, just like last year. This is the first of a series.  </p>
<p>Eric Ries kicked it off with an update on the Lean Startup &#8220;movement.&#8221;  </p>
<p>Eric Ries says he&#8217;s just a figurehead, later Eric Ries referred to himself a &#8220;professional talking head&#8221;. He isn&#8217;t lean startup, we are.<br />
We are experiencing a worldwide entrepreneurial renaissance.</p>
<p>Everyone turn your cell phones on! Being off the internet is irresponsible and direspectful to our ancestors who created this technology for us.</p>
<p>Lean Startup is global &#8212; it is no longer a Silicon Valley phenomenon.  Check out <a href="http://lean-startup.meetup.com">Lean Startup Meetups</a>.</p>
<p>We are in the process of democratizing entrepreneurship.<br />
But, it has also been institutionalized&#8230;</p>
<ul>
<li>Harvard Business School- MVP Product Fund</li>
<li>Stanford University- Lean Launchpad</li>
<li>BYU- Lean Startup Research Project</li>
</ul>
<p>Books</p>
<ul>
<li>the Entrepreneur&#8217;s Guide to Customer Development</li>
<li>Steve Blank&#8217;s Four Steps to the Epiphany</li>
<li>(and there was another one that we missed)</li>
</ul>
<p>Entrepreneurship is not just two guys in a garage, it is a discipline</p>
<p>GhostBusters is one of the great entrepreneurship movies of all time<br />
All great entrepreneurs have great stories.  The movies play out like this:<br />
Act 1) Characters&#038; timing<br />
Act 2) Boring stuff &#8212; the &#8220;photo montage&#8221; of people at the keyboard drinking beer<br />
Act 3) How to divide up the spoils<br />
This conference is about Act 2 &#8212; how does it really happen.</p>
<p>&#8220;A startup is a human institution designed to deliver a new product or service under conditions of extreme uncertainty.&#8221; &#8212; <a href="http://www.startuplessonslearned.com/2010/06/what-is-startup.html">Eric&#8217;s definition</a></p>
<p>startup = experiment</p>
<p>&#8220;our future GDP growth depends on the quality and caliber of our collective imagination&#8221;</p>
<p>We are building companies that have fundamentally no customers and are pulled off the shelves</p>
<p><a href="http://en.wikipedia.org/wiki/Frederick_Winslow_Taylor">Frederick Winslow Taylor</a> (March 20, 1856 – March 21, 1915) was an American mechanical engineer who sought to improve industrial efficiency. </p>
<p>Scientific Management:<br />
* Study work to find the best way<br />
* Management by exception<br />
* Standardize work into tasks<br />
* Compensate workers based on performance</p>
<p>What are we doing now that will later be revealed as myth and prejudice?</p>
<p>The Pivot<br />
&#8220;better to be misunderstood than ignored&#8221;<br />
Runway- number of pivots you still have the opportunity to make<br />
Speed Wins</p>
<p>Validated learning reduces the time between pivots<br />
Acheiving Failures = successfully exeuting on a bad plan<br />
Why is it important to do things efficiently if we&#8217;re doing the wrong thing?</p>
<p>W. Edwards Deming and Taiichi Ohno- start of the Lean Revolution</p>
<p>Who is the customer? whose eyes matter in determining value vs. waste?</p>
<p>Minimize the total time through the loop<br />
Ideas -> Build -> Code -> Measure -> Data -> Learn<br />
see image here: http://lean.st/principles/build-measure-learn</p>
<p>Ship it anyways and see what happens?  Why spend time agruing about the details if there the chance that no one will want it.</p>
<p>How do we figure out what we need to learn as quickly as possible</p>
<p><a href="http://bit.ly/thetoyotaway">The Toyota Way</a><br />
Foundation is long term thinking -> culture that supports people to do their best work</p>
<p>He displayed this pyramid:<br />
<img src="http://assets.montabe.com/galleries/sllconf/photos/4ddaa6c7b456330fb9000004/big_square.jpg"/></p>
<ul>
<li>People</li>
<li>Culture</li>
<li>Process</li>
<li>Acountability</li>
</ul>
<p>&#8220;We have begun to learn how to keep innovators accountable&#8221;<br />
Use learning milestones instead of product milestones<br />
What are the inputs to our business plan right now<br />
better have bad news that is true than good news that we made up<br />
&#8220;If the 10% customer adoption does not happen, everything in this business plan is irrelevant&#8221; should be a big red banner!&#8221; via @timolehes<br />
Tune the engine &#8211;> every business has different math</p>
<p>Pivot or persevere? when experiments reach diminishing returns, it&#8217;s time to pivot.</p>
<p>&#8220;If we alllow ourselves to fail, we can train our judgement to get better over time&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.blazingcloud.net/2011/05/23/eric-ries-stop-wasting-peoples-time/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

