Showing posts with label Being a dork. Show all posts
Showing posts with label Being a dork. Show all posts

Monday, April 25, 2016

Three Bucks

This story is about the collision of three random things.

Thing one: I'm on Twitter and see this picture.



It's a picture of Errolson Hugh, in a rain jacket he designed  - retweeted by William Gibson (who, I firmly maintain, is the most consistently interesting guy on twitter).

Because Gibson retweeted it, I look at it. It's from a website that looks to be designed by people who hate their users. It has marketing copy that practically begs you to find the author and punch them in the head.

To wit: "Full spectrum. Full frontal. Uncut. Hard R. NC-17. Overbuilt. Ultralight. Asymmetric"

Ugh.

The brand is called Acronym.

And pretty much everything they have is black. They are fronting. Hard. And then you look at the pricetags and about blow a fuse. That raincoat in the picture? It costs 1,200 Euro, which is just around $1,300.

Which is nuts.

But William Gibson loves this guy and his jackets. And Gibson (channeling Cayce) is into high quality stuff that doesn't have visual flash. No visible brand names. Just good design and high quality.

Watching a few of the Acronym videos, it's pretty clear that Errolson is huge on style - but is all about design for use and durability. Yeah, he does kung fu in the videos, but mostly to show that his pants can do that without tearing.

And there is a sick amount of cool stuff going on with his gear. I love the little collar magnets to hold your earbuds.

Still, $1,300 is madness. This company makes tee shirts that cost almost $400. Entry level? F$*k that noise.

Still, ya put it on your "If I win the lottery list."

In ink.

*     *     *

Next up is Gumby.

Last fall, Gumby comes up to me and Runner and asks us if we want to get in on a football pool. After the reflexive eyeroll, I get back to work.

Runner's into it, and pretty soon Gumby and Runner and talking about all the fun of picking winners and losers for the week.

I think of it as homework, but eventually Gumby announces that they'll sign up for me and I can pay them back later.

Uhh....thanks...?

So, next thing I know I'm being emailed a spreadsheet from the pool organizer. It's one of those pools where you pick winners for each game, and weight them based on how confident you are. Each team gets a number from 1-16 and if you end up being right, you get whatever points you assigned to the matchup.

It's more than homework, it's homework on a subject I'm not interested in.

But, high score for each week gets $5... so.... meh.

Sportsball!!!

*Eyeroll*

I pay Gumby the $20 entry fee, so I'm not a deadbeat. And get back to work.

Literally the next time I think about the pool is Thursday afternoon when Runner bugs me to get my picks in, because they are due in three hours.

I'm leaving work in fifteen minutes, so I've got less than that to make my picks and then get the boy to practice.

I go to FiveThirtyEight.com, because Nate Knows Numbers. I literally grab his picks with print screen and paste them into paint. I move the chunks around until they are in first to worst order and then type in my point assignments 16, 15, 14...

Runner is asking me all kinds of questions about whether or not the Cards are good this year or if the Ravens are back on their game. I have no idea about any of this $hit. I pay literally zero attention to the sport these days and what little I have managed to observe has been forgotten so I can free up enough RAM to remember where I work.

I email FM my picks and bail - regretting that I ever got into this stupid thing.

Next Tuesday, the scores come in. Runner has won the week, and I'm down somewhere in the last 4. Not dead last, so leaning on Nate the stat guru has really helped me. But Runner's jazzed, and good on them. They actually thought about their picks. Did some research.

Three weeks in, I've resigned myself to coat tailing on Nate Silver's odds, because I know absolutely nothing about what is going on. Knowing that I have points at risk makes Sunday Googling a little more interesting: Hey, did my teams win? Well, sorta.

"Sorta" is good enough to get me into the middle of the pack. A few weeks after that, I actually get the high for the week.

Yea! Five bucks! Three more like this and I'll break even.

Hah.

But the organizer keeps emailing a list of who won the week, and who has the highest number of points across all the weeks so far. It's just bragging rights, but I'm up in the top three. I guess my week to week numbers aren't winners, but I'm more stable than most of the players, who bounce from worst to first and then back again.

I'm using the same stats every week, so... I guess I would be stable. It's not putting me top of a given week, but I won't be the anchor man overall.

That's cool.

And then I win two more weeks. Fifteen bucks, total!

After those two weeks, I'm ahead in the overall score. Runner is mad at me. They got the first week and pretty much nothing afterwords.

I'm getting coffee one morning in the breakroom and TierI starts razzing me, "You gonna let anyone else win the pool, murph?"

Ha, ha. Yeah, I'm on fire at the moment, but don't worry. It'll pass. 

Two weeks later, I haven't won another week, but I'm still ahead on the overall.

Next time, its Ehl giving me grief in the breakroom. "Geez, let somebody else catch up, will ya?"

Ha ha, Well, if I win another week, I'll have gotten back my entry fee, so...

Ehl's incredulous. "Screw the weekly winning, the overall pool must be over four hundred bucks..."

!!!!!

I nod and head back to my desk.

WHAT???

Okay, I re-read the contest rules and find that the overall score is not being included for laughs, The person with the most total points at the end of week 18 gets 80% of the total pot.

I count the total number of players and we're around 36 people. That's like $700! which means....

*calculating sound*

Over $500 bucks!

Holy crap, I'm an idiot.

I literally had no idea about this, but (duh) of course there would be a pot. Imagine paying $20 per person and paying only $5 per week.

Great work, if you can get it, but...

Okay, so now I'm looking at the overall and trying to figure out how I got to this point. Looks like most of the other players are bouncing around wildly from week to week, but there are about three or four that really have been cruising along with me. These folks have a method, too.

My method is simply: ask Nate, but it's a method I've used consistently for almost ten weeks. Better still, Five Thirty Eight's stats improve over time because more is known about the various teams each week. No odds are bulletproof, but these odds are the result of quants pumping data through all kinds of scenarios to see what shakes out.

Folks who pick however the mood strikes them are not going to beat the likes of Nate.

Now, I'm getting grief from a number of people in the office who (unlike me) have known that this pool was for real dollars since the beginning. One of those is PD, who is chomping at the bit in the overall - barely 10 points behind me.

They ask me, "How are you doing this?" I've led in the over all for seven straight weeks.

I could say "I'm using odds from Nate Silver." But then, that would help them. So, I say (disingenuously, but accurately) "I have a spreadsheet, and I plug in the odds."

Which is true, I have the spreadsheet the pool organizer gave that lists the matchups for each week. Everyone has the same spreadsheet.

And yes, I do enter the odds into this spreadsheet - but the only odds I have are the odds I take from Nate Silver.

Five weeks from the end of the pool, some dude comes out of nowhere to overtake me in the overall.

I knew this would happen. Just about the time I'd start to think I could win the thing, my method craps out on me. And - thinking logically - there's lots of reasons I should have expected it to.

Nate Silver's method is to compare the team strengths and run through all the probably scenarios to see what percentage result in wins vs losses. But that ignores a key aspect of the late season: when a team has their bye in hand, or is assured of their playoff slot regardless of their remaining record, they may just choose to tank a game or two. Why should they risk injury to their stars in a meaningless game against an opponent that is never gonna make the postseason?

Screw that. And so Nate's clean numbers on how often this team's starters should beat this other team aren't really relevant - since the coach is benching his starters after the first quarter.

I have two crappy weeks in a row and some dude is pulling away. I'm starting to wonder what system they are using. They probably have a real spreadsheet with odds in it.

And then I go back and check all my scores, because the organizer keeps saying "errors can happen." And I find an error - and unfortunately, it's an error where I got 14 points I shouldn't have.

I check and double check, and find out that Runner's score was too low that week. Oof.
I contact the organizer and fess up. They dock me the points and I'm solidly in second place

But then some dude has a truly brutal week when I net 119 outta 136 points. I'm back on top, with two weeks to go. PD is faltering and some dude is the only one who can catch me. Second from the last week, I get pummelled on the Pats and the Hawks tanking, but so does everyone else. I'm still up.

Some dude gets the exact same score I did. Hmmm.

Last week of the pool, the Pats bone it again, but they are my only double digit fail, and I end the week with 90 points out of 136. I'm averaging 68.8% of the available points overall.

Some dude misses me by five points.

I've won the pool. The pool I didn't know existed.

A few weeks later, the organizer comes by to give me my winnings in cash.

Five hundred and twenty three dollars, thank you very much.

*     *     *

At which point, E steps in to ruin things. I'm jazzed about having a big wad of bills and E's like "What should we spend the money on?"

Now, I'll admit, that at this stage of the game - Es plans for the winnings had not entered into my thinking.

At all.

I'm pretty sure she was yanking my chain, too. But the point was made.

You think that money is yours, do you?

And I don't know where to go with that. The closer this money got to reality, the more my brain entertained thoughts of getting something for myself. After all, this money was "off budget."

The bills will still get paid, our savings deposits will not falter - and this money will arrive and become... something I wouldn't normally get.

*     *     *

Runner wasn't exactly helping. Soon as they saw the cash, they were like "Now you can get that jacket."

Ha ha ha. This is like, a third, of what that jacket costs. Ha ha.

Ha.

But that's about all the pollination that idea needed. I know there are five stages of grief, but I'm not sure how many stages of pining there are.

Let's count, shall we?

First: Denial.  Ha ha ha.

Second: Advocacy masquerading as doubt. No, no. It's completely impossible. But WOW would it be amaze-balls, right? Look at the way they did that pocket...

Third: Feigned Logic. Well, it would probably be the last raincoat I would ever buy. And really, it's a good thing to increase the amount of things in life that make you happy. Think of the Nest - every time you use it it makes you happy. Or your Tom Binh bag - that makes you happy, right? This would be just one more thing like that. And hey, its not like you're going to get a $400 tee shirt, that's nuts. A jacket is a long lasting thing. You can wear it and still dress down.

Fourth: Actual Logic. Ermagawd, that is a lot of money. Don't you have car repairs to do? Wouldn't the responsible thing to do be to put the money in savings and watch it get devoured by some stupid household expense?

Fifth: Anger. WhytheFark should this money get gobbled up buying a duvet and some pants for the kids?

Sixth: Bargaining. Hon? I'm wondering what you'd think of buying one of these jackets. I don't want to buy anything that is going to cause resentment or that will blow a hole in our budget. I think we can do this without breaking our bank, but I wouldn't think of buying such a thing without talking to you.

*     *     *

That was about a week ago.

Two months ago, E's surfing the web and shows me a picture of a puppy called Tobias. We've been looking to complicate our lives with a dog for some time now, and have not been having much luck.

I want a dog that looks like a dog, which poses a problem, because apparently only I know what this means. Moreover, our local shelter is blessed with the problem of more demand than supply. This is great for the doggies, but hard on potential owners.

The day after our shelter got over 60 puppies in and put them up for adoption, I'd called them to ask if they still had puppies and was told "yes." So we dragged the kids down there after work to look at the doggies.

All were cute.

All were taken. A fact that is not apparent until after you find a suitable puppy and ask their staff. "Oh, that one is taken. Guess again!"

It is not a fun game. Particularly when all but 1 or 2 dogs are spoken for.

Finding out which dogs are available is something that can only be done away from the kennels. We've spent the bulk of our visit staring at the cute puppies in the kennels, oblivious this fact. All the while, people who reviewed the dog inventory online have been snapping them up at the adoption desk.

The kids resigned themselves to a dogless existence.

E and I got back to being ground down by work.

So, weeks later, E spots this dog, Tobias.

Tobias looks like a dog.

E's done this game too many times, so showing me the dog was more of a forlorn hope than anything else.

"I'm like, if we want this dog, we need to go now."

E takes this to mean, there is no hope. As E has to take little e to an appointment soon, this is it for her. Not this dog, then.

But this is not where I'm going with this. E takes off and I drag the boy out of the basement, because the shelter opens in about 30 minutes. I understand that people are usually there early.

The boy is cranky and I manage to stand on him hard enough to get him in the car and out. Google tells us we will be there about 15 minutes before they open. Good enough?

When we pull up, there are at least a dozen vehicles in the parking lot. Most with people in them. The boy and I wait in the car before we see a father and daughter walk up to the doors of the shelter and go in.

??!!

The Boy and I go in and discover that - in addition to the ten or so people in the parking lot - there are about a dozen people in the entryway of the shelter. The staff tells us all to wait until they make the announcement that the shelter is officially open.

It is nice of the staff to let us in early, but literally everything about getting to see a dog is opaque and difficult. Which dogs in the kennels are available? Who knows? How do I go about seeing a dog? You'll figure it out!

When the appointed hour arrives, the staffs gives us the go-ahead and the Boy and I all but bolt over to the adoption desk. It's more than a bit unseemly. I'm thinking of the people in the parking lot, who waited for someone to turn on the "Open" sign. They will be too late. Or the people who are headed into the kennels, they are hosed. I'm trying to move fast without being tacky. I get body blocked by some senior citizen, utterly clueless to the fact I need to get by. I dodge around them, so much for not being tacky - and then we scramble up to the desk like we're in an event.

Even then, we are fourth in line.

The first person in line asks to see a cat.

Huzzah!

The second person is asking for a dog, but not Tobias.

Third person also wants a dog, but inexplicably wants one of those dogs that look like cats.

We're up and blurt out "Tobias, I want to see Tobias."

And he's available. They give me his folder (the coveted, tangible symbol of  "I got dibs on this animal") so I snap a picture of it and text it to E.

We get to meet him and he's a dog, not one of those freak cat/dog hybrids. More importantly, he's a very calm animal. Dog, dragged out of a kennel, after being picked up as a stray - plopped into a room with two new people including a child.

Dog's like: whatevs. Got anything to eat?

This is impressive. Too many dogs in this situation are freaking out, or jumping/chomping, or hiding or any number of things that are the opposite of calm.

This dog is calm. I tell them that barring a sudden, violent attack, we will go forward with adopting this animal when my wife arrives. We're in an observing room and more than a few families (fresh from the kennels) are emerging to ask if they can see Tobias next. The staffer helping us says there are a few more people on Tobias' list who want to see him.

Yeah, that's not gonna happen.

And I feel bad for these folks. They are learning the hard lesson I acted on when I came in. Ignore the kennels. Know which dogs you want to see when you show up, and ask for them immediately. We are going to get this dog - and I feel like a thief.

E and little e show up to formally say "Yes" to Tobias. We are going to rename him - the shelter name doesn't suit him at all.

Thankfully, once you agree to get a dog, the process is very smooth and easy. Some light paperwork, they recommend getting a microchip, and we buy some dog gear: a crate, a leash, collar and two chew toys.

It takes about 20 minutes to get him chipped. Meantime, they ring up the charges.

Five hundred and twenty dollars.

*     *     *

I resist that math. What did you get with your football winnings? I bought a dog.

Not a jacket, or a cool, once in a blue moon extravagance. But a dog. Something the household was planning to buy anyway.

I swear, it's almost as if the Dog is trying to make his case. He's mostly housebroken, takes to his crate well, loves people, and aside from the occasional, unauthorized gnawing - is a pretty solid dog.

He gets us up early.
Makes us clean up our floors.
Gets me to walk almost every day.
Makes me familiar with my neighborhood.
I've actually met some people (they're nice).

He helps get the kids up in the morning.
He's gotten us to go on family walks - and to dog training classes.

But I'm still resisting the urge to erase the line item in our ledger marked "football pool" and accept that this is where that money went.

I just...



Oh, fine, dog...

You win.

Last stage of pining: Acceptance.

But I'm keeping the last three bucks. Gonna start me a jacket fund.

Thursday, May 21, 2015

Derailment, part II

Continuing from Part I

Arwafn is coming undone. And for a reason I first started hearing about a month after I came to Nerdhaven.

One of the base data elements of Arwafn is something I'll call TURN. TURN is a series of codes that factor into the key datapoint of the Arwafn report. Calling it the lynchpin of the report would not be overstating it. The customer sends Nerdhaven TURN codes and we group them, count them, and make them look beautiful.

Classically, a TURN code is a single character value. Like T, or U, or R, or N. And Nerdhaven's process is built on this standard.

Single character come in, single character go into database. Arwafn is happy.

But what if TURN comes in as multiple characters?

Instead of T, let's say it comes in as T<*

Then what?

This question had been posed and answered for me by Noddy. Noddy had raised an issue about multichar TURN codes in their usual manner: Airily, arrogantly "raising a concern" via email to a slew of senior staff. Runner and I were cc'ed so we would be aware of his brilliance.

Look at me!

That's Noddy, and the truth is - its hurts their message, since the resulting eyeroll drowns out the content. But the issue sounded serious.

According to Noddy, when a multi-character TURN code came in to a system I'll call Dragon, it would get truncated. Dragon would take just the first character and bin everything else.

T<* would become simply, T.

And that didn't sound so bad, and really wasn't bad, until new values were added to the TURN code like NO and TDD. These were values that were distinct from T, U, R, and N.

But if Noddy was right, Dragon would take an incoming code like TDD and convert it to T. NO would become N.

And that really would be a problem. Because now our system would be adulterating client data - and that is not cool. Arwafn would be inaccurate, and other features in our product would be wrong as well. TURN is deep, deep in the works. And Noddy wants us to know he's found this problem.

I remember Heater responding to Noddy's initial email. Heater had a few stories written up to deal with this issue - they'd never been given priority before, but maybe now the time was ri-

Dragonman kills that noise almost immediately. Dragonman is lead dev on the Dragon system, and his response took the wind out of Noddy & Heater.

Here's a count of all the incoming TURNs we've received in the past two months: out of millions of messages, we're only gettting a few hundred N values. Even if all of them were really 'NO' values, its a negligible amount of data.

In other words, Dragonman was saying this is not a problem.

Heater lives in fear of Dragonman, and Noddy never follows up on anything. So that was enough to make them drop the issue.

I'd remember talking with UXDir and they were frustrated that we weren't fixing this issue. "We shouldn't treat this like a tech support call! Who cares if there isn't a lot of volume now? We should make this right, so we future proof the system!"

I also remember talking to Product & suggesting that supporting longer TURN values might be a selling point for our product. Product said we didn't have any data to support that it would be worth it. Between that and the technical pushback, the idea was buried.

Yeah, we truncated the TURN codes, but it didn't matter enough to warrant allocating dev resources to fix it.

*     *     *

That answer became the party line: We truncate, but so what?

Months later, even I used that line to shoot down Suit when they tried to grandstand on the discovery that OMG, we're truncating TURN values!

Suit was engaging in that same chicken little exercise where "lookee everybody! I found a problem (and gosh, aren't I smart?)" and I was in no mood. I forwarded Dragonman's original response on TURN to Suit and cc'ed about everyone. This is a crap issue, leave it alone.

I felt proud of myself, too. I knew what was going on under the hood with TURN. It's no big deal.

*     *     *

Rewind to about five months ago. I'm on the phone with Goldeagle, one of our beta testers, and they are looking at their version of Arwafn and they are confused.

The numbers for this item just look wrong. It's way too high, and I think the count is off.

I'd seen this before, but it had always been a setting problem. The user had misconfigured things and broke the output. But a quick check showed that Goldeagle had the settings right. The numbers were just wrong. I told them I would figure out what the problem was.

This was weeks after Arwafn went live to over 100 customers. And this was definitely not good.

I asked BigDog to give me the under the hood data for Goldeagle's report. I do the math and everything adds up to the same crappy numbers Goldeagle was wondering about. And I notice a pattern in the data: the calculation is based on the occurrence of T's out of the total of T's, U's, and R's.

And there are no R's at all.

Which is odd, because Arwafn is report that spans a year or more. In the course of a year, for this particular datapoint - there should be at least an R here and there.

I check again. None.

As all the data I'm looking at is in the Guardian database, I wonder if we're screwing things up somewhere upstream: in Dragon, maybe.

But Dragon doesn't hold data, they take incoming values and slot them into our Guardian db. True, Dragon would be the place where we are truncating TURN codes, but truncating still passes something and I was seeing no Rs at all. Was there a process that was eating the Rs?

And why was it only for this one record? Arwafn has dozens of record lines, each crossing columns with other values. And only this one combination was showing this total lack of Rs.

What the hell?

At this point, I trot over to the other side of the building and visit HockeyOne. They are a code slinger, an expert on incoming client data, and they're one of the folks that are always asking me painful questions when I'm showcasing new features.

HockeyOne lives and breathes in another system that is upstream of Dragon. It's called Lizard. And Lizard is very low level stuff, grabbing up massive volumes of text files sent by our clients and flinging them into the jaws of Dragon.

HockeyOne is a guru of all things Lizard and I start asking them if they have any idea what could be happening to my missing Rs.  HockeyOne looks at me with a sort of amused smile and says "have you looked at the KIM fields?"

No. KIM fields are not TURN fields, why the hell would I look there?

"Because if the TURN is too long to go into Dragon, we'll append it to the end of a KIM field and pass a blank TURN value."

Shut
the
front
door.

HockeyOne goes on to explain the problem. Lizard wants to pass all TURN values to Dragon, but it will get an error if it tries to pass a TURN that is longer than 1 character, since Dragon will only take a 1 char TURN code.

Rather than give up, Lizard will look for a neighboring field, KIM, and append the TURN value to it so the data has somewhere to go in Dragon. Lizard doesn't truncate the TURN, it puts it elswhere and passes nothing at all to the TURN code in Dragon.

I start to sweat. "Can you run a query to show me what kinds of extra noise is getting tacked on to Goldeagle's KIM field?"

HockeyOne says "sure!" and writes up byzantine query in a few minutes. They show me a list of values that are in the KIM field, but supposedly came in as values in TURN:

  • BLES
  • UB
  • CLAB

Whiskey Tango Foxtrot? I've never heard of these values coming across in TURN. I ask HockeyOne to make sure - absolutely sure - these values exist in the client's messages to our system. HockeyOne goes deep into the weeds to show me - that these are real values Goldeagle is sending to us AND that they are sending to as as TURN codes.

I ask for samples that prove this, so I can show them to others. HockeyOne has just demonstrated that we are NOT truncating TURN codes, we are moving them elsewhere. Which to downstream features like Arwafn, is essentially the same thing as deleting them, since Arwafn is looking at the TURN field, which ends up blank every time one of these multicharacter values bounces off Dragon's front door.

HockeyOne is excited. They've always hated the fact that Lizard was shoving data in weird places, and they've asked repeatedly for Dragon to take longer values and store them. They give me all kinds of examples of what is going on in Goldeagle's incoming messages - and I find front end examples of this data mangling so I can sell this as a real issue.

Then I get back with Goldeagle, and ask them what is going on with these other codes. What do they mean? and why are they being sent in a field that should only have 6 discrete values?

Goldeagle tells me that their system uses those other values to track TURN as well as an entirely different dimension called BLES. In their system, the code BLES = R and also has some additional meaning as well. UB is also the equivalent of R.

Which means I've found my missing R values, they are being sent as multichar values in TURN, which means Lizard isn't putting them into our db as TURN values, because Dragon won't let them.

Which means Arwafn is pretty much screwed at this point, because Arwafn only sees TURN values in the Guardian database. If multichar TURN values aren't landing in Guardian's TURN field, they might as well not exist - because to Arwafn - they don't.

I ask HockeyOne how often Lizard would move TURN values into KIM and send a blank value in TURN to Dragon. I mean, I'd always been told we truncate.

HockeyOne is pretty sure that we do this for a majority of our sites. Which means that Goldeagle has a lot of company. And a lot of our Arwafn customers are going to be missing data.

I flip out and go to Data and Heater and declare that the sky is falling. Data tells me that what I am saying is inaccurate. "We truncate."

I show them the messages. "No, we don't. At least not for this site."

My equivocation doesn't help my case. I may have just found an outlier. I email a wider group and provoke an exasperated response from Ajax, who is the sheriff of these kinds of data issues. Ajax is a supremely competent person and they tell me that I'm describing the situation wrong. That any moving of data into different fields would require changes that they would be aware of. And they have seen no such changes.

I take this as "murph, you are full of sh!t" and as I have only one site as a datapoint, I can't press much further.  I get more data by hitting up OneTwentyEight to run HockeyOne's byzantine query against all of my beta sites.

More long TURN values show up, noisier ones like "NEG" and "POS" and a slew of things that look like equations. I run this past Data and Sprint and start to get some traction.

Sprint (who is awesome) runs ahead and sorts out a list of what chunks of work would need to be done to get these longer values into our system correctly.

We get Dragonman into the fold and a reasonable solution is proposed. Dragon will create a path for longer values to make it into Guardian. We draft up a list of work to present to Product.

We're on the verge of pitching this plan when all hell breaks lose on Arwafn.

I'm in West Virginia getting an alarmed email message from Product asking what the hell is going on with Arwafn. I'm wrung out from a long day of client visits yet completely unable to sleep - and so I lie in bed and type an epic mea culpa with my thumbs. We didn't go under the hood enough when we were in beta. This is over and above the TURN problem, but this starts the crazy train rolling.

I fly back home and drive straight to the office from the airport and see Gumby and Atlas clearly having a strategy meeting. I make myself available and soon we are in stage one of responding to an epic managerial sh!tshow.

The executives have heard that Arwafn isn't all it was cracked up to be and they are demanding answers.

The execs are flipping out about filters on the report not working - and they are pissed.

And at this point, they have no idea about the issues with TURN.

Its about to get a whole lot worse.

Wednesday, April 29, 2015

Derailment, part I

All at once, work is exhilarating and terrible.

Arwafn is rolling out to the world, and while the internal reviews are good - the only score that counts is the one you get from the end users.

The early reports are the worst. Not because they are bad, but because they usually represent incomplete opinions, initial reactions - delight in something new. They are passed along by hopeful co-workers who want to believe the same thing I do: that it has worked. That our customers are pleased with what we've done.

Somehow, I always manage to fall for this.  I supposed to be dispassionate, but after a year of working on the project, I want success. I want happy customers.

And so I flatter myself to think that this time, we did it right.

And then the second round of reviews roll in.

Second round is usually polite, deferential even. "Hey, I'm wondering about this bit here..."

By the third round, you know you have problems, and you start looking for patterns. This is not a drill. You'll need to fix this.

Bin the ego and lean into this, because it's going to hurt.
"Customer has some questions about this filter. It doesn't seem to work" 
"...numbers aren't adding up. They want to know why..."
Third, round - the co-workers have stopped being nice. They want to know what the problem is. And how those problems managed to make it through QA and beta testing.

There is no worse feeling in UX than watching a customer delight in seeing what they wanted to see - and then watch them realize their mistake.

Oh...I guess that isn't working.

*     *     *

The flaw in Arwafn that managed to make it all the way into production is the most maddening of all. Arwafn relies on customer supplied data - in the form of a data feed.

Data flows from a client's system and flows into Arwafn. Arwafn turns the tidal wave of data into an intelligible grid and allows the user to manipulate it in several ways. We've checked the design against the industry standards, we've verified that the added functionality was wanted by the customers - we've set up beta testers with their live data in Arwafn and let them play with it to get their responses.

And we've had QA try to beat it to death with everything short of a tire iron.

Arwafn came through all that. The board was green.

But we'd missed something - something that was admittedly pretty hard to quantify, but something that we could have noticed earlier.

The client data feeds are crap.

We were like engineers building a colossal aqueduct across miles of countryside and then aiming it at a dry lake.

Or, more accurately, a bog.

Some customers follow the agreed on specification for supplying the data and - for them - all is well. But for a still to be determined group of customers, they send us garbage - and for them, Arwafn is smelling pretty foul.

And it's no good pointing the finger back at our clients. We told them Arwafn was a new feature - we did not tell them it might work if your data isn't godawful.

Nor did we design the report to degrade gracefully. That principle I began learning with regards to crap browsers ages ago was noticeably absent when I baked out the stories to build this report.

It's a basic idea - and yet I'm re-learning it for the umpteenth time:

Okay, it works when A, B and C are present. What if I take away A?

Easy. It looks like it's still working - but isn't.

What if I take away B?

Same thing.

And so on. Any of those questions getting some real thought would have resulted in what NerdHaven is now rapidly deploying to the field. Switches to enable the functionality dependent on A.

Don't have A? We'll shut that off for you.
No B? We'll turn that off, too.

The rest will still work.

That's how it should have been designed from the get go, but in my naiveté thought "Of course, they'll all be sending us this information. How could they not?"

 And they're not. Or rather, I wish they just weren't - that would have been easy to spot.

When we did beta sites, no data would have resulted in obvious failures. But that didn't happen. We had data flowing into our UI, and the dependent features worked as expected.

Did we ask users to go through our report line by line to ensure accuracy?

We did not.

Did we ask our internal experts to crawl around under the hood of our beta sites?

We did not.

All of this, every new expression of the problem, slams home into whatever professional pride I'd managed to save up. Three weeks ago, Runner and I were heroes. Now, I'm being forwarded emails from our SMEs where they are describing Arwafn's failings in scathing terms. I'd have hoped I would have been included in those messages when they were sent, but I get them secondhand. After they've been routed through management.

Atlas has been unfazed by this - they point out we've had data issues in the past, and the scope of the issue is being overblown. I feel genuinely ill. Atlas and Gumby finished up my performance reviews before this all blew up. I came out really well in their eyes. I was proud.

And now this. The folks who sang my praises are now being hauled in front of the executive leadership team.

And there is something else. Something that goes beyond a customer sending us crap data.

Something I'd heard about and went after.... just way too late.




Friday, March 28, 2014

Accent on the 'We'

Okay, Great Grandpa George is gonna have to wait.

I'm gonna let go with some sh!t.



And I want to start this off by saying that my current job is - by far - the best job I have ever had.  Challenging work, a noble cause, outstanding UX support, and free coffee.

I'd also like to say I've been there long enough to say this isn't a case of being in love with the honeymoon. 

I work on a team stocked with rockstars. These are people worth going to the mat for. 

My UX role is backed up by management. I own the problem, study it, design a solution - and then my devs build it.

Note the curious absence of corporate bullsh!t

As I said, It's a killer UX job.

But I am now going to hurl a co-worker under the bus.

...because they so effing deserve it.



Back when I interviewed for this job, the only sub-awesome bit was the UX guy. A veteran designer, but clearly somebody who thought an awful lot of themselves.

This post is about them. 

Let's call them Noddy.

Over two months ago, the UX director called us into a room and asked each of us to take one of the many projects on Product's to-do list. Immediately after doing this, they informed me that I would be working on a report with a funny name. 

The UX director has a way of doing this. I think it's their way of cutting the crap. 

Fair enough. At the time, it's not like I would have known enough to make an informed choice - so they chose for me. 

UXDir then drove the point home by asking "What do you know about [A Report With A Funny Name]?"

Having decided to be honest at this job, I said, "If I think about it awhile, I might be able to spell it. ARWAFN."

UXDir grinned. 

Okay, we're all friends here.

The rest of the UX team got their marching orders. Noddy got a pair of reports, Sprint and WatchMeType already had serious project work - which they kept, and Runner got the dashboard that held all the reports.

Work these problems.

So, off we went. And I spent a pornographic amount of time learning about Arwafn. What it is, what it does, why people use it, how people use it.

In all former lives, this luxury of time was unheard of. You need to be done two weeks ago. Go.

At Nerdhaven, so long as the devs had stuff do, you could take the time you needed to solve your problem.

Awesome!

We all plunged into our assignments and started ramping up.

In the meantime, Noddy was still keeping our devs busy by giving them features and fixes so they had stuff to do - AND they had to work their reports. 

Sprint and the Professor kept their devs working on their project work.

All was well.

I started writing up things for our devs to do, a lot of Arwafn was stuff people had been asking for for ages, so writing requirements for it was a lot like transcribing our customer's broken dreams.

For the love of God, give us an Arwafn that works!

Doesn't take a genius to write specs for that feature.
1) Make an Arwafn report that works.  
2) Also, make it not suck.
I write these up - give it to the devs, aaaaand - they pause.

They hem. They haw. 

The existing Arwafn is not in our code base. 

Ramping up for my Arwafn work will take time. They will do it, but all my work is the same to them: Stuff they cannot start now.

The Devs are hungry for work, and my stuff doesn't help them. Runner's still ramping up to make stuff, Noddy's stuff is all they have.

And... Noddy's stuff is pretty thin gruel. 

I mean, we work in two week sprints, so you don't give a dev a slab of work that takes more than fourteen days. But still... 

Noddy writes up stuff like "add a value to a dropdown menu," or "change this text label." These are things that need to be done, but if I was writing up the work, I'd do a bunch in an afternoon and move on to real work.

I'm sure the devs think of them the same way. Developing even simple things takes longer than you'd think - particularly if you do it well, and our Devs are awesome.  So, I can't help but think they are uninspired by the work they are getting.

But Noddy's the only one giving them stuff they can do, and they're on two other projects. Runner and I need to step up.

Runner connects with our Subject Matter Experts, and starts getting a list of things that need to get better in report-land. This is something I'm bad at as a noob. I have all kinds of research materials at my disposal, my first inclination is to use them - not schedule a conference call.

Runner does the right thing - they get the SME's on the phone and Noddy shows us the ropes on Nerdhaven's version of virtual meetings.

Aside: Virtual meetings suuuuuuuuuck.

But Noddy shows us how to record our sessions so we don't miss stuff, and facilitates the introductions to the SMEs and generally gets us rolling. I spend the entire call waiting for someone to talk about Arwafn, and I don't think anyone did. 

Afterwords, Runner reviews the recording and writes up a summary/partial transcript with timestamps. At the time we're both looking for guidance for what we should be doing and Runner's wondering if they're wasting their time with the transcript. They send it to me and Noddy for review and I forward my edits. 

Noddy never forwards any edits. To Noddy, this is a waste of time.

I believe this is not a waste of time.

We had a session full of good info, but all of it was stored in our fragmented memories - and a video recording. 

Months from now, when someone asks what we came up with in the meeting, we'll all have forgotten the call and we'll be left with the video. 

A two hour video.

PRO TIP: You cannot skim video.

If we wanted to know what was in that file, it would take 2 hours. And if we didn't write anything down when we watched it, we'd have the same problem a month later.

This, I learned, from Sensei. 

Sensei wrote up notes on some conference calls that saved me a ton of time. A summary I can skim and learn "This two hour video is all about reports." If I want more, I can read in detail, or (last resort) watch the video.

Moral: Write the damn notes. If you never find a use for them, someone will.

Also: Thanks, Sensei.

Anyway, our Devs are starving for work. Our team lead, BigDog, is trying to be patient, but wants us to give his devs work.

Soon.

I write up more stuff for Arwafn. Because it's what I've been told to do. The other UX folks are going to land stuff soon, and after those are done - the devs can take my stuff.

Noddy lands a few more appetizers, but nothing resembling real work. The devs sigh, but when all you have is fritos, you eat the fritos.

Fast forward a sprint. 

We're reviewing work for the devs and I proudly call up my specs for more Arwafn stuff. BigDog is straining to be nice, but they can't eat Arwafn yet.  I've got a seven course meal of inedible.

I feel like I've let the BigDog down. I go to UXDir and ask if there are things I can give our devs to work on that they can do right now. They aren't on our goal list, but there are literally a *ton* of things we could improve in our UI.

UXDir is polite, but firm. "No."

Noddy is no help. This time around, they don't even have appetizers.

What we end up with is pretty much a typo correction: Remove Reports 1 & 2.

Dead simple features. Not even features, really. Delete some things. Whoo...

Dev's gotta eat...

So, we're deleting Reports 1 & 2.  Maybe a hour of code time for each. Twice that to make sure nothing else got broken in the process.

But it's a joke of an iteration. Devs are meeting to figure out how to spool up for Arwafn work and a bunch of other things we have in the pipeline - but when we show our clients what we've been doing lately, we should expect a yawn.

At Nerdhaven, we do Agile - and Agile means you stand in front of your work and show your clients what you've been up to. When you land big slabs of awesome, you and your team look awesome.

When you take a bow in front of a heap of nothing - you and your team look stupid.

Agile is about forcing that realization upon people and using it as motivation.

We don't want to look stupid, ergo, we will get our sh!t together.



Yesterday, we took our bow in front of nothing. Noddy was the MC, and tried to put the best spin on it they could. "We'll have you out of here in two minutes, end to end."

Noddy shows the clients that - in the past two weeks - a room of highly-paid professionals has succeeded in deleting two reports.

And then things go wrong. And not in the way you'd think they would. Our SMEs are on the conference call asking why in the hell we've deleted Reports 1 & 2. 

Noddy's ready with the pat answer, "Reports 1 & 2 have been replaced by newer reports and are no longer needed."

I vaguely remember this, and something about having never removed the old reports. We were just fixing this. Why was this a question?

I'm almost relieved no one is giving us the business about the scant offerings, but the SMEs aren't done.

"Reports 1 & 2 have functionality that do not exist in the newer reports. Why did you get rid of them?"

Noddy mentions the earlier meeting with the SMEs about reports. "We'd agreed we could get rid of these reports. But if you need them back, we can certainly roll back the changes."

QA weighs in - Reports 1 & 2 have some benchmarks that are unique. 

This is news to Noddy. 
This is news to me - I paid no attention to these stories. I'm the Arwafn guy. I know nothing about Reports 1 & 2.
All three UXers in the room look dumbfounded. 

In front of the clients.

Awesome.

Noddy assures everyone that the SMEs had agreed to this change, but we can revisit the decision.

We end the meeting promising to follow up with the SMEs.

Back in the room. BigDog has had it. He gives Noddy an earful "I can accept that the reports need to come back, I can accept that we made a mistake. What I can't accept is that we're at showcase and DON'T KNOW WHY WE DID THIS WORK?"

There is no argument. BigDog is completely right. We work up ways to check on this sort of thing. The SMEs have changed their minds since we talked - and now they want their report back. We should be ready to confront them with evidence of their reversal. We should not sit silent while they ask why we did what they asked.

Product shows up and catches the tail end of BigDog's rant. Product is clearly displeased that the SMEs are pointing us in different directions.

Product is clear: Sort this out.

Later that day. Runner and I are hashing out what happened. Runner points out that removing Reports 1 & 2 was their feature, but Noddy pushed it to the devs. Runner is just sick that people think they pushed bad work.

Runner had some doubts about it, but Noddy said it was ready. So it went. 

It was a simple task: Remove Reports 1 & 2. Not like there was a lot to review.

But Runner's pointing out there was a whole meeting about those reports. And it was recorded. And Runner transcribed it. 

The SMEs asking questions today has Runner remembering that we were  supposed to migrate stuff out of Reports 1 & 2 before we blew them away. 

Runner's worried. BigDog is pissed - and BigDog knows this feature was written by Runner. And we all should have caught this, but Noddy shouldn't have given Runner's story to the devs. 

I tell Runner I'll talk to BigDog. If this story comes from Runner, it's going to sound like Runner's shirking blame. Runner's not like that, but they don't want soak up all the fail on this.

I talk to BigDog and lay it out. This is a UX fail, not a dev fail - but Noddy moved somebody else's work without knowing it was ready. We should have stopped them, but no way this is Runner's thing.

BigDog nods like I'm telling him something he already knows.



Today.

I'm rolling in around noon - little e was sick - and I meet Noddy in the hall.

They're like "That call with the SME's on the reports, that was recorded?" Or words to that effect. I was out of it. But it was odd that they were asking about this, first thing, in the hall.

I'm like, "Yeah. We recorded it."

Noddy starts talking about it being a two hour recording, and grumbling about how hard it would be to listen to the whole thing. They said something like they'd started to, but it was just too much of a pain...

I kill that noise.

"You could just read the transcript." I am so glad I talked with Runner yesterday.  "Runner wrote the whole thing up and sent it around for edits, remember?" I bet you don't.

Noddy leaves and I hit my desk.

BigDog is on me soon as I get my coat off. He wants to know the details on the Report discussion we had with the SMEs.

This is a thing.

I find the transcript, CTRL-F for the report names.

It is dead obvious that the SMEs are right. The transcript has them asking us to move the features out of Reports 1 & 2 and afterwards we can delete them.

Five seconds to the answer.

I spend five minutes scrubbing to the matching part of the video file to listen and make certain.

Noddy told them they'd agreed to remove the Reports. 

He was mistaken, or he lied.

I give the information to BigDog who begins digging into it immediately.

The day is a blur of catching up from missing the morning, but finally we arrive at the moment that made me write this.

I'm talking to BigDog after a long meeting with Runner. Noddy's talking to one of the SMEs on the phone.

He's saying "Well, we had a new BA."

I'm like: No way I heard that right. 

BigDog and I are cross talking about something funny. BigDog is either hilarious or fascinating on pretty much any subject he wants to be.

I'm trying to keep up with him, but I keep hearing Noddy's cross talk.

Noddy is blaming Runner.

I sit straight up and look right at Noddy, but it has no effect. Noddy wraps it up and before I can think to say anything, BigDog is all over Noddy.

"I heard you talking to the SME, and you said some things that were not true."

BigDog's been tracking the conversation longer than I have and he's going after what Noddy told the SMEs in our showcase.

Noddy starts out with his "its in a two hour recording-"

BigDog takes him out at the knees. "I've read the transcript. I listened to the 20 minutes where you were discussing these reports."

Noddy keeps weaving, shifts to saying it was Runner's story.

BigDog calls up the audit trail. "You pushed it to 'ready for dev.' There's your name, right there." 

And finally, Noddy shifts to the position he should have started with - shared blame. 

"We missed it."

Which is just another floor down in Noddy's house of bullsh!t, but closer to a professional truth. UX gave Dev specs that should not have been coded. 

At this point, I should pile on with BigDog, stick a fork in Noddy. 

But I don't.

BigDog did the right thing, the hard thing. He stuck it to Noddy over the BS line to the SMEs.
About pretending it was all on Runner.

I did the easy thing. Said something magnanimous about making sure any new features pushed to dev have been agreed on by UX. But that's shit. Noddy was part of a mistake the team had to eat. Instead of owning up to that, he tried to lie his way out of it, then blame it on Runner.

He's a weasel.

And there was a right thing to say right then and I didn't.



Which is why I'm writing this post. This post is my promise into the void that I will not let this slide. 

Noddy and I are going to discuss this - and I am going to say what's on my mind.

My team is a good one and they deserve better. 

From Noddy - and from me.

Saturday, November 09, 2013

Free Lunch

On Wednesday, April 20th of 2005 my wife and I drove across town to so that a former college football player could tell us how best to manage our money.

Because he brought me lunch.

That was about the extent of our my thought process when it came to money back then.
Anything is better than what I'm currently doing - which is nothing.

E was sweating our finances at the time and had repeatedly made noises about getting a financial professional to have a go at our cash flow and see where we could stop the bleeding.

Aside from wanting to hire a professional who would not be paid on commission ("My advice is to buy all the crap that I sell!"), I had very little idea of what would make for a good choice.

Which is why I ended up picking a football player.

A designer I worked with at the time offered the entire department a free lunch if we listened to a 1 minute spiel about financial planning.

It sounded dumb, but free food is free food. The financial planning guy would pick up food from wherever we wanted and deliver it to us.

I know. Score, right?

Footballer walks in with a stack of food containers. He passes them out along with a single sheet of paper that shows the effect of compounding interest on various amounts of money invested over varying periods of time.

He didn't seem terribly polished, but he was true to his word. He spoke for one minute, told us the fairly obvious fact that investing early and consistently really pays off over the long haul - and then he was gone.

We ate lunch, and afterwords I picked up one of the man's business cards. Perfect timing, right? I mean I'm looking for a financial advisor and one shows up to give me lunch. I called him up and we set up a preliminary meeting.

I got Footballer to lay out the terms of the deal, we'd pay him a flat rate and he'd provide a full review of our finances along with a plan for managing our money going forward. We told him we weren't interested in crazy investment schemes - we're just looking to get a grade on where we were at and look for areas where we should improve our use of what we had.

Footballer said he was totally on board with that, but he had the annoying habit of using pat phrases that seemed laughably simplistic.

As in
Footballer: Would you like to make a lot of money with your retirement investments - or would you like to [store your money in a mattress/get 1% return on your savings/be poked in the eye with a sharp stick]? 
Us: Uh... the 'make a lot of money' one?
We signed a contract and Footballer told us that we could pay when we received our financial plan - and that there was a satisfaction guarantee. "If you don't like the service you receive, let us know and we'll waive the charges."

Which seemed odd. Also, Footballer wanted to take us out to dinner for a "client appreciation night." We could invite other friends, and their meal would also be paid for.

Which also seemed odd.

But again, I figured this was a pretty transparent attempt to get other people to meet with Footballer so that he could sell more financial advice.

Because he was in the business of selling advice. That's why we were paying him.

I should point out at this point that Footballer worked for American Express Financial Advisers Inc.,  currently called Ameriprise.

As in, Yeah, this guy's a football player who brought me free lunch, but he works for American Express - so it must be okay.

With a choice thus justified, we'd dropped off a copy of pretty much all of our personal financial data with him and made the April 20th appointment to get our plan.

Huzzah! A plan! We're buying a financial plan!

We'd arrived at the nondescript office ready to hear the news, good or bad.

After checking in with reception we were greeted by Footballer who looked deathly ill and informed us that we would be meeting with a colleague of his, as he needed to go home and lie down.

I know what you're thinking, but I believed him. He had the look of a man who has just returned from throwing up in the bathroom. We did not shake his hands and let him go.

The meeting we ended up having had only a few memorable bits:

  1. The person we were meeting with had almost no people skills
  2. Our financial plan said we were in pretty good shape financially, but that we needed to buy more insurance.
The bulk of the rest of the meeting (at least, in my memory) was NoPeopleSkills getting us to fill out an application for Variable Universal Life Insurance.

We were not interested in buying any life insurance that didn't begin with the word "term." Because UVL is a terrible investment for just about everyone. NoPeopleSkills seemed to be on rails and E and I just let him roll along until it was time for the meeting to end.

At some point - I can't remember when - Ameriprise suggested that we refinance our home. I know this because while cleaning out the basement the other day I came across the binder they gave us with our "Financial Plan." 

Written on one of the pages are the words "refi, 3-5 yr. ARM."

Understand - this was in 2005.

We were trying to buy financial advice from a professional. 
We had given them all our private financial data.

-and the sum of their advice was "Buy universal variable life insurance (from us) and refinance your home into an Adjustable Rate Mortgage."

There was never any chance that E and I were going to go for an ARM, we both sort of nodded our head at this suggestion like "no way in hell" - but it's striking at how shameless that Footballer and NoPeopleSkills were.

E's reminding me that at one point they told us that our home equity line of credit was "like having a savings account."

Mind you, these were people who represented themselves as financial experts. These were people whose expertise we were on contract to pay for.

"Yes, NoPeopleSkills, now that you mention it - I suppose that borrowing money against our home is just like earning interest on money in the bank. Yes. I see that now."

I'll quote Tim Minchin: Oh wait, my mistake [that's] absolute bullsh!t.

E and I left that meeting with an unspoken agreement that Footballer, NoPeopleSkills and American Express/Ameriprise/whoeverTheyWere were full of crap.

We never went back. We've never received a bill, either - not that we'd pay it.

Which only serves to illustrate that Footballer and Ameriprise were never selling advice, they were selling their investment products. So much so, that they couldn't be bothered to even ask for the money we'd agreed to pay them. 

I'm throwing all their crap out of our house (along with - it must be said - a lot of other things) but I wanted to write this down so I can remember how utterly terrible Ameriprise was.

Think back to 2008.

All those people who lost their homes in the wake of the meltdown.
People who saved their shekels in the hopes of buying a home - who then had the misfortune to run into some slick "advisor" who sold them financial ruin.

Makes me ill.

I looked Footballer up on LinkedIn - they left Ameriprise in 2006 and went to work for JPMorgan Chase.

And left JPMorgan in 2008 - right about the time Wall Street was imploding.

They ended up working back at a nonprofit wing of my alma mater - doing youth outreach and promoting academic achievement and healthy living.

*     *     *
Footballer?  
If you were to somehow read this - I'd like to say I genuinely hope you've turned your life around. I see that you went back into banking. 
I hope you've changed your ways. That you give sensible advice and treat your clients honestly. I suppose that's possible. 
But mostly, I'd like you to know we never took any of your advice. That the only reason I kept your financial plan this long was because I wanted a souvenir of my own foolishness. 
But with this blog post, I can have my souvenir and still give your advice what it deserves 
- a long, long overdue trip to the recycle bin. 

Monday, July 08, 2013

A Sip From The Firehose of My Mind

I've got three things to remember. First there's that great idea for gaming, need to write that down as soon as I'm done reading to the girl. She needs to get out of those jeans. Sleeping in jeans is just awful -
SECOND I've got to send those glacier pictures to Mom. I promised her ages ago that I would - and I've been ignoring those reminders on my phone.

-Y'know frankly, those reminders aren't really doing much of anything, since the email reminders stopped. What's up with that, Orchestra? 've you given up, since Mailbox? What for your loyal followers?

I should pick a date, a specific date to-

No. That's silly, since all the photos are finally on the Mac. Totally love how those imports are finally working. Which reminds me, I was supposed to re-order those Prague pictures that got sent to the wrong address, since my AppleID had a fossilized address in it.

I mean, the phone experience was great, but I seriously have to re-order them? C'mon Apple?

Still need to do that, though. That's four, isn't it?

Wait, what was two? Glaciers! Gottasendthose!

Okay, three... what the F$*# was three?! The girl needs her meds, too. Six, now? Okay. Get a pen. There are no pens here. All have been taken apart and the same key part - in each one - has been irretrievably lost.

No pen. I'm losing the gaming idea. Something about evil in the west - too cliche?

No- it'll work. But I'm losing the thread...

Meds!! Dammit! In the fridge, because chilled nasty is somehow more palatable than warm nasty. Down the stairs and - syringe!

Got it. Back upstairs. And... there was a twist, wasn't there? I liked it, the thing I shouldn't write down because it would blow it-

Ah. It could go lots of ways. Trapped by it or freed by it - this is going to be a good plot twist... I-

-What am I doing? There she is. Medicine! No fuss this time, just down the hatch. Down to five.

SoEffingTired. E's tired. Vague thoughts about the new gas dryer. Did I flub the connection? Are we going to be poisoned and/or exploded?

No. No bubbles = safe. And natural gas stinks full on awful.

You.

Will not.

Explode.

But there was a third thing. Vague thoughts of that third thing being downstairs. Go down. It'll come to you.

- Left the syringe upstairs -

Leave it. I need to get to -

CRYSTAL CLEAR recollection of an identical syringe, from last night, sitting in the upstairs bathroom - left there from last night when I was-

GOD, I can not believe how long it took to put in that dryer vent. Five minute job, hah.

Okay, go BACK and pick up the syringe you left or you'll wonder what you did with them tomorrow. Down. Rinse it. Repeat. Rinse it. Repeat. Rinse it. Repeat.

Done. And downstairs...

What was Three??

Get Two first. Pictures. Pictures was two, right?

ONE!! F$*#s sake, ONE! 'crying out loud. Get laptop. This could take awhile, I should get the power cord.

-There's one on the back shelf.  No, that one is for music and the stereo/iTunes thingy.

EIGHTY freaking dollars for a power cord and you're keeping it for an edge case? Really?

But it's all set up nice, I'll get the other one from my bag.

There. But the only nearby plug is in the floor...

...and you need a screwdriver to twist the cover off. Could try the plug end -

NO. Not bending another plug.

Go get the flathead from the junk drawer. Forgot to put the liquid soap back in its place. I-

I can see where this is going, world. You want me to lose this screwdriver, but I'm not going to...

...Totally losing the gaming thread...

Up. Stairs. Soap put away. Down. Stairs.

Flathead has rolled into the sink, but I FOUND YOU BASTARD!

Back to the floor panel. Great design, floor plug - but a flip top would have killed you? Four FULL revolutions WITH a tool was your best idea? Why build it at all, right?

Cap off! Being separate, it will now wait for its chance to slide under something immovable, to be lost forever.

And the cord. The cord has that stupid clasp that supposed to let you wind off just how much you need, except I keep guessing wrong and having to let out more and then re-clip it.

Apple? This was a fine idea, but you want me to wind up the cord, give me larger fold-out prongs, 'kay?

What the actual F#*$??

Ah yes.

ONE. Write it down. Losing the idea... there was going to be a herald or something... A moment of panic while the hordes bear down on them. Lots of ways that could go... no telling what kind of torment could ensue...

I Love it.

That's one thing down. One out of three...four.

No. I did the meds. And that was five, I think - so it really is four.

THIS IS HOW THINGS GO TO SH!T EVERY GODDAMNED TIME... FIVE MINUTES TO UNWIND A FRICKING CORD AND I FORGET WHO I AM...

I just...

F$*%!!!

E's down and queuing up the DVR... waiting for me... patiently?

Not...especially.

And...the girl is back downstairs. She never does this, but she has a bug bite and it's driven her into an itching/self-pitying frenzy. E leaps on the grenade and it's back to wracking my brain...

There was glaciers. That much I remember. I can do that easily enough.

But F$*# if I can remember three.

Or five.

Or however the F#*k many of them there were.

F#*k!!!

Tuesday, April 02, 2013

Now I am Become Hipster

When you're looking to make a statement, picking a venue stocked with the self absorbed is probably unwise.

But, y'know - screw it.

Took a long while to get to this point, and the roots go back farther than I realized.

I guess it started with an article on Wired. Something about that Temple bag stuck in my mind - but good. Now granted, I was never going to blow $500 on a stinking bag, but this was all about the idea.

I mean, I work in design. The ass-end, boring side of it to be sure. But there's this idea that if I'm supposed to be making things that are awesome, I should try to surround myself with some of that.

The Temple bag was all the poser crap writ large. You see, they build them out of surplus WWII duffel bags and (if you believe their video) are assembled by male models using a vintage sewing machine in some old loft apartment.

Y'know, because - bullshit.

But If I'm honest, that's where this idea got started. A cool bag, full of technical toys that will be my personal Bat Utility Belt.

Y'know, because I fight crime.

Anyway, ages ago, I got a license to shop on ThinkGeek.com and I stuck a toe in the water. Got me a Bag of Holding because it's a bag I can relate to on several levels. Next birthday, I bought a bluetooth keyboard for my phone, got the BookBook iPhone case from TwelveSouth and had a few trial runs at a local diner.

But it was not the full blown experience. The keyboard fit in my coat pocket, so I really didn't need to bring the bag. And there is a sad truth about wireless keyboard accessories - the sweet spot for use is a lot smaller than you might think.

For a mobile device, most times it's enough to type a quick reply with your thumbs. Unless you plan to write an epic email, getting out the bluetooth keyboard, syncing it up (and dealing the with odd stuck key moment) is a lot of hassle to support the edge case use.

Plus typing on a portable keyboard to support a iPhone sized screen looks (and feels) a bit dorky. I did manage to write some worthy emails to family, but my idealized blogging on my phone was sabotaged by Blogger's crap mobile UI.  I can only write in HTML? and your autosave always tells me my tags aren't closed? F- you Google.

So meh. A failed attempt. But I was never going to get there - I'm not buying a pen sized document scanner anyway. Especially when all the reviews talk about how its construction is so lousy.

But I got an iPad mini and its BookBook case and tried again. A worthy combination, and to any iPad types out there, I totally recommend the iPad BookBook. Solid case, stylish and very functional. If it had a spot to store earbuds it would be even better, but I can deal.

Still not the full blown jet-setting UX poser look I was gunning for.

But now the new gig wants me to work on a Mac, so I've bought the Mac. And it fits in the Bag of Holding, nicely - thank you.

I'm between jobs for today at least, and so I'm in a - gasp - Starbucks, making a full on poser out of myself. I'm re-connecting with Sensei and the Artist, 'cos they're awesome, and nothing to do but...

Whip out the laptop. I think I'll blog a bit - like you do.

A latte? What?

Don't mind if I do.

I might even push up my shades, slap some earbuds in and spool up the iPhone.

"Play Song - 'South Tacoma Way.'"

And there it is.

Blogging in a cafe on my laptop. The caffeine's wailing on my synapses and Neko's crushing it
It's the twilight of our old home...
Yeah, I'm shaved and mostly cleaned up, but I'm about as hip as I am capable of becoming. A look around confirms that nobody else around me knows I'm alive.

I'm part of the ambient cafe vibe.

But if the me of two years ago walked in right now he'd take one look at the now me and think.

I hate you so very very much. How are you sitting here on a weekday? Why don't you get a job?

And they'd have a point, and in a day or so - I will get a job, and go back to being responsible. I'll put all the iToys back in the bag and resume being a person who does useful things and could give a flying F*$% about what vibe they're throwing off.

A month ago I was a desperate wreck of a man.
But today, I get to while away some time in a cafe like some pain in the ass youngster.
We've memories for matinees
And the tears come warm and heavy
And the cross streets bear your name.
Fuckin' brilliant.

I so love today.

Tuesday, November 08, 2011

Ya! ya! Yawm!

Dune project: done.


Tell me Muad' Dib, how you say "dorkwad" on your homeworld?

Monday, October 03, 2011

The Dune Project

Not quite sure how the whole thing started, but awhile ago I got the idea in my head to make a version of the out-of-print boardgame Dune.

Contributing factors would be:
  • Secondhand versions of Dune cost north of $100 
  • I loved the book. -I liked the later work of these game designers (particularly Cosmic Encounter, which shares a lot of game elements) 
  • I like board games with good bits 
  • The internet exists 
Of the items on that list, the last one is key. Any fool could have the idle thought that Hey, I could make my own… but you’d need to know enough about the game to want to even try. You need motivation. Enter this guy:


Seem like a game worth putting in a little effort for? Incidentally, a video like this kinda gives you the idea of the online community that exists for this game.

Next, you’d need access to the rules and a list of all the components to make a complete game.

No interwebs? Good luck.

Fortunately (or unfortunately) there happened to be an online community that was willing to make PDFs of pretty much everything you might want.

The bullet list was:
  • Two decks of full-size cards (1 with 33 cards, the other with 21) 
  • One deck of half-size cards (30 cards) 
  • 120 stackable tokens 
  • A large gameboard with a map
  • A rulebook 
  • Game wheels (two pieces of cardstock pinned together to make something akin to a decoder wheel)
Any one of those items might make a sane person turn back.

How do you make a deck of cards? What do you make them out of? What's the best way to get them printed?

But the online community is there with all sorts of advice, how to's and examples of successfully finished projects.

I managed to cobble together PDFs of all the pieces I wanted save for the map. An Italian guy named Neri had posted a really great design, but it was riddled with mistakes (English was not his first language). So I pulled his map into Photoshop and cleaned up the map the way I wanted it.


Wasn’t entirely satisfied with my efforts (the board surrounding the Map looks like what it was – a late design add) but it was an improvement.

I bought tokens from Fantasy Flight, printed the board and cards at FedExKinkos, spent a truly ridiculous amount of time trimming cards on a paper cutter and presto – I have my own Dune game.

Took forever to finally get a chance to play it. Getting 5 like minded gamers into a room isn’t easy when half of them have small children – but a run through was done and I thought the game showed its worth.

So then I’m going through the interwebs looking for clearer answers to some of the rules questions we came up with and I see a post by this Russian guy.

He’s put together a set of files for print that are just incredible… I mean, I think anyone who started a project like this will think, one day, I’ll get some free time and put together an awesome set of components and post them online and…

Ilya? The Russian Guy? He’s done that, and I think the rest of the Dune home brew crowd feels like Wile E Coyote watching the Road Runner vanish into a vapor trail.

Just look at this stuff

He made all the artwork:



And there are people linking to sites like artscow.com that will print playing cards for you. Hell, uploading preformatted sets of images so you just have to click to buy them. Then they link to shops in Germany where you can buy wooden tokens in bulk.

Want to know how to make a folding board? How about a video of a magnetic, modular game board? The geek out never stops!!

I mean, cripes, the original game didn't look that good:


Ye Gods...

Ilya even formatted a rulebook that was written by this Brit in Manchester who has seriously cleaned up the copy and made some mechanical improvements.

It's like looking for a bit of gum and being gifted a seven-course gourmet meal.

After the first run through of the game I was thinking of searching out a clearer version of the rulebook, now I'm thinking I need to print up some new components.

Not like I need to keep up with the Joneses, but c'mon... a board gamer sees that much concentrated awesomeness and does nothing...?

I think not.

Friday, September 30, 2011

Big Pair of Brass Ones


It’s 7:20 on a weekend.

I’m coming home with the kids – about to reach the house door when I hear it:  
Bddddt! Bddddt! Bddddt! Bddddt!

I’m like WTF is that?

I’m standing in the garage, the kids are coming up behind me and the noise is pulsing, but constant. Sounds like a machine that’s straining to do something and failing.

Bddddt! Bddddt! Bddddt! Bddddt!

I open the door thinking something’s wrong with the dishwasher, ’s the beater arm stuck?

No. Dishwasher’s off. Sounds coming from the right and-

-there’s water on the hall floor, right in front of the bathroom. Water flowing out of the bathroom.

Damn.

I scramble into the bathroom door and see a geyser of water shooting out of where the faucet’s cold water shutoff used to be. It’s spraying easily 7 feet into the air and the walls have water stains on them. There’s standing water on the bathroom’s tile floor and on my hardwood floor in the hallway.

Damn. Damn. Damn.

I fling open the vanity doors under the sink and go for the shutoff valves. I’m congratulating myself on having the valves installed a year ago (for reasons beyond my understanding all three bathrooms had no local shutoffs – I could not see that as a good thing long term, so we paid a plumber to put in shutoffs when he put in our new faucets).

Two cranks on the cold side’s valve and the water stops. We go from a thundering geyser to silence punctuated by steady dripping sounds.

Dripping down.

I go down the basement stairs and see water dripping through the ceiling tiles. The basement ceiling seems to be snakebit when it comes to water.  Remembering how I’d managed to spray water over them two years ago -  I’m like: here we go again.

I walk across the sponge-like carpeting and go into the finished half of the basement. Water is dripping through the light fixture nearest me and the floor is totally soaked.

I tell the kids to stay upstairs and I begin flinging the sodden mass of stuffed animals and pillows into the uncarpeted side of the basement.

Damn.

The downstairs ceiling is not merely wet, it’s soaked. The ceiling fixture is now an inverted fountain, and our laundry pile is now a sponge. I call E and ask her to come home with a shop vac (wondering for the thousandth time why I got rid of our shop vac when we moved), we’re going to have a long weekend cleaning this mess up.

As an afterthought, I call my insurance company. Their WATS line tells me they are closed, but I can report my claim online. I do. An hour later, they call me to tell me they are sending a water remediation expert to my house – that night.

I’m like Uh, okay. An hour later I have a guy in my house evaluating what I need to have done, and his team shows up with serious gear an go to town.  The remediation guy tells me they’re going to set up fans and dehumidifiers in my house. “It’s going to be loud. For days. It will also raise the temperature in your house by about 15 degrees. For days.”

Uh, okay.

The guy is right on both counts, we have big machines blaring in our house for four days. It's 80 degrees in the house and that's with windows wide open to pull in 60 degree air from the outside.

Bleah.

But enough of the what, let's cut to the why. The cold water shut off on my bathroom tap shot failed.

See it here in the picture?


Yeah, that handle is supposed to be attached. As in here:

Inside the cold water handle, still held in by its screw, are the valve and the valve nut. So the handle shot off because the valve somehow allowed water to get past it and propel it up and off the supply pipe.

I'm thinking I have two more faucets just like this. Was this just one bum faucet? or a failed design?

My faucet is the American Standard Cadet Centerset Faucet. 8125 Series or 8124 Series (no way to tell at this point and the documentation is identical for both). I bought three of these at Home Depot about a year ago.

I get my paperwork and head over to a local plumber. He's set up a storefront so you can walk in and get expert advice and good parts.

I plunk down my documentation and the part and ask him what the heck?

The plumber says "Well, if you buy a Ford anywhere - its a Ford. But if you buy American Standard, it matters where you get it from. These box stores lean on their suppliers to lower their prices - and the suppliers like American Standard are shipping a lower cost version that isn't as good as their regular stuff."

I checked the American Standard website, looks like my faucet (American Standard Cadet Centerset Faucet. 8125 Series or 8124 Series) is only available through Home Depot. According to the plumber, they are total garbage.

He's like, "I'm betting there are going to be an awful lot of lawsuits when these things start failing all over the place. You should save your parts and give them to your insurer. They might be able to get your money back through subrogation."

I'm half listening, half thinking about the two ticking time bombs I left sitting in my upstairs bathrooms.

The plumber digs into his parts cabinet and pulls out a valve with a brass valve nut. "That's the part you need. The valve is basic, but the valve nut is the key piece. Brass isn't always brass. You'll see this bright yellow stuff they call brass but it's just a piece of crap that's waiting to fail on you."

I blow $78 on four valves and four valve nuts, about what I paid for two of my three (useless) American Standard faucets from Home Depot. Swapping them out turns out to be easy enough, but (oh hilarity!) one of the old valve nuts cracks in half while I'm taking it out. Could have had a second flood in my house.

Nice.

So here's the offending object:


On the left is the valve and valve nut in the American Standard Cadet Centerset Faucet (available from Home Depot). As you can see, the valve nut it is coated with calcium carbonate, which means the nut's been getting wet a lot. When the water evaporates, the calcium carbonate remains and crusts things up.

More important than that is the large crack you see in the middle of the valve nut.


For comparison, here's the valve and valve nut I bought to replace it:

New valve nut = good. Old valve nut = total piece of crap.

I don't have a engineering degree or industrial forensic tools, but my kitchen scale gave me a big indicator of how useless the original valve nut was.

Here's the original nut American Standard / Home Depot supplied:


It weighs 1 eighth of an ounce.

The new one I got from the plumber?
It weighs three times as much.

I'm insured, and we'll be re-doing the bathroom, but I'm out my $500 deductible and the major hassle of losing a bathroom for a few weeks while this all gets sorted.

Now, I know I was buying a faucet based on price, but I went with a known brand at a big store.

Which just goes to show you how utterly meaningless those pieces of information are when it comes to quality. Consumer reports doesn't do faucets (there are just too many models) and even if they did, the model numbers would turn over and rapidly make them obsolete.

I have to say I look at Home Depot merchandise very differently now. All the other parts on those faucets were none too solid - and when I see a boxed up toilet that says "Contains everything you need, no tools needed!" right below a giant "Sale!" sign - I'm thinking and what did you turkeys cheap out on to make this price, eh?

Like dad always said: Sometimes the cheapest is the most expensive.