[HN Gopher] The Story of Mel, A Real Programmer, Annotated (1996)
___________________________________________________________________
The Story of Mel, A Real Programmer, Annotated (1996)
The annotations are at https://users.cs.utah.edu/~elb/folklore/mel-
annotated/node2.....
Author : fanf2
Score : 142 points
Date : 2025-07-12 14:42 UTC (4 days ago)
(HTM) web link (users.cs.utah.edu)
(TXT) w3m dump (users.cs.utah.edu)
| ksenzee wrote:
| It's almost time for someone to annotate these 1996 annotations
| to explain "hard disks" and "floppy disks."
| andybak wrote:
| If only hyperlinks were a thing...
| dang wrote:
| Possibly this edition predates the web. The page has 1996 on it
| but could well have been created before then.
|
| I've replaced the submitted URL
| (https://users.cs.utah.edu/~elb/folklore/mel-annotated/mel-
| an...) with the Story part, and added the Annotations part to
| the top text. Maybe that'll help.
| degamad wrote:
| From the "About this Document" page
| (https://users.cs.utah.edu/~elb/folklore/mel-
| annotated/node3....)
|
| About this document ...
|
| The Story of Mel, A Real Programmer, Annotated
|
| This document was generated using the LaTeX2HTML translator
| Version 95.1 (Fri Jan 20 1995) Copyright (c) 1993, 1994,
| Nikos Drakos, Computer Based Learning Unit, University of
| Leeds.
|
| The command line arguments were: latex2html mel-
| annotated.tex.
|
| The translation was initiated by Erik Brunvand on Tue Oct 15
| 13:41:12 MDT 1996
| anteloper wrote:
| what a fantastic read
| dang wrote:
| It's been a while since we had a Mel thread. (It's good for the
| classics to reappear from time to time, especially for newer
| cohorts of users.)
|
| Related past discussions--others?
|
| _94 years ago today - Hacker legend Mel Kaye was born_ -
| https://news.ycombinator.com/item?id=42695655 - Jan 2025 (1
| comment)
|
| _The Story of Mel (1983)_ -
| https://news.ycombinator.com/item?id=38981958 - Jan 2024 (2
| comments)
|
| _The Story of Mel (1983)_ -
| https://news.ycombinator.com/item?id=37131315 - Aug 2023 (4
| comments)
|
| _Mel Kaye - CV_ - https://news.ycombinator.com/item?id=36188537
| - June 2023 (2 comments)
|
| _Show HN: We found the grave of hacking legend Mel Kaye_ -
| https://news.ycombinator.com/item?id=36031476 - May 2023 (2
| comments)
|
| _Show HN: 40th Anniversary - Who are you, Mel Kaye?_ -
| https://news.ycombinator.com/item?id=36019424 - May 2023 (4
| comments)
|
| _LGP-30 found in basement, the same model of drum computer
| programmed by "Mel"_ -
| https://news.ycombinator.com/item?id=33514399 - Nov 2022 (53
| comments)
|
| _Mel 's Hack - The Missing Bits_ -
| https://news.ycombinator.com/item?id=33392127 - Oct 2022 (48
| comments)
|
| _The Story of Mel (1983)_ -
| https://news.ycombinator.com/item?id=32395589 - Aug 2022 (167
| comments)
|
| _Mel 's Loop - A Comprehensive Guide to The Story of Mel_ -
| https://news.ycombinator.com/item?id=31458048 - May 2022 (2
| comments)
|
| _The Story of Mel (1983)_ -
| https://news.ycombinator.com/item?id=20671031 - Aug 2019 (3
| comments)
|
| https://news.ycombinator.com/item?id=20489273 (July 2019 -
| classic comment by YeGoblynQueenne)
|
| _LGP-30 - A Drum Computer of Significance_ -
| https://news.ycombinator.com/item?id=20484330 - July 2019 (39
| comments)
|
| _A Real Programmer: The Story of Mel (1983)_ -
| https://news.ycombinator.com/item?id=19283255 - March 2019 (2
| comments)
|
| _The Story of Mel, a Real Programmer (1983)_ -
| https://news.ycombinator.com/item?id=11820569 - June 2016 (4
| comments)
|
| _The Story of Mel Explained_ -
| https://news.ycombinator.com/item?id=9913835 - July 2015 (25
| comments)
|
| _The Story of Mel (1983)_ -
| https://news.ycombinator.com/item?id=9017099 - Feb 2015 (8
| comments)
|
| _The Story Of Mel_ -
| https://news.ycombinator.com/item?id=7869771 - June 2014 (77
| comments)
|
| _A picture of Mel Kaye (the Real Programmer) [pdf]_ -
| https://news.ycombinator.com/item?id=3110883 - Oct 2011 (5
| comments)
|
| _Mel the programmer was a real person_ -
| https://news.ycombinator.com/item?id=1155322 - Feb 2010 (16
| 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)
| acuozzo wrote:
| My first HN post: https://news.ycombinator.com/item?id=3110883
|
| "A picture of Mel Kaye (the Real Programmer) [pdf]"
| dang wrote:
| Added above. Thanks!
| naniwaduni wrote:
| A bit of trivia I like to bring up when this comes around: those
| "hexadecimal numbers"? The digits would've gone 0-9fgjkqw.
| MBCook wrote:
| After he finished his vacuum tube computer, the UE-1, I got
| hooked on the Usagi Electric channel on YouTube.
|
| One of the things he did was restore a Bendix G-15.
|
| It seems to use 0-9quvwxyz.
|
| Does anyone know how/when they were standardize to what we have
| today?
| naniwaduni wrote:
| Seemingly not before the late 70s, at least--tar and cpio
| encode their numbers as octal(!) numerals.
| philiplu wrote:
| I'm pretty sure that's due to Unix's early existence on PDP
| machines from DEC, which used octal instead of hex for
| encoding binary values. Why DEC did that I don't know - I
| never got a chance to use DEC equipment back in the 70s.
| anyfoo wrote:
| Several PDPs used 18 bit word sizes (we standardized on 8
| bit bytes and multiples for word sizes later on). 18 is
| not divisible by 4, but it is divisible by 3. An octal
| digit groups three bits together, just like a hexadecimal
| digit groups 4 bits together.
| anyfoo wrote:
| Octal has advantages to be more readable when you are
| dealing with bits in groups of threes (or multiples), just
| like the decimal is advantageous when dealing with bits in
| groups of fours (or multiples).
|
| In UNIX-like systems (and POSIX in general), POSIX
| permissions are in groups of threes: rwx for user, group,
| and others. Hence `chmod 777` means "rwx for user, group,
| others" (i.e. everyone can do everything), `chmod 0644`
| means "rw for user, r for group and others", and so on.
|
| Before we standardize on 8 bit bytes, there were all kinds
| of word sizes. Some machines had 18 bit words, for example.
| 18 is divisible by 3, but not by 4, so octal made more
| sense for those at least.
| MBCook wrote:
| I've noticed octal is common on front panels of
| computers, seemingly much more than nibbles.
| anyfoo wrote:
| It's interesting.
|
| My first idea was that you consciously or subconsciously
| have the front panels from PDPs in mind (which are very
| iconic), and a lot of PDP had word sizes that were either
| only or also divisible by 3 (like 12 or 18). Even for the
| PDP word sizes that were also divisible by 4, it still
| made sense to keep it in grouping of threes for the
| overall line.
|
| Looking at the equally iconic IBM s/360 front panel (a 32
| bit architecture), or the IMSAI 8080 (the Intel 8080 is 8
| bit), you see the bits grouped by fours.
|
| But then you have things like the Altair 8800, which is
| also 8080-based, and which awkwardly groups the bits in
| groups of 3 anyway, which does not even fit. So now I
| wonder how common exactly octal was even for multiple-
| of-4 bit machines.
| MBCook wrote:
| The Altair is probably the one I'm thinking of besides
| PDP series. Because I too remember that weird extra bit
| standing out.
| nxobject wrote:
| There's that old chestnut about how the x86 instruction
| format -- at least up to the 486 -- is easily hand-
| assembled in octal [1], and that this may be have been
| the legacy of a design decision made for the Datapoint
| 2200. [2]
|
| [1] https://news.ycombinator.com/item?id=30409100 [2]
| https://en.wikipedia.org/wiki/Datapoint_2200
| madison256 wrote:
| I learned octal before hex. The Univac 1100/80 was my
| first machine. It was 36 bit words, and had circuitry to
| process multiple data sizes; 6, 9, 12, 18 bit. Octal made
| perfect sense.
|
| http://bitsavers.informatik.uni-
| stuttgart.de/pdf/univac/1100...
|
| >FIXED-POINT OPERANDS: One 36-bit single precision word.
| Addition and subtraction can also be performed upon
| 2-word (72-bit) double precision operands and upon 18-bit
| half-words and 12-bit third-words; the leftmost bit holds
| the sign in each case. Moreover, partial words of 6,9,
| 12, or 18 bits can be transferred into and out of the
| arithmetic and control registers. The 11 00/80 can also
| perform decimal addition and subtraction operations on
| 9-bit bytes, packed 4 to a word.
| anyfoo wrote:
| Oops, "the decimal" in my answer should read
| "hexadecimal", obviously. (Too late to edit.)
| II2II wrote:
| There are many things that we take for granted today that
| weren't decided upon in the early days of computing, like
| the byte being 8-bits (which was popularized by the
| System/360) or word sizes being 2^(3+n). Some early
| machines were bit-serial (imagine an adder operating on one
| bit at a time, rather than on all of the bits in parallel).
| Even more fun: the Harvard Mark I and ENIAC were both
| base-10 machines. I can't imagine the amount of engineering
| that went into producing a base-10 machine out of
| inherently base-2 components. (Example: the relays of the
| Mark I. Tubes are analog, but I'm guessing that any use in
| computers would only use a high and a low state.) Many
| machines used sequentially accessed main memory rather than
| random access memory (the drum memory of the LGP-30 or
| mercury delay-lines). The list goes on.
| afandian wrote:
| The Kenbak 1 was serial.
|
| https://www.kenbak.com/kenbak_registry
|
| You can buy a replica one now (I've bought 2).
|
| https://adwaterandstir.com/product/nanokenbak-1/
| actionfromafar wrote:
| The ENIAC components were (or at least some of them were)
| decimal. Things like tube decade-counters were combined
| into a computer. They picked components available off the
| shelf and cobbled it into a computer. I believe such
| counters were used in stuff like frequency counters
| before they were used in ENIAC.
| drfuchs wrote:
| The annotations say "... I don't have the exact instruction
| format for the either the LGP-30 or RPC-4000 ..." but the entire
| manual for the LGP-30 with this information, and way more, is
| available at
| http://www.bitsavers.org/pdf/royalPrecision/LGP-30/LGP-30_Op...
|
| In 1973, Mr. Willoughby taught the Abington (Pennsylvania) High
| School computer programming class to code in LGP-30 assembly
| language. We didn't actually have an LGP-30; it just happened to
| be what he had been taught on when he was young. All assignments
| were graded by him simulating your code in his head. Of course,
| we then went on to learn the (slightly) higher-level NEAT/3
| language, for which the school actually had an NCR Century-100
| mainframe that would run programs that we submitted on punch
| cards. Mr. Willoughby's (nobody knew teachers' first names back
| in the day) theory was that it was important to learn the lowest-
| level machine language first, so you could understand what was
| really going on underneath. Worked fine for me; evidently it's
| not quite so universal anymore.
| jpgvm wrote:
| I think going as far as assembly up front is probably not worth
| it, also it's hard to keep people engaged at that level as it's
| difficult to make the computer do exciting things with
| assembler.
|
| However I strongly believe it's good to start with C. You can
| still rather quickly do interesting stuff, C is a small
| language so learning the language itself isn't a huge barrier.
|
| A big benefit of the small language is that it leaves more time
| available to explore important concepts, not just the super low
| level ones (memory/pointers, etc) but really important parts of
| the stack that are infectious to everything else. Specifically
| things like syscalls and the libc interface that most other
| languages are essentially built on top of. Working with
| building blocks like pthreads directly is also very important
| IMO, both to get a handle on parallelism and concurrency
| primitives but also to learn why high level languages are so
| valuable. Similarly for stuff like important socket APIs ala
| select/epoll and implementing your own event loop.
|
| I was lucky enough to learn all of this early in my career and
| luckier still to have been able to pass on this knowledge to
| many mentees over the years.
|
| If there are any aspiring programmers here that want to build
| from a solid foundation then yeah, ignore the haters, write
| some C.
|
| man pages and ironically ChatGPT are your friend, use them to
| explore the foundations of (most) modern code so when you start
| writing modern code in earnest/for money you will be
| substantially ahead of your peers in actual understanding.
| daemin wrote:
| No, go down to assembler, just pick a smaller machine like a
| microcontroller where simpler programs can do more things
| more easily.
|
| When you know assembler you can always see what compiled
| programs run as no matter what language that program was
| written in, if you start with C you won't have that ability.
| WillAdams wrote:
| While not universal, I do recommend Charles Petzold's _Code_:
|
| https://www.goodreads.com/book/show/44882.Code
|
| which covers things down to a quite low-level and was recently
| updated:
|
| https://www.amazon.com/Code-Language-Computer-Hardware-Softw...
| TYPE_FASTER wrote:
| Sounds familiar. One of my first classes as an undergrad
| started with boolean logic and boolean gates, then IIRC (it's
| been a minute) assembly for a theoretical processor.
| riffraff wrote:
| I had a class (in the late 90s/00s) where we had to code to a
| theoretical RISCish CPU, but the teacher had built a
| simulator for it which allowed you to inspect registries,
| flags, execute instructions step by step etc
|
| It was quite entertaining.
| marco_craveiro wrote:
| Same here. We used LMC [1] before we moved to a real
| architecture.
|
| [1] https://en.wikipedia.org/wiki/Little_Man_Computer
| elsjaako wrote:
| In the story it says:
|
| > The new computer had a one-plus-one addressing scheme, in
| which each machine instruction, in addition to the operation
| code and the address of the needed operand, had a second
| address that indicated where, on the revolving drum, the next
| instruction was located
|
| Is this correct? The manual you have seems to have a diagram
| with a +1 operation on the "counter register", which loops back
| down.
|
| All instructions seem to use a memory address, but they use
| this for doing the instruction thing (adding, subtracting etc).
|
| Maybe I'm just not understanding the format.
| drfuchs wrote:
| The RPC-4000 (the "big brother" of the LGP-30) had each
| instruction specify the next instruction address. I believe
| this was to allow for optimizing your program such that the
| next instruction would always be right under a read head on
| the drum when the processor was ready for it, because if you
| missed it, it took a whole revolution of the drum to get back
| to it (kind of like a cache miss).
|
| In any case, it seems that while Mel wrote lots of code for
| the LGP-30, the actual hack in the story involved code that
| Mel was porting from LGP-30 to RPC-4000.
| reverendsteveii wrote:
| If it makes you feel any better as of 2005 or so Pitt's
| computer science degree still includes learning assembly
| language and the particular Turtle-Headed Sadist that teaches
| it at the Johnstown branch campus won't let you use hex opcodes
| for the first few weeks of the course so you're literally
| coding in unadorned 1s and 0s. I hated him for it. I hate him
| for it. But nothing compares to the dopamine pop I had when
| figured out how to do long division using only addition,
| subtraction, conditionals and jumps. Not that that's a
| groundbreakingly difficult problem, it was just one of my
| favorite "aha!" moments in my entire career.
| anyfoo wrote:
| The very excellent "Advent of Computing" computer history
| podcasts had an episode involving The Story of Mel relatively
| recently: https://podcasts.apple.com/us/podcast/acting-
| up/id1459202600...
|
| It provides a lot of context, and puts things into perspective.
|
| Note that it helps to be familiar with The Story of Mel before
| listening to that episode. I think the podcast may have explained
| The Store of Mel itself in a previous episode that I haven't
| listened to yet, but I was personally familiar with it already
| through the usual folklore.
| II2II wrote:
| Mel was discussed in episode 114
| (https://podcasts.apple.com/us/podcast/the-
| lgp-30-a-forgotten...), and there was a special episode which
| included a reading of the story
| (https://podcasts.apple.com/us/podcast/reading-the-story-
| of-m...). The machine also pops up from time to time when the
| host discusses "personal computers", which he has a very
| interesting definition of!
| alnwlsn wrote:
| David of the Usagi Electric youtube channel received an LGP-21
| computer (not Mel's LGP-30) a while ago which will become a
| future channel project. But along with it, he received a binder
| of LGP-30 code... with a bunch of programs written by Mel
| himself!
|
| Apparently, Mel worked for Librascope for quite a while and wrote
| a lot of stuff. Mel's code is supposedly somewhat better
| commented and less cryptic than he is usually credited for
| (though from what I've heard self-modifying code on the LGP-30
| was a somewhat intended feature). Whether or not that applies to
| Mel's blackjack program is probably anyone's guess. A paper tape
| dump of it is known to be out there, but I don't think the source
| code is.
|
| The idea is to study some of those programs and maybe port a few
| to understand how the LGP-21 works (they are supposed to be
| similar), since so far I don't think much documentation on the
| LGP-21 has been found.
| BruceEel wrote:
| Very cool, those annotations!
|
| Are there any photos of 'drum memory'?
| varjag wrote:
| There are videos: https://www.youtube.com/watch?v=-iRE2wlZ3pg
| BruceEel wrote:
| Awesome, those were hardcore engineers. Thanks!
| habedi0 wrote:
| The Story of Mel is all you need?
| Shorel wrote:
| This version combines the annotations and the text:
|
| https://jamesseibel.com/the-story-of-mel/
| oc1 wrote:
| Oh yeah, i've met enough of these Mel dudes, who refuse to adapt
| and won't touch ai productivity tools because it's not real
| programming to them. Guess who is deploying his third app this
| week ;)
| adiabatichottub wrote:
| The old, poster-sized machinist's tooling chart on the wall in
| our shop has a great quote at the bottom: "Nobody will remember
| how long it took to do the job, but they will remember how well
| you did it."
| reverendsteveii wrote:
| when I first read this story out of the back end of the jargon
| file in the 90s it felt like Deuteronomy for internet people. It
| still does.
___________________________________________________________________
(page generated 2025-07-16 23:02 UTC)