Be the Jim Weirich you want to see in the world

Today marks 1 year since the unexpected death of my friend Jim Weirich. A year ago, this was really hard to process. I tried writing, though these things really just take time. More recently, I enjoy just recalling some of the many great memories of him.

It’s not surprising that his name still comes up a lot at every tech conference I attend. I was sharing some memories with various people at CodeMash this past year, and something interesting occurred to me. I was thinking back to when I first worked with Jim. I was an experienced software developer, but brand new to the Ruby programming language and brand new to the company. Therefore, there was a lot I did not yet know. I remembered feeling so flattered (and also confused) when, probably more then once, Jim asked me to help him figure something out that he was working on. In addition to flattered, I felt included. I felt valued. It was cool. It reminded me that I need to remember to include newer people that I work with. And I have done this before.

Sometimes I like to include newer people on pull requests, in order to review my code. They may not feel like they have any improvements to suggest. Or maybe they will notice something I missed, you never know. And another set of eyes on code rarely hurts. If nothing else, they’ll get exposure to the code changes. They’ll learn about parts of the application that they may not be familiar with. Knowledge sharing is good. Also, they can observe the kinds of suggestions that more experienced developers make on the code; learning by example that way. There’s lots of overall benefits of including newer folks on code reviews.

There are times I have asked someone new to the software application, or even someone new to software development, to help me figure something out. Sometimes, you just need to talk something out. Sometimes just the act of explaining the problem will help you figure it out. And sometimes in the process, the other person has a suggestion to try that you didn’t think of. But remember that sharing the problem is also a form of knowledge sharing. The more people on a team familiar with different parts of the code is good for everyone.

I think Jim knew these things. And I think it may be, at least in part, because of him that I do these things. I should try to break out of my shell and do some of these things more often, and be the Jim Weirich I want to see on my team – in the software development community – and in the world.

And now, to promote something I think is a good idea.



The Jim Weirich Tech-Interview Experience

From Twitter back in June 2014



It’s taken me 5 months to get around to writing this up. I’ve been too depressed to think about it, and that made it way too easy to procrastinate.  Then a couple days ago I realized that recounting this is actually a happy thing – the chance to get to share good memories.

Last Friday night, I went to the movies with some friends of mine. We happened to go the same movie where Stir Trek used to be held a few years ago. We walked by a bench. And my mind was taken back to the conference, and that same bench, and a memory of Jim Weirich sitting there with his laptop. I said hello to him as I walked by, and he asked me to stop because he wanted to show me what he was working on. I don’t recall exactly what he showed me. But I do remember just how very excited he was about what he was telling me, and he had such enthusiasm as he talked. I remember feeling like whatever it was, it was way over my head. Even so, I don’t remember “feeling stupid” about that – because the way Jim talked, you never felt that way around him.

That’s the kind of person Jim was.

As I walked by that bench last Friday night at the movie theater with my friends, I cried. One of my friends knew about Jim. I haven’t known the other friend as long, so he didn’t know. After the movie, I found myself telling my other friend who Jim was. I remembered how many good memories I had. And that even though walking by the bench earlier made me sad – talking about Jim later on made me happy. And that’s how it should be.

So I was reminded I still had on my to-do list to recount my tech interview with Jim. And maybe it didn’t have to be so sad.

Back in 2008 I had an over-the-phone technical interview scheduled to be conducted by Jim Weirich. At the time I was doing Java development full-time and had dabbled in Ruby on my own. When I called, Chris Nelson was on the phone as well, though Jim asked most of the questions at the time. I don’t remember a lot of the specific questions now that years have passed. I remember being asked some basic questions about my background in programming, how long I had been programming, what languages, etc. I remember being asked “How would you design a programmable thermostat?” That’s a good question, I think, because it doesn’t involve language-specific trivia, but it does demonstrate a person’s thought processes, design processes, and how well they can communicate their ideas and thoughts. I remember being asked what do I like about Ruby and Rails, and why.

There were things I said I liked that, I found out later, were things he once liked but had come to not like about Rails! But it wasn’t important to him that I agree with him. It was important to able to describe why I thought that, and that I had sound reasons. Likely the reasons I had were things he thought at one point – and with experience had come to change his mind – and it just demonstrated I wasn’t there yet, which was OK. In general, It was really cool how comfortable he made me feel. It would have been easy to be nervous being tech interviewed by someone so well-known and well-respected in the Ruby community. But I just wasn’t. I can’t even explain exactly why that was, other than that was just the air around Jim. You couldn’t help but be comfortable in his presence.

So, that’s my experience being tech-interviewed by Jim Weirich. And, for what it’s worth, I got the job! 🙂 I enjoyed working with Jim for those next several months; I’m fortunate that I got that chance.

Jim Weirich. Teacher. Mentor. Friend.

The other day, I tweeted

2:04 PM – 20 Feb 2014 – @gayleforce: My whole subset of the world is mourning w/me over @jimweirich today. What a wonderful person. Teacher. Mentor. Friend. Miss you already Jim.

I became acutely aware of the suddenness of Jim’s death when I realized:

5:43 PM – 20 Feb 2014 – @gayleforce: The last tweet from @jimweirich was ~24 hrs ago. That’s surreal. What a difference a day makes 😥
(Note: Jim’s last tweet was 5:33 PM – 19 Feb 2014)

Later I tweeted a couple of things I remembered about Jim.

I retweeted myself from 2009, a photo I had taken with Jim.

“7 Aug 2009 @gayleforce: – I got my #picwithjim Do you have yours? #erubycon”


And I tweeted a video I had taken of Jim’s laptop at CodeMash, because what he had done was so cool!

“9:34 PM – 20 Feb 2014 – Enjoyed @jimwierich showing me at codemash what he’d done with his macbook #MemoriesOfJim

I was obsessively reading Twitter and Facebook that night. Fervently “favoriting” people’s tweets that I liked, and retweeting a few.

I felt inspired to MAKE something to try to express my feelings. Came up with something very simple, but I still like the creative in the simplicity.

10:13 PM – 20 Feb 2014 – Enjoying #MemoriesOfJim yet having a hard time w/what to do w/my feelings. Result: creative side I’ve not seen awhile


Last night, I happened by the location in Columbus where my “#picwithjim” was taken. That place closed a few months ago. And the emptiness of that establishment hit me in a different, much harder way, as I felt the emptiness of a world without Jim, too.

Later last night, my friend and co-worker Dean Stautberg emailed me something he had been thinking about posting, but it was too long for twitter. So he hadn’t figured out what to do with that yet. I read what he wrote, and realized I felt exactly the same way. And I realized why I was having so much trouble knowing what to do with my feelings – because I hadn’t ACTUALLY expressed them. I tweeted observations. I tweeted memories. I “re-tweeted” others. On facebook, I “shared” what my husband had written onto my own timeline. Changed my cover photo to something I say is a “weeping angel.” There are multiple reasons for that, which may not all be that obvious. But even after all of those things, I had not really expressed myself.

I realized the first thing I said was on facebook

1:30 PM – 20 Feb 2014 – Miss you already, Jim. There are not words.

I had no words. But, now I’m going to try to use my words. I wish I could just write what Dean wrote. But that’s called plagairism. Here, finally, are MY words.

The software development community lost Jim Weirich last week. His death was sudden, and unexpected. I’ve experienced relatives who died from old age, or from long-running illnesses over the years, and was very sad.  But this is a whole different kind of grief. Not better or worse, just very different to deal with. Harder to process.

I’ve only experienced this kind of grief one other time. I was in Junior High. A boy 2 years younger than me. Our parents, and therefore we, had been friends since before either of us were born. A freak accident took his life a couple hours after we dropped him off at his house after church youth group that evening. The following days were spent listening to other kids share memories of him. And other kids pretending they were good friends with him, when they probably were not. And rumors, nasty rumors, untrue rumors emerged about the circumstances of his death. Junior High kids are not very mature.

My dear husband, James, came into our room the other day as I was getting ready for work and said “I need to tell you something before you read it on Twitter. Jim Weirich died last night.” I cried. After I’d had a few moments to process this a bit, I was worried that I was facing a day full of people trying to prove they all knew Jim, and justifying their heart-brokenness over the news.

It took me several hours before I could bring myself to read Twitter. I wasn’t sure I could handle what I would find. Once I did, I realized Twitter was full of people singing Jim’s praises. There were people who barely knew him saying very profound and true things about him. They did know him, more than they realized. There were people who know him way better than I did pouring out their emotions, too. All the things on Twitter were great. There were no egos. No “I knew him better than you did” stuff. It felt like everyone in the whole world was just grieving. And it was good.

People were sharing their photos and memories. They were talking about the first time they met Jim. People were expressing regrets. People were sharing thoughts on how we could all honor Jim going forward. People are posting tribute videos that they’ve made. And I began to think my words wouldn’t measure up.

After all, I don’t remember the first time I met Jim. I don’t remember the first words we said to each other. I’ve seen him speak several times, though I don’t think I could specifically name off any. And I’m still worried that any words I say are going to come off as justifying why I am “allowed” to feel so bad about his death, and why it has hit me so much harder than I ever would have imagined. But here’s what I do know.

Jim Weirich and Chris Nelson tech interviewed me for my first Ruby programming job. If I got this job, I would get to work with Jim directly!! OMG!! I should have been so nervous! But the entire time I talked to Jim, I just felt very comfortable. We talked about some specifics of Ruby. And we talked about ideas and thought processes, like how might I design a programmable thermostat? And I got the job. And I worked with Jim for maybe I couple years, I don’t even know the time frame for sure.

A few months later, my friend Dean came to work with us, too. Like Dean and I, Jim had a background in Java programming. And from this common background, he was a big part of our learning Ruby. Jim wanted to teach everyone Ruby! Our time spent working with him reinforced and drastically improved our approach to Test Driven Development, and making that an integral part of our development style. “Jim basically shaped our Ruby careers”, says Dean. I couldn’t have said that better myself.


I don’t remember my first interaction with Jim. But I do remember my last. At Codemash 2014, Neo had a pairing station set up at their booth. You could come and pair program with Jim. Having pair programmed with Jim in the past at work, I didn’t necessarily feel a need to participate. I didn’t wnat to take up his time, when I could allow other people who hadn’t had that experience have that experience. But at some point, when nobody else was there pairing with him when I walked by, he invited me to come over and pair with him. And I said “sure!” And that was my last real interaction with him. I learned some things from him about rspec-given that day. I also was able to see that I had so much more confidence in myself that day than I had when compared to my past self pairing with him years ago, when I questioned something I thought he was making more complicated than it needed to be. And he accepted my feedback with grace and humility, as always. And we discussed it like adults and ultimately came up with a compromise that I thought ended up a more readable, and less mathematically complicated code readable by people that aren’t so mathematically inclined. 🙂 How can someone be SO smart, AND so kind?

I’m glad that I actually paired with Jim that day, and can’t say “I wish I had”. I’m glad that I have photos of me with Jim, and can’t say “I wish I had that.” I’m glad that I can’t say “I wish I would have told Jim ____.” I have no regrets.


I changed my facebook cover photo to this “weeping angel” because the show sci-fi show “Dr. Who” had an episode about concrete statues called “weeping angels,” and Jim and I shared a like for that show. The sadness on the face of the angel in that photo also represents how I feel. The “weeping” represents the tears I shed the past several days. And the Angel is because I know Jim was a Christian, too, and is flying with the angels today. One of my favorite tweets, from someone I have never met:

8:58 AM – 21 Feb 2014 – ‏@pkananen: everyone rightfully says they want to be like @jimweirich. Jim would’ve said he was just trying to be like Jesus.

Another favorite tweet from another dear friend of mine summarizes how we can honor Jim Weirich:

7:18 AM – 20 Feb 2014 @aJimHolmes
Want to honor @jimweirich ?

0) Go learn something new
1) Share it
2) Make someone laugh
3) Be a kind person.

Jim was an inspiration to so many. He was loved by all. Even though no future Ruby developers will get the chance to learn from Jim the way I am so fortunate to have gotten to experience, I’m so happy to know that his legacy will live on forever with how much he contributed to software development. He is missed.

This has hit me so much harder than I expected. That still confuses me. There were so many people who knew him so much better than I did. I am within a couple hour drive of his funeral, but my heart is so raw right now that I don’t think I can bear it. And it’s not productive to go out of some self-imposed feeling of obligation. Instead, I’m going to give myself permission today to grieve in my own way, and in my own time. I’m going to spend time reading and learning more about Ruby today. And I’m going to reconnect with some former co-workers that I haven’t seen in awhile tonight. And I’m going to know that this blog post is enough, and that somehow, some way, he feels and knows the words I have written.

Rest in everlasting peace, Jim!

Testing a rails before_filter method

I finally figured out a kind of cool way in Ruby using Rspec to test a controller’s before_filter method a few days ago.

While trying to figure this out, I came across all kinds of posts saying why you shouldn’t test the before_filter because it means looking too closely at the implementation by doing that.  (I disagree; I think this, like any other method, can and should be unit tested.)

I came across other posts that told how to skip the before_filter altogether and test everything else. (Valuable in some cases I’m sure, but not what I was trying to do.)

And I came across many other posts that had examples that did not work for me (perhaps different versions of rspec/ruby/rails or any number of things).

I came across some posts said to test the functionality of the before_filter method in one of the subclasses of ApplicationController.  I could do that, but then I have to pick a subclass at random.  And since the method I’m trying to test is defined ON ApplicationController, I feel like it is more intuitive to test that IN application_controller_spec.rb, not some other, random test.  And if the randomly chosen controller happened to ever get removed from the app in the future, the spec for that would also get removed, and thus inadvertently removing any coverage of the before_filter method in app controller.

I found out that Rspec has a cool way of defining anonymous controllers.  And this worked out well for testing ApplicationController.  So I wanted to share how I used anonymous controllers, as well as some things I tried along the way that did NOT work (almost, but not quite).

(These examples use Rails 3.1.1 and Rspec 2.12.0)

The application code:


# The before_filter method "check_permission" is defined here.  It is
# not specified as a before_filter in ApplicationController because
# some controllers in the app will want to use it, and some will not.
1  class ApplicationController
2    def check_permission
3      @current_user = session[:user]
5      #Check the permissions of the logged in user in the session
6      if @current_user does not have permission #pseudocode
7        render( :file => File.join(Rails.root, 'public/403.html'),
8                :status => 403,
9                :layout => false )
10     #else don’t do anything. The app will continue as usual
11   end
12 end


# There are rules around who can view members.
# Different logged in users can view different members.
1 class MembersController < ApplicationController
2   before_filter :check_permission
4   def show
5     member_id = params[:id]
6     # get the details for the given member id
7     # etc....
8   end
9 end

The test code:

I came across some suggestions that said to just write a test that calls the method directly.  But in this case, the before_filter method uses the HTTP session.  If you call a method outside of the context of an  HTTP get/post, you don’t have access to HTTP things like session, request or response.  So calling the method directly did not work:


 1  require 'spec_helper'
 3  describe ApplicationController do
 4    before do
 5      # Put a user in the session
 6      # do any other rspec mocking/stubbing necessary
 7    end
 9    it 'should allow viewing of users if the user has permission' do
 11     # then test stuff here ...
 12   end
 13 end

Running this gave the following error on the line 11.

 ActionController::Metal#session delegated to @_request.session, but @_request is nil: 
 #<ApplicationController:0x007fbac2aed3f8 @_routes=nil, @_action_has_layout=true, 
 @_view_context_class=nil, @_headers={"Content-Type"=>"text/html"}, @_status=200, 
 @_request=nil, @_response=nil>

I tried defining my own anonymous controller like this:


 1  require 'spec_helper'
 3  class AnonymousController < ApplicationController
 4    before_filter :check_permission
 5    def show
 6      render :text => 'Hello'
 7    end
 8  end
 10 describe AnonymousController do
 11   before do
 12     # Put a user in the session
 13     # Any other rspec mocking/stubbing that needs done
 14   end
 16   it 'should allow viewing of users if the user has permission' do
 17     get :show , :id => 123456
 18     response.code.should eq "200"
 19     response.body.should include "Hello"
 20   end
 21 end

And got this error on line 17:

 No route matches {:id=>"111111", :controller=>"anonymous", :action=>"show"}

But there’s a more Rspec-y way to do anonymous controllers.  And it magically sets up the routes for you to avoid the error above.


 1  require 'spec_helper'
 3  describe ApplicationController do
 5    before do
 6      # put a user in the session
 7      # do any other rspec mocking/stubbing necessary
 8    end
 10   # This is the anonymous controller:
 11   controller do
 12     before_filter :check_permission
 14     def show
 15       render :text => "Hello"
 16     end
 17   end
 19   it 'should allow viewing of users if the user has permission' do
 20     get :show , :id => 123456
 21     response.code.should eq "200"
 22     response.body.should include "Hello"
 23   end
 25   it 'should not allow viewing of users if the user does not have permission' do
 26     get :show , :id => 111111
 27     response.code.should eq "403"
 28   end
 29 end
Posted in code. Tags: , . 2 Comments »

On self-confidence, and self-criticism

I came across an article this week, titled “The Trouble with Bright Girls” by Heidi Grant Halvorson, Ph.D

This may be the first thing I’ve ever read on self-confidence and self-criticism that makes sense to me.

I know I’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 “stop being that way” because I don’t know what else to do,) has failed miserably.  That does not work.

You should read the whole article.  But if you don’t want to read the whole article, I’ve included some highlights.

“[psychologist Carol Dweck (author of “Mindset“)] 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’ IQ, the more 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.

So, what does that mean?  Boys are more persistent? It seems like that might come from having more confidence. Isn’t that a “catch-22?”

“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.

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.

“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 “goodness.” When we do well in school, we are told that we are “so smart,” “so clever, ” or “such a good student.” This kind of praise implies that traits like smartness, cleverness and goodness are qualities you either have or you don’t.

“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., “If you would just pay attention you could learn this,” “If you would just try a little harder you could get it right.”) The net result: When learning something new is truly difficult, girls take it as sign that they aren’t “good” and “smart,” and boys take it as a sign to pay attention and try harder.

Huh.  That’s interesting.  I can relate to receiving that kind of girl-praise.

“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 — women who will prematurely conclude that they don’t have what it takes to succeed in a particular arena, and give up way too soon.

Woah.  That hits home.  I have concluded that I “don’t have what it takes” 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.

I think it happens the very most when I’m playing sports.  I started playing hockey circa 1999.  Then I gave up and quit sometime in 2006.  I like to tell people it’s because I got burnt out being the team captain.  That’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’t fun anymore.  But part of me missed it.  I started playing again sometime in 2009.

Lately I have started seeing signs of the downturn of that cycle again.  I’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 “I can’t seem to do X” and “I don’t understand Y.”  And just in the past few weeks I think I’ve started manufacturing other reasons that maybe I don’t belong, like that I can’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’m pretty sure that won’t be happening again.  So that’s not a real reason.

“So if you were a Bright Girl, it’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.

We start a new session of hockey in a couple weeks.  I’ve only just started noticing the downswing; It’s not beyond repair yet. Maybe I can leverage this to give me a whole new, and much better, perspective on my self-perceived “abilities.”

So there were really 2 main things that all of this has helped me realize.

1. As I’m reading and reflecting on all of this, I have come to realize how much “I just can’t do it” has become such a regular part of my inner vocabulary.  A statement of defeat; as if that’s it, that is the end, it’s a fact and there’s nothing else to be done about it.  Now that I am aware that I’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 “stop being that way.”

2. The article doesn’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’ve never realized that I’ve always (even if subconsciously) thought that those things are innate and unchangeable.  So, I’ve  never been able to separate comments/opinions on those things that are not innate and unchangeable, from things that are innately me.  If everything really was innately me, then of course it’s personal.  So, come to find out, it’s not.

And again I quote this:

“So if you were a Bright Girl, it’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.

I hope this means I can do that.

The only thing I’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 right way to give girls praise?  At least, what is a better way?

CodeMash 2011

Following CodeMash ’11, I’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 & much-needed nap.

Weird but cool: CodeMash ’08 inspired me to start a tech blog. My first post was on 1/19/08.  My blog’s busiest day (162 hits in a single day) just happened this past week on 1/12/11.

Apparently I did not write any follow-ups to CodeMash ’09 or ’10.  I don’t know why not, but that’s too bad.  Maybe the lesson learned is: blog before I go home so I don’t forget.  So here I am in the hotel room at the Kalahari, reflecting on CodeMashes past.

Being pushed a little outside of one’s comfort zone is a good thing, as long as it’s a push and not a shove.

CodeMash ’08 pushed me beyond my comfort zone with the start of this blog.

CodeMash ’09 I realized how in 2008 I did not recognize most people’s names in the program lined up to speak, but in 2009 I knew a majority of them.  So to push myself further, at least 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 little push outside of comfort.

CodeMash ’10 Was the first time I attended the “precompiler” sessions, which are more hands-on “bring your laptop and everyone is writing code” 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’t remember them (because there were so many of them and only one of me.)

CodeMash ’11 I did the same thing in the morning as I did the previous year, help people get set up in Leon’s session to work on a Ruby on Rails website.  Unfortunately I wasn’t “fully present” at that the morning session, because I was so focused on the afternoon, I don’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’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’ve mentioned many times before. I could push thru my fear of public speaking if I wanted to, I just don’t want to.  And I learned at CodeMash ’10 that I’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’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 RubyMine, 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 – 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’s pretty cool!  I will get those on this site in the next week or so.

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 Codemash’12!

RubyConf 2010, keynotes, and maihem. Oh my!

It’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’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’s not one of my favorite topics, but I appreciate people’s interest in talking to me, so I indulge.

After a collection of conversations at RubyConf, and some mini-controversy on Twitter following RubyConf (seriously, can’t Rubyists have a conference without some level of controversial aftershock?) regarding David Heinemeier Hansson’s keynote, I really feel like I’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’s talk. I even went up to him later that day and told him so. But now I feel like I’m “supposed” to be offended in some way. I just don’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.

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’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’t think much about whether I’m one of few women around or not. I guess I just try to see something positive wherever I’m at, and whatever I’m doing; so if being one of few women around is “supposed” to be bad, I just don’t see it that way. If that’s how I’m supposed to feel, then I start to wonder if I’m just not good at being a woman. I don’t feel that way all the time. But sometimes being singled out for being different makes me feel worse.

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 “you don’t always know you’re doing….” [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’t disagree that there’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’s pretty much how my next couple of days went.

“How did you push through?” they asked.

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’t think we should make people feel that way. You shouldn’t have to buy a Mac before you attend your first Ruby meeting, nor worry about people telling you to “get a real machine.” I think it’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’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’m really scared to say that. On my blog. I shouldn’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… “ummm,” he says… “it’s just that most of the people I’ve met that ‘choose’ windows are idiots.” Thanks dude. That felt great </sarcasm>.  But I’m trying not to be ashamed of who I am anymore.

David Heinemeier Hansson gave his keynote on the 2nd morning of RubyConf. His talk, titled “Why Ruby?” was about what he loves so much about Ruby, and why he hasn’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’s balls fondled by the TSA. [DHH 40:30-40:47]

Some people said these things were “distracting” or did not add value to his talk. While I wouldn’t get up in front of a group and talk that way, (I also wouldn’t get up in front of a group and talk) if he wants to get up and talk that way, that’s his choice. At this point in his career, he doesn’t really have to worry whether or not people think he’s unprofessional when he gets up and talks. But was anything in his talk something that you wouldn’t see or hear in an R-rated movie? No. Was it distracting? I don’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’s balls fondled, I wanted to turn to the person beside me and say “Yeah, I hate when the TSA fondles my balls!” If I’d been less tired, I probably would have said that. But people were fired up against his talk anyway. I guess you can’t really convince people who are fired up over something to settle down. And I’m simply not qualified to say if people are over-reacting or not. I’m not qualified to say whether women (in general) are uncomfortable about this stuff, or offended. I just don’t know. It’s up to individuals to form their own opinions.

I do know it’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’s really tough sometimes. People get offended at things. It’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’re all free to say what we want, and speak to people however we want. But just because you CAN do something, doesn’t mean you SHOULD. (Just like we’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’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. 🙂

Dave Thomas, when talking about ways the community may exclude women, he said “The exclusion happens among people who often do not mean to appear, and do not interpret their own actions, as hostile to women.” [DT 36:50] That is probably true. Though I think there’s a lot of actions are hostile in many ways, not to women specifically. For example, unintentional hostility against people with less confidence.

“Why’d you do it THAT way?”

Perhaps they just asked the question because they want to see where the person’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, “Why’d you do it THAT way?” can easily imply “That was a dumb way to do it.” instead. And the person with low confidence takes it further to mean “YOU are dumb.” 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?

Dave Thomas also said “if you do find something offensive… do something about it. If you’re in a talk and it’s offensive, stand up and get out. Or blog about it… tweet the guy into oblivion…. by reacting, you’re saying ‘yeah it happened, but you know what? We’re not going to let it happen again.'” [DT 40:12] Not bad advice! Yet just because you can do these things doesn’t necessarily mean you should. For one thing, you can’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’s really important, not on every little thing. Else it becomes meaningless. It becomes “oh yeah, there go those rubyists again, always someone pissed off at the end of the conference.” May we all have the wisdom to discern the important from the trivial.

But as for the male/female ratio thing, I think it goes deeper than being less “inflammatory” [DT 37:40] in order to not deter women. How do you think it makes a person feel to hear someone who’s trying to have kids say “I hope we don’t have a girl,” or to hear someone say “can you imagine him trying to raise a *girl*? Oh my!” Are girls really that much more trouble? Maybe we are. Maybe it makes us feel like we’re not worth the trouble. It makes me feel like I’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’s “supposed” to be hard, like Math, Science, Computers. What have the experiences in your life taught you about what you can and can’t do? What opinions have the years of your life helped you form? For me, I’ve “learned” (note I put “learned” in quotes):

* that having daughters is a bad thing,

* 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),

* that all wives are good for is nagging and telling their husbands what they can and cannot do. I’m exaggerating mostly (however, I did see someone tweet recently “I don’t have an opinion, I have a wife.” That’s a horrible way to have to feel in life. And if women are to blame for that, then yes, I do feel bad.)

These are thoughts I have to consciously put out of my head when I’m feeling down. It’s really hard sometimes.

So what now? If I’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’s passion, their knowledge, their ideas. But I’m not offended by much. I liked Dave Thomas’s talk, AND I liked David Heinemeier Hansson’s talk. I particularly liked his analogy with rope. “People say things like ‘…just enough rope to hang himself’ but does that mean we should outlaw rope? You shouldn’t be allowed to have rope, because what if you hung yourself? Is that the main use case for rope? … you can do a lot of things with rope.” [DHH 37:30]

I don’t have to condone all the individual choices people make [DHH 56:20]; We don’t all have the same sense of humor but we can still get along [DHH 34:00]. Can’t we all just get along? [Rodney King :)]

I don’t know the first thing about why there’s not more women in IT. I don’t have any clue what to do about it. Sometimes I wonder why it’s really a “problem.” If women aren’t interested in it, why force it? There’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’ 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.) “Fewer and fewer people are entering software as a profession…. Mentoring is a really important part of what we do. [41:16] And that I agree with. I’ve had plenty of mentors over my career, and giving back by mentoring others makes a lot of sense. “Go inspire someone” is something that I can do. Can you?


Video of David Heinemeier Hansson’s RubyConf Keynote (DHH*

Video of Dave Thomas’ RubyConf Keynote (DT*