kris

Ninja'd feature

Blog

"Have you ever ninja'd a feature into a product you were working on?"

I looked at Kris blankly after he asked me this question at dinner tonight.

"Have you ever put in a feature into your code that wasn't in the spec[ification], but that you wanted in?" he reasked.

Ah.

I smiled, and immediately began thinking of the various features I had, indeed, put in various programs I've worked on, features that weren't in the specification, but, darn it, they should have been. After looking at him with a huge grin on my face for a show while, with his wondering exactly which feature I was going to reveal first, I finally said, "Sure! A D B create."

He laughed.

When I was working for PDI, now PDI/Dreamworks, I wrote a program called adb_create. The adb part stands for "Animation DataBase," and was PDI's proprietary format for specifying animation data. I worked as a Lighting Technical Director, which meant I was responsible for dealing with the technical issues of the lighting department. Well, I and the other TDs who worked with me.

As the Lead TD, I also worked with the surfacing department, who created texture (and other types of surfacing) maps for the models for various computer generated films (in particular: Antz and Shrek).

One of the incredibly (more so that it should be) difficult tasks in the surfacing department was generating correctly sized base image files that would be wrapped onto the models. The programs that were in place were old, unmaintained, difficult to use, and quite error prone. Since the task was so difficult, I set out to write a program that WOULD actually run correctly, generating accurate files for surfacing artists to start with for surfacing models.

Now, at this moment, I need to mention that PDI had an R & D department. This department had "real" programmers: the women and men who worked with vertices and deep files and ray tracers and motion interfaces and oh, the whole bunch of complicated software, written in C because of a particularly bad rewrite years before in C++ that made everyone in the department decide object-oriented programming was evil, when in reality, just the implementation was evil.

Beside the point. The point was that R & D had their CVS repository and their install directory that no one outside R & D was allowed to commit to or deploy in.

The rest of the programmers in the company were "light" programmers, using whatever tools we had handy, existing or written on the fly, to get the job done. We weren't interested in necessarily the best solution, but rather the one that worked now with least amount of effort, because the scene, shot, feature, effect was due, and we needed to get it done. Now. No, yesterday.

Well, adb_create actually fit into the R & D tools. It was named as those tools were (prefixed with adb_). It was written in C as those tools were. It used the libraries that those tools used (you know, the ones R & D wrote and supported).

So, I deployed adb_create into the R & D directory, before integrating it into the surfacing workflow.

And received all kinds of uproar in return.

The worst of it was from my roommate, Dan Wexler. Dan was the lead developer for the company's renderer. He was The Man in the department. If he fell off a cliff, well, they had key-man insurance on Dan.

Dan had heard about how crappy the various surfacing tools were. Actually, he had listened to complaints from the surfacers for years, on how bad the tools were for them. Modelling had its own R & D developer. Lighting had several R & D developers. Heck, so did the animation department. But not the surfacing department, and, boy were their tools sucky.

So, Dan came up with this wonderful (or so I was told) plan on how to fix the surfacing tools. It involved several rewrites of various libraries, integration with a few existing tools, and a whole lot of effort in the R & D department. So much effort, it turns out, that the plan was put on hold until these other, more important, features could be completed.

On hold.

For years.

Along I came, and, tasked with fixing lighting tools from the production point of view, I fixed the problem. I wrote the tool that surfacing needed. I gave them adb_create.

By doing so, however, surfacing stopped complaining.

And by stopping the complaining, I thwarted Dan in his desire to see his new plan implemented.

And we entered into a long, downward spiral of arguments.

He wanted to implement his plan, but he needed surfacing to complain loud enough for those who set R & D's priorities to schedule time for the plan to be implemented. With adb_create, they stopped complaining, and his great grand plan would never be implemented.

I countered with the fact that I needed these tools to get the job done with the current workflow. I don't care about the great, grand plan, I needed to get those models surfaced and in the lighting shots now, not next year. Without adb_create, the surfacers had to work ten times as hard (well, ten times as long, and I'm not exaggerating on that number) to finish their work. I didn't care about next year, I needed results now.

It wasn't until Richard Chang, one of PDI's cofounders, stepped into the arguments and said, yes, it should be deployed to the R & D sacred directory, that the arguments finally ended.

I left PDI soon after that fiasco. I don't know if Dan's grand plan was ever implemented. Last I heard, he had oved to Tahoe, worked part time, gotten married to high school (college?) sweet heart Emily, and eventually left PDI.

I also don't know how long adb_create was used at PDI.

It is, however, my greatest ninja'd feature.

Sports' great equalizer

Blog

Kris had his last softball game of the season tonight. It might not have been the last of the season, but it was a playoff game. And they were playing the #1 seed in the league.

Because Kris' team was in last place.

They won last week's game, their only win of the season. Know how they won? Yeah, the OTHER team scored a number of their points.

There's a no-homerun rule in the league to prevent players from just hitting the balls over the fence. The first one is a homerun, with all the scoring that entails. The second homerun is an out AND the pitching team scores your run instead. The third homerun is an out AND the pitching team scores TWO homeruns.

You see where this is going.

The other team hit four homeruns. At what would be the final pitch of the game, the player up to bat, who was later defined as "a moron," stood with the count 3-1, two outs and runners on 2nd and 3rd. He had previously hit one of the three earlier homeruns, and an earlier triple, so he was known as a power hitter. The score was tied at 20-20, many of those runs from (recall) previous homeruns for the other team.

All this guy has to do is hit a ground ball between first and second, or second and third. He can run to base and the guy on third can score. Game over.

What does he do?

Hits a homer.

Kris' team wins in exactly the only way possible to win that game. Second game to go to all seven innings, first win.

Update: Ooooooo! An eye-witness/participant account of the night!

So, Kris' team didn't really have a chance at winning tonight.

The make-up of the team has changed considerably throughout the season, though. Whereas it was originally all of Warren's coworkers and two token baseball/softball players, it was now all of Warren's ultimate or athletically inclined friends and two token coworkers. They played much better in the end of the season.

But, there still wasn't much hope.

Until we arrived at the fields.

The fields are always a little windy, because of the proximity to the Bay. Not a lot, but enough that watching the games is always a cold endeavor.

Tonight, however, we had WINDS. Winds that were blowing as near straight into the batter's face as possible. Power hitters were reduced to hitting pop-flies that landed just past second base, and not much past at that.

Wind: sports' great equalizer. Kris' team might have chance.

The first inning was played faster than you can wipe the wind blown sand out of your eyes. A fan for the opponents showed up at the bottom of the second inning, puzzled about why the scoreboard was incorrectly showing the second inning.

Three up, three down. Four up, three down. Four up, three down. Three up, three down. Neither team was scoring, both victims of the wind.

The game remained scoreless until until the fifth inning. I missed the scores in the fifth inning, as I was off tracking down a ball in the next field over. It was hit from our field into their outfield in the third inning, and, for some unfathomable reason, I felt compelled to retrieve it. Someone in the other field's outfield had thrown it in, so I had to convince the umpire that one of the balls wasn't his. I managed to distract him long enough a couple times, asking about the ball, that he didn't watch the game he was supposed to be umping, much to the mockery and ridicule of the outfield.

The final score was 5-0, with Kris' team losing. They played the full seven innings, going the distance instead of being crushed and losing with the slaughter rule. I suspect if the team at the end of the season had been the team at the beginning of the season, none of us fans would have learned what the "slaughter rule" is.

Jam session!

Blog

Beth came over tonight for a jam session with Kris. It's pretty awesome to see him continuing with the guitar this long. I'm very happy for it.

Cookies!

Blog

Kris: "I'm going to make cookies."

Me: *GASP!*

Kris: "What? What? Are you okay?"

Me: "Yes. I'm going to eat your cookies."

Kris: "Don't scare me like that."

11 days, 21 hours, 42 minutes, 37 seconds

Blog

What would you do if you had 11 days, 21 hours, 42 minutes, 37 seconds of your life back. As in, 11 days, 21 hours, 42 minutes, 37 seconds of waking time, time you've spent wide awake and able to function normally.

What would do with that amount of time?

That's over six weeks of sleeping time.

That's over six weeks of work time.

That's how much time Kris has spent playing World of Warcraft. I accused him of spending over a month playing the game, so he went to go check in game, just to confirm he wasn't actually playing for A MONTH.

Kris' reaction?

"I sense a blog post."

Kris is in on it, too

Blog

Pages