Tag Archives: python

Guest Post: Men, if Django Girls makes you uncomfortable, maybe that’s a good thing

This is a guest post by Brianna Laugher, a software developer who appreciates significant whitespace. She tweets fleetingly at @pfctdayelise. It is cross-posted at her Tumblr.

Monday was the first day of Europython, and the first keynote was by Ola Sendecka & Ola Sitarska, the founders of Django Girls. They gave a wonderful talk leading us through their journey in creating the Django Girls tutorial, its viral-like spread in introducing over 1600 women worldwide to Python programming, leading to a Django Girls Foundation with a paid employee, and their plans to expand the tutorial to a book, Yay Python!. This was all illustrated with an incredibly charming squirrel-centred parable, hand-drawn by Sendecka. The two Olas are clearly a formidable team.

And yet. I had no less than three conversations with men later that day who told me they thought it was a great idea to encourage more women in Python, but…wasn’t it encouraging stereotypes? Was it good that Django Girls was so, well, girly?

There may be a well-meaning concern about avoiding stereotypes, but I wonder if there also wasn’t some underlying discomfort, about seeing something encouraging people in their field that didn’t speak to them. Could programming really look like this? Maybe it felt a bit like being a squirrel surrounded by badgers, in fact.

colored illustration of one squirrel, alone, among three badgers who are conversing with each other

one squirrel among three badgers, by Ola Sendecka, from slide 12 of
It’s Dangerous To Go Alone. Take This: The Power of Community
slides from EuroPython 2015 keynote

So firstly. Certainly pink can be a lazy shorthand for marketing to women. But anyone who watches the Olas’ keynote can be in no doubt that they have poured endless effort into their work. Their enthusiasm and attitude infuses every aspect of the tutorials. There’s no way it could be equated with a cynical marketing ploy.

Certainly pink things, sparkles and curly fonts have a reputation as being associated with girls. Here’s a question to blow your mind: is there anything bad about them, besides the fact that they are associated with girls?

Compulsory femininity, where girls and women are expected to act and look a certain way, is bad, yes. But femininity itself is not inherently weak, or silly, or frivolous, or bad.

Monospace white-on-black command-line aesthetic is a stylistic choice. It’s one that is relatively unmarked in our community. Glittery pastels is a different aesthetic. They are both perfectly valid ways to invite someone to be a programmer. And they will appeal to different audiences.

Julia Serano writes:

Most reasonable people these days would agree that demeaning or dismissing someone solely because she is female is socially unacceptable. However, demeaning or dismissing people for expressing feminine qualities is often condoned and even encouraged. Indeed, much of the sexism faced by women today targets their femininity (or assumed femininity) rather than their femaleness.

Demeaning feminine qualities is the flip side of androcentrism. Androcentrism is a society-wide pattern that celebrates masculine or male-associated traits, whatever the gender of the person with these traits. It’s part of the reason why women who succeed in male dominated fields are lauded, why those fields themselves are often overpaid. It’s how we find ourselves being the Cool Girl, who is Not Like Other Girls, an honorary guy.

It’s not a coincidence that people in our community rarely attend with a feminine presentation, for example, wearing dresses. Fitting in – looking like we belong – currently requires pants and a t-shirt. Wearing a dress is a lightning rod for double-takes, stares, condescension, being doubted, not being taken seriously.

To be explicit, this doesn’t mean that all women currently in tech are longing to femme it up. Many women are perfectly comfortable in a t-shirt and jeans. But implicitly expecting women to conform to that uniform is just as much a problem as expecting feminine attire. The problem is the lack of freedom to present and participate as our authentic selves.

Read these personal accounts and believe that this is how feminine women in tech get treated. They’re both hugely insightful.

(Then maybe read Julia Serano’s piece again and think about the connections to these two stories – seriously, these three pages are dense with concepts to absorb.)

photo of an instant camera, lip gloss, a zine marked 'Secret Messages' featuring two cats conversing, nail polish, and an object shaped like a strawberry ice cream cone, on a white shag carpet

Secret Messages zine by Sailor Mercury, surrounded by other symbols of femininity

Like Ola Sendecka, Sailor Mercury is a talented illustrator, as can be seen in her article. She ran a Kickstarter campaign to create her Bubblesort Zines (which you can now buy!). The overwhelming success of her Kickstarter (it reached its goal in 4 hours and eventually raised over US$60,000) speaks to an excitement and hunger for this style of work.

Inviting women into tech isn’t worth much if they have to leave their personality at the door to be accepted. Being supportive of diversity doesn’t mean much if you expect to look around and see things look basically the same. The existence of Django Girls does not compel all Pythonista women to femininity, but it does offer and even celebrate it as an option. If it’s not for you, so what? Take your discomfort as a starting point to figure out what you can do to make your community more welcoming for feminine people. Embrace femininity: Take a feminine person seriously today.

PS. If you’re still stuck back at “isn’t something only for girls (REVERSE) SEXIST?” – Read the FAQ.

Code release: Spam All the Links

This is a guest post by former Geek Feminism blogger Mary Gardiner. It originally appeared on puzzling.org.

The Geek Feminism blog’s Linkspam tradition started back in August 2009, in the very early days of the blog and by September it had occurred to us to take submissions through bookmarking services. From shortly after that point there were a sequence of scripts that pulled links out of RSS feeds. Last year, I began cleaning up my script and turning it into the one link-hoovering script to rule them all. It sucks links out of bookmarking sites, Twitter and WordPress sites and bundles them all up into an email that is sent to the linkspamming team there for curation, pre-formatted in HTML and with title and suggestion descriptions for each link. It even attempts to filter out links already posted in previous linkspams.

The Geek Feminism linkspammers aren’t the only link compilers in town, and it’s possible we’re not the only group who would find my script useful. I’ve therefore finished generalising it, and I’ve released it as Spam All the Links on Gitlab. It’s a Python 3 script that should run on most standard Python environments.

Spam All the Links

Spam All the Links is a command line script that fetches URL suggestions from
several sources and assembles them into one email. That email can in turn be
pasted into a blog entry or otherwise used to share the list of links.

Use case

Spam All the Links was written to assist in producing the Geek Feminism linkspam posts. It was developed to check WordPress comments, bookmarking websites such as Pinboard, and Twitter, for links tagged “geekfeminism”, assemble them into one email, and email them to an editor who could use the email as the basis for a blog post.

The script has been generalised to allow searches of RSS/Atom feeds, Twitter, and WordPress blog comments as specified by a configuration file.

Email output

The email output of the script has three components:

  1. a plain text email with the list of links
  2. a HTML email with the list of links
  3. an attachment with the HTML formatted links but no surrounding text so as to be easily copy and pasted

All three parts of the email can be templated with Jinja2.

Sources of links

Spam All the Links currently can be configured to check multiple sources of links, in these forms:

  1. RSS/Atom feeds, such as those produced by the bookmarking sites Pinboard or Diigo, where the link, title and description of the link can be derived from the equivalent fields in the RSS/Atom. (bookmarkfeed in the configuration file)
  2. RSS/Atom feeds where links can be found in the ‘body’ of a post (postfeed in the configuration file)
  3. Twitter searches (twitter in the configuration file)
  4. comments on WordPress blog entries (wpcommentsfeed in the configuration file)

More info, and the code, is available at the Spam All the Links repository at Gitlab. It is available under the MIT free software licence.

Solicitation on flipping the script

This is a guest post by April Wright. April is a graduate student in evolutionary biology at the University of Texas at Austin. When she’s not crunching data at her computer, she teaches courses for novice biologists so they can learn some computation. In her spare time, she enjoys reading, gaming, running with her dogs and spending time in the kitchen. You can get ahold of her at her website or Twitter.

So I wrote a blog post that went a little bit viral the other day. And a lot of people have asked in the past couple days what can be done to improve the atmosphere at programming meetings. I’ve been chewing on that pretty substantially.

I’ve had a lot of good discussions over the past couple days (help yourself to warm fuzzies here).

Reader bioatmosphere made a very good point in the comments, pulled out below:

The burden to fix things shouldn’t be on you just because you’re experiencing them

She’s right, of course. And that reminded me of this post by Cate Huston, which closes with a section called “Changing the Conversation”. I’ll copy the crucial bit (do read the whole thing, though) below:

Are you doing meaningful work?

Do you feel appreciated?

Do you feel respected?

And I’m going to tack on one more:

Do you feel like you’re part of something?

Because I think that’s what really got me: I felt like I was part of something, then I didn’t. It’s not just being snubbed that hurts, it’s a sense of loss of a community I kinda thought I fit with.

Since I have some ears bent towards me for a bit: People who feel integrated in communities and happy at meetings, what about it? What about these communities and meetings that makes you feel appreciated? Or respected? Or part of something? And what could you do to help someone else feel that?

Get at me via whatever channel preferred. [Mod note: while we normally do not encourage anonymous comments, they are acceptable on this post. Please note that your IP address will be logged, but is only visible to blog administrators.]

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.

No one expects the linkspam inquisition! (16 November, 2012)

  • Geek Masculinity and the Myth of the Fake Geek Girl: “For decades, we’ve prided ourselves on being forward-thinkers, early adopters, willing to challenge cultural norms and think and work outside the boxes imposed on us. Imagine how far we could go if we could then stop replacing them with boxes of our own design.”
  • Code review for the new PyLadies in your life: “Here’s the very best thing you can say when a PyLady shares her code with you: ’Thanks for sharing this!’ And then, after you’ve had a look: ’I’ve had a look and you’re doing a great job. Tell me about what you’ve written.’ Seriously. That’s about it.”
  • The Mojo Wire: “Glasses on Chicks”: Two friends discuss the “fake geek girl” and geeky gatekeeping issue on Facebook; includes a great link roundup for the larger discussion.
  • Why “Men’s Right’s” Groups Are Wrong: An overview and take-down of Men’s Rights Activists talking points and tactics.
  • Queer Female of Color: The Highest Difficulty Setting There Is? Gaming Rhetoric as Gender Capital: “Journalists are good at bringing public awareness to problems like gaming’s pervasive racism, sexism, and homophobia, but awareness isn’t enough. It’s our job as feminist scholars, teachers, writers, and gamers to document, analyze, and theorize the white patriarchy that is so vigorously resurgent in games while never forgetting who profits here.”
  • BPS Research Digest: Why are women chosen to lead organisations in a crisis?: “Now a brand new study suggests the phenomenon [of the “glass cliff”] occurs firstly, because a crisis shifts people’s stereotyped view of what makes for an ideal leader, and secondly, because men generally don’t fit that stereotype.”
  • Google looking for an algorithm for keeping women: “Glad to hear that Google is aware that they’re losing women, and that they’re trying to study themselves to figure out where.  I hope that they’ll be successful. A big part of the problem is what they’re not doing and not seeing.”
  • Who are you calling ?sister?? – Salon.com: “More than 30,000 women are currently members of Webgrrls, and many more have passed through the community over the years. Webgrrls’ impact on the wired female population has been profound. But Webgrrls is no longer the only game in town, and these days numerous women’s communities are pursuing similar pro-women, pro-technology agendas.”

You can suggest links for future linkspams in comments here, or by using the “geekfeminism” tag on delicious or pinboard.in or the “#geekfeminism” tag on Twitter. Please note that we tend to stick to publishing recent links (from the last month or so).

Thanks to everyone who suggested links.

Close-up of large weathered chain links in sunlight.

Klaatu barada linkspam (29th June, 2012)

You can suggest links for future linkspams in comments here, or by using the “geekfeminism” tag on delicious, freelish.us or pinboard.in or the “#geekfeminism” tag on Twitter. Please note that we tend to stick to publishing recent links (from the last month or so).

Thanks to everyone who suggested links.

Rectangular plain biscuit with the word 'NICE' baked into it

Cookie of the Week*: Chad Whitacre (whit537) came up with a better name

This is a guest post by Annalee. Annalee is a python programmer and general-purpose geek. She can be found on Twitter as @leeflower and Dreamwidth as annalee.

Cookie of the Week* is an occasional series highlighting action in the geek community to fight sexism, in order to show that fighting sexism is possible and happening.

When Chad Whitacre announced on Twitter that he’d just released a new version of Testosterone, “the manly testing interface for Python,” a friend of his called him out, asking “what, exactly, makes it manly?”

After a brief, polite back-and fourth, Whitacre slept on it, and apologized.

Then he announced that he’s renamed his project. Here’s an excerpt:

really do want to encourage women in tech (I have three young daughters), and a project like testosterone does not do that. I remember being surprised to see a woman at PyCon 2011. I don’t have the data, but anecdotally I’m telling you there were LOTS more women at PyCon 2012. Let’s do more of that!

It is now assertEquals, “the epic testing interface for Python.”

If anyone’s wondering how to handle being called out on twitter: this right here is how you handle it.

So here’s your cookie, Mr. Whitacre:

Rectangular plain biscuit with the word 'NICE' baked into it

Image description: a rectangular shortbread cookie with scalloped edges and the word “NICE” stamped into the middle.

Does anyone else have any cookies to spare this week?

* Disclaimer: cookies may not be baked weekly!

Prepping for April Fool’s Day linkspam

The photo has nothing to do with the title, except that we are the lamp of knowledge and truth and anti-sexism shining into the dark corners of ignorance! Or maybe not. Anyway, linkspam:

You can suggest links for future linkspams in comments here, or by using the “geekfeminism” tag on delicious or pinboard.in or the “#geekfeminism” tag on Twitter. Please note that we tend to stick to publishing recent links (from the last month or so).

Thanks to everyone who suggested links.

A breakout group at the Boston Python Workshop work at laptops around a table

body img – the anxiety of learning and how I am beating it

Beating learn-to-program anxiety with good gamification and courses

I have anxiety about learning technical skills. I wrote about this a little while back. But now I know more about how I learn, and, in bits and snatches, I am gaining proficiency and confidence. Here’s a summary of my journey over the last several months with learning more programming skills (in this case, mostly in Python), with links to some resources in case you’re like me.

I get anxious when learning skills that I think I should already know; I feel behind and guilty. Structure, little rewards, friendly sociability, and encouragement from other women help tremendously. Tedra Osell writes about this in the context of writer’s block, and FlyLady and Cheryl Mendelson’s Home Comforts speak to that problem in learning to keep a comfortable home; the people and resources I mention (CodeLesson, OpenHatch’s Boston Python Workshop for women and their friends, CodingBat, and the Python Challenge) provide many of the stimuli I need. Also, my anxiety spikes if I think I am supposed to compare my speed or quality of work with others (hence my post’s title), but cools down if I see evidence that someone else wants to patiently help me. These resources helped me learn without pushing my “argh everyone’s better than me” buttons.

So, first: CodeLesson. The vintage and handmade store Etsy ran a free four-week online course in HTML, CSS, JavaScript, and the Etsy API. Hundreds of people signed up; I got on the waitlist, and eventually did three of the weeks in September and October. (I then had a big crunch week at work and didn’t finish, but I intend to finish that last week’s work anyway, to learn animation and pagination in jQuery.) It was exactly what I wanted — well-written tutorials and exercises to get me over the initial hump. I now know a little CSS, JavaScript, and jQuery, which is infinity percent more than I knew before. I had lots of fist-pump “Yay, I made it work!” moments. And the instructor’s praise of my work helped; I’m a social animal, and recognition and praise from instructors helps reassure me that I’m on the right track.

Thanks to Etsy for the free class. And I liked the CodeLesson interface and infrastructure enough that I may pay for additional CodeLesson classes, or get my organization to follow Etsy’s lead and offer classes through them to increase our users’ skills.

A couple months later, I had a chance to attend OpenHatch’s intro-to-Python workshop specifically meant for women and their friends. I’d read about these before, on GeekFeminism and elsewhere, and it sounded like it would fit how I learn as well as help me plan to hold similar events in my community. So, on a Friday in December, I took the bus from New York City to Boston.

An instructor looks at a student's laptop at the Boston Python Workshop

An instructor looks at a student’s laptop at the Boston Python Workshop

It’s a good thing that the Friday night prep part was three hours and that I already knew a bunch of stuff that other people were new to (familiarity with the command line & the Python prompt, etc.) since I was an hour late! It was good to fix the syntax-y bits in my mind. The CodingBat exercises were great practice and I got a big triumphant fist-raised feeling when all those unit tests passed.

In between sessions, I chatted with some of the people who run the program. It sounds like each individual run of it costs about $300 for lunch for everyone and that’s practically it, since they use volunteers and the venue time is donated (and then like $10 total for pens/sticky nametags/laser-printed “here’s the workshop” signs/etc.). That’s practically out-of-pocket for a tech community, and they get grants. So it’s totally replicable. I’ve been reminded that it’s important to treat these kinds of workshops more like a community introduction than as standalone events; local user groups and communities should be the teachers, and email blasts and encouragement should integrate participants into their local hobbyist groups.

Saturday morning’s lecture included some review of stuff I knew, but it went fast enough that I was still learning most of the time — like, how to ask for the nth character in a string, or how for-loops quite work, some subtleties of scope, etc.

Then the project bits — the teachers and their presentations weren’t quite as polished as Jessica McKellar, who had led the earlier parts of the workshop. But I still learned a lot and got to make cool things happen using, say, the Twitter API, and that was very neat. As designed, the workshop led me through small, basic exercises first (the equivalent of finger exercises in piano), then showed off visually satisfying things we could do with Python and its ecosystem.

Aside from tiny minor delays, the workshop basically ran like a Swiss watch the whole time. I was impressed. It takes a lot of preparation, skill, and practice to make an event like that go so smoothly and teach so many people; congrats to the workshop volunteers! And I’m glad I went, learned and remembered Python, and got more confidence to attempt projects.  On a community management level, I’m also massively grateful that I’ve seen firsthand an example of how we can construct and maintain these parts of the pipeline, to help more girls and women get into STEM.

The workshop so excited me that I then did all the Python exercises on CodingBat, and started Python Challenge (I’m at step 4 or 5 right now). They’re complementary. They both gamify learning, and you don’t have to look at how other people are doing, and they both have somewhat granular ways of kindly telling you when you’ve done something slightly wrong. With CodingBat it’s the unit tests, which go from red to green when you cover another edge case. In Python Challenge, for example, at one point I went to a URL where I had transformed the filename from the previous URL per a transformation hinted at in the challenge. The URL had ended in .html, and after the decryption, it ended in the extension (making this up to avoid spoilers) “.ywnb”. At that address was a text file that the server signalled you should download. I downloaded and opened it and it just said, “have you ever heard of .ywnb files?!” or something like that, implying basically that I shouldn’t have transformed the file extension, just the filename. So, it didn’t just fail, it gave me a nicely furnished dead end, signalling kindly but playfully that I had done something understandably wrong.

Screenshot of two progress graphs from CodingBat

Progress graphs from CodingBat, showing my attempts to solve two problems; the green portions are unit tests that passed, and the red and pink portions are unit tests failing. The exercise “String-2 end_other” took me a while, but I got it.

There’s probably some game design term for this kind of compassionate railroading, but it makes me think of the caring side of the caring-to-combative community spectrum. And in both cases I got that feeling of being nurtured by someone who cared, even if that someone else is Nick Parlante (CodingBat’s author), years ago and a continent away.

Also, CodingBat is pretty clear about how you solve any given problem (declaring that this set of problems is about lists and only 1 layer of for-loops, or what have you), whereas in the Python Challenge you have a puzzle that you know you can solve with Python but that you can hit a bunch of different ways. If you want an experience with arguably more realistic exercises, the author of CodingBat also made the Google intro to Python, which includes exercises along the lines of “munge the semistructured data in this file with these guidelines.” I intend on doing that this year.

Python Challenge logo

Python Challenge is mysterious, yet friendly.

It was good to have my spouse Leonard nearby to help me when I was working on the Python Challenge, to (for example) help see that I had called a variable inconsistently, to notice that I couldn’t import a file as a module because I’d named it “1” instead of something starting with a letter, to remind me how to learn of (“dir(filename)”) and then use (“filename.function”) the functions within it, to tell me about string.replace, and to tell me how to use the interactive prompt properly to investigate how you call a method on an object of whatever type. But I did nearly all the work myself. And as of today I feel a lot more comfortable using for-loops, knowing what data structures to use for a problem (I decided to use a dictionary datatype the other day! And it worked! So exciting!), getting stuff in and out of dictionaries, and generally thinking “I can learn this!” Data structures and algorithms had felt mystifying to me. Now data structures no longer do. I remember the moment in Python challenge when I thought, “I’ll use a dictionary!” and I was right! It’s great.

CodeLesson, CodingBat, the Python Challenge, Leonard available for occasional consultation, and the Boston workshop are the dance partners I needed.

I’ve just begun CodeAcademy and stalled (as with all the rest of my learning-to-code endeavors) due to lack of time, as my job is pretty absorbing right now. (Worth a skim: Scott Gray’s thoughts on CodeAcademy.) I also haven’t tried Philip Guo’s online Python tutor which may suit me better since I’m more interested in Python than JavaScript right now. But I thought it might help others to talk about my journey so far.