Il vibe coding sta cambiando il modo in cui anche chi non è sviluppatore di professione può creare piccoli strumenti utili, e un esperimento recente con FFmpeg lo dimostra in maniera piuttosto convincente. Parliamo di quel software leggendario, una specie di coltellino svizzero multimediale che alimenta un numero impressionante di applicazioni per la gestione di file audio e video. Il problema? Non ha un’interfaccia grafica. E questo, per chi non ama smanettare con la riga di comando, può diventare un ostacolo fastidioso.
Digitare stringhe lunghissime di comandi, andare a ripescare la sintassi giusta dalla documentazione, copiare esempi da qualche forum: è il rituale quotidiano di chi usa FFmpeg da terminale. Funziona, certo, ma alla lunga diventa tedioso. Ed è proprio da questa frustrazione che nasce l’idea di usare il vibe coding per costruire un frontend grafico, senza scrivere una sola riga di codice a mano.
Come nasce un’app funzionante in 31 minuti
L’approccio scelto è stato volutamente il più rilassato possibile. Nessuna pianificazione dettagliata, nessuno schema preciso delle funzionalità. Solo un prompt generico dato a Claude Opus, il modello di intelligenza artificiale di Anthropic, con una descrizione vaga di quello che serviva. Il modello ha fatto qualche domanda di chiarimento e poi si è messo al lavoro.
Come linguaggio di programmazione è stato scelto Rust, sia perché sta diventando sempre più rilevante nell’ecosistema Windows, sia per motivi di apprendimento personale. Per l’interfaccia grafica è stato usato Slint, così da ottenere un aspetto coerente con le finestre di Windows. In 31 minuti esatti dal primo prompt, l’applicazione era già utilizzabile. Non perfetta, non rifinita nei dettagli estetici, ma funzionante: selezione del file, menu a tendina per il formato di output, conversione tramite FFmpeg.
L’unico intervento manuale è stato necessario per il menu a tendina del formato di output, che visivamente sembrava a posto ma non cambiava effettivamente il formato del file. Bastò segnalare il problema al modello, che lo corresse senza ulteriori intoppi.
La cosa più interessante è che Claude Opus non si è fermato una volta completato il compito. Ha iniziato a suggerire funzionalità aggiuntive, come il drag and drop. La prima implementazione era un po’ scomoda: prevedeva di trascinare i file direttamente sulla barra del percorso. Dopo una richiesta di modifica, è stata creata un’area dedicata al trascinamento dei file che funzionava perfettamente. Il modello ha anche fornito istruzioni dettagliate per compilare il programma in modo da usarlo su altri PC, suggerendo persino di includere FFmpeg nel pacchetto per i computer che non lo hanno già installato. Ha persino creato un’icona di base per l’app.
Opus contro Sonnet: la differenza si sente
Non tutti i modelli di Claude si comportano allo stesso modo quando si parla di vibe coding. Con gli stessi prompt dati a Opus, Claude Sonnet ha prodotto risultati decisamente meno solidi. Sonnet tendeva a rompersi con maggiore frequenza e richiedeva indicazioni molto più precise, una guida passo dopo passo e un piano dettagliato dell’architettura del programma. In pratica, se si sa già esattamente come strutturare il software, Sonnet può andare bene. Ma se l’obiettivo è proprio quello di delegare le decisioni al modello, che è poi il senso del vibe coding, Opus si è dimostrato nettamente superiore. C’è un rovescio della medaglia: Opus consuma i limiti di utilizzo in modo molto più aggressivo rispetto a Sonnet.
L’interfaccia finale assomiglia in modo ragionevole a un programma Windows, considerando che le scelte estetiche sono state lasciate interamente all’intelligenza artificiale. Il vibe coding non è certo pronto a sostituire gli ingegneri del software professionisti, ma i risultati ottenuti con Opus sono enormemente migliori rispetto a quelli che si potevano ottenere anche solo 18 mesi fa. Non sarebbe saggio fidarsi di uno strumento del genere per applicazioni esposte a internet, ma per piccoli progetti personali e strumenti non critici, il potenziale è ormai evidente.
