female programmers and programmers to be

Kathy Sierra has been tweeting about Women in Technology over the last week or so.  Today’s tweet really got me thinking.

Tired of being a Woman In Tech. I’m a programmer. I’m female. Does it have to be SO political/significant? Sometimes a coder’s just a coder. -Kathy Sierra

While I certainly haven’t been in the field as long as Kathy, I am a female programmer.  And I haven’t really thought about it since college.  Until recently.  It’s not significant to me; I don’t think it is significant to people I work with.  And yet in some ways it is.  My response to this tweet was:

@KathySierra sorry; you’re a VISIBLE female programmer & a role model for the next generation(aka me); don’t have any at work so branch out -Jeanne Boyarsky

And this is why I’ve been thinking about it.  Whether I notice or not, I am starting to become a role model to some people.  I know because they told me!  Sometimes it is people I know and sometimes it is people who read my posts on JavaRanch.

High schoolers

Kathy has also been writing about getting girls into IT in the first place.

Do high-schoolers choose a career based on who speaks at conferences? To claim even a trickle-down effect (respect! exposure!) feels wrong. -Kathy Sierra

@jeanneboyarsky agree in principle, just that conference keynoters are NOT on teen girl’s radar and don’t “count” as visibility/motivation. -Kathy Sierra

I agree with her that high schoolers don’t choose a career based on who speaks at conferences.  I do think some more awareness of women in tech is helpful though.  In the Spring, I volunteered at a high school robot competition.  A college professor asked me if ANY of teams had girls on them.  With thoughts like that influencing careers, it isn’t very encouraging.  I heard my share of “girls shouldn’t go into IT” when I was in high school as well – 1995-1999.  (The answer in case you are wondering is of course there are girls on teams.  In fact, there were a few all girl teams.)

This school year, I started volunteering as a mentor with FIRST robotics as a high school programming mentor.  The lead student programmer is also female. Nobody thinks much of this.  Which is the point.    People want to be accepted.  Being accepted for being a techie is better than people thinking differently of you because you are female.  It’s just a part of me as is my brown hair.  Or at least that is how it should work.

Female Architects

I think another reason for the dearth of female role models in technology is that less females tend to stick with it over time.

@KathySierra: “women speakers in tech?” I always wonder why ‘women’ are different. Don’t we want good _people_ in these sessions? –Steve Johnson

I think Steve makes an excellent point.  Of course we want good people in these sessions.  And I do see women at conferences.  I just tend to see them in “softer” roles like talking about social media than “harder” programming parts.  And absolutely favor strength over gender when choosing conference speakers.

Where I work, there aren’t yet any female architects. And by that I mean the really senior folks who have been doing this 20-30 years like Bear Bibeault and Ernest Friedman Hill rather than the watered down “developer with 7 years experience” definition.

I think this is due to a number of things:

  1. The culture of the past – If many years ago people were pushed a certain way, it affects the present.  I can’t speak to the past since I wasn’t there at that point.  But I do think it has an impact.
  2. The greater chance a woman would go into management than stay in technology – soft vs hard skills? preference? social conditioning? path of least resistance?
  3. Interest in keeping up with technology – you have to really like something to stay with it in your free time; money isn’t enough

Yes, I want to be an architect someday.  But I want to get there because I’m good at what I do, not because I am female.

What can we do

Thinking about three things I and people I know do to make things a tiny bit better:

  1. Like what you do; be passionate about what you do – Male or female, this is the core of why technology is fun!  If you happen to be female, let this excitement shine through and let others see it.  I’m volunteering as a programming mentor for robotics because I enjoy it.  Being a positive role model for the students is a side effect.
  2. Point out the “she” – If you are female and someone refers to you as “he” or “sir”, correct them.  This is how we introduce visibility into the fact that there are strong techies out there.  Scott Selikoff does so if someone calls me “he” in a blog comment. Some people do this so often at JavaRanch that Campbell Ritchie has made it a running joke. But it helps.  It serves as little reminders that we do have strong female technical females running around.  Not to the the teens of course.  But to the existing programmers.
  3. Look to the future – Things change over time.  The senior architects of the today were largely born in the 50’s, 60’s and 70’s.  This was before people had the internet in their homes.  The students of today are growing up with social networking.  Computers aren’t as geeky.  There is more social interaction in the job.  In another couple of decades people my age will be those senior architects and then there will be more female role models.

[edited to add “when choosing conference speakers.” per comments on redit]

WTF: PDF Plugin Required

Upon clicking the “Print Form” button I receive the error message below.
plugin-required-medium

I have three problems with this error message:

  • From a user interface perspective, it assumes everyone’s PDF browser plug-in displays a toolbar with it including a Print button.
  • From a design perspective, it troubles me that someone took the time to add a “Print Form” button and then disabled it… poorly.
  • From an “Are you kidding?” perspective, it bothers me someone would display such an error message on a webpage that was not actually a PDF.

Plugging Video & Image Memory Leaks in Adobe Air

Adobe AIR is known for memory leak issues, especially in regards to loading and unloading video. I have seen applications with alternating video and images crash unexpectedly after running for only 20 minutes with no user input. After doing some investigating on my own, I can confirm what others have said in the past: You have to take extra steps when unloading a video or image, or risk a serious memory leak.

Removing Images: Clear the “source” attribute
Let’s say you want to unload a set of images from display object myContainer. The obvious solution would be to myContainer.removeAllChildren(), but unfortunately, this is not enough to recover the memory for the images. To truly recover the memory, you need to call:

for each (var child:DisplayObject in myContainer.getChildren()) {
   if(child is Image) {
      (child as Image).source = "";
   }
}
myContainer.removeAllChildren();

My thanks to Russell Brown for this non-trivial solution. I can confirm his results; implementing this solution significantly reduces memory leakage.

Removing Movies: Close the movie
Next, let’s say you want to unload a movie. Most people would just stop the video and remove it from the screen but like the issue with images, this is not enough. Developers should use the following code to properly unload a movie and recover the memory:

for each (var child:DisplayObject in myContainer.getChildren()) {
   if(child is VideoDisplay) {
      (child as VideoDisplay).stop();
      (child as VideoDisplay).close();
      (child as VideoDisplay).source = "";
   }
}
myContainer.removeAllChildren();

Granted, this code assumes you may have multiple movies in your container, although it can be combined with the previous solution to remove images and movies at the same time. Thanks to Ryan Phelan for their groundwork discovering this issue.

Adobe’s Broken Garbage Collector
For whatever reason, simply removing an image or video from the scene and setting references of it to be null is not enough for the garbage collector to recover the memory. If you have an application that cycles through two movies, for example, you may see the memory continue to grow drastically over time as all the previous copies of the video are kept in memory. Hopefully, Adobe will resolve this in future versions of the AIR runtime, but in the meantime developers must take extra steps to sure items have been unloaded and memory reclaimed.