Comment On A Case of the MUMPS

You may not realize it, but the majority of us developers have been living a sheltered professional life. Sure, we’ve got that living disaster of a C++ application and that ridiculous interface between PHP and COBOL written by the boss, but I can assure you, that all pales in comparison to what many, less fortunate programmers have to work with each day. These programmers remain mostly forgotten, toiling away at a dead-end career maintaining ancient information systems whose ridiculously shoddy architecture is surpassed only by the tools used to create it. Bryan H lived in such a world for over two years. Specifically, he worked at a “MUMPS shop.” [expand full text]
« PrevPage 1 | Page 2 | Page 3 | Page 4 | Page 5 | Page 6 | Page 7 | Page 8Next »

Re: A Case of the MUMPS

2007-02-13 13:07 • by tharfagreinir
But they made sure that all new developers saw the carrot and understood that, if they worked hard enough, they might get to savor it one day.


Pah, that's nothing special. I see carrots every day. Matter of fact, there's one right here in front of me as I'm typing this.

Re: A Case of the MUMPS

2007-02-13 13:09 • by Ebs2002 (unregistered)
...

Wow.

I'm not surprised this is happening, but...wow. I feel bad for Bryan, not just because he had to work here, but because he can't find something else because he stayed for 2 years.

captcha:muhahaha, what I'm sure the management is thinking to themselves when someone tries to quit: "muhahaha, you'll be back, there's nowhere else for you to work!"

Re: A Case of the MUMPS

2007-02-13 13:11 • by Craig (unregistered)
That has to be one of the most horrid and evil stories I have ever heard.

Re: A Case of the MUMPS

2007-02-13 13:12 • by the-moss
120071 in reply to 120069
This company wouldn't be based in Madison, Wi would they?

I think I also worked for them straight out of college.. I only lasted a year though.

Re: A Case of the MUMPS

2007-02-13 13:14 • by Remco G (unregistered)
See its Wikipedia page: http://en.wikipedia.org/wiki/MUMPS.

Looks like the article wasn't exaggerated one bit. That Wikipedia article is full of wondrous WTFs by itself.

Re: A Case of the MUMPS

2007-02-13 13:14 • by EvanED
120074 in reply to 120071
the-moss:
This company wouldn't be based in Madison, Wi would they?

I think I also worked for them straight out of college.. I only lasted a year though.


As someone currently attending UW, I must know who these people are so I can avoid them.

Re: A Case of the MUMPS

2007-02-13 13:16 • by Remco G (unregistered)
120077 in reply to 120073
Also, this reminds me of a friend, who recently finally landed a programming job (he didn't finish his degree) - and promptly got sent on a COBOL class. Poor guy.

Re: A Case of the MUMPS

2007-02-13 13:18 • by the-moss
120078 in reply to 120074
You know someone that works there (everyone in Madison does). They are building a massive campus in Verona, and the company is a huge success. But it sucks being a developer there.

Re: A Case of the MUMPS

2007-02-13 13:19 • by Top Cod3r (unregistered)
Ontario Systems is the only company I have heard of who use MUMPS. I thought this was supposed to be anonymous for the companies! :)

Re: A Case of the MUMPS

2007-02-13 13:20 • by z (unregistered)
Nice Google ad on the right:

MUMPS to Java and RDBMS
Automatic migration from MUMPS to Java and relational databases

Salvation? :)

Re: A Case of the MUMPS

2007-02-13 13:21 • by Rick (unregistered)
120082 in reply to 120078
You know, some days the stories are kind of bland, boring, so-what. This is not one of those days.

I had to shake my head at every single part of the story. My favorite part was reading the UNIX login and unencrypted password from a file. Obviously, security is of paramount important to these guys...

Re: A Case of the MUMPS

2007-02-13 13:22 • by the-moss
120083 in reply to 120079
Top Cod3r:
Ontario Systems is the only company I have heard of who use MUMPS. I thought this was supposed to be anonymous for the companies! :)


Makes me think it is possible that it was my old company.. What they use isn't called MUMPS anymore, it's called 'M'. But it from what I remember M is just what the newer versions of MUMPS are called.

Re: A Case of the MUMPS

2007-02-13 13:24 • by not a phb (unregistered)
120084 in reply to 120082
Rick:
You know, some days the stories are kind of bland, boring, so-what. This is not one of those days.

I had to shake my head at every single part of the story. My favorite part was reading the UNIX login and unencrypted password from a file. Obviously, security is of paramount important to these guys...

Security by antiquation: who would want to hack such a system?

Re: A Case of the MUMPS

2007-02-13 13:25 • by EvanED
120086 in reply to 120078
the-moss:
You know someone that works there (everyone in Madison does). They are building a massive campus in Verona, and the company is a huge success. But it sucks being a developer there.


Okay, that's really the only local tech company I know. And their Wikipedia entry confirms their use of MUMPS. (Sort of an ironic name for the health care industry, no?)

Re: A Case of the MUMPS

2007-02-13 13:28 • by Eeby (unregistered)
It sucks that he had such a horrible experience and now he's having a hard time finding a job. I'd suggest that he get involved in an open source project that uses a more widely-known language. Then he can chalk up some experience and have examples of his work out in the public sphere.

Re: A Case of the MUMPS

2007-02-13 13:31 • by Sgt. Zim
120092 in reply to 120083
the-moss:
Top Cod3r:
Ontario Systems is the only company I have heard of who use MUMPS. I thought this was supposed to be anonymous for the companies! :)


Makes me think it is possible that it was my old company.. What they use isn't called MUMPS anymore, it's called 'M'. But it from what I remember M is just what the newer versions of MUMPS are called.

'M' is what happened when the current owners of the "technology" decided that "MUMPS" had negative connotations... The latest version of the system has layers upon layers of WTF-ey goodness on top; an "SQL Projection", a VB-like language, etc ... All built on top of good ol' M. I'd suggest googling Caché (that accent is important).

Note, also, that if you happen to be involved in the VA hospital system (that's the Veteran's Administration for those outside the US), all of your data is in a MUMPS-base somewhere ... Unless it was on that thumb drive that got stolen, but that's another story.

I, too, am unfortunate enough to be in a MUMPS-shop, with no light at the end of the tunnel, unless it's a train.

Edit: And in my experience, everyone that uses it either absolutely hates it, or has consumed the Kool-Aid and absolutely loves it, and will extol its "virtues" at great length. There doesn't seem to be a middle ground with this pile of crap.

Re: A Case of the MUMPS

2007-02-13 13:32 • by asuffield
Much of this stuff is not new (sadly). And I say that in the full knowledge that MUMPS is from the 1970s.


The primary design goal MUMPS was to create code that, once written, can never be maintained by anyone ever again.


APL.


CASE SENSITIVITY: Commands and intrinsic functions are case-insensitive. Variable names and labels are case-sensitive.


Numerous flavours of BASIC did this.


DATA TYPES: one universal datatype, interpreted/converted to string, integer, or floating-point number as context requires.


Not a WTF.


LOCAL ARRAYS: created dynamically, any number of subscripts, subscripts can be strings or integers. Stored in process space and expire when process terminates.


Many forms of BASIC did this, only without the ability to use string keys.


Within each application lived hundreds of modules, and within each module lived thousands of routines. All of these routines shared the same environment. To ensure that global arrays and code didn’t get mixed up, a strict naming convention was followed. Each routine name was no more than eight characters, and consisted of a two-character application identifier, a two-character module identifier, and a two-character routine identifier.


This one is right out of the system/360 playbook, and probably goes back even further.


The editor made extensive use of DEC VT 220 keys as shortcuts; these keys, naturally, did not exist on any modern keyboard. Things that we take for granted (the Enter key, for example) required a bizarre set of escape commands to be entered.


IBM mainframes *still* do this.

Re: A Case of the MUMPS

2007-02-13 13:33 • by dolo54 (unregistered)
From the wiki: "The M syntax allows multiple commands to appear on a line, grouped into procedures (subroutines) in a fashion similar to most structured programming systems.

In MUMPS syntax, some spaces are significant; they are not merely whitespace. There are contexts in which a pair of spaces has a different syntactic significance than a single space. However, extra spaces (in this context not syntactically significant) may always be added between commands for clarity, up to the line length limit in an implementation. Lines are syntactically significant, and carriage returns and linefeeds are not treated as white space; they are statement/function terminators. There is no requirement to put semicolons at the end of commands, and lines may be explicitly continued when needed."

HOLEEE GUACOMOLEE BATMAN!!! A Russian goolag would be preferable to MUMPs developer job.

Re: A Case of the MUMPS

2007-02-13 13:34 • by Veinor
DECLARATIONS: NONE. Everything dynamically created on first reference.
Kinda like Perl.
LOCAL ARRAYS: created dynamically, any number of subscripts, subscripts can be strings or integers. Stored in process space and expire when process terminates.
Perl's arrays and hashes, though you can't auto-convert between the two (not in the expected way, at least.)
DATA TYPES: one universal datatype, interpreted/converted to string, integer, or floating-point number as context requires.
Err... I've never seen Perl auto-truncate, but yeah. The rest of the stuff, though... totally dumbass

Re: A Case of the MUMPS

2007-02-13 13:35 • by Danny (unregistered)
120098 in reply to 120077
Bah! As an intern I got a desk, a chair and a COBOL manual on the first day, and that was great (back in 1978). I also wrote a small program in MUMPS in the 80s and it was no big deal.

MUMPS may not be buzzword-compatible but it was a good option in the 70s and early 80s when most languages (C, Pascal, Basic) supported only sequential and random access. MUMPS has a very simple yet powerful indexed access - ^Table("Key"). You could also get decent multiuser support from a 16 bit microprocessor (like the good old brain-dead 286). COBOL was another option, but is it really a better language?

Re: A Case of the MUMPS

2007-02-13 13:36 • by themagni
120099 in reply to 120080
z:
Nice Google ad on the right:

MUMPS to Java and RDBMS
Automatic migration from MUMPS to Java and relational databases

Salvation? :)


Java? - The savior?
Wish for a merciful death.
I weep tears of blood.

Re: A Case of the MUMPS

2007-02-13 13:36 • by Jack (unregistered)
This story has to be about IDX/GE Centricity. Their systems are so backwards but hospitals have to use it a lot of times because there simply isn't a better alternative.

Re: A Case of the MUMPS

2007-02-13 13:40 • by Sgt. Zim
120104 in reply to 120093
asuffield:

DATA TYPES: one universal datatype, interpreted/converted to string, integer, or floating-point number as context requires.


Not a WTF.

In theory. When it works. But when it doesn't ... Get the bandages, because your eyes will start bleeding.

Re: A Case of the MUMPS

2007-02-13 13:42 • by Havic (unregistered)
120106 in reply to 120092
> Note, also, that if you happen to be involved in the VA
> hospital system (that's the Veteran's Administration for
> those outside the US), all of your data is in a MUMPS-base
> somewhere...

I worked with the VA for a few years and fortunately never encountered Mumps. All of my work was in C# or older ASP with a database of our choosing.

Re: A Case of the MUMPS

2007-02-13 13:42 • by Top Cod3r (unregistered)
All MUMPS code was stored in a Global Array named ^ROUTINES. The only code that existed outside of this array was stored in “Application Startup” codefiles, each containing a single line of code: X(^ROUTINES("XSTARTGB")). The only difference between each file was the last two characters, or, the application identifier.


First of all, for all you newbies out there, you want to store your code in a global array for performance optimization purposes. You see global arrays get optimized by the compiler making them as much as twice as fast as normal arrays.

And the code in the Application Startup codefiles was probably put there for flexibility purposes, since startup code only gets executed once it doesnt need the performance boost offered by global arrays.

The only WTF about this is why you guys all think this is a WTF. Maybe you just dont understand MUMPS.

Re: A Case of the MUMPS

2007-02-13 13:43 • by Flash
My first job out of college (25 years ago) was a COBOL programming position. (I worked the summer before on a Tandem minicomputer, but I didn't realize at the time how cool that platform was.) I stopped in at the workplace two weeks before my start date to pick up some code examples. (My only experience with COBOL was one course in college, and I wanted to brush up.)

I saw all sorts of WTF code. I figured it wasn't as bad as I thought, so on the first day of work I asked all sorts of questions about programming practices there. I got all the wrong answers.

It wasn't easy to quit my first-job-out-of-college on the second day, but I did it. And I was lucky enough to avoid Bryan's fate. I've never regretted that move.

[And this grammar nazi likes an essay where "caret" and "carrot" are used and spelled correctly!]

Thank You

2007-02-13 13:44 • by Porkchop (unregistered)
120110 in reply to 120093
Sometimes I feel like the only person over 30 on the internet.

"Back in the day" MUMPS was considered state-of-the-art. Of course, so were 300 baud modems.

The only real problem I saw in all of this was a company that lacked the vision to build an upgrade path for these legacy applications.

Re: A Case of the MUMPS

2007-02-13 13:46 • by Jeff S
I like the spec indicates (if I am reading it correctly) that block of code in FOR loops and IF statements must all be on one single line. And we argue over where to put the curly braces!!! Maybe you can use GOTO's to avoid this?

Re: A Case of the MUMPS

2007-02-13 13:49 • by TomTheGeek (unregistered)
Wow, how many more of you are from Madison, WI? I saw like three people in the first few posts.

Just seems like a above average number of people from the same place.

Is it the VA hospital in Madison that uses MUMPS? I came dangerously close to working for them, I worked for the school of Nursing in the Hospital.

Re: A Case of the MUMPS

2007-02-13 13:51 • by CDarklock
120117 in reply to 120110
Porkchop:
Sometimes I feel like the only person over 30 on the internet.


I usually feel like the only person who is AND ACTS over 30.

There are plenty of old farts on the internet. They're just all trying to hook up with teenagers on MySpace.

Re: A Case of the MUMPS

2007-02-13 13:55 • by the-moss
120120 in reply to 120107
The company I worked for was a WTF.

MUMPS had some WTF's about it. The big one I remember is being told to keep comments to a minimum because they slow down the code's execution.

It also had some cool features. Being able to store code in a variable and execute it made it easy to customize the app for different clients.

Re: A Case of the MUMPS

2007-02-13 13:57 • by cob666 (unregistered)
Back before I was a 'real' developer I was working for a network integration company in the Boston area. We were tasked with a rather large netware upgrade for a Partners facility in Newton (Partners was partly founded by the Mass General Hospital). One of the IT managers found out that I was the 'developer' on the team and tried to get me to jump ship and work for them. In my initial very informal first interview with one of the managers there I was told that they maintain applications written in MUMPS and was told how incredible and deliciously awesome it was to work with such a powerful language that was designed from the ground up for the medical field. I did some talking to a couple of the developers there and was amazed by how much they HATED their jobs.

Needless to say, I didn't take the job.

Re: A Case of the MUMPS

2007-02-13 13:57 • by Reed (unregistered)
Umm... what's so scary about MUMPS?? Looks like quite a few other crappy database resident languages. Epic in Madison?

Re: A Case of the MUMPS

2007-02-13 13:58 • by TB (unregistered)
I actually almost got a MUMPS job when I graduated in 1989, from a company in Kensington, MD. They wrote healthcare software. Thankfully, it didn't work out, becaue I would most likely have taken the job, due to poor economic conditions then (and poor interviewing skills at the time on my part).

This article makes me glad it didn't work out!

Re: A Case of the MUMPS

2007-02-13 13:58 • by rmr
120125 in reply to 120073
Remco G:
See its Wikipedia page: http://en.wikipedia.org/wiki/MUMPS.

Looks like the article wasn't exaggerated one bit. That Wikipedia article is full of wondrous WTFs by itself.

At risk of being thoroughly ridiculed, I actually like the sound of the overall concept. There are clearly some major WTF's in the implementation (i.e. an else must be followed by two spaces) but I like the idea of having a transparent database accessible through some syntactic sugar. I can imagine a web development framework that provided the same feature being extremely popular. Ruby on MUMPS anyone?

Re: A Case of the MUMPS

2007-02-13 14:02 • by Zonkers (unregistered)
That is a sad story. Keep at it Byran! I can relate a bit.

I had a similar experience, but with COBOL, I worked my first job out of college for 1 year working on a system that wasn't nearly as bad as that but antiquated and full of WTF's none the less. Some of the stuff that I had to code was basically writing a relational database that was full of business logic that sat upon ISAM and flat files all written in COBOL! It still makes my head hurt remembering that garbage. I hated that job.

I got out the same way, no job prospects and for a while it looked pretty bleak. It took me about 8 months to find another job (this was in 1996), this time working with modern day tools with a saner environment. There were a couple of times when I wanted to just go into another industry because I thought I might just end up working at another brain dead shop. I'm so glad that I stuck with it.

Maybe play up your experience in MUMPS. Stress how you had to handle a lot of complexity in that environment that modern environments hide from developers. If you spin it right you might sound like a genius developer for being able to write anything at all in it, which is probably true. But it might be better just to say that MUMPS is a highly specialized language for such and such, etc. etc.

Re: A Case of the MUMPS

2007-02-13 14:02 • by curmudgeon (unregistered)
His job skills are at least a little portable: a lot of the skills one needs to maintain and write MUMPS are similar to those need to maintain Perl code!

Re: A Case of the MUMPS

2007-02-13 14:09 • by Seaph (unregistered)
120133 in reply to 120116
Wow, how many more of you are from Madison, WI? I saw like three people in the first few posts.

Just seems like a above average number of people from the same place.

Is it the VA hospital in Madison that uses MUMPS? I came dangerously close to working for them, I worked for the school of Nursing in the Hospital.


My guess would be that people are refering to Epic Systems Corporation, who makes software for the healthcare industry, but I could be wrong.

Re: A Case of the MUMPS

2007-02-13 14:10 • by DaveAronson (unregistered)
There are a LOT of companies using MUMPS in the Philadelphia (PA USA) area. The main industries there that need programmers, are medical, financial, and cable TV.

Re Cache', that explains a lot. I was contacted by one of their recruiters a few years back. They want you to take a test. They fax you the test, and want you to fax back your results! Silly me, I fell for it and did it. Or maybe they were serious.

Captcha: dubya -- don't get me started on a comparison of him and MUMPS....

Re: A Case of the MUMPS

2007-02-13 14:14 • by vic (unregistered)
From the FAQ :

prints a table of primes,including code to format it neatly into columns
f p=2,3:2 s q=1 x "f f=3:2 q:f*f>p!'q s q=p#f" w:q p,?$x\8+1*8

Almost as friendly as perl.

Re: A Case of the MUMPS

2007-02-13 14:14 • by darin
A friend of mine did his PhD thesis on code restructing and tools. Instead of making up fictitious examples, he needed to find real world programs with the most convoluted spaghetti-like call structures he could. His search ended when he found a MUMPS program from a hospital.

When printed out in a visualizer, it looked like the result of putting cobwebs in a blender. His goal was to automatically try to reorganize the code to give it a more understandable structure. But first he had to understand the code himself, and try some manual refactoring. I think this was when he learned the phrase "WTF?".

Interestingly enough, his professor's father was one of the creators of SNOBOL.

Re: A Case of the MUMPS

2007-02-13 14:15 • by anonymous (unregistered)
120138 in reply to 120110
I agree a guy on the thread.
Yes, the Real WTF is not having a upgrade path, so better code is posible.

There are people on mainframes that need emulators to run legacy BINARY code because the src is lost, even the src of the compilers is lost. Seems that crap is OK in the mainframe area, because you need giganteous efforts to upgrade, while on microinformatic is lightweight to do a upgrade. So people still use absolute shit like Cobol and this Mumps shit.

Re: A Case of the MUMPS

2007-02-13 14:18 • by Tailors Suit Ya (unregistered)
120140 in reply to 120089
Eeby:
It sucks that he had such a horrible experience and now he's having a hard time finding a job. I'd suggest that he get involved in an open source project that uses a more widely-known language. Then he can chalk up some experience and have examples of his work out in the public sphere.


You mean like Progress? How about those 4GL's huh? Woot.

Re: A Case of the MUMPS

2007-02-13 14:19 • by Flo (unregistered)
Build in obfuscation? oO

Appendix 7: An example of "traditional" M coding style


%DTC
%DTC ; SF/XAK - DATE/TIME OPERATIONS ;1/16/92 11:36 AM
;;19.0;VA FileMan;;Jul 14, 1992
D I 'X1!'X2 S X="" Q
S X=X1 D H S X1=%H,X=X2,X2=%Y+1 D H S X=X1-%H,%Y=%Y+1&X2
K %H,X1,X2 Q
;
C S X=X1 Q:'X D H S %H=%H+X2 D YMD S:$P(X1,".",2) X=X_"."_$P(X1,".",2)
K X1,X2 Q
S S %=%#60/100+(%#3600\60)/100+(%\3600)/100 Q
;
H I X<1410000 S %H=0,%Y=-1 Q
S %Y=$E(X,1,3),%M=$E(X,4,5),%D=$E(X,6,7)
S %T=$E(X_0,9,10)*60+$E(X_"000",11,12)*60+$E(X_"00000",13,14)
TOH S
%H=%M>2&'(%Y#4)+$P("^31^59^90^120^151^181^212^243^273^304^334","^",%M)+%D
S %='%M!'%D,%Y=%Y-141,%H=%H+(%Y*365)+(%Y\4)-(%Y>59)+%,%Y=$S(%:-
1,1:%H+4#7)
K %M,%D,% Q
;

[...]
From http://www.faqs.org/faqs/m-technology-faq/part2/

Re: A Case of the MUMPS

2007-02-13 14:20 • by Jon (unregistered)
120142 in reply to 120099
themagni:
z:
Nice Google ad on the right:

MUMPS to Java and RDBMS
Automatic migration from MUMPS to Java and relational databases

Salvation? :)


Java? - The savior?
Wish for a merciful death.
I weep tears of blood.


HAIIII-KU

Re: A Case of the MUMPS

2007-02-13 14:21 • by SarcasticSOB (unregistered)
120143 in reply to 120092
So would you say that M is the Enterprise verion of MUMPS?

Re: A Case of the MUMPS

2007-02-13 14:23 • by CoderForChrist (unregistered)
I'm currently working in a MUMPS shop directly out of college.

MUMPS (or, M, as it's called now) is not that bad of a language in and of itself, especially considering its age. In fact, M can be maintainable, etc., if it was written well. The system described in the article, however, sounds horrid. I mean, I've seen some bad code, but that just blows me away.

I actually like the fact that an array can have string subscripts. It makes sorting things, etc., much easier. Also, there's a function, $ORDER() that iterates through any array at a specific subscript level ($QUERY() iterates through all subscript levels at once).

M really isn't too bad once you're used to it, and if it's written well.

Also,
Jeff S:
I like the spec indicates (if I am reading it correctly) that block of code in FOR loops and IF statements must all be on one single line. And we argue over where to put the curly braces!!! Maybe you can use GOTO's to avoid this?
Actually, the DO command (used for calling subroutines) serves a double purpose here.

FOR I=1:1:10 DO
.[code]
.[code]

The DO command sends it to the next line, and the block is made up of lines beginning with '.'. Each nested block of code adds a dot, so:

FOR I=1:1:10 DO
. code
. IF condition DO
. . code
. . code
. code

The syntax does allow for some...interesting uses as well, that I won't get into (for sake of time). At the same time, we don't have to sit around and try to figure out where to put braces...

Granted, M doesn't conform to the ideals of certain programming experts, but that doesn't make it wrong. It's just a different way of doing things that, like anything else, can be abused to heck, but can also be useful when done right.

Re: A Case of the MUMPS

2007-02-13 14:24 • by AceoStar (unregistered)
I feel this guy's pain. Lots of us are in similar situations.

Re: A Case of the MUMPS

2007-02-13 14:25 • by akatherder
I don't see any mention of the timeline for this WTF. Actually I read it once, then got curious about the timeline and I'm too lazy to do anything more than scan through it. But why in the world are they still using this MUMPS thing if this is a present-day story? Of course the language is going to be a POS if it is that old... the decision to continue using it is the real problem.

I also find it hard to believe he is completely out of the job market. He should be able to find an entry level or junior level position easily. After working with MUMPS for two years, he decided not to learn anything marketable like .Net, PHP, and perl in his free time? I'm an idiot and I could still make a living doing PHP, VB.Net and systems administration. Diversify!

Re: A Case of the MUMPS

2007-02-13 14:25 • by brian (unregistered)
MUMPS sounds like the boogie man of all programming langauges. I pray that I never hear about it again.
« PrevPage 1 | Page 2 | Page 3 | Page 4 | Page 5 | Page 6 | Page 7 | Page 8Next »

Add Comment