IT Shambles: a blog and another time vampire



  • http://itshambles.wordpress.com/ - no connection to me, other than it's Limey-based.

    It was this that caught my attention. I know the NHS story (I'm a Private Eye subscriber) but didn't know about the Cambridge Uni debacle.

    Thought the articles may interest some here.

     

     



  •  Let us pray.



  • The NHS bit had decent goals but no realistic means of achieving them.  Rather than partner with a company that had a track record of success in managing large quantities of patient records, they went with primarily new entrants into the healthcare IT world (with the exception of Cerner, about the only big player involved in any way).  If healthcare IT is anything, it's difficult to get into.  Every few years, major companies like Microsoft and Google will be drawn to the smell of healthcare cash, only to slink away tail between their legs after a year or so.  The only companies that truly last and excel are those devoted to purely healthcare IT.  There are maybe three companies (possibly two soon unless one can recover from the meltdown that it's in) that could pull this off.

    The US made a similarly questionable decision in regards to the VA.  Rather than buy from an established vendor, they decided to start from their outdated VistA software, and make an open-source project to enhance it.  I'll be the first to say that MUMPS (which VistA is written in) is badly misrepresented in the articles on this site, and not nearly as bad as the articles imply, but still - the pool of people qualified to write good quality MUMPS code is small and primarily employed by VistA's competitors; I'm not sure how it will ever build the critical mass of contributors that an open-source project needs, let alone enough to make up for the decade or more that their code base is behind their competitions'.



  • @Cat said:

    I'll be the first to say that MUMPS (which VistA is written in) is badly misrepresented in the articles on this site, and not nearly as bad as the articles imply

    As the second example on this page so aptly demonstrates..



  •  Okay, I said that before I actually looked at VistA's source. VistA is going to be a maintenance nightmare.

    I don't think it reflects problems in the language, per se (you could write a C program with ten statements per line and one-letter variables with no comments) as much as the coding style chosen. 

    MUMPS has a bad rap because old-school MUMPS used to encourage that style simply by being an interpreted language in an era where the time taken to read and parse the next characters of the source code was nontrivial; longer variable names and the existence of comments actually slowed down execution by a meaningful amount. So there was a perverse incentive to write difficult-to-maintain code.  Those incentives haven't existed in decades, but legacy code (or legacy coding styles) linger.



  • There's also a lovely bug in that Wikipedia code.

    It thinks 1900 and 2100 are leap years.  2100, well, sure they can guess the code won't matter by then, but when they wrote this in the 70s, they clearly would have had patients born in 1900, so any attempt to use their birthdays in these date functions would give errors.



  • @Cat said:

    Okay, I said that before I actually looked at VistA's source. VistA is going to be a maintenance nightmare.

    Sorry, dude..

    @Cat said:

    I don't think it reflects problems in the language, per se (you could write a C program with ten statements per line and one-letter variables with no comments) as much as the coding style chosen. 

    MUMPS has a bad rap because old-school MUMPS used to encourage that style simply by being an interpreted language in an era where the time taken to read and parse the next characters of the source code was nontrivial; longer variable names and the existence of comments actually slowed down execution by a meaningful amount. So there was a perverse incentive to write difficult-to-maintain code.  Those incentives haven't existed in decades, but legacy code (or legacy coding styles) linger.

    Agreed that it mostly seems like a problem with coding style. The first example isn't all that bad. There's something Perl-esque about the language.



  • Yeah, when you actually have a good coding style, it's not that much different from (non-OOP) perl or php, but with native support for nonrelational database access treated syntactically the same as local array access. It is not without its cons (some of the worst offenses for nonreadable code are because of its rules on variable scope) but when well-written, it's no harder to read or write than any procedural language.



  • That blog full of pessimism. Read optimistic views instead.



  • @Nagesh said:

    That blog full of pessimism. Read optimistic views instead.

    Sorry, you're on the wrong site. You want "The Daily Everything-is-Fine-And-Boy-Offshoring-Wasn't-A-Mistake-At-All".



  • @Cat said:

    There's also a lovely bug in that Wikipedia code.

    It thinks 1900 and 2100 are leap years.  2100, well, sure they can guess the code won't matter by then, but when they wrote this in the 70s, they clearly would have had patients born in 1900, so any attempt to use their birthdays in these date functions would give errors.

    Wouldn't it just be an "off by one day" bug? As in the software would think the patient is a day younger/older than expected? After 112 (or 70) years one day is not meaningful. It would have just allowed someone to be entered to be born on 29/2/1900 which is an invalid date in real life.



  • @Nagesh said:

    That blog full of realism. Read delusional views instead.

    FTFY....

    Unfortunately, that's what happens in the real world, Naggy ol' son.

    And TRWTF isn't that it occurs, it's that it keeps recurring.



  • @Zemm said:

    @Cat said:

    There's also a lovely bug in that Wikipedia code.

    It thinks 1900 and 2100 are leap years.  2100, well, sure they can guess the code won't matter by then, but when they wrote this in the 70s, they clearly would have had patients born in 1900, so any attempt to use their birthdays in these date functions would give errors.

    Wouldn't it just be an "off by one day" bug? As in the software would think the patient is a day younger/older than expected? After 112 (or 70) years one day is not meaningful. It would have just allowed someone to be entered to be born on 29/2/1900 which is an invalid date in real life.

     

     In reading more, the purpose of the function is to take dates in a "YYYMMDD" format (where YYY is the calendar year minus 1700) and convert it into a MUMPS internal date variable (an M date or $HOROLOG is the number of days since Dec. 31, 1840.)  There's an off-by-one error that affects every date from March 1, 1900 to Dec 31, 1900, and actually stores them into the database as one day in the future from actual.  It also means that 12/31/1900 and 1/1/1901 convert into the same value, unless I'm missing something.  I definitely shouldn't touch any VistA code at work, and I don't feel like installing GT.M at home just to verify that there is indeed a bug.



  • @morbiuswilters said:

    @Nagesh said:
    That blog full of pessimism. Read optimistic views instead.

    Sorry, you're on the wrong site. You want "The Daily Everything-is-Fine-And-Boy-Offshoring-Wasn't-A-Mistake-At-All".

     

    Nah, his usual reading is The-Daily-Slap-Bad-Code-Written-In-Brand-New-Hot-Language-On-Database-And-Call-It-A-Web-Site.com, a lesser known alias of Joel-On-Software.com.



  • @TGV said:

    @morbiuswilters said:

    @Nagesh said:
    That blog full of pessimism. Read optimistic views instead.

    Sorry, you're on the wrong site. You want "The Daily Everything-is-Fine-And-Boy-Offshoring-Wasn't-A-Mistake-At-All".

     

    Nah, his usual reading is The-Daily-Slap-Bad-Code-Written-In-Brand-New-Hot-Language-On-Database-And-Call-It-A-Web-Site.com, a lesser known alias of Joel-On-Software.com.

    I like reading joel on software and thomas kite and jon atewood.



  • @Nagesh said:

    I like reading joel on software and thomas kite and jon [b]atewood.[/b]
     

    freudian slip


  • @Cat said:

    The NHS bit had decent goals but no realistic means of achieving them.  Rather than partner with a company that had a track record of success in managing large quantities of patient records, they went with primarily new entrants into the healthcare IT world (with the exception of Cerner, about the only big player involved in any way).  If healthcare IT is anything, it's difficult to get into.  Every few years, major companies like Microsoft and Google will be drawn to the smell of healthcare cash, only to slink away tail between their legs after a year or so.  The only companies that truly last and excel are those devoted to purely healthcare IT.  There are maybe three companies (possibly two soon unless one can recover from the meltdown that it's in) that could pull this off.

    The US made a similarly questionable decision in regards to the VA.  Rather than buy from an established vendor, they decided to start from their outdated VistA software, and make an open-source project to enhance it.  I'll be the first to say that MUMPS (which VistA is written in) is badly misrepresented in the articles on this site, and not nearly as bad as the articles imply, but still - the pool of people qualified to write good quality MUMPS code is small and primarily employed by VistA's competitors; I'm not sure how it will ever build the critical mass of contributors that an open-source project needs, let alone enough to make up for the decade or more that their code base is behind their competitions'.

    I've worked a little bit in healthcare IT. My experience has been that there are a lot of charlatans in that market. None of the vendor packages or consulting services that are available really address the fundamental issues with healthcare IT. I mean, if you can't get Palmetto GBA (Medicare administrator) to answer the phone, no vendor package is going to help. Another huge problem I had working in this field is that the paper-based processes (e.g. paper claim submission using Form 1500) are actually more standardized than their electronic equivalents.



    Once you clear through the bureaucracy, though, healthcare IT is really pretty trivial. A lot of stuff that companies pay good money for (e.g. the Medicare Remittance Easy Print program) can actually be developed internally instead. We seriously rewrote that stupid Easy Print thing in VB.NET in a few hours. We didn't include all of Sleazy Print's features, but we also added some things, e.g. an API for applications that need to print EOBs.



  • @BC_Programmer said:

    @Nagesh said:

    I like reading joel on software and thomas kite and jon atewood.
     

    freudian slip

    Jeff Likeswood lost me when he started yammering on about how difficult compiler-writing is and how domain specific languages are bad. Most self-taught developers will say something stupid like that that betrays their real ignorance if allowed to bloviate uninterrupted long enough.



  • @Cassidy said:

    I know the NHS story (I'm a Private Eye subscriber) but didn't know about the Cambridge Uni debacle.

    The Cambridge Reporter on the accounting project has some good bits.

    In particular being a university, they hired an academic from another university to conduct the review. He clearly understands the environment:

    ...at some stage the name CAPSA was adopted. A capsa is a Roman book storage box, the name has the merit of including the initial letters CA for commitment accounting, embracing an appropriate metaphor and being suitably arcane for a University audience.



  • @pjt33 said:

    ...at some stage the name CAPSA was adopted. A capsa is a Roman book storage box, the name has the merit of including the initial letters CA for commitment accounting, embracing an appropriate metaphor and being suitably arcane for a University audience.

    You know that guy who wanted to call it "Dog Genitalia Unplugged" still thinks his name is better. No Cambridge don will ever convince some people.



  • This is one presentation he has created and posted. I think he is now become more philosopher in life.

    @bridget99 said:

    Jeff Likeswood lost me when he started yammering on about how difficult compiler-writing is and how domain specific languages are bad. Most self-taught developers will say something stupid like that that betrays their real ignorance if allowed to bloviate uninterrupted long enough.


  • @Nagesh said:

    how-to-stop-sucking-and-be-awesome-instead
     

    I just can't bring myself to treat a link named in such a manner seriously...



  • its presentation made by jon. go look it up.


    @Cassidy said:

    @Nagesh said:

    how-to-stop-sucking-and-be-awesome-instead
     

    I just can't bring myself to treat a link named in such a manner seriously...



  • @Nagesh said:

    This is one presentation he has created and posted. I think he is now become more philosopher in life.

    @bridget99 said:

    Jeff Likeswood lost me when he started yammering on about how difficult compiler-writing is and how domain specific languages are bad. Most self-taught developers will say something stupid like that that betrays their real ignorance if allowed to bloviate uninterrupted long enough.

    That link takes me to some sort of viewer, but it just sits there and does nothing... maybe I don't have Microsoft's latest imitation of Flash installed on my computer? It's hard to keep up with everything getting so much better all the time.



  • @bridget99 said:

    That link takes me to some sort of viewer, but it just sits there and does nothing... maybe I don't have Microsoft's latest imitation of Flash installed on my computer? It's hard to keep up with everything getting so much better all the time.
     

    What browser are you using?


  • :belt_onion:

    @bridget99 said:

    @Nagesh said:
    This is one presentation he has created and posted. I think he is now become more philosopher in life.

    @bridget99 said:

    Jeff Likeswood lost me when he started yammering on about how difficult compiler-writing is and how domain specific languages are bad. Most self-taught developers will say something stupid like that that betrays their real ignorance if allowed to bloviate uninterrupted long enough.

    That link takes me to some sort of viewer, but it just sits there and does nothing... maybe I don't have Microsoft's latest imitation of Flash installed on my computer? It's hard to keep up with everything getting so much better all the time.

    You're saying Microsoft invented HTML, jpg and javascript? Awesome!


  • @bjolling said:

    @bridget99 said:
    @Nagesh said:
    This is one presentation he has created and posted. I think he is now become more philosopher in life.

    @bridget99 said:

    Jeff Likeswood lost me when he started yammering on about how difficult compiler-writing is and how domain specific languages are bad. Most self-taught developers will say something stupid like that that betrays their real ignorance if allowed to bloviate uninterrupted long enough.

    That link takes me to some sort of viewer, but it just sits there and does nothing... maybe I don't have Microsoft's latest imitation of Flash installed on my computer? It's hard to keep up with everything getting so much better all the time.

    You're saying Microsoft invented HTML, jpg and javascript? Awesome!

    Dude, I didn't try to troubleshoot Atwood's stupid presentation, I just assumed I was missing a plug-in and bailed. Sorry if that was premature... if you say it's just a regular HTML / Javascript page, then I'll take your word for it. But it must be some of that newfangled, CPU-melting HTML5 crap. Good ol' IE6-style HTML never crapped out on me like that.


Log in to reply