• About
  • Projects & Research
  • Publications
  • Archives
  • Categories
  • Archive for the ‘Computer Science’ Category

    Computer Science, the study of…? Mathematics.


    2010 - 04.30

    [Note: I wrote this more as a curiosity.  What follows is a dabbling into one perspective of what computer science is, a subfield of mathematics in this case. I think it would make an interesting series and invite requests.]

    One of my all time favorite quotes attributed to Edsger Dijkstra (one of the best known theorists and algorithms computer scientists) is:

    Computer science is as much about computers as astronomy is about telescopes.

    Djikstra felt very strongly that computer science should be viewed as a branch of mathematics. A radically novel subfield.

    First, the “divide and conquer” view of large systems (breaking a universe into galaxies into solar systems and so forth) does not work for programs. Changing one bit (abstracted away in the creator’s mind), changes the entire system. There are no too small to matter parts.

    Second, computer science relies on discrete numbers. A bit is a one or a zero (excluding quantum computing systems). Our logic depends on yes/no choice:

    if (x) : then y
    else : z

    We pick branches; we do not go down multiple paths. A discrete system is antithesis to the analog perspective we humans have. We have the notion of “gray areas.” We can have proportions (like one third) that can only be estimated by a computer.

    He was also adamant against software engineering, or as he called it, “The Doomed Discipline” as it cannot guarantee correctness. Consider testing: while one can find bugs through testing, one cannot prove there are no bugs in the code. (Not finding something is not definitive proof.)

    In regards, to how he felt computer science should go, he demanded formality. Language should be accurate. Errors are not an infection or insect, and, hence, not a “bug.” Software and hardware are inanimate things; they should not be personified (they are genderless and do not desire, need, want, etc. anything).

    And, our very beloved proofs. While not as formal as those in a mathematics course, there must be irrefutable logic to them. As this is a model-centric view, each program is an independent model. So, students need to be able to justify that their program (their proof) is sound.


    For more information about Dijkstra’s views, I recommend his 1998 paper, “The Cruelty of Really Teaching Computer Science.”

    Feminist Computing?


    2010 - 04.10

    [So, I guess I'm too pissed off to mope this weekend. Ah well.]

    Computing is gendered.

    And I don’t mean ratio of men to non-men. I mean this shit uses pronouns.

    For a second-year computing course, we needed to choose partners for the assignments. To make this easier and not an exercise in “pick your friends,” the professor had us fill out a form; all of the forms were visible online. One had this treat:

    Recursion rapes me bad.

    I sat there stunned. Someone compared a methodology to rape. I grabbed the female TA; she couldn’t make any sense of it either. No one had considered that the answers needed to be reviewed.

    And, to be fair, I don’t think it was a male student making this assertion. One of the female students I had in this course, exclaimed that a “test had raped [her].” Why? I’ve yet to hear a male student make a similar statement. But, then men don’t get raped.1 Why would they describe themselves as being raped? None of the male students she was talking to called her on it. It’s acceptable for women being raped as a metaphor for a hard exam.

    Grading assignments, I have written that “objects are not people” as part of the explanation as to why they are loosing points (or didn’t earn points). Why? Because Bob, Guy, Dood, etc. aren’t useful or descriptive variable names. They aren’t useful names for anything besides demonstrating that the writer has a “default male” worldview.

    I point out when the male faculty members use “girl” to describe their students. They are getting better at it and know why the term is problematic. First off, this is a university. It’s pretty unusual for someone to be in attendance that hasn’t reached puberty or age of majority. It’s not the correct term. Second, there  is the issue that the equivalent “boy” is never used for men. It is an insult for a man to be called a boy; it should be viewed as equally insulting for a woman to be addressed as a “girl.”2

    And then there are the textbooks. For reasons I can’t fathom, texts like to use pronouns. But, as “you” is too informal, the writers create a fictional reader character. This character is almost always masculine. And in the cases when it is feminine, it’s still problematic. Gendered pronouns exclude some readers. Having it masculine excludes women and asserts male privilege. But, the feminine pronouns also exclude men. Both he and she exclude genderqueer readers. So, can we please just use gender neutral pronouns? They, one, you, and the cornucopia of invented pronouns would all be an improvement.

    So, how to promote feminist computing?

    • Get these people into a women or gender studies class. It startles me that women are surprised that the problems they face in computing isn’t unique to computing.
    • Continue or start calling out sexist behaviour or beliefs.
    • Be inclusive. Not only to women, but  everyone.
    • Emphasize the contributions of women, not because this is the special women example, but because that there are women that have contributed a lot to the field.

    Any other suggestions?

    1 A US 1999 study found 9% of reported rape victims are men. That percentage may be lower as men are told that they “can’t be raped” and are belittled when they identify rape.
    2 This statement is problematic: it assumes that being that an adult is a better state than being a child. If anyone has a suggestion on maintaining the sexist comparison without asserting adult privilege, it would be appreciated.

    Prove you’re a programmer


    2010 - 04.08

    That was the major question for an interview I had yesterday. An interview where the only clear direction I had was that I would be doing a 15 minute presentation for. So, I, was expecting an interview focused on my communication skills.

    And a lot of it was.

    And then there was the “prove you’re a programmer” line. Codeless, in a dim-lit room, with no sign of paper or blackboard. How do you answer that? “Here’s my transcript,” “define ‘programmer,’” talk again on projects I’ve done, or what?

    I went with the simplest for me: I grade code; I would hope that’s a good indication that I know how to program.

    I left that interview feeling completely dejected over that one little statement. Nearly in tears, I started the drive to school. And at times like these, I am so glad I have ADHD. Because, while conscious me was trying not to get myself killed from being an emotional breakdown, unconscious me was working out what other paths I could take besides accepting it: the main interviewer had invited me to email him, and he sounded interested in the C class project I had finished, so maybe I was suppose to send him some code? Based on the feedback I got, right answer.

    That said, “prove you’re a programmer” is a very problematic request. I understand that it is a valid concern; there are plenty of coding horror stories. But it could have been phrased so much better.

    “Prove you can do X” is demanded of members of minority groups in varying degrees within “inclusive” environments. Even better, as a member of a minority group means that you get to represent an entire group and that you are only valuable if your contributions are better (not equal to) the majority group.

    Specifically for computing, women’s roles are relegated to technical writing and graphic/interaction design. Women that make contributions that are outside that realm are held as exceptions. Exceptions that are then neglected when discussed outside the bubble of “women in computing.” Seriously, technology isn’t gendered, so why the hell are things made by women viewed as nonexistent?

    Now, to put on my disabled person’s hat. I’m used to dealing with ambiguous statements. Asking “how are you” I’ve learned isn’t a genuine question: the response is a neutral-good sentiment that’s one or two words. But, the question itself is peculiar when I process it: “how are you doing/feeling” or “what causes your existence.” To a normal person, the second version is almost never intended.

    But, being disabled puts me at greater risk than assuming an able-bodied role. And, able-bodied people will overwrite the signs that I don’t hide. That constant twitching, jumpy motion? Obviously, I’m nervous, not hyperactive. (Can’t for the life of me work out what the perception is when I’m clearly not nervous and still twitchy.)

    Statements that are purposefully ambiguous? Well, now I’m fucked. Usually, reinterpret normal talk into their non-ambiguous world view. Now I have to match a question with one answer to one that intends diverse answers.

    Shit.

    It will take a while before I actually catch on that the question has multiple correct answers. At which point, I’ve already spit out whatever answer I came to first.

    Double shit.

    This story may or may not have a happy ending. But, take away the knowledge that speaking from a position of privilege doesn’t mean that you’re saying what you think you’re saying.

    Asking a woman to “prove they’re a programmer” is linked with sexist remarks slung at women. Yeah, the interview probably didn’t intend it to be sexist, but that doesn’t take away the connotations of the statement. If you intend to include women, first step is to remove non-inclusive phrasing.

    Expecting everyone to not have a disability is ignorant. People with disabilities are expected to compensate for a disability, rather than society accommodate that disability. Demanding that I follow societal interpretations and recognize when this “communication contract” (secret normal people talk pattern) is broken takes away my power.

    Words have meanings.

    They have lots of meanings.

    They have meanings that aren’t even written down.

    Fragmented OS


    2010 - 03.01

    So, the Technical Account Manager for Android at Google came for the department’s seminar session. She’s basically in charge of Google’s relationship with manufacturers that use the Android OS. First off, Google is not the soul creator of Android. It’s actually a creation of the Open Handset Alliance, a group of handset manufacturers, software developers, cell phone service companies, etc.

    The Android OS, despite being less than a year and a half old, has fragmented to an appalling degree. Different manufacturers include varied screen sizes, sensors and actuators. So, application developers cannot predict what hardware is available. And consumers cannot easily predict if an application they download will function correctly.

    The operating system itself has even become fragmented. There are five different versions of Android available across different hardware. Developers now have to consider these different versions, not unlike working with different browsers. Developing for the latest version (as Google does), effectively tells anyone with an older version (79.6% of the Android market at the moment) that they’re out of luck.

    I will note that the speaker suggested using version 1.5 or 1.6 rather than 2.1 in developing. On the one hand, that does solve a short term problem of diverse systems. On the other, it makes an unsafe assumption of developers: that we’d want to use an older specification. For most programming languages, it is better practice and makes a person more employable to use the latest standard whenever possible.

    And, there are some genuine reasons for this fragmentation. With more varied hardware, it becomes increasingly difficult to include the appropriate drivers (needing to write one for every new feature for every individual piece of hardware). Some devices do not contain the memory or processing to be upgraded, which effectively keeps them trapped with their original version.

    It’s this fragmentation that will eventually lead to different flavors of the Android OS, more or less defeating the purpose of a unified operating system. Manufacturers may want to consider having an easy Lego-like means of upgrading hardware, but that still does not account for building the drivers (and assumes that manufacturers would even want open hardware).

    Ah well. It was a nice idea.

    Brand Me


    2010 - 02.19

    My first years at university, I was a journalism advertising major. So, the inevitable question is how does one go from that to computer science?

    As a journalism major, it became quickly obvious that journalism (at least in the United States) has fallen quite far on the integrity scale. Today, it has gotten even worse. While The Daily Show, a comedy program, employs a full time fact checker, news organizations will employ one perhaps part time. Most mass media is owned by one of five megacorporations. Megacorporations that have other assets to promote and a profit-oriented view.

    So, I decided if I were to be evil, I just as well be honest about it. So, I switched to advertising. I really enjoyed the topic, particularly the discussions of intersections and media interactions. I love being creative and creating stories, which is the foundation of the creative area of advertising (as opposed to branding). My profs were great.

    But, my peers were a different story. I really did not have any thing in common with them. Even with advertising, I don’t want to just watch the ads. Advertising needs to earn my attention. And most did not seem to look past the surface while creating; to sell something you need to get in the mindset of the market.

    At this point, I stepped back and considered what I wanted and what had drawn me to advertising. It was telling stories. It was swapping my viewpoint with that of someone completely different; learning about socio-economic and cultural aspects of others. And there is something appealing about convincing someone that you have something that will genuinely make their life better.

    I decided I wanted to make the things that would be worthwhile. These things that advertising could be honest. And technology is where the world is innovating. So, engineering or computer science? Computer science just felt more right to me.

    The world is becoming ambient advertising. Even journalism, traditionally viewed as objective, has an angle; what new pandemic, book, sports team am I being sold now? Buses, sidewalks, television, movies, textbooks… all are subtly trying to sell me something.

    Let’s say it’s a free, open source tool. Alternative tools (which may have equal features) won’t be mentioned. And rarely, they’ll give me a reason why I need X feature. No one is even being paid in these cases.

    Word of mouth is the most effective and cheapest advertising medium available. It’s people that like your product or service to talk about it to others that trust this person’s judgement.

    People even advertise themselves: public versus private personas. And there may be more than one. What language do you use with children? Coworkers? Friends? Family? Doubt it’s the same across all of them. (I’d certainly get in trouble if my thoughts always got to my mouth.)

    Then, there’s the question of labels that are used. Despite building little embedded and alternative interface systems, I’m not about to call myself a “maker,” “hobbyist,” or “engineer.” These terms conjure images that I do not associate with even if they could be correct.

    … So, if the whole world is one big advertisement, how do you brand a person. First, we need to consider what branding is. No, not the kind involving a hot iron. Branding is an idea that is painted onto a commodity. Owning a Mac does not make a person creative. A sports car does not guarantee a fast (possibly reckless) driver. Having lung cancer doesn’t mean the person is a smoker and deserved it. All computers, cars, and cancers are more or less the same. Yet, we associate these things with social messages.

    So how do people brand? Well, I’ve been building the brand that is Alison since I came into existence. It’s not that I am creating one from scratch: I am just continuing my branding. (Think of Disney. When was that not about family entertainment?)

    While it is possible to rebrand a person, that’s increasingly difficult. A doctor isn’t going to become a shoe salesman easily. So, think on what you have and how to sell that. Let’s try dissecting me:

    • Person (I prefer human-first labeling)
      • Humor: Dry, sarcastic, and dark with occasional bad puns
      • Morals: Emphasizes integrity and being honest with oneself about immoral behavior
      • Animal lover: has pets and buys humane animal products
      • Creative: paints, writes, and creates projects
    • Computer scientist
      • Mixed advanced courses: diverse CS interests
      • Diversity work: wants equal opportunities for everyone
      • Tutor: knows material to be able to teach

    That’s a very basic one. I could go into being female, a person with a disability (with its subgroups), middle class, European-American, older child, being raised in diverse locations, enjoying Asian foods, being dairy-free etc. What of me is worth selling? Well, as with selling anything, it depends on who I’m selling to.