pluralistic, to random
@pluralistic@mamot.fr avatar

Remember ""? promised us that was a prelude to a Stalinist nightmare in which unaccountable bureaucrats decided who lived or died based on a cost-benefit analysis of what it would cost to keep you alive versus how much your life was worth.

--

If you'd like an essay-formatted version of this thread to read or share, here's a link to it on pluralistic.net, my surveillance-free, ad-free, tracker-free blog:

https://pluralistic.net/2023/04/26/death-panels/#what-the-heck-is-going-on-with-CMS

1/

blog, (edited ) to fediverse
@blog@shkspr.mobi avatar

A (tiny, incomplete, single user, write-only) ActivityPub server in PHP
https://shkspr.mobi/blog/2024/02/a-tiny-incomplete-single-user-write-only-activitypub-server-in-php/

I've written an ActivityPub server which . That's all it does. It won't record favourites or reposts. There's no support for following other accounts or receiving replies. It cannot delete or update posts nor can it verify signatures. It doesn't have a database or any storage beyond flat files.

But it will happily send messages and allow itself to be followed.

This shows that it is totally possible to broadcast fully-featured ActivityPub messages to the Fediverse with minimal coding skills and modest resources.

Why

I wanted to create a service a bit like FourSquare. For this, I needed an ActivityPub server which allows posting geotagged locations to the Fediverse.

I didn't want to install a fully-featured server with lots of complex parts. So I (foolishly) decided to write my own. I had a lot of trouble with HTTP Signatures. Because they are cursed and I cannot read documentation. But mostly the cursed thing.

How

Creating a minimum viable Mastodon instance can be done with half a dozen static files. That gets you an account that people can see. They can't follow it or receive any posts though.

I wanted to use PHP to build an interactive server. PHP is supported everywhere and is simple to deploy. Luckily, Robb Knight has written an excellent tutorial, so I ripped off his code and rewrote it for Symfony.

The structure is relatively straightforward.

  • /.well-known/webfinger is a static file which gives information about where to find details of the account.
  • /[username] is a static file which has the user's metadata, public key, and links to avatar images.
  • /following and /followers are also static files which say how many users are being followed / are following.
  • /posts/[GUID] a directory with JSON files saved to disk - each ones contains the published ActivityPub note.
  • /photos/ is a directory with any uploaded media in it.
  • /outbox is a list of all the posts which have been published.
  • /inbox is an external API endpoint. An ActivityPub server sends it a follow request, the endpoint then POSTs a cryptographically signed Accept message to the follower's inbox. The follower's inbox address is saved to disk.
  • /logs is a listing of all the messages received by the inbox.
  • /new is a password protected page which lets you write a message. This is then sent to...
  • /send is an internal API endpoint. It constructs an ActivityPub note, with attached location metadata, and POSTs it to each follower's inbox with a cryptographic signature.

That's it.

The front-end grabs my phone's geolocation and shows the 25 nearest places within 100 metres. One click and the page posts to the /send endpoint which then publishes a message saying I'm checked in. It is also possible to attach to the post a short message and a single photo with alt text.

There's no database. Posts are saved as JSON documents. Images are uploaded to a directory. It is single-user, so there is no account management.

What Works

  • Users can find the account.
  • Users can follow the account and receive updates.
  • Posts contain geotag metadata.
  • Posts contain a description of the place.
  • Posts contain an OSM link to the place.
  • Posts contain a custom message.
  • Posts autolink #Hashtags (sort of).
  • Posts can have an image attached to them.
  • Messages to the inbox are recorded (but not yet integrated).

ToDo

  • My account only has a few dozen followers, some of whom share the same sever. Even with cURL multi handle, it takes time to post to several servers.
  • It posts plain text. It doesn't autolink websites
  • Hashtags are linked when viewed remotely, but they don't go anywhere locally.
  • There's no language selection - it is hard-coded to English.
  • The outbox isn't paginated.
  • The UI looks crap - but it is only me using it.
  • There's only a basic front-page showing a map of all my check-ins.
  • Replies are logged, but there's no easy way to see them.
  • Doesn't show any metadata about the place being checked-in to. It could use the item's website (if any) or hashtags for the type of amenity it is.
  • No way to handle being unfollowed.
  • No way to remove servers which have died.
  • Probably lots more.

Other Resources

I found these resources helpful while creating this project:

What's Next?

I've raised an issue on Mastodon to see if they can support showing locations in posts. Hopefully, one day, they'll allow adding locations and then I can shut this down.

The code needs tidying up - it is very much a scratch-my-own-itch development. Probably riddled with bugs and security holes.

World domination?

Where

You can laugh at my code on GitHub.

You can look at my check-ins on a map.

You can follow my location on the Fediverse at @edent_location@location.edent.tel

https://shkspr.mobi/blog/2024/02/a-tiny-incomplete-single-user-write-only-activitypub-server-in-php/

#ActivityPub #fediverse #mastodon #php #Symfony

gabboman, to random

"The manga database guide"

-the-heck

wendinoakland, to random
@wendinoakland@mastodon.social avatar

Making some biscotti, but I’ve taken a drastic flavoring turn: they’re heavily dosed with fresh ground cardamom seeds and a few drops of rose essence. Otherwise they’re true to form, flour, sugar, almonds, pistachios.

Codeberg, to random
@Codeberg@social.anoxinon.de avatar

A new version of our membership registration form is live. We are now looking for testers.

If you are not yet a member of our non-profit Codeberg e.V. yet, consider giving the new form a try now.

Join Codeberg e.V.: https://join.codeberg.org/
Learn more about our non-profit: https://docs.codeberg.org/getting-started/what-is-codeberg/#what-is-codeberg-e.v.%3F

lydiaconwell, to random

Today is

What's your favourite part of a dog?

sabderemane, (edited ) to django
@sabderemane@mastodon.social avatar

With the Django Accessibility Team, we are proud to say that Django 5.0 officially supports targets for assistive technologies! 💚

https://docs.djangoproject.com/en/5.0/faq/admin/#what-assistive-technologies-are-supported-for-using-the-admin


witton, to random

Up way too early this morning to fly to Germany for work 🥱

Cab driver somehow didn’t stop talking for the whole hour drive to Heathrow 👀

In that time he said:

  • The Taliban are actually really nice and it's not true they aren't letting women go to school

  • Our houses are so hot in the summer now because insulation

  • Fasting is actually the best way to cure cancer

  • Vegan food gives you man boobs

Oh and apparently he learned all this on YouTube....😂🙃

civodul, to guix
@civodul@toot.aquilenet.fr avatar

“What is Guix?” talk by @jpoiret:

“You may have heard that is just French , with baguette and bérêt.” 🤣
https://hpc.guix.info/events/2023/workshop/program/#what-is-guix-

afg, to random
@afg@vive.im avatar
ericjwrites, to random
@ericjwrites@writing.exchange avatar

role do other writers have in your writing life?

Not much really as I usually stick to myself and write that way. I do have writer people I talk to but not always to solicit advice on social media.

Cruthachail, to privacy

Liberate your digital freedom today.

Twitter.
https://nitter.net
https://fediverse.observer

YouTube.
https://tube.raccoon.quest
https://piped.video
https://joinpeertube.org

Google Map.
https://openstreetmap.org

Reddit.
https://libreddit.kavin.rocks
https://teddit.pussthecat.org
https://join-lemmy.org

TikTok.
https://tok.artemislena.eu

Google Search.
https://startpage.com

Google Translate.
https://translate.metalune.xyz

Imgur, Image storage site.
https://pixelfed.org

Wikipedia.
https://wikiless.org

Discord, Guilded, etc.
https://chat.techsaviours.org
https://xmpp.org/about
https://www.jabber.org/faq.html#jabber
https://www.mumble.info/about

Microsoft Teams, Slack, Zoom, etc.
https://jitsi.riot.im
https://opentalk.eu/en

Microsoft Word, Pages, etc.
https://www.onlyoffice.com/en/download-docs.aspx?from=default#docs-community
https://www.libreoffice.org/download/download-libreoffice

Internet Browsers.
https://floorp.app/download (Firefox-based)
https://github.com/ungoogled-software/ungoogled-chromium (Chromium-based)
https://brave.com (Chromium-based)

Emails.
https://mailfence.com/registration
https://app.tuta.com/login?noAutoLogin=true&keepSession=true

Operating Systems.
https://www.opensuse.org
https://linuxmint.com/about.php
https://grapheneos.org
https://calyxos.org
https://lineageos.org

Password Managers.
https://vault.bitwarden.com/#/register?layout=default
https://keepass.info/download.html

Privacy Guides.
https://www.privacyguides.org/en/about
https://thenewoil.org/en/about

Useful services.

https://joinmobilizon.org/en/#what-is-mobilizon
https://joinbookwyrm.com
https://cryptpad.org/about
https://microbin.eu
https://vikunja.io

#privacy, #privacymatters, #cybersecurity, #cybersec, #infosecurity, #infosec, #opensource, #oss, #freesoftware, #freedom.

  • Removed #proton because of its recent compromise in privacy.
selzero, to mastodon
@selzero@syzito.xyz avatar
gabboman, to random

test 2 electric boogaloo

-the-actual-fuck-did-i-do-to-cause-this-issue

blog, to ai
@blog@shkspr.mobi avatar

The (theoretical) risks of open sourcing (imaginary) Government LLMs
https://shkspr.mobi/blog/2024/01/the-theoretical-risks-of-open-sourcing-imaginary-government-llms/

Last week I attended an unofficial discussion group about the future of AI in Government. As well as the crypto-bores who have suddenly pivoted their "expertise" into AI, there were lots of thoughtful suggestions about what AI could do well at a state level.

Some of it is trivial - spell check is AI. Some of it is a dystopian hellscape of racist algorithms being confidently incorrect. The reality is likely to be somewhat prosaic.

Although I'm no longer a civil servant, I still enjoy going to these events and saying "But what about open source, eh?" - then I stroke my beard in a wise-looking fashion and help facilitate the conversation.

For many years, my role in Cabinet Office and DHSC was to shout the words "OPEN SOURCE" at anyone who would listen. Then patiently demolish their arguments when they refused to release something on GitHub. But I find myself somewhat troubled when it comes to AI models.

Let's take a theoretical example. Suppose the Government trains an AI to assess appeals to, say, benefits sanctions. An AI is fed the text of all the written appeals and told which ones are successful and which ones aren't. It can now read a new appeal and decide whether it is successful of not. Now let's open source it.

For the hard of thinking - this is not something that exists. It is not official policy. It was not proposed as a solution. I am using it as a made-up example.

What does it mean to open source an AI? Generally speaking, it means releasing some or all of the following.

  1. The training data.
  2. The weights assigned to the training data.
  3. The final model.

I think it is fairly obvious that releasing the training data of this hypothetical example is a bad idea. Appellants have not consented to having their correspondence published. It may contain deeply personal and private information. Releasing this data is not ethical.

Releasing how the data is trained is probably fine. It would allow observers to see what biases the model has encoded in it. Other departments could use the model to train their own AI. So I (cautiously) support the opening of that code.

But training weights without the associated data is kind of useless. Without the data, you're unable to understand what's going on behind the scenes.

Lastly, the complete model. Again, I find this problematic. There are two main risks. The first is that someone can repeatedly test the model to find weaknesses. I don't believe in "security through obscurity" - but allowing someone to play "Groundhog Day" with a model is risky. It could allow someone to hone their answers to guarantee that their appeal would be successful. Or, more worryingly, it could find a lexical exploit which can hypnotise the AI into producing unwanted results.

Even if that weren't a concern, it appears some AI models can be coerced into regurgitating their training data - as discovered by the New York Times:

The complaint cited examples of OpenAI’s GPT-4 spitting out large portions of news articles from the Times ... It also cited outputs from Bing Chat that it said included verbatim excerpts from Times articles.
NY Times copyright suit wants OpenAI to delete all GPT instances

Even if a Government department didn't release its training data - those data are still embedded in the model and it may be able to reconstruct them. So any sensitive or personal training data might be able to be reconstructed.

Once again, to be crystal clear, the system I am describing doesn't exist. No one has commissioned it. This is a thought experiment by people who do not work in Government.

So where does that leave us?

I am 100% a staunch advocate for open source. Public Money means Public Code. Make Things Open It Makes Things Better.

But...

It seems clear to me that releasing training data is probably not possible - unless the AI is trained on data which is entirely safe / legal to make public.

Without the training data, the way it is trained is of limited use. It should probably be opened, but would be hard to assess.

The final model can only be safely released if the training data is safe to release.

What next?

I'll admit, this troubles me.

I want to live in a world where the data and algorithms which rule the world are transparent to us. There will be plenty of AI systems which can and should be completely open - nose-to-tail. But there will be algorithms trained on sensitive data - and I can't see any safe, legal, or moral way of opening them.

Again, I want to stress that this particular example is a figment of my imagination. But at some point this will have to be reckoned with.

I'm glad this isn't my problem any more!

https://shkspr.mobi/blog/2024/01/the-theoretical-risks-of-open-sourcing-imaginary-government-llms/

blog, to random
@blog@shkspr.mobi avatar

Reflections on completing NaNoWriMo
https://shkspr.mobi/blog/2023/12/reflections-on-completing-nanowrimo/

The venerable NaNoWriMo is a self-directed challenge. To whit - can you write a 50,000 word novel in the month of November? It doesn't have to be a good novel. You just need to complete it. 50k words over 30 days is 1,667 words per day. If you can type at about 20 Words Per Minute, then you can bash out a novel in 90 minutes per day.

I completed the challenge in 15 days and published a new chapter every day in November. I want to talk about how I did it and what I learned from it.

What I learned

I know that I can bash out a novel in half a month given sufficient motivation. I have dozens of stories that I want to tell. I finally understand why authors complain about their characters not doing what they need them to do. Trying to engineer a nifty plot point is tougher than I thought. It's fascinating to write characters you don't like - and it can be hard to give them a suitable comeuppance. Stories I thought would be short went on far too long. Being clever rarely works. The thundercrack of realising exactly how something is going to work is brilliant.

But, most importantly, I can commit to a creative challenge, execute it, and complete it.

I've loved the feedback people have given - good and bad. I don't think I want to try and publish it as a "real" book. But we'll see.

Proper Planning Prevents Piss-Poor Performance

Throughout September and October, I spent some time planning out the bones of my book. I wrote titles for chapters gave each a very vague synopsis. If I had a thought about a plot-point, I scribbled it down. This is similar to my algorithm to write an assignment. A paragraph of 100 words means that you only have to write 17 paragraphs per day. If your chapter has a beginning, middle, and end then you only need to write 6 paragraphs for each.

I also went to a NaNoWriMo "Write In" during October. It was kind of nice to sit with others and chat about our story ideas. It's also harder to doss about on the Internet when you're surrounded by people typing.

Spell Cheque Is The Enemy

I mostly wrote in plain-text. When I did use something like Google Docs, I got distracted by its spell-check and (often erroneous) grammar suggestions. I found it incredibly important to get into the flow. Running on huge paragraphs without stopping to think if I'd spelled "obstreperous" correctly. All of that can be saved for editing. The most important thing is to get the story out.

The secret to doing the work is doing the work

I realise how privileged I am to have a couple of hours each day to write. And I don't mean to suggest that you should feel bad if you don't. But the nice thing about writing is that there are no short-cuts. I cannot teach you "one weird trick that authors hate". You literally have to sit at the keyboard and fling your fingers at it until the words are on the page.

I suppose the only "trick" is not caring too much about the end result while you're writing. Once the words are out, it's OK to go back and fix all your mistakes.

Would I do it again?

I think so! It's fun writing short stories. They're an interesting way to examine what I think about the world. Perhaps next year I will try to turn one of them into a full length novel.

I should probably read more about writing and attend some of the workshops run by published authors. It might also be useful to get beta-readers to commit to giving me feedback on each chapter.

Would I like to be the next Andy Weir and transform my blog into a best-seller and then a movie? Yes, obviously. But I'd rather be realistic about what I can achieve and how I can maximise the fun I have.

Anyway, you can read Tales of the Algorithm online - and I'd love to know what you think of it.

https://shkspr.mobi/blog/2023/12/reflections-on-completing-nanowrimo/

morgandawn, to random

"The truth is, hate . Inevitably, the kind of person who presides over a giant corporation and wields power over millions of lives - workers, suppliers and customers - believes themselves to be uniquely and supremely qualified to be a wise dictator.

For this kind of person, is "wasteful" and distracts them from the important business of making everyone's life better by handing down unilateral - but wise and clever - edits. Think of 's maxim, "competition is for losers."

That's why giant companies love to merge with each other, and buy out nascent competitors. By rolling up the power to decide how you and I and everyone else live our lives, these executives ensure that they can help us little people live the best lives possible....."

1/n

https://www.anildash.com/2023/02/27/tycoon-martyrdom-charade/

Summary: Corey Doctorow
https://pluralistic.net/2023/07/15/in-the-dumps/#what-vacation

tanyatussing, to random
@tanyatussing@mastodon.social avatar

What a delightful defense from abusive telemarketing efforts, @pluralistic :

"Jolly Roger sells different personas: "Whitebeard" is a confused senior who keeps asking the caller's name, drops nonsequiturs into the conversation, and can't remember how many credit-cards he has. "Salty Sally" is a single mom with a houseful of screaming, demanding children who keep distracting her every time the con artist is on the verge of getting her to give up compromising data."

https://pluralistic.net/2023/07/15/in-the-dumps/#what-vacation

blog, to linux
@blog@shkspr.mobi avatar

Fixing broken suspend on Pop_OS
https://shkspr.mobi/blog/2024/04/fixing-broken-suspend-on-pop_os/

My Linux laptop used to suspend perfectly. I'd close the lid and it would go to sleep. Open it up, it would spring to life - presenting me with a password screen. But, some time in the last few months, it has stopped doing that.

If I close the lid, it keeps running. This is unhelpful.

If I manually run the suspend command - systemctl suspend - the laptop blanks the screen then immediately turns it back on at the lock screen. It doesn't suspend.

I know that suspend physically works - becasue running any of these other command does properly suspend the machine. But powering it back up goes straight to the desktop - no lock screen!

  • sudo /lib/systemd/systemd-sleep suspend
  • sudo echo "mem" > /sys/power/state
  • sudo acpitool -s

The Fix

I found what was causing suspend to fail by running:

  • sudo systemd-analyze verify systemd-suspend.service

That spat out any errors in the suspend service. Highlighted in red was:

systemd-suspend.service: Failed to create systemd-suspend.service/start: Unit nvidia-resume.service is masked.

That was odd, because I don't have an Nvidia graphics card.

Looking in the relevant directory:

cd /etc/systemd/system/systemd-suspend.service.requires

I found:

nvidia-resume.service -> /lib/systemd/system/nvidia-resume.servicenvidia-suspend.service -> /lib/systemd/system/nvidia-suspend.service

I deleted the nvidia-resume.service and nvidia-suspend.service files.

For good measure, I also checked what Nvidia stuff I had installed:

  • apt list --installed | grep -i nvidia

I used sudo apt purge to remove the remnants of any Nvidia stuff. Probably installed by mistake.

After that, suspend worked fine.

What "Fixes" Didn't Work

I went down a bit of a rabbit hole, following lots of suggestions from various people on the Internet. None of these helped me - but they may be useful pointers to you.

I tried disabling everything in . I couldn't get PXSX to be disabled. But even with everything else off, the suspend didn't work.

Killing Bluetooth with didn't work. Nor did disabling WiFi.

I have an updated Kernel 6.8.0. I'm not sure of the ramifications of swapping to an older one.

Running https://github.com/pop-os/pop/issues/1368 and then rebooting didn't make a difference.

Switching from Wayland to X11 didn't fix it. Nor did unplugging the laptop from power. No external peripherals or screens were connected.

The whole system - including Flatpaks and Snaps - was updated.

This shell script works. But there's no way to tie it in to having the power button pressed or the lid closed.

https://shkspr.mobi/blog/2024/04/fixing-broken-suspend-on-pop_os/

idontlikenames, to genart
vwdasher, to news
@vwdasher@aus.social avatar

Forget the old woman who lived in a shoe: A Michigander in her mid-thirties made a home in a Family Fare supermarket sign for nearly a year, local outlet MLive reported. The unnamed woman lived rent-free and went unnoticed by shoppers and workers until a construction crew working on repairs to the building’s roof stumbled upon her humble abode two weeks ago, Midland Police Officer Brennon Warren told the outlet. “She essentially made it home,” Warren said, describing how officers discovered a cozy apartment complete with desk, houseplant, computer printer, coffeemaker, and a cubbyhole of food. It’s unclear why and how the woman chose to build her nest there; police said she’s employed and turned down housing assistance when offered. When she was discovered, some of the store workers said they recognized her from around the property and that she occasionally seemed to vanish into thin air. They now have a new name for the legendary eave-dweller: “The Roof Ninja.” Authorities and Family Fare are working to help her find a new home.

https://www.thedailybeast.com/roof-ninja-woman-secretly-lived-in-michigan-grocery-store-sign-for-nearly-a-year?ref=home

  • All
  • Subscribed
  • Moderated
  • Favorites
  • JUstTest
  • InstantRegret
  • mdbf
  • ethstaker
  • magazineikmin
  • cubers
  • rosin
  • thenastyranch
  • Youngstown
  • osvaldo12
  • slotface
  • khanakhh
  • kavyap
  • DreamBathrooms
  • provamag3
  • Durango
  • everett
  • tacticalgear
  • modclub
  • anitta
  • cisconetworking
  • tester
  • ngwrru68w68
  • GTA5RPClips
  • normalnudes
  • megavids
  • Leos
  • lostlight
  • All magazines