[HN Gopher] The Story of Mel (1983)
       ___________________________________________________________________
        
       The Story of Mel (1983)
        
       Author : thunderbong
       Score  : 348 points
       Date   : 2022-08-09 08:49 UTC (14 hours ago)
        
 (HTM) web link (www.cs.utah.edu)
 (TXT) w3m dump (www.cs.utah.edu)
        
       | porbelm wrote:
       | A classic for our new readers!
        
         | dang wrote:
         | Exactly! https://news.ycombinator.com/item?id=32110910
        
       | nmeofthestate wrote:
       | I had to strip out the pretend poetry formatting before reading.
       | 
       | https://pastebin.com/raw/TyqZXPVe
        
         | the_af wrote:
         | I agree with the sibling comment, the verse formatting makes it
         | even better!
        
         | taneq wrote:
         | But the formatting
         | 
         | is part, I think
         | 
         | of the charm.
        
       | wazoox wrote:
       | To be complete on old programmer's lore, don't miss "Real
       | programmers don't use PASCAL":
       | https://www.ecb.torontomu.ca/~elf/hack/realmen.html
       | 
       | And of course, "The rise of 'Worse is Better'":
       | https://web.stanford.edu/class/cs240/old/sp2014/readings/wor...
        
         | cestith wrote:
         | The Story of Mel was likely in direct response to "Real
         | programmers don't use PASCAL", or potentially another very
         | similar "Real Programmers" writing.
        
           | egypturnash wrote:
           | _A recent article devoted to the macho side of programming_
           | _made the bald and unvarnished statement:_
           | 
           |  _Real Programmers write in FORTRAN._
           | 
           | - the first lines of The Story Of Mel
        
             | cestith wrote:
             | That line was included in more than one post. There are
             | also multiple posts from that time period which said
             | exactly the opposite. It was an ongoing joke, raised to
             | somewhat of an art form.
             | 
             | https://www.multicians.org/thvv/realprogs.html
             | 
             | http://www.bernstein-plus-sons.com/RPDEQ.html
             | 
             | https://www.ecb.torontomu.ca/~elf/hack/realmen.html
             | 
             | https://web.archive.org/web/20080419225755/http://www.susli
             | k...
             | 
             | Old magazines, BBSes, Usenet, and mailing lists are full of
             | this sort of humor.
             | 
             | https://www.mipmip.org/tidbits/project.html
        
       | stakkur wrote:
       | I remember typing in hex programs from Compute! magazine to my
       | C64. It would take a long time and, of course, I made at least
       | one error along the way and had to start over.
        
       | tgv wrote:
       | I've always found that this story is also compulsory reading for
       | wannabe Real Programmers:
       | https://www.ecb.torontomu.ca/~elf/hack/realmen.html
       | 
       | Strangely enough, it's more modern, but many of the concepts
       | mentioned may be more alien to young programmers. How many will
       | know what's meant by keypunch? Timesharing? RATFOR? Listings? The
       | email address in the header?
       | 
       | BTW, the title (and text) refers to the book "Real men don't eat
       | quiche", a pastiche of the genre that would later bring produce
       | the weirdly unironic classic "Women are from Venus, Men are from
       | Mars".
        
       | naniwaduni wrote:
       | 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
        
         | ragnot wrote:
         | I've never heard of this. Was this just a quirk of the LGP-30?
        
           | Anarch157a wrote:
           | 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'.
        
             | taneq wrote:
             | 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
        
             | masklinn wrote:
             | > 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...
        
         | tjoff wrote:
         | I'm disgusted... What was the motivation for that?
        
           | maccard wrote:
           | 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_ab
           | out...
        
             | kps wrote:
             | 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
        
           | drfuchs wrote:
           | 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.
        
         | drfuchs wrote:
         | 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.
        
           | [deleted]
        
           | mlyle wrote:
           | > 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 wrote:
             | 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.
        
         | dzdt wrote:
         | 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.
        
       | NickRandom wrote:
       | 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.
        
       | eob wrote:
       | 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.
        
         | username223 wrote:
         | > 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 wrote:
           | > 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.
        
         | jart wrote:
         | 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 wrote:
           | 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.
        
         | nemo1618 wrote:
         | 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 wrote:
           | Maybe being able to figure out strangers' discord passwords.
           | More generally, phishing powers
        
             | fredrikholm wrote:
             | I think in this context, 'hacker' means more 'one that
             | twiddles bits' than 'one that twiddles others bits'.
        
               | TedDoesntTalk wrote:
               | The definition of 'hacker' was changed and is a moving
               | target over the years.
        
       | Exness199507 wrote:
        
       | kps wrote:
       | 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 wrote:
         | Too late to edit, but I misremembered a little: from an earlier
         | comment that I'd forgotten I'd made1, 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.
         | 
         | 1 https://news.ycombinator.com/item?id=20489774
        
       | markus_zhang wrote:
       | 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 wrote:
         | 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 wrote:
           | > 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 wrote:
             | :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?
        
               | acuozzo wrote:
               | > You found him-- did you get to really talk to him?
               | 
               | Yes. Here's the e-mail exchange:
               | http://acuozzo.sdf.org/Mel.pdf
               | 
               | (I moved all of my e-mails to Gmail via Thunderbird years
               | ago which is why the sender address is different.)
               | 
               | I found him after Bill Bryner mentioned in an e-mail that
               | Mel "was trying to become an expert (Master?) at Bridge
               | and also played flute with the UCLA pep band for
               | basketball games".
               | 
               | I figured he hadn't moved far from where he was working
               | in LA at the time and I was right! His e-mail address was
               | listed among the members of the Thousand Oaks, CA ACBL
               | Unit 532 Bridge club/league.
               | 
               | > Find out how he looks back on that era? Did he keep
               | programming?
               | 
               | I couldn't find any of this out because I scared him
               | away. My guess is that he just wasn't the nostalgic type.
               | 
               | > What scared him away?
               | 
               | My guess is that he was spooked because I contacted his
               | son a few days prior.
               | 
               | ... and the webmaster responsible for running his son's
               | business' website.
               | 
               | ... and several other people. I must have seemed like a
               | genuine creeper.
        
               | jl6 wrote:
               | I guess Mel could have been in the region of 80 years old
               | at the time, and the few 80 year olds I've known have
               | been very private individuals.
        
               | mlyle wrote:
               | Oh. Thank you for sharing the e-mail exchange.
               | 
               | That's too bad he wasn't interested in talking about it
               | all. I can imagine if he was aware of it, having random
               | people pop-up wanting to discuss could become annoying.
               | 
               | Thank you for the info!
        
       | pfarrell wrote:
       | 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.
        
       | OmarAssadi wrote:
       | 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 wrote:
         | 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 wrote:
           | "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
        
       | 1vuio0pswjnm7 wrote:
       | "The program used an elegant (optimized) random number generator
       | to shuffle the "cards" and deal from the "deck", and some of the
       | salesmen felt it was too fair, since sometimes the customers
       | lost. They [the Sale Department] wanted Mel to modify the program
       | so, at the setting of a sense switch on the console, they could
       | change the odds and let the customer win. Mel balked. He felt
       | this was patently dishonest, which it was, and that it impinged
       | on his personal integrity as a programmer, which it did, so he
       | refused to do it."
       | 
       | IMO, this story can be a sort of Rorscasch Test that can reveal
       | something about its readers.
       | 
       | For example, when I read this what stands out to me is that Mel
       | brought a sense of ethics to the use of computers.^1
       | 
       | Salespeople at Mel's employer wanted to use computers to
       | manipulate customers. Mel refused to help them.
       | 
       | Others read this story and only focus on Mel's tactics for
       | programming a computer.
       | 
       | "You can learn a lot about an individual just by reading through
       | his code, even in hexadecimal. Mel was, I think, an unsung
       | genius."
       | 
       | In the same way the story's author, who was a Professor of
       | Astronomy at IT Austin, believed that reading Mel's source code
       | could reveal something about Mel, to me, the comments of people
       | who read this story can reveal something about those readers.
       | 
       | "The RPC-4000 computer had a really modern facility called an
       | index register. It allowed the programmer to write a program loop
       | that used an indexed instruction inside; each time through, the
       | number in the index register was added to the address of that
       | instruction, so it would refer to the next datum in a series. He
       | had only to increment the index register each time through. Mel
       | never used it."
       | 
       | To me, "The Story of Mel" is about a person who preferred to
       | think for himself instead of letting others do it for him.
       | 
       | If memory serves me correctly, I recall seeing comments online
       | about this story that "advise" readers, "Do not be like Mel." The
       | question is what do they mean by that. Are they referring to
       | programming tactics, ethics, both, or maybe something else
       | entirely.
       | 
       | 1. No only that, but the author was so impressed by Mel's ability
       | that he adopted similar ethics himself.
        
       | ivanche wrote:
       | Wow this is a blast from the past! First time I've read this was
       | in a (paper) magazine some 25 years ago, one of the journalists
       | was kind enough to translate it. The story was like a magnet to
       | me as a high-school freshman, I must have reread it 20-30 times
       | in the following weeks.
        
       | vsnf wrote:
       | 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
        
       | dang wrote:
       | Don't miss this: https://news.ycombinator.com/item?id=20489273.
       | 
       | 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 about 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)
        
       | chris_st wrote:
       | Reminds me a bit of the poem, "The Last Bug", possibly best read
       | here with links and all:
       | https://everything2.com/title/the+last+bug
        
       | denton-scratch wrote:
       | I find this new-fangled blank-verse rendition grating, despite
       | what the author thinks.
        
       | Linda703 wrote:
        
       | billpg wrote:
       | I hope I never have to work with someone like him. He sounds
       | awful.
        
         | [deleted]
        
         | toss1 wrote:
         | EDIT:
         | 
         | OP made a response indicating that his objection to Mel was
         | that he left zero documentation.
         | 
         | To this, I agree 100% !!
         | 
         | Leaving no documentation is doing your future self a huge
         | disservice (even a few weeks from now it'll be helpful if
         | you've left yourself some good breadcrumbs to follow), and is
         | pretty much a hostile act towards the team.
         | 
         | ----- initial comment -----
         | 
         | Sure, if he's doing that kind of highly idiosyncratic stuff in
         | the modern software & hardware environment, he'd be a hindrance
         | to any team.
         | 
         | But this was not that situation, and sadly, this comment
         | reveals a deep cluelessness about the technology underlying the
         | computing industry.
         | 
         | The article shows a real genius at work, fully understanding
         | that what he is doing is programming a _computing machine_ ,
         | and using every available advantage to get to to yield a
         | program that performs well.
         | 
         | Sadly, software now is optimized entirely for the convenience
         | of the developer, and with literally billions to trillions of
         | multiples of the computing power available to Mel, most
         | software today is utter crap, taking tens of seconds to even
         | load because it barely floats in an ocean of bloated
         | abstraction and 'frameworks'.
         | 
         | The fact that you cannot at even recognize the obvious genius
         | in that story indicates that you should really learn a lot more
         | and seriously rethink your approach to computing. Learn how the
         | hardware and software actually work. Work hard to strip out
         | unnecessary dependencies, middleware, frameworks, etc., and
         | make your applications snappy. With today's hardware, there is
         | literally no excuse for software that does not respond faster
         | than any human perception. But sadly, today, if you can make it
         | work that way, you'll be the exception -- so be that exception.
        
           | Suzuran wrote:
           | Please read his response of about 30 minutes ago, it's a few
           | replies up. It's not what you think.
        
             | toss1 wrote:
             | Oh, thanks for the alert!
             | 
             | Indeed not at all what it first seemed.
             | 
             | edited (original had sat in writing for a while then
             | submitted later w/o reacing new context comments)
        
         | billpg wrote:
         | Some things never change. One of my first HN comments got me
         | four down-votes for much the same comment.
         | 
         | https://news.ycombinator.com/item?id=679208
         | 
         | Back then, I was so new it bumped me down into negative score.
         | I almost made a new account but decided to keep it and try and
         | rebuild my damaged rep.
         | 
         | Nowadays, my score in the thousands, but Mel still sounds
         | awful.
        
           | Suzuran wrote:
           | I'd be interested to know exactly why; Is it because he
           | doesn't obey his bosses when told to make the program cheat,
           | or just the way it's framed as some kind of testosterone
           | caveman thing?
        
             | metabagel wrote:
             | Obviously difficult to work with and unprofessional.
             | Utilized programming side effects which obscured the intent
             | of the code to such an extent that he unintentionally
             | reversed the logic of the test he was supposed to
             | implement.
        
               | Suzuran wrote:
               | Abuse of side effects to save code is just a reality of
               | working in limited or embedded systems once you have run
               | into their limits. On one of my current projects, the
               | target has only 8K of program memory. I had to do some
               | things I'm not proud of to get the required functionality
               | to fit because the alternative was to say "It can't be
               | done, scrap everything." The target is an embedded hard-
               | realtime processor core, so there's no way to add more
               | memory to it. It's a component integrated into a larger
               | system so I can't demand a larger or more capable device
               | without incurring significant redesign costs. Quite
               | frankly, I won't be considered worth those costs.
               | Nobody's doing to take on the expense and effort simply
               | because I can't hack it. I'd have a hard time blaming
               | someone for doing the painful to keep a project alive,
               | considering I'm doing exactly that. We can always agitate
               | for better conditions next time around, but this time we
               | must go to war with the army we have, and sometimes that
               | necessitates fighting dirty.
               | 
               | The rest of the stuff is entirely valid though. A
               | programmer that cannot be managed is worthless, and
               | someone who is unwilling to accept correction is a
               | liability. I wouldn't _refuse_ to work with him because
               | unless I 'm his superior I don't get to make that call,
               | but I would probably go out of my way to avoid
               | interaction. (And if I were his superior, unless he's got
               | political juice or something, I'd have him shown to the
               | door if he won't work with the team instead of against
               | it.)
        
             | billpg wrote:
             | In the story,             The storyteller is tasked with
             | maintaining Mel's code.             He can't do it. Mel
             | hadn't left any documentation.             All sort of
             | tricks.             No explanation of what's going on.
        
               | Suzuran wrote:
               | Upvoted for the effort of responding in verse, very nice.
               | 
               | That rubbed me the wrong way too. Even the hackers at MIT
               | documented their hacks, they even wrote up a memo
               | explaining a bunch of them so others could understand and
               | build on them - see HAKMEM.
               | 
               | Documentation was much more extensive and available back
               | then. Systems frequently came with full schematics, and
               | you could call the design team on the phone if you
               | wanted. DEC would get phone calls about the PDP-10's
               | RIM10B bootloader right up until the retirement of the
               | 36-bit processor line, and they did their best to explain
               | its tricks.
               | 
               | The loader was made to fit entirely in the processor
               | registers so it didn't touch the memory it was loading.
               | To do this it made use of a specific and documented
               | aspect of the processor - that being that the first thing
               | it did when executing an instruction is to determine its
               | effective address, and nothing the instruction can do
               | will have any effect on its own effective address
               | calculation.
               | 
               | They had two bold-print warnings about this in the
               | processor manual, both before and after the RIM10B source
               | code, but some people still required more explanation.
               | For those people, the explanation was given.
               | 
               | In Mel's story, he grinds out a very well optimized
               | program, and while I can appreciate the skill it takes to
               | do that, he documented none of it. This was customer-
               | facing code. That's unacceptable even by their standards,
               | and even his own co-workers of the era would have thought
               | he was an asshole. A skilled asshole, with skill worthy
               | of respect, but an asshole nonetheless.
        
               | kps wrote:
               | The story is known to be inaccurate in technical detail1,
               | so it's not impossible that it's inaccurate in social
               | detail as well. There's some LGP-30 code on Bitsavers
               | including scanned coding forms, and the ones initialled
               | 'MK' are not notably different in level of commentary
               | from the others.
               | 
               | 1 https://news.ycombinator.com/item?id=20489273
        
               | Suzuran wrote:
               | Ah, I didn't know that. As for the code on Bitsavers,
               | I'll have to check that out. I should have expected there
               | would be something there - Al is a gem (albeit a cranky
               | old gem), and I wish he'd get more love.
        
           | usefulcat wrote:
           | If you're going to post an unpopular opinion, I think the
           | only way to avoid downvotes is to at least make your comment
           | interesting or novel in some way. Merely saying "I don't like
           | X" is neither.
        
         | dcminter wrote:
         | There is a saying "autres temps, autres moeurs"
         | 
         | In a way I agree - someone programming like this right now
         | without _very_ good cause would be a bit of a nightmare if you
         | ever had to tangle with their code. But it really was another
         | world back then.
         | 
         | They were so resource constrained [1]. That "drum" wasn't the
         | hard disk, it was the memory! Think about waiting for the
         | rotation of a drum for each instruction read. Then the actual
         | capacity of it was only 4K. The laptop I am typing this on has
         | about 32 million times more memory and I don't like to think
         | how much faster it is.
         | 
         | You either used clever tricks, or you wrote very limited
         | programs. There was no room for any overhead. The author of
         | that story wasn't astonished by clever tricks, just the degree
         | of cleverness.
         | 
         | [1] https://en.wikipedia.org/wiki/LGP-30#Specifications
        
           | bstpierre wrote:
           | In 1998 I was bringing up a new MIPS-based board that had
           | been designed in-house
           | 
           | The CPU booted from an EEPROM and started running code. There
           | was an FPGA on the board that controlled the memory. The FPGA
           | needed to be loaded with a bit-stream that was also on the
           | EEPROM. The trick was that I had to write a program to load
           | the FPGA without referencing any memory -- I only had ROM and
           | the CPU registers. Fortunately the MIPS had quite a few
           | registers, but I had to abuse all the register-use
           | conventions and the code jumped through some hoops in order
           | to be able to get the FPGA loaded so we could start running
           | from RAM.
           | 
           | There was all kinds of crazy stuff that was weird with that
           | hardware that we had to fix in software... I didn't realize
           | until switching jobs exactly how weird things were, I just
           | thought it was normal.
        
           | Suzuran wrote:
           | When adding 256 kilowords of memory to your PDP-10 cost
           | $230,000 (2022 dollars) you were either clever or unemployed.
           | 
           | If your programs couldn't run on the machine you had, they
           | were no good. Nobody was going to spend a quarter million
           | dollars on equipment for the sake of source code
           | beautification.
        
         | MatthiasPortzel wrote:
         | Obviously, not documenting things and writing the most clever
         | code possible makes it difficult for other people to read your
         | code, there's no doubt about that. And the story acknowledges
         | that. It's clear that Mel is a very clever programmer but
         | probably a pain to work with.
         | 
         | But your comment is just so dismissive of the point of the
         | story, Mel's cleverness. It comes across like you saying "This
         | person sounds awful because they're smarter than me." I can
         | assume that's not what you're trying to say, but that's what it
         | sounds like.
         | 
         | If you wrote a more nuanced comment acknowledging that, e.g.
         | 'while I would love the opportunity to learn from someone like
         | that, I'm glad I don't have to work with them or maintain their
         | code.' I would be more inclined to see your comment as
         | contributing to the discussion.
        
           | metabagel wrote:
           | "This person sounds awful because they're smarter than me."
           | 
           | I didn't read the comment that way, but then I share the
           | opinion that Mel seems like a difficult person to work with
           | or to manage. Wrote obscure code and apparently failed to
           | document any of it. Took glee when said code worked the
           | opposite of requested. The guy who took over seems to have
           | had to waste countless hours trying to de-obfuscate the code
           | in order to reverse the logic of the test.
           | 
           | I appreciate the cleverness, but there are some red flags
           | here. Also, I got the impression that some of the cleverness
           | was for its own sake, rather than out of necessity.
        
       | account-5 wrote:
       | Can some way more experienced than me ELI5 why the inner loop
       | part was so clever? I'm the most novice of programmers and have
       | never touch anything remotely like pointers so feel I am missing
       | the lightbulb moment the author clearly got. Many thanks.
        
         | teddyh wrote:
         | From the wikipedia article:
         | 
         |  _Eventually he realized that Kaye was using self-modifying
         | code to process elements of an array, and had coded the loop in
         | such a way as to take advantage of an overflow. Adding 1 to the
         | address field of an instruction that referred to address x
         | normally just changed the address to x+1. 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--in this case changing the opcode to
         | "jump to" so that the full instruction became "jump to address
         | 0"._
         | 
         | -- https://en.wikipedia.org/wiki/The_Story_of_Mel
        
           | jsymolon wrote:
           | >not only did the address wrap around to 0, ...
           | 
           | Very reminisce of the 6502 "issue" of jumping with an address
           | on a page boundary.
           | 
           | Per Wikipedia:
           | 
           | the processor will not jump to the address stored in xxFF and
           | xxFF+1 as expected, but rather the one defined by xxFF and
           | xx00 (for example, JMP ($10FF) would jump to the address
           | stored in 10FF and 1000, instead of the one stored in 10FF
           | and 1100). This defect continued through the entire NMOS
           | line, but was corrected in the CMOS derivatives.
        
       | locriacyber wrote:
       | Goodbye Mel. Hello LLVM.
        
       | pfarrell wrote:
       | 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...
        
       | ericabiz wrote:
       | More info about the "drum computer" this was written on:
       | https://www.masswerk.at/nowgobang/2019/lgp-30
       | 
       | Previous discussion where another person tried to replicate this:
       | https://news.ycombinator.com/item?id=20484330
        
       | lbriner wrote:
       | Sadly we have strayed to the other extreme. From "every
       | instruction is precious" right over to, "who cares how many
       | instructions I use?"
       | 
       | Nowadays, desktop apps which started in an instant 20 years ago,
       | seem to take several seconds even before they are even doing
       | anything useful like loading a project or whatever. Even things
       | like Visual Studio looking through the MRU project list can take
       | 10 seconds (probably a threading issue) and VSCode, Teams and
       | others are equally unimpressive - in fact the browser, the one
       | thing that should be slow due to the network, is usually fastest
       | when using a well-written site.
       | 
       | I'm not sure whether the multi-platform desktop app was ever a
       | great idea. How much time have we saved "not writing multiple
       | apps" but have instead ended up with slow, bloated software that
       | doesn't usually run multi-platform, at least not all the time in
       | the same way.
        
         | [deleted]
        
         | lproven wrote:
         | Agreed.
         | 
         | My #1 annoyance these days, because it is _so_ egregious, is
         | Electron apps.
         | 
         | I guess because the only language some programmers know is
         | Javascript, of which I know little but what little I know
         | places it marginally above PHP in intrinsic horror.
         | 
         | So people write standalone apps in a language intended for
         | tweaking web pages, meaning that to deploy those apps requires
         | _embedding an entire web browser_ into every app.
         | 
         | And entire popular businesses, for example Slack, do not as far
         | as I can tell _have_ an actual native client. The _only_ way to
         | access the service is via a glorified web page, running inside
         | an embedded browser. Despite which, it can 't actually
         | authenticate on its own and needs _ANOTHER_ web browser to be
         | available to do that.
         | 
         | Electron apps make Java ones look lean and mean and efficient.
         | 
         | Apparently, expecting a language that can compile to native
         | machine code that executes directly on a CPU, and which makes
         | API calls to the host OS in order to display a UI, is quaint
         | and retro now.
         | 
         | And it's perfectly acceptable to have a multi-billion-dollar
         | business that requires a local client, but which does not in
         | fact offer native clients of any form for any OS on the market.
         | 
         | It's enough to make me want to go back to DOS, it really is.
         | Never mind "nobody will ever need more than 640kB"... if you
         | can't do it in 640kB _and still have enough room for the user
         | 's data_, maybe you should reconsider what you are doing and
         | how you are doing it.
        
         | wpietri wrote:
         | I don't remember the norm being "desktop apps which started in
         | an instant 20 years ago". Or 30, for that matter. Do you have
         | any data for that? E.g., when I think back over launching
         | Photoshop over the decades, I remember loading screens all the
         | way through.
         | 
         | My take is that launch times are on average better but still
         | not great. And I think that's because something else that's
         | constant is that programs first get written for the convenience
         | of the programmer, and then optimized until people stop
         | complaining about the speed.
         | 
         | The waste of resources bothers me too, of course. But on the
         | other hand, computing resources have become radically cheaper
         | while programmer time has gotten much more expensive. While at
         | the same time, writing software had gotten radically more
         | complex. So I suspect me getting bothered here is sort of like
         | when my grandmother, who grew up in the Great Depression, got
         | bothered when I didn't wash and reuse aluminum foil.
        
           | mlyle wrote:
           | > I don't remember the norm being "desktop apps which started
           | in an instant 20 years ago".
           | 
           | What keeps happening is-- we get an upgrade, and then have
           | some old applications, and they become "instant" in
           | comparison to our experience with both newer stuff and the
           | application in the past. Then we watch that win clawed away
           | from us.
           | 
           | Of course, it was never instant, even with the old or newer
           | hardware.
           | 
           | My brother spoke a few weeks ago of being awestruck and
           | programs starting "instantly" when he got a hard disk on DOS
           | on the XT. But now I have a better-than-XT-equivalent
           | (9.54MHz V20) with a very fast IO subsystem and I can tell
           | you that it is very much not actually instant.
        
         | Torifyme12 wrote:
         | The developer time is saved by not writing multiple apps, fuck
         | the end user, who cares about their time?
         | 
         | Seriously, I have to really think about when was the last time
         | there wasn't some degree of unnecessary friction in an
         | application. It really feels like being an end user of modern
         | tech is like being in an abusive relationship.
        
           | ChrisMarshallNY wrote:
           | _> It really feels like being an end user of modern tech is
           | like being in an abusive relationship._
           | 
           | I've come to realize that a lot of modern developers consider
           | users of their tech to be little more than cattle. The tech
           | is cattle feed, meant to fatten and ensnare the user, so they
           | can be sold off and slaughtered.
           | 
           | There's really only one party in that kind of relationship
           | that benefits.
        
             | ratww wrote:
             | +1000. But in my experience the trend started not with
             | developers, but with the other people around them: Product
             | Managers, Designers, Engineering Managers, Steve Jobs
             | wannabes. There was an obvious disdain for users, and they
             | were seen as complete dunces that should be shepherded to
             | whatever new functionality happened to pop up their heads.
             | There was also a complete disdain for the medium: designers
             | used to print design choosing too rigid designs that didn't
             | really work that well on a screen, and only adapting when
             | the market started punishing them.
             | 
             | At first programmers were able to resist all that and have
             | a voice, but lately it seems that the only prestige we
             | retained was the salary, so we must play the same tune as
             | the rest of the band. Agile was an attempt at being "self
             | managed" and have a bit more independence, but that was
             | also corrupted and lots of devs hate it with a passion too,
             | so we're mostly back to practicing non-iterative, Steve-
             | Jobsian-gut-feeling-centric development. Programmers have
             | bought into that toxic mentality too.
             | 
             | And even in better situations, such as my current job, the
             | tasks that cause the most issues, take more developer time
             | and annoy the user the most are always the same: non-
             | idiomatic features (for the web or for desktop apps), often
             | concocted by designers totally disconnected with the
             | audience, who at most did two or three "interviews" where
             | the user said "yeah I could see myself using that".
        
               | jrmg wrote:
               | _non-iterative, Steve-Jobsian-gut-feeling-centric
               | development_
               | 
               | This is a misunderstanding of Jobs. It's true that he had
               | a disdain for what users would _say_ they wanted, but he
               | was very focused on providing the, with something
               | intuitive and easy to use. He wanted to make their lives
               | better, and to 'surprise and delight'.
               | 
               | He was also very iterative. He regularly saw demos of in-
               | production software (and hardware), and would ask for
               | anything from small tweaks to complete rewrites. He was
               | completely unafraid of throwing away work, and would
               | change his opinions on a dime if they didn't work out.
        
               | ratww wrote:
               | Sorry, let me rephrase: I don't think Steve Jobs was like
               | that at all.
               | 
               | But the copycats that don't believe in iterative
               | development or in user research love to pretend they got
               | all figured out before it's out for development.
        
               | zozbot234 wrote:
               | > There was an obvious disdain for users
               | 
               | The disdain for "lusers" came from BOFH sysadmin types,
               | well before it was adopted by the non-"tech", business-
               | focused folks.
        
               | Suzuran wrote:
               | It predates the BOFH a bit as well. I am restoring a
               | PDP-10 to operation and the operating system refers to
               | users as "lusers", non-sanctioned users of the system are
               | "turists" who were just there to gawk at things. It's not
               | so much out of disdain for the people themselves as what
               | they were doing with the computer - when computer
               | resources were limited, it was grating to have to wait
               | while unskilled and uncaring people occupied those
               | resources for frivolous or unnecessary reasons.
               | 
               | Edit: Consider being told something along the lines of
               | "Your DNA sequence has to wait, the CEO has important
               | Facebook posts to read..."
        
               | Majromax wrote:
               | > The disdain for "lusers" came from BOFH sysadmin types,
               | well before it was adopted by the non-"tech", business-
               | focused folks.
               | 
               | Based on the definitions in the thread, I'd say the BOFH
               | attitude is more the inverse: it is _contemptuous_
               | towards users, whereas the modern practice is more
               | _condescending_ towards users.
               | 
               | The latter still has a notional ethos of catering to the
               | user, but the Monkey's Paw corruption caters towards the
               | user's most superficial desires, particularly at a first
               | impression, while de-optimizing for the acclimated or
               | "power" user.
        
               | ratww wrote:
               | Exactly, the modern practice is condescending. The
               | prevalent thinking is that "users don't really know what
               | they want", so there is zero research, zero iteration,
               | zero respect and a lot of corralling in the application
               | to force users into a (lucrative) workflow.
               | 
               | But the treatment itself is first class, unlike with
               | sysadmins of yore.
        
               | wpietri wrote:
               | I think those are totally different kinds of disdain.
               | 
               | The former is generalized misanthropy plus specific
               | hostility to the individuals who bother them.
               | 
               | The latter is more akin to the feudal lord or the cattle
               | farmer: a lack of empathy plus an eagerness to stuff
               | one's own pockets such that they build exploitative
               | systems.
               | 
               | Sysadmins ultimately just wanted to be left alone to
               | pursue their techie interests. But the MBA types are the
               | opposite. You can't have an upper class without a set of
               | lower classes to provide you with income and feelings of
               | power.
        
               | ChrisMarshallNY wrote:
               | But it became _industrialized_ by business-types. The
               | BOFH thing was personal. They considered (still do,
               | sometimes), users of their systems to be  "the great
               | unwashed."
               | 
               | Basically, pests.
               | 
               | Business types look at users as a resource to be
               | exploited to make money.
               | 
               | Basically, livestock.
               | 
               | Different outlook. We try to discourage pests, but we
               | breed and incubate livestock. In neither case, are we
               | particularly interested in the long-term benefit to our
               | users. If anything, the BOFH types are actually working
               | towards the benefit of their "lusers," because that's
               | their job.
               | 
               | I write software that is targeted at a demographic that I
               | actually respect, and sincerely want to benefit with my
               | work (so, naturally, I don't get paid for it).
               | 
               | I'm constantly fighting with "modern software types" that
               | want to treat users of the software that I write as
               | livestock. They -quite literally- can't understand my
               | PoV.
               | 
               | It's fairly discouraging, really. I'm treated like an
               | idiot, because I actually want to help the users of my
               | software.
        
               | jart wrote:
               | The only way I see that happening is if it becomes easier
               | to crowdsource donations. When your users are the ones
               | putting bread on your table, they're the boss. Whatever
               | they want they get. But sadly it's hard to crowdsource
               | from programmers because there's so few of us. I love
               | building and sharing software that delights my peers. Not
               | because it's a smart thing to do. If money was the thing
               | I cared about, then it'd be more rational to play video
               | games on Twitch and blog about culture conflict on
               | Substack. Rather coding is something I feel compelled to
               | do and I won't stop even if it destroys me.
        
       | oaiey wrote:
       | In 1997 I was doing an apprenticeship. It had a very well
       | organized curriculum and well thought courses. One course was
       | based on 8080/8085 cpu. You know what they gave us: A development
       | board (roughly the size of a modern mainboard) with onboard hex
       | keyboard 0-9a-f and 3-4 function keys (halt, run, write at ...
       | something like that). And a book and templated paper. So the
       | exercises, 3-4 hours every week, were: Implement that algorithm
       | on paper in assembler, use the book to translate to hex code on
       | your memory layout, hack the program into your board and press
       | execute. And PRAY that you did not make a mistake in the
       | assembler or the typing.
       | 
       | I still think, that this is the most efficient way to teach kids
       | CPU/Memory and assembler.
        
         | fanf2 wrote:
         | When I was faced with that task, I rapidly got fed up with
         | hand-assembling and relocating my code and went off to write an
         | assembler to run on a computer with somewhat less anaemic IO. I
         | doubt I actually used it more than once or twice, but it was
         | fun to write.
        
         | iarenaza wrote:
         | Hey, exactly the same I did in my apprenticeship! Only a few
         | years earlier (1988 in my case).
        
         | bstpierre wrote:
         | My CS (or EE?) class did this in 1996 with a Z80 board
        
         | userbinator wrote:
         | I can still "sight-read" much of the x86 instructions from a
         | hexdump or even (E-)ASCII --- the ISA is much easier to
         | memorise and more regular in octal. This is a habit I acquired
         | from the days when I did a lot of binary patching, for various
         | reasons, and good disassemblers weren't yet easy to come by.
        
           | dhosek wrote:
           | A couple years ago, a junior dev was absolutely astonished at
           | my ability to interpret a hex dump as ASCII. I don't think I
           | remember any numeric opcodes for anything.
        
             | dhosek wrote:
             | Oh wait, I did correctly remember that $20 was JSR in 6502
             | assembly.
        
         | ragebol wrote:
         | And the value of a compiler
        
         | mlyle wrote:
         | Neat! I'm curious if you remember anything about this or the
         | materials. I have developed something very similar that I teach
         | to middle schoolers:
         | 
         | https://github.com/mlyle/armtrainer
        
           | oaiey wrote:
           | That looks very identical ;) just so much more modern. A lot
           | smaller and the screen is so much more fancy.
           | 
           | Think that with old style boards, old-style chips, old-style
           | number screen.
        
             | mlyle wrote:
             | Yah! I was familiar with old "microprocessor trainers" and
             | I tried to recreate that. There's nice on-chip debug that
             | makes writing a monitor to do this pretty easy.
             | 
             | I was more thinking-- curriculum? How old were you?
             | Anything particular stick with you that I should be sure to
             | include?
        
       | teddyh wrote:
       | https://en.wikipedia.org/wiki/The_Story_of_Mel
        
         | hurrahfox wrote:
         | Found the instruction on how to play the game in the further
         | reading of the Wiki -
         | https://www.mirrorservice.org/sites/www.bitsavers.org/pdf/ro...
         | 
         | It was nice to see the original write up and to read how about
         | it worked for the user.
        
       | ngvrnd wrote:
       | My great-aunt Gloria told me at this year's family reunion that
       | she had used machine language (not assembler, she was quick to
       | add) when she started programming.
        
       | makeworld wrote:
       | 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 wrote:
         | Discussed once here:
         | 
         |  _The Story of Mel Explained_ -
         | https://news.ycombinator.com/item?id=9913835 - July 2015 (25
         | comments)
        
       | avodonosov wrote:
       | Maybe not really appropriate for a site called Hacker _News_. The
       | site name suggests something new should be posted.
        
         | smcl wrote:
         | Older articles are posted fairly often, I don't see why this is
         | inappropriate
        
         | ddevault wrote:
         | https://news.ycombinator.com/newsguidelines.html
         | 
         | > On-Topic: Anything that good hackers would find interesting.
        
         | dcminter wrote:
         | I showed "The Story of Mel" to my Dad a couple of years before
         | he died. He started as a software developer some time in the
         | 60s. He'd never seen it before, very much enjoyed it, and noted
         | that it reminded him of a few people he'd worked with back
         | then.
         | 
         | "New" is a matter of perspective.
         | 
         | I'm sure there are plenty of HN readers who haven't seen it
         | before, and I'm happy to see dupes of high quality stuff pop up
         | from time to time. I was just thinking earlier that it was time
         | for someone to re-post "No Silver Bullet" soon. Perhaps I'll do
         | it myself it nobody else takes the hint.
        
         | [deleted]
        
         | dang wrote:
         | HN is for anything that gratifies intellectual curiosity
         | (https://news.ycombinator.com/newsguidelines.html). Sometimes
         | that's news in the usual sense of the word, but often it's more
         | obscure things, and those are welcome here.
         | 
         | I think of the "new" in the "news" in "hacker news" as being
         | like the used clothing store in my home town that used to be
         | called "New to You".
         | 
         | In the case of perennial classics like the OP, there are of
         | course a lot of readers for whom the story is anything but new,
         | but it's important that we also take care of the newer cohorts
         | of user and make sure they get some exposure to the classics
         | too. That's one reason why reposts are allowed after a year or
         | so.
        
       | foobarbecue wrote:
       | I like this new word "esthetics"! It's like a cross between
       | ethics and aesthetics. How to do the right thing and make it look
       | good too, I guess!
        
         | retrac wrote:
         | It's just a variant spelling of aesthetics.
        
         | adrianmonk wrote:
         | I think it's just a spelling variation. "Ae" or "ae" does show
         | up in English words sometimes, but a lot of times it gets
         | simplified to "e" (probably closer to the pronunciation).
         | 
         | Examples: "aeon"/"eon", "caesium"/"cesium",
         | "paediatrician"/"pediatrician", "anaesthesia"/"anesthesia",
         | "haemoglobin"/"hemoglobin", and "chimaera"/"chimera". And more
         | debatably, "daemon"/"demon" and "aeroplane"/"airplane".
         | 
         | Generally, British spellings are more likely to have "ae" and
         | American spellings are more likely to have "e".
         | 
         | But it only gets dropped in some words. You never see "erobic
         | exercise", "erospace engineering", "erosol spray", or a
         | conductor being called "mestro".
        
           | mtlmtlmtlmtl wrote:
           | You forgot my favorite one: "vaginae"/"vaginae" is an archaic
           | plural of "vagina".
           | 
           | But "vagine" is not to be seen in any dictionaries afaik.
           | 
           | Cracks me up because AE is a letter in the Norwegian alphabet
           | with a completely different sound than the ae diphtong in
           | English. So to me it looks like you started saying "vagina"
           | but started screaming at the end.
        
       | wawjgreen wrote:
       | seems like yet another trip down the past-huggery and a penchant
       | for doing-things-the-hardway. Real programmers don't write write-
       | only code.
        
         | phkahler wrote:
         | >> Real programmers don't write write-only code.
         | 
         | He did figure out how the program exited the loop, it just took
         | him 2 weeks.
        
       | agentwiggles wrote:
       | 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.
        
       ___________________________________________________________________
       (page generated 2022-08-09 23:00 UTC)