Appunti
Blog
Note su frontend, SEO, AI, analytics e lavoro su prodotti reali.
42 articoli
Il mio VPS AVA Hosting ha registrato in media il 32,73% di CPU steal nonostante “Guaranteed Resources — No Sharing”
Il mio VPS KVM su AVA Hosting ha registrato in media il 32,73% di CPU steal, 0% di CPU idle e quasi il 99% di CPU pressure sotto normale traffico di produzione. Non è una recensione negativa, ma il racconto tecnico di ciò che Linux ha realmente rilevato nella VM.
Il mio VPS FDCServers ha gestito senza problemi oltre 3 TB di traffico. Poi le letture dal disco hanno iniziato a richiedere 18 secondi
Il mio VPS FDCServers inizialmente ha gestito traffico reale senza problemi e trasferito più di 3 TB di dati. Poi il normale workload ha iniziato a provocare gravi stall del disco virtuale: CPU iowait al 100%, pressione I/O di Linux quasi al 100%, letture fino a 18,7 secondi e flush oltre 53 secondi.
Il mio VPS REGXA mostrava il 94% di CPU steal anche senza traffico
Indagando su gravi problemi di prestazioni di un VPS KVM REGXA ho rilevato il 92–94% di CPU steal, richieste localhost da diversi secondi, code di connessioni in crescita e HTTP 504 dopo più di due minuti. Dopo aver rimosso tutto il traffico di produzione, il CPU steal è salito al 94,17% e REGXA ha poi attribuito il problema alla contesa di risorse sulla propria infrastruttura condivisa.
Due mesi con Bunny Storage dietro Nginx: perché ho spostato immagini, video e audio su un media server dedicato
Per due mesi ho usato Bunny Storage come origin privato dietro la mia cache Nginx, senza Bunny CDN. I log di produzione hanno mostrato long-tail connection timeout sui media cold e un problema MP4 separato tra Nginx Slice ed ETag incoerenti; alla fine sono passato a un media origin privato molto più semplice.
SSIMULACRA2 nel transcoding da WebP ad AVIF: perché uso 60 per le sorgenti e 65 per i derivati lossy
Quando AVIF viene creato da un WebP già compresso con perdita, SSIMULACRA2 misura solo la seconda generazione di perdita. Per questo uso 60/58 per le sorgenti pulite e 65/63 per i derivati lossy noti.
DeepSeek ha aumentato i prezzi — ho trovato lo stesso V4 Flash a meno della vecchia tariffa
Il 17 agosto la mia spesa per la DeepSeek API è salita improvvisamente a circa cinque volte il livello abituale. Ho poi trovato e testato un altro provider che offre lo stesso checkpoint DeepSeek-V4-Flash-0731 a prezzi circa il 45% inferiori persino alle vecchie tariffe di DeepSeek.
Come converto WebP animati, GIF e APNG in H.264 MP4 senza rovinare fotogrammi o temporizzazione
La mia catena di produzione ricostruisce i fotogrammi completi realmente mostrati, preserva la temporizzazione della sorgente, sceglie un solo CFR per ogni MP4 finale, calcola l’area comune più piccola senza ingrandire, codifica segmenti H.264 compatibili, li concatena senza una seconda codifica con perdita e convalida sia il file sia la sua distribuzione HTTP. In una prova misurata, 217 WebP animati per un totale di 1,49 GB sono diventati un unico MP4 H.264 da 78,49 MB.
Segnalavo tutto: come ho trasformato il rumore degli errori del browser in un monitoraggio di produzione utile
Il mio sistema di segnalazione frontend trattava allo stesso modo AdBlock, gli errori GTM, AbortError, gli Script error opachi e i veri errori dei chunk Next.js. Ho ricostruito il monitoraggio attorno a proprietà, impatto sull’utente, qualità delle prove, correlazione e recupero.
Perché le vecchie schede Next.js si rompono dopo una distribuzione: HTML obsoleto, chunk mancanti e versioni disallineate
Dopo una distribuzione, il monitoraggio in produzione ha registrato il mancato caricamento di un chunk appartenente alla mia applicazione Next.js. Il log dimostrava il guasto, non la causa. Partendo da quell’episodio, questo articolo esamina schede rimaste aperte, HTML obsoleto, risorse /_next/static mancanti, disallineamento delle versioni, conservazione dei file, deploymentId, ordine di pubblicazione, monitoraggio e recupero controllato.
Il tick che ha rotto il mio CFR: perché 5580 non era 5625 e 3751 non era 3750
Il mio validatore rifiutava ripetutamente un MP4 a 16 fps perché un pacchetto durava 5580 tick invece di 5625; più tardi ha trovato 3751 dove 24 fps richiedevano esattamente 3750. I due errori mi hanno costretto a separare la temporizzazione della sorgente, la quantizzazione CFR, la base temporale MP4, PTS/DTS, il multiplexing e la validazione a livello di pacchetto.
Come ho ridotto un video di produzione da ~280 MB a ~50 MB con H.264
Un video reale del sistema in produzione è passato da circa 280 MB a circa 50 MB dopo la revisione della configurazione H.264 basata su CRF 28, x264 veryslow, un limite di risoluzione di classe 720p, frequenze dei fotogrammi utili e requisiti moderati per il decodificatore. In una fase precedente lo stesso esempio era già sceso da circa 350 a 238 MB, mentre un controllo della vecchia raccolta mostrava che file H.264 da diversi megabit al secondo erano comuni.
Ho creato Gitae per diagnosticare i problemi dei siti oltre il semplice «up o down»
Ho creato Gitae per rispondere a una domanda pratica: il sito è davvero irraggiungibile o il problema è locale? Combina controlli da VDS esterni a Mosca e Helsinki con DNS, HTTPS/TLS, porte, routing, IP, hosting e segnali CMS, trattando ogni risultato come un indizio e non come una prova definitiva.
Perché TypeScript funziona così bene con Codex nello sviluppo software di produzione
In produzione TypeScript offre a Codex qualcosa che un buon prompt non può sostituire: contratti verificabili dalla macchina, feedback rapido del compilatore e un percorso più sicuro nei grandi refactor.
Ho creato Jurfi.com: uno studio nel browser per bozze legali strutturate
Ho creato Jurfi.com per trasformare moduli e template in bozze legali strutturate direttamente nel browser, conservare le bozze in locale e mantenere la revisione come parte esplicita del processo, senza sostenere che il software possa sostituire un avvocato.
Il mio primo ricavo SaaS: cosa ha dimostrato davvero un singolo pagamento
Il primo pagamento ricevuto per un prodotto SaaS costruito da me era piccolo, ma ha cambiato la qualità delle prove che avevo. Ecco cosa può validare una singola transazione, cosa non può dimostrare e perché la ripetizione conta più del traguardo stesso.
Come uso Codex per revisionare 15 progetti senza rinunciare al controllo manuale
Revisionare 15 progetti software significava prima perdersi in controlli ripetitivi. Codex mi aiuta a investigare bug, test, SEO, traduzioni, localizzazione e coerenza molto più velocemente, ma considero ogni finding dell’AI una pista, non un verdetto, e ogni modifica qualcosa da verificare personalmente.
Perché uso l’ultimo 3–5% del mio limite Codex su ChatGPT Plus per grandi lavori di ingegneria — Aggiornamento: nell’estate 2026 ha smesso di funzionare
Aggiornamento: entro l’estate 2026 questo workflow non era più affidabile per me. Nel mio account era scomparso il contatore delle 5 ore, restava visibile solo il limite settimanale e un task lungo poteva fermarsi quando quel limite finiva.
Ho pubblicato 10.000 articoli SEO con l’AI e il mio sito è finito a zero pagine indicizzate su Google
La pubblicazione massiva con AI sembrava una scorciatoia: Google ha scansionato tutti i 10.000 URL degli articoli generati, ma solo circa 1.000 pagine sono state realmente indicizzate, sono apparse in Search e hanno portato traffico. Poi anche quelle pagine sono scomparse, fino a portare l’intero sito a zero pagine indicizzate. Ecco cosa ho imparato su AI, SEO, traduzione e controllo editoriale.
Cinque anni con un MacBook M1 8/256 GB: perché non l’ho ancora sostituito
Ho comprato il MacBook M1 base con 8 GB di memoria e SSD da 256 GB per circa 1.000 dollari e l’ho usato circa 15 ore al giorno per sviluppo, lavoro multimediale, scrittura, studio e side project. Cinque anni dopo ne vedo chiaramente i limiti, ma penso a un upgrade perché il mio carico di lavoro è cresciuto, non perché la macchina abbia smesso di essere utile.
Ho tradotto il mio blog in 20 lingue con ChatGPT e ho iniziato a ricevere traffico da tutto il mondo
L’AI ha cambiato l’economia della pubblicazione multilingue. Da un blog in una sola lingua sono passato a pubblicare ogni articolo fino a 20 lingue, creando nuovi ingressi organici dalla ricerca.
Ho lanciato QRViz come generatore gratuito di QR statici — e ho affidato la distribuzione alla SEO
QRViz è un generatore di QR code statici nel browser, non una piattaforma per campagne. Ho lanciato qrviz.com come generatore di codici QR gratuito, senza budget pubblicitario, acquisizione a pagamento o funnel di monetizzazione. Conto interamente sulla SEO, quindi la distribuzione rimane la maggiore incognita.
Perché trovare clienti mi è sembrato più difficile che costruire un SaaS
Una lezione diretta dalla mia esperienza con un SaaS: l’ingegneria mi dava feedback chiari e verificabili; distribuzione, posizionamento, messaging e retention seguivano un ciclo diverso e molto meno prevedibile.
Ho costruito da solo un prodotto SaaS. Con i pagamenti è cambiato il lavoro
Ho costruito questo prodotto da solo, la sera, nei weekend e durante le festività. Quando ho attivato i pagamenti, bug, onboarding, moderazione, retention e fiducia hanno smesso di essere problemi da rimandare e sono diventati parte dell’operatività reale del prodotto.
I Got 550 Views from One Image, Voiceover, and Subtitles: What Three Shorts Tests Actually Taught Me
A simple YouTube Short built from one static image, a voiceover, and subtitles reached 550 views. After three early tests, the useful lesson was not a proven formula, but a repeatable way to experiment without confusing a promising signal with proof.
Ho visto quasi 6.000 candidature per un ruolo frontend a Mosca. Cosa dice — e non dice — sul mercato IT russo
A fine 2023 i recruiter mi dicevano che 300–500 candidature per posizione erano già tante. Il 20 gennaio 2026 ho visto un ruolo frontend mid-level a Mosca avvicinarsi a 6.000 candidature in poche ore. Ecco cosa penso segnali quel numero, cosa non dimostra e come lo leggerei oggi da candidato.
Come DeepSeek ha cambiato il mio workflow Node.js: oltre 4.000 commit in sei mesi
Nel 2025 il mio grafico GitHub è passato da quasi vuoto a oltre 4.000 commit nella seconda metà dell’anno. Questo articolo racconta come l’AI coding ha cambiato il mio workflow nei side project Node.js, dove mi ha fatto risparmiare tempo, dove ha sbagliato e perché verificare è rimasto più importante che generare codice in fretta.
My First TikTok at 28: What a Vertical Product Demo Taught Me About Traffic
At 28, I posted my first TikTok and cross-posted the same product demo to Reels and Shorts. The useful lesson was not the view count: it was how much a 9:16 frame changes a desktop interface, and how to measure short-form traffic without confusing reach with acquisition.
Ho comprato un dominio di 25 anni: 1.000+ richieste al giorno finivano su URL morti
Dopo il lancio su un dominio registrato per la prima volta nel 2000, ho visto più di 1.000 richieste al giorno verso vecchi URL e oltre 900 errori in Yandex Webmaster in una sola notte. Qui separo i fatti dalle ipotesi, spiego perché ho usato 410 mirati e come controllerei oggi un dominio vecchio.
Yandex aveva indicizzato 12.500 pagine, ma dalla Russia arrivava quasi zero traffico: il problema Cloudflare che non avevo visto
Yandex aveva indicizzato 12.500 pagine, ma il traffico dalla Russia era quasi nullo. Ho isolato il problema nel percorso di rete, disattivato il proxy Cloudflare, spostato cache, compressione e protezione di base su Nginx nel mio VDS e ripristinato l’accessibilità.
Il mio sito Next.js statico riceve migliaia di scansioni al giorno. Nginx quasi non se ne accorge
I log sono pieni di probe verso WordPress, backdoor PHP, .env e .git/config. Sul mio sito statico Next.js + Nginx, la maggior parte finisce in miss economici e 404, mentre il carico CPU è rimasto invariato. Ecco cosa questa esperienza dice davvero sulla sicurezza dei siti statici.
Yandex ha portato traffico al mio nuovo sito mentre Google si muoveva appena
Nello stesso nuovo progetto, Google ha totalizzato solo circa 300 clic in un lungo periodo, mentre Yandex Webmaster mostrava una crescita netta, fino a +500% di clic. Il punto interessante è capire cosa questi numeri dimostrano davvero e cosa invece resta un'ipotesi.
Yandex ha indicizzato 4.278 delle mie pagine Next.js in una notte: cosa ha davvero dimostrato
Yandex ha indicizzato improvvisamente 4.278 delle mie pagine generate staticamente con Next.js. È stato un vero traguardo tecnico, ma non una prova di ranking o traffico. Ecco cosa quel risultato diceva davvero su SSG e SEO programmatica, e cosa no.
Il mio primo mese di SEO: 632 visitatori organici e una verifica sul traffico bot
Ho usato un side project personale per prepararmi a un’iniziativa SEO più grande al lavoro. Dopo un mese aveva portato 632 visitatori organici, ma una giornata da 83 visitatori mi ha mostrato quanto sia facile scambiare traffico sospetto o artefatti di analytics per crescita reale.
Stavo per ignorare Yandex Webmaster. Due settimane dopo portava più traffico di Google
Ho creato un side project in Next.js per fare pratica prima di un progetto di lavoro in cui la SEO sarebbe stata critica. Nelle prime due settimane ho registrato 58 visitatori da Google e 200 da Yandex, imparando a separare traffico, indicizzazione e diagnostica.
Yandex Metrica vs Google Analytics: perché dopo una settimana ho preferito Metrica
Ho usato Google Analytics e Yandex Metrica in parallelo per una settimana su un nuovo progetto. Metrica ha conquistato la mia preferenza soprattutto grazie a Webvisor e ai replay delle sessioni, ma questa è una conclusione sul mio workflow, non la prova che una piattaforma sia migliore per tutti.
Yandex ha scansionato il mio blog senza /en. I redirect 308 hanno evitato i 404
Dopo aver aggiunto circa 3.000 pagine /en/blog/... alla sitemap, ho visto Yandex tentare i corrispondenti percorsi /blog/.... I redirect 308 già configurati hanno impedito che quelle richieste finissero in 404. La lezione utile non è che Yandex abbia “rotto” la sitemap, ma quanto una buona rete di redirect renda più robusta l’architettura degli URL.
Due nuovi siti sono partiti forte su Google, poi il traffico è crollato di circa 10×
In due lanci consecutivi ho visto le impression su Google impennarsi subito e il traffico scendere di circa dieci volte pochi giorni dopo. Il pattern era reale; non posso però dimostrare che fosse una “luna di miele” di Google.
2.000 pagine sono sparite dalla ricerca Yandex in una notte. Ecco cosa potevo davvero concludere
In Yandex Webmaster ho visto che 2.000 pagine su circa 8.000 non partecipavano più alla ricerca. Il calo del 25% era forte, ma la lezione più importante era non confondere un cambiamento osservato nello stato di ricerca con una causa dimostrata.
Ho fatto più di 10 domande a MoscowJS 66 e ho vinto due premi
A MoscowJS 66 ho fatto più di 10 domande durante talk su bot Telegram, LangChain.js, architettura di un site builder e test dei tipi in TypeScript. Due sono state scelte come le migliori domande e ho portato a casa due premi.
Cosa mi sono portato da PiterJS #79: monoliti legacy, FrontOps, web performance e domande migliori
PiterJS #79 a San Pietroburgo era dedicato alla manutenzione di sistemi esistenti: monoliti legacy, FrontOps e metriche di web performance. Sono tornato con appunti pratici, due premi dal Q&A e un promemoria sul valore di partecipare davvero ai meetup dal vivo.
I Launched a Next.js Blog in 21 Languages. Here’s What 439 Google Impressions Actually Told Me
In its first week, my 21-language Next.js blog recorded 439 Google impressions and 5 clicks. Later, 436 of 471 pages were indexed. The useful lesson was learning to separate visibility, indexing, and actual search performance.
MoscowJS 65 dopo sei anni con JavaScript: perché continuo ad andare ai meetup locali
Il 5 giugno 2025 ho partecipato a MoscowJS 65 presso T Bank. I quattro talk affrontavano l’AI da prospettive diverse, ma la mia conclusione principale è stata più semplice: i meetup locali continuano a darmi qualcosa che documentazione e registrazioni non possono sostituire del tutto.