Sunday, September 30, 2007

Python Rocks

I did my program for my compling class. Hope it works for my "partner". His job is to run it and find the "glaring errors" in my regular expressions and such. Then he'll send those back to me and I fix them. I do the same for him.

I don't know what OS he uses, so I just sent him the raw sourcefiles and told him to run them by typing python analiza.py It's probably the easiest way. I did have the fun of actually setting it up as modules - there's the main program which calls out to the handler module, which uses a data module full of lists and dicts and sets oh my!

I got to really put sets and the re module to the test. I've not used re much - actually, I've avoided it like the plague. So - yes, it works. But I don't like it much. I remember the comment by Jamie Zawicki (often attributed to the effbot who used it as a sig):
Some people, when confronted with a problem, think “I know,
I'll use regular expressions.” Now they have two problems.


I'm just really really glad I got to use Python for this class.

The workshop went well. I should have asked people how far along they were - turns out some of them had taken the advice, and pointers to tutorials, and really run with it. But, I think some others were pretty novice, and got something out of the early part of the session. We divided it up: I covered syntax, loops, if/elif/else, strings, and did some hands-on work, then turned it over to Alex who covered regular expressions with re, and lists and dicts.

It'll be interesting to see how the class is on Tuesday. Unfortunately, I'm really behind on my reading for my philosophy of science class so I get to do that tomorrow morning. Then, back to programming, and then, my assignment for my HCI class and then more reading.

Wow. I feel good - but swamped.

Friday, September 28, 2007

Feeling better now

Went through some slides with Alex and focused on the things I want them to learn. I feel better about it now - I've got a good idea of how we'll go about things and what we'll be teaching. Should be interesting though. These are classmates, and I feel like this session will make a difference.

What was I thinking?

OMG - so I'm running a workshop on Python tomorrow, for classmates. With, like, no preparation. Booger.

Okay - deep breath. Alex has a bunch of slides on python 101, that I can steal from. I just have to figure out, like, what I'm going to cover and how I'm going to do that. Eep.

I'm thinking:
primitives: strings, numbers, lists
if/elif/else statements
for/while loops
user input
and just running a simple script.
And they'll have to be introduced to python's re module, because we have to do regular expression matching for the project.

So, yeah, it's not complicated but - uffda. I'm feeing really nervous now. I'll be okay, I just need to express that "OMGWTFBBQ" feeling.

Well that was interesting

My French class dropped me. The department doesn't want students having conflicts. So, that reduces my load.

My Computational Linguistics class instructor yesterday recommended Python for coding the class projects! (Several folks asked, and said they didn't know programming.) I volunteered to run a workshop on Satyrday (Alex offered to help) on Python for those folks. So we'll see if there's any interest - if so, I may be teaching Python! (Just the basics. We don't need any fancy programming for the class projects.)

Tuesday, September 25, 2007

So much for easy

So my plan was to take a light load this quarter: French, Phil and HCI. Then I found out about a nifty neuroscience course. Okay - maybe I can fit that in, it's only 2 credits and only one day a week. Then last night, I get an email saying that the computational linguistics course I was planning on taking next year won't be taught next year because he's going on leave. Sigh. So - drop the neuroscience course, and add the CompLing course, because I need that for my major and was looking forward to it. So now I have 18 units and 2 of the courses will be definitely putting me through my programming paces.

One of the things they'll be "teaching" in the HCI course is the "prototyping culture". I've already got that from Python. It's easy to prototype things when you know it's easy to refactor. It was interesting to see how many women were in the HCI class - one of the women asked if it was an okay class since she's not a "hardcore coder". The instructor was reassuring - we'll be working in teams, and as long as someone on the team can handle the programming, we'll be fine. I'm looking forward to this course.

I'm not looking forward to having more work than I'd expected. Ah well.

Sunday, September 23, 2007

Plus est en vous

Today was the Junior Convocation at Stanford. We were addressed by Scott Forstall, the VP at Apple who created the iPhone. He also happens to be a Stanford alumnus, in Symbolic Systems (my major). He was alternately funny and inspiring.

One of his themes was "plus est en vous": there is more in you (than you know). He spoke about how people often will have either fixed minds or growth minds - how fixed minded people will prefer to do things that show they're smart, but growth minded people will accept looking stupid as long as they get to learn something.

I felt, many times, like he was speaking directly to my own fears and insecurities - that I won't be good enough to do what I'd like to do with HCI. And I realized that, yeah, I may not end up being the best and the brightest in the field - but I could be good at it, and I could offer perspective that isn't there for those kids who go into it directly from highschool to college to working in the field. So yeah - it's okay to not be perfect, to take classes or positions that stretch me. Here's this VP who's done awesome things saying that he *hired* for that. That he *looked* for people who wanted to stretch, to take risks, to be willing to not "look smart" in order to *learn*.

He finished by challenging us to look for the "more" in ourselves, to be willing to take opportunities to explore things we had no idea we could do. It is nice to know that there are, at least a few, people out there hiring who candidates for more than just the safe bets. I, for one, find that reassuring.

EDIT: And as I turn to my Gmail, the quote of the day at the top of my inbox:
Babe Ruth - "Don't let the fear of striking out hold you back."

Thursday, September 20, 2007

She's Geeky

I want to encourage every woman in the bay area to attend:

She's Geeky (http://www.shesgeeky.org)
A Women's Tech (un)conference
October 22-23 in Mountain View, CA.

This event is designed to bring together women from a range of technology-focused disciplines who self identify as geeky. Our goal is to support skill exchange and learning between women working in diverse fields and to create a space for networking and to talk about issues faced by women in technology.

Wednesday, September 19, 2007

I heart Python

For the past year, I've been taking classes that required me to code in Java and C++, and in GUI IDEs, no less. So it's been a while since I've done any Python coding for myself. I finally was able recently to do a bit of Python and re-encounter the joy of using Python. I wrote in vim, and ran my scripts from the command line.

It delighted me how quickly I was done writing the simple scripts I needed - and it reminded me of how much I appreciate that quality. It's so much easier for me to get into the habit of thinking, "I could just program something to do this" when writing the code is so easy. And I was amazed at how fast it was to code the simple scripts I needed. With Python, I'm less likely to talk myself out of it ("oh, it'll take too long" or "it'll be too hard" followed by "find some bloatware that already does it for me...")

I look at my code, and it looks so spare, so bare, almost naked. No curly braces, no semi-colons, few parentheses. The for loop is so clean and simple. No wasted pixels or keystrokes. Only the bare minimum needed to get the job done. I kept thinking "there must be something missing" - but there wasn't.

My scripts do just what I need - and no more. Clean, simple, perfect. Thank you Guido. Python rocks!

Sunday, September 16, 2007

Between apps

I've been using the Shelfari app with Facebook. It's kinda fun. I heard there's a new Google Books "My Library" app. Great! I looked at it. The only way to import books is by ISBN. Eep. Okay, so I go to Shelfari, find out how to download my library. Write a little python script to extract the ISBNs, find out that some books don't have ISBNs - only ASINs (Amazon Standard ID Number), for no apparent reason. Fine, I'll only upload those majority that do have ISBNs. Copied the list of numbers and pasted it into Google's import ISBN textfield (Yes - you have to enter it into a textfield!) and hit Submit. Oh joy - it's imported about half of them, with no explanation as to why it didn't import the rest.

Problems:
1) no way to import directly from another app (like Shelfari or Goodreads or ...)
2) no way to browse my computer for a file of ISBNs
3) no information on what problem might have caused the others to not import

There's no good reason in this day and age why any app like this shouldn't allow *some* easy and obvious way to import data that I've already gone through the trouble of inputting elsewhere.

Friday, September 14, 2007

Co-ed patents

Interesting article at Forbes:


Turns out that "inventions developed by mixed-gender teams received 42 percent more citations than single-gender patents."

Values and career


I was taking an assessment of "values" related to careers at the Career Development Center (CDC) on campus. The assessment consists of a bunch of cards with one word or phrase on each card (like "family", "money", "personal growth") and you put the cards into piles of "Very Important" "Important" "Sometimes important" "Not important". After that, you take the Very Important pile and pick out your top ten and put them in rank order.


I commented to my husband that my top ten did not include "money". He was surprised. Mine, instead, included things like "passion", "integrity", "challenge", "competence". Money, to me, is a given in a job. Of course, I expect to be paid. I'm not Richard Stallman, nor am I independently wealthy, so yeah, I work to be paid. It's a survival thing.


My husband responded, "but money isn't just for survival; you like iPhones and jewelry and travel and the things money can buy. Money as a value is about being able to have it to spend." I had to think about that - and on my walk home, I realized there are two aspects to money for me: survival and fun. I will compromise on certain values (like passion and personal growth) for survival. If it's a choice between letting my babies starve and putting up with an awful work environment, of course I will work - just as most parents would. But once I've gotten past the level of survival, then money for fun just isn't as important to me as work environment. I don't want to work at a place I hate just to make enough to buy stuff or do stuff.


I just find it interesting to consider how different my husband's answers might be from mine. OTOH - he's always had sufficient money for survival, so he's never had to make that choice. I think that makes a difference. I've had to make the choice - and live the choice. I spent too many years putting in my time, just getting through the day, putting up with less than ideal jobs or workplaces because I had to make a living. At this point, I suspect that any job I take upon graduation is likely to fulfill the "make a survivable wage" and so it falls into the "fun" category, for me. If I had to choose between enjoying my job and making enough money to spend on toys and travel, I'd cut out the toys and travel. I expect to spend 40+ hours a week at a job - that's a *huge* chunk of my life. Doing that anywhere that I hate (and if the place violates my top ten values, I would hate it) just isn't worth it to me for anything other than survival. And that's the point of an assessment tool like that - it helps define what's important to me, and what I need to consider in jobseeking, and careerseeking. I also have to accept that my values are going to be different from his and take that into consideration. But that's a whole 'nother topic.



So what are my values? "passion", "integrity", "personal growth", "challenge", "honesty", "open communication", "competence", "trust", "learning" and "knowledge" were the top ten.



passion: I want a career/company that values passion, that wants people who are passionate about what they do, that isn't going to stomp on people for being "too intense".
integrity: I've been at places where CYA was the norm and people got set up as scapegoats. It's hard to say "I screwed up" when it's going to be used against you. I want a place where I can acknowledge mistakes, where people accept responsibility for their actions, and where everyone is more focused on finding solutions and working to achieve a goal than on blaming others. Intellectual integrity is another aspect of this: being able to say "I don't know" and "I was wrong" and with people who will do that is important to me.
honesty and open communication go hand in hand for me. A place where answering a question by, say upper management, isn't going to get me in trouble for A) answering honestly and B) "violating chain of command". (Again, BTDT.) I don't do well with office politics - I need a place where I can be honest (not tactless, but honest) and open with people. I also tend to find my way around silos, and make connections with people in a wide variety of positions and departments wherever I've worked. That's important to me. Work places that encourage and support that are great. Places that discourage it are unpleasant at best.
All of these lead to a huge value for me, which is trust: I need to be able to trust the people above me and around me. And I need to be treated with trust. If I feel that I can't trust my boss and coworkers, it affects my health, my stress levels, my performance.
personal growth is important to me in a job, and is tied in to learning. I start to feel like I'm in a rut, getting stale, if I'm not getting to stretch myself and learn new things.



A conflicting set of goals for me is competence (which ties in with knowledge) and challenge: I need people around me (bosses and coworkers and any reports) who are competent at their job. I find it hard to respect people who are incompetent at their own jobs, and I find it hard to mask that. I don't expect them to be competent at the same things I am, just at the things *they're* supposed to be doing. I do, however, like being surrounded by people who are knowledgable, and having knowledge myself. To me, those are two sides of a coin: knowledge is knowing stuff, competence is being able to apply knowledge effectively. I value being challenged: I love problem-solving, and tend to be a bit of a bulldog about problems. I like having to stretch and put in effort to figure out things.
The conflict I'm having about competence is that I value my own competence highly (and need to be treated as competent). This leads me to question whether or not I should be pursuing jobs that are a stretch, because I worry I might not be sufficiently competent. This provides for a conflict between challenge and competence for me. Of course, that conflict is part of what fuels personal growth, so a company that supports personal growth is necessary for me to be able to properly balance competence and challenge.



My biggest challenge in picking my concentration in my major is, I think, that conflict in values. I think I would be quite competent as a researcher in CogSci or Neuroscience, but more challenged working in HCI out in the field. I'm equally passionate about all three, in different ways. I think my trouble picking has been the conflict between challenge and competence presented by the choice. Am I going to actually be good enough at it to pursue it? Or is it going to be wasted effort and embarrassment? If I pick something where I don't doubt my competence, am I going to get bored after a time? Will I feel sufficiently challenged or have enough opporunities to apply my knowledge? These are the kind of questions I'm wrestling with.



Next week, I'm going to take another assessment, this one on skills. It'll be interesting to see what comes up with that.

Thursday, September 13, 2007

Age and IT

Sometimes I feel old. I have trouble keeping up with all the latest tech. I wonder what I'm missing that would really make my life better. I've tried to keep up - really! I was into web forums far earlier than my usenet-oriented sweetie. I used linux back when it was RedHat 1.5. I started using IM (mostly on gaim, then later added jabber clients, iChat, YahooMessenger, and googletalk to my repertoire) almost as soon as it came out and even introduced my current husband to IM. I started on LiveJournal in 2003. I've joined multiply, orkut, myspace, LinkedIn, Facebook, etc. I've used feedreaders for a couple years, and subscribe to multiple podcasts. I've got a Second Life avatar, and I recently started using Twitter.

Some of these things, I've figured out quickly what they're good for. For example, IM rocks. I hate telephones - they're too intrusive - but IM can leave a message that I can see and attend to when it won't interrupt my thoughts (with the right settings anyways). LiveJournal is a great place, for me, to do my journaling online where my family and friends can keep up with my private life. I love podcasts - it's so nice to hear news and broadcasts while getting other stuff done.

But, too many of the "trends" are unclear to me (and to many of the geeks I know) as what they're good for. And I know they're good for something because they're so popular - they are trying to fill a need - I just don't always grok what need they're trying to fill.

Take Facebook, for example. It took me almost an entire year to figure out what it was good for, for me. Mind you, much of this is a generational thing, I believe. I'm not a teen or twentysomething who needs an instant update on where all my friends are at all times. If that's what need it fulfills, then it's not all that useful to me. But I have found uses, things like setting up study partners, and get to know people I've met at campus far better than I otherwise would have. I know, however, that if I hadn't gone back to school at 40-something for my undergrad degree, I would still be wondering what Facebook was for. And I can easily imagine someone using it to keep in contact with their social network, if that was something they'd started using together in school.

Tonight, I figured out what Twitter is good for, for me. I had attended an open house at a company and was feeling out of place - I didn't know anyone, and everyone had either come with someone or had cliqued up before I got there. Finally, I ran into an acquaintance from the Python community. About that time, it was time to go sit down for the presentations. I told him I'd save him a seat. A while later, I got an email from him telling me where he was sitting and asking where I was. He didn't have my cellphone number to SMS me - but if he'd had Twitter, I could have twittered(?) him my location, and he could have joined me. Hey - if we'd been following each other's Twitter feeds(?), we could have met up earlier at the open house. We'd have known we were both there. This could be very useful for conferences! My friend had heard of Twitter but never used it and wasn't sure what it was for. So, I have, once again, realized that, while my uses for a particular technology may differ from those of a younger generation, I often can find uses. And I once again got to introduce someone else to a new technology. Kewl! Maybe I'm not so old or out of touch after all.

Widening the gates

As a geek and a female, I had to have the lack of women in IT brought to my attention by others, specifically, by male geeks. I have spent so much of my life pursuing interests where I was the only female that I stopped noticing a long time ago. I was the only girl in my electronics and small engines class. I was the only girl in the miniatures gaming group (Napoleonics). I was the only girl in most of my RPG groups (Traveller, Car Wars, ITL, etc) at the local gaming shop. I was the only girl in the computer lab at school. I was the only girl I knew who, not only owned a Commodore 64, but had done some programming on it (a program in BASIC for calculating sidereal time.)

I've spent my life being the go-to person in the office for computer-related questions (from "why doesn't my password work": check your capslock, to "someone needs to move and administer our NT network": I guess I'm someone, to "we need a website for the office fitness group":I can do that). Yet, I never thought of myself as being "in IT" until I got involved in the Python community. I jumped in with both feet, starting to present to conferences, and advocating for everyone I knew to learn Python, the typical response of a new convert. I was thrilled to have found a language that seemed simple enough to use without having to know a lot first, but that was also really powerful, that kept growing with me as my tasks and requirements and skills grew more complex. Yet, it wasn't until I'd been to several conferences, and been asked by guys why there weren't more women at the conferences, that I even noticed that the lines *were* pretty short to the bathrooms at tech conferences.

So I started researching the question. Because, I couldn't imagine why there weren't lots of other women here - after all, I'm here. At first, I blamed the women. They're too self-involved, too shallow, too interested in shopping etc. But, I knew that wasn't really the case - I've met a lot of incredibly hard-working, intelligent, deep women in SF and other areas of life. They're just not interested in computers, just like they're not interested in cars. Well, most women I know drive. Most of them use telephones, fax machines, copy machines, and major appliances every day. Most women I know use computers every day nowadays, so it's not unfamiliarity. With a lot of new web apps, women are increasingly using social software, creating websites, etc etc. I realized I had prejudices about "normal women" (meaning non-geeks) and that I had to confront those prejudices. And one of the things I came to realize in investigating this lack of other women was how similar I am to other women in IT.

It's not been easy to admit to myself that I suffer, like many women in and out of IT, from low self-efficacy (perceived self-efficacy is defined as people's beliefs about their capabilities to produce designated levels of performance), from imposter syndrome (inability to internalize successes, fear of being caught out as a fraud). I tend to view computers more as means than ends. I entered the IT field via a non-traditional pathway (I didn't go into CS in college, I kinda came into IT sideways). I value the community aspects of programming as much as the language itself (a less welcoming community might easily have turned me off to programming), and I considered programming to be incredibly difficult (most non-CS-major women undergrads rated CS as more difficult than becoming a surgeon! I wasn't quite that bad, but I did consider it more difficult than, say, a psych or biology major.) I tend to define IT as "stuff I don't do" (even though I'd created databases, administered an NT network, created a website, etc, I hadn't considered myself to be "in IT".)

Realizing these things about myself has been difficult, but enlightening. I am more willing to accept the barriers that other women face in getting into IT, now that I've acknowledged those barriers and obstacles in myself. I am more motivated to find ways to overcome those barriers, through scaffolding (starting with a simple language like Python to learn basic concepts before diving into the complex language issues of C); emphasis on pair programming and sprints and other social aspects of programming; acknowledgment of non-programming aspects of IT; etc. I have heard these described as "sexist" or "dumbing down". Having lived through the obstacles and experienced the positive effects of these methods in my own life, I don't accept that. Presenting IT as something that only the most motivated, self-confident, autonomous individualists can really be into and everything else is "dumbing down for the ladies" is precisely why we don't have more diversity in IT. It's this attitude (from both women and men) that keeps many of us out, and keeps us feeling we don't belong here. Providing pathways to entry for those who are less self-confident, for those who value usefulness or social interaction, is not "dumbing it down". It's widening the gates, and opening up IT to a more diverse group of women and men. If that's sexist, then I guess I can live with that.