Andromeda Yelton

Across Divided Networks

thoughts from Toronto on teaching code to librarians

January 15th, 2014 · Uncategorized

I’m writing this on a plane back from Toronto, where I spent a few days teaching librarians to code as part of the Mozilla Foundation’s Software Carpentry program (which was basically the funnest thing ever, and Mozillans are smart and nice, and Toronto makes a spectacular case for itself, and Canadian librarians are 100% high-grade awesome).

Teaching this clarified for me some of the difficulties I had with my online Python course (where by “clarified” I meant “I sat bolt upright at 3am wondering why I hadn’t realized this before and had to spend the next hour writing it all down and trying to figure out how to get back to sleep”). So let me try to put that into words — but first I need to back up and explain an important paradigm I have for understanding the programming learning curve.

I believe, from personal experience and talking to people at different places on the programming learning curve, that the kinds of problems you are engaged with fundamentally change with every order of magnitude of the size of program you write. (Yes, lines-of-code is a bad metric, but it’s a good ballpark, so let’s roll with it.) They’re all important, complex, meaningful problems (though it can be hard to remember that you ever needed to solve them when you get too many orders of magnitude past them). They go roughly thus:

  • 0 → 1 line. “What the heck is this?!” What is a programming language; if applicable, how does it differ from other related things you may be familiar with, like markup languages or Excel formulae; what do “function” and “control flow” mean and why do you care.
  • 1 → 10 lines. “How can I do something useful with a programming language?” And by “something”, I mean one atomic task, but one that runs from beginning to end with correct syntax and employs those fundamental conceptual building blocks.
  • 10 → 100 lines. “How do I break a task down into subtasks?” Modularity, reuse, DRYness, planning.

I’m not going to articulate the next few orders of magnitude, both because they are not relevant to beginner or intermediate programmers, and because I’m climbing the 1K → 10K transition myself, so I’m not able to articulate it well. But they have to do with elegance, abstraction, performance, scalability, collaboration, best practices, code as craft.

The 3am realization is that many, many “introduction” to programming materials start at the 1 → 10 transition. But learners start at the 0 → 1 transition — and a 10-line program has the approachability of Everest at that point.

This is why the CodingBat exercises that Boston Python Workshop developed are such a big deal. From this side of the 0 → 1 transition they look meaningless — they’re functions, with the def function_name() part already written, that require you to write, in many cases, one line of code to accomplish the goal. One. Line. And they’re not meaningless at all. They’re where students discover what they did and didn’t understand from readings and lectures and messing around with the shell. They’re where students discover that they may have vocabulary and syntax, but they don’t yet have a conceptual model of what a function is. And in practicing writing one-line functions, they develop that conceptual model. It’s absolutely critical.

And this is going to be the next big thing I struggle with in teaching this better. Because the fact is, you want to be teaching examples that are grounded in real-world tasks. They’re motivational; they’re more comprehensible than abstract examples; they make it easier for students to connect course material to their actual work, meaning they’re more likely to be able to keep using it, to climb more of the learning curve on their own — to get to a place they can actually use this stuff, which is not a place you can get people in a day or two.

But I don’t know how to do a real-world task as a one-line function. I know how to write a ten-line function that does something real-world-useful, and how to walk students through discussing it and modifying it. And that is great for the students who have already climbed the 0 → 1 learning curve. But it’s baffling for the ones who haven’t.

I think I can do this, with thoughtfully chosen examples. I think I can come up with one-line things that can be wound into ten-line things, so students leave a course with a working program that does a thing they can imagine using (or, at least, a working program that’s a close enough cousin to something useful that it suggests where to go next and gives them a head start in getting there). But this is going to be hard. This is totally, “I apologize for the length of this letter; I did not have time to make it shorter” territory. Simplicity is brutal. And one-day intensives, or four-week onlines, do not have time for unnecessary things.

At any rate. I came out of the last two days with this to mull over, plus a stack of books and articles of research on code pedagogy, plus a bunch of good memories and tasty food experiences and new people to follow on Twitter and face-to-face encounters with people previously followed, so it’s just made of win. But I welcome your thoughts.

→ 11 CommentsTags:

#libtechgender: conference codes of conduct as seen from your world and mine

January 3rd, 2014 · Uncategorized

In discussing ALA’s Statement of Appropriate Conduct with ever-wider audiences, I get the growing feeling that we stand at different starting lines, and it affects our understandings of the words in the statement.

So if you looked at the Statement and your first reaction was “but…free speech?” or “nanny state” or “political correctness”, this is for you. Let me attempt to explain some starting points. (Trigger warning: graphic violence, rape, rampant misogyny.)

Proponents of these codes are not concerned that people might disagree with them (even disagree passionately). We aren’t concerned that people might not be nice. We aren’t wanting to run to some hammer of authority every time someone says a group we’re in might be other than pure unicorns and roses.

Here is the world I live in:

I live in a world where famed game developer and technical writer Kathy Sierra disappeared entirely from the internet for years after she received a series of death threats, including publishing of her home address, social security number, and false allegations that she had abused her children.

I live in a world where Anita Sarkeesian ran a Kickstarter to support a project on sexism in video games, and as a result someone created and distributed a video game consisting solely of clicking on her face until you had beaten it to a bloody pulp.

I live in a world where merely having a female-gendered nickname on IRC (a chat network important in the technology world) makes you 25 times more likely to receive unsolicited malicious private messages, even if you never say a word.

I live in a world where I have zero interest in going to CES because I don’t want to have to deal with the naked booth babes (and am therefore cutting myself off from the biggest trade show relevant to my interests). Where a friend of mine takes for granted there will probably be naked women on conference slides in her field. Where people complaining that a joke about being “raped by dickwolves” in a comic about gaming isn’t funny leads to its creators selling dickwolves t-shirts and large numbers of people to this day defending this as a reasonable position to hold. Where a hackathon sponsored by a major tech news web site gives time on stage to an app intended solely for sharing photos of women’s cleavage, with a nine-year-old-girl in the audience. Where a major tech news discussion site is so prone to misogyny many women never bother to spend time there, at the same time as it is suspected of repeatedly quashing discussion critical of misogyny.

I live in a world where I treat it as great and inexplicable good luck that no one has yet threatened to rape or kill me just because I blog and speak publicly about technology and sexism under an obviously female name, and I have the backup plan in my head of how to moderate comments and log IPs if it’s ever needed, and the list of which friends have my back enough that I’d ask them to wade through that kind of cesspit for me. I live in a world where using my own name on github and IRC was a specific conscious choice that required actual bravery from me, because I know that I am statistically exposing myself to retribution for doing so.

Let’s say that again: I live in a world where being myself in public, talking about things I care about under my own name in public, is a specific choice which requires both courage and a backup plan.

In this world some people choose not to be themselves in public. They choose not to speak, or to speak only under disguises – ones they can’t wear at conferences, face-to-face.

That is my concern about free speech. That right there.

That is the aim of conference codes of conduct. To clarify the threats — not to eliminate them, because you can’t ever do that, but to state that this is a place where silencing people through graphic threats of sexual violence or open and regular degradation is treated as unacceptable, that if it happens to you there’s a place to go, and to (crucially) say that the bystanders care too. That you’re not in a place where a lot of people are decent but indifferent and someone somewhere might attack you and it’s all on you to cope, but you’re in a place where a lot of people are decent and affirmatively have your back.

And by clarifying the threats, by publicly affirming the decency of the bystanders, we create a world where you don’t have to be quite so brave to speak up. A world where the uncertain, the new, the outsiders have a voice too. A world where maybe the barrier for being a woman in tech — or an outsider coming in — is not the ability to say “fuck you”, but merely the interest in saying something, anything.

If you have been reading the statement of acceptable conduct from the frame of mind that you haven’t encountered problems and things seem fine and the only speech you can imagine it chilling is the edgier end of the perfectly fine, please go back and reread it from my world. It reads differently.

→ 44 CommentsTags:·

The ALA Statement of Appropriate Conduct: a FAQ

January 2nd, 2014 · Uncategorized

If you’re here from Library Journal, welcome!

For regular readers, I have an article in today’s Library Journal about ALA’s new statement of appropriate conduct for conferences. It covers the history and context behind this sort of statement as well as why it’s valuable. Go have a read.

Now that you’re back: I get a lot of questions about the statement. I’d like to answer some of them here, and invite you to ask other questions you might have in the comments. A disclaimer first, though — here are some things I am not:

  • ALA’s lawyer
  • a lawyer at all
  • an ALA staffer
  • an HR expert
  • possessed of the sole or definitive interpretation of the statement

Just so we’re clear on that. I was involved with drafting the statement and I am somewhat familiar with other conferences’ policies and some of the incidents that have motivated or been addressed by them, but I am not the final word on this, and I encourage you to do your own research and analysis. I think the statement is most valuable when it serves as a beginning – a point of departure for us to have conversations about who does and doesn’t feel included in ALA and why and what we can do about that, how our backgrounds and experiences differ and what we can learn from that. How to, in the statement’s words, exercise our “shared responsibility to create and hold [the conference] environment” we want to have. So let’s talk.

And now, some questions!

What happened to impel people to adopt this statement?

The statement was not prompted by any incident of harassment at an ALA conference.

There have been a lot of incidents of harassment in the worlds of technology, science fiction, open culture, gaming, etc., and in response to those, conferences in those worlds have increasingly been adopting statements of this type (usually called codes of conduct or anti-harassment policies). Quite a few librarians who are also involved in those worlds have asked me and others over the past year whether ALA has such a policy; the statement is in response to this interest, and in advance of future need (though of course I hope it will never be needed!).

This does not mean that there has never been harassment at ALA or other library conferences. I had heard of some incidents of sexual harassment in the past (although Sarah Houghton is the only person I know of who has blogged about them). (Edit: I’m wrong; Lisa Rabey has blogged about this, too. Which I knew and should have remembered; I apologize for the oversight.) In the course of drafting this policy, I have heard about more incidents, rooted in race and gender identity/expression as well as sex. (Please note that the language of the statement, following existing ALA language on anti-discrimination, is not just about sexual harassment but specifically names a variety of groups which might be targets of hate speech or discrimination.) Some of these incidents were addressed quietly by conference services; some of these were unaddressed and unreported.

This, to me, is one of the most important aspects of the statement. If people are being harassed, let’s make sure they know they have recourse. And let’s talk about it. Let’s not quietly assume that conferences are good places for everyone when they’re not.

Isn’t this an attack on free speech?

I have lots of feelings on this, but the short version is, “no; the opposite, actually”.

One: I do think there are valid intellectual freedom concerns, particularly since it’s impossible for a statement of this type to delineate permitted and forbidden conduct with absolute clarity. (I invite you to try sometime; it’s hard! We argued a lot about this in the drafting. Any bright-line rule you state will have situations where it is unambiguously wrong, and any attempt to be comprehensive will fail. A policy can do no more than state principles and provide guidance. That said, I do wish the statement had clearer language on the process of investigation and resolution, how far the discretion of conference services goes; I think due process safeguards are especially important when you can’t state absolute rules.)

Two: The statement is fundamentally about being a socially competent human being. There are lots of things that you and I think but don’t say, all the time, because we recognize that they would be inappropriate for the context we’re in. This isn’t an imposition on free speech; it’s a recognition that we live in contexts with other people, that our words affect them, and that it’s incumbent upon us to speak in ways that treat others with dignity and promote the kind of world we’d like to live in.

Three: I believe a statement of this type, on balance, promotes free speech.

Yes, it may discourage some people from saying some things of particular types.

But it also articulates, to everyone who might have felt marginalized or disenfranchised in this context, that their perspectives are welcome. It encourages whole classes of people to attend and to participate.

I had been active in code4lib for perhaps a year before they adopted their anti-harassment policy. And I did not realize until that point that I had spent the whole time looking over my shoulder waiting for the attack to come. Being a woman in tech is sufficiently dangerous that mere consistent decent behavior by the overwhelming majority of my colleagues was not enough to dispel the feelings of threat; I needed to actually see these values articulated and see prominent members of the community (including men) rise in defense of them. Now I feel like I’m not just someone who hangs out in code4lib – I’m a code4libber, and my voice matters as much as anyone’s.

I’ve never feel threatened at ALA, but I know that not all my colleagues feel comfortable there. And I am guessing there are many more people whose voices we never even hear. They matter to me, and I’d like to hear them.

Four: If you’ve never had a problem at a conference and you’ve never heard of people having a problem, I imagine this feels like it makes things worse: everything was fine, and now there are limits that there weren’t formerly.

But that is a big if. If you’ve previously experienced conferences as unsafe or unwelcoming — if your starting point is not “everything’s okay” — then an explicit statement that you are welcome and that you have recourse if threatened makes things better.

If you are feeling like the only implications of this are negative, I encourage you to seek out people who feel differently, and to listen generously to their experiences.

Does this mean ALA is now a nanny state?


ALA has neither the staffing nor the inclination to run around policing everything you say.

Does the statement allow for [action]?

Remember, I am not the definitive interpreter of ALA policy. I think if you’re wondering if [action] is legitimate, you should talk to the actual audience for that action. How do they react? Are they laughing at your funny joke, or laughing in that nervous way that people do when they don’t want to admit they’re uncomfortable? Do they say go for it, or call you out for proposing something dumb or tone-deaf? Do they seem okay with it except then you realize over time your audience has become more and more homogeneous because everyone unlike you is drifting away? Do they say, ohmygosh that rad, or, you know, I’m not okay with this because…

Me personally, I’ve rolled with it as a Battledecks speaker when an underwear slide came up (and I was damn funny, too). And I’ve been at a dinner with remarkably copious bourbon flights where one of my companions had to leave early to go to a burlesque show featuring bedazzled junk. And while I’m at it I can’t make social plans locally in late August because all my friends are at Burning Man. So me, personally? I am probably okay with anything you want to do, as long as the people with you are okay with it too.

So talk to them. Ask. And if you’re in public space and just anyone might wander by and so you can’t ask? Well. Think.

The statement has [problem].

It may well! I don’t think it’s perfect, and I doubt anyone involved in drafting or adopting it does, either.

I’m a startup technologist. I believe in getting the minimum viable product out there quickly. You can spend all the time you want adding and polishing bells and whistles, but fundamentally you don’t know what’s going to work until you put it out there in front of people and see how they react. So you make your MVP. And you see how it goes, and you iterate.

Here you go. That’s the google doc that was used to draft this thing; you can see the entire process. Anyone with the link (that means you!) can comment.

There are also traditional venues available to you, like ALA Council, or its executive board or conference services committee. (Remember, all ALA meetings are open.) So talk! (And don’t forget that ALA staff have to be able to actually implement the policy.)

→ 3 CommentsTags:

#libtechgender: the dangers of a single story

December 21st, 2013 · Uncategorized

Let me tell you some stories.

One of my favorite TED talks is this, Chimamanda Ngozi Adichie, “The danger of a single story”:

“The discovery of African literature saved me from having a single story of what books were,” she said — a single story that could be gripping and wonderfully written, that inspired her to be a writer, but also made it unthinkable that girls who looked like her and lived like her could exist in stories. (But watch the whole thing.)

One of the stories I’m following today is Andy Woodworth’s airing of grievances about where we should stop wasting our energies in libraryland, and Cecily Walker’s (excellent) follow-up post on intersectionality and the librarian image — quite rightly calling Andy to task for using language that implies librarians come from a single story, and therefore have a burden of proof on ourselves to prove competence when we depart from that story.

We are not, of course, one story. We are many stories, overlapping and crisscrossing through “librarianship”, but pulling a million threads in along the way, and pulling the threads of librarianship out into many places. Nor is stepping outside the expectations of a single story always a choice. I can’t choose to stay inside the dominant story of tech by being male; Cecily can’t choose to stay inside the dominant story of librarianship by being white. We never stepped outside. We just are.

Another of the stories I’ve been following (part of) for longer has been that of conference codes of conduct. In talking about them with ALA leadership these last six months I’ve found that the stories evoked by the term “code of conduct” vary quite a bit depending on the listener’s background. Those of us whose threads include the broader world of technology have a particular set of (deeply held, terribly important) stories we bring to the table, a context that people from other worlds lack and may find surprising; sometimes they have their own stories (often, in turn, surprising to me).

ALA is committed to telling the code of conduct story more widely, and hence has asked me to moderate a panel on #libtechgender issues. I’m still finalizing the panelists (not least pulling strings in hope that Cecily can be one of them) — but it’ll be Saturday at 4:30 in the convention center, room 201C.

One of my guiding principles in constructing this panel has been that talk above, the dangers of a single story. It would be so, so easy for me to assemble a libtechgender panel which gave the impression that there is only one story of gender in library technology, and it is the story of white, cis, straight, thirtysomething (-appearing) women (such as myself). So easy.

And I would turn down the request to moderate sooner than I would run such a panel. Because libtechgender is not a single story; it is many stories, overlapping and diverging and sometimes in conflict. I cannot conceivably fit all those stories in a panel of reasonable size or in an hour. I’m already struggling to hold all the moving parts together. I’m already frustrated that the whiter, straighter, cis-er, and thirtysomething-er my prospective panelists are, the more likely they are to say yes — to have availability, funding and release time or the ability at least to manufacture it (or, alternatively, less competition for their time from the million other people who would also like to hear their stories at a conference). But we can and will scratch the surface of more than one story. We’ll be messy and provocative and leave unresolved threads so you can repair to a bar (or blogosphere) and argue afterward. And we, and you, I hope, will resolutely take all those stories seriously — to recognize that even if they conflict with our own experiences or assumptions they ring true for someone — and to ask, what would the world look like if I took it to be this way? What would that imply about everything else?

Saturday, 4:30, convention center, 201C (scheduler link). I hope to see you there.

→ 4 CommentsTags:·

reflecting on Introduction to Python for Librarians

November 25th, 2013 · Uncategorized

I’ve asked my students to reflect on their experience in my Introduction to Python Programming for Librarians class (now in its last week). I’m going to reflect on mine too, but I’ll do so publicly. :)

First off, the course sold out and had to turn people away. So I guess people really do want to learn this. Hooray! I felt like I could’ve done more to publicize it, but maybe that wouldn’t have a ton of ROI, considering.

And now for my torrent of categorized thoughts. (And then I want to hear yours, too!)

Boston Python Workshop and true beginners

The course is based on the intro to Python workshop at ALA, which in turn is based on the Boston Python Workshop, a one-day+evening sprint through Python fundamentals geared toward beginners. At ALA we covered the material in 7 hours, minus a break for lunch, plus time in advance for students to install Python and a text editor independently, so I used that to gauge how much to cover in the course.

And the thing is? That’s totally inaccurate.

In the one-shot version, students are often confused, but that’s not surprising because of the pace, and they generally accept that it’ll be intense and persevere through those feelings. Also, they have tons of help due to a great student-teacher ratio.

When you spread it out over a month, though…I think people expect to get to a place where they’re not confused. They have lots of time to think through the hard parts — which is great — but I think it means they also spend a lot of time confused (on which more later) and it’s harder to persevere, because they have different expectations about how things should feel.

I also think this has exposed how poorly these coverage goals work for true beginners. BPW has some wonderful beginner-friendly aspects to it (e.g. it’s good about identifying and defining jargon). But it takes a lot of time and practice to build mental models of these concepts, and the one-shot format (in which no one really expects to build those models) obscures how hard it is. You can frog-march people through a lot of exercises in a few hours, but that doesn’t mean you’ve got more than a cargo cult.

I expected to see a difference in how students with and without prior programming experience handled the course, but it’s a wider difference than I’d guessed, and not shaped like I expected.

I’ve started to think it’s not possible, outside of a truly intensive situation to cover enough material in four weeks to enable true beginners to program short scripts unsupported. So I’m turning over in my mind, what could one cover in that amount of time that would be useful? Going to have to mull that over for a while.

Feelings of confusion

Over the weekend, I came across this good essay on learning to code. It was tweeted with a pull quote about how you don’t have to fit the coder stereotype to be good at coding (I wholeheartedly agree), but the quote that stood out to me was this:

I’ve found that a big difference between new coders and experienced coders is faith: faith that things are going wrong for a logical and discoverable reason, faith that problems are fixable, faith that there is a way to accomplish the goal. The path from “not working” to “working” might not be obvious, but with patience you can usually find it.

Anyone who’s done much coding takes for granted that things will be really confusing (where am I, and why is this floor covered in yak hair and broken razors?). We get that, as you learn more code, you don’t actually spend less time confused — you just spend it confused about more abstract things, and with a bigger toolkit of better yak-razors.

But confusion is uncomfortable. And especially when you’re a beginner, the line between “this is confusing because it’s hard” and “this is confusing because I’m hopeless at it” is not clear (and yes, I did tell people explicitly about impostor syndrome). And I think some students have an expectation that things will become not confusing, that you do the exercises and at the end you are un-confused.

And it…doesn’t work that way. Maybe it never really did for any subject, but it’s a especially acute in programming. You get these total flashes of insight where it works and you feel like a genius and you’re standing atop a flaming wreckage of tracebacks totally triumphant, booyah…but you truly had to spend time climbing those tracebacks first.

I need to be way, way more explicit about this. How it’ll be confusing and that’s okay. How everyone who codes spends a lot of time confused, including experts, and confusion doesn’t mean you can’t do this stuff, or even that you don’t have a good grasp of it. How if you persevere you will get better tools, and you will find that the things that confuse you become more complex, at least. How some days, the best you can do is make code that reliably works and you don’t know why, but it works, and that’ll do.

Seriously, I still have no idea how some of the things I encountered in my first semester computer science class in college work. I literally emailed my professor about one of them just the other day. But I can also do lots of awesome stuff I couldn’t do when I was 17. It’s okay.

Be explicit about your nontraditional course formats!

A few students have indicated that they expected a more traditional course format – lectures and stuff.

I do not have those. I have lots of interactive reading (prompting them to do various things in the Python shell and asking questions about inputs, outputs, and expectations). I have sample scripts to read and modify. I have discussion forums, with questions that ask students to consider important functional elements of programs — trying to lead them to think like programmers, to identify the salient parts and reason about them.

And I have these on purpose. Regardless of people’s overall learning preference, everyone I know who’s learned how to code has done so in a hands-on way. I want them to get their hands dirty — to encounter actual errors, to be walked through how to recover from them in practice before encountering them in the wild. To test the differences between general ideas and pseudocode (which is what you’ll build in your head during a lecture) and actual running code, every step followed with blind literalism by a persnickety computer.

And the forums. And the fact that I sacrificed some coverage goals to ensure that everyone had a Python shell and a text editor, rather than looking for some online interactive shell. And the fact that I spelled out how you ask a good question, and what the canonical reference documents are. And the fact that the bibliography links to lots of online and face-to-face communities that do libtech and Python, and I’ve explicitly asked students to look into these.

Because — lone-wolf-in-the-basement stereotype be damned — code learning is social. We have this pipeline whereby you don’t get to the advanced parts if you couldn’t hack the lone-wolf gauntlet when you were ten, but in practice everyone I know who’s an advanced programmer has gotten there in part by working with other people. You collaborate on a codebase and you see someone else’s approaches to a problem, and they aren’t yours, and sometimes they’re better, and you learn. You shoulder-surf a colleague and see a tool you didn’t even know existed that makes some part of your workflow ten times faster. You get frustrated and ask a question and someone says, “did you try X?” And you hadn’t even known X existed and damned if it isn’t a revelation. You work together, and your strengths are this part of the codebase and theirs are that part, and suddenly you have something so complex it couldn’t fit in a single person’s head, and far better than either of you could have made alone.

Code-learning is social, and I want my students to be doing that early, so that when the class ends, when they’re on their own to take the material beyond the class, they are not, in point of fact, alone.

So. Reasons. I have them. But I need to be more explicit about them, because otherwise for some students it will feel like a violation of expectations.

Also I expect the class would benefit from some video of me thinking out loud about some of these problems, modeling a way to go about it.

Craft knowledge and non-beginners

So I had expected that beginners would get more out of this course, because the programming material is new to them, and non-beginners would be frustrated by some of the review and mostly be getting “oh, that way that PHP does a thing, Python spells it this way, cool”. Yeah. Totally wrong.

One of the things I have discovered, to my surprise, is how much I value craft knowledge. Like I said above, this stuff is social. The craft knowledge is all transmitted socially. And I’m being really explicit and intentional about surfacing it. I ask people to reflect on what a good comment looks like and why we do that. I talk about reusability and maintainability and modularity. I talk about it more than I expected to.

And I’m finding the non-beginners get a ton out of it. They have enough background that they don’t need to spend much time on if and for, and so they’re picking up on all these hooks about quality and style, and internalizing them.

That part is awesome.


Yeah, so I made some humiliating errors in my code samples. Which my students were clever enough to find and fix, but really, the educational benefit of that discussion was less than the educational detriment to others of stuff not working. Note to self: just because it’s a simple program doesn’t mean you get to skimp on testing. You are error-prone about details and always have been.

(Related note: every single class, you need to make a clean virtualenv and develop new scripts in it, so that you will discover what your students need to install. If you are developing outside of a virtualenv the program will not complain when it relies on a module you installed in 2011 and forgot about. And then your students will be confronted with yaks, and maybe not armed with razors.)

Encourage more discussion earlier

My students have been doing a more and more awesome job as the course goes on of helping one another. And this is great, not just because they’re helpful, but because they detail their thought processes, and they come up with solutions that are different from the ones I would have come up with (there are lots of right answers!). I’d like them to do more of that earlier, though, both because it’s great, and because as a practical matter I can’t provide sufficiently prompt and thorough feedback when I get a couple dozen emails per day from my class. (Not all of which require feedback, but some do.)

Will have to do some thinking to the architecture of forums. A lot of them are set so that you don’t see others’ posts until you post, because I want people to think about the answer independently, and because I’ve been a student posting the 10th nearly-identical answer on a forum where I can read everyone else’s content and it feels pretty pointless. At the same time, though, this format discourages discussion. I think I can get there with a more carefully crafted mix of open troubleshooting-and-discussion forums and more locked-down think-about-the-answer forums. (And then also be clearer about the visibility settings, and encourage people to at least skim their classmates’ answers, particularly if they were unsure of their own.)

Affective goals…?

I thought going into this that the hardest part of making the leap to an online forum would be preserving the outstanding affective quality of BPW. It’s so strong in creating a welcoming, inclusive culture, in naming impostor syndrome so it loses some of its hold over people, in having tons of help available. I feel like I should have a lot more thoughts about this at this point, and yet I don’t, and I’m not sure what’s up with that.


This is the part where I invite comment from my students, and from other code-teachers and online-teachers (and especially online-code-teachers). What do you think does and doesn’t work here? What should I keep? What should I change?

→ 5 CommentsTags:

#libtechgender: your world and mine

November 20th, 2013 · Uncategorized

This relates to yesterday’s post on ALA’s new code of conduct, and it doesn’t, and it does again.

So these all happened in the last two weeks:

I consider myself a pretty sensitive person with respect to these issues. In language as well as action, I try to let things be neutral and fair, evicting unnecessary and damaging assumptions. But I didn’t notice the gendered language [of a LITA Forum keynote] at all until I saw the tweets calling it out.

Eric Phetteplace, thanks to #libtechwomen, 9 November 2013

I was actually a little surprised at the gender thing with Github…it makes sense, I just had no sense of it. To know that the Github community is EVEN MORE biased towards males than general tech was…counter intuitive to me? I don’t know, just didn’t realize.

Jason Griffey, personal correspondence (in re this article on unpaid labor and open source, 18 November 2013

That said, I came in to the panel believing that the most important gender related issue in library technology was finding ways for well-intentioned colleagues to communicate effectively about an uncomfortable problem. Listening to my colleagues tell their stories, I learned that there are more direct and pressing gender issues in libraries.

Nicholas Schiller, #libtechgender: A Post in Two Parts, 9 November 2013

I should make clear here, yes, Eric and Jason and Nicholas are all white men in academic libraries. They’re also all staunch feminists who spend a lot of time listening, actually listening, to non-male-identified people’s perspectives about gender issues.

And yet here we are living in different worlds. I take for granted that using a female-gendered IRC/github nick and a picture of my face as an avatar is a conscious choice, and the fact that it has not yet occasioned blowback is just remarkable good luck which will run out in time. I take for granted people will use language which implicitly defines me out of geekdom in general, and its higher reaches of technical competence specifically (developer’s-girlfriend jokes and neckbeard references, I’m looking at you). I take for granted that people will be marginalized and threatened at work in ways it’s just not worth bringing to HR’s attention.

I take for granted all these things that are invisible to you. (And I am living with about all the privilege it’s possible to have — no doubt there are many more things others take for granted that are invisible to me.) And I have to spend energy on surmounting them all and it’s wearying, sometimes. And we talk and we’re friends and you listen. And you don’t see.

Do we (somehow, despite this constant obsessive blogosphere twittering thing) not talk about this enough? Do we not talk about it, or do we only talk about it to other women, or do we talk about it and it doesn’t make any sense because our experiences are so different that you think we can’t mean what we mean, not even because of malice or marginalization but just because you’ve got no context to fit them into where the facts tell us both the same story? Are we over here shouting loudly like drowning people against a chorus of internet voices who are just so tired of it, why are you so upset over nothing, because it really is nothing to you if it never happens in ways you see?

This is why I use a female-gendered nick, you know. Because being female is important to me and it’s not something I stop being when I enter tech spaces, and I refuse to surrender it in order to be technical, or to make it easier for people to fit me into their tech-culture stories. Because I don’t want the stories we tell ourselves about technologists to only encompass neckbeards who don’t have girlfriends; I want them to fit around everyone who wants to play.

But this is what I was talking about when I wrote about my first hackathon, when I said the bar for being a woman in tech is the ability to say “Fuck you.” Because before I can get to the table I have to wade through all these things you don’t even see. I have to defy all these things. And you don’t notice. Or you only notice the defiance. Or the weariness.

Feeling so baffled and angry that here we are in different worlds, colocated and superimposed to look like they’re the same. That overlap until that sudden reminder that, oh no, they don’t.

→ 10 CommentsTags:

The new ALA Code of Conduct

November 19th, 2013 · Uncategorized

I’ve mentioned on Twitter, but this should be formally announced on the blog as well: ALA now has a conference code of conduct.

how it happened

The policy grew out of face-to-face and Twitter conversations a few months ago, with a highly collaborative (and fruitfully argumentative) Google doc draft that wound its way through ALA process – Counsel, the executive board, et cetera – to become a final statement.

It seems I’ve been identified as The Person To Talk To About This — and I am more than willing to talk to anyone about it! — but I want to clarify for the record that I was only one of many people involved in turning this idea into reality. Other people brought more urgency to starting the process, more draft language to the Google doc, and more knowledge of ALA process to bear. I want to make sure they are recognized here.

The Ada Initiative and Geek Feminism provided invaluable starting points, in terms of both sample policies to work from, and explanations of what these policies are and why they matter.

The following people contributed to the Google doc:

Aaron Dobbs, Bess Sadler, Chris Bourg, Chris Martin, Cindi Trainor Blyberg, Coral Sheldon-Hess, Courtney Young, Jason Griffey, Jenny Levine, John Jackson, Karen Schneider, Lauren Pressley, Lea Susan Engle, Lisa Rabey, Mary Ghikas, Matthew Ciszek, Melia Erin Fritch White, Tyler Dzuba.

I’m sure there were others who contributed to the conversation, but whose names I did not keep a record of or (particularly in the case of ALA staffers) never knew, and I apologize for the omission.

Above and beyond, though, Mary Ghikas, ALA’s Senior Associate Executive Director, deserves credit, for working with ALA’s lawyer to make this a document that the organization can sign off on, for understanding the realities of its staffing and staff training enough to make this a document we can implement, and for herding all the cats necessary for final approval.

Thank you, everyone.

what I learned

Like I said, I’ve been The Person To Talk To About This.

It took me a while to get comfortable with this role, and I’m still not, 100%. Mary Ghikas did a huge amount of the heavy lifting. Others wrote most of the words, or were first to insist we had to do this thing. Me? I…stuck around to the end, mostly. And translated.

The translation comes pretty naturally; I’ve been at the intersecting edges of enough groups that I like the challenge of reframing one set of cultural constructs in a way that makes sense in another context. And there was a lot of that, and I expect will be more. Code of Conduct discussions come out of the technology world, where the discourse about gender is often very different than it is in libraries, and where there have been numerous recent high-profile incidents of conference harassment. I found along the way that this context is wholly unfamiliar to many librarians with nontechnical backgrounds, so there has been, and I expect will be, a process of explaining. Ongoing and challenging and fun.

But sticking around to the end, man. That doesn’t come naturally to me at all. I like the first 80% of anything, the shiny part full of ideas and possibility. The bit I can do in a couple days of enthusiasm-fueled focus. The bit that doesn’t require me to make to-do lists and keep track of stuff.

And my role in this process? A whole lot of it was exactly that: putting items on a list, with deadlines. Emailing people. Checking in to see if the doc had been edited and the comments resolved. Asking about status. Making sure that (as I’m doing right now) the result gets publicized.

And it…seems like so little. Nothing that takes special talent or insight. None of those amazing leaderly gifts people dream of having. Just an act of will.

And yet, someone’s got to be there at the end. Or you don’t get to have ends.

This is going to work its way through my skull for a while, being quietly, profoundly transformative.

but why? stories and values

But, why do we need this, several people have asked. Are things like this a problem at ALA conferences? We don’t have high-profile incidents, like they do in tech.

Well. Part of being The Person To Talk To About This is becoming a keeper of stories. People don’t just ask about policy; they tell you things in whispers. That time in a bar. That thing that happened and they didn’t know what to do at the time, or what to do after.

No, we haven’t had outlandishly-troglodyte incidents that convulse the internet for a week, and we have very few people willing to speak publicly about the things that have happened, but that doesn’t mean we’re without problems.

But even if we were, this would be worth doing. Because it’s better to have and not to need than to need and not to have. Because anyone — anyone — who feels threatened at ALA, at this place that is my community and my second home and my metamorphosis, should have a place to turn. No one should ever be harassed and feel alone. No one should ever wonder whether ALA will help.

A conference anti-harassment policy is a mechanism for investigating and resolving disputes, but it is also a statement of values. A signal to everyone of who we are.

ALA seeks to provide a conference environment in which diverse participants may learn, network and enjoy the company of colleagues in an environment of mutual human respect. We recognize a shared
responsibility to create and hold that environment for the benefit of all

I want my association to publicly state that it values being a safe space for everyone. I’m glad that it has.

→ 21 CommentsTags:

what I learned as an Emerging Leader

September 30th, 2013 · Uncategorized

As a LITA Board member, one of my happy duties is participating in the discussion about which Emerging Leaders should be LITA-sponsored. (I’ve already made my recommendations and won’t be discussing them. Moving right along.) It’s all very circle-of-life, and I think that makes it time to tell the story that sticks out most in my head from my Emerging Leaders experience, the Thing I Learned that’s at the root of all the other things I learned.

A room in San Diego, Midwinter 2010. We had a flipchart and en masse, all eighty or so of us, we were brainstorming the qualities of a good leader.

And that woman on the flip chart, let me tell you — I would have loved to work for her. She was just amazing. And as we painted her out of air one of my cohort — one of the ones I knew, a friend of mine — said, you know, there’s one quality we haven’t written on that chart, and that’s intelligence. And the room nodded in agreement.

And I thought, well, damn. Because she just named the only thing I’ve ever been really good at, and she’s right. Not that it’s okay for leaders to be idiots — it’s not — but once they’re past a reasonable minimum, a minimum that many people achieve, having more intelligence won’t necessarily make them better leaders. Having lots of intelligence, without any of those qualities on the flipchart, won’t make them good leaders at all. It is not, to borrow from D&D, a prime requisite.

So I flailed for a while inside the cognitive dissonance of that.

And then I realized, you know what? I was there. I was there in San Diego, in a room of people who’d been chosen as exemplars of young library leadership. A room of people who seemed deserving of the name. And I knew one of the people who’d done the choosing was — still is — one of the leaders I respect most. So whatever else, whatever the mismatch between me and our flipchart leader, I deserved to be there.

And then I realized, you know what? Flipchart woman, she doesn’t actually exist. She has all the strengths we wish our leaders had — and many people have many of them — but no one has them all. She doesn’t have any weaknesses, and all of us have some of those, too. I can’t be her because no one can be her.

I can’t be the leader that the other people who were in that room can be, either. I don’t have their unique combination of strengths and weaknesses. But neither do they have mine.

What I learned in that room is that, for me, if intelligence is the thing I’m best at, I’m going to use it to bootstrap all the rest. It may not substitute for any of those flipchart skills, but it can at least briefly simulate some of them, and better yet: I can use it to frame the questions. I can use it to choose the situations I need to be in to learn those other skills, and to reflect on my experiences critically, and to learn faster.

What I’ve learned since is that people think not only that I have some of those other skills, but that they’re native talents. I maybe don’t. They’re definitely not. You didn’t see me when I was a kid. But it turns out if you practice things long and obsessively enough, until you internalize them, they look like native talents to people who meet you after. And it turns out your whole life is a big canvas on which to paint. There’s a lot of after. You never have to stop.

What I’ve learned is that we can’t, any of us, be the flipchart leader, and we can’t be the leader that every situation needs its leader to be. But many of us can be the leader that some situation needs us to be. And we can choose to gravitate toward the places where our strengths have impact and our weaknesses are held less against us. And toward the places ones that make us the leader we will need to be tomorrow.

Tomorrow’s big, and there’s a hell of a universe out there. Let’s go.

→ 1 CommentTags:

this nearly-all-female tech startup (it’s fun!)

September 8th, 2013 · Uncategorized

In light of today’s tawdry-but-alas-unsurprising round of sexism (not to be dignified with a link), let’s have a counternarrative.

This startup I’m contracting for? It’s pretty much all women. And I don’t mean that it’s a tech company where everyone except the developers are women. I mean the CEO/face of the brand/technical project manager/former sysadmin/mad knitting genius is a woman, and the business manager, and the designer, and the UX consultant, and two of the three developers. (The third is married to the founder.)

And it’s this glorious disruption of all the stereotypes. We’re competent and pragmatic and zero-drama. And that’s that.

And it’s strange and wonderful.

And while we’re at it, most of us are parents of young children, and I’m really loving that too, because everyone took for granted that our schedules would be insane in late August due to the total unavailability of our normal childcare options, and we’d have to leave in the middle of things to pick up a kid, and okay so I’d bring my kid over to the CEO’s house so my kid could distract her kids and she and I could get some work done, and failing that maybe things will get done at 6am or 11pm or whatever but they’ll get done, somehow, because we’re grownups, and no one’s going to judge me for the fact that late August is insane when you have a six-year-old, and it’s okay. I have a crazy amount of work to do this week and my next couple of invoices will be epic, but it’s okay.

Oh, and while we’re at it? This is the sort of company that only exists because of diversity. Walking argument for why having more people with tech skills is good for tech, as well as for the people. Because having the idea demanded both significant tech skills and significant domain knowledge in knitting, and there’s just not a lot of people who have both, and really, most of the people with the knitting domain knowledge are women. And once you have both, well of course computers are a thing you can use to make bespoke knitting patterns around people’s unique measurements and style choices…but the idea simply never occurs to you otherwise.

I think the world is full of ideas like this — the economists’ proverbial twenty-dollar bills just lying on the ground — that no one has seen yet, because too much of tech looks with the same eyes.

And here we are looking with different ones, a tech startup full of women. And it turns out that’s totally a thing you can do. So we are.

→ 16 CommentsTags:

what I’ve been up to

August 26th, 2013 · Uncategorized

So as we blogged at a month back, I have quit my job at so that I can teach libraries to code.

I’m still figuring out what that means, and if you have opinions, I want to hear them! (Seriously. I have a big list of people to set up Google hangouts with, and after Labor Day when everyone’s schedules have stabilized I’m going to start in on that.) I mean, on the high level, it means optimism and empowerment and building things and collaborating, a world of librarian partners-in-crime improving services and workflows through hacker epistemology and crafting ideas into things. But that’s gotta translate into action :) For starters, I’ll be teaching an online Python course through Library Juice Academy (please sign up!) and doubtless I’ll be doing a lot more teaching things, too.

But it starts with conversations. Conversations and listening and connections. You know where to find me.

In related news, I’m enjoying & feeling honored about & rapidly learning from my new role as a LITA Board member. (Are you a constituent, current or prospective? I have a info page and contact form just for you!) I’m liaising to the Education committee, so if you’re interested in doing a web course or similar for LITA, please talk to me and I’ll make sure you get a great committee member to help you through the process. Or if you already have an idea for a course you’d like to teach, you can skip right ahead to proposing it.

I’m also doing some independent software contracting. Right now my software bandwidth is pretty well taken up by my friend’s awesome startup (about which more later), but I expect to be taking on other projects later. My skills are chiefly Django front-end development (Python, CSS, jQuery, etc.), but my real specialty is doing things I don’t know how to do, so if you happen to need some software contracting like that (but not immediately), let’s talk. If you have ideas for how I can deploy Django and CSS and lightweight scripting and the like to make your library’s life easier or better, I’d love to hear those too!

→ 5 CommentsTags: