Skip Navigation
Enshitification is /our/ fault, not the enshitifiers
  • Each of these options depends entirely on what you need as an individual.

    “Need” is a very slippery word here. Countless conveniences are described as a “need” by addicts of convenience. You might say you /need/ to fill the CAPTCHA required by the unemployment office, when in fact you think you “need” to not spend the time it takes to do a paper application. Tim Wu’s Tyranny of Convenience essay gives a good perspective on this. We don’t need the conveniences that we think we need.

    That’s not to say real needs don’t manifest, but people’s ability to make the distinction is dodgy for sure. Luckily one person solving a CAPTCHA unavoidably for a true need is not going to be a significant enabler in the grand scheme of things if people generally refuse such garbage.

    Can everyone? No.

    Boycotts, for example, do not require everyone to participate. There is a critical mass by which if the threshold of rebels mounts, it will cause change that even benefits the pushovers. In a lot of situations, we would only need 10% or so of users to have a constitution and to honor it.

    Prescribing a one-size-fits-all solution that doesn’t actually fit

    Boycotts need not suit everyone. We just need a notable number of consumers with willpower and discipline to turn things around.

  • Enshitification is /our/ fault, not the enshitifiers
  • the problem is that regulation part is broken. … Enshittification is our fault, but not for the reason you suggest.

    (emphasis mine)

    The problem is not singular. It starts with consumers failing to do their job. It’s a false dichotomy to suggest that enablers are not at fault because there are other faults in the system. The enablers are at fault, of course for serving as enablers (as I suggest). Voters (be they enablers as consumers or not) are also at fault. I stress also, because you can be at fault for serving as an enabler who (e.g.) solves CAPTCHAs, while simultaneously voting poorly. But it must be said, voting in general exections is an extremely blunt instrument. It is very close to blaming an inanimate object.

    Even if voting were perfectly effective, it’s bizarre to think that electing opponents of Thatcher, Reagan, and Trump would in the slightest make a difference. In fact democrats in the US (Obama in particular) get most of their corporate support from the tech industry, likely because they would be a threat in the absence of that bribery.

    Enshitification is not even on the radar of politicians. They wouldn’t give one sentence to it. This is in fact for the reason I suggest: consumers have taken the side of enablers. You can see it just in the votes of this thread.

    Politicians look at metrics.

    My energy supplier sent me a notice telling me to submit my meter reading digitally. There is a CAPTCHA blocking me from doing so. If everyone solves the CAPTCHA, the politicians don’t even know there is a problem. People who are too lazy to submit their meter reading the old fashioned way are sure as hell too lazy to write a complaint. But if 3% of the consumers were to refuse the CAPTCHA and perhaps complain to either the supplier or the suppliers regulator, that would create a metric that politicians see. I do my part to ensure my protest appears in a metric that is seen by a politician. This happens in parallel to refusing the CAPTCHA.

    Solving the CAPTCHA send the opposite signal: that the mechanism works.

    Here’s the thing: protesting enshittification takes expertise, time, and energy. I’ve been working on degoogling and such, and it’s honestly difficult. Installing Linux is easier now than it used to be, but it’s still a learning curve for the average person.

    You do not have to be an expert to oppose CAPTCHAs. Every form of enshitification has varying degrees of detection due to varying degrees of expertise. With knowledge comes responsibilty. To the extent that you can recognise the enshitification and avoid it, you have a social responsibility for doing so. It doesn’t work to say your neighbor is not tech literate enough to recognize dark pattern Y, so you are somehow absolved of your duty. It’s another matter entirely to talk about duty to be informed, which is of course debatable.

    In addition, we can create regulations that benefit and protect the average person,

    The GDPR has been a shit-show. It does cover many shenanigans with cookies and dark patterns (which are covered as well as possible in the European Data Protection Board’s guidelines 03/2022). But until you read how this unfolds into codified law, you are far to confident and reliant on the legal approach. Just as we see climate action being a disaster for the same reasons.

    How would you codify a law against CAPTCHAs? The govs themselves use them. You cannot search the business registration databases of many US state secretaries because of a CAPTCHA. Precisely codifying circumstances to prohibit without excessive nannying but at the same time without being useless is a great feat in itself, and also an enforcement nightmare.

    I am up to my neck in GDPR violations, many of which are quite blunt and simple to prove, yet not a single report I’ve submitted leads to enforcement.

    Hope that regulation will solve enshitification is rediculous in the face of more important policies like Article 17 of the GDPR goes without enforcement. It’s not THE answer -- not in the slightest. By all means, write to lawmakers and ask for anti-enshitification law, for all it’s worth, but it would be the least effective option on the table. Boycotts are more under your control and can be more effective. And boycotts lead to metrics that politicians see.

  • Some slrpnk communities not appearing in fedi datasets (e.g. nolawns)

    These communities did not make it into the lemmyverse DB:

    • nolawns
    • asshole_design

    Anyone know why, and how it might be fixed?

    I don’t suppose there is any problem on the slrpnk side of this because when I list the communities from a logged out browser, the two show up there. So it appears to be a defect in the lemmyverse scraper. I’ve not looked at the code for that but I recall that there is a website where you can enter a community address and a bot adds a subscription does some things in terms of publicity for the community. I’m not sure what it does, but I wonder if that mechanism is connected to the Lemmyverse DB at all.

    If yes, then in principle I wonder if slrpnk.net would want to promote its own communities by automatically signalling whenever a new community is created, so community builders need not each have to be informed of it.

    UPDATE: I wonder if the answer might be for a bot to automatically post communities on https://ponder.cat/c/communities

    0
    Network Neutrality and Digital Inclusion @sopuli.xyz activistPnk @slrpnk.net
    There is a “Cathedral and Bazaar” within the fediverse that manifests as utilitarian users and deontological users, respectively

    cross-posted from: https://slrpnk.net/post/24598576

    > The state of the fedi superficially parallels what Eric S. Raymond articulated in the 1990s on software construction. There are two models for digital community building within the fediverse. The intent was a decentralised bazaar whereby power is well dispersed, with no single entity excessively wielding disproportionate power. Activitypub was designed to enable the bazaar model to exist, but it neglects to curtail the antithetical model that anarchy-minded folks want to escape: the cathedral. > > The hope and expectation was simply that builders of giant monolithic cathedrals would have no interest in the fedi; that they would want their empire to take the conventional path of walling themselves off. Fedi founders did not envision ambitions for power would emerge within the fedi. Who would have predicted that Facebook would decide to compromise its garden walls in exchange for influence over a quite small population? Or that Cloudflare’s centralized walled garden would be exploited to supercharge disproportionate growth by node operators intent on using the network effect to concentrate power? These kinds of technofeudal actors have traditionally vied for absolute power without attempting to cannabalise and occupy a fair structure to then coexist with. > > Fedi founders thought the federate/defederate option would sufficiently control for actors who would work against the vision of the bazaar. This blunt tool relies heavily on the demographic of relative pseudo anarchists being larger than it is. > > I think it was Kensanata (Alex Schröder) who notably stressed what I regard as a true dichotomy, the sentiment of which was something to the effect of: > > > you can simply go where the people are, or you can go where the platform and tech is well-designed.¹ > > The former are utilitarians and the latter are deontologists who find other people (though far fewer) that share the same understanding and appreciation of structures that feature resistance to tyranny. The separation is comparable to anarchists (at heart) seeking out a small freedom-rich niche away from the ivory tower cathedral. > > The bazaar (decentralised) segment of the fedi comes at the cost of utility, as principles of digital ethics trump the instant gratification of a large audience. The sacrifice is not in vain. It’s made with an expectation that wisdom will spread and sustain. Though it seems clear that the cathedral will always exist and perhaps always enjoy dominance of the majority who serve it (are pawned by it). > > There is a noteworthy contrast from Raymond’s C&B essay. Raymond likens the bazaar to “selfish agents” attributed to “utilitarian” Linux hackers under the idea that Linus harnesses their egos collectively (“egoboo”). Whereas in the fediverse of community builders, it is the selfish agents unwilling to compromise time and convenience who fill the cathedrals, baited by heavily populated communities. > > Raves and Burning Man started off small and great; rich in culture, before rapid growth diluted the subculture and commercialisation did what it does. The natural response is to “take it underground” to try to restore the original greatness. > > The fedi has passed that inflection point. We have LW serfs popping into */c/privacy communities to heckle whoever they perceive as “paranoid”, or worse, deliver a lecture on privacy (from Cloudflare). There is a profound and somewhat ironic number of CF cathedral folks making way into digital rights types of communities, not seeing the starkness of which would be comparable to Donald Trump appearing at a reggae festival, or an AOL user in the 1990s stepping into an engineering usenet newsgroup. > > So here’s a fun search result: > > 🌩 lemmy.world🌩|decentralization > 🌩 kbin.earth🌩|decentralize > ⚠lemmy.ml/c/decentralized > > There are just 3 communities specifically for decentralisation chatter and they are all on centralised hosts. It’s actually useful that they exist in those places from an outreach standpoint. But it’s likely being overly generous to assume they exist for outreach to those who need to be reached. > > Anyway, going forward we need tools and datasets with metrics. The metrics currently serve the utilitarian who simply looks for the most exposure of their content without regard to the ethics underpinning decentralisation. Metrics that serve the bazaar would have to measure degree of power centralisation. > > ¹ paraphrased - not an exact quote >

    0
    There is a “Cathedral and Bazaar” within the fediverse that manifests as utilitarian users and deontological users, respectively

    cross-posted from: https://slrpnk.net/post/24598576

    > The state of the fedi superficially parallels what Eric S. Raymond articulated in the 1990s on software construction. There are two models for digital community building within the fediverse. The intent was a decentralised bazaar whereby power is well dispersed, with no single entity excessively wielding disproportionate power. Activitypub was designed to enable the bazaar model to exist, but it neglects to curtail the antithetical model that anarchy-minded folks want to escape: the cathedral. > > The hope and expectation was simply that builders of giant monolithic cathedrals would have no interest in the fedi; that they would want their empire to take the conventional path of walling themselves off. Fedi founders did not envision ambitions for power would emerge within the fedi. Who would have predicted that Facebook would decide to compromise its garden walls in exchange for influence over a quite small population? Or that Cloudflare’s centralized walled garden would be exploited to supercharge disproportionate growth by node operators intent on using the network effect to concentrate power? These kinds of technofeudal actors have traditionally vied for absolute power without attempting to cannabalise and occupy a fair structure to then coexist with. > > Fedi founders thought the federate/defederate option would sufficiently control for actors who would work against the vision of the bazaar. This blunt tool relies heavily on the demographic of relative pseudo anarchists being larger than it is. > > I think it was Kensanata (Alex Schröder) who notably stressed what I regard as a true dichotomy, the sentiment of which was something to the effect of: > > > you can simply go where the people are, or you can go where the platform and tech is well-designed.¹ > > The former are utilitarians and the latter are deontologists who find other people (though far fewer) that share the same understanding and appreciation of structures that feature resistance to tyranny. The separation is comparable to anarchists (at heart) seeking out a small freedom-rich niche away from the ivory tower cathedral. > > The bazaar (decentralised) segment of the fedi comes at the cost of utility, as principles of digital ethics trump the instant gratification of a large audience. The sacrifice is not in vain. It’s made with an expectation that wisdom will spread and sustain. Though it seems clear that the cathedral will always exist and perhaps always enjoy dominance of the majority who serve it (are pawned by it). > > There is a noteworthy contrast from Raymond’s C&B essay. Raymond likens the bazaar to “selfish agents” attributed to “utilitarian” Linux hackers under the idea that Linus harnesses their egos collectively (“egoboo”). Whereas in the fediverse of community builders, it is the selfish agents unwilling to compromise time and convenience who fill the cathedrals, baited by heavily populated communities. > > Raves and Burning Man started off small and great; rich in culture, before rapid growth diluted the subculture and commercialisation did what it does. The natural response is to “take it underground” to try to restore the original greatness. > > The fedi has passed that inflection point. We have LW serfs popping into */c/privacy communities to heckle whoever they perceive as “paranoid”, or worse, deliver a lecture on privacy (from Cloudflare). There is a profound and somewhat ironic number of CF cathedral folks making way into digital rights types of communities, not seeing the starkness of which would be comparable to Donald Trump appearing at a reggae festival, or an AOL user in the 1990s stepping into an engineering usenet newsgroup. > > So here’s a fun search result: > > 🌩 lemmy.world🌩|decentralization > 🌩 kbin.earth🌩|decentralize > ⚠lemmy.ml/c/decentralized > > There are just 3 communities specifically for decentralisation chatter and they are all on centralised hosts. It’s actually useful that they exist in those places from an outreach standpoint. But it’s likely being overly generous to assume they exist for outreach to those who need to be reached. > > Anyway, going forward we need tools and datasets with metrics. The metrics currently serve the utilitarian who simply looks for the most exposure of their content without regard to the ethics underpinning decentralisation. Metrics that serve the bazaar would have to measure degree of power centralisation. > > ¹ paraphrased - not an exact quote >

    0
    Enshitification is /our/ fault, not the enshitifiers
  • So you’re saying that unhoused, impoverished unemployed people have the social capital to change the world?

    This analogy you continue to use is broken. Give it up.

    You might have to toil for shit wages, but you don’t have to solve every CAPTCHA puzzle that arrives on your screen.

  • Wrote a script to find decentralised communities w/in the fedi. Helps isolate the Cloudflare portion of the fedi to shift more activity to the non-tech-giant-controlled venues
  • While your mission statement says you want to increase decentralization, functionally you’re maximizing subscription to communities with the smallest audiences and least amount of content.

    Indeed, the logic is sequitur. But to be clear, it’s not exactly about subscriptions. You can post without a subscription.

    If you assume everyone in the FediVerse is browsing World

    We need not make assumptions. The data is public.

    but this approach makes topic-focused subscription browsing a wasteland. What am I missing?

    Subscription has nothing to do with this. The script does not look for subscriptions. It simply looks for communities that are not part of a centralised concentration of disproportionate power.

    Subscription counts are in the dataset. So it would be trivial to adapt the script to express those numbers and sort on them. But the fedi is small. There are usually not so many competing results to make that interesting. After shortlisting a community, before posting I dump the figures to the terminal so I know to what extent my target forum is a ghost town.

    Why is this good?

    Oof. This thread is not the place to explain the value of decentralised digital communities. The premise is that the reader already accepts that. There’s probably a blog somewhere that details the purpose of the fedi and the harms of centralisation. I’ll write something up in a separate post.

    (edit) The philosophy is covered here:
    https://slrpnk.net/post/24598576

    I will say, if support for meta-filtering was broader - browsing not by subscription, but by key phrase match in either community or post tags, this would be a good approach.

    Lemmy communities don’t have tags AFAICT. There is a description, part of which is in the lemmyverse dataset (which my script searches if specified). M/Kbin mags also lack tags, so you’ll have to clarify. Do you mean hashtags?

    When you say post tags, that sounds like a huge dataset. It would be useful but the usefulness is at odds with resource efficiency.

  • Enshitification is /our/ fault, not the enshitifiers
  • Climate action. Meat eating car drivers don’t blame themselves. They blame ExxonMobile, which effectively offloads the meat-eating car driver from taking responsibility for their own contribution to the problem. Enshitification of the digital space has the same blame-failure as enshitification of the planet.

  • Enshitification is /our/ fault, not the enshitifiers
  • It’s like voting in elections. I cast my drop-in-the-ocean vote to do my part, which on its own has negligible power but it gives me the satisfaction of knowing that I am not part of the problem. It gives peace of mind and a kind of freedom amid the various prisons around us.

    Do you believe this approach is going to change anything?

    Non-voter shaming is indeed a strategy used in US elections. If it did not have effect, they would not spend money on it.

  • Enshitification is /our/ fault, not the enshitifiers
  • This gives me an idea. The equivalent of bumper stickers for our fedi traffic. An icon or something at the bottom of my posts signaling that I don’t solve CAPTCHAs, or use clearnet, or email MS/Google recipients, etc. It would have to be a tiny 1-liner that’s not severely cluttered or noisy, but /something/ like the blue ribbon campaign decades ago. Maybe avatar is a good place for that, to keep things tidy.

  • Enshitification is /our/ fault, not the enshitifiers
  • It doesn’t help to conceal the fact that there actually are people who do not lick boots.

    Instead try to understand where they come from

    I know where they come from. They come from addiction to convenience. They come from a place where they’ve not read Tim Wu’s “Tyranny of Convenience” essay, as they are surrounded with others who just roll with the garbage. They don’t know the fighting opposition exists because there are so few of us. It’s first and foremost important for them to know there are those who do not solve CAPTCHAs, and click through cookie walls, etc. We exist -- that’s the most important msg to take away from this.

  • Enshitification is /our/ fault, not the enshitifiers
  • You say that from a Cloudflare node, @HellsBelle@sh.itjust.works. The “victim blame” card is obviously a silly failure here, as is your analogy. You may be forced to toil for shit wages under Reaganomics because if you don’t, you suffer more. But this is not true of CAPTCHAs. Stop pretending you must solve a CAPTCHA, when in fact you’re just too lazy to not play the victim and send your correspondence by snail mail instead of webmail. You choose to be a victim when you choose to interact with enshitified resources, so you’ll get no respect from me. I respect those who have the constitution to walk away from it, not feed the oppressor.

  • Enshitification is /our/ fault, not the enshitifiers

    The whole capitalist infrastructure is designed for corporations to fully exploit profitability to the most extreme possible result. Sure, we can blame capitalism, which is a useless activity. In fact, it’s a harmful stance because blaming capitalism artificially puts solutions out of reach.

    Within this capitalist system we are stuck with, can you blame the corporate enshitifiers? Again, same problem. Doing so puts the solution out of reach as corporations who work for their shareholders (not you) laugh all the way to bank.

    It’s our fault. We have control and we squander it. You don’t have to solve CAPTCHA puzzles. You don’t have to switch to the clearnet every time a website blocks Tor. You don’t have to send a message to a GAFAM recipient. It’s because spineless pushovers fail to stand up for themselves and solve CAPTCHAs, tolerate cookie walls, and do whatever dance the corps force on us. We need more people to get a constitution and stop licking boots.

    Corporations are doing their job (profiting). We are not doing our job. As consumers, it is OUR job to reject the garbage and ensure that we don’t make enshitification profitable.

    20
    Network Neutrality and Digital Inclusion @sopuli.xyz activistPnk @slrpnk.net
    Wrote a script to find decentralised communities w/in the fedi. It selects nodes w/active users < avg+2σ. Is that a good approach? Check my math plz.

    cross-posted from: https://slrpnk.net/post/24512484

    > (The pic is sample output for an arbitrary query on “vegan vege pesc”. Irrelevant side note: there is no free-world venue for pescatarians.. just one in L/W that scrolled off the screen) > > ## CF > > The federation is not wholly decentralised, obviously, when giant centralised fiefdoms like Facebook “Threads”™ and Cloudflare hook in their technofeudal variety of oppressive infra and abuse their power. > > Each post submission begins with finding a relevant venue for the content and it must be consistent with my sense of ethics. Cloudflare is automatically nixed because it’s inherently centralised in a walled garden (regardless of the user count for any given node). CF is a non-starter for an open, free, and fair society (fair implying power balance, equality, transparency, etc). > > My script queries the catalog of communities for relevant venues. It still prints the Cloudflare walled garden because it’s useful to see what names match my regex queries, which sometimes helps form a better query. It’s the only thing #LemmyWorld is good for (a shit-ton of community names with redundant variations of the same subject matter). Those results are in red, tagged with a thundercloud (🌩 ), and printed first (because when they scroll off the terminal I don’t typically care to scroll up to see them). > > ## non-CF > > CF is not the only issue. Some non-CF nodes are centralized due to uncontrolled growth to disproportionately large sizes. I don’t cancel them hard-and-fast like CF nodes, but they get treated with low “last resort” favorability. They have the warning symbol (⚠) and are in yellow. > > ### Is my math decent? > > My script began by filtering on total user count. Then I realised dead or dormant users probably should not count because such users don’t really contribute to a node’s disproportionate power over a population. It’s active users that matter. But if the number of active users in a day are filtered on, that’s too dynamic for deciding where my post can live for a month or however long it is relevant. So I took the users_active_half_year count. Is that sensible? > > What constitutes an “active” user, simply logging in, or commenting? > > The line is drawn at 2 standard deviations above the average -- after tossing outliers. Nodes with less than 5 active users in ½ a year are likely 1-person nodes which do not influence the average. The average is around 320 active ½yr users per node. The standard deviation is ~702 users. My statistical competence is rusty for sure, but I’m a bit bothered by a standard deviation that’s more than double the mean. Seems like a variation so wild it should perhaps be disregarded. Nonetheless, I opted to flag nodes that exceed ~1724 users_active_half_year. > > The pseudocode looks like this: > > avg=$(sqlite3 "$db" 'select round(avg([counts.users_active_half_year])) from node_tbl where tags not like "%cloudflare%" and [counts.users_active_half_year] > 4') > variance=$(sqlite3 "$db" 'select avg(([counts.users_active_half_year] - subtbl.aua) * ([counts.users_active_half_year] - subtbl.aua)) as var from node_tbl, (select avg([counts.users_active_half_year]) as aua from node_tbl where tags not like "%cloudflare%" and [counts.users_active_half_year] > 4) as subtbl where tags not like "%cloudflare%" and [counts.users_active_half_year] > 4;') > > sqlite3 "$db" "select case when baseurl in (select baseurl from node_tbl where [counts.users_active_half_year] > $avg+sqrt($variance)*2) then '$yellow⚠' else '$cyan' end||baseurl||'$reset',name from community_tbl where (name like '%${1}%' or desc like '%${1}%') and baseurl not in (select baseurl from node_tbl where tags like '%cloudflare%') order by baseurl,name" > > Code is ugly because sqlite does not have a stdev builtin function. > > My other thought is to cut slack for closed nodes because at least they are expected to shrink. To list the possible figures to filter on, this is a record for lemmy.ml (the biggest non-Cloudflare node): > :::spoiler record for lemmy.ml > url = https://lemmy.ml/ > baseurl = lemmy.ml > name = Lemmy > desc = A community of privacy and FOSS enthusiasts, run by Lemmy’s developers > downvotes = 1 > nsfw = 1 > create_admin = 0 > private = 0 > fed = 1 > version = 0.19.12 > open = 1 > usage.users.total = 54790 > usage.users.activeHalfyear = 4201 > usage.users.activeMonth = 2125 > usage.localPosts = 167331 > usage.localComments = 818559 > counts.site_id = 1 > counts.users = 54790 > counts.posts = 167331 > counts.comments = 818559 > counts.communities = 4608 > counts.users_active_day = 947 > counts.users_active_week = 1496 > counts.users_active_month = 2125 > counts.users_active_half_year = 4201 > icon = https://lemmy.ml/pictrs/image/fa6d9660-4f1f-4e90-ac73-b897216db6f3.png > banner = > langs = ["all"] > date = 2019-04-20T18:53:54.608882Z > published = 1555786434000 > time = 1751974533970 > score = > uptime.domain = lemmy.ml > uptime.latency = 0.034 > uptime.countryname = France > uptime.uptime_alltime = 99.04 > uptime.date_created = > uptime.date_updated = 2021-10-29 15:09:21 > uptime.date_laststats = 2025-04-11 21:03:25 > uptime.score = 100 > uptime.status = 1 > isSuspicious = 0 > metrics.usersTotal = 54790 > metrics.usersMonth = 2125 > metrics.usersWeek = 1496 > metrics.totalActivity = 985890 > metrics.localPosts = 167331 > metrics.localComments = 818559 > metrics.averageUsers = 50720.8825256975 > metrics.biggestJump = 225 > metrics.averagePerMinute = 0.02475 > metrics.userActivityScore = 0.055574151274483 > metrics.activityUserScore = 17.9939770031028 > metrics.userActiveMonthScore = 25.7835294117647 > tags = [] > susReason = [] > trust.lastCrawled = 1751974533970 > trust.baseurl = lemmy.ml > trust.metrics.usersTotal = 54790 > trust.metrics.usersMonth = 2125 > trust.metrics.usersWeek = 1496 > trust.metrics.totalActivity = 985890 > trust.metrics.localPosts = 167331 > trust.metrics.localComments = 818559 > trust.metrics.averageUsers = 50720.8825256975 > trust.metrics.biggestJump = 225 > trust.metrics.averagePerMinute = 0.02475 > trust.metrics.userActivityScore = 0.055574151274483 > trust.metrics.activityUserScore = 17.9939770031028 > trust.metrics.userActiveMonthScore = 25.7835294117647 > trust.users = 54790 > trust.name = Lemmy > trust.base = lemmy.ml > trust.actor_id = https://lemmy.ml/ > trust.tags = [] > trust.guarantor = fediseer.com > trust.endorsements = 17 > trust.score = 598.1875 > trust.reasons = [] > blocks.incoming = 0 > blocks.outgoing = 0 > blocked = [] > ::: > > ## Some communities missing from the Lemmyverse DB - why? > Anyone know why some slrpnk.net communities are in the Lemmyverse DB, and some are not? E.g. why is !nolawns@slrpnk.net missing, despite many others from the same node that are included? > > More importantly, what’s the fix apart from crawling all the nodes (which would probably be unwelcome)? Is there another open DB apart from Lemmyverse? There is fediverse.space and fediverse.observer, but they don’t appear to be sharing their data. >

    0
    European Tech Sovereignty @europe.pub activistPnk @slrpnk.net
    Wrote a script to find decentralised communities w/in the fedi. Helps isolate the Cloudflare portion of the fedi to shift more activity to the non-tech-giant-controlled venues

    If anyone could help me improve my script, it could be a way to get more posting action in Europe, instead of Cloudflare (US). What I need most is an open dataset of communities other than #Lemmyverse, which is incomplete.

    cross-posted from: https://slrpnk.net/post/24512484

    > (The pic is sample output for an arbitrary query on “vegan vege pesc”. Irrelevant side note: there is no free-world venue for pescatarians.. just one in L/W that scrolled off the screen) > > ## CF > > The federation is not wholly decentralised, obviously, when giant centralised fiefdoms like Facebook “Threads”™ and Cloudflare hook in their technofeudal variety of oppressive infra and abuse their power. > > Each post submission begins with finding a relevant venue for the content and it must be consistent with my sense of ethics. Cloudflare is automatically nixed because it’s inherently centralised in a walled garden (regardless of the user count for any given node). CF is a non-starter for an open, free, and fair society (fair implying power balance, equality, transparency, etc). > > My script queries the catalog of communities for relevant venues. It still prints the Cloudflare walled garden because it’s useful to see what names match my regex queries, which sometimes helps form a better query. It’s the only thing #LemmyWorld is good for (a shit-ton of community names with redundant variations of the same subject matter). Those results are in red, tagged with a thundercloud (🌩 ), and printed first (because when they scroll off the terminal I don’t typically care to scroll up to see them). > > ## non-CF > > CF is not the only issue. Some non-CF nodes are centralized due to uncontrolled growth to disproportionately large sizes. I don’t cancel them hard-and-fast like CF nodes, but they get treated with low “last resort” favorability. They have the warning symbol (⚠) and are in yellow. > > ### Is my math decent? > > My script began by filtering on total user count. Then I realised dead or dormant users probably should not count because such users don’t really contribute to a node’s disproportionate power over a population. It’s active users that matter. But if the number of active users in a day are filtered on, that’s too dynamic for deciding where my post can live for a month or however long it is relevant. So I took the users_active_half_year count. Is that sensible? > > What constitutes an “active” user, simply logging in, or commenting? > > The line is drawn at 2 standard deviations above the average -- after tossing outliers. Nodes with less than 5 active users in ½ a year are likely 1-person nodes which do not influence the average. The average is around 320 active ½yr users per node. The standard deviation is ~702 users. My statistical competence is rusty for sure, but I’m a bit bothered by a standard deviation that’s more than double the mean. Seems like a variation so wild it should perhaps be disregarded. Nonetheless, I opted to flag nodes that exceed ~1724 users_active_half_year. > > The pseudocode looks like this: > > avg=$(sqlite3 "$db" 'select round(avg([counts.users_active_half_year])) from node_tbl where tags not like "%cloudflare%" and [counts.users_active_half_year] > 4') > variance=$(sqlite3 "$db" 'select avg(([counts.users_active_half_year] - subtbl.aua) * ([counts.users_active_half_year] - subtbl.aua)) as var from node_tbl, (select avg([counts.users_active_half_year]) as aua from node_tbl where tags not like "%cloudflare%" and [counts.users_active_half_year] > 4) as subtbl where tags not like "%cloudflare%" and [counts.users_active_half_year] > 4;') > > sqlite3 "$db" "select case when baseurl in (select baseurl from node_tbl where [counts.users_active_half_year] > $avg+sqrt($variance)*2) then '$yellow⚠' else '$cyan' end||baseurl||'$reset',name from community_tbl where (name like '%${1}%' or desc like '%${1}%') and baseurl not in (select baseurl from node_tbl where tags like '%cloudflare%') order by baseurl,name" > > Code is ugly because sqlite does not have a stdev builtin function. > > My other thought is to cut slack for closed nodes because at least they are expected to shrink. To list the possible figures to filter on, this is a record for lemmy.ml (the biggest non-Cloudflare node): > :::spoiler record for lemmy.ml > url = https://lemmy.ml/ > baseurl = lemmy.ml > name = Lemmy > desc = A community of privacy and FOSS enthusiasts, run by Lemmy’s developers > downvotes = 1 > nsfw = 1 > create_admin = 0 > private = 0 > fed = 1 > version = 0.19.12 > open = 1 > usage.users.total = 54790 > usage.users.activeHalfyear = 4201 > usage.users.activeMonth = 2125 > usage.localPosts = 167331 > usage.localComments = 818559 > counts.site_id = 1 > counts.users = 54790 > counts.posts = 167331 > counts.comments = 818559 > counts.communities = 4608 > counts.users_active_day = 947 > counts.users_active_week = 1496 > counts.users_active_month = 2125 > counts.users_active_half_year = 4201 > icon = https://lemmy.ml/pictrs/image/fa6d9660-4f1f-4e90-ac73-b897216db6f3.png > banner = > langs = ["all"] > date = 2019-04-20T18:53:54.608882Z > published = 1555786434000 > time = 1751974533970 > score = > uptime.domain = lemmy.ml > uptime.latency = 0.034 > uptime.countryname = France > uptime.uptime_alltime = 99.04 > uptime.date_created = > uptime.date_updated = 2021-10-29 15:09:21 > uptime.date_laststats = 2025-04-11 21:03:25 > uptime.score = 100 > uptime.status = 1 > isSuspicious = 0 > metrics.usersTotal = 54790 > metrics.usersMonth = 2125 > metrics.usersWeek = 1496 > metrics.totalActivity = 985890 > metrics.localPosts = 167331 > metrics.localComments = 818559 > metrics.averageUsers = 50720.8825256975 > metrics.biggestJump = 225 > metrics.averagePerMinute = 0.02475 > metrics.userActivityScore = 0.055574151274483 > metrics.activityUserScore = 17.9939770031028 > metrics.userActiveMonthScore = 25.7835294117647 > tags = [] > susReason = [] > trust.lastCrawled = 1751974533970 > trust.baseurl = lemmy.ml > trust.metrics.usersTotal = 54790 > trust.metrics.usersMonth = 2125 > trust.metrics.usersWeek = 1496 > trust.metrics.totalActivity = 985890 > trust.metrics.localPosts = 167331 > trust.metrics.localComments = 818559 > trust.metrics.averageUsers = 50720.8825256975 > trust.metrics.biggestJump = 225 > trust.metrics.averagePerMinute = 0.02475 > trust.metrics.userActivityScore = 0.055574151274483 > trust.metrics.activityUserScore = 17.9939770031028 > trust.metrics.userActiveMonthScore = 25.7835294117647 > trust.users = 54790 > trust.name = Lemmy > trust.base = lemmy.ml > trust.actor_id = https://lemmy.ml/ > trust.tags = [] > trust.guarantor = fediseer.com > trust.endorsements = 17 > trust.score = 598.1875 > trust.reasons = [] > blocks.incoming = 0 > blocks.outgoing = 0 > blocked = [] > ::: > > ## Some communities missing from the Lemmyverse DB - why? > Anyone know why some slrpnk.net communities are in the Lemmyverse DB, and some are not? E.g. why is !nolawns@slrpnk.net missing, despite many others from the same node that are included? > > More importantly, what’s the fix apart from crawling all the nodes (which would probably be unwelcome)? Is there another open DB apart from Lemmyverse? There is fediverse.space and fediverse.observer, but they don’t appear to be sharing their data. >

    2
    Wrote a script to find decentralised communities w/in the fedi. It selects nodes w/active users < avg+2σ. Is that a good approach? Check my math plz.

    cross-posted from: https://slrpnk.net/post/24512484

    > (The pic is sample output for an arbitrary query on “vegan vege pesc”. Irrelevant side note: there is no free-world venue for pescatarians.. just one in L/W that scrolled off the screen) > > ## CF > > The federation is not wholly decentralised, obviously, when giant centralised fiefdoms like Facebook “Threads”™ and Cloudflare hook in their technofeudal variety of oppressive infra and abuse their power. > > Each post submission begins with finding a relevant venue for the content and it must be consistent with my sense of ethics. Cloudflare is automatically nixed because it’s inherently centralised in a walled garden (regardless of the user count for any given node). CF is a non-starter for an open, free, and fair society (fair implying power balance, equality, transparency, etc). > > My script queries the catalog of communities for relevant venues. It still prints the Cloudflare walled garden because it’s useful to see what names match my regex queries, which sometimes helps form a better query. It’s the only thing #LemmyWorld is good for (a shit-ton of community names with redundant variations of the same subject matter). Those results are in red, tagged with a thundercloud (🌩 ), and printed first (because when they scroll off the terminal I don’t typically care to scroll up to see them). > > ## non-CF > > CF is not the only issue. Some non-CF nodes are centralized due to uncontrolled growth to disproportionately large sizes. I don’t cancel them hard-and-fast like CF nodes, but they get treated with low “last resort” favorability. They have the warning symbol (⚠) and are in yellow. > > ### Is my math decent? > > My script began by filtering on total user count. Then I realised dead or dormant users probably should not count because such users don’t really contribute to a node’s disproportionate power over a population. It’s active users that matter. But if the number of active users in a day are filtered on, that’s too dynamic for deciding where my post can live for a month or however long it is relevant. So I took the users_active_half_year count. Is that sensible? > > What constitutes an “active” user, simply logging in, or commenting? > > The line is drawn at 2 standard deviations above the average -- after tossing outliers. Nodes with less than 5 active users in ½ a year are likely 1-person nodes which do not influence the average. The average is around 320 active ½yr users per node. The standard deviation is ~702 users. My statistical competence is rusty for sure, but I’m a bit bothered by a standard deviation that’s more than double the mean. Seems like a variation so wild it should perhaps be disregarded. Nonetheless, I opted to flag nodes that exceed ~1724 users_active_half_year. > > The pseudocode looks like this: > > avg=$(sqlite3 "$db" 'select round(avg([counts.users_active_half_year])) from node_tbl where tags not like "%cloudflare%" and [counts.users_active_half_year] > 4') > variance=$(sqlite3 "$db" 'select avg(([counts.users_active_half_year] - subtbl.aua) * ([counts.users_active_half_year] - subtbl.aua)) as var from node_tbl, (select avg([counts.users_active_half_year]) as aua from node_tbl where tags not like "%cloudflare%" and [counts.users_active_half_year] > 4) as subtbl where tags not like "%cloudflare%" and [counts.users_active_half_year] > 4;') > > sqlite3 "$db" "select case when baseurl in (select baseurl from node_tbl where [counts.users_active_half_year] > $avg+sqrt($variance)*2) then '$yellow⚠' else '$cyan' end||baseurl||'$reset',name from community_tbl where (name like '%${1}%' or desc like '%${1}%') and baseurl not in (select baseurl from node_tbl where tags like '%cloudflare%') order by baseurl,name" > > Code is ugly because sqlite does not have a stdev builtin function. > > My other thought is to cut slack for closed nodes because at least they are expected to shrink. To list the possible figures to filter on, this is a record for lemmy.ml (the biggest non-Cloudflare node): > :::spoiler record for lemmy.ml > url = https://lemmy.ml/ > baseurl = lemmy.ml > name = Lemmy > desc = A community of privacy and FOSS enthusiasts, run by Lemmy’s developers > downvotes = 1 > nsfw = 1 > create_admin = 0 > private = 0 > fed = 1 > version = 0.19.12 > open = 1 > usage.users.total = 54790 > usage.users.activeHalfyear = 4201 > usage.users.activeMonth = 2125 > usage.localPosts = 167331 > usage.localComments = 818559 > counts.site_id = 1 > counts.users = 54790 > counts.posts = 167331 > counts.comments = 818559 > counts.communities = 4608 > counts.users_active_day = 947 > counts.users_active_week = 1496 > counts.users_active_month = 2125 > counts.users_active_half_year = 4201 > icon = https://lemmy.ml/pictrs/image/fa6d9660-4f1f-4e90-ac73-b897216db6f3.png > banner = > langs = ["all"] > date = 2019-04-20T18:53:54.608882Z > published = 1555786434000 > time = 1751974533970 > score = > uptime.domain = lemmy.ml > uptime.latency = 0.034 > uptime.countryname = France > uptime.uptime_alltime = 99.04 > uptime.date_created = > uptime.date_updated = 2021-10-29 15:09:21 > uptime.date_laststats = 2025-04-11 21:03:25 > uptime.score = 100 > uptime.status = 1 > isSuspicious = 0 > metrics.usersTotal = 54790 > metrics.usersMonth = 2125 > metrics.usersWeek = 1496 > metrics.totalActivity = 985890 > metrics.localPosts = 167331 > metrics.localComments = 818559 > metrics.averageUsers = 50720.8825256975 > metrics.biggestJump = 225 > metrics.averagePerMinute = 0.02475 > metrics.userActivityScore = 0.055574151274483 > metrics.activityUserScore = 17.9939770031028 > metrics.userActiveMonthScore = 25.7835294117647 > tags = [] > susReason = [] > trust.lastCrawled = 1751974533970 > trust.baseurl = lemmy.ml > trust.metrics.usersTotal = 54790 > trust.metrics.usersMonth = 2125 > trust.metrics.usersWeek = 1496 > trust.metrics.totalActivity = 985890 > trust.metrics.localPosts = 167331 > trust.metrics.localComments = 818559 > trust.metrics.averageUsers = 50720.8825256975 > trust.metrics.biggestJump = 225 > trust.metrics.averagePerMinute = 0.02475 > trust.metrics.userActivityScore = 0.055574151274483 > trust.metrics.activityUserScore = 17.9939770031028 > trust.metrics.userActiveMonthScore = 25.7835294117647 > trust.users = 54790 > trust.name = Lemmy > trust.base = lemmy.ml > trust.actor_id = https://lemmy.ml/ > trust.tags = [] > trust.guarantor = fediseer.com > trust.endorsements = 17 > trust.score = 598.1875 > trust.reasons = [] > blocks.incoming = 0 > blocks.outgoing = 0 > blocked = [] > ::: > > ## Some communities missing from the Lemmyverse DB - why? > Anyone know why some slrpnk.net communities are in the Lemmyverse DB, and some are not? E.g. why is !nolawns@slrpnk.net missing, despite many others from the same node that are included? > > More importantly, what’s the fix apart from crawling all the nodes (which would probably be unwelcome)? Is there another open DB apart from Lemmyverse? There is fediverse.space and fediverse.observer, but they don’t appear to be sharing their data. >

    0
    Wrote a script to find decentralised communities w/in the fedi. It selects nodes w/active users < avg+2σ. Is that a good approach? Check my math plz.

    cross-posted from: https://slrpnk.net/post/24512484

    > (The pic is sample output for an arbitrary query on “vegan vege pesc”. Irrelevant side note: there is no free-world venue for pescatarians.. just one in L/W that scrolled off the screen) > > ## CF > > The federation is not wholly decentralised, obviously, when giant centralised fiefdoms like Facebook “Threads”™ and Cloudflare hook in their technofeudal variety of oppressive infra and abuse their power. > > Each post submission begins with finding a relevant venue for the content and it must be consistent with my sense of ethics. Cloudflare is automatically nixed because it’s inherently centralised in a walled garden (regardless of the user count for any given node). CF is a non-starter for an open, free, and fair society (fair implying power balance, equality, transparency, etc). > > My script queries the catalog of communities for relevant venues. It still prints the Cloudflare walled garden because it’s useful to see what names match my regex queries, which sometimes helps form a better query. It’s the only thing #LemmyWorld is good for (a shit-ton of community names with redundant variations of the same subject matter). Those results are in red, tagged with a thundercloud (🌩 ), and printed first (because when they scroll off the terminal I don’t typically care to scroll up to see them). > > ## non-CF > > CF is not the only issue. Some non-CF nodes are centralized due to uncontrolled growth to disproportionately large sizes. I don’t cancel them hard-and-fast like CF nodes, but they get treated with low “last resort” favorability. They have the warning symbol (⚠) and are in yellow. > > ### Is my math decent? > > My script began by filtering on total user count. Then I realised dead or dormant users probably should not count because such users don’t really contribute to a node’s disproportionate power over a population. It’s active users that matter. But if the number of active users in a day are filtered on, that’s too dynamic for deciding where my post can live for a month or however long it is relevant. So I took the users_active_half_year count. Is that sensible? > > What constitutes an “active” user, simply logging in, or commenting? > > The line is drawn at 2 standard deviations above the average -- after tossing outliers. Nodes with less than 5 active users in ½ a year are likely 1-person nodes which do not influence the average. The average is around 320 active ½yr users per node. The standard deviation is ~702 users. My statistical competence is rusty for sure, but I’m a bit bothered by a standard deviation that’s more than double the mean. Seems like a variation so wild it should perhaps be disregarded. Nonetheless, I opted to flag nodes that exceed ~1724 users_active_half_year. > > The pseudocode looks like this: > > avg=$(sqlite3 "$db" 'select round(avg([counts.users_active_half_year])) from node_tbl where tags not like "%cloudflare%" and [counts.users_active_half_year] > 4') > variance=$(sqlite3 "$db" 'select avg(([counts.users_active_half_year] - subtbl.aua) * ([counts.users_active_half_year] - subtbl.aua)) as var from node_tbl, (select avg([counts.users_active_half_year]) as aua from node_tbl where tags not like "%cloudflare%" and [counts.users_active_half_year] > 4) as subtbl where tags not like "%cloudflare%" and [counts.users_active_half_year] > 4;') > > sqlite3 "$db" "select case when baseurl in (select baseurl from node_tbl where [counts.users_active_half_year] > $avg+sqrt($variance)*2) then '$yellow⚠' else '$cyan' end||baseurl||'$reset',name from community_tbl where (name like '%${1}%' or desc like '%${1}%') and baseurl not in (select baseurl from node_tbl where tags like '%cloudflare%') order by baseurl,name" > > Code is ugly because sqlite does not have a stdev builtin function. > > My other thought is to cut slack for closed nodes because at least they are expected to shrink. To list the possible figures to filter on, this is a record for lemmy.ml (the biggest non-Cloudflare node): > :::spoiler record for lemmy.ml > url = https://lemmy.ml/ > baseurl = lemmy.ml > name = Lemmy > desc = A community of privacy and FOSS enthusiasts, run by Lemmy’s developers > downvotes = 1 > nsfw = 1 > create_admin = 0 > private = 0 > fed = 1 > version = 0.19.12 > open = 1 > usage.users.total = 54790 > usage.users.activeHalfyear = 4201 > usage.users.activeMonth = 2125 > usage.localPosts = 167331 > usage.localComments = 818559 > counts.site_id = 1 > counts.users = 54790 > counts.posts = 167331 > counts.comments = 818559 > counts.communities = 4608 > counts.users_active_day = 947 > counts.users_active_week = 1496 > counts.users_active_month = 2125 > counts.users_active_half_year = 4201 > icon = https://lemmy.ml/pictrs/image/fa6d9660-4f1f-4e90-ac73-b897216db6f3.png > banner = > langs = ["all"] > date = 2019-04-20T18:53:54.608882Z > published = 1555786434000 > time = 1751974533970 > score = > uptime.domain = lemmy.ml > uptime.latency = 0.034 > uptime.countryname = France > uptime.uptime_alltime = 99.04 > uptime.date_created = > uptime.date_updated = 2021-10-29 15:09:21 > uptime.date_laststats = 2025-04-11 21:03:25 > uptime.score = 100 > uptime.status = 1 > isSuspicious = 0 > metrics.usersTotal = 54790 > metrics.usersMonth = 2125 > metrics.usersWeek = 1496 > metrics.totalActivity = 985890 > metrics.localPosts = 167331 > metrics.localComments = 818559 > metrics.averageUsers = 50720.8825256975 > metrics.biggestJump = 225 > metrics.averagePerMinute = 0.02475 > metrics.userActivityScore = 0.055574151274483 > metrics.activityUserScore = 17.9939770031028 > metrics.userActiveMonthScore = 25.7835294117647 > tags = [] > susReason = [] > trust.lastCrawled = 1751974533970 > trust.baseurl = lemmy.ml > trust.metrics.usersTotal = 54790 > trust.metrics.usersMonth = 2125 > trust.metrics.usersWeek = 1496 > trust.metrics.totalActivity = 985890 > trust.metrics.localPosts = 167331 > trust.metrics.localComments = 818559 > trust.metrics.averageUsers = 50720.8825256975 > trust.metrics.biggestJump = 225 > trust.metrics.averagePerMinute = 0.02475 > trust.metrics.userActivityScore = 0.055574151274483 > trust.metrics.activityUserScore = 17.9939770031028 > trust.metrics.userActiveMonthScore = 25.7835294117647 > trust.users = 54790 > trust.name = Lemmy > trust.base = lemmy.ml > trust.actor_id = https://lemmy.ml/ > trust.tags = [] > trust.guarantor = fediseer.com > trust.endorsements = 17 > trust.score = 598.1875 > trust.reasons = [] > blocks.incoming = 0 > blocks.outgoing = 0 > blocked = [] > ::: > > ## Some communities missing from the Lemmyverse DB - why? > Anyone know why some slrpnk.net communities are in the Lemmyverse DB, and some are not? E.g. why is !nolawns@slrpnk.net missing, despite many others from the same node that are included? > > More importantly, what’s the fix apart from crawling all the nodes (which would probably be unwelcome)? Is there another open DB apart from Lemmyverse? There is fediverse.space and fediverse.observer, but they don’t appear to be sharing their data. >

    0
    Practical Retrofitting for Obsolete Devices | Much like classic cars can be fitted with an EV motor, it is possible to retrofit older devices in order to make them usable again in a connected world
  • Nice that the link ultimately leads to a PDF, for those of us who have ditched residential Internet but like to collect stuff for offline reading.

    the wii

    The wii was mentioned in the PDF but not in any detail. I was able to install some FOSS apps on an otherwise useless wii (which was designed to be dependent on a cloud store which has been unplugged). One useful app converted the wii into a media player that could access Samba shares on the network. So if you are lucky enough to have non-“smart” TVs (read: non-snooping TVs), you can use a wii to access your video library -- which can be fed by MythTV.

    Roku (not mentioned in the PDF)

    Roku abandoned the consumers just like Nintendo did with the wii. But you can also install a FOSS app that makes the Roku into a media player that you control, which can be fed by MythTV content for example.

    TomTom (not mentioned in the PDF)

    There is OpenTom.

    The problem -- it’s all glitchy

    The shame of it is that so few people are interested in keeping old hardware going that projects to liberate devices are half-baked and fizzle out with no persistent maintainers. Someone starts a work of passion but these one-man shows never get the traction they need.

  • Looking for some (re-)use cases for older Android smartphones
  • No, I have no links or guides. It was an off-the-cuff idea. But speculatively, I would assume you could start by following one of many guides on how to configure an Android as a functional hotspot, such as:

    Then cut off the uplink by removing the SIM chip or going into airplane mode (then re-enable wi-fi). I’ve not tested that. From there, if that works, you would need a web server. F-droid has a few prospects:

    Ideally you would also have a redirection mechanism that acts like a captive portal and redirects all traffic to your server. That’s getting a bit beyond me.. perhaps a firewall like Netguard or AFwall could do that, but I’m not sure.

  • sheep mowers, not lawn mowers
  • I can understand the /fuck lawns/ ideology in some specific contexts, like lawns that are in water-starved regions. But I don’t get the across the board blanket stance that all lawns are always a bad idea.

    What about buffalo grass lawns, as opposed to blue grass? Or whatever kinds of sustainable grass species that do not need to be watered artificially for a given region?

    What about use cases like turf for dogs and kids to play on?

  • sheep mowers, not lawn mowers
    www.ucdavis.edu Surprising Benefits of Using Sheep as Lawn Mowers

    Discover how UC Davis is using its sheep mowers to not only cut grass on campus, but also to boost sustainability and relieve stress and anxiety for students.

    Surprising Benefits of Using Sheep as Lawn Mowers
    4
    Solarpunk instance going offline for awhile was like a true solarpunk experience
  • Downtime by a freedom-respecting trully decentralised node like slrpnk.net really exposes how Lemmy clients leave a LOT to be desired.

    The prospect of data loss is gutting. A proper client would be syncing threads of interest between the server and my PC, so during downtime I can still at least locally access past content. No proper clients exist for Lemmy.

  • wisdom of button batteries -- anyone think they are a good idea?
  • Interesting. I think I read that somewhere else recently. But I have never seen the rechargeables or the batteries. As someone who buys local and boycotts Amazon, I don’t suppose these are within reach.

  • Using a generator efficiently -- batteries required?

    I’ve noticed when people are using generators to power a tool or appliance, they always directly plug into the generator. Then the generator is burning fuel reguardless of consumption.

    How can that waste be reduced? A simple approach would be to plug your tool into a UPS (uninterruptible power supply) which is then plugged into the generator. This would help capture some of the excess energy when you are not pulling the trigger on a drill. Correct?

    Possible flaw in this thinking: lead-acid batteries can only be trickle charged. So putting a battery in series only captures a small slice of the energy waste. Better than nothing, right?

    I’m asking because I may need to install a generator for a whole house, and it’s not just for incidents. It will run daily in an off-grid house. So I’m trying to work out how to keep the fuel burn at a minimum and also how to fully exploit the available energy when fuel is being burnt (which should generally be during low sunlight times).

    (edit) The UPS idea could backfire. IIRC, some UPSs are designed to always draw power from the battery while charging it at the same time. This is a superior design because it ensures that your appliance gets clean power that closely resembles a sine wave. UPSs that directly power the appliance from the mains and only tap the battery when mains go down have the disadvantage of sending potentially quite dirty wall power with surges and brownouts to the appliance. I think the always-use-battery design becomes self-defeating if using the UPS just to avoid generator waste. Correct? Though I’m confused because I don’t quite grasp how a lead-acid battery can charge as fast as it dissapates energy.. I would think the charging would be slower than the consumption and power to eventually be lost.

    14
    Vcard 4-- Unable to include the /fingerprint/ of an OMEMO encryption key

    RFC 6350 has a “Security Properties” section which only has a “KEY” field. Public keys tend to be huge; likely too big for a Vcard that will then be encoded as a QR code that needs to fit on a business card. Also too big for a Vcard that would be SMS-transmitted. And it does not take much to throw LaTeX’s QR code package out of bounds:

    ERROR: TeX capacity exceeded, sorry [main memory size=5000000]

    It would be far more sensible in most cases to include a fingerprint of a public key, which is just a reasonably short hash of the key. But strangely, RFC 6350 seems to only define a field for whole keys. I thought surely I must be missing something. But indeed it’s an oversight. Someone else noticed the problem as well:

    https://www.av8n.com/computer/htm/distributing-keys.htm

    A fingerprint can probably be stuffed ad hoc into the NOTES field. But without structure it’s not so easy for the person importing the Vcard.

    John Denker proposes a reasonable hack for PGP users. But is there nothing for OMEMO fingerprints that an app like #Snikket can make easy use of?

    Update

    Apparently there is a URI standard format for specifying an OMEMO fingerprint which resembles something like this: xmpp:user@domain.org?omemo-sid-123456789=A1B2C3D4E5F6G7H8I9… So although there is no vcard integration, there is at least a way to do a separate QR code.

    I have 3 fingerprints (one for each XMPP device) and it would not be ideal to have 3 separate QR codes. This vague bug report seems to suggest multiple fingerprints can be concatinated in a single record.. or is the author requesting that?

    The command xmppc -m omemo generates URIs, but it produces a separate record for each fingerprint.

    1
    How can I send a GDPR request to Google if I am not a user/patron? How can Google ID me to process my request if I do not want them to have my name or mailing address?
  • For a bit more depth on this, the EDPB elaborates on the controller/processor separation and relationship in their 2020/07 guidelines.

    It’s a long read, which I just skimmed. It’s mostly grim news. There is even a specific example in that doc stating that an email provider is a processor. But I see an angle:

    A data processor has a duty to offer an appropriate level of security to controllers under Art.32. Another finding by the EDPB is that processors who violate the GDPR can be treated as controllers. It could be argued that (unlike protonmail) Google and MS both fail to offer e2ee and simultaneously supplies its insecure email service to controllers who handle sensitive info like lawyers, hospitals, and banks. The violation of art.32 by Google and MS enables them to be treated as controllers.

  • I enjoy seeing grassy tram tracks, but is there something even better we could grow between rails?
  • For me, rats are filthy, gross, and creepy. But that is not why I fight them. I normally would not care about their presence as long as they stay on their side of the walls. But I fight them for two reasons:

    • Their teeth never stop growing. So they are teething their whole life and also build nests, which means non-stop house destruction.
    • They can carry hantavirus. It’s an airborne transmission and can come from rat urine and feces.
    • The day I decide to remove my ceilings (likely to take away rat turf), I expect to get a shower of feces.
  • How can I send a GDPR request to Google if I am not a user/patron? How can Google ID me to process my request if I do not want them to have my name or mailing address?
  • Google is certainly obligated to comply with the GDPR. But I suspect they are shielded if they can call themselves a /data processor/ and not a /data controller/.

    It’s certainly a big hole in the GDPR. The GDPR framers did not consider the fact that in some situations you have countless data controllers all using the same giant processor, in which case it’s only reasonable for data subjects to be able to go direct to the data processor rather than playing whack-a-mole with controllers.

  • I enjoy seeing grassy tram tracks, but is there something even better we could grow between rails?
  • I’ve heard that as well; and claims that they are essential to keeping the sewer pipes clear. Not sure to what extent I would put stock into all that but they are certainly a pest. Disease, filth, destruction of homes.

    My city ultimately considers them a pest considering there is a tax-funded public pest control office fighting rats year round. People can call them and they will come to the home and deploy rat control measures (usually poison) at no cost, just like a pro exterminator.

  • How can I send a GDPR request to Google if I am not a user/patron? How can Google ID me to process my request if I do not want them to have my name or mailing address?
  • hmm.. painful. That page assumes I speak the language of whatever country my Tor circuit exited. I see at the bottom there is a Google reCAPTCHA barrier.

    Nonetheless, I’m glad to know my options but I guess I’ll have to keep trying that page until it speaks my language before I can work out whether it’s a lesser of evils.

    In the end, my question is more legal than technical. I could find out Google’s postal address and send them an anonymous letter. But the problem is perhaps that legally Google only needs to honor the GDPR requests of those whom it can identify. In fact, I think it’s expressly written somewhere that anonymous people do not have GDPR protection.

    My question may have no answer. Perhaps I have to let Google have my identity as a trade-off to getting GDPR rights.

  • How can I send a GDPR request to Google if I am not a user/patron? How can Google ID me to process my request if I do not want them to have my name or mailing address?

    Sometimes a gmail user sends me an email. I object to that. In principle, I need be able to tell Google that I do not consent to them processing my personal data whatsoever.

    If one of their users addresses an email to one of my email addresses, I do not want Google to store the message or even transmit it. They must refuse to handle my personal data, and thus refuse to process email traffic involving my email address.

    I believe this falls under GDPR Art.18 or 21. But the question is, how can I submit my GDPR request to Google? I can write them a letter but I do not want Google to get my address. I don’t even want Google to know my name. The only thing I want Google to know is my email address, so that Google’s mail servers can refuse mail to that address. But the mere act of submitting a GDPR request inherently requires data subjects to prove their identity to data controllers.

    6
    Asshole Design and Crappy Design @slrpnk.net activistPnk @slrpnk.net
    Bosch Filtrino hot water dispensor… booby-trapped disassembly

    I simply needed to remove the shell of this thing.

    They cannot simply use screws because that would make it easy to disassemble quickly and non-destructively. So they invented some obscure bizarre clips that require special tools and specific /unpublished/ knowledge. So I was forced to pry around the seam of the plastic until some clips broke. I guessed correctly that a sliding motion was needed but this made no difference because they apparently have hidden latches that must be manipulated before sliding.

    Since there are no clues about what prevents us from sliding it open, it’s tempting to pry off the power button in case that is blocking the sliding. The button turns out to be spring-loaded and non-removable, so plastic breaks and shrapnel of small parts scatter when removal is attempted.

    After ripping the motherfucker apart, of course clips are broken and the plastic around the edges is chewn up and malformed. Hitting it lightly with a heat gun makes the plastic edging get closer to its original shape by exploiting the “memory” of plastic but it’s never quite right.. always melts and shrinks a little.

    I find no videos on disassembly. Folks should really post a video showing the frustration of triggering the booby-traps just as a warning to people.

    Of course there are no useful docs for this other than the user manual which pretends that repair is never needed.

    Assholes!

    Update

    I managed to exfiltrate a diagram from a parts shop: !Diagram of Bosch Filtrino THD2021/03 hot water dispenser

    The joint between part 130 and 140 was a bitch.. broke clips. The joint between 130 and 160 was also a bitch.. required plastic to bend in some dicey gymnastics.

    5
    Asshole Design (web edition) @infosec.pub activistPnk @slrpnk.net
    StackExchange / StackOverflow ratchets up the aggression against non-boot-licking free-worlders, using Cloudflare to kill off decentralised access
    github.com 403 error · Issue #175 · httpjamesm/AnonymousOverflow

    What's Happening? Error: Received a non-OK status code 403 when trying to use AnonymousOverflow. It seems upstream started using CloudFlare and this is causing issues How to reproduce: Go to any in...

    403 error · Issue #175 · httpjamesm/AnonymousOverflow

    cross-posted from: https://slrpnk.net/post/21966139

    > A lot of tech knowledge is jailed in #StackOverflow, #StackExchange. Too much. The tech world is very dependant on this single gate keeper. This week, freedom to access SE’s indispensible tech knowledge has been lost. > > ## Timeline > * pre-2016: SE jailed itself inside Cloudflare > * ? - At some point SE became “openly” accessible and Cloudflare-free. But a massive #cookieWall blocked content and it was broken to a large extent. That is, in some browsers there was no way to get past the cookie wall. > * 2022 - #AnonymousOverflow was founded. This front-end platform made the cookie wall problem go away regardless of your browser and anonymity. > * 2023 - SE reverted back to Cloudflare, effectively making the need for AnonymousOverflow more dire; more important. > * This week - SE tunes the Cloudflare settings to aggressively block AnonymousOverflow instances, ultimately killing off free-world access to tech information.

    0
    StackExchange / StackOverflow ratchets up the aggression against non-boot-licking free-worlders, using Cloudflare to kill off decentralised access
    github.com 403 error · Issue #175 · httpjamesm/AnonymousOverflow

    What's Happening? Error: Received a non-OK status code 403 when trying to use AnonymousOverflow. It seems upstream started using CloudFlare and this is causing issues How to reproduce: Go to any in...

    403 error · Issue #175 · httpjamesm/AnonymousOverflow

    cross-posted from: https://slrpnk.net/post/21966139

    > A lot of tech knowledge is jailed in #StackOverflow, #StackExchange. Too much. The tech world is very dependant on this single gate keeper. This week, freedom to access SE’s indispensible tech knowledge has been lost. > > ## Timeline > * pre-2016: SE jailed itself inside Cloudflare > * ? - At some point SE became “openly” accessible and Cloudflare-free. But a massive #cookieWall blocked content and it was broken to a large extent. That is, in some browsers there was no way to get past the cookie wall. > * 2022 - #AnonymousOverflow was founded. This front-end platform made the cookie wall problem go away regardless of your browser and anonymity. > * 2023 - SE reverted back to Cloudflare, effectively making the need for AnonymousOverflow more dire; more important. > * This week - SE tunes the Cloudflare settings to aggressively block AnonymousOverflow instances, ultimately killing off free-world access to tech information.

    0
    Network Neutrality and Digital Inclusion @sopuli.xyz activistPnk @slrpnk.net
    StackExchange / StackOverflow ratchets up the aggression against non-boot-licking free-worlders, using Cloudflare to thwart decentralised access
    github.com 403 error · Issue #175 · httpjamesm/AnonymousOverflow

    What's Happening? Error: Received a non-OK status code 403 when trying to use AnonymousOverflow. It seems upstream started using CloudFlare and this is causing issues How to reproduce: Go to any in...

    403 error · Issue #175 · httpjamesm/AnonymousOverflow

    A lot of tech knowledge is jailed in #StackOverflow, #StackExchange. Too much. The tech world is very dependant on this single gate keeper. This week, freedom to access SE’s indispensible tech knowledge has been lost.

    Timeline

    • pre-2016: SE jailed itself inside Cloudflare
    • ? - At some point SE became “openly” accessible and Cloudflare-free. But a massive #cookieWall blocked content and it was broken to a large extent. That is, in some browsers there was no way to get past the cookie wall.
    • 2022 - #AnonymousOverflow was founded. This front-end platform made the cookie wall problem go away regardless of your browser and anonymity.
    • 2023 - SE reverted back to Cloudflare, effectively making the need for AnonymousOverflow more dire; more important.
    • This week - SE tunes the Cloudflare settings to aggressively block AnonymousOverflow instances, ultimately killing off free-world access to tech information.
    0
    How old TomTom and Garmin Satnavs could be useful, instead of e-waste (but OSMand and Organic Maps need to improve)

    cross-posted from: https://slrpnk.net/post/21637924

    > A box of really old TomToms (softball sized) appeared at a street market a year ago, two for a dollar. I doubt anyone was interested in any and I doubt the seller would bother to return with them. They were probably be wasted. > > In principle, old TomToms could be used to feed a smartphone. If you use a smartphone for navigation, these components compete to suck the battery dry: > > - the color LCD > - GPS radio receiver > - WiFi¹ > - GSM¹ > > (1) only applies to Google boot-lickers who enable location tracking in order to avoid the wait to acquire satellites. > > The GPS is a significant drain because it’s heavy on non-stop calculations, which generates heat (wasted energy), and the heat itself hits the battery even harder. > > We can do better. TomToms with bluetooth tend to suppot NMEA (I think). So the old TomTom w/outdated maps could be used purely to get a fix using its own battery supply, which it then transmits over bluetooth. So you toss TT in your backpack. Disable the GPS on your smartphone and enable bluetooth. Bluetooth is like 1 tenth the energy consumption of GPS. Then you enable mock GPS in advanced settings and run a FOSS bluetooth app that serves as middleware to feed the mock location. > > The problem: OSMand and Organic Maps are both incapable of using mock GPS locations. And even if they add the capability, it would only be in their recent version which has already left behind older phones. (edit: well Organic Maps is not that bad… their latest version supports AOS 5) > > Refusing to support Google means using airplane mode with location svcs off and being wholly dependent on GPS. And for whatever reason it takes me around 20—30 min to get a fix despite being in a large major city; every time. This must make Google happy. The old TomToms were faster at getting a fix. IIRC, they would take 20—30″ only the first time but quickly got a fix after subsequent power cycles in the same area thereafter. > > Smartphones have the sensors to do inertial nav if you calibrate a starting point. But the apps don’t have their shit together yet. I vaguely a recall a FOSS app doing inertial nav, but not too useful if it results in a mock location that OSMand cannot handle. >

    10
    OpenStreetMaps misinfo in Amsterdam -- and cashless bars not marked as such

    As I was passing through Amsterdam, OSM lied to me several times. I don’t have the tools and means to correct the maps for various complex reasons starting with not having a good Internet connection, but really an Amsterdam local should get involved anyway because I’m not sure of all these problems.

    Misinfo:

    • Brouwerij Troost (52.36616°N, 4.87318°E) ← shutdown
    • Manamana (52.35410°N, 4.89033°E) ← apparently shutdown; someone should verify
    • Hecke Electronica (52.35243°N, 4.88725°E) ← shutdown; owner retired. It should be updated to say “/Formerly/ Hecke Electronica” until something replaces it
    • Flower Burger (52.37226°N, 4.88566°E) ← replaced with a /cashless/ croissant shop.
    • CT Coffee & Coconuts (52.35267°N, 4.89150°E) ← replaced with another similar shop. Not sure if other Coffee & Coconuts locations closed or just this one.

    Missing info:

    • Bierfabriek Amsterdam (52.37007°N, 4.89375°E) ← cashless¹!
    • Brouwerij De Engel (52.37007°N, 4.89375°E) ← building is rightfully unnamed since the brewery was only there a couple years before bankruptcy. It should be updated to say “/Formerly/ Brouwerij De Engel” so people actually know the brewery is no longer there, until something else is established there.

    ¹ When a cashless merchant sells alcohol, it’s a trap and an injustice. Having records of alcohol consumption stupid and reckless because it denies consumers their GDPR Art.5 right to data minimisation. And it has consquences. E.g. a scandinavian home buyer was denied a loan because the bank discovered he bought alcohol regularly. Anyway, there will always be dumb consumers who pay for alcohol electronically, but in the very least OSM should mark cashless bars as cashless so wise consumers can easily avoid them. I walked out of my way to visit Bierfabriek only to discover they were cashless. Unlike other cashless bars, they were at least diligent about posting it.

    9
    How old TomTom and Garmin Satnavs could be useful, instead of e-waste (but OSMand and Organic Maps need to improve)

    A box of really old TomToms (softball sized) appeared at a street market a year ago, two for a dollar. I doubt anyone was interested in any and I doubt the seller would bother to return with them. They were probably be wasted.

    In principle, old TomToms could be used to feed a smartphone. If you use a smartphone for navigation, these components compete to suck the battery dry:

    • the color LCD
    • GPS radio receiver
    • WiFi¹
    • GSM¹

    (1) only applies to Google boot-lickers who enable location tracking in order to avoid the wait to acquire satellites.

    The GPS is a significant drain because it’s heavy on non-stop calculations, which generates heat (wasted energy), and the heat itself hits the battery even harder.

    We can do better. TomToms with bluetooth tend to suppot NMEA (I think). So the old TomTom w/outdated maps could be used purely to get a fix using its own battery supply, which it then transmits over bluetooth. So you toss TT in your backpack. Disable the GPS on your smartphone and enable bluetooth. Bluetooth is like 1 tenth the energy consumption of GPS. Then you enable mock GPS in advanced settings and run a FOSS bluetooth app that serves as middleware to feed the mock location.

    The problem: OSMand and Organic Maps are both incapable of using mock GPS locations. And even if they add the capability, it would only be in their recent version which has already left behind older phones. (edit: well Organic Maps is not that bad… their latest version supports AOS 5)

    Refusing to support Google means using airplane mode with location svcs off and being wholly dependent on GPS. And for whatever reason it takes me around 20—30 min to get a fix despite being in a large major city; every time. This must make Google happy. The old TomToms were faster at getting a fix. IIRC, they would take 20—30″ only the first time but quickly got a fix after subsequent power cycles in the same area thereafter.

    Smartphones have the sensors to do inertial nav if you calibrate a starting point. But the apps don’t have their shit together yet. I vaguely a recall a FOSS app doing inertial nav, but not too useful if it results in a mock location that OSMand cannot handle.

    3
    InitialsDiceBearhttps://github.com/dicebear/dicebearhttps://creativecommons.org/publicdomain/zero/1.0/„Initials” (https://github.com/dicebear/dicebear) by „DiceBear”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)AC
    activistPnk @slrpnk.net
    Posts 295
    Comments 686
    Moderates