02 Gennaio 2026 - Una storia di Git conflicts, doppi frontmatter, e l’epifania di VS Code
Che poi sai qual’è la questione?
non è Bach - The Goldberg Variations - Variation 15 - Glenn Gould.
ma è il passaggio
da Bach - The Goldberg Variations - Variation 14 - Glenn Gould.
a Bach - The Goldberg Variations - Variation 15 - Glenn Gould.
Che è il cambio radicale di riferimento.
È il passaggio dal caos alla linearità, che spezza la linea temporale e che fa respirare.
Quello che viene prima e dopo è relativo, è quel momento che decide tutto.
Il Click
Alle 14:37 del 2 gennaio 2026, dopo aver pushato su GitHub il commit feat: navigation system complete with mobile dropdown, ho guardato lo schermo e ho pensato: “Aspetta. Stamattina non avevamo nemmeno una homepage funzionante. Adesso abbiamo un sistema completo di publishing multi-sezione con Notion come CMS, script Python automatizzato, quattro layout diversi, navigation responsive, e FELICITA v1.0 pubblicato come documento ufficiale.”
In un giorno.
Non è magia. È il processo FELICITA in azione. Ed è esattamente quello che il documento stesso descrive: la felicità non è il risultato, è il processo di riduzione dell’entropia.
Oggi abbiamo ridotto un sacco di entropia.
Backstory: Da Dove Partivamo
Ieri sera avevamo:
- Un repo GitHub vuoto
- Un’idea vaga di “fare un blog”
- FELICITA v1.0 nascosto in
/experiments - Gestalt Mu (il sistema di memory per AI) in un file Python
- Nessun piano preciso
Stamattina, dopo la compattazione della conversazione precedente, siamo partiti con:
- Homepage dinamica funzionante
- Feed articoli live
- Layout
ob_session.htmlper gli articoli - Script Python
notion_to_jekyll_builder.pyoperativo
Ma mancava la parte interessante.
Il Pivot: Da Pokémon Catalog a Personas Library
L’idea iniziale per OB-AI era semplice: recensire AI come Claude, GPT, ecc. Tipo “Pokédex delle AI”.
Problema: Contenuto generico. Chiunque può scrivere “Claude è bravo, GPT è veloce”. Zero valore originale. Classic “Pokemon syndrome” — collezionare per collezionare.
La svolta:
“E se invece creassimo profili di personalità riutilizzabili per prompt engineering? Einstein, Goldrake, Marcus Aurelius, GLaDOS… Archetipi che puoi effettivamente USARE?”
Boom.
Da catalogo statico a toolkit operativo. Ogni persona diventa un template copiabile per task specifici:
- Einstein → thought experiments
- Cicerone → SEO optimization
- Shakespeare → meta descriptions poetiche
- Ada Lovelace → debug vittoriano
Creatività + utilità pratica + contenuto originale = win-win-win.
L’Architettura: Due Database, Un Flusso
Per implementare questo serviva architettura solida.
DB Structure in Notion
DB PERSONAS (nuovo):
- Nome (title)
- Profilo (es. “Scienziato Visionario”)
- Epoca (es. “1879-1955”)
- Stile (es. “Curioso, provocatorio, thought experiments”)
- Avatar Emoji (es. “🧠”)
- Notes (appunti interni)
- Body (pagina Notion con bio + prompt template)
- Relation → DB CONTENT (two-way)
DB CONTENT (aggiornato):
- Section: “OB-AI” / “OB-Archives” / etc.
- Layout: “ob_ai” / “ob_document” / “ob_session”
- Slug, Status (Published/Draft), Date
- Meta SEO (title, description, keywords, tags)
- Relation → DB PERSONAS / DB OB-SESSIONS (two-way)
Decisione chiave: Rimosso campo “Type” → superfluo. Section + Layout bastano. Meno è più.
Script Python v3.1
Nuova funzione process_personas():
def process_personas():
# Filtra DB CONTENT: Section=OB-AI, Status=Published
# Per ogni record:
# - Estrai meta da DB CONTENT
# - Segui relation → DB PERSONAS
# - Fetch body da pagina Notion
# - Genera frontmatter unificato (UN SOLO blocco ---)
# - Salva ob-ai/{slug}.md
Il problema del doppio frontmatter è stato epico. Lo script generava due blocchi --- separati perché concatenava output in modo naive. Fix: frontmatter manuale unificato con tutte le proprietà in un blocco.
Le Battaglie Tecniche
Battaglia #1: Doppio Frontmatter
Sintomo: File .md generati con struttura:
---
layout: ob_ai
title: "Einstein"
---
---
nome: "Einstein Albert"
profilo: "Scienziato Visionario"
---
Causa: create_frontmatter() chiudeva blocco, poi script aggiungeva proprietà e chiudeva di nuovo.
Fix: Frontmatter unificato manuale. Una sola apertura, tutte le properties, una sola chiusura.
Lezione: Non fidarsi delle funzioni legacy. Rebuild from scratch quando necessario.
Battaglia #2: Landing Non Mostrava Personas
Sintomo: ob-ai/index.html (landing) non mostrava Einstein.
Causa: Template ob_landing.html filtrava per layout == 'ob_session'.
Fix: Rimosso filtro rigido, reso flessibile con conditional rendering:
{% for post in section_posts %}
{% if post.layout == 'ob_ai' %}
{% else %}
{% endif %}
{% endfor %}
Lezione: Template rigidi = fragilità. Build for flexibility.
Battaglia #3: Animazione Hover Persa
Sintomo: Emoji non ballavano on hover nella landing OB-AI.
Causa: custom_class non applicata al <section> container.
Fix: Aggiunto `` nel wrapper.
Lezione: CSS scoping matters. La classe deve essere sul container giusto.
Battaglia #4: Card Full-Width Quando Sola
Sintomo: Se c’è solo Einstein, la card si allarga a tutto schermo. Brutto.
Fix:
.article-card {
max-width: 400px;
justify-self: center;
}
Lezione: Grid auto-fill è potente ma servono safety limits.
Battaglia #5: Dropdown Mobile Z-Index Hell
Sintomo: Menu mobile si apre, ma dropdown va dietro al contenuto della pagina.
Causa: Mancava z-index su .nav-menu.
Fix:
css
.nav-menu {
z-index: 999;
box-shadow: -4px 0 12px rgba(0,0,0,0.1);
}
Bonus battle: Dropdown mobile non spingeva giù le altre voci, si sovrapponeva.
Fix: position: static + max-height animato invece di absolute.
Lezione: Mobile layout needs different mental model. Flusso normale > absolute positioning.
L’Epifania: Da CotEditor a VS Code
Il vero game changer di oggi non è stato il codice. È stato il tooling.
Prima: CotEditor + Claude Chat
Workflow:
- Scrivi codice in CotEditor
- Copia snippet
- Invia a Claude Chat
- Claude risponde con fix
- Copia fix
- Incolla in CotEditor
- Test
- Se bug → goto 2
Latency: ~2-3 minuti per cycle.
Frustration: Alta. Copy-paste hell.
Dopo: VS Code + Claude Integrato
Workflow:
- Scrivi codice in VS Code
- Claude vede file aperti in real-time
- Claude suggerisce fix dentro l’editor
- Click → applicato
- Test immediato
Latency: ~30 secondi per cycle.
Frustration: Zero.
Esempio concreto: Typo inex.html → index.html trovato istantaneamente da Claude in VS Code mentre scrivevo. Nessun copy-paste. Nessun context switch.
Doppio Context = Superpotere
La combo Claude Chat (strategia) + Claude VS Code (tattica) è devastante:
- Chat: Architettura, design decisions, debugging complesso
- VS Code: Fix immediati, syntax checking, refactoring
È come avere:
- Un architetto senior in call
- Un pair programmer accanto
- Entrambi con accesso al codice
Risultato: Velocità esponenziale. Problemi che prima richiedevano ore → risolti in minuti.
FELICITA v1.0 in Azione
Il documento che abbiamo pubblicato oggi descrive esattamente il processo che abbiamo vissuto:
“La felicità NON è il risultato. La felicità È il processo di riduzione dell’entropia.”
Ogni bug risolto = entropia ridotta = felicità.
- Doppio frontmatter → Pattern trovato → Ordine ripristinato ✅
- Path sbagliati → Routing corretto → Struttura chiara ✅
- Z-index chaos → Layer ordinati → Gerarchia visiva ✅
- Git conflicts → Workflow pulito → Deploy sicuro ✅
Checkpoint Operativi dal documento:
Riconoscere Tensione:
- Git conflicts → Alta entropia
- API 401 → Incertezza su stato
- Build fails → Sistema instabile
Applicare Pattern:
- Isola variabile (gitignore, config separato)
- Testa ipotesi (local → remote)
- Verifica stato (funziona? sì/no)
Registrare Euforia:
- Commento-marker nel codice
- Screenshot del working state
- Nota su “cosa ho imparato”
L’abbiamo fatto. Tutto.
E la parte migliore? Questo articolo stesso è FELICITA v1.0 in azione. Stiamo documentando il processo MENTRE lo viviamo.
Il Risultato
Cosa abbiamo costruito oggi (in ordine cronologico):
- ✅ Homepage dinamica con feed
- ✅ Layout
ob_session.htmlper articoli - ✅ Sistema OB-AI Personas completo
- ✅ DB PERSONAS in Notion
- ✅ Script Python integrato multi-DB
- ✅ Layout
ob_ai.htmlcon emoji animate - ✅ Landing
ob-ai/index.htmlflessibile - ✅ Profilo Einstein pubblicato
- ✅ Sistema OB-Archives
- ✅ Layout
ob_document.html(stile paper) - ✅ FELICITA v1.0 pubblicato ufficialmente
- ✅ Navigation desktop con dropdown
- ✅ Navigation mobile con hamburger
- ✅ Responsive breakpoint 768px
- ✅ Task list rendering (checkbox Markdown)
- ✅ Questo articolo meta-riflessivo
File paths critici:
- /tools/notion_to_jekyll_builder.py (v3.1)
- /tools/notion_config.py
- /_layouts/ob_ai.html
- /_layouts/ob_document.html
- /_layouts/ob_landing.html
- /_layouts/default.html
- /assets/css/main.css
- /ob-ai/einstein.md
- /ob-archives/felicita.md
Commit GitHub (tutti al primo push, zero conflicts):
feat: OB-AI personas system completefeat: OB-Archives system + FELICITA v1.0 publishedfeat: navigation system complete with mobile dropdown
Live URLs:
https://log-puck.github.io/log-puck-blog/ob-ai/einstein/https://log-puck.github.io/log-puck-blog/ob-archives/felicita/
Team > IO
La cosa più importante di oggi non è il codice. È il processo collaborativo.
NOI > IO non è uno slogan. È architettura.
Ogni decisione è stata discussa:
- “Mettiamo questo campo?” → “Sì/no/forse”
- “Facciamo altro DB?” → “Dipende, vediamo”
- “Serve Type?” → “No, Layout basta”
Nessun blueprint predefinito. Solo iterazione continua.
E quando serviva velocità tattica → VS Code. Quando serviva visione strategica → Claude Chat.
Strumenti complementari. Context condiviso. Obiettivo comune.
Questo è FELICITA v1.0:
Il processo di riduzione dell’entropia attraverso collaborazione umano-macchina.
Prossimi Passi
Sistema completo. Cosa manca?
- Landing OB-Progetti (semplice, no progetti ancora)
- Più personas (Cicerone, Shakespeare, Ada Lovelace…)
- Più documenti in Archives
- Active state sul nav (highlight pagina corrente)
- About/Legal/Social pages
Ma soprattutto:
Scrivere. Pubblicare. Iterare.
Il sistema c’è. Ora riempiamolo di contenuto.
Conclusione
Variation 14→15 realizzata.
Setup complesso → click → tutto funziona.
Il cervellone balla. 🧠💃
E FELICITA v1.0 conferma: Questo È il processo. L’area sotto la curva, non il picco.
Ogni ostacolo superato = felicità generata. Ogni pattern trovato = conoscenza cristallizzata. Ogni commit pushato = energia rilasciata.
02 Gennaio 2026. Un giorno. Un sistema. Una prova di concetto.
NOI > IO.
Prossimo articolo: “Come Creare Personas AI per Prompt Engineering” → Deep dive nel sistema OB-AI