The Story of Mel, A Real Programmer, Annotated (1996)
25 comments
·July 12, 2025drfuchs
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.
TYPE_FASTER
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.
WillAdams
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...
jpgvm
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.
anyfoo
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
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
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.
naniwaduni
A bit of trivia I like to bring up when this comes around: those "hexadecimal numbers"? The digits would've gone 0-9fgjkqw.
MBCook
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
Seemingly not before the late 70s, at least—tar and cpio encode their numbers as octal(!) numerals.
II2II
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.
anyfoo
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.
philiplu
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.
null
dang
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)
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)
ksenzee
It’s almost time for someone to annotate these 1996 annotations to explain “hard disks” and “floppy disks.”
anteloper
what a fantastic read
andybak
If only hyperlinks were a thing...
dang
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
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 © 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
null
The annotations are at https://users.cs.utah.edu/~elb/folklore/mel-annotated/node2.....