Skip to content(if available)orjump to list(if available)

The Story of Mel (1983)

The Story of Mel (1983)

174 comments

·August 9, 2022

kps

So, the RPC-4000 version of blackjack seems lost, but the LGP-30 version exists (and can be run on simh). I've disassembled and partly annotated it, and found that it too has a sort of cheat switch.

The LGP-30 has no source of randomness to use as a seed. From loading the program, if the player plays optimally, the games will all be the same. Over the first few dozen games, the player ends up in the hole (IIRC, noticeably more than the long-run house edge).

The LGP-30 has one conditional branch instruction, that tests the sign bit of the accumulator. But if the sign bit on the instruction is set, and the TRANSFER CONTROL switch on the front panel is set, then the branch is always taken. This appears once in the program. On startup, if the switch is set, it marks two of the aces as already dealt. This perturbs the sequence enough so that, over the first few dozen games, the player has the advantage.

kps

Too late to edit, but I misremembered a little: from an earlier comment that I'd forgotten I'd made¹, the program image on paper tape had the aces marked dealt, and the TRANSFER CONTROL test switch merely skipped the part of initialization that cleared it. This means that (with sufficient time and dedication) one could in principle prepare multple tapes with different starting configurations, analogous to editing a binary to change a hardcoded seed.

¹ https://news.ycombinator.com/item?id=20489774

null

[deleted]

pfarrell

This page [0] includes an analysis of the manual for the possible machine Mel programmed in the story along with a probable photograph of him.

[1] is an instruction manual for the blackjack program itself, written by Mel.

Classic story solidly in the “should be reposted every six months or so” cohort.

0: https://www.freecodecamp.org/news/macho-programmers-drum-mem...

1: http://bitsavers.trailing-edge.com/pdf/royalPrecision/RPC-40...

chimeracoder

> I did eventually manage to get in contact with Mel, but I scared him away, unfortunately. That's a story for another day... :-/

I'm... very curious what this entailed

mbakke

The answer can be found in this very thread:

https://news.ycombinator.com/item?id=32400786

nocoiner

It’s interesting to me that caption to the 1956 newspaper picture in the first linked article identifies someone from the NSA. I thought the mere existence of that agency was basically classified information well into the ‘70s.

pfarrell

That’s puzzling! Thanks to the author’s sourcing, a quick search turned up a scan of the full article [0]. My initial thought was, maybe it’s a name collision and this National Security Agency in 1956 is an insurance or accounting firm, but the source article doesn’t elaborate.

0: https://www.librascopememories.com/Librascope_Memories/1950_...

agentwiggles

I've always loved this story as a tribute to the early hacker ethos. So easy to forget how high up the stack we live these days.

There are a few other gems at this site, in the "hacker folklore" appendix. http://catb.org/esr/jargon/html/index.html

I like "How to Become a Hacker", and the AI Koans too. Lots of good stuff there. These old pages have a certain biblical magic to them.

I love our field! Long live the hacker.

zasdffaa

Thanks, I'll read your link but I must dispute your enthusiasm:

"It took me two weeks to figure it out"

Leaving a no-documentation time bomb for your successor is not to be celebrated, nor IMO is it a hackerish thing to do.

philwelch

It’s not to be celebrated, but it’s an extremely hackerish thing to do.

jandrusk

I wrote a Twitter bot in Python that tweets one of the Hacker Dictionary Words of Day once a day.

https://twitter.com/hashtag/hackdict?src=hashtag_click

dang

Don't miss this: https://news.ycombinator.com/item?id=20489273 (edit: from kps via https://news.ycombinator.com/item?id=32400756 - thanks!)

The OP has been posted so many times that even 10+ years ago people would mention how often it had already appeared. Yet there have been surprisingly few interesting discussions, either of the original story or in related threads. These are all I could find. If there are others, please let me know!

The Story Of Mel - https://news.ycombinator.com/item?id=7869771 - June 2014 (77 comments)

The story of Mel (1983) - https://news.ycombinator.com/item?id=678999 - June 2009 (22 comments)

The story of Mel, a Real Programmer - https://news.ycombinator.com/item?id=181144 - May 2008 (9 comments)

Related threads:

Mel's Loop – A Comprehensive Guide to The Story of Mel - https://news.ycombinator.com/item?id=31458048 - May 2022 (2 comments)

LGP-30 – A Drum Computer of Significance - https://news.ycombinator.com/item?id=20484330 - July 2019 (39 comments)

The Story of Mel Explained - https://news.ycombinator.com/item?id=9913835 - July 2015 (25 comments)

makeworld

The Story of Mel, explained: https://jamesseibel.com/the-story-of-mel/

Great addition to the original story, as there's lots of background required for modern readers.

dang

Discussed once here:

The Story of Mel Explained - https://news.ycombinator.com/item?id=9913835 - July 2015 (25 comments)

NickRandom

Worthwhile checking out some of the other stories in the parent directory (https://www.cs.utah.edu/~elb/folklore/).

Thanks for posting this, it made for a fun read and some of the other ones (especially the Robin Hood and Friar Tuck story) made me chuckle.

markus_zhang

I think I found Melvin Kaye's obituary a few years ago but I couldn't find it anymore. A pity that both him and Ed Nather passed away :(

mlyle

There's this comment long ago about getting in contact with him that has always made me curious, but no information was proffered: https://news.ycombinator.com/item?id=7871260

And, of course, there's this picture that was found of him:

https://zappa.brainiac.com/MelKaye.png

acuozzo

> but no information was proffered

What more would you like to know? I'm bad at telling stories, but I can do Q&A.

mlyle

:D I'm just guessing at questions, since I don't have much context.

You found him-- did you get to really talk to him? Find out how he looks back on that era? Did he keep programming?

What scared him away?

naniwaduni

Bonus trivia: those "Raw, unadorned, inscrutable hexadecimal numbers"? Those would not have been the 0-9a-f we're familiar with today, but 0-9fgjkqw[1]!

[1]: http://ed-thelen.org/comp-hist/lgp-30-man.html#R4.13

drfuchs

The reason for FGJKQW is simple: Look at the list of single-letter mnemonics for the 16 opcodes (called “orders” in the manual you cite). Sort them alphabetically, and look for the first six letters that are unused. Viola! (Of course, the problematic letter O is skipped, and for some reason, V as well.)

That’s how it was explained to me in 1973 by Mr. Willoughby, a math teacher who also taught Computer Programming in my high school. We didn’t actually have an LGP30, but he had learned on one, and graded our programs handed in written on paper.

Fortunately, this was only for the first half of the class; after we learned this machine language, we graduated to a higher-level language, Neat3, for the NCR (yes, the cash register company) Century 100, one of which the school district did own. Subsequent assignments were handed in on punchcards and actually compiled and run. By the teacher. After school. So you’d get back your compile error the next day, or if you were more fortunate, your output. If your program compiled and ran and gave the right answer the first time, you’d get a grade of 100. Then 97, 94, 91, etc. It was quite the motivation for carefully planning things out ahead of time.

And his reason for starting with machine language? “Well, you can’t expect anyone to understand what’s really going on in higher-level languages if you don’t know what’s happening underneath, right?” Worked for me.

mlyle

> And his reason for starting with machine language? “Well, you can’t expect anyone to understand what’s really going on in higher-level languages if you don’t know what’s happening underneath, right?” Worked for me.

I teach a middle school class called "Computer Organization and Design". It's basically from gates and truth tables, up to implementing ALU functions, to understanding bits of sequential logic... then some handwavy computer architecture stuff to save time, and finally on to handing out a simplified, reduced-instruction ARMv7 THUMB machine language reference, and students writing their own programs on paper and assembling them.

There's a couple digital logic labs in there, and finally they get their own little computers with a simple monitor program that lets them enter programs, single step, and view registers.

I wasn't sure how reaction would be. Many of the students love it. Middle school students seem to do pretty good at this stuff, too-- their memory of learning arithmetic is recent enough that learning a bunch of new similar rules (combinatorial operations, multiplexing, hexadecimal, instruction encodings, etc) seems simple. And, well, no one told them this stuff is often considered "hard."

ddingus

Amazing!

And it parallels the early learning my peer group and I experienced in the 80's.

We had Apple 2 type computers to work with and a small group of us were split off to do a deeper dive education. And really it was a sort of student guided education.

Basically, the teacher asked is to declare what we were going to try and do and that was more about making sure we did something besides play games than it was anything else.

So we did that and came to the same conclusion!

And that kicked off a love of the lower level computing that persists to this day. 6502 was not too difficult and what the teacher did was of high value:

They found us the info we needed. Data books, magazines, whatever contained material we could use. And we attacked it together.

One thing I picked up on super early was the powers of two and how it really all boils down to address lines! Was a great insight for a young person and I remember teaching others about hexadecimal, the first 16 powers of two and lots of number related things.

Others had something they grokked and together we learned a ton, each person teaching what they could to the others and doing projects together.

And we are talking stuff like:

Count numbers 0 to 9999999 on screen

Draw a Sprite and move it around

Play music on the speaker

Do maths of various kinds.

These were all slow or impractical using the Applesoft BASIC.

In assembly language, they made sense and were performant.

As machine code, they could be loaded from disk and called by BASIC.

The logic parts took me a while, but the moment AND, OR, XOR started to make sense was the moment I really started to do computing. Those things and the numbers and how they are used to represent stuff was the core of all that was to come.

We all sort of came to that understanding and it was all a beautiful experience. One of the best bits of it was our teacher being curious and as playful as we were! The tech was literally intoxicating.

Bet your experiences are much the same.

For what it is worth, the other core piece was I/O. That moment when one realizes they can POKE a number into a register, and for that matter knowing what a register vs. a RAM memory were, and then seeing an LED or hearing a speaker click were the absolute BEST!

In my view, making sure we have this kind of education happening is super important and ultra high value.

It is no different from the other basics:

Money

Wood

Metal

Computing

Cars and farm machinery

Electronics

Etc...

Many of my class ended High School with good, all around basic competency. I grew up in sometimes profound poverty. For me, it was actually a benefit because I was lucky to be among people who did not judge and gave me opportunity to put all those learned skills to use.

Made a huge difference in my own life.

But the same can be said of just about all the students I know being exposed to what I will just call fundamental type education. Everyone was capable and ready and able to learn just about anything.

Looking back at my class, a fair number of us went to college. Another big slice went into the various trades, and some into business.

The ones who were not involved in the fundemental type education generally struggled more.

Now this is all anecdotal, but I do find common themes when these discussions happen. Generally speaking, it can really help people and rarely hurts them to be exposed to potent basics early in life.

Well done.

What have they done with their little computers? Anything notable? If you can share, please do.

null

[deleted]

masswerk

This was partly because letters also served as instruction codes with some mnemonic aspects to them. (This is also found on early Univacs. Coincidentally, Stan Frankel, the designer of the LGP-30, came from Eckert’s and Mauchly’s team.)

As in:

  b - bring from memory (load into AC)
  h - hold and store (deposit AC in memory)
  c - clear and store (deposit AC and set it to zero)
  y - store address (store AC as operand)
  u - unconditional transfer (jump)
  r - return address (stores PC+2 as operand at given address)
  t - test (conditional transfer on AC negative)
  z - stop (break point in operand)
  p - print
  i - input
  a - add
  s - subtract
  m - multiply (most significant bits of result in AC)
  n - multiply (least significant bits of result in AC)
  d - divide
  e - extract (mask, logical AND)
This left only a limited set for hexadecimal encoding, namely f, g, j, k, q, w. (And yes, "l" is 1, since Flexowriters weren't invented as computer terminals, rather they are electric typewriters with a potential for automatization.)

Since hexadecimal was used for operands, which were actually addresses on the magnetic drum given by track and sector numbers in binary, which in turn resulted in a rather interesting single-word instruction format, this further complication may not have mattered much.

Compare https://www.masswerk.at/nowgobang/2019/lgp-30

dzdt

Its even worse. The keyboard (as normal for typewriters of the day) had no numeral '1'. Instead you would type a lower-case 'L'. So the actual hex encoding is 0L23456789FGJKQW.

ragnot

I've never heard of this. Was this just a quirk of the LGP-30?

Anarch157a

Probably not. Look at your keyboard. Those are the keys on the right side of the home row. They probably used them because it was easier and quicker to type than 'abcdef'.

masklinn

> Those are the keys on the right side of the home row.

Why would you want that alongside numbers which are either two rows up or to the side?

Unless the keyboard was something like USPS’s which has numbers as an alternate mode on the home row, and thus made this layout sensible? But that would still make it a quirk of the system.

Edit: yeah it was absolutely a quirk of the LPG-30, per a sibling comment: http://laboratorium.net/archive/2008/04/28/a_few_facts_about...

taneq

What keyboard layout do you use? Q and L sure aren't in the home row on a QWERTY keyboard unless you're one of those sales guys that only ever types TYPEWRITER. :P

tjoff

I'm disgusted... What was the motivation for that?

drfuchs

The convention of using "ABCDEF" didn't get established until well after the LGP-30 was designed in the 1950's. The Wikipedia entry on "Hexadecimal" says "The now-current notation using the letters A to F establishes itself as the de facto standard beginning in 1966, in the wake of the publication of the Fortran IV manual for IBM System/360, which (unlike earlier variants of Fortran) recognizes a standard for entering hexadecimal constants."

The comments elsewhere that note the layout of the Flexowriter character set risk conflating cause with effect. The single-character mnemonics for the sixteen hardware instructions were chosen by the LGP-30 designers to be, well, mnemonic; and then the remaining characters FGJKQW were left to represent the values ten through fifteen. This then forced the assignment of character positions for the Flexowriter device, so that no table lookup would be required when reading opcode mnemonics and also when reading hex numbers; all bits could just be shifted into place in both cases.

Trigger warning: The phrase we were taught was standard in the LGP community to help remember FGJKQW was, I'm afraid, "For Good Jokes, Kill Quiet Women." This seems to have been excised from the written lore fairly early on, as search engines have no record of it.

ddingus

For resistors, I was taught:

Bad boys rape our young girls but Violet gives willingly

Not yet excised I see.

maccard

I found this [0] which says that the layout of the LGP-30 Flexowriter (linked in the article) conformed to fgjkqw, so it may be related.

[0] http://laboratorium.net/archive/2008/04/28/a_few_facts_about...

kps

From https://ub.fnwi.uva.nl/computermuseum//DWcodes.html#A077 the Flexowriter character code was:

    +----------------------------------------------+
    |  00   20   40   60         00   20   40   60 | (1)  triangle
    +--------------------+    +--------------------+ (2)  pi
    |  RE   NL   ST      | 00 |  RE   NL   ST      | (3)  sigma
    |  z    i    p    h  | 01 |  Z    I    P    H  |
    |  0    4    8    j  | 02 |  )   (1)  (3)   J  | BS   Back Space
    |  SP   /    o       | 03 |  SP   ?    O       | COL  COLor
    |  LC   BS           | 04 |  LC   BS           | DEL  DELete
    |  b    d    e    c  | 05 |  B    D    E    C  | HT   Horizontal Tab
    |  l    5    9    k  | 06 |  L    %    (    K  | LC   Lower Case
    |  -    .    x       | 07 |  _    ]    X       | NL   New Line
    |  UC   HT           | 10 |  UC   HT           | RE   REad
    |  y    n    u    a  | 11 |  Y    N    U    A  | SP   SPace
    |  2    6    f    q  | 12 |  *    $    F    Q  | ST   STop
    |  +    ,            | 13 |  =    [            | UC   Upper Case
    | COL                | 14 | COL                |
    |  r    m    t    s  | 15 |  R    M    T    S  |
    |  3    7    g    w  | 16 |  "   (2)   G    W  |
    |  ,    v        DEL | 17 |  :    V        DEL |
    +--------------------+    +--------------------+
    |     lower case                upper case     |
    +----------------------------------------------+
Taking bits 2–5 gives you: 0 l 2 3 4 5 6 7 8 9 f g j k q w

vsnf

This was assigned reading in one of my university CS courses, and although it was great fun then, as we were mostly all novice programmers learning Java of all things, the madness of the story didn't hit me until a few years later when I had done much more work with C and pointer math.

This part in particular, taken from Wikipedia, still reads to me like Necronomicon level black magic:

> But when x was already the highest possible address, not only did the address wrap around to 0, but a 1 was carried into the bits from which the opcode would be read

eob

I bought the Hackers Dictionary by Eric S. Raymond as a 90s kid and it had this story, as well as a few others. Das Blinkenlights and some AI Koans like the Broken Lisp Machine come to mind.

I used to read them over and over, and it really left an imprint on me. The early hacker ethos was such a strong flavor. Sort of a "one part gnostic, one part mechanic, one part counterculture" vibe.

Sometimes I wonder if that flavor always exists, but shifts from community of practice to community of practice, or if there was something specific about the early days of the net that caused it to arise uniquely.

nemo1618

I've wondered this too. When my dad was learning to program, this was the culture. When I was learning to program, the culture was no longer fresh and alive, but its spirit was still strongly felt; the torch was being passed to us. Have we preserved that light? If my son learns to program, what will "hacker culture" mean to him?

krmboya

Maybe being able to figure out strangers' discord passwords. More generally, phishing powers

fredrikholm

I think in this context, 'hacker' means more 'one that twiddles bits' than 'one that twiddles others bits'.

kfajdsl

It's still alive, but it's not the culture IMO. Which is sad.

username223

> I bought the Hackers Dictionary by Eric S. Raymond

That hurts a bit to read. Raymond is/was a huckster who took the original Hackers Dictionary, a communal MIT project, and made some edits. He went on to annoy the Linux community with his CML2 antics around the build system. Lisp/MIT, BSD, and Linux all have their own histories, a mixture of forgettable drama and fundamental difference.

mlyle

> a communal MIT project, and made some edits

The Jargon File had been dead and dated for nearly a decade when he picked it up. His maintenance and publication was an important part of making this content relevant and accessible to future generations.

Eric Raymond's work is a mix of good and bad-- like you could say about anyone.

eob

Oh interesting -- I didn't know any of the above Raymond controversy (or even really who he was; the name just is etched in my brain from that book)

As a guy who found the Jargon File via that book, I'm grateful he did it. But I can see how publishing an edit of an online forum would ruffle a lot of feathers: 30 years later you get guys like me attributing it all to him.

jart

A lot of that ethos I think is just Generation X plus computers. A rebellious generation that came of age during a time when digital technology had just granted kids the power to wardial norad. I think tinkerers have always been timeless, but that kind of cyberpunk culture is something we're unlikely to see again.

jhbadger

I'm solidly GenX, but the hacking culture described by "The Hacker's Dictionary" is a generation older than that -- the era of the MIT AI Lab or Stanford's SAIL in the mid 1970s. Lisp Machines and custom in-house operating systems. The GenX hacking culture was the 1980s and was more about getting the most out of our own microcomputers.

jart

Oh believe me I know it has origins in ivory towers like MIT. Stallman has written all about that for instance. The context with GP was once it had trickled down into more popular culture with the ESR / Jargon File days. We honestly don't know a lot of the true origins of hacker culture, because so much of it started in corporate government enclaves with confidentiality rules. What we know are echos of practices and socialization that crystalized into usenet posts.

User23

It was also about bullshitting on Alliance.

OmarAssadi

I’m surprised I haven’t seen this linked yet, but Bryan Cantrill of dtrace, Sun, lawnmower, Joyent, etc, fame gave an amazing talk for Monktoberfest 2016, titled “Oral Tradition in Software Engineering”, which features The Story of Mel [1]. Highly recommend checking it out — there are loads of little gems and stories like this throughout.

All of his other presentations are great too and definitely worth a listen if you like this sort of thing [2]. A couple of my favorites are “Fork Yeah! The Rise and Development of Illumos” [3] and “Debugging Under Fire: Keep your Head when Systems have Lost their Mind” [4].

[1]: https://youtu.be/4PaWFYm0kEw?t=644

[2]: http://dtrace.org/blogs/bmc/2018/02/03/talks/

[3]: https://youtu.be/-zRN7XLCRhc

[4]: https://youtu.be/30jNsCVLpAE

int0x2e

Bryan Cantrill's talks are some the best I've ever seen. I've always tried sharing them around with colleagues (with limited success, but still worth it in my view...)

jasonladuke0311

"Don't fall into the trap of anthropomorphizing Larry Ellison" is one of the funniest things I've ever heard: https://youtu.be/-zRN7XLCRhc?t=2302

pfarrell

My favorite line

  I have often felt that programming is an art form, 
  whose real value can only be appreciated 
  by another versed in the same arcane art; 
  there are lovely gems and brilliant coups 
  hidden from human view and admiration, sometimes forever, 
  by the very nature of the process.