Salta al contenuto principale





Magnus Effect Drone Flies, Looks Impossible


By now we’re all familiar with the quad-rotor design most popular among modern drones, and of course there are many variants using more or less propellers and even fixed-wing drones that can fly autonomously. We’ve even seen drones that convert from rotorcraft to fixed-wing mid flight. But there are even more esoteric drones out there that are far more experimental and use even more bizarre wing designs that look like they shouldn’t be able to fly at all. Take [Starsistor]’s latest design, which uses a single motor and an unconventional single off-center wing to generate lift.

This wing, though, is not a traditional foil shape typically found on aircraft. It uses the Magnus effect to generate lift. Briefly, the Magnus effect is when lift is generated from a spinning object in a fluid. Unlike other Magnus effect designs which use a motor to spin a cylinder, this one uses a design inspired by Savonius wind turbines where a wing is free to rotate around a shaft. A single propeller provides a rotational force to the craft, allowing this off-center wing to begin spinning and generating lift. The small craft was able to sustain several flights but was limited due to its lack of active control.

[Starsistor] went through a number of iterations before finally getting this unusual craft to fly. His first designs did not have enough rotational inertia and would flip over at speed, which was fixed by moving the propeller further away from the center of the craft. Eventually he was able to get a working design to prove his conceptual aircraft, and we hope to see others from him in the future.

youtube.com/embed/oh3A8HBEQP0?…


hackaday.com/2025/11/30/magnus…



è proprio un mondo alla rovescia e irragionevole quello dove la principale preoccupazione sono gli immigrati e non la fuga di cervelli... la gente dovrebbe non dormire la notte pensato alle risorse che se ne vanno piuttosto che gli immigrati... anche se questo spiega come mai in italia siamo sempre più imbecilli.

unionesarda.it/economia/lecono…



Windows 11, un altro problema tecnico! Il pulsante di accesso con password scompare


Microsoft ha avvisato gli utenti di un problema tecnico di Windows 11 : dopo il rilascio degli aggiornamenti a partire da agosto 2025, il pulsante di accesso con password potrebbe scomparire dalla schermata di blocco. Sebbene la funzionalità in sé funzioni ancora, l’icona diventa semplicemente invisibile.

Come spiegato da Microsoft nella sua guida aggiornata, il problema riguarda i dispositivi con più metodi di accesso abilitati: PIN, chiave di sicurezza, password, impronta digitale, ecc. Passando il mouse sulla posizione precedente dell’icona, viene visualizzato un hotspot invisibile. Cliccandoci sopra si apre il campo di inserimento della password. Al momento non ci sono soluzioni alternative, se non quella di affidarsi al proprio intuito. Microsoft ha dichiarato di essere al lavoro su una soluzione, ma la data di rilascio è sconosciuta.

Questo non è l’unico problema relativo all’aggiornamento KB5064081. A settembre, Microsoft aveva già risolto un bug che causava arresti anomali durante la riproduzione di video protetti da DRM (Blu-ray, DVD, TV digitale), con immagini bloccate, mosse o addirittura nere.

Nello stesso mese, l’azienda ha anche risolto altri problemi causati dagli aggiornamenti di agosto, come errori di installazione delle app per utenti non amministratori (a causa di una richiesta imprevista di Controllo dell’account utente), nonché gravi ritardi e blocchi durante lo streaming tramite NDI su Windows 10 e 11.

Inoltre, dopo i “Patch Tuesday” di agosto, Microsoft è stata costretta a rilasciare urgentemente ulteriori patch per correggere un bug che impediva l’installazione degli aggiornamenti di sicurezza tramite Windows Server Update Services (WSUS), con codice di errore 0x80240069.

Contemporaneamente è stato risolto anche un altro problema grave: un problema tecnico impediva il funzionamento delle funzioni di ripristino e reimpostazione del sistema sui dispositivi con Windows 10 e Windows 10 Enterprise.

L'articolo Windows 11, un altro problema tecnico! Il pulsante di accesso con password scompare proviene da Red Hot Cyber.



a chi mi dice che la mia radio è una scatoletta (magari un computer?) con un software ricordo che sono una informatica... e veramente fatico a capire quale sia il difetto menzionato. il software può essere infinitamente più flessibile di hardware fisico... chi è vecchio dentro e non ha voglia di imparare cose nuove è pregato almeno di non scassare i maroni. il problema semmai è che quando compri una radio viene rilasciato lo schema elettrico dettagliato, ma non i sorgenti del software.... e in un ambito di smanettoni autorizzati non è appropriato il software chiuso.


Vulnerabilità critica in OpenPLC ScadaBR: CISA avverte di attacchi attivi


Il Cybersecurity and Infrastructure Security Agency (CISA), ha ampliato la lista delle vulnerabilità sfruttate (KEV), segnalando una nuova vulnerabilità che interessa OpenPLC ScadaBR, a causa di indizi di sfruttamento attivi in corso.

USi tratta della falla di sicurezza, identificata come CVE-2021-26829 con un punteggio CVSS di 5,4, interessa le versioni del software su Windows e Linux, a causa di una vulnerabilità di cross-site scripting (XSS) nella pagina system_settings.shtm.

Poco più di un mese dopo la segnalazione di Forescout riguardo alla scoperta di un gruppo di hacktivisti filo-russi, noto come TwoNet, che aveva preso di mira il suo honeypot nel settembre 2025, scambiandolo per un impianto di trattamento delle acque, il difetto di sicurezza è stato aggiunto al catalogo KEV.

Le versioni interessate comprendono:

  • OpenPLC ScadaBR fino alla versione 1.12.4 su Windows
  • OpenPLC ScadaBR fino alla versione 0.9.1 su Linux

“L’aggressore non ha tentato di escalare i privilegi o di sfruttare l’host sottostante, concentrandosi esclusivamente sul livello dell’applicazione web dell’HMI”, ha affermato Forescout.

Come riportano i ricercatori, il gruppo TwoNet ha iniziato le sue operazioni su Telegram all’inizio di gennaio, concentrandosi inizialmente sugli attacchi DDoS (Distributed Denial of Service), prima di passare a una serie più ampia di attività, tra cui il targeting di sistemi industriali, il doxxing e offerte commerciali come il ransomware-as-a-service (RaaS), l’hack-for-hire e l’intermediazione di accesso iniziale.

Il processo di distribuzione dell’impianto esca ha rivelato che l’autore dell’attacco ha impiegato circa 26 ore per passare dalla fase di accesso iniziale a quella di azione dirompente. In questo lasso di tempo, ha sfruttato credenziali predefinite per guadagnare l’accesso iniziale al sistema. Successivamente, ha condotto attività di ricognizione e instaurato la persistenza, tra le altre azioni, creando un nuovo account utente di nome “BARLATI“.

I malfattori hanno sfruttato la vulnerabilità CVE-2021-26829 per alterare la descrizione della pagina di accesso dell’HMI e visualizzare un messaggio pop-up “Hacked by Barlati”, inoltre hanno modificato le impostazioni di sistema in modo da disabilitare i registri e gli allarmi, senza rendersi conto di stare violando un sistema honeypot.

Si è scoperto che i tentativi di sfruttamento provengono dall’infrastruttura Google Cloud con sede negli Stati Uniti, il che dimostra come i malintenzionati stiano utilizzando come armi i servizi Internet legittimi per eludere il rilevamento e confondersi con il normale traffico di rete.

“Abbiamo osservato circa 1.400 tentativi di exploit che hanno interessato più di 200 CVE collegati a questa infrastruttura”, ha affermato Jacob Baines, CTO di VulnCheck . “Sebbene la maggior parte dell’attività assomigliasse ai template standard di Nuclei, le scelte di hosting, i payload e il targeting regionale dell’aggressore non erano in linea con il tipico utilizzo di OAST.”

L'articolo Vulnerabilità critica in OpenPLC ScadaBR: CISA avverte di attacchi attivi proviene da Red Hot Cyber.



Al termine della Divina Liturgia nella chiesa patriarcale di San Giorgio, il Papa e Bartolomeo, nella memoria liturgica di sant’Andrea, hanno impartito la benedizione ecumenica, affacciandosi insieme dal balcone del Phanar, la residenza del Patriarca…



Silicon Valley e Pentagono, il patto da rifare

@Notizie dall'Italia e dal mondo

In uno degli ultimi episodi del Ben & Marc Show, i fondatori della nota società di investimento (Marc) Andreessen (Ben) Horowitz orientano la discussione, assieme ad altri tre partners, su un tema a loro molto caro: le caratteristiche peculiari dell’ecosistema tech americano e le sue capacità di rafforzare le fondamenta



“Un’altra sfida che le nostre Chiese devono affrontare è la minacciosa crisi ecologica, che richiede un’autentica conversione spirituale per cambiare direzione e salvaguardare il creato”.


“In continuità con quanto insegnato dal Concilio Vaticano II e dai miei predecessori, perseguire la piena comunione tra tutti coloro che sono battezzati nel nome del Padre, del Figlio e dello Spirito Santo, nel rispetto delle legittime differenze, è …



“La vita è una ruota”: espressione popolare che sembra fare il verso alla concezione dell’antichità classica della vita e della storia, basata sulla visione naturalistica di stadi, stagioni e cicli ricorrenti, che fatalmente si reduplicano e si ripro…


A Holographic Seven-Segment Clock


Seven-segment displays are one of the most ho-hum ways to display the time. They were cool for a little bit in the 70s, but by now, they’re a little bit old hat. That is, unless you get weird with it. This holographic seven-segment clock from [mosivers] qualifies neatly in that category.

The first step was to make the holographic segment displays, because they’re not really something you can just buy off the shelf. [mosivers] achieved this by using a kit from LitiHolo, which enables you to create holograms by shooting a laser at special holographic film. Only, a few upgrades were made to use the kit with a nicer red diode laser that [mosivers] had on hand for better performance. The seven-segment layouts were carefully recorded on to the film to form the basic numerals of the clock, such that illuminating the films from different angles would light different segments of the numeral. It’s quite involved, but it’s explained well in the build video.

As for the timekeeping side of things, an ESP32 was used, setup to query a network time server to stay accurate. The microcontroller then commands a series of LEDs to light up as needed to illuminate the relevant segments of the holographic film to show the time.

Ultimately, [mosivers] built a cool clock with a look you won’t find anywhere else. It’s a lot more work than just wiring up some classic seven-segment LEDs, but we think the result is worth it. If you fancy other weird seven-segment builds, though, we’ve got plenty of others in the till.

youtube.com/embed/aZqvKl3W9Mc?…

[Thanks to Moritz for the tip!]


hackaday.com/2025/11/30/a-holo…



La Divina Liturgia ortodossa è la celebrazione eucaristica del rito bizantino-slavo, equivalente alla Messa nella tradizione cattolica.


la "verità", come scrive la meloni, è che israele sta riscrivendo la verità a suo uso e consumo, come se fosse la vittima, quando da 50 anni, non in tempo di guerra, invade sistematicamente i territori limitrofi, piazzando coloni che di fatto sono invasori, pure armati, e certo questo non giustifica ovviamente reazioni violente di alcun genere ma di certo neppure quelle di israele e di chi la sostiene, come la meloni, per incomprensibili motivi (avete paura usi le atomiche contro l'italia?)

il problema semmai è che stampa e governo sono la stessa cosa, che non difendono la verità ma interessi corporativi personalistici e non generali. e questo toglie visibilità a chi giustamente, si indigna di fronte alle ingiustizie del mondo, nonché al non rispetto del diritto internazionale. il governo meloni poi, che dovrebbe rappresentare e proteggere tutti gli italiani, difende solo gli elettori di destra. se una cosa come la flottiglia fosse stata organizzata dalla destra, lo vedi come sarebbe intervenuto il governo in difesa. eppure quello che è avvenuto è illegale ma il governo ha mandato una nave finta ed è stato a guardare.

è anche giunto il momento di scaricare esplicitamente trump e il suo cervello bacato e di essere onesti.

davgian reshared this.



ChatGPT, Gemini e Claude? Tutto nasce nel 1968 con il concetto “A*”


Quasi tutto ciò che l’intelligenza artificiale fa oggi si basa su un’idea semplice ma fondamentale: qualsiasi problema può essere ridotto alla ricerca di un percorso da un punto di partenza a un obiettivo.

Il computer considera diversi stati, valuta quali sono più vicini al risultato e procede in sequenza fino a trovare una soluzione.

Il paragone più ovvio è la navigazione. Quando una persona traccia un percorso sulla metropolitana di Londra, diciamo da Bond Street a King’s Cross, considera mentalmente le opzioni: la Central Line fino a Oxford Circus, il cambio sulla Victoria Line, Warren Street, Euston e infine la destinazione finale.

Un computer fa lo stesso, solo più velocemente e senza ipotesi. Cerca sistematicamente un percorso, scegliendo i passaggi più efficienti.

Uno dei primi e ancora più noti algoritmi per tale ricerca è A*(pronunciato “ay-star”). Fu ideato nel 1968, quando gli ingegneri cercavano di insegnare a un robot a muoversi autonomamente in una stanza .

Questo robot, chiamato Shakey, fu creato presso lo Stanford Research Institute di Menlo Park. Sembrava goffo, ma era una vera svolta per l’epoca: una telecamera, un microfono, un telemetro, sensori di collisione, ruote motorizzate e un computer personale.

Se gli veniva detto di “andare in biblioteca a prendere un oggetto”, tracciava un percorso utilizzando una mappa interna, calcolava i passi e iniziava a muoversi, confrontando il suo percorso con le letture dei sensori. Shakey fu il primo robot a prendere decisioni autonomamente, anziché limitarsi a eseguire dei comandi.

Nel 2004, è stato inserito nella Carnegie Mellon University Robotics Hall of Fame, insieme a HAL 9000, R2-D2 e altre icone dell’epoca.

L’algoritmo A* si è dimostrato così accurato da diventare rapidamente un classico. Se esiste un percorso tra due punti, lo trova. Se ci sono più percorsi, sceglie il più breve. Non spreca risorse in deviazioni inutili: funziona nel modo più economico possibile.

Questo è esattamente il principio utilizzato nei dispositivi GPS odierni: mentre un telefono traccia istantaneamente un percorso tenendo conto di ingorghi e blocchi stradali, una versione migliorata di A* lavora dietro le quinte. L’ironia è che un algoritmo progettato per controllare i robot ora aiuta le persone a navigare nel mondo reale ogni giorno.

Ma l’idea di ricerca non funziona solo nello spazio. Può essere applicata anche a problemi logici, che non hanno strade o mappe, ma piuttosto possibili stati e transizioni tra di essi. Un chiaro esempio è il puzzle “a otto cifre”: una griglia 3×3, otto tessere numerate e una cella vuota. Il compito è riorganizzare le tessere in modo che siano in ordine. Ogni spostamento crea un nuovo stato e la soluzione si riduce a trovare una sequenza di passaggi che conduca dalla combinazione iniziale a quella ideale.

Negli anni ’50, due ricercatori americani, Allen Newell e Herbert Simon, decisero che lo stesso principio poteva essere applicato al pensiero umano. In una conferenza a Dartmouth nel 1956, presentarono il programma Logic Theorist , un sistema che cercava dimostrazioni di teoremi matematici. Newell lavorava allora alla RAND Corporation e in seguito si trasferì alla Carnegie Mellon, dove continuò a collaborare con Simon. Simon, professore di scienze gestionali, vinse in seguito il Premio Nobel per l’economia per le sue ricerche su come gli esseri umani prendono decisioni con conoscenze e tempo limitati. Il loro obiettivo comune era semplice: capire se fosse possibile addestrare una macchina a ragionare secondo gli stessi principi degli esseri umani.

Logic Theorist fu il primo “matematico ” artificiale. Il programma considerava le dimostrazioni come catene di passaggi logici che conducevano dagli assiomi alle conclusioni. Dimostrò 38 dei 52 teoremi contenuti nella famosa opera di Bertrand Russell e Alfred Whitehead, Principia Mathematica , e alcuni in modo ancora più conciso ed elegante dell’originale. In sostanza, Logic Theorist fece la stessa cosa di A*: trovò un percorso, solo che non a partire da una mappa, bensì in uno spazio di formule.

Lo stesso Principia Mathematica , scritto all’inizio del XX secolo, tentò di creare una logica su cui costruire tutta la matematica. Un esempio è la legge del modus tollens : se la verità di P implica Q, allora la falsità di Q implica che anche P sia falsa. In un esempio moderno, se vincere alla lotteria rende qualcuno felice, allora la persona infelice non ha certamente vinto. Logic Theorist è stata in grado di trovare tali connessioni da sola, partendo dalle premesse e applicando regole logiche fino a raggiungere la conclusione desiderata.

Questo risultato fu una pietra miliare. Per la prima volta, una macchina non si limitò a calcolare, ma ragionò, dimostrano, passo dopo passo, affermazioni considerate appannaggio della ragione umana. Gli storici dell’intelligenza artificiale in seguito definirono il Teorico della Logica il momento in cui il calcolo divenne ragionamento. Il programma di Newell e Simon dimostrò che il processo di pensiero poteva essere rappresentato come la ricerca di una soluzione all’interno di un vasto spazio di possibili passaggi.

Così, l’idea di ricerca – movimento da un punto a un altro – è diventata il cuore dell’intelligenza artificiale. Dal robot Shakey, che sceglie un percorso attraverso un laboratorio, a un programma in grado di dimostrare verità matematiche, tutti sono manifestazioni di un unico principio: per pensare e prendere decisioni, bisogna essere in grado di trovare una strada verso un obiettivo, anche se la mappa esiste solo nell’immaginazione della macchina.

L'articolo ChatGPT, Gemini e Claude? Tutto nasce nel 1968 con il concetto “A*” proviene da Red Hot Cyber.



La quarta giornata del viaggio del Papa vede gli ultimi appuntamenti in Turchia e l'arrivo in Libano. Dopo la visita di preghiera alla cattedrale armena apostolica, Leone XIV si trasferisce in auto al Phanar, per la Divina Liturgia nella chiesa patri…


Analisi forense choc: ecco i dati nascosti che WhatsApp registra sul tuo telefono


Secondo l’esperto di informatica forense Elom Daniel, i messaggi di WhatsApp possono contenere dati di geolocalizzazione nascosti anche quando l’utente non ha intenzionalmente condiviso la propria posizione.

Ha affermato di aver ricevuto un messaggio WhatsApp di routine da un amico il 3 settembre e di aver successivamente fatto analizzare lo smartphone durante un’analisi forense. Durante questo processo, il dispositivo ha rivelato le coordinate esatte del mittente al momento dell’invio del messaggio.

“Immaginate di ricevere un normale messaggio WhatsApp e poi scoprire che contiene segretamente la posizione esatta di una persona, anche se non l’ha mai inviato”, ha scritto Daniel sulla piattaforma social X.

Sostiene che né lui né la persona con cui stava parlando hanno attivato la geolocalizzazione o condiviso manualmente le coordinate. Tuttavia, sostiene che i metadati del messaggio contenevano dati GPS precisi. “Non li ha condivisi intenzionalmente. Non glieli ho richiesti io. Il dispositivo li ha registrati automaticamente”, ha spiegato l’esperto.

Daniel sostiene che durante un’analisi forense di uno smartphone, terze parti possono estrarre le coordinate del mittente dal telefono del destinatario se i servizi di localizzazione erano abilitati sul dispositivo durante la conversazione. Secondo la sua spiegazione, se un utente ha abilitato l’accesso alla posizione, le sue coordinate esatte possono essere recuperate dal telefono di qualcun altro se questo viene sottoposto a verifica.

Secondo lo specialista, durante la stessa procedura sono stati recuperati anche altri dati. Account e password sincronizzati, cronologia di utilizzo delle app e registri di sistema interni dettagliati sono stati estratti dal dispositivo. Sottolinea che non sono stati utilizzati jailbreak, accesso root o versioni craccate del software.

Ha anche notato che i dati dei gruppi WhatsApp rimanevano nel sistema anche molto tempo dopo aver abbandonato le chat. Tra questi, le date di creazione dei gruppi, i loro creatori e la cronologia degli iscritti.

I file multimediali sul dispositivo, ha affermato, contenevano anche un ricco set di metadati. Foto, video, screenshot e messaggi vocali includevano le coordinate GPS del luogo e dell’ora di creazione del file.

I giornalisti hanno chiesto a WhatsApp di commentare queste dichiarazioni, emerse nel contesto delle recenti discussioni sulle fughe di dati sulla posizione degli utenti sul social network X. Il team di supporto di WhatsApp ha inviato una richiesta al suo sistema di supporto basato sull’intelligenza artificiale.

Nella risposta del servizio, si afferma che la crittografia end-to-end di WhatsApp protegge il contenuto dei messaggi, inclusi i dati sulla posizione, e li rende accessibili solo al mittente e al destinatario. Tuttavia, nel contesto dell’analisi forense, il team di supporto sottolinea che i metadati a livello di dispositivo, come le informazioni sulla posizione, possono essere estratti accedendo allo smartphone stesso o al suo backup.

La risposta sottolinea inoltre che il problema riguarda specificamente il dispositivo e il sistema operativo, non il protocollo di crittografia di WhatsApp. La crittografia non impedisce l’estrazione dei dati di servizio dal telefono e tali informazioni sono protette in modo diverso rispetto al contenuto delle conversazioni. Per gli utenti, questo significa in pratica quanto segue: mentre i messaggi su Messenger rimangono privati, tutto ciò che lo smartphone registra può essere analizzato se qualcuno vi accede fisicamente.

L'articolo Analisi forense choc: ecco i dati nascosti che WhatsApp registra sul tuo telefono proviene da Red Hot Cyber.



“La sua presenza tra noi oggi non è soltanto un onore; è una benedizione per la nostra comunità, per le Chiese in Turchia e per tutti coloro che si adoperano per l’unità dei cristiani”.


Medaglia d’oro olimpica in matematica per DeepSeekMath-V2


L’azienda cinese DeepSeek ha introdotto un nuovo modello specializzato per la risoluzione di problemi matematici, DeepSeekMath-V2. Si tratta di un modello linguistico su larga scala, pensato appositamente per la dimostrazione di teoremi e per i problemi olimpici, la cui principale caratteristica distintiva è che non si limita a produrre risposte, ma verifica anche la correttezza del proprio ragionamento.

DeepSeekMath-V2 risponde essenzialmente a una domanda di vecchia nell’intelligenza artificiale: come garantire che un modello sia arrivato alla soluzione corretta in modo equo, anziché indovinare il risultato o trovare una scorciatoia ma sbagliata. La maggior parte dei modelli moderni è addestrata a giungere più frequentemente alla risposta finale corretta, per la quale vengono premiati con un sistema di ricompensa simile all’apprendimento per rinforzo.

Ma in matematica, questo non è sufficiente: in molti problemi, la risposta in sé non è importante quanto una dimostrazione rigorosa e trasparente. Gli autori affermano esplicitamente che un risultato finale esatto non garantisce la correttezza del ragionamento e, per i teoremi, non esiste un “numero corretto” preimpostato da verificare.

DeepSeekMath-V2 è basato sulla base sperimentale DeepSeek-V3.2-Exp-Base. Il team addestra un modello di verifica separato che valuta le dimostrazioni matematiche, ricercando lacune logiche ed errori passo dopo passo, e quindi utilizza questo verificatore come “giudice” per il modello principale del generatore di dimostrazioni.

Il generatore riceve una ricompensa non solo per la risposta finale corretta, ma anche per la capacità del suo ragionamento di superare un rigoroso test di convalida. Se il test fallisce, il modello viene premiato per aver tentato di identificare autonomamente i punti deboli della sua soluzione e di riscrivere la dimostrazione in modo che superi il test di convalida.

Per evitare che il sistema si blocchi quando il generatore diventa più intelligente del verificatore, gli sviluppatori scalano separatamente le risorse di calcolo per il verificatore. Il verificatore impara da esempi sempre più complessi e difficili da verificare, generati dal modello stesso man mano che le sue capacità aumentano. Questo ciclo chiuso di “generazione, verifica e miglioramento del verificatore” aiuta a colmare il divario di competenze tra le due parti del sistema e a preservare la sua capacità di autocorreggersi.

I risultati sono impressionanti. In un post su GitHub, il team afferma che DeepSeekMath-V2 ha ottenuto l’oro alle Olimpiadi Internazionali di Matematica del 2025 e alle Olimpiadi Cinesi di Matematica del 2024, e alla Putnam Mathematical Competition del 2024, il modello ha ottenuto 118 punti su 120 utilizzando il calcolo scalabile nella fase di soluzione.

Nel benchmark specializzato IMO-ProofBench, sviluppato dal team Google DeepMind per il proprio modello Gemini DeepThink, DeepSeekMath-V2, secondo un’analisi tecnica indipendente, supera DeepThink nei test di base.

I report informali sui punteggi pubblicati da ricercatori e appassionati forniscono dati più specifici: DeepSeekMath-V2 ottiene un punteggio di circa il 99% nella parte base di IMO-ProofBench e del 61,9% in quella avanzata. Lo stesso report afferma che questo risultato è superiore alle prestazioni dei modelli GPT-5 e Gemini in questo set di compiti, sebbene non si tratti di una classifica ufficiale, bensì di un confronto tra singoli test.

Un altro punto importante per la comunità: DeepSeekMath-V2 viene pubblicizzato come la prima intelligenza artificiale matematica open source a raggiungere prestazioni di livello gold su problemi di livello IMO. La notizia è già stata riportata su forum specializzati, dove vengono pubblicati link al documento e ai pesi del modello.

Il modello è disponibile su GitHub e Hugging Face. Il repository è ospitato su Apache 2.0 e i modelli stessi sono concessi in licenza con una licenza separata che ne regola l’uso, incluso l’uso commerciale. Il lancio e la natura open source di DeepSeekMath-V2 sono ulteriormente annunciati in blog specializzati e post sui social media, sottolineando che i pesi possono essere scaricati liberamente ed eseguiti sul proprio hardware, nel rispetto dei termini della licenza del modello.

Per ora, DeepSeekMath-V2 rimane un esempio altamente specializzato, ma altamente esemplificativo di come l’intelligenza artificiale stia spostando la sua attenzione dall'”indovinare la risposta corretta” al controllo del processo di pensiero del modello. E la risposta entusiasta a questo nuovo prodotto da parte di sviluppatori, ricercatori e appassionati di competizioni matematiche dimostra che la corsa è ora aperta non solo per l’intelligenza generale, ma anche per la qualità e la verificabilità del ragionamento.

L'articolo Medaglia d’oro olimpica in matematica per DeepSeekMath-V2 proviene da Red Hot Cyber.



Attacco supply chain npm, Shai-Hulud diffonde codice malevolo in centinaia di pacchetti


L’ecosistema npm è nuovamente al centro di un vasto attacco alla supply chain attribuito alla campagna Shai-Hulud. Questa ondata ha portato alla diffusione di centinaia di pacchetti apparentemente legittimi, ma alterati con codice malevolo, coinvolgendo librerie utilizzate in servizi diffusi come Zapier, ENS Domains, PostHog e Postman.

Secondo le prime analisi, l’obiettivo principale degli aggressori era sottrarre credenziali degli sviluppatori e token utilizzati nei processi di integrazione e distribuzione continua (CI/CD). Le informazioni rubate venivano poi inviate automaticamente su GitHub in forma codificata. Al momento, sono stati individuati su GitHub oltre 27.600 record riconducibili all’operazione.

Shai-Hulud aveva già fatto la sua comparsa a metà settembre, quando aveva compromesso 187 pacchetti npm, sfruttando un payload in grado di propagarsi autonomamente e di sottrarre chiavi tramite lo strumento TruffleHog. La tecnica utilizzata prevedeva il recupero automatico di pacchetti originali, la modifica del file package.json con script malevoli e la successiva pubblicazione delle versioni infette tramite account di manutentori compromessi.

Il ricercatore di Aikido Security Charlie Eriksenè stato tra i primi a rilevare il nuovo attacco, identificando inizialmente 105 pacchetti sospetti, poi cresciuti rapidamente a 492. Un’analisi più ampia ha mostrato che l’attacco si stava espandendo rapidamente: secondo i ricercatori di Wiz, il numero totale di pacchetti malevoli ha superato i 27.000, distribuiti tramite circa 350 account npm compromessi. Wiz segnala anche che, nelle ore più intense dell’operazione, venivano creati circa 1.000 nuovi repository GitHub ogni mezz’ora.

I repository individuati su GitHub rivelano che i dispositivi degli sviluppatori che utilizzavano pacchetti infetti, e che conservavano sul proprio ambiente credenziali GitHub, sono stati compromessi. L’azienda Step Security, specializzata nella protezione delle pipeline CI/CD, ha condotto un’analisi tecnica del nuovo malware evidenziando due file principali: setup_bun.js, presentato come installatore di Bun ma in realtà utilizzato per distribuire il payload, e bun_environment.js, un file da 10 MB pesantemente offuscato.

Gli analisti hanno riscontrato un uso massiccio di tecniche di offuscamento, incluse lunghe stringhe esadecimali, cicli anti-analisi e funzioni progettate per rendere difficile l’ispezione del codice. Il processo d’infezione è composto da cinque fasi e include il furto sistematico di credenziali (token GitHub, npm, AWS, Google Cloud, Azure e altri servizi) e un’azione distruttiva finale che consiste nella sovrascrittura completa della directory home della vittima. Questa fase entra in azione solo quando si verificano specifiche condizioni, come l’impossibilità di autenticarsi o di generare un nuovo repository GitHub.

Secondo Koi Security, considerando tutte le versioni compromesse, gli effetti dell’attacco hanno interessato complessivamente oltre 800 pacchetti npm. Il malware crea inoltre quattro file-cloud.json, contents.json, environment.json e truffleSecrets.json per poi caricare i dati sottratti su repository appositamente creati, tutti contrassegnati dalla dicitura “Shai-Hulud : The Second Coming“.

Gli attaccanti avrebbero assunto il controllo anche di alcuni account GitHub, sfruttandoli per generare rapidamente nuovi repository contenenti i file associati al malware. Nonostante GitHub proceda alla rimozione immediata dei repository sospetti, la rapidità con cui vengono creati nuovi contenuti rende complesso bloccare completamente la campagna.

Tra i pacchetti infetti individuati da Aikido Security figurano componenti chiave di Zapier, ENS Domains, PostHog e AsyncAPI. Le librerie di ENS hanno particolare rilevanza all’interno dell’ecosistema Ethereum, poiché vengono utilizzate in portafogli, DApp, exchange e strumenti di gestione dei domini .eth.

La piattaforma npm consente ancora di scaricare i pacchetti manomessi, anche se in alcuni casi compare un avviso che segnala la pubblicazione non autorizzata dell’ultima versione.

Gli esperti raccomandano alle organizzazioni di compilare un elenco completo dei pacchetti compromessi, sostituirli con versioni sicure e procedere immediatamente alla rigenerazione di tutte le chiavi e i token utilizzati nei workflow CI/CD. Wiz consiglia inoltre alle aziende di rinnovare le credenziali associate a GitHub, npm e servizi cloud. Aikido Security suggerisce anche di disattivare gli script post-installazione durante i processi di integrazione continua, quando possibile.

La riattivazione della campagna Shai-Hulud avviene in un periodo in cui npm è già oggetto di vari attacchi significativi alla supply chain. GitHub ha annunciato ulteriori misure di sicurezza, che tuttavia sono ancora in fase di progressiva implementazione.

L'articolo Attacco supply chain npm, Shai-Hulud diffonde codice malevolo in centinaia di pacchetti proviene da Red Hot Cyber.



Papa in Turchia: alla cattedrale armena, “recuperare l’unità che esisteva nei primi secoli”

“Questa visita mi offre l’opportunità di ringraziare Dio per la coraggiosa testimonianza cristiana del popolo armeno nel corso dei secoli, spesso in circostanze tragiche”.




L’IA può davvero aiutare le economie emergenti?

Per vedere altri post come questo, segui la comunità @Informatica (Italy e non Italy 😁)

Secondo il premio Nobel per l'economia nel 2001 Michael Spence, sebbene l'intelligenza artificiale richieda un accesso affidabile all'elettricità e a Internet mobile, una volta risolti questi problemi, permetterà ai paesi emergenti in Africa e Asia di recuperare



Has Steampunk Delivered the Hoverboard?


The hoverboard, one of the teen crazes of the last decade, is both a marvel of technology and a source of hacker parts that have appeared in so many projects on these pages. It contains an accelerometer or similar, along with a microcontroller and a pair of motor controllers to drive its in-wheel motors. That recipe is open to interpretation of course and we’ve seen a few in our time, but perhaps not quite like this steampunk design from [Skrubis]. It claims a hoverboard design with no modern electronics, only relays, mercury switches, and neon bulbs.

The idea is that it’s a hoverboard from 1884 using parts available in that era, hence there’s talk of telegraph relays and galvanomic piles. The write-up is presented in steampunk-style language which if we’re honest makes our brain hurt, but the premise is intriguing enough to persevere. As far as we can see it uses a pair of relays and a transformer to make an oscillator, from which can be derived the drive for a 3-phase motor. This drive is sent to the motors by further relays operating under the influence of mercury tilt switches.

There are a full set of hardware designs once you wade past the language, but as yet it has no evidence of a prototype. We admit we kinda want it to work because the idea is preposterous enough to be cool if it ran, but we’d be lying if we said we didn’t harbor some doubts. Perhaps you our readers can deliver a verdict, after all presenting you with entertainment is what it’s all about. If a working prototype surfaces we’ll definitely be featuring it, after all it would be cool as heck.

Oddly this isn’t the first non-computerized balance transport we’ve seen.


Header: Simakovarik, CC BY-SA 4.0.


hackaday.com/2025/11/29/has-st…



DIY Light Panels Work With Home Assistant


There are a few major companies out there building colorful LED panels you can stick on your wall for aesthetic purposes. Most commercial options are pretty expensive, and come with certain limitations in how they can be controlled. [Smart Solutions For Home] has whipped up a flexible DIY design for decorating your walls with light that is altogether more customizable.

In this case, the DIY light panels ape the hexagonal design made popular by brands like Nanoleaf. In this case, each hexagon panel runs an ESP32 microcontroller, which controls a series of WS2812 addressable LEDs. This allows each panel to glow whatever color you like, and they’re arranged in an XY grid to enable you to light individual panels with a range of different geometric effects. The benefit of having a full microcontroller on each panel is that they can act quite independently—each one able to be used as a smart light, an notification display, or even as a physical button, all integrated with Home Assistant.

If you’re a fan of DIY smart home products, these might be right up your alley. They’re supremely flexible and customizable, and can do a lot of things that commercial versions can’t easily replicate. Just don’t ignore the fact that they require a considerable amount of assembly, what with the custom PCBs, 3D printed enclosures, and front diffusers to deal with. That’s just the way the LED wall crumbles.

We’ve seen other similar builds before, too. Why? The simple fact is that a lot of people want cool glowy panels on their wall without having to pay through the nose for them.

youtube.com/embed/KsK9eldbPj0?…


hackaday.com/2025/11/29/diy-li…



La nuova guerra europea alla privacy Chat Control violerà i diritti fondamentali

In teoria, Chat Control avrebbe dovuto essere sepolto il mese scorso. Il minaccioso piano dell'UE di scansionare in massa i messaggi privati ​​dei cittadini ha incontrato una schiacciante resistenza pubblica in Germania, con il governo del paese che si è rifiutato di approvarlo. Ma Bruxelles raramente si tira indietro solo perché i cittadini lo chiedono. E così, fedele alla sua forma, una versione rielaborata del testo è già in fase di elaborazione, questa volta nascosta, a porte chiuse.

unherd.com/2025/11/europes-new…

@Privacy Pride



On the Benefits of Filling 3D Prints With Spray Foam


Closed-cell self-expanding foam (spray foam) is an amazing material that sees common use in construction. But one application that we hadn’t heard of before was using it to fill the internal voids of 3D printed objects. As argued by [Alex] in a half-baked-research YouTube video, this foam could be very helpful with making sure that printed boats keep floating and water stays out of sensitive electronic bits.

It’s pretty common knowledge by now that 3D printed objects from FDM printers aren’t really watertight. Due to the way that these printers work, there’s plenty of opportunity for small gaps and voids between layers to permit moisture to seep through. This is where the use of this self-expanding foam comes into play, as it’s guaranteed to be watertight. In addition, [Alex] also tests how this affects the strength of the print and using its insulating properties.

The test prints are designed with the requisite port through which the spray foam is injected as well as pressure relief holes. After a 24 hour curing period the excess foam is trimmed. Early testing showed that in order for the foam to cure well inside the part, it needed to be first flushed with water to provide the moisture necessary for the chemical reaction. It’s also essential to have sufficient pressure relief holes, especially for the larger parts, as the expanding foam can cause structural failure.

As for the results, in terms of waterproofing there was some water absorption, likely in the PETG part. But after 28 hours of submerging none of the sample cubes filled up with water. The samples did not get any stronger tensile-wise, but the compression test showed a 25 – 70% increase in resistance to buckling, which is quite significant.

Finally, after tossing some ice cubes into a plain FDM printed box and one filled with foam, it took less than six hours for the ice to melt, compared to the spray foam insulated box which took just under eight hours.

This seems to suggest that adding some of this self-expanding foam to your 3D printed part makes a lot of sense if you want to keep water out, add more compressive strength, or would like to add thermal insulation beyond what FDM infill patterns can provide.

youtube.com/embed/Pkk9Lt-j2hM?…


hackaday.com/2025/11/29/on-the…



A Flexible Light Inspired by IKEA


The IKEA SMÅSNÖRE is a flexible silicone rod with an embedded LED strip, attached at each end to a base. It’s eye-catching enough, and it has the useful property of providing a diffuse light from multiple angles that makes it a promising candidate for a work lamp. That’s enough for [Daniel James] to create his own lamp on a similar vein.

The electronics of his lamp are straightforward enough: a 12 volt LED strip whose brightness is controlled by a Pi Pico in response to a potentiometer as a brightness control. It’s not quite stiff enough to form the arch itself, so he’s created a 3D printed chain that forms the structure of the lamp. Similar to a bicycle chain in the way it’s constructed, it has individual links that slot together and pivot. The electronics are in the printed base at one end.

We like this lamp a lot, for the light it gives on the bench and for the ingenuity of the printed chain. We might even make one for ourselves.


hackaday.com/2025/11/29/a-flex…



il ponte sullo stretto mi va stretto


quando sento il capo di forza italia affermare che il ponte sullo stretto va fatto perché lo voleva berlusconi mi pija lo sconforto

reshared this





Ustica è una questione morale. E civica


@Giornalismo e disordine informativo
articolo21.org/2025/11/ustica-…
Nei giorni scorsi abbiamo promosso, insieme con l’Associazione dei familiari delle vittime della strage di Ustica e la Presidente Daria Bonfietti un incontro-stampa per chiedere di non archiviare le indagini. Per la prima volta a livello nazionale, a






Un server ActivityPub in un singolo file PHP? Ecco come fare... Il post di @tofeo

Qualsiasi programma per computer può essere progettato per essere eseguito da un singolo file, se la progettazione è abbastanza sbagliata! 🤣

Volevo creare il server #Fediverse più semplice possibile, che potesse essere utilizzato come strumento didattico per mostrare come funziona ActivityPub / Mastodon.

shkspr.mobi/blog/2024/02/activ…

@Che succede nel Fediverso?


ActivityPub Server in a Single PHP File


shkspr.mobi/blog/2024/02/activ…

Any computer program can be designed to run from a single file if you architect it wrong enough!

I wanted to create the simplest possible Fediverse server which can be used as an educational tool to show how ActivityPub / Mastodon works.

The design goals were:

  • Upload a single PHP file to the server.
  • No databases or separate config files.
  • Single Actor (i.e. not multi-user).
  • Allow the Actor to be followed.
  • Post plain-text messages to followers.
  • Be roughly standards compliant.

And those goals have all been met! Check it out on GitLab. I warn you though, it is the nadir of bad coding. There are no tests, bugger-all security, scalability isn't considered, and it is a mess. But it works.

You can follow the test user @[url=https://example.viii.fi/example]example@example.viii.fi[/url]

Architecture


Firstly, I've slightly cheated on my "single file" stipulation. There's an .htaccess file which turns example.com/whatever into example.com/index.php?path=whatever

The index.php file then takes that path and does stuff. It also contains all the configuration variables which is very bad practice.

Rather than using a database, it saves files to disk.

Again, this is not suitable for any real world use. This is an educational tool to help explain the basics of posting messages to the Fediverse. It requires absolutely no dependencies. You do not need to spin up a dockerised hypervisor to manage your node bundles and re-compile everything to WASM. Just FTP the file up to prod and you're done.

Walkthrough


This is a quick ramble through the code. It is reasonably well documented, I hope.

Preamble


This is where you set up your account's name and bio. You also need to provide a public/private keypair. The posting page is protected with a password that also needs to be set here.
PHP // Set up the Actor's information $username = rawurlencode("example"); // Encoded as it is often used as part of a URl $realName = "E. Xample. Jr."; $summary = "Some text about the user."; $server = $_SERVER["SERVER_NAME"]; // Domain name this is hosted on // Generate locally or from cryptotools.net/rsagen // Newlines must be replaced with "\n" $key_private = "-----BEGIN RSA PRIVATE KEY-----\n...\n-----END RSA PRIVATE KEY-----"; $key_public = "-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----"; // Password for sending messages $password = "P4ssW0rd";

Logging


ActivityPub is a "chatty" protocol. This takes all the requests your server receives and saves them in /logs/ as a datestamped text file.
PHP // Get all headers and requests sent to this server $headers = print_r( getallheaders(), true ); $postData = print_r( $_POST, true ); $getData = print_r( $_GET, true ); $filesData = print_r( $_FILES, true ); $body = json_decode( file_get_contents( "php://input" ), true ); $bodyData = print_r( $body, true ); $requestData = print_r( $_REQUEST, true ); $serverData = print_r( $_SERVER, true ); // Get the type of request - used in the log filename if ( isset( $body["type"] ) ) { $type = " " . $body["type"]; } else { $type = ""; } // Create a timestamp in ISO 8601 format for the filename $timestamp = date( "c" ); // Filename for the log $filename = "{$timestamp}{$type}.txt"; // Save headers and request data to the timestamped file in the logs directory if( ! is_dir( "logs" ) ) { mkdir( "logs"); } file_put_contents( "logs/{$filename}", "Headers: \n$headers \n\n" . "Body Data: \n$bodyData \n\n" . "POST Data: \n$postData \n\n" . "GET Data: \n$getData \n\n" . "Files Data: \n$filesData \n\n" . "Request Data:\n$requestData\n\n" . "Server Data: \n$serverData \n\n" );

Routing


The .htaccess changes /whatever to /?path=whateverThis runs the function of the path requested.
PHP !empty( $_GET["path"] ) ? $path = $_GET["path"] : die(); switch ($path) { case ".well-known/webfinger": webfinger(); case rawurldecode( $username ): username(); case "following": following(); case "followers": followers(); case "inbox": inbox(); case "write": write(); case "send": send(); default: die(); }

WebFinger


The WebFinger Protocol is used to identify accounts.It is requested with example.com/.well-known/webfinger?resource=acct:username@example.comThis server only has one user, so it ignores the query string and always returns the same details.
PHP function webfinger() { global $username, $server; $webfinger = array( "subject" => "acct:{$username}@{$server}", "links" => array( array( "rel" => "self", "type" => "application/activity+json", "href" => "https://{$server}/{$username}" ) ) ); header( "Content-Type: application/json" ); echo json_encode( $webfinger ); die(); }

Username


Requesting example.com/username returns a JSON document with the user's information.
PHP function username() { global $username, $realName, $summary, $server, $key_public; $user = array( "@context" => [ "https://www.w3.org/ns/activitystreams", "https://w3id.org/security/v1" ], "id" => "https://{$server}/{$username}", "type" => "Person", "following" => "https://{$server}/following", "followers" => "https://{$server}/followers", "inbox" => "https://{$server}/inbox", "preferredUsername" => rawurldecode($username), "name" => "{$realName}", "summary" => "{$summary}", "url" => "https://{$server}", "manuallyApprovesFollowers" => true, "discoverable" => true, "published" => "2024-02-12T11:51:00Z", "icon" => [ "type" => "Image", "mediaType" => "image/png", "url" => "https://{$server}/icon.png" ], "publicKey" => [ "id" => "https://{$server}/{$username}#main-key", "owner" => "https://{$server}/{$username}", "publicKeyPem" => $key_public ] ); header( "Content-Type: application/activity+json" ); echo json_encode( $user ); die(); }

Following & Followers


These JSON documents show how many users are following / followers-of this account.The information here is self-attested. So you can lie and use any number you want.
PHPfunction following() { global $server; $following = array( "@context" => "https://www.w3.org/ns/activitystreams", "id" => "https://{$server}/following", "type" => "Collection", "totalItems" => 0, "items" => [] ); header( "Content-Type: application/activity+json" ); echo json_encode( $following ); die(); } function followers() { global $server; $followers = array( "@context" => "https://www.w3.org/ns/activitystreams", "id" => "https://{$server}/followers", "type" => "Collection", "totalItems" => 0, "items" => [] ); header( "Content-Type: application/activity+json" ); echo json_encode( $followers ); die(); }

Inbox


The /inbox is the main server. It receives all requests. This server only responds to "Follow" requests.A remote server sends a follow request which is a JSON file saying who they are.This code does not cryptographically validate the headers of the received message.The name of the remote user's server is saved to a file so that future messages can be delivered to it.An accept request is cryptographically signed and POST'd back to the remote server.
PHP function inbox() { global $body, $server, $username, $key_private; // Get the message and type $inbox_message = $body; $inbox_type = $inbox_message["type"]; // This inbox only responds to follow requests if ( "Follow" != $inbox_type ) { die(); } // Get the parameters $inbox_id = $inbox_message["id"]; $inbox_actor = $inbox_message["actor"]; $inbox_host = parse_url( $inbox_actor, PHP_URL_HOST ); // Does this account have any followers? if( file_exists( "followers.json" ) ) { $followers_file = file_get_contents( "followers.json" ); $followers_json = json_decode( $followers_file, true ); } else { $followers_json = array(); } // Add user to list. Don't care about duplicate users, server is what's important $followers_json[$inbox_host]["users"][] = $inbox_actor; // Save the new followers file file_put_contents( "followers.json", print_r( json_encode( $followers_json ), true ) ); // Response Message ID // This isn't used for anything important so could just be a random number $guid = uuid(); // Create the Accept message $message = [ "@context" => "https://www.w3.org/ns/activitystreams", "id" => "https://{$server}/{$guid}", "type" => "Accept", "actor" => "https://{$server}/{$username}", "object" => [ "@context" => "https://www.w3.org/ns/activitystreams", "id" => $inbox_id, "type" => $inbox_type, "actor" => $inbox_actor, "object" => "https://{$server}/{$username}", ] ]; // The Accept is sent to the server of the user who requested the follow // TODO: The path doesn't *always* end with/inbox $host = $inbox_host; $path = parse_url( $inbox_actor, PHP_URL_PATH ) . "/inbox"; // Get the signed headers $headers = generate_signed_headers( $message, $host, $path ); // Specify the URL of the remote server's inbox // TODO: The path doesn't *always* end with /inbox $remoteServerUrl = $inbox_actor . "/inbox"; // POST the message and header to the requester's inbox $ch = curl_init( $remoteServerUrl ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, "POST" ); curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode($message) ); curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers ); $response = curl_exec( $ch ); // Check for errors if( curl_errno( $ch ) ) { file_put_contents( "error.txt", curl_error( $ch ) ); } curl_close($ch); die(); }

UUID


Every message sent should have a unique ID. This can be anything you like. Some servers use a random number.I prefer a date-sortable string.
PHP function uuid() { return sprintf( "%08x-%04x-%04x-%04x-%012x", time(), mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0x3fff) | 0x8000, mt_rand(0, 0xffffffffffff) ); }

Signing Headers


Every message that your server sends needs to be cryptographically signed with your Private Key.This is a complicated process. Please read "How to make friends and verify requests" for more information.
PHP function generate_signed_headers( $message, $host, $path ) { global $server, $username, $key_private; // Encode the message to JSON $message_json = json_encode( $message ); // Location of the Public Key $keyId = "https://{$server}/{$username}#main-key"; // Generate signing variables $hash = hash( "sha256", $message_json, true ); $digest = base64_encode( $hash ); $date = date( "D, d M Y H:i:s \G\M\T" ); // Get the Private Key $signer = openssl_get_privatekey( $key_private ); // Sign the path, host, date, and digest $stringToSign = "(request-target): post $path\nhost: $host\ndate: $date\ndigest: SHA-256=$digest"; // The signing function returns the variable $signature // php.net/manual/en/function.ope… openssl_sign( $stringToSign, $signature, $signer, OPENSSL_ALGO_SHA256 ); // Encode the signature $signature_b64 = base64_encode( $signature ); // Full signature header $signature_header = 'keyId="' . $keyId . '",algorithm="rsa-sha256",headers="(request-target) host date digest",signature="' . $signature_b64 . '"'; // Header for POST reply $headers = array( "Host: {$host}", "Date: {$date}", "Digest: SHA-256={$digest}", "Signature: {$signature_header}", "Content-Type: application/activity+json", "Accept: application/activity+json", ); return $headers; }

User Interface for Writing


This creates a basic HTML form. Type in your message and your password. It then POSTs the data to the /send endpoint.
PHP function write() { // Display an HTML form for the user to enter a message.echo <<< HTML<![url=https://mastodon.social/users/doctype]Aleks Dorohovich[/url] html><html lang="en-GB"> <head> <meta charset="UTF-8"> <title>Send Message</title> <style> *{font-family:sans-serif;font-size:1.1em;} </style> </head> <body> <form action="/send" method="post" enctype="multipart/form-data"> <label for="content">Your message:</label><br> <textarea id="content" name="content" rows="5" cols="32"></textarea><br> <label for="password">Password</label><br> <input type="password" name="password" id="password" size="32"><br> <input type="submit" value="Post Message"> </form> </body></html>HTML; die(); }

Send Endpoint


This takes the submitted message and checks the password is correct.It reads the followers.json file and sends the message to every server that is following this account.
PHP function send() { global $password, $server, $username, $key_private; // Does the posted password match the stored password? if( $password != $_POST["password"] ) { die(); } // Get the posted content $content = $_POST["content"]; // Current time - ISO8601 $timestamp = date( "c" ); // Outgoing Message ID $guid = uuid(); // Construct the Note // contentMap is used to prevent unnecessary "translate this post" pop ups // hardcoded to English $note = [ "@context" => array( "https://www.w3.org/ns/activitystreams" ), "id" => "https://{$server}/posts/{$guid}.json", "type" => "Note", "published" => $timestamp, "attributedTo" => "https://{$server}/{$username}", "content" => $content, "contentMap" => ["en" => $content], "to" => ["https://www.w3.org/ns/activitystreams#Public"] ]; // Construct the Message $message = [ "@context" => "https://www.w3.org/ns/activitystreams", "id" => "https://{$server}/posts/{$guid}.json", "type" => "Create", "actor" => "https://{$server}/{$username}", "to" => [ "https://www.w3.org/ns/activitystreams#Public" ], "cc" => [ "https://{$server}/followers" ], "object" => $note ]; // Create the context for the permalink $note = [ "@context" => "https://www.w3.org/ns/activitystreams", ...$note ]; // Save the permalink $note_json = json_encode( $note ); // Check for posts/ directory and create it if( ! is_dir( "posts" ) ) { mkdir( "posts"); } file_put_contents( "posts/{$guid}.json", print_r( $note_json, true ) ); // Read existing users and get their hosts $followers_file = file_get_contents( "followers.json" ); $followers_json = json_decode( $followers_file, true ); $hosts = array_keys( $followers_json ); // Prepare to use the multiple cURL handle $mh = curl_multi_init(); // Loop through all the severs of the followers // Each server needs its own cURL handle // Each POST to an inbox needs to be signed separately foreach ( $hosts as $host ) { $path = "/inbox"; // Get the signed headers $headers = generate_signed_headers( $message, $host, $path ); // Specify the URL of the remote server $remoteServerUrl = "https://{$host}{$path}"; // POST the message and header to the requester's inbox $ch = curl_init( $remoteServerUrl ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, "POST" ); curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode($message) ); curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers ); // Add the handle to the multi-handle curl_multi_add_handle( $mh, $ch ); } // Execute the multi-handle do { $status = curl_multi_exec( $mh, $active ); if ( $active ) { curl_multi_select( $mh ); } } while ( $active && $status == CURLM_OK ); // Close the multi-handle curl_multi_close( $mh ); // Render the JSON so the user can see the POST has worked header( "Location: https://{$server}/posts/{$guid}.json" ); die(); }

Next Steps


This is not intended to be used in production. Ever. But if you would like to contribute more simple examples of how the protocol works, please come and play on GitLab.

You can follow the test user @[url=https://example.viii.fi/example]example@example.viii.fi[/url]

#activitypub #mastodon #php


reshared this



Building a Simple Ribbon Synth


The usual input device for playing a synthesizer is the good old piano keyboard. However, you don’t have to stick to such pedestrian interfaces when making music. [Daisy] has a fun build that shows us how to put together a ribbon synth that makes wonderful little noises.

Naturally, the heart of the build is a ribbon potentiometer (also known as soft pots). It’s essentially a touch sensitive strip that changes in resistance depending on where you touch it. You can slide your finger up and down to vary the output continuously; in musical contexts, they can behave rather like a fretless instrument. [Daisy] employs one of these potentiometers in such a role by hooking it up to a Daisy Seed microcontroller board, which reads it with an analog-to-digital converter (ADC). The resistance values are used to vary the pitch of a dual-saw synthesizer programmed in the plugdata framework.

We’ve featured some other great ribbon synths over the years, too, like this tribute to the Eowave Persephone. They’re not the ideal choice for those that prefer their notes on pitch, but they’re beautifully fun to play with when you’re getting a little more experimental.

youtube.com/embed/iUDOLJ1Ki84?…


hackaday.com/2025/11/29/buildi…