GeekSpeak comments edit

I participate in agile projects where we have a daily standup meeting to discuss high-level task status and roadblocks. I’ve noticed that many times I find there is a general feel that if the manager is out sick or can’t otherwise make the daily standup that the team feels the standup is inherently canceled. When you run past their desks to find out where the missing members are to round them up, they’re astonished: “What? We’re still having a standup?”

Even if the manager is sick, even if one of the team members is out, yes, we are still having the standup. Why am I being so jerky about it? It’s just a standup, right?

Jason Yip wrote about patterns of daily standup meetings to address the more holistic concerns about what should and shouldn’t happen at a standup, so I won’t re-hash that. Go read that article - I’ll wait.

Good. Now let me tell you what the standup means to me and why I believe you shouldn’t skip the standup.

  1. The standup is for the team, not the manager. It’s great when the manager is there. And, yes, I know that in some projects you may not have a manager - it may be a peer scrummaster or some other leader. Regardless, the meeting isn’t for that leader - it’s for the team. You’re not reporting your status to the manager, you’re reporting to the team.
  2. The standup is a vestigial sign of discipline. In any team, it’s important to know that your peers can meet commitments and that you can trust them to have your back. If you can’t trust your team to make a simple standup, how can you trust that they’re on top of any of the other tasks they’re working on?

Now, it may be that the standup is at a bad time of day or that maybe it should be an every-other-day standup because there’s not enough developing to warrant daily updates. It may be that there are too many people (or too many uninvolved people). There are a lot of potential problems with a standup’s format, but those can be addressed - so address them. Again, the Yip article talks about some of these problems and potential solutions.

Regardless, it is not OK to skip the standup.

gaming, xbox comments edit

This weekend [finally] brought an end to my latest struggles with Xbox Live digital rights management. I didn’t get a call from Xbox Support, which I was told I would get, but I did notice that several folks on the Xbox Live forums, also in my situation, suddenly had their issues resolved without any notification, so I figured I’d give it a shot, too.

When Xbox Support has fixed you up, you’ll be able to go into the Xbox Marketplace section of the dashboard, go to “Account Management,” view your Download History, and select “Download Again” for each of the items you purchased. Doing that will automatically re-license the downloadable content to the console so the other gamers in your household can play it without you having to be logged in and you should be able to play it without having to sign into Xbox Live. You don’t need to delete the content first - just select “Download Again” and the license for the content will transfer.

Took about 15 minutes to go through my history and download everything a second time, but after that, I was totally in business again. And, hey, it only took, what - four months?

dotnet, vs comments edit

I’m in the process of updating a bunch of old Visual Studio 2003 projects and solutions to, well, something a little newer. I found this odd behavior issue where there were some references that were marked to as “Copy Local” and that would work fine in a Visual Studio build, but when run from MSBuild, the references weren’t getting copied correctly, which would cause unit tests to fail and such because things weren’t where they should be.

A little Googling led me to this forum post which basically boils down to:

Go through your projects in a text editor and look for references with <Private> tags in them. Like <Private>True</Private> or <Private>False</Private>. “Private” is a synonym for “Copy Local.” Somewhere in the actions MSBuild is taking to locate dependencies, it’s finding your dependency somewhere else and deciding not to copy it.

What I ended up donig is going through each converted .csproj file and removing the <Private> tags manually. Rebuild, and everything works in both Visual Studio and MSBuild. Once you’ve got that working, you can go back in and update things to where you think they need to be, and when things start failing, you’ll know exactly where the problem is.

downloads, build, dotnet comments edit

Anymore, if you want to generate documentation, you’re using Sandcastle along with, most likely, some community-generated wrapper for it so you’re not manually executing the bajillion steps Sandcastle requires to get things done. (Wow, that didn’t sound bitter at all.) I use Sandcastle Help File Builder for several projects and like it a lot.

When Sandcastle generates its reflection information (so it can properly resolve links in your docs), you need to tell it where it can find third-party dependencies so it can generate the information it needs. All of this has to happen on the command line (no, there’s not currently a config file option for this), which means when your project gets to be of a significant enough size, you start running into command line length limitations. Sandcastle Help File Builder addresses this by copying all of your dependencies locally into a temporary folder and passing a single dependency location (that folder) to Sandcastle.

That works great… until you run into an issue where you inadvertently rely on multiple versions of a single dependency.

For example - say you have a custom NAnt task project with a compile-time dependency on log4net and NAnt 0.85.2344.0. NAnt 0.85.2344.0 has a reference to log4net What that means is, unfortunately, that Sandcastle needs access to both versions of the log4net.dll. What it further means is that when Sandcastle Help File Builder tries to copy both versions locally to help you with the dependency thing, there can be only one and Sandcastle dies a miserable death telling you that it can’t find the reference.

How do you resolve that?

Luckily, Sandcastle Help File Builder has a plugin model that allows you to swap in your own behavior for various stages of execution, and that’s what I’ve done.

Since Sandcastle needs the assembly metadata and it doesn’t matter what the physical filename is, I’ve replaced the existing dependency copy routine so that it still copies all of your specified dependencies but it copies them with GUID filenames - so you can have more than one version of a dependency without having a filename clash. Sandcastle resolves the dependencies correctly (it literally just iterates through all of the copied dependencies and caches the metadata) and docs get generated. Peace on Earth is restored.

The plugin copies your dependencies with GUID

To use it, just drop it in the PlugIns folder in your Sandcastle Help File Builder installation location. More on using plugins with Sandcastle Help File Builder is included in the SHFB documentation. (Basically, put it in the folder and SHFB will pick it up automatically.)

Grab the compiled version, the source (with unit tests), or both. Free, as usual.

[Download Paraesthesia.SandcastleHelpFileBuilder.Plugin Compiled]

[Download Paraesthesia.SandcastleHelpFileBuilder.Plugin Source]

Version History: First release.

General Ramblings comments edit

Sunday Jenn, I, and our friends Angela and Keaka gathered up in the Wagon Queen Family Truckster and headed down to Lincoln City, OR. Every year they place a bunch of glass floats up and down the beach, and Angela’s totally into floats, so we went to help her find one.

After a couple of hours walking around on the beach, searching with the other treasure hunters, we came up empty-handed. I was tempted to run to a local shop and just buy a float and then hide it in the sand somewhere to “find,” but I couldn’t sneak away. Somehow I think Angela would have known anyway and probably given me a stern talking-to.

Next time I think I want to blow my own glass float, though it costs like $65 to do it. I think it’d be a pretty neat experience and you’d get to take something cool home. I’ve never blown glass before. I did get myself some Mo’s clam chowder, which is always worth the trip. And now, back to work!