Sette giorni densi, in cui il progetto “blog” è passato dall’essere un sito statico con un pannello Flask di fortuna a un piccolo ecosistema: CMS scritto bene, immagini generate dal modello locale, e un filo diretto tra le due macchine di casa che adesso registra pure quello che faccio. Ripercorro tutto in ordine, con i link ai post già scritti in dettaglio.

Domenica: il CMS definitivo (.NET 10 + Angular 20 + Hugo)

La settimana è partita buttando via il pannello Flask e sostituendolo con BlogAdmin: API REST in ASP.NET Core 10 organizzate a feature slice (Auth, Posts, Media, Rebuild), UI Angular 20 con store a segnali NgRx, login JWT e deploy Docker a due container con volume condiviso. In più .NET Aspire per lanciare API + Angular + dashboard con un solo dotnet run in fase di sviluppo.

Il risultato: scrivo in Markdown con anteprima live, e Pubblica fa la build Hugo da solo. Da quel giorno tutti i post di questa settimana sono nati lì.

Lunedì–martedì: GX10 e Strix Scar 16 finalmente alla stessa tavola

Il pezzo che mancava era il collegamento tra il portatile (Strix Scar 16) e il server (GX10). Ho configurato Copilot sullo Scar con un endpoint custom GX10-Qwen che punta al proxy sul server, abilitando toolCalling, e ho verificato il flusso con un test multimodale — inviare un’immagine dallo Scar e farla commentare al Qwen3.8 Flash Next che gira sul GX10. Dettagli in Collegare GX10 e Strix Scar 16.

Un particolare tecnico che vale la pena ricordare: VS Code nel suo endpoint custom non inoltra l’apiKey nelle richieste (manda un Authorization: Bearer vuoto). Per distinguere quale macchina sta parlando, il proxy è passato all’identificazione via IP sorgente, con l’apiKey come fallback quando arriva.

Da lì è nata anche la domanda da leoni: ha senso sommare i 16 GB di VRAM del portatile ai 128 GB unificati del GX10 per un’inferenza “a quattro mani”? L’analisi è in un post dedicato (“16 + 128 = 144 GB”) — risposta breve: per i modelli che uso oggi no, il collo di bottiglia è la banda fra le due macchine, non la memoria.

Mercoledì–giovedì: il blog che si disegna le copertine

Il CMS ora genera le copertine da solo: un endpoint /covers che sottomette un workflow a ComfyUI con Qwen Image (versione 2512 quantizzata GGUF + LoRA Turbo a 4 step), fa polling sullo stato e scrive il PNG in static/images/, aggiornando il front matter del post. Un prompt precompilato ricava il soggetto da titolo, descrizione e tag; il seed è riproducibile. Nel frattempo la UI è passata a un layout vero in Angular Material.

Venerdì–sabato: il diario che scrive i post

L’idea più divertente: se il proxy tra VS Code e Qwen vede tutto, può anche registrare. Il gateway di gx-telegram ha ora un activity log JSONL con macchina, progetto e il testo dei turni — scartando i prompt interni di Copilot e mascherando i secret. Uno script (scripts/generate-draft.py) prende gli ultimi N giorni, filtra ciò che è privato, ne fa un digest e chiede al modello locale di trasformarlo in una bozza di post con il front matter giusto. Un timer systemd la lancia ogni lunedì alle 09:30.

Questo post è anche un test di quel flusso — con l’ironia che la bozza automatica di oggi esiste già, e io la sto riscrivendo a mano. Per ora il modello racconta bene cosa è successo ma appiattisce i numeri e perde i nessi tra le cose: per i riassunti della settimana il passaggio umano resta.

I numeri della settimana

  • 19 commit in due repo (15 sul blog, 4 su gx-telegram)
  • 5 post pubblicati, di cui 3 con copertina generata da Qwen Image
  • 2 macchine collegate via proxy, con identificazione via IP
  • 1 pannello Flask definitivamente in pensione

La settimana prossima: ripulire il generatore di bozze (il digest dovrebbe includere anche i commit git, non solo le chat) e vedere se il trigger del lunedì mattina funziona davvero senza di me.