lederhosen: (Default)
lederhosen ([personal profile] lederhosen) wrote2009-06-25 08:32 pm
Entry tags:

Confusing tech-support responses

"This behaviour is intentional. Also, we fixed it in the next release." - SAS tech support guy in response to my bug report.

(Am coming to the conclusion that SAS EG works really well if you know exactly what your program needs to do and can debug each step perfectly before you create the next one, and... not so well otherwise.)

[identity profile] quatranoctal.livejournal.com 2009-06-25 11:22 am (UTC)(link)
Dare I ask what behaviour? Is it perhaps that fact that the Filter and Query module doesn't behave like any of the other modules, or the way that the relationship between variable names in one particular window and the variables they correspond to is anything but simple?

[identity profile] lederhosen.livejournal.com 2009-06-25 01:52 pm (UTC)(link)
Query Tool. Specifically, a bug that works like this:

Working, debugged code:

A->B => Z

A=code (or other) that produces 2 datasets X,Y
B=Query Tool operation that joins X & Y by specified match variables
Z=final output

Without touching B, modify A to A', a buggy version that breaks X (specifically, in such a manner that it's missing the required match variable. Rerun:

A'->B => error message, B fails because it's missing a variable.

Realise error. Revert A' back to A and rerun:

A->B => Z' (no error messages, and in some cases no warnings)

But even though we've just undone the only thing we changed, Z' is not equal to Z. What happens is that when we attempt to run B on the broken input, it notices that one of the match variables is missing and helpfully deletes the requirement to join with that match variable. If this leaves you with no match variables specified, you'll get a warning about a Cartesian join, but if you had other matches based on variables still in the bad dataset, you won't even get that.

I discovered this the hard way, in a large and complex program where B was quite a few steps downstream from A. Found the original bug and fixed it in a few minutes, then spent hours trying to figure out why it wasn't working any more, because it's not exactly intuitive to look at the bit of the program that I hadn't modified (except indirectly and unknowingly).

[identity profile] nefaria.livejournal.com 2009-06-25 04:14 pm (UTC)(link)
Ooo, we're getting closer to quantum computing where the code changes based on whether you observe it or not!

I plan to retire by then. "Hey you, did you fix that calculation error yet?" "Sorry boss, I ran it through the debugger and its state collapsed. We need a new calculation."
Edited 2009-06-25 16:17 (UTC)

[identity profile] nefaria.livejournal.com 2009-06-25 11:23 am (UTC)(link)
We get the "we fixed it in the next release" bit a lot for HP ServiceCenter. Of course, migrating to each new release requires migrating, re-testing, and re-debugging every line of code each time, and we're down from a full development crew of five to just me now.

[identity profile] lederhosen.livejournal.com 2009-06-25 01:56 pm (UTC)(link)
In this case, it's motivation for me to stop being lazy and code my own SQL joins. Which has other advantages, since a project with multiple Query Tool steps violates the principle of DRY in a bad way - if you add a new variable to your dataset at the start, you have to manually push that variable through every following step in the program :-/

Basically, EG is designed as a simple and user-friendly SAS interface for people who don't want to have to write their own SAS code - but the point-and-click functionality isn't really suited for complex projects of the sort that a lot of us work on. It does have some good points but it took me a while to realise that some of the "time-saving" features are more trouble than they're worth.

[identity profile] nefaria.livejournal.com 2009-06-25 04:20 pm (UTC)(link)
I know SQL has some disadvantages, but some of the new things they're designing to replace it frighten me. Sometimes simple > powerful. Good luck on smokin' the joins.

[identity profile] drzero.livejournal.com 2009-06-25 11:32 am (UTC)(link)
While I work in the industry and perfectly understand what is being said, nice work on the tenses there too :)