Category Archives: Meta

Technical Interviews: More than a brain teaser?

A request I’ve gotten from a couple of readers (unrelated to the recent charity thing) is to talk about engineering interviews at tech companies. I’ve been at Google, Foursquare, Twitter, and now Dropbox, so I’ve spent some time inside multiple companies that put a lot of effort into recruiting.

Tech interviews get a lot of bad press. Only some of it is deserved.

What you frequently hear in criticism is stuff about “gotcha” questions, or “brain teasers”. Those do happen, and when they do, they deserve condemnation. For example, I have seriously had an interviewer for a software job ask me “Why are manholes round?” That’s stupid. People who like it claim that it’s a test of lateral thinking; I think it’s garbage. But these days, that kind of rubbish seems pretty rare.

Instead, what’s become very common is for interviewers to present a programming problem, and ask the candidate to solve it by writing some code. A lot of people really hate these kinds of interviews, and describe them as just brain-teasers. I disagree, and I’m going to try to explain why.

The underlying problem for tech job interviews is that hiring the right people is really, really hard.

When someone applies for a job as a software engineer with your company, you start off with just their resume. Resumes are not particularly informative. All they give you is a brief, possibly partial history of the candidates work experience. From a resume, can’t tell how much they really contributed to the projects they worked on. You can’t tell how much their work added (or subtracted) from the team they were part of. You can’t tell if they get work done in a reasonable amount of time, or if they’re slower than a snail. You can’t even tell if they can write a simple program at all.

So you start by screening resumes, doing your best to infer as much as you can from them. Next, you often get recommendations. Recommendations can be useful, but let’s be honest: All recommendation letters are positive. You’re not going to ask for a recommendation from someone who isn’t going to say great things about you. So no matter how terrible a candidate is, the recommendations are going to say nice things about them. At best, you can sometimes infer a problem by reading between the lines – but that’s a very subjective process.

So you end up interviewing someone who’s resume looks good on paper, and who got a couple of people to write letters for them. How do you determine whether or not they’re going to be a valuable addition to your team?

You need to do something to decide whether or not to hire a particular person. What can you do?

That’s what the interview is for. It’s a way to try to get more information. Sure, this person has a college degree. Sure, they’ve got N years of experience. But can they program? Can they communicate well with their coworkers? Do they actually know what they’re doing?

A tech interview is generally an attempt to get information about a candidate by watching them work on a problem. The interview isn’t about knowing the right answer. It’s not even about getting the correct solution to the problem. It’s about watching a candidate work.

When I ask a job candidate a technical question, there’s three main things I’m looking for.

  1. What’s their process for solving the problem? On this level, I’m trying to figure out: Do they think about it, or do they jump in and start programming? Do they make sure they understand the problem? Do they clearly state their assumptions?
  2. Can they write a simple program? Here I’m trying to see if they’ve got any ability to write
    code. No one writes great code in an interview setting. But I want to know if they’re
    able to sit down with an unfamiliar problem, and work out a solution in code. I want to see if they start coding immediately, or take time to think through their solution before they start writing.
  3. How well can they communicate ideas about programming? Can they grasp the problem from my description? If not, can they figure out what questions they need to ask to understand it? Once they start solving the problem, how well can they explain what they’re doing? Can they describe the algorithm that they’ve chosen? Can they explain why it works?

To try to clarify this, I’m going to walk through a problem that I used to use in interviews. I haven’t used this question in about 3 years, and as far as I know, no one is using the question anymore. The problem involves something called Gray code. Gray code is an alternative representation of numbers in binary form that’s useful for a range of applications involving things like switching systems.

Here’s a quick run through one of the reasons to use gray code. Imagine a system that uses physical switches. You’ve got an array of 8 switches representing a number. It’s currently presenting the number 7 in standard binary – so the first 5 switches are off, and last 3 are on. You want to increment the number. To do that, you need to change the position of four switches at exactly the same time. The odds of your being able to do that without even a transient state that appeared to be a number other than 7 or 8 are vanishingly small.

Gray code solves that by changing the representation. In Gray code, the representation of every number N+1 is only different from the representation of N by exacly one bit. That’s a nice property which makes it useful, even nowadays when we’re not using physical switches for much of anything anymore.

The easiest way that you get the gray code of numbers is by writing a table. You start off by writing 0 and 1, which are the same in both gray code and standard binary:

Decimal Standard Binary Gray
0 0 0
1 1 1

There’s the one-bit gray codes. To get the two bit, make two copies of the rows in that table.
To the first copy, prepend a 0. To the second copy, reverse the order of the rows, prepend a 1:

Decimal Standard Binary Gray
0 00 00
1 01 01
2 10 11
3 11 10

To get to the three bit gray codes, you repeat the process. Copy the rows, prepend 0s to
the first copy; reverse the order of the second, and prepend 1s.

Decimal Standard Binary Gray
0 000 000
1 001 001
2 010 011
3 011 010
4 100 110
5 101 111
6 110 101
7 111 100

So, the gray code of 6 is 101, and the gray code of 7 is 100.

What I would ask an interview candidate to do is: implement a recursive function that given an integer N, returns a string with the gray code of N.

I can understand how some people look at this question, and say, “Yeah, that’s just a stupid puzzle.” On one level, yeah. It’s obvious an artifical question. In fact, in practice, no one ever uses a recursive algorithm for something like this. Even if you have a problem where gray code is part of a practical solution, there’s a better way of converting numbers to gray code than this silly recursive nonsense.

So I agree that it’s artificial. But interview questions have to be artificial. In a typical interview, you’ve got an hour with a candidate. You’re not going to be able to explain a real problem to them in that amount of time, much less have them solve it!

But it’s artificial in a useful way that allowed me, as an interviewer, to learn about the candidate. I wasn’t trying to see if the candidate was number-puzzle wizard who could instantly see the recursion pattern in a problem like this. Most people have never heard of gray code, and to most people (including me, the first time I saw this problem!), the recursion pattern isn’t obvious. But that’s not the point: there’s a lot more to the interview that just the initial problem statement.

I don’t present the problem, and then sit back and watch silently as they try to solve it. If I did, all I’d be learning is whether or not they’re a number-puzzle wizard. I don’t care about that. So I didn’t just leave them floundering trying to somehow come up with a solution. In the beginning, after describing the problem, I set an initial direction. I usually have them start by extending the table themselves, to make sure they understand the process. Then I take their extended table, and add a new column:

Decimal Standard Binary Gray Rec
0 0000 0000
1 0001 0001
2 0010 0011 “1” + gray(1)
3 0011 0010 “1” + gray(0)
4 0100 0110
5 0101 0111
6 0110 0101
7 0111 0100
8 1000 1100 “1” + gray(7)
9 1001 1101 “1” + gray(6)
10 1010 1111 “1” + gray(5)
11 1011 1110
12 1100 1010
13 1101 1011
14 1110 1001
15 1111 1000 “1” + gray(0)

With that on the board/screen, I’d ask them to try to take what I just gave them, and rewrite it a bit. For example, in row 8, instead of “1” + gray(7), come up with an expression using the numeric value “8” of the row, which will produce 7. They should be able to come up with “15 – 8” – and to see that in every row n , where n \ge 8 and n < 16, the gray code of n is “1” + gray(15 – n).

For most people, that’s enough of a clue to be able to start writing the function. If they can’t get there, it shows me that they’ve got some trouble wrapping their head around this abstraction. I’ve got a few more hints up my sleeve to help, but if without all of the help I can give, they still can’t come up with that, that’s one mark against them.

But even if they can’t come up with the relation at all, it’s not the end of the interview. I have, sometimes, ended up recommending hiring someone who had trouble this far! If they can’t come up with that basic relation, it’s just one piece of information about the candidate. I’d file that away, and move on, by giving them the recurrence relation, and then I would ask them to code it.

There’s one problem that comes up in coding, which is interesting and important. The most naive code for gray is something like:

def gray(n):
  print("gray(%s)" % n)
  if n == 0:
    return "0"
  if n == 1:
    return "1"
  num_digits = math.floor(math.log(n, 2)) + 1
  return "1" + gray(int(2**num_digits - 1 - n))

That’s very close, but not right. If you call gray(10), you get the right answer.
If you call gray(4), you get “110”, which is correct. But if you call gray(8), you’d get “110”, when you should have gotten 1010.

Most candidates make this mistake. And then I ask them to trace it through on 8 as an example. They usually see what the problem is. If they don’t, then that’s another red flag.

If they’re really struggling to put together a recursive function, then I’d ask them to just write a function to convert an integer into standard binary. If they can do that, then I start making suggestions about how to convert that to do gray code.

The big indicator here is whether or not they can write a simple recursive function at all. The systems I was working on at the time made heavy use of recursion – if a candidate couldn’t write recursive code, there was simply no way that they’d be able to do the job. (It was depressing to see just how many qualified-looking candidates came in, but who couldn’t write a simple recursive function.)

Through this whole process, how well they were able to talk about what they were doing was as important as the solution they came up with. If they heard the question, and immediately wrote down perfect, beautiful code, but they couldn’t explain how they got it, or how it worked? They’d get a mediocre rating, which wouldn’t get them a job offer. If they made a lot of mistakes in their code, but they were crystal clear about explaining how they worked out a solution, and how it worked? They’d probably get a better rating than the perfect code candidate.

I hope this shines a bit of light on this kind of interview question. While it’s necessarily artificial, it’s artifical in a way that we hope can help us learn more about the candidate. It’s not a trick question that’s irrelevant to the job, like “Why are manholes round?”: this is an attempt to probe at an area of knowledge that any candidate for a software engineering job should have. It’s not an all or nothing problem: even if you start off with no clue of how to approach it, I’m guiding you through. If you can’t solve it without help, this problem gives me some insight into what it is that you don’t understand, and hopefully whether or not that’s going to be a problem if we hire you.

Is it a great way of doing interviews? Honestly, no. But it’s the best way we know of doing it.

As an interview system, it doesn’t do a good job of identifying the very best people to hire. There’s no correlation between outstanding interview performance and outstanding on-the-job performance. But there’s a strong correlation between poor performance on this kind of interview question and poor performance on the job. Great performers on the job show the same distribution of interview performance as average ones; but poor performers on interviews show a significantly negative-shifted job performance distribution.

We haven’t found a way of interviewing people that does a better job than this. It’s the best we have. Statistically, it works far better at selecting people than “open-ended” interviews that don’t involve any kind of practical programming exercise. So for all of its faults, it’s better that the alternatives.

I’m sure there are pedants out there who are asking “So what’s the correct implementation of gray code?” It’s totally not the point of talking about it, but here’s one sloppy but correct implementation. This isn’t the quality of code I would ever use for anything serious at work, but it’s perfectly adequate for an interview.

import math

def gray(n):
    def required_digits(n):
        """Compute the number of digits required to 
        represent a number in binary
        return int(math.floor(math.log(n, 2))) + 1

    def pad_digits(gray, num_digits):
        if len(gray) < num_digits:
            return "0"*(num_digits - len(gray)) + gray
        return gray

    if n == 0:
        return "0"
    if n == 1:
        return "1"
    num_digits = int(math.floor(math.log(n, 2)) + 1)
    return "1" + pad_digits(gray(int(2**num_digits - 1 - n)), num_digits - 1)

Support some students!

I’ve been terrible about updating the blog lately. Personal life interferes sometimes, but I’m trying to build up a backlog of posts so that I can get the blog moving again without too much pressure.

In the meantime, I’ve got a request for you folks.

Through this blog, I met a really great SFF writer named Catherine Asaro. Catherine both writes, and also teaches math. She’s running a GoFundMe for her students, who participate in extracurricular math activities – clubs, classes and competitions.

They need money to cover travel expenses for going to math league competitions.

These kids are us: they’re the math geeks of the future. They need help from the math geeks of today. So go, give them a couple of bucks, help them out!

An extra little bit of incentive: the first five people who donate more than $25 can pick a topic, from either math or computer science, and I’ll write a blog post about it. Send me a copy of the thank-you letter you get from GoFundMe to show that you contributed, along with the topic you’d like me to write about.

These thank-you posts for contributing will skip to the top of my priority queue, so you’ll see them soon!

Yes all men

Unless you’ve been hiding under a rock, you know about the horrible events of last friday. A misogynistic creep killed a bunch of people, because he believed that women owed him sex and affection, because in his own opinion, he was a terrific guy, an absolute prince. But they didn’t give him what he deserved, and so, he decided to punish them for their “crimes”, and went off on a killing spree.

Seven dead people and a dozen injured ones later, people started reacting. Many women, quite appropriately, pointed out the misogynistic venom of this guy, and how common it is among men. And predictably, tons of men got annoyed at that, and replied saying “Not all men are like that”, and therefore, not all men are responsible.


Yes, we are responsible. We live in this culture. We sit here, day after day, watching this shit, and doing nothing. Because we maintain that we aren’t guilty. Women on the internet are regularly threatened for the crime of speaking, and we sit by and watch, without doing or saying anything about it.

We are part of the problem, because, for the most part, we don’t care. We aren’t the targets of the abuse. We aren’t the ones who can’t walk down the street without getting harassed. We aren’t the ones who can’t speak without being threatened. And so we just don’t care.

When a man like this guy goes out and murders people because of his hatred of women, our main concern isn’t how common people like him are. It’s not how many women are threatened by people like him, or how many women are actually killed by people like him. It’s about how unfair it is that women talk about the kind of hatred they face from men, without making a specific exception for guys like us. What we worry about isn’t the threats they face – it’s how their reaction to being threatened with actual violence hurts our poor, precious feelings.

Yes, it’s all men who are responsible. Let’s face it: we live in a culture where we are the dominant group. If we got together, stood up, and said “We’re not going to tolerate this shit anymore” – if even a decent-sized minority of us were willing to stand up and say it – the hateful assholes would be driven underground. If we stood up and said “No”, and made sure that any shit-headed bigoted woman-hater actually paid some price in standing in our communities, the threats would end.

If we acknowledged that the violent hatred of women was not just a sickness; that a threat to women is a real threat to other human beings that was serious; that those threats are crimes. That the everyday threats against women are more serious that the threats of terrorism that we’ve used to justify war. If we did that, we’d have to admit that we need to do something about it.

But we don’t. We sit and watch, and downplay the threats. We say that they’re not really serious, that’s just how people act on the internet. We say that the threats don’t matter – those fragile women just need to “man up”, and grow thicker skins. And when women die – as they do every day – we just say it was a crazy person, there’s nothing we can do about it.

3000 people died in a terrorist attack 13 years ago. We were so horrified by it that we started two wars, and virtually rewrote our entire legal system, because it was such a horrible, terrifying threat! We needed to do something to protect ourselves from the terrorists!

The men who threaten women are terrorists too. They’re working from exactly the same motivations: the use of fear to control behavior. Men who threaten women are making threats to force women to behave the way they want them to.

We’re willing to make insane sacrifices to protect ourselves from the threats of terrorists. But we’re not willing to sacrifice anything to protect women from other men.

Until that’s not true anymore – until we stand up and say “Enough!”, and make the behavior truly unacceptable – then we are guilty. All of us.

Depression and Arrogant Assholes

This is somewhat off-topic for the blog, but pretty damned on-topic for my life.

I’ve talked about this before, but it’s the kind of thing that just keeps coming up.

I’ve got a bunch of different medical conditions.

I’m a post-surgical GERD sufferer – for all intents and purposes, I was born without a sphincter at the top of my stomach. That means that acid could easily get out of my stomach, into my esophagus, my vocal chords, and my lungs. Without surgery, I would probably be dead of esophageal cancer as a result. Since the surgery, I’ve had lingering problems with my swallowing reflex being fouled up, being unable to burp or vomit, and suffering from pretty severe chest pain from muscle spasms. I take a variety of medication as a result, to keep it all under control. For over ten years, I took benzodiazapenes every day as part of the treatment regimen for that: benzos are an addictive drug.

I’ve also got some of the worst allergies of anyone I know. When I first got tested for allergies, based on my symptoms, the allergist selected a set of 45 possible allergens to test me with. Most people with bad allergies would show a significant reaction to 15 or so. I came up positive for 42. I needed to get allergy shots for 25 years, and I continue to take antihistamines and inhaled steroids on a daily basis to treat it.

I also have clinical depression, and very severe social anxiety. I take an SSRI every day for the depression, but I’ve yet to find anything that works for the social anxiety.

No one ever gives me any grief about my stomach troubles. I mean, what could I do? The muscle at the top of my stomach didn’t work. There was a huge amount of acid getting into my throat and even my lungs every day! Of course I had to do something about it!

And allergies? Man, that sucks. Everyone feels bad when they see me sniffling, or when I have to pull out an inhaler because I can’t breathe. But you know, luck of the draw, some people get stuck with allergies. No fun, but it’s manageable with medication, right?

But depression? Whoa, baby. Whole different story. Instead of the benign sympathy or indifference that I get from people who hear about my other troubles, I get shit like this:

To be clear, that wasn’t directed at me in particular. No, it was directed at everyone who’s suffering with depression. See, depression isn’t a real illness. People who are living with depression aren’t suffering from a real illness. No, we’re worshipping our depression. All we need to do is stop being such pathetic assholes, and get up and “make strides to improve our life”.

Before I started taking my SSRIs, I didn’t worship my depression. I didn’t even realize that I was depressed. I just felt like the world had gone flat. It’s hard to describe it better than that. I didn’t really feel much of anything. I wasn’t sad. I wasn’t happy. I wasn’t anything. The world was all grays, no colors. Good things happened, and I couldn’t feel good. Bad things happened, and I couldn’t feel bad. My wife was pregnant with our second child, and I wasn’t happy, I wasn’t nervous, I wasn’t anything. I was just flat.

When I finally realized that there was something wrong with me, I got a referral from my doctor, and I saw a psychiatrist, who prescribed medication for me. About two weeks later, I realized that stuff was different, because I was noticing colors. I never stopped seeing them, but they stopped registering – they didn’t mean anything. I literally felt as if I weighed less – like someone had laid an invisible lead blanket on me, and now it had been removed. Something bad happened at work – the project that I’d been working on for the previous two years had not gotten its funding – and I was upset about it!

It was an amazing thing, a total change of the world. The pills didn’t make me happy. With the stuff at work, and the stress of a new child coming, I was probably more unhappy than I was before I started taking them. But the unhappiness was real, it was mine, and I felt it.

After about a year of taking the pills, on the advice of my doctor, I tried stopping it. For people with symptoms like mine, he said that about 40% would relapse pretty quickly, but 60% would be fine without any medication. After about three months without it, the world went back to that flat drab nothingness – I was part of that 40%. So I restarted the medication, and I haven’t stopped since.

I won’t even get into the social anxiety stuff here. That’s even worse that the depression. Depression is commonly viewed more as a personal weakness than an illness; but SA isn’t even seen as that: it’s just a joke.

Contrary to what the assholes out there say, depression isn’t a personal weakness. It’s not the pathetic obsession of weak-souled losers who just need to get off their couch and stop being such a schlub. It’s a real illness. It’s difficult, and it’s painful.

My depression is just as real as my GERD was, or as my allergies and asthma are. It needed to be treated just as seriously as they did. Getting stomach surgery probably saved my life. Getting treated for depression probably did too.

The assholes who try to portray depression as weakness, who mock people for suffering from depression, who make cracks about being nice to our moms and getting off of our butts: they’re not helping. But really, they don’t want to help. They want to feel smug and superior. But they’re doing worse than just not helping. They’re actively making things worse. By reinforcing the stigma against mental illness, they’re making it less likely that people who desperately need help will be able to get it.

So, as I responded to the tweet I quoted above:

Farewell Scientopia, Welcome to!

Welcome to the new home of Good Math/Bad Math!

Sorry about the change. I know that it’s a pain for readers to switch to following the site at a new location. But it was, honestly, necessary.

Scientopia was originally set up to be a community. I know this, because I was the founder. Back before ScienceBlogs pulled its PepsiBlog stunt, I’d been considering leaving and setting up an alternative, non-profit community. When PepsiGate happened, and my friend Scicurious volunteered to help, I flipped the switch, and turned on what became scientopia.

Since then, I’ve been footing the bills – around $250/month. And I’ve been doing all of the systems administration – every backup, every upgrade, every cache tweek, every DDOS attack – I’ve taken care of them all on my own time. Even after we started showing ads, I’ve never gotten back a single cent. Just that endless drain of time and money.

And that was OK. Really. I’ve been doing it for 3 1/2 years, and while it was a lot of work, I kept at it. I genuinely believed in the ideals that we wrote into the scientopia charter. I really believed that the community we’d built was a good thing, a thing worth supporting.

Scientopia was supposed to be a community. A community where we made decisions, as a group. Where we interacted with each other as peers. Where, as our code said, “It is a community, held together by mutual respect and operated by consensus, in which people can write, educate, discuss, and learn about science and the process of doing science”.

But people are people. If you’ve got more than two people in a group, you’ll wind up getting some politics. And Scientopia, as a community, is no different.

As you may have noticed, Scientopia was down, for about 36 hours. Why?

Because our DNS record got messed up. DNS is the system on the internet that’s used to map from hostnames to numbers. It’s the thing that your web-browser uses to get from “” to the numeric, which tells it where can be found on the network. The DNS registration was expiring, and the person who controlled the DNS decided to move to a different registrar, and they created an invalid DNS record with the new registrar. As a result, no one could get to scientopia. This was completely beyond my control: this person had sole control of the DNS record, and refused to allow anyone else access.

(For the tech-heads out there, after switching DNS providers, this person only created a CNAME record for the site. CNAME records are aliases/redirects from one resolvable hostname to another resolvable hostname. Since our IP address isn’t a resolvable hostname, DNS servers rejected the record as invalid, and thus Scientopia was not resolved.)

Fine. Screwups happen, right?

Except for the part where the guilty party decided to blame me. To cover up for their screwup, by lying about what was wrong, and blame it on me. To scapegoat me – not just about this, but to accuse me of general incompetence, and to blame me for the repeated DNS screwups.

The DNS record continues to be the one piece of infrastructure of scientopia that remains in the hands of one person. Despite repeated promises to turn them over to the community, it hasn’t happened. There’s been one condition, one excuse after another. When the community elects a governing board. When the community incorporates. When the community formally registers members as owners. For three and a half years, it’s always been a unkept promise. The community was never allowed to have any access to managing the DNS record.

Even when the site was down, allowing anyone else to have any access to the password needed to fix it was simply out of the question. I was expected to – and did, years ago – turn over the passwords to the site hosting account, which was secured with my personal credit card. But getting the site back up? Too much to ask for. And then they didn’t even have the decency to admit that they made a mistake, but instead tried to blame it on me. (And, I’ll add, has still refused to admit that registering the CNAME was an error, at all.)

This wasn’t the first time something like this happened. This has been a repeated pattern. Not the first, but I decided that it had to be the last.

Running a blog site like Scientopia is a lot of work. Keeping it up, monitoring it, keeping it up to date, dealing with every problem that any of the bloggers have – it’s a lot of work. At times, it’s a lot of aggravation. When you add malicious behavior and abuse on top of that? It’s just too much to put up with.

I’ve still got a lot of people at Scientopia that I consider my friends. I wish them well. But I’m done with it.

A Note to the Trolls Re: Comment Policies

Since yesterday’s post, I’ve been deluged with trolls who want to post comments about their views of sexual harassment. I’ve been deleting them as they come in, and that has, in turn, led to lots of complaints about how horrible unfair and mean I am.

I’ve been doing this blogging thing for a long time, and I’ve watched as a number of sites that I used to really enjoy have wound up becoming worthless, due to comment trolls. There are tons of trolls out there, and they’re more than happy to devote a lot of time and energy to trolling and derailing. When I started my blog, I had a very open commenting policy: I rarely if ever deleted comments, and only did so when they were explicitly abusive towards other commenters. Since then, I’ve learned that in the current internet culture, that doesn’t work. The only way to maintain a halfway decent comment forum is to moderate aggressively. So I’ve become much more aggressive about removing the stuff that I believe to be trolling.

Here’s the problem: Trolls aren’t interested in real discussions. They’re interested in derailing discussions that they don’t like. I’m not interested in hosting flame wars, misogynistic rants, or other forms of trolling. In case you haven’t noticed, this is my blog. I’ll do what I feel is appropriate to maintain a non-abusive, non-troll-infested comment section. I am under no obligation to post your rants, and I am under no obligation to provide you with a list of bullet points of what my exact standards are. If I judge a comment to be inappropriate, I’ll delete it. If don’t like that, you’re welcome to find another forum, or create your own. It’s a big internet out there: there’s bound to be a place where your arguments are welcome. But that’s not this place. If I’m over-aggressive in my moderation, the only one who’ll be hurt by that will be me, because I will have wrecked the comment forum on my blog. That’s a risk I’m prepared to take.

Let me add one additional comment about the particular trolls who’ve been coming to visit lately: I’ve learned, over time, a thing or two about the demographics of the people who visit this blog. As much as I’d prefer it to be otherwise, the frequent commenters on this blog are overwhelmingly male – over the history of the blog, of commenters where gender can be identified, the comments are over 90% male. Similarly, in my career as an engineer, the population of my coworkers has been very, very skewed: the engineering population at my workplaces has varied, but I’ve never worked anywhere where the population of engineers and engineering managers was less than 80% male.

But according to my recent trollish commenters, I’m supposed to believe that suddenly that population has changed, dramatically. Suddenly, every single comment is being posted by a woman who has never seen any male-on-female sexual harassment, but who was a personal witness of multiple female engineering managers who sexually harassed their male employees without any repercussions. It’s particularly amusing, because those rants about the evil sexually-harassing female managers are frequently followed by rants about how the problem is the difference in sexual drive between men and women. Funny how women just aren’t as sexually motivated as man, and that’s the cause of the problem, but there are all of these evil female managers sexually harassing their employees despite their inferior female sexual drive, isn’t it?

Um, guys?! You’re not fooling me. You’re not fooling anyone. I’m not obligated to provide you with a forum for your lies. So go away, find someplace else. Or feel free to keep submitting your comments, but know that they’re going to wind up in the bit-bucket.

Gender Bias, Sexism, and the Science Cheerleaders

My dear friend Sci seems to have stirred up a bit of a hornet’s nest by posting something less than entirely complimentary about the science cheerleaders. That sounds like a sarcastic way of saying that she wrote something taking them down – but actually it’s an accurate description of what she did. What she wrote wasn’t entirely negative or entirely positive. It was an honest, balanced assessment of just what she thought about the idea of the science cheerleaders and why they made her feel uncomfortable.

I think Sci’s assessment was dead-on. But over at Labspaces, there’s a whole discussion about it which has largely devolved into a bunch of people shouting at each other (complete with a sub-discussion about which dudes successfully banged hot but crazy smart chicks).

I don’t have much too say about the basic issue that hasn’t already been said. Personally, I’m very much behind Sci’s take on it. I’ve got a daughter who loves science, and I’d be very proud if she grows up to become a scientist; but I don’t like the message that I think the science cheerleaders actually deliver.

What I think gets missed in discussions like this is that there’s an awful lot of societal context that you need to consider in things like this. An awful lot of the criticism that’s been aimed at the people who aren’t thrilled with the science cheerleaders is, I think, based on ignoring that context.

We live is a highly patriarchal society. In our society, there is a constant message that men are important, and that women exist in order to serve men. A woman who isn’t attractive, who isn’t dressing in ways that show off her fuckability, is considered less valuable as a person.

This isn’t just an attitude of the misogynistic assholes in our society. This is an attitude of our society, reinforced virtually everywhere. It’s something that’s virtually impossible to avoid. No matter how much you think you’re better than that, that you don’t believe that you’re a sexist or a misogynist, you’ve still absorbed that message. Living in this society, it’s pretty much impossible to not absorb that message. Whether you’re a man or a woman, whether you’re young or old, whether you’re smart or stupid, whether you’re straight or gay, it doesn’t matter. This is a very deeply engrained attitude in our society, and you can’t avoid it.

I’m not saying this to insult men, or to insult women. But I am saying that if you deny that you’ve been influenced by the society you grew up in, if you deny that you’ve internalized the incredibly strong messages of sexual and gender roles that are such a part of your society, then you are fooling yourself.

Just, for a moment, think about cheerleading as a sport.

Cheerleading is the most popular sport for young women in high school. There are thousands of girls who want to be cheerleaders, with huge competition for the few available spots. As a sport, it’s extremely demanding and difficult physically. It takes a tremendous amount of effort, practice, skill, and strength to be any good at it.

But what does a cheerleader actually do? What is their role as an athlete? It’s not to go out and win. Not even to compete. The primary role of a cheerleader is to support the male athletes. Cheerleaders are dressed up in impractical costumes – tiny skirts even in the coldest weather – and to dance, jump, and do all sorts of rythmic gymnastics while men are competing at the real sport. The women’s sport is very much subservient to the men’s, and the women’s sport is highly sexualized.

Even when you have co-ed cheerleading, you’ll find that the men typically wear long pants and a loose sweater, while the girls wear miniskirts and tight clinging, revealing tops.

In the male sports that have cheerleaders, the primary role of the male participants is to show off their strength and skill at the sport. The primary role of the chearleaders is to show how a group of attractive, fuckable women are supporting the talented male athletes.

This is basically the problem that many people have with the science cheerleaders. It isn’t that there’s anything intrinsically wrong with cheerleaders – but the societal context of cheerleading is that the cheerleaders aren’t part of the thing they cheer – they’re outsiders who support it by showing off how hot they are.

The “science cheerleaders” don’t actually cheer about science. They don’t show off their scientific skills. They don’t show that they know or care anything about science. Taken in the context of the society that they’re part of, and the traditional role and purpose of a cheerleader, they’re basically removing themselves from any role as an actual participant in science. Cheering isn’t part of the activity being cheered. A football cheerleader doesn’t play football; she supports the football player. A science cheerleader isn’t doing science; she’s supporting the scientists. And in our society, when you put together a group of hot women in hot costumes nad have them cheer about science, the basic message isn’t “Women can be interested in science” or “Women can be scientists”. It’s “science is cool, and you girls can support it by showing off how fuckable you are to all those smart science dudes”.

At best, what the science cheerleaders do is say “You can be interested in science and still be hot”. But put in context, that’s a very sad message: what it says is “As a woman, your primary responsibility is to be hot; you can be a scientist too, as long as you’re hot.”

Most people don’t want to think of themselves as being sexists or racists. Our self-image is that being a racist or a sexist is bad, and we’re not bad people. So we reject the idea that we’ve got these deeply ingrained racist and sexist attitudes. The problem is, we are sexists. We are racists. We’re not deliberately racist or sexist – but we all share the common context of our society, and it is ridiculous to pretend that we have somehow overcome that. And that causes some of the most pernicious problems of discrimination. The majority of discrimination today isn’t conscious and deliberate. It’s subconscious: it’s the attitudes and beliefs that we have internalized, which color our perceptions in ways we don’t even recognize.

I’ve done a lot of work recruiting, interviewing, and hiring people. And when you look at that, it becomes ridiculously obvious just how strong those subconscious biases are.

For example, in an experiment I’ve actually witnessed: Give a guy a bunch of resumes with names removed, and stripped of any content which could show the gender of the candidate, and they’ll pick out a bunch of resumes. If you look at the resulting selection, you’ll typically find that the number of women’s resumes who get selected are slightly above the proportion of women in the population. (This is another manifestation of sexism; in order to succeed, women need to be better than the corresponding male candidates; in a technical job, the average woman candidate will have better qualifications than the men she’s competing with, and in a blind resume search, that will result in the women being selected at a higher rate, because they have better qualifications.

Now, take the same batch of resumes, and an equivalent batch of screeners, but leave the names/gender identifiers on the resumes. You’ll get a dramatically different result. In the resulting pool of selected resumes, you’ll find that nearly all of the top male candidates from the initial round – better than 90% – were also selected in the open search. But of the women selected in the blind search, less that 20% will get selected in the open search.

And it’s not just men who do this. Use women as screeners, and you’ll see something similar. It’s not quite as as extreme – with women screeners in the open search, about 40% of the women from the blind search will also get selected. But still, the majority of women will be excluded, when the only additional piece of data is gender.

That’s the problem with the science cheerleaders. Not that there’s something wrong with cheering about science. Not because it’s impossible to be both a cheerleader and a scientist. The problem is that given our societal biases, the science cheerleaders play right into gender stereotype, and end up reinforcing the message that the primary role of women in science is sexual and supportive. You can be a female scientist – but if you are, it’s important that you do it in a way which shows your sexual subservience to the men. You can be a female scientist – as long as you’re also a hot chick who’s sexually available to male scientists.

As a closing point, before you start flaming me: just ask yourself, honestly: what would you think if a group of men dressed up in speedos and filmed a video cheering about science? Not doing any science – just dancing in their speedos chanting “science is cool.” In fact, can you even imagine a bunch of really great male scientists agreeing to dance in speedos while cheering?

Searching for Topics

As regular readers have no doubt noticed by now, posting on the blog
has been slow lately. I’ve been trying to come back up to speed, but so
far, that’s been mainly in the form of bad math posts. I’d like to get
back to the good stuff. Unfortunately, the chaos theory stuff that I was
posting just isn’t good for my schedule right now. Once you get past
the definitions of chaos, and understanding what it means, actually
analyzing chaotic systems is something that doesn’t come easily to me – which
means that it takes a lot of time to put together a post. And
my work schedule right now means that I just don’t have that amount of

So, dear readers, what mathematical topics would you be particularly interested in reading about? Since I’m a computer scientist, my background obviously runs towards the discrete math side of the world – so, for the most part, the easiest topics for me to write about are from that side. But don’t let that limit you: tell me what you want to know about, and I’ll take the suggestions into consideration, and figure out which one(s) I have the time to study and write about.

I don’t want to limit you by making suggestions. I’ve tried that in the past, and the requests inevitably end up circling around the things I suggested. But I really want to know just what you want to know more about. So – fire away!

The Best Dog in the World is Gone


Things on the blog are probably going to be quiet for a while. My beloved pup, Nutmeg, died last night. He had pancreatic cancer, which had spread to his lungs, liver, and bones. He finally reached the point where even potent medication wasn’t enough to relieve his pain enough, so we had to euthanize him. He died with the entire family
there holding him. I’ve never known another dog like him; he had the most
amazing, wonderful temperament. He was one of the sweetest, gentlest, most loving creatures I’ve ever known. I miss him terribly.