Over at The Recompiler, I have a new essay out: “Toward A !!Con Aesthetic”. I talk about (what I consider to be) the countercultural tech conference !!Con, which focuses on “the joy, excitement, and surprise of programming”. If you’re interested in hospitality and inclusion in tech conferences — not just in event management but in talks, structure, and themes — check it out. (Christie Koehler also interviews me about this and about activist role models, my new consulting business, different learning approaches, and more in the latest Recompiler podcast.)
Attention constant readers! It’s time to choose our next book!
Here are three candidates, two fiction novels and one research paper:
will be published 6 October 2015; 368 pages
I’ve pre-ordered this final book in the Ancillaryverse trilogy and will be eager to talk about it with other geek feminists starting, probably, on October 7th. Protagonist Breq used to be a starship, connected instantly to multiple bodies, and hasn’t quite gotten used to being singly embodied. I think the first book in the trilogy, Ancillary Justice, integrated fist-punching-related adventure with flashbacks and thinky conversations and interstellar intrigue and music really well. It’s about power and institutions, about the lived difference between true mutual aid and imperialism, and about how to be loyal to imperfect institutions and imperfect people. And explosions.
Ancillary Sword, the middle book, shifted settings to concentrate on one spaceship near one station orbiting one planet, helping us compare societies that are functional, dysfunctional, and broken. Leckie compares othering, oppression, and possibilities for resistance across urban and plantation settings. And I utterly bawled at one character’s soliloquy on the way to her doom, and at tiny hopeful steps of mutual understanding and community empowerment. Also, again, explosions.
The Ancillaryverse is scifi that argues with other scifi; you can see the Radchaai as Borg (ancillaries), or as Federation (per the “root beer” and Eddington/Maquis critiques from Deep Space Nine), and you can see Justice of Toren as literally the ship who sang (see the comments in Leckie’s post here, around the novels’ feminist lineage). I’m looking forward to seeing more of Leckie’s conversation with other speculative fiction, to more critiques, and more explosions.
published 1991; about 31 pages
Sociologist, psychologist, and technology researcher Turkle authored this paper with constructionist education researcher Papert, and reading it gave me new language for thinking about me as a programmer:
Here we address sources of exclusion determined not by rules that keep women out, but by ways of thinking that make them reluctant to join in. Our central thesis is that equal access to even the most basic elements of computation requires an epistemological pluralism, accepting the validity of multiple ways of knowing and thinking….
“Hard thinking” has been used to define logical thinking. And logical thinking has been given a privileged status that can be challenged only by developing a respectful understanding of other styles where logic is seen as a powerful instrument of thought but not as the “law of thought.” In this view, “logic is on tap, not on top.”….
The negotiational and contextual element, which we call bricolage….
Our culture tends to equate soft with feminine and feminine with unscientific and undisciplined. Why use a term, soft, that may begin the discussion of difference with a devaluation? Because to refuse the word would be to accept the devaluation. Soft is a good word for a flexible and nonhierarchical style, open to the experience of a close connection with the object of study. Using it goes along with insisting on negotiation, relationship, and attachment as cognitive virtues….
I appreciated the case studies of programmers and their approaches and frustrations, the frameworks analyzed and suggested (e.g., relational and environmental), and the connections to other feminist researchers such as Carol Gilligan. If you feel like your approach to engineering makes you countercultural, you might like this piece too. Here’s a plain HTML version of the paper, and here’s a PDF of the paper as originally typeset and footnoted.
published 1 September 2015; 384 pages
Author Zen Cho’s speculative and historical fiction foregrounds the perspective of women of color, specifically the Malaysian diaspora; she has non-US-centric views on diversity which I find both disorienting and refreshing to read! You can read the first chapter of her first novel, Sorcerer to the Crown, for free online. It’s a fast-moving period fantasy with a bunch of women and people of color. The blurb:
Zacharias Wythe, England’s first African Sorcerer Royal, is contending with attempts to depose him, rumours that he murdered his predecessor, and an alarming decline in England’s magical stocks. But his troubles are multiplied when he encounters runaway orphan Prunella Gentleman, who has just stumbled upon English magic’s greatest discovery in centuries.
I’d love to discuss themes in this feminist Malaysian-British author’s work with other geek feminists. In her postcolonial historical romance novella The Perilous Life of Jade Yeo, her short story collection Spirits Abroad, and in Sorcerer to the Crown, Cho depicts adventurous, mercenary, or blasé women who use, disregard, or otherwise play with expectations of femininity. She illustrates how both mundane and magical institutions use gatekeeping to prop up their own status hierarchies, and how that affects people trying to make their way in. Intersectionality, diaspora and immigration, the culture of British education, and queer relationships also appear in Cho’s stories over and over.
if you read The Perilous Life of Jade Yeo then you might be forewarned of the kind of genre switchup Cho is doing — I definitely see Prunella Gentleman prefigured in Jade Yeo. I particularly like that, in Sorcerer to the Crown, Cho writes in a genre that often has kind of a slow tempo, and moves the speed up so there are more exciting plot developments per page, and adds more Wodehouse-y shenanigans and off-the-rails conversations, without ever sliding into unbelievable-silly-farce-romp or territory. And there’s a spoiler I badly want to talk about with other people of color!
Something else altogether
You tell me! Let’s try to wrap up voting by Wednesday October 7th.
When I started off in open source, I believed that bit of “The Cathedral and the Bazaar” that said:
Every good work of software starts by scratching a developer’s personal itch.
Regardless of the truth of this assertion, somewhere along the way I got the impression that people usually get into open source via “scratching their own itch,” and I mixed up prescriptive and descriptive to boot. Personally, I started dabbling in open source testing hoping to learn a bit of Python, and then really got stuck in when I saw a clear unmet need for documentation even though I wasn’t personally going to use it. Sometimes I thought I was inferior — surely I ought to have been thinking up my own projects, improving my work environment, and writing things that would help me out, thus getting me into a virtuous circle of learning?
Here’s one: the newbie who finds it frustrating that they “don’t have ideas.” This person, like me, has heard the message that a REAL programmer or a REAL open source contributor is supposed to be a self-starter who comes up with their own project ideas from the start and uses them to learn. Or the newbie knows they learn best by doing, but they feel a discouraging malaise whenever they attempt to think of an idea to pursue.
This affects people of all backgrounds, but I wonder — is it harder to reflexively “scratch your own itch” when you’ve been taught, as so many women have, to stop scratching and sit like a good girl? If you’re part of an oppressed group, and parents, schools, peers, mass media, and bosses have all consistently punished you when you speak up about a missing stair, then is it any surprise that you’d be slow to start picking up the saw and hammer?
metaphortunate articulated that youthful indoctrination:
I had finally learned that whenever I got angry and I tried to do something about my anger to the source of my anger, everything just got worse for me.
So in the long run one answer to this is that we have to work to make sure everyone has agency and feels it, their whole lives. But, given that some of us struggle with remembering our agency, and that it’s fine to have different learning styles, here are some ideas for priming the idea pump, or for alternate pathways into learning and getting into open stuff.
- Embrace boringness. Look at other fields, like sewing, where it is totally fine to start off by making a simple handbag off a common pattern. In open stuff this might be the “same old same old” LED clock or blog platform. If an idea appeals to you but there’s an inner censor saying “that’s too boring” or “what’s the use,” you can tell that inner voice that Sumana says “shut up.” For me, it’s Skud saying “shut up” to that inner censor.
- Embrace silliness. Perhaps the equivalent of embroidering a happy face onto an oven mitt. Again, if you think it would make you a scintilla happier, go ahead. And again, I have a Skud in my head telling the naysayer to buzz off.
- Find someone else’s pain point. It is perfectly legit to work to improve shared tools. Look around at places online or in your local community where people are asking for help. Maybe you can find a ridiculously tedious data entry job that you can help with a corner of, or it would be nice if a light over here lit up when such-and-such happened. In a sense, this is what Outreach Program for Women, OpenHatch, and Developers For Good offer: the organizers have already curated the TODO lists so you can pick out the tasks that interest you. It is fine to simply piggyback on existing projects and drift around a bit learning lots of little things that way, and the more you learn and do, the more needs and opportunities you’ll discover.
- It’s fine to take a class. Different people at different times learn differently. If you think you’d benefit from structure, encouragement, sociability, and exercises, opportunities from edX to Hacker School to your local community college are worth checking out.
- Work with scraps. I get anxious over wasting food or cloth or paper, so when I cook or sew or write stand-up comedy or poetry, I feel more comfortable working with scraps, with leftovers. When I am scribbling ideas for stand-up bits, I prefer to use textfiles that already have miscellaneous jottings in them, or little half-full notebooks, or odd-shaped scratch paper. No doubt my preference for pre-ruined materials reflects my perfectionism and anxiety over worth. I can be creative more easily if the materials were just going to go to waste anyway. I think the trick to addressing this mindset, in the long run, includes habits of deemphasizing and subtlety, tricking oneself into not making a big production out of any given attempt. I’m not good at that. But in the short term: scraps. Find patterns in datasets you already have. Look through old academic papers to find citations to add to Wikipedia. If you have a web presence you barely use, repurpose it as a CSS playground. I’d love more ideas around this theme.
- The examined life. What do I actually want? Is there a thing that could make my life better? Honestly I find this question really hard to answer; it requires that I address the pain of unfulfilled desire instead of just accepting my world as it is. But if I have conquered some of the ways the kyriarchy has colonized my brain, then it’s possible to hear the “$foo would make my life better” signals and perhaps address them through technology.
What have you found useful in overcoming the myth of boundless ideation, or in learning to listen to your own itch?
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.
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.
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.
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.
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.
What can I do when stereotype threat is playing games with my head?
To give an example, I once had to take an IQ test at school in seventh grade. One section of the test included rotating three-dimensional objects in your head. The test was designed so that each section starts easy and then gets progressively harder. It is supposed to get so hard that there comes a point where you can’t continue any longer and then the tester stops that section of the test. On that section of the test, I managed to hit a window on the score because I got to the very end, having correctly answered all the questions in the object rotation section. The tester, who did these tests for a living, was astonished and he said he had never seen anyone come close to getting all of them.
As an adult, I heard the stereotype that women cannot rotate three-dimensional objects in their head. I heard it many times. Since I started hearing that, I have lost my ability to do so. I’ve tried some rather basic tests on this skill and I can hardly do any of them.
What can one do about this sort of thing?