• PIercy (unregistered)

    wow, i really feel sorry for steve. i hate going through code as it is let alone something as poorly written as that.

    as for CC card numbers, thats a mistake a 12yo makes when creating scripts for people. a sure WTF!

    frist lol

  • The Undroid (unregistered)

    Who needs MUMPS for this kind of thing? I see it all the time in MySQL databases.

  • Me (unregistered)

    Great. Now that they have a web server written in MUMPS, they can write a server-side MUMPS parser, so all of their web apps can be written in MUMPS as well.

  • Submarine (unregistered)

    99,9% uptime means whole 8 hours of downtime per year P.S. Freights

  • SoonerMatt (unregistered)

    I kept accidentally reading:

    Normally, hearing that a developer is storing off live credit card numbers
    AS
    Normally hearing that a developer is LIVING off of stored credit card numbers

    I think I my error may have been more correct...

  • dkf (cs) in reply to The Undroid
    The Undroid:
    Who needs MUMPS for this kind of thing? I see it all the time in MySQL databases.
    I've heard (on this site) that people write SQL databases in MUMPS. I feel sorry for their users.
  • Dennis (unregistered)

    What's with the wiki [[ ]] markup?

  • chuck (unregistered)
    N1amOrdr - 1am Order N2amOrder - 2am Order ... N11pOrder - 11pm Order N12mOrder – 12 Midnight Order N1amSgnt - 1am Signature ... N12mSgnt - 12m Signature N1mDtTm - 1am Date/Time ... N9mDtTm - 9am Date/Time [ un-named column ] [ un-named column ] [ un-named column ] N1pDtTm - 1pm Date/Time ... N12DtTm – 12 Midnight Date/Time N1amUser - 1am User ... N12mUser – 12 Midnight User N1amCmmn - 1am Comment ... N12mCmmn – 12 Midnight Comment

    That’s right: At least 5 fields for every hour of the day.

    Ouch... yeah, you definitely /don't/ need MUMPS for this kind of thing. In fact, I'd call this a case of someone not really understanding how to use MUMPS... MUMPS uses a hierarchical database, not a relational one, so there's no need for this "namespaced columns" anti-patters. The "table" could have just had children for each hour, and each hour having the date/time/user/comment children beneath it. Even then, there's probably an even better way to handle it, that's just off the top of my head.

    Or at least, so says this PHP programmer... :P

  • Undisclosed (unregistered)

    That sounds very very very familiar.

  • cbatologin (unregistered)

    The real WTF is how this boring article got published. Can't we have some programming based murder mystery or something? Really, nobody cares about MUMPS, we want murder.

  • EatenByAGrue (unregistered) in reply to cbatologin
    cbatologin:
    The real WTF is how this boring article got published. Can't we have some programming based murder mystery or something? Really, nobody cares about MUMPS, we want murder.

    What, credit card fraud and embezzlement not good enough for you?

  • murder (unregistered) in reply to cbatologin
    cbatologin:
    The real WTF is how this boring article got published. Can't we have some programming based murder mystery or something? Really, nobody cares about MUMPS, we want murder.

    did tyson murder steve after learning that steve had deleted his stolen credit card stash?

  • mrmunkey (cs)

    This article is really strange. Either they're using some other version of MUMPS that I'm not aware of, or they don't know MUMPS. I've been working at this hospital for about 6 months doing mostly MUMPS programming.

    The MUMPS "database" is set up around the idea of globals that are stored on the drive. Globals are prefixed with "^" to identify them as being a global. Globals act kind of like a multi-dimensional array. The example given of the loop

    set ^tnc("scramble","notes",d0,d1)=data

    Actually means

    SET Global TNC(node "scramble", sub-node "notes", sub-sub-node d0, sub-sub-sub-node d1)=data

    A loop would look something like

    F S I=1:1:10 D . W I,! . Q

    In pseudo code that would be

    for (int i=1; i<=10; i++)="" {="" echo="" i;="" echo="" "\n";=""></=10;>

    With all that said, MUMPS works, and it works well. It's just a nightmare to know where all the data is coming from (at least in the product we're using). We have a several thousand page document that documents where all the data is stored.

    It's possible that they are using a newer version of MUMPS called Caché, and they can access the database layer that sits on top of the globals. If you care Caché is object relational, which makes for some interesting compatibility issues over ODBC.

  • St Mary's Hospital for the Uncurable Damned (unregistered)
    MUMPS Madness

    I'm waiting for R Madness. Seeing that there are no stories of that kind, I can safely assume that I get my MSc degree one day...

  • cbatologineventhoughIshould (unregistered) in reply to EatenByAGrue
    EatenByAGrue:
    cbatologin:
    The real WTF is how this boring article got published. Can't we have some programming based murder mystery or something? Really, nobody cares about MUMPS, we want murder.

    What, credit card fraud and embezzlement not good enough for you?

    No, unless there's rape, murder and a bit of comic tomfoolery it's not good enough.

    murder:
    cbatologin:
    The real WTF is how this boring article got published. Can't we have some programming based murder mystery or something? Really, nobody cares about MUMPS, we want murder.

    did tyson murder steve after learning that steve had deleted his stolen credit card stash?

    Then raped his corpse?

    Captcha : sino - onis - onus - anus - anal rape.

  • khanti (unregistered) in reply to St Mary's Hospital for the Uncurable Damned

    Ha! I think I interviewed with this company a couple of years ago. The large wood-paneled group meeting hall, the MUMPS-based medical software and the cult-like atmosphere are all eerily familiar. Glad I turned down their offer. I'd hate to have been in Steve's shoes. And to all the other employees there, "Get out while you still can!"

  • Resistance (cs)

    I'd take x * 1.3 * 0.7 over x any time

  • b0ttomfeeder (unregistered) in reply to murder
    murder:
    cbatologin:
    The real WTF is how this boring article got published. Can't we have some programming based murder mystery or something? Really, nobody cares about MUMPS, we want murder.

    did tyson murder steve after learning that steve had deleted his stolen credit card stash?

    No, he just bit his ear off.

  • snoofle (cs) in reply to cbatologin
    cbatologin:
    ...programming based murder mystery...
    As the pointy haired boss slithered down into the depths of the developers' lair, he inadvertently discovered their evil scheme: to correct the PHB's inept plans and deliver a properly functioning system. "I cannot allow this!" he exclaimed. He grabbed a nearby hatchet, snuck up on the unsuspecting programmers and bludgeoned them to death. He then dragged each carcass back to its cubicle and propped it up in the chair, mitts on the keyboard.

    At the next status, it was reported that the staff was not making their deadlines. Senior management wanted proof. The PHB brought them into the cubicle farm only to discover the bodies.

    ominous Dun dun dunnnnnnnnnn

    Take it morbius...

  • Benanov (cs) in reply to snoofle
    snoofle:
    cbatologin:
    ...programming based murder mystery...
    As the pointy haired boss slithered down into the depths of the developers' lair, he inadvertently discovered their evil scheme: to correct the PHB's inept plans and deliver a properly functioning system. "I cannot allow this!" he exclaimed. He grabbed a nearby hatchet, snuck up on the unsuspecting programmers and bludgeoned them to death. He then dragged each carcass back to its cubicle and propped it up in the chair, mitts on the keyboard.

    At the next status, it was reported that the staff was not making their deadlines. Senior management wanted proof. The PHB brought them into the cubicle farm only to discover the bodies.

    ominous Dun dun dunnnnnnnnnn

    Take it morbius...

    Bludgeoning with a hatchet is the real WTF.

  • KD (unregistered)

    Congratulations on the promotion Mark, I hope your articles are better than your comics (I'm joking, I love MFD really...)!

  • dkf (cs) in reply to Resistance
    Resistance:
    I'd take x * 1.3 * 0.7 over x any time
    Great! More money left for me!

    (x * 1.3 * 0.7 is x * 0.91)

  • Anon (unregistered)

    Just replace all mentions of MUMPS with blow job and the story is much better!

  • dhromed (cs)
    The scene was a three-hour, seemingly unending procession of PowerPoint slides with enough laser pointers to take down an incoming ICBM.

    I am amused.

  • Steve (unregistered)

    I guess the question to ask after reading this horror story is: did the system work? And did it work any better after it was audited (modulo removing the credit card numbers, which is certainly a Good Thing, though, given the load of other personal information in the system may have been largely moot from an identity theft standpoint)?

    Sometimes, as ugly as a system might be, if it ain't broke, don't fix it.

    Just sayin'.

  • mjk340 (cs)

    So, working in a red taped filed corporate environment on a proprietary, poorly implemented system is a WTF? I thought this was the model that the entire for-profit IT industry was based on.

  • Fuzzypig (unregistered)

    When I read that line about hiving off the numbers "just in case", a chill ran down my spine!

    Nothing I despise more than "job-safers", refusing to document and obsfucate so management won't fire their sorry asses!

  • tragomaskhalos (unregistered)

    You've got to love an environment that allows you to create unnamed columns in your database tables. Stitch THAT, maintenance programmers !

  • Valerion (unregistered)

    In the mid-nineties I worked tech support for a (then) huge online service/ISP. Think "had been-around-a-long-time-and-not-AOL".

    Anyone working support (tech and customer) could access any credit card number for any member because everything was stored for us to see.

    Of course, nobody ever used an annoying customer's card details to sign up to porn sites. Oh no.

  • Charles400 (cs)

    Bagels and T-shirts... no shit?

  • seamustheseagull (cs)

    Our SAP system (cue: "TRWTF is SAP") has over 70,000 tables, with the vast majority of table names having five characters or less.

    I refuse to believe that you could gather any group of SAP developers who can tell what even 10% of those tables are for.

  • Edward Royce (unregistered) in reply to cbatologin
    cbatologin:
    The real WTF is how this boring article got published. Can't we have some programming based murder mystery or something? Really, nobody cares about MUMPS, we want murder.

    We were waiting for a victim who says he wants a "murder".

    Seeeeeeeen one around here?

  • Mark (unregistered) in reply to seamustheseagull
    seamustheseagull:
    Our SAP system (cue: "TRWTF is SAP") has over 70,000 tables, with the vast majority of table names having five characters or less.

    I refuse to believe that you could gather any group of SAP developers who can tell what even 10% of those tables are for.

    If all table names are <= 5 alpha characters then that gives you 32^5 = 33,554,432 different table names. Surely SAP needs more tables!

  • Edward Royce (unregistered) in reply to dkf
    dkf:
    Resistance:
    I'd take x * 1.3 * 0.7 over x any time
    Great! More money left for me!

    (x * 1.3 * 0.7 is x * 0.91)

    Nobody in accounting ever noticed?

  • Edward Royce (unregistered) in reply to Mark
    Mark:
    seamustheseagull:
    Our SAP system (cue: "TRWTF is SAP") has over 70,000 tables, with the vast majority of table names having five characters or less.

    I refuse to believe that you could gather any group of SAP developers who can tell what even 10% of those tables are for.

    If all table names are <= 5 alpha characters then that gives you 32^5 = 33,554,432 different table names. Surely SAP needs more tables!

    Better yet convert SAP to Chinese or some other ideographic language with 15,000+ characters.

    Bounty of Tables!

  • Daniel (unregistered)

    I really don't see the point of analysing MUMPS "tables" as if they were structured like relational databases instead of B* tree's that they are.

  • snoofle (cs) in reply to Benanov
    Benanov:

    Bludgeoning with a hatchet is the real WTF.

    Not really; I have something - not really sure what to call it - that has a hatchet blade on one side and what can only be called an 8 inch spike on the other - you could easily bludgeon someone with it and then use the hatchet to ... well, you know ;)

  • Jamie (unregistered) in reply to seamustheseagull

    Let's see:

    • Covert insertion of obfuscated code (or at least, uncommented!)
    • Attempted to hide the data by obscuring the data
    • Attempted to circumvent an action to keep the company from privacy violations, legal problems, and hefty fines

    The Real WTF: Why was he not fired on the spot? People get fired for far less than that!

  • ContraCorners (cs)

    "To summarize, if you’re associating MUMPS with the awful disease of the same name, you’re very close."

    Not hardly, the disease has been nearly eradicated.

  • Jay (unregistered) in reply to Mark
    Mark:
    seamustheseagull:
    Our SAP system (cue: "TRWTF is SAP") has over 70,000 tables, with the vast majority of table names having five characters or less.

    I refuse to believe that you could gather any group of SAP developers who can tell what even 10% of those tables are for.

    If all table names are <= 5 alpha characters then that gives you 32^5 = 33,554,432 different table names. Surely SAP needs more tables!

    If they are alpha characters, where do you get 32 possibilities? What alphabet are you using? Last I checked the Latin alphabet had 26 if only one case is allowed, 52 if we distinguish. Greek has 24. Russian has 33. ...

  • Mattintosh (unregistered) in reply to snoofle

    You said "status"... chuckle

  • Anon (unregistered) in reply to Jay
    Jay:
    Mark:
    seamustheseagull:
    Our SAP system (cue: "TRWTF is SAP") has over 70,000 tables, with the vast majority of table names having five characters or less.

    I refuse to believe that you could gather any group of SAP developers who can tell what even 10% of those tables are for.

    If all table names are <= 5 alpha characters then that gives you 32^5 = 33,554,432 different table names. Surely SAP needs more tables!

    If they are alpha characters, where do you get 32 possibilities? What alphabet are you using? Last I checked the Latin alphabet had 26 if only one case is allowed, 52 if we distinguish. Greek has 24. Russian has 33. ...

    Polish and estonian, for example. Mostly the latin alphabet but with a bunch of extra letters and a few missing. I'm sure there are others with the same letter count.

  • Dirk Diggler (unregistered) in reply to snoofle
    snoofle:
    Benanov:

    Bludgeoning with a hatchet is the real WTF.

    Not really; I have something - not really sure what to call it - that has a hatchet blade on one side and what can only be called an 8 inch spike on the other - you could easily bludgeon someone with it and then use the hatchet to ... well, you know ;)

    A hatchet with an 8 inch spike? Is it intended to be a tool or a fighting weapon? I'm looking at a fire axe right now, the spike is only 3-4 inches. You could put your eye out with that thing.
  • Mark (unregistered) in reply to Jay
    Jay:
    Mark:
    seamustheseagull:
    Our SAP system (cue: "TRWTF is SAP") has over 70,000 tables, with the vast majority of table names having five characters or less.

    I refuse to believe that you could gather any group of SAP developers who can tell what even 10% of those tables are for.

    If all table names are <= 5 alpha characters then that gives you 32^5 = 33,554,432 different table names. Surely SAP needs more tables!

    If they are alpha characters, where do you get 32 possibilities? What alphabet are you using? Last I checked the Latin alphabet had 26 if only one case is allowed, 52 if we distinguish. Greek has 24. Russian has 33. ...

    Clearly you had your morning coffee before commenting. I, sir, did not.

    26^5 = 11,881,376

    There. Fixed it. Now someone call SAP, we kan haz lots mor tablez!

  • obediah (cs) in reply to Benanov
    Benanov:
    Bludgeoning with a hatchet is the real WTF.

    I'm guessing snoofle is a programmer at Bethesda ( that's a dumbing down of video games zing for the grown ups in the audience ).

    Also, I'm calling shenanigans. If the CASTLE team was able to create and orphan hundreds of such horrible, terrible tables over decades, then surely the code would be riddled with useless references to these tables, nasty side effects, etc. Doing the analysis and testing to safely remove these tables from production would not be a project that one person could step in and do in a few months.

  • the-moss (cs) in reply to obediah

    Epic fail!

  • Dan (unregistered) in reply to mrmunkey

    Seriously now, you're just effing with my head for sport, aren't you?

  • Dan (unregistered) in reply to Charles400
    Charles400:
    Bagels and T-shirts... no shit?
    I prefer cream cheese myself...

    PS. CAPTCHA = "Eros"....yeah baby YEAH!

  • pointy (unregistered) in reply to Dirk Diggler
    Dirk Diggler:
    snoofle:
    Benanov:

    Bludgeoning with a hatchet is the real WTF.

    Not really; I have something - not really sure what to call it - that has a hatchet blade on one side and what can only be called an 8 inch spike on the other - you could easily bludgeon someone with it and then use the hatchet to ... well, you know ;)

    A hatchet with an 8 inch spike? Is it intended to be a tool or a fighting weapon? I'm looking at a fire axe right now, the spike is only 3-4 inches. You could put your eye out with that thing.

    A Pickaxe type tool?

  • Glow-in-the-dark (unregistered) in reply to Valerion
    Valerion:
    In the mid-nineties I worked tech support for a (then) huge online service/ISP. Think "had been-around-a-long-time-and-not-AOL"

    If I recall correctly they serve-d moderately OK from their Compu-ters (and made me go back to BBS use as it was seriously cheaper)..

    Having everything accessible isn't news. I once audited a big law firm which handled gazillion dollar cases. When I took their IT apart I discovered every single senior partner (the ones collecting the real big bonuses) had their harddisk shared at the root "so the techies could fix things easier" - and they bought that line, hook, line and sinker. Needless to say, that was the first to go once we had a support process set up..

    :-)

Leave a comment on “MUMPS Madness”

Log In or post as a guest

Replying to comment #:

« Return to Article