Tuesday, April 30, 2013

Motherhood, Tech, and Leaning In With Marissa Mayer

Recently, I happened to start looking at some of the stories featured on the new Lean In website and came across Marissa Mayer's.  For all the interest and controversy she's drummed up in the news lately, I quite liked hearing her perspective on joining Yahoo! when expecting a baby.

Fortune Most Powerful Women Dinner With Marissa Mayer
Fortune Most Powerful Women Dinner With Marissa Mayer / Fortune Live Media

Although she'd received offers like that of Yahoo!'s before, this time was different.  The company was a perfect fit for her experience.  But as she says, "...it wasn’t a foregone conclusion that I would or could make it work when I got that first phone call. At the time, I was pregnant, and I was thrilled."

Motherhood is an oft-discussed topic for women in tech (and probably women everywhere).  It can be difficult to be a pregnant woman among many men who don't necessarily understand what comes with that.  Equally daunting is the prospect of taking time off for maternity leave when you'd be one of the few to do that in your company or perhaps in your position.  (If there were more women in the field, it wouldn't seem like an uncommon occurrence.)

Mayer had been looking forward to a six-month maternity leave with Google, way longer than most Americans can even dream of.  By taking the CEO job, she would cut her leave down to almost nothing.  "The responsibilities were too big, and time was of the essence—it just wouldn’t be fair to the company, the employees, the board, or the shareholders for me to be in the role, but out for an extended period of time."

Did she find that motherhood has hurt her ability to be CEO?
I’ve come to realize that being a mother makes me a better executive, because motherhood forces prioritization. Being a mom gives you so much more clarity on what is important. I’m very close to my own mother; she has always been my most important role model. I’m grateful to her and to my father for a lifetime of their love, attention, teaching and sacrifice. Over the past five short months, my appreciation has grown for all parents, especially those balancing work obligations, because I know they have that same clarity of dedication and purpose.
Clearly, it's not an issue.  Granted, she has much money at her disposal to help keep her personal priorities.  However, families around the world have been figuring out many different ways to make it work for many years.  Money might make some things easier but it's not the only answer.

So can we stop bringing in the pregnancy and motherhood issue into discussions of women in tech (and other) companies? It's not like we ever do the same thing for men with young families.

Wednesday, April 24, 2013

Got What it Takes to Be a Technical Co-founder? Here's an Opportunity for You!

Two recent Y Combinator graduates contacted me recently in an effort to recruit a female technical co-founder for their startup.  Although any awesome engineers would be welcome in their company, they believe that women are likely to better understand what other women would want in their fashion-focused product.  This is such a great example of why we need more women in tech — why should only men design products intended for women?

Here's a blurb about their company and info about who they are looking for.  If you think you've got what it takes to be a technical co-founder, I hope you'll give this opportunity consideration!
Join team StyleUp! A Winter 2013 Y Combinator-backed company, StyleUp is a Pandora for fashion. We are influencing the way people shop and get dressed every day and are looking to expand our engineering team. We are looking for part-time as well as full-time candidates. Tasks include (but are certainly not limited to) creating new product features, responding to customer feedback, and working closely with the StyleUp CEO, Kendall, a former Conde Nast fashion editor and MIT Sloan MBA '13, to shape the product vision and road map.
At 20% month-over-month user growth, the StyleUp system needs monitoring and performance improvement to ensure the best service and experience for our users. This involves writing code up and down the stack -- from database query tuning to front-end javascript algorithms. Having a performance-first mindset to all new features is a must.

If you are scrappy and creative, love working with fun people and get stuff done fast, we want to talk to you! Please send your resume to kendall@thestyleup.com.

A little about the technology stack:
  • Python/Django stack with a MySQL database
  • Front end using Bootstrap for CSS; jQuery/jQuery UI
  • Hosted on Amazon EC2; deployment in Fabric and Boto (EC2)

Monday, April 22, 2013

Go Code Girl a Great Success!

On Saturday the University of Ottawa held its inaugural Go Code Girl event.  I designed the workshop's curriculum and taught the English section for the day.  I must say, it was a great success!


We started the morning with a general welcome session with the workshop organizer, then headed to the computer labs in two groups (French and English).  I had my group of girls "interview" someone they didn't know yet after introducing myself, then had them introduce each other.  It was really great to see what a big variety there was in their backgrounds.  Some girls came because their older sisters brought them along, others already knew they were interested in programming, and still others came because their parents made them.  All of these girls stood to benefit from attending.

As I often do, I began with a discussion of what computer science is really all about, and why women don't tend to go into it.  I usually do this with a younger audience, so it was great getting insight from the high school perspective.

The key points that came up were the fact that many girls don't know what computer science is (and how it connects to so many different areas), that it's easily seen as a boy's thing given the current gender imbalance, and that it is intimidating being one of the only girls in a large class.

Interestingly, the discussion focused from there on the quality of high school programming classes.  Over the years, I have been asking high school students what they thought of these courses.  Anecdotally, it seems that they are often not overly effective, particularly for women.  The girls in the workshop wished that the courses weren't just about programming, but rather used programming as a tool to solve more interesting problems that they actually care about.

It also seems that the backgrounds of some programming teachers is not even related to computer science.  In one girl's high school, the gym teacher also happened to teach programming; he didn't even bother promoting programming when they had a course fair for students.  This means that the quality isn't necessarily the fault of the teachers.  There just aren't enough computer scientists willing to teach! But that doesn't mean we can't train others on how to teach CS.  In fact, this is something I want to do as time goes on, similar to what Barbara Ericson from Georgia Tech does in her home state.

After our discussion, I had the girls download a finished Processing project.  It was a memory game I had created for a previous workshop and then adapted for the undergraduate game dev tutorial I was TA'ing for.  I told the girls I wanted them to play with the game, look at the code, and start finding ways to tinker with it.  I interrupted them every ten minutes or so and taught them a new programming concept (variables, boolean and if, loops, arrays and lists, methods, and objects).  After each concept, I left up a small snippet of code they could independently type in and tinker with to better understand the topic.

This was a new approach for me, but a few smart people had suggested it works pretty well (including Barbara mentioned above, as well as one of the creators of Processing himself!).  It supported the idea of just-in-time teaching, where we expected the girls to run into problems so we could help them learn something right when they needed the knowledge.

Did it work? Let's just say a mentor mentioned to me that one girl said she had just learned more about programming in the first hour of the workshop than she had in four months at school.  Sounds promising to me!

In the afternoon I had the girls choose a tutorial to work on where they were guided in making a mini-project of their own.  Every needed step was described, but not always completely explicitly.  Some of the girls struggled with these more than others, so it might be worth making an easier one for those who are less confident.

We still have some data to look at via surveys we gave at the beginning and end of the workshop, but overall I think the day was quite successful.  Huge kudos to Nathalie Vallières from the University of Ottawa who organized the entire day, contacting me as a potential instructor months ago.  I'm looking forward to this becoming an annual event!

Friday, April 12, 2013

When is Augmented Reality the Right Choice?

Last fall, we published a paper about augmented reality, cognitive theories, and learning. I previously wrote about the design advantages of AR; these give insight into when AR is really the best choice for an interface.  The following is from our paper.  If you find it useful, be sure to check out the complete work on my website.

[Augmented reality's design] advantages can be used to decide whether augmented reality is a good interface for a particular type of learning scenario. The applications that most benefit from AR are generally those that make natural use of all four categories of advantages.

Virtual flexibility is inherently desirable in all digital tools and applications we design. Similarly, it is desirable to incorporate aspects of the invisible interface. We do not want our users to unnecessarily switch their attention between multiple artifacts, for example. We also often try to incorporate natural movements, direct manipulation, and gestures in our interfaces.

In contrast, not all applications need to make use of spatial awareness or even have an environment to align virtual objects in. For AR to be a good choice there must be a clear and meaningful relationship between virtual objects and the real world. This might mean that a virtual object is attached to an explicitly related object or location. For example, a digital label that describes the object must be spatially aligned to it to make sense. Or, the relationship may come from seamlessly integrating the virtual object into the environment. For instance, a virtual animal might be shown as though it were present in its real habitat, giving learners the opportunity to observe it. The cognitive theories above offer some suggestions as to where such relationships may be useful, such as when building new mental models or providing situated meaning to the virtual data. But if there is no good reason to associate the virtual objects with some aspect of reality, then AR is likely not best for the application.

Whether an application needs reality for free is also an important consideration. It is advantageous to make use of the real world when details found in reality are key to the application. Including reality as it is rather than building a virtual representation of it saves programming effort and reduces the risk that important details about content or behavior are left out. This can be critical when the application involves a task requiring specific behavior with real-world objects. When training for or performing surgery, for example, the exact dynamics, texture, and color of human tissue would be difficult to simulate, yet may be important to the surgeon.

Because virtual flexibility and the invisible interface represent goals we have for all applications, spatial awareness and reality for free offer the best insight into when to choose augmented reality over other options. If an application can't clearly take advantage of these, then there is likely a more suitable interface type, as is the case with abstract domains in which users do not interact with tangible, real-world objects or data. Instead, users work with virtual information (like data on a computer) or physical abstractions of reality (such as charts). When reality does not play a prominent role in the application, it is difficult to make a meaningful connection between virtual and real objects. For instance, some examples of AR artificially create a connection to reality by having users hold a specially designed card upon which a 3D model will be displayed. While the method of interaction allows an enactive approach to viewing the model, the same could be accomplished with fully digital interfaces that support natural gestures. It is not clear that augmented reality is well used for this kind of application.

On the other hand, applications designed to support learning tasks that are already centered on the real world can make good use of both reality for free and spatial awareness. Information or problem solving aids can be tied to the relevant aspects of the real environment, as for learning about car engine repair: virtual labels can identify components of the engine while visual instructions can guide the learner. It would not be as easy to do this task virtually given the physical changes made in the real world. The virtual objects have a clear connection to the engine parts in the real world. Many learning applications also benefit from these advantages when, for instance, real world context is important. For example, an application designed to teach photography could use augmentations to illustrate important concepts of composition, depth of field, and so on with visualizations overlaid on the actual scene being photographed. Though these concepts can be illustrated with photographs already taken, interacting with them in real time in the real world makes their context much clearer and helps build a much better mental model. For both these applications, AR is a strong choice.

Paper content copyright by AACE. Reprinted from the Proceedings of World Conference on E-Learning in Corporate, Government, Healthcare, and Higher Education 2012 with permission of AACE (http://www.aace.org).

Tuesday, April 9, 2013

Design Advantages of Augmented Reality

Last fall, we published a paper about augmented reality, cognitive theories, and learning.  One of the tasks of the work was to specifically define what the design advantages of augmented reality are.  I'd like to share our list here, which is directly from our paper.  If you find it useful in thinking about why one should use AR, check out the paper on my website.

Reality for Free

AR mixes real and virtual objects. As opposed to purely virtual experiences, augmented experiences can be richer and more elaborate because of the deliberate inclusion of real-world objects and behaviors. We can separate this advantage into three distinct elements:
  • Content. Because the real world is used directly, the AR environment is vast and detailed. A purely virtual experience suffers from a confining bottleneck of content creation.
     
  • Behavior. Rich real-world behaviors, such as the laws of physics, are included without effort. In a purely virtual environment, these would need to be simulated by code.
     
  • Multiple Senses. Interfaces to purely virtual worlds are typically limited to vision and sound, perhaps with modest haptic feedback; the real world provides a wide array of sensory experiences, including taste, smell, and ambiance such as temperature and humidity.
Virtual Flexibility

The counterpart to the advantages accruing from the use of reality is the flexibility afforded by the use of digital artifacts. Their appearance and behavior are governed by code, and hence can be altered according to the needs of the user or application. The following are two of the most prominent applications of this flexibility:
  • Customization. Virtual artifacts can be personalized according to user preferences; for example, attributes such as language or color can be adjusted.
     
  • Impossibility. Virtual content can depict objects and processes that are impractical or impossible to bring to users otherwise, for instance because they don't exist in the real world, would take too long to observe in real time, or would be dangerous to experience directly.
Invisible Interface

AR users retain their ability to move freely and the interface does not interfere with their ability to observe their real-world environment. They are able to switch attention seamlessly between real and virtual objects; in some cases (such as descriptive markup) the user may not care whether an object is real or virtual. We want to particularly emphasize two aspects of the invisible interface:
  • Natural movement. User input can take the form of familiar real-world actions; direct manipulation and gesture based interaction are possible.
     
  • Single focus. When augmentations are aligned with the task at hand, focus can stay in one place. Users do not, for example, have to change their focus from their task to a paper manual opened beside them.
Spatial Awareness

Some of AR's advantages owe their existence to a clear connection between real and virtual objects, including larger-scale entities such as physical locations. We distinguish two advantages relating to the physical context in which augmentations are embedded:
  • Adjust to surroundings. Virtual content automatically updates as the user's surroundings change; change can either be a change in the world (such as the movement of a real-world object or a change in temperature) or reflect a change in the user's position or viewpoint.
     
  • Align spatially. Close matching of real objects with virtual markup makes associations obvious. For virtual objects which may not have a real analog, opportunistic matching to real objects can lend physicality. For example, labels aligned to a particular object are clearly meant to give information about that object as a real label would.
Paper content copyright by AACE. Reprinted from the Proceedings of World Conference on E-Learning in Corporate, Government, Healthcare, and Higher Education 2012 with permission of AACE (http://www.aace.org).

Friday, April 5, 2013

The Best Posts of All Time

I love how much easier it is to see statistics on blog post views with the most recent Blogger redesign.  While these (probably?) don't account for views by RSS subscribers, it has been fascinating seeing which posts are the most popular and by what margin.


The Python vs. Processing post is way ahead of the others.  I guess this isn't a surprise, since it ended up on Hacker News.  The view count continues to go up all the time.  Now if only I could figure out how to write more posts that are that popular!

It's also interesting that my discussion of a board game is right up there.  I'm thinking that post must be linked from a board game site or something, but I haven't figured out where yet.

It's nice to see that the post about the computer science book we're working on made the cut.  That project is still progressing, albeit slowly (new babies for both of us co-authors certainly didn't help!).  I am feeling pretty good about its awesomeness.

Here are some links to the top posts, since many of you may be newer readers and haven't seen them yet!

Wednesday, April 3, 2013

Upcoming Eye Surgery

I'll be out of commission for the next little while as I embark on my second of two eye surgeries.  I have a corneal disease called keratoconus, which makes the bonds in my cornea weak so that the surface bulges (my sixth ever blog post talks about it, and even includes a mapping of my eyes as they were at the time).  Keratoconus is a degenerative disease, and the cross-linking surgery I'm getting is meant to halt the progression rather than improve the situation.  Not so exciting, given the price tag and painful recovery, but better than the possibility of a cornea transplant one day.

I'm going to schedule a few posts over the next few days while I recover from the surgery.  This means I won't be posting links on Twitter/G+/Facebook, so if you enjoy the blog, I'd love to have you stop by, leave a comment for me to respond to later, and maybe even subscribe!