Awesome. Perhaps now there will be some renewed focus on screen reader support?
Canadian software engineer living in Europe.
Awesome. Perhaps now there will be some renewed focus on screen reader support?
That’s an interesting thought. There’s a lot of cases you see where people have stripped a comic’s name from the bottom of the image, but that’s not really what this project was designed for. Aletheia will guarantee you that the person/company sharing the media is who they say they are, but critically it won’t prevent infringement.
The example I give in my talk is that InfoWars could take a BBC news story and say “we made this”, but it wouldn’t let them modify that story and claim that “the BBC made this”. The goal is to be able to re-connect what someone is saying with the reputation of the person saying it, with the hope that we can start delegating our trust to individuals and organisations again.
I wrote a version of this in Python a few years ago, but it depended on external tools like ffmpeg to work, limiting its portability. The Python requirement was also a major factor for adoption.
If it were ported to Rust, doing the (de)serialisation internally, I believe that it could have far-reaching implications on how we share and consume news:
https://danielquinn.github.io/aletheia/
If you’re interested, I presented the Python version at PyCon UK a while back.
Not throwing any shade, just some advice for the future: try to always consider the problem in the context of the OSI model. Specifically, “Layer 3” (network) is always a better strategy for routing/blocking than “Layer 5” (application) if you can do it.
Blocking traffic at the application layer means that the traffic has to be routed through (bandwidth consumption) assembled and processed (CPU cost) before a decision can be made. You should always try to limit the stuff that makes it to layer 5 if you’re sure you won’t want it.
The trouble with layer 3 routing of course is that you don’t have application data there. No host name, no HTTP headers, etc., just packets with a few bits of information:
syn
) etc.In your case though, you already knew what you didn’t want: traffic from a particular IP, and you have that at the network layer.
At that point, you know you can block at layer 3, so the next question is how far up the chain can you block it?
Most self-hosters will just have their machines on the open internet, so their personal firewall is all they’ve got to work with. It’s still better than letting the packets all the way through to your application, but you still have to suffer the cost of dropping each packet. Still, it’s good enough™ for most.
In your case though, you had setup the added benefit of Cloudflare standing between you and your server, so you could move that decision making step even further away from you, which is pretty great.
You might want to consider just Dockerising everything. That way, the underlying OS really doesn’t matter to the applications running.
I’ve got a few Raspberry Pi’s running Debian, and on top of that, they’re running a kubernetes cluster with K3s. I host a bunch of different services, all in their own containers (effectively their own OS) and I don’t have to care. If I want to change the underlying OS, the containers don’t know either. It’s pretty great.
What’s a PPA?
If you really want an app-like interface, you could make use of Epiphany’s “Install as Web App” feature. Just open Epiphany, go to your Lemmy instance, login, and then select “Install as Web App” from the main menu. Like magic, you get a “Lemmy App” that you can bring up like any other app.
This is my experience in GNOME. Presumably though, it’d work with any desktop environment that respects the XDG standards.
Why didn’t this become a thing? Surely in 2024, we should be able to build packages from source and sign releases with a private key.
What about blog spam though? Surely this would relinquish controls like moderation for your site?
Ooh! Thanks for this! I had no idea it existed.
I recommend writing everything in Bourne shell (/bin/sh
) for a few reasons:
Also two bits of advice.
There have been some great answers on this so far, but I want to highlight my favourite part of Docker: the disposability.
When you have a running Docker container, you can hop in, fuck about with files, break stuff as you try to figure something out, and then kill the container and all of the mess you’ve created is gone. Now tweak your config and spin up a fresh one exactly the way you need it.
You’ve been running a service for 6 months and there’s a new upgrade. Delete your instance and just start up the new one. Worried that there might be some cruft left over from before? Don’t be! Every new instance is a clean slate. Regular, reproducible deployments are the norm now.
As a developer it’s even better: the thing you develop locally is identical to the thing that’s built, tested, and deployed in CI.
I <3 Docker!
I’m not sure. https://mycroft.ai/
appears to be gone, redirected to https://community.openconversational.ai/
. Since the Mycroft devices depended on a central server for configuration (you pushed your config to their website which in turn relayed environment variables to your code), my guess is that the project is dead, but like all good Free software, still out there.
Don’t get me started with Mycroft. I bought the 1st gen device and invested a year of my life writing the first incarnation of Majel built on top of it. When it was ready to share I announced it in their internal developers group and was attacked repeatedly for using the AGPL instead of a licence that’d let them steal and privatise it. Here I was offering a year’s worth of free labour (and publicity, the project exploded on Reddit), and all they could say was: “use the MIT license so we don’t have to contribute anything”.
I’m still bitter.
Nifty! I wrote something similar a couple years ago using Vosk for the stt side. My project went a little further though, automating navigating the programs you start. So you could say: “play the witcher” and it’d check if The Witcher was available in a local Kodi instance, and if not, then figure out which streaming service was running it and launch the page for it. It’d also let you run arbitrary commands and user plugins too!
I ran into two big problems though that more-or-less killed my enthusiasm for developing on it: (1) some of the functionality relied on pyautogui
, but with the Linux desktop’s transition to Wayland, some of the functionality I relied on was disappearing. (2) I wanted to package it for Flatpak, and it turns out that Flatpak doesn’t play well with Python. I was also trying to support both arm64 and amd64 which it turns out is also really hard (omg the pain of doing this for the Pi).
Anyway, maybe the project will serve as some inspiration.
I like Tilix, since it lets me split the terminal with a keyboard shortcut and easily switch between terminals too. I tried using GNOME terminal + tmux, but having to hit Ctrl+b
before the command I wanted got tedious fast.
Upon a cursory read, it sounds like you host a server and then relay all of your data through their centrally controlled system all while also pushing your account data to them.
I’m not sure they understand what “federated” means. Or rather, they know, but they’re hoping we don’t care.
Thanks for posting this! I have the same router.