Posts Tagged ‘computers’

Why Are There So Few Female Programmers?

Saturday, April 25th, 2009

I got into a discussion on Trogger this morning about the question of men far outnumbering women in computer science (in my experience, this is very true — in my college CS classes of 20-25 people I would usually be one of 2 women, and of the 20 or so people my year who actually graduated with CS degrees, I was the only woman); why is this, and what can be done about it?

I think a lot of this has to do with unconscious bias and role models. As Cassie pointed out in her original post, a big factor is probably stereotype threat — the finding that members of particular groups stereotyped at being bad at certain subjects actually do worse in tests of those subjects if they are told the tests show a gender/race disparity, or even just asked to list their race or gender, than if they take the tests without race or gender brought up. Research like the Implicit Association Test suggests that most people, even female scientists and mathematicians themselves, unconsciously find it easier to associate math and science with men than with women.

Implicit biases in a person aren’t evidence that the person is actively discriminatory — they’re subconscious ideas that we get from the racist, patriarchal society all of us are raised in. No matter how consciously convinced you are that women make great scientists and technologists, you probably also have the subconscious implicit biases that suggest otherwise. So it’s not so much a question of women thinking, “Hey, I probably won’t be good at programming because I’m a woman!”, as thinking, “Oh, I just don’t see myself as a programmer”, without realizing that this idea might come from subconsciously ingrained biases about what a programmer is like (male).

But these biases can be fought! Research associated with the IAT has shown that people show less evidence of implicit biases when holding counter-stereotypes in their minds; for example, you’re more likely to associate women with science if you read about Rosalind Franklin or Marie Curie right before taking the test. This is what Ada Lovelace Day is all about — promoting the women who are already successful in scientific and technical fields is a win for everybody. The more visible women in science and technology are, the less prevalent these implicit biases will be in the future, and the more girls and young women will be motivated to enter these fields.

Ada Lovelace Day

Wednesday, March 25th, 2009

AdaIt’s easier for women to feel motivated to pursue traditionally male-dominated interests if they can see other women working in those fields; but yet, women’s contributions to technical fields are often invisible. So Suw Charman-Anderson started Ada Lovelace Day to bring these women out of the shadows by encouraging as many people as possible to blog about women in technology on the same day.

March 24? Why, that’s today! Here are some of my computing heroines:

  • Ada Lovelace herself, of course! She’s now thought of as the first computer programmer — she was friends with Charles Babbage and wrote a set of instructions for calculating on his Analytical Engine that’s thought of as the first program (although the engine was never built, so she would never get to test her code).
  • Grace Murray Hopper was a freakin’ badass. She was a Navy admiral who pioneered the idea that computer programming languages should be similar to English (helping make possible COBOL’s leap away from assembly language to a new level of abstraction, which made programming a lot easier!). She was also one of the first people to develop and promote standards for computer languages and systems.
  • Maria Webster is the author of the blog dotfiveone: Geekspace for Women, which covers everything from science fiction to hands-on electronic circuit building. By providing a space on the internet targeted toward women who are already quite geeky, thanks very much, Ms. Webster definitely helps to fill a niche that’s too often neglected.
  • Valerie Aurora (formerly known as Val Henson) is a kernel hacker, filesystem geek, and Linux developer who also wrote this great HOWTO Encourage Women in Linux.
  • Cathy Malmrose overcame childhood discouragement of her technical interests to found and run ZaReason, one of the few hardware vendors to sell systems with Linux preinstalled. Ms. Malmrose also makes a point of sharing information about open-source software in an open, friendly way to people in her community; as a t-shirt on her site says, “Friends help friends use Linux”!
  • Everyone involved in LinuxChix, a great support/information-sharing organization whose motto is “Be polite, be helpful.” Words to live by!
  • Gina Levow is an AI/computational linguistics researcher who was also one of my computer science professors in college; she gave me my first technical jobs, first as her research assistant (which is where I first learned UNIX-y command line magic) and then as a grader for an introductory CS class.
  • Anne Rogers was another one of my CS professors; her Operating Systems (and Computer Architecture) classes were an intense boot camp for learning the inner workings of computers, and after taking them, I knew I was compelled to pursue even more technical knowledge.
  • Yikes, that list ended up way longer than I planned (I kept thinking of more awesome ladies to add)! I’d also recommend searching for more Ada Lovelace Day posts — I really enjoyed seeing other bloggers’ profiles of accomplished technical women.

Windows Vista and Ubuntu Dual-Boot (Gateway T-1628; resolving install error 0×80070017)

Thursday, March 12th, 2009

So Internet Explorer 7 has been out for a while now, and I finally caved — I can’t get it to work using the wonderful ies4linux, so I need to have a copy of Windows available to test sites in action.

Fortunately I still had the re-installation disc from the copy of Vista I wiped from the laptop when I got it. Here’s how I set up my dual-boot:

  1. Burn an Ubuntu Live CD; boot from that CD, and launch the GParted partition editor from the System > Administration menu.

    Note: This step is where I ran into the most issues. I tried to create a new partition for Windows, following the instructions from this guide — but the Windows install would freeze at “expanding files 0%”, and later give me error # 0×80070017. Googling suggested that this error might have been a problem with the disc, but that didn’t really make sense since this was a factory disc. Eventually I figured out that it just meant there was some problem communicating between the disc and the hard drive — Vista didn’t like the partition I’d set up after my Ubuntu partition.

    Here’s how I solved this issue: I used GParted to move my Ubuntu install forward on the disk, then created a partition (without formatting it) for Vista at the beginning of the drive. Then — since Ubuntu’s bootloader was still at the beginning of the drive, and Vista gets confused when it sees that trace of another operating system — I needed to zero out the new partition, with dd if=/dev/zero of=/dev/sda1 where sda1 is the new partition. Warning! If you try to use that command without knowing what you are doing, you may well zero out your whole drive!! ALWAYS HAVE BACKUPS.

  2. Put in Windows CD; choose “Custom Install”; select the new partition as the destination (it should be called “Unallocated” or something — it was pretty recognizable after my work with GParted); click through until it starts installing; wait a LONG LONG time.
  3. Boot into Windows! Plug in ethernet cord; reboot to install drivers, etc. that allow me to have nice things like correct screen resolution and wireless internet.
  4. Use the Ubuntu Live CD and these instructions to restore my bootloader and set up dual-boot
  5. Happily choose between Ubuntu and Vista every time I boot up!

In general, this install would have gone a lot smoother had Vista been able to peacefully coexist with another bootloader. Different versions of Linux have no problem living on different partitions, and when you have an existing Windows install, you can easily install Linux in a separate partition without any confusion. But then, I guess that’s because Linux is designed to be used the way its users want to use it, and Windows is designed to be used the way Microsoft wants you to use it.

Using Vista a little bit gave me a better appreciation for people who try Linux and don’t care for it — I found myself disliking things about Vista just because it was unfamiliar and didn’t come set up the way I like it. But even though I know I could customize it and get more comfortable with it, I’ll still stick with Ubuntu for most of my computing, since I know it’s what ultimately gives me the most flexibility.

Command Line Magic

Monday, May 19th, 2008

Using the command line rather than a graphical interface is one of the things that a lot of people find most intimidating about the idea of using Linux. While (my last post notwithstanding!) you can accomplish most things without ever opening up the Terminal, I’ve grown more and more enamored of using the command line whenever possible.

I found gaining fluency with the command line to be like apprenticing to a magician; at first, you utter the magic incantations syllable by syllable knowing only what will result from the whole. But the more spells you learn, the easier it becomes to notice that each part has meaning, eventually acquiring the knowledge to recombine them in ways you’ve never seen and feel confident that you can predict what will result. Once you gain experience, it’s simply faster to rattle off a handful of magic words than to navigate through the space of the graphical desktop.

If you have a Linux or Mac OS X machine, you can try this at home (Windows has a command line too, but it’s not as integrated with the rest of the system and uses different syntax). Open the “Terminal” application and give it a try:

echo 'hello world'

will print the phrase ‘hello world’

pwd

will give you the name of the directory you’re currently in

ls

will list all the files in your directory

cat groceries.txt

will print the contents of groceries.txt (if groceries.txt is a text file) to the screen

man grep

will print the manual page for the command grep

Commands can have arguments that modify their functions:

ls -l

will list all the files in your directory, in a longer format

firefox &

will launch firefox in the background

The output from a command can be piped into another command:

cat groceries.txt | grep apples

will grep (search) for the phrase ‘apples’ in the printed text of groceries.txt

ls | grep groceries

will search for ‘groceries’ in the list of files in the current directory

echo 'bananas' >> groceries.txt

will append the line ‘bananas’ to the bottom of the file groceries.txt

Not only that, but commands can be used to search for other commands:

man -k search

will give you a list of the names and short descriptions of all the commands whose short descriptions include the phrase ’search’

Share folders between two Ubuntu computers on the same LAN with NFS

Saturday, May 17th, 2008

While most things about Ubuntu work pretty much the way you want/expect the first time, one exception is sharing folders between two computers on the same LAN (”Local Area Network” — in this case, multiple computers in the same house sharing an internet connection via a router). Surprisingly, it’s easier/more intuitive to do this between an Ubuntu computer and a Windows computer! I wish Ubuntu would make a more intuitive, graphical way for non-technical users to do this — though I certainly have fun tinkering with these things and learning more about networking (or what-have-you) as I go.

Through some command-line magic, I’ve gotten my laptop to be able to access the music folder on my desktop — right now I’m playing music on my laptop that’s actually stored on my desktop’s much bigger hard drive. Sweet! How did I manage this?

Say you have two computers, both running Linux (in this case they’re both running Ubuntu and I can’t vouch that this will work on any other distro, but I suspect it would) — the server, which has the folder you want to share on its physical media, and the client, which will connect to the server and access its data.

On the client:
1. In a Terminal window, run

sudo apt-get install nfs-common

— this installs the software you’ll need.
2. Run

ifconfig

to find your IP on the local network; it should look something like

inet addr:192.168.1.101

(If you see more than one instance of “inet addr” in the output of ifconfig, choose the address that doesn’t begin with 127.)

On the server:
3. In a Terminal window, run

sudo apt-get install nfs-kernel-server

4. Edit the

/etc/hosts

file and add a line that looks like this:

neuron 192.168.1.101

where “neuron” is replaced with the hostname or a nickname for your client (in this case, “neuron” is the name of my laptop) and “192.168.1.101″ is replaced with the IP you found in step 2.
5. Test this — in a Terminal, run

ping -c 1 neuron

(or whatever name you used) and see if you get a response. If you get a response like “unknown host”, something is wrong — re-check your work from the previous steps (and check that the two computers are really on the same network!). If you get a response like “… 64 bytes from neuron… 1 packets transmitted, 1 received … ” then everything is hunky-dory so far and you are ready to move on!
6. Edit the

/etc/hosts.allow

file and add a line that looks like this:

ALL: 192.168.1.101

(again, use the IP that you found in Step 2).
7. Edit the

/etc/exports

file and add a line that looks like this:

/home/music 192.168.1.101(rw,sync,subtree_check,no_root_squash)

where again 192… is replaced with the IP from step 2, and “/home/music” is replaced with the full path to the folder you want to share. Note that for some reason it is important that the parenthesized arguments don’t have a space between them.
8. Run

sudo /etc/init.d/nfs-kernel-server restart

9. Run

ifconfig

and get the IP of your server, the same way that you found it for the client.

Back on the client!
10. Edit

/etc/hosts

and add a line like

192.168.1.103 boffin

where “192.168.1.103″ is replaced with the IP of your server (from step 9) and “boffin” is replaced with the hostname/nickname of your server (”boffin” is the name of my desktop).
11.

ping -c 1 boffin

to check that this worked, just like in Step 5.
12. Make a mountpoint for your shared directory — in my case, I used

mkdir /media/boffin-music

13. Mount the shared directory at the mountpoint, like this:

sudo mount -t nfs boffin:/home/music /media/boffin-music

replacing “boffin” with your server’s name, “/home/music” with the location on the server of your shared folder, and “/media/boffin-music” with the mountpoint you created in step 12.
14. Now you should be able to browse to the mountpoint and see your shared files, and open them, and use them. Awesome!

Gateway T-1628 and Ubuntu Linux

Wednesday, May 14th, 2008

I posted recently about buying a new laptop — how is it working out, you may wonder?

Pretty well overall. The screen has remarkable clarity, the keyboard is comfortable, and the battery life is okay; on the other hand, the speakers are the quietest and tinniest-sounding speakers of any computer I’ve ever owned/used extensively. At 14.1″ for the screen, it’s just a little bulkier than I’d like (the 12″ iBook was a perfect size; how come computers that small now seem to be a luxury item?), and I’d prefer a slot-loading drive to the tray DVD drive it has. But overall it meets my needs, for now.

Judging by a quick Google search, I’m probably one of the first people to install Linux on this particular machine. It was a little tricky to find an install disk that would boot correctly; it’s a 64-bit machine, but the Hardy 64-bit installer had a problem with xorg and the Gutsy 64-bit disk had a problem with the installer. The Gutsy x86 disk worked fine — though I had to use the partitioner to wipe the entire disk rather than creating a partition alongside the Windows partition, since this computer came with a hidden partition with a “backup” install of Windows Vista. This seems like a particularly egregious invasion of the user’s freedom to use the computer as they wish — fortunately, blanking an entire hard drive still works!

Wireless and sound didn’t work right away; I used Ndiswrapper to install the RTL8187B Realtek driver, which I was able to download from the internet. To get sound to work, I needed to install linux-backports-modules-generic, run alsamixer and turn everything to unmuted/full volume, and reboot.

I did the installation process the day before Hardy’s official release; on release day, I used the updater to install the new release, and everything that had been working before still worked fine. I still haven’t gotten around to fixing suspend/hibernate, which didn’t work out-of-box, but I’m optimistic that I’ll get it going when I have more time to tinker.

Coffee Shop Wireless

Tuesday, May 13th, 2008

As someone who works primarily on the internet, I often find myself going to coffee shops that offer wireless to get out of the house. While I wish that more coffee shops offered free wireless internet (those that do get my business more than they would otherwise!), I sometimes find myself paying for wireless internet.

This typically works as follows: while connected to that wireless access point, you can access only a handful of pages, until you create an account and pay on one of those pages. After you’ve paid, you have access to the entire internet.

Like most online services, these wireless subscriptions have an option for you to generate a new password if you’ve forgotten yours. But there’s a Catch-22 — they email you your new password, and you can’t access your email until you’ve logged in… with your new password.

You’d think they’d have realized this issue and come up with a different solution, like a secret question, to allow you to reset your password without checking your email — it’s not like this is the highest-security application on the web. Meanwhile, I’ve learned from some frustrating times and am now storing these username/password combinations in text files on my laptop.

OLPC XO (OMG LOL?)

Friday, May 9th, 2008

After my trusty iBook’s motherboard died for the last, un-practically-fixable time, I thought I might try getting an ultraportable — after all, I reasoned, I pretty much just want to use a laptop for Firefox and ssh so I can work from friends’ houses, coffee shops, heck, even my couch once in a while. I don’t want to store a lot of stuff on my laptop; it’s more important that it be easier to carry around.

So I ordered an XO (you know! for kids!), fascinated by its charitable side effects and hipness factor, and figuring — I’m a small person! I want a small laptop!

It’s too small. It’s just slightly too small to be usable in every dimension — screen, keyboard, RAM, hard drive… I know, it’s for kids with small fingers and small computing needs, and my (relatively) small fingers and (relatively) small computing needs are small relative to those of adult first-world programmers. So I wasn’t too surprised or disappointed to discover that this laptop wouldn’t work out for my purposes (or when it took months longer than initially promised to arrive — they’re a charitable organization, after all, not a business). But I still don’t understand why, especially after they realized that they could profit from first-world demand for a thing like this, the OLPC folks weren’t interested in building a slightly modified version usable by adults. I’d think that the adults in the villages where these are being distributed would be interested in exploring them too, and that the kids’ fingers will get bigger pretty quickly and outgrow the tiny keyboard.

Still, it’s a pretty cool device, with a lot of innovative features — for kids. I hope the kid who got my laptop’s sister through the G1G1 program is enjoying it and learning from it!

Sweet Gnome Feature

Wednesday, May 7th, 2008

When I first started preferring Linux to Mac OS (which was my main OS for about six years before I started using Linux), my main motivation was tweaking the desktop — I started to hate the Dock’s lack of textual information, and I discovered that I could modify the look and feel of the fluxbox window manager to my tastes far more easily than any other desktop environment I’d used. That’s why it’s kind of ironic that I’m now using the less-customizable Gnome on all my installations (though I’m far from wedded to it — anyone with window manager recommendations, or tweaking-Gnome-a-bit-beyond-the-usual tutorials, please weigh in in the comments!).

There’s a lot of ease-of-use to like about Gnome, though. One thing I’m particularly psyched about is the keyboard shortcuts menu. Not only does it make it trivial to set up the function keys (volume control, play/pause, etc.) on my laptop to do what they look like they should do, but it’s customizable for far less obvious purposes. You can essentially assign any key combo or function key to any action. I already have my most commonly-used applications — the terminal and Firefox — as ready and obvious icons on the top panel, but who wants to use the mouse to go all the way up there? I have F2 open a new terminal and F3 open a new instance of Firefox. Every one of the several times a day I hit F2 to get a new terminal window, I smile a little thinking of the several seconds I’m saving.

And then I use those seconds to refresh LiveJournal. Every productive action has an unproductive reaction, I guess?

Best Buy Employee Has Never Heard of Linux?

Tuesday, May 6th, 2008

A few weeks ago I decided to buy myself a new laptop. I did everything wrong, and I was aware of it; I didn’t research my hardware needs, I didn’t research driver compatibility, I didn’t comparison-shop on the internet, and I reneged on my promise to myself to vote with my dollars for manufacturers who offer pre-installed open systems as an option (sorry, Dell!). I just woke up knowing that after months without a functional laptop, essentially tethered to my desktop workstation, I wanted a laptop and I wanted it that day.

So I found myself at Best Buy. I asked an employee whether I could buy a computer that didn’t come with Windows or MacOS pre-installed, and predictably, he said no and seemed confused at the question. This was what I expected. But then, as I asked him to unlock a couple models so I could see how they felt, we had the following exchange:

Me: It looks like the specs on this one are a little better for the price.
Best Buy Dude: Yeah, and you’ll need that three gigs of RAM to run Vista.
Me: Oh, I’m not going to be running Vista.
BBD [startled]: Oh! Uh… you know the success rate for installing a new operating system is basically zero, right? For people trying to put XP on these?
Me: Oh, I’m not going to be running XP either. I’m going to be installing Ubuntu.
BBD: What?
Me: Ubuntu? Linux?
BBD: What’s that?
Me: It’s an operating system. You should look it up, it’s free.
BBD: So what is it, is it like, a word processor?
Me: … It’s an operating system. You should look it up!
BBD: Yeah, OK, maybe.

Yikes! I don’t expect salespeople at big box stores to be free software geeks by a long shot, but you’d think people who help people pick out computers for a living would at least have a vague grasp of what’s going on in the tech world. Or at least, you know, know what an operating system is.