<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title>Ivan Storck at University of Washington</title>
  <link href="http://staff.washington.edu/ivanoats/atom.xml" rel="self"/>
  <link href="http://staff.washington.edu/ivanoats/"/>
  <updated>2012-01-14T12:28:51-08:00</updated>
  <id>http://staff.washington.edu/ivanoats/</id>
  <author>
    <name>Ivan Storck</name>
    
  </author>

  
  <entry>
    <title>Making MacVim Pretty</title>
    <link href="http://staff.washington.edu/ivanoats/blog/2012/01/13/making-macvim-pretty/"/>
    <updated>2012-01-13T14:29:00-08:00</updated>
    <id>http://staff.washington.edu/ivanoats/blog/2012/01/13/making-macvim-pretty</id>
    <content type="html">&lt;p&gt;The holy editor wars. Almost everyone has their favorite, and your colleague, conference mate, or cellmate will rabidly talk your ear off about one editor versus another. I have to admit, I bounce back and forth between TextMate and MacVim, and am closely watching my new up and coming favorite, &lt;a href=&quot;http://vicoapp.com&quot;&gt;Vico&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Lately I've been favoring MacVim. Especially with these modifications I'm about to show you that make it... pretty!&lt;/p&gt;

&lt;p&gt;&lt;img class='' src='http://staff.washington.edu/ivanoats/images/macvim_screenshot.gif' width='' height='' alt='' title=''&gt;&lt;/p&gt;

&lt;p&gt;First, there is &lt;a href=&quot;http://github.com/alloy/macvim&quot;&gt;Alloy's MacVim fork&lt;/a&gt;. It gives you a nice Mac-like sidebar, project drawer - just like TextMate. The easiest way I found to install Alloy's fork is to use the normal homebrew recipe for macvim, but edit it, and point it to a new tarball that you've created.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;install homebrew if you haven't already&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git clone https://github.com/alloy/macvim.git&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tar -cvzf macvim-7.3-63.tgz macvim/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;brew edit macvim&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;change the line with the URL to something like &lt;code&gt;file:///Users/ivan/dev/macvim-7.3-63.tgz&lt;/code&gt;. Make sure to use your own file path&lt;/li&gt;
&lt;li&gt;you can either delete the md5 line or calculate the md5 of your tgz file with: &lt;code&gt;md5 macvim-7.3-63.tgz&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;you may need to update the version if it has changed&lt;/li&gt;
&lt;li&gt;&lt;code&gt;brew uninstall macvim&lt;/code&gt; if you already had it installed&lt;/li&gt;
&lt;li&gt;&lt;code&gt;brew install macvim&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;launch MacVim and press command-, to get the preferences window. You should now have the option to show the sidebar&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Secondly, there is Geoffrey Grosenbach's &lt;a href=&quot;http://peepcode.com/products/peepopen&quot;&gt;PeepOpen&lt;/a&gt;. It gives you an
improvement over TextMate's Command-T file picker. There are Vim plugins
that duplicate and improve on Command-T's functionality already, like
&lt;a href=&quot;https://github.com/kien/ctrlp.vim&quot;&gt;Ctrl-P&lt;/a&gt; but
none of them are a pretty Cocoa GUI like PeepOpen. It is a paid product,
but it's worth the cost if you like to make your environment worth to
look at it.&lt;/p&gt;

&lt;p&gt;Other reasons I am preferring Vim over TextMate lately are Tim Pope's
excellent plugins: Rails.vim, and Fugitive.com (for Git).&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Testing Ruby on Rails Obfuscated Email Addresses with RSpec</title>
    <link href="http://staff.washington.edu/ivanoats/blog/2011/12/05/testing-ruby-on-rails-obfuscated-email-addresses-in-rspec/"/>
    <updated>2011-12-05T15:26:00-08:00</updated>
    <id>http://staff.washington.edu/ivanoats/blog/2011/12/05/testing-ruby-on-rails-obfuscated-email-addresses-in-rspec</id>
    <content type="html">&lt;p&gt;&lt;img class='left ' src='http://staff.washington.edu/ivanoats/images/nospam.jpg' width='164' height='200' alt='' title=''&gt; You may have known that Ruby on Rails can protect email addresses that you have on your web pages with the &lt;a href=&quot;http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-mail_to&quot;&gt;mail_to&lt;/a&gt; view helper. But how do you test email obfuscation in your RSpec view tests?&lt;/p&gt;

&lt;p&gt;To obfuscate an email address in a rails view, you can simply add encode: &quot;javascript&quot; to your mail_to helper.&lt;/p&gt;

&lt;div&gt;&lt;figure role=code&gt;&lt;figcaption&gt;&lt;span&gt;obfuscate and protect an email address  &lt;/span&gt;&lt;/figcaption&gt;
 &lt;div class=&quot;highlight&quot;&gt;&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class='line'&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code' width='100%'&gt;&lt;pre&gt;&lt;code class='ruby'&gt;&lt;div class='line'&gt;&lt;span class=&quot;n&quot;&gt;mail_to&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;you@example.com&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;email me&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;encode&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;javascript&amp;quot;&lt;/span&gt;
&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;


&lt;p&gt;To test this, I created a method in my spec/spec_helper.rb file. This method goes through each character (byte) of the string containing the email address, and calls the &lt;a href=&quot;http://apidock.com/ruby/Kernel/sprintf&quot;&gt;sprintf&lt;/a&gt; method to format the character in the way that the javascript decoder in rails can read.&lt;/p&gt;

&lt;div&gt;&lt;figure role=code&gt;&lt;figcaption&gt;&lt;span&gt;email encoder to include in spec_helper.rb  &lt;/span&gt;&lt;/figcaption&gt;
 &lt;div class=&quot;highlight&quot;&gt;&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class='line'&gt;1&lt;/span&gt;
&lt;span class='line'&gt;2&lt;/span&gt;
&lt;span class='line'&gt;3&lt;/span&gt;
&lt;span class='line'&gt;4&lt;/span&gt;
&lt;span class='line'&gt;5&lt;/span&gt;
&lt;span class='line'&gt;6&lt;/span&gt;
&lt;span class='line'&gt;7&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code' width='100%'&gt;&lt;pre&gt;&lt;code class='ruby'&gt;&lt;div class='line'&gt;  &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;encode_email&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;email&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/div&gt;&lt;div class='line'&gt;      &lt;span class=&quot;c1&quot;&gt;# copied escape method from:&lt;/span&gt;
&lt;/div&gt;&lt;div class='line'&gt;      &lt;span class=&quot;c1&quot;&gt;#http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-mail_to&lt;/span&gt;
&lt;/div&gt;&lt;div class='line'&gt;    &lt;span class=&quot;n&quot;&gt;escaped&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
&lt;/div&gt;&lt;div class='line'&gt;    &lt;span class=&quot;n&quot;&gt;email&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;each_byte&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;escaped&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;sprintf&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;%%%x&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/div&gt;&lt;div class='line'&gt;    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;escaped&lt;/span&gt;
&lt;/div&gt;&lt;div class='line'&gt;  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;


&lt;p&gt;Having that method available makes my example very easy to read:&lt;/p&gt;

&lt;div&gt;&lt;figure role=code&gt;&lt;figcaption&gt;&lt;span&gt;email encoding example  &lt;/span&gt;&lt;/figcaption&gt;
 &lt;div class=&quot;highlight&quot;&gt;&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class='line'&gt;1&lt;/span&gt;
&lt;span class='line'&gt;2&lt;/span&gt;
&lt;span class='line'&gt;3&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code' width='100%'&gt;&lt;pre&gt;&lt;code class='ruby'&gt;&lt;div class='line'&gt;&lt;span class=&quot;n&quot;&gt;it&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&amp;quot;should obfuscate and display the contact email&amp;quot;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
&lt;/div&gt;&lt;div class='line'&gt;  &lt;span class=&quot;n&quot;&gt;render&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;should&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;have_content&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;encode_email&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;contact@example.com&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
&lt;/div&gt;&lt;div class='line'&gt;&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;


&lt;p&gt;Do you know a better way? For example, hooking directly into the view helper code from &lt;a href=&quot;http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-mail_to&quot;&gt;ActionView::Helpers::UrlHelper#mail_to&lt;/a&gt;? Let me know in the comments.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>DRY Up Your Factory Girl Factories With RSpec and Cucumber</title>
    <link href="http://staff.washington.edu/ivanoats/blog/2011/11/28/dry-up-your-factory-girl-factories-with-rspec-and-cucumber/"/>
    <updated>2011-11-28T21:19:00-08:00</updated>
    <id>http://staff.washington.edu/ivanoats/blog/2011/11/28/dry-up-your-factory-girl-factories-with-rspec-and-cucumber</id>
    <content type="html">&lt;p&gt;&lt;img class='left ' src='http://upload.wikimedia.org/wikipedia/en/9/9a/Factory_girl.jpg' width='164' height='243' alt='factory girl' title='factory girl'&gt;When I first set up the fixture replacement gem &lt;a href=&quot;https://github.com/thoughtbot/factory_girl&quot;&gt;Factory_Girl&lt;/a&gt; in my current &lt;a href=&quot;http://rubyonrails.org&quot;&gt;Ruby on Rails&lt;/a&gt; project, I had two files with the same code in each one, creating the same factory twice. One in &lt;a href=&quot;https://www.relishapp.com/rspec&quot;&gt;RSpec's&lt;/a&gt; spec/factories directory, and another in &lt;a href=&quot;http://cukes.info/&quot;&gt;Cucumber's&lt;/a&gt; features/support directory. According to the &lt;a href=&quot;http://en.wikipedia.org/wiki/Don't_repeat_yourself&quot;&gt;Don't Repeat Yourself (DRY)&lt;/a&gt; principle, this was not ideal. How to fix?&lt;/p&gt;

&lt;p&gt;I asked the question in the #rspec channel on &lt;a href=&quot;http://webchat.freenode.net&quot;&gt;IRC&lt;/a&gt;, and lucky me, &lt;a href=&quot;http://davidchelimsky.net/&quot;&gt;David Chelimisky&lt;/a&gt;, the lead developer/maintainer of RSpec, answered. Simply require the factory file from RSpec in Cucumber's features/support/env.rb file. Like this:&lt;/p&gt;

&lt;div&gt;&lt;figure role=code&gt;&lt;figcaption&gt;&lt;span&gt;require one model factory  &lt;/span&gt;&lt;/figcaption&gt;
 &lt;div class=&quot;highlight&quot;&gt;&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class='line'&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code' width='100%'&gt;&lt;pre&gt;&lt;code class='ruby'&gt;&lt;div class='line'&gt;&lt;span class=&quot;n&quot;&gt;require_relative&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;../../spec/factories/model_name.rb&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;


&lt;p&gt;But this could get quite tedious, if you have more than one model. Which of course, you probably do. So, here's a snippet that will load all of your factories:&lt;/p&gt;

&lt;div&gt;&lt;figure role=code&gt;&lt;figcaption&gt;&lt;span&gt;require all factories  &lt;/span&gt;&lt;/figcaption&gt;
 &lt;div class=&quot;highlight&quot;&gt;&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class='line'&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class='code' width='100%'&gt;&lt;pre&gt;&lt;code class='ruby'&gt;&lt;div class='line'&gt;&lt;span class=&quot;no&quot;&gt;Dir&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;../../spec/factories/*.rb&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;each&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;file&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;require_relative&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;file&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;


&lt;p&gt;I put this in my features/support/env.rb file. If you use Spork, I put it in my Spork.each_run section.&lt;/p&gt;

&lt;p&gt;Are you using &lt;a href=&quot;https://github.com/thoughtbot/factory_girl&quot;&gt;factory_girl&lt;/a&gt;, &lt;a href=&quot;https://github.com/notahat/machinist&quot;&gt;machinist&lt;/a&gt;, or another &lt;a href=&quot;https://www.ruby-toolbox.com/categories/rails_fixture_replacement&quot;&gt;fixture replacement&lt;/a&gt; library? Let me know in the comments if you know a better way to do it.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Vico Editor Combines Best of TextMate and Vim</title>
    <link href="http://staff.washington.edu/ivanoats/blog/2011/11/23/vico-editor-combines-best-of-textmate-and-vim/"/>
    <updated>2011-11-23T09:39:00-08:00</updated>
    <id>http://staff.washington.edu/ivanoats/blog/2011/11/23/vico-editor-combines-best-of-textmate-and-vim</id>
    <content type="html">&lt;p&gt;I'm in love with a new text editor. It's called &lt;a href=&quot;http://vicoapp.com&quot;&gt;Vico&lt;/a&gt;. For Vim fans, you have all your comon keybindings for blazingly fast editing. For TextMate fans, you've got all your bundles and snippets. It really is the best of both worlds.&lt;/p&gt;

&lt;p&gt;Here's a screen shot showing a vertical split between the view and the view spec, with RSpec results  in a Rails app:&lt;/p&gt;

&lt;p&gt; &lt;img src=&quot;http://mediacdn.disqus.com/uploads/mediaembed/images/169/523/original.jpg&quot; alt=&quot;screenshot&quot; /&gt;&lt;/p&gt;

&lt;p&gt;There is a link on &lt;a href=&quot;http://vicoapp.com&quot;&gt;Vico's&lt;/a&gt; site for a free trial app - go try it!&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>How Do You Do Rapid Project Deploys? Babushka and Chef!</title>
    <link href="http://staff.washington.edu/ivanoats/blog/2011/10/20/how-do-you-support-rapid-project-deployment-babushka-and-chef/"/>
    <updated>2011-10-20T20:38:00-07:00</updated>
    <id>http://staff.washington.edu/ivanoats/blog/2011/10/20/how-do-you-support-rapid-project-deployment-babushka-and-chef</id>
    <content type="html">&lt;p&gt;&lt;img style=&quot;float:left; margin: 0 15px 10px 0; height: 100px&quot; src=&quot;http://www.opscode.com/images/OC_Chef_Logo.png&quot; /&gt;&lt;/p&gt;

&lt;h3&gt;How do I support web infrastructure for many sites at a time?&lt;/h3&gt;

&lt;p&gt;At the &lt;a href=&quot;http://depts.washington.edu/uwc4c&quot;&gt;UW center for commercialization&lt;/a&gt; there are lots and lots of projects to work on. The mission is encouraging new companies, and each one may need a website. There are also many internal projects. We need to spin up sites and servers rapidly, and provide each project with a standard environment and good base system. While we have had success with hosting multiple sites on a &lt;a href=&quot;http://cloudfoundry.org/&quot;&gt;VMWare CloudFoundry&lt;/a&gt; server for simple sites, for others we need to have an environment that supports SSL and other more uniquely customizable configuration options. The challenge is how to do this process well, and make it easily repeatable.&lt;/p&gt;

&lt;p&gt;&lt;img style=&quot;float:right; margin: 0 0 10px 15px; height: 100px&quot; src=&quot;http://babushka.me/images/babushka-logo.png&quot; /&gt;
Enter &lt;a href=&quot;http://babushka.me/&quot;&gt;Babushka&lt;/a&gt; and &lt;a href=&quot;http://www.opscode.com/chef/&quot;&gt;Chef&lt;/a&gt;. Actually, &lt;a href=&quot;http://benhoskin.gs/&quot;&gt;Ben Hoskings&lt;/a&gt; should have called Babushka &quot;sous-chef&quot;, because it's extremely helpful to use, to get ready for Chef. Even better, it can also help set up your workstations, such as your mac, as well as your servers.&lt;/p&gt;

&lt;p&gt;Quoting Ben about Babushka vs. Chef (or Puppet):&lt;/p&gt;

&lt;blockquote&gt;
  I think they're both great tools, and I see babushka as being complementary 
to them. In particular, I think their strengths are complementary. 
You can discover babushka and be running deps after a single shell command, 
whereas chef and puppet have much steeper learning curves. But then, 
babushka has a fairly rigid ceiling (i.e. a single system), and on its own, 
it doesn't scale at all. That was a deliberate design decision on my 
part—chef and puppet are already doing a good job at the job they're 
intended for, which I see as managing ecosystems of machines. Babushka is 
much more focused on the small end of the scale; in fact, one of the things 
I've tried to keep in mind while designing it has been &quot;no job too small&quot;. 
&lt;br&gt;&lt;br&gt;
Also, and perhaps more importantly, I'm not designing babushka specifically 
as a deployment automation tool; I'm thinking more generally than that. One 
example: things like installing TextMate bundles, configuring OS X/Linux 
preferences, and the like. Things where you can say &quot;I do it this way—you 
might like it, run my dep and give it a go.&quot;
&lt;/blockquote&gt;


&lt;p&gt;It was especially helpful to discover &lt;a href=&quot;http://ivanvanderbyl.github.com/&quot;&gt;Ivan Vanderbyl&lt;/a&gt;'s article on &lt;a href=&quot;http://ivanvanderbyl.github.com/2011/05/28/bootstrapping-chef-with-babushka.html&quot;&gt;Bootstrapping Chef with Babushka&lt;/a&gt;. His scripts needed an update for Ubuntu Oneiric (11.10) and I've &lt;a href=&quot;https://github.com/ivanoats/babushka-deps&quot;&gt;posted them&lt;/a&gt; on my GitHub. You should be able to follow the 'other ruby ivan's instructions but just sub my github name for his.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Ruby at C4C</title>
    <link href="http://staff.washington.edu/ivanoats/blog/2011/10/20/ruby-at-c4c/"/>
    <updated>2011-10-20T17:23:00-07:00</updated>
    <id>http://staff.washington.edu/ivanoats/blog/2011/10/20/ruby-at-c4c</id>
    <content type="html">&lt;p&gt;I gave a presentation at the UW web council on our plans for using the Ruby programming language at the Center for Commercialization.&lt;/p&gt;

&lt;div style=&quot;width:510px&quot; id=&quot;__ss_9680493&quot;&gt; &lt;strong style=&quot;display:block;margin:12px 0 4px&quot;&gt;&lt;a href=&quot;http://www.slideshare.net/ivanoats/ruby-presso-web-council&quot; title=&quot;Ruby at UW C4C&quot; target=&quot;_blank&quot;&gt;Ruby at UW C4C&lt;/a&gt;&lt;/strong&gt; &lt;iframe src=&quot;http://www.slideshare.net/slideshow/embed_code/9680493?rel=0&quot; width=&quot;510&quot; height=&quot;426&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot;&gt;&lt;/iframe&gt; &lt;div style=&quot;padding:5px 0 12px&quot;&gt; View more &lt;a href=&quot;http://www.slideshare.net/&quot; target=&quot;_blank&quot;&gt;presentations&lt;/a&gt; from &lt;a href=&quot;http://www.slideshare.net/ivanoats&quot; target=&quot;_blank&quot;&gt;Ivan Storck&lt;/a&gt; &lt;/div&gt; &lt;/div&gt;

</content>
  </entry>
  
  <entry>
    <title>Oren Etzioni on Entrepreneurship at UW</title>
    <link href="http://staff.washington.edu/ivanoats/blog/2011/09/13/oren-etzoni-on-entrepreneurship-at-uw/"/>
    <updated>2011-09-13T12:01:00-07:00</updated>
    <id>http://staff.washington.edu/ivanoats/blog/2011/09/13/oren-etzoni-on-entrepreneurship-at-uw</id>
    <content type="html">&lt;p&gt;Notes from his lecture today. Check out the entire &lt;a href=&quot;http://depts.washington.edu/uwc4c/lectures/&quot;&gt;lecture series&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Oren Etzioni&lt;/h2&gt;

&lt;h3&gt;WRF Entrepreneurship Professor&lt;/h3&gt;

&lt;h4&gt;Sponsored by the Center for Commercialization (C4C)&lt;/h4&gt;

&lt;blockquote&gt;&lt;p&gt;The UW Presidential Entrepreneurial Faculty Fellows lecture series is designed to inspire UW researchers to pursue commercialization of their innovations by showcasing UW Faculty who have succeeded in translating their research into products and therapies, initiated groundbreaking programs for translation, or established model collaborations with industry. &lt;a href=&quot;http://www.uwc4c.com/for-researchers/entrepreneurial-faculty-fellows/&quot;&gt;Read more&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;&lt;img style=&quot;float:left; margin: 0 10px 10px 0&quot; src=&quot;http://depts.washington.edu/uwc4c/lectures/oren.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&quot;A variety of personality types can lead to success...You don't have to study CS at Harvard&quot;&lt;/p&gt;

&lt;p&gt;&quot;They were passionately devoted to their day jobs - at the University.&quot; There had to be some way to start a company that didn't compromise that.&lt;/p&gt;

&lt;p&gt;Been kicked out of various business clubs in Seattle for not wearing the proper attire.&lt;/p&gt;

&lt;p&gt;Genius Drive Charisma are important, but so are being nosy, and not taking no for an answer. Having the energy and enthusiasm for constantly opening the question.&lt;/p&gt;

&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;http://www.youtube.com/embed/jb1nkcK-1Jc&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;


&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;http://www.youtube.com/embed/c8HtX-Crp-k&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;


&lt;p&gt;Inventor of FareCast.&lt;/p&gt;

&lt;p&gt;&quot;Does entrepreneurship have any place in the University?&quot;  &quot;A bunch of small entrepreneurs joined together by a grievance about parking&quot;&lt;/p&gt;

&lt;p&gt;Personal goal: impact&lt;/p&gt;

&lt;p&gt;At burning man, wearing a miniskirt, ran into a couple of students who loved his class. Loves teaching does not usually wear mini-skirts.&lt;/p&gt;

&lt;p&gt;There are a lot of ways to have an impact beyond writing a research paper or book.&lt;/p&gt;

&lt;p&gt;Best answer for VCs: Why are you starting this company? Because I want to make a lot of money.&lt;/p&gt;

&lt;p&gt;Researchers are Entrepreneurs:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Start from scratch&lt;/li&gt;
&lt;li&gt;Limited resources, but ample vision!&lt;/li&gt;
&lt;li&gt;Small teams of talented students&lt;/li&gt;
&lt;li&gt;Tremendous uncertainty&lt;/li&gt;
&lt;li&gt;Optimisim to defy naysayers&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;&quot;I eat what I kill&quot;  I don't bring in money, I don't eat.&lt;/p&gt;

&lt;p&gt;Universities breed founders. Google Facebook and Yahoo came out of universities. You don't have to go to Stanford to start a great company. Many come from UW.
UW companies: Visio, Farecast, Webcrawler, Asta networks, illumita, metacrawler, Etch&lt;/p&gt;

&lt;h4&gt;Why doesn't everyone do it?&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;many startups fail&lt;/li&gt;
&lt;li&gt;it's an emotional rollercoaster&lt;/li&gt;
&lt;li&gt;you get told &quot;no&quot; a lot&lt;/li&gt;
&lt;li&gt;the hours? not everyone likes to work hard. Not all the time, but yes, when you have an entrepreneurship&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;When you have freedom, why not give it a shot?&lt;/h4&gt;

&lt;p&gt;&quot;What are the pieces of the puzzle? There are fewer pieces than you might think?&quot;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Passion, determination&lt;/li&gt;
&lt;li&gt;Value Proposition - real pain point - people have a problem&lt;/li&gt;
&lt;li&gt;Secret weapon - people, research&lt;/li&gt;
&lt;li&gt;Ecosystem - C4C, WRF, Madrona Ventures&lt;/li&gt;
&lt;li&gt;Team&lt;/li&gt;
&lt;li&gt;Funding&lt;/li&gt;
&lt;li&gt;Validation - response to press release or other prototype&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;Value proposition - there is a difference between nice to have and must have.&lt;/p&gt;

&lt;p&gt;Decide.com - no regrets on technology purchases&lt;/p&gt;

&lt;h3&gt;Risk&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;What risk?  For software people, a startup is not a risk. Not living life to its fullest is the real risk!&lt;/li&gt;
&lt;li&gt;Why not keep money &quot;under a mattress&quot;? It's guaranteed that inflation will slowly eat at it until it's worth half of what it is.&lt;/li&gt;
&lt;/ol&gt;

</content>
  </entry>
  
  <entry>
    <title>First Post</title>
    <link href="http://staff.washington.edu/ivanoats/blog/2011/09/06/first-post/"/>
    <updated>2011-09-06T13:59:00-07:00</updated>
    <id>http://staff.washington.edu/ivanoats/blog/2011/09/06/first-post</id>
    <content type="html">&lt;p&gt;I'll be blogging here about programming Ruby (and Rails), fixing PHP, and Mac OS X and
Ubuntu sysadmin.&lt;/p&gt;

&lt;p&gt;One of the first things I'm doing is fixing the &lt;a href=&quot;http://staff.washington.edu/ivanoats/http://depts.washington.edu/uwc4c/express-licenses/&quot;&gt;express licensing site&lt;/a&gt; to accept payments via PayPal instead of FolioDirect.&lt;/p&gt;

&lt;p&gt;I also have set up a micro cloud with an Ubuntu VM running
&lt;a href=&quot;http://blog.dustinkirkland.com/2011/08/howto-install-cloudfoundry-server-paas.html&quot;&gt;CloudFoundry&lt;/a&gt;.
This box will be used for testing various Ruby on Rails apps. It's our own private &lt;a href=&quot;http://en.wikipedia.org/wiki/Platform_as_a_service&quot;&gt;PaaS&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In addition, I am helping the Center for Training set up a test server to prototype a Ruby on Rails based Learning Management System (LMS) called &lt;a href=&quot;http://www.instructure.com/&quot;&gt;Canvas&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  
</feed>

