<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"
>

<channel>
	<title>Geek Mama &#187; Professional</title>
	<atom:link href="http://blogs.law.harvard.edu/lianaleahy/category/professional/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.law.harvard.edu/lianaleahy</link>
	<description>exploits of a mom on rails</description>
	<lastBuildDate>Wed, 25 Nov 2009 18:11:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
		<item>
		<title>Testing Newbie</title>
		<link>http://blogs.law.harvard.edu/lianaleahy/2009/11/25/testing-newbie/</link>
		<comments>http://blogs.law.harvard.edu/lianaleahy/2009/11/25/testing-newbie/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 16:36:04 +0000</pubDate>
		<dc:creator>lianaleahy</dc:creator>
				<category><![CDATA[Professional]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/lianaleahy/?p=365</guid>
		<description><![CDATA[It&#8217;s embarrassing to admit, but I know I&#8217;m not the only one.  I know this because last Spring I hosted a talk by Jon Yurek and Dan Croak of thoughtbot, inc entitled &#8220;Test Driven Development with Ruby on Rails&#8221;.  And it was PACKED!!!
Many folks understand the importance of testing, the value-add, the business benefits of [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s embarrassing to admit, but I know I&#8217;m not the only one.  I know this because last Spring I hosted a talk by Jon Yurek and Dan Croak of <a href="http://thoughtbot.com/">thoughtbot, inc</a> entitled &#8220;Test Driven Development with Ruby on Rails&#8221;.  And it was PACKED!!!</p>
<p>Many folks understand the importance of testing, the value-add, the business benefits of <a href="http://en.wikipedia.org/wiki/Test-driven_development">TDD</a>, that&#8217;s why we were all there.  We got a thorough overview of the numerous testing products.  And there&#8217;s a LOT out there&#8230; or maybe it just seems that way.  But once I was back at my desk facing my app, I still didn&#8217;t understand how to get started.</p>
<p>Yeah, I&#8217;ve tried a few tutorials but they often only utilize the <a href="http://en.wikipedia.org/wiki/Interactive_Ruby_Shell">irb</a> command line and don&#8217;t really explain how everything fits into a real live rails application.</p>
<p>I&#8217;ve been told that testing is just one of those things where you have to just dive in and go for it.  That being said, let me share with you my recent endeavors using the <a href="http://guides.rubyonrails.org/testing.html">Rails Guides</a> and the little knowledge I&#8217;ve pieced together so far.</p>
<p>1.  <strong>Open your current ruby on rails project</strong><br />
Yeah, I said open your <strong><em>current</em> </strong>project.  If you don&#8217;t get started today, working every day, it&#8217;ll never happen right?  But if you don&#8217;t have a current rails app and need some help getting started check out this <a href="http://fairleads.blogspot.com/2007/12/rails-20-and-scaffolding-step-by-step.html">Rails 2.0 step by step tutorial</a>.</p>
<p>Okay now that we&#8217;re set up, we&#8217;re going to create a brand new model for the purposes of this testing tutorial:</p>
<pre class="brush: ruby">
&gt;&gt;ruby script/generate scaffold CoinChanger
</pre>
<p>By the way, don&#8217;t let anyone dissuade you from using scaffold.  It&#8217;s much improved over older versions since 2.0 and comes packed with all kinds of goodies incredibly helpful to the newbie.  You can always delete the files you don&#8217;t need later.</p>
<p>2.  <strong>Write a Test</strong><br />
What already?  Yeah.</p>
<pre class="brush: ruby">
&gt;&gt; cd test/unit
</pre>
<p>You should see the stub of a test already here:</p>
<pre class="brush: ruby">
require &#039;test_helper&#039;
class CoinChangerTest &lt; ActiveSupport::TestCase
# Replace this with your real tests.
test &quot;the truth&quot; do
assert true
end
end
</pre>
<p>I didn&#8217;t find this too terribly helpful in getting me started.  Let&#8217;s instead replace the stub code with this:</p>
<pre class="brush: ruby">
require &#039;test_helper&#039;

class CoinChangerTest &lt; ActiveSupport::TestCase

def test_return_correct_change
#setup
#exercise
#verify
#teardown
end

end
</pre>
<p>So, <i>require &#8216;test_helper&#8217;</i> specifies the default configuration to run our tests.  It appears in every default test file.  Doesn&#8217;t seem DRY to me.  I betcha there&#8217;s a config file in the augmented testing frameworks where this would belong.  But for now, we&#8217;ve leave it.</p>
<p>Next, you&#8217;ll notice that our <i>CoinChangerTest</i> class is extended by <i>ActiveSupport::TestCase</i>.  Now, this is a little different than what you might find in those irb examples I mentioned before.  Those examples extend <i>Test::Unit::TestCase</i>.  Now that&#8217;s totally fine when you&#8217;re running a bunch of isolated files in a tutorial, but not when you&#8217;re working with a real rails app.  </p>
<p>The class <i>ActiveSupport::TestCase</i> extends <i>Test::Unit::TestCase</i> and gives you all the testing goodness you need to run fixtures.  We won&#8217;t be playing with data and fixtures in this tutorial (stayed tuned for future blog posts) but we&#8217;ll use the ActiveSupport class since we&#8217;re testing a full fledged rails application. </p>
<p>After that we see a pattern that will guide us through every test we write:</p>
<ul>
<li>setup</li>
<li>exercise</li>
<li>verify (assert expectations)</li>
<li>teardown</li>
</ul>
<p>So, here is an example of a unit test:</p>
<pre class="brush: ruby">
require &#039;test_helper&#039;

class CoinChangerTest &lt; ActiveSupport::TestCase

def test_return_correct_change_in_pennies
   #setup
   @changer = CoinChanger.new
   #exercise
   hash = @changer.change_me(&quot;$5.87&quot;)
   #verify
   assert_equal 2, hash[:pennies]
   #teardown
   # delete files, close network/database connections
end

end
</pre>
<p>In the example above, we setup an instance of my model class:</p>
<pre class="brush: ruby">
@changer = CoinChanger.new
</pre>
<p>Then we exercise the method which should return a hash:</p>
<pre class="brush: ruby">
hash = @changer.change_me(&quot;$5.87&quot;)
</pre>
<p>Then verify that the implementation works correctly by asserting expectations :</p>
<pre class="brush: ruby">
assert_equal 2, hash[:pennies]
</pre>
<p>Finally it&#8217;s time to clean up. There is nothing to teardown in this example. If the test were creating files or network/database connections, then we&#8217;d use the teardown method to close out:</p>
<pre class="brush: ruby">
assert_equal 2, hash[:pennies]
</pre>
<p>3.  <strong>Run a Test</strong><br />
Go ahead.  Try it out.</p>
<pre class="brush: ruby">
&gt;&gt; cd test
&gt;&gt; ruby unit/coin_changer_test.rb
</pre>
<p>Oh, dang!  Get an error message?  When you&#8217;re testing a rails application, you need to be sure that your database.yml is set up and pointing to a valid database.  Those of you who just created a brand new rails app, you&#8217;ll need to edit your database.yml file.  I&#8217;ll assume you can do this on your own, seriously, take a look at the <a href="http://fairleads.blogspot.com/2007/12/rails-20-and-scaffolding-step-by-step.html">Rails 2.0 step by step tutorial</a>.</p>
<p>Let&#8217;s try again.</p>
<pre class="brush: ruby">
Loaded suite unit/coin_changer_test
Started
E
Finished in 0.219 seconds.

  1) Error:
test_return_correct_change(CoinChangerTest):
NoMethodError: undefined method `change_me&#039; for #
    unit/coin_changer_test.rb:11:in `test_return_correct_change&#039;

1 tests, 0 assertions, 0 failures, 1 errors
</pre>
<p>Uh, oh.  We forgot to create our <i>change_me</i> method in our CoinChanger model. Let&#8217;s do that now.</p>
<pre class="brush: ruby">
class CoinChanger
  def change_me( dollar_string )

    #transform dollar string into change
    return {}

  end
end
</pre>
<p>And rerun our test:</p>
<pre class="brush: ruby">
Loaded suite unit/coin_changer_test
Started
F
Finished in 0.344 seconds.

  1) Failure:
test_return_correct_change(CoinChangerTest) [u
 expected but was
.

1 tests, 1 assertions, 1 failures, 0 errors
</pre>
<p>Well, now we&#8217;re getting somewhere!  The test failed because it&#8217;s returning an empty hash.  Let&#8217;s give our test what it wants:</p>
<pre class="brush: ruby">
  def change_me( dollar_string )

    #transform dollar string into change
    return {:pennies =&gt; 587}

  end
</pre>
<p>So, now if we run the test again&#8230; hopefully we see this:</p>
<pre class="brush: ruby">
Loaded suite unit/coin_changer_test
Started
.
Finished in 0.219 seconds.

1 tests, 1 assertions, 0 failures, 0 errors
</pre>
<p>This means the test passed and was successful.  Yay!</p>
<p>Hopefully this is enough to get started.  Stay tuned for more on testing!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/lianaleahy/2009/11/25/testing-newbie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Windows and Github</title>
		<link>http://blogs.law.harvard.edu/lianaleahy/2009/11/17/windows-and-github/</link>
		<comments>http://blogs.law.harvard.edu/lianaleahy/2009/11/17/windows-and-github/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 15:56:38 +0000</pubDate>
		<dc:creator>lianaleahy</dc:creator>
				<category><![CDATA[Professional]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/lianaleahy/?p=331</guid>
		<description><![CDATA[I&#8217;ve been bumping into weirdness when I click on links to download various plugins from Github.  Even when I script/plugin install, all I get is an empty folder.
Turns out that this is just more wacky Windows behavior.   RubyizednRailified explains in his post,  Installing Rails plugin from Github on Windows.  Thanks!
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been bumping into weirdness when I click on links to download various plugins from <a href="https://github.com/">Github</a>.  Even when I <em>script/plugin install</em>, all I get is an empty folder.</p>
<p>Turns out that this is just more wacky Windows behavior.   <a href="http://rubyizednrailified.blogspot.com">RubyizednRailified</a> explains in his post,  <a href="http://rubyizednrailified.blogspot.com/2009/07/installing-rails-plugin-from-github-on.html">Installing Rails plugin from Github on Windows</a>.  Thanks!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/lianaleahy/2009/11/17/windows-and-github/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Select Into</title>
		<link>http://blogs.law.harvard.edu/lianaleahy/2009/11/12/select-into/</link>
		<comments>http://blogs.law.harvard.edu/lianaleahy/2009/11/12/select-into/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 15:57:34 +0000</pubDate>
		<dc:creator>lianaleahy</dc:creator>
				<category><![CDATA[Professional]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/lianaleahy/?p=327</guid>
		<description><![CDATA[This post is more a placeholder for some SQL that I often need.  It&#8217;s common to want to copy the contents of one table into another.  While there are some guis out there that will do this for you, they often don&#8217;t allow you to select partial contents or a variety of extras that [...]]]></description>
			<content:encoded><![CDATA[<p>This post is more a placeholder for some SQL that I often need.  It&#8217;s common to want to copy the contents of one table into another.  While there are some guis out there that will do this for you, they often don&#8217;t allow you to select partial contents or a variety of extras that you may need.</p>
<p>What annoys me about having worked with numerous flavors of SQL and databases is that the syntax tends to differ slightly.  On some dbs, this works just fine:</p>
<p><code>select *<br />
into table1<br />
from table2<br />
where id = 1<br />
</code></p>
<p>But some dbs expect that table2 is some sort of variable rather than another table containing the same columns.  So on others (like MySQL), you need to do it this way:<br />
<code><br />
insert into table1<br />
select *<br />
from table2<br />
where id = 1</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/lianaleahy/2009/11/12/select-into/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Arabic Charset and RedCloth</title>
		<link>http://blogs.law.harvard.edu/lianaleahy/2009/10/23/arabic-charset-and-redcloth/</link>
		<comments>http://blogs.law.harvard.edu/lianaleahy/2009/10/23/arabic-charset-and-redcloth/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 19:35:47 +0000</pubDate>
		<dc:creator>lianaleahy</dc:creator>
				<category><![CDATA[Professional]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/lianaleahy/?p=321</guid>
		<description><![CDATA[The Berkman Center has friends all over the world and just about every website we have requires language support.
We recently had an issue with RedCloth and the Arabic character set.  When saving content, line breaks disappear when you create a new RedCloth object.  It&#8217;s as if the Arabic line break character is ignored.
I cut and paste my [...]]]></description>
			<content:encoded><![CDATA[<p>The Berkman Center has friends all over the world and just about every website we have requires language support.</p>
<p>We recently had an issue with <a href="http://redcloth.org/">RedCloth</a> and the Arabic character set.  When saving content, line breaks disappear when you create a new RedCloth object.  It&#8217;s as if the Arabic line break character is ignored.</p>
<p>I cut and paste my Arabic document into the text area box on the front page of the RedCloth site.  And the line breaks show up fine there.  So, the ajaxy bit works fine.  Perhaps the culprit lies in the <strong>.to_html </strong>method.</p>
<p>This could be an issue with the Windows-1256 charset for Arabic.  I wouldn&#8217;t be suprised if the problem doesn&#8217;t occur on a Mac which I assume uses ISO 8859-6.</p>
<p>Anyway, the workaround is easy.  Just use html line breaks: <strong>&lt;br /&gt;</strong></p>
<p><strong><span style="color: #ff0000">UPDATE</span>:</strong> Had friends test this out on the mac using a variety of browsers and still had the same problem.  On either Windows or Mac, typing the enter key using the Arabic charset uses a strange character that RedCloth/Textile doesn&#8217;t understand<strong>.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/lianaleahy/2009/10/23/arabic-charset-and-redcloth/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>OpenID authentication plugin: bugs and quirks</title>
		<link>http://blogs.law.harvard.edu/lianaleahy/2009/10/21/openid-authentication-plugin-bugs-and-quirks/</link>
		<comments>http://blogs.law.harvard.edu/lianaleahy/2009/10/21/openid-authentication-plugin-bugs-and-quirks/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 15:28:55 +0000</pubDate>
		<dc:creator>lianaleahy</dc:creator>
				<category><![CDATA[Professional]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/lianaleahy/?p=288</guid>
		<description><![CDATA[My current ror project at Berkman is a new Herdict website being released later this week.  It is an extension of the BadwareBusters.org project that has been released to GitHub as LittleVoice.  My work in LittleVoice primarily involves restful authentication and scoring model methods, but for this new project I&#8217;ve been tasked with adding Twitter, [...]]]></description>
			<content:encoded><![CDATA[<p>My current ror project at Berkman is a <a href="http://discuss.herdict.org/">new Herdict website</a> being released later this week.  It is an extension of the <a href="http://badwarebusters.org/">BadwareBusters.org</a> project that has been released to <a href="https://github.com/">GitHub</a> as <a href="http://github.com/berkmancenter/LittleVoice/">LittleVoice</a>.  My work in LittleVoice primarily involves restful authentication and scoring model methods, but for this new project I&#8217;ve been tasked with adding Twitter, OpenId and anonymous authentication.</p>
<p>In retrospect, I might have been better off implementing <a href="http://www.binarylogic.com/2009/03/30/authlogic-2-0-with-some-openid-goodness/">Authlogic</a>.  But since I had already implemented <a href="http://railsforum.com/viewtopic.php?id=14216">Restful Authentication with all the bells and whistles</a> in LittleVoice, it seemed to make more sense to simply throw in the <a href="http://github.com/rails/open_id_authentication">open_id_authentication</a> and the <a href="http://github.com/corbanbrook/twitter_authentication">twitter_authentication</a> plugins and be done with it.  Mistake #1</p>
<p>Redirecting to OpenID and Twitter via the form_remote_tag form doesn&#8217;t work.  The app just hangs.  I tried various <a href="http://learningrubyonrails.blogspot.com/2008/02/formremotetag-with-ajax-and-none-ajax.html">options and incantations</a> of form_remote_tag to no avail.  Forunately, I could just bypass this nuisance issue with a simple form_for.</p>
<p>Otherwise, Twitter worked well out of the box except for the fact that the api does not return a user&#8217;s email address after authentication for security reasons.  This bummed me out because the LittleVoice app has a business rule requiring all users to have a unique email address.  But problem easily solved by requesting email up front as part of my authentication form.  No big deal.</p>
<p>Open ID however has a number of quirks that caused me great pain to work out.  And in researching these quirks and issues, I had a hard time finding information short of digging into the OpenID api.  And who wants to dig into the api?  I don&#8217;t have time for that!  Mistake #2</p>
<p><span style="background-color: #ffffff">Next, I found that my login and signup pages were working fine.  But authenticating via OpenID on the fly didn&#8217;t.  LittleVoice allows users to write a post before logging in, and rather than &#8220;submit&#8221; be able to login in-line.  But logging in via OpenID in the middle of my controller just wouldn&#8217;t work right.</span></p>
<p>What the heck was different between these two methods?  This is a great example of why it pays to be DRY.  But I digress&#8230;</p>
<p>In my sessions controller, I invoked OpenID in a form_tag that redirected to the open_id_logon named route.  In my other controller, I invoked OpenID by directly calling the authenticate_with_open_id plugin method.  Mistake #3</p>
<p>What wasn&#8217;t apparent right away is the fact that the authenticate_with_open_id method needs to be called twice.  This method redirects to the OpenID url entered by the user.  When the OpenID website is ready to return back to your site, you need to make sure that it calls authenticate_with_open_id again so you can grab the result, identity_url and registration object.  By calling the method directly in another controller, my return_to url was my controller method rather than the authenticate_with_open_id method.  Simply using the named route at all times, solves this issue.  But there&#8217;s another way.</p>
<p>There is a little known option for the authenticate_with_open_id.  You can set the return_to directly like this:</p>
<pre class="brush: ruby">
authenticate_with_open_id(openid_url, :return_to =&gt; open_id_logon_url) do |result, identity_url|
...
end
</pre>
<p>But here&#8217;s the really painful part.  When you try to use the return_to option you get an error message.</p>
<blockquote><p>OpenID::Server::UntrustedReturnURL</p></blockquote>
<p>There is a bug in the open_id_redirect_url method of the OpenIdAuthentication module.  The current module code looks like this:</p>
<pre class="brush: ruby">
def open_id_redirect_url(open_id_request, return_to = nil, method = nil)
...
open_id_request.redirect_url(requested_url, return_to || requested_url)
end
</pre>
<p>But it needs to be this:</p>
<pre class="brush: ruby">
def open_id_redirect_url(open_id_request, return_to = nil, method = nil)
...
open_id_request.redirect_url(return_to || requested_url, return_to || requested_url)
end
</pre>
<p>*sigh*  I can&#8217;t wait to close this ticket.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/lianaleahy/2009/10/21/openid-authentication-plugin-bugs-and-quirks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>rorw4w a success!</title>
		<link>http://blogs.law.harvard.edu/lianaleahy/2009/10/21/rorw4w-a-success/</link>
		<comments>http://blogs.law.harvard.edu/lianaleahy/2009/10/21/rorw4w-a-success/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 13:46:50 +0000</pubDate>
		<dc:creator>lianaleahy</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/lianaleahy/?p=281</guid>
		<description><![CDATA[The Ruby on Rails Workshop for Women event that I spent the last two months organizing went flawlessly!  Teachers, Sarah Allen compared the event to the Stone Soup fable and Andy Gregorowicz wrote about the workshop from his perspective. The tweet stream was also fabulously positive.
Here&#8217;s some of the feedback received:
So cool that folks travelled to Boston from as far [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://blogs.law.harvard.edu/genderandtech/ruby-on-rails-workshop-for-women/">Ruby on Rails Workshop for Women</a> event that I spent the last two months organizing went flawlessly!  Teachers, <a href="http://www.ultrasaurus.com">Sarah Allen</a> compared the event to the <a href="http://www.ultrasaurus.com/sarahblog/2009/10/stone-soup-workshop/">Stone Soup</a> fable and <a href="http://gregorowicz.blogspot.com/">Andy Gregorowicz</a> wrote about <a href="http://gregorowicz.blogspot.com/2009/10/teaching-at-ruby-on-rails-workshop-for.html">the workshop from his perspective</a>. The <a href="http://search.twitter.com/search?q=rorw4w">tweet stream</a> was also fabulously positive.</p>
<p>Here&#8217;s some of the feedback received:</p>
<blockquote><p>So cool that folks travelled to Boston from as far away as PA to attend Ruby on Rails Workshop for Women!!</p></blockquote>
<blockquote><p>&#8230;it makes a huge difference to be able to ask someone stupid ?s.</p></blockquote>
<blockquote><p>I like being able to say that I deployed my first Rails application today before lunchtime <img src='http://blogs.law.harvard.edu/lianaleahy/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  like running a half marathon.</p></blockquote>
<blockquote><p>Totally impressed with the amount of Ruby and Rails info the students absorbed.</p></blockquote>
<blockquote><p>I want to thank the teaching assistants at #rorw4w. You were never judgmental and always patient.</p></blockquote>
<blockquote><p>You know what&#8217;s a lot of fun? TAing at #rorw4w.</p></blockquote>
<blockquote><p>It was indeed entirely attitude-free, as promised &#8211; unique in my experience! I appreciated that so much, and I had a lot of fun, as well.</p></blockquote>
<p>I was truly impressed with the number of ror rockstars in the Boston community who were willing to give up their weekend to help some newbies.  I have a new mantra:  MINSBRAN &#8211; Matz Is Nice So Boston Rubyists Are Nice.  I will never fear going to another boston.rb or hackfest event again.</p>
<p>Sarah mentions all the<a href="http://www.ultrasaurus.com/sarahblog/2009/10/stone-soup-workshop/"> awesome volunteers by name</a> in her blog post, so here I&#8217;ll thank Berkman folk for their support in making this happen: Urs Gasser, Colin Maclay, Amar Ashar, Carey Andersen, Seth Young, Catherine Bracy, Jason Callina, Brandon Palmen, Dharmishta Rood, Daniel Jones, and the Gender and Technology committee.  I should also thank our CRCS supporters, Margo Seltzer and Salil Vadhan.</p>
<p>Tonight we gather again at the <a href="http://blogs.law.harvard.edu/genderandtech/ruby-on-rails-workshop-for-women/open-source-code-crunch/">Open Source Code Crunch</a> event at the Berkman Center. This is going to be a monthly event <span style="background-color: #ffffff">promoting mixed gender collaboration. Programmers will meet monthly and use their skills towards open source projects in a welcoming, collaborative, attitude-free, newbie-safe environment.  Looking forward to it.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/lianaleahy/2009/10/21/rorw4w-a-success/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>How to convert your MySQL table to accept UTF8 charactersets</title>
		<link>http://blogs.law.harvard.edu/lianaleahy/2009/10/19/how-to-convert-your-mysql-table-to-accept-utf8-charactersets/</link>
		<comments>http://blogs.law.harvard.edu/lianaleahy/2009/10/19/how-to-convert-your-mysql-table-to-accept-utf8-charactersets/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 18:40:09 +0000</pubDate>
		<dc:creator>lianaleahy</dc:creator>
				<category><![CDATA[Professional]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/lianaleahy/?p=274</guid>
		<description><![CDATA[Getting &#8220;????&#8221; in your database rather than your Arabic or Chinese character sets?  Try this:
 ALTER TABLE contents CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; 
]]></description>
			<content:encoded><![CDATA[<p>Getting &#8220;????&#8221; in your database rather than your Arabic or Chinese character sets?  Try this:</p>
<p><code> ALTER TABLE contents CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; </code></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/lianaleahy/2009/10/19/how-to-convert-your-mysql-table-to-accept-utf8-charactersets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Ruby on Rails Workshop for Women This Weekend!</title>
		<link>http://blogs.law.harvard.edu/lianaleahy/2009/10/16/ruby-on-rails-workshop-for-women-this-weekend/</link>
		<comments>http://blogs.law.harvard.edu/lianaleahy/2009/10/16/ruby-on-rails-workshop-for-women-this-weekend/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 14:46:21 +0000</pubDate>
		<dc:creator>lianaleahy</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/lianaleahy/?p=278</guid>
		<description><![CDATA[I am sooo excited!  It feels like opening night.  Wow, haven&#8217;t had these jitters in a long while.
I would like to personally thank all of our generous sponsors who are making this weekend&#8217;s Ruby on Rails Workshop for Women possible.  Thanks to them, attendees needn&#8217;t leave the workshop in search of coffee and food. [...]]]></description>
			<content:encoded><![CDATA[<p>I am sooo excited!  It feels like opening night.  Wow, haven&#8217;t had these jitters in a long while.</p>
<p>I would like to personally thank all of our generous sponsors who are making this weekend&#8217;s <a href="http://blogs.law.harvard.edu/genderandtech/ruby-on-rails-workshop-for-women/">Ruby on Rails Workshop for Women</a> possible.  Thanks to them, attendees needn&#8217;t leave the workshop in search of coffee and food.  But more importantly, we will be webcasting the event live!  <a href="http://blogs.law.harvard.edu/genderandtech/ruby-on-rails-workshop-for-women/webcast/">More details here</a>.</p>
<p>While all our sponsors were enthusiastic about contributing towards childcare costs, <a href="http://www.news.harvard.edu/gazette/2004/09.16/05-bigpic.html">Julia Ashmun </a>was our sole individual contributor earmarking her donation to waive referral fees for attendees in need of sitter services.</p>
<p>Our first sponsor <a href="http://www.hashrocket.com/">Hashrocket</a> has got to be one of the coolest dev shops on the planet. (I am such a fangirl!)  If only because <a href="http://www.desimcadam.com/">Desi Mcadam</a> works there, founder of <a href="http://www.devchix.com/2009/03/24/ada-lovelace-day-finding-ada/" target="_blank">DevChix</a>.  Thanks for all your support, Desi!</p>
<p>Congratulations to <a href="http://www.engineyard.com/">EngineYard</a> who just raised 19 Million with new investors.  Nice to hear good karma coming back to good people.</p>
<p>We also send thanks to <a href="https://github.com/">GitHub</a>, <em>the</em> most popular Git hosting site.  Brought to you by <a href="http://logicalawesome.com/">Logical Awesome</a>.  Don&#8217;t you just love that name?</p>
<p>And lastly we are grateful to <a href="http://railsbridge.org/">RailsBridge</a> for inspiring these workshops and reaching out to individuals and groups who are underrepresented in the community.</p>
<p>Thanks so much!!  Can&#8217;t wait to meet everyone tonight!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/lianaleahy/2009/10/16/ruby-on-rails-workshop-for-women-this-weekend/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>&#8230;to encourage mixed gender collaboration</title>
		<link>http://blogs.law.harvard.edu/lianaleahy/2009/10/01/to-encourage-mixed-gender-collaboration/</link>
		<comments>http://blogs.law.harvard.edu/lianaleahy/2009/10/01/to-encourage-mixed-gender-collaboration/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 19:59:01 +0000</pubDate>
		<dc:creator>lianaleahy</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/lianaleahy/?p=265</guid>
		<description><![CDATA[So the controversy over whether or not the Ruby on Rails Workshop for Women is sexist has made for an unproductive week. I do have a full time programming job here people! Nevertheless, it’s resulted in some very interesting responses. Check out the conversation on Hacker News.
The focus of the event is to encourage women [...]]]></description>
			<content:encoded><![CDATA[<p>So the controversy over whether or not the <a href="http://blogs.law.harvard.edu/genderandtech/ruby-on-rails-workshop-for-women/">Ruby on Rails Workshop for Women</a> is sexist has made for an unproductive week. I do have a full time programming job here people! Nevertheless, it’s resulted in some very interesting responses. Check out the conversation on <a href="http://news.ycombinator.com/item?id=851364">Hacker News</a>.</p>
<p>The focus of the event is to encourage women to participate in open source development. So workshop coordinators made the request that men who wish to attend find a woman to sign up who might not otherwise have considered checking out a tech event. There was never any intention to exclude men from the event, but rather enlist their help in broadening the community.</p>
<p>What happens when you want to encourage mixed gender collaboration but your female friends and family are already annoyed with the amount of time you spend on the computer? And I suppose it’d be rather creepy to troll the highschool for geek girls. What’s a boy to do?</p>
<p>MINSWAN everyone. We&#8217;re opening the event up to anyone who would like to attend.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/lianaleahy/2009/10/01/to-encourage-mixed-gender-collaboration/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Dear Minority Fringe,</title>
		<link>http://blogs.law.harvard.edu/lianaleahy/2009/09/30/dear-minority-fringe/</link>
		<comments>http://blogs.law.harvard.edu/lianaleahy/2009/09/30/dear-minority-fringe/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 19:54:44 +0000</pubDate>
		<dc:creator>lianaleahy</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/lianaleahy/?p=256</guid>
		<description><![CDATA[So, you&#8217;re annoyed that you&#8217;ve been asked to go to the effort of finding that rare woman who&#8217;ll spend a whole day in a tech class with you.  But since the event is FREE, why not consider this effort to be the price of admission?
The majority of the response to the Ruby on Rails Workshop [...]]]></description>
			<content:encoded><![CDATA[<p>So, you&#8217;re annoyed that you&#8217;ve been asked to go to the effort of finding that rare woman who&#8217;ll spend a whole day in a tech class with you.  But since the event is FREE, why not consider this effort to be the price of admission?</p>
<p>The majority of the response to the Ruby on Rails Workshop for Women has been encouraging and supportive.  Even<a href="http://www.loudthinking.com/about.html">DHH</a> himself tweeted about it:</p>
<blockquote><p><em>Rails workshop for women at Harvard University on October 16-17:</em><a rel="nofollow" href="http://bit.ly/2pglhW" target="_blank"><em>http://bit.ly/2pglhW</em></a><em> &#8212; very cool!</em></p></blockquote>
<p>Folks are really excited about it.  In fact, response is so great that I am seeking a larger venue for the THIRD time.</p>
<p>One of the reasons I love Ruby on Rails is because of its community. One of its treasured tennants is MINSWAN (<a href="http://en.wikipedia.org/wiki/Yukihiro_Matsumoto">Matz</a> is nice, so we are nice).  This is what working in <a href="http://en.wikipedia.org/wiki/Open_source">Open Source</a> is all about.</p>
<p><span style="background-color: #ffffff">I&#8217;m proud to say that many of the local ror rockstars will be at the workshop to TA.  And many of them are interested in pairing up with newbies of all genders at the monthly open source events we plan to host.  Why?  Because they believe that reaching out to folks who are underrepresented in the community produces better code.  And who doesn&#8217;t love better code?</span></p>
<p><span style="background-color: #ffffff">You gotta be nice to be a real ror rockstar.  And there are a lot of nice people of all genders involved in this event.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/lianaleahy/2009/09/30/dear-minority-fringe/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
	</channel>
</rss>
