eramdam

"You're obviously the Grungler"

cis; 30s; Web dev; videos gamer; enjoyer of music, tinkerer of computers; 🇫🇷 in 🇺🇸 (SF bay area);
Trans & Black Lives Matter. You probably know me for Better TweetDeck!

I sometimes repost 18+ stuff that's tagged, so be aware of that (and don't be a minor).

icon by @CoolTimesOnline

 


My blog (with RSS!)
damien.zone/
on Mastodon (paste it into the search of your Mastodon client)
social.erambert.me/@eramdam
Twitter (locked, feel free to ask but don't get upset if i refuse)
twitter.com/eramdam
everything else
erambert.me/

ireneista
@ireneista

The official post-Cohost permanent URL for this piece is https://irenes.space/leaves/2024-09-29-technology-community-idealism

there's this kind of thinking trap that programmers sometimes fall into, which we'll explain

honestly? in our youth we fell pretty hard into it and were huge Lisp fans. then later we were huge Haskell fans for similar reasons. it took a while to really process everything and come to terms with the impossibility of the desire

the trap is this: if everything is written in (some specific language / framework), it'll be good and we can stop worrying about all those confusing externalities such as security!


... or such as maintainability, or adaptability to different environments, or any of a ton of other things.

different programming languages make different promises in this regard and it's not that any of those promises are FALSE, it's that it doesn't solve everything

we want to say, we are huge believers in language-level security features. we see that as the only way that the strategic balance of hacking could ever tip towards the defender.

we are not writing this thread to say that people shouldn't seek better programming languages - we're writing it to dispel the illusion that there is ever a FINAL programming language


so to get more concrete, this manifests when people say (as we did, when young!) - if we can just make sure that all software is written in Lisp, all these hard problems will go away.

it's an easy conclusion to arrive at. we looked around the Lisp ecosystem at the time (this was twenty years ago), there were a lot of people who cared about language-level features for this stuff, we didn't see a ton of legacy code problems

people have believed this about a lot of the more idealistic languages

and those ideals are good! they're important! Rust lifetimes, for example, are a really great innovation that does meaningfully improve security (as do various other ideas in Rust but those aren't new, per se, other languages have tried it before)

but like

the reality is that as soon as you get thousands of people using a language, and using it for production kinds of tasks, an awful lot of the problems you thought you left behind come back

some of the problems come back because you had inadvertently assumed them away. what if we just don't worry about GUIs for now? what if nobody actually uses anybody else's libraries but instead writes all their own stuff from scratch? those assumptions don't hold up when the community grows

other problems come back because they're problems that just... only exist when humans gather in large groups. oops, your compiler's "benevolent dictator for life" turns out to be racist and that has created a huge bias in who is and isn't part of the community you didn't realize you were building? .... oh, and that lack of feedback from other groups has meant that a lot of the technology has reductive assumptions baked into it that it's too late to change? surely nobody could have predicted this

every technology is also a community

that's really important and also as far as we know it's our own coinage, so we'll say it again, louder

EVERY TECHNOLOGY IS ALSO A COMMUNITY


in our experience, most people who subscribe to idealistic views of how to improve software based on fancier technologies are, at least in part, going that route because it lets them avoid thinking about the community stuff

strong engineering ideals are good! they're really important!

strong community ideals are ALSO good

and so uh....

we think it's important - at least, in our pursuit of personal growth, we found it to be - for programming language communities to examine the extent to which they might be focusing on technical mitigations as a way to avoid thinking about social problems


because long-term, if you're trying to build to last, you need to be able to solve BOTH technical and social problems

the "what if all code everywhere were written in this specific language" thing is just another way of saying "what if all code everywhere were written by my friends? or, at least, by people I can trust?"

and it's... that's not going to happen. as much as we might want to, we cannot personally have millions of friends (in the real sense of that word, not the capitalist bullshit sense).

it's a purity narrative in disguise.


or, again, it was for us, once we got to the root of it. we're not saying that it is for everyone, you'll all have to do your own reflection, you are the expert on yourself.

it's the thought that if only we could sort out the right people and tools from the wrong people and tools, everything would be simple

and uh

purity narratives are bad, y'all.

they're the shit that white supremacy draws its strength from. you don't want to be thinking in those terms, it doesn't lead to solid engineering outcomes, it doesn't lead to anything good.


we worry that this might feel too abstract, that the connection we're drawing won't be clear to readers. it was the result of a lot of introspection and we haven't really talked about it at length before (unlike many of our threads, which are synthesized from conversations we've had), so we don't know which parts you-all will need more explanation of. feel free to chime in and ask


oh uh in addition to intracommunity conflict, another of those problems that becomes clear when your language-community gets big enough is that people start using it for military shit

or for corporate shit that you don't approve of, or whatever

and it turns out that you have no defenses against that because you skipped the social steps. technology is VERY easily co-opted to military ends, it's been happening for actual millennia. you need to think ahead about it.

so. like. DEFINITELY keep pursuing novel technologies that try to solve entire classes of problem. just remember that the technology ALONE will never do that. if you don't plan for the culture as well, it's gonna fail and then nobody will see the benefits.

every technology is also a community

therefore, begin planning BOTH parts of that in parallel, from the very beginning

[originally posted in August 2023 at https://mastodon.social/@irenes/110929423510850260]


You must log in to comment.

in reply to @ireneista's post:

Yeah. I love Common Lisp (and to a lesser extent Scheme and Clojure) and use it for my personal projects but it is entirely possible to write good software in any language, or bad software in any language. If you can't find people who can work in your codebase, your good software can suddenly become bad software.

In the long run, all large-scale software turns into the classic big ball of mud; It's part of the reason I can't stand the current mode of Rust evangelism, insisting that This Time Really We've Solved All The Problems. It's easy to not have the problems of C if you don't have the millions (billions probably!) of lines of code already written in C rewritten in Rust, or Haskell, or Zig or whatever you're into.

So, for me: I have severe issues with Rust as a language. I don't like it, it feels bad to write in, it exhibits some of the worst tendencies of modern languages, being terse to the point of incomprehensibility while still feeling like you have to write pages of code for really basic operations, and making it extremely hard to do anything outside the Very Safe Box the language wants to keep you in. It's solving a problem that was already solved by systems programming languages like Ada and PL/I that were considered B&D languages in their era and yet feel like a breath of fresh air compared to a lot of modern languages. That being said, I've written lighting control software in Rust. It's fine, it works. If it weren't for the absolute state of the Rust community I'd be more willing to just say it's a style preference and I'll get used to it. But currently I don't want to touch it with a ten foot pole, just like Python and for the same reason.

I think this pretty well summed up a lot of what I don't like about Rust. I've been learning Swift, and I feel like a part of why it feels nicer to program in, is that it lacks the same kind of evangelism Rust has. the mindset of swift-makers isn't the ostensibly imperial stance of "rewrite it ALL in swift" like the RiiR crowd; it's "let's implement what's necessary." so, it doesn't feel like kitbashing some ex-python or C script/lib rewritten in an incomprehensible language; it feels more like getting work done.

On the flipside, perhaps part of why it lacks the evangelism and nonsense, is because the same people who'd press for that, get discouraged by the fact that it's "the Apple language", "the iPhone language", despite that it's now far more cross-platform friendly than C# imo.

it's the thought that if only we could sort out the right people and tools from the wrong people and tools, everything would be simple

and uh

purity narratives are bad, y'all.

This is the most succinct explanation of why the BoFH narrative of systems administration is harmful I think I've ever seen.

trying to remove social problems entirely, by means of a fully decentralized architecture that is totally impervious to both technical and social solutions by design, has gone extremely well for the “web3” crowd. also there are 14 015 distinct “active cryptocurrencies” listed on “CoinGecko” right now so they’re doing great at building a single solution to… whatever their problem is exactly. one of them was named “Food”.

(that is to say, i think that whole mess might serve as an example of what happens when you try to do like, the opposite of what this post advocates for.)

i agree with some of the points youve made here. ive always stood by my belief that an overwhelming majority of the issues that arise in programming are cultural rather than technical. ie javascript code is messy and generally difficult to read for any outsider, not because the language itself encourages that kind of style but because it has an extremely low and well-paying barrier to entry that largely encourages people to copypaste snippets of source code they find from wherever. programming language efforts are generally better spent improving documentation, writing examples, making tutorials, beating the language server protocol into a pulp with a blunt rock and making better IDEs, etc.

however. i strongly disagree with your aversion to ideals of communal purity. i think that a statement like "if corporations didnt have an iron thumb over the entire software industry, things would be a lot better" is a perfectly reasonable claim, and comparing it to white supremacy is. not productive? is probably the nicest description about how i feel about that implication

so, instead ill be charitable and ask for clarification. is white supremacy bad because its a purity narrative, or is it bad because its predicated on false beliefs that lead to the harm of literally billions of people around the world? because thats exactly what capitalism is too, and i (personally) think that trying to push the influence of cryptobros and corporate executives as far away from a programming language and its ecosystem is ultimately healthier for the language and the community within it than not

well, the second one of course. narratives are bad because of where they lead to, not because of what they are in some sort of mathematical, abstract sense. to the extent that it doesn't inevitably lead there, that's fine and all, we just think it's a thing worth being aware of and actively thinking about

we think there's a tendency for notions like "X is the core idea of Y" to be simplified to "X is synonymous with Y", especially in online discussions, but that is not the case. if they were synonymous, we'd be saying that, and exploring the ways they're inseparable from each other and so on. ideas have structure, and that structure matters. life isn't a big red-string conspiracy board where the shocking revelation is that all the bad things turn out to be the same as each other. we don't like purity narratives, for the reasons we give, but that isn't to say that we're automatically against anything that idea of "purity" could be stretched to somehow encompass.

instead of trying to reduce these ideas to mathematical formalisms disconnected from real-world context, we advise reflecting on what makes purity narratives so useful to white supremacy - what about them do white supremacists like? - and then anytime there's a question as to what does or doesn't fall within the category of purity, compare with real examples to see what it has in common, and use any insight gained through that process to try to formulate why it should or shouldn't be considered that way.

in other words, we're not trying to be prescriptive, we're trying to encourage people to think things through.

now, that was all pretty high-level, so just to dig in to your concrete question a bit more... we personally very much want to keep corporate and state interests out of communal decision making. we don't really think that that's a purity concept in the same way, although certainly we can imagine people pursuing it dogmatically and without thinking through the implications, in ways that would lead to the same result. we think it's more in the nature of a choice about who we're doing things for and why. it shouldn't be hard to see that corporations don't have the interests of communities at heart, and shouldn't be trusted for this in the long run.

if presented with a real and specific example of a particular corporation, and a particular community, we would advise going even further with that train of thought and analyzing the likely harms based on how similar companies have hurt similar communities in the past. any decision-making process always comes down to specific, real decisions in the end.

we hope that helps a bit. we want to reaffirm that we welcome this kind of engagement, and please feel free to keep going with it! <3

we personally very much want to keep corporate and state interests out of communal decision making. we don't really think that that's a purity concept in the same way

i suppose my issues probably stemmed from a difference in semantics, as i probably would consider that a similar concept of purity. i appreciate the clarification! :3

it seems like we both do ultimately agree that things are good or bad based on the outcomes they produce. i do personally believe that some level of narrativization can be useful; im not opposed to using particular strategies on the basis that they are used by people i would consider enemies of my core principles (unless the tactics themselves go against those principles obv), if that helps

in other words, we're not trying to be prescriptive, we're trying to encourage people to think things through.

i appreciate it!! im really sorry if anything in my original reply came off as rude. i hadnt slept at the time i wrote it and my autistic ass has a hard time figuring out how my words or phrasings might come off tonally, especially when im tired xP

we hope that helps a bit. we want to reaffirm that we welcome this kind of engagement, and please feel free to keep going with it! <3

thanks! im happy to have provided some (hopefully useful) input and i appreciate you clarifying some of my concerns ^ω^

mm. not in reality, because they'll do whatever they want because nobody can stop them. in particular, the high level of secrecy around military technology makes it difficult to imagine how a lawsuit could even start.

it's not a bad idea to make a clear statement of intent, all the same. it still accomplishes something, it's just that what it accomplishes is mostly in the nature of making sure everyone is on the same page about what's supposed to happen.

just realized we should clarify - when we say a lawsuit we mean for GPL enforcement or something of that general nature. it belatedly occurs to us that that's not the only way in which it can be desirable to keep militaries out