Operating systems war story: How feminism helped me solve one of file systems’ oldest conundrums

A smiling woman with pink hair wearing a t shirt with the word "O_PONIES" in Courier font

Valerie Aurora in 2009 (keep reading to find out why my shirt says “O_PONIES”)
CC BY NC-SA Robert Kaye

Hi, my name is Valerie Aurora, and I am the inventor of a software feature that has prevented billions of unnecessary writes to hard drives, saving energy and making our computers faster. My invention is called “relative atime,” and this is the story of how my feminist approach to computing helped me invent it – and what you can do to support women in open source software. (If you’re already convinced we need more women in open source, here’s a link to donate now to the Ada Initiative’s 2014 fundraising drive. My operating systems war story will still be here when you’re finished!)

Donate now

First, a little background for those of you who don’t live and breathe UNIX file systems performance. Ingo Molnar once called the access time, or “atime” feature of UNIX file systems “perhaps the most stupid Unix design idea of all times.” That’s harsh but fair. See, every time you read a file on a UNIX operating system – which includes OS X, Linux, and Android[1] – it is supposed to update the file to record the last time it was read, or accessed. This is called the access time or atime. Cool, right? You can imagine why it’s helpful to know when was the last time anything read a particular file – you can tell if you have new mail, for example, or figure out which files you haven’t used in a while and can throw away.

The problem with the atime feature is that updating atime requires writing to the disk. So every read to a file creates a tiny disk write – and writes are expensive and slow. (SSDs don’t get rid of this problem; you still don’t want to do unnecessary writes and most of the world’s data is still on spinning disks.) Here’s what Ingo said about this in 2006: “Atime updates are by far the biggest IO performance deficiency that Linux has today. Getting rid of atime updates would give us more everyday Linux performance than all the pagecache speedups of the past 10 years, _combined_.

So, atime is terrible idea – why don’t we just turn it off? That’s what many people did, using the “noatime” option that many file systems provide. The problem was that many programs did need to know the atime of a file to work properly. So most Linux distributions shipped with atime on, and it was up to the user to remember to turn it off (if they could). It was a bad situation.

A cartoon of a woman driving a robot penguin

LinuxChix logo

In 2006, I was a Linux file systems developer and also an active member of LinuxChix, a group for women who used Linux. LinuxChix existed in part because it was impossible to have technical discussions about Linux on most mailing lists without people insulting and flaming you for asking the simplest questions – and it was ten times worse for people with feminine usernames. Tell a cautionary story about installing RAM correctly, and the response might be a sneering, “Oh, you didn’t let out the magic smoke, did you?” On LinuxChix, that kind of obnoxiousness wasn’t allowed (though we still got a lot of what is now called mansplaining.)

So when I advised several people in LinuxChix to turn off atime, a friend felt safe telling me that hey, performance on her laptop was better, but now Mutt, the email reader we both used, thought she always had new email. This is because in her configuration, Mutt would look at an email file and compared its atime with the file’s last written time to figure out if any new email had arrived since the last time it read the file.

Now, the typical answer to “Mutt doesn’t work with noatime” was “Switch to a slower directory-based method,” or “Use a file size hack that had bugs,” or any number of other unhelpful things. Mostly, people just wouldn’t bother reporting things that broke with noatime. But I was part of a culture – a feminist culture – in which I respected people like my friend and programmers that attempted to use fully defined, useful features of UNIX in order to implement features efficiently.

I decided to look at the problem from a human point of view. What my friend and the Mutt programmers really wanted to know was this: Has this file been written since the last time I read it? They didn’t particularly care about the exact time of the last read, they just wanted to know if it had been read before or after the last write. I had an idea: What if we only updated a file’s atime if it would change the answer to the question, “Has this file been read since the last time it was written?” I called it “relative atime.”[2]

The amazing thing is: it worked! Matthew Garrett (also a known feminist), Ingo Molnar, and Andrew Morton made some changes to patch, including updating the atime if the current atime was more than 24 hours ago. Other than that, this incredibly simple algorithm worked well enough that in 2009, relative atime became the default in the mainline Linux kernel tree. Now, by default, people’s computers were fast and their programs worked.

I came up with this idea and the original patch in 2006, when the atime problem had been known for many years. Previous solutions had taken a very file-system-centric point of view, mainly along the lines of buffering up atime updates in memory and writing them out when we ran out of memory. What led me to a creative, simple, and extremely fast solution was being part of a feminist community in which people felt comfortable sharing their technical problems, wanted to help each other, and respected each other’s intelligence. Those are all feminist principles, and they make file systems development better.

I try to take that human-centered, feminist approach with other topics in file systems, including the great fsync()/rename() debate of 2009 (a.k.a “O_PONIES”) in which I argued that file systems developers should strive to make life easier for developers and users, not harder. As recently as 2013, a leading file systems developer was still arguing that file systems didn’t have to save file data reliably by mocking users for playing computer games.

I was working on another human-centered file system feature, union mounts, when I heard that a friend of mine had been groped at an open source conference for the third time in one year. While I loved my file systems work, I felt like stopping sexual harassment and assault of women in open source was more urgent, and that I was uniquely qualified to work on it. (I myself had been groped by another Linux storage developer.) So I quit my job as a Linux kernel developer and co-founded the Ada Initiative, whose mission is supporting women in open technology and culture. Unfortunately, as a result of my work, several more Linux storage developers came out publicly in favor of harassment and assault.

That’s one reason why I’m so excited that Ceph developer Sage Weil challenged the open storage community to raise $8192 for the Ada Initiative by Wednesday, Oct. 8 – and he’ll personally match that amount if we reach the goal! UPDATED: Sage and Mike Perez raised this to $16,384!!! The number of Linux file systems and storage developers who both donated to Sage’s challenge and wanted to be listed publicly as supporters is reminding me that the vast majority of the people I worked with in Linux want women to feel safe and comfortable in their community. I love file systems development, I love writing kernel code, and I miss working with and seeing my Linux friends. And as you can tell by the lack of something like union mounts in the mainline kernel 21 years after the first implementation, Linux file systems and storage does not have enough developers, and can’t afford to keep driving off women developers.

A woman sitting at a table explaining soemthing with her hands

Me teaching the Ally Skills Workshop

The Ada Initiative is capable of changing this situation. In August 2014, I taught the first Ally Skills Workshop at a Linux Foundation-run conference, LinuxCon North America. The Ally Skills Workshop teaches men simple everyday ways to support women in their workplaces in communities, and teaching it is my favorite part of my work. I was happy to see several Linux file systems and storage developers at the workshop. I was still nervous about running into the developers who support harassment and assault, but seeing how excited people were after the Ally Skills Workshop made it all worthwhile.

If you’d like to see more people working on Linux storage and file systems, and especially more women, please join Sage Weil and more than 30 other open storage developers in supporting the Ada Initiative. Donate now:

Donate now

Edited to add 10/6/2014: Sage made his goal, hurray! And here’s my favorite comment from the HN thread about this story, the only one actually flagged into non-existence (plenty of other creepy misogyny elsewhere though):

Screen Shot 2014-10-05 at 10.18.37 PM

Also, I had no idea Lennart Poettering planned to post this detailed description of the abuse, harassment, and death threats he’s suffered as an open source developer.

We’re still raising money for Ada Initiative to fight this kind of harassment, so feel free to donate:

Donate now

[1] Yes, Android is Linux too, I’m just naming the brands that non-operating systems experts would recognize.

[2] “Relative atime” isn’t so bad, but the name of the option that you pass to the kernel, “relatime”, showed my usual infelicity with naming things as it looks like a misspelling of “realtime”.

Posted in Uncategorized | Tagged , , , , | 12 Comments

Handy tips for my Internet harassers

[NSFW, trigger warnings galore. Harassers, be sure to read this at home.]

Today I was worrying: what if people decide to harass me on the Internet and do kind of a terrible job of it? I mean, I know of cases where harassers did an embarrassingly bad job of doxxing and as a consequence sent pizzas to the wrong house. A waste of a good phone call if you ask me.

All the harassment I’ve received so far has been pretty weak stuff, so let me give you some tips for stepping up your harassment game:

Sending packages/food/etc. to my apartment: Probably my address is so easy to find that people will assume it isn’t my address and accidentally use one of my old addresses. Just to confirm, it is the address listed prominently on the Ada Initiative web site. If you send things elsewhere, they will not annoy me.

Protip: Things not to send me:

  • Gluten-free pizza: While a gluten-free Paxti’s or zPizza might be tempting because of the ridiculously high price, I am gluten-free and might accept delivery (especially if it’s a Hawaiian, nom nom). Stick with Domino’s or preferably some place that does a thick, gluten-filled crust. Do they still make that cheese-filled crust thing? I haven’t watched TV in a while.
  • Silicone or glass sex toys: A box full of dildos, always hilarious, right? But be sure they are some kind of low-grade jelly rubber or that creepy synthetic skin or at least an unattractive color or else I might give them a try. Quick tip: nothing from Good Vibrations, every time I going shopping at their store on Valencia Street they have 100% awesome sex toys. Also you’d be supporting a feminist business.
  • Fake bombs: C’mon, I know you’re no Unabomber. That stuff takes work, plus there is so much screening for explosive residue these days. I’m just not going to buy it.
  • Stale dog poop: I know it’s much more trouble, but really you need to get the fresh stuff or it’s hardly disgusting at all.
  • Edited to add: I almost forgot, live crickets would be awesome!!! but they improved the packaging and now it’s harder for them to escape. Try another live animal from Amazon with poor packaging reviews?

Court documents: Unfortunately, I’ve only got a speeding ticket, a sad report about a mentally ill woman grabbing my ass, and an honestly pretty great police report about the time someone tried to steal my phone and I grabbed him and held on until three people from the jiu-jitsu gym across the street tackled him. You should save yourself some courthouse record fees and skip straight to making something up about me being arrested for prostitution (because you’re all pro-sex worker until it comes time to harass a woman, amiright?).

Embarrassing family skeletons in the closet: Before you get all excited about my father, keep in mind that I want people to know about him [TW: sexual abuse]. Anyway, the Scientologists put in tens of thousands of dollars investigating Keith Henson and you’d probably be better off just emailing them and asking them for their docs. Also, everyone already knows my mother is Carolyn Meinel (yes, the one who trolled the entire hacker community for years before trolling was even a thing). I went to DEFCON 3 with her, for heaven’s sake. You need to find something that isn’t already on my web page about my parents.

Threatening my job: Unfortunately, I am my own boss. Try emailing one of the Ada Initiative sponsors? Although they might take that as a sign that the Ada Initiative is doing important work and make another donation. Hmmmm. Maybe create a Yelp page for my file systems consulting business and leave bad reviews? Endorse me for CSS on LinkedIn?

Rape and death threats: Run spell check! There’s nothing more jarring than reading an otherwise creative and well-written death threat and then seeing “decapetate.” Also, chain-saws are so last year. Remember, Gmail won’t display images by default. P.S. I happen to know one of the members of Nirvana and your bright idea has already been done.

Photoshopping/sexy photos: I’m old enough to appreciate my head photoshopped onto a porn star because, hey, let’s face it, I can’t even pretend my body will ever look that good now. For a long time I had a photo named “val_butt.jpg” on my web site that was of me dressed as Barbarella at a Halloween party (the white outfit with black straps – lemme tell you, those boots were a bitch to make) but I can’t figure out exactly which snapshot it is in in the Internet archive. There’s another one of me in there somewhere as Barbarella at a sci-fi con with my then boyfriend dressed as Angel; we were in pretty good shape! Ah, youth. Unfortunately all my naked photos were taken before digital cameras were really a thing so you’d have to track down one of my ex-boyfriends and ask them to scan them for you. Beware, you might improve my sex life by posting them.

Obscene phone calls: I didn’t want to ruin all your fun so I will let you dig up my phone number myself ([SPOILER ALERT] check the press releases on the Ada Initiative web site). But get the good parts in early because I like to read poetry (Keats by preference) to obscene callers. Or use TTY? I think that’s still cool.

Insults: Shouting at street harassers has given me a fair amount of experience with personal insults, so I can tell you right off what won’t work:

Anyway, that’s probably a good start on what not to waste your time on! Remember, be creative or your buddies won’t be impressed!

Posted in Uncategorized | 1 Comment

Trying to get paid to work on diversity in tech? Read this

Do you want to get paid to work on increasing diversity in tech? This post is for you. In this post I focus on aligning your funding with the work you want to do.

TL;DR: The majority of your funding should come from sources who are fairly directly rewarded by your work. Specifically, be aware most for-profit corporations prefer to fund work that has a direct connection to increasing their profits without significantly benefiting their competitors.

If you want to pay people to do this work: Donate to Ashe Dryden, Shanley Kane, Black Girls Code, or organizations people suggest in the comments. Set up a recurring donation if at all possible: recurring donations have the lowest fundraising cost and allows people to do long-term, more effective projects.

What do I know about getting paid to work on diversity in tech?

For the last 3 years, increasing diversity in tech has been my full-time job at the Ada Initiative. I’m delighted that more people are looking for ways to make improving diversity in tech their day job. My co-founder Mary Gardiner and I spent the last few years figuring out how to pay ourselves and others to do this work, and I think we’re starting to get the hang of it. We also made a lot of mistakes and learned a lot of things along the way.

I want to share specifically what I learned about aligning funding sources and activism work so hopefully other people can make fewer (or at least different) mistakes. (Note that in this post I’m speaking as an individual rather than as a representative of the Ada Initiative.)

Funding model #1: Get a job at an existing organization with diversity in tech as part of its mission

This is the simplest method, and probably not one I need to go into in detail. Look at the work the organization is currently doing, and that’s probably the kind of work you would be able to do. Keep reading to understand the impact of the organization’s funding sources on the work they are able to do, so you can set your expectations appropriately.

Funding model #2: Corporate sponsorship

The first funding theory people often come up with (and I was no exception) goes something like this: Software companies have lots of money. They benefit from increasing diversity in tech because they can hire more people and produce better products. Let’s ask software companies to fund our work.

Where this model works is: your work provides recruiting services to the companies funding your work (usually at or below market cost). Examples include Anita Borg Institute, the Outreach Program for Women, sponsorships for conferences that attract a lot of skilled tech folks, and scholarships for Hacker School-style training programs. This kind of diversity work matches up open tech positions with early-career people who are already trained to do the work, or almost done with their training.

Funding this kind of work is attractive to companies because the amount spent on sponsoring a conference or an internship is a cost-effective alternative to regular recruiter or referral fees (often tens of thousands of dollars per successful hire), the people they are hiring are generally early career and therefore cheaper, and internships often serve as both extended interviews and a way to produce code the company can use.

Where this funding model doesn’t work: working with people who need more than a few months of training before they can be hired (more expensive), focusing on retention of existing employees (more expensive, requires culture change and letting go of privilege), encouraging industry-wide cultural change (because it doesn’t give a competitive advantage to individual corporations), and anything critical of the industry status quo (because nobody likes paying money to be publicly criticized).

Funding model #3: Work as an employee for a tech company

Another popular funding idea is to become an employee of a for-profit tech company and include diversity in tech work in your job description, either part or full-time. This sounds great but is tricky to do in reality.

My experience and observation is that if you are hired primarly to do job X, with, say, 10% of your time allocated to diversity in tech work, it quickly becomes 10% in addition to the 100% time you spend on your main job – unless you can show a direct connection between the company’s profits and your diversity in tech work. (In most cases, it should be connected to your division’s quarterly or annual goals in a measurable way.) The same advice to show a connection to the company’s profits goes for a job doing diversity work 100% of your time.

Imagine you’re a director, and you’re sitting in a yearly review meeting, looking at your department’s budget and your goals. You see the line item for diversity in tech work. How does this get you closer to that promotion? It doesn’t. Don’t expect people to support your work in the context of a system that punishes them for doing so. This goes double for full-time tech diversity jobs.

The second issue is that you can’t do anything controversial (read: effective) without endangering your job. When SendGrid fired Adria Richards for blogging about about PyCon attendees making sexist jokes, it was just one example of the risks tech employees face for speaking up. It is a very rare corporation that will not at least pressure employees to “keep your head down.”

Where this model works is: your work is not controversial, it does not publicly criticize either your employer or any of its competitors or partners, it does not significantly benefit your competitors, and it contributes measurably and directly to an important, specific company goal linked to profits. (You can’t criticize your employer’s competitors because you will be open to accusations of bias.)

An important exception to the rule that for-profit companies only fund work that contributes directly to the bottom line is companies that are owned and controlled largely by a person (or a few people) who care(s) deeply about diversity in tech and who will devote money to it whether or not it increases their company’s profits. These people and companies are wonderful but too rare to build an entire funding base on.

Funding model #4: Crowd-funding

The next model is can be summarized as “crowd-funding” – a new name for an old concept that is getting easier to execute with Internet services like Indiegogo and Gittip. In this model, funding comes from a large number of individual donations by people who care about increasing diversity in tech for personal reasons: a commitment to social justice, a desire to help people close to them, or wanting to make their community a more pleasant place, to list a few. I personally love this kind of funding because it aligns the most with the kind of work I want to do: controversial, effective, high-leverage culture change.

Where the crowd-funding model works: Work that has continuous short-term outputs that satisfy individual people’s desires to see improved social justice. Like all funding methods, it requires a fair amount of fundraising effort, especially after the first round. Obviously you also need an extensive personal network to make this work, but that is true for any diversity in tech work I’ve seen.

Funding model #5: Grants

Frankly, I have almost no experience with grants, but did a lot of research and talked to a lot of people who do. Grants (either government or private) have enormous overhead and are out of the reach of most individuals and small corporations. At this point in the game, grants only make sense for large organizations except in very unusual circumstances (Wikimedia Foundation’s extremely lightweight community grants programs is one example).

To non-profit, or not to non-profit?

Is it worth creating a non-profit corporation and getting tax-exempt status in the U.S.? If your organization would consist of just one person doing diversity work, probably no.

The benefits of becoming a tax-exempt non-profit include potentially increased donations if donors can deduct them from their taxable income, qualifying for corporate matching gift programs (huge!), increased donor confidence, and various free or discounted services (like hosting and CRM services). The costs are incredibly extensive paperwork, accounting, reporting, oversight, compliance, etc.

Interestingly, my experience is that individual donors to diversity in tech efforts are fairly likely to donate to a non-tax exempt cause anyway. In my opinion, going for the full tax-exempt non-profit status is only worth it if you are funding more than one person’s work (and have either a deep interest in accounting or iron self-discipline).

Fiscal sponsorship is another ball of wax: basically, you pay part of your donations to an organization that does part of the accounting and due diligence for you, and in return it funnels tax-exempt donations through to your organization. You need to find a fiscal sponsor whose mission encompasses yours, and you are then potentially subject to pressure on your fiscal sponsor if you do something unpopular. It works for many organizations (feminist makerspaces like Seattle Attic and Double Union, for example) but I haven’t seen it in use to fiscally sponsor a single person’s work.

Summary

Getting paid to do diversity in tech work as your day job is really fucking hard. Think carefully about your funding model from a systems point of view: What are the incentives? Who benefits? What are the trade-offs? Then go out and make it happen.

Posted in Uncategorized | 1 Comment

Two cold tips for 2014

I used to take a fatalist view of cold prevention and treatment: you can’t stop getting them without becoming a hermit, and the drugs usually make you feel worse, so why bother doing anything about them other than settling down to watch a lot of Netflix?

Two things happened to change my mind: I started traveling internationally again, and I got a cold three days before some important major surgery that would have been hell to reschedule. I had never in my entire life gotten over a cold in only three days, but I gave it a shot and did ALL THE THINGS – and had my surgery as scheduled.

Here are the two biggest things I learned about colds this year, one for prevention and one for treatment:

Prevention: Before flying, coat the insides of your nostrils with petroleum jelly (I use a q-tip, other people use their pinky). I have not caught a cold on a flight since I started doing this in July, based on the advice of a CEO friend who travels extensively. Viruses like to get into your body by landing on the mucus membranes just inside your nostrils. I don’t think you even need an antibacterial petroleum jelly as Daniel Pink recommends, I suspect the physical barrier is sufficient.

Treatment: If you get a cold, use an oxymetazoline nasal spray with menthol and/or eucalyptus (like Zicam or Afrin). Not only does it clear up your sinuses and prevent secondary infections, it also FEELS GOOD OMG => no pain => sleep better => get well sooner. Just be sure not to use it more than the recommended number of days because you’ll become dependent.

I just picked out the two most effective things I changed in cold management this year, but here are all the things I did in my panic to get over that cold I got before surgery:

  • Oxymetazoline nasal spray with menthol and eucalyptus (decongestant, pain relief)
  • Zinc tablets every few hours (ends cold sooner, read the directions carefully)
  • Acetaminophen (wow, really works for pain and therefore sleep)
  • Pseudoephedrine (decongestant, I hate it, makes me wired, probably unnecessary with oxymetazoline)
  • Guafenesin (expectorant)
  • Azithromycin (prophylactic antiobiotics because I didn’t want to miss the surgery – would normally never do this)
  • Zolpidem (for sleep)
  • Occasional nasal saline rinses (evidence is not good for this as a long-term practice but feels nice in the mornings)
  • Humidifier (reduce pain, speed healing of nasal passages)
  • Many hot baths
  • Vitamin C (evidence for this is not good but Emergen-C tastes yummy)
  • Lots of herbal tea

And now I’m going to remember to look at this blog entry every time I get a cold so I don’t forget to do all the things.

I’m turning comments off but leaving pingbacks on because this is the worst kind of blog post for comments (but good for follow-up blog posts).

Posted in Uncategorized | 1 Comment

Here’s my favorite operating systems war story, what’s yours?

Val in her Dr. Pepper days

Val in her Dr Pepper days

When I was working on my operating systems project in university, I stayed up all night for weeks feverishly rebooting my test machine, hoping that THIS time my interrupt handler changes worked. I survived on a diet of raisin bagels, baby carrots, and Dr Pepper, and only left the computer lab to shower and sleep for a few hours before stumbling back in and opening up EMACS again. I loved it.

Julia Evans‘ blog posts about writing an operating system in Rust at Hacker School are making me miss the days when I thought everything about operating systems was magical. Julia is (a) hilarious, (b) totally honest, (c) incredibly enthusiastic about learning systems programming. (See “What does the Linux kernel even do?“, “After 5 days, my OS doesn’t crash when I press a key“, and “After 6 days, I have problems I don’t understand at all.”) I’m sure somewhere on Hacker News there is a thread getting upvoted about how Julia is (a) faking it, (b) a bad programmer, (c) really a man, but here in the real world she’s making me and a lot of other folks nostalgic for our systems programming days.

Yesterday’s post about something mysteriously zeroing out everything about 12K in her binary reminded me of one of my favorite OS debugging stories. Since I’m stuck at home recovering from surgery, I can’t tell anyone it unless I write a blog post about it.

VME crate (CC-BY-SA Sergio.ballestrero at en.wikipedia)

VME crate (CC-BY-SA Sergio.ballestrero at en.wikipedia)

In 2001, I got a job maintaining the Linux kernel for the (now defunct) Gemini subarchitecture of the PowerPC. The Gemini was an “embedded” SMP board in a giant grey metal VME cage with a custom BIOS. Getting the board in and out of the chassis required brute strength, profanity, and a certain amount of blood loss. The thing was a beast – loud and power hungry, intended for military planes and tanks where no one noticed a few extra dozen decibels.

The Gemini subarchitecture had not had a maintainer or even been booted in about 6 months of kernel releases. This did not stop a particularly enthusiastic PowerPC developer from tinkering extensively with the Gemini-specific bootloader code, which was totally untestable without the Gemini hardware. With sinking heart, I compiled the latest kernel, tftp’d it to the VME board, and told the BIOS to boot it.

It booted! Wow! What are the chances? Flushed with success, I made some minor cosmetic change and rebooted with the new kernel. Nothing, no happy printk’s scrolling down the serial console. Okay, somehow my trivial patch broke something. I booted the old binary. Still nothing. I thought for a while, made some random change, and booted again. It worked! Okay, this time I will reboot right away to make sure it is not a fluke. Reboot. Nothing. I guess it was a fluke. A few dozen reboots later, I went to lunch, came back, and tried again. Success! Reboot. Failure. Great, a non-deterministic bug – my favorite.

Eventually I noticed that the longer the machine had been powered down before I tried to boot, the more likely it was to boot correctly. (I turned the VME cage off whenever possible because of the noise from the fans and the hard disks, which were those old SCSI drives that made a high-pitched whining noise that bored straight through your brain.) I used the BIOS to dump the DRAM (memory) on the machine and noticed that each time I dumped the memory, more and more bits were zeroes instead of ones. Of course I knew intellectually that DRAM loses data when you turned the power off (duh) but I never followed it through to the realization that the memory would gradually turn to zeroes as the electrons trickled out of their tiny holding pens.

So I used the BIOS to zero out the section of memory where I loaded the kernel, and it booted – every time! After that, it didn’t take long to figure out that the part of the bootloader code that was supposed to zero out the kernel’s BSS section had been broken by our enthusiastic PowerPC developer. The BSS is the part of the binary that contains variables that are initialized to zero at the beginning of the program. To save space, the BSS is not usually stored as a string of zeroes in the binary image, but initialized to zero after the program is loaded but before it starts running. Obviously, it causes problems when variables that are supposed to be zero are something other than zero. I fixed the BSS zeroing code and went on to the next problem.

This bug is an example of what I love about operating systems work. There’s no step-by-step algorithm to figure out what’s wrong; you can’t just turn on the debugger and step through till you see the bug. You have to understand the computer software and hardware from top to bottom to figure out what’s going wrong and fix it (and sometimes you need to understand quite a bit of electrical engineering and mathematical logic, too).

If you have a favorite operating system debugging story to share, please leave a comment!

Updated to add: Hacker News had a strangely on-topic discussion about this post with lots more great debugging stories. Check it out!

Posted in Uncategorized | Tagged , , , | 12 Comments

Hey Safeway, your response to harassment in stores sucks

Today, at the Safeway #0995 at 1335 Webster St. in San Francisco, I had to yell “HEY, THIS GUY IS HARASSING ME. IS ANYONE GOING TO DO SOMETHING ABOUT IT?” I was so loud that everyone for 50 feet around me turned around to look. At this point a store employee finally came over and asked the man who had been repeatedly harassing me and another woman for several minutes to leave. Later, the other woman he was harassing found me in the chips and snacks aisle and thanked me profusely.

Harassers hate it when you take their photos

Harassers hate it when you take their photos

I’m writing this blog post because of what this woman told me next to the tortilla chips. She said that men harass her in this store all the time, and the employees never do anything about it. That they treat her like she’s causing the problem, and it’s a “fight” between the two of them. That the only reason they did anything this time was because two women had complained. This young woman was grateful to me – another customer – for being the first person to stand up for her and get her harasser kicked out of this Safeway. And I had to be willing to shout at the top of my lungs before anything happened.

I believe her, because until I got involved, that’s exactly what was happening. When I first saw her, there was a store employee standing between her and a man acting aggressive and verbally abusive. I decided to stand next to her and watch. Naturally, the man started harassing me too – can’t have the women standing up for each other!

Despite this, the store employee kept focusing on the victim, trying to get her not to call the cops. They told him to “keep shopping” and that they would “talk to her” and talk to me. I could not see why this was necessary since he was harassing us right directly in front of the employee. Meanwhile, the harasser would come back and say more nasty things to us as the employee talked to us.

This went on for several minutes, store employee talking to us, man coming back to harass us both, me asking them to kick him out. The store employee eventually went for help, leaving us alone with this dude and his equally scary friend. When he came back for the third time to harass us, that’s when I shouted “HEY, THIS GUY IS HARASSING ME. IS ANYONE GOING TO DO SOMETHING ABOUT IT?” Finally, another employee came over and kicked the guy out of the store.

Harassment is not between the harasser and the victim

I called the store manager when I got home and discovered that she was the exact employee who had been acting like the problem was the woman complaining about harassment and not the guy doing the harassing. I told her what the other woman had told me and what was wrong with the manager’s approach to harassment, that harassment isn’t “between” two people. It’s the store’s problem and they are clearly not handling it well and their staff need more training. Her response? “I told you I was taking care of it.” “That’s the first time I ever heard about her being harassed.” “I was trying to calm things down.”

Hey! News flash! If you’re the store management, I don’t want you to calm things down! If you are standing there as a witness to someone harassing people repeatedly right in front of your eyes, I want YOU to be the person who yells, “HEY! GET SOMEONE OVER HERE TO KICK THIS GUY OUT, PRONTO!” It shouldn’t take some random street harassment vigilante to risk her physical safety to make your store a place where women aren’t afraid to shop. I called Safeway’s national complaint phone number next; maybe that will get somewhere.

The ridiculous, victim-blaming, self-defeating response of the store manager – and the previous 4 times I was harassed today – made me write this blog post. As I was walking back home, I looked down the length of Geary Street and marked out all the places I was harassed this morning. I thought, “I want to own this street. I want to walk down it and never be harassed again. I deserve that right.”

Fighting street harassment

I know that I’m going to get punched or stabbed or seriously hurt someday for fighting back against street harassment in person. I don’t think people should have to risk their health and lives to fight street harassment. Hollaback harassment reporting appThat’s one reason I recently gave $250 to Hollaback, a non-profit fighting street harassment with some pretty cool ideas. The latest is a harassment reporting phone app for New York City that sends your harassment report directly to the City Council and mayor’s office – which is brilliant, send the report to the people who can do something about it. I’ve supported Hollaback since their first Kickstarter campaign and I’m excited to see their work growing and improving each year. Please join me in fighting street harassment the smart way.

Posted in Uncategorized | Tagged | 1 Comment

Meet Double Union, a new feminist makerspace in San Francisco

The Bay Bridge and a tugboat in the foreground

View from Mozilla SF

This upcoming Tuesday, September 17th, 2013, from 5:00pm to 6:30pm, the Double Union feminist makerspace is hosting a Tea Social and Lightning Talks at the Mozilla SF offices. Learn more and register here!

What is Double Union? Since the last AdaCamp, a group of open tech/culture feminists in San Francisco have been organizing what I think of as “AdaCamp year-round”: a feminist makerspace here in San Francisco. The idea of Double Union is to have a space where women can work together on fun, creative, and feminist projects in a supportive and women-friendly environment. I plan to work on projects like uploading my e2fsck parallelization patches to GitHub, sewing skirts that fit me well, and making clever, funny feminist propaganda. (Insert evil laughter here.)

Historically, makerspaces and hackerspaces have had difficulty attracting and recruiting women to their spaces. In my day job at the Ada Initiative, I spend a lot of time helping people create a culture and environment that is more welcoming to women. I’m excited to test out that knowledge at Double Union.

So if you’re a woman who has visited a hackerspace before and thought, “Nope, not for me,” come join us for some seriously good food, funny talks, and good company. Or if you are any gender and think a feminist makerspace sounds intriguing, or know someone who might be interested, please come too!

(Just in case it isn’t clear: Double Union is my hobby and Ada Initiative is my job, and they are not related to each other, other than being awesome feminist projects for women in open tech/culture.)

Posted in Uncategorized | Tagged , , ,