There is a company called MediTech in Massachusetts that uses a derivative language of MUMPS called Magic. I know several programmers that have worked there. There are thousands of engineers writing in this language as we speak.
From what I can remember:
-Only global variables
-Variables must only be capital letters, maximum length 6. If you run out of variables, you must cleverly use them in a routine and set them back to what they are. This means you can't use a name like myVar - you use AAAFD, ZBVCXZ, etc.
-System functions are usually things like ., >, ', ], so code looks like .'AAAF]{\;:..
-Meditech writes all of their own languages, databases, operating systems, tools, etc. You can only write in a non-Meditech language if you get approval from a multi-tiered architectural design board, which barely ever happens
-The founder hated C with undying passion. No one is ever allowed to use C
-All programming hires go through a 6 to 12 month training process to learn the tools, languages, and systems. As they almost exclusively hire non-CS majors, such as math and physics majors, they don't typically have a programming background and don't realize how bizarre the MediTech stack is
Because MediTech engineers get experience in a proprietary suite of technologies that is only used there, it is extremely difficult for them to get new jobs at the same pay grade and experience level. 5 years at MediTech is worth 0 years anywhere else. However, I have hired a few of these people, and while they knew nothing about say Python, JS, Linux, etc. when hired, their deep understanding of how computers work made them very skilled once they picked up the modern technologies. Not many engineers program for years in low-level nightmare languages before touching JavaScript or Python, most start high-level and go lower. The foundation provided by working in a language like Magic makes them know computers at a deeper level than most.
I worked at Meditech as well, there was also this one:
- Recursion was absolutely NOT ALLOWED because of 'the risk of crashes.'
Some more info on them (edit: added more as I remembered them)
During my last interview, they had me read my job responsibilities and then write an essay, in front of them, "in my own words" of what I would be doing. My future manager slowly walked around the perimeter of the room reading the essay while I sat in awkward silence. I still have no idea why this was necessary.
My salary was 38,000, my boss went home after my yearly review, then called my desk phone to say "money is tight this year" so I wouldn't be getting a raise.
There was a bonus you would get each Christmas which was a small percent of your yearly salary (5%?) which was compounded each year up to the last five years. Their first few weeks of training, they have lifers come in and openly brag about their yearly bonuses, which are only really impressive if you've been there for fifteen to twenty years.
One time the CEO came down to the cafe (they make food on-campus at most of their locations) to make an appearance, and magnanimously waved people through the line - he was paying for our lunches! Money being extremely tight as a new hire, I made my way through the line, but he had decided that he had paid for enough - he held up his hand and said 'sorry' and walked off. :(
Around the end of our training, the CEO had the latest batch of new hires head down to the auditorium where he gave us a speech reminiscent of cliche multi-level marketing summit speeches, and the only question asked afterward was by a really brave girl who asked him why our wages weren't competitive with the rest of the job market. He seemed really flustered and just answered "we think they're competitive, and if someone thinks they aren't, they're toxic and will no longer be employed here." I never saw her again.
I interviewed at MediTech while I was in college. During the interview I pointed out the issue of how working on proprietary technologies would have an impact on my career. This along with the fact that the compensation they were offering was significantly less than what I was offered as an intern at Goldman Sachs and another company no one would know.
I swear it was something insane like 36k a year in 2005. compared to 55k for GS . I asked them if it came with something to offset that like a pension or housing and they looked at me like I was crazy. I asked them to explain what they had to offer me and they made some stuff up about it being a great job with advancement potential. I think the word loyalty may have come up.
I didn't get an offer not that I would have said yes.
The lobby was nice as I recall. Lot's of open space, granite, and flowing water. Maybe that makes it worthwhile? Oh and you have to wear dress clothes. On 36k a year.
Is 36k that insane? That's the average starting salary of French engineers and some PhD-level researchers from relatively well-ranked universities. 1/3 of which are compulsory taxes (not including income tax), so in the end it's about 25k of net disposable income per year.
It is insane. I started at the bottom of recession 2009 at a university for 46k.
I'm sure it depends on geography and living cost but 36k is very low imo for a private company.
Public companies such as public university, government, and such still pay a bit above that on top of good compensations (healthcare, vacations, etc...).
This is USA of course.
France in general could be different in term of tax, healthcare, etc...
Healthcare is fairly expensive in the us and rent is fairly high in the Boston area. It's not the same time period but in 2014 I was paying 1800 a month for a 1 bedroom to be within a 15 minute walk of the second to last station on the light rail system, and it wasn't overly expensive.
For USA salaries, that is. Junior devs average $62k in San Diego, California and would lose about 26% of that to tax, assuming they're single and without children.
A co-worker's son had a couple of internship options one summer: one somewhere in the health world using Mumps--actually, I think it might have been VB plus Mumps--the other at a big finance outfit. I strongly suggested the latter. Whether or not my suggestion had any effect, he took the job at the finance place.
as a long-suffering user of Meditech, I would say you dodged a bullet...it still looks like you are using MS-DOS. Shoehorned into Citrix to get it to run on modern machines...
Ex employee of Meditech Minnesota here. Magic and its variants were pretty interesting to work with. The only reason I left was what you said, about experience being crippled by not having any standard languages under your belt working there.
Proprietary language concerns aside, it was fascinating using the tech there. Backend was Magic, as described by you and others. Direct B-Tree manipulation meant I didn't learn about the relational model but learned to reason about performance and indexing very directly.
The front-end language was what I found particularly fascinating though. It was concatenative, along the lines of Forth, and had some fairly powerful functional constructs, like a multi-part IF/Case where the first true expression would be returned to the outer scope.
Stuff was stringly-typed everywhere I remember, and with little to no safety on anything - I once found a bug where adding 1 to a list caused the ending delimiter to become something else and the list became unbounded in memory.
My first ever internship in software engineering (in 2012) was in the MUMPS world! I worked on a project for a contracting company building an automated testing framework (in python) to interface with and allow the VA to refactor their massive VistA EHR that was entirely written in MUMPS.
The fact that the system works at all is total magic to me, with hundreds of subsystems and millions of lines of code, all with the same shared global variable pool. I remember having to spend a few days digging through hundreds of pages of kernel documentation (it has its own kernel!) to simply find out how to write to a file..
What you can remember seems largely correct. I think commands and syntax were case insensitive, and variables were case sensitive too? All kinds of insanity like that.
Sounds like a job for Symantec Designs to get a translation from. Although I wonder if it would even be lucrative for them to specialize in an obscure language like this, but maybe!
The EMR EPIC is written (at least at its core) in MUMPS. They do the same thing as you describe above to get employees-hire young CS grads from 2nd tier schools straight out of college, and they use good starting pay and low cost of living (its based in Wisconsin) as a lure. Of course once people are there..there's no way out except resetting your career.
I applied (and was offered) a job at EPIC out of college - their recruiters did not at all mention MUMPS or anything of the sort until I was on-site and explicitly asked some of the engineers interviewing me what languages they used. I remember them demoing some of the new features that were coming out in their EMR - "group by" support in sorting patients, etc. Not the most impressive features, and it completely crashed while they were giving the demo.
Great food, cool campus, and I really liked Madison - just not what I was looking for.
"resetting your career" isn't any kind of threat when the reset would start higher than their current situation.
More likely, there's no way out except resetting your life outside of that town in Wisconsin. And there really aren't that many good software jobs out there for the skill levels that accept jobs at Meditech/EPIC
> And there really aren't that many good software jobs out there for the skill levels that accept jobs at Meditech/EPIC
This assumes that everyone's skill level is fixed coming out of college, and that the interview process doesn't produce false negatives to let people fall through the cracks.
Epic is now working on switching to web technologies for the front-end, so if you're not one of the unlucky ones to be stuck on a purely core team, you'll get time writing Javascript and the like.
dear god...it's about time[1]...except I shudder to think what their concept of "the web" might be
[1]aside from being a long-suffering user of Meditech, I am also a long-suffering user of Epic, who had the misfortune of going through "mandatory Epic training" at 4 separate institutions that were transitioning to it from Meditech, or pencil and paper. I am still not sure which of the three systems were the most technologically advanced...
I find Epic to be more horrifying than Meditech, because Epic has somehow managed to convince many healthcare workers that it is a "modern" product worthy of praise, despite all evidence to the contrary. People talk about SmartPhrases like it's some miracle instead of a damn snippets manager (and a bad one at that).
The fact that they're moving away from VB6 to a web-based front-end in 2017 should be reason enough to assume that whatever they come out with is going to be excruciating.
I'm currently designing an [EHR system for my thesis](http://barnett.surge.sh/). I've been interviewing local GP's and healthcare professionals.
And holy hell, they hate medtech. They're actually quite happy with the functionality, but hate the interface. I had one nurse who went out of her way to contact them asking to make the smallest change, which would improve her job heaps - nearly a year later, no updates.
Thing is, these institutions are in a hard place. MedTech is shitty, but works, and changing to another system is such a huge task, why bother. Beyond that, if the majority of healthcare institutions are also in the same boat, so why go against the grain.
Healthcare software is weird man.
EDIT: I got meditech confused with medtech, my bad. Medtech still sucks.
> Meditech writes all of their own languages, databases, operating systems...The founder hated C with undying passion. No one is ever allowed to use C
Now you have my curiosity piqued. When I went to their Wikipedia entry [1], I saw that their server only runs on top of Windows. You said they run their own OS, so does that mean they effectively run an emulator of their OS on top of Windows? And if they hate C, does that mean MAGIC is self-targetable, or there is a very, very tiny chunk of C within Meditech, or that they develop in assembler to bootstrap their emulator?
An entire OS written in a Mumps dialect and a half-billion dollar company built around it (replete with an ecosystem of consulting companies) or TempleOS [2] vie in my mind for about the same uniqueness level.
Their oldest of three platforms was in its own whole OS, with a centralized server and command line remote access to it.
They then changed over to everything running as services under Windows servers, including a wacky append-only plaintext file system for audit logs.
I used to support their scanning and archiving stuff, which mostly meant fixing the horrible layers of Windows folder permissions on various Windows versions.
I had to deal with Meditech for 9 years supporting the infrastructure requirements for a hospital group.
We had to fight to get them to agree on any improvements we wanted to make :
- virtualization
- support of vmware VMDK files instead of RDM
- support for non EMC arrays
- support for hyperconverged (nutanix)
- support for non EMC Networker or BridgeHead Backup
- DR process not using some proprietary software
- file archiving not using proprietary tool
version 5.x was a 3 tier application that looked like Windows 3.1
version 6.x no longer required 3 tier, not because they fixed it but just required you to run Citrix and UI was similar to GUI being put on top of AS/400 green screens (menu system) ... have a look here if you dare :) http://webapp.cchcs.org/tutorials/CBT/ADM/ADM%20Registration...
Apparently they are working on a SQL port and we advocated for years that they should focus on the business side using industry standard tools and languages.
I'm not hopeful tho as they wouldn't support things like Windows VSS and built their own tool, still had multiple single points of failures (20 "File Servers" aka the database backend and none redundant), issues with NTFS FAL fragmentation (and associated requirement to get a third party tool to monitor and fix) and the list goes on...
Moved on recently and only thing that looks good on the resume is, for people knowing Meditech, seeing all the changes we were able to push through ...
Oh and yes users were not big fans. All data entry needs to be entered in CAPITAL (no auto convert) so you need to caps lock when in Meditech and then remove the lock when switching to something like Word and the spacebar is a keyboard shortcut to select an item ...
And to really appreciated how bad it is, just search for "Meditech sucks" and read feedback from nurses ...
Back to the original post, I put MUMPS in the same category as COBOL ... useful a long time ago.
That's fascinating to hear. One of the key factors I heard that the EHR/EMR industry converged upon M is because patient records are sparse data efficiently represented in a key-value database, but which mapped inefficiently to SQL. The example given to me was a patient schema represented in SQL could literally have tens of thousands of columns/fields, of which only several hundred were used for each specific patient. Was the explanation given to me incorrect, or has the situation in the industry changed?
I previously used meditech on a daily basis, and good grief is it horrible. I've seen intelligent people spend 45 minutes just trying to figure out how to write a simple progress note before giving up and writing it by hand.
What's very frustrating is that no one - EMR vendors, hospitals, or even doctors - seem to realize just how much of a productivity booster good UX design can be. Even the ability to have multiple windows open at once (i.e. the ability to look at lab results while writing orders or a progress note) would be a breath of fresh air.
It's a marketplace designed to be exploited by shitty vendors.
You have the hospital administration that cares about billing first and foremost. Then you have doctors who have 500 lb egos and could give a shit about the computer systems.
All the company has to do is sell regional hospitals and the smaller practices will fall in line to more easily interact with the health network.
When my wife had our baby, we were in the hospital for a few days due to some complications. The OB nurses rolled around carts with two thin clients and two PCs on a KVM. There were seperate systems for charting, pharmacy, special OB charting, and something else. It was ridiculous.
Same story from the 90s: there was a company called IDX in Massachusetts (and Vermont) which sucked in many MIT recent grads. They were bought by GE healthcare. One person I know is still working there, making periodic trips to Burlington.
I think MUMPS was closely tied to VAX VMS at one point. I'm sure HP (Compaq (DEC)) still makes MUMPS money from OpenVMS.
When I was there a few years ago they were actively developing a new variant on one of their languages. They seemed to be going slightly more OOP to balance their functional paradigm out.
IIRC, this was a side project written by a friend of mine. He developed it in his spare time, due to his frustrations with MAGIC, and showed it off to enough people that they at least took enough interest to put some effort into it.
He's very much a Meditech lifer, and at this point may have been there for ~20 years at this point. From where he started, it was a big step up. Though what he could've done after his first 7 years at the place, I can only imagine, if he simply put in the effort to go anywhere else.
From what I can remember:
-Only global variables
-Variables must only be capital letters, maximum length 6. If you run out of variables, you must cleverly use them in a routine and set them back to what they are. This means you can't use a name like myVar - you use AAAFD, ZBVCXZ, etc.
-System functions are usually things like ., >, ', ], so code looks like .'AAAF]{\;:..
-Meditech writes all of their own languages, databases, operating systems, tools, etc. You can only write in a non-Meditech language if you get approval from a multi-tiered architectural design board, which barely ever happens
-The founder hated C with undying passion. No one is ever allowed to use C
-All programming hires go through a 6 to 12 month training process to learn the tools, languages, and systems. As they almost exclusively hire non-CS majors, such as math and physics majors, they don't typically have a programming background and don't realize how bizarre the MediTech stack is
Because MediTech engineers get experience in a proprietary suite of technologies that is only used there, it is extremely difficult for them to get new jobs at the same pay grade and experience level. 5 years at MediTech is worth 0 years anywhere else. However, I have hired a few of these people, and while they knew nothing about say Python, JS, Linux, etc. when hired, their deep understanding of how computers work made them very skilled once they picked up the modern technologies. Not many engineers program for years in low-level nightmare languages before touching JavaScript or Python, most start high-level and go lower. The foundation provided by working in a language like Magic makes them know computers at a deeper level than most.