TV I like

Something happened to TV in the last few years: it got much better, and it got easier to watch. So I find myself, an anti-TV die hard, slightly sad that I only have 24 hours of vacation left in which to watch rather more than 24 hours of TV. Without further ado, stuff I like to watch:

The Good Wife: Inspired by Hillary Clinton’s relationship with Bill Clinton, this show follows Alicia Florrick, who restarts her career as a lawyer after her politician husband is caught sleeping with a prostitute and goes to prison for corruption. The best part of this show is the frequent ripped-from-the-headlines episodes about BitCoin, NSA wire-tapping, and police scams. I sometimes feel like if I care about a news story, The Good Wife is filming an episode on it right now. I also have ALL THE HEARTS for Alicia’s family and Eli Gold, her husband’s campaign manager.

Madame Secretary: I just started this one, but it’s good enough I felt like I had to write this post. Elizabeth McCord, a former CIA agent analyst turned college professor, becomes Secretary of State after her predecessor dies in a suspicious plane crash. What I like about it is the focus on finding creative solutions – and Elizabeth’s relationships with her family. I recently read Madeleine Albright’s memoir and am interested in learning more about working in the State Department.

The Mentalist: I felt incredibly guilty about watching this Sherlock-style show for a long time and never mentioned it to anyone. I started watching it because Simon Baker is hot hot hot, and kept watching despite the annoying motivation for Simon Baker’s character Patrick Jayne: he works for the California Bureau of Investigation as a way of tracking down the serial killer who murdered his wife and daughter (cue endless near-misses, yawn). But one day I was watching a scene in which two characters do a dramatic physical take-down of the killer and felt like something strange was happening. Then I realized that the fight was taking place between three women, and the only man in the scene was unconscious in a hospital bed. Yep, every episode passes the Bechdel test and more, and while the main character is a man, he strays from received masculinity in lots of ways: he thinks guns are icky, runs away whenever actual violence might occur, etc. It’s not just detective story brain candy!

I won’t write up descriptions for the rest of these, but I also enjoy the David Suchet Poirot series, despite the rampant sexism and racism, probably because Suchet is an amazing actor and Poirot such a quirky character. I’m sure Patrick Jayne’s character owes a lot to Suchet’s Poirot. I’m also a huge fan of the BBC/WGBH Lord Peter Wimsey & Harriet Vane series – also quite a bit of sexism but “Gaudy Night” in particular features a mostly female cast and the whole thing is just so deliciously intellectual. Also, a shout-out to Bones, even though I haven’t watched in years and I skipped a good chunk of it due to a particularly annoying plot line about a serial killer. What makes that show for me is the dialogue for a variety of different nerds: bug-nerd, psych-nerd, goth nerd, autism spectrum nerd – these are my people, getting the love and attention we deserve!

Just realized the three shows I wrote up in detail are all on CBS – that’s incredibly encouraging. I didn’t believe mainstream TV would ever make TV I liked, but this looks like a veritable trend! If only it could spread to Hollywood – I’ve walked out on more movies this year than ever before in my life, in part because I knew I could go home and watch one of these shows on demand. Here’s to what’s new in 2015!

Posted in Uncategorized | Tagged ,

Thanking things for their service

Personal organizer Marie Kondo has some unique organizing advice, as summarized by Penelope Green for the New York Times:Discard everything that does not ‘spark joy,’ after thanking the objects that are getting the heave-ho for their service.” One of the symptoms of hoarding disorder is a stronger than usual emotional attachment to inanimate objects, which makes it painful to throw them out. Most people have emotional attachments to objects at some level, but instead of mocking or denigrating them as irrational, Marie Kondo acknowledges and values your emotional relationships to objects, in a way that helps you let them go instead of keeping them.

As anyone who has ever visited my apartment knows, I don’t have difficulty getting rid of things. This time I went through my closets with “thanking objects for their service” in mind and caught myself several times denigrating a formerly useful object – and my own judgement by extension – and stopped myself. I ended with 5 bags of garbage (including a dozen old bras), a cart full of things for Goodwill, and a lot of happiness about the decisions I made in 2014.

I have always been good at ending things, as even the most cursory glance at my résumé (or my love life) will tell you. What I’m getting better at now is ending things well: passing them on to new people, or winding them down gracefully if no one wants to continue them. That connects strongly to the idea of thanking objects – or your past self – for their service. I’m ending things not because they are useless or ugly or a bad idea in the first place, but because I’m ready for something new. So, here is a list of things I am ending or passing on right now:

Leading the Ada Initiative: My typical job tenure is on the order of 18 months, so it was with a sense of wonder that I realized I’m approaching 4 years in one job: Executive Director of the Ada Initiative. At the same time, I am thrilled that we are searching for a new executive director. I have really enjoyed these 4 years, especially getting to work so closely with my co-founder and friend Mary Gardiner. (If you really like someone but you live on opposite sides of an ocean, I can recommend co-founding a business with them as a way to make sure you get to spend lots of time with each other. ALL THE HEARTS to you, Mary.)

I really enjoyed building a business from the ground up, and working with people I genuinely like and respect. I’m proud of myself for working with my excellent career counselor to find out for sure that I don’t want to lead the Ada Initiative forever. By giving up the head spot, I’m giving myself time to develop new training programs in 2015 – teaching and designing the Ally Skills Workshop and Impostor Syndrome Training are my favorite parts of my job right now. In the past, I’d have had to justify quitting the ED spot by deciding that the Ada Initiative was a bad idea and I wanted nothing to do with it; now I can say it is still awesome, someone else will want this job, and I can do something slightly different and keep working with the same people and organization.

File systems consulting: I shut down my file systems consulting business at the end of 2014, after 7 years of freelance work and some really sweet file system debugging problems (my favorites: root causing bad flash by the pattern of data corruption, tracking down and fixing a deadlock in the VFS freeze/thaw code, and parallelizing fsck for ext3). I continued to consult even while I had a full-time job because (a) it pays really well, (b) I didn’t want my expertise to “go to waste,” (c) almost no other file system consultants exist because we tend to prefer steady full-time jobs that let us code happily away in a corner. In some way, it felt like I was being ungrateful to everything my file systems career had given me if I stopped consulting, but I really didn’t have the time or the interest any more. (Also, Miklos Szeredi’s overlayfs finally got integrated into mainline, so I feel like I can lay unioning file systems to rest.) So I took Marie Kondo’s advice, thanked my file systems career for what it gave me, shut down my consulting web site, and updated my LinkedIn profile. Yay!

Treasurer of Double Union: I served as treasurer of Double Union from mid-2013 to December 2014, and happily handed it over to Sally Maki last month. The job of treasurer is never “done” but it is well-documented, mostly automated, and a great thing for people to do as preparation for starting their own business. I am really happy to have been a key part of growing Double Union from a twinkle in our eyes to a 130+ member makerspace with a comfortable environment for women and a working 3D printer. I’m still on the board of directors, but hope to step down at the end of 2015 in favor of people with fresh ideas and new energy. I always envisioned Double Union as a thing I wanted to help start but not run for very long, which is maybe why stepping down as treasurer was the easiest and simplest thing to end (emotionally – in terms of work, it was hours and hours of writing documentation and setting up software and meetings with various people over more than a year).

Looking at the above list, it’s clear that a full-time job as Director of Training at the Ada Initiative won’t be enough to keep me busy for 2015. I don’t know what else I will start or take on, and I’m excited! I love learning new things, solving new problems, and growing sustainable organizations.

Posted in Uncategorized | Tagged , ,

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.


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