Personal pronouns: 同志 / 同志 / 同志的

  • 41 Posts
Joined 2Y ago
Cake day: Feb 24, 2021


I don’t get it. What’s it supposed to do beyond making me repeat letters? Do you have something that actually explains the intent somewhere?

My favourite IDE is a shell, Textadept for editing, and gdb for debugging.

Time to break out the block cannon. Ain’t no way that I let anything Zuck touches touch my stuff.

This. This right here. For anybody to embrace anything they have to perceive and advantage to them to do so. If you can’t persuade them of such an advantage they won’t do it.

The name is a really weird one. Sounds more like a spreadsheet than a social media application.

A whole lot of misdesigns are only a “small amount of brain power” to use. As your language accumulates these, however, the load builds up.

This also has the extra problem that overloading in general brings with it. What is the result of 3 + "string"? What is the result of "string" + 3? You have to have rules for this. These rules have to be learned. They have to be kept in mind. There is room for error. And of course the way different languages react to them will vary strongly.

For example in Rexx, Python, and Ruby these are errors (and with the latter two the error changes depending on which order). In Awk and Perl the result is 3 in both cases.

Format strings are better than + as concatenation, to be fair, but are still not very good compared to separate concatenation operators. It’s hard to make them type-safe. They separate the value from its location in the string.

Using actual concatenation operators has the advantage of format strings, but add the possibility for type safety. For example in Ada:

    Put_Line("Distance: " & Distance_Value'Image & "km");

See here, & will only concatenate string types. If you want to print something that’s not a string, you have to convert it to a string. This means you can’t accidentally mix types. Further, it’s immediately obvious where a given value will show up in the output. Compare and contrast with the C equivalent:

    printf("Distance: %skm\n", distance_value);

Not only is location of the value obfuscated—trivial to spot here, but in a complicated string it’s very difficult to spot at times. And it’s easy, too, to have the format code not match the value. As this example illustrates. Again, easy to spot in trivial code like this, but horrifically hard in real-world code, especially if the variable type changes.

String concatenation with + is evil. Well-designed languages (Lua, for example, among many others—I’m not calling PHP well-designed!) doesn’t do this.


Because +, in every other context is commutative, but suddenly, in the case of concatenation, it is not. This is an unnecessary cognitive burden for no material gain.

Concatenation can be accomplished by juxtaposition (e.g. SNOBOL4, Rexx, much of the C family tree), by .. (Lua), by . (Perl, PHP), by || (PL/I, Rexx again), by & (Ada, some BASIC dialects), etc. without this added cognitive burden of overloading + for no good reason.


ActivityPub is a protocol. It has no agency.

People can save the Internet. Perhaps with ActivityPub, perhaps with something else.

And here we see the seeds of IRC’sthe Fediverse’s irrelevancy being planted and lovingly tended.

What you just said could have easily been put into the mouths of any number of IRC advocates 20 years ago. Where is IRC now? Remind me.

Because it’s sometimes a ludicrous demand?

Common pattern I see in Mastodon’s … more strident, shall we call them? … advocates:

Poster: I just took a picture of a <insert bird>. Note the red and yellow flash of plumage, in contrast to the more usual green and red. I caught this little darling hopping along the charcoal grey slate walkway I’ve got running through my garden, right next to the <insert flower> you can see at the right side of the frame.

<put picture here>

Strident Twit: WHY YOU NO PUT ALT TEXT!?

Or, worse:


So what, precisely (providing details), would you put into alt text that’s not already in the post? Would you just copy and paste the alt text? When I ask the strident twits this, I generally get vague homilies and blocks.

I think he’s a bit over-hopeful at the fediverse’s prospects, sadly. People will give up so much (like all of their privacy!) for a small amount of convenience.

It’s not Twitter that Mastodon has to seize the moment from. It’s all the other commercial offerings that will inevitably pop up in its place as Twitter crashes and burns.

Disinformation isn’t a genuine thing of concern? That’s a fascinating take, to put it mildly.

With this addendum: “It’s sometimes hard to figure out who the oppressor is and who the oppressed.”

This is nonsense.

I’ve seen more young’uns whining that it’s “too hard” to choose an instance. It’s the young’uns that are used to things being all in one place: one Facebook, one Twitter, one Instagram, etc. The elder Gen-X/younger-Boomer crowd are all very familiar with having to make choices in service providers (because we had choices!). We had to choose telephone service providers, Internet service providers (who weren’t our telephone guys for AGES!), email service providers (often our ISPs, but not always: also our work environments, and third-party suppliers once we’d gone through the change-the-ISP-email dance often enough), etc. etc. etc.

The young’uns are the ones that flock to wherever their friends are flocking this week and have ISP choices they can count on one hand, even after a bizarre gardening accident sheared off a few fingers. Choice has been systematically removed from people in the tech sphere since I was in my teens. Fewer choices in phone configurations, fewer choices in ISPs, fewer choices in email providers, fewer choices in chat systems, fewer choices in …

… until we have the situation where people think of social media sites instead of social media platforms.

Bitcoin and its alternatives could never have been a currency. It’s eminently unsuited to that role. (It’s great for Ponzi schemes, extortion schemes, and other criminal enterprises mind.) And how does “using more energy than a medium-sized nation while doing three orders of magnitude fewer transactions than even ONE payment processor” translate to “energy reform”?

Please, dude, stop being a cryptobro. It’s a really bad look.

US companies not obeying laws in other countries, even when operating there, is by now just a sad cliche.

Public speech has no expectation of privacy. Nobody would find anything wrong with recording a public announcement. If you want to have a private conversation, it’s up to you to hold that conversation privately.

Please let me know where you live and which cafe you frequent. I’ll just stand there while you have a quiet conversation with your SO, my phone recording everything you say. You won’t object, naturally, because it’s a public space and if you didn’t want your romantic conversation broadcast live on Twitch you’d have had it elsewhere, right?

Scraping public text, which is something that’s been widely accepted on the web for two decades …

Saying that “she asked for it; she was dressed like a slut” was widely accepted in the world at large for THOUSANDS of years (and still is in some places!). Until it suddenly wasn’t. In some parts of the world.

Hell, pounding the shit out of someone for being “rude” was (and is) widely accepted for thousands of years. Not all that long ago, in human historical terms, killing someone for talking back to you was not only acceptable, it was required to preserve your “honour” (or whatever other term was used in that space).

Maybe—and just hear me out here—maybe things that are “widely accepted” have turned out to be shitty things, not things to be emulated and amplified.

(Please wait until I’m in your cafe and recording before you respond, though. I want to make sure that thousands of people are listening in.)

If the author is telling the full story…

Key word is the first word there. Everybody who has ever been banned from a site or server in all of the Internet’s history was innocent when they tell the tale.

I think you misread the OP. He’s not saying that he wants surveillance socialism. He’s saying he wants images, music, or media in general that’s attractive that he can point friends to as an alternative to the well-oiled PR machine that is surveillance capitalism.

Basically he seems to be asking for sites that don’t drone eternally about dialectic this and scolding that and instead incorporate socialism and socialist ideology into compelling works of art, is how I’m taking it. And I’m frankly interested in seeing some of that too.

This one line says it all for me:

With the official release of Python 3.11 this October, hundreds of millions of users will now enjoy sorting getting ever so slightly faster.

We will see. When “Quote Toots” come to Mastodon, let’s watch and see if Mastodon turns into a toxic dogpile site. My prediction is that it will (though it will be more left-flavoured than right-flavoured like the Birdsite). Yours is that it won’t.

We’ll let history decide which of us was right. (And if I was right, I’ll drop Mastodon and the Fediverse like I dropped the Hellsite and the Birdsite.)

If they come to Mastodon with the Twitter approach (can’t turn them off, get shoved into my notices) then I drop Mastodon. It’s that simple. Like I dropped Facebook and Twitter before (for much the same reason).

I’ve seen way too many QT dog-pile calls to tolerate them for even an instant in my Fediverse experience. If they come to the Fediverse, I drop the Fediverse. End of story.

No. It really isn’t. This desire to use the language of sociopaths is itself dangerous. Call it what it is: new. And interesting.

Sociopaths disrupting sociopaths? Where I come from that’s called two things:

  1. Poetic justice.
  2. A shit-show best kept faaaaaaaaaaaaaaaaaaaar away from.

How’s about this as a notion, though: stop worshipping techbrodudes and other sociopaths and instead start getting the kindling built up under the stakes for them?

And can only really be used by other users of the seriously fringe set, yes.

And they don’t interfere with my experience, unlike the Twitter retweets.

I’m fine with the fringe of the already fringe (Fediverse) have access to circle jerking tools that don’t pollute my space. Twitter’s circle jerking tools spewed all over me. Fuck 'em.

Do QTs increase Twitter pile-ons or swarms?

None of the studies could answer this question or estimate how often this happens.

So the actual issue at hand is the one they couldn’t answer.

I’ll stick with ‘no quote toots, please’.

It depends.

If it’s being used by the techbrodude community, let’s just call it what it is: sociopathic.

If it’s being used by actual human beings, perhaps “new and interesting”.

I’m honestly kind of tired of that word “disruptive” being used as if it’s a good thing. “Disruption” as an end gave us the utter dirtbags of Facebook, Twitter, Uber, Amazon, and a whole host of other scummy tech outfits. It’s time to retire that term into the pile of “words used only by assholes”.

It’s never a good thing when “Web 3” is spoken anywhere near anything you value.

I love reading reports like this and counting the egregious errors of fact. It gives me warm fuzzy feelings about the value of the press in society.

Apparently “ethics” is now “staying in a cesspool because other people prefer it”.

Fuck that noise. If that’s the new definition of “ethics” I’ll be the most unethical motherfucker alive.

ACM Opens First 50 Years Backfile
cross-posted from: > This is arguably one of the most important archives of computer science and engineering information available. And 50 years of it is now free. Get out there and play while educating yourself on things you didn't know were ancient history!

ACM Opens First 50 Years Backfile
This is arguably one of the most important archives of computer science and engineering information available. And 50 years of it is now free. Get out there and play while educating yourself on things you didn't know were ancient history!

COROS IIa: A Series of Tubes
cross-posted from: > When last I wrote about COROS I explored the EVQ component of it with a focus on the API and some of its underlying construction. In this post I will expand on that underlying construction giving reasons for some of the design decisions, as well as providing some example use cases for this.

Software has a problem. OK, it has many problems. I've already highlighted one of them. But this is another important one. The problem is that software—all software, with no exceptions—sucks. The reason for this is multifaceted and we could spend years and years arguing about who has the larger list of reasons, but in the end it boils down to the proverbial shoemaker's children: Our development tools are the worst of the worst in software.

cross-posted from: > With coroutines and their use cases at least reasonably well established, the event queue mechanism of COROS is introduced to tie them up into a convenient architecture.

cross-posted from: > The first piece of COROS explored was the coroutine system, but coroutines are not a well-understood facility in programming circles for some reason. This article builds up some use cases for coroutines and their application in preparation for the next major component of COROS.

The Arecibo Message finally got its long-overdue response.
Scientists and linguists, working day and night for month after grueling month finally decoded it: "SHUT UP! THEY'RE LISTENING!"

cross-posted from: > The first in a series of articles that builds up a coroutine-based RTOS for use primarily in memory-constrained embedded systems. Future articles will expound on other pieces of the RTOS after which the full, production-ready source will be published under my usual choice of the WTFPL2 license.

cross-posted from: > Dynamic SRAM allocation is the device-killer … > > … but it doesn't have to be.

Dynamic SRAM allocation is the device-killer … … but it doesn't have to be.

Software reliability is hard. It's rendered even harder when we go out of our way to use tools that amplify that difficulty.

Oh look! A straw man communism "joke"! This is totally fresh and new and not at all tired and dated! Ha ha ha!

I think this is one of the more disturbing snack food photos I've ever seen. Source:

There is a crisis in software development. Wait, sorry, there are so many crises in software development that I need to be more specific. There is a crisis in generating new programmers.

PrologHub (Logtalk tags)
PrologHub is an interesting community for the broader Prolog community, including Logtalk.

What boredom or frustration can do to a brain.
When I get bored, or frustrated, or otherwise unengaged from my job, I like to hit Rosetta Code and implement something pointless in a dead language. Today it was this.

A. Zonenberg's "antikernel" project was an interesting take on eliminating the entire notion of a kernel from an operating system. It is like an extreme version of an exokernel with the kernel spread around everywhere up to and including peripheral devices. When thinking "beyond Linux" perhaps we should also be considering the possibility of "beyond OSes as we know them" instead of swapping in one Unix-alike for another.

> Local teachers scrambled for $5,000 worth of cash during the Sioux Falls Stampede hockey game on Saturday night. > The first-ever Dash for Cash event pitted 10 Sioux Falls area teachers against each other to grab as many single dollar bills as possible in less than five minutes. The money, meant to go toward either their classroom or school, was donated by CU Mortgage Direct. What the actual f\<expletive deleted>!?!?! I would wager a year's salary that the stadium gets MILLIONS in direct and indirect funding from various levels of government, but ***teachers***—people who actually contribute to society!—are left to scramble and wrestle each other for chump change to improve their classrooms! Late-stage capitalism at its finest! Everything is a spectacle with the poor providing entertainment for the rich. Mother. Pus. Bucket!

RT-Thread | An Open Source Embedded Real-time Operating System
Following-up to [my post about LuatOS yesterday](, this is the underlying RTOS that LuatOS builds upon. The English language site is not as complete and all-encompassing as [the Chinese site](, but it's more than enough to get a taste of the system and even put it to use. One of the things that projects like LuatOS and RT-Thread highlight is that the days of China just consuming western technology are over. Homegrown software is rapidly spreading through the country's engineering world (RT-Thread is in a bewildering variety of products now!) and even homegrown hardware, down to home-grown ISAs like the XuanTie XT804 cores, is starting to supplant imports. The future is looking decidedly interesting.

LuatOS: an interesting Chinese embedded RTOS based on Lua and RT-Thread
eLua as a project died. But from its ashes, and paired with the Chinese RT-Thread project, LuatOS has arisen. Using this if you can't do Chinese will be a bit of a challenge, but it's not impossible.

“Give me a hand, would you?”
I looked over my collection and gave him the left hand of my mother.

AURA: The Ada User Repository Annex
AURA is a proposed specification for a native Ada source code package management system, developed in lock-step with a reference implementation. This links to the documentation (from where the Github project and such can be easily found).

Failure-driven loops: when and how - Logtalk
Prolog has loops. Because Logtalk transpiles to Prolog, this means Logtalk has them too. The question is "should we use them"? The answer is … complicated. And expounded on here.

A category at the top - Logtalk
Prototypal OOP is an attractive way of doing "exception-driven" modeling: `foo` is like `bar` except that …. It is particularly suited to situations where you have many possible small distinguishing traits from a base type. It has a major problem, however: the prototype is in most such systems an object that can have messages sent to it. This is often completely nonsensical. Defensive programming has to be put in place to prevent calls to methods on the prototype instead of its descendants. Logtalk's `categories` solve this problem in a strikingly elegant way, giving class/instance-like functionality to the wildly more flexible prototype concept. This blog explains both why and how.

Building trust on property-based testing - Logtalk
The third in a series of blog entries on using property-based testing in Logtalk.

Evolving from manually written tests - Logtalk
The second in a series of using property-based automated testing to up your testing game in Logtalk. The technique used, called QuickCheck, is available in many other languages too. But very few of them get an implementation of it for free and even fewer have it in the standard distribution for the language!

Easily QuickCheck your predicates - Logtalk
Did you know that Logtalk came with an implementation of QuickCheck baked in for free? This is the first in a series of blog entries showing how to do property-based testing in Logtalk. The real beauty of Logtalk's implementation is that it supports not only Logtalk, but also any of the supported back-end Prologs. You can use Logtalk to test Prolog code, in short, as well as Logtalk (naturally).

Learn X in Y Minutes where X = Logtalk
A very good, succinct introduction to Logtalk concepts and capabilities. If you're curious about what Logtalk even is, this is probably the single best place to start figuring it out.

Rosetta Code’s Logtalk category
The Logtalk distribution comes with a very large set of examples, but if you want more Rosetta code's Logtalk category is a place to find it. Also it's a good place to practice if you want to nail down some concepts: bite-sized programming tasks that you can add to the existing ones.

This is a web app framework that uses the *SWI-Prolog* back-end and the *simple_template* pack to provide a disciplined web application development environment.

The Official Logtalk Docker containers
These are the Docker containers made by Logtalk's creator.

Found a bug? Want a feature? This is where you go to deal with it.

Where Gitter is used for live chat support, Github's discussions are used as the support BBS.

This is where you go to get the bleeding edge of Logtalk or to contribute to the development of it.