Note di Matteo


Gennaio 2026

Scaling PostgreSQL to power 800 million ChatGPT users

OpenAI ha pubblicato un articolo in cui spiega meglio la strategia di scaling di PostgreSQL: un server primario read-write e 50 replica read-only per supportare 800 milioni di utenti. Ma è di fatto in corso una migrazione verso database più scalabili come Azure Cosmos DB:

To mitigate these limitations and reduce write pressure, we’ve migrated, and continue to migrate, shardable (i.e. workloads that can be horizontally partitioned), write-heavy workloads to sharded systems such as Azure Cosmos DB, optimizing application logic to minimize unnecessary writes. We also no longer allow adding new tables to the current PostgreSQL deployment. New workloads default to the sharded systems.

Azure Cosmos DB è un database managed globalmente distribuito e a scalabilità essenzialmente illimitata, l'equivalente di DynamoDB di AWS ma, mi sembra di capire, con anche il supporto al modello relazionale e non solo NoSQL/a documenti (Azure Cosmos DB for PostgreSQL). Con garanzie di consistency che possono essere diverse da un classico database relazionale con scritture single-node, in base alla configurazione di sharding dell'estensione Citus.

#309 /
23 gennaio 2026
/
21:05
/ #database#openai

Come riconosce anche il ministro della Giustizia Carlo Nordio, «siamo tutti dentro una perversa spirale mediatica in cui ogni singolo caso di cronaca produce un allarmismo generale». E siamo certi che il giorno in cui Nordio scoprirà chi è che ha alimentato questa spirale, gliene dirà quattro. Si è creata una realtà parallela che vuole un paese in mano ai maranza e alle baby gang? Ora non ci si può rifugiare nella realtà reale per ignorare le paure di chi ti ha votato.

Valerio Valentini in Montecit. del 23 gennaio 2026.

#308 /
23 gennaio 2026
/
18:23
/ #italia

This has been said a thousand times before, but allow me to add my own voice: the era of humans writing code is over. Disturbing for those of us who identify as SWEs, but no less true. That's not to say SWEs don't have work to do, but writing syntax directly is not it.

Ryan Dahl, creatore di Node.js e Deno.

#307 /
23 gennaio 2026
/
15:15
/ #ai

Ultimamente la UI di ChatGPT web ha crisi di layout:

#306 /
23 gennaio 2026
/
14:47
/ #openai

DNSimple spiega come gestiscono le repository GitHub con Terraform. Quando iniziano a diventare centinaia, gestirle manualmente genera inconsistenze:

  • Repositories had different settings, even when they should have been identical
  • Labels for issue triage varied from repository to repository, making cross-project tracking difficult
  • Some repositories had issue templates, while others didn't
  • Permission management was manual and error-prone
  • Security features like vulnerability alerts weren't consistently enabled
  • Pull request templates were copy-pasted (when they existed at all)

Dopo un tentativo con Repocop, per automatizzare il setup, hanno deciso di usare Terraform con aggiornamento delle configurazioni tramite Pull Request e Terraform Cloud.

#305 /
23 gennaio 2026
/
14:46
/ #dev#github

I fatti non sono mai separati dalle opinioni, sui giornali. Nel momento stesso in cui qualunque giornale decide di pubblicare un articolo su un fatto, su una notizia, su una storia, sta applicando una propria opinione. Altri giornali non lo pubblicheranno, avendo opinioni diverse. Le opinioni di ogni giornale e di ogni giornalista con delle responsabilità influenzano la decisione di che articoli pubblicare, e poi di quale evidenza dare loro, e poi di quali elementi e tagli mettere nel titolo: e sono tutte scelte, mai universali, mai le sole possibili, anzi. E le opinioni di ogni giornalista incaricato di scrivere influenzano i fatti che ci mette dentro e quelli che no, e lo spazio che dà a ciascun fatto, e di quali parla prima e di quali parla dopo.

Il risultato è che di un fatto - un fatto - verranno a sapere i lettori di un giornale, e non quelli di un altro. O che i lettori di uno lo riceveranno come molto importante e quelli di un altro come poco importante. O che i lettori di uno leggeranno che la cosa più importante di quel fatto è una e quelli dell'altro che è un'altra. Anche se stiamo sempre parlando di fatti: ma la cui descrizione, a cominciare dalla decisione di descriverli o no, è il risultato di un'opinione.

Nessun giornale ha i fatti separati dalle opinioni.

Luca Sofri nella newsletter Charlie.

#304 /
23 gennaio 2026
/
11:52
/ #informazione

TIL Cloudflare sovrascrive il record CAA aprendo ad attacchi MiTM in caso di BGP hijacking, e anche se a conoscenza del problema l'ha sempre ignorato:

When a BGP leak occurs (malicious or accidental), an attacker can intercept traffic to satisfy an ACME http-01 challenge. This allows them to issue a valid SSL certificate for a victim’s domain.

The IETF standard RFC 8657 was created specifically to stop this by using accounturi in CAA records to bind issuance to a specific account.

Issue: But Cloudflare’s Universal SSL automatically injects permissive CAA records that override user-defined accounturi bindings.

Ignoring, Cloudflare is saying like: “We know BGP leaks happen constantly, but we will force a configuration that allows those leaks to be used for valid certificate issuance by malicious attackers.”

Qua la spiegazione completa.

#303 /
23 gennaio 2026
/
10:26
/ #cloudflare


macOS Tidbits

Lunga lista molto utile (e che dimenticherò subito) di tips e shortcut di macOS: macOS Tidbits

#301 /
21 gennaio 2026
/
21:21
/ #macos

Wplace. A massive real-time pixel art canvas on the world map.

#300 /
21 gennaio 2026
/
21:11
/ #internet


IP Addresses through 2025 è una mega analisi di Geoff Huston, guru della Internet australiana, sullo stato di allocazione delle risorse IP, sia IPv4 che IPv6.

#298 /
21 gennaio 2026
/
21:02
/ #ipv6#reti

We live in an age where capital and data can cross Europe in a second. And business must be able to move just as freely. But as things stand, too many companies have to look abroad to grow and scale up – partly because they face a new set of rules every time they expand into a new Member State. So while on paper the market of 450 million Europeans is open to them, it is far more complicated in reality. And that acts as a handbrake on the growth and profit potential of companies. This is why we need a new approach. We will soon put forward our 28th regime. The ultimate aim is to create a new truly European company structure. We call it EU Inc., with a single and simple set of rules that will apply seamlessly all over our Union. So that business can operate across Member States much more easily. Our entrepreneurs, the innovative companies, will be able to register a company in any Member State within 48 hours – fully online. They will enjoy the same capital regime all across the EU. Ultimately, we need a system where companies can do business and raise financing seamlessly across Europe – just as easily as in uniform markets like the US or China. If we get this right – and if we move fast enough – this will not only help EU companies grow. But it will attract investment from across the world.

Ursula von der Leyen nel discorso al World Economic Forum.

#297 /
21 gennaio 2026
/
10:17
/ #business#eu

Paradisi fiscali

È un affascinante caso di possibile errore che ottiene però un risultato efficace. «Paradiso fiscale», per indicare delle nazioni o dei luoghi in cui la tassazione è particolarmente favorevole, è infatti probabilmente il risultato di una traduzione sbagliata dell’espressione inglese tax haven, usata per prima rispetto alla lunga storia dei «paradisi fiscali». E che significa «rifugio fiscale», ma in cui haven (che può voler dire anche «porto») suona molto simile alla più familiare parola heaven, che vuol dire in effetti «paradiso» o «cielo» in senso figurato.

Luca Sofri in Parole che usiamo in un modo o nell’altro sul Post.

#296 /
20 gennaio 2026
/
22:31
/ #scrivere

Il terrore delle ripetizioni che ci viene instillato a scuola genera nel giornalismo scelte acrobatiche e artificiose per sostituire parole e nomi con presunti sinonimi o creative perifrasi. Nel giornalismo sportivo questo ha prodotto un ricco vocabolario di termini di poco uso, ma con radici storiche o geografiche, per indicare le città sedi di squadre di calcio o altro. Il risultato è posticcio, ma permette di imparare termini che hanno ricchissime implicazioni storiche. Sapete dire a quali città si riferiscono gli aggettivi scaligera, labronica, felsinea, partenopea, sabauda, orobica, capitolina, estense, gigliata, ambrosiana, etnea, alabardata, lariana?

Luca Sofri in Parole che usiamo in un modo o nell’altro sul Post.

#295 /
20 gennaio 2026
/
22:25
/ #informazione#scrivere

ttl è un mtr con qualche funzione in più, tra cui enrichment dei dati ASN e DNS:

Key features of ttl include:

• Multi-flow probing – Enumerates all load-balanced paths (no more seeing just one path through ECMP).

• Path MTU discovery – Pinpoints exactly where fragmentation kills your jumbo frames.

• NAT detection – Reveals when a middlebox is quietly rewriting your source ports.

• Route flap alerts – Catches BGP instability as it happens by detecting path changes in real time.

• PeeringDB integration – Identifies which Internet Exchange (IX) you're crossing in your route.

• MPLS label visibility – Exposes provider LSP paths by decoding MPLS labels from ICMP responses.

• Smart loss detection – Distinguishes real packet loss from routers simply rate-limiting ICMP replies.

• Modern TUI – Features live stats, jitter calculation, ASN/GeoIP enrichment, and a sleek terminal UI (no 1990s look-and-feel).

• Scriptable output – JSON and CSV export for automating analysis or proving that yes, the problem is their network.

(LinkedIn)

#294 /
17 gennaio 2026
/
20:38
/ #reti

The truth is that we and Elon agreed in 2017 that a for-profit structure would be the next phase for OpenAI; negotiations ended when we refused to give him full control; we rejected his offer to merge OpenAI into Tesla; we tried to find another path to achieve the mission together; and then he quit OpenAI, encouraging us to find our own path to raising billions of dollars, without which he gave us a 0% chance⁠ of success.

[...]

He said that he needed full control since he’d been burned by not having it in the past, and when we discussed succession he surprised us by talking about his children controlling AGI.

OpenAI

#293 /
17 gennaio 2026
/
08:59
/ #ai

Ancora sulla questione Cloudflare-AGCOM: nella delibera c'è scritto che il punto non era Piracy Shield (cioè i blocchi entro 30 minuti), ma ordini di blocco decisi da un tribunale. A quanto pare Cloudflare si è rifiutata di eseguirli, e quindi è evidentemente nel torto.

AGCOM specifica poi questo dato: "Cloudflare appare come fornitore di servizi del 70% dei siti illeciti degli ultimi anni".

#292 /
16 gennaio 2026
/
20:35
/ #antipirateria#cloudflare

2FA for developers

Ho aggiunto il supporto all'autenticazione a due fattori su DMARCwise e ho fatto fatica a trovare informazioni su best practice attorno alla 2FA con OTP, per cui segno quello che ho scoperto qui.

Intanto, l'algoritmo si chiama Time-based One-Time Password (TOTP) e permette di generare un codice di N cifre ogni T secondi partendo da un secret. Non tutte le app "authenticator" supportano tutte le configurazioni, per cui la più comune è:

  • Codici di 6 cifre.
  • Intervallo di tempo T di 30 secondi.
  • Algoritmo HMAC-SHA1.

Il secret nella maggior parte dei casi è di 20 byte (160 bit) e viene codificato in Base32 (es. CVEBO7GKWLFDRBJRPPTOZ7I6VEPDIGIT). Va generato diverso per ogni utente.

Per la verifica del TOTP la RFC consiglia di usare una tolleranza (drift window) di +/- un intervallo di tempo T (quindi vale sia il codice precedente che quello successivo).

Il secret andrebbe cifrato prima di essere inserito nel database. Nel mio caso ho scelto AES-256 GCM. Nel db vanno quindi salvati il secret cifrato (Base64) più il nonce e il tag AES.

Per la validazione dei codici ho usato la libreria Otp.NET per .NET/C#. Per AES ho usato l'implementazione nativa di .NET.

Per la configurazione iniziale del secondo fattore, all'utente vanno forniti il secret e i vari parametri menzionati sopra (o anche no, dato che quelli indicati qui sopra sono di solito il default), oppure un QR code che contiene un URI con questo formato (inizialmente definito da Google ma ora standard de facto):

otpauth://totp/{label}:{accountName}?secret={secret}&issuer={issuer}";

I parametri vanno URL encoded. La prima etichetta viene mostrata nella UI dell'applicazione authenticator di turno (Google Authenticator, Ente Auth, ecc.) assieme al nome dell'account, mentre l'issuer dovrebbe essere a uso interno.

Il codice QR lo genero server-side in SVG con ZXing.QrCode e lo ritorno nella risposta JSON delle API. Probabilmente si può fare anche client-side, ma avevo già generato QR in C# in un altro progetto per cui ho riciclato il codice.

Per confermare l'abilitazione della 2FA l'utente deve inserire un primo codice TOTP generato dall'app authenticator. C'è la possibilità che l'utente abbandoni il processo a metà, per cui ci vuole un cleanup delle configurazioni che non sono ancora state abilitate dopo 24/48 ore.

Andrebbero poi generati e forniti dei codici di backup/recupero. Nel mio caso sono 10 codici di 8 caratteri presi dall'alfabeto ABCDEFGHJKLMNPQRSTUVWXYZ23456789 (es. BVEZ-MMWP). Sono hashati con Argon2id, come le password, e salvati in una tabella del db. Di conseguenza nel momento della verifica del backup code bisogna verificarli tutti uno a uno per trovare se c'è un match, e poi segnare il codice individuato come già usato.

Come si implementa la verifica del secondo fattore in fase di login? Il login restituisce un token di tipo TwoFactorPending e il frontend fa redirect alla pagina di verifica. Questo token temporaneo permette di usare solo l'endpoint di verifica 2FA. Se il codice inserito dall'utente è corretto viene invalidato il token temporaneo (che ha comunque scadenza breve, es. 5 minuti) e ne viene creato uno nuovo "standard".

La disattivazione del secondo fattore deve richiedere la password dell'utente, mentre la rigenerazione dei codici di backup deve richiedere un codice TOTP valido (per verificare che l'utente sia effettivamente ancora in possesso del secondo fattore).

Bonus: il 95% del codice è stato scritto da Claude Code e dall'inizio alla fine ci abbiamo impiegato circa 3 giorni (progettazione, implementazione di 6 endpoint backend, integration test e tutta la UI con SvelteKit).

#291 /
16 gennaio 2026
/
20:25
/ #dev#security

certs.email

Ho pubblicato certs.email: un mini-servizio per essere notificati all'avvicinamento della scadenza dei certificati SSL/TLS dei propri domini.

È gratis e open source e in realtà mi serve prevalentemente per avere un dominio in più che invia email, per poter testare meglio DMARCwise.

#290 /
15 gennaio 2026
/
17:32
/ #dev#security

TIL ci sono router Cisco che crashano se una risposta DNS contenente CNAME ha i record CNAME nell'ordine sbagliato. Cioè anziché:

;; QUESTION SECTION:
;; www.example.com.        IN    A

;; ANSWER SECTION:
www.example.com.    3600   IN    CNAME  cdn.example.com.
cdn.example.com.    300    IN    A      198.51.100.1

Così:

;; QUESTION SECTION:
;; www.example.com.	       IN    A

;; ANSWER SECTION:
cdn.example.com.    300    IN    A      198.51.100.1
www.example.com.    3600   IN    CNAME  cdn.example.com.

Cloudflare racconta che ha invertito l'ordine dei record nelle risposte DNS come mostrato qui sopra per rendere più efficiente il codice, e i router Cisco hanno iniziato ad andare in crash loop fino al rollback della modifica. Anche la risoluzione DNS nel kernel Linux ha un problema simile, anche se in quel caso la risposta veniva considerata vuota.

#289 /
15 gennaio 2026
/
13:46
/ #cloudflare#dns

AWS European Sovereign Cloud

Da oggi è disponibile AWS European Sovereign Cloud (AWS.eu). Non ci sono tutti i servizi ma è comunque interessante. Account separato e (credo) region separata, per ora in Germania, con staff 100% europeo e nessuna dipendenza "tecnica" sugli USA.

#288 /
15 gennaio 2026
/
11:27
/ #aws#cloud

JuxtaText. Un diff viewer testuale per macOS gratuito (e molto bello).

#287 /
15 gennaio 2026
/
11:18
/ #macos

ChatGPT Translate, interessante (e gratis):

#286 /
15 gennaio 2026
/
10:35
/ #ai#openai

Siri powered by Gemini

Mi chiedo se il fatto che Siri sarà powered by Gemini si noterà nel concreto. I due principali (o unici) sistemi operativi mobile avranno assistenti AI entrambi dipendenti da Google. È un potenziale grosso bias (le "conoscenze" interne dell'LLM saranno comuni).

Le opzioni comunque erano: Apple prende la tecnologia da OpenAI, che le vuole fare competizione anche nell'hardware, oppure Apple prende la tecnologia da Google, che già le fa competizione non solo sugli assistenti AI e con Android ma anche sull'hardware. Sarà uno degli ultimi atti di Tim Cook prima della pensione, non so se sarà ben ricordato per questo.

EDIT: sarà distillazione, non fine-tuning.

#285 /
14 gennaio 2026
/
16:33
/ #ai#android#apple#google

Dev'essere qualcosa che ha a che vedere con le nostre radici culturali, il cristianesimo forse, le favole che ci raccontavano da bambini, i cartoni animati. C'è questo bisogno di eroi, di gente pura, che si immola sull'altare, c'è questo bisogno di trovare persone migliori di noi e queste persone non devono manco vederli i soldi, come se i soldi fossero qualcosa di sporco di brutto. Credo che sia una cosa particolarmente forte in Italia, un po' meno altrove come negli Stati Uniti.

[...] Quello che so è che le favole non esistono, questa cosa dei contenuti gratis che ci sono stati tirati in faccia dai social ci ha avvelenato il cervello. Ha avvelenato il mio canale [YouTube], dalla nascita, e ora sta avvelenando tutto il resto.

[...] Accettiamo l'idea di pagare per i contenuti che vediamo, accettiamo di pagare per il giornale, di pagare per gli articoli che leggiamo, e se invece non vogliamo pagare di tasca nostra, accettiamo l'idea che qualcun altro paghi per il contenuto che ci viene fornito. Quantomeno dobbiamo accettare questo compromesso, dobbiamo accettare che un content creator faccia ogni tanto un contenuto sponsorizzato. Io credo che sia sano e giusto, significa che l'agenda di quel content creator è chiara a tutti, tutti sappiamo chi lo sta finanziando e che la sua attività imprendotirale goda di ottima salute. Impariamo a celebrare questi successi e impariamo ad accettare che viviamo tutti in una società capitalistica e che su questo si fondano una serie di compromessi che faremmo bene ad accettare per il nostro stesso benessere.

Guido Cardinali

#284 /
14 gennaio 2026
/
14:33
/ #social

JPEG XL in Chromium

A sorpresa Google aggiunge il supporto a JPEG XL in Chromium, dopo che nel 2022 aveva detto che non l'avrebbe fatto.

In a significant pivot, Google has officially integrated native JPEG XL support back into the Chromium browser engine as of today. The new implementation is built upon a new, memory-safe Rust-based decoder called jxl-rs, which satisfies long-standing security requirements that previously hindered its adoption.

Questo grazie appunto alla nuova implementazione di riferimento ufficiale di JPEG XL in Rust, che riduce i rischi di aggiungere decine di migliaia di codice nuovo (i bug di memoria sono molto spesso nei decoder di immagini).

JPEG XL è un formato notevole che integra le migliori caratteristiche dei formati moderni, col beneficio aggiuntivo di permettere la conversione lossless da JPEG esistenti.

#283 /
14 gennaio 2026
/
10:45
/ #browser

"Ho voluto la bicicletta"

Complice la posizione geografica in una pianura senza vento, Milano supera ampiamente la concentrazione di inquinanti atmosferici stabiliti dalle norme europee e dall’OMS. C’è un lento miglioramento sul lungo termine, ma ancora lontano da livelli non a rischio. E poi il 2025 è andato peggio del 2024, che era andato peggio del 2023 (a luglio 2025 si contavano 111 giorni su 181 di superamento delle soglie OMS per il PM2.5). Metà di questi inquinanti vengono dal traffico automobilistico. È un problema di sanità pubblica, e mettere più persone nelle condizioni di spostarsi in bicicletta sarebbe la contromisura più rapida e più economica per intaccarlo (potenziare i mezzi pubblici è più importante, ma molto più costoso). Dunque la paura di un ciclista sulle strade è un guaio anche per tutti gli altri: è un guaio per la città.

[...]

Eppure, Milano è anche una città piena di automobili. Ci sono più di 50 auto ogni cento abitanti, laddove Londra, Parigi e Amsterdam ne hanno tra 20 e 30. E occupano tanto spazio che non sarebbe destinato alle auto. Capita spesso di trovarsi a camminare su un marciapiede dietro a una macchina che cerca parcheggio (sul marciapiede) o fa manovra per uscire. Esiste una deroga ufficiosa a parcheggiare anche dove non si può – aree verdi, marciapiedi e carreggiate – e anche una sorta di orgoglio nel farlo, nonostante a Milano ci siano molti più parcheggi regolamentari che in altre città europee: 22 posti auto su strada ogni 100 abitanti, contro i 7 di Barcellona e i 6 di Parigi.

Diletta Sereni

#282 /
13 gennaio 2026
/
20:39
/ #mobilità


Being able to build for reliability, performance, scale, and security will be a highly-prized skill. When [with AI] anyone can generate software that sort of works until it doesn’t, there will be more demand for engineers who produce quality work that always works as expected.

You cannot prompt an AI to create secure, performant code: you need to know what you want, how to validate the nonfunctional requirements, architect the code, and prompt the AI accordingly. You might also need to throw away the AI and get down to writing code or configuration by hand in order to get the details right. Basically, it pays to know when to use your own expertise.

[...]

The good news is that software engineering fundamentals should become more important, the more a team relies on AI to generate code. More code leads to more problems which need to be caught earlier, and dealt with systematically. This is what good software engineering is about, and always has been.

Gergely Orosz

#280 /
12 gennaio 2026
/
20:37
/ #ai

sslip.io is a DNS (Domain Name System) service that, when queried with a hostname with an embedded IP address, returns that IP address.

#279 /
12 gennaio 2026
/
14:55
/ #dns

Altro problema tra i numerosi problemi di macOS 26: l'area in cui si può puntare per ridimensionare una finestra è prevalentemente esterna alla finestra, e quindi è diventato più difficile.

È come prendere in mano un piatto senza toccarlo:

#278 /
12 gennaio 2026
/
10:20
/ #macos#design

Come segnala DDay, ecco la risposta DNS del risolver di Google 8.8.8.8 per un dominio bloccato da Piracy Shield:

~ ❯ dig es1.dn-ott.vip @8.8.8.8
; <<>> DiG 9.20.17 <<>> es1.dn-ott.vip @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 45414
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
; EDE: 16 (Censored): (The requested domain is subject to a judicial injunction or other governmental blocking order for IT (ISO country code). To learn more about this specific removal, please visit https://lumendatabase.org/notices/76876931.)
;; QUESTION SECTION:
;es1.dn-ott.vip.			IN	A

;; Query time: 13 msec
;; SERVER: 8.8.8.8#53(8.8.8.8) (UDP)
;; WHEN: Mon Jan 12 10:10:31 CET 2026
;; MSG SIZE  rcvd: 269

Quindi è confermato che come era stato annunciato a giugno il resolver di Google non è più esente da censura, come lo è stato per tantissimi anni.

#277 /
12 gennaio 2026
/
10:12
/ #antipirateria#dns#google

La risposta della Lega Serie A a Cloudflare sulla questione antipirateria è parziale ma contiene del vero, specialmente sul fatto che Cloudflare fa orecchie da mercante offrendo consapevolmente servizi a organizzazioni illegali e si rifiuta di rispondere a qualsiasi richiesta in nome della libertà di espressione (che ben poco c'entra col copyright):

Cloudflare was sanctioned because it is the only major global company that, by choice of its CEO, systematically refuses any and all cooperation with authorities, law enforcement, rights holders, and even courts. For this reason, it has become the first and most common choice of criminal organizations for operating their illegal services, precisely because of its determined stance in enabling acts of piracy.

This happens not only in Italy but across the world, as demonstrated by numerous legal rulings against Cloudflare in France, Spain, Belgium, and of course, in Italy as well.

Ma il commento che racchiude tutti i punti di vista e che condivido di più l'ho trovato nella sezione commenti del Post:

Non so dove cominciare con le cose che non vanno in tutta questa storia... Un'azienda monopolistica che ha il potere di bloccare internet in quasi tutto il mondo (anche il FT ne parlava qualche giorno fa); la lega serie A che deve difendere interessi economici da corporazione medievale; il governo vassallo della suddetta corporazione che fa una legge estremamente problematica con grossi rischi di abusi (da censura delle partite a censura delle news è un attimo)... C'è molto di sbagliato nell'agire di tutti gli attori, e di mezzo ci vanno i cittadini

Ognuno con i propri interessi parziali e non indirizzati al buonsenso o al bene comune e nessuno vuole arretrare di un centimetro.

(Qualcuno potrebbe avere da ridire sul fatto che Cloudflare sia monopolista: in termini stretti non lo è, ma tende a esserlo se consideriamo che nessun altro è in grado di offrire servizi simili gratuitamente a una platea così ampia di persone e aziende, rendendolo molto spesso insostituibile.)

#276 /
11 gennaio 2026
/
17:33
/ #cloudflare#italia#antipirateria

It’s hard to justify Tahoe icons. Partendo dalle linee guida di interfaccia umana del 1992 di Apple, una analisi molto critica delle nuove icone in macOS 26 Tahoe.

Uno degli errori principali è inserire icone per ogni azione:

Anche se non esistono sufficienti icone comprensibili da corrispondere a ogni icona, con questi risultati:

La conclusione:

In my opinion, Apple took on an impossible task: to add an icon to every menu item. There are just not enough good metaphors to do something like that.

But even if there were, the premise itself is questionable: if everything has an icon, it doesn’t mean users will find what they are looking for faster.

And even if the premise was solid, I still wish I could say: they did the best they could, given the goal. But that’s not true either: they did a poor job consistently applying the metaphors and designing the icons themselves.

#275 /
10 gennaio 2026
/
10:15
/ #macos#design

Notevole risposta del CEO di Cloudflare alla sanzione di 14 milioni di euro per mancata adesione a Piracy Shield (di cui ho scritto qui):

[...] In addition, we are considering the following actions: 1) discontinuing the millions of dollars in pro bono cyber security services we are providing the upcoming Milano-Cortina Olympics; 2) discontinuing Cloudflare’s Free cyber security services for any Italy-based users; 3) removing all servers from Italian cities; and 4) terminating all plans to build an Italian Cloudflare office or make any investments in the country.

Play stupid games, win stupid prizes. [...]

#274 /
9 gennaio 2026
/
20:42
/ #cloudflare#italia#antipirateria

Telegram aggiunge con lunghissimo ritardo il supporto ai chatbot AI con streaming dei token il 31 dicembre, e sia Perplexity che Microsoft Copilot disattivano i relativi bot Telegram. 😅

Nessuna notizia nemmeno dell'arrivo dell'integrazione di Grok su Telegram, deal strambo secondo cui Grok avrebbe dovuto pagare Telegram 300 milioni di dollari oltre a sobbarcarsi i costi di inferenza. Era stato annunciato in pompa magna da Durov, ora migliore amico di Musk, che però aveva smentito un accordo. Che declino Telegram.

#273 /
9 gennaio 2026
/
16:24
/ #telegram#ai

L'azienda dietro Tailwind CSS è in crisi perché con l'AI nessuno compra più il pacchetto di componenti, che era la principale fonte di ricavi per pagare il team:

But the reality is that 75% of the people on our engineering team lost their jobs here yesterday because of the brutal impact AI has had on our business. And every second I spend trying to do fun free things for the community like this is a second I'm not spending trying to turn the business around and make sure the people who are still here are getting their paychecks every month.

Traffic to our docs is down about 40% from early 2023 despite Tailwind being more popular than ever. The docs are the only way people find out about our commercial products, and without customers we can't afford to maintain the framework. I really want to figure out a way to offer LLM-optimized docs that don't make that situation even worse (again we literally had to lay off 75% of the team yesterday), but I can't prioritize it right now unfortunately, and I'm nervous to offer them without solving that problem first.

[...]

Tailwind is growing faster than it ever has and is bigger than it ever has been, and our revenue is down close to 80%. Right now there's just no correlation between making Tailwind easier to use and making development of the framework more sustainable. I need to fix that before making Tailwind easier to use benefits anyone, because if I can't fix that this project is going to become unmaintained abandonware when there is no one left employed to work on it. I appreciate the sentiment and agree in spirit, it's just more complicated than that in reality right now.

(GitHub)

#272 /
7 gennaio 2026
/
22:53
/ #web-dev#ai

normattiva2md. onData ha fatto un tool per convertire i dati di Normattiva da XML a Markdown:

Scrive inoltre onData che:

In queste settimane in cui abbiamo lavorato a normattiva2md, abbiamo scoperto una novità importante: a decorrere dal 1° gennaio 2026, i dati di Normattiva sono finalmente dati aperti. È possibile scaricarli e utilizzarli con licenza Creative Commons CC BY 4.0.

Non troviamo il link alla pagina “dati” nei menu del sito, ma l’URL si trova utilizzando i motori di ricerca: https://dati.normattiva.it/home.

#271 /
7 gennaio 2026
/
10:28
/ #italia#digitalizzazione

Notevole infografica da Wikipedia con i risultati delle elezioni politiche nella Repubblica:

#270 /
6 gennaio 2026
/
21:39
/ #italia

Bello che nelle "radio" Spotify (playlist partendo da un brano) ora si può scegliere se le si vuole personalizzate in base ai propri ascolti, con più "nuove scoperte", ecc.

#269 /
6 gennaio 2026
/
14:43

Honey’s Dieselgate: Detecting and Tricking Testers:

MegaLag’s December 2024 video introduced 18 million viewers to serious questions about Honey, the widely-used browser shopping plug-in—in particular, whether Honey abides by the rules set by affiliate networks and merchants, and whether Honey takes commissions that should flow to other affiliates. [...] Honey was plainly breaking the rules.

As it turns out, Honey’s misconduct is considerably worse than MegaLag, I, or others knew. When Honey is concerned that a user may be a tester—a “network quality” employee, a merchant’s affiliate manager, an affiliate, or an enthusiast—Honey designs its software to honor stand down in full. But when Honey feels confident that it’s being used by an ordinary user, Honey defies stand down rules.

#268 /
4 gennaio 2026
/
22:52

2025: The year in LLMs

Il classico riassunto annuale di Simon Willison sull'AI nell'anno passato. L'indice:

It’s been a year filled with a lot of different trends.

  • The year of “reasoning”
  • The year of agents
  • The year of coding agents and Claude Code
  • The year of LLMs on the command-line
  • The year of YOLO and the Normalization of Deviance
  • The year of $200/month subscriptions
  • The year of top-ranked Chinese open weight models
  • The year of long tasks
  • The year of prompt-driven image editing
  • The year models won gold in academic competitions
  • The year that Llama lost its way
  • The year that OpenAI lost their lead
  • The year of Gemini
  • The year of pelicans riding bicycles
  • The year I built 110 tools
  • The year of the snitch!
  • The year of vibe coding
  • The (only?) year of MCP
  • The year of alarmingly AI-enabled browsers
  • The year of the lethal trifecta
  • The year of programming on my phone
  • The year of conformance suites
  • The year local models got good, but cloud models got even better
  • The year of slop
  • The year that data centers got extremely unpopular
  • My own words of the year
  • That’s a wrap for 2025
#267 /
2 gennaio 2026
/
13:38
/ #ai