Readit News logoReadit News
skissane · 2 months ago
The core idea-a language with a built-in persistent key-value store-is actually pretty cool.

The classic implementation is filled with horrible warts, although arguably many of them were helpful in squeezing a production multiuser system into the tiny resource constraints of the original 1960s implementation platform (18-bit PDP-7, same machine as Unix was birthed on, although Unix soon moved to the 16-bit PDP-11, which was in practice more spacious)

Modern implementations make many of those warts optional, although they still support them for backward compatibility

The biggest problem with the language in practice is that many major code bases (e.g. VistA) are still predominantly written in the legacy extremely terse coding style rather than a more modern readable style. I do wonder why there isn’t more effort put into migrating to a more modern style, especially since with the kinds of tools we have nowadays that migration could be (at least partially) automated.

goodthink · 2 months ago
The VA still requires "routines" to be < 20000 characters. So programming with single letter commands will always be ingrained in M code. Besides its a lot less typing :) The biggest problem I have with the ecosystem is the $P (PIECE) command (splits ^-delimited strings) bled into the GUI codebase so everywhere the devs wrote code like if Piece(3)=1 making it impossible to reason about.
mamcx · 2 months ago
FoxPro(dBase family) was a much better take on the idea.

I also dream of something modern like this (https://tablam.org) but is certainly a significant undertaking. Accept partners!

skissane · 2 months ago
> FoxPro(dBase family) was a much better take on the idea

xBase is arguably a very different idea - it is based on flat-file/key-indexed databases, akin to VSAM on IBM mainframes, but wrapped in a 4GL. The experience of xBase is very similar to many mainframe 4GLs, what made it distinctive was providing that experience on low-end platforms (it started out on 8-bit CP/M systems, but it was on 16-bit DOS that it really took off)

By contrast, MUMPS has multidimensional associative arrays as a basic data type, and the difference between temporary (in-memory) and persistent (on-disk) arrays is simply whether the variable name is prefixed by a caret. Perl’s tied arrays are close, but tied arrays are a rather peripheral feature of Perl (many Perl code bases never use them), but a central feature of MUMPS

RodgerTheGreat · 2 months ago
You might find some interesting ideas in Lil, which is also a kdb+ descendant: http://beyondloom.com/tools/trylil.html
EvanAnderson · 2 months ago
BeFlatXIII · 2 months ago
S Y=$C(34),X="W ""S Y=$C(34),X=""_Y X ""F %=1:1:6 W $P(X,Y,%),Y,Y"" W Y,"" X X""" X X
roywiggins · 2 months ago
I ran across SHA1 implemented in MUMPS once. And handwritten bitwise operations, since MUMPS doesn't have those as operators.
Forge36 · 2 months ago
A statement that writes itself? Neat!
dang · 2 months ago
A Case of the MUMPS (2007) - https://news.ycombinator.com/item?id=36268931 - June 2023 (109 comments)
tkclough · 2 months ago
I work in MUMPS daily and this is such an odd take to me. It's entirely possible to write very readable and maintainable MUMPS, and I find it fairly pleasant to write. There's lots of poorly written code, sure, but you can write bad software in any language.
surgical_fire · 2 months ago
Classic. Probably one of their best articles.
zeruch · 2 months ago
I learned MUMPS years ago at UC Davis (Dick Walters, one of the language maintainers, was tenured there) and I found it a really interesting, but deeply weird language. Walters himself was a considerate, patient dude with me, struggling to deal with at the time a truly strange beast.
burnt-resistor · 2 months ago
That's where I heard about it. I was a student from 2000-2009 when Sean Davis was around.

If anyone remembers, CSIF used NIS (not even NIS+) and all password hashes were available to everyone on any cluster machine by running `getent passwd`. John the Ripper found about 90 short/dictionary-based passwords within one minute on a machine of that era.

telecomhacker · 2 months ago
Part-time MUMPS programmer here for a health system in NYC. I still love writing in it. The rates are way better than other eco-systems (e.g. Python, Java, blah blah) , probably because the eco-system isn't diluted with low-wage workers from India/China. This is because 95%+ of Epic/Ex-Epic employees are American. I would even argue it is the patriotic language of choice due to that reason.

Expected pay of 85-120/hour, which pays way more than my full-time job. It's a fun language to write in, and the adrenaline rush you get when you get a triple index loop working is awesome.

Also random fact - according to Epic HR , the average college GPA of Epic employees was 3.5, which is probably the perfect formula in hiring loyal corporate servants. I always thought it was weird that I had to apply with my transcripts and resume.

coderjames · 2 months ago
> I always thought it was weird that I had to apply with my transcripts and resume.

I similarly thought it weird when Garmin asked me for transcripts when I applied there a few years ago. It had been 15 years since I'd graduated, so I was lucky I still had a couple copies of my official transcripts from back then. After spending the effort to find and scan them in with my 3.8 GPA, didn't even get a phone screen.

jampekka · 2 months ago
I'm not sure I love paying it with worse health services though. My city has sunk almost a billion dollars into a dysfunctional Epic pile of MUMPS.

But I guess it's nice to see the healthcare software disgrace works well at least for some.

telecomhacker · 2 months ago
I primarily work on clinical data, and from that side, the technology stack—MUMPS included—has its quirks but generally gets the job done. The real dysfunction in U.S. healthcare isn’t the software or the language itself, but the system it’s built to serve. The core issues lie in the incentives around revenue cycle management and the structure of the insurance industry. Blaming MUMPS is like blaming COBOL for bank fees—it’s the system, not just the syntax.
skissane · 2 months ago
> My city has sunk almost a billion dollars into a dysfunctional Epic pile of MUMPS.

I don’t know if the alternatives - e.g. Oracle Health/Cerner - are really that much better - and if Epic is as bad as you say, I suspect that says more about their corporate culture than choice of programming language

Dig1t · 2 months ago
Man this is an interesting comment.

>probably because the eco-system isn't diluted with low-wage workers from India/China.

Are there other technologies like MUMPS that have the same characteristics?

UltraSane · 2 months ago
Not technology but you need to be a US citizen to get a security clearance for jobs that require one.
Sniffnoy · 2 months ago
If you don't mind me asking -- how did you find a job like this? I live in NYC, I'm looking for work, I worked briefly at Epic, I don't mind MUMPS, and honestly something involving MUMPS sounds like it's probably more my style than a lot of what else is out there. I don't really know how to look for jobs like this I'm afraid!

Deleted Comment

BeFlatXIII · 2 months ago
Makes me curious about getting MUMPS to run locally on a Mac. I had great fun with it 15 years ago.
twoodfin · 2 months ago
https://hub.docker.com/r/intersystems/iris-community

Should be super easy.

There’s also a native Apple Silicon tarball that I’m not sure is as easy to get your hands on.

goodthink · 2 months ago
https://gitlab.com/Reference-Standard-M/rsm is small, no-frills, really cool. http://yottadb.com if you want one with all the bells and whistles.

Deleted Comment

analog31 · 2 months ago
The GPA of 3.5 is their minimum for considering a candidate.
burnt-resistor · 2 months ago
That's far too low if those are current USD figures; you're hurting your and others' incomes by working too cheaply in a niché field. I was making $280k TC as a Rubyist at Meta or $10k/week consulting 10 years ago. That's not anywhere near as niché as Erlang/Elixir/Phoenix, OCaml, embedded Haskell, or embedded Rust. Or COBOL. ;o)
telecomhacker · 2 months ago
It’s purely remote and super chill. Not everyone wants to work on ads/compete with Indians/Chinese. I’d rather make 200k helping clinicians be more efficient using ML than $300k+ optimizing two tower models to increase the CTR on ads.
kiernanmcgowan · 2 months ago
Hey there to all the EPIC kids poking their head in this thread. Where did you all end up post-EPIC?
vwem · 2 months ago
Went to a smaller company for a short time, than ended up at FAANGs.

Epic had some nice features and it was really cool working directly with nurses and doctors. But it has some churn issues and the software sucks to use, especially with Epic's insistence on "all software built in house". While a good marketing ploy, it results in reinventing crappier wheels.

caycep · 2 months ago
as a long suffering user, it always seemed like an ancient enterprise app. Always have to log in through some horrible Citrix setup to use it too...
roywiggins · 2 months ago
Feast your eyes on Caché Server Pages. Mumps on the web.

https://docs.intersystems.com/latest/csp/docbook/DocBook.UI....

jampekka · 2 months ago
The layout being broken on mobile is totally on-brand.
cmrdporcupine · 2 months ago
These kind of hierarchical / network database systems are what caused E.F. Codd to tear his hair out and write https://www.seas.upenn.edu/~zives/03f/cis550/codd.pdf
jampekka · 2 months ago
Codd tore his hair out also about it becoming SQL.
jaybrendansmith · 2 months ago
Way back in the day, while bored at my SaaS MUMPS support job, I wrote a version of the 'artillery' game in MUMPS, complete with graphics and explosions. I still wish I had that code somewhere :)