🔐 Did CryptPad help you this year?

Millions of documents were written and shared on CryptPad this year, all encrypted on the user’s device.

If every active user gave 5 EUR in December, the project could be funded for all of 2026 without external grants.

If you want to support private, open-source collaboration, you can donate here:
👉 opencollective.com/cryptpad

Thank you to everyone who already supports us 💚.

#CryptPad #FLOSS #Privacy #E2EE #DigitalSustainability

😂 LOSER

Swiss Eurovision champion Nemo returns winner's trophy to protest Israel's inclusion | Euronews

euronews.com/culture/2025/12/1…

#NEMO #EUROVISION #SWITZERLAND #ISRAEL #PRESS

Exchange email support has landed! We've invited members of our desktop team to Community Office Hours to give us all the details about what's in now and what's coming next!

#Thunderbird #Exchange

blog.thunderbird.net/2025/12/v…

Pleast boost for reach:
On the subject of Linux phone accessibility, the developer of AT-SPI wrote:
There's a long-standing issue that Joanie filed against at-spi2-core for
touch screen support:
gitlab.gnome.org/GNOME/at-spi2…

Ande I haven't taken the time to figure out how best to handle this. I'm
not sure if evdev would do what we need, or we might want to work with the
maintainers of mutter, KWin, etc. to create a protocol for
intercepting/manipulating gestures. We would also need code that can
detect gestures from touch screen presses. NVDA has code that we might be
able to use as a model.

All of this is theoretically on my list of things to do. Of course, help
would be welcome if anyone else was able to take it on.
end quote

For blind people to switch to Linux on phones, we need to use the touch screen. If anyone can help with this, it would allow the blind to take one step closer to being capable of creating our own accessibility, our own environments, in the way that helps us most. See NVDA as a great example of how that goes.
#accessibility #blind #foss #linux #phones #pinephone

reshared this

Here's an interesting bit* of Canadian history and woodworking trivia, brought to you by me being enraged at a screw stripping while I was trying to remove it.

Most people are familiar with two types of screws & drivers: the old fashioned slot screw and the cross-shaped Phillips screw.

What if I told you there was a better way?

In 1908, a Canadian inventor named Peter Lymburger Robertson invented a screw with a square hole for the driver. If you've done any woodworking, you're probably familiar with it. This screw/driver design was very popular, as it is self-centering and the driver rarely slips out of the screw.

So why didn't the Robertson screw catch on in the USA? I blame Henry Ford. He initially was the Robertson screws biggest fan, as it was found to remarkably increase production speed. So Ford tried to get Robertson Inc. to give him an exclusive contract. Robertson wasn't interested. In the 1930s, an American inventor, Henry Phillips, created a screw/driver with a cross-shaped slot. Mr. Ford liked this screw because it worked well with powered screwdrivers. I think he also had sour grapes over Robertson rejecting him. At any rate, Ford's adoption of the Phillips screw/driver made it very popular throughout the USA.

If you've ever tried to build Ikea furniture, you probably know the frustration of cheaply-made Phillips screws. If your screwdriver is not the precise size for the screw, it will slip out of that cross repeatedly or just turn helplessly, unable to engage with the screw. In either case, there's a chance of stripping the screwhead. This can also happen when overtightening.

My husband insists on replacing stock Ikea (and other manufacturer's) screws with Robertsons, especially on anything that requires good structural strength or is made from a harder material. Worst case is that the screwdriver bit gets stuck in the screw, but this is easily remedied. With a Phillips screw, if it strips, you're hooped. You have a loose screw or an embedded screw that's never coming out.

tl;dr: I recommend replacing Phillips screws/drivers with Robertson ones, especially if you find your Phillips screws stripping regularly.

This has been a Canadian Heritage Moment.

interestingengineering.com/inn…

*pun not initially intended, but I kept it because lols

#screws #PhillipsScrews #RobertsonScrews #canada #woodworking #ikea #screwdrivers #HenryFord

in reply to Hubert Figuière

Phillips is a PITA for sure. I tend to use Torx where possible; Robertson seems to have similar qualities. I'm not sure about the IP situation there.

These days, a drill clutch in the chuck allows the operator to set a rough maximum torque; with non-slipping fasteners and powerful or single-speed drills, this prevents accidents. In its absence the Phillips cam-out acts analogously. So, I wonder if the drill clutch was only introduced after the episode you described.

This entry was edited (1 week ago)

Before the Gaza Humanitarian Foundation started operating in May 2025, substantial food entered Gaza, but Hamas seized much of it, diverted large quantities to fighters, and sold the remainder on the black market at prices ordinary Gazans could not afford. None of this appeared in wire service imagery.
honestreporting.com/how-hamas-…
Gaza-based photographers reinforced a global famine narrative, producing images that aligned with a political storyline rather than a complete reality.

#Gaza #media #press

Today is audio ducking day here at interfree! If you use the 64-bit #NVDA, there are a couple small releases for you:
* eloquence: audio ducking now works thanks to akj: github.com/fastfinge/eloquence_64/releases/tag/v5* unspoken-ng: if you use this addon, you also need to update, or audio ducking will remain broken, because someone (glares at himself) didn't quite understand NVWavePlayer: github.com/fastfinge/unspoken-ng/releases/tag/v1.0.3
#nvda
in reply to 🇨🇦Samuel Proulx🇨🇦

Here's my log as of this NVDA session: INFO - __main__ (16:59:42.179) - MainThread (7576): Starting NVDA version alpha-53763,79a07dc1 AMD64 INFO - core.main (16:59:42.248) - MainThread (7576): Config dir: C:\Users\synvo\AppData\Roaming\nvda INFO - config.ConfigManager._loadConfig (16:59:42.257) - MainThread (7576): Loading config: C:\Users\synvo\AppData\Roaming\nvda\nvda.ini INFO - core.main (16:59:42.293) - MainThread (7576): Developer Scratchpad mode enabled INFO - core.main (16:59:43.372) - MainThread (7576): Windows version: Windows 11 25H2 (10.0.26200.7462) workstation AMD64 INFO - core.main (16:59:43.372) - MainThread (7576): Using Python version 3.13.9 (tags/v3.13.9:8183fa5, Oct 14 2025, 14:09:13) [MSC v.1944 64 bit (AMD64)] INFO - core.main (16:59:43.372) - MainThread (7576): Using comtypes version 1.4.13 INFO - core.main (16:59:43.374) - MainThread (7576): Using configobj version 5.1.0 with validate version 1.0.1 WARNING - gui.__getattr__ (16:59:44.166) - MainThread (7576): Importing SettingsPanel from here is deprecated. Import SettingsPanel from gui.settingsDialogs instead. Stack trace: File "nvda.pyw", line 309, in File "core.pyc", line 791, in main File "speech\__init__.pyc", line 161, in initialize File "synthDriverHandler.pyc", line 514, in setSynth File "synthDriverHandler.pyc", line 480, in getSynthInstance File "synthDriverHandler.pyc", line 442, in _getSynthDriver File "importlib\__init__.pyc", line 88, in import_module File "", line 1387, in _gcd_import File "", line 1360, in _find_and_load File "", line 1331, in _find_and_load_unlocked File "", line 935, in _load_unlocked File "", line 1027, in exec_module File "", line 488, in _call_with_frames_removed File "C:\Users\synvo\AppData\Roaming\nvda\addons\Eloquence\synthDrivers\eloquence.py", line 154, in class EloquenceSettingsPanel(gui.SettingsPanel): File "gui\__init__.pyc", line 123, in __getattr__ INFO - synthDriverHandler.setSynth (16:59:45.062) - MainThread (7576): Loaded synthDriver eloquence INFO - mathPres.MathCAT.MathCAT.MathCAT.__init__ (16:59:45.088) - MainThread (7576): MathCAT 0.7.2 installed. Using rules dir: C:\Program Files\NVDA\include\nvda-mathcat\assets\Rules INFO - core._setUpWxApp (16:59:45.102) - MainThread (7576): Using wx version 4.2.4 msw (phoenix) wxWidgets 3.2.8 INFO - brailleInput.initialize (16:59:45.104) - MainThread (7576): Braille input initialized INFO - braille.initialize (16:59:45.104) - MainThread (7576): Using liblouis version 3.36.0 INFO - braille.initialize (16:59:45.104) - MainThread (7576): Using pySerial version 3.5 INFO - braille.BrailleHandler._setDisplay (16:59:45.108) - MainThread (7576): Loaded braille display driver 'noBraille', current display has 0 cells. INFO - core.main (16:59:45.290) - MainThread (7576): Java Access Bridge support initialized INFO - UIAHandler.UIAHandler.MTAThreadFunc (16:59:45.416) - UIAHandler.UIAHandler.MTAThread (12088): UIAutomation: IUIAutomation6 WARNING - gui.__getattr__ (16:59:45.602) - MainThread (7576): Importing SettingsPanel from here is deprecated. Import SettingsPanel from gui.settingsDialogs instead. Stack trace: File "nvda.pyw", line 309, in File "core.pyc", line 916, in main File "globalPluginHandler.pyc", line 31, in initialize File "globalPluginHandler.pyc", line 23, in listPlugins File "importlib\__init__.pyc", line 88, in import_module File "", line 1387, in _gcd_import File "", line 1360, in _find_and_load File "", line 1331, in _find_and_load_unlocked File "", line 935, in _load_unlocked File "", line 1027, in exec_module File "", line 488, in _call_with_frames_removed File "C:\Users\synvo\AppData\Roaming\nvda\addons\navSounds\globalPlugins\NavigationSounds\__init__.py", line 13, in from gui import SettingsPanel, NVDASettingsDialog, guiHelper File "", line 1412, in _handle_fromlist File "gui\__init__.pyc", line 123, in __getattr__ WARNING - gui.__getattr__ (16:59:45.602) - MainThread (7576): Importing SettingsPanel from here is deprecated. Import SettingsPanel from gui.settingsDialogs instead. Stack trace: File "nvda.pyw", line 309, in File "core.pyc", line 916, in main File "globalPluginHandler.pyc", line 31, in initialize File "globalPluginHandler.pyc", line 23, in listPlugins File "importlib\__init__.pyc", line 88, in import_module File "", line 1387, in _gcd_import File "", line 1360, in _find_and_load File "", line 1331, in _find_and_load_unlocked File "", line 935, in _load_unlocked File "", line 1027, in exec_module File "", line 488, in _call_with_frames_removed File "C:\Users\synvo\AppData\Roaming\nvda\addons\navSounds\globalPlugins\NavigationSounds\__init__.py", line 13, in from gui import SettingsPanel, NVDASettingsDialog, guiHelper File "gui\__init__.pyc", line 123, in __getattr__ INFO - _remoteClient.client.RemoteClient.__init__ (16:59:45.604) - MainThread (7576): Initializing NVDA Remote client INFO - core.main (16:59:45.617) - MainThread (7576): NVDA initialized INFO - config.ConfigManager.save (21:31:24.442) - MainThread (7576): Base configuration saved INFO - watchdog.waitForFreezeRecovery (22:21:34.093) - watchdog (664): Starting freeze recovery after 0.5007226999987324 seconds. INFO - watchdog.waitForFreezeRecovery (22:21:34.295) - watchdog (664): Recovered from freeze after 0.7027228999977524 seconds. INFO - config.ConfigManager.save (22:32:42.587) - MainThread (7576): Base configuration saved INFO - watchdog.waitForFreezeRecovery (22:38:07.771) - watchdog (664): Starting freeze recovery after 0.500288700000965 seconds. INFO - watchdog.waitForFreezeRecovery (22:38:08.023) - watchdog (664): Recovered from freeze after 0.7524827000015648 seconds. INFO - watchdog.waitForFreezeRecovery (22:38:31.677) - watchdog (664): Starting freeze recovery after 0.5002370000001974 seconds. INFO - watchdog.waitForFreezeRecovery (22:38:32.030) - watchdog (664): Recovered from freeze after 0.8534374000009848 seconds. INFO - watchdog.waitForFreezeRecovery (22:42:02.649) - watchdog (664): Starting freeze recovery after 0.500347299999703 seconds. INFO - watchdog.waitForFreezeRecovery (22:42:02.952) - watchdog (664): Recovered from freeze after 0.8033006000005116 seconds. INFO - watchdog.waitForFreezeRecovery (22:47:05.011) - watchdog (664): Starting freeze recovery after 0.5001825999970606 seconds. INFO - watchdog.waitForFreezeRecovery (22:47:05.365) - watchdog (664): Recovered from freeze after 0.8542182999990473 seconds. INFO - watchdog.waitForFreezeRecovery (07:32:23.241) - watchdog (664): Starting freeze recovery after 0.5000717000002624 seconds. INFO - watchdog.waitForFreezeRecovery (07:32:23.393) - watchdog (664): Recovered from freeze after 0.652151700000104 seconds. INFO - watchdog.waitForFreezeRecovery (07:32:49.362) - watchdog (664): Starting freeze recovery after 0.5001726999980747 seconds. INFO - watchdog.waitForFreezeRecovery (07:32:49.413) - watchdog (664): Recovered from freeze after 0.5510054999977001 seconds. INFO - watchdog.waitForFreezeRecovery (07:33:14.422) - watchdog (664): Starting freeze recovery after 0.5002416999996058 seconds. INFO - watchdog.waitForFreezeRecovery (07:33:14.675) - watchdog (664): Recovered from freeze after 0.7529530999963754 seconds. INFO - watchdog.waitForFreezeRecovery (07:35:18.576) - watchdog (664): Starting freeze recovery after 0.5003122999987681 seconds. INFO - watchdog.waitForFreezeRecovery (07:35:18.930) - watchdog (664): Recovered from freeze after 0.8539851999958046 seconds. INFO - watchdog.waitForFreezeRecovery (07:35:19.810) - watchdog (664): Starting freeze recovery after 0.5002815000043483 seconds. INFO - watchdog.waitForFreezeRecovery (07:35:21.524) - watchdog (664): Recovered from freeze after 2.2145548000044073 seconds. INFO - watchdog.waitForFreezeRecovery (07:41:17.062) - watchdog (664): Starting freeze recovery after 0.5000419000061811 seconds. INFO - watchdog.waitForFreezeRecovery (07:41:17.517) - watchdog (664): Recovered from freeze after 0.9544934000005014 seconds. INFO - watchdog.waitForFreezeRecovery (07:41:18.043) - watchdog (664): Starting freeze recovery after 0.5000438999995822 seconds. INFO - watchdog.waitForFreezeRecovery (07:41:18.397) - watchdog (664): Recovered from freeze after 0.8533956000028411 seconds. INFO - globalCommands.script_navigatorObject_devInfo (08:26:04.868) - MainThread (7576): Developer info for navigator object: name: "White Spy Adrian 'Musics' &&& Ruby [Eyeball] - Sonic 3 &&& Knuckles: Hard Bosses Edition (V.400.0) -OST- = Major Boss Theme || Username - PREVUE guide Era 2 Song #1 -- HIGHEST QUALITY!" role: BUTTON processID: 8664 roleText: None states: FOCUSABLE isFocusable: True hasFocus: False Python object: Python class mro: (, , , , , , , ) description: '' location: RectLTWH(left=1063, top=720, width=32, height=48) value: None TextInfo: appModule: AppModule(explorer, appName='explorer', processID=8664) appModule.productName: 'Microsoft® Windows® Operating System' appModule.productVersion: '10.0.26100.1301' appModule.helperLocalBindingHandle: c_void_p(2581291365184) appModule.appArchitecture: 'AMD64' windowHandle: 196860 windowClassName: 'Windows.UI.Input.InputSite.WindowClass' windowControlID: 0 windowStyle: 1342177280 extendedWindowStyle: 0 windowThreadID: 9816 windowText: '' displayText: '' UIAElement: UIA automationID: NotifyItemIcon UIA frameworkID: XAML UIA runtimeID: (42, 196860, 4, 4) UIA providerDescription: [pid:8664,providerId:0x0 Main(parent link):Unidentified Provider (unmanaged:Windows.UI.Xaml.dll)] UIA className: SystemTray.NormalButton UIA patterns available: LegacyIAccessiblePattern, ScrollItemPattern, InvokePattern

Short of reading material on a flight this afternoon I noticed the RNIB's Access IT magazine pop into my inbox just before takeoff. It's never exactly been on the front foot, but to arrive *today* with a whole section about deals *from the RNIB themselves* which expire on *December 5th* ... takes the editorial standard to a new low. Still, it killed 15 minutes at 37,000ft. Bertie has had 2 impressive bowel movements whilst out today. Shame the magazine wasn't in braille, could have used it to clean him up!

Zach Bennoui reshared this.

Great software is free software.

Out of the many brilliant #FOSS tools out there, ZDNet’s Jack Wallen picks seven he considers so good he’d gladly “throw down some cash“.

And guess what? Nextcloud is one of them. Well, we wouldn’t settle for less 😉

zdnet.com/article/7-open-sourc…

#foss

When I tried to tell my mom about me wanting to change my name, she made an absolutely massive deal about how people would think it's unprofessional or that I was trying to hide my identity (whatever that means, never mind my legal name is on invoices and anything relating to finances). She hammered it into my head that I wouldn't get a job if I put anything other than my legal name on my resume. But would you look at that, first try putting my authentic self out there and I work at a company with some of the most supportive and awesome coworkers ever, and I love my job. So TLDR, my mom was wrong as is pretty much the norm for any queer issue, and supportive work environments are terrific things.
in reply to Milu P. Pragerova

@Milu FairEmail umí také více účtu, ale Thunderbird není špatný.
Já porad nevím co je špatného na Owner profilu mít Google play, které běží v sandboxu. Nemá v systému žádná práva, je to jak běžná aplikace.Sice teď mám také víc profilů, ale stále si říkám, jestli mi za to stojí.
Newpipe mně momentálně nepřehraje žádné video.

@nacelnik01

in reply to Archos

@Milu Já jen ještě dodám. Třeba originální Grapheneos kamera je nic moc. Ja mám klasickou pixel kameru a vypnutý u ní internet. Zase když už má člověk trochu dražší telefon, chci ho pořádně využít. Jinak k tomu Google play, samozřejmě nechci nikoho nutit co a jak má používat, jen si říkám, jestli se někdy zbytečně netrápíme 😀
Na počasí mam BreezyWeatheer
f-droid.org/packages/org.breez…
A ještě přidám Syncthing - fork
f-droid.org/packages/com.githu…
in reply to Schmaker

@schmaker
Já mám taky Aurora store na apky co na fdroid nejsou a potřebuji je.

Jinak mě asi ta jejich kamera stačí. Nejsem zas nějaký fotící maniak a pro mě je to dobrá kvalita. Skromná jsem 🥸
Na počasí mě asi nejvíce vyhovuje Cirrus. Vyzkoušela jsem jich hodně a toto rozložení mi vyhovuje.
Jinak asi máte Zdeňku pravdu, že u GOS ty apky z play nebudou problém ale za mě osobně se mi líp dýchá čím míň jich tam mám. Jen pocit.

A ted mi při mé hlouposti došlo, že už máte Milane ten pixel s GOSem? Já myslela až po novém roce? 🙃
@archos @nacelnik01

in reply to Milu P. Pragerova

@Milu Přesně tak — u GrapheneOS je to hodně i o pocitu. Technicky ty aplikace z Play problém nejsou, ale když jich má člověk míň, prostě se mu líp dýchá. Hlavně má každý jiné potřeby — já se v práci bez WhatsAppu neobejdu a pravidelně potřebuju navigaci. Pro mě je důležité, aby kalendář, kontakty, e-mail a další věci neměl Google, stejně tak vyhledávání. To, jestli mám Google Play v sandboxu, je mi v zásadě jedno.@schmaker @nacelnik01

I'm a bit worried about the discourse around #ai.

It's totally OK to have strong opinions either way, but I feel like in certain circles it's becoming a purity test.

Do you hold the RIGHT opinions about AI, how it's trained and how it's used?

I think pointing out the dangers is important. Pointing out the risks is important, but recognizing that the situation is nuanced and complex is important as well.

#AI
in reply to Matt Campbell

@matt
To make an analogy to something much less divisive: it was clear to me that at some point, we would want to move away from subversion to some other version control system. It was also clear that the market would eventually settle down, and whatever won would have a clear upgrade path from subversion -- but that couldn't be said for all of the intermediate contenders.

So it was prudent to avoid moving until the winner clearly emerged.

I am letting people play with LLMs in controlled circumstances, wtihout ever putting their results into production and clearly marking what they do and how they got there. Someday it may crash and burn; someday it might produce something worthwhile and sustainable. But until then, the responsible thing to do is not to do it.

in reply to -dsr- (hypoparenthetically)

@dashdsrdash @matt You are absolutely correct for any situation where correctness cannot be trivially and unarguably verified.

There are situations however where correctness is a binary toggle and as plain as the nose on my face.

Does the web interface look like how I want?

Did this Python code build the correct bag of infrastructure needed to run the site?

These are trivially answerable questions.

in reply to Feoh

@matt

Gosh, no. "The web interface looks the way I want" is not "the web interface is correct", and the entire history of software development as a craft slowly working its way into an engineering discipline is the story of why those things are different.

There are things which have provably correct answers, and beyond the trivial ones, they tend to be things like "use this well-tested theorem prover".

The problem with repeatedly feeding LLM output to a theorem prover and checking for correctness is the same problem as with bogosort, the canonically worst of all possible sorting algorithms.

(In case you have forgotten bogosort:

10 LIST.randomize-order

20 if LIST.sorted != true then goto 10

In case anyone is standing next to the computer help desk...
With the ever increasing number of IOT devices in my house, I'm looking to migrate to a more secure networking strategy with 0 trust approach using segmented VLANs. Does anyone have experience with Firewalla vs. equivalent Ubiquiti gear?
I'm currently running an Eero POE gateway with an Eero 7 Max mesh. The network functions well enough, however I'm finding the lack of control over basic routing functionality on the Eero maddening.

Rust 1.92.0 has been released! 🌈 🦀

This version adds RwLockWriteGuard::downgrade(), adds Location::file_as_c_str(), improves diagnostic and validation for various attributes, no longer warns for unused Result<(), Infallible>, and more!

Check out the announcement: blog.rust-lang.org/2025/12/11/…

I'm happy that my proposal for an introductory course on Homotopy Type Theory / Univalent Foundations at the European Summer School in Logic, Language and Information 2026 in Prague was accepted!

A great opportunity to make use of @egbertrijke's recently published book, @MartinEscardo's lecture notes (in Agda!) and @danielgratzer and @carloangiuli's book draft!

Links for the curious:
- Egbert's book: doi.org/10.1017/9781108933568 & arxiv.org/abs/2212.11082
- Martín's notes: cs.bham.ac.uk/~mhe/HoTT-UF-in-…
- Daniel and Carlo's book draft: danielgratzer.com/papers/type-…

#logic #typetheory

This entry was edited (1 week ago)

WhatsApp Desktop Faces Major Update: Users Warned of Forced Logout and Resource-Hungry Upgrade

WhatsApp is preparing to log users out of its PC applications with a sweeping update set to begin on December 9, 2025. This comes as part of Meta’s plan to replace the older native Windows WhatsApp with a Chromium-based version—a move that promises new features but significantly increases system resource usage. While this is not the first warning, it signals a major shift in…

undercodenews.com/whatsapp-des…

“Flutter 3.38.0: How an accessibility upgrade broke Android headings”
abra.ai/blog/flutter-3-38-0-ho…

PR that should fix it:
github.com/flutter/flutter/pul…

from Jan Jaap de Groot (@jjdg.bsky.social).

reshared this

AI shopping assistants now pick sizes and fill carts for you.

WebExpo 2023 speaker @tink asked a bold question. If agents browse for us, what even is the web now?

She zoomed in on what this means for accessibility and why the next UX challenge may involve non-human users.
tetralogical.com/blog/2025/08/…