General Ramblings comments edit

It was four weeks since my second hair removal treatment and eight since my first as of this past Saturday, so once again I headed in to get my face zapped.

My second treatment used the Aesthera Isolaz IPL in an attempt to get me some reasonably pain-free results.  While it was far, far lower in pain magnitude, I really didn’t see much in the way of results.  In fact, I could barely tell anything was done at all.  As such, this third treatment we went back to the Dermo Flash since that had a reasonable balance of pain and results.

My normal technician was sick, so I got a different lady zapping me.  She said she totally didn’t blame me for sticking with the Dermo Flash - the MeDioStar does get overall better results but she has yet to find any guy who can take the pain involved (it’s apparently that much more intense when used on coarse male hair).  She did one guy’s beard and by the end was almost in tears herself with watching how much pain the guy was in, and he was on his own pain killers.  So… no MeDioStar laser for me, thanks.  I’ll stick with Dermo Flash.

gists, net, csharp comments edit

Some friends of mine at work, Vish and Peter, found this one.  It’s tasty.

We work on a web application that has a lot of external dependencies.  Generally speaking, we have pretty decent luck upgrading these external dependencies when the interfaces don’t change - swap in the new assembly for the old one, do any binding redirects or what-have-you, and you’re off.  Unfortunately, one particular upgrade wasn’t working too well and we had a heck of a time figuring out why.

The problem was in a particular switch statement that was based on an enumeration value.  We get the value from the external dependency then pass it through the switch statement so we know how to behave based on the value.  The problem we were seeing was that we could watch the logging through the system, see that all the way through the service layer everything was fine, then suddenly when it hit our application, our app was receiving the wrong value.  There wasn’t any serialization problem, there wasn’t any caching issues, it was just somehow getting the wrong value.

The answer lies in what I’m going to call “The Old Enum Switcharoo.”

Turns out that if a third party dependency changes the order of an enumeration, that’s an interface-breaking change.  Even if they don’t add or remove any values - just re-order the same values inside it (which is exactly what happened to us) - things fall apart.

I put together a reproduction so you can see what’s going on.  It’s a small console application that has an external dependency with three enumeration values.  Instructions for how to build/run your own repro are included in the source file; I’ve also included two folders with pre-built binaries so you can just run it and witness, if that’s all you’re up for.  Here’s what it looks like:

The Old Enum Switcharoo - in
action!

Go ahead and grab the reproduction code here:

Reproduction Code for The Old Enum Switcharoo [EnumSwitcharoo.zip - 15KB]

The solution to the problem is to either get the external dependency to put their enumeration back (which is a possibility for us, since we control it) or recompile your application against the new version of the dependency.

General Ramblings comments edit

Sunday was my first wedding anniversary.

It wasn’t, like, super special or ultra-romantic or anything because, well… Jenn and I have really been together for closer to eight years, not just one.  Plus we’ve got a trip to Las Vegas planned in a week or so and we’re going to a show down there and such, so we have already spent our anniversary budget on that.

Instead, we got each other cards and went with our friends Angela and Keaka to see Resident Evil: Extinction.  Like I said - the romance abounded.  (RE was pretty decent.  I had fun with the previous two movies and this one was about on par.  It ended really quickly… but I guess you can’t complain much about the third movie in a series based on a video game.)

After that, we went for some cocktails, courtesy of Angela and Keaka (thanks!) at Dessert Noir, a pretty decent, but sort of pricey, little cafe near the theater.  I had a tasty chocolate/cherry concoction and Jenn had a coffee-based beverage.

Not a bad little first anniversary when all was said and done.  I can’t say it didn’t just sneak up on me, but I didn’t forget.

The rest of the weekend - Saturday and part of Sunday - was spent working on my Halloween costume, sewing.  I always forget how hard it is to put sleeves in.  I’m working on a jacket that’s part of my costume and I got the sleeves in… but they puckered at the seam a bit, which is disappointing.  I’d like to blame the pattern for leaving too much extra fabric on the sleeve at the top where it joins to the body, but I suppose if I was a better tailor I’d be able to accommodate for that.  I think it’ll be okay; it’ll withstand a cursory inspection.

GeekSpeak comments edit

I’ve used several instant messaging clients up to now, but I’m recently getting some experience with Lotus Sametime.  Somehow it feels like someone on the product side over there thought, “Hey, if we bill this as an ‘Enterprise’ client, we can ignore any UI goodness whatsoever!  It doesn’t have to look good because it’s ‘Enterprise!’”

I think they should rename it “Lotus VB6time” because, well… see for yourself.

Sametime - now with additional
VB6!

I can see the sales droid selling this now, invoking adjectives like “minimalist” and “rugged.”  It doesn’t matter what it looks like as long as it works, right?  Right?

General Ramblings comments edit

I don’t travel much, and I’ve really only been off the west coast of the US three times - once when I was about four on a visit to Washington DC that I don’t remember; once on a family trip to Hawaii when I was in high school; and once on my honeymoon last year to Aruba.  I’ve never been to Canada.  I’ve never been to Mexico.

When I got the opportunity to go to Asheville, North Carolina, for three days on business, I thought that was pretty cool.  A great opportunity to break out of my common “travel zone,” which is mainly either Seattle, WA, or Las Vegas, NV.

I won’t go into the business trip part of things - what really struck me here was my bad luck with the actual travel proper.  It makes me wonder if this is common or if I just got the short end of the stick, as I usually do.  I don’t really have a frame of reference, so I’ll throw it out there.

I got notified pretty late in the game (a little less than a week) that I needed to fly, so when I booked the tickets, I was basically left with two choices:  Either fly out early Sunday morning and get to North Carolina late Sunday night, or fly out Sunday evening and take the red eye to North Carolina to get there first thing Monday morning.

I should have taken the “throw away your Sunday” option, but instead I opted for the red eye.  I had things I wanted to do on Sunday and I sort of figured that the good ol’ red eye is sort of a rite of passage for travelers.  Everyone’s got a red eye story, right?  Now I’ve got one.

I’m a tall guy.  When I booked my [coach] tickets, I specifically asked for an aisle seat so I’d have a little room to stretch out.  This was particularly important to me on the cross-country flight because I get pretty cramped up in coach so it’s nice to be able to stick my leg out into the aisle rather than riding the seat in front of me like a horse.

The flight east had three legs - Portland to Seattle, Seattle to Charlotte, Charlotte to Asheville.

From Portland to Seattle we were on a little puddle-jumper prop plane.  I got stuck in the back row by the window - not an aisle seat.  The back row was a lot like sitting at the back of the bus - it was more like a long bench with arm rests than a row of seats.  No seat reclining here - you’re flush against the back of the plane.  The flight attendant couldn’t even get the snack cart back to us; we served ourselves off the opposite end of the cart.  Lame.

From Seattle to Charlotte, the red eye, it was even more special.  The plane was a fairly large Airbus model, so I had more chance of getting a decent seat.  Instead, I got a quadruple-whammy.  My seat was on the window, so again, no aisle.  It was in front of the emergency exit, so no reclining.  It was in the aisle across from the bathroom, so even when the cabin lights went down, it was never dark because (when no one was stinking up the bathroom) the door was open and the light was glaring out.  And, even had all that been okay, the lady next to me snored like a chainsaw.

I think I got two bad hours’ worth of sleep on that one.

Arriving at Charlotte airport, I noticed that there are rocking chairs everywhere.  I’m not sure why.  Maybe that’s a North Carolina thing.  I thought it was sort of interesting, though.  (They had the rocking chairs at Asheville airport, too.)

From Charlotte to Asheville it was another puddle-jumper, this time a jet.  I didn’t get the back row, but did get another window seat.  At least the flight was short.

I arrived about a half hour late for the meeting I was supposed to be in.  My friend that was traveling with me rented a car and we headed out.

The roads around Asheville are the most confusing thing I’ve ever encountered.  I’m not sure if maybe they’re doing a lot of construction, but there are lots of instances where a single highway might be referred to by two or three different numbers.  Or if you get directions from the Hertz stand, like we did, they might tell you to “stay in the center lane to get on I-240” but there are only two lanes (which one is the center?) and there’s no damn sign indicating anything about I-240.

We made a full circle around the city of Asheville, at one point even leaving the boundaries of the map we had, before finding the way to where we were going.  The return trip to the airport, two days later, was no better.  If you get directions that tell you to “take the exit to 26,” do you follow the sign that says “I-40” or “Future 26?”  (I’ll give you a hint - the “Future 26” exit doesn’t get you to 26.)

The puddle jumper back from Asheville to Charlotte was an interesting experience, more from the airport standpoint than from the flight.  It was sort of like flying out of the airport from Wings.  Everyone knows everyone.  They don’t use a PA system - they just talk really loud.  Just… very interesting.  Oh, and I got another window seat on that flight.

From Charlotte to San Francisco (yes, I returned through SFO) I got a seat in the middle of two people, which is actually worse than getting the window seat.  On one side I had a skater punk kid who was actually very quiet, which was nice.  On the other side of me I had a guy who very badly needed a shower and, when he wasn’t trying to talk to me, was talking to himself and making hand gestures like he was kung fu fighting.

San Francisco to Portland was the only leg of the trip where I got my aisle seat, and by far it was the best bit of travel I had the whole time.  I actually had a whole row to myself and the flight attendants kept throwing me extra snacks and drinks because I was in the back near their station.  They were super cool.

The rest of the week I spent catching up and not being very productive - filing expense reports, returning emails, and generally doing administrivia that didn’t get done while I was out.  But I was super tired and am just now really starting to level out sleep-wise.

Next time, I’m not taking that damn red eye.