• viy (unregistered)

    i'm confused, did or didn't the data get copied for the first setup (Old Iron)?

    i guess the lesson is that you should never overload any variable, hard- or software... therefore, trwtf is all the jokes about 'pont'

  • Elvis (unregistered)

    I'm missing the point of Doug? In fact the whole article seems to be missing something.

  • akatherder (cs) in reply to viy
    viy:
    i'm confused, did or didn't the data get copied for the first setup (Old Iron)?

    It sounds like it was getting copied when it was going over the 10 Mbit line. But when he setup the fiber connection directly between the servers, the script was still resolving "gibbs" to the hostname (i.e. the public IP) instead of using the variable (i.e. the local IP) and wouldn't work.

    Next step... why didn't he get an error on his own server when it wasn't able to connect over fiber?

    Obviously, he screwed up by not verifying that the data was being moved.

  • blah (unregistered) in reply to Elvis

    Of course the article is missing something. Alex accidentally the server variable when transferring the article over fiber. It's a draft revision. Part of this balanced breakfast.

  • akatherder (cs) in reply to Elvis
    Elvis:
    I'm missing the point of Doug? In fact the whole article seems to be missing something.

    Doug had the same situation. When Todd tried the same solution, it didn't work. That is how Todd came to the realization his script wasn't doing what it was supposed to.

  • Nico den Kliko (unregistered)
    Todd turned to the SAS documentation,

    Ah yeah. Now he turns to the docs. What a douche!

  • nhek (unregistered) in reply to akatherder

    I understood it so that that data was moving - but it was through the slow public interface. not a major wtf though.

  • Code Slave (cs) in reply to akatherder
    akatherder:
    Next step... why didn't he get an error on his own server when it wasn't able to connect over fiber?

    Obviously, he screwed up by not verifying that the data was being moved.

    I'd bet that the other university also had a server named "gibbs", and his credentials (naturally, and correctly) didn't give him access to it.

  • Steve (unregistered) in reply to akatherder

    No, it was getting copied all along- just over the original 10MB interface. Because when he said "Connect to gibbs" meaning "using the value of the variable I called 'gibbs'" (which was the address of the fast Fiber interface on the server) the system instead did a host name look-up for "gibbs" and got back the address of the old 10MB interface.

    So he had been patting himself on the back for a bit of clever engineering in sending the data directly by fiber when in fact the data was STILL going over the old 10MB interface, the RWTF is that he never checked what route the traffic was taking.

  • Clark S (unregistered)

    My guess is that TRWTF is that the server lets the global-level names override local variables; that seems to be the opposite of how we imagine scope these days.

    CAPTCHA: praesent; I guess the CAPTCHA speaks German now (at least it is kind and cordial).

  • akatherder (cs) in reply to nhek
    nhek:
    I understood it so that that data was moving - but it was through the slow public interface. not a major wtf though.

    Ah yes, that makes much more sense. So all the data was being copied, but it was clogging the public line since gibbs was resolving to the public IP via DNS instead of the local IP via his variable.

  • Bosshog (unregistered)

    What a bunch of anchors.

  • Shial (cs) in reply to Steve
    Steve:
    No, it was getting copied all along- just over the original 10MB interface. Because when he said "Connect to gibbs" meaning "using the value of the variable I called 'gibbs'" (which was the address of the fast Fiber interface on the server) the system instead did a host name look-up for "gibbs" and got back the address of the old 10MB interface.

    So he had been patting himself on the back for a bit of clever engineering in sending the data directly by fiber when in fact the data was STILL going over the old 10MB interface, the RWTF is that he never checked what route the traffic was taking.

    How many people actually break out the tools to verify which interface data is passing over? Especially if everything is working and logically it makes sense. About a one in a thousand chance he would have even noticed that one line in the manual either.

    The WTF is a SAS system that doesn't understand variable scope.

  • Plrok (unregistered) in reply to Shial
    Shial:
    Steve:
    No, it was getting copied all along- just over the original 10MB interface. Because when he said "Connect to gibbs" meaning "using the value of the variable I called 'gibbs'" (which was the address of the fast Fiber interface on the server) the system instead did a host name look-up for "gibbs" and got back the address of the old 10MB interface.

    So he had been patting himself on the back for a bit of clever engineering in sending the data directly by fiber when in fact the data was STILL going over the old 10MB interface, the RWTF is that he never checked what route the traffic was taking.

    How many people actually break out the tools to verify which interface data is passing over? Especially if everything is working and logically it makes sense. About a one in a thousand chance he would have even noticed that one line in the manual either.

    The WTF is a SAS system that doesn't understand variable scope.

    In this case I would certainly test what interface is being used. Afterall, wasn't that the whole point of it in the first place?

  • pscs (cs) in reply to Plrok
    Plrok:
    In this case I would certainly test what interface is being used. Afterall, wasn't that the whole point of it in the first place?

    Or at least have a guess based on the transfer speed (assuming a fibre link in 1993 was faster than 10Mbps).

  • SlightlyAjar (unregistered) in reply to Plrok
    Plrok:
    In this case I would certainly test what interface is being used. Afterall, wasn't that the whole point of it in the first place?

    He had no real reason to assume it was not functioning properly. You assume quite reasonably that it is reading your local variable and connecting via the fiber line. You see the files getting moved over correctly... Checking which line it is going over would seem paranoid unless you had reason to believe it would transmit over the 10Mbit line after being given the specific address of the fiber line connection.

  • W Klink (unregistered)

    In SAS, macro variables are referenced with a preceding ampersand (&). The quotes around the macro variable assignment are also superfluous as all macro variables are strings. So TRWTF is in his code. It should have been:

      %let gibbs=10.0.3.44;
      options remote=&gibbs comamid=tcp;
      signon &gibbs;
  • Deviod (unregistered)

    What about a quick blinking lights test? Wouldn't the line be quiet without the (hypothetically) huge transfers?

  • Plrok (unregistered) in reply to SlightlyAjar
    SlightlyAjar:
    Plrok:
    In this case I would certainly test what interface is being used. Afterall, wasn't that the whole point of it in the first place?

    He had no real reason to assume it was not functioning properly. You assume quite reasonably that it is reading your local variable and connecting via the fiber line. You see the files getting moved over correctly... Checking which line it is going over would seem paranoid unless you had reason to believe it would transmit over the 10Mbit line after being given the specific address of the fiber line connection.

    I have no idea what the speed of fiber was by then, I bet it was faster than 10Mbit. You should at least notice that the transfer speed is slower than normal.

  • ubersoldat (cs) in reply to Shial
    Shial:
    Steve:
    No, it was getting copied all along- just over the original 10MB interface. Because when he said "Connect to gibbs" meaning "using the value of the variable I called 'gibbs'" (which was the address of the fast Fiber interface on the server) the system instead did a host name look-up for "gibbs" and got back the address of the old 10MB interface.

    So he had been patting himself on the back for a bit of clever engineering in sending the data directly by fiber when in fact the data was STILL going over the old 10MB interface, the RWTF is that he never checked what route the traffic was taking.

    How many people actually break out the tools to verify which interface data is passing over? Especially if everything is working and logically it makes sense. About a one in a thousand chance he would have even noticed that one line in the manual either.

    The WTF is a SAS system that doesn't understand variable scope.

    I agree. What kind of stupid implementation mixes hostnames with variables: "Let me check our host file and DNS server for variable names we can't use"

  • Unnecessary Variable (unregistered)

    WTF even use a variable name in this case? It's just as easy to search-and-replace on "gibbs" as it is on the actual address. I mean, if you're going to use a server-specific name anyway (rather than a generic name like dest_host), then you might as well just hard-code the address in the remote= parameter.

  • Sir Twist (cs) in reply to Nico den Kliko

    So TRWTF is Todd, and his failure to read the documentation.

  • Crabs (unregistered) in reply to Sir Twist
    Sir Twist:
    So TRWTF is Todd, and his failure to read the documentation.

    because we know you read and retain every piece of documentation before you ever start a project.

  • Dennis (unregistered)

    Fiber...previously unused...on a fifteen year old mainframe that's about to be decommissioned...in 1993...bwahahaha...heeheeheee...hoooo...hahaha

  • Indrek (unregistered) in reply to W Klink
    Unnecessary Variable:
    WTF even use a variable name in this case? It's just as easy to search-and-replace on "gibbs" as it is on the actual address. I mean, if you're going to use a server-specific name anyway (rather than a generic name like dest_host), then you might as well just hard-code the address in the remote= parameter.
    Look again. The address is used twice. Storing it in a variable makes moderate sense in this case. Plus, depending on the actual amount of code, a unique variable name like "gibbs" might be easier to find than an IP address you probably won't remember in a week.
    W Klink:
    In SAS, macro variables are referenced with a preceding ampersand (&). The quotes around the macro variable assignment are also superfluous as all macro variables are strings. So TRWTF is in his code. It should have been:
      %let gibbs=10.0.3.44;
      options remote=&gibbs comamid=tcp;
      signon &gibbs;
    Thank you for that tidbit. Looks like we found TRWTF - trying to handle a rather critical migration process without knowing elementary stuff like how to reference variables.
  • Buddy (unregistered)

    That's so sad. Been there, best intentions, only to have something trip you up.

    Once worked at a place where they had to supply user manuals for the products. There were many different configurations, bilingual sometimes, often custom, and so the staff were spending a lot of time cutting and pasting to create manuals.

    I designed and wrote an application that ran in VBA that allowed the user to pick and choose what went in the manuals, basically click what you wanted, it would assemble all the bits, put in custom fields (e.g. substitute names and addresses, dates, insert maps, etc.) and print out the manuals for as many recipients as required. Demoed it, everyone loved it.

    Unfortunately, the task of creating manuals was then delegated to someone clueless, who just could not grasp the level of abstraction required (e.g. maintaining source files with relevant text, substituting fields, etc.). She stumbled around with it for a while, did a lot of the work for her myself, then her machine crashed, along with the source files, which of course were not backed up, and they went back to manually cutting and pasting.

  • dkf (cs) in reply to Buddy
    Buddy:
    then her machine crashed, along with the source files, which of course were not backed up, and they went back to manually cutting and pasting.
    I think we've got another candidate for TRWTF...
  • Code Dependent (cs)

    ...snip...

    <span style="color:red;">Alex</span>, there is an entire chunk of conversation missing at the start of the comments. This could only be because you deleted it. And that would be because they were making fun of a typo you posted.

    ...snip...

    Note from Alex: I routinely correct typos in the article when someone points them out in the comments. That usually makes the comment pointless, so by not deleting it we have "huh? what does 'pont' have to do with anything?". And then come the comments that explains the commment. It just goes on and on.

  • Slicerwizard (unregistered)

    Whatever you do, don't mention the "In order to give researches the opportunity..." typo. Dog knows what might happen.

  • Jay (unregistered) in reply to Sir Twist
    Sir Twist:
    So TRWTF is Todd, and his failure to read the documentation.

    Yes, any time I write a program, test it and find that it works, I then go back and read every word of the documentation searching for anything that might identify a possible subtle problem in my code.

    I also re-read the entire state law book on traffic regulations every time I get in my car, just in case on this particular trip I will run into a situation that involves a traffic law I had forgotten.

    That's what everyone does, right?

  • Todd Lewis (unregistered)

    I contributed that story.

    There's a fine line between editing and rewriting, but there's a vast expanse beyond that line, and the nature of a story changes considerably the farther across that line you go. As posted, this story makes it seem as if I did all this work myself. I'm embarrassed for others who worked on this project to see this story in this form. I ran my submission by them first to see if I remembered things the way they did. But I hope they don't see in now.

    The original story is here: http://www.unc.edu/home/utoddl/mvs2unix.html Worth a read just to see how much editing happens to a submission.

    And those of you pointing the WTF finger, well, based on what you read, I can't really blame you.

    Note from Alex: FWIW, the main edits were: giving the mainframe some character (Old Iron!), putting in some SAS code (which Todd provided in a later email), dropping Doug (sorry Doug -- things like "...and then Todd and Doug went..." are hard to read), and putting Doug back in as the dude at the sister uni

  • Jay (unregistered) in reply to ubersoldat
    ubersoldat:
    I agree. What kind of stupid implementation mixes hostnames with variables: "Let me check our host file and DNS server for variable names we can't use"

    If I'm understanding the situation here: I could write a program, thoroughly debug it, everything is working fine. We celebrate and go on to the next project. Then somebody adds a new host to the network, and suddenly my program could stop working because the host name overrides a variable name? Wow. Wow.

  • Todd Lewis (unregistered) in reply to W Klink
    W Klink:
    In SAS, macro variables are referenced with a preceding ampersand (&). The quotes around the macro variable assignment are also superfluous as all macro variables are strings. So TRWTF is in his code. It should have been:
      %let gibbs=10.0.3.44;
      options remote=&gibbs comamid=tcp;
      signon &gibbs;

    And that would make perfect sense if SAS Connect actually used macro variables the way the rest of SAS uses it. But it doesn't. See, for example, the bottom of the SAS documentation at http://www.uni.edu/sasdoc/comm/z0382050.htm

    Thanks for playing WTF.

  • Buddy (unregistered) in reply to Todd Lewis
    Todd Lewis:
    I contributed that story.

    There's a fine line between editing and rewriting, but there's a vast expanse beyond that line, and the nature of a story changes considerably the farther across that line you go. As posted, this story makes it seem as if I did all this work myself. I'm embarrassed for others who worked on this project to see this story in this form. I ran my submission by them first to see if I remembered things the way they did. But I hope they don't see in now.

    The original story is here: http://www.unc.edu/home/utoddl/mvs2unix.html Worth a read just to see how much editing happens to a submission.

    And those of you pointing the WTF finger, well, based on what you read, I can't really blame you.

    It's pretty close to the original. Makes for a more compelling story sometimes to make the protagonist an individual as opposed to a team. I wouldn't worry about it too much.

  • Neo (unregistered) in reply to blah
    blah:
    (...) Alex accidentally the server variable when transferring the article over fiber. (...)

    I think you a word in that sentence.

  • Coyne (cs)

    This month, you set up this to connect to the system "willard" (10.11.12.13):

      %let charlie='10.11.12.13';
      options remote=charlie comamid=tcp;
      signon charlie;

    Next month, someone installs a new system and names it "charlie". Your transfer to "willard" is now broken and no one can figure out why because nothing changed in the transfer setup.

    What a nasty pitfall to implement. I hate ill-planned so-called-features like this.

  • anymoooos (unregistered)

    to all of you people that nitpick these funny and WTF deserving stories, I would wager a fair amount that you nitpick sex as well.

    partner: How does that feel baby?

    you: well actually, could you try to be a little more in to it? and if you could just move a little to the left.. and what is up with asking me how I feel? Of course I feel great we are having sex. Do you really need to know how I feel?

    These stories make my day every morning. Thank you TDWTF.

    captcha : nobis hehehe you said nob uhh huhhuhhuh

  • @Deprecated (unregistered) in reply to Coyne
    Coyne:
    This month, you set up this to connect to the system "willard" (10.11.12.13):
      %let charlie='10.11.12.13';
      options remote=charlie comamid=tcp;
      signon charlie;
    Next month, someone installs a new system and names it "charlie". Your transfer to "willard" is now broken and no one can figure out why because nothing changed in the transfer setup.

    What a nasty pitfall to implement. I hate ill-planned so-called-features like this.

    Well, then, how about:

      %let OMGWTF_dontnameyourserverthisoryourdead='10.11.12.13';
    
  • Code Dependent (cs)
    Anonymous:
    Bosshog:
    Look, dude, if you don't want to proofread, fine... post a story with typos. But when we start making fun of it, can't you just take it like a man and post saying, "Oops, heh heh... corrected. Thanks for ponting it out," instead of trying to erase the evidence?
    FTFY
    Alex is just trying to make sure that the thread doesn't get derailed by pointless banter about spelling errors. It's not some conspiracy or cover-up, he just wants to keep the comments on-topic.
    Why would Alex care what we talk about? Is there some gain to be had in wearing blinders that keep us focused on the specifics of the story?

    I, personally, take far more enjoyment from exploring the swirls and eddies that develop on the side, rather than going with the flow. And if that's what keeps me coming back, well, then...

  • DannyV (unregistered) in reply to Todd Lewis
    Todd Lewis:
    ... I ran my submission by them first to see if I remembered things the way they did. But I hope they don't see in now...
    I agree that the editing was well called for. Half the fun is putting yourself in somebody else's shoes. I also liked the die_gibbs_die joke way better than your gibbsx.
  • Bim Job (unregistered) in reply to Coyne
    Coyne:
    This month, you set up this to connect to the system "willard" (10.11.12.13):
      %let charlie='10.11.12.13';
      options remote=charlie comamid=tcp;
      signon charlie;
    Next month, someone installs a new system and names it "charlie". Your transfer to "willard" is now broken and no one can figure out why because nothing changed in the transfer setup.

    What a nasty pitfall to implement. I hate ill-planned so-called-features like this.

    Well, just to return to sanity, here ...

    It isn't really a WTF; more of an Awful Warning. If you're working with comms -- and particularly with point-to-point comms -- do the simplest thing that makes sense. In this case, use the quad address. Do not alias it. Yes, you have to type it in twice. In a three-line script. Is that so hard?

    I've seen more name-resolution issues in the last twenty years than you can wave a pointy stick at. (Incidentally, does anybody know whether Windows networks still arbitrarily replace the hosts file you rewrote on disk with one cached on the network? Or was that just an NT4 bug?)

    Make it simple. Make it sweet. And then test it.

    The documentation "issue" is a total red herring.

  • Ross Patterson (unregistered)

    "And as an added bonus, Todd had developed the UNIX-code to be POSIX-compliant, so the porting would be a non-issue."

    Are we doing stand-up comedy on WTF now? 1990s-vintage Unix systems were so wonderfully compliant with known standards that everyone was able to port things without trying. ROTFLMAO!

  • Gerrit (unregistered) in reply to Todd Lewis
    Todd Lewis:
    I contributed that story.

    There's a fine line between editing and rewriting, but there's a vast expanse beyond that line, and the nature of a story changes considerably the farther across that line you go. As posted, this story makes it seem as if I did all this work myself. I'm embarrassed for others who worked on this project to see this story in this form. I ran my submission by them first to see if I remembered things the way they did. But I hope they don't see in now.

    The original story is here: http://www.unc.edu/home/utoddl/mvs2unix.html Worth a read just to see how much editing happens to a submission.

    And those of you pointing the WTF finger, well, based on what you read, I can't really blame you.

    Thanks for posting that, that's quite a difference. With that much change Alex should ask the original author's permission to post the modified version.

    Did Alex invent the code snippets or did he get them from you?

  • akatherder (cs) in reply to Coyne
    Coyne:
    This month, you set up this to connect to the system "willard" (10.11.12.13):
      %let charlie='10.11.12.13';
      options remote=charlie comamid=tcp;
      signon charlie;
    Next month, someone installs a new system and names it "charlie". Your transfer to "willard" is now broken and no one can figure out why because nothing changed in the transfer setup.

    Even better, you could end up overwriting something on the wrong server.

  • Todd Lewis (unregistered) in reply to Bim Job
    Bim Job:
    It isn't really a WTF; more of an Awful Warning. If you're working with comms -- and particularly with point-to-point comms -- do the simplest thing that makes sense. In this case, use the quad address. Do not alias it. Yes, you have to type it in twice. In a three-line script. Is that so hard?

    Yes, it is/was so hard. SAS didn't allow anything there except a syntactically valid SAS identifier. If you wanted to use an IP address, you had to make the identifier have the same name as a macro variable. (In this case, "gibbs".) You couldn't expand the macro variable; that would be a syntax error. Instead, you had to let SAS Connect expand it on the back end, which it would only do if the variable name itself didn't resolve through DNS.

    You see, this is the essence of the WTF.

  • halcyon1234 (cs) in reply to DannyV
    DannyV:
    I also liked the die_gibbs_die joke way better than your gibbsx.

    "The, gibbs, the"?

    Ich verstehe nicht, den Witz.

  • Todd Lewis (unregistered) in reply to Gerrit
    Gerrit:
    Thanks for posting that, that's quite a difference. With that much change Alex should ask the original author's permission to post the modified version.

    Did Alex invent the code snippets or did he get them from you?

    To his credit (which he doesn't seem to get much of), he very politely wrote back asking for specific pieces of code that could be included, saying "what would some of the of the SAS code looked like? I've never used it myself, and it would be nice to remain somewhat accurate." I then provided something as close as I could reconstruct -- we no longer have the original code lying around -- and I goofed on the single quotes; they aren't needed to initialize SAS macro variables.

  • Kermos (cs) in reply to halcyon1234

    to die = sterben

    Also, "sterbe_gibbs_sterbe".

    Verstehste jetzt? :)

  • Todd Lewis (unregistered) in reply to Elvis
    Elvis:
    I'm missing the point of Doug? In fact the whole article seems to be missing something.

    Doug didn't work for the other university. In fact, he's sitting in the cube next to mine as I type. He wrote all the code on the mainframe side. I wrote the UNIX side.

    Sadly, you aren't the first to miss the point of Doug.

  • halcyon1234 (cs) in reply to Kermos
    Kermos:
    to die = sterben

    Also, "sterbe_gibbs_sterbe".

    Verstehste jetzt? :)

    Ja, mein Fisch ist flauschig

Leave a comment on “What's in a Name?”

Log In or post as a guest

Replying to comment #:

« Return to Article