My big project at work is to take an information-visualization tool that's about five years old now and reimplement it so that it's more useful and extensible. The original version is still the best in the world at some of the things it does, which is frankly rather amazing. It's prototype research code that grew a bit and then escaped into the wild. For those of you who have written such things, yes, it's that bad. For those of you who haven't, that means that it's undocumented, poorly structured, poorly written, full of obscure logical errors, and contains about 6 different hard-coded limits on what it can do. None of those should be there at all.
We have a pool of funding internal to the labs that's used for LDRD, Lab-Directed Research and Development. We submit grant proposals to this just like one would to NSF or DOE or whomever, with the exception that the submission process is much simpler and shorter than the big ones that involve Washington. The people who administer LDRD want to use this tool to look at the collection of projects and proposals they're considering, pull out relationships between subject area, technology, and collaborators, and see those as a nice pretty graph. The tool can do most of that already. They also want a veritable kitchen sink of other stuff. We sat down and talked about this at some length in July. Three of us from the graphics group convinced the LDRD people that it would in fact be simpler in the long run to rewrite the tool entirely inside VTK for modularity and extensibility than to try to maintain the current mess. This has the major advantage that we'll also be able to release it as open source. They agreed. They came up with a pool of money, enough to pay for 70% of my time, and said "Go for it. We want it by January."
Now, this is the kind of situation I like. I have a well-defined project, I'm paid for, and the requirements aren't going to change much. I've been busy. As of Thursday I'd committed about 3,000 lines of code comprising the components at the heart of the system. That's written, debugged, tested, re-tested, and documented (plus a further 30 pages of design notes in my notebook). It's a lot of effort.
Thursday afternoon I see some email float across the wire. My boss and the guy who originally wrote this software are discussing the fact that some parts of the system are patented. Evidently they misunderstood how this was going to be handled, because all of a sudden I get panicked email telling me that I'm not going to be able to do this inside VTK after all and will have to pull it all out and rewrite it to not depend on anything.
I was not pleased.
I called B, the original author, and had a conversation that went like this:
B: Hello, how are you?
B: Yeah, well, so am I. I thought this had been settled.
Me: I need to know exactly what parts of this system are patented. I don't want to start over from scratch.
B: Well, everything.
Me: That answer doesn't help me. Which algorithms, specifically? The UI? The graph layout code? The landscape generator?
B: That gets into interpreting the patent language. We can't do that. We're not lawyers.
Me: Okay, let me give you a concrete example. Earlier this afternoon I committed a filter to turn an image into a height field. There is absolutely nothing patentable about that. Do I have to pull that back out of the repository?
B: Well, no, that bit's okay.
Me: If this isn't an answer that you and Boss are qualified to provide, then maybe it's time for a few phone calls to Legal. I need this information.
B: Yeah, well, I'll see what I can do.
So here I am in limbo. Supposedly, people want a library version of this code that doesn't depend on anything, so I'm going through with writing it anyway. But still... come on, people. This is a very big project. I am the only person who's working on it, and it will stretch me to have it delivered by their deadline. Miscommunications that lead to me having to tear out two or three weeks worth of code are unacceptable.
After that I decided that I wasn't going to write any more code for the day and turned instead to some administrative stuff. One minor task, I thought, would be to fix the documentation pages for our internal repository to include the labs' logo. Like most large corporations, Sandia is picky about how the logo looks and how it's used. There is a whole set of web pages about this. They specify precise values for its color - a Pantone swatch and a CMYK value. They want it to look exactly the same no matter where it's used.
There's just one problem. The colors are wrong.
The logo is supposed to be a medium blue. The CMYK values on the web pages are a bright greenish teal. It turns out that the CMYK values are for print, not on-screen images, but nowhere is there such a disclaimer. Evidently when they put the pages up on the web - including images for people to download and use that were supposedly correct! - the graphic design people assumed that noone would ever use them for anything but print.
I wrote to them and explained what was going on. They said they'd get back to me. Late in the afternoon, the first person I contacted forwards me a chain of emails that had been bounced around internally. The answer I had looked for was in there:
"Your customer is dealing with INDEX colors for the web and will not translate properly to CMYK or Pantone. However his color choice is the closest value to the correct color."
Fine. That's what I needed. But what really got on my nerves was the header attached to my message when it was first forwarded:
> <<< File: color-comparison.png >>>
> Does this guy know what he's talking about?
Is it me, or is that not an especially polite way to introduce me? And for heaven's sake, would it be so hard to be even a little bit considerate when forwarding this stuff back to me? Maybe even give me the benefit of the doubt? Yes, I do know what I'm talking about in color spaces, and I could explain in mind-numbing detail if you really wanted to know.
So I wrote back to them asking politely if perhaps they could include images on the web page that are suitable for use on the web, or at least amend the text to mention that the colors there are for print and won't look right on screen. Their reply? "We will consider your suggestions the next time we update the pages."
Gee, thanks. I guess I'll get back to you sometime next year.
The rest of the afternoon was pretty stressful as well. It finally got better when I got together with willowisp, echoweaver, Studentbane, dnabre, and lowapproach for dinner at Tucano's. That was fun. After that, the best thing I could think of was going home to crash.
That was my birthday. I want a raincheck. I think I'm going to reschedule all but those last few hours.