Tuesday, September 22, 2009

Merger for Delta and NWA seems to be ... awkward

We recently traveled to the "south", giving my other half his first true exposure to the Bible belt and the United State's "interior". This was a fun trip, which will be written up later, but the flights were... complicated.

We booked what is known as an "open jaw" trip in the industry, or as "multi-city destination" by normal humans - flying from San Francisco to Memphis then from Memphis to Atlanta and home again to San Francisco. I do stuff like this all the time - it rarely costs extra, and in this case, cost way less than flying directly to Atlanta from San Francisco.

I am well aware of the NWA and Delta merger, as my brother-in-law is a Delta pilot, but I still booked my flight on the NWA website since I've been a long time frequent flyer with them and all of my information was already on their site.

Our first problem was encountered when our credit card was rejected. I tried multiple times, assuming I had done something silly like type in the wrong expiration date. No luck. Finally called our credit card company, CitiBank AAdvantage card, who claimed that buying airline tickets was an "unusual" purchase for us so they determined it was fraud and blocked the purchase. Hrm. I have racked up several hundred thousands of air miles with American, United, and Northwest. How is buying airline tickets suddenly an unusual activity for me? I think it was unusual for me to buy non American Airline tickets, so the company decided to make it awkward. Now, this was totally a weird problem with CitiBank and had nothing to do with Delta/NWA (except they weren't AA).

We were off a couple of weeks later - I reviewed both Delta and NWA's websites for information on the merger and where to check in at each airport, and everything started very well when we checked in with Delta in SFO. No problems.

Now, when it was time to go from Memphis, TN to Atlanta, GA, we hit a snag. First, I noticed the check-in reminder email came from Delta instead of NWA (unlike the first one), but figured they are actively merging more things each day so no red flags were raised. We arrived at the airport and went to the e-checkin kiosk, which made us choose if we wanted to check in with NWA or Delta. I chose NWA, because that's where I booked my tickets. The kiosk let me check in my bag, but reported an error about our boarding passes. The agent was ready to help us, but she could not find our itinerary in the computer under either Delta or NWA. Uh, oh.

She noticed my bookmark was my boarding pass from San Francisco to Memphis, so she asked to have it. With that she was able to pull up my itinerary, but not my husband's. So we dug through our bag until we found his old boarding pass and she was able to do the same thing. This took about 20 minutes and quite a line stacked up behind us. I'm glad we showed up with more than an hour 'til take off time.

Convinced I did not want to go through this same thing again at the airport when leaving Atlanta, I clicked on the email from Delta to check in the day we were flying home. My husband's seat was the same one on our reservation, but I was not able to get a boarding pass - only a "Seat Request Card". That's right - Delta had moved me to standby! Bumped me right off the flight! Now, why would you split a party? Also, I didn't think they could do this without making requests for passengers to volunteer off of the flight. This was a disaster. Fortunately, a call to a very wonderful kind soul in Delta Reservations got this worked out, but even he could not figure out why I had been bumped.

The actual flight experiences were very nice, and I really enjoyed the DirecTV on the flight from Atlanta to San Francisco. Just a heads up to any of you that might be traveling on an itinerary that crosses combined routes from these merging airlines, that you'll want to check in in advance if at all possible. I'm sure once the kinks get worked out, things will be great - but in the meantime, beware.


Sunday, September 13, 2009

Just finished the first Sookie Stackhouse novel!

Dead Until Dark (Sookie Stackhouse, #1) Dead Until Dark: A Sookie Stackhouse Novel by Charlaine Harris


My rating: 4 of 5 stars
Continuing on the theme of vampires (thanks, Jen!), I've started reading the Sookie Stackhouse books. Having watched a few episodes of True Blood, I was worried that the books would've already been spoiled - not the case at all! The show, while true in character to the books, has different characters and doesn't follow the exact same story line, either.

I enjoyed Charlaine Harris's writing style and the way she could keep the suspense going all the way to the end of the book. The characters were very interesting, and so far none of them falling into strictly black or white. They all have subtle nuances, and even our heroine, Sookie Stackhouse, is not perfect in thoughts, actions or deeds.

This book does what every good vampire book, in my opinion, should do - gives you a glimpse into the past. I love historical fiction and feel that Harris did a great job of weaving in Bill's (the vampire) past into the book.

So far, I'm enjoying this series a lot more than the Twilight series and have already started the second book.

View all my reviews >>

Friday, September 11, 2009

Preparing for my panel at Grace Hopper!

I'm moderating my first panel at a large conference at the upcoming Grace Hopper Celebration for Women in Computing. I've been on panels before. I've done entire hour long presentations before. But I've never moderated a panel.

Now, in just a couple of weeks, I will be moderating "Open Source Community Development" where we'll be tackling issues about how Open Source communities grow, thrive, and possibly die or wither away. Interesting topics I hope we can explore will be about building trust and encouraging women to participate. All of these things I think will be helpful for the OpenSolaris community.

The question remains: how best to moderate? I know from personal experience that I appreciate a moderator who keeps the flow moving, knows when to take a discussion "off line", and keeps up a slide of all of the speakers' names so the audience doesn't have to remember. So, it's a given I'll do those things (and hopefully do them well).

But after reading several great "how to moderate a panel" blogs (thanks, Stormy, for the intitial link that got me started on this), I've gotten a lot of conflicting information, so I'm going to have to make some decisions myself. For example, several folks who have moderated other panels argue that the moderator must always introduce the panelists, while others suggest letting the panelists themselves do it. Personally, I've always introduced myself, either while presenting alone or on a panel.

Some recommend assigning a few questions to certain panelists in advance and making sure you all meet as a complete group before the panel, while others say that doing so will ruin the spontaneity of the panel. I believe that at least a short meeting before hand is warranted so we will at least have the name to face thing down.

All the advice is clear, though, I need to make sure I am personally familiar with all of the panelists' backgrounds and areas of expertise so I can direct questions appropriately. While I know a few of these women personally, or follow them on twitter, and clearly learned about them when we were proposing the panel, I still need to make sure I do all the appropriate research.

Do any of you have any advice in this area? After all, as the audience, you will be my customer!

Here are links to the advice I've been reading:

Wednesday, September 9, 2009

Why I'm glad I went to the Grace Hopper Conference in '08 and can't wait for this year

Last year's Grace Hopper Celebration of Women in Computing was such an amazing experience for me, that I can't wait to attend again this year!

There is something almost magical about being surrounded by technical women. I didn't have to worry for one second about sounding too nerdy or about asking questions about something I didn't understand. At this conference I felt an unparalleled sense of belonging.

I spent some time working at the Sun Microsystems' informational booth, which was an incredible way to connect with students and other women in the industry who were interested in the technologies I've worked so closely with over the last decade. I'll be around there again this year, so please stop by and hear about the work I've been doing in the field of computer security over the last year.

This conference has such a great balance of technical content and soft skills that I don't feel overwhelmed by either aspect at the end of the day. In fact, I can't wait to get together with other attendees in the evening to hear about sessions I missed and share my own experiences from the day.

Last year's conference was intense, educational and life changing, that I cannot imagine for one second missing this year's event. Hope to see you all there! I'll be the woman with the laptop...

oh, wait, unlike other conferences, that won't be enough to identify me by. :-)

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

Mirror-Mirror

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
[extensions]
hgext.cdm=/ws/onnv-tools/onbld/lib/python/onbld/hgext/cdm.py

[email]
from=First.Lastname@Sun.COM

[paths]
onnv-gate=ssh://onnv.sfbay.sun.com//export/onnv-gate
onnv-clone=ssh://onnv.sfbay.sun.com//export/onnv-clone
onnv-closed=ssh://onnv.sfbay.sun.com//export/onnv-gate/usr/closed
onnv-closed-clone=ssh://onnv.sfbay.sun.com//export/onnv-clone/usr/closed


[merge-tools]
filemerge.gui=True
filemerge.args=-a $base $local $other $output
filemerge.priority=1
filemerge.executable = filemerge
filemerge.checkchanged = true
filemerge.premerge = false

meld.gui=True
meld.priority=0

gpyfm.gui=True
gpyfm.priority=0

[ui]
username=Valerie Bubb Fenwick
style=/ws/onnv-tools/onbld/etc/hgstyle

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://onnv.sfbay.sun.com//export/onnv-clone/usr/closed /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://onnv.sfbay.sun.com//export/onnv-clone/usr/closed /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.
Here's what I do (IN THE BUILD CHILD ONLY! NOT FROM A GATE YOU WANT TO PUSH FROM!):
$ 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 http://cr.opensolaris.org/~ [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 . bubbva@cr.opensolaris.org:
(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 opensolaris.org ;)

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://onhg@onnv.sfbay.sun.com//export/onnv-gate/usr/closed
$ 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://onhg@onnv.sfbay.sun.com//export/onnv-gate
$ 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 opensolaris.org 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 freenode.net/#onnv-scm, particularly Rich Lowe, Mark J Nelson and David Powell.