Monday, April 22, 2013

These Are a Few of My Favorite Things

I read.  A lot.  I do currently, and I have done.  I used to read fiction, to be sure, but I am currently a ravenous reader of non-fiction.  I collaborate with a lot of other people that love to read, too.  I ask for recommendations, and I get asked fairly frequently about recommendations I would give.  I thought it would be useful to collect them all in one place.

Note, I couldn't possibly come up with a list of books that I've read.  There have been too many, and my memory is shot by years of looking stuff up online.

No, these are the books I remember.  The ones that influenced me in some material way.  I'm going to categorize them, but not put them in any particular order.  I'm brainstorming here, so if you know me and know I'm missing one, you're right.

Programming Books

Pop Psychology

Monday, April 15, 2013

Overheard in the Office

Amusing quotes overheard in the workplace.  In all cases, the speaker was trying to say one thing when they meant another.  In all cases, the resulting turn of phrase is maybe even more awesome than the original would have been in the context.
  • At the epic center (not epicenter)
  • When push comes to shovel (not shove)
  • There's another caviar on the first point (not caveat)
Just goes to show how malleable and cool language can be.

Tuesday, April 9, 2013

Microsoft Marketing's Secret Naming Document Leaked

I was doing some research with insiders deep inside Microsoft after a chalk-talk session about Sharepoint and related products.  Someone I was corresponding with accidentally sent me the following scanned meeting notes as an attachment.  I'm sure it wasn't meant for me, but it does offer a window into the mind of the Marketing Department at Microsoft:

Monday, April 8, 2013

Fixing My Custom TFS 2010 Activities to Run on TFS 2012

Wow, what a technologist.  A post or two a month about everything except technology.  Well today, I'm going to document one of my most recent struggles in the hope that someone will benefit.

Started off getting this error.

TF215097: An error occurred while initializing a build for build definition \<My Project Build Name> The values provided for the root activity's arguments did not satisfy the root activity's requirements:'DynamicActivity': Expected an input parameter value of type 'Microsoft.TeamFoundation.Build.Workflow.Activities.BuildSettings' for parameter named 'BuildSettings'.'DynamicActivity': Expected an input parameter value of type 'Microsoft.TeamFoundation.Build.Workflow.Activities.TestSpecList' for parameter named 'TestSpecs'.Parameter name: rootArgumentValues

Bizarre.  So what it comes down to is that 2012 does not work with artifacts either built against or referencing a component from 2010.  A 2012 build controller won't run custom build activities (which I had) that were compiled against the TFS 2010 binaries.  Further, the custom XAML files were polluted by the workflow designer, said to be a bug in the designer, but that smells fishy to me.

Here's the steps I took.

  1. I rebuilt my custom activities with all the references pointing at the new 2012 TFS .dlls.  
  2. I overwrote the old custom activity .dlls in the $\BuildProcessTemplates\CustomActivities directory and checked them in.
  3. After that, my builds still didn't work, failing with essentially the same error, so I used the XAMLCleaner code I found here to scrub my custom build workflow templates (.XAML files).
  4. Running anything and causing one of these version issues requires the build controller to be reset.  Use the TFS admin console to do so.
  5. My *.CI builds all use the DefaultTemplate.xaml.  The upgrade gave me a DefaultTemplate.11.1.xaml.  I deleted the DefaultTemplate.xaml locally, renamed the DefaultTemplate.11.1.xaml to DefaultTemplate.xaml, and checked it in.  .CI builds ran fine.
  6. Once I had made all these changes, I checked everything in and ran my custom web and default release builds, and they worked.

Hope this can help someone.  I love TFS ALM, but sometimes the stuff is daunting.  The two links above really helped me out.

Tuesday, April 2, 2013

The Boredom Factor

I mess around on my cell phone.  A lot.  I’ve never been diagnosed with any kind of concentration disorder (ADD, ADHD or the like), but I always feel at least a bit distracted, and as a result, I often fidget by checking something on my phone.

So it’s not a bit surprising that when I’m in a meeting that has become tedious, or when I’m not directly involved, I mess around with my phone.  Sometimes I check the weather, or search for something that has just come into my mind tangentially related to the discussion.  And I don’t necessarily think this is a bad thing.

Other people have their own meeting coping mechanisms for dealing with tedium.  They daydream, twirl their pens, doodle, think about going home, think about next tasks or a meeting they have to prepare for themselves.  I think before I had something so easy to distract me, I did all things during meetings.

I actually used to get so bored in meetings I defined a metric that I call The Boredom Factor.  It’s defined as 
Where t = time elapsed before checking the clock for the first time and T is the total scheduled meeting time.

The closer the number is to 100, the more boring the meeting.  Say, for example, I look at my watch 10 minutes into an hour-long meeting (1-10/60)*100 = 83.  Pretty boring.  Contrast to looking at my watch 25 minutes into a half hour meeting (1-25/30)*100 = 17.  Not really that boring.

That’s right, I was so bored I invented a boredom metric.

So first things first.  I actually think I pay more attention with my phone out and on than if I were daydreaming.  With the phone taking up the “bored” part of my mind, it’s keeping me acutely there and in the room.  I’m not devoting 100% of my attention to the meeting topic, but I’m no longer ignoring it outright by daydreaming.  50% there is still better than 0%.  But still not the same as involving me and getting 100% of my time.  Oftentimes the distraction makes me feel more energetic and willing to contribute.

Realistically and practically, however, if I’m not 100% engaged in the discussion, then I’m being pulled out of it.

That is, if I’m in a meeting you’re running, and I’m on my phone, you can criticize me for being rude all you want, but the truth is that you are not engaging everyone in the room fully.  Consider turning the critical eye inward to see what might be keeping people from being engaged.  One of the following be the problem:
  • The meeting may not be focused enough – too many topics that not everyone is interested in. Are you just filling time?
  • The meeting has too many people – you may not need my participation the whole time. Could this meeting have been several quick short hallway conversations?
  • The meeting time slot is too long – you may be just filling up time when you could have made the whole process tighter. Are people showing up late? Are you prolonging the meeting because you have another stacked up afterwards and don't want to go back to your desk.
  • You didn't come with an agenda or a set of goals – I may not know where you’re trying to get to, so I’m biding my time until I hear that you’re finally on a track. Can you prepare better next time? 
  • People may be exhausted from too many meetings – meeting fatigue is real, and eventually people need a break. Too many mid-level managers do nothing but go to meetings all day every day. Are you contributing or creating that kind of culture?
Finally, I will leave you with the idea that respect is similar to attention, in that you need to earn it from folks.  If you are not getting mine, you should consider the possibility that you are not earning it. 

Monday, April 1, 2013

Ancient Developer Vernacular - "Bizzling with the Yuk-Yuks"

Back in the day – “ee when I were a lad” – and just a leaf-level developer node in a very large unnamed insurance company, there was a palpable dichotomy between those that were at the bottom working as individual contributors and the seventeen layers of management between us and the CEO.  This idea that we were “just” worker bees and that the decisions got made somewhere up in the aether.  That we were not privy to the forces that shaped those decisions, and certainly had no influence.

I don’t know if that happens everywhere.  I hear stories of the camaraderie of the factory floor vs. the management structure.  Or stories of the labor union representatives and the company management representatives.  But all anecdotal. 

We had a term back then for what we assumed that the management must be doing when going about their daily deeds: bizzling (or v. to bizzle).  Kind of a cross between “buzzing” and “business”. 

It was always used as a pejorative or cynical term.  This idea that a bunch of mid-level management (or the Kelly-Jelly, named so by a colleague after a particularly malleable individual) did mostly nothing except buzz around, like bees, bumping into one another and essentially cancelling out most of the net effects of the motion.  This jelly-like layer existed to protect the line-workers who needed to get stuff done, and the upper level of management where the serious decisions were made.  They were a layer of management where you could rotate people freely with almost no impact to the work happening beneath them.  When the time came to have a layoff, you had a robust middle layer to pick from.  

The people at the top were called the Yuk-yuks.  I don’t recall if that was because they were laughing all the way to the bank, or it was a bastardization of “High-falutin’ Muckity-Muks.”  Or maybe both.  Lost to the sands of time. 

Anyway, for most of our leaf-node days, we wouldn't see these decision makers.  The Yuk-yuks were respected, contrary to what you might think based on the silly name.  But when you got invited to be in the room with the decision makers, you could immediately see why they were not in the jelly.  They made decisions.  They didn't defer.  The buck stopped at them.  They came prepared to meetings to make things happen, and they did.  Often based on real metrics and evidence (another difference between them and the gelatinous mass between us and them).

These were not the Pointy-Haired Bosses of Dilbert fame.  These were not the clueless CEOs from that comic either.  These Yuk-yuks were people who you could reasonably set up as role models.  Pity we didn't get to work more directly with them.  To keep their effectiveness, they typically delegated all work to a team of mid-level managers, who picked up the balls and ran into each other instead of toward the corporate goal lines.

Maybe that was part of their strategy.

Whenever one of our number was invited to a meeting, that member was said to be “Off bizzling with the Yuk-yuks.”  More often than not, the person that got to go was admired for being invited to see the inner workings of the Yuk-yuk echelon. 

Of course, that was before I learned more about effective management, and I now understand how these layers could naturally stratify.  I also recognize the whole us-vs.-them as also culturally destructive.   I don’t think like that anymore.  But I had to share these ancient shibboleths.  Those from my tribe may recall them.