Tag Archives: IRC

NAND and NOR gate sketch, coincidentally in the shape of a heart

Hacker School Gets an A on the Bechdel Test

NAND and NOR gate sketch, coincidentally in the shape of a heart

NAND and NOR gate sketch, coincidentally in the shape of a heart – by me this week

cross-posted from Cogito, Ergo Sumana

When part of the joy of a place is that gender doesn’t matter, it’s hard to write about that joy, because calling attention to gender is the opposite of that. I want to illustrate this facet of my Hacker School experience: mostly, Hacker Schoolers of all genders talk about mostly the same things. And we talk about them in all gender combinations — including, just by chance, among women.

The “Bechdel Test” asks whether a work of fiction includes at least two women with names who talk to each other about something other than a man. Thus in my blog I have an occasional series listing topics I’ve discussed with other women. My life passes the Bechdel Test! ;-)

So here is an list of some things I’ve discussed with Hacker School women. (About half the facilitators, cofounders, participants, and residents are women.)

Some Things Hacker School Women Talk About

  • why LVars and set operations relate to current work in distributed systems
  • The Kids Are All Right
  • IRC etiquette, and when to use IRC instead of a mailing list, videocall or wiki
  • troubleshooting git-review
  • the Haiku operating system’s key features (many of them similar to BeOS)
  • refactoring a function a guy wrote so it doesn’t do everything in main() (technically breaks Bechdel?)
  • whether to work at a nonprofit or for-profit
  • where is that maple syrup smell coming from? (answer: someone was making oatmeal)
  • our GitHub report cards
  • how to use machine learning techniques to train a Markov chain to generate funnier sentences
  • how the hell Makefiles work
  • what the hell a cuticle is
  • binary search and Huffman coding
  • saving time with useful Python standard library modules (string, time, os, etc.) and packages, e.g., requests
  • Too Much Light Makes the Baby Go Blind
  • where pip gets its info (PyPI)
  • the Pythonic convention for reading from a file, with open('file','r') as f, and the fact that it’s a context manager
  • when and how to use list comprehensions and dictionary comprehensions, generators and decorators, ord and chr
  • why we use pass for stub functions or classes instead of return
  • birth control amortization
  • how you would override Python’s default behavior to raise an exception when slicing a list with a negative int
  • how to write a hill-climbing algorithm and why
  • G.K. Chesterton’s use of the mystery genre
  • what the #! (hashbang) line at the beginning of a script actually does
  • song currently stuck in one’s head (“Gettin’ Jiggy Wid’ It”) and confusing “Wild Wild West” with “Back To The Future III”
  • what it takes to work remotely
  • security issues inherent in creating a sandboxed version of an interactive Python interpreter
  • who put this post-it note on the fridge saying “No Java on Monday”? When? Did the author mean the beverage or the language? Was it descriptive or imperative? Why did they never take it down?
  • an awesome 1982 Bell Labs video about UNIX featuring Lorinda Cherry

I could make this list probably ten times longer. My point is, if you don’t care about gender, Hacker School is awesome. If you’re irritated by the tech industry’s usual gender crap, Hacker School is blissfully free of it and you can — if you want — turn into someone who doesn’t care about gender for three months.*

You can apply now for the next batch — apply by Saturday night, December 14th.

* an oversimplification! But you get what I mean.

By SomeDriftwood (Own work) [CC-BY-3.0 (www.creativecommons.org/licenses/by/3.0)], via Wikimedia Commons

Re-post: What she really said: Fighting sexist jokes the geeky way!

During December and January, Geek Feminism is republishing some of our 2012 posts for the benefit of new and existing readers. This post originally appeared on March 19, 2012.

This is a guest post from Jessamyn Smith, an open source developer who tweets at @jessamynsmith and blogs at Dreamwidth. Read on to find out her technological solution to annoying sexist jokes.

I work at a startup, and most of the time, I enjoy it. Compared to most tech companies, and certainly most startups, we have quite a few people who are relatively clueful. There are relatively few moments of “brogrammer” culture. There is, however, one thing that has been bugging me for months, ever since it was introduced.

I took it for granted that everyone was familiar with the “That’s what she said,” joke, but a recent conversation with a consultant friend made me realize some industries don’t feature it on a daily basis. For those who haven’t heard it a million times, the idea is that when somebody says something that could remotely be turned into a sexual joke, e.g. “I’m trying to solve this problem but it’s really hard!” you say “That’s what SHE said,” in a lascivious tone.

Now, I admit to having made this joke myself, at times. Once in a while, I even find it funny. What I don’t find funny is a bot we have in our general IRC channel at work, that has some basic AI devoted to determining when to interject TWSS into the conversation.

I asked a number of times to have that bot function turned off, but got the usual combination of being ignored, being told it’s funny, and being told I should lighten up. I tried explaining once why it was objectionable, and managed to get the guys saying variations, e.g. “That’s what your DAD said,” for an evening, but that was about it.

Last Friday, the bot went a bit crazy and started throwing TWSS into the conversation with no apparent rhyme or reason. Finally, I had had enough. And then it came to me: I would write my OWN bot, that responded to TWSS with a quotation from a notable woman. If they are so keen on what she said, why don’t we get educated about what she really had to say. And so the “whatshereallysaid” bot was born. It might annoy the guys into shutting off the TWSS bot, or we might all learn about notable women. It’s a win either way, in my books!

I’d never written a bot, but how hard could it be? Python is my primary programming language these days, so I started searching for Python IRC bots. I tried a few different libraries before setting on twisted. I found a very nice example of a logging bot using twisted , and went from there.

Step 1: I copied the LogBot code into local files, and tried running it. Since the IRC channels I am normally in use SSL, I had to set up my own channel on a public IRC server for testing. It took a while to get the settings right, but finally I succeeded!

Step 2: I created a quotes file and put in a couple of my favorite quotes to test with. I created class to randomly select a quote from the file. I modified the log bot so that if you said its name, it would get a quote and post it to the channel.

Step 3: My ultimate goal was to put the bot in the work channel, so I needed it to support SSL. I found a stackoverflow thread about using a different connect function, one for SSL. Again, it took me some time to get the settings right, but eventually I got the bot to connect to the work IRC server.

Step 4: Now I needed more quotes! I found an excellent website of quotes by women and wrote a small script to scrape the quotes. I used the excellent python requests library. The script got the content of the main links page, and iterated over the links, using a regular expression to get the name and then following the link to the quotes page. Then it pulled the quotes out of the page content and stored them in a text file, one per line, with the woman’s name attached.

Step 5: I set up my own private channel and had my bot connect. I tested it to verify it was correctly noticing and responding to trigger phrases. Once I was confident of that, I tried in the general chat channel. Success!

Step 6: I cleaned up the code, removing everything unrelated to posting quotes, and adding a settings file. I made the trigger phrases configurable. I also added a virtualenv. I felt the project was now in good enough shape to post publicly, so I shared it on github.

Step 7: At this point, I was still running the bot on my own computer, which was clearly non-ideal. I wanted it to be in the channel all the time, not just when I was logged in! I found a python daemon implementation and made my bot run through that. Perfect! Now I could run it from one of the development servers at work.

Step 8: Unit tests, of course! No project is complete without them. I only have tests on the quote selector so far, but I am going to set up some mock tests on the bot logic.

Originally, I had called the project “whatshereallysaid”, but as I was working, I realized this could be much more broadly applied. Anyone could clone my github project and configure a bot to respond to whatever annoying comments they had to put up with. Inspired by “take back the night” and “hollaback”, I decided to rename the project “talkbackbot“.

I finished all this rather late on Friday night, so there was nobody around. I waited with anticipation to see what the response would be. To my surprise, many coworkers complimented me on creating the bot, including some I would never have guessed would appreciate it. Some people even retweeted my announcement that the bot was available on github.

It has been fascinating to watch the ongoing reactions. There have been complaints that we have too many bots in the channel now. There have been complaints about it spamming the channel. There were several “Make them shut up!” responses. These are not reactions I have seen the other bots elicit, certainly not with such intensity. One person even complained about the name being too long, though to his credit he realized right after he said that that several other people in the channel also have very long handles.

To me, all of this seems like typical geek behaviour: something is making them uncomfortable, and so they attack it on “rational” grounds. Most likely, they aren’t even aware of the gut reaction fueling their logic. Interestingly, the intensity of emotion seemed to carry over into subsequent discussions, including one about women in the Python community. For the most part, I have not responded to the comments. I did shorten the bot’s name to “twsrs”, and I pointed out that it’s trivially easy to have the bot not say anything: don’t say TWSS.

In any case, I feel that I have succeeded in constructively disrupting an aspect of my work culture that made me uncomfortable. This is the first personal project I’ve ever thought of, coded, and made public, and I am pretty excited about it! It makes me so happy every time the other bot says “that’s what she said,” and my bot responds with something like:

Our struggle today is not to have a female Einstein get appointed as an assistant professor. It is for a woman schlemiel to get as quickly promoted as a male schlemiel. ~ Bella Abzug

One of the most hilarious responses was a guy saying he was going to say TWSS a lot more, so he could get more quotes! I decided to add another trigger phrase just for him, since the last thing I want to do is encourage *more* TWSS!

By SomeDriftwood (Own work) [CC-BY-3.0 (www.creativecommons.org/licenses/by/3.0)], via Wikimedia Commons

What she really said: Fighting sexist jokes the geeky way!

This is a guest post from Jessamyn Smith, an open source developer in Portland who tweets at @jessamynsmith and blogs at Dreamwidth. Read on to find out her technological solution to annoying sexist jokes.

I work at a startup, and most of the time, I enjoy it. Compared to most tech companies, and certainly most startups, we have quite a few people who are relatively clueful. There are relatively few moments of “brogrammer” culture. There is, however, one thing that has been bugging me for months, ever since it was introduced.

I took it for granted that everyone was familiar with the “That’s what she said,” joke, but a recent conversation with a consultant friend made me realize some industries don’t feature it on a daily basis. For those who haven’t heard it a million times, the idea is that when somebody says something that could remotely be turned into a sexual joke, e.g. “I’m trying to solve this problem but it’s really hard!” you say “That’s what SHE said,” in a lascivious tone.

Now, I admit to having made this joke myself, at times. Once in a while, I even find it funny. What I don’t find funny is a bot we have in our general IRC channel at work, that has some basic AI devoted to determining when to interject TWSS into the conversation.

I asked a number of times to have that bot function turned off, but got the usual combination of being ignored, being told it’s funny, and being told I should lighten up. I tried explaining once why it was objectionable, and managed to get the guys saying variations, e.g. “That’s what your DAD said,” for an evening, but that was about it.

Last Friday, the bot went a bit crazy and started throwing TWSS into the conversation with no apparent rhyme or reason. Finally, I had had enough. And then it came to me: I would write my OWN bot, that responded to TWSS with a quotation from a notable woman. If they are so keen on what she said, why don’t we get educated about what she really had to say. And so the “whatshereallysaid” bot was born. It might annoy the guys into shutting off the TWSS bot, or we might all learn about notable women. It’s a win either way, in my books!

I’d never written a bot, but how hard could it be? Python is my primary programming language these days, so I started searching for Python IRC bots. I tried a few different libraries before setting on twisted. I found a very nice example of a logging bot using twisted , and went from there.

Step 1: I copied the LogBot code into local files, and tried running it. Since the IRC channels I am normally in use SSL, I had to set up my own channel on a public IRC server for testing. It took a while to get the settings right, but finally I succeeded!

Step 2: I created a quotes file and put in a couple of my favorite quotes to test with. I created class to randomly select a quote from the file. I modified the log bot so that if you said its name, it would get a quote and post it to the channel.

Step 3: My ultimate goal was to put the bot in the work channel, so I needed it to support SSL. I found a stackoverflow thread about using a different connect function, one for SSL. Again, it took me some time to get the settings right, but eventually I got the bot to connect to the work IRC server.

Step 4: Now I needed more quotes! I found an excellent website of quotes by women and wrote a small script to scrape the quotes. I used the excellent python requests library. The script got the content of the main links page, and iterated over the links, using a regular expression to get the name and then following the link to the quotes page. Then it pulled the quotes out of the page content and stored them in a text file, one per line, with the woman’s name attached.

Step 5: I set up my own private channel and had my bot connect. I tested it to verify it was correctly noticing and responding to trigger phrases. Once I was confident of that, I tried in the general chat channel. Success!

Step 6: I cleaned up the code, removing everything unrelated to posting quotes, and adding a settings file. I made the trigger phrases configurable. I also added a virtualenv. I felt the project was now in good enough shape to post publicly, so I shared it on github.

Step 7: At this point, I was still running the bot on my own computer, which was clearly non-ideal. I wanted it to be in the channel all the time, not just when I was logged in! I found a python daemon implementation and made my bot run through that. Perfect! Now I could run it from one of the development servers at work.

Step 8: Unit tests, of course! No project is complete without them. I only have tests on the quote selector so far, but I am going to set up some mock tests on the bot logic.

Originally, I had called the project “whatshereallysaid”, but as I was working, I realized this could be much more broadly applied. Anyone could clone my github project and configure a bot to respond to whatever annoying comments they had to put up with. Inspired by “take back the night” and “hollaback”, I decided to rename the project “talkbackbot”.

I finished all this rather late on Friday night, so there was nobody around. I waited with anticipation to see what the response would be. To my surprise, many coworkers complimented me on creating the bot, including some I would never have guessed would appreciate it. Some people even retweeted my announcement that the bot was available on github.

It has been fascinating to watch the ongoing reactions. There have been complaints that we have too many bots in the channel now. There have been complaints about it spamming the channel. There were several “Make them shut up!” responses. These are not reactions I have seen the other bots elicit, certainly not with such intensity. One person even complained about the name being too long, though to his credit he realized right after he said that that several other people in the channel also have very long handles.

To me, all of this seems like typical geek behaviour: something is making them uncomfortable, and so they attack it on “rational” grounds. Most likely, they aren’t even aware of the gut reaction fueling their logic. Interestingly, the intensity of emotion seemed to carry over into subsequent discussions, including one about women in the Python community. For the most part, I have not responded to the comments. I did shorten the bot’s name to “twsrs”, and I pointed out that it’s trivially easy to have the bot not say anything: don’t say TWSS.

In any case, I feel that I have succeeded in constructively disrupting an aspect of my work culture that made me uncomfortable. This is the first personal project I’ve ever thought of, coded, and made public, and I am pretty excited about it! It makes me so happy every time the other bot says “that’s what she said,” and my bot responds with something like:

Our struggle today is not to have a female Einstein get appointed as an assistant professor. It is for a woman schlemiel to get as quickly promoted as a male schlemiel. ~ Bella Abzug

One of the most hilarious responses was a guy saying he was going to say TWSS a lot more, so he could get more quotes! I decided to add another trigger phrase just for him, since the last thing I want to do is encourage *more* TWSS!

“But what could I have said/done?”

[Trigger warning for use of rape as an analogy for display of dominance]

This is a discussion I just saw in a project/support channel on an IRC server I frequent. Unfortunately, it is not uncommon for me to stumble on similar in my travels.

I’m the “elky” in the excerpt, all other identifying factors have been excluded for the purposes of focusing on the event.

* joiner (~joiner@XXXX) has joined #projectchannel
<_douchecanoe> show your professionalism and just proof them wrong
* pingout has quit (Ping timeout: 276 seconds)
<_douchecanoe> write an article that rapes their article
* latecomer (~latecomer@XXXX) has joined #projectchannel
<_douchecanoe> bystander
<joiner> here I am joining #projectchannel and the first thing that strikes me is rape
<_douchecanoe> http://<insert a link to an article here>
<talkingtodouche> why on earth would I want to write an article for them?
<bystander> does it output an .xml file?
<elky> joiner, :(
<_douchecanoe> joiner at least you know that you’re in the right place
<_douchecanoe> talkingtodouche not for them
<bystander> for epeen
<elky> … for being…? worst thing to say.

What happened after this? Business as usual for most of the channel occupants. No apologies. Nothing. Infuriating.

Now, I don’t know “joiner”*. For all I know ze is not a survivor. For all I know joiner is an ally and this is how ze is responding. But for all I know zir comment is a genuine display of anguish and ze needs acknowledgement. Personally I prefer to not risk that the last is true.

What did I do? In the channel, I asked “joiner” if they had come in to address a need before being rudely sidelined, and when they replied happily they were compiling, I joked by exclaiming “swordfight!” and let them know I was making sure they were OK hence letting them know I am approachable.

What would you have done?

(* Not real nick. None of the nicks in the log are the real nick involved, except for my own.)

Comment note: I’m not looking for cookies, they are off-topic for this thread. Please focus discussion on how you may have approached the situation, or, if you are a marginalised person, how you personally would appreciate someone responding in a similar situation.