<?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:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>gayleforce</title>
	<atom:link href="http://gayleforce.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://gayleforce.wordpress.com</link>
	<description>This Blog Doesn't Blow</description>
	<lastBuildDate>Tue, 14 Feb 2012 22:43:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='gayleforce.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/00eb25487f802f949b8e2b8888daa910?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>gayleforce</title>
		<link>http://gayleforce.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://gayleforce.wordpress.com/osd.xml" title="gayleforce" />
	<atom:link rel='hub' href='http://gayleforce.wordpress.com/?pushpress=hub'/>
		<item>
		<title>On self-confidence, and self-criticism</title>
		<link>http://gayleforce.wordpress.com/2011/03/04/on-self-confidence-and-self-criticism/</link>
		<comments>http://gayleforce.wordpress.com/2011/03/04/on-self-confidence-and-self-criticism/#comments</comments>
		<pubDate>Fri, 04 Mar 2011 22:33:24 +0000</pubDate>
		<dc:creator>Gayle</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://gayleforce.wordpress.com/?p=303</guid>
		<description><![CDATA[I came across an article this week, titled &#8220;The Trouble with Bright Girls&#8221; by Heidi Grant Halvorson, Ph.D http://www.huffingtonpost.com/heidi-grant-halvorson-phd/girls-confidence_b_828418.html This may be the first thing I&#8217;ve ever read on self-confidence and self-criticism that makes sense to me. I know I&#8217;m good at self-criticism. I know I lack self-confidence at times. But, I never really knew why. So [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gayleforce.wordpress.com&amp;blog=2524365&amp;post=303&amp;subd=gayleforce&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I came across an article this week, titled &#8220;The Trouble with Bright Girls&#8221; by Heidi Grant Halvorson, Ph.D<br />
<a href="http://www.huffingtonpost.com/heidi-grant-halvorson-phd/girls-confidence_b_828418.html">http://www.huffingtonpost.com/heidi-grant-halvorson-phd/girls-confidence_b_828418.html</a></p>
<p><em>This may be the first thing I&#8217;ve ever read on self-confidence and self-criticism that makes sense to me.</em></p>
<p>I know I&#8217;m good at self-criticism. I know I lack self-confidence at times. But, I never really knew why. So I never knew how to fix it. Anything I have tried to fix it (i.e. telling myself things like &#8220;stop being that way&#8221; because I don&#8217;t know what else to do,) has failed miserably.  That does not work.</p>
<p>You should read the whole article.  But if you don&#8217;t want to read the whole article, I&#8217;ve included some highlights.</p>
<blockquote><address><strong>“[psychologist Carol Dweck (author of "<a href="http://www.amazon.com/Mindset-Psychology-Success-Carol-Dweck/dp/1400062756">Mindset</a>")] found that Bright [fifth grade] Girls, when given something to learn that was  particularly foreign or complex, were quick to give up; the higher the  girls&#8217; IQ, the <em>more</em> likely they were to throw in the towel. In  fact, the straight-A girls showed the most helpless responses. Bright  boys, on the other hand, saw the difficult material as a challenge, and  found it energizing. They were more likely to redouble their efforts  rather than give up.</strong></address>
</blockquote>
<p>So, what does that mean?  Boys are more persistent? It seems like that might come from having more confidence. Isn&#8217;t that a &#8220;catch-22?&#8221;</p>
<blockquote><address><strong>“Researchers have uncovered the reason for this difference in how  difficulty is interpreted, and it is simply this: More often than not,  Bright Girls believe that their abilities are innate and unchangeable,  while bright boys believe that they can develop ability through effort  and practice.</strong></address>
</blockquote>
<p>I never noticed it, but I have felt that way my whole life.  I have always thought that abilities are innate and unchangeable.  I have.  I thought everybody knew that. Wow.</p>
<blockquote><address><strong>“How do girls and boys develop these different views? Most likely, it has  to do with the kinds of feedback we get from parents and teachers as  young children. Girls, who develop self-control earlier and are better  able to follow instructions, are often praised for their &#8220;goodness.&#8221;  When we do well in school, we are told that we are &#8220;so smart,&#8221; &#8220;so  clever, &#8221; or &#8220;such a good student.&#8221; This kind of praise implies that  traits like smartness, cleverness and goodness are qualities you either  have or you don&#8217;t.</strong></address>
<address><strong><br />
</strong></address>
<address><strong>“Boys, on the other hand, are a handful. Just trying to get boys to sit  still and pay attention is a real challenge for any parent or teacher.  As a result, boys are given a lot more feedback that emphasizes effort  (e.g., &#8220;If you would just pay attention you could learn this,&#8221; &#8220;If you  would just try a little harder you could get it right.&#8221;) The net result:  When learning something new is truly difficult, girls take it as sign  that they aren&#8217;t &#8220;good&#8221; and &#8220;smart,&#8221; and boys take it as a sign to pay  attention and try harder.</strong></address>
</blockquote>
<p>Huh.  That&#8217;s interesting.  I can relate to receiving that kind of girl-praise.</p>
<blockquote><address><strong>“And because Bright Girls are particularly likely to see their abilities  as innate and unchangeable, they grow up to be women who are far too  hard on themselves &#8212; women who will prematurely conclude that they  don&#8217;t have what it takes to succeed in a particular arena, and give up  way too soon.</strong></address>
</blockquote>
<p>Woah.  That hits home.  I have concluded that I &#8220;don&#8217;t have what it takes&#8221; a lot.  Sometimes I give up and quit.  Sometimes I get over it for awhile, try again, and end up repeating the same sick cycle.</p>
<p>I think it happens the very most when I&#8217;m playing sports.  I started playing hockey circa 1999.  Then I gave up and quit sometime in 2006.  I like to tell people it&#8217;s because I got burnt out being the team captain.  That&#8217;s a tiny bit true.  But the big reason was that I became so frustrated with myself and my lack of ability that it wasn&#8217;t fun anymore.  But part of me missed it.  I started playing again sometime in 2009.</p>
<p>Lately I have started seeing signs of the downturn of that cycle again.  I&#8217;m find myself looking at the time clock during games, wondering how much longer we have in the game because I kinda want to leave.  Not really bad, just kinda.  Sometimes I find myself wondering why I even keep playing when &#8220;I can&#8217;t seem to do X&#8221; and &#8220;I don&#8217;t understand Y.&#8221;  And just in the past few weeks I think I&#8217;ve started manufacturing other reasons that maybe I don&#8217;t belong, like that I can&#8217;t put up with women in the locker room badmouthing my boyfriend, when really that only happened once, and the truth is everyone likes him and everyone has my and his back anyway, and I&#8217;m pretty sure that won&#8217;t be happening again.  So that&#8217;s not a <strong>real</strong> reason.</p>
<blockquote><address><strong>“So if you were a Bright Girl, it&#8217;s time to toss out your (mistaken) belief about how ability works, embrace the fact that you can always improve and reclaim the confidence to tackle any challenge that you lost so long ago.</strong></address>
</blockquote>
<p>We start a new session of hockey in a couple weeks.  I&#8217;ve only just started noticing the downswing; It&#8217;s not beyond repair yet. Maybe I can leverage this to give me a whole new, and much better, perspective on my self-perceived &#8220;abilities.&#8221;</p>
<p>So there were really 2 main things that all of this has helped me realize.</p>
<p>1. As I&#8217;m reading and reflecting on all of this, I have come to realize how much &#8220;I just can&#8217;t do it&#8221; has become such a regular part of my inner vocabulary.  A statement of defeat; as if that&#8217;s it, that is the end, it&#8217;s a fact and there&#8217;s nothing else to be done about it.  Now that I am aware that I&#8217;ve always thought abilities are innate and unchangeable, hopefully working on convincing myself that is just untrue will be more effective than trying to convince myself to just &#8220;stop being that way.&#8221;</p>
<p>2. The article doesn&#8217;t mention this exactly, but I think this is also why I tend to take things more personally than I should.   I have abilities and thought processes, which in turn form my opinions, situations, etc.  You see, I&#8217;ve never realized that I&#8217;ve always (even if subconsciously) thought that those things are innate and unchangeable.  So, I&#8217;ve  never been able to separate comments/opinions on those things that <em>are not</em> innate and unchangeable, from things that <em>are</em> innately me.  If everything really was innately me, then of course it&#8217;s personal.  So, come to find out, it&#8217;s not.</p>
<p>And again I quote this:</p>
<blockquote><address><strong>“So if you were a Bright Girl, it&#8217;s time to toss out your (mistaken) belief about how ability works, embrace the fact that you can always improve and reclaim the confidence to tackle any challenge that you lost so long ago.</strong></address>
</blockquote>
<p>I hope this means I can do that.</p>
<p>The only thing I&#8217;m left to ponder is: if the type of praise, the type described in the article, that is often given to girls at a young age ends up having un-intended, negative effects, then what is the <em>right </em>way to give girls praise?  At least, what is a <em>better </em>way?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gayleforce.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gayleforce.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gayleforce.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gayleforce.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gayleforce.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gayleforce.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gayleforce.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gayleforce.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gayleforce.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gayleforce.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gayleforce.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gayleforce.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gayleforce.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gayleforce.wordpress.com/303/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gayleforce.wordpress.com&amp;blog=2524365&amp;post=303&amp;subd=gayleforce&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gayleforce.wordpress.com/2011/03/04/on-self-confidence-and-self-criticism/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7c5690574dfe0863e1509de65c3f8ee?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">gayle9</media:title>
		</media:content>
	</item>
		<item>
		<title>CodeMash 2011</title>
		<link>http://gayleforce.wordpress.com/2011/01/16/codemash-2011/</link>
		<comments>http://gayleforce.wordpress.com/2011/01/16/codemash-2011/#comments</comments>
		<pubDate>Sun, 16 Jan 2011 06:49:03 +0000</pubDate>
		<dc:creator>Gayle</dc:creator>
				<category><![CDATA[community]]></category>

		<guid isPermaLink="false">http://gayleforce.wordpress.com/?p=295</guid>
		<description><![CDATA[Following CodeMash &#8217;11, I&#8217;m still here at the Kalahari. Today was spent winding down from CodeMash w/ some nice water park activities this afternoon followed by a very long &#38; much-needed nap. Weird but cool: CodeMash &#8217;08 inspired me to start a tech blog. My first post was on 1/19/08.  My blog&#8217;s busiest day (162 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gayleforce.wordpress.com&amp;blog=2524365&amp;post=295&amp;subd=gayleforce&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Following <strong>CodeMash &#8217;11</strong>, I&#8217;m still here at the Kalahari. Today was spent winding down from CodeMash w/ some nice water park activities this afternoon followed by a very long &amp; much-needed nap.</p>
<p>Weird but cool: <strong>CodeMash &#8217;08 </strong>inspired me to start a tech blog. My first post was on 1/19/08.  My blog&#8217;s busiest day (162 hits in a single day) just happened this past week on 1/12/11.</p>
<p>Apparently I did not write any follow-ups to <strong>CodeMash &#8217;09 </strong>or <strong>&#8217;10</strong>.  I don&#8217;t know why not, but that&#8217;s too bad.  Maybe the lesson learned is: blog before I go home so I don&#8217;t forget.  So here I am in the hotel room at the Kalahari, reflecting on CodeMashes past.</p>
<p>Being pushed a little outside of one&#8217;s comfort zone is a good thing, as long as it&#8217;s a push and not a shove.</p>
<p><strong>CodeMash &#8217;08 </strong>pushed me beyond my comfort zone with the start of this blog.</p>
<p><strong>CodeMash &#8217;09</strong> I realized how in 2008 I did not recognize most people&#8217;s names in the program lined up to speak, but in 2009 I knew a majority of them.  So to push myself further, <em>at least</em> one meal a day when looking for a seat, I specifically did not look for tables of people that I knew.  Instead, I specifically sat at tables where I did not know anyone.  I can be shy and reserved, but it was a nice <em>little </em>push outside of comfort.</p>
<p><strong>CodeMash &#8217;10</strong> Was the first time I attended the &#8220;precompiler&#8221; sessions, which are more hands-on &#8220;bring your laptop and everyone is writing code&#8221; type of sessions than the rest of the week which are lecture-style.  Some sessions are all day, some are half day. In the morning I planned to help Leon Gersing with his all-day session writing a website using agile methodologies and Ruby on Rails.  In the afternoon I was going to attend something else.  In the morning I walked around the room helping people out getting things installed and ready to go, and helping people learn Ruby and Rails.  That shy thing still made this a small push out of the comfort zone.  It turns out I had so much fun doing that, that I ended up staying there in the afternoon helping out too.  In a way, I learned a lot myself in the process of helping other people learn some of the Ruby and Rails concepts.  Makes me go back to basics to explain something, and reinforce those ideas in my own mind.  It was the first time at a conference where people said hi to me walking around, or came up to talk to me, who were in those sessions that I helped out but I didn&#8217;t remember them (because there were so many of them and only one of me.)</p>
<p><strong>CodeMash &#8217;11</strong> I did the same thing in the morning as I did the previous year, help people get set up in Leon&#8217;s session to work on a Ruby on Rails website.  Unfortunately I wasn&#8217;t &#8220;fully present&#8221; at that the morning session, because I was so focused on the afternoon, I don&#8217;t feel that I really helped out that much.  In the afternoon was that next big push beyond my comfort zone.  About a week before CodeMash, one of the precompiler sessions about doing Ruby on Windows was canceled.  At the last minute, 4 people including Charley Baker, Joe O&#8217;Brien and Matt Yoho, and I took on the session.  I still did not want to get up and speak in front of people, which I&#8217;ve mentioned many times before. I could push thru my fear of public speaking if I wanted to, I just don&#8217;t want to.  And I learned at <strong>CodeMash &#8217;10</strong> that I&#8217;m much better at sharing my knowledge 1 on 1, or 1 on 2-3.  I think I may actually be pretty good at that.  But I don&#8217;t have much desire to put 100% effort into public speaking.  So I was happy to prepare installation instructions for Ruby and Rails, and instructions on how to install and use my favorite IDE <a href="http://www.jetbrains.com/ruby/" target="_blank">RubyMine</a>, and pass on that information to the others who are much more ok with the getting up and talking in front of a group than I am.  Could I have found a new niche?  I prepare information ahead of time like I would if I were giving a talk &#8211; then feed my work to someone else to be my voice?  It sounds good to me, I wonder if that could work.  This was the first time where someone at CodeMash asked me if my handouts would be available online later.  So that&#8217;s pretty cool!  I will get those on this site in the next week or so.</p>
<p>In summary, it was another good year of CodeMash. I enjoyed catching up with old friends.  I really enjoyed making some new ones.  And I learned some new stuff along the way.  Much thanks to the organizers who make this happen, and I hope to see you at <strong>Codemash&#8217;12</strong>!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gayleforce.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gayleforce.wordpress.com/295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gayleforce.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gayleforce.wordpress.com/295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gayleforce.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gayleforce.wordpress.com/295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gayleforce.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gayleforce.wordpress.com/295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gayleforce.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gayleforce.wordpress.com/295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gayleforce.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gayleforce.wordpress.com/295/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gayleforce.wordpress.com/295/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gayleforce.wordpress.com/295/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gayleforce.wordpress.com&amp;blog=2524365&amp;post=295&amp;subd=gayleforce&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gayleforce.wordpress.com/2011/01/16/codemash-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7c5690574dfe0863e1509de65c3f8ee?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">gayle9</media:title>
		</media:content>
	</item>
		<item>
		<title>RubyConf 2010, keynotes, and maihem. Oh my!</title>
		<link>http://gayleforce.wordpress.com/2011/01/12/rubyconf-2010-keynotes/</link>
		<comments>http://gayleforce.wordpress.com/2011/01/12/rubyconf-2010-keynotes/#comments</comments>
		<pubDate>Wed, 12 Jan 2011 08:12:38 +0000</pubDate>
		<dc:creator>Gayle</dc:creator>
				<category><![CDATA[community]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[women in tech]]></category>

		<guid isPermaLink="false">http://gayleforce.wordpress.com/?p=288</guid>
		<description><![CDATA[It&#8217;s now a little over a month after RubyConf 2010, but I still want to finish and publish a blog post that I started right after getting back from RubyConf about some of the keynote talks and some of my experiences and thoughts. Whenever I go to a tech conference, I&#8217;m often in the minority [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gayleforce.wordpress.com&amp;blog=2524365&amp;post=288&amp;subd=gayleforce&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s now a little over a month after RubyConf 2010, but I still want to finish and publish a blog post that I started right after getting back from RubyConf about some of the keynote talks and some of my experiences and thoughts.</p>
<hr />
<p>Whenever I go to a tech conference, I&#8217;m often in the minority as one of few women at the conference.  And inevitably a few people are interested in hearing my thoughts and opinions about being one of few women at the conference, and in IT in general.  It&#8217;s not one of my favorite topics, but I appreciate people&#8217;s interest in talking to me, so I indulge.</p>
<p>After a collection of conversations at RubyConf, and some mini-controversy on Twitter following RubyConf (seriously, can&#8217;t Rubyists have a conference without some level of controversial aftershock?) regarding David Heinemeier Hansson&#8217;s keynote, I really feel like I&#8217;m no longer qualified to give opinions on women in technology, and maybe I never was.  I start to feel like a freak among women.  I *liked* David&#8217;s talk.  I even went up to him later that day and told him so.  But now I feel like I&#8217;m &#8220;supposed&#8221; to be offended in some way.  I just don&#8217;t seem to have the same opinions about things as most women.  Not only am I a minority at the conferences I attend, I am a minority among the minority.  I never did really fit in much of anywhere.</p>
<p>Diversity is a great thing.  But I never understand why people make such a big deal about women in technology when I rarely (if ever) hear people talk about small numbers of African American&#8217;s in technology, about Jewish people in tech,  you name it.  (Though to his credit, Dave Thomas did briefly include that topic in his talk. [DT 39:40] More on his talk later.)  I just don&#8217;t think much about whether I&#8217;m one of few women around or not.  I guess I just try to see something positive wherever I&#8217;m at, and whatever I&#8217;m doing; so if being one of few women around is &#8220;supposed&#8221; to be bad, I just don&#8217;t see it that way.  If that&#8217;s how I&#8217;m supposed to feel, then I start to wonder if I&#8217;m just not good at being a woman. I don&#8217;t feel that way all the time.  But sometimes being singled out for being different makes me feel worse.</p>
<p>Dave Thomas started off RubyConf with an inspiring keynote recapping his last 10 years in Ruby, and offering 3 challenges to the audience (inspire someone, diversify, get out of the rut.)  Challenge 1 [DT 33:03] started off with a comparison of the percentage of women in the workforce (47%) vs. women in computing/math (25%), vs. women at RubyConf (5.6%), vs. women in open source (1.5%).  Then he talked mostly about how the community can inspire women and avoid discriminatory behavior, some of which &#8220;you don&#8217;t always know you&#8217;re doing&#8230;.&#8221; [DT 39:08]  On one hand I admire a speaker addressing a topic he feels is an issue.  And while I have mixed feelings on the subject, I don&#8217;t disagree that there&#8217;s an issue.  On the other hand, as soon as he brought up the subject of women, I knew that was about all people would want to talk about with me the rest of the day (which I kind of dreaded).  And that&#8217;s pretty much how my next couple of days went.</p>
<p>&#8220;How did you push through?&#8221; they asked.</p>
<p>I never really felt like I had to push through much of anything to enter IT.  If there was any barrier to entry in any subset of IT, it might have been into the Ruby community.  For one, it feels awkward going to a Ruby meeting with a Windows machine.  And I don&#8217;t think we should make people feel that way.  You shouldn&#8217;t have to buy a Mac before you attend your first Ruby meeting, nor worry about people telling you to &#8220;get a real machine.&#8221;  I think it&#8217;s a bit much to expect people to spend the money on a Mac (about twice as much money as equivalent non-Mac hardware whenever I&#8217;ve priced it out) just to do Ruby. Not that I have any problem with Macs either.  But I do like my Window 7.  By choice.  And I&#8217;m really scared to say that. On my blog.  I shouldn&#8217;t be, but I am.  At RubyConf, during one of the conversations I had where someone asked me about Women in IT, I mentioned this  fear.  And in an indirect way, the person basically called me an idiot for that choice.  Backpedaling&#8230; “ummm,” he says&#8230; “it&#8217;s just that most of the people I&#8217;ve met that &#8216;choose&#8217; windows are idiots.”  Thanks dude.  That felt great &lt;/sarcasm&gt;.  <a href="http://gayleforce.wordpress.com/2010/11/22/never-be-ashamed-of-where-you-came-from/" target="_blank"> But I&#8217;m trying not to be ashamed of who I am anymore</a>.</p>
<p>David Heinemeier Hansson gave his keynote on the 2nd morning of RubyConf. His talk, titled &#8220;Why Ruby?&#8221; was about what he loves so much about Ruby, and why he hasn&#8217;t felt a need to look at another programming language in many years.  He talked about the freedom that Ruby gives you over statically-typed languages such as Java or C#.  Within that freedom, some acts are harmless, and others are much worse, but freedom should be used with appropriate moderation. [DHH 49:00]  And he dropped 3 F-bombs.  And he talked about having one&#8217;s balls fondled by the TSA. [DHH 40:30-40:47]</p>
<p>Some people said these things were &#8220;distracting&#8221; or did not add value to his talk.  While I wouldn&#8217;t get up in front of a group and talk that way, (I also wouldn&#8217;t get up in front of a group and talk) if he wants to get up and talk that way, that&#8217;s his choice.  At this point in his career, he doesn&#8217;t really have to worry whether or not people think he&#8217;s unprofessional when he gets up and talks.  But was anything in his talk something that you wouldn&#8217;t see or hear in an R-rated movie?  No.  Was it distracting?  I don&#8217;t think so.  3 F-bombs.  And the majority of the ball fondling discussion lasted only 17 seconds, not counting 1 fleeting side remark referencing back to it later on [DHH 41:41], for a total of about 19 seconds.  Is 19 seconds, out of an hour-long talk, really a distraction to someone?  If anything I thought it was funny.  And funny holds my attention a lot longer than most standard talks.  When he expressed this disgust at recent TSA practices and as he put it, having one&#8217;s balls fondled, I wanted to turn to the person beside me and say &#8220;Yeah, I hate when the TSA fondles my balls!&#8221;  If I&#8217;d been less tired, I probably would have said that.  But people were fired up against his talk anyway.  I guess you can&#8217;t really convince people who are fired up over something to settle down.  And I&#8217;m simply not qualified to say if people are over-reacting or not.  I&#8217;m not qualified to say whether women (in general) are uncomfortable about this stuff, or offended.  I just don&#8217;t know.  It&#8217;s up to individuals to form their own opinions.</p>
<p>I do know it&#8217;s up the mature ones who can handle the freedom to lead by example, whatever that means to them.  To me, it means not dwelling on little things people say, but rather try to step back see the big picture of what message someone is trying to get across and take it for what it is.  I know, that&#8217;s really tough sometimes.  People get offended at things.  It&#8217;s hard not to take something too personally sometimes.  And I think anyone trying to effectively get their message across needs to be considerate of that.  We&#8217;re all free to say what we want, and speak to people however we want.  But just because you CAN do something, doesn&#8217;t mean you SHOULD.  (Just like we&#8217;re all free to write complex logic in one convoluted line of Ruby code, just to be proud to say you did something in only one line.  Clever, but it doesn&#8217;t mean you should do that.  Can someone else easily understand what it does?  I think readability is more important than cleverness. But some people will do that anyway. I can lead by example there too.  At the end of the day, I have to figure out what they were trying to do and move on. I digress. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Dave Thomas, when talking about ways the community may exclude women, he said &#8220;The exclusion happens among people who often do not mean to appear, and do not interpret their own actions, as hostile to women.&#8221; [DT 36:50]  That is probably true.  Though I think there&#8217;s a lot of actions are hostile in many ways, not to women specifically.  For example, unintentional hostility against people with less confidence.</p>
<p>&#8220;Why&#8217;d you do it THAT way?&#8221;</p>
<p>Perhaps they just asked the question because they want to see where the person&#8217;s coming from.  Maybe they like to question decisions in order to spawn discussion.  Maybe they like to challenge and argue and see where it goes.  Depending on tone of voice, &#8220;Why&#8217;d you do it THAT way?&#8221; can easily imply &#8220;That was a dumb way to do it.&#8221; instead.  And the person with low confidence takes it further to mean &#8220;YOU are dumb.&#8221;  Are you aware of this?  But sometimes people with low confidence have great ideas, too!  Are we missing out on those?  Are we including them? Or are we pushing THEM away?</p>
<p>Dave Thomas also said &#8220;if you do find something offensive&#8230; do something about it.  If you&#8217;re in a talk and it&#8217;s offensive, stand up and get out.  Or blog about it&#8230; tweet the guy into oblivion&#8230;. by reacting, you&#8217;re saying &#8216;yeah it happened, but you know what? We&#8217;re not going to let it happen again.&#8217;&#8221; [DT 40:12]  Not bad advice!  Yet just because you can do these things doesn&#8217;t necessarily mean you should.  For one thing, you can&#8217;t please everyone all the time.  Chances are someone will not like something that any speaker has to say.  Be careful to use this kind of power of persuasion when it&#8217;s really important, not on every little thing.  Else it becomes meaningless.  It becomes &#8220;oh yeah, there go those rubyists again, always someone pissed off at the end of the conference.&#8221;  May we all have the wisdom to discern the important from the trivial.</p>
<p>But as for the male/female ratio thing, I think it goes deeper than being less &#8220;inflammatory&#8221; [DT 37:40] in order to not deter women.  How do you think it makes a person feel to hear someone who&#8217;s trying to have kids say &#8220;I hope we don&#8217;t have a girl,&#8221; or to hear someone say &#8220;can you imagine him trying to raise a *girl*? Oh my!&#8221;  Are girls really that much more trouble?  Maybe we are.  Maybe it makes us feel like we&#8217;re not worth the trouble.  It makes me feel like I&#8217;m not worth the trouble.  I think people (not women, but anyone) with lower self-esteem have a harder time convincing themselves that they can do something that&#8217;s &#8220;supposed&#8221; to be hard, like Math, Science, Computers.  What have the experiences in your life taught you about what you can and can&#8217;t do?  What opinions have the years of your life helped you form?  For me, I&#8217;ve &#8220;learned&#8221; (note I put &#8220;learned&#8221; in quotes):</p>
<p>* that having daughters is a bad thing,</p>
<p>* that most of what women do is annoying and excessive (shopping, talking too much, taking too long to get ready, over-packing for a trip),</p>
<p>* that all wives are good for is nagging and telling their husbands what they can and cannot do.  I&#8217;m exaggerating mostly (however, I did see someone tweet recently &#8220;I don&#8217;t have an opinion, I have a wife.&#8221;  That&#8217;s a horrible way to have to feel in life.  And if women are to blame for that, then yes, I do feel bad.)</p>
<p>These are thoughts I have to consciously put out of my head when I&#8217;m feeling down.  It&#8217;s really hard sometimes.</p>
<p>So what now?  If I&#8217;m offended by one little keynote speech, I can leave that talk.  I could stop attending community events.  I can still code in Ruby and Rails and not be a part of the community at all.  But I lose out.  I lose out on other people&#8217;s passion, their knowledge, their ideas.  But I&#8217;m not offended by much.  I liked Dave Thomas&#8217;s talk, AND I liked David Heinemeier Hansson&#8217;s talk.  I particularly liked his analogy with rope.  &#8220;People say things like &#8216;&#8230;just enough rope to hang himself&#8217; but does that mean we should outlaw rope? You shouldn&#8217;t be allowed to have rope, because what if you hung yourself? Is that the main use case for rope? &#8230; you can do a lot of things with rope.&#8221; [DHH 37:30]</p>
<p>I don&#8217;t have to condone all the individual choices people make [DHH 56:20]; We don&#8217;t all have the same sense of humor but we can still get along [DHH 34:00].  Can&#8217;t we all just get along? [Rodney King <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ]</p>
<p>I don&#8217;t know the first thing about why there&#8217;s not more women in IT.  I don&#8217;t have any clue what to do about it.  Sometimes I wonder why it&#8217;s really a &#8220;problem.”  If women aren&#8217;t interested in it, why force it?  There&#8217;s lots of opinions on that.  But I think the best thing to do is make anyone interested in IT feel welcome; instead of singling out people who represent some statistical group, just treat them like they belong in the group.  I really liked Dave Thomas&#8217; challenge to inspire someone, and his suggestion that we need to be talking more to kids and inspiring them about software development. [DT 41:05]  (Kids.  Not girls, not boys.  Kids.)  &#8220;Fewer and fewer people are entering software as a profession&#8230;. Mentoring is a really important part of what we do. [41:16]  And that I agree with.  I&#8217;ve had plenty of mentors over my career, and giving back by mentoring others makes a lot of sense.  &#8220;Go inspire someone&#8221; is something that I can do.  Can you?</p>
<p>References:</p>
<p>Video of David Heinemeier Hansson&#8217;s RubyConf Keynote (DHH* http://confreaks.net/videos/431-rubyconf2010-keynote-why-ruby)</p>
<p>Video of Dave Thomas&#8217; RubyConf Keynote (DT*  http://confreaks.net/videos/368-rubyconf2010-keynote)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gayleforce.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gayleforce.wordpress.com/288/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gayleforce.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gayleforce.wordpress.com/288/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gayleforce.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gayleforce.wordpress.com/288/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gayleforce.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gayleforce.wordpress.com/288/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gayleforce.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gayleforce.wordpress.com/288/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gayleforce.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gayleforce.wordpress.com/288/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gayleforce.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gayleforce.wordpress.com/288/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gayleforce.wordpress.com&amp;blog=2524365&amp;post=288&amp;subd=gayleforce&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gayleforce.wordpress.com/2011/01/12/rubyconf-2010-keynotes/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7c5690574dfe0863e1509de65c3f8ee?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">gayle9</media:title>
		</media:content>
	</item>
		<item>
		<title>Never be ashamed of where you came from!</title>
		<link>http://gayleforce.wordpress.com/2010/11/22/never-be-ashamed-of-where-you-came-from/</link>
		<comments>http://gayleforce.wordpress.com/2010/11/22/never-be-ashamed-of-where-you-came-from/#comments</comments>
		<pubDate>Mon, 22 Nov 2010 22:43:57 +0000</pubDate>
		<dc:creator>Gayle</dc:creator>
				<category><![CDATA[community]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[user groups]]></category>

		<guid isPermaLink="false">http://gayleforce.wordpress.com/?p=278</guid>
		<description><![CDATA[I am frequently asked my opinion on how to encourage more people people to get into software development. My response frequently is: &#8220;if people aren&#8217;t interested in software development, why force them to be?&#8221; I enjoy hearing people&#8217;s various responses to my often unexpected follow-up question. All the while, I have my own answer to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gayleforce.wordpress.com&amp;blog=2524365&amp;post=278&amp;subd=gayleforce&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I am frequently asked my opinion on how to encourage more people people to get into software development.  My response frequently is:</p>
<blockquote><p><em>&#8220;if people aren&#8217;t interested in software development, why force them to be?&#8221; </em></p></blockquote>
<p>I enjoy hearing people&#8217;s various responses to my often unexpected follow-up question.  All the while, I have my own answer to the question: I don&#8217;t think we want to force it, but we do want to make absolutely sure we&#8217;re not <em><strong>dis</strong></em>couraging people either.</p>
<p>Lately, I have heard way too many people actually apologize for languages, platforms or technologies they once used.  I&#8217;ve heard it in one-on-one conversations, in groups, even from a speaker addressing a local user group. Soon it struck me: <strong><em>YOU SHOULD NEVER HAVE TO BE ASHAMED OF WHERE YOU CAME FROM</em></strong>.  It&#8217;s what makes you uniquely you, it gives you the unique perspective that only you have to bring to the table.  I even hear people apologize for the languages, platforms or technologies they currently use.  And I also feel <strong><em>YOU SHOULD NEVER HAVE TO BE ASHAMED OF WHO YOU ARE.</em></strong></p>
<h2><span style="color:#333399;">Please, let&#8217;s make sure we&#8217;re not making people feel ashamed of who they were, and of who they are. </span></h2>
<p>I think a lot of people in IT tend to be very opinionated, er, I mean very passionate about their craft.  Passion is a great thing when used for good and not for evil.   But on more than one occasion I&#8217;ve heard people say that they stopped attending a local user group because whenever they went, they were made to feel bad about being &#8220;the [insert technology here] guy&#8221; (the .Net guy, the Java guy, the Python guy, the PHP guy, whatever) and sometimes to the point of feeling they have to defend who and what they are.  That became very tiring after awhile, and they quit attending the group.  <em>Do we want to share the Ruby love or not?</em> We all lose if we don&#8217;t.  This person is no longer learns about Ruby and Rails at their local user group every month.  And that Ruby community no longer has the unique point of view that only that person could have contributed if only people would listen.</p>
<h2><span style="color:#333399;">Please, let&#8217;s welcome people who are different from us, and not try to change them but embrace them.</span></h2>
<p>Dave Thomas spoke in his keynote at <a href="http://rubyconf.org">RubyConf 2010</a> that we, as a community, may be unaware of what we may do or say to discourage people into joining us.  I hate to say it, but I think the Ruby community not seen as the most welcoming bunch.  We have good intentions of welcoming. On the surface, we are.  When it comes down to it, I get a feeling that we unknowingly making people who do not use Ruby, own Macs, and have iPhones feel <em>very </em>out of place.  <em>That is not a good feeling.  It&#8217;s not a warm feeling.  It&#8217;s not a welcoming feeling.</em> I&#8217;m not saying this kind of thing isn&#8217;t prevalent elsewhere, but the Ruby community is what I know best right now, and it&#8217;s where I see it right now.</p>
<h2><span style="color:#333399;">What can we do?  I encourage and challenge everyone, the Ruby community especially, to be more welcoming. </span></h2>
<ul>
<li>Next time you are talking to a fellow technologist, and you hear someone says they are a .Net or Java or whatever developer, resist the temptation to say (or even think) &#8220;ohhh, I&#8217;m sorry!&#8221;  You may be joking.  And it may be appropriate to joke in that way with someone you know very well who knows without a doubt you are joking.  But <em>what you may not realize</em> is who else is listening.  There may be a person over in the corner who doesn&#8217;t know anyone at the user group yet, but is within ear shot of hearing you.  That&#8217;s the impression they will get of how this Ruby community welcomes n00bs and people of other technological backgrounds.</li>
</ul>
<ul>
<li>Lead by example.  Don&#8217;t criticize or look down on someone who uses a completely different language than you, or uses a different operating system, or chooses a different editor.  Don&#8217;t strong-arm someone into seeing things your way.  Never TELL someone that they should love something.  Show them what YOU love about it, the rest will follow.  Or it may not.  But that&#8217;s all you can do.</li>
</ul>
<ul>
<li>Next time you&#8217;re at a user group meeting, make a point of talking to someone you don&#8217;t know.  Maybe it&#8217;s someone who&#8217;s been coming for awhile but you have been too busy to notice.  But maybe it&#8217;s someone who&#8217;s new and will appreciate that someone went out of their way to be nice.  Find out what they do, but never judge.  Find out how they got interested in Ruby and encourage that.  Tell them what made you get into Ruby, but make sure they never feel they have to have the same reasons as you.</li>
</ul>
<h2><span style="color:#333399;">Go forth and <span style="text-decoration:underline;">EN</span>courage! </span></h2>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gayleforce.wordpress.com/278/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gayleforce.wordpress.com/278/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gayleforce.wordpress.com/278/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gayleforce.wordpress.com/278/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gayleforce.wordpress.com/278/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gayleforce.wordpress.com/278/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gayleforce.wordpress.com/278/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gayleforce.wordpress.com/278/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gayleforce.wordpress.com/278/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gayleforce.wordpress.com/278/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gayleforce.wordpress.com/278/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gayleforce.wordpress.com/278/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gayleforce.wordpress.com/278/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gayleforce.wordpress.com/278/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gayleforce.wordpress.com&amp;blog=2524365&amp;post=278&amp;subd=gayleforce&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gayleforce.wordpress.com/2010/11/22/never-be-ashamed-of-where-you-came-from/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7c5690574dfe0863e1509de65c3f8ee?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">gayle9</media:title>
		</media:content>
	</item>
		<item>
		<title>RubyConf 2010 Highlights</title>
		<link>http://gayleforce.wordpress.com/2010/11/16/rubyconf-2010-highlights/</link>
		<comments>http://gayleforce.wordpress.com/2010/11/16/rubyconf-2010-highlights/#comments</comments>
		<pubDate>Wed, 17 Nov 2010 03:47:05 +0000</pubDate>
		<dc:creator>Gayle</dc:creator>
				<category><![CDATA[community]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[rubyconf]]></category>

		<guid isPermaLink="false">http://gayleforce.wordpress.com/?p=269</guid>
		<description><![CDATA[This year, I attended my first RubyConf on Nov. 11-13. It was a blast! I&#8217;ve attended lots of local and regional conferences in the last few years, but it&#8217;s been awhile since I&#8217;ve been to a larger conference. I went to a lot of great sessions, &#38; learned lots of things from lots of people. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gayleforce.wordpress.com&amp;blog=2524365&amp;post=269&amp;subd=gayleforce&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This year, I attended my first <a href="http://rubyconf.org/">RubyConf</a> on Nov. 11-13.  It was a blast!  I&#8217;ve attended lots of local and regional conferences in the last few years, but it&#8217;s been awhile since I&#8217;ve been to a larger conference.</p>
<p>I went to a lot of great sessions, &amp; learned lots of things from lots of people.  I won&#8217;t be able to cover everything I learned, as even now it&#8217;s all still soaking into my brain-sponge.  Nor could I possibly name all the great people I met &amp; talked to, &amp; all the great places we went.  So here&#8217;s a few highlights:</p>
<p><span style="text-decoration:underline;"><strong>Top 5 favorite things of a non-technical nature<br />
</strong></span><br />
:hanging out with Marc Peabody =&gt; Marc is my peer, my cousin (b/c he married my cousin), &amp; my friend.  I&#8217;m happy we got to know each other better as a result of heading out to Bourbon St. w/ the group, &amp; staying out way too late &amp; having good conversations that usually don&#8217;t happen among people at a conference until later in the week.</p>
<p>:beignets =&gt; a wonderful, delicious, donut-like pastry piled with tons of powdered sugar that we experienced at a place called Café Du Monde in New Orleans.  Funny thing is I spotted powdered sugar as I stepped onto the escaltor at the hotel on my way to my room that night!  I found powdered sugar still clinging to my jeans on my way home, too! It&#8217;s everywhere!</p>
<p>:making new friends =&gt; including getting to meet <a href="http://twitter.com/sarahmei">Sarah Mei</a> in person, who I&#8217;ve followed on Twitter for awhile now, &amp; going out dancing the last night.</p>
<p>:getting up EARLY to run in the rubyconf 5k =&gt; mornings are hard enough for me, even more so after getting only 3 hours of sleep the night before.  But I did it!  And if that&#8217;s not positive enough, I finished the race in less than 50 minutes, including time to stop or slow down to take pictures! Bonus! I&#8217;m not a runner, so that&#8217;s a pretty good time for me.</p>
<p>:meeting <a href="http://twitter.com/dhh">david heinemeier hansson</a> =&gt; and having a normal-person conversation about Rails, dynamic typing in Ruby, &amp; Rails in mobile browsers.  Well, it was a normal-person conversation until I asked him to sign my conference t-shirt, haha.   He kindly obliged without making me feel ridiculous for it.  And because of that, I decided to go get <a href="http://twitter.com/yukihiro_matz">Matz</a> to sign my shirt too!  How cool is that?</p>
<p>&nbsp;</p>
<p><span style="text-decoration:underline;"><strong>Top 5 things of a more technical nature</strong></span></p>
<p>:Knocking Ruby&#8217;s Date &amp; DateTime Performance Out of the Park with home_run &#8211; Jeremy Evans<br />
=&gt; This talk was about why the Date &amp; DateTime classes in Ruby are slow, &amp; about the ruby library &#8220;<a href="https://github.com/jeremyevans/home_run">home_run</a>&#8221; &amp; how it works to speed that up.  I&#8217;m really hoping to get time this week to try this out at work, run some benchmarks, and hopefully it will help some slower parts of our app.</p>
<p>:Writing games with Ruby &#8211; Mike Moore<br />
=&gt; This talk introduced us to the Gosu library for game programming in Ruby. Now I just have to figure out what kind of shenanigans I can get into with this new knowledge! <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>:RedCar &#8211; It&#8217;s time for a Ruby editor &#8211; Daniel Lucraft<br />
=&gt; This is an editor that installs as a gem. My understanding is that you can run Ruby commands, like you would in IRB, to extend the editor, make plugins or even edit your code if you want to.  I like my RubyMine, but am curious how something like RedCar handles a very large rails project.</p>
<p>:Concurrency: Rubies, plural &#8211; Eleanor McHugh, Elise Huard<br />
=&gt; In talk the speakers discussed things like threads &amp; fibers in Ruby that are used for concurrency. Unfortunately I was sitting way in the back &amp; could not see the slides or code examples. However, I was able to follow along enough to get some ideas about some specific things I&#8217;d like to look into later.</p>
<p>:a cool introduction<br />
=&gt; At one point in the week, I was introduced by a former co-worker <a href="http://twitter.com/jefflembeck">Jeff Lembeck</a> to someone he knows as follows:  &#8220;This is Gayle, she taught me Rails.&#8221;  It was a really a good feeling to be regarded in that way.  Having trouble expressing in words how that makes me feel. Good. Worthwhile. Valued.  Something like that.</p>
<p>&nbsp;</p>
<p><span style="text-decoration:underline;"><strong>Keynotes</strong></span><br />
:I&#8217;m not going to talk about this here =&gt; there&#8217;s been quite a bit of talk|debate|arguing on Twitter after RubyConf this year about the diversity of the various keynote talks.  I&#8217;ve got a chaos of thoughts bouncing around in my head on that.  If I can get my thoughts organized, maybe there will be another blog post coming soon.</p>
<p>&nbsp;</p>
<p><span style="text-decoration:underline;"><strong>One thing I&#8217;d like to take away from all the inspiration I&#8217;ve gotten&#8230;</strong></span><br />
:I really need to write in my blog more regularly!<br />
=&gt; I have a growing list of ideas &amp; things I&#8217;ve learned that I&#8217;d like to share.  I really don&#8217;t like to get up &amp; speak in front of people.  This &#8211; blog &#8211; is a much better way for me to do just that.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gayleforce.wordpress.com/269/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gayleforce.wordpress.com/269/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gayleforce.wordpress.com/269/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gayleforce.wordpress.com/269/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gayleforce.wordpress.com/269/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gayleforce.wordpress.com/269/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gayleforce.wordpress.com/269/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gayleforce.wordpress.com/269/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gayleforce.wordpress.com/269/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gayleforce.wordpress.com/269/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gayleforce.wordpress.com/269/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gayleforce.wordpress.com/269/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gayleforce.wordpress.com/269/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gayleforce.wordpress.com/269/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gayleforce.wordpress.com&amp;blog=2524365&amp;post=269&amp;subd=gayleforce&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gayleforce.wordpress.com/2010/11/16/rubyconf-2010-highlights/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7c5690574dfe0863e1509de65c3f8ee?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">gayle9</media:title>
		</media:content>
	</item>
		<item>
		<title>OSU Ruby on Rails</title>
		<link>http://gayleforce.wordpress.com/2010/04/24/osu-ruby-on-rails/</link>
		<comments>http://gayleforce.wordpress.com/2010/04/24/osu-ruby-on-rails/#comments</comments>
		<pubDate>Sat, 24 Apr 2010 05:16:00 +0000</pubDate>
		<dc:creator>Gayle</dc:creator>
				<category><![CDATA[community]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[user groups]]></category>

		<guid isPermaLink="false">http://gayleforce.wordpress.com/?p=254</guid>
		<description><![CDATA[8 months after stepping so totally out of my comfort zone, speaking at Columbus Ruby Brigade, not remembering most of it because it was such a nervous blur, and swearing off public speaking again for a long time (if ever) &#8211; I surprised myself recently. When the OSU Ruby on Rails group sent out an [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gayleforce.wordpress.com&amp;blog=2524365&amp;post=254&amp;subd=gayleforce&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>8 months after stepping so totally out of my comfort zone, <a href="http://gayleforce.wordpress.com/2009/08/17/speaking-at-the-columbus-ruby-brigade/">speaking at Columbus Ruby Brigade</a>, not remembering most of it because it was such a nervous blur, and swearing off public speaking again for a long time (if ever) &#8211; I surprised myself recently.</p>
<p>When the <a href="http://osurb.heroku.com/">OSU Ruby on Rails group</a> sent out an open invite to the <a href="http://columbusrb.com">Columbus Ruby Brigade</a> (CRB) mailing list, inviting anyone who might like to speak, a little voice in me said maybe I should give it another try. A bit surprised the thought even crossed my mind, I talked myself into it.</p>
<p>For whatever variety of reasons, I don&#8217;t think I ever 100% convinced myself that I was qualified to speak at CRB. With some hard work I could probably get over the fear and insecurity. And yet, I&#8217;ve said before, public speaking has never been a passion of mine so I see little motivation to actually overcome it.</p>
<p>For whatever variety of other reasons, I didn&#8217;t have as much trouble convincing myself I am qualified to speak to a small group of college students. <strong>Small group</strong> being the biggest factor. I suppose knowing that I have more experience than people in my audience was something else to ease my mind too, not necessarily so at CRB.  And for this time anyway, they were OK with me re-using my previous talk on sorting in Ruby, so it helped that it was a talk I&#8217;d given before.</p>
<p>Three things to put me at ease. And put  me at ease it did. I didn&#8217;t incessantly rehearse/memorize what I was going to say this time. As a result I have a feeling my speech was more fluid and conversational. The guys were great and asked good questions, too.</p>
<p>So, I did it. I&#8217;m still not sure if/when I&#8217;ll do it again, but I&#8217;m not running for the hills either.  So we&#8217;ll see where it takes me.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gayleforce.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gayleforce.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gayleforce.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gayleforce.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gayleforce.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gayleforce.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gayleforce.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gayleforce.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gayleforce.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gayleforce.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gayleforce.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gayleforce.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gayleforce.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gayleforce.wordpress.com/254/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gayleforce.wordpress.com&amp;blog=2524365&amp;post=254&amp;subd=gayleforce&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gayleforce.wordpress.com/2010/04/24/osu-ruby-on-rails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7c5690574dfe0863e1509de65c3f8ee?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">gayle9</media:title>
		</media:content>
	</item>
		<item>
		<title>CodeMash 2010</title>
		<link>http://gayleforce.wordpress.com/2010/01/07/codemash-2010/</link>
		<comments>http://gayleforce.wordpress.com/2010/01/07/codemash-2010/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 02:02:43 +0000</pubDate>
		<dc:creator>Gayle</dc:creator>
				<category><![CDATA[community]]></category>
		<category><![CDATA[codemash]]></category>

		<guid isPermaLink="false">http://gayleforce.wordpress.com/?p=232</guid>
		<description><![CDATA[I&#8217;m happy to have the priviledge of attending CodeMash yet again this year! And I&#8217;m glad to have been able to help out and give back this year. I went and picked up the t-shirts this afternoon.  All 700 t-shirts, in 11 boxes. It&#8217;s hard to believe that all of these fit in my car! [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gayleforce.wordpress.com&amp;blog=2524365&amp;post=232&amp;subd=gayleforce&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://gayleforce.files.wordpress.com/2010/01/gaylecodemash2010-2.jpg"><img class="size-thumbnail wp-image-233 alignleft" style="margin-right:10px;" title="GayleCodemash2010-2" src="http://gayleforce.files.wordpress.com/2010/01/gaylecodemash2010-2.jpg?w=114&#038;h=114" alt="" width="114" height="114" /></a><strong>I&#8217;m happy to have</strong></p>
<p><strong>the priviledge of</strong></p>
<p><strong>attending <a href="http://codemash.org">CodeMash</a></strong></p>
<p><strong>yet again this year!</strong></p>
<p>And I&#8217;m glad to have been able to help out and give back this year. I went and picked up the t-shirts this afternoon.  All 700 t-shirts, in 11 boxes.</p>
<p><a href="../files/2010/01/imag0066.jpg"><img class="alignleft" style="margin-left:10px;margin-right:10px;" title="IMAG0066" src="../files/2010/01/imag0066.jpg?w=150" alt="" width="176" height="117" /></a>It&#8217;s hard to believe that all of these fit in my car!  All I can say is, I love my Honda Civic.  It may not be the biggest car, but it&#8217;s designed well I&#8217;d say, and makes efficient use of the space that it does have.</p>
<p>Check it out, this is awesome.  Big thanks to the guys at Ares Sportswear!</p>
<p><a href="../files/2010/01/imag0064.jpg"><img title="IMAG0064" src="../files/2010/01/imag0064.jpg?w=150" alt="" width="184" height="122" /></a> <a href="http://gayleforce.files.wordpress.com/2010/01/imag0065.jpg"><img class="alignnone size-thumbnail wp-image-235" title="IMAG0065" src="http://gayleforce.files.wordpress.com/2010/01/imag0065.jpg?w=183&#038;h=122" alt="" width="183" height="122" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gayleforce.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gayleforce.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gayleforce.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gayleforce.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gayleforce.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gayleforce.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gayleforce.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gayleforce.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gayleforce.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gayleforce.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gayleforce.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gayleforce.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gayleforce.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gayleforce.wordpress.com/232/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gayleforce.wordpress.com&amp;blog=2524365&amp;post=232&amp;subd=gayleforce&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gayleforce.wordpress.com/2010/01/07/codemash-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7c5690574dfe0863e1509de65c3f8ee?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">gayle9</media:title>
		</media:content>

		<media:content url="http://gayleforce.files.wordpress.com/2010/01/gaylecodemash2010-2.jpg?w=150" medium="image">
			<media:title type="html">GayleCodemash2010-2</media:title>
		</media:content>

		<media:content url="http://gayleforce.files.wordpress.com/2010/01/imag0065.jpg?w=150" medium="image">
			<media:title type="html">IMAG0065</media:title>
		</media:content>
	</item>
		<item>
		<title>Model &#8211; View &#8211; Controller (MVC). Where do you put your business logic?</title>
		<link>http://gayleforce.wordpress.com/2009/11/28/model-view-controller-mvc-where-do-you-put-your-business-logic/</link>
		<comments>http://gayleforce.wordpress.com/2009/11/28/model-view-controller-mvc-where-do-you-put-your-business-logic/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 03:39:00 +0000</pubDate>
		<dc:creator>Gayle</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://gayleforce.wordpress.com/2009/11/28/model-view-controller-mvc-where-do-you-put-your-business-logic/</guid>
		<description><![CDATA[When I first started doing Rails development over a year ago, I often found other developers suggesting that I refactor my code to move the business logic out of the controller, and into the model.&#160; After this happened several times, I wondered why this seemed so obvious to them, and why that wasn&#8217;t the way [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gayleforce.wordpress.com&amp;blog=2524365&amp;post=227&amp;subd=gayleforce&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>When I first started doing Rails development over a year ago, I often found other developers suggesting that I refactor my code to move the business logic out of the controller, and into the model.&#160; After this happened several times, I wondered why this seemed so obvious to them, and why that wasn&#8217;t the way I was naturally doing things.&#160; It wasn&#8217;t just me and another developer approaching problems in different ways.&#160; It was multiple people approaching problems in a similar way &#8212; and then me.&#160; I wondered why there was this general difference in thought processes and solutions? </p>
<p>I began to passively wonder if my background in Java was contributing in some way to my way of thinking here.&#160; Since then, I have also heard other Rails developers who are working with former Java developers say things like </p>
<blockquote><p><font size="3"><em><font color="#808080">&quot;these are good developers but they keep putting business logic in their controllers!&quot;</font></em>         <br /></font></p>
</blockquote>
<p>That made me think more seriously about what a person’s Java background might have to do with this. </p>
<p><font size="4">VIEW</font>&#160; </p>
<p>In earlier days of PHP, classic ASP, and early JSP, it was OK to put business logic in the view.&#160; Back in the day, it was common to find &lt;% %&gt; tags in JSPs with all kinds of logic in the Java code.&#160; I think we all now agree that business logic does not belong here.&#160; </p>
<blockquote><p><em><font color="#808080" size="3">let the view deal only with DISPLAYING what it has.</font></em></p>
</blockquote>
<p><font size="4">MODEL</font>&#160;</p>
<p>It seems like I&#8217;ve spent a lot of time seeing a model as simply a data-holder class.&#160; Something like a Struct in C.&#160; Something like a Bean in Java, with private attributes, and with get/set methods for each attribute.&#160; It&#8217;s just a data transfer object, nothing more.&#160; But why?&#160; Perhaps it comes from my EJB days.&#160; That might explain why so many other former Java developers do the same thing.&#160; To us,</p>
<blockquote><p><font size="3"><font color="#808080"><em><strike>the model carries data but is dumb.</strike></em></font>&#160;</font></p>
</blockquote>
<p><font size="4">CONTROLLER</font>&#160;</p>
<p>I always thought of the controller as being the one smacking around the model objects to get them to do what the controller wants – and </p>
<blockquote><p><font color="#808080" size="3"><em><strike>what the controller wants the model to do, is the business logic.</strike></em></font>&#160;</p>
</blockquote>
<p><font size="4">A RAILS WAY OF THINKING</font>&#160;</p>
<blockquote><p><font size="3"><em>Give the model more credit.</em></font></p>
</blockquote>
<p>The model isn&#8217;t so dumb after all.&#160; It doesn&#8217;t just hold state.&#160; It contains the business logic behind the <em>behavior</em> of that model.&#160; A model knows better than any other code how itself behaves, what it does or does not do, and how it interacts with the outside world.&#160; I can try to predict how my brother will behave in a given situation; I can take a guess based on what I know about him.&#160; But only he knows for sure, and the only way I can know for sure is to interact directly with him and find out. </p>
<blockquote><p><em><font size="3">Let the controller control the flow of information.</font></em></p>
</blockquote>
<p>This leaves the controller with only the responsibility of collecting information and routing it to the right place.&#160; It&#8217;s the electronic curator that finds and obtains art, and hands it off to the decorators to display.&#160; He decides what pieces go in which rooms.&#160; However, the decorators (analogous to the view) are the ones that decide how to arrange the art within that room for all to see. </p>
<p>I still need to be reminded sometimes to not put so much logic in my controller.&#160; It is starting to come more naturally to me, but old habits die hard I suppose.&#160; This way of thinking makes more sense to me now that I understand where my past way of thinking comes from.&#160; I like this new way because it really makes sense now, and also because</p>
<blockquote><p><em><font size="3">I find that code re-use comes much easier when needed business logic is already available in the model.</font></em></p>
</blockquote>
<p><font size="1">.</font></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gayleforce.wordpress.com/227/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gayleforce.wordpress.com/227/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gayleforce.wordpress.com/227/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gayleforce.wordpress.com/227/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gayleforce.wordpress.com/227/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gayleforce.wordpress.com/227/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gayleforce.wordpress.com/227/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gayleforce.wordpress.com/227/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gayleforce.wordpress.com/227/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gayleforce.wordpress.com/227/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gayleforce.wordpress.com/227/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gayleforce.wordpress.com/227/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gayleforce.wordpress.com/227/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gayleforce.wordpress.com/227/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gayleforce.wordpress.com&amp;blog=2524365&amp;post=227&amp;subd=gayleforce&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gayleforce.wordpress.com/2009/11/28/model-view-controller-mvc-where-do-you-put-your-business-logic/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7c5690574dfe0863e1509de65c3f8ee?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">gayle9</media:title>
		</media:content>
	</item>
		<item>
		<title>Ruby Sorting [2] &#8211; Common Mistakes When Sorting With Blocks</title>
		<link>http://gayleforce.wordpress.com/2009/09/30/ruby-sorting-common-mistakes-when-sorting-with-blocks/</link>
		<comments>http://gayleforce.wordpress.com/2009/09/30/ruby-sorting-common-mistakes-when-sorting-with-blocks/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 14:00:54 +0000</pubDate>
		<dc:creator>Gayle</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://gayleforce.wordpress.com/?p=175</guid>
		<description><![CDATA[On Sorting In Ruby 0 &#8211; Sorting A Hash 1 &#8211; When and Why to Use sort_by() 2 &#8211; Common Mistakes When Sorting With Blocks This sorting technique is one I&#8217;ve had a chance to use at work more lately. But what keeps tripping me up is when you use the block to sorting primarily [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gayleforce.wordpress.com&amp;blog=2524365&amp;post=175&amp;subd=gayleforce&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://gayleforce.wordpress.com/2009/09/24/on-sorting-in-ruby/">On Sorting In Ruby</a></li>
<li><a href="http://gayleforce.wordpress.com/2009/09/25/ruby-sorting-0-sorting-a-hash/">0 &#8211; Sorting A Hash</a></li>
<li><a href="http://gayleforce.wordpress.com/2009/09/28/ruby-sorting-1-when-and-why-to-use-sort_by/">1 &#8211; When and Why to Use sort_by()</a></li>
<li><strong>2 &#8211; Common Mistakes When Sorting With Blocks</strong></li>
</ul>
<hr />
This sorting technique is one I&#8217;ve had a chance to use at work more lately. But what keeps tripping me up is when you use the block to sorting primarily by one field, with a secondary sort on another field. Let&#8217;s say Fish has species and type, and we have these fish in our database:</p>
<table style="margin-left:30px;margin-bottom:2px;border:1px solid;" border="1" cellspacing="0">
<tbody>
<tr>
<th>species</th>
<th>type</th>
</tr>
<tr>
<td>Platy</td>
<td>Sunset</td>
</tr>
<tr>
<td>Platy</td>
<td>Calico</td>
</tr>
<tr>
<td>Molly</td>
<td>Dalmation</td>
</tr>
<tr>
<td>Platy</td>
<td>Rainbow</td>
</tr>
<tr>
<td>Guppy</td>
<td>Fancy Tail</td>
</tr>
<tr>
<td>Platy</td>
<td>Mickey Mouse</td>
</tr>
</tbody>
</table>
<p>When I sort first by species, then by type, I keep accidentally doing the following, which gives the wrong sorted results:</p>
<pre style="padding-left:30px;">&gt;&gt; fishes = Fish.find(:all) 

&gt;&gt; fishes.sort do |a,b|
?&gt;   a.species &lt;=&gt; b.species
&gt;&gt;   a.type &lt;=&gt; b.type
&gt;&gt; end</pre>
<p>Doing that, I end up with a list like:</p>
<table style="margin-left:30px;margin-bottom:2px;border:1px solid;" border="1" cellspacing="0">
<tbody>
<tr>
<th>species</th>
<th>type</th>
</tr>
<tr>
<td>Platy</td>
<td>Calico</td>
</tr>
<tr>
<td>Molly</td>
<td>Dalmation</td>
</tr>
<tr>
<td>Guppy</td>
<td>Fancy Tail</td>
</tr>
<tr>
<td>Platy</td>
<td>Mickey Mouse</td>
</tr>
<tr>
<td>Platy</td>
<td>Rainbow</td>
</tr>
<tr>
<td>Platy</td>
<td>Sunset</td>
</tr>
</tbody>
</table>
<p>It ignores my first sort on species, and ends up sorting only by type!</p>
<p>Why? What&#8217;s wrong with that?  Well, the &lt;=&gt; comparator function (also known informally as the &#8220;spaceship operator&#8221;) returns either -1, 0 or 1, depending on whether the first value is less than, equal to, or greater than the other.  The block will return the last statement evaluated.  So what happens is we compare species, then we then compare type, and it is always the result of the type comparison, -1, 0 or 1, is returned from the block.  The problem is, if species <em>is not equal</em>, then we want to stop there and return -1 or 1 accordingly and not evaluate type at all.</p>
<p>A simple way to do this is to add &#8220;if result==0&#8243; to the end of the type comparison, and only evaluate type if species was equal.</p>
<pre style="padding-left:30px;">&gt;&gt; fishes = Fish.find(:all) 

&gt;&gt; fishes.sort do |a,b|
?&gt;   <strong><span style="color:#0000ff;">result = </span></strong>a.species &lt;=&gt; b.species
&gt;&gt;   <strong><span style="color:#0000ff;">result = </span></strong>a.type &lt;=&gt; b.type <span style="color:#0000ff;"><strong>if result == 0 </strong></span>
&gt;&gt;   <span style="color:#0000ff;"><strong>result</strong></span>
&gt;&gt; end</pre>
<p>This way, it will perform the first search by species, then only continue to perform the secondary search if the result of the first search was zero, that is they were equal values.  And so I end up with a list like:</p>
<table style="margin-left:30px;margin-bottom:2px;border:1px solid;" border="1" cellspacing="0">
<tbody>
<tr>
<th>species</th>
<th>type</th>
</tr>
<tr>
<td>Guppy</td>
<td>Fancy Tail</td>
</tr>
<tr>
<td>Molly</td>
<td>Dalmation</td>
</tr>
<tr>
<td>Platy</td>
<td>Calico</td>
</tr>
<tr>
<td>Platy</td>
<td>Mickey Mouse</td>
</tr>
<tr>
<td>Platy</td>
<td>Rainbow</td>
</tr>
<tr>
<td>Platy</td>
<td>Sunset</td>
</tr>
</tbody>
</table>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gayleforce.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gayleforce.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gayleforce.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gayleforce.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gayleforce.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gayleforce.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gayleforce.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gayleforce.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gayleforce.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gayleforce.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gayleforce.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gayleforce.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gayleforce.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gayleforce.wordpress.com/175/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gayleforce.wordpress.com&amp;blog=2524365&amp;post=175&amp;subd=gayleforce&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gayleforce.wordpress.com/2009/09/30/ruby-sorting-common-mistakes-when-sorting-with-blocks/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7c5690574dfe0863e1509de65c3f8ee?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">gayle9</media:title>
		</media:content>
	</item>
		<item>
		<title>Ruby Sorting [1] &#8211; When and Why to use sort_by()</title>
		<link>http://gayleforce.wordpress.com/2009/09/28/ruby-sorting-1-when-and-why-to-use-sort_by/</link>
		<comments>http://gayleforce.wordpress.com/2009/09/28/ruby-sorting-1-when-and-why-to-use-sort_by/#comments</comments>
		<pubDate>Mon, 28 Sep 2009 14:00:26 +0000</pubDate>
		<dc:creator>Gayle</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://gayleforce.wordpress.com/?p=171</guid>
		<description><![CDATA[On Sorting In Ruby 0 &#8211; Sorting A Hash 1 &#8211; When and Why to Use sort_by() 2 &#8211; Common Mistakes When Sorting With Blocks When I read the rdoc on sort_by, I understood the general idea that sort_by is more efficient in some situations. The specifics on why were still over my head, so [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gayleforce.wordpress.com&amp;blog=2524365&amp;post=171&amp;subd=gayleforce&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://gayleforce.wordpress.com/2009/09/24/on-sorting-in-ruby/">On Sorting In Ruby</a></li>
<li><a href="http://gayleforce.wordpress.com/2009/09/25/ruby-sorting-0-sorting-a-hash/">0 &#8211; Sorting A Hash</a></li>
<li><strong>1 &#8211; When and Why to Use sort_by()</strong></li>
<li><a href="http://gayleforce.wordpress.com/2009/09/30/ruby-sorting-common-mistakes-when-sorting-with-blocks/">2 &#8211; Common Mistakes When Sorting With Blocks</a></li>
</ul>
<hr />When I read <a href="http://www.ruby-doc.org/core/classes/Enumerable.html#M003120">the </a><a href="http://www.ruby-doc.org/core/classes/Enumerable.html#M003120">rdoc on sort_by</a>, I understood the general idea that sort_by is more efficient in some situations.  The specifics on why were still over my head, so I wasn&#8217;t planning to get into specifics during my <a href="http://gayleforce.wordpress.com/2009/09/24/more-on-sorting-in-ruby/">recent talk on sorting</a>. Yet just a few hours before my talk <a href="http://onestepback.org/">Jim Weirich</a> was still trying to cajole me into using big words like &#8220;Schwartzian Transformation&#8221; in my talk because, he teased, &#8220;using big words makes you sound important <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> &#8220;</p>
<p>The good thing is that this gave me a chance to talk it out with him, and actually understand it for real.  It was too late for me to add that into my talk a few hours before I was to give it, but I do want to talk about it here now that I understand.</p>
<p><strong>sort_by() is good if the values you&#8217;re sorting on require some kind of complex calculation or operation to get their value. </strong></p>
<p>Let&#8217;s say you have an aquarium, and you save the dates of when each fish is born in a database.  Later, you want to sort the list of fish by age.  But you must calculate the age based on the birth date.  So the Fish class has an age method:</p>
<pre style="padding-left:30px;">class Fish
...
  def age
    (Date.today - birthday).to_i
  end
end</pre>
<p>So when you sort like this:</p>
<pre style="padding-left:30px;">&gt;&gt; fishes = Fish.find(:all)

&gt;&gt; fishes.sort do |a, b|
&gt;&gt;   a.age &lt;=&gt; b.age
&gt;&gt; end</pre>
<p>It will calculate age over and over as it sorts.  And if you&#8217;ve studied sorting algorithms, you know that the items in the list are compared with other list items repeatedly until it can be determined where the items go in the ordered list.  So using this way of sorting, the age will be calculated a lot!</p>
<p>When you use sort_by() instead:</p>
<pre style="padding-left:30px;">&gt;&gt; fishes.sort_by do |a|
&gt;&gt;   a.age
&gt;&gt; end</pre>
<p>It does 3 things:</p>
<p>1. It will first go through each item in fishes, calculate age, and put those values into a temporary array keyed by the value.  Let&#8217;s say we have 3 fish, one 300 days old, one 365 days old, and one 225 days old.  The temporary array looks like this</p>
<pre style="padding-left:30px;">[[300, #&lt;Fish:A&gt;][365, #&lt;Fish:B&gt;][225, #&lt;Fish:C&gt;]</pre>
<p>2. The complex calculation is now done, once for each fish. It sorts this temporary array by the first item in each sub array.  Meaning, it sorts by the numbers 300, 365 and 225, without recalculating them.</p>
<pre style="padding-left:30px;">[[225, #&lt;Fish:C&gt;],[300, #&lt;Fish:A&gt;][365, #&lt;Fish:B&gt;]]</pre>
<p>3. Lastly, it goes back through the array, grabbing the 2nd array elements (the actual Fish objects) and putting them in order into a flattened 1-dimensional array</p>
<pre style="padding-left:30px;">[#&lt;Fish:C&gt;, #&lt;Fish:A&gt;, #&lt;Fish:B&gt;]</pre>
<p>So, that is how you end up with a sorted array without recalculating values more than you need to. And that is why sort_by() can be more efficient.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gayleforce.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gayleforce.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gayleforce.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gayleforce.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gayleforce.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gayleforce.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gayleforce.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gayleforce.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gayleforce.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gayleforce.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gayleforce.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gayleforce.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gayleforce.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gayleforce.wordpress.com/171/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gayleforce.wordpress.com&amp;blog=2524365&amp;post=171&amp;subd=gayleforce&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gayleforce.wordpress.com/2009/09/28/ruby-sorting-1-when-and-why-to-use-sort_by/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e7c5690574dfe0863e1509de65c3f8ee?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">gayle9</media:title>
		</media:content>
	</item>
	</channel>
</rss>
