@screwlisp is having some site connectivity problems so asked me to remind everyone that we'll be on the anonradio forum at the top of the hour (a bit less than ten minutes hence) for those who like that kind of thing:
-
@dougmerritt @wrog @ramin_hal9001 @screwlisp @cdegroot
In effect, a Q register, what passed for storage in TECO, was something you can name in one bite. So 1,2mA meaning call what's in A with args 1 and 2 was a high-level language function call with two arguments that fit into a single machine word. Even the PDP-10 pushj instruction, which was pretty sophisticated as a way of calling a function, couldn't pass arguments with that degree of compactness.
@kentpitman
As usual, Kent, an excellent description -- and I had forgotten some of those details, but yes, those were very real advantages. -
@kentpitman
As usual, Kent, an excellent description -- and I had forgotten some of those details, but yes, those were very real advantages.@kentpitman
Incidentally, I did *not* hate TECO at the time. I'm just remarking on some fairly objective issues with it.But at the time, I really appreciated its power (even though for me this was after using vi and emacs).
Also, if one reads about its history in the literature, about how it originally worked in 8 KB with a sliding window on files, and then later versions added more and more commands and power, it all makes sense as an organic 4D creation.
Which is true of most software that one is sympathetic to.
-
@dougmerritt @kentpitman @ramin_hal9001 @screwlisp @cdegroot
To be sure, my Perl tends to be more structured.
On the other hand, I also hate Moose (Perl's attempt at CLOS) and have thus far succeeded in keeping that out of my life.
I also remember there being a time in my life when I could read and understand APL.
But if you do think it's possible to come up with some kind of useful formal definition/criterion for "expressiveness", go for it.
I'll believe it when I see it.
11/11
@dougmerritt @kentpitman @ramin_hal9001 @screwlisp @cdegroot
... and, crap, I messed up the threading (it seems 9 and 10 are siblings, so you'll miss 9 if you're reading from here. 9 is kind of the point. Go back to 8.)
(I hate this UI. If anybody's written an emacs fediverse-protocol thing for doing long threaded posts please point me to it, otherwise it looks like I'm going to have to write one ...)
π/11
-
@dougmerritt @kentpitman @ramin_hal9001 @screwlisp @cdegroot
... and, crap, I messed up the threading (it seems 9 and 10 are siblings, so you'll miss 9 if you're reading from here. 9 is kind of the point. Go back to 8.)
(I hate this UI. If anybody's written an emacs fediverse-protocol thing for doing long threaded posts please point me to it, otherwise it looks like I'm going to have to write one ...)
π/11
@wrog @dougmerritt @ramin_hal9001 @screwlisp @cdegroot
It's a bit low tech but if you noticed it in time that other people don't have a ton of other stuff attached to it, just save the text, delete the old post, attach the new. Someone could make that be a single operation in a client and even have it send mail to the people who attached replies saying here's your text if you want to attach it to the new post. Or you could attach your own post with their text in it. Low-tech as it is, existing tools offer us a lot more options than sometimes people see. I'm sure you could have figured this out, and are more fussing at the tedium, but just for fun I'm going to cross reference a related but different scenario...
-
@dougmerritt @kentpitman @ramin_hal9001 @screwlisp @cdegroot
... and, crap, I messed up the threading (it seems 9 and 10 are siblings, so you'll miss 9 if you're reading from here. 9 is kind of the point. Go back to 8.)
(I hate this UI. If anybody's written an emacs fediverse-protocol thing for doing long threaded posts please point me to it, otherwise it looks like I'm going to have to write one ...)
π/11
@wrog
> (I hate this UI. If anybody's written an emacs fediverse-protocol thing for doing long threaded posts please point me to it, otherwise it looks like I'm going to have to write one ...)There are *so* many programmers using variants of this UI that you would think someone would have addressed it by now.
But you never know, maybe not. Certainly everyone who does multi-posts seems to be struggling with doing it by hand, from my point of view, so that would seem to cry out for the need for some fancier textpost-splitting auto-sequence-number thingie, in emacs or command line or something.
Conceivably a web search would find the thing if it exists. I personally almost never do long posts, so I just grin and bear it when it comes up.
-
@wrog
> (I hate this UI. If anybody's written an emacs fediverse-protocol thing for doing long threaded posts please point me to it, otherwise it looks like I'm going to have to write one ...)There are *so* many programmers using variants of this UI that you would think someone would have addressed it by now.
But you never know, maybe not. Certainly everyone who does multi-posts seems to be struggling with doing it by hand, from my point of view, so that would seem to cry out for the need for some fancier textpost-splitting auto-sequence-number thingie, in emacs or command line or something.
Conceivably a web search would find the thing if it exists. I personally almost never do long posts, so I just grin and bear it when it comes up.
I think for protocol reasons it is necessary to try and connect up the thread using quote-posts, however any particular client understands that.
If you visit the topmost toot of the thread, you at least get the whole (cons) tree.
@dougmerritt @wrog @kentpitman @ramin_hal9001 @cdegroot -
I think for protocol reasons it is necessary to try and connect up the thread using quote-posts, however any particular client understands that.
If you visit the topmost toot of the thread, you at least get the whole (cons) tree.
@dougmerritt @wrog @kentpitman @ramin_hal9001 @cdegroot@screwlisp
Y'all are misunderstanding. Due to the error-prone nature of labelling a series of posts, from one way of viewing he skipped post 9, and 8 linked to 10.Another view showed simply the correct sequence.
Regardless, anyone who has written e.g. "3/n" on a post is already implicitly indicating a desire for automation.
-
@screwlisp
Y'all are misunderstanding. Due to the error-prone nature of labelling a series of posts, from one way of viewing he skipped post 9, and 8 linked to 10.Another view showed simply the correct sequence.
Regardless, anyone who has written e.g. "3/n" on a post is already implicitly indicating a desire for automation.
@dougmerritt
Lots of clients are available that will daisychain toots within the constraints of your instance if you send a large one. I think mastodon.el is like this. I think that the π/ΞΆ post counting is often some interesting but quasi-ironic metadata about how the author is feeling about local restarts available to them at the time of writing.
@wrog @kentpitman @ramin_hal9001 @cdegroot -
@dougmerritt
Lots of clients are available that will daisychain toots within the constraints of your instance if you send a large one. I think mastodon.el is like this. I think that the π/ΞΆ post counting is often some interesting but quasi-ironic metadata about how the author is feeling about local restarts available to them at the time of writing.
@wrog @kentpitman @ramin_hal9001 @cdegroot@screwlisp
Well there you go. So wrog just needs to find a list of such clients to choose the most suitable one -- if any. -
@wrog
> I'm also guessing TECO wouldn't have existed without there being people who managed to wrap their brains around it and found it to be expressive and concise. I myself never got there (also never really tried TBH),I'm one of those people, BTW. My proof is that I wrote a closed-loop stick figure ASCII animation juggling three balls.
As with any complex TECO thing, the resulting code was write-only -- and that was always the problem with even mildly powerful TECO macros.
Perl at its worst can be described as write-only line noise, yes, but in my experience is *STILL* better than TECO!
I am indeed fortunate to be able to stick with Emacs and Vi.
@dougmerritt @kentpitman @ramin_hal9001 @screwlisp @cdegroot
Yeah I had <1 year stuck on DEC-20s at Stanford before Unix boxes became generally available (originally had to be an RA on a grant with its own VAX, and incoming students on NSFs typically weren't). Seeing Gosling Emacs that first spring, it was clear that was The Future...
βΉ less reason to do TECO... though ironically, I *did* learn the SAIL editor (SAIL/WAITS -- TOPS-10 derivative -- was, by 1985, a completely dead software ecosystem, *only* continued to exist because Knuth and McCarthy had decades of crap + sufficient grant $$ for the (by then) fantastic expense to keep it going; the only other people who used it were the 3 of us maintaining the Pony (vending machine))
-
@dougmerritt @wrog @ramin_hal9001 @screwlisp @cdegroot
In effect, a Q register, what passed for storage in TECO, was something you can name in one bite. So 1,2mA meaning call what's in A with args 1 and 2 was a high-level language function call with two arguments that fit into a single machine word. Even the PDP-10 pushj instruction, which was pretty sophisticated as a way of calling a function, couldn't pass arguments with that degree of compactness.
@kentpitman @dougmerritt @ramin_hal9001 @screwlisp @cdegroot
it's not so much the editor itself, which, from your description doesn't seem that much worse than, say, what you had to do in IBM XEDIT to get stuff done,
but the macro system, specifically, which as I understand it,(1) was an add-on, (2) would have needed utility commands that one didn't use in the normal course of editing (e.g., for rearranging arguments + building control constructs) and therefore were put on obscure characters, and *this* is where things went nutsβ¦
I recall briefly viewing the TOPS-20 Emacs sources β¦ *did* look like somebody had whacked a cable out in the hall (time to hit refresh-screen)
⦠granted, I may be misremembering; this *was* 40 years ago⦠-
@kentpitman @dougmerritt @ramin_hal9001 @screwlisp @cdegroot
it's not so much the editor itself, which, from your description doesn't seem that much worse than, say, what you had to do in IBM XEDIT to get stuff done,
but the macro system, specifically, which as I understand it,(1) was an add-on, (2) would have needed utility commands that one didn't use in the normal course of editing (e.g., for rearranging arguments + building control constructs) and therefore were put on obscure characters, and *this* is where things went nutsβ¦
I recall briefly viewing the TOPS-20 Emacs sources β¦ *did* look like somebody had whacked a cable out in the hall (time to hit refresh-screen)
β¦ granted, I may be misremembering; this *was* 40 years agoβ¦@kentpitman @dougmerritt @ramin_hal9001 @screwlisp @cdegroot
I also recall '~' being an important character that showed up a lot in TECO for some reason,
and *normally* the only time you'd see sequences of ~'s in large numbers was when your modem was dying and your line was about to be dropped
and this may, at least partially, be where TECO's "line noise" reputation came from.
-
@dougmerritt @kentpitman @ramin_hal9001 @screwlisp @cdegroot
... and, crap, I messed up the threading (it seems 9 and 10 are siblings, so you'll miss 9 if you're reading from here. 9 is kind of the point. Go back to 8.)
(I hate this UI. If anybody's written an emacs fediverse-protocol thing for doing long threaded posts please point me to it, otherwise it looks like I'm going to have to write one ...)
π/11
@dougmerritt @kentpitman @ramin_hal9001 @screwlisp @cdegroot
hmm... is there a way to do a reply that is *also* a quote-post? I should try this.
Roger Crewβ ββπΈββββ (@wrog@mastodon.murkworks.net)
@dougmerritt@mathstodon.xyz @kentpitman@climatejustice.social @ramin_hal9001@fe.disroot.org @screwlisp@gamerplus.org @cdegroot@mstdn.ca To the point where, the following summer as an intern, I was needing to write a tree walk, and I wrote it in FORTRAN β because that's what was available at AT&T Basking Ridge (long story) β using fake recursion (local vars get dimensions as arrays, every call/return becomes a computed goto, you get the ideaβ¦) because I wanted to see if this *could* actually be done in FORTRAN, and it could, and it worked, and there was much rejoicing; I think my supervisor (who, to be fair, was not really a programmer) blue-screened on that one. And *then* I tried to explain it all to my dad... 8/11
Mastodon (mastodon.murkworks.net)
(π+1)/11
-
@dougmerritt @kentpitman @ramin_hal9001 @screwlisp @cdegroot
hmm... is there a way to do a reply that is *also* a quote-post? I should try this.
Roger Crewβ ββπΈββββ (@wrog@mastodon.murkworks.net)
@dougmerritt@mathstodon.xyz @kentpitman@climatejustice.social @ramin_hal9001@fe.disroot.org @screwlisp@gamerplus.org @cdegroot@mstdn.ca To the point where, the following summer as an intern, I was needing to write a tree walk, and I wrote it in FORTRAN β because that's what was available at AT&T Basking Ridge (long story) β using fake recursion (local vars get dimensions as arrays, every call/return becomes a computed goto, you get the ideaβ¦) because I wanted to see if this *could* actually be done in FORTRAN, and it could, and it worked, and there was much rejoicing; I think my supervisor (who, to be fair, was not really a programmer) blue-screened on that one. And *then* I tried to explain it all to my dad... 8/11
Mastodon (mastodon.murkworks.net)
(π+1)/11
@dougmerritt @kentpitman @ramin_hal9001 @screwlisp @cdegroot
(I'm guessing a mastodon UI that actually respects the use of surreal numbers to number multipost components and rearranges threads accordingly will be implemented approximately never.
β¦ though I suppose it could turn out to be one of the more creative ways to get kicked off of the Fediverse β¦ )
(π/2)/11
-
@kentpitman @dougmerritt @ramin_hal9001 @screwlisp @cdegroot
I also recall '~' being an important character that showed up a lot in TECO for some reason,
and *normally* the only time you'd see sequences of ~'s in large numbers was when your modem was dying and your line was about to be dropped
and this may, at least partially, be where TECO's "line noise" reputation came from.
@wrog @dougmerritt @ramin_hal9001 @screwlisp @cdegroot
Funny, I couldn't recall "~" being important at all so had to go check. See https://codeberg.org/PDP-10/its/src/branch/master/doc/_teco_/tecord.1132 and while I do see a few uses of it, they seem very minor.
I read this into an Emacs editor buffer and did "M-x occur" looking for [~] and got these, all of which seem highly obscure. I think it is probably because in the early days there may have been a desire not to have case matter, so the upper and lower case versions of these special characters (see line 2672 below) may have once been equivalent or might have some reason to want to reserve space to be equivalent in some cases. Remember that, for example, on a VT52, he CTRL key did not add a control bit but masked out all the bits beyond the 5th, so that CTRL+@ and CTRL+Space were the same (null) character, for example. And sometimes tools masked out the 7th bit in order to uppercase something, which means that certain characters like these might have in some cases gotten blurred.
10 matches for "[~]" in buffer: tecord.1132
1270: use a F~ to compare the error message string against a
2017: case special character" (one of "`{|}~<rubout>").
2235: the expected ones, with F~.
2370: kept in increasing order, as F~ would say, or FO's binary
2672: also ("@[\]^_" = "`{|}~<rubout>").
4192:F~ compares strings, ignoring case difference. It is just
4446: this option include F^A, F^E, F=, FQ, F~, G and M.
4942: string storage space, but begins with a "~" (ASCII 176)
4977: character should be the rubout beginning a string or the "~"
4980: "~" or rubout, then it is not a pointer - just a plain number.If I recall correctly, this also meant in some tools it was possible if you were using a control-prefix con CTRL-^ to have CTRL-^ CTRL-@ be different than CTRL-^ @ because one of them might set the control bit on @ and the other on null, so there was a lot of ailasing. It even happened for regular characters that CTRL-^ CTRL-A would get you a control bit set on #o1 while CTRL+^ A would get you the control bit set on 65. Some of these worked very differently on the Knight TV, which used SAIL characters, I think, and which thought a code like 1 was an uparrow, not a control-A. There were a lot of blurry areas, and it was hell on people who wanted to make a Dvorak mode because it was the VT52 (and probably VT100 and AAA) hardware that was doing this translation, so there was no place to software intercept all this and make it different, so that's probably why something as important as Teco treaded lightly on making some case distinctions.
But if someone remembers, better, please let me know. It's been 4+ decades since I used this stuff a lot and details slip away. It's just that these things linger, I think, because they were so important to realize were live rails not to tread upon. And because I did, for a while, live and breathe this stuff, since I wrote a few TECO libraries (like ZBABYL and the original TeX mode), so I guess practice drills it in, too.
-
@dougmerritt @wrog @ramin_hal9001 @screwlisp @cdegroot
In effect, a Q register, what passed for storage in TECO, was something you can name in one bite. So 1,2mA meaning call what's in A with args 1 and 2 was a high-level language function call with two arguments that fit into a single machine word. Even the PDP-10 pushj instruction, which was pretty sophisticated as a way of calling a function, couldn't pass arguments with that degree of compactness.
@kentpitman @dougmerritt @wrog @ramin_hal9001 @screwlisp @cdegroot
Yes, right. To all that. One minor point is that the PDP-6/10 had a byte-addressing instruction that was pretty weird (overkill in flexibility, like every PDP-6/10 instruction). So that data packing wasn't all that unreasonable.
I showed up to the TECO world in Jan. 1973 with a gofer programming gig in the Macsyma group. The Datapoint terminals were already there, so I missed the pre-(almost)WYSIWYG days.
-
@wrog @dougmerritt @ramin_hal9001 @screwlisp @cdegroot
Funny, I couldn't recall "~" being important at all so had to go check. See https://codeberg.org/PDP-10/its/src/branch/master/doc/_teco_/tecord.1132 and while I do see a few uses of it, they seem very minor.
I read this into an Emacs editor buffer and did "M-x occur" looking for [~] and got these, all of which seem highly obscure. I think it is probably because in the early days there may have been a desire not to have case matter, so the upper and lower case versions of these special characters (see line 2672 below) may have once been equivalent or might have some reason to want to reserve space to be equivalent in some cases. Remember that, for example, on a VT52, he CTRL key did not add a control bit but masked out all the bits beyond the 5th, so that CTRL+@ and CTRL+Space were the same (null) character, for example. And sometimes tools masked out the 7th bit in order to uppercase something, which means that certain characters like these might have in some cases gotten blurred.
10 matches for "[~]" in buffer: tecord.1132
1270: use a F~ to compare the error message string against a
2017: case special character" (one of "`{|}~<rubout>").
2235: the expected ones, with F~.
2370: kept in increasing order, as F~ would say, or FO's binary
2672: also ("@[\]^_" = "`{|}~<rubout>").
4192:F~ compares strings, ignoring case difference. It is just
4446: this option include F^A, F^E, F=, FQ, F~, G and M.
4942: string storage space, but begins with a "~" (ASCII 176)
4977: character should be the rubout beginning a string or the "~"
4980: "~" or rubout, then it is not a pointer - just a plain number.If I recall correctly, this also meant in some tools it was possible if you were using a control-prefix con CTRL-^ to have CTRL-^ CTRL-@ be different than CTRL-^ @ because one of them might set the control bit on @ and the other on null, so there was a lot of ailasing. It even happened for regular characters that CTRL-^ CTRL-A would get you a control bit set on #o1 while CTRL+^ A would get you the control bit set on 65. Some of these worked very differently on the Knight TV, which used SAIL characters, I think, and which thought a code like 1 was an uparrow, not a control-A. There were a lot of blurry areas, and it was hell on people who wanted to make a Dvorak mode because it was the VT52 (and probably VT100 and AAA) hardware that was doing this translation, so there was no place to software intercept all this and make it different, so that's probably why something as important as Teco treaded lightly on making some case distinctions.
But if someone remembers, better, please let me know. It's been 4+ decades since I used this stuff a lot and details slip away. It's just that these things linger, I think, because they were so important to realize were live rails not to tread upon. And because I did, for a while, live and breathe this stuff, since I wrote a few TECO libraries (like ZBABYL and the original TeX mode), so I guess practice drills it in, too.
@kentpitman @dougmerritt @ramin_hal9001 @screwlisp @cdegroot
Yeah, I don't know. Maybe '~' was prevalant in Emacs source, or I'm conflating TECO with Something Else.
By my era VT-52s were gone, you'd occasionally see a VT100 in a server room for not wanting to waste $$ there, the terminal of choice at Stanford CS was the Heathkit-19 + if you were in one of the well-financed research groups, you got a Sun-1 or a Sun-2. At DEC(WSL) where I interned, it was all personal VAXstations.
I do recall Emacs ^S and ^Q being problematic due to terminal mode occasionally getting set badly (and then the underlying hardware would wake up, "Oh, flow control! I know how to do that!", ^S would freeze everything and you had to Just Know to do ^Q...)
-
@kentpitman @dougmerritt @ramin_hal9001 @screwlisp @cdegroot
Yeah, I don't know. Maybe '~' was prevalant in Emacs source, or I'm conflating TECO with Something Else.
By my era VT-52s were gone, you'd occasionally see a VT100 in a server room for not wanting to waste $$ there, the terminal of choice at Stanford CS was the Heathkit-19 + if you were in one of the well-financed research groups, you got a Sun-1 or a Sun-2. At DEC(WSL) where I interned, it was all personal VAXstations.
I do recall Emacs ^S and ^Q being problematic due to terminal mode occasionally getting set badly (and then the underlying hardware would wake up, "Oh, flow control! I know how to do that!", ^S would freeze everything and you had to Just Know to do ^Q...)
@wrog
This seems familiar, but I'm not wholly sure why.It is binary 01111110 and as such really did show up in some line noise contexts that favored such a thing (it's similar to 11111111).
It's also used by vi to mark nonexistent lines at the end of the file; Bill wanted it to be something other than just nothing on that screen line, for specificity of feedback to the user.
-
@kentpitman @dougmerritt @ramin_hal9001 @screwlisp @cdegroot
Yeah, I don't know. Maybe '~' was prevalant in Emacs source, or I'm conflating TECO with Something Else.
By my era VT-52s were gone, you'd occasionally see a VT100 in a server room for not wanting to waste $$ there, the terminal of choice at Stanford CS was the Heathkit-19 + if you were in one of the well-financed research groups, you got a Sun-1 or a Sun-2. At DEC(WSL) where I interned, it was all personal VAXstations.
I do recall Emacs ^S and ^Q being problematic due to terminal mode occasionally getting set badly (and then the underlying hardware would wake up, "Oh, flow control! I know how to do that!", ^S would freeze everything and you had to Just Know to do ^Q...)
@kentpitman @dougmerritt @ramin_hal9001 @screwlisp @cdegroot
> I also recall '~' being an important character
ok, I seem to be out-to-lunch on this
(or at least, remembering Something Else; but I can't imagine what...):https://www.ibiblio.org/pub/academic/computer-science/history/pdp-11/teco/emacs11/emacs11.tec
(admittedly, this is VAX/PDP-11 TECO source for Emacs and maybe Fred had to do a complete rewrite of some sort and the actual TOPS20/PDP-10 source is completely different -- given that there *is* significant dependence on wordsize and other architectural issues, it would have to be *somewhat* different -- but I'd still expect a lot of common code [unless there were copyright issues]).
It *does* definitely look like line noise, though.
-
@screwlisp
Well there you go. So wrog just needs to find a list of such clients to choose the most suitable one -- if any.@dougmerritt @screwlisp @kentpitman @ramin_hal9001 @cdegroot
what I *currently* do is compose inside Emacs (the *only* non-painful alternative for long posts),
then manually decide how I'm going to break it up -- which actually has some literary content to it, because in some cases, you *do* want to arrange the breaks for maximal dramatic effect
(generalized How to Use Paragraphs)Problem 1 being that emacs doesn't count characters the same way as mastodon does, and I don't find out until I've cut&pasted part n, which doesn't happen until I've already posted parts 1..nβ1
Problem 2 being having to cut&paste in the first place when I should just be able to hit SEND (which then has to be from within emacs).