What's in a Name?

« Return to Article
  • viy 2009-09-10 09:41
    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 2009-09-10 09:44
    I'm missing the point of Doug? In fact the whole article seems to be missing something.
  • akatherder 2009-09-10 09:47
    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 2009-09-10 09:48
    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 2009-09-10 09:49
    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 2009-09-10 09:49
    Todd turned to the SAS documentation,


    Ah yeah. Now he turns to the docs. What a douche!
  • nhek 2009-09-10 09:52
    I understood it so that that data was moving - but it was through the slow public interface. not a major wtf though.
  • Code Slave 2009-09-10 09:55
    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 2009-09-10 09:59
    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 2009-09-10 10:02
    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 2009-09-10 10:04
    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 2009-09-10 10:04
    What a bunch of anchors.
  • Shial 2009-09-10 10:15
    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 2009-09-10 10:28
    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 2009-09-10 10:35
    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 2009-09-10 10:44
    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 2009-09-10 10:48
    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 2009-09-10 10:49
    What about a quick blinking lights test? Wouldn't the line be quiet without the (hypothetically) huge transfers?
  • Plrok 2009-09-10 10:49
    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 2009-09-10 10:54
    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 2009-09-10 10:58
    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 2009-09-10 11:03
    So TRWTF is Todd, and his failure to read the documentation.
  • Crabs 2009-09-10 11:05
    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 2009-09-10 11:16
    Fiber...previously unused...on a fifteen year old mainframe that's about to be decommissioned...in 1993...bwahahaha...heeheeheee...hoooo...hahaha
  • Indrek 2009-09-10 11:22
    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 2009-09-10 11:23
    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 2009-09-10 11:34
    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 2009-09-10 11:49
    ...snip...

    Alex, 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 2009-09-10 12:21
    Whatever you do, don't mention the "In order to give researches the opportunity..." typo. Dog knows what might happen.
  • Jay 2009-09-10 12:28
    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 2009-09-10 12:34
    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 2009-09-10 12:35
    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 2009-09-10 12:41
    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 2009-09-10 12:46
    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 2009-09-10 12:49
    blah:
    (...) Alex accidentally the server variable when transferring the article over fiber. (...)


    I think you a word in that sentence.
  • Coyne 2009-09-10 12:53
    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 2009-09-10 12:55
    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 2009-09-10 12:57
    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 2009-09-10 13:00
    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 2009-09-10 13:02
    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 2009-09-10 13:10
    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 2009-09-10 13:14
    "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 2009-09-10 13:19
    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 2009-09-10 13:27
    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 2009-09-10 14:37
    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 2009-09-10 14:43
    DannyV:
    I also liked the die_gibbs_die joke way better than your gibbsx.


    "The, gibbs, the"?

    Ich verstehe nicht, den Witz.
  • Todd Lewis 2009-09-10 14:45
    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 2009-09-10 14:50
    to die = sterben

    Also, "sterbe_gibbs_sterbe".

    Verstehste jetzt? :)
  • Todd Lewis 2009-09-10 14:57
    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 2009-09-10 15:03
    Kermos:
    to die = sterben

    Also, "sterbe_gibbs_sterbe".

    Verstehste jetzt? :)


    Ja, mein Fisch ist flauschig
  • Todd Lewis 2009-09-10 15:06
    Ross Patterson:
    "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!


    Easily amused I see.

    You should get a real kick out of this: A good deal of the UNIX code was actually written on my Commodore Amiga 3000 using (the irony of this is just now hitting me) SAS C, an excellent C compiler from the same company the produced the SAS Connect component that caused the WTF in the first place. In fact, one of their lead developers on their Amiga version of SAS C was a founding member of ASDF -- the Amiga Software Developers Forum, our local Amiga programmer's group. Small world. Ancient world. Good times.
  • Worf 2009-09-10 15:18
    Plrok:
    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.


    Not necessarily - there was 10Mbps Ethernet over fiber as well (10BaseFL, amongst others). Given the equipment of the era, they probably had 10Mbps interfaces for everything (fiber being either for long-haul, or just convenient).

    I think the difference in speeds would've been minimal, depending on how busy the network is. But most likely, it transferred, you left for the night, and come back in the morning, so unless it didn't finish overnight, you'd never notice.
  • Arancaytar 2009-09-10 15:23
    To me the WTF is that Todd decided to run a dedicated fiber between the computers in order to speed up the transfer, but in an entire year never bothered to check how much faster the transfer actually became.

    (Or, if he did, wasn't bothered when there seemed to be no different. Remember what Knuth said about premature optimization.)
  • CorgiDude 2009-09-10 15:33
    Am I the only one to notice the curious IP address for the "public" interface? It seems vaguely familiar... :P
  • Ouch! 2009-09-10 15:37
    Kermos:
    to die = sterben

    Also, "stirb_gibbs_stirb".

    Capisce? :)

    FTFY
  • Sutherlands 2009-09-10 15:38
    Neo:
    blah:
    (...) Alex accidentally the server variable when transferring the article over fiber. (...)


    I think you a word in that sentence.

    I think he intentionally the whole thing.
  • Todd Lewis 2009-09-10 15:39
    Arancaytar:
    To me the WTF is that Todd decided to run a dedicated fiber between the computers in order to speed up the transfer, but in an entire year never bothered to check how much faster the transfer actually became.

    (Or, if he did, wasn't bothered when there seemed to be no different. Remember what Knuth said about premature optimization.)


    In my defence, I didn't run the fiber, and it wasn't to speed up the transfers; it was suggested and implemented by the admins of the two machines, and the purpose was to avoid adversely impacting regular user's access on the public interface. The admins seemed happy with the setup, and from what we could tell from our application logs things were working. The migration was an automatic 24x7 process; no human intervention, and no interactive processes to "feel sluggish."
  • will 2009-09-10 15:46
    Bosshog:
    What a bunch of anchors.


    Yea was wondering where that was taken.
  • will 2009-09-10 15:49
    will:
    Bosshog:
    What a bunch of anchors.


    Yea was wondering where that was taken.


    Have a question? ask Google

    http://kilburnsocialclub.blogspot.com/2009/04/anchor-graveyard.html
  • Anonymously Yours 2009-09-10 15:51
    Arancaytar:
    To me the WTF is that Todd decided to run a dedicated fiber between the computers in order to speed up the transfer, but in an entire year never bothered to check how much faster the transfer actually became.

    (Or, if he did, wasn't bothered when there seemed to be no different. Remember what Knuth said about premature optimization.)
    There are two issues with all of the complaints Todd should have known/checked that the data was not transferring faster.

    The first issue is that data transfer rates are dependent on the maximum speed of the processors, hard drives, network cards, hubs/switches/routers, and the cables between the machines involved in a transfer. Transfer will go as slow as the slowest of those, not as fast as the fastest. Since this was an ancient mainframe it's reasonable to believe the change in data transfer speed could be negligible.

    The second issue is that the reason given for the networking change was to avoid eating up bandwidth on the public line. Since changing the IP address assigned to the "gibbs" variable would, in any sane language change the IP address gotten by referencing "gibbs" as a variable, it's reasonable to assume that if it works after the change that the change worked. (Tortured Sentence is tortured.)

    The WTF, as has been pointed out by a few other people now, is that SAS was silently treating the variable's name as a value before treating the variable as a variable. That's not behavior to be expected in any language. It's also been pointed out that even in SAS this behavior was limited rather than par for the course.
  • Pointy Haired WTF 2009-09-10 16:24
    Todd Lewis:
    Elvis:
    I'm missing the point of Doug? In fact the whole article seems to be missing something.


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


    Hopefully his wife hasn't missed the point of Doug.... otherwise there's a lot of 'splainin to do about those kids.
  • ChrisSamsDad 2009-09-10 17:00
    I once had something similar happen to me with servers at a server farm. I set up copy-over processes between them in MS SQL, and as the server farm often changed the interal IP addresses around I used the outside ones.

    I only found out when we used up our monthly traffic allowance within a few days. The intra-database traffic was routing outside the firewall and back in again to the other server, and at some point passed through the traffic monitoring.
  • Code Dependent 2009-09-10 17:03
    Pointy Haired WTF:
    Todd Lewis:
    Elvis:
    I'm missing the point of Doug? In fact the whole article seems to be missing something.
    Sadly, you aren't the first to miss the point of Doug.
    Hopefully his wife hasn't missed the point of Doug.... otherwise there's a lot of 'splainin to do about those kids.
    Somebody mentioned stand-up comedy earlier. Maybe Doug said, "I don't get no respect. Take my wife... please," and somebody took him up on it.
  • bob 2009-09-10 17:14
    Well SAS always did insist on doing things backSASwards.
  • lolwtf 2009-09-10 17:20
    Three WTFs:
    1) Assuming variable names are host names.
    2) Reconfiguring it to use fibre because it'll be faster, and failing to notice it isn't faster.
    3) This comment system is still so broken I have to submit this twice before it actually works. Which is one less time than usual.
  • Anonymous Asshole 2009-09-10 18:18
    TRWTF: Being the nth person to claim that "using fibre was to speed up the process" when it's abundantly clear this is not the case.
  • Code Dependent 2009-09-10 18:35
    Plrok:
    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.
    It goes through me pretty fast.
  • MadtM 2009-09-10 18:55
    Buddy:
    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.


    The fate of mankind. Time to send in Corporal Joe Bauers.
  • NotARealName 2009-09-10 19:01
    Todd Lewis:
    I contributed that story.
    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.


    WooHoo!! Go Tar Heels :)
  • notme 2009-09-10 19:20
    pscs:
    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).


    I wouldn't count on it. I still have (access to) ethernet-over-fibre equipment that's younger than that and can only do 10 Mbps...
  • Carl 2009-09-10 19:56
    lolwtf:
    Three WTFs:
    1) Assuming variable names are host names.
    2) Reconfiguring it to use fibre because it'll be faster, and failing to notice it isn't faster.
    3) This comment system is still so broken I have to submit this twice before it actually works. Which is one less time than usual.


    Two WTFs:
    1) Claiming that the WTF involved using fibre because it's faster after the author of the WTF explained that he was NOT using fibre because it's faster.
    2) Using "less" instead of "fewer."
  • Xythar 2009-09-10 20:19
    The only WTF here is SAS's variable scope system, and quite rightly so. When naming my variables am I meant to just guess a name that will never resolve to a host? Could later adding a new host to the network actually break existing SAS code without any changes to the code at all? (Have fun debugging THAT one) Sounds like the safest thing to do is either never use variables or call them something like fhfdh38748, but it's still a ridiculous thing to have to do. Ideally variables and host names should be kept separate but at the very least local variables should override potential host names on the network.
  • Steve P 2009-09-10 20:23
    I have been enjoying this pretense that TDWTF is created from contributions from readers; the more I read, the more it seems that it is simply a collation of stories from around the net, rewritten to sound like a submission, and republished with adverts.

    Am I wrong?
  • Anonymous Coward 2009-09-10 20:27
    The story would have been better, if everything suddenly worked. He would then happily leave the site only to return to the original site. The next morning he would get a call about all data being completely corrupted as both old irons would be copying over stuff to the first mentioned unix box.
  • Gary Olson 2009-09-10 20:46
    He is a systems admin and he is not full on paranoid that the systems will do the wrong action by default? Time to move him to an area where quality is not required -- say administration.
  • Anone 2009-09-10 20:48
    Steve P:
    I have been enjoying this pretense that TDWTF is created from contributions from readers; the more I read, the more it seems that it is simply a collation of stories from around the net, rewritten to sound like a submission, and republished with adverts.

    Am I wrong?


    Considering the number of times the contributor has commented in this thread, I can only assume that you meant to say 'the less I read'.
  • Eponymous Coward 2009-09-10 21:47
    halcyon1234:
    Kermos:
    to die = sterben

    Also, "sterbe_gibbs_sterbe".

    Verstehste jetzt? :)


    Ja, mein Fisch ist flauschig


    Your fish is flacid? Thanks for sharing.
  • Hello World 2009-09-10 21:49
    I agree with Todd - the edit/rewrite was totally excessive.
  • takatori 2009-09-10 23:25
    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. [...]

    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.


    The original's second-to-last paragraph gave a more specific description of the reason for the problem. The story makes more sense after reading it:

    Here's the first part of the double WTF. SAS' connection component had evolved over the years, and one of the evolutionary warts it had retained was that, if the variable name itself resolved through DNS, then the value of the variable was never examined. The "gibbs" that was giving us the login error at our sister campus was another local box there named gibbs, not the box we were trying to connect to. By changing the variable name to something that wouldn't resolve through DNS, we got it to then use the IP address stored in that variable.
  • Watson 2009-09-11 01:35
    Todd Lewis:
    ...the purpose was to avoid adversely impacting regular user's access on the public interface. The admins seemed happy with the setup...; no human intervention, and no interactive processes to "feel sluggish."


    I take it further that regular users didn't see anything sluggish either and that the hypothetical impact turned out to be apocryphal.
  • JoJo 2009-09-11 03:41

    The moral is clear - when naming your server make sure to give it a unique name- I use the IP number as the server name to ensure this and old 178.34.56.255 has never had a problem...
  • hetas 2009-09-11 04:00
    Todd Lewis:

    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.

    Well in that case this might make sense. The rewrite of the WTF screwed things up: If Doug's university didn't have a machine called 'gibbs' then that should have been perfectly valid variable name and the code should have worked.

    Or maybe the two universities just happened to have similar kind of environments with the same machine names for their mainframes but Doug's gibbs-machine didn't happen to have a public interface that the scirpt could have used but gibbs still happened to have a dns entry that the srcipt resolved to. A bit of a stretch as a anonymizing goes.

    PS. I don't know if that made any sense. I'm not a native English speaker.
  • grumpy old man 2009-09-11 04:55
    Anonymously Yours:

    ...

    The WTF, as has been pointed out by a few other people now, is that SAS was silently treating the variable's name as a value before treating the variable as a variable. That's not behavior to be expected in any language. It's also been pointed out that even in SAS this behavior was limited rather than par for the course.


    Well, technically, if you look at it, SAS was silently treating the value (a node-name) as a variable if you followed the arcane practice which allowed you to do that.
    Treating values as variables seems strange now, but I can tell you that it was a lot more common in the 60's. Software was all soft at first, and that only changed because in practice people realised that software which allowed you to re-define "5" was a problem, as here. This was not an immediately obvious point, and it took even longer for the implementations to catch up.

    The one place you do see this still is in the C language, were we still have 'const' as something which is not neccessarily constant. That's a left-over in a heritage language, but it shows how long it took for the idea to take hold that you should not be able to re-define constants.
  • recreational reader 2009-09-11 05:10
    I like the re-write: it didn't take away anything I needed to know, it didn't change my opinion of the main actors.

    Specifically:
    1) I never assumed that the protaganist was a cowboy programmer just because his team weren't all mentioned by name.
    2) I never assumed that the protaganist was a cowboy programmer just because his hours studying the reference manuals weren't mentioned.
    3) I never assumed that the protaganist was a competant story-teller just because the featured article was well-written and entertaining.

    It looks like there was one error introduced by the re-write, and that was in the sample code: and that came from the protaganist too, so I don't see anything to complain about.

    PS If I ever get anything published here, the spelling mistakes are all in the original.
  • Smitty 2009-09-11 05:19
    I think the real WTF is that the author is allowed to be involved with a boy scout troop and looks like a pedophile.
  • Federico 2009-09-11 05:27
    [quote user="grumpy old man]The one place you do see this still is in the C language, were we still have 'const' as something which is not neccessarily constant. [/quote]

    Hi, may I have an example, please? I thought that "const" meant actually constant, in C. Are you talking about wild casting with no constantness preservation?
  • TheRider 2009-09-11 06:57
    Ouch!:
    Kermos:
    to die = sterben

    Also, "stirb_gibbs_stirb".

    Capisce? :)

    FTFY
    Thanks! I died a little inside when I saw the first version. (my first language is german)
  • Henning Makholm 2009-09-11 07:40
    Federico:
    I thought that "const" meant actually constant, in C.

    No, it just means read-only. You can assign a "pointer to X" to a variable of type "pointer to const X" without casting, and then keep modifying the original non-const object while reading its value through the pointer-to-const.
  • Henning Makholm 2009-09-11 07:46
    grumpy old man:
    Well, technically, if you look at it, SAS was silently treating the value (a node-name) as a variable if you followed the arcane practice which allowed you to do that.

    Are you implying that it is "arcane" to want to connect to somewhere that is not hard-coded in the source code?
  • rico 2009-09-11 08:05
    How much data is actually being transmitted... Was there a need to improve performance?

    It does seem funny that somone spent time and effort doing something and just assumed it worked. In actual fact it was rather pointless.

    The rel WTF is that nobody was complaining and nobody noticed. What a salmon of a day!

    Would it not be better to look at how to improve the 10Mb network, I mean that seems like a weak link to me.
  • katana 2009-09-11 11:48
    All he had to do was initiate a transfer on a test file, and then plug out the fiber link.

    If it continued to transfer ->Oops, wrong interface

    As I pointed out in my original comment, that should have been tested - since he was specifically trying to use a specific interface for a specific task.

    Anyway Todd, it could have happened to anyone and our hindsight is 20/20, thanks for the Story.
  • Shinobu 2009-09-11 11:58
    Todd Lewis, I liked yours better because, even though Alex' version had code snippets, it better explains that there was another machine called Gibbs, and because the delivery of the conclusion was better. Punchlines are best kept short.

    "Ja, mein Fisch ist flauschig" - for some reason that made me smile.
  • savar 2009-09-11 20:38
    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.


    You guys are crazy... The real WTF is SAS replacing variable names if a host exists on your network with the same name. What a configuration nightmare if you don't have a policy for naming hosts and variables with different namespaces.

    This seems so straightforward, who would ever tcpdump the connection just to verify?
  • AndyCanfield 2009-09-12 04:29
    Alex -

    thedailywtf.com is not a fiction site. I appreciate that you must anonymize the stories in order to avoid lawsuits. And it is certainly the province of any editor to trim the fat and to correct grammar and spelling.

    But there is a severe difference between a news editor and a fiction editor. I hope that you will commit to the accuracy of the tales you publish, even if a change would, in your opinion, "make a better story".

    This incident not only leads me to question the stories published here, but it makes me hesitate to submit my own stories. Especially in the realm of computers, once you cross the line from truth to fiction you distort and degrade the site. Suppose I tell a tale about a DEC-10, but you change it to PDP-10. You implicitly change the date of the events and so the background context.

    Do you have an editorial policy page somewhere on the site? If not, please write one so that we know what you will and will not do to our stories. Thank you.
  • Lazareth 2009-09-12 14:50
    AndyCanfield:

    But there is a severe difference between a news editor and a fiction editor.


    No.

    Well, yes, but this reads and feels more like a "story" than a news article, both in nature and in telling.

    Besides, ever heard of faction?
    http://en.wikipedia.org/wiki/Faction_(literature)
  • Alex Papadimoulis 2009-09-13 23:31
    AndyCanfield:
    Alex -

    thedailywtf.com is not...snip..


    Gee Andy, thank you telling me what TDWTF is or isn't, and what my roles and duties as the editor of TDWTF are. I forgot that you were the authority on this matter. Is there anything else I should know, while you're at it?

    It's been my understanding that TDWTF is about telling true and entertaining stories about curious previsions in information technology. Like Discover Magazine's Vital Signs, the stories are very real but the names and certain details are some times changed. This is not to avoid lawsuits, but to protect the submitters and help tell an entertaining story.

    How do you know that I won't change the wrong technical detail? You'll just have to trust my judgement as someone who not only spends a lot of time researching the technologies in the stories, but has been doing it for years.

    And suppose you did send me a story about DEC-10, I suppose I'd challenge that your memory just might be a little faulty, as there was no DEC-10. There was a DEC-20 (later changed to DECsystem-20) and a PDP-10, but no DEC-10.

    But what do I know? Maybe I should just stick to my job and currect only your grammar and spelling mistakes, eh?
  • savar 2009-09-14 13:20
    [quote user="Alex Papadimoulis"][/quote]

    <snip><br>
    But what do I know? Maybe I should just stick to my job and currect only your grammar and spelling mistakes, eh? [/quote]

    Haha... a hilarious rant, and I don't see what the fuss is about with this article. The original and the version posted here have the same essence. The WTF is still just as evident. The anonymization didn't ruin that part of it. But on the other hand, the original article is perfectly readable.<br><br>

    So I vote +1 for doing the minimal amount of editing possible. I don't really even see the need to fix grammar or spelling, unless the original article is just horrible. I have never read anybody here who claimed that they liked the embellishments anyway.<br><br>

    Edit.. what the hell is wrong with the editor. Today it includes line breaks, borks the html I am used to adding manually, and then doesn't interpret the BBCode at all... Jesus H C
  • bramster 2009-09-15 12:12
    halcyon1234:
    DannyV:
    I also liked the die_gibbs_die joke way better than your gibbsx.


    "The, gibbs, the"?

    Ich verstehe nicht, den Witz.


    Aaaaannnnndddd, the winner is. . .
  • The Amazing Transverbero 2009-09-15 12:12
    Ouch!:
    Kermos:
    to die = sterben

    Also, "stirb_gibbs_stirb".

    Capisce? :)

    FTFY

    Sounds like some weird NCIS episode.
  • Connect the dots! La la la la la la! 2009-09-18 06:07
    Yep, that's pretty retarded. Never heard of that before.
    Local variable should always override anything else (and normally do in 99.9% of all scripting/programming languages).

    Makes you wonder what kind of mushrooms the guys that developed the language were smoking.
  • c 2009-09-21 02:20
    The real WTF here is that Todd decided to use the fiber interface because he presumed there would be a slow down if he used the Ethernet interface.

    Then the Universe found an interesting way of showing him not to do any extra work unless he needs to, because it may never pay off.
  • arno 2009-09-24 02:32
    RTFM

    'nuff said.
  • Radu094 2009-09-30 03:48
    The real WTF is how many people totally blame the guy for not checking that trafic was being sent on the fiber.

    Like it's the guy's fault for not checking that trafic sent to 10.0.3.44 was not actually going to 70.50.106.245. Cause that's what computers do, right?

    "Uhm .. I get a reply from pinging 192.168.0.1, but I'm still not convinced we have a connection. Can you wait a minute for me to check a tcpdump. I need to be doubly sure."
  • cindy 2011-02-23 03:27