Things Every Hacker Once Knew: 1.7

Did I say Things Every Hacker Once Knew was stabilizing? Silly me…

Here’s the 1.7 version. Substantial new material on the BBS scene – this is my answer to the people who have been bugging me to at least mention XMODEM/YMODEM/ZMODEM.

The expository approach I’m taking is to bin all of UUCP, the BBS scene, and commercial dialup services like AOL as parallel contemporaneous attempts to figure out what kind of store-and-forward messaging people actually wanted.

Published
Categorized as General

39 comments

  1. FYI, RS-232 is still widely present on servers. At minimum, there’s a serial link between the OOB controller and the mainboard for remote serial access. And I haven’t touched a rackmount server yet that didn’t have a serial port. Serial OOB access is still the cheapest common solution; most server manufacturers charge money for remote bitmapped console.

    And server-grade UPSes still carry the option to communicate over RS-232.

  2. Also, alongside Fidonet was MajorNet, the set of internconnected MajorBBS (and, later, Worldgroup) multiline BBSs. I knew a lot of people who were on Majornet, but I never heard of Fidonet until relatively recently.

    And if you’re going to mention BBSs, you really have to mention door games, teleconferences, IRC, talkd. The gorram “write” command is still omnipresent!

  3. I recall Kermit being a thing back in the day. I understand it still sees some limited use in the ISS, but it seems to me that most modern-day hackers wouldn’t have any idea about Kermit itself.

  4. BBSes and door games; you’re evoking nostalgia in me

    While I have fond memories of my time in the tail end of the BBS scene, I don’t think it’s necessary to go into the details in this document. First, they’re well-cataloged elsewhere, and second, they’re not things that every hacker once knew. A hacker from the minicomputer culture and a hacker from the micro culture might be able to have a conversation about modems, but I don’t know many hackers from the mini culture killed time on their local BBSes. Reflecting on my own time in the BBS scene in the mid-90s, I don’t think I ever encountered any hackers from the mini culture. Indeed, in the BBS scene and the micro culture I encountered, ‘hacker’ described what the hackers from the mini culture disdainfully called a ‘cracker’. It wasn’t until some years later when I first tripped over the Jargon File that I slowly started to understand the original use of the word and the culture that had originated it.

    1. >While I have fond memories of my time in the tail end of the BBS scene, I don’t think it’s necessary to go into the details in this document.

      Which I tried to restrain myself from doing. My goal was to write just enough to (a) establish it as a store-and-forward parallel to UUCP, and (b) supply context for a mention of [XYZ]MODEM.

      >I don’t know many hackers from the mini culture killed time on their local BBSes.

      There were at least some who did. I was one.

  5. The WELL (Whole Earth ‘Lectronic Link) might also merit a mention, if only for the memetic impact of Stuart Brand and the Whole Earth Catalog..

  6. Also, IRC is alive and kicking, to a much greater degree than modems and VDTs are. In fact, comparing my memory of IRC in the mid-late 90s to now, I think there may actually be more hackers on IRC (like Freenode) than there in the past. Though, that might just be because of which networks I haunted at the time.

    1. >Also, IRC is alive and kicking, to a much greater degree than modems and VDTs

      I think that is true. I would count IRC as ubiquitous common knowledge today, not in the past.

  7. IRC is definitely not ubiquitous common knowledge; I still have to explain it to people, and it’s getting slowly replaced by things like Slack and Discord. Hell, not even mailing lists are, at this point. Witness all the people who never step foot outside a PHPBB instance somewhere, but consider themselves very active in various Linux distro user communities.

    My interest in [XYZ]MODEM comes more from what each iteration was trying to fix over the previous. XMODEM added honest to god checksums for error recovery, an improvement over Kermit. YMODEM added multi-file support. ZMODEM added session resumption. At least, I think that was the sequence of things…

    1. >IRC is definitely not ubiquitous common knowledge; I still have to explain it to people,

      Bizarre. About every project I run into has an IRC channel.

  8. Documentation around the protocols and their history is extremely sparse. Became an issue when I started trying to script downloading config backups from a very modern Ubiquiti EdgeSwitch. (It was either that, or open up more holes in firewalls to allow it to TFTP the config file out…)

  9. > Bizarre. About every project I run into has an IRC channel.

    Yeah, that’s slowly changing. I know several, now, that are Slack-only, Discord-only, whatever. Mostly cryptocurrency and/or organizational projects like conference organizing. IRC is definitely second-class, now, drifting toward stowage…

  10. > I recall Kermit being a thing back in the day. I understand it still sees some limited use in the ISS, but it seems to me that most modern-day hackers wouldn’t have any idea about Kermit itself.

    The most likely avenue for familiarity, which is where I’m familiar with Kermit, is file transfer to/from a DOS retrogaming machine.

  11. The mention of other networks brought something else to mind that many hackers once had to know.

    Especially toward the end (right before they were all eaten by the Internet outright) most of these commercial and hobby networks (CompuServe, GEnie, FIDONet, WWIVNet, etc.) had gateways that would transmit email and (sometimes) forums/newsgroups back and forth between them and the Unix-based nets (UUCPNet and the Internet). Even within the Unix world, for a while it was important to know how to route mail between old-style bang path addresses and the modern domain-based addresses.

    I recall that I had a cheatsheet that detailed how to do this for roughly a dozen different networks.

  12. @Doctor Locketopus –

    > [F]or a while it was important to know how to route mail between old-style
    > bang path addresses and the modern domain-based addresses.

    > I recall that I had a cheatsheet that detailed how to do this for roughly a dozen different networks.

    Hell, some people had a BOOK!

  13. @Jon Brase –

    > The most likely avenue for familiarity, which is where I’m familiar with Kermit,
    > is file transfer to/from a DOS retrogaming machine.

    Or a “classic” Macintosh to/from a VAX (which happened to be running BSD 4.x, but could just as well have been running VMS). My wife used a setup like this at her university in the late ’80s as she was working on her PhD. Word processing on the Mac, statistics computations on the VAX, but keep all the source files on Mac floppies.

    Good times, good times….

  14. > Hell, some people had a BOOK!

    I feel like that title would have been funnier had it been %@::! instead. The bang being on the end instead of the beginning makes it easier to read as the cussing someone having to deal with an email path traversing multiple networks might have uttered.

    1. >Could that be due to the age of the project principals?

      I suppose…but I can’t think of a plausible reason for the sample “projects I stumble across” to be age-biased.

  15. @esr, @Michael Moi –

    > > IRC is definitely not ubiquitous common knowledge; I still have to explain it to people,

    > Bizarre. About every project I run into has an IRC channel.

    Could that be due to the age of the project principals? Slack is the new hawtness, and younger hackers would pick up on that. Projects run by us old(er) curmudgeons would tend towards the older tools, i.e. IRC.

  16. I could give you more “cultural memory” around BBSes, since I ran one for about 6 years towards the tail end of the scene. (1991-1997)

    In addition to Usenet, there were actually several other inter-BBS networks in existence. The biggest was Fidonet, which had Netmail, Echomail, and FileBones as the primary uses. Echomail was a lot like Usenet, while Netmail resembled internet email. Netmail and Echomail tended to be slow, taking as much as a few days to go from one end of the network to the other. You could also send “Crashmail” which was netmail sent directly to the other BBS by calling them long distance. There was also something called a FREQ, which was accomplished by sending a crashmail with the files you wanted to download, waiting a few minutes, then calling the same BBS back to download the files you requested. Filebones are the last thing, and were similar to Usenet’s file sharing forums. It was used for distributing certain kinds of files automatically between boards. I believe at its peak in the mid 90’s, Fidonet had some 60k nodes connected. Don’t quote me on that number, my memory may be a bit faulty. Fidonet is still up, but is down to about 1700 nodes, and a lot of them are actually only accessible over the internet.

    The other non-fidonet networks mostly used QWK for sending mail between nodes. QWK files were typically used so that users could get all the messages on the boards and reply to them without staying online.

    In addition to the ANSI protocol for colors and screen positioning, there was also the Avatar protocol which used 3 characters instead of 7+ for most functions and was more efficient on slow modems. There was also RIPscrip for 16 color 640×480 graphical interfaces to bulletin boards. In addition to Zmodem, towards the end some BBSes were experimenting with protocols like Lynx, and Puma, which could send files both up and down at the same time full duplex.

  17. (Also, if I recall correctly, the reason that BBSes started shutting down wasn’t that the users were leaving for the internet, but rather that the Sysops were now playing on the internet and didn’t have time to keep maintaining the old systems. My user volume was as high as ever in 1997 when I shut it down.)

  18. UUCP was cool. I ran a Waffle BBS system for 3 years. I had scored an inexpensive 30MB drive and a 115Kb modem, so I could take most of the newsgroup feeds and lots of personal file transfers. I also had access to a SUNY connection that I ran Kermit on another computer so I could pull files from there and have them on the Waffle side. The two systems talked via twisted pair ARCNET. Lots of people loved the Kermit connection to be able to get the latest files.

    Waffle was up from 6 AM – 6 PM and then the Kermit link was from 8PM until 6AM. I used the 6-8PM timeslot for maint and doing the things I wanted to do. I pulled UUCP from one upstream user (starting at 6AM) and fed three other local boards. I had a few users that would come in and pull just a few groups and mail. Mainframe time was cheaper after 8PM (as were the phone rates) which is why it ran at night.

  19. Not relevant to “Things Every Hacker Once Knew”, but a trip down Memory Lane for me. I was fairly late to the UUCP scene in the early 90s, and I recall getting my first Linux machine up and running by sending mail with a list of files to a UUCP gateway, which would then mail the files back to me in base64-encoded chunks. I had to decode and reassemble them one at a time, and I think it took me about 6 weeks to get all the files I needed to set up a basic Linux machine with all the tools to make it usable.

    Looking back on it, I realize how much I learned from going through that process that I’ve long since forgotten. Now it’s too easy to just download an Ubuntu disk image and boot it without learning anything about what’s under the hood.

  20. @esr –

    > I can’t think of a plausible reason for the sample “projects I stumble across” to be age-biased.

    I misread – I thought you had said in the post that I replied to “about every project I run has an IRC channel”.

    I missed the into. My bad. :P

  21. Maybe some discussion about early file system limits which still impact us today? Windows drivers seem to still use 8.3 naming format. Some people out of habit use indecipherable 8 character names for files etc. And of course “umount” instead of “unmount”.

  22. Just read through “Things Every Hacker Once Knew” and I was reminded once again that all the graybeards have probably forgotten more about what lead up to the connected world we live in than the current crop of “tech-savvy” socialites will ever know. Pieces like this help keep me motivated to finish my CS degree (16 years and counting) by reminding me that not everyone who writes code for a living sits in a room full of 6×6 boxes and hates their life. Thanks for keeping the magic alive.

    I also noticed a typo under Key Dates. The entry for 1970 is missing the first ‘o’ in microprocessors.

  23. @Michael MOI: Also, alongside Fidonet was MajorNet, the set of internconnected MajorBBS (and, later, Worldgroup) multiline BBSs. I knew a lot of people who were on Majornet, but I never heard of Fidonet until relatively recently.

    I was active on Fidonet back when. You can think of it as Usenet’s design adapted for systems that were single-user/single tasking. The Fidonet addressing scheme bore similarities use how Usenet did things. And a key to Fidonet was the front-end mailer. A multi-user system like a Unix box offering Usenet could potentially handle more than one communications session at a time.

    Since micro-based BBSes could normally handle one caller at a time, Fido systems ran a front-end mailer like BinkleyTerm. The mailer was the resident process. When an incoming call was received, the mailer answered the call, and determined whether it was another Fido system or a user of the system the mailer was running on. If it was another Fido node, it handled message transfer to/from that node. If it was a user, it called the underlying BBS software to talk to the user. There was a Zone Mail Hour nominally reserved for communication between Fido Zones, but a Fido system could accept connections from another Fido system at any
    time.

    Fido message bases were equivalent to newsgroups. Fido also supported the equivalent of email, and you could send private correspondence directly to a user on another Fido node instead of posting publicly in a message base.

    The biggest thing in Fido’s favor was that it was standards based. Fido published technical standards defining how systems communicated with each other. If the software you ran to communicate with Fidonet met the standards, you could be a Fido node, and it didn’t matter what hardware you ran. Other BBS networks tended to be hardware specific, and only worked on a particular set of systems, like Intel architecture PCs running MSDOS.

    The US seems to be largely a Fido free zone these days, but I believe there are still active Fido systems in Europe.

    I was once a moderator on the second largest BBS network, the Relaynet International Message Exchange, with just under 1,000 nodes. RIME had a different approach. RIME systems were PC based, but there were plugins that permitted different kinds of BBS software to be nodes on RIME systems. For instance, RIME required real names for posters, but MajorBBS used handles. So the plugin for MajorBBS systems that were RIME nodes did translation, accessing the real name from the BBS user records of Major users posting to RIME to populate the name field on messages, and translating the other way for replies to Major users so they saw stuff addressed to their handle.
    ______
    Dennis

  24. One thing that could be made more clear in the piece is that most BBSes ran on PC hardware.
    A lot of corporations ultimately published BBS dial in numbers to distribute updates and stay in touch with their users.

    Many sysops (there’s a word falling out of use today!) ran in the now obscure (crashy, flaky) primitive multi-tasking models under DOS, the names of which I’ve now long since forgotten, but each BBS ‘ware had passionate adherents, and it wasn’t until the appearance of reliable multitasking (say, 1995 or so), that you’d find someone *not* using a dedicated box for their BBS.

    The internet (note the lower case i) folk largely used usenet. Usenet and fidonet and all the other BBS software were quite separate cultures – and classic dial-in modem BBS users had ansi graphics which made them sneer at the primitive text-only characteristics of usenet. I remember multiple BBS operators that sneered at my usenet feed on my expensive 286 based system (I ran a ubbs on xenix from oh, 1986-1989) and were proud of their single character commands to flip around to various bits of their site….

    Despite the obvious advantages of layering a multi-user BBS on top of a real multi-user system, unix or Xenix based BBSes were quite rare until you could get cheap unix on PCs, which wasn’t until linux and freebsd and the now nearly forgotten 100$ sysv.4 from – damn I can’t remember materialized. In the 80s you had to run something like a radio shack 6000 to get Xenix, or shell out big bux to get a

    One of the first larger scale unix based BBSes – with wow! multi-user local chat! showed up in Philadelphia in 1990, running ubbs – and is still available today as cellar.org. If you look carefully you might figure out what my involvement in it was….

    https://cellar.org/faq.php?s=cf9b960cb5e732446d4d5ec5b9b4eb29&faq=what_it_is#faq_cellar_history

  25. oh, here’s a blast from the 80s:

    Back then:

    never, ever, ever, do a malloc(1024*1024). The 16 bit unixes – and those with 286 style segmented memory – couldn’t do it. Memory management back then was a big deal and I used to curse out regularly those with 32 bits of real memory that would just blithely allocate memory in large chunk that we couldn’t segment away with near and far pointer memory models. Even allocating more than 64K at a time was frequently a problem.

    In the PC world those days, everybody – and every language – had all sorts of hacks around swapping out memory segments. The CBM 64 let you overlay 8k of rom with memory *and we needed it*.

    segments are now *thankfully* banished from existence for all those not programming microcontrollers, but near and far pointers, and data structures like lists tend to be overused (instead of arrays), a legacy still with us because we couldn’t allocate memory reliably in big enough chunks.

    I think that a lot of our “pipe” concepts, and small tools tied into pipelines – basically come from not having enough memory either – all you needed was 1 character in one character out, and solutions fell out cleanly – if not efficiently.

    It is so amazingly faster now adays – and perl led the way here – to just slurp everything into memory, treat the data as memory, and then push it out again. Loccount suffers from this single character in/single character out abstraction….

  26. More memory lane:

    talk: talk dates back to the early 70s. The modernized version was very popular for p2p chat and nearly ubquitious until the late 80s – the standardized talk protocol has ipv4 assumptions baked so deeply in it (and no security) – so it’s gradually died….

    You were bored, you’d “finger” everybody you knew (what, you don’t still keep a .plan file?), talk them, and spend the night chatting that way, long before irc.

    screen was one of the first effective screen-sharing systems. I still use it to this day when doing collaborative command line work, and training new sysadmins stuff at the command line. Still heavily used today as a means to keep a session running when you might drop offline.

    Far better than modern “pastebin” in many respects.

    X11 let you have multiple displays and keyboards – share screens relatively efficiently, not just with yourself, but with others. Before displays got so big, I used x2x a lot.

    Amazingly emacs still has a mode where you can do collaborative development with multiple parties within it that way – and it works over ipv6, even.

    /me goes back to fond memories of his first X11 terminals….

  27. I agree with another poster that knowledge of irc is slowly dying. It’s pretty hard to use the first time – the nickserv abstraction – finding a chatroom to talk in – the need for znc and bitlebee if you want to keep your connection running. For a while there it looked like jabber would sweep the world – and as everybody invented their own chat protocols – for no good reason I can think of – microsoft had their own, for example, multiplexors like bitlbee and pidgin’s purpl library were invented to fit everything together.

    I abandoned irc for a couple years, til recently – because the chat tools directly in front of me (facebook, google) were, well, directly in front of me, and like jabber, were store and forward, unlike irc.

    1. >One last thing: superservers like xinetd and inetd.

      Dave, you are succumbing to the temptation to gush nostalgic trivia. Remember the filters:

      (1) It must have been common knowledge at the time.

      (2) It must since have been forgotten, or is very near being forgotten now.

      (3) It must be potentially useful for a younger Unix hacker.

  28. Since my comment on another thread was ignored, I’ll raise it again here:

    >What was not commonly known then is that the “AT” prefix was not arbitrary.

    I still don’t see any evidence offered to support the idea that the AT prefix was deliberately chosen to produce the auto-baud feature it turned out to support. Everything I’ve seen on the subject indicates that this feature was a happy coincidence, not a deliberate design decision at all.

    Unless some evidence in favor that idea can be produced, this sentence should be reworded so it doesn’t imply that the autobaud feature was explicitly designed into the original Smartmodem 1200 command set.

  29. @Dave Taht: lot of corporations ultimately published BBS dial in numbers to distribute updates and stay in touch with their users.
    Microsoft used to have one, run on a MajorBBS system.

    Many sysops (there’s a word falling out of use today!) ran in the now obscure (crashy, flaky) primitive multi-tasking models under DOS, the names of which I’ve now long since forgotten, but each BBS ‘ware had passionate adherents, and it wasn’t until the appearance of reliable multitasking (say, 1995 or so), that you’d find someone *not* using a dedicated box for their BBS
    There were three models I recall in common use. Most BBSes ran on a dedicated system, and you could find BBSes for just about any hardware. (There’s a Yahoo Group called 80’s BBS devoted to the old days, and an old timer who has put his Commodore 64 based system back up. IIRC, he originally had it back up on a dial-up line, but it foundered because no one still had a modem, so it’s reachable via telnet now, and there’s a freeware PC client program.intended to give you the true look and feel of what you got when you called it back in the 80’s.)

    Larger systems (like the Regional RIME hub I called), had several boxes up under something like Novell Netware to be able to handle more than one caller at a time.

    Another approach was to run under a multi-tasker. Another RIME sysop had four nodes of a Wildcat BBS up on a single fast AT class machine using DesqView. You had to experiment with the time-slicing DV used, but he had his setup fast and reliable.

    There were some fairly creative hacks developed to work around the limitations imposed by low-end hardware running single-tasking OSes.
    ______
    Dennis

  30. @Dave Taht: In the PC world those days, everybody – and every language – had all sorts of hacks around swapping out memory segments. The CBM 64 let you overlay 8k of rom with memory *and we needed it*.

    I logged time on C64s. The 6510 CPU used had a 64K address space. The C64 had 64K RAM, and 16K ROM, in two 8K chips. One chip held the OS kernel. The other held a Microsoft BASIC interpreter, and the default configuration mapped the ROM chips into the 64K address space. Turn on the machine, and you were talking to BASIC as your shell.

    But you could twiddle bits to map the underlying RAM into the address space instead. One hacker had a neat “wedge” that hooked into the Restore key. The normal use for that key was to press it simultaneously with the Run/Stop key. If you did, the system did a warm boot. If you pressed Restore by itself, nothing appeared to happen, but a non-maskable interrupt was generated. The hack hooked the interrupt, and pressing Restore popped up a menu. He had code and data stored in the RAM normally hidden “under” the ROMs , flipped the ROMs out of the mapping to access the code or data, and then flipped them back in. You had to be careful the code stored there wasn’t trying to access ROM based routines when the ROMs were mapped out, but it worked fine and was a neat hack.

    segments are now *thankfully* banished from existence for all those not programming microcontrollers, but near and far pointers, and data structures like lists tend to be overused (instead of arrays), a legacy still with us because we couldn’t allocate memory reliably in big enough chunks.

    Well, banished if you’re on a 64 bit machines. On a 32 bit 386, a segment was 4GB, and I saw folks bump their heads on that limit…
    ______
    Dennis

Leave a comment

Your email address will not be published. Required fields are marked *