Tag Archives: programming

Feminist license plates, by Liz Henry CC BY-SA 2.0

Newbie coding puzzles and problems

This is an Ask a Geek Feminist question for our readers:

I am a relative newbie in the world of coding. I took two semesters of intro to programming with Java this past school year and I’ve been to a few python workshops. All in all, I’ve only been building programs for about eight months. I was wondering whether there are some good sources of newbie-friendly project ideas out there that will keep me going over the summer so that I don’t lose all my skills before my fall data structures class.

I have had Project Euler recommended to me in this capacity, but I don’t take the amount of delight in mathematics that the person who recommended the site to me does. Are there others that are a bit more down to earth?

This question seems to be seeking less ongoing projects, and more a source of short exercises and puzzles. Anyone got anything? I only know of Top Coder but it’s not newbie-focussed and from what I know of it it’s also rather focussed on mathematical puzzles.

Google, gossip, and gamification: comparing and contrasting technical learning styles

I just ran across Karen Rustad’s “How to teach programming: shy, practical people edition.” She cared more about making practical things than about what she perceived as “coding,” so her early technical life centered on HyperCard and making webpages, rather than boring faffing about with “mathematical curiosities.” Finally she came across a project she wanted to help, and scratching that itch meant learning more programming:

Basically what revived my interest was having the opportunity to work on OpenHatch. Getting thrown into web app development and all the associated languages and tools — Python, Django, git, Agile, bash and other command line nonsense — all at once? Yeah, it was a lot. But Python out of context is just a toy. Django out of context is plausible, but hard. Git out of context … wouldn’t’ve made any dang sense. So sure, I couldn’t remember half the git commands (Asheesh eventually made a wiki page for me :P) and I had to look up how to restart the Django development server practically every dang time. But I made do, and I learned it, because the context totally freaking motivated me to. Because *finally* code had a purpose — it was clear, finally, how it could be self-expressive and useful to me. Learning these tools meant I could help make OpenHatch exist. Like, fuck yes.

Different people learn in different ways, and for different reasons.

I figure I learn how to tinker in software, especially in open source, via three methods:

  • Google
  • gossip
  • gamification

I learn to search the Net well, iterating on keywords and site: and so on; I fall into or develop a network of folks who won’t think I’m stupid for asking questions; and I play little games with myself, or write them, feeling the thrill of the challenge, leveling up little by little.

I was missing all of these when I tried to Learn To Program.

Continue reading


“Put up or shut up”

One thing I love about open stuff, such as open source communities, is that we (try to) measure people by what they contribute.

I’m now Volunteer Development Coordinator for the Wikimedia Foundation (although I am not speaking for them in this post), so I care about the quality and quantity of contributions to MediaWiki, and about the people behind them.  In fact, I’ll partially be measuring my success through statistics on the number of people who offer code, bug reports, translations, documentation, talks, mailing list posts, and so on.

And it’s not just doing, it’s doing and sharing.  We value collaborative work, not hoarding.

This norm, among others, leads us to use “put up or shut up” to quash unproductive conversations, bikeshedding, trolling, and “you should…” unhelpful suggestions.  I once had the satisfying experience of saying, to a guy full of “why didn’t they do foo”, “you should totally post that suggestion to the mailing list!” and seeing him just shut up, defeated.  He knew that doing this without embarrassing himself would take a modicum of research and thought, and he had no intention of doing anything that arduous.  He’d just wanted to mouth off.  And now I’d revealed him as a noncontributor.

I saw another example in Kitt Hodsden’s talk about the Hacker Dojo community center.

all talk, no action

Another aspect of open source development we encountered, an aspect that is also found in just about every volunteer organization ever, are the troll subspecies “we oughta.”

The we-oughtas clan is often very vocal, they know what we should be doing. When it comes to the actual doing, however, they aren’t around, they aren’t available, or that’s not what they meant.

When this is the case, the response is either, that’s nice, and ignore it, or, just as in open source projects, “put up or shut up.” Essentially, if you’re not willing to put forth the effort of leading your own project – even if that leading is just finding someone else to lead your project – we’re not going to follow.

At its best, “put up or shut up” is empowering.  In Hodsden’s talk, she shared a story about a potential member whose “project was outside of our expected and supported hardware and software development spaces”:

We gave the answer we have learned to give for people who have crazy, though potentially awesome, ideas that in the future could work wonderfully in our space: lead the project: tell us what it is going to take for your project to succeed, develop a game plan, put in the safety measures, find supporters, work up a budget, start the fundraising, make it happen.

The community defines itself. If the community decides it wants to become a metalsmithing shop or an experimental biology lab, it’ll become that, because that’s what the community wants.

I bet all of us who have held leadership in FLOSS can attest to the two sides of “well go ahead then, patches welcome, make it happen, this is a do-ocracy.”  Great, we can empower people.  But how often do we use it to shut down discussions, ideas, and people we don’t like?  In particular, have you been part of an interaction where a privileged FLOSS project member used “you want it, you make it happen” to wrongly dismiss a concern that might require the whole community to change its behavior?

Look at what I did, in the anecdote I told in the third paragraph of this post.  I wasn’t purely kind or rational or ideologically anarchic in telling that guy to write to the list; I found him annoying and wanted him out of my hair.  I told him to contribute, superficially encouraging him, but really wanting to discourage him.  Have you ever been on either end of that, especially around geek feminist issues?

And I suspect this disproportionately affects newbies and non-native speakers of a community’s language.  This is the problem with saying “you want it, make it happen” in response to requests for a harassment policy, or for all of an app’s strings in one file to make localization easier.  The very people who need those new policies, procedures and abstractions are least able and worst placed to implement them.

(Small digression: in the case of harassment policies, consider “Did you know how to react?” by Noirin Plunkett, and Bitch Radio’s interview with Valerie Aurora.  The Ada Initiative, in suggesting and working towards conference anti-harassment policies, has far more energy and resources than would one individual seeking protection.)

Developers are used to dealing with requests for features or bugfixes, but FLOSS leaders are still learning how to deal with requests to socially engineer our projects.

And no matter whether you’re considering adding a feature, hosting a sprint, changing version control systems, or joining a conservancy, it’s sensible risk mitigation to chat about it before putting substantial effort in.  This is a different kind of work, not coding, but building support and getting the lay of the land.  And it’s part of contribution.

So, fellow FLOSS leaders: If you want to grow new contributors, along with giving them permission to suck, build personal relationships with them.  In private or face-to-face, listen as they vent and discuss their ideas, even the half-baked ones.  Listen for the difference between “we should” and “I’d like to/how do I?”.  Sometimes they’ll need sympathy, and sometimes advice.  If you say “go do it then,” say it encouragingly, not dismissively.  Watch out for moments when a marginalized potential contributor is essentially asking you, “help me help you.”  And watch yourself in case you’re about to do what I did, using “put up or shut up” to shut down someone you find abrasive.  Because sometimes I’m abrasive too, and sometimes I have good ideas.  :-)

As hypatia puts it: “a gentle ‘that’s definitely an issue, could you file a bug’ goes a long way.”

Boston Python Workshop logo

Lessons learned from the Boston Python Workshop, an outreach event for women

This is a guest post by Jessica McKellar. Jessica is a software engineer and an organizer for the Boston Python Meetup.

This entry originally appeared at the OpenHatch.org blog.

My name is Jessica, and I’m an organizer, curriculum developer, and lecturer for the Boston Python Workshop, a free, 1.5 day project-driven introduction to Python for women and their friends. The workshop has run twice, in March and May, and the third run is happening in July at Google Cambridge.

I’d like to share some of the lessons the Boston Python Workshop staff have learned about organizing outreach workshops and our goal of bringing more gender diversity to the local Python community.

First, the structure of the Boston Python Workshop

Boston Python Workshop logo

The Boston Python Workshop is for women and their friends who have no or limited programming experience (I’ll talk more about “women and their friends” in a bit).

The workshop is held on a Friday evening and all day Saturday. On Friday, attendees set up their development environments and start learning Python through a self-directed tutorial and practice problems.

On Saturday, attendees continue learning Python with a 2 hour interactive lecture. Attendees and staff socialize over a sponsored, on-site lunch. In the afternoon, we break out into groups to practice Python while rotating through three short projects on a variety of fun and practical topics. Our projects have included writing parts of a Twitter client, how to cheat at Words with Friends, writing a basic web app in Django, and writing graphical effects for a ColorWall. Our material is all online, so check it out.

This comes to a solid 10 hours of learning and practicing Python, with support from a strong group of volunteers from the local programming and open source communities. The workshop is run under the auspices of the Boston Python Meetup (I’m one of the Meetup organizers) and we hold follow-up events like an open Project Night through the Meetup.

Lessons learned about teaching Python to beginners

Boston Python Workshop attendees watch a presentation

There is a huge difference between teaching Python to people with programming experience in another language and people with absolutely no prior programming experience. The biggest lesson we learned is that if you are going to teach absolute beginners, you have to commit to really starting at the beginning:

Continue reading

Linkspamming the night away (11th May, 2011)

  • May 13 in Boston: A project-driven introduction to Python for women and their friends (unfortunately now gone to “waiting list only” status).
  • An open letter to the Australian SF community: However, the venue staging was awful, in terms of its accessibility. High, and only accessible by temporary stairs, the stage was off-limits to anyone in a wheelchair, anyone in an electric scooter and anyone with a significant mobility impairment… This should not be acceptable to us as a community in the twenty-first century.
  • How To Encourage More Brown Women To Launch Tech Startups I realized that simply asking, “Are you going?” is enough to make a difference in someone’s awareness.
  • As benno37 says: Tip to open source developers: don’t name your library after a sexist/offensive/illegal activity. I’m looking at you upskirt! Seriously, wtf. (So that not everyone has to google for the term, upskirt is a library to parse the Markdown syntax for webpages. The Wikipedia page for Markdown has loads of alternative implementations to choose from.)
  • Confessions of a Fairy Tale Addict: Because it is a lifestyle choice, to write fairy tale books. Make no mistake. I mean, in our culture, the phrase fairy tale practically means: trite, lightweight, and fluffy. You know, girl stuff.
  • There’s a long series of interviews conducted in 2010/2011 with women working in planetary science. See for example Natalie Batalha (From postdoc to Deputy Project Scientist on Kepler), Amy Jurewicz (Stardust, Genesis, and SCIM) and for that matter Emily Lakdawalla (It is NOT failure to leave academia).

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.

Career change to programming

This is an Ask a Geek Feminist question for our commenters. This is the last post from round 4. Round 5 will run in the second half of 2011.

I have a 24 year old niece who is currently working as a fashion designer but is thinking about changing careers and getting a Computer Science degree. After two years in her job she has discovered that she doesn’t fit in very well with the culture or with her co-workers. She does really well with the graphic design programs (while all her co-workers are computer phobic), and she took some programming classes back in high school, so I think she can do it.

Since I’m an old geek feminist myself I’d like to encourage her in whatever way I can. Unfortunately, I’ve been unable to work for more than 10 years due to health issues so my knowledge of what skills are needed, and what job opportunities exist out there, is pretty outdated. My question is this (and I hope it can be phrased in a way that provides general help for anyone in this situation, not just my niece) –

Any advice on how to make this career change easier? She’s looking at going back to get a master’s in computer science (she would have to take a lot of basic math/science first) but I’d love to hear other suggestions. Are there informal venues where she could learn? Conferences or clubs or something like that? What are the best online places where newbies can hang out and learn? What programming projects could a beginner work on to get some hands-on experience that would make them more employable? What would help to give her confidence in her ability?

For example, back when I got my own degree (1978–1982), I worked at several different programming jobs on campus, mostly to pay my way through school, but it turned out that the work experience was invaluable when I started looking for a full-time job. Is this type of thing still relevant or is it hopelessly old fashioned?

Drupal Voices 100: Jack Aponte on Diversity, Power and Privilege in Open Source Communities

Neville Park is a queer mixie nerd in Toronto. This post originally appeared at Wild Unicorn Herd.

An interview with Palante Tech‘s Jack Aponte (a. k. a. Angry Brown Butch) on, well, diversity in Drupal.

Background: Drupal is a kind of CMS (content management system); it’s a particularly powerful and versatile platform for building and managing websites. It is free and open source, which means that you don’t have to pay to use it, and anyone can help work on it. There’s a very large and international community of people who use and work on Drupal, and like the wider tech community, it’s dominated by white straight cis men. Open Source people, and Drupal people in particular, pride themselves on having a “doacracy”—a community that values getting stuff done above traditional authority. This could create a beginner-friendly, non-hierarchical environment of subversion and experimentation. In practice we just have white straight cis men getting SUPER DEFENSIVE at the suggestion that maybe they got where they are not only by the sweat of their brow, and shouting down any mention of patriarchy, racism, or any other systemic oppression when people run the numbers and get to wondering why there’s so little minority representation in Open Source.

There is a nice summary of the podcast at the link, and my transcript is below the fold. I’ve added links to give context to some of the references Jack and the interviewer make.

Continue reading

I blame the Patriarchy for my technical incompetence.

This is cross-posted at Restructure!

I demonstrated an aptitude for computers when I was a young girl, but I didn’t have home Internet access until I graduated from high school. I blame the Patriarchy, partly.

By the time I was in high school, I was usually the only person in my classes who didn’t have any Internet access, while most of my peers had high-speed access. When my peers communicated with each other through e-mail and chat, I was shut out of the social conversation and didn’t understand the “technical” terms they were using. I understood the creative potential of being able to communicate with computer users all over the world. I knew that Internet access would allow me to communicate with others without my social anxiety getting in the way. However, my father was hard-set against the idea of “the Internet”.

For five years, I was part of a persistent family campaign to convince my father that we should get Internet access. He thought that the Internet was a software program that was just a “fad” and would go out of style. Back then, the mainstream media was even more confused than now about what “the Internet” was. The news sensationalized stories about online predators luring young girls through “the Internet” to rape them. The implied moral of these news stories was that the Internet was dangerous and full of sexual predators.

My father did not work in an office then, so he heard more about “the Internet” through his coworkers. One male coworker basically explained to my father that The Internet Is For Porn. My father came home and told us that he was never going to let us have Internet access, because girls especially should be protected from exposure to pornography.

Continue reading

Double Major

I’m back in school, as some folks have probably already gathered from my microblogging. I’m finishing up a double major in Computer Science and Equity Studies at the University of Toronto, and if all goes according to plan I’ll be graduating in May 2011.

While this may sound like a strange combination, it makes perfect sense to me – I’m interested in equity issues within the STEM fields, especially computer science.

It turns out the combination of fields come in handy in unexpected ways some times. After proofreading a paper I wrote for a Women and Gender Studies class for me my friend Valerie suggested that some quantitative data might be useful in supporting one of my assertions. In my paper I argued that while early feminist scholarship on sexual harassment failed at intersectionality, more recent scholarship has embraced it. To support this, I wanted to compare the number of citations for Catherine MacKinnon’s Sexual harassment of working women: a case of sex discrimination to Kimberle Crenshaw’s Demarginalizing the Intersection of Race and Sex: A Black Feminist Critique of Feminist Theory and Antiracist Politics. These are both profoundly influential works, but I wanted to quantify how their relative influence on scholarly work.

So I did what any self-respecting CS student would do – I wrote a script to scrape Google Scholar for citation numbers over time and made a graph comparing the two :)

For your edification, here’s scholargraph.pl:

# (c) 2010 Leigh Honeywell
# Licensed under the Simplified BSD License, reuse as you will!

use strict;
use LWP::Simple;
use LWP;

# set up LWP user agent and cookies; pretend to be Firefox 4 just to be cheeky
my $lua = LWP::UserAgent->new(
    keep_alive => 1,
    timeout    => 180,
    agent =>
"Mozilla/5.0 (Windows NT 6.1; rv:2.0b7pre) Gecko/20100921 Firefox/4.0b7pre"

# edit in your citation numbers from google scholar and the appropriate
# date ranges for what you're trying to do
my $crenshaw = getCites( "10759548619514288444", "1977", "2010" );
my $mackinnon = getCites( "2195253368518808933", "1977", "2010" );

sub getCites {
   (my $cite, my $startyear, my $endyear) = @_;

    for my $year ($startyear .. $endyear) {

        #construct the query URL using the above data
        my $post =
          $lua->get( "http://scholar.google.com/scholar?cites="
              . $cite
              . "&as_ylo="
              . $year
              . "&as_yhi="
              . $year );

        # scrape the returned page for the number of results
        if ( $post->content =~ m#of (?:about )?(d*)</b># ) {
            print $cite. "," . $year . "," . $1 . "n";
        elsif ( $post->content =~ m#did not match any articles# ) {
            print $cite. "," . $year . ",no resultsn";
        else {
            # some kinda error happened, most likely google caught me!
            print $cite. "," . $year . "errorn";
    # don't kill google's servers
return 0;

Oh and if you’re curious, Crenshaw’s paper was cited far more than MacKinnon’s, pretty much as soon as it was published. Intersectionality FTW!

And as these things always go, of course I spend the evening working on this only to find that there’s a Perl module as well.

CompSci Woman: Looking for stories of women in computer science

My friend Cate and her friend Maggie have started a blog called CompSci Woman that I think many of you will enjoy reading, and hopefully some of you in computer science will be interested in contributing too! The idea is to make it easier for younger women to find role models who are already involved in the field. They note that although there’s actually lots of us, being female and in computer science is usually an aspect, not an identity, so we’re not all going to show up in Google. Read about the ideas behind this project here.

For September/October, they’re accepting guest posts especially on the topic of “How I got into CS.” I know many of our readers and writers here have interesting stories, so if you have some time, please consider writing a post for the project! The letter for potential contributors is at the bottom of this page, but here’s the short version: “If you are interested in contributing, submit your post (include a link to an illustrative image if you like) along with a brief bio and a photo. You can email this to female.compsci.blog AT gmail DOT com.”

I just put my own story up there. Mine’s slightly unusual because unlike many women who suffer from impostor syndrome especially when they first start out, my story was shaped a lot by feelings in the opposite direction…

How I Quit Computer Science (And What Drew Me Back)

To explain how I ended up in computer science, you have to understand the story of how I quit.


First year computer science was geared towards students who had little to no experience with computers, and I realised that I’d be wasting several years of my life waiting for my peers to catch up. On top of that, it was boom times and CS was being viewed a shorter path to a 6-figure salary than the more education-intensive med school or law school. The people who were there weren’t really in love with the discipline; many were just in love with the idea of being rich. I wasn’t interested in paying thousands of dollars per term to waste my time with peers I didn’t respect in a program that was boring me to tears.

I was disappointed, disillusioned, and wanted a challenge that was clearly going to be a long time coming in CS. So I dropped out.

Read the rest at CompSci Woman.