My ultra-geeky childhood programming story:When I was a small child in the 80s, we had two computers in the house.
-
My ultra-geeky childhood programming story:
When I was a small child in the 80s, we had two computers in the house. One was the usual kind of 'your child can learn to program on this!' 80s home computer, in our case a ZX Spectrum. And I did learn to program on it. But the other one was the interesting one.
My dad worked for DEC, and had brought home a DEC Robin. (I think officially a VT180? But Dad always used the internal codename.) He would use it to work from home, by dialling the office on the phone, and running a VMS shell session directly over a 1980s modem. I'd sometimes sit and watch him work, and of course not understand very much.
When Dad wasn't using the Robin, I was allowed to have a go on it. It ran CP/M-80, and had a BASIC interpreter called MBASIC. So I learned that dialect in parallel with Spectrum BASIC.
On the Spectrum, my toy programs would often use the Spectrum's graphics, to draw pictures or weird interference patterns or whatever. But the Robin only had a text mode (or at least, if it did have graphics, I never found them). What would be fun for a child to do on that?
(1/4)
-
My ultra-geeky childhood programming story:
When I was a small child in the 80s, we had two computers in the house. One was the usual kind of 'your child can learn to program on this!' 80s home computer, in our case a ZX Spectrum. And I did learn to program on it. But the other one was the interesting one.
My dad worked for DEC, and had brought home a DEC Robin. (I think officially a VT180? But Dad always used the internal codename.) He would use it to work from home, by dialling the office on the phone, and running a VMS shell session directly over a 1980s modem. I'd sometimes sit and watch him work, and of course not understand very much.
When Dad wasn't using the Robin, I was allowed to have a go on it. It ran CP/M-80, and had a BASIC interpreter called MBASIC. So I learned that dialect in parallel with Spectrum BASIC.
On the Spectrum, my toy programs would often use the Spectrum's graphics, to draw pictures or weird interference patterns or whatever. But the Robin only had a text mode (or at least, if it did have graphics, I never found them). What would be fun for a child to do on that?
(1/4)
My main programming project on the DEC Robin was to write, in MBASIC, an imitation of the entire computing environment that Dad interacted with when he dialled in to the office with the modem.
I wrote programs that mimicked the whole login sequence (modem → some kind of dispatch server asking which machine to connect to → VMS login → DCL prompt). At my toy DCL prompt, not many commands would work, but I wrote imitations of all the ones I saw Dad use most often. Several of those fed on to subsidiary command-line interfaces, because VMS was big on that kind of thing. In each of those, I'd imitate the most common commands I saw Dad use within that sub-environment, presenting plausible data dumps for query commands, and giving plausible acknowledgments for commands that were supposed to do things.
I don't remember what all those environments were. Some were certainly standard VMS tools (I remember "NCP" in particular), but I'm pretty sure some were local tools developed by Dad's particular team, like their build system. So it wasn't a fake VMS in general; it was a fake of Dad's specific setup.
My most sophisticated program in the suite – probably when I was a bit older, not long before we got rid of the Robin completely – was a more or less working 'word processor' (really, text editor with pretensions), invoked by the command 'wps'. I wasn't able to make it do full-screen display, because I didn't know how to do that on the Robin. So it only used the top line of the screen. But within that line it could edit, and I just about got search and replace working.
(2/4)
-
My main programming project on the DEC Robin was to write, in MBASIC, an imitation of the entire computing environment that Dad interacted with when he dialled in to the office with the modem.
I wrote programs that mimicked the whole login sequence (modem → some kind of dispatch server asking which machine to connect to → VMS login → DCL prompt). At my toy DCL prompt, not many commands would work, but I wrote imitations of all the ones I saw Dad use most often. Several of those fed on to subsidiary command-line interfaces, because VMS was big on that kind of thing. In each of those, I'd imitate the most common commands I saw Dad use within that sub-environment, presenting plausible data dumps for query commands, and giving plausible acknowledgments for commands that were supposed to do things.
I don't remember what all those environments were. Some were certainly standard VMS tools (I remember "NCP" in particular), but I'm pretty sure some were local tools developed by Dad's particular team, like their build system. So it wasn't a fake VMS in general; it was a fake of Dad's specific setup.
My most sophisticated program in the suite – probably when I was a bit older, not long before we got rid of the Robin completely – was a more or less working 'word processor' (really, text editor with pretensions), invoked by the command 'wps'. I wasn't able to make it do full-screen display, because I didn't know how to do that on the Robin. So it only used the top line of the screen. But within that line it could edit, and I just about got search and replace working.
(2/4)
I was unsatisfied with how text was printed. When I used the MBASIC "print" command, the whole line of text I printed would appear on the screen at once. But when Dad worked over the modem, text would appear one character at a time. So I arranged for my imitation DEC work environment to print one character at a time too, and tuned the delay loop until it was printing at about the right speed.
I remember that I had the idea that printing one character at a time was _better_. I didn't see the slow printing as a flaw that I was faithfully imitating: rather, printing one character at a time was more like how _grown-ups_ used computers, as I saw it. I had the vague and confused idea that when I was grown up, _I'd_ use systems that did it that way too.
(I just now wrote a similar delayed-print function, and tuned it until it matched the printing speed I vaguely remembered from being 7. It turned out that speed corresponds pretty closely to 1200 baud, so I guess that's what Dad's modem must have been at the time.)
(3/4)
-
I was unsatisfied with how text was printed. When I used the MBASIC "print" command, the whole line of text I printed would appear on the screen at once. But when Dad worked over the modem, text would appear one character at a time. So I arranged for my imitation DEC work environment to print one character at a time too, and tuned the delay loop until it was printing at about the right speed.
I remember that I had the idea that printing one character at a time was _better_. I didn't see the slow printing as a flaw that I was faithfully imitating: rather, printing one character at a time was more like how _grown-ups_ used computers, as I saw it. I had the vague and confused idea that when I was grown up, _I'd_ use systems that did it that way too.
(I just now wrote a similar delayed-print function, and tuned it until it matched the printing speed I vaguely remembered from being 7. It turned out that speed corresponds pretty closely to 1200 baud, so I guess that's what Dad's modem must have been at the time.)
(3/4)
From one point of view this sounds like about the geekiest thing ever. But I think on its own terms it makes perfect sense.
It's very natural for children to mimic what adults do in general. Many children's toys are sold for just this purpose, e.g. toy doctor and nurse outfits, and props like toy stethoscopes, to play at being medical professionals. And if the capitalist economy won't sell you the props for whatever game of that kind you want to play, children are also perfectly capable of making their own.
But to mimic what my father did, I didn't need physical toys, because I could use the actual same computer he used. Only the _software_ toys were missing – so that was what I had to make myself.
Even that weird idea that printing your text _fast_ is some kind of childish thing that you put away when you're grown up. There _are_ a lot of situations where adults take longer to do a thing, because they have to take account of stuff that children don't yet have to worry about. (Like, a child can just run out of the house any time, but an adult has to go round making sure the doors and windows are locked.) Doing things the simple and quick way _can_ be an aspect of childish naïveté!
Of all the code I've ever written in my life and lost, this suite of toy VMS simulations is perhaps the thing I'm most sad about. If I could go back in time and snag a copy off my floppy disk, I'd have great fun going through it all again and reminding myself of the bits I've forgotten.
(4/4)
-
From one point of view this sounds like about the geekiest thing ever. But I think on its own terms it makes perfect sense.
It's very natural for children to mimic what adults do in general. Many children's toys are sold for just this purpose, e.g. toy doctor and nurse outfits, and props like toy stethoscopes, to play at being medical professionals. And if the capitalist economy won't sell you the props for whatever game of that kind you want to play, children are also perfectly capable of making their own.
But to mimic what my father did, I didn't need physical toys, because I could use the actual same computer he used. Only the _software_ toys were missing – so that was what I had to make myself.
Even that weird idea that printing your text _fast_ is some kind of childish thing that you put away when you're grown up. There _are_ a lot of situations where adults take longer to do a thing, because they have to take account of stuff that children don't yet have to worry about. (Like, a child can just run out of the house any time, but an adult has to go round making sure the doors and windows are locked.) Doing things the simple and quick way _can_ be an aspect of childish naïveté!
Of all the code I've ever written in my life and lost, this suite of toy VMS simulations is perhaps the thing I'm most sad about. If I could go back in time and snag a copy off my floppy disk, I'd have great fun going through it all again and reminding myself of the bits I've forgotten.
(4/4)
@simontatham great story! that's some amazing hardware and playground you had right there in the speccy. but sounds like it somehow was slightly less interesting, because the grownups did not use it.
-
@simontatham great story! that's some amazing hardware and playground you had right there in the speccy. but sounds like it somehow was slightly less interesting, because the grownups did not use it.
@quite oh, I have many fond memories of the Speccy too, and will still defend it from criticism by fans of the other 80s micros! But yes, there was definitely _something_ special about the "more grown-up" computer.
-
From one point of view this sounds like about the geekiest thing ever. But I think on its own terms it makes perfect sense.
It's very natural for children to mimic what adults do in general. Many children's toys are sold for just this purpose, e.g. toy doctor and nurse outfits, and props like toy stethoscopes, to play at being medical professionals. And if the capitalist economy won't sell you the props for whatever game of that kind you want to play, children are also perfectly capable of making their own.
But to mimic what my father did, I didn't need physical toys, because I could use the actual same computer he used. Only the _software_ toys were missing – so that was what I had to make myself.
Even that weird idea that printing your text _fast_ is some kind of childish thing that you put away when you're grown up. There _are_ a lot of situations where adults take longer to do a thing, because they have to take account of stuff that children don't yet have to worry about. (Like, a child can just run out of the house any time, but an adult has to go round making sure the doors and windows are locked.) Doing things the simple and quick way _can_ be an aspect of childish naïveté!
Of all the code I've ever written in my life and lost, this suite of toy VMS simulations is perhaps the thing I'm most sad about. If I could go back in time and snag a copy off my floppy disk, I'd have great fun going through it all again and reminding myself of the bits I've forgotten.
(4/4)
@simontatham the MS word developers apparently agree with you because when we moved to 365 at work it started *animating* the text display :/
-
@simontatham the MS word developers apparently agree with you because when we moved to 365 at work it started *animating* the text display :/
@fishidwardrobe the parallel hadn't struck me, but perhaps the modern analogue of "slow because you're doing it over a modem" is "slow because it's running in a browser rather than natively, and the cloud provider has downloaded a metric ton of Javascript bloatware to your tab".
In my office we have one slightly spreadsheet-shaped tool which is just _unforgivably_ slow to respond. You move the cursor into a cell, start typing, and half a second later the spreadsheet finishes processing the cursor-move event and resets the field to empty, losing the first half of what you'd already typed. Ugh. If I wrote that in plain JS I'd struggle to make it that slow on purpose. It must be because the real version is built out of loosely bolted-together third-party libraries none of which is really suited for the job it's doing.
Then again, it sounds as if in your case the animation is deliberate, rather than just a consequence of terrible performance!
-
undefined Oblomov shared this topic on