I'm not totally sure I have the credentials to chime in, since I'm relatively young -- just under 35 -- but I got started really early (in the second grade on a Commodore Vic-20), and I spent a lot of time on various dial-up BBS services and worked on some Unisys big iron in the East Bay.

So: I really miss that, honestly, and some of my energy recently has been spent on trying to figure out how to bring some of that back.

With the Commodore Vic-20 and 64, it didn't do anything at all unless you programmed it or loaded a tape into it. With that setup, programming it was the game; it was what you did for fun. And there was almost no abstraction, very little complication. You could play around with making sounds or colors or your own simple racing car game just by sitting down and typing into it. Instead of the internet, I lurked around the local library for game magazines with source code listings in the back.

The dial-up BBSs were similar, in a sense, in that you couldn't really do anything else while you were on them. I find that I can waste spectacular amounts of time today by sort of "half-working" -- I write a couple of lines of code, get bored, hit alt-tab to bring up my always-open web browser, get a fix of internet for twenty minutes, then switch back to the code and try to bang out a few more lines. That's an awful way to get anything done. With the dial-ups, you knew you were wasting time, and you didn't tend to do it for more than a couple of hours before you wanted to go back and write something again. There were still trolls and such, so I can't really say that the community was any better.

In the earlier days of the internet, websites were less real-time, and software didn't get in your way as much. The OS was simpler. Macs had MacsBug, which you could use to easily debug your own software without dealing with an IDE's buggy interpreter, or you could use to easily investigate someone else's software. To me, it felt more like I was dealing directly with the machine, instead of having to deal with someone else's software, which in turn is dealing with someone else's software, and so on until there's a machine somewhere at the end that I can no longer get to. (I worry that UEFI is only going to make this worse.) One of my first for-fun projects on my own Mac was directly accessing the ADB system to make the lights on my keyboard blink back and forth like the Knight Rider car. (I wasn't allowed to do that kind of thing on my parents' computers. :-)

I can't really say there was anything fun about the mainframe. It had the best recovery systems I've seen on any operating system so far; you could start a payroll and an accounting job (typically things that you didn't want to mess up), walk over to the wall, yank the cord out, plug it back in, and it would start back up right where it left off. That was impressive. And as geophile says, you generally rolled your own for everything. For most things, the easiest way to get software onto the mainframe was to write it from scratch. Since it was a business-purpose-only machine, it didn't get in your way too much about that, so that really wasn't that big of a deal. A major payroll job rewrite might be a couple of hundred lines of COBOL. There were deep, scary places in the machine with lots of code written by greybeards, but you never went there.

People actually seemed to share more -- little bits of code for various goodies were popular on early "internets" like eWorld. There are plenty of Javascript snippet sites now, so I'm not sure in what way it seems like people shared more, but it does seem different. Maybe it was different in that people seemed less motivated by gathering attention; they just wanted to share code because it was fun. People wanted to trade Legos so that they could build cooler things, not because they wanted to be the next Legoland and make some ad money. (I wonder what J5iverson is up to these days?)

People didn't give you shit for doing something like writing your own memory manager. They never said, "Why don't you just use _____, it's what everyone else does."

Programming seemed a lot more rewarding, though I can't honestly say whether that's just because I do it for a job now and that means often having to do it when I don't feel like it. But, programming was rewarding for programming's sake, not for the end result. Programming was a way to learn more about the machine. It was a way to make electronics do what you wanted them to. It was a way to see if you could change or improve the way that something worked, rather than just trying to create a new product or end result. (One of my prized possessions -- and one of the very few that has survived my cross-country moves and purges of stuff -- is a copy of Tricks of the Mac Game Programming Gurus, a hefty volume full of source code, with a CD full of even more stuff.)

In the early days of the web, people curated their sites. They didn't keep blogs, they had big index pages with links to stuff they thought was important. It was rarely topical. It didn't require, or even really want, your attention all the time. There was more incentive to creating centralized repositories of information on a subject. There was no such thing as advertising, you just did it because you wanted to be helpful. (And maybe because you were a bit of a hoarder.) People bragged about writing their sites in Notepad. All the cool kids used Perl. Again, these were things that mostly did what you told them to do, instead of spending time fiddling around with icky CSS and browser issues. I still didn't like it as much as the BBSs though.

Everything just seemed less opaque. Trouble with a modem? Open up a ZTerm or similar, and directly ask the modem what the hell was wrong, as long as you knew the magic incantations. Program die on a Mac and lock up the system? Hit the programmer's interrupt switch (command-power on the keyboard, or a tiny switch on the back of the machine), and type, "SM 0 A9F4" into the box that appeared on the screen, followed by, "G 0", to directly write the address of the _exitToShell trap to memory location 0 and continue execution from there. Buggy program on a Mac? Fire it up, get as close to the bug as possible, fire up MacsBug, rewrite its code in realtime until it behaved, take notes, and then open the program (or its resource file) in your favorite hex-like editor and make your changes permanent on your copy. Hard to do that with "the cloud". A home computer or a mainframe could do anything that you wanted it to, and it wasn't unreasonable to make it do anything, because it seemed to take so much less time and effort.

Well, rose-colored glasses and all. And, it's not that all the advancements we've made since then, in terms of abstraction and performance and communication and so on are bad.

It just seems less fun.