reshared this
reshared this
Mx. Luna Corbden 🐸, Nicole Parsons, Dgar, Douglas Edwards, Cat 🐈🥗 (D.Burch) , I am Jack's Found 404, 🅰🅻🅸🅲🅴 (🌈🦄), Jonathan Lamothe and Ember in the Pattern Buffer reshared this.
🌌 🎶 "Time And Space", the new album from LAD was released yesterday and I am chilling out to it now.
You can get your copy of this deep space ambient masterpiece here:
laddadoane.bandcamp.com/album/…
You'll be glad you did. And yeah, there's a lot more where that came from.
reshared this
𝚛𝚊𝚝 and Jonathan Lamothe reshared this.
I FREAKING PASSED MY EXAM!!!!!
BOO-YAH! 🥳🎉
like this
Justine Smithies and scolobb like this.
reshared this
screwlisp and A Flock of Beagles reshared this.
Sensitive content
Sensitive content
Sensitive content
screwlisp reshared this.
Sensitive content
Sensitive content
Sensitive content
Uh, guy. Now the hard part starts.
Translation: Congrats and good luck!
I've been studying my brains out for this stupid exam that I kept failing by one stupid question. I think I finally figured out what was failing me. Just like the prequalificaiton exam, I was rabbit holing on the wrong question.
With any luck, I will take—and pass—this exam tomorrow. Then I can actually start getting paid for my work.
Failed again, but I found a stupid mistake I made after the fact.
I just finished writing myself an emacs script to automatically catch such a mistake in the future. I'll give it another go tomorrow.
LLM access is relatively cheap now because the LLM vendors are discounting their price at a massive loss, subsidized by VC, in order to get you addicted and to drive as much skilled human labor as possible out of the workforce permanently.
The goal is monopolization, and if they’re successful, you’ll see monopolistic pricing in the future.
reshared this
Shannon Prickett, Nicole Parsons, Jeremy List, Aral Balkan, Jonathan Lamothe and Boyd Stephen Smith Jr. reshared this.
I feel compelled to mention there are models you can self-host. There are even models where the architecture is available under a permissive license, so you can tweak / tune / retrain / distill or whatever beyond mere prompting.
I don't recommend or defend that approach. I think there are still problems, ethical and other.
But, it could be a way to prevent "vendor lock-in" with your LLM usage.
Boyd Stephen Smith Jr. likes this.
@me Generating test data, as a complement to QuickCheck/SmallCheck generators. I think LLMs might "explore the probability space" in different ways than manually written generators. But, I haven't validated this in practice.
I've been fairly disappointed with LLMs output all the times I've tried them. Too many hallucinations around factual data. Too little... variety(?) when doing fiction. The image generators seem better than me, but I have declined to use them (much)because I assume the image generators are "stealing" from the recognition/attribution of artists that make their art publicly visible. I know the code generators "steal" copyleft code, most likely including mine.
I don't like saying LLMs capabilities are bad, because I don't use them, for ethical reasons, enough to really know what their current capabilities are.
I'm getting closer and closer to passing the entrance exam for this job. I also learned a little tidbit about why they're always hiring: apparently, "AI-generated" transcripts are inadmissible in US courts.* As much as they might like to, they legally can't replace this job with AI.
Combine that with the very small overlap between people capable of passing this exam and people actually willing to jump through those hurdles, and you have glut of available work.
* At least for now. Give the techbro billionaire class time to keep eroding the US legal system, and who knows?
Justin To #НетВойне reshared this.
(Following thread was prompted by people pointing out that the Bluesky dev team seems heavily into vibe-coding now and originally posted on said vibe-coded Bluesky platform that is now constantly failing.)
Over the past year, every single time one of the apps or services I use suddenly became less reliable and more buggy, I never have to look far for the "Claude is amazing and now writes most of my code" post for the devs involved.
reshared this
Jonathan Lamothe, Niels Abildgaard and Nicole Parsons reshared this.
Best part? It's always somebody with years of experience. Exactly the demographic that is supposedly able to use this shit safely, but my impression is they're just as bad as the novices
This is happening IMO because of one of the fundamental issues with software dev (and this predates "AI" and was one of the themes of my first book):
Most software projects fail and most of what gets shipped doesn't work. The way the industry is set up means there is little downside to shipping broken software
Nicole Parsons reshared this.
Few devs have a reference point for genuinely working software. Usability labs were disbanded over 20 years ago. Very few companies do actual user research, so their designs are based on fiction. Bugs are the norm
Alienation is also the norm for devs, both socially and organisationally. Whether it works for the end user doesn't cross their mind. Whether the design fulfils business needs is not their problem. Bugs are a future problem. Ship insecure software and patch it as user data gets stolen
Nicole Parsons reshared this.
Devs are so disconnected from the output of their work that many of the norms of the industry are outright illegal: there's a good chance that if you follow popular practices for a React project, for example, you'll end up with a site or product that violates accessibility law in several countries
Few devs would even know where to begin to look to answer the question "does my software work for the people forced to use it?"
reshared this
Nicole Parsons and hamish campbell reshared this.
Nicole Parsons reshared this.
Whoever came up with 'Yes/Not now' needs to be dragged into the streets and shot.
No wonder some folks don't understand consent - our software doesn't allow for it.
or the "You must allow our JavaScript programs to run on your browser, otherwise we won't allow you to get to the information that we're legally required to provide you with"
CC: @baldur@toot.cafe
Nicole Parsons reshared this.
I still remember, talking to a twitter dev who had an utterly ridiculously foolish take on XYZ issue go viral.
They told me 'Uhhh, I've never had this much attention on me, my tweets never go beyond my social circle. I had to turn off my phone. It kept buzzing.'
... this was a person who worked on the UI. No shit they had no idea how to deal with high volume 'oh, you just 200k likes' kinda shit, they never experienced it themselves.
Honestly I think a big part of it is more than our industry being deeply immature still; I think the most important throughline of the research on LLMs' effects on cognition is a consistent attack on metacognition, which seemingly doesn't abate with experience. The same corrosion happens to juniors and seniors alike, but the seniors have more rationalizations at hand to pretend it doesn't.
(Speaking of, that "cognitive surrender" paper is the latest in that theme: papers.ssrn.com/sol3/papers.cf…)
Apropos of nothing, the absolute worst implementation of Raft I've ever seen in my Raft course was by a pair of senior devs with a combined 60+ years of experience who decided to pair program together and announced ahead of time to the group that they were going to "win" Raft. They did not.
An undergraduate who'd never coded with sockets before did reasonably okay.
@dngrs
Most people ignore that it's a fossil fuel funded cult, intentionally designed to keep a dependency on oil.
wired.com/story/trump-energy-i…
bloomberg.com/news/articles/20…
nytimes.com/2025/10/27/technol…
cnbc.com/2025/11/20/us-approve…
Saudi Arabia aspires to be the next Russian Internet Research Agency, selling hack-for-hire election meddling.
npr.org/2020/08/18/903512647/s…
newyorker.com/news/news-desk/w…
With Larry Ellison's help.
independent.co.uk/news/world/a…
sfchronicle.com/tech/article/p…
intelligentcio.com/me/2023/12/…
Unclear how long Oracle chairman’s involvement lastedJohn Bowden (The Independent)
Nicole Parsons reshared this.
I feel like having spent most of my career building embedded systems aimed at industry rather than consumers, where customer support issues can mean sending a technician out with a USB stick on a ten-hour road trip, has insulated me from the worst madness.
If your sloppy coding breaks a manufacturing line or distribution network, bugs become expensive fast.
Though having said that, $CURRENT_EMPLOYER is pushing for greater use of LLMs in our workflow...
This has been on my mind the last few days, too: mas.to/@nielsa/116171030173125…
I see so many people falling into LLM delusion, who I thought would know better, with no seeming pattern in *why* they fall for it.
Yes, the lack of negative incentives is certainly a factor.
My best explanation so far is that LLMs are kind of "acting" like 17 cons (some new, some old) in a trench coat, and different combinations of these trick different people who'd be able to resist most of these on their own.
Yeahhh I've been thinking about this type of thing recently, too mas.to/@nielsa/116155283958385…It's an eerie, lonely feeling to look at those one thought of as good at the exact things needed to see through the flashy deceptions of LLMs not just fall for them, but commit fully and strongly. And, in my experience, then refuse to face factual points that should convince them to let go of the delusion...
I always enjoyed Universe Today, but once you get llm psychosis, everything becomes possible.
youtube.com/watch?v=vkhZHR_hs4…
at the 47 minute mark it really goes off the rails.
Auf YouTube findest du die angesagtesten Videos und Tracks. Außerdem kannst du eigene Inhalte hochladen und mit Freunden oder gleich der ganzen Welt teilen.Fraser Cain (YouTube)
@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:
He'll also be monitoring LambdaMOO at "telnet lambda.moo.mud.org 8888" for those who do that kind of thing. there are also emacs clients you should get if you're REALLY using telnet.
Topic for today, I'm told, may include the climate, the war, the oil price hikes, some rambles I've recently posted on CLIM, and the book by @cdegroot called The Genius of Lisp, which we'll also revisit again next week.
cc @ramin_hal9001
reshared this
𝚛𝚊𝚝, Jonathan Lamothe and screwlisp reshared this.
At the end of @screwlisp's show, in the discussion of @cdegroot's book, @ramin_hal9001 was talking about continuations. I wanted to make a random point that isn't often made about Lisp that I think is important.
I often do binary partitions of languages (like the static/dynamic split, but more exotic), and one of them is whether they are leading or following, let's say. there are some aspects in which scheme is a follower, not a leader, in the sense that it tends to eschew some things that Common Lisp does for a variety of reasons, but one of them is "we don't know how to compile this well". There is a preference for a formal semantics that is very tight and that everything is well-understood. It is perhaps fortunate that Scheme came along after garbage collection was well-worked and did not seem to fear that it would be a problem, but I would say that Lisp had already basically dealt led on garbage collection.
The basic issue is this: Should a language incorporate things that maybe are not really well-understood but just because people need to do them and on an assumption that they might as well standardize the 'gesture' (to use the CLIM terminology) or 'notation' (to use the more familiar) for saying you want to do that thing.
Scheme did not like Lisp macros, for example, and only adopted macros when hygienic macros were worked out. Lisp, on the other hand, started with the idea that macros were just necessary and worried about the details of making them sound later.
Scheme people (and I'm generalizing to make a point here, with apologies for casting an entire group with a broad brush that is probably unfair) think Common Lisp macros more unhygienic than they actually are because they don't give enough credit to things like he package system, which Scheme does not have, and which protects CL users a lot more than they give credit for in avoiding collisions. They also don't fairly understand the degree to which Lisp2 protects from the most common scenarios that would happen all the time in Scheme if there were a symbol-based macro system. So CL isn't really as much at risk these days, but it was a bigger issue before packages, and the point is that Lisp decided it would figure out how to tighten later, but that it was too important to leave out, where Scheme held back design until it knew.
But, and this is where I wanted to get to, Scheme led on continuations. That's a hard problem and while it's possible, it's still difficult. I don't quite remember if the original language feature had fully worked through all the tail call situations in the way that ultimately it did. But it was brave to say that full continuations could be made adequately efficient.
And the Lisp community in general, and here I will include Scheme in that, though on other days I think these communities sufficiently different that I would not, have collectively been much more brave and leading than many languages, which only grudgingly allow functionality that they know how to compile.
In the early days of Lisp, the choice to do dynamic memory management was very brave. It took a long time to make GC's efficient, and generational GC was what finally I think made people believe this could be done well in large address spaces. (In small address spaces, it was possible because touching all the memory to do a GC did not introduce thrashing if data was "paged out". And in modern hardware, memory is cheap, so the size is not always a per se issue.
But there was an intermediate time in which lots of memory was addressable but not fully realized as RAM, only virtualized, and GC was a mess in that space.
The Lisp Machines had 3 different unrelated but co-resident and mutually usable garbage collection strategies that could be separately enabled, 2 of them using hardware support (typed pointers) and one of them requiring that computation cease for a while because the virtual machine would be temporarily inconsistent for the last-ditch thing that particular GC could do to save the day when otherwise things were going to fail badly.
For a while, dynamic memory management would not be used in real time applications, but ultimately the bet Lisp had made on it proved that it could be done, and it drove the doing of it in a way that holding back would not have.
My (possibly faulty) understanding is that the Java GC was made to work by at least some displaced Lisp GC experts, for example. But certainly the choice to make Java be garbage collected probably derives from the Lispers on its design team feeling it was by then a solved problem.
This aspect of languages' designs, whether they lead or follow, whether they are brave or timid, is not often talked about. But i wanted to give the idea some air. It's cool to have languages that can use existing tech well, but cooler I personally think to see designers consciously driving the creation of such tech.
screwlisp reshared this.
screwlisp reshared this.
@nosrednayduj
First, thanks for raising that example. It's interesting and contains info I hadn't heard.
In a way, it underscores my point: that for a while, it was an open question whether we could implement GC, but a bet was made that we could.
You could view that as saying they only implemented part of Lisp, and that the malloc stuff was a stepping out of paradigm, an admission the bet was failing for them in that moment. Or you could view it as a success, saying that even though some limping was required of Lisps while we refined the points, it was done.
As I recall, there was some discussion of adding a GC function. At the time, the LispM people probably said "which GC would it invoke" and the Gensym people probably said "we don't have one". That was the kind of complexity that the ANSI process turned up and it's probably why there is no GC function. (There was one in Maclisp that invoked the Mark/Sweep GC, but the situation had become more complicated.)
Also, as an aside, a personal observation about the process: With GC, as with other things like buffered streams, one of the hardest things to get agreement on was something where one party wanted a feature and another said "we don't have that, I'd have to make it a no-op". Making it a no-op was not a lot of implementation work. Just seeing and discarding an arg. But it complicated the story that was told, and vendors didn't like it, so they pushed back even though of all the implementations they had the easiest path (if you didn't count "explaining" as part of the path).
@nosrednayduj
And, unrelated, another reference I made in the show as to Clyde Prestowitz and book The Betrayal of American Prosperity.
goodreads.com/book/show/810439…
Also an essay I wrote that summarizes a key point from it, though not really related to the topic of the show. I mention it just because that point will also be interesting maybe to this audience on the issue of capitalism if not on the specific economic issue we were talking about tonight:
netsettlement.blogspot.com/201…
CONSIDER THIS SHOCKING while China’s number one export…Goodreads
screwlisp reshared this.
@nosrednayduj
Also Naomi Klein's book The Shock Doctrine, very politically relevant this week, traces a lot of political ills to Milton Friedman and his ideas.
goodreads.com/book/show/123730…
In her ground-breaking reporting from Iraq, Naomi Klein…Goodreads
your notes on continuations are interesting. I do a lot of Kotlin programming these days, and one of thr features it adds on top of Java is continuations (they call is suspend functions). However, unlike Scheme, you can only call suspend functions from other sustend functions, leading to two different worlds, the continuation-supported one and the regular one.
I measured a 30% performance hit when changing code use suspend functions instead of regular functions. Nevertheless, this has not stopped people from using them for everything.
@loke ooh, that is interesting, thanks! I did not know that Kotlin also had that feature (in a limited way).
Yes, the performance hit probably comes from copying the stack or restoring the stack. For small stacks this is trivial, but often times continuations are useful when computing recursive functions over very large data structures, and you usually have very large stacks for these kinds of computations.
Delimited continuations (DCs) can help with that problem, apparently. And the API for DCs also happens to make them more composable with each other, since you can kind-of unfreeze a computation inside of another frozen computation.
That might be why Kotlin has those restrictions on continuations.
I didn't research it too much, but I think the reason is that when you have a function marked as suspend, it will always pass along an implicit extra argument which is the continuation. I also believe there is a dispatch block at the beginning of a function that can suspend that looks at the continuation to jump to the right part of the code. This is because code running on the JVM cannot directly manipulate the stack.
I don't know how it's implemented when you compile Kotlin to other targets. The semantics are the same, but the underlying implementation may be different.
yes, Scheme led on continuations before it was a well-established idea, and I think there is some regret about that because of the difficulties involved to which you had alluded, especially in compiling efficient code. Nowadays the common wisdom is that delimited continuations, which I believe are implemented by copying only part of the stack, are better in every way. I have no strong opinions on the issue, I just thought it was interesting how Scheme solved problems of optimizing tail recursion and “creating actors” i.e. capturing closures, and both of these things involve stack manipulation which naturally leads into the idea of continuations.
As a Haskeller I definitely appreciate the study of programming language theory, and how much of Haskell is built on the work of Lisp. The Haskell team’s many innovations include asking questions like, “what if everything was lazy by default?” Or, “what if we abolish mutating variables and force the programmer to pop the old value and push the new value on the stack every time?” Or “what if tail recursion was the only way to loop?” As it turns out, this gives an optimizing compiler the freedom to very aggressively optimize code, and can result in very efficient binaries. Often times, both programmers and language implementors can do a lot more when you are constrained to use fewer features.
But which features to use and which to remove requires a lot of wisdom and experience. So the Haskell people could have only felt comfortable asking those questions after garbage collection and closures had become a well-established practice, and we can thank the work of the Lisp team for those contributions.
Generational GC changes the way you program and it's not *just* that it's efficient.
We used MIT-Scheme (which, by the early 90s was showing its age). We did all manner of weird optimizing to use memory efficiently. Lots of set! to re-use structure where possible. Or (map! f list) -- same as (map...) but with set-car! to modify in-place -- because it made a HUGE difference not recreating all of those cons cells => bumps memory use => next GC round is that much sooner (and then everything STOPS, because Mark & Sweep). Also stupid (fluid-let ...) tricks to save space in closures.
We were writing Scheme as if it were C because that was how you got speed in that particular world.
1/3
screwlisp reshared this.
And then Bruce Duba joined the group (had just come from Indiana).
"Guys, you're doing this ALL WRONG",
"Yeah, we know already. It's ugly, impure, and sucks. But it's faster, unfortunately",
"No, you need a better Scheme; you should try Chez".
...and, to be sure, just that much *was* a significant improvement. Chez was much more actively maintained, had a better repertoire of optimizations, etc...
... but the real eye-opener was what happened when we ripped out all of the set! and fluid-let code. That's when we got the multiple-orders-of-magnitude speed improvement.
2/3
Digital Mark λ ☕️ 🕹 👽 reshared this.
See, setq/set! is a total disaster for generational GC. It bashes old-space cells to point to new-space; the premise of generational GC being that this mostly shouldn't happen. The super-often new-generation-only pass is now doing a whole lot of old-space traversal because of all of those cells added to the root set by the set! calls, ... which then loses most of the benefit of generational GC.
(fluid-let and dynamic-wind also became way LESS cheap, mainly due to missing multiple optimization opportunities)
In short, with generational GC, straightforward side-effect-free code wins. It took a while for me to recalibrate my intuitions re what sorts of things were fast/cheap vs not.
3/3
screwlisp reshared this.
There were other weirdnesses as well.
Even if GC saves you the horror of referencing freed storage, or freeing stuff twice, you still have to worry about memory leaks and moreover, dropping references as fast as you can matters
With copying GC, leaks are useless shit that has to be copied -- yes it eventually ends up in an old generation but until then it's getting copied -- and copying is where generational GC is doing work, and it's stuff unnecessarily surviving to the medium term that hurts you the most (generational GC *relies* on stuff becoming garbage as quickly as possible)
And so, tracking down leaks and finding places to put in weak pointers started mattering more...
4/3
5? maybe for mark&sweep
but I can't see how more than 2 would ever be necessary for a copying GC. Once you have enough space to copy everything *to* (on the off-chance that absolutely everything actually *needs* to be copied), you're basically done...
... and if you're following the usual pattern where 90% of what you create becomes garbage almost immediately, you can get by with far less.
@wrog
> but I can't see how more than 2 would ever be necessary for a copying GC
It's not "necessary", it's "to make GC performance a negligeable percentage of overall CPU".
It was about a theoretical worst case as I recall, certainly not about one particular algorithm.
And IIRC it was actually a factor of 7 -- 5 is merely a good mnemonic which may be close enough. (e.g. perhaps 5-fold keeps overhead down to 10-20% rather than 7's 1%, although I'm making it up to give the flavor -- I haven't read the book for 10-20 years)
But see the book (may as well use the second edition) if and when you care; it's excellent. Mandatory I would say, for anyone who wants to really really understand all aspects of garbage collection, including performance issues.
screwlisp reshared this.
@dougmerritt
Is this the book you're talking about?
(sorry this was after my time in Scheme Land, hadn't heard of it before)
@wrog
Yes, that's it. (And every time I've checked, it [in 1st & 2nd edition] is the only book ever dedicated to purely Garbage Collection)
@wrog Haskell was first invented in 1990 or 91ish, and at that time they had already started to ask questions like, “what if we just ban set! entirely,” abolish mutable variables, make everything lazily evaluated by default. If you have been programming in C/C++ for a while, that abolishing mutable variables would lead to a performance increase seems very counter-intuitive.
But for all the reasons you mentioned about not forcing a search for updated pointers in old-generation GC heaps, and also the fact that this forces the programmer to write their source code such that it is essentially already in the Static-Single-Assignment (SSA) form, which is nowadays an optimization pass that most compilers do prior to register allocation, this allowed for more aggressive optimization to be used and results in more efficient code.
@wrog @dougmerritt
The LispM did a nice thing (at some tremendous cost in hardware, I guess, but useful in the early days) by having various kinds of forwarding pointers for this. At least you knew you were going to incur overhead, though, and pricing it properly at least said there was a premium for not side-effecting and tended to cause people to not do it. And the copying GC could fix the problem eventually, so you didn't pay the price forever, though you did pay for having such specific hardware or for cycles in systems trying to emulate that which couldn't hide the overhead cost. I tend to prefer the pricing model over the prohibition model, but I see both sides of that.
If my memory is correct (so yduJ or wrog please fix me if I goof this): MOO, as a language, is in an interesting space in that actual objects are mutable but list structure is not. This observes that it's very unlikely that you allocated an actual object (what CL would call standard class, but the uses are different in MOO because all of those objects are persistent and less likely to be allocated casually, so less likely to be garbage the GC would want to be involved in anyway).
I always say "good" or "bad" is true in a context. It's not true that side effect is good or bad in the abstract, it's a property of how it engages the ecology of other operations and processes.
And, Ramin, the abolishing of mutable variables has other intangible expressional costs, so it's not a simple no-brainer. But yes, if people are locked into a mindset that says such changes couldn't improve performance, they'd be surprised. Ultimately, I prefer to design languages around how people want to express things, and I like occasionally doing mutation even if it's not common, so I like languages that allow it and don't mind if there's a bit of a penalty for it or if one says "don't do this a lot because it's not aesthetic or not efficient or whatever".
To make a really crude analogy, one has free speech in a society not to say the ordinary things one needs to say. Those things are favored speech regardless because people want a society where they can do ordinary things. Free speech is everything about preserving the right to say things that are not popular. So it is not accidental that there are controversies about it. But it's still nice to have it in those situations where you're outside of norms for reasonable reasons. 😀
> Ultimately, I prefer to design languages around how people want to express things, and I like occasionally doing mutation even if it's not common, so I like languages that allow it and don't mind if there's a bit of a penalty for it or if one says "don't do this a lot because it's not aesthetic or not efficient or whatever".
Me too -- although I remain open to possibilities. Usually such want me to switch paradigms, though, not just add to my toolbox.
“the abolishing of mutable variables has other intangible expressional costs, so it’s not a simple no-brainer.”
@kentpitman I prefer the term “constraint” to “expressional cost,” because constraints are the difference between a haiku and a long-form essay. For example, I am very curious what the code for the machine learning algorithm that trains an LLM would look like expressed as an APL program. I don’t know, but I get the sense it would be a very beautiful two or three lines of code, as opposed to the same algorithm expressed in C++ which would probably be a hundred or a thousand lines of code.
Not that I disagree with you, on the contrary, that is why I was convinced to switch to Scheme as a more expressive language than Haskell. I like the idea of starting with Scheme as the untyped lambda calculus, and then using it to define more rigorous forms of expression, working your way up to languages like ML or Haskell, as macro systems of Scheme.
I'm not 100% positive I understand your use of constraint here, but I think it is more substantive than that. If you want to use the metaphor you've chosen, a haiku reaches close to theoretical minimum of what can be compressed into a statement, while a long-form essay does not. This metaphor is not perfect, though, and will lead astray if looked at too closely, causing an excess focus on differential size, which is not actually the key issue to me.
I won't do it here, but as I've alluded to more than once I think on the LispyGopher show, I believe that it is possible to rigorously assign cost to the loss of expression between languages.
That is, that a transformation of expressional form is not, claims of Turing equivalence notwithstanding, cost-free both in terms of efficiency and in terms of expressional equivalence of the language. It has implications (positive or negative) any time you make such changes.
Put another way, I no longer believe in Turing Equivalence as a practical truth, even if it has theoretical basis.
And I am pretty sure the substantive loss can be expressed rigorously, if someone cared to do it, but because I'm not a formalist, I'm lazy about sketching how to do that in writing, though I think I did so verbally in one of those episodes.
It's in my queue to write about. For now I'll just rest on bold claims. 😀 Hey, it got Fermat quite a ways, right?
But also, I had a conversation with ChatGPT recently where I convinced it of my position and it says I should write it up... for whatever that's worth. 😀
cc @screwlisp @wrog @dougmerritt @cdegroot
> That is, that a transformation of expressional form is not, claims of Turing equivalence notwithstanding, cost-free both in terms of efficiency and in terms of expressional equivalence of the language. It has implications (positive or negative) any time you make such changes.
I hope everyone here is already clear that "expressiveness" is something that comes along on *top* of a language's Turing equivalence.
Indeed Turing Machines (and pure typed and untyped lambda calculus and SKI combinatory calculus and so on) are all *dreadful* in terms of expressiveness.
And for that matter, expressiveness can be on top of Turing incomplete languages. Like chess notation; people argue that the algebraic notation is more expressive than the old descriptive notation. (People used to argue in the other direction)
[..it's possible I'm missing the point, but I'm going to launch anyway...]
I believe trying to define/formalize "expressiveness" is roughly as doomed as trying to define/formalize "intelligence". w.r.t. the latter, there's been nearly a century of bashing on this since Church and Turing and we're still no further along than "we know it when we see it"
(and I STILL think that was Turing's intended point in proposing his Test, i.e., if you can fool a human into thinking it's intelligent, you're done; that this is the only real test we've ever had is a testament to how ill-defined the concept is...)
1/11
The point of Turing equivalence is that even though we have different forms for expressing algorithms and there are apparently vast differences in comprehensibility, they all inter-translate, so any differences in what can utltimately be achieved by the various forms of expression is an illusion. We have, thus far, only one notion of computability.
(which is not to say there can't be others out there, but nobody's found them yet)
2/11
screwlisp reshared this.
I believe expressiveness is a cognition issue, i.e., having to do with how the human brian works and how we learn. If you train yourself to recognize certain kinds of patterns, then certain kinds of problems become easier to solve.
... and right there I've just summarized every mathematics, science, and programming curriiculum on the planet.
What's "easy" depends on the patterns you've learned. The more patterns you know, the more problems you can solve. Every time you can express a set of patterns as sub-patterns of one big super-pattern small enough to keep in your head, that's a win.
I'm not actually sure there's anything more to "intelligence" than this.
3/11
screwlisp reshared this.
I still remember trying to teach my dad about recursion.
He was a research chemist. At some point he needed to do some hairy statistical computations that were a bit too much for the programmable calculators he had in his lab. Warner-Lambert research had just gotten some IBM mainframe -- this was early 1970s, and so he decided to learn FORTRAN -- and he became one of their local power-users.
Roughly in the same time-frame, 11-year-old me found a DEC-10 manual one of my brothers had brought home from college. It did languages.
Part 1 was FORTRAN.
Part 2 was Basic.
But it was last section of the book that was the acid trip.
Part 3 was about Algol.
4/11
screwlisp reshared this.
This was post-Algol-68, but evidently the DEC folks were not happy with Algol-68 (I found out later *nobody* was happy with Algol-68), so ... various footnotes about where they deviated from the spec; not that I had any reason to care at that point.
I encountered the recursive definition of factorial and I was like,
"That can't possibly work."
(the FORTRAN and Basic manuals were super clear about how each subprogram has its dedicated storage; calling one while it was still active is every bit an error like dividing by zero. You're just doing it wrong...)
5/11
Then there was the section on call-by-name (the default parameter passing convention for Algol)
... including a half page on Jenson's Device, that, I should note, was presented COMPLETELY UN-IRONICALLY because this was still 1972,
as in, "Here's this neat trick that you'll want to know about."
And my reaction was, "WTFF, why???"
and also, "That can't possibly work, either."
Not having any actual computers to play with yet, that was that for a while.
Some years later, I got to college and had my first actual programming course...
6/11
screwlisp reshared this.
... in Pascal.. And there I finally learned about and was able to get used to using recursion.
Although I'd say I didn't *really* get it until the following semester taking the assembler course and learning about *stacks*.
It was like recursion was sufficiently weird that I didn't really want to trust it until/unless I had a sense of what was actually happening under the hood,
And THEN it was cool.
7/11
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
@dougmerritt
And, to be fair, by then, he had changed jobs/companies, moved up to the bottom tier of management, wasn't using The Computer anymore, so maybe the interest had waned.
But it struck me that I was never able to get past showing him the factorial function and,
"That can't possibly work."
He had basically accepted the FORTRAN model of things and that was that.
Later, when he retired he got one of the early PC clones and then spent vast amounts of time messing with spreadsheets.
9/11
@dougmerritt
You may say that untyped lambda calculus and SKI combinatory calculus and so on) are all *dreadful* in terms of expressiveness, and I will probably agree,
... but it also seems to me that Barendregt got pretty good at it.
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),
... but at the same time, it's *still* the case that if I need to write a one-liner to do something, chances are, I'll be doing it in Perl, and I've heard people complain about *that* language being essentially write-only line-noise.
10/11
@dougmerritt
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
@wrog
Yes, thanks, I liked reading that.
... 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
screwlisp reshared this.
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...
@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
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.
Well there you go. So wrog just needs to find a list of such clients to choose the most suitable one -- if any.
@dougmerritt
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).
given that I once-upon-a-time wrote a MAPI client for the sake of being able to post to Microsoft Exchange forums in rich text using courier font, in theory, I should be able to do this.
... but that would mean I'd have to Learn Fediverse. crap.
hmm. Anyone have experience with
codeberg.org/martianh/mastodon…
i.e., is the best one or if this just Guy Who Grabbed the Name first and did the best SEO twigging? (I hate that google search has gotten so enshittified)
(also, thanks, LazyWeb!)
unforch mastodon.el hasn't yet implemented chaining of new toots. if someone wants to add it though, by all means. (the issue has been raised before, but as usual no one was willing to get their hands dirty.)
edit: codeberg.org/martianh/mastodon…
Hi there, thanks to all involved for mastodon.el - it's really nice! I waffle too much when I write. Inevitably this means I need to restructure toots into threads. It'd be really nice if this could be automated, since it's a common usecase.Codeberg.org
Seems like the universe is calling on you to fix it!
With some apologies to legends:
(defun chained-toot
(lim str)
(let ((space (- lim 8))
(End (length str))
(span (+ 1 (ceiling (/ (length str) (- lim 8))))))
(cl-loop
for idx from 1 to span
for start from 0 by space
for end from space by space
for piece = (cl-subseq str start (min end End))
for addy = (format "%s\n%d/%d" piece idx span)
collect addy)))
@dougmerritt @mousebot @wrog @cdegroot @ramin_hal9001 @kentpitman
#elisp
screwlisp reshared this.
You forgot to change 'space' in a complex inscrutable way at each step.
@dougmerritt @mousebot
figuring out how to split up a toot is solving the wrong problem. In my cases I *know* how I want to split it up.
what I want is the ability to create a sequence of posts, edit them all in place, shuffle text around + attach media and polls wherever I want, get them all looking right,
and then send them all in one fell swoop.
I think the key concept is being able to compose a reply to a draft.
i.e., In-Reply-To is a buffer rather than a URL
Posting the reply automatically posts the In-Reply-To **first**. And likewise for longer chains.
Make that work in a reasonable way, and everything else follows.
(I'm up to 5000 chars in my draft reply on codeberg...)
screwlisp reshared this.
What I do for that is craft one single long post. Because it's not like there would be a character limit, right? That would be silly.
CC: @screwlisp@gamerplus.org @dougmerritt@mathstodon.xyz @mousebot@todon.nl @cdegroot@mstdn.ca @ramin_hal9001@fe.disroot.org @kentpitman@climatejustice.social
@cy
Presumably you're joking. But different of us suffer different character limits. My server, Mathstodon.xyz, has a limit of 1729 characters -- but for most servers it's significantly less.
And some may be larger. Yours, perhaps. But that doesn't help others.
@screwlisp @mousebot @cdegroot @ramin_hal9001 @kentpitman @wrog
I'm joking, yes. And also criticizing those servers. But honestly, I don't like writing super long posts. I feel like I'm ignoring people and not letting them get in a word edgewise. When I consider ranting about something in long form, I try to write a little bit at a time, and give people a chance to respond before writing more. Make it a conversation instead of an essay.
Or sometimes if I just don't care I'll splurg it all out and hope that nobody bothers reading that shit.
CC: @screwlisp@gamerplus.org @mousebot@todon.nl @cdegroot@mstdn.ca @ramin_hal9001@fe.disroot.org @kentpitman@climatejustice.social @wrog@mastodon.murkworks.net
It's Twitter Culture. We're all supposed to speak in sound bites. Dorsey or whoever decided if you can't fit it in 130 chars, it's not worth saying. Then at some point they doubled it and thought that was generous enough.
And now short posts are what people expect.
LJ never had a limit.
Hell, **Usenet** never had a limit and we were suffering under far worse resource constraints back then.
I miss Usenet.
@wrog
I miss Usenet, too. But it suffered a shortage of cat videos, so it had to go.
@cy @screwlisp @mousebot @cdegroot @ramin_hal9001 @kentpitman
@dougmerritt the lack of cat videos definitely destroyed Gopher’s commercial chances as well. Gemini should have addressed that issue.
@wrog @cy @mousebot @dougmerritt
I did not like the Twitter extended from 140 to 280. But, unrelated to that, I'm pretty sure they made a decision that urls and @ references to people's handles should have fixed small cost, so as not to bias things in favor of short-named people or xrefs. I think that was very important. I was surprised that BlueSky did not copy it.
I don't think it had anything to do with SMS. Twitter was an internet service from the start and Dorsey's decision was a matter of taste/branding/marketing; the notion of a service that *only* allowed short posts was Something New.
Receiving a twitter feed as SMS texts on a cell phone would have been insane (and probably also expensive back then).
@wrog
> I don't think it had anything to do with SMS.
But you would be wrong. Don't mess with the bull, you'll get the horns. I was not only there, I worked in that space at that time.
(I did more than languages, compilers, and operating systems because I got bored periodically. I've also done OCR algorithms, to name another thing that doesn't seem to fit with the rest.)
> The idea was initially pitched as an “SMS for the web”,...
> Why 140 characters? The limit was inspired by SMS text messaging, which capped messages at 160 characters. Twitter reserved 20 characters for the username, leaving 140 for the message itself.
blog.easybie.com/twitters-orig…
So it was at *least* inspired by SMS. But more than that, it gatewayed to and from SMS, so it retained the SMS limit of necessity to continue gatewaying -- for a while.
en.wikipedia.org/wiki/X_(socia…
Wikipedia stops just short of having an adequate history by itself.
Twitter, now known as X, has profoundly reshaped the way people communicate, share news, and engage with global conversations. What began as a microbloggingBjörn Ironside (Easybie Blog)
Sensitive content
Sensitive content
@dougmerritt @wrog @cy @mousebot
Yeah, maybe that's why I didn't win. I didn't think the story/poem was really that bad. It's a lot of information to pack into a short space, and SMS has no way to flag content warnings.
They also had a competition for stories of 150 words. I wrote an entry for that I thought was really cool for that, and of a different nature. It didn't win either, though I was proud of it and think it at least could reasonably have. I've never published that one, though one day I suppose I should. It's still looking for a proper forum. 😀
Sensitive content
In high school English, we were required to write poetry, so I did a piece about sunshine and rainbows. The teacher took me aside and said, "look, you're trying too hard to be super positive, and the result is awful. Try again. This time, make it personally meaningful."
So I did, and being a troubled teenager, turned in a poem about flaming death or thereabouts. The teacher took me aside again, gave me an A on the assignment, and recommended I see a therapist.
😀
If it's not one thing, it's another.
screwlisp reshared this.
Even that limit was totallly arbitrary. They were like "We got a few extra bits in the packets, so sure why not? And they'll pay 10 cents a pop! 🍭" The character limit was always about draining our attention, keeping us too busy to organize, and rewarding us for shitposting. Can't be typing on your brand new Portable Smart Phone, can you? You're far too busy and important to take your time! Hurry up!
CC: @kentpitman@climatejustice.social @wrog@mastodon.murkworks.net @screwlisp@gamerplus.org @mousebot@todon.nl @cdegroot@mstdn.ca @ramin_hal9001@fe.disroot.org
@cy
> Even that limit was totallly arbitrary. They were like "We got a few extra bits in the packets, so sure why not? And they'll pay 10 cents a pop! 🍭" The character limit was always about draining our attention, keeping us too busy to organize, and rewarding us for shitposting. Can't be typing on your brand new Portable Smart Phone, can you? You're far too busy and important to take your time! Hurry up!
Cynicism about human nature is rarely off-target, but that doesn't extend to protocols being arbitrary:
> Messages are sent with the MAP MO- and MT-ForwardSM operations, whose payload length is limited by the constraints of the signaling protocol to precisely 140 bytes (140 bytes × 8 bits / byte = 1120 bits).
> Short messages can be encoded using a variety of alphabets: the default GSM 7-bit alphabet, the 8-bit data alphabet, and the 16-bit UCS-2 or UTF-16 alphabets.[81][82] Depending on which alphabet the subscriber has configured in the handset, this leads to the maximum individual short message sizes of 160 7-bit characters, 140 8-bit characters, or 70 16-bit characters. GSM 7-bit alphabet support is mandatory for GSM handsets and network elements.
[82]en.wikipedia.org/wiki/SMS
@kentpitman @wrog @screwlisp @mousebot @cdegroot @ramin_hal9001
Just because the protocol was written in the 80's doesn't mean it couldn't have used a different number than 140... seems unlikely they were that forward thinking, but BBSes had been around a while, and I imagine they had their eye on that.
CC: @kentpitman@climatejustice.social @wrog@mastodon.murkworks.net @screwlisp@gamerplus.org @mousebot@todon.nl @cdegroot@mstdn.ca @ramin_hal9001@fe.disroot.org
@cy
You seem to keep overlooking that it was originally interoperable with SMS, it wasn't just that they were inspired by SMS, so it had to be a limit of 140 to maintain two-way compatibility without message truncation.
They didn't feel comfortable increasing it until SMS was well on its way out.
Now, when they initially doubled it from 140 to 280, *that* may have been them just being conservative for no functional reason. I don't recall.
@kentpitman @wrog @screwlisp @mousebot @cdegroot @ramin_hal9001
Well I wasn't there so I won't speculate. Sorry if I seemed like I knew what I was talking about. I think the whole instant messaging paradigm is flawed tbh. We need slow, deliberate, composed messaging.
CC: @kentpitman@climatejustice.social @wrog@mastodon.murkworks.net @screwlisp@gamerplus.org @mousebot@todon.nl @cdegroot@mstdn.ca @ramin_hal9001@fe.disroot.org
@cy
Slow deliberate composition certainly has major virtues, doesn't it?
@kentpitman @wrog @screwlisp @mousebot @cdegroot @ramin_hal9001
dm> Slow deliberate composition certainly has major virtues, doesn't it?
As does getting an ephemeral thought out before it vanishes never to be spoken of again.
Not even to mention that some of us are old enough that if we keeled over dead, people would shrug and say "well, that's sadly normal for him". But they still might be sad something didn't get said.
We are left no choice but to navigate an overconstrained life, so we just do the best we can. 😀
@dougmerritt @cy @wrog @mousebot
Also, given that most user interfaces have message length abbreviation, with the user having to affirmatively press "show more" to see the rest of it, I don't really understand why there are small limits.
Making people break stuff up into smaller pieces just increases the number of interruptions due to individual message notifications, and makes it not as useful that there is that length query at all, because it can't span multiple messages.
screwlisp reshared this.
like this
Cy and DougMerritt (log😅 = 💧log😄) like this.
Cy reshared this.
Snac works, for me. For some definition of "works." Luckily, I can self host, at least for the time being.
CC: @mousebot@todon.nl @dougmerritt@mathstodon.xyz @wrog@mastodon.murkworks.net @kentpitman@climatejustice.social @ramin_hal9001@fe.disroot.org @cdegroot@mstdn.ca @screwlisp@gamerplus.org
@wrog my instance has a 5000 character limit, but I rarely type that much. Most of my posts are three or four paragraphs. I could probably make do with 2500 characters, but it is nice to have a little extra space so I don’t feel like I have to watch the character counter so closely. And I have space to write in complete sentences, to include example code, paste long URLs, and quote parts of other posts inline.
@cy
> I feel like I'm ignoring people and not letting them get in a word edgewise
The world could use more people with that perception! Too many people do that and obviously don't notice they're doing that.
@screwlisp @mousebot @cdegroot @ramin_hal9001 @kentpitman @wrog
@mousebot @dougmerritt
ok, finally finished my codeberg post
codeberg.org/martianh/mastodon…
Hi there, thanks to all involved for mastodon.el - it's really nice! I waffle too much when I write. Inevitably this means I need to restructure toots into threads. It'd be really nice if this could be automated, since it's a common usecase.Codeberg.org
screwlisp reshared this.
… and a different model which perhaps maps closer to how people think about this.
codeberg.org/martianh/mastodon…
Please note:
Proposal 2
. reply-to-id can be a draft ⟹ creating chains of drafts
. status quo = nobody's doing that yet
Proposal 3
. drafts have split-points (= subdrafts)
. many attributes (CW,NSFW,attachements,visibility) live on the split point
. status quo = only one subdraft
are **implementation** choices, not UIs in and of themsevles.
That is, both should support the same UIs
(for chains, anyway; P3 can't really do trees).
I still much prefer P2.
P3 looks to be more work/complexity to achieve less IMHO.
(N.B. I've not deeply looked at the code, yet).
Hi there, thanks to all involved for mastodon.el - it's really nice! I waffle too much when I write. Inevitably this means I need to restructure toots into threads. It'd be really nice if this could be automated, since it's a common usecase.Codeberg.org
@mousebot @dougmerritt
> (N.B. I've not really looked at the code, yet).
meaning I may yet turn out to be wrong about what's difficult,
meaning don't hold your breath on the pull-request (*)
(Also, elisp seems to have changed a bit.
I remain dismayed at how many Common-Lisp-isms crept into the language. I've mostly been in RMS's camp on this, but I'll admit that was based on how horribly elisp's common-lisp compatibility was implemented 20 years ago. Evidently this ship has sailed. And now that modern elisp compile is way better and does native code, it probably doesn't matter anymore).
(*) Ideally, my architecture wanking will goad someone else into beating me to it.
> But that way madness lies.
That's never stopped you before!
But ok.
> frustrated by elisp not actually being common lisp
Oh right.
Well, I'm just kibitzing to give you a hard time, so just ignore me, carry on.
@wrog @dougmerritt
I stick to posting longer-than-two-posts content to my blog, which auto-toots a link, initial text, & any tags.
Or write to my phlog and then tell people to look there, but that's for devnotes/commentary on my Cyberhole.
Third option is to get onto an instance with a huge character limit, post giant walls of text.
> I stick to posting longer-than-two-posts content to my blog, ...
yeah, that's clearly the Right Thing, but has the disadvantage of not inflicting my text on people directly 🙂
Also my blog hasn't gotten a whole lot of readership since the Russians killed Livejournal
hmm... is there a way to do a reply that is *also* a quote-post? I should try this.
mastodon.murkworks.net/@wrog/1…
(𝜔+1)/11
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
@dougmerritt
(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 … )
en.wikipedia.org/wiki/Surreal_…
(𝜔/2)/11
@wrog
I support your right to free expression. 😀
@wrog your story about learning recursion in Algol reminded me of a story that was told about how Edsger Dijkstra influenced the Algol spec (through a personal conversation with I think John Bakus) to include what we now understand as a “function call,” by specifying the calling convention for how the stack must be modified before the subroutine call and after the return. I first heard the story in a YouTube video called, “How the stack got stacked“.
Regarding “expressiveness,” you do make a good point about it (possibly) being fundamentally a subjective thing, like “intelligence.” Personally, I never felt the restrictions in Haskell made it any less expressive as a language.
It is interesting how you can express some incredibly complex algorithms with very few characters in APL. Reducing function names to individual symbols and applied as operators does make the language much more concise, but is “concise” a necessary condition for “expressive?”
@dougmerritt @kentpitman @screwlisp @cdegroot
Auf YouTube findest du die angesagtesten Videos und Tracks. Außerdem kannst du eigene Inhalte hochladen und mit Freunden oder gleich der ganzen Welt teilen.Kay Lack (YouTube)
Some clearly prefer concise, but nonetheless it is orthogonal to expressive.
'Expressive' != 'my favorite approach' -- ideally expressiveness can be determined objectively by human factors studies.
Failing that, sure, it's then subjective and subject to unbounded argument. 😀
@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.
screwlisp reshared this.
screwlisp reshared this.
screwlisp reshared this.
As usual, Kent, an excellent description -- and I had forgotten some of those details, but yes, those were very real advantages.
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
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…
@dougmerritt
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
Funny, I couldn't recall "~" being important at all so had to go check. See codeberg.org/PDP-10/its/src/br… 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
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.
> 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...):
ibiblio.org/pub/academic/compu…
(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.
“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 is still a problem in modern terminal emulators. On Linux, nearly all terminal emulator software emulates the DEC VT-220 hardware pretty closely, so it does actually send the ASCII DC1 and DC3 characters for C-q and C-s, and the virtual TTY device responds accordingly by blocking all further characters except for DC1 and DC3. You have to execute the command stty -ixon to disable soft flow control for a given TTY device after it has been initialized by the operating system.
I think there is a way configure the pseudoterminal manager system control to create virtual TTY devices that ignore DC1 and DC3 characters, but I don’t know how, and for whatever reason (probably for backward compatibility with older Unix systems) Debian-based Linux doesn’t configure it this way by default. I think most people just put the stty -ixon in their ~/.profile file.
@ewhac
It comes up far less often in today's windowing environments, but we've got those reflexes as a must from the bad old days, eh?
@dougmerritt @ewhac that is a good use for ^S/^Q, although I tend to use ^Z for that instead.
And since switching to Emacs and controlling my remote terminals using the TRAMP system, I haven’t actually had to think too much about sending control characters directly to a TTY device. I just let Emacs buffer all the output and C-r search through the buffer.
@dougmerritt @wrog
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.
@djl
Lucky you; I went through teletypes, and then glass terminals lacking cursor control, before finally being in an environment with cursor control terminals capable of WYSIWYG -- and at that, it was pretty random back then who had heard the pro-WYSIWYG arguments and who had not, so...
@dougmerritt @djl @wrog
For those looking on who might not know these terms, teletypes had paper feeding through and mostly did only output that was left-to-right and then fed that line and then did not back up ever to a previous line. They were also loud and clunky, mostly, and had keyboards that had keys you had to press way down in order to get them to take.
Glass terminals were displays that could only do output to the bottom line of the screen, kind of like a paper terminal but without the paper. Once it scrolled up, you couldn't generally scroll back down. But that's why it might sound like it would have cursor control but did not yet.
screwlisp reshared this.
Yes, and to clarify your final two sentences, the *display* scrolled up with each additional line emitted -- the *cursor* could never scroll up.
In my environment at Berkeley, these were Lear Siegler ADM 3 terminals. The slightly later ADM 3a terminals finally allowed the cursor to be moved around at will (although they didn't have any fancier abilities, unlike still later devices).
Thanks for thinking to explain what I did not.
@dougmerritt @wrog
The datapoint terminals were _almost_ wysiwyg: they didn't have a cursor, so the TECO of the time inserted "/\" in the text displayed, and you could insert text there, delete the next character and the like.
But TECO allowed you to change the "/\" to whatever you liked, so if you left your terminal, someone would change that to "/\Foo is loser" and Foo wouldn't be able to delete that text from Foo's file...
screwlisp reshared this.
@dougmerritt @wrog
I've been through 17 or so environments, and I was always able to find an editor that could be persuaded to act the way I wanted: CCA, NEC, AT&T and even Word for MS-DOS.
Hilariously, Word for Windows defeated me. There was no way to persuade it to act as a civilized text editor, so I acquired the source code to WordPad and implemented my usual TECO macros in C++, and used that for 20 years or so.
@djl
Hey, you want what you want.
Also: spoken like a true hacker. "I will bend the universe (of computing) to my will!"
@dougmerritt @wrog
Yes. I missed the teletype round. Sort of. Father was site engineer for one of the early LINC 8 installations, and later a PDP-7 installation, and they had teletypes. They.Were.Horrid.
Peter Belmont (later Ada developer) tried to persuade me to do programming, but I was busy doing other things. The IBM card puches had really sweet keyboards, though.
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))
screwlisp reshared this.
Sensitive content
@dougmerritt yes, I am maybe a little unclear in what I wrote. I tend to take shortcuts when I write about Scheme that make it seem I am equating it to the untyped lambda calculus.
I have heard of the Turing Tarpit. And I have inspected the intermediate representation of Haskell before (the Haskell Core), so I have seen first-hand that expressing things in lambda calculus makes the code almost impossible to understand.
Just as a BTW, LLMs have layers of necessary algorithms, rather than just one single algorithm.
That said, someone no doubt *has* reduced that core to one line of APL. 🙄
P.S. arguments about whether "expressiveness" is the right description may end up being about differences without distinctions.
I should note that seeing this
universeodon.com/@JamesGosling…
reminded me that I didn't actually totally understand this
mastodon.murkworks.net/@wrog/1…
until it came time for me to implement my own garbage collector for ASTLOG, and I'm definitely **not** any kind of GC expert. I used a dirt-simple 2-space copying collector that Appel published in the 80s that somebody pointed me to.
it ran every bit as fast as promised.
(and debugging a GC is such an acid trip. Stuff just **disappears**; you have to figure out how (who'd've guessed this would happen?).
I now think that writing a GC, like dissecting frogs in 9th grade, is something that **everybody** should do at least once.
Your understanding is mostly faulty. The original GC was written by me, and I'm no Lisp GC expert. I was (and still am) an admirer of Lisp. I wrote the code for my whole PhD thesis in Lisp. My admiration for garbage collection started earlier, when I was a big user of Simula in the 70s. But the motivation for GC in Java was different: the motivation was all about reliability and security. A leading cause of security vulnerabilities as always been buggy code. And one of the leading root causes of many long standing, hard to diagnose and fix, bugs has been flakey storage management. Garbage collection goes a long way to increasing system reliability, and hence security. I had always wanted to make GC more mainstream.When you described garbage collection to senior management back in the day, their reflexive judgement was: "bullshit! Lazy engineers just don't want to clean up their mess". But when they see measureable improvements in system robustness, and corresponding decreases in failures, they Notice.
screwlisp reshared this.
@wrog it's a good chunk of the reason why Erlang shines here. Per-process GC can be kept simple (a process is more like an object than a thread, so you have lots of them) and no equivalent of setq - all data is immutable.
(there is a shared heap, but that also is just immutable data).
yes, the BEAM virtual machine is pretty amazing technology, there are very good reasons why it is used in telecom, or other scenarios where zero downtime is a priority. I think .NET and Graal are have been slowly incorporating more of BEAM’s features into their own runtimes. Since about 3 years ago .NET can do “hot code reloading,” for example.
I have used Erlang before but not Elixer. I think I would like Elixer better because of it’s slighly-more-Haskell-like type system.
@wrog not just zero downtime, the more important aspect is how it does concurrency, how it manages to scale that, and how well it fits the modern requirements of "webapps" (like a glove).
It changed my thinking about objects, just like Smalltalk did before. I'm fully on board with Joe Armstrong's quip that Erlang is "the most OO language" (or something to that extent); having objects with effectively their own address space, their own processor scheduling, etc, completely changes how you think about building scalable concurrent systems (and _then_ you get clustering for free, and sometimes hot reloading is a production thing, although 99% of the time it is good to have it in the REPL)
@wrog
'setq' and friends have been criticized forever, but avoiding mutation is easier said than done. Parsing arbitrarily large sexpr's requires mutation behind the scenes -- which ideally is where it should stay.
Any language we use that helps avoid mutation is a good thing. 100% avoidance is a matter of opinion -- some people claim it was proven to be fully avoidable decades ago, others say the jury is still out on the 100% part.
I don't know enough to have an opinion on whether 100% has been completely proven, but it's attractive.
I respect you, and your contributions to Lisp and the community. So I dislike nitpicking you. But:
> Common Lisp macros more unhygienic than they actually are
This is a biased phrasing. There are hygenic macro systems, and unhygenic macro systems. One cannot assign a degree of "hygenic-ness" without simultaneously defining what metric you are introducing.
We all can agree that one can produce great code in Common Lisp. It's not like Scheme is *necessary* for that.
But de gustibus non est disputandum. There are objective qualities of various macro systems -- and then there's people's preferences about those qualities.
Bottom line: it seems you are saying that Lisp macros aren't so bad if their use is constrained to safe uses, and I would agree with *that*.
@dougmerritt
> it seems you are saying that Lisp macros aren't so bad if their use is constrained to safe uses
Well, what I'm saying isn't formal, and that in itself bugs some people. But the usual criticism of the CL system isn't that "people have to be careful", it's that "ordinary use is not safe". But there's safe and then there's safe.
There is a sense in which C is objectively less safe than, say, Python or Lisp. And there is a sense in which people who write languages that aspire to more proofs think those languages still are not safe. So there's a bit of a continuum here that makes terminology tricky, so I have to make some assumptions that are fragile because some after-the-fact dodging can be done where critics do not acknowledge the incremental strengths, they just keep pointing out other problems as if that's what they meant all along.
In scheme, and ignoring that you could do this functionally, writing a macro foo that takes an argument and yields the list of that argument can't look like `(list ,thing) because if used in some some situation like (define (bar list) (foo list)) you would fall victim to namespace clashes. And so scheme people dislike this paradigm. But even without careful planning, the same probably is FAR LESS likely to happen in CL because:
Parameters that might get captured are usually in the variable namespace. You CAN bind functions, but it's rare, and it's super-rare for the names chosen to be things that would be the name of a pre-defined function. you'd have to be in some context where someone had done (flet ((list ...)) ....) for the list function to be bound to something unexpected, and even then you're not intended to bind list to something unexpected for other reasons, mainly that the symbol list is shared.
I allege that in the natural course of things, it's FAR more rare for the expansion of a macro to ever contain something that would get unexpectedly captured, for reasons that do not exist in the scheme world. Formally, yes, there is still a risk, but what makes this such an urgency in the Scheme world are the choices to have a Lisp1 and the choice to have no package system. Each of these things creates an insulation. In practice, the functional part of the CL world does not vary, as uses of FLET are very rare. And it's equally rare for a macro to expand into free references that are not functional references.
Also, the CL world has gensyms easily available, and CL systems often have other mechanisms that package up their use to be easy. In the Scheme world, there is no gensym and the language semantics is not defined on objects but on the notation itself. This makes things hard to compare, but it doesn't make it easy to see how package separation also eliminates a broad class of the surprise, because usually you know what's in your own package and aren't affected by what's in someone else's where in scheme symbols are symbols and it's far more dangerous to just be relying on lexical context to sort everything out.
So yes, CL is less dangerous if you limit yourself, but also it's less dangerous because a lot of times you don't have to think hard about limiting yourself. The languages features it has create naturally-more-safe situations. Note I am making a relative, not an absolute measurement of safety. I'm saying if CL were full of the conflict opportunities that Scheme is, we'd have rushed to use hygiene, too. But mostly it wasn't, so no one felt the urge.
screwlisp reshared this.
On the one hand, that is all well said.
On the other hand, I always have some nitpicky reply. 😀
(On the gripping hand -- no, I'll stop there)
You're talking about what is common and what is rare, and I can see why such was your overriding concern.
But I feel like I'm always the guy who ends up needing to fix the rare cases that then happen in real life.
For instance, when implementing a language that is wildly different than the implementation language -- "rare" seems to come up a lot there.
And also many times when I am bending heaven and earth to serve my will despite the obstinacy of the existing software infrastructure. "Just don't do that", people say.
It is indeed a lot like the needs of the formal verification by proof community, that is looking for actual math proofs, versus mundane everyday user needs.
Humpty Dumpty said "The question is, which is to be the master -- that's all" ("Through The Looking Glass", by Lewis Carroll).
Here, perhaps the master is which community you aim to serve.
@dougmerritt
Well, I'm just trying to explain why hygiene seems more like a crisis to the Scheme community than it did to the CL community, who mostly asked "why is this a big deal?". It is a big deal in Scheme. And it's not because of the mindset, it's because different designs favor different outcomes.
The CL community would have been outraged if we overcomplicated macros, while the Scheme community was grateful for safety they actually perceived a need for, in other words.
So yes, "the master is which community you aim to serve". We agree on that. 😀
I just want to say, I never had much of an opinion on hygienic macros, other than they seemed like a very good idea. But your explanation of why it isn’t a big deal in Common Lisp, because namespaces and libraries prevent nearly all name collisions, was very convincing. And when you consider how complicated the Racket macro expander is, you start to wonder whether it is really worth all of that complexity to ensure a very particular coding problem never happens.
Well, people used to take advantage of the freedom of the original unhygenic lisp macros to do all manner of unholy coding.
> I don't quite remember if the original language feature had fully worked through all the tail call situations in the way that ultimately it did.
My memory is that the Scheme interface for continuations was completely worked out when Scheme was born, but implementation issues were not -- beyond existence proof that is.
> But it was brave to say that full continuations could be made adequately efficient.
Yes it was!
> the Lisp community in general, and here I will include Scheme in that
Planner, for instance, went in a quite different direction. Micro-Planner (and its SHRDLU) inspired Prolog. Robert Kowalski said that "Prolog is what Planner should have been" (it included unification but excluded pattern-directed invocation for example), see Kowalski, R. (1988). “Logic Programming.” Communications of the ACM, 31(9) -- although the precise phrasing I think is from interviews.
Anyway, Prolog was not a Lisp, but sure, definitely Scheme is. The history of Lisp spinoffs created quite a bit of CS history.
I did professional development in Scheme (at Autodesk, before that division was axed 🙁 -- it's certainly a workable language in the real world.
But we know that Common Lisp is too, obviously.
screwlisp reshared this.
> 2 of them using hardware support (typed pointers)
I learned about typed pointers from Keith Sklower, from my brief involvement in the earliest days (1978?) of Berkeley's Franz Lisp (implemented in order to support the computer algebra Macsyma port to Vaxima), and it blew my mind. Horizons extended hugely.
A few years later everyone seemed to just take the idea in stride. Yet no one seems to comment on the impact on typed pointers made by big-endian versus little-endian architectures; everyone seems to regard it as a matter of taste. It's not always; it impacts low level implementations.
>My (possibly faulty) understanding is that the Java GC was made to work by at least some displaced Lisp GC experts
I used to regularly talk to the technical lead for that group at Sun for unimportant reasons, and I have every reason to think that the entire team was absolutely brilliant.
I don't recall whether some of them were displaced Lisp GC experts, but I do recall that I had plenty of criticisms about Java the language, but tended to find few, if any, about Java the implementation. And they kept improving it.
screwlisp reshared this.
Your understanding is mostly faulty. The original GC was written by me, and I'm no Lisp GC expert. I was (and still am) an admirer of Lisp. I wrote the code for my whole PhD thesis in Lisp. My admiration for garbage collection started earlier, when I was a big user of Simula in the 70s. But the motivation for GC in Java was different: the motivation was all about reliability and security. A leading cause of security vulnerabilities as always been buggy code. And one of the leading root causes of many long standing, hard to diagnose and fix, bugs has been flakey storage management. Garbage collection goes a long way to increasing system reliability, and hence security. I had always wanted to make GC more mainstream.
When you described garbage collection to senior management back in the day, their reflexive judgement was: "bullshit! Lazy engineers just don't want to clean up their mess". But when they see measureable improvements in system robustness, and corresponding decreases in failures, they Notice.
Kent: https://nhplace.com/ https://climatejustice.social/@kentpitman https://en.wikipedia.org/wiki/Kent_M._Pitman https://netsettlement.blogspot.com/ Cees de Groot('s book, The Genius of Lisp) : ht...Lispy Gopher Climate extras (toobnix)
reshared this
LdBeth, screwlisp and hairylarry reshared this.
Geeks under a certain age are impressed by the idea one was messing about in massively multiplayer worlds in the 1980s. It was early!
I ran into TinyMUD first, and via TinyMUCK their Forth-based MUD language, MUF. Something about programming in MUDs lent itself to thinking in objects though and thinking about the things I wished I could do I (later realized I) started reverse-engineering object-oriented coding.
(I'd had earlier encounters w LISP, so at some point I realized what I was doing.)
A follow-on to my "Nazi Sucker-punch Problem" post, to address the most common argument I get, which boils down to:
"""
Moderated registration won't stop Nazis, because they'll just pretend to be human to fool moderators, but it will stop normal people, who won't spend the effort to answer the application question or want to wait for approval.
"""
Okay, I'm going to try to use points that I hope are pretty acceptable to anyone arguing in good faith, and I'm going to expand the definition of Nazis to "attackers" and lump in bigots, trolls, scammers, spammers, etc. who use similar tactics.
Attackers: we can group attackers into two main types: dedicated and opportunistic. Dedicated attackers have a target picked and a personal motive—they hunt. Opportunistic attackers have an inclination and will attack if a target presents itself—they're scavengers. In my years of experience as an admin on multiple Fedi servers, most attackers are opportunistic.
Victims: when someone is attacked, they (and people like them) will be less likely to return to the place they were attacked.
In general: without a motive to expend more effort, humans will typically make decisions that offer the best perceived effort-to-reward ratio in the short-term (the same is true of risk-to-reward).
Why does any of this matter?
Because it all comes down to a fairly simple equation for the attackers: effort > reward. If this is true, then the opportunistic attackers will go elsewhere. If it isn't true, then their victims will go elsewhere.
How can we tip that scale out of the attackers' favor?
By making sure moderation efforts scale faster against attackers' behaviors than against normal users' behaviors.
- A normal user only has to register once, while an attacker has to re-register every time they get suspended.
- A normal user proves their normality with each action they take, while every action an attacker takes risks exposing them to moderation.
- A new user / attacker likely spends a minute or two signing up, while a moderator can review most applications in a matter of seconds. Yes, attackers can automate signups to reduce that effort (and some do, and we have tools to address some of that, but again, most attackers aren't dedicated).
- Reviewing an application is lower effort than trying to fix the damage from an attack. As someone who gets targeted regularly by attackers from open-registration servers, I'd personally rather skim and reject a page-long AI-generated application, than spend another therapy session exploring the trauma of being sent execution videos.
I believe this points to moderated registration being the lowest effort remedy for the problem of the Nazi Sucker-punch. So before we "engineer a new solution" that doesn't yet exist, we should exhaust the tools that are already available on the platform today. Yes, we could implement rate limits, or shadow bans, or trust networks, or quarantine servers, but we don't have those today, and even if we did, there's no evidence that those would be a better solution for Fedi than moderated signups.
Will it stop *all* the attackers? No. But it will stop most opportunistic attackers.
Will it deter *some* potential new users? Yes. But communities are defined by who stays, not by how many come through the door.
lgbtqia.space/@alice/115499829…
Why reactive moderation isn't going to cut it, aka, "The Sucker-punch Problem". Imagine you invite your friend—let's call him Mark—to a club with you. It's open-door, which is cool, because you like when a lot of folx show up.🅰🅻🅸🅲🅴 (🌈🦄) (LGBTQIA.Space)
reshared this
Nicole Parsons, Shannon Prickett, 🇺🇦 haxadecimal 🚫👑 and Jonathan Lamothe reshared this.
I used to get my hair cut at a place that was just far enough way, and with enough traffic jams on the way each time, that I stopped going. It's not "far", by any means, but it was just on the cusp of being annoying. Once it became juuuust too much, I went somewhere closer.
I think people underestimate how low the bar can be to prevent bad actors. Even the guy scripting his nonsense will hit an application form and immediately leave to find an open instance, most of the time.
Totally agree.
Also, I know it wasn't mean that way but this had me in stitches
they'll just pretend to be human
An assault on “alt-right” figure Richard Spencer sparked the ‘punch a Nazi’ meme. Violence is bad, but so is racism – so where do we stand ethically?Tauriq Moosa (the Guardian)
Nicole Parsons reshared this.
Tightly argued. Nice.
To the concern that it might deter some new users, I would add "yes, but if the alternative is lots more evil arseholes, it's a minor downside - especially as it is really only a downside for lazy new users".
We already have moderated follows at the user level; having moderated signups at the server level seems like a no-brainer.
Sensitive content
@kauer
Yeah. Having a place infested with malicious dicks is also going to deter people.
I am sure there is a sweet spot in optimizing between cumbersome defenses and being a trash pit.
"... communities are defined by who stays, not by how many come through the door."
This is a beautiful line and apropo of many situations. I will be adding that to my book of really useful ideas.
Thank you.
Shannon Prickett reshared this.
@tompearce49 @kimlockhartga@beige.party @alice
I dunno man. You ever stab a kid with a Bic pen in the hand for grabbing you and shoving you down into a chair? Because I did once. And the bullies never fucked with me again.
@kimlockhartga
^ that is what makes this accurate:
"Reviewing an application is lower effort than trying to fix the damage from an attack."
Moderators have to review hundreds of applications to prevent a single attack. But because the damage of accumulated attacks is both long-lasting and affects audiences beyond a single direct target, reviewing remains a lower effort investment
Preventing attacks is also ethically worthwhile, adding ethos to logos and pathos! Never let meritocracy trolls reduce us to only using logos and rational arguments as persuasive tools
Sensitive content
This is also well-known from hacker circles.
The absolute largest lump of malicious hackers only look for low-hanging fruit.
Dedicated hackers looking to penetrate a well-composed org? Very rare. And completely different from the bulk. This is what red team sessions are for.
for the readers (I know Alice knows all this):
Perfection is not the enemy of the good. Any attempts to keep out the attackers are better than no attempts to keep out the attackers.
There's such a thing as defense-in-depth. You don't need your registration process to stop every attacker to get in the door. You have moderation tools. You have blacklists. You have defederation. You have TBS. Every attacker-stopper you add makes your instance safer.
Don't give up. Fight back.
Moderated registration won't stop Nazis, because they'll just pretend to be human to fool moderators, but it will stop normal people, who won't spend the effort to answer the application question or want to wait for approval.
on its face this is just an awful argument, like ???
99.9% of nazis won't even bother doing that... so it weeds out the vast majority of them
and that's what you have other moderation practices for!!
Suddenly wondering about a system, which I've seen effectively used on forums, where a new user's posts are held back, and they are effectively silenced until a moderator reads their posts and approves them to interact, perhaps with some sort of time-limit in case moderation doesn't get to it in a timely manner. This would not only mean they don't need to give a reason when signing up, but that they could partially engage without having to wait, and potentially that moderation would be seeing their posts right away.
It might take a new layer of systems to implement, but do you think that would be a good idea?
I'm a guy, and once, for about 45 seconds, I was mistaken for a woman, and the difference in the attitude towards me was insane, and that clarified things for me in an incredibly direct way.
So, I'm guessing you're saying that mostly in exasperation, and I'm most definitely not saying it's your job/responsibility to do so, but my thought is that yes, that might actually be a useful thing to do.
@kimlockhartga I usually don´t see stuff like that bc a) as you say, I´m not the target and b) bc the work all you mods and adms put in every day.
My wife just liked and commented an anti-nazi post on facebook the other day and the messages she got ranged from kill yourself to actual threats.
Is it just me or is this actually getting worse by the day?
Anyway, I´m sorry for everyone who has to deal with this shit and immensely grateful for everyone moderating it.
@kimlockhartga Do it, for sure. I would never say the "Really?" part but no, I never see these posts. For technical reasons, possibly?
But yes, show us the replies. Let us report these people.
it occurs to me that moderated registration has another benefit: reducing moderation load.
yes; reducing.
if your mod team is at capacity, the last thing you need is the doors wide open for any number of new users. if you're having trouble keeping up with new account requests, good! let them lie fallow, because you clearly don't need more users to moderate right now!
an excellent analysis
I'd add one addendum for those in the audience who want a low effort policy that's more aggressive
There is another option much more heavy-handed -- toward "innocent" and "guilty" alike. One common to servers including mine:
By referral, after referrer has been registered X months
The number who accidentally invite someone who doesn't share culture and values of the place is very low
And if fedi shows anything imo, it's that this scales better than many think
One of those "yeah one possible answer is literally in front of you" moments isn't it? hahaha.
Noted. Account migration is certainly one of these things that seem incredibly cumbersome so we'll work towards that in the near future
What about hellbanning AKA segregating the ab-user into their own mirror chamber where they can see and "interact" as normal, but only fellow hellbanned can actually interact?
That would be in lieu of a banned account.
I dont know. I dont visit Shitter.
I was thinking of what Hacker News does to people who post socialist/communist thought. Hellbanning.
True but the fash will play along and be nicey nicey. Bouncer says yes. Wash rinse repeat, ala nazi bar.
Whereas if theyre identified as fash, their account isnt deleted.
Its just reduced engagement to other fash. Most dont catch it. They get bored cause nobody interacts, and they go away for real, without spamming account after accuont.
Nope, cause I never saw it until I opened your post on your homeserver.
Mastodon sync bugs :/
So, there was a post on the fedi about a project Johnny Harris was working on. Some people in that thread seemed to think that he was untrustworthy, even going so far as to posit that he might be a CIA asset. I had no idea why they believed this, but it was echoed by more than one person.
I am familiar with Johnny's work. He always seems to do a good job of citing his sources (at least to my casual inspection). I asked about this distrust but received no response. Perhaps they thought I was sealioning?
So, I'm asking here: Is there an actual valid reason to distrust him that I'm simply not aware of, or is just stemming from the fact that he likes to shine light on things that some would rather not have light shined on?
If a Klein bottle could wear pants, would it be like this or like this?
#mathstodon #math #maths #shitpost
like this
calvin 🛋️, mike, pat and Jonathan Lamothe like this.
reshared this
aburka 🫣, Bernie Luckily Does It, Eugen Rochko, Cat 🐈🥗 (D.Burch) , Mr. Banksy Dude 🫠, EmpathicQubit, Mx. Luna Corbden 🐸, Jonathan Lamothe, Shannon Prickett, 🇺🇦 haxadecimal 🚫👑, Boyd Stephen Smith Jr. and pizzapal reshared this.
Auf YouTube findest du die angesagtesten Videos und Tracks. Außerdem kannst du eigene Inhalte hochladen und mit Freunden oder gleich der ganzen Welt teilen.Numberphile (YouTube)
According to this important research;
"He killed the noble Mudjokivis.
Of the skin he made him mittens,
Made them with the fur side inside,
Made them with the skin side outside.
He, to get the warm side inside,
Put the inside skin side outside;
He to get the cold side outside
Put the warm side fur side inside.
That’s why he put the fur side inside,
Why he put the skin side outside,
Why he turned them inside outside."
Which means exactly why you imagine it means!
that's an easy question
all you have to do is define the inside and the outside
...
...
😱 😱 😱
pizzapal reshared this.
Auf YouTube findest du die angesagtesten Videos und Tracks. Außerdem kannst du eigene Inhalte hochladen und mit Freunden oder gleich der ganzen Welt teilen.Pentatonix (YouTube)
I bet Matt Parker would be into this, and/or Sarah-Marie Belcastro, but definitely have a look at this (Matt and Katie Steckles) from a long time ago
youtube.com/watch?v=GGlmppx-2M…
Auf YouTube findest du die angesagtesten Videos und Tracks. Außerdem kannst du eigene Inhalte hochladen und mit Freunden oder gleich der ganzen Welt teilen.The Aperiodical (YouTube)
Or maybe Steve Mould and Matt Parker did some stuff here.
Matt is totally into Klein Bottles and topology in general. He may or may not be good at responding to direct questions, however.
Sensitive content
And—ICYMI—there’s also this:
mapstodon.space/@pinakographos…
A warning for Adobe #InDesign users. I recently updated my copy, and after preparing a document, the recipient of that document sent me the alt text that popped up on one of their figures. Apparently, by default, InDesign uses AI to generate (often hilariously wrong) alt text for images.
this reminds me of my favorite mathexchange question: “why can you turn a shirt inside out” which required a graduate-level topology explanation
My nephew was folding laundry, and turning the occasional shirt right-side-out. I showed him a "trick" where I turned it right-side-out by pulling the whole thing through a sleeve instea...Mathematics Stack Exchange
@bleeptrack maybe ask Adobe mapstodon.space/@pinakographos…
A warning for Adobe #InDesign users. I recently updated my copy, and after preparing a document, the recipient of that document sent me the alt text that popped up on one of their figures. Apparently, by default, InDesign uses AI to generate (often hilariously wrong) alt text for images.
I don't think it matters, as long as it's covering up the genitals
mapstodon.space/@pinakographos…
@pinakographos@mapstodon.space
A warning for Adobe #InDesign users. I recently updated my copy, and after preparing a document, the recipient of that document sent me the alt text that popped up on one of their figures. Apparently, by default, InDesign uses AI to generate (often hilariously wrong) alt text for images.
how do you ping an entire instance
jorts.horse needs to see this
reshared this
#today and Digital Mark λ ☕️ 🕹 👽 reshared this.
@Digital Mark λ ☕️ 🕹 👽 Well, there's an entrance exam for a job I need to study for so that I can continue to pay for internet (and by extension, access to thr VR). 🙃
Apparently the one I did earlier was only the prequalification exam.
I just saw a Wal-Mart greeter shrink wrapped to a chair, holding a jar, trying to raise $50 for... something I couldn't read.
Dear Wal-Mart,
You're a billion dollar multinational corporation paying your employees the least you can possibly get away with. Why is this necessary?
Chris Ford reshared this.
reshared this
Shannon Prickett and Dennis reshared this.
like this
juliadream likes this.
like this
god damn gremlin and Todd Sundsted like this.
reshared this
Judy Anderson, god damn gremlin and Daphne Preston-Kendal reshared this.
I don't think programmers and sysadmins get how much there is to learn and how intimidating it is for normal people to host their own software.
For one most of us don't have a computer that is running 24/7, which means we need to rent a server which we have no idea how to go about doing.
And then there's an entire arcane art to running software that can speak to the internet without your server being taken over and used to send spam to half the planet
reshared this
Shannon Prickett and Jonathan Lamothe reshared this.
Yep. Speaking as someone who only started scratching the networking side pretty recently, it's just as hard as learning to code, and that includes the underlying logic.
Once you *know* it seems obvious, but if you don't? Whoooooooof.
thanks this is uplifting. I have been coding and setting up all sorts of servers for decades. One forgets that it is something one had to learn just because it was out of curiosity and for the love of it.
There probably are quite a few people trying to make a business in that niche though. I suspect they are hard to find with margins too small to afford much ad-spend.
So for me it would be a question of how to find customers.
@hc I think a community maintained index would be excellent for that sort of thing, or something similar to what TeamSpeak has where they've got a map of all the TeamSpeak hosting companies and you can just click on the city and find who as a server in that city.
TeamSpeak's map is very out of date, but I was still able to find and pay for a hosting provider with it
@Canageek I think the service that comes the closest to this is yunohost, though I've had a look at them and I don't know that they're quite to the level you describe.
Also, even if someone does pull this off, they need to have competitors and the ability to easily transfer from one to another, otherwise the enshittification process is almost guaranteed to set in eventually.
I'd love to set something like this up myself, but while I have the time and expertise, I don't have the necessary capital.
Canageek likes this.
@Canageek There are tools for doing that sort of thing... but there's no standard way of doing it. Vagrant and Nix come to mind.
But I don't think anyone's currently actually doing this. Nobody wants to make it easy for their users to leave their service, which is understandable, I guess, but...
@me weirdly TeamSpeak does this, they've made it incredibly easy to move from one hosting provider to another and maintain all your settings.
I don't necessarily like the way they've done this, which is all of your settings sync TeamSpeak's servers, not your hosting providers, apparently it works quite well
Jonathan Lamothe likes this.
I do think that self-hosting should be done by your home internet router.
I mean:
- computer with 32 bit CPU and Linux, check
- 100Mbps uplink, check
- IPv6 address, check
@glent I'm skeptical that most of them have ip6 addresses. They really should but whenever I check, especially with budget ISPs they don't...
Also, that's a much faster upload speed than just about anywhere I've ever lived
As a sysadmin and someone who self hosts a lot, you'll get really tired of being your own sysadmin and want things to just work. It's not all it's cracked up to be.
That's why there are companies out there trying to solve it, like Umbrel.
Hey Fedi,
For those who don't know, my mother had a major #stroke a little over a month ago. We're very fortunate to live in a country (Canada) where we have free #healthcare, but as her discharge from the #hospital looms closer, we're having to raise funds to make #accessibility modifications to my parents' home so that she can return. Boosts are welcome (and appreciated).
reshared this
Kevin Davy, André Polykanine, GreenSkyOverMe (Monika), Allison Meloy, Jonathan Lamothe, silverwizard, cs, xmanmonk, Barbara Monaco, Words are Wind 🇺🇦 🏳️🌈 and Daniele10 reshared this.
Him: well what's your big brain idea to eliminate food assistance fraud?
Me: universal food assistance
Him:
Me: because there wouldn't be a system to cheat, everyone would just get a check
Him: and who does that benefit?
Me: family farmers and human beings who rely on food for nutrition
Him: what about rich people?
Me: what about them?
Him: you would give them food assistance too?
Me: that's what universal means
Him: you can't do that
Me: yesterday you said I couldn't tax them and now you won't let me feed them either?
Him: they can afford food
Me: then it should be fine to tax them
Him: but if you tax them they won't have as much money
Me: I'm willing to offer universal food assistance
Jonathan Lamothe likes this.
reshared this
Urban Hermit, Looking for explanations…, Darcy Casselman, Bernie Luckily Does It, Jonathan Lamothe and Boyd Stephen Smith Jr. reshared this.
I like the conclusion. "Aw, the poor billionaire would have less money? Don't worry free food assistance!"
The government says an adult needs $297 to eat for 1 month, and I have found this to be 100% adequate in my state (yes I am on SNAP right now).
I am pretty sure a billionaire sometimes tips an amount bigger than that just to impress someone.
Urban Hermit reshared this.
reshared this
Urban Hermit and Bernie Luckily Does It reshared this.
I started my young adult life without a car. There is bus service in the city I lived in, but carrying groceries on the bus usually meant 2 bags of groceries at most, so a lot of canned and dried foods.
Now I have a car and can buy 5 bags for 2 weeks, and fresh produce is 80% of my shopping trip and is not only healthier, but cheaper.
Buying a 5lb bag of potatoes and 3 lb bag of onions is a cost savings, but one you have to have a little privilege for.
reshared this
Urban Hermit and Bernie Luckily Does It reshared this.
@Extra_Special_Carbon I might have had some of the milder food allergies, like gluten, but at that age and minimum wage I just had chronic inflammation, obesity, swelling, and I spent my whole life not knowing I wasn't absorbing Magnesium and Iron because of it.
Caring about my health was a luxury I couldn't afford, and other people judging me thinking I was lazy was a thing I couldn't help.
It will probably shorten my life by 20 years.
reshared this
Urban Hermit and Bernie Luckily Does It reshared this.
@MaierAmsden @Extra_Special_Carbon I was in a similar way. Putting a can of tuna in raman was fancy and a way to get some protein in when I could afford it.
The number of times I tried to substitute something, like mayo, for expensive milk and butter in generic mac and cheese. Yeach.
The barely meat $1 bag of hot dogs - 1 hot dog, removed and cut up, to "spice up" a pot of mac n cheese.
So much macaroni, which I am probably allergic to, and so much cheese powder.
Not good times.
Urban Hermit reshared this.
@MaierAmsden @Extra_Special_Carbon yeah, 5 years in and a few raises, plus getting a car which caused my employer to jump my pay by $1/hour (suddenly they knew I could drive to some better job) and I could afford to hit those super cheap Chinese buffets.
So much sweet and sour "meat".
Eating healthy was a thing I had to be able to afford more than a decade later.
Urban Hermit reshared this.
@Jake_Shelton @BernieDoesIt @MaierAmsden @Extra_Special_Carbon
Now that I have good transportation, a 5 lb bag of potatoes and 3 lb bag of onions is the base most of my cheap meals are built on.
I felt so much better eating potatoes that I recently confirmed I have been gluten intolerant for decades, and am now learning how to eat all over again.
Urban Hermit reshared this.
@Urban_Hermit 300 is like 10% of my income. Yeah, I'm doing well. 300 is like 0.001% of the income of a billionaire.
if it means no one is left behind, I don't see an issue with giving to those who don't need it and won't notice it.
Urban Hermit reshared this.
@Urban_Hermit
It's ridiculous to me that we have the ability to feed everyone and we won't because a bunch of people that aren't rich are so worried about the few who are.
If capitalism requires hungry kids, I don't need it.
reshared this
Bernie Luckily Does It reshared this.
Impenetrable.
Wait until these skeptics hear about the tax breaks that all these wealthy folks also don't need
@wendynather Means Testing is always *always* a bad approach. It comes from the same reflex "what if someone undeserving benefits from this" that led to our whole "money=virtue" problem in the first place, and it is the ruination of many good ideas.
Repeat this until you see it behind your own eyelids: The *most efficient* way to help everyone who deserves it, is to help *everyone*.
True ... also, less bureaucracy.
But it's one the LPC™ entrance exam!
@Alsy @ferrix @wendynather I do
Sales tax is regressive
Consumptiontaxes are the only taxes the rich pay, so not all bad
Balancing consumption taxes with universal dividends is my favorite transfers policy
Hopefully someday the rich will realize that at some point the increasing wealth gap creates an unstable society, endangering their position. Just ask Marie Antoinette.
At least here in the US I am not going to hold my breath waiting for that.
Sensitive content
yep, the same rich people keep yelling about overpopulation, yet have 21 kids somehow to spread their wealth between, somehow dodging inheritance taxes. if there was overpopulation that would just be a symptom of us not actively trying to just feed everyone.
If the tax curve actually was exponential to some degree (there's probably a better curve here, idk maths that well) we could likely easily feed, house and insure every single lifeform on this planet to at least a basic degree that is comfortable to live under for everyone. Anyone who wants more can work for it, anyone who wants to be excessively rich can deal with diminishing returns.
That is a great idea. Problem being that this has been brought up for decades if not centuries. It is a myth that you can implement progressive change in a regressive system. The only really progressive changes like the 8 hr workday and five day workweek and womens voting rights and abortion have been brought because the soviets made it law (most of those they did first, they also had the first female minister on the planet).
You are being lied to.
If you tax anyone, they won't have as much money. This isn't the argument Him thinks it is.
The usual trope, "But then the rich won't create more jobs." Wake the hell up they're cutting jobs as you read this, AND they just got a huge tax break.
The rich build their mega yachts, compounds, and bunkers, not because they can but because they are afraid what might happen if they don't.
like this
N. E. Felibata 👽 likes this.
Are there any #Lisp programmers out there who use a #ScreenReader? Given how messy Lisp can be to read without proper indentation (which I imagne wouldn't translate well on a screen reader) I can't see it is being an easy language to work in without being able to see it.
I've been thinking about a way to make an editor that lets you explore a Lisp program by walking through the forms in the program in a manner similar to the way one might navigate in a MUD. Is this a crazy idea, or one with some merit?
I can imagine making a screen reader for lisp would be doable. Instead of close parenthesis it could say close defun, and instead of open parenthesis it could say open, then the function name. The rest of the language would be decently adapted.
It might still be hard to understand complex expressions though.
like this
((( David "Kahomono" Frier ))) likes this.
Justin To #НетВойне reshared this.
Can anyone recmmend a FOSS solution for converting an .azw file to .epub on Debian that isn't Calibre?
I thought maybe pandoc could do it, but apparently not.
Justin To #НетВойне reshared this.
Oh, this bottle of coconut water has "no added sugar"; I wonder if it's okay for my diabetes?
*checks the macros*
(It's roughly equivalent to a can of coke.)
*drinks it anyway*
A question for the #lisp folx:
What, if anything, is the difference between #'(lambda ...) and just plain (lambda ...)?
They seem functionally equivalent to me.
(lambda lambda-list [[declaration* | documentation]] form*)
== (function (lambda lambda-list [[declaration* | documentation]] form*))
== #'(lambda lambda-list [[declaration* | documentation]] form*)
Seemingly plain (lambda () ...) is a macro that expands to (function (lambda () ...)). #'(lambda () ...) uses a reader macro to expand to the same (function (lambda () ...)).
clhs.lisp.se/Body/m_lambda.htm
Function is a special operator that returns a function. It takes either a function name or a lambda expression. The second case is what is happening here.
clhs.lisp.se/Body/s_fn.htm#fun…
A lambda expression is a list of the symbol lambda, a lambda list, and a body.
like this
silverwizard likes this.
I've been taking a bunch of tests to qualify for a transcription job. They're not easy and I need a perfect score to pass. I finally failed one of the tests but managed to pass it on the retry.
They're really picky about their style guide. Fortunately, it basically amounts to syntax rules and I've been dealing with compilers that are equally picky about syntax for decades.
It also helps that all throughout my schooling my mother worked at the local university proofreading research scientists' papers and she insisted on proofreafing all my essays too.
I never thought I'd end up being happy about that.
So the cooldown period for me to re-take the exam is over. They want me to redo The. Whole. Damn. Thing.
Fine, whatever. It'll take me a few days to get through it all, but I don't expect to fail again.
Given how their style guide is now permanently burned into my brain, there's a tiny vindictive part of me that toyed with the idea of spinning up a competing service. That's probably more throuble than it's worth, though.
I see now why they're always hiring. I wonder how many people get to the prequalification exam and then just decide it's not worth it.
After a closer review of the style guide, I have come to realize that the question I was repeatedly getting wrong was one that wasn't even on my radar as a candidate. I misremembered a stupid trivial detail from the guide.* I was rabbit holing on the wrong two questions, one of which I still maintain can be argued to have two correct answers, but I now know which one they're looking for.
Not looking forward to sinking another ~5 hours on this thing.
* That would have had virtually zero impact on my ability to successfully do this job.
I passed!
Now I have to wait for them to determine whether or not they think I cheated. I didn't, but if they think I did, that's what matters. I can't see there being a reasonable appeals process for that.
@🇨🇦 CleoQc 🍁🦜🧶🚐🌈 It's a legal transcription job. They do regular transcription too, but they have AI doing much of it, so they're not looking for new people there.
They're smart enough to realize that AI isn't currently sophisticated enough to properly follow the various style guides required by their legal clients. I guess they realize that if the quality of the work drops, they'll lose the contracts.
That said, I'm sure all the work I do is going to be used to try to train an AI to replace me, but that's probably true of any job at this point.
Judy Anderson reshared this.
like this
Joseph Teller and Guy Geens like this.
Digital Mark λ ☕️ 🕹 👽 reshared this.
Got my hands on a #shortwave radio, but the fact that I live in a giant concrete box doesn't seem to be helping my reception. Seeing what I can do about that.
Are there any broadcasts that are worth catching that I'd be able to get in Southern Ontario?
Kevin Davy reshared this.
reshared this
Jonathan Lamothe reshared this.
This website uses cookies. If you continue browsing this website, you agree to the usage of cookies.
Alexa Devreux-Swift
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •quotequack
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •Infrapink (he/his/him)
in reply to quotequack • • •Why do you spell 'ðe' with a þ?
Eva
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •🅰🅻🅸🅲🅴 (🌈🦄)
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •The goal is to make corporate data less profitable.
Even stuff as simple as setting your birthdate to 1970-01-01 everywhere, adding [TEST] or [DELETED] as your name or account notes anywhere you don't need them to know your name.
Using plugins like AdNauseam to poison ad trackers (and cost them marketing dollars).
Using VPNs set to different locations.
Signing into data broker sites to "correct" outdated info (they'll often let you do that with little-to-no proof of identity, but will require your passport or state ID in order to delete your info). Bonus points if you correct it to someone else's info on their site that's similar to yours.
Only fill in required fields when you sign up for anything, but only provide correct info if it matters for you to use the service, otherwise provide plausible, but incorrect, data.
If you use LLMs anywhere, use the free tier and always vote thumbs up for bad answers and down for good ones. It wastes their resources and drives up their costs while making their training data worse.
reshared this
Mx. Luna Corbden 🐸, Dgar, Valerie Roney, Shannon Prickett, Douglas Edwards, I am Jack's Found 404, 🇺🇦 haxadecimal 🚫👑, 🅰🅻🅸🅲🅴 (🌈🦄), Ember in the Pattern Buffer and Kermode reshared this.
Irene (she/they, Sir/Mr.)
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •scfibblimg notws furiously
For the less savvy among us, tysvm for this helpful advice 🙏
The Orange Theme
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •reshared this
Shannon Prickett and I am Jack's Found 404 reshared this.
🅰🅻🅸🅲🅴 (🌈🦄)
in reply to The Orange Theme • • •reshared this
Shannon Prickett and I am Jack's Found 404 reshared this.
Emily_S
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •@theorangetheme I once built a fuzz testing tool that "randomly" shuffled input around and tested it against things. "does my input validation survive utterly batshit inputs?"
Feeding the inputs through something like that would make sure they can't cache answers.
Nicky Donna
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •jz.tusk
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •@theorangetheme
Distant memories of hooking together two ELIZA instances...
Michael Gale
in reply to The Orange Theme • • •Chris
in reply to The Orange Theme • • •Дими́трий
in reply to The Orange Theme • • •'and then?'
Nicky Donna
in reply to The Orange Theme • • •🅰🅻🅸🅲🅴 (🌈🦄)
in reply to Nicky Donna • • •@nickynah them's just good manners! I find it's also helpful to upload my favorite random cat photos until I hit the attachment limit. I mean, who doesn't like cat photos?
@theorangetheme
I am Jack's Found 404
in reply to The Orange Theme • • •Philosophy!
I am Jack's Found 404
in reply to I am Jack's Found 404 • • •Context:
xkcd.com/903/
(see the hidden alt text 😀
Extended Mind
xkcdIghostrider
in reply to The Orange Theme • • •Irene (she/they, Sir/Mr.)
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •scribbling notes furiously
For the less savvy among us, tysvm for this helpful advice 🙏
🅰🅻🅸🅲🅴 (🌈🦄)
in reply to Irene (she/they, Sir/Mr.) • • •@Irenetherogue sure! There are low tech ways to do it—just lie...to every corporation, app, and marketer you can. Make it plausible, but wrong.
Bonus: include something wildly implausible once in a while. It makes folx more likely to overlook the subtle ones.
reshared this
Shannon Prickett and 🅰🅻🅸🅲🅴 (🌈🦄) reshared this.
Boggin
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •@Irenetherogue I got off when taken to court for nonpayment of Poll Tax (Thatcher thing, yes, I'm that old) because I poisoned their data by missing out a crucial box on the form.
Don't refuse to comply but *always* sabotage their data. It's simply costs them more.
🅰🅻🅸🅲🅴 (🌈🦄) reshared this.
MostlyTato
in reply to Boggin • • •Back in the nineties I'd pay my phone bill by cheque. BT would charge me an admin fee, that eventually topped £7.50 just to cash a cheque. Of course they wanted to bully me in to paying via Direct Debit.
So I made all my cheques out to 'Bastard Telecom' and didn't sign them. I thought I was being very clever, forcing them to hustle for their fee.
But they just went and cashed them anyway! No idea how as they were unsigned... 🤔
Earthworm 🐌
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •@Irenetherogue
Haha, you'd like my mother, the guerilla witch. She makes customer cards in every shop and switches them then with other people, bonus points if both have a strongly different consumer profile.
When she's bored, she responds maliciously questionnaires of evil corporations.
She studied psychology and statistics and says "it is anyway horribly difficult to get useful answers out of these marketing datasets, why not make it a bit harder for them?" 😈.
🅰🅻🅸🅲🅴 (🌈🦄)
in reply to Earthworm 🐌 • • •@earthworm TIL I have a second kid.
My education is in psychology and statistics, and I do shit like that whenever I can.
@Irenetherogue
Dopes The Frogman
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •Numerfolt
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •If you're selfhosting, have a look a iocaine: iocaine.madhouse-project.org/
If you upload pictures, maybe nightshade would be the right tool: nightshade.cs.uchicago.edu/use…
iocaine - the deadliest poison known to AI
iocaine.madhouse-project.org🅰🅻🅸🅲🅴 (🌈🦄) reshared this.
Tanguy ⧓ Herrmann
in reply to Numerfolt • • •@Numerfolt yeah, we need to switch to offensive mode.
That makes me want to create a nightshade fuse FS.
So when you want to upload the image from your picture folder, it nightshades it on the fly.
Poul-Henning Kamp
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •We should tax corporations by the GigaByte of storage the own.
It doesn't matter what they use it for, it should have a tangible yearly cost, to make them think about how much they store.
Hippo 🍉
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •🅰🅻🅸🅲🅴 (🌈🦄) reshared this.
Penguin Rebellion
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •Wrt #PII, It might be a good idea to avoid entering data easily identifiable as trash, and use generators instead. E.g.:
Get a whole new identity at the Fake Name Generator
www.fakenamegenerator.com🅰🅻🅸🅲🅴 (🌈🦄)
in reply to Penguin Rebellion • • •@penguinrebellion that's why I said plausible, but fake.
Generators are good though.
There are, however, reasons to enter something wildly off every so often, like "test@example.com", because it tells companies that field is obviously fake. This both makes the plausible fakes more likely to slip by if they do use your data, but also makes them more likely to discard your data for marketing and analytics purposes in general.
McCrankyface
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •"Mediocre Bunny" Evelyn
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •Is there something special about 1970-01-01, or is it just an example of an arbitrary incorrect birthdate? Would it foul things up just as much if I entered, say, 1984-04-01?
Patrick Dersjant RCX
in reply to "Mediocre Bunny" Evelyn • • •Diego Martínez (Kaeza) 🇺🇾
in reply to Patrick Dersjant RCX • • •@patrick @Gorfram
It should be noted that there will be something similar to the Year 2000 Problem somewhere in 2038: the common way to represent time, seconds since 1970-01-01 00:00, as a 32 bit number, will wrap around and make computers think they're in the past.
Hopefully(?) we learned from Y2K and are preparing for that event already.
en.wikipedia.org/wiki/Year_203…
Year 2038 problem - Wikipedia
Contributors to Wikimedia projects (Wikimedia Foundation, Inc.)Patrick Dersjant RCX
in reply to Diego Martínez (Kaeza) 🇺🇾 • • •🅰🅻🅸🅲🅴 (🌈🦄)
in reply to Patrick Dersjant RCX • • •@patrick 🫂
@diegomartinez @Gorfram
Raindrops and Roses
in reply to "Mediocre Bunny" Evelyn • • •🅰🅻🅸🅲🅴 (🌈🦄)
in reply to Raindrops and Roses • • •@raindrops_and_roses mendeddrum.org/@patrick/116261…
@Gorfram
Patrick Dersjant RCX
2026-03-20 11:47:34
Raindrops and Roses
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •swggrkllr3rd
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •Mastodon
mastodon.worldApriloq - Please Use Alt Text
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •🅰🅻🅸🅲🅴 (🌈🦄)
in reply to Apriloq - Please Use Alt Text • • •@apriloq that's easy! They all do!
But they're also very incestuous, so poisoning one will often cause a trickle down their pantleg to the next one who is thirsty for your data.
An easy way to start finding targets is to google your name, then explore the links you didn't sign up for.
Sites like:
- Spokeo
- BeenVerified
- Intelius
- TruthFinder
- MyLife
- Whitepages
github.com/optery/optery-data-…
GitHub - optery/optery-data-brokers-directory: Welcome to Optery’s open-source directory of data brokers and opt-out information, the largest of its kind.
GitHubApriloq - Please Use Alt Text
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •🅰🅻🅸🅲🅴 (🌈🦄)
in reply to Apriloq - Please Use Alt Text • • •isol
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •I've been using mobile phone numbers from the list of numbers reserved for creative works (in Australia), when a form requires me to enter a phone number.
acma.gov.au/phone-numbers-use-…
DJ Toebeans
in reply to isol • • •I often use 867-5309. Tell Jenny I said hi!
🅰🅻🅸🅲🅴 (🌈🦄)
in reply to DJ Toebeans • • •Dec [{()}]
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •@djtoebeans @isol
If anyone needs an easy to remember card number that passes 2 very low bars (Luhn validation and a real BIN), take mine:
407 666 31337 31337
James S
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •Hi, this is relevant to my interests. Is there a full set of instructions available for the data broker part of it or is that something I should just go look up?
Thanks for your efforts so far...
🅰🅻🅸🅲🅴 (🌈🦄)
in reply to James S • • •@resister check out the list of brokers here: github.com/optery/optery-data-…
Removal is a game of whack-a-mole (as they regularly just reimport or purchase data from each other if there's a gap). That's why poisoning is more effective.
GitHub - optery/optery-data-brokers-directory: Welcome to Optery’s open-source directory of data brokers and opt-out information, the largest of its kind.
GitHubJames S
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •James S
in reply to James S • • •🅰🅻🅸🅲🅴 (🌈🦄)
in reply to James S • • •Zavaj
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •🅰🅻🅸🅲🅴 (🌈🦄)
in reply to Zavaj • • •F3715H
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •elle
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •a fair bit of the advice in here seems really good, but from what I know, AdNauseam isn't really worth using over just uBO
at least as of when I last looked into it a couple years ago: it uses more resources on your machine, doesn't really make any significant difference for the companies, and the high volume of "clicks" from you just makes you far more trackable since no normal person browsing would do so
also, I think it might be worth editing the last point to say "hopefully none of you are using LLMs, but if you're someone who does..." 🩵
🅰🅻🅸🅲🅴 (🌈🦄)
in reply to elle • • •@vantiss I have to disagree.
Say I go to Amazon. I use perfect tracking protection and I'm not signed in. I browse for a while, and click every ad they serve me. I've wasted a bunch of different companies marketing money, my click data is worthless, and they don't know what ads to send me. I look like every other AdNauseam user, and they still don't know who I am.
Now say I do the exact same thing, but I sign into Amazon. The exact same thing happens, but they know who I am.
...
And as far as LLMs go, waste their fucking money and resources. Use every free option you can, and take it as an opportunity to poison their feedback. Don't give them any personal info, don't use them for critical questions, just flood them with garbage that pops this bubble even faster.
Even if you don't want LLMs in everything, companies will put them there—unless it burns their wallets. The more we set fire to their AIs, the faster executives will learn it's a bad idea to use them.
Michael Gale
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •Michael Gale
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •when i have to use a web app to order food, e.g. CoolBurgz (fictional) i will always put my email as e.g.
coolburgz@coolburgz.coolburgz
usually counts as valid.
Chip
in reply to Michael Gale • • •pockets
in reply to Michael Gale • • •Sensitive content
@miclgael
Wherever possible, I'm using my duck addresses, because all too often they send a confirmation link they need you to click.
Some places have the domain blacklisted, but not all of them.
@alice
saucytina
in reply to Michael Gale • • •@miclgael
Some shops umm...decline...take-away orders without a name. The POS* computer insists on one. I give them a completely random word or number. Works fine.
@alice
*(POS also stands for, ¨Point Of Sale¨)
mike morris
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •AJ Sadauskas
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •NULL is also a good answer for when you don't want to give out a particular personal detail.
Aside from phone, date of birth, and email, most of the time the front end form fields will accept NULL as an answer.
en.wikipedia.org/wiki/Null_(SQ…
Null (SQL) - Wikipedia
Contributors to Wikimedia projects (Wikimedia Foundation, Inc.)Tzimisce Flesh
in reply to AJ Sadauskas • • •You probably won't pull a Bobby Tables off on Facebook.
Rabidchaos
in reply to Tzimisce Flesh • • •Agnieszka R. Turczyńska
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •Alan Langford 🇨🇦🧤🧊摏
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •Ripp_
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •given that the alternative approach is to complain to them that collecting my postcode violates GDPR as they don't need it, just to have them say they'll fix it then they don't
I think I'm going to keep entering ZZ9 2ZA for postcodes
GinevraCat
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •I thought everyone had a standard "birthdate" that they used when asked on the internet.
I was clearly just using the wrong one.
Nuclear Oatmeal
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •The 500 Hats of LambdaCalculus
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •kit
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •Stijn van Drongelen
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •unlofl [Promoted Toot]
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •I've got an insidious one, I may end up working on an ecommerce thing with a friend selling parts.
This will involve a lot of compatibility data, partly scraped from supplier catalogs, partly from human knowledge and testing on older vehicles where there isn't easily available anything.
Obviously we don't let the machines have that, and we can subtly scramble it. We can help make sure AI is the dumbest failure of a mechanic there ever was, and sells people the wrong spark plugs.
James Bartlett
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •Agreed on all points except one: If you're providing incorrect data to poison the data broker's systems, please don't just type in a "random" email address unless you're confident that it's not someone's real email address.
On any given day, I receive about a dozen emails from various websites where an email address was required for registration, and someone typed in my email address while providing their "fake" info. Pizza order receipts, airline flight confirmations, golf tee time registrations, etc.
The worst part is that these are misdirected, but otherwise legitimate emails, so I can't just mark them as spam, because that will poison the spam detection algorithm's dataset.
So yeah, if you're gonna type in a fake email address, please make sure that it doesn't belong to someone first, and the easiest way to do that is to use a nonexistent domain, preferably one that no one would ever register, like "${random_guid}.com"
🅰🅻🅸🅲🅴 (🌈🦄)
in reply to James Bartlett • • •ShadSterling
in reply to James Bartlett • • •@JamesDBartlett3 those are spam, and should be reported as such. Any system that doesn’t validate email addresses before adding them to a list will be used maliciously in attempts to overwhelm target email addresses by signing them up for every vulnerable mailer.
Also, the more complaints that buyers get as a result of buying data from brokers, the less the data is worth. I wouldn’t worry about a made up address I use once happening to be real
Sephster
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •🅰🅻🅸🅲🅴 (🌈🦄)
in reply to Sephster • • •@sephster not really, and they just reimport or repurchase it from somewhere else like a month later anyway.
That's why I encourage poisoning it for them instead. Then they pass around your tainted data to each other.
Charo del Genio
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •🅰🅻🅸🅲🅴 (🌈🦄) reshared this.
Frikisada
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •oh I've kind of done that since forever, but using the same fake data
Once I had to recover a password and when I was chatting to the person on their end they were "oh, it seems like you didn't give us truthful info for your home address" and I gave it back down to the post code 💀
niq
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •The system really only knew one of the words and the second one was basically put there so you could be the text recognition system for Google digitizing some media. Once you knew what to look for you could see which word the system did not know because it was distorted in specific ways and you could input any poison data you liked.
🅰🅻🅸🅲🅴 (🌈🦄) reshared this.
Bernard Sheppard
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •My favourite wasting time sport is only wrong answers to Google Maps questions.
If I have been somewhere really good - like a great restaurant or cafe, I won't fuck up its data - but if I have been sat at a train station waiting for a train and google asks me questions, then, yes, I will answer:
I *would* recommend this place for a children's birthday party.
It *does* have a volleyball court.
I *would* recommend buying tickets in advance.
🅰🅻🅸🅲🅴 (🌈🦄) reshared this.
Don Hawkins - W7DAH
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •Sensitive content
Flowermob
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •🅰🅻🅸🅲🅴 (🌈🦄)
in reply to Flowermob • • •@Flowermob lgbtqia.space/@alice/116262387…
🅰🅻🅸🅲🅴 (🌈🦄)
2026-03-20 16:14:08
Oliver Vanderb
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •🅰🅻🅸🅲🅴 (🌈🦄)
in reply to Oliver Vanderb • • •Damon L. Wakes
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •(^^)
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •iocaine 3.3.0 - Docs.rs
docs.rsSimon 🇳🇿🐮
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •His AWS account has been deleted 4 times now, because someone at AWS thought it was a bug 🤣
Stephanie 🎀
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •🅰🅻🅸🅲🅴 (🌈🦄)
in reply to Stephanie 🎀 • • •Artemis
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •Kermode
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •e.g., if you for some reason had a website that wanted my email, I'd give you like lgbtqia@klemtu.ca. You could send me and I could click to confirm.
I know that not everyone can do this for Reasons, but if they have friends who can...
Making email addresses costs nothing.
@marcia
Wurzelmann
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •Great advice! I also love using my password manager to save "answers" to security questions.
"Maiden name of mother"?
Easy: "fdsdkljf89rtu23he4orhweörfwer0weh334h234234"
"First dog's name"?
Ah, little "dfshfsdfui6z43207r2phreuihdesfs7d89fsdfsd9fsfdf" was so cute!
Jef Poskanzer
in reply to Wurzelmann • • •🅰🅻🅸🅲🅴 (🌈🦄)
in reply to Jef Poskanzer • • •@jef I've had that happen before, and they were like "what's your secret word?" and I was like "is it like a paragraph of random letters?", and he was like "yeah" and then moved on without me reading them out.
@wurzelmann
Lefty
in reply to Wurzelmann • • •"We called him Diffy."
🅰🅻🅸🅲🅴 (🌈🦄)
in reply to Lefty • • •@Lefty and he was a hell of a man.
@wurzelmann
Zoé Cassiopée ✨
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •Steven (but a Goblin) 💚
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •These posts all remind me of a 20 year old Canadian novelty song.
"You see now Wal-Mart thinks I'm 75 year old pensioner
And Sony thinks I'm a single mother of 10
The airline company thinks I make 700-grand a year
And Visa thinks I'm an Inuit woman named Ben"
youtube.com/watch?v=7eIUOUfhoJ…
3 dead trolls - The privacy song
PirateLyfe1 (YouTube)robcornelius
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •The Great Llama
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •Flipper 🐬🏳️🌈
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •F3715H
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •The Mighty Git
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •Kirtai 🏳️⚧️
in reply to The Mighty Git • • •Reminds me of someone who had the last name "Null" and had similar problems.
Дими́трий
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •ross
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •🅰🅻🅸🅲🅴 (🌈🦄)
in reply to ross • • •@rossthelesser lgbtqia.space/@alice/116260091…
🅰🅻🅸🅲🅴 (🌈🦄)
2026-03-20 06:30:16
luca
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •Tobias 🌒🌕🌘
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •Jason Parker (he/they)
in reply to Tobias 🌒🌕🌘 • • •Alex(ithymia)
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •Not a good idea to poison Data - last time someone did that, he wrote bad poetry.
reshared this
🅰🅻🅸🅲🅴 (🌈🦄) and I am Jack's Found 404 reshared this.
Veronica Olsen
in reply to Alex(ithymia) • • •@alex I have the extended version of that in my "pictures from the internet" folder. 😁
reshared this
I am Jack's Found 404 reshared this.
Mason Loring Bliss
in reply to Veronica Olsen • • •@veronica I still chuckle at this one:
reshared this
🇺🇦 haxadecimal 🚫👑 reshared this.
Veronica Olsen
in reply to Mason Loring Bliss • • •David
in reply to Veronica Olsen • • •@veronica @alex
Now we have:
jimfl
in reply to Alex(ithymia) • • •@alex Big Data Pipe
Ken Butler
in reply to Alex(ithymia) • • •Unixorn - 90% Snark by weight
in reply to Alex(ithymia) • • •@alex
Here's a version I have
gabboman the wafrn dev
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •Sorry accidentally poisoned cuzco instead
#With-the-poison #the-poison-for-cuzco #the-poison-made-specifically-for-cuzco
quangobaud
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •*keeps Data in a safe place far away from Alice*
#FullyFunctionalAndProgrammedInMultipleTechniques #FullyFunctional
Mad Engineering
in reply to quangobaud • • •Mx. Eddie R
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •bent0_b0x 🏴☠️🏳️🌈
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •"' or 1=1"
Vio
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •🅰🅻🅸🅲🅴 (🌈🦄)
in reply to Vio • • •Vio
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •Felis_Catus_Domesticus
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •Delete your google ad ID.. and YES google has assigned you one EVEN IF YOU DON'T USE ANY GOOGLE SERVICES OR PRODUCTS.
privacysavvy.com/security/safe…
How to Disable Ad Tracking on All Devices in 2026
Abeerah Hashim (PrivacySavvy)I am Jack's Found 404 reshared this.
Aprazeth
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •Options available:
- NULL
- NaN
- object.Object
- '�' (Unicode question mark when parsing fails or breaks)
More palatable names:
- John Smith
- Jane Doe
- Alex Johnson
Mix and match as needed, add junior or senior. Otherwise search for "common names <country>" if you want to twist things around.
RightSprung will not comply
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •I wonder how well 'glaze' and 'nightshade' are working against the newer iterations of AI. When I was still on IG, a few years ago, I was using them on all my images I posted while doing an online life-drawing course.
glaze.cs.uchicago.edu
Glaze - Protecting Artists from Generative AI
glaze.cs.uchicago.edu🅰🅻🅸🅲🅴 (🌈🦄)
in reply to RightSprung will not comply • • •RightSprung will not comply
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •Oh cool! I wish I had seen your posts sooner!
I toyed with these a while when I was still on WIndows - I just don't post much of anything any more. I deleted my IG and FB and replaced Windows, etc etc etc....
Sue Briccay
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •Data with added gravy. Mmmmm 😋
#Gravy
Mike Siegel
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •@alice
Tall Simon
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •Jonathan Lamothe likes this.
e Riley Casey
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •Darth Osler
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •I had a very strong reaction to that
And I do that
So I'm a hypocrite
Garden Punk
in reply to 🅰🅻🅸🅲🅴 (🌈🦄) • • •@alice