✍️ New post on defining choices for a Django model field so that they can change without generating a migration.

Written in response to @adamghill ’s question.

#Django

adamj.eu/tech/2025/05/03/djang…

Sur une discussion avec @ericfreyss, voilà un projet un peu embryonnaire (par sa quantité d'entrées et les informations qui y figurent), mais dont j'espère vraiment qu'il grandira vite :

🗺️ :mastodon: Cartographie des collectivités territoriales (villes, régions, départements, offices de tourisme) présentes sur le réseau Mastodon !

umap.openstreetmap.fr/fr/map/c…

I’ve lost count of how many times I was dismissed with very serious issues because I was ‘too young’ and/or a woman.

My Dysautonomia was missed for years because ‘you’re too young for heart problems’

My EDS wasn’t diagnosed until my late thirties because ‘you’re young and otherwise healthy so the pain is in your head’

After my hysterectomy, I bled into my belly for two weeks while the ER repeatedly sent me home saying I was ‘too young’ to be having a serious post operative complication.

Misogyny, discrimination and bias in medicine kills. It disables. It traumatizes.

I was lucky to survive my experiences, but I don’t want any of us to survive based on luck.

We deserve the same level of care as men, and I will keep fighting until we get it.

ctvnews.ca/health/article/mont…

#canpoli #misogyny #healthcare #publichealth #cancer #medicalmisogyny #ableism #bias

Viewpoint is a Windows program that uses Gemini AI to make user interfaces that aren't accessible, pretty accessible! I was able to navigate the PPSSPP interface with it pretty well! So yeah, it's starting to happen, the use of AI for more than just image descriptions.

viewpoint.nibblenerds.com/

#accessibility #blind #ai #ViewPoint #GeminiAI #google

reshared this

Lo de los jueces me lo tienen que explicar como si fuera un niño de 4 años.
15 puñaladas pero no hay ensañamiento. Lo de los atenuantes por alcohol o drogas deberían desaparecer del código penal, porque no hay tragedia de este tipo en que no se apliquen, de lo que se deduce que son utilizados por los delincuentes para conseguir rebajas de condena.

Condenado a 14 años de cárcel tras asestar 15 puñaladas a su pareja cuando tenía a su bebé en brazos

noticiasdenavarra.com/sucesos/…

Ah! I am horrified by how much data Google collects! 😱🤮
Just checked it in my Google account and 𝗶𝘁 𝗸𝗻𝗼𝘄𝘀 𝗺𝗼𝗿𝗲 𝘁𝗵𝗮𝗻 𝗜 𝘁𝗵𝗼𝘂𝗴𝗵𝘁!
This is an amazing @Tutanota article about the hungry Google monster. Also, very good links inserted!
tuta.com/blog/what-does-google…

#Google #techgiant #GoogleAI #privacy #privacyMatters #PrivacySettings #tuta #Tutanota

This entry was edited (7 months ago)

NPR and PBS Vow to Fight Trump’s Executive Order Cutting Federal Funding cordcuttersnews.com/npr-and-pb…

New initiative will give players better and clearer information about accessibility features in games attoday.co.uk/new-initiative-w…

Trump papežem: AI grafika od jeho týmu budí emoce. A o to jde.

1. Odvádí pozornost od aktuálních neúspěchů (poškozená ekonomika a celý systém).

2. Mění hranice myslitelného směrem k: "Trump může vše, nic není svaté."

Řečeno jeho slovy: “I could ...shoot somebody and I wouldn’t lose voters."

(Omyl.)

3. Některým může "symbol světce" imponovat.

Trump ví, že je uměle vytvářený mýtus. Nic víc. Prázdný Putin a jeho roky pečlivě budovaný obraz ovšem ukazují, že ani nic míň.

#komunikace

This entry was edited (7 months ago)

A migrant encampment housing more than 400 people was evicted Thursday night in Mexico City, but city officials deny involvement and claim not to know who did it.

Suspicion is falling on organized crime after reports that people were being forced to pay 8,000 pesos per month for the "right" to stay in the camp, which was in a public park.

jornada.com.mx/2025/05/03/poli…

#Mexico #CDMX #immigration

in reply to Debian

how exactly is reproducability protecting against "supply chain attacks"? if as a maintainer or dev backdoor a dependency of some upstream package and then a new backdoored source code version is released, in this case reproducable builds will only make sure that my backdoor is reproducably built, but it will not mitigate my backdoor.

i think my scenario is *the* definition of a supply chain attack. no? would your reproducible build have caught jia tan? what am i missing? 🧵 1/4

This entry was edited (7 months ago)

Whingy comment on my latest podcast episode:

'Not really a fan of this stuff. I miss the old keyboard and instrument reviews and the musical breakdowns. The problem with this podcast is that you're both too polite and soft spoken and all that. Try getting a bit angry and controversial. There is no such thing as bad language, so where is all the swearing? You can't make a good podcast episode without some swearing.'

Gonna keep posting weekly with my wife @MoonCat, so if you'd like to check it out (despite the no swearing) search for StroongeCast wherever you get your podcasts.
Also, our web page is here: onj.me/stroongecast

Let's boost for reach because comments like that just make me want to promote it even more.

If I have to spend my life catoring to everyone else, I'll never do anything for myself, and that's just boring. #StroongeCast

This entry was edited (7 months ago)

reshared this

Ok wafrn people, it's story time.
A tale of the tech challenges I have been going through in the last weeks.

TL:DR I messed up when submitting my app to IzzyOnDroid. Now I have removed all google / firebase dependencies from the apks, built and published npm package to use Unified Push in modern Expo / React Native and found a way to reduce the app size to be 3x smaller by creating an apk for each architecture

So… A few weeks ago @IzzyOnDroid told a few tips about how to make my app (the wafrn mobile app) better for publishing on android alternative stores

Main pain point were the use of propietary services like Google Services and Firebase Cloud Messaging and also the apk size.

I was told about Unified Push, a library, a FOSS alternative to Google and Firebase services for sending notifications to android devices. After scraping the bottom of the barrel on github and npm found that there was not a person in earth who had tried and succeeded to integrate the Unified Push library with modern versions of Expo (using React Native new architecture), so that was my first challenge.

I had to create and publish a library so people could call the Unified Push Android library from their JS code in React Native. I had to learn modern android development with Kotlin. I had to set up a whole android development environment with all the Gradle stuff, the Java stuff and such.

I tried various VS Code plugins and Fleet from Jetbrians but in the end, the only one that worked well for me and could run my project was Android Studio.

After reading all the documentation for using unified push with Kotlin, I designed how the API surface of the library was going to look like. I wanted to make this abstraction the easiest possible one.

But there were more things to discover. To receive events from unified push in my JS code, I had to learn how to use the internal expo native APIs for android, so I read a lot of kotlin / java code written by the expo team.

After publishing my first version of the expo-unified-push integration I had to rollback to a previous attempt of bridging UP messages to JS because it broke hard with more complex JS code and later publish a third version because I did not get what an Android Intent was in the other previous two

Later came adapting the backend, which was not that hard, but I ran into some rocks there too.

With all this completed, and google / firebase dependencies removed my app was still heavy, at 150 MB.

So, with my newly found knowledge of being a native android developer, I start to tinker with graddle settings and graddle-expo integrations and I found that I was building an app for 4 architectures inside of one. When I split the apks, each to its own architecture, they now weighted between 40mb and 50mb

Now I have the first release published to github: github.com/juandjara/wafrn-rn/…
And the expo-unified-push integration published to NPM: npmjs.com/package/expo-unified…

It was a long journey, but we got there at the end

#Podria-haber-escrito-esto-en-español-con-toda-la-fantasia-que-le-he-metido-a-contar-esta-historia #pero-como-habla-de-tecnologia-queria-que-fuera-algo-un-poco-mas-internacional

in reply to Bolet :neobread_eyes: :yeah_waffy:

Great ! A page dedicated to 3rd party libraries will be added in the coming week

BTW, you can open a pull request to add wafrn to [the list of applications](unifiedpush.org/users/apps/) supporting UP !

PS: we use to use UnifiedPush in one word, if you want to update the Readme

in reply to IzzyOnDroid ✅

Here it is:
## Push<br><br>There are 3 options to be notified of new events:<br>- Keeping a constant connection to the server<br>- Periodically fetching notifications<br>- Supporting push notifications (UnifiedPush + optionally fallback to Google notifications)<br><br>Depending on your application, it may makes sense to support several options. For example, for a social application, some users may want to be informed at most every hour, and others "in real time".<br><br>#### Keeping a connection to the server<br><br>[Quoting Jeroen](https://github.com/Adamant-im/adamant-android/issues/3#issuecomment-553585062):<br><br>> There's multiple options for getting push\*, there's xmpp which works for push\*, an MQTT system works, Server Sent Events is an Http standard for this, and websockets is also often used for this.<br>Tutanota and mastodon seem to like SSE, while telegram and signal use websockets in their FOSS environment (but use google whenever possible)<br><br>> Conversations / Kontalk just uses the xmpp protocol it uses for chat for push notifications\* as it's a realtime protocol anyway<br><br>\* Here, _push_ is used to refer to solutions that allow you to maintain a connection with the server to find out when a new event occurs. This is generally not what push notifications are about.<br><br>Keeping a connection requires implementation of the service, a means of restarting it in the event of failure, network callbacks, etc. This will also increase your application's battery and data consumption. This solution is suitable for applications that require “real-time” events, such as instant messaging applications, for everyday users.<br><br>#### Periodically fetch new messages<br><br>If it's acceptable to have a certain delay before being notified, a periodic task works well. For example, this is how F-Droid checks whether updates are available.<br><br>This solution may also be a good solution for users that rarely use an application and are OK to get non-instant notifications.<br><br>#### Push notifications<br><br>[UnifiedPush](https://unifiedpush.org) is an open standard for push notifications that rely on web push. It allows having efficient "real-time" notifications:<br>- The application will use the service the user has installed<br>- One service keeps a connection for all other applications<br>- You don't have to implement a constant connection to the server<br><br>Web push is another open standard, defined by 3 RFC, commonly used for web applications. Your server may already support it.<br><br>Furthermore, as explained in [the blog post about push for decentralized apps](https://unifiedpush.org/news/20250131_push_for_decentralized/), it is possible to get a fallback to Google Services, that works:<br>- with a FOSS library<br>- without any gateway (the server sends web push requests to Google)<br><br>For some Background on UnifiedPush, see:<br>- [UnifiedPush: a decentralized, open-source push notification protocol](https://unifiedpush.org/news/20221218_unifiedpush/) (12/2022 edited on 04/2025) originally posted [on F-Droid](https://f-droid.org/2022/12/18/unifiedpush.html) (12/2022)<br>- [Push notifications, security and privacy ](https://unifiedpush.org/news/20250513_push_security_privacy/) (05/2025)<br>- [Dear Privacy Aware Android App Devs - Please Use UnifiedPush](https://www.andrewjvpowell.com/articles/dear-privacy-aware-android-app-devs-please-use-unifiedpush/) (10/2021)<br><br>This solution works well for everyday users, and for occasional users<br>
in reply to IzzyOnDroid ✅

Thanks :)

About: android.izzysoft.de/applists/c…

I've dropped support for Gotify-UP (the fork we started UnifiedPush with) and NoProvider2Push a while ago. I think it is better to remove them from the page. Maybe you can list Sunup instead, which is intended to be the goto solution.

PS: Is it possible to correct the heading from Unified Push to UnifiedPush ?

in reply to S1m

Sunup is listed there, and the Gotify Distributor for UP (Gotify-UP) was removed from the list long ago (Gotify itself is still maintained, so their non-UP client is listed in the "others" section – with "others" meaning "non-UP").

I've seen that NoProvider2Push was not only marked experimental, but also has not received any commit for years. The Last-Update date reflects that. I'd rather leave it in as long as it's available, maybe someone would "take over" development…

And I thank you!

Rock band REM releasing a remix of its first single, “Radio Free Europe,” to raise money for RFE/RL after the Trump administration froze its funding. “This was a little thing that we could do to support freedom of expression and particularly great journalism," says Michael Stipe. instagram.com/reel/DJJluTOO9Fj…