frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

Open in hackernews

MUMPS

https://en.wikipedia.org/wiki/MUMPS
90•surprisetalk•17h ago

Comments

EvanAnderson•17h ago
Worth linking for a hotter take: https://thedailywtf.com/articles/A_Case_of_the_MUMPS
BeFlatXIII•17h 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•16h ago
I ran across SHA1 implemented in MUMPS once. And handwritten bitwise operations, since MUMPS doesn't have those as operators.
timschmidt•16h ago
Oof. Unrelated to MUMPS, but the worst I've ever run into was a reimplementation of PHP's register_globals 20 years after it'd been patched out as a security nightmare, because the developer enjoyed the convenience.
roywiggins•15h ago
One fun thing about MUMPS is that if you don't use the newfangled "new" keyword when declaring them, variables iirc are all global to the file. Or record, or whatever not-quite-a-file entity contains source code in MUMPS systems (8 character hard limit on filenames)

And of course some code ends up relying on ambient global state to function properly, so the codebase is strewn with "environment setting" methods that set up the required globals before you call the functions that rely on them.

The other fun one iirc is that calling a function inside the "true" branch of an IF can clobber the global TEST flag and cause the "false" branch to execute as well, since the "else" keyword relies on $TEST to decide what to do. The fix is to end it with a noop "if true" to unclobber $TEST.

The other worst MUMPS code was MUMPS code that used string concatenation to generate more MUMPS code from the worst DSL you've ever seen, MUMPS code that seemed to partially implement a MUMPS interpreter...

Forge36•14h ago
A statement that writes itself? Neat!
dang•16h ago
A Case of the MUMPS (2007) - https://news.ycombinator.com/item?id=36268931 - June 2023 (109 comments)
tkclough•10h 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•5h ago
Classic. Probably one of their best articles.
kiernanmcgowan•17h ago
Hey there to all the EPIC kids poking their head in this thread. Where did you all end up post-EPIC?
vwem•16h 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•15h 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...
mandevil•17h ago
Looks like someone just got hired to work at Epic!
paxys•17h ago
> First appeared 1966; 59 years ago

That's honestly impressive. Though I don't envy people who have to work on this stuff.

exizt88•17h ago
> OPERATORS: No precedence, executed left to right, parenthesize as desired. 2+3*10 yields 50.

How do you even come up with this?

Jtsummers•17h ago
It's easier to parse since you can process it in-order, makes for an easier single pass approach.
tbrownaw•17h ago
Simplicity of implementation?
skissane•17h ago
Not just simplicity-the original implementation was for a very resource-constrained 1960s minicomputer, where a more complex implementation would have slowed the system down even more and left less memory for running the actual business application
jorkingit•17h ago
Smalltalk does the same thing!
valleyer•17h ago
Because it's dead-simple to parse? Remember that not all machines back then had hardware call-stacks.
tuveson•17h ago
It’s definitely easier to parse, but you can use shunting yard to do operator precedence parsing using very little extra memory and no recursion. I feel like the language is just poorly designed.
skissane•17h ago
To be charitable to its original designers, information was much less easily accessible in the 1960s than today-although the shunting yard algorithm had been published in the research literature in 1961, practitioners working 5-6 years later may plausibly have been unaware of it-it wasn’t like nowadays where they could easily discover it in Wikipedia or by asking an LLM.
tuveson•17h ago
Yeah, that's fair enough. I'm sure a lot of weird / bad language design choices can be chalked up to this (COBOL...). Now that C and Pascal derived languages have been around for a long time, even if you don't know about how parsers work, everyone knows that certain syntax / semantics are at least possible since they're the norm, and I suppose that wasn't the case back then.
thomascountz•17h ago
Would reverse Polish notation be just as easy to parse and interpret?
ofalkaed•16h ago
RPN is slightly easier to parse and interpret but more difficult for most humans to parse and interpret. This is the middle ground that most everyone can quickly and easily adapt to writing and reading but would still be efficient on most any system.
chrchr•14h ago
This approach is, arguably, more readable because it relies on a simple left-to-right evaluation. Programmers don't have to recall the complex, though often familiar, rules of operator precedence.
randomNumber7•17h ago
Tell me you would have come up with a Pratt parser yourself (or even a parser generator).
Arnavion•17h ago
PSA: POSIX shells (bash etc) do the same thing for && and ||. `true || false && false; echo $?` will be 1, not 0, because it evaluates `true || false -> true; true && false -> false`, not `false && false -> false; true || false -> true`. Don't assume like I once did that they have precedence like they have in C etc :D
gnulinux•17h ago
I implemented the same in some of my programming languages. If you look into very generic mixfix operators in some languages like Agda, you'll realize that operator precedence is a mess and it feels so much better to get rid of it. Of course, it makes the language unusable as a mainstream language, but it makes so much more logical sense.
koakuma-chan•16h ago
Who came up with math precedence? Why is multiplication done first?
roywiggins•16h ago
The explanation that makes most sense to me is that it's mostly to avoid having to explicitly write out parentheses a lot of the time. Especially for things like polynomials, which are a bunch of multiplied terms added together, eg 3x+2y and not (3*x)+(2*y). And in polynomials you can even drop the explicit multiplication symbol, so it's much neater. And once you've done this for algebra now you have to do it for plain arithmetic as well to make it all match up, and 3*5+2*7 gives the same answer as evaluating the polynomial at 5,7
UltraSane•13h ago
I honestly prefer that over complex precedence rules.
skissane•17h 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.

mamcx•16h 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•16h 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•13h ago
You might find some interesting ideas in Lil, which is also a kdb+ descendant: http://beyondloom.com/tools/trylil.html
goodthink•12h 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.
cmrdporcupine•17h 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•17h ago
Codd tore his hair out also about it becoming SQL.
telecomhacker•17h 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.

jampekka•17h 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.

skissane•17h 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

jampekka•16h ago
That was the story why Epic was chosen. It was made to be a dilemma between Epic and Cerner, by design.

In reality it's not a dilemma. In other cities and countries there are EHR systems from other vendors that work less bad and with lower cost.

telecomhacker•17h 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.
jampekka•16h ago
I'm not from US. The dollars were converted from euros. Our Epic/MUMPS installation is 100% tax funded single-payer with no insurance company involvement.

But MUMPS is indeed more a symptom of a rotten industry. E.g. the bidding process that led to this mess was very corrupt, from all sides.

BeFlatXIII•17h ago
Makes me curious about getting MUMPS to run locally on a Mac. I had great fun with it 15 years ago.
twoodfin•16h 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•12h 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.
Dig1t•16h 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•13h ago
Not technology but you need to be a US citizen to get a security clearance for jobs that require one.
burnt-resistor•16h 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•16h 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.
coderjames•15h 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.

analog31•14h ago
The GPA of 3.5 is their minimum for considering a candidate.
Sniffnoy•13h 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!
roywiggins•17h ago
Feast your eyes on Caché Server Pages. Mumps on the web.

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

jampekka•17h ago
The layout being broken on mobile is totally on-brand.
zeruch•17h 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•16h 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.

moomin•16h ago
Obligatory: https://thedailywtf.com/articles/a_case_of_the_mumps
dang•16h ago
Related. Others?

A Case of the MUMPS (2007) - https://news.ycombinator.com/item?id=36268931 - June 2023 (109 comments)

M, or MUMPS is a procedural language with a built-in NoSQL database - https://news.ycombinator.com/item?id=19388048 - March 2019 (2 comments)

MUMPS - https://news.ycombinator.com/item?id=18936990 - Jan 2019 (6 comments)

Isn't There a Vaccine for MUMPS? - https://news.ycombinator.com/item?id=17898927 - Sept 2018 (2 comments)

Introduction to the Mumps Language (2017) [pdf] - https://news.ycombinator.com/item?id=16309237 - Feb 2018 (42 comments)

The Mumps Programming Language - https://news.ycombinator.com/item?id=13859961 - March 2017 (178 comments)

MUMPS Instance - https://news.ycombinator.com/item?id=13618649 - Feb 2017 (1 comment)

Ask HN: Encryption and Security in MUMPS - https://news.ycombinator.com/item?id=13542953 - Feb 2017 (4 comments)

50 year old NoSQL DB that is better than MongoDB - https://news.ycombinator.com/item?id=12791425 - Oct 2016 (2 comments)

MUMPS, the Archaic Health-Care Programming Language - https://news.ycombinator.com/item?id=9895311 - July 2015 (49 comments)

I am a MUMPS programmer – Ask me anything - https://news.ycombinator.com/item?id=6312391 - Sept 2013 (68 comments)

clabretro•16h ago
Great hands on video with MUMPS: https://youtu.be/Ij9k7EQ5AZQ
lowmagnet•15h ago
I used to convert data from a mumps system to a cobol based one 30 years ago. Fun times
jaybrendansmith•14h 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 :)
UltraSane•13h ago
I worked at Epic the EMR company that probably has written more lines of M than any other company. Their EMR suite is the most popular in the US. They have a very high ratio of testers to programmers and I always wondered if this is because their ancient M code base is very brittle.
hellojesus•9h ago
I just heard about it for the first time today on the Primeagen post where TJ mentioned his first job was at Epic where he used Mumps. I assume that is how this came about timing-wise.

https://youtu.be/_CwpzZ8AVio

JohnDeHope•2h ago
This was the first programming language I got paid to code in. It really did look like line noise. Good times.

Diagnosing a double-free concurrency bug in Rust's unbounded channels

https://materialize.com/blog/rust-concurrency-bug-unbounded-channels/
1•fanf2•2m ago•0 comments

I Analyzed 16,384 Bundle Combinations (and You Should Too)

https://www.puruvj.dev/blog/neodrag-16k-bundle-combos
1•khromov•2m ago•0 comments

Would photographers want a simple gallery and payment tool?

1•esmeth•3m ago•0 comments

The Talk Show Live from WWDC 2025

https://daringfireball.net/2025/06/the_talk_show_live_from_wwdc_2025
1•Bogdanp•5m ago•0 comments

Show HN: AI kitchen design from photo – Instantly redesign any room

https://kitchendesign.io
1•mrafii•9m ago•0 comments

A Rural Public Transit Odyssey

https://shagbark.substack.com/p/a-rural-public-transit-odyssey
1•herbertl•9m ago•0 comments

Your Code Sucks Too: The HITL Delusion

https://algarch.com/blog/your-code-sucks-too-the-hitl-delusion
1•jdalton•9m ago•1 comments

An AI analyst made 30 years of stock picks – and outperformed human investors

https://www.gsb.stanford.edu/insights/ai-analyst-made-30-years-stock-picks-blew-human-investors-away
1•pingou•11m ago•0 comments

The Stoics on What to Do When the World Feels Broken

https://philosophybreak.com/articles/the-stoics-on-what-to-do-when-the-world-feels-broken/
1•squircle•11m ago•0 comments

He who submits a resume has lost

https://residentcontrarian.substack.com/p/he-who-submits-a-resume-has-already
3•FlyingSnake•13m ago•0 comments

Cyber weapons in the Israel-Iran conflict may hit the US

https://www.theregister.com/2025/06/13/cyber_weapons_israel_iran/
3•rntn•13m ago•0 comments

Made a site that lets you share prompts across AI models

https://furthur.ai/
1•nordic_lion•14m ago•0 comments

An interpreted and deterministic variation of Go for smart contracts

https://gno.land/
1•zxxma•21m ago•1 comments

A Straightforward Explanation of the Good Regulator Theorem

https://www.lesswrong.com/posts/JQefBJDHG6Wgffw6T/a-straightforward-explanation-of-the-good-regulator-theorem
2•surprisetalk•22m ago•0 comments

Ask HN: Future of Learning and Personal/Professional Development?

1•squircle•26m ago•0 comments

Resolver Pattern: A Better Alternative to GraphQL in BFF

https://github.com/allmonday/compare-graphql-vs-resolver/blob/master/README-en.md
2•tank-34•26m ago•0 comments

A2A Is for UI

https://timkellogg.me/blog/2025/06/14/a2a
1•tkellogg•26m ago•0 comments

The Aesthetics of Multicoding Esolangs

https://stars.library.ucf.edu/cgi/viewcontent.cgi?article=1037&context=elo2020
1•unwieldy•27m ago•0 comments

A Third of Forests Lost This Century Will Likely Never Be Restored

https://e360.yale.edu/digest/global-deforestation-drivers
1•Brajeshwar•28m ago•0 comments

AI Engineering Goes Mainstream

https://www.latent.space/p/aiewf-2025-keynotes
1•Brajeshwar•28m ago•0 comments

Context Window Saturation in Reasoning Agents

https://jdsemrau.substack.com/p/context-window-saturation-in-reasoning
2•Brajeshwar•28m ago•0 comments

Ask HN: How do you teach your kids about AI?

1•markun•32m ago•0 comments

Education: Beyond Theories and Indoctrination

https://www.researchgate.net/publication/383655474_Education_Beyond_Theories_and_Indoctrination
1•squircle•34m ago•0 comments

Shared Electric Cargo Bikes Are Changing Cities

https://reasonstobecheerful.world/shared-electric-cargo-bikes-cities/
1•PaulHoule•37m ago•0 comments

The 'Macintosh' Screen Saver

https://512pixels.net/2025/06/inside-macintosh-screen-saver/
1•ibobev•38m ago•0 comments

macOS Tahoe forces all app icons into iOS squircles

https://lapcatsoftware.com/articles/2025/6/2.html
2•akyuu•40m ago•1 comments

Show HN: Customizable "Hex" Clock

https://hardkorebob.github.io/hexbars.html
2•bobrobpr•41m ago•0 comments

Vantablack Paint Might Have a Legitimate Use Case in Space

https://www.jalopnik.com/1884081/vantablack-paint-might-have-legitimate-use-in-space/
3•bookofjoe•47m ago•0 comments

Getting Explicit Instruction Right

https://arxiv.org/abs/2506.10480
2•ludicrousdispla•47m ago•0 comments

I have reimplemented Stable Diffusion 3.5 from scratch in pure PyTorch

https://github.com/yousef-rafat/miniDiffusion
23•yousef_g•48m ago•3 comments