Women in Technology Blog Series by Jennifer Marsman

Jennifer Marsman, developer evangelist at Microsoft, is in the process of producing a series of blogs about women in technology.  Motivated by the unsettling experience of realizing that blogs.msdn.com/jennifer was still available in 2007, Jenn seeks out women to interview for her blog, telling their stories.  In addition to being an accomplished developer herself, Jenn has a great knack for making the stories relevant and interesting.

This week, I'm honored to be the "woman" that she chose to interview. I'm thrilled to be in good company with such women as Lidiane Souza, Amity Blinkert, Karen Djoury, Carey Payette, Janet Galore, Toi B. Wright, and Katy Kneale. I look forward to reading Jenn's Women in Technology blog each Friday, and I know that there are some interesting interviews to come.  I hope that all of you will send your suggestions to Jenn as well.  It's a great series and I've learned a lot from reading about these women and their accomplishments.  I'm sure that Jennifer will easily fill up the year (and then some) with a new woman to profile each week.  I'm looking forward to the continuing series!

Startup Weekend Ann Arbor … and RIA Tools Tutorial

On Tuesday, June 17, Microsoft is presenting a free one day RIA Tools Tutorial day at SRT Solutions.  Spend the day with Microsoft developer evangelist Jennifer Marsman and RIA evangelist Josh Holmes to learn how to effectively use Visual Studio and Expression Suite to build Silverlight applications.  The event will be heavily hands-on, and space is limited to 15 participants. Register soon.

Next weekend, Ann Arbor is hosting a Startup Weekend. These have been held all over the country and now it's our turn!  Here's a quick blurb about what that means, from startupweekend.com:

Startup Weekend is a intense 54 hour event bringing together brilliant tech minds (developers, designers, marketers, ect.) together to create a company (or as many as the community wants) from concept to launch!

The event will start on Friday June 20 at 6 pm, when teams will be chosen.  By Sunday June 22,  COMPANIES will be launched.  On June 23, some people may begin hiring to move foward if they're ready. Others will probably wait.  SPARK is offering its "Starting your own Business" program to startup weekend participants, for free.  

If you want to attend Startup weekend, sign up soon!

 

Tail recursion in Scala and Annotations for Software Defect Detection

The Java Posse interview with Brian Goetz and Bill Pugh cleared up how Scala supports tail recursion in spite of the JVM's lack of support.  Brian Goetz did a great job of explaining that currently compiler writers have to build in the support (which Scala does) because the language doesn't support it directly.  He went on to explain that while there is support in the CLR for tail recursion, the F# compiler writers chose not to use it in some cases because they found that they could write a more optimal version by converting to iteration.  

The conversation was about changes that can be expected in Java 7, including JSR 292 ("Enhancements for Other Languages", aka "Invoke Dynamic"), JSR 305 (Annotations for Software Defect Detection), and JSR 308 (Annotations on Java Types).  

The discussion of JSR 305 (and @NonNull) reminded me of the discussion of contracts in a podcast on Microsoft Spec# that I listened to a few weeks ago. Scott Hanselman did an accompanying blog post as well. The FindBugs (static analysis) tool that Bill Pugh did is definitely a "must-have", and can already support annotions such as described above.  The JSR would simply provide a naming convention so that all tool makers and programmers could agree.  I had to look up Bill's annotation to see if it was "NotNull" or "NonNull", for example!

Note: JSRs (Java Specification Requests) are formal requests through the JCP (Java Community Process) for changes or enhancements to Java and the Java Virtual Machine.  This is an open process and participation is encouraged. 

  

Tech events in Ann Arbor this week

It's the first week of the month again … so there are user group meetings galore.

Wednesday, June 4 at 6:00 pm is the Ann Arbor Computer Society meeting.  The topic is PostgreSQL 8.3 and Beyond.  PostgreSQL is a free and open source database.   The meeting will be held at SRT Solutions, 206 S. Fifth Ave, Suite 200, Ann Arbor, MI.  AACS meetings are free and open to the public.  Supporting memberships of $20/year are available, which help to support the pizza and soft drinks served at meetings as well as the door prizes.  

On Thursday, June 5, the Michigan Python User Group will meet at SRT Solutions at 7:00 pm.  The topic is TBD but some ideas that have been thrown around include: Google App Engine, non-relational databases, and Jython.  I'm sure it will be an enjoyable meeting, as always.  It's a great group, very casual and welcoming (and the meeting is free).  Please join us.

And Friday is the "on" Friday for Lightning Talks at SRT. Head over to SRT at around 3:30 pm for 5 minute talks on any tech topic of your choosing.  We'll go until about 5 so stop by whenever you are free on Friday afternoon.  SRT's lightning talks are free and open to everyone in the community, both for speaking and listening.  We think that the entire community benefits when we all know what others are doing.

Android to be 100% open-sourced

I read an interesting blog post on Ed Burnette's Dev Connection this morning.  Google says that Android (the libraries, the core platform components) will be open-sourced 100%.  Ed talked to several Google employees last week at the Google I/O conference in San Francisco.  You can read Ed's entire article at his blog (linked above).

I think that an open sourced Android is great news, not only for the Android community but for the Java community as a whole.  Android is Google's flavor of Java, customized for what developers really need on a phone.  So, my understanding is that it's a subset that has some other essentials added in.  It doesn't run on the Java VM, but rather its own virtual machine: Dalvik

JavaFX Mobile, on the other hand, is Sun's revamped platform for mobile devices. JavaFX Mobile runs on the Java VM, not Dalvik.  It will be interesting to see if any of the work that Google has done on the mobile platform will make its way into JavaFX Mobile.  Already, the communities are working together. In fact, at JavaOne a few weeks ago, a JavaFX Mobile app was demonstrated on Android.  Nice!

 

What I learned on my (Memorial Day) “vacation”

Last weekend, an unexpected turn of events (that involve our dog and a box of Bisquick) left me at home, while my family headed off for a planned weekend away with our friends.  The time alone gave me a lot of time to catch up on things, including shopping (which I usually detest), home improvement projects, and podcasts.  I thought I would share a little of what I learned over the weekend, things that might be relevant to people who would read this blog.

Podcasts

I caught up on a lot of podcasts while I was sanding and staining our windows. The irony of listening to Java Posse podcasts while doing "windows" even amused me.  But anyhow, I caught up on a bunch of those podcasts, including the recordings they did while at Java One.  The BOF and CommunityOne recordings were fun to listen to.  It always seems to catch Dick by surprise that people actually show up. I don't think that he realizes the impact that the Java Posse has on its listeners.  I've said this before, but it's worth repeating.  The podcast really does a great job of giving people an idea of the breadth of things that go on in the community.  I also listened to their Java SE 7 interview with Danny Coward. That was interesting and relevant for anyone who wants to know where Java is headed.  Between JavaFX and the proposals for Java SE 7, there are a lot of things to keep in mind.

After I had my Posse fix, I listened to Scott Hanselman's Hanselminutes,  on Microsoft Research's new language Spec #.  Spec# started as a fork of the C# compiler and added language extensions that support contracts.  I really like Scott Hanselman's podcast.  He covers a wide variety of topics, and in spite of his new job at Microsoft, he doesn't strike me as a Microsoft Fanboy.  Rather, he has a grounded view of things.  I appreciate that.  In anyone.

I then listened to "The Evolution of Yahoo" on Stanford's Entrepreneurial Thought Leaders podcast.  This was recorded in the same week as the Microsoft/Yahoo buyout talks collapsed, and was an interesting perspective on where Yahoo is going.  If you think that Yahoo turning down Microsoft's offer was a mistake, this may give some insight into why the Yahoo people thought that their stock was undervalued, and where the company is going.   

Somewhere around this time, during last weekend, Jay Wren twittered about Software Showtunes, and so I popped over to listen to that.  TOTALLY amusing.  Well worth the time. Microsoft takes a bit of a beating, but Apple doesn't come away completely unscathed either.

I think that I wrapped up the podcast/staining windows fest with IT Conversations "High Performance Computing Considered Harmful", which really provoked a lot of thought. The fact is that scientists and engineers write a lot of code.  Computer scientists often turn their noses up at the tools that they use, like Matlab, when in fact that tool serves them very well.  In fact, my husband uses Matlab for a lot of simulations, and one of our employees (Anne) has been working on the ProjectEuler problems using Matlab.  One of our consultants (Alex) thinks highly of it as well.  The truth is that this tool lets them get their jobs done.  What do we snooty computer scientists promote?  Parallel simulations?   Seriously?  Most CS grads can't write a decent multithreaded or parallelized app and we ask scientists and engineers to do this?  I loved it when the guest on the podcast said that if a scientist comes to him and says that he's run into a timing issue, then we should all realize that we're failing as computer scientists.  In fact, he estimates that only about 10% of scientists and engineers even use version control, yet so much time, effort, and research dollars go into speeding up simulations that will only be run a few times.  There are a lot of interesting things to consider about this.  I'm still thinking … I'm sure that many more blog posts will be generated from the ideas bubbling around in my head.

Buying Services

On the non-technical side, a learned a lot too.  More than just the fact that a dog needs to go to the vet if he eats a box of Bisquick and that much more gets done on home improvement projects when the kids are NOT home. 

What I learned was to take advantage of services that people provide.  As I tell my kids, we choose our professions based what WE do best in life.  For example,  I don't want the woman who cuts my hair writing software (and she doesn't want me cutting hair), which is why I pay her to cut it.  But more relevant to the software developer community (I'll affectionately brand us all as geeks for this rant), we need to recognize that there are services that we SHOULD be taking advantage of.  For me, that's shopping.  I HATE HATE HATE shopping. OK, I'm fine with buying software and hardware, but is that really shopping?  More explicitly, I hate clothes shopping.  I have discovered a service which I think that many of us in the geek community should embrace: the personal shopper.  It's free.  Some department stores (I used Lord & Taylor) pay them to help people like me, who are inept shoppers, choose items to buy.  Yes, they get a commission, but that's payment for their expertise (by their employer!).

Much like the scientists and engineers who don't use version control because they don't even know it exists, how do you discover that you could benefit from a service that you don't even really know about?  I had previously stumbled upon this service as I wandered aimlessly about, looking for a dress for an event that I had to attend.  I happened to run into the personal shopper who took me under her wing, escorted me to "her" dressing room, and brought armloads of dresses for me to try on.  She did a much better job of selecting a dress than I had done, and I returned the one that I had previously bought and purchased one that even COST LESS.

OK, there's a point here.  I'm trying to let you know the process so that you, friendly geek, are not intimidated by the process.

Here's a summary of my personal shopping experience from last weekend.

  1. Call department store and make appt with personal shopper for the next day. She asked a few questions, like what I was looking for. 
  2. Show up. 
  3. Clothes in my SIZE were hanging in the dressing room, for me to start trying on (ordered by color, type, etc).  I was a bit overwhelmed by where to start, but she walked me through it (start at the right and move left).  She brought me a bottle of water and retrieved other selections along the way (different sizes, etc.).
  4. Try on clothes.
  5. Personal shopper helps decide what does/doesn't look good.
  6. Fork over the credit card.  Personal shopper even applied a coupon (I didn't need to have one with me).
  7. I left with a nice selection of clothes that GO TOGETHER and are updated for 2008. 

That's my kind of shopping.  I wouldn't usually expose my personal weakness (my complete lack of shopping abilities), but I figured that this was a public service.  I've seen how people dress in our profession.  We need to consider this as a cost of doing business. 

I don't know when I'll get another "vacation" like this.  I promise not to poison the dog as an excuse to get one, but he's fine and I learned a lot (and my husband and kids had a great time with our friends too).  Doesn't get much better than that. 

Next week in Ann Arbor …

The Ann Arbor Java User Group meeting, usually held on the 4th Tuesday, will NOT be held on Tuesday, May 27. Looking forward to the next meeting, on Tuesday, June

The Agile Coach Camp is being held, however.  It's from Friday, May 30 through Sunday June 1.  It looks like an interesting event.  I even have a friend coming in from Europe (waving at Niclas) for the conference.  Go to http://agilecoachcamp.org/  and http://wiki.agilecoachcamp.org/tiki-index.php?page=InvitationLetter for more information.

Software Engineering Tools at SRT Solutions

Next week, on Tuesday, May 20, we're holding a 1-day open spaces event at SRT Solutions.  The theme is Software Engineering Tools.  The participants will define the topics for discussion, but we think that people might want to talk about version control, continuous integration, and other things that make their lives easier (or more miserable).

We're using Bazaar with one customer, and so that may come up.  We use subversion for most of our customers.  And, of course, there are cool tools that connect to version control systems, like Atlassian's FishEye.

And if we're talking about Atlassian tools, I would sure like to learn more about what Bamboo can do for us, and how that differs from Cruise Control

What I always find invaluable about bringing people together to talk about tools is the collective knowledge. We all have our own little subset of the software tool universe that we live and breathe in, and stepping outside of that world for a day to experience what other people find useful is a way to quickly become more effective.

Jay Wren always seems to have something to say about tools, and he's coming

The more the merrier.  Registration is at http://srtsolutions.com/static/SoftwareEngTools.html.  The $100 registration fee includes a continental breakfast and a boxed lunch.

Lists and folding in Scala

James Iry pointed out that I could have used a fold left in my solution to the first ProjectEuler problem. Ah, now I remember reading about folds!  So, I went back and looked at it.  Right he is, of course.

Here's his solution:

val nums = 3 until 1000

val somenums = nums filter (x => (x % 3 == 0 || x % 5 ==0))

val sum = somenums reduceLeft {(x:Int,y:Int) => x + y}

println(sum)

Equivalently:

val sum = somenums.foldLeft(0)(_+_)

And more obscurely:

(0/:somenums)(_+_) 

I came across a great blog post describing all of this.   

I have to admit that I'm not enamoured with the last example above (the (0/:somenums)(_+_).  But, the (_+_) is at least fun to type since it's all done with the right hand while the shift key is depressed with the left!   

Anyhow, I'm encouraged to learn more about folding lists now!   Many thanks to both James Iry and Joel Neely for their suggestions and support (and to Ricky Clarkson for his fabulous blog post on folding).

 

 

Event for businesswomen in Ann Arbor area

Over the past few months, I have been involved in organzing an event geared toward the professional women in the Ann Arbor area.  I think that it offers a unique opportunity for women to learn about what other women are doing, and to gauge the prominence of women in our community. 

So, you might ask the question, "WHY is this a gender-specific group?".  That's a rational question, and being in a male-dominated profession, I have spent a lot of time thinking about gender-specific groups. The truth is that the number of women who are active in the business community in Ann Arbor is substantial, but not well publicized.  I've been honored to be working with many of them on the committee putting together this event.  I have a lot to learn, and I feel that bringing together women for an event will go a long way toward an understanding of what is being accomplished in our area by some top-notch women.  I learn a great every day from the men that I'm surrounded by in my field.  I'm happy to stretch that a bit and see what I can learn, or what I can offer, to the business community that is comprised of women.  In truth, we all benefit from diversity, and having access to both male and female perspectives is critical.

The Women's Exchange of Washtenaw (WXW) is not a membership organization.  Rather, its purpose is to organize, encourage, support, educate and strengthen the businesswomen of our region by providing a venue for business connections, skill-building, professional support, and growth.  There are several membership organizations in the area (Association for Women in Computing, National Association of Women Business Owners, etc.) that serve a different purpose.  I'm interested to see how this group grows and distinguishes itself.

The event is being held on Wednesday, May 7th. The event begins at 1:00 pm and includes a thought-provoking panel discussion (with the best line up of panelists you've seen in a long time), breakout sessions where all attendees participate, and a happy hour (and a half) beginning at 4:30 p.m.


In addition to the panelists (check out the bios on www.wxwbusiness.com), the afternoon will be filled with roundtable discussions on issues decided by the participants.  We will include the following breakout sessions:

  • Managing Growth
  • Learning to Lead and Creating Culture
  • Relationship Building
  • Visioning: Creating a Path for your Company

The event will be held at Kensington Court Ann Arbor, 610 Hilton Blvd, Ann Arbor, MI.  The cost to attend is $50 and includes refreshments and one drink ticket.

Register at http://www.wxwbusiness.com. 

I hope that the 5 women who read this blog will join us. <grin/>