Modems

When I started using the internet I had a DOS machine (486 DX2-66). Other people actually had real computers running Windows 95 by that stage, so I guess I was always a bit "retro". For a browser I was using something called "Arachne". At that time basically everyone was still using dial-up to get internet access. I had a 14.4 modem I think.. or was it 28.8? I think at some point I upgraded to a 56k beast. I can not remember how I got the modem to work in DOS. Anyway, here are some interesting things about modems:

Modem as a serial connection

You connected your modem to the computer via a serial cable. Modems usually had a parallel port connector and at that time was totally normal to have a parallel port on your PC too. A parallel port is basically a serial device but where all 8 bits are transmitted in parallel across an 8 wire data connector, rather than serializing each bit down 1 wire (of course there were other wires in the connector for managing the state of the connection).

The modem presents itself to the computer as a serial connection - one that "understands" ASCII text. In the good-ol-days a serial connection is how you connected a screen and keyboard to a minicomputer. Your minicomputer would have several physical serial connectors, and you would plug each of these to "dumb terminals". These terminals would send key presses as ASCII text, send special escape sequences (eg: Ctrl-C) and also receive ASCII text and escape sequences for rendering to the screen. If you use Linux or Mac and open a terminal emulator like Gnome terminal, xterm or many of the others, you are using a software emulation of this old-timey physical system.

A modem creates a serial connection over a telephone line. You can connect over a serial port to the modem and type what are called "Hayes command set" or "AT commands" to control the modem. For example ATDT<number> would make the modem dial a number. Once you connect to a modem on the other side you don't actually have a network connection yet - just a serial link via a modem. This is how BBSes worked - there was no network (TCP/IP) connection, just a plain old serial connection. Rather than get a shell on the other end you got an interactive text-based application with menus and so forth.

So, how do modems provide a network connection? Via PPP (Point to Point Protocol).

Modem as a TCP/IP connection

PPP is a bit of software that creates a TCP/IP network over a serial link. You could use PPP to create a network connection between two computers connected with a standard serial cable. What is really interesting however is creating a PPP connection, over a serial connection over a phone line! This is the relationship between modems and PPP: the modem creates a regular serial connection over a phone line, and PPP creates a TCP/IP link over that serial connection. Connect to a university or a company with an Internet connection and you have access to the Internet!

Dial-up ISP

My first (real) job was working on the help desk at an ISP. When I started I knew how to program in Basic on the C64, I had a DOS machine at home, but apart from that I knew nothing about how the internet worked. Nor did I know anything about "Unix", serial connections, PPP or any of the underlying technologies. Most of my time at the ISP was spent a) helping people configure Windows 95 to connect to the Internet (it was not very straight forward) b) helping people get their email, and c) helping people remove viruses and malware.

Old dial-up ISPs worked like this: They had a phone number that you would dial into using your modem. Behind that was some form of multiplexer - ISPs usually only had 1 or 2 phone numbers that users could use, but obviously many users could dial in simultaneously. I never learned about how this all worked when I was at the ISP. Reading about it now it seems there was an evolution, and a whole variety of options for how to get an incoming customer modem connected to an ISP modem (real or virtual). Once the customer modem was connected to an ISP modem, there was an authentication stage. Then a PPP link was established over this serial link, a public IP address was assigned to the connection at the ISP, and the user now has a TCP/IP link to the Internet!

Nostalgia

Maybe it's just nostalgia, but I feel like I tried to run as fast as I could into the future without bothering to look back. I remember when ADSL first came to the ISP, and our workload kinda dropped: ADSL shipped to the customer with it's own preconfigured hardware, people just got a DHCP connection to a modem with a firewall and the amount of viruses dropped significantly. Everything got easier and better and faster. Everything got a little bit more boring. At the time I was looking forward to the next thing. I had learned how to set up Apache, programming in Perl - I was learning about corporate networks, I was learning Linux. There was so much to do I didn't ever want to think about dial-up connections ever again.

Yet without realizing it I had witnessed the transition from the Internet as technology of "Unix culture" over to "Windows culture". While I was on the phone talking to people configuring Windows 95 PPP connections, the engineers out the back were using Sun workstations. It's like the computing world split in two, and was then smashed back together. Personal computers of the new-world were Macs and IBM PC Compatibles, long evolved from the Apple IIs and C64s of early personal computers. Yet those early personal computers were built by enthusiasts wanting to own their own computer who couldn't afford a "real" computer - personal computing was a reject from the computing old-world. Serious computing (and serious networking) was done on old-world Minicomputers, Mainframes and Unix. When the Internet came along it was from the old-world, but was adopted by the new-world.

Now there is hardly any information on the Internet about PPP or dial-up. At the time it felt like there were too many types of modems, too much software, too many versions of software to track. Now you are lucky if you can find a single version of an old Windows 95 program, let alone a specific version. ISPs have largely given up on dial-up - Not that it matters as I don't even have a landline! People are complaining more about Google search, and on this topic I tend to agree - I don't believe all the old information has completely vanished, I just think it's extremely hard to find. It's buried under kilometers of Internet silt.

Yet I am typing this in 2022 on a Lenovo T410 laptop from 2010, and I look on the back and the damn thing has a 56k modem built in! I am writing this in vim in a terminal emulator, all simulating in software what was essentially a physical setup from over 40 years ago (or more). In that sense this modem is "newer" than the technology I am using to ponder about it.

I think the dynamic and tension between old-world and new-world computing still playing out. The computing new-world is continously rediscovering things from the old-world. I see articles on Hacker News in 2022 about someone discovering Smalltalk. It seems like new flavors of Lisp are all the rage. Functional programming is a thing, despite being discovered in the old-world many decades ago. I see this dynamic as being a direct consequence in this split that personal computing had with serious computing in the 80s.

Maybe it's nostalgia but I wish there was a dial-up ISP in my area. Maybe still maintained by some old Unix hacker who dreams of some techno-utopia of free software, free connectivity - a free Internet. I wish that we preserved more and kept old technology working and running. Moreover, people that were in their prime at the beginning of the Internet are starting to disappear from the world. Do we really want to live in a world where no one knows how to connect two computers with a modem over a phone line? I feel that maybe we have all run too fast into the future without looking back.

https://www.gekk.info/articles/ras.html https://tldp.org/HOWTO/PPP-HOWTO/