Friday, August 28, 2009

OSCON, Women in FLOSS, me and a puppet named Jack Adams

A month ago, I was lucky enough to go to a few bits & pieces of OSCON in San Jose with my exhibit pass.

While there I got to meet a TON of really cool, really clued in folks at the OpenSolaris booth. This was a different experience than I've had at other conferences doing booth duty. First of all, our booth was right by the front door, was large with couches for lounging, and we had a lot of cool stuff to give a way. Anyone that installed OpenSolaris (even just in a virtual box) on their laptop got a free t-shirt. We were also giving away install media and getting started guides, of course, as well as cool stickers for your laptop that said "Powered by OpenSolaris" (I got one myself!). The people that approached the booth not only knew what Sun did already, but were at least relatively aware of Solaris. Some hadn't used the OS in awhile, some wanted to know the big differences between OpenSolaris and Solaris, others just had questions about very specific technologies.

I got to show my lack of skills at Guitar Hero as I was pitted against Microsoft's Sara Ford in a battle of the operating systems. To be fair, I'd only played the game once before, and that was more than 18 months before. If it had been Tekken or even Wii Bowling, it would've been a different story, I tell ya!

(Photo by Pınar Özger)

I attended the Women of Free/Libre Open Source Software BoF (Birds of a Feather) session run by Kirrily Robert, which had an impressively large turnout - around 25 people, mostly women (the rest were "advocates" :). It was good to meet a lot of other women working in Open Source and just in technology in general. Like a sneak preview of the Grace Hopper Celebration of Women in Computing conference, though surprisingly few of these women were familiar with that conference. We tried to keep it from turning into a venting session about some clueless and/or rude men we've all worked with in the past, and tried to give each other suggestions for things we've found has worked. Kirrily then had us all go around the room to discuss our favorite woman themed book. Mine, of course, was Women Don't Ask: Negotiation and the Gender Divide. I'm hoping she'll post the complete list soon, as I heard some very interesting titles come by!

Our Solaris Security BoF was just after that, so I couldn't stay for the entire Women in FLOSS BoF. When I got to our BoF room, I was dismayed at discovering the facilities team had taken away our projector! I had checked everything out the night before, to make sure our OpenSolaris laptops would work with their projectors and even confirmed with the A/V guy that we would have the same equipment for our BoF on Friday. Everyone I asked that was working for the site said we'd have the equipment, but apparently not. This started us off on a bad foot - but fortunately, many of us had brought laptops with the presentation on it that we were able to distribute through the small crowd so they could follow along.

I will admit, I was very disappointed by our small turnout we had at our BoF. The guys that were there (sorry, except for Sun staff, it was only male attendees) were very interested in our topics of discussion and asked a lot of great in depth questions. It was taped, so hopefully we'll have the video soon!

Speaking of videos, I was also able to help Jack Adams, a puppet, with his OpenSolaris security concerns and problems. This came out well, considering the lack of prep and script. All that improv training at the Gaslighter Theatre comes in handy, even for technical talks. Enjoy!

(though I really should've taken off my badge, so you could see my "I HEART OpenSolaris" shirt better :-)

Friday, August 14, 2009


You haven't entered an alternate universe where evil men that look like your friends except they have goatees.... I've just mirrored by blog. Okay, I just created the account on blogger and Katy Dickinson’s daughter, Jessica Dickinson Goodman, took my extracted entries and comments from 5 years of blogging and got my mirror on blogger.

Jessica was easy to work with and completed the move in just a couple of hours, fixing it up so it looked oh so nice.

For those of you that read my posts via Facebook as "notes" won't notice anything different. Most of you probably don't even know you're reading my blog right now. Gotta love this Web 2.0 stuff! :-)

Thursday, August 13, 2009

Managing Your ON Mercurial Gate

Working on my recent projects, I became frustrated with a lack of one-stop-shop for Mercurial for use with OpenSolaris development. My focus is on the ON (Operating System and Networking) Consolidation, of course. As an internal developer, my steps assume access to things like usr/closed. If you are external, you will need to get your closed binaries from the closed binary tarballs.

I did find the HG Workflow document helpful, but not complete for my every day tasks. You should read that as a starting point, as it has lots of good tidbits on backing up your changes and managing project gates.

Please send any corrections or additional tips you might have this way, and I'll update this post.

Setting Up Yourself

First and foremost, make sure you have set up for cadmium and have your .hgrc set up as follows:
$ hgsetup
$ more .hgrc



filemerge.args=-a $base $local $other $output
filemerge.executable = filemerge
filemerge.checkchanged = true
filemerge.premerge = false



username=Valerie Bubb Fenwick

without the style settings, your Change Request Team Advocates will have difficulty reading your "hg outgoing -v" output and will likely put your RTI (Request to Integrate) on hold. I have customized my filemerge utility to be TeamWare's familiar filemerge.
Note: Email addresses used in here need to be real, routable addresses!

Setting Up Your Gate

Our build server leverages ZFS, which I highly recommend, as it gives you the quick ability to create snapshots before doing a major rewhack of your code. Here's what I do on the build server with ZFS:
$ zfs create builds/bubbva/{gate-name}
$ cd /builds/bubbva/{gate-name}
$ hg init
$ hg pull -u ssh://onnv.sfbay//export/onnv-clone/
$ hg update
$ hg reparent ssh://onnv.sfbay//export/onnv-clone/
$ hg clone ssh:// /usr/closed

Now, if you're not using a ZFS pool for doing your development, it's a little easier to setup:
$ hg clone ssh://onnv.sfbay//export/onnv-clone/
$ hg clone ssh:// /usr/closed

Note that the seemingly extraneous slash is not so, it is part of the communication with ssh and is indeed required. I don't know why hg clone won't work with an otherwise empty directory as its target, which would make dong this with a ZFS pool much simpler, but it doesn't.
On the ZFS snapshots, I recommend coding the date into the snapshot name, as the default listing of snapshots does not include that information, which makes it very tricky to figure out "what did I call that snapshot yesterday!?".

Finding Files in the Source

I often find that I know the name of the file I want to modify, but really have no idea of where it resides in the source - or perhaps I just know a partial name, like "softtoken". In teamware, I would always just grep the nametable, but since Mercurial has no equivalent concept, there is nothing quite that fast. Here's what I do now instead:

$ hg manifest | grep

Editing Files

Unlike with SCCS, there is no need to checkout files - just use vi/vim/ed/emacs/xemacs/etc and have at it. If you don't like your changes, simply revert.
$ hg revert
I've had mixed results with this, so find out what the previous revision to your changes was with:
$ hg log | more
If you need to create a new file:

$ hg add

To remove:

$ hg rm

To move (this works on entire directories, as well):

$ hg mv

When you are satisified with your changes:
$ hg commit

Managing Children to Build

It's always a good idea to do builds on both SPARC and x86, even if your changes seem like they're architecturally neutral. In fact, many members of the Change Review Team will require it. Some folks will even recommend you don't build in your "change master" to ensure you haven't forgotten to commit a file or "hg add" a new one. That's not strictly necessary, as long as you've done a build from a child of your main gate on another architecture, though, if you've done a lot of moving things around or creation of new files, you really should do it.
The problem comes from if you have done multiple "recommits" in your build master, this confuses your children. One way you can manage this is to always bring over a fresh build child. That's cumbersome though, at best.
$ hg pull
$ hg update -C

Preparing for Review

First, commit your changes. This will give you a chance to put all the relevant CR IDs into your comments. Unfortunately, every CR will be associated with EVERY file in your changeset. That's just how mercurial works.
$ hg commit
If you're working with simply open source, this convenient option has been provided to prepare and publicly post your webrevs to [1]:
$ hg webrev -O -U
I've been using a wrapper (hgwr, formerly wxwr), originally from Bill Sommerfeld, for webrev for a long time that keeps revisions of reviews available. This is handy so that you can incorporate changes from one code reviewer & post the updated webrev for that reviewer to verify you understood their comments, while not changing the code under another reviewer.
This is great for me, as a developer, as well, because as reviews trickle in, they all refer to a specific line number. If I've already incorporated changes, then the line numbers may have changed significantly. Having the original review source available is invaluable.
If you use this script, or something like it, the -U option to webrev is not useful. Instead you can use scp (MAKE SURE YOU STILL SPECIFIED -O for OpenSource to the wrapper, or your bug links will all be to the internal site):
$ scp -r .
(Note: that trailing ":" is not a typo, but required scp syntax.)
If you're additionally working in closed source, you'll need to utter the following:

$ cd /usr/closed/
$ hg webrev

In case it's not obvious, do not load this webrev to ;)

Resynching With The Clone

This starts with a simple:
$ hg pull -u
but you will always have to merge, even if nobody changed the same files you did. One thing I've learned the hard way about Mercurial is that if it can't open a tool to do a merge (in the case that someone has updated the same file you did) it will simply do the merge for you and do nice things like add a blank line in the middle of an enumerated list...)
So, if like most of us you don't have your workspace on your desktop, but rather on a build machine, you'll want to start this process like this:
$ ssh -X
Which will allow the graphical mergetools, like filemerge, to open when you get to the next step:
$ hg merge
and you'll need to commit again:
$ hg commit

More Unusual Tasks

Finding what changeset changed which lines:
$ hg annotate

Finding out which changesets impacted a file (useful for backing out individiual changes):
$ hg log

Finding History of a File if It's Been Moved

Because Mercurial isn't really a file based source code management system,
when you move a file the history does not move with it. That is, it appears as if it's a new file. You can still pull some of this history (like which changes were introduced under what name):
$ hg history -f
$ hg log -f
$ hg annotate -f

I Made Changes to a File Then Moved It and Want To Back Out the Changes (but not the move)!

Oops - I did this. Once. Because of how poorly mercurial handles file level operations, this is difficult to correct. For example, I made some minor edits to a file, including updating the copyright date, then I moved it. hg revert no longer worked! I was able to manually revert the changes, the file still showed up as changed in my workspace and 'hg outgoing -v'.
While I was told that it would have been acceptable to push this junk, it seemed sloppy to me. Due to the lack of per file controls, it is actually pretty easy to apply your changes to a new workspace using patch(1) and the "patches" provided by webrev, then redoing the moves, as needed.

Ready to Integrate!

Of course, you've read all of the RTI Nits, done all your testing, filed any documentation and test bugs and made sure they can be fixed at the same time as your integration and gotten your RTI (Request to Integrate) approved by a member of the Change Review Team... then you're ready to go! The problem is, so are lots of other people...
This is what I call the Mercurial Push Dance. All it takes is one more implementor heading for the gate at the same time, to begin this nasty tango...
$ ssh -X
(because you will have to merge...)
$ hg commit
$ hg pull -u
$ hg merge
$ hg commit
$ hg recommit

If you had actual conflicts (ie same files changed), CHECK THE MERGES. Run webrev again and make sure only your changes are there. Because the mergetools hooked into Mercurial grab focus when they come up, they are known to grab spare characters and insert them into your code. I've found stray "$" and other things that just wouldn't be a good thing to push.
Rinse & Repeat, until other folks stop beating you to the gate. When you're ready:
$ cd usr/closed
$ hg path default > /tmp/closed-mommy
$ hg reparent ssh://
$ hg push

[Closed gate changes always need to be done first, because once you push to the open gate, the incremental build will start.]
$ cd ../..
$ hg path default > /tmp/open-mommy
$ hg reparent ssh://
$ hg push

After you finish the Tango de la Muerte... I mean, the Mercurial Push Dance and have successfully gotten your bits into the gate, don't forget to:
$ hg reparent `cat /tmp/open-mommy`
$ cd usr/closed
$ hg reparent `cat /tmp/closed-mommy`

[1] These all assume you've set up your SSH key on the site. This is required for posting webrevs and doing integrations into the main gate.
Many thanks to the other developers who hang out on irc.sfbay/#hg-help and, particularly Rich Lowe, Mark J Nelson and David Powell.

Wednesday, August 12, 2009

Reasonable Expectation of Privacy?

I've seen a lot of discussions lately about maintaining your privacy or personal identity on the Internet.

Let me tell you now - if you post something to a newsgroup, blog, Facebook, Myspace, Twitter, Friendster, Orkut, IRC, BBS, or send it in email to a mailing list, it's no longer private. If you have a health condition you don't want people you work with to know about, don't blog about it or put anything in your Facebook status on it. Instead, talk to your doctor, talk to groups in person, keep a journal at the side of your bed.

I learned about the permanence of such things on the Internet in 1998 when I was interviewing for a job and and the interviewer pulled up a little site called DejaNews, a great search engine for netnews that has since been subsumed by Google, and he instantly knew that at the time I had been learning to play the bass guitar, had a pet snake, and had previously worked as a SunOS/Solaris system administrator. He looked at my questions I had asked, to see if they were intelligent and well thought out. He looked at how I handled the responses I got. Was I gracious? Did I understand the information people were sharing with me?

Fortunately for me, I met his standards and the rest of the interview went well from there and I got the job. I was shocked, though, I knew of no such service! I thought that once your postings fell off the news server, they were gone forever. Boy, was I naive!

I watch younger people on Facebook and MySpace posting all sorts of crazy things. Very personal things. Sometimes it's simply venting, but other times the attacks can be targeted at a specific person or be revealing very personal information on themselves or their own lack of self control.

I think we're doing a great disservice to future generations if we aren't teaching elementary school kids about the Internet Archive and Google's massive cache. Our ability to grasp the repercussions of our online actions is not keeping up with the technology.

When I was a teenager, my worst fear was having a physical note I handed to someone end up being shared. But, that was one note. Now our equivalents in email and text messages can be digitally shared in seconds with hundreds of people, and you can't take it back.

Some people mistakenly believe that stuff on Facebook can only be seen by your friends. In general, depending on how you have security set up, that's true - unless someone uses a screen capture. Take these recent "passive aggressive notes" - one woman ("exhibit d") actually managed to lose her job through Facebook (and this is not the first instance I've heard of for that).

Yes, I realize she clearly was not thinking about who was in her friend list before posting, but it still could've been shared by someone else later. I've also seen examples of people screen capturing things that were obvious typos to use to embarrass people forever.

So, whatever you're doing, if you're doing it on the Internet in semi-public forums, don't expect it to be private.

Most of us would believe that at least we can still have privacy in our own homes...

(Oh, please don't mention wiretapping.... or message interception.....)

Tuesday, August 11, 2009

Firkin Friday!

We finally made it to the Tied House's First Friday Firkin last week. In case you don't know, "firkin" refers to the size of the barrel the beer is made in. These once a month pleasures are made in the style of Real Ale - all the carbonation is a natural by product of the fermentation process with no CO2 added. This month's firkin was a nice, light, brown ale. Low in alcohol (3.8% ABV) and high in flavor. It was smooth, with only a slight hint of hops and served in proper pint sized glasses to boot!

The only downsides, really, were that the pints were not always full (illegal in Britain!) and the firkin was rolled in right before tapping, so each glass ended up with yeast in the bottom. I don't like to drink the yeast, because I'll end up with a headache.

Buyer beware, as expected, the firkin pints were not subject to normal happy hour pricing. No complaints on that, though, as the beer was worth every penny!

Monday, August 10, 2009

Ordinary People

Ordinary People Ordinary People
by Judith Guest

My rating: 3 of 5 stars

I'm not 100% sure how this book, a 1980s version of the paperback, ended up on my bookshelves. Best bet was that it belonged to either my brother or one of my sisters, and it somehow got moved to California with me. I've noticed it around for awhile, but hadn't been motivated to read it until recently when I was looking for other paperbacks to lend to a friend.

While the reviews on the book jacket all claimed the book was "timeless", I can say that now 30 years on, it is a bit dated. The stay at home moms, 18 year olds legally drinking beer, the descriptions of the "cool cars", and discussion of shock therapy as if it is a normal occurrence in psych wards.

The book started out annoying me by referring to one of the main characters by several different nicknames - without clarifying they were the same person. It doesn't help that his last name could also be a first name (Jarrett). His first name was Conrad, which was often Con, Connie, or Jarrett. This got worse when they referred to his deceased brother in the same way (often just by his last name, which is shared by both sons and the parents), a nickname (Buck) or his first name (which I don't remember, but was something odd like Jared... not that Jared is odd, but Jared Jarrett would be...)

The story itself is a simple tale of a family coming together and falling apart at the same time. We only see the story from the perspectives of Conrad and Cal (Calvin, Jarrett, the man, etc), but never from the mother's side. This leaves the impression that many of the problems in the family could be root caused to her coldness and refusing to communicate. If I've learned anything in this world, is that a different story can be told by all people in the same room that witnessed the same events, as the human brain will tell a "back story" to fill in the blanks which will bias your opinion, regardless of whether or not your back story was correct.

It was a short book, a decent way to pass the time, but I'm happy to move on from this tale.

View all my reviews >>

Friday, August 7, 2009

Grace Hopper Celebration of Women in Computing just around the corner!

Wow, I can't believe we're less than two months away from hundreds (thousands?) of technical women converging in Tuscon AZ for the next Grace Hopper Celebration of Women in Computing conference!

I'm excited to be moderating a panel on Women in Open Source and being an official blogger again this year. I've been looking at the schedule and it is full of interesting talks! This is one conference I really have to set my schedule up for in advance, because once I get there, it's a flurry of activity and I really don't want to miss out on anything! This will also be my first year twittering at the conference (as an aside, I can't believe it took me so long to get on Twitter - I'm learning so much, meeting interesting people, and it takes so much less time than Facebook or LinkedIn).

I'll be arriving Tuesday night to make sure I don't miss out on any of the activities on Wednesday. I wish I could take part in the resume clinic on Wednesday, but that seems to completely overlap with the Becoming a Person of Influence workshop, which I don't want to miss.

Speaking of resumes, I hear there's a "new format" for them - it's probably time I did a complete update of mine. I hear plain text versions no longer suffice.  Hrm, perhaps even if I can't attend the clinic, I should still have one ready for women to give me feedback on them.

What are you looking forward to most?

Monk's Kettle Beer Pairing Dinner

Made it up to San Francisco this week to the Monk's Kettle's once a month beer pairing dinner. This month featured the brews from the Bruery. The food was delicious, service was great and the company was fantastic, what could possibly make this a better night out? Oh, that's right, the amazing beers!

I was glad my friend Phil had warned me about the size of the meal, so we just had a very light salad for lunch, no afternoon snacks and I avoided the tempting bread basket at the table when we arrived.

The founder of the Bruery, Patrick Rue, was in attendance and introduced us to each beer as it was served. It was cool hearing about their humble roots as a home brewer and how they've developed so many new recipes as well as attempting to bring back old styles. The Bruery is just over a year old, and I haven't had much luck finding them here in the south bay (quoth the BevMo employee, "I'm sorry, *which* brewery are you looking for?").

The first course was organic bibb lettuce with fresh tarragon, chervil, parsley and fried capers, paired with Hottenroth Berliner Weisse. The salad was delicious, but a bit of work to cut into and a bit too much for the plate it was served on, as we all had trouble with flying lettuce and splashing dressing :) The beer, at a light 3.1% ABV, was super refreshing with a delightful lemon flavor. It reminded me of what I think Mike's Hard Lemonade should taste like (hint: not like syrup ...). It was delicious and I could easily see myself sipping on that on a lazy summer afternoon. (speaking of fried capers - they tasted almost like bacon! they were so good, and seemingly no semblance of vinegar on them)

For the second course, we had pan seared local halibut, crayfish risotto cake, a Sausalito Springs watercress salad and an organic pesto beurre blanc. When I looked at the menu in advance, I was not particularly excited by this course, not being a huge halibut fan, but was surprised when the fish came perfectly cooked (neither dry nor gooey) and loved the sauce! This was paired with the Trade Winds Tripel (8.1% ABV), which is apparently made with Thai Basil. You could catch the basil on the nose, but the taste was much lighter.

The third course was Blue de Sassenage, fresh slices of pear, spiced almonds, organic honey and toasted bread. I'm always a fan of a cheese course, so no complaints here! We all wished the "spices" used on the almonds were listed, as they were quite tasty. We were guessing paprika and brown sugar. This was paired with Humulus Lager (India Pale Lager, 7.2% ABV). This was much lighter than a pale ale, and apparently made with rice to make it an American style lager. Patrick assured us, though, that rice is not a cheep beer making ingredient, as it is often referred to, as it costs him more than his hops. I'm not a big fan of hoppy beers, but Mark was more than happy to finish the last half of my beer.

The fourth course was what we'd all been waiting for: 'Black Orchard' marinated short ribs, roasted garlic potato puree, haricot vert, and a 'Black Orchard' demi glace. This was all paired with the Black Orchard beer from the Bruery (5.7% ABV). These ribs had been marinated in the Black Orchard beer with bay leaves and garlic for 24 hours, before being braised for 5 hours (with a mixture made of Black Orchard beer, chicken stock and brown sugar). These spare ribs were phenomenal! The Black Orchard beer (yes, that Orchard, as in Apple Orchard, not Orchid) was my favorite one of the evening. A nice brown ale, soft and smooth, slightly sweet, and a crisp after taste.

Dessert was house made ice cream sandwiches with a 'Papier' chocolate sauce. This was served with two beers: Papier (first anniversary old style ale, 17.5% ABV) and Black Tuesday (bourbon aged imperial stout - 19.5%). Both beers were really good, though I would have to say that I loved the chocolaty flavor of the Black Tuesday the best. And who wouldn't like a beer named after the start of the Great Depression that sells for $30/bottle? ;-)

Anyone else make it up here for the event? I can't wait for the next one! This is a great way to discover how beer can make food better and to discover small craft breweries.

Tuesday, August 4, 2009

Enjoying revival of Floradora!

We caught a fun "staged reading" of the nearly lost light opera, Floradora, this weekend. The original book was by Owen Hall, with lyrics by E. Boyd-Jones and Paul Rubens (*not* Pee-wee Herman), and music by Leslie Stuart.

This show was originally put on at the Lyric Theatre in London on 11 November 1899.  The show is about an imaginary Philippine island, Floradora, and a very sought after perfume that carries the same name.  Like many of the light operas popular at this time, the plot revolves around hidden identities, lost loves, nearly lost loves, and the making of new love connections.

While there was no single source for a score and libretto, Neil Midkiff and Mark Kenig scoured everything they could find on the show in the British Library, the Library of Congress and the New York Public Library as well as private collections, to come up with this new version. I can imagine that this was a bit like archeology and I think they did an amazing job!

The show pokes fun at the wealthy aristocrats, Americans, Phrenology (the popular pseudoscience about discerning personality traits from the bumps on one's head)  and the Royal Aquarium (which never actually housed any living fish...).

This was a lovely show. The cast of characters all had wonderful voices that carried easily in the Mountain View Center for the Performing Art's second stage, and the orchestra was a delight to listen to.  I was happy for the supertitles all the same, as the unmiced voices were sometimes difficult to understand when the singer's back was turned to you (the theater is nearly "in the round", with three audience seating areas).

We were forewarned at the top of the show that the traditional performances of this would've included a cast of up to 90 people. As the theater was quite small, the ensemble carried many roles (including being both Philippine island natives to leftover English débutantes). This was handled in quite an entertaining way - if the women had on a flower lei, she was a native. Carrying a parasol? An English deb.

My English husband did note at one point that you would never say: "a perfume at a shilling and three halfpence a bottle", but rather: "a perfume at a shilling and thrupence ha'penny" :-)

Myself, I had to wonder if the authors may have intended the chorus to have a West Country accent, as the opening number seemed to attempt to rhyme Floradora with "...we adore her".  (this opinion comes from listening to things like bananer, instead of banana... around my house :-)

The show was a bit on the long side, though, I enjoyed every song, so I can see why it was difficult to make cuts. If this were to go on the main stage at the Lyric Theatre, they may want to consider cutting "Willie Was a Play Boy", which was the only number that I noticed did not progress the plot (though it was very cute and sung well, so I can see an argument for keeping it as well).

There were only two (sold out) performances of this, but keep your eyes peeled for this to maybe one day appear as a fully staged production. It is an outstanding light opera with classic tales that does deserve to be told again.