2025-09-12

_c: il progetto più inutile che ho iniziato

 

Ciao, dall’altro ieri ho iniziato uno dei progetti più inutili che abbia mai fatto: _c.
Sono un campione nel creare software inutile solo per il gusto di scriverlo, e questo rientra perfettamente nella categoria.

Ma vediamo cos’è. È un translatore che converte un linguaggio semplificato in C. Di traduttori a partire dal BPP (basic plus plus) di Pavel Minaiev ne ho visti tanti: Vala, Bacon, i principali ma cene sono tanti altri. Il mio usa una sintassi stile Forth ma senza notazione polacca inversa:
: apre una funzione 
;
la chiude.

Esempio di hello world:

: s16 main . "ciao mondo\n" 0;

Sintassi

I tipi sono abbreviati:

  • s = signed

  • u = unsigned

  • f = float

  • 8,16,32,64 = bit

Quindi s16 = intero con segno a 16 bit.
Le stringhe hanno il tipo $, basate su malloc, ma più comode del C:

$ pippo = "ciao" pippo += " ciao" # pippo diventa ciao ciao free pippo

= crea una copia vera, non solo un puntatore.

I/O

  • . è printf, con gli stessi formati (%s, %d, ecc.).

  • ? è input:

    $ pippo = ?
  • out e in cambiano la destinazione:

out "testo.txt" . "ciao ciao\n" out stdout

Input/output possono puntare anche a socket o programmi esterni. Ovviamente appendono se devi cancellare lo devi fare tu.
Infine puoi inserire il codice c _c e anche header semplicemente con include (senza #)

Stato del progetto

Il tutto è stato scritto in Python in due giorni. Impensabile senza ChatGPT.

E allora perché dico che è inutile?
Perché prima del 2023 avrebbe avuto senso. Ma oggi con l’AI non servono più scorciatoie per semplificare il codice: non lo scriviamo più noi, lo descriviamo e basta. Anche questo post l’ho scritto io, ma poi l’ho fatto “ripulire” dall’AI.

Quindi _c funziona, è simpatico, ma non offre alcun vantaggio in un mondo dove l’AI filtra tutto. Proseguirò? Forse, finché mi diverte. Ma finirà comunque nel cimitero dei miei progetti dimenticati. Non falliti, perché funziona, ma senza futuro.

2025-09-10

Oggi ho vinto la Coppa del Nonno 🏆 (versione IT Edition)

 ___________
        '._==_==_=_.'       
        .-\:      /-.       
        | (|:.     |) |       
        '-|:.     |-'        
          \::.    /         
           '::. .'          
             ) (           
           _.' '._         
          `"""""""`        
      🏆 COPPA DEL NONNO 🏆
   --------------------------------
   |                              |
   |          [vroby65]           |
   |      "Maestro delle gaffe"   |
   |______________________________|
 

 

Oggi ho conquistato con orgoglio l'ennesima Coppa del Nonno — e no, non parlo del gelato. Parlo proprio di quella medaglia virtuale che ti danno quando fai una scemenza informatica degna di nota.

Capitolo 1: Il NAS e il grande reset inutile

Tutto è iniziato ieri, quando non riuscivo più ad accedere all’interfaccia web del mio NAS casalingo. Vado su Google Keep, dove conservo tutte le mie password come un bravo cittadino digitale. Trovo la password SSH… ma dell’interfaccia web? Nulla. Sparita.

Mi serviva entrare per iniziare a smanettare con la sezione VM, quindi stamattina mi sono detto: “vabbè, resettiamo tutto, che sarà mai”. Fatto il reset, imposto la nuova password, tutto ok.

Poi, trionfante, torno su Keep per segnare la nuova password…
…e cosa trovo?

🎉 Una seconda scheda del NAS chiamata "MyCloud EX Ultra", che ieri non avevo nemmeno visto.
E lì, bella stampata, c’era la vecchia password dell’interfaccia web.

COPPA. DEL. NONNO.
Con inciso sopra il mio nome.


Capitolo 2: Il triste mondo dei browser a 32 bit

Nel pomeriggio ho cercato di consolarmi facendo un po’ di ricerca libera sui browser 32 bit.
Spoiler: la Coppa del Nonno la vince pure il web.

Dal 2026 neanche Firefox ESR supporterà più i 32 bit, e il panorama attuale è tipo deserto post-apocalittico. Il meno peggio?
👉 Ping Browser, basato su Python. Che almeno dovrebbe continuare a funzionare.

Però sì, la situazione è triste. Tipo “rimettiamoci a scrivere in Lynx” triste.


Capitolo 3: Minimalismo, ciarpame e nuove frontiere

Nel frattempo sto anche facendo un po’ di decluttering digitale. Ho iniziato a spostare le cartelle dal desktop alla home, come rito preparatorio per un cambiamento più profondo: il passaggio a un desktop environment ultra minimalista.

Le opzioni sul tavolo:

  • Openbox + Tint2 + PCManFM (se riesco a sistemare le shortcut da tastiera come dico io)

  • Oppure i3, che ormai mi fa l’occhiolino da un po’

Escluso Sway, perché non posso girare i desktop — e con il monitor di destra in verticale, per motivi di spazio, è un no secco.

Ma prima, ripulire la home. Che in questo momento sembra un mercatino dell’usato informatico: cartelle di progetto mezze morte, backup di roba dimenticata, script che non so nemmeno più cosa fanno.


Insomma, oggi è stata una giornata produttiva nel senso opposto del termine.
Ma oh, almeno ora ho una password nuova, due schede su Keep ben etichettate, e un browser pythonico che forse funzionerà ancora un anno.

La Coppa del Nonno?
Brilla fiera sulla scrivania virtuale.

Perche non esistono Cad professionali per linux?

 

Oggi mi sono chiesto perché non esistono CAD professionali su Linux.
La risposta è sempre la stessa: soldi e pigrizia.

Le aziende hanno investito tutto su Windows negli anni ’90 e da allora nessuno si è più mosso. Meglio restare nel recinto di Microsoft che rischiare di aprire il software a un mondo diverso. Non è un problema tecnico: Linux è perfettamente in grado di gestire un CAD. È un problema di mercato e di volontà.

Così ci ritroviamo con soluzioni open source (FreeCAD, LibreCAD, KiCad) che fanno il loro lavoro ma non hanno la forza economica dei colossi. E i colossi? Continuano a spremere licenze e abbonamenti, mentre ignorano chi non sta nella gabbia Windows.

Morale: il CAD professionale su Linux non manca perché non si può fare, ma perché non conviene a chi comanda.

2025-09-05

Esperimenti con QEMU in RAM e microBASIC in Bash

QEMU in RAM: esperimento con /dev/shm

Ieri ho fatto un po’ di esperimenti con QEMU in RAM.
L’idea era semplice: prendere una macchina virtuale, copiare il suo disco qcow2 in /dev/shm e farla partire da lì. Se hai RAM a sufficienza per contenere il disco, in teoria dovresti avere un avvio e un utilizzo più veloci.

Lo script che ho scritto si occupa di:

  • controllare la dimensione del disco rispetto alla RAM libera,

  • creare la cartella della macchina,

  • copiarci dentro solo il disco,

  • affiancare a quella cartella il file .conf di quickemu.

Esempio di controllo RAM


# check
if [ ! -f "$CONF" ]; then
echo "❌ Config file not found: $CONF"
exit 1
fi
if [ ! -f "$DISK" ]; then
echo "❌ Disk not found: $DISK"
exit 1
fi

# check free RAM in /dev/shm
DISKSIZE=$(stat -c%s "$DISK")
FREESHM=$(df --output=avail -B1 /dev/shm | tail -1)
RESERVE=$((4 * 1024 * 1024 * 1024)) # 4 GB
NEEDED=$((DISKSIZE + RESERVE))

if [ "$FREESHM" -lt "$NEEDED" ]; then
echo "❌ Not enough free RAM in /dev/shm."
echo " Disk size: $((DISKSIZE/1024/1024)) MB"
echo " Free RAM: $((FREESHM/1024/1024)) MB"
echo " Required: $((NEEDED/1024/1024)) MB (disk + 4 GB margin)"
exit 1
fi

echo "✅ Enough RAM available. Proceeding..."

Risultati

  • Con Devuan: miglioramento di circa 10%

  • Con Alpine: nessun guadagno

Insomma, un esperimento simpatico ma non rivoluzionario.
Comunque apre la porta a possibili test con junest e alpinest, dove la gestione dei filesystem potrebbe dare risultati diversi. Ho deciso di relegarlo a esperimento e per ora non lo pubblico


microbasic.sh: un BASIC in Bash

Oggi ho cambiato completamente argomento e sono tornato alla Bash, scrivendo microbasic.sh.
È una piccola libreria che mette a disposizione comandi che ricordano il BASIC: PRINT, INPUT, LOCATE, INK, PAPER e così via.

Esempio di utilizzo

#!/bin/bash
source ./microbasic.sh

CLS
INK 2
PAPER 4
LOCATE 5 5
PRINT_ "CIAO "

NAME=$(INPUT "COME TI CHIAMI?")
LOCATE 0 7
PRINT "PIACERE, $NAME"

Il problema del case insensitive

La parte più complicata è stata la gestione dei colori e soprattutto la sensibilità al maiuscolo/minuscolo.

Per risolvere ho introdotto un error_handler che cattura i comandi non riconosciuti e li converte in minuscolo, invece di lasciare che Bash vada in crash.


In questo modo ho un controllo centralizzato e posso gestire tutto da un unico punto.

# case-insensitive commands
command_not_found_handle() {
cmd=$(echo "$1" | tr '[:upper:]' '[:lower:]')
if declare -F "$cmd" >/dev/null; then
shift
"$cmd" "$@"
else
echo "Syntax error: $cmd" >&2
return 127
fi
}

Nonostante ciò, per ora sono stato costretto a sdoppiare i comandi INK e PAPER in versioni maiuscole e minuscole. Non è elegante, ma funziona.
E già stasera, dopo cena, tornerò a lavorarci: sono convinto che esista un modo più pulito per risolvere il problema. Lo ho comunque già ora inserito sul mio github. Magari a qualcuno può servire


Big Tek: Google sempre più chiusa

Infine, una riflessione sul mondo delle Big Tek.
Google, ormai in piena fase “AI-centrica”, dominata da un management indiano, sembra aver perso interesse per la formazione di nuovi talenti. Ha smesso di pubblicare i tree di sviluppo di Android, ha tagliato concorsi di programmazione e tutte quelle occasioni che in passato permettevano a giovani sviluppatori di crescere.

In parallelo, chiude sempre più codice.
E un ambiente chiuso e segreto è il posto ideale dove i pirati prosperano: meno trasparenza significa più spazio per chi si muove nell’ombra. È paradossale che, nel tentativo di proteggere tutto, si finisca col favorire proprio ciò che si vorrebbe evitare.

Un tempo Google sosteneva università e ricerca con servizi quasi gratuiti, quando non addirittura con vere e proprie donazioni.
Oggi invece sembra voler monetizzare ogni cosa, cercando di fare cassa ovunque.

Il risultato è che assomiglia sempre di più ad una Apple in versione negativa: chiusa, segreta, impenetrabile.

Stiamo andando verso un mondo digitale meno libero e meno aperto.

Io continuo a sperare nell’arrivo di qualcuno che sappia riportare trasparenza e condivisione, valori che hanno fatto crescere l’informatica fin dall’inizio.

 


2025-09-03

il declino di ubuntu

Questo post è vecchio di dieci anni ed era rimasto come bozza. Direi che sottoscrivo tutto quello che avevo scritto. 

 

C'era una volta una distribuzione Linux sudafricana. Questa distribuzione aveva potenziato la vecchia e un po' anatroccolo Debian e aveva creato  un bel cigno che cresceva diventando sempre più bella.
Ubuntu era il suo nome e tutti si deliziavano a guardarla.
Finché un giorno proprio quando compiva 10.4 anni il suo creatore mentore e sponsor non decise di usare un interfaccia nuova innovativa scomoda e brutta: Unity. Da li in poi è stato un declino continuo. Release sempre più buggate e grasse che facevano sempre rimpiangere la precedente fino alla 17.04.
Già ora sono ormai anni che nessuno usa più la versione Unity: tutti puntano a Kubuntu oppure le leggere Xubuntu, Ubuntu mate e Lubuntu sorellastre della bellissima. E ora dopo un annuncio scioccante via l'altro: l'epilogo.
Ubuntu non svilupperà più mir, mai decollato Windows manager e non svilupperà più Unity. Non supporterà più il 32bit e in definitiva diventerà solo una Debian con un altro nome. Il cigno torna brutto anatroccolo che nel frattempo però è cresciuto ed è un po' meno brutto. Una favola con un finale amaro... O forse no?

installation Party e il campo di carote

 


Installation Party Day 🚀

Oggi è stato installation party day! Linux Mint ha rilasciato la nuova versione 22.2 Zara, e ho colto l’occasione per aggiornare tutte le mie macchine. Resta fuori solo quella di mio suocero, che sistemerò nei prossimi giorni quando passerò da loro.

Durante l’aggiornamento ho dovuto anche ripristinare Plymouth, che avevo personalizzato con un’icona diversa. Le mie macchine non usano il tema standard: ho scelto Nordic con le icone Zafiro, quindi le novità estetiche introdotte da Mint le ho notate poco. Inoltre non ho dispositivi con il lettore d’impronte, quindi anche questa innovazione non mi riguarda.

Al netto di tutto, la mia impressione rimane la stessa: Linux Mint rasenta la perfezione per l’uso quotidiano. Con strumenti come junest, alpinest e quickemu ci puoi fare praticamente di tutto.

Una chicca che mi ha fatto scoprire Giulio è la gestione dei kernel: Mint Update li gestisce in maniera impeccabile. Io ero rimasto fedele a Synaptic (che ora non è più installato di default, e in effetti non serve più), ma devo ammettere che il sistema attuale è ormai maturo. Anche il Gestore Applicazioni ha raggiunto piena affidabilità.


 



Il futuro di CarrotCamp 🌱

Nel pomeriggio ho invece riflettuto sul futuro di CarrotCamp. La mia vecchia Raspberry Pi 1B, chiusa dentro un barattolo di Nescafé, ha ormai 13 anni. Debian non la supporta più: con Debian 12 sono fermo, perché Trixie non ha kernel per ARM6 a 32 bit. Avrò aggiornamenti fino al 2028, dopodiché quella board dovrà andare in pensione o restare con software vecchio e insicuro, non più adatto a stare esposta su internet.

Vorrei che il suo successore fosse un po’ più potente: capace di far girare AI locali, un Gitea aggiornato, il classico CarrotCamp, e magari fare anche da backup server per i miei sistemi. Questo mi permetterebbe di staccarmi un po’ da Google, che ultimamente ha smesso di essere “not evil”.

Tra l’altro non sono affatto soddisfatto del mio NAS Western Digital da 8TB. L’ho isolato da internet dietro il modem perché sospetto che invii all’esterno l’elenco dei file. Ho il presentimento che, anche con la porta chiusa sul modem, riesca comunque a farlo. Nei prossimi giorni voglio verificare se posso sostituire tutto con una soluzione open source, perché così non ho la sensazione di avere il controllo.

2025-08-30

GhostBSD e un nuovo tool di benchmark

 


Oggi ho approfondito i test con GhostBSD e ho scoperto che servono almeno 6 GB di RAM: la live da cui si installa infatti copia l’intero filesystem in memoria.

Sul mio portatile più vecchio l’esperienza è stata sorprendentemente positiva: tutto ha funzionato senza problemi. Non l’ho installata in modo permanente perché non volevo rimuovere la Linux Mint, che su quella macchina è ormai perfetta.

Sul mio Acer Nitro V5, invece, ho avuto problemi: durante il boot il driver NVIDIA si pianta e il sistema non parte.


Parallelamente ho iniziato a sviluppare un piccolo tool di benchmark in Bash, che ho chiamato bench.sh (nome molto fantasioso 😅).
L’ho scritto velocemente con l’aiuto di ChatGPT:

  • utilizza come unica dipendenza glxgears per il test della GPU,

  • misura alcune prestazioni di base di CPU e RAM.

Ho già testato le mie macchine ottenendo valori coerenti con l’hardware. Su Reddit mi hanno fatto notare che il test della RAM non è molto probante, ma in pratica riesco comunque a distinguere le differenze tra modelli di RAM in maniera sensata.

👉 Il progetto è già disponibile su GitHub: bench.sh

2025-08-29

Test di GhostBSD e aggiornamenti su bfetch

 

 

Oggi ho testato GhostBSD, una distribuzione basata su BSD molto ben fatta. L’ho provata con Quickemu, dove l’installazione è semplice e veloce.

GhostBSD è disponibile in due versioni: XFCE4 e MATE.

  • La versione XFCE purtroppo ha qualche piccolo problema, ad esempio non è possibile cambiare lo sfondo.

  • La versione MATE invece è davvero buona, quasi al livello di Linux Mint (che resta il mio DE preferito).

I tempi di avvio e installazione sono ottimi. Domani voglio provarla anche su una macchina fisica.

Ho notato che gran parte del software è installato in /usr/local, cosa che può sembrare insolita rispetto al mondo Linux.

Nel frattempo ho voluto testare bfetch su BSD: parte regolarmente, ma ho dovuto modificare lo shebang usando

#!/usr/bin/env bash

perché anche Bash si trova in /usr/local. Ho quindi aggiunto l’ASCII art anche per questa distribuzione.

Restano in sospeso i test su NixOS e su Windows in Docker, che affronterò nei prossimi giorni.

👉 Un passo importante per rendere bfetch sempre più universale!

2025-08-28

Aggiornamenti su bfetch e nuovi test in arrivo

 

 

Oggi ho lavorato su bfetch, il mio mini neofetch scritto in Bash, pensato per essere più piccolo e semplice.

Ho usato image2ascii, il tool che ho creato per generare ASCII art con i mezzi blocchi dei caratteri avanzati, per rendere i loghi delle distribuzioni più leggibili. Ho anche aggiunto il logo di Raspbian e aggiornato il repository su GitHub. Mancano ancora molte distro, ma non voglio far crescere troppo le dimensioni del progetto: meglio restare minimal.

In parallelo ho scaricato GhostBSD e NixOS, che testerò nei prossimi giorni con Quickemu.

👉 Un altro passo avanti in questo periodo super-fertile di esperimenti!

2025-08-27

image2ascii

 

 Ieri sera ho guardato tutti i tool per fare ascii art e nessuno mi piaceva. Il fatto è che nei terminali moderni puoi usare il blocchi pieni e i mezzi blocchi pieni e quindi di fatto sono dei grossi pixel che ad esempio nei loghi delle distribuzioni e cosi mi sono messo in batteria per fare un tool in python in grado di convertire un immagine png jpg oppure un svg in un testo di ascii art. Il risultato fin da subito è stato spettacolare e a quel punto da esperimento è passato a progetto e pubblicato su github. Lo trovate qui.

Non ho ancora rifatto le icone a bfetch ma penso di farlo domani pomeriggio assieme a un primo testo di nixos. Ah e bfetch ha sostituito fastfetch sul mio pc principale.

È un periodo molto fertile e chatGPT riduce drasticamente i tempi di sviluppo e un nuovo progetto è usabile in una manciata di ore.

2025-08-25

git-ac su github

 

 Ok andato: git-ac è pubblicato su github. Stamattina ho deciso di trasformarlo da componente di fish a script bash.

Il passo è stato breve e ho testato entrambe le strade:sia tgpt che ollama.

Per tgpt il modello è il default phind. Non mi piace del tutto il comportamento comunque puoi sempre editare quello che esce. 

Con il motore ollama ho provato il gemma3:1b ma è troppo chiacchierone e sono finito sul vecchio mistral che si comporta decentemente a prezzo di un po di lentezza (almeno sulla mia macchina). 

La cosa simpatica è che l'ho pubblicato con se stesso.

Pomeriggio invece ho completato bfetch e adesso ha i loghi per le distro linux. Ne mancano ancora e alcuni non sono venuti benissimo ma è un buon punto. È incredibile quanto è veloce: fastfetch in confronto è molto più lento. Non è ancora inserito di default sulle mie macchine ma presto lo metterò

 

2025-08-24

bfetch e git-ac

 

 

Oggi ho lavorato a 2 progetti: uno è pubblicato su github ed è bfetch. Si tratta di un semplice micro clone di neofetch scritto in bash. E' leggerissimo e al momento l'unico limite è il logo che è provvisorio e fisso del nostro tux.

Il secondo in realtà è il primo ed è git-ac.  Siccome mi scoccio di scrivere le note dei commit ho fatto questo tool che fa il diff del commit lo esamina con una ai e scrive il message. Mi riduce la fatica di fare i commit anche perché spesso dimentico nel dettaglio cosa ho fatto. Ho usato come motore di intelligenza artificiale tgpt. Ollama sulla mia macchina è un po lento. Tgpt invece funziona bene e non ha troppe contro indicazioni tranne forse il prompt che mi ha tenuto in scacco qualche ora per filtrarlo. Ho usato bfetch per sviluppare e testare git-ac. Dimenticavo di dire che quest'ultimo non è un programma indipendente ma è una funzione di fish. Deciderò nei prossimi giorni se trasformarlo in un programma indipendente magari scritto in Python.  

2025-08-22

positron

 

 L'esperienza dei giorni scorsi ha dato i suoi frutti. 

Ieri pomeriggio ho fatto una lunga camminata e mentre il mio cervello girava libero mi sono reso conto che se usiamo il python e webview per fare un clone di electron questo potrebbe essere crossplatform.

Arrivato a casa ho messo sotto chtGPT5 thinking che fin'ora aveva deluso e ho spiegato bene il progetto. In 2 ore avevo già positron funzionante. Per ora solo html/javascript ma nulla vieta di espanderlo verso nodejs react vue e soci vari.

Il programma si divide in 2 file python: lo script install, il classico requirements.txt (vuoto ha solo webview) e il readme.md fatto da chatgpt in inglese.

positron e make_bundle in linux si lanciano come eseguibili. 

Se lanciate positron se non esiste crea la cartella www con dentro un index minimo di benvenuto dopodiché ve la mostra nel webview.

make_bundle invece appende la cartella www e il suo contenuto con electron e uno script python di avvio che scompatta il pacchetto in /tmp (o in temp di windows) e lo esegue.

Il progetto è gia su github (https://github.com/vroby65/positron).

E' un progetto giovanissimo da testare e usare con cura. Non ho ancora messo qualcosa di complesso e non so nemmeno se è in grado di salvare o come si comporta con i cookie e con IndexedDB e local storage. Già oggi cambierò il benvenuto con qualcosa in inglese visto che ora è in italiano.

aggiornamento del 23 agosto 2025 

 ho inserito il salvataggio con la scelta. Questa feauture non è prevista in webview che salva sempre in Download (nel mio caso Scaricati). Ho risolto facendo un piccolo e leggerissimo demone che controlla se viene salvato un file e se si ti chiede dove vuoi metterlo. Ho anche risolto il problema della localstorage e indexedDB che scomparivano.
Siccome la cache è persistente ho pensato di usare il classico parametro ?nocache=date.time alla index.html. In questo modo è sempre resettata la cache ma purtroppo webview considera pagine diverse con indexedDB diversi. Ho risolto usando la dimensione della index.html come parametro. In questo modo il database è sempre lo stesso. Ora proverò a estenderlo verso nodejs. 

E come sempre a disposizione per suggerimenti e modifiche

2025-08-21

!sw

 

 Ciao!
Sto sviluppando il mio (ennesimo) microbrowser !sw. Anche stavolta sto usando Python perché in questo modo ho una decisa portabilità. Gli altri che ho fatto erano solo per linux. Questo invece deve essere cross platform. Ho quindi usato webview. Questo componenete non va d'accordo con nulla. Non puoi metterlo in una finestra assieme a comandi gtk o qt e quindi?  Iniettiamo codice javascript e la toolbar la scriviamo in javascript. Con il javascript ho anche rediretto i link a nuove finestre/schede e ho anche testato l'ascolto dei tasti. Siccome la barra è un div fixed con zindex massimo, quindi sopra a tutto, copre parte della pagina sottostante. Ho provato a iniettare un margin-top al body ma spesso le pagine hanno dei div fixed anche loro. L'ho quindi spostato in basso e intercetto il tasto esc per nasconderlo/mostrarlo. Di solito c'è sempre spazio in basso e nei rari casi in cui c'è da guardare cliccare si preme esc e si vede tutto

Non è ancora pubblicabile, sto litigando  perché se ti muovi un po ogni tanto si pianta e ci devo lavorare ancora un po'. Se il codice javascript della pagina va in errore non ti muovi più e puoi solo chiudere il browser. Il lato piu positivo è che siamo a 133 linee di cui piu della meta sono javascript. Appena avrà una parvenza di stabilità lo metterò su github

2025-08-17

Debian 13


 

Ecco. È arrivata debian13. Questa distro è importante e chi guida lo sviluppo ha preso delle decisioni e fatto delle scelte, che per carità capisco benissimo, ma mi lasciano l'amaro in bocca. Hanno per cominciare levato sdlbasic. Me lo aspettavo infatti ho fatto il pacchetto AppImage apposta pero' assieme hanno anche levato un mare di software (12000 pacchetti) più o meno un terzo del totale perché giudicati obsoleti. Se fosse software proprietario lo capirei ma per il software libero fatico molto. Non vengano a raccontare la storia per la sicurezza perché contemporaneamente hanno inserito 28000 nuovi .deb quindi stanno levando software consolidato che non ha mostrato falle per software nuovo quindi da verificare. Inoltre siccome adesso le vulnerabilità si fanno sulla supply chain sarà molto probabile che molti pacchetti saranno compromessi. Più facile con pacchetti nuovi magari scritti apposta che con pacchetti anziani non più sviluppati in cui è davvero difficile inserire malware.

Ho letto con toni entusiasti il supporto al riscV-64 la nuova piattaforma hardware. Ora non sono espertissimo ma al momento ho trovato un solo dispositivo interessante da supportare. Comunque ben venga una nuova architettura oltretutto opensource. Ma in contemporanea hanno anche levato il supporto a i386 e armel. Quindi hanno introdotto un architettura con un dispositivo supportato e levato il supporto a tutto l'hardware a 32 bit che ha dominato la scena fino al 2010. Tutti i netbook atom tutti i portatili leggeri. Tutto hardware usato proprio con debian e le raspbeyypi 1 e 2 oltre alle varie orange pi, banana pi arietta e in genere a tutti i dispositivi arm leggeri. Se contiamo le piattaforme supportate con quelle abbandonate il bilancio è in netta contrazione. Tutte le piattaforme spark motorola mips eccetera sono state abbandonate nelle scorse versioni e di fatto stanno seguendo il trend anticipato da ubuntu. Ripeto tutto hardware ancora vivo e probabilmente in molti ambiti usato che finirà in discarica come rifiuto speciale. Tutto questo in un momento in cui linux sta crescendo e sta migliorando la sua penetrazione. A questo si aggiungono le solite mancanze in termini di configurazione e semplicificazione con ad esempio l'introduzione di nuovi tool per la rete che pero non sono completi e la mancanza di configurazione delle piattaforme desktop.

Questo impatta abbastanza nelle mie attività di recupero di pc dismessi. Dovrò gioco forza passare ad altro. Vedo con favore devuan e alpine. Quest'ultima comunque anche lei su questo sentiero. il supporto per debian12 termina nel 2028 e quindi devo programmare nei prossimi 3 anni la sostituizione del mio serverino casalingo acceso dal 2012. Pensavo che sarebbe durato fino alla mia morte per ancora tanti anni invece qualcuno ha deciso diversamente. 

2025-08-15

tanti progetti

 

Ciao, in questi giorni ho finito i pc con alpine grazie a Giulio che è venuto a casa mia e ha fatto un po di lavori hardware e software. Con lui abbiamo iniziato il progetto di estrarre la grafica da una mint xfce4 e di inserirla in alpine installando tutto. Naturalmente non è perfetta: scorciatoie menu wisker e altri particolare non ci sono ancora. È in questi casi che si vede ancora di più il fantastico lavoro fatto da Clément Lefèbvre.

Il secondo progetto è invece proposto da Damiano. Si tratta di esperimento sociale. Una nuova moneta (estimo) sociale automatica ma centralizzata il portafoglio funziona a inviti e ogni persona invitata ha di partenza una cifra da poter scambiare. Si può usare come moneta di scambio. Ho usato il fido php e un database sqlite e uso qrcode  per semplificare le operazioni di accesso e di scambio. Ho già un po di modifiche da implementare ma l'ossatura è impostata. È bello lavorare con gpt. E' come avere un socio di fianco che si  legge la documentazione e ti trova le soluzioni che altrimenti dovresti cercare su internet studiando paccate di siti.

Il terzo progetto è sempre derivato dall'esperienza alpine. Sto cercando di fare una iso live con li script nello stile alpine (setup-debian ecc). chatGPT mi ha fatto lo script per installare tuttavia non ha funzionato e la iso ancora non fa il boot. Anche questo lo finirò nei prossimi giorni 

   

 

2025-08-10

Sstring

 Eccomi,
sto esplorando il mondo chatGPT5. In realtà la mia sensazione è che sono i vecchi modelli messi insieme in cui si switcha da uno all'altro purtroppo in modo ancora abbastanza casuale. Il mio preferito il 4o lo posso usare quando risponde direttamente se invece pensa sta usando gli o3mini con cui non mi trovo e che per me da risultati pessimi.

Per esplorarlo e spronato da un video di Antirez ho sviluppato una libreria sulle stringhe evoluta. In pratica si può allocare la stringa in modo tradizionale ma è anche possibile usare dei buffer temporanei che si scaricano da soli. Non una vera e propria garbage collection che consumerebbe risorse ma una serie circolare di buffer. Ho
poi inserito i classici comandi sulle stringhe semplici e veloci. Non so quanto mi potrà essere utile però è stata un esperienza divertente. Domani pomeriggio riprenderò la risistemazione dei portatili. Vi lascio con la foto della nostra micetta. Devo aggiornare il suo blog 

2025-08-08

chatGPT5

 

 ieri sera mi hanno abilitato chatGPT5. A parte il cambio della schermata per il resto l'interfaccia è identica. Fino a oggi nel tardo pomeriggio non l'ho usato perché mi sono dedicato alle pulizie e non ho scritto codice. Poi stasera giusto per testarla ho scritto rrk (read raw keyboard) un piccolo tool per terminale per leggere bene la tastiera senza i casini dei codici escape che ho visto facendo zepto. GPT5 è meno chiacchierona e spiega meno quello che fa pero per contro il poco che spiega è molto chiaro e il codice funziona bene, non prende svarioni. Ho fatto fatica a fargli capire cosa volevo ma forse sono stato io che mi sono spiegato male.  Ci sono arrivato per gradi passando dalle sdl e alla fine il risultato è stato ottimo. Ho anche chiesto di trasformarlo in una funzione da includere in altro codice C e lo ha fatto benissimo con tanto di test.
Mi manca pero gpt4o che è stato il mio compagno di giochi degli ultimi mesi. Questo gpt5 sembra più serio e purtroppo il vecchio modello come chat non è più disponibile. Vediamo nei prossimi giorni se il rapporto migliorerà. Già domani conto di metterlo alla frusta con la versione 2 di ping browser che è rimasta incompiuta.

Oggi ho non installato altri portatili. Ne sono rimasti 9 e ci lavorerò a partire da lunedì 

2025-08-07

steek

 

 

Eccomi altro giorno a piena programmazione. Anzi mezza visto che stamattina la spesa si è presa buona parte della mattina. Ho portato su 2 pc e stavolta sono andati non tanto bene. Uno è senza alimentatore e l'altro è un centrino quindi niente wifi. Alpine con i driver è così così. Siccome se non hai il wifi devi appoggiarti alla ethernet ho dovuto fare in modo che il mio pc che è collegato in wifi al router possa distribuire internet con il cavo ethernet. Ho quindi da nm-applet attivato la condivisione della connessione che non andava poi spegnendo il firewall si è finalmente messa ad andare e grazie a chatGPT ho riconfigurato il firewall. Ora finalmente va benone e posso alla bisogna attaccare un pc alla rete ehternet da mio pc. Poi terminato il pc funzionante ho ripreso in mano steek.altervista.org.

 

 Questo sito servizio permette di condividere in piu pc una nota. Ho esteso la cosa anche ai file. i dati sono cifrati e ho usato la chiave xor. Alla fine mi sono pero reso conto che tutte le operazioni di cifratura sono server side e quindi l'ho ricostruito per cifrare lato client nel browser e quindi i dati conservati sul sito non sono verificabili senza avere la chiave di cifratura. Il sito è totalmente anonimo e quindi è possibile caricare qualunque cosa senza che possa verificare nessuno cosa sia.Al momento non cancello ancora i file e le note ma se prenderà piede ridurrò a un tempo limitato la permanenza dei file sul server

2025-08-06

Parliamo di phind

 

Proseguo l'installazione dei PC. Ho dovuto fare un CD per fare il boot su alcuni portatili che non fanno il boot da chiavetta. Fino ad ora, solo due portatili non funzionano con Alpine. Per questi ho installato Debian.

Veniamo alla parte principale di questa sera. Phind (https://phind.com) è un eccellente LLM. Ha un modello da 70B di default e a pagamento offre anche altri modelli come ChatGPT e Antropic Claude. Tempo fa ho scoperto su GitHub Tgpt, che permette di usare vari motori online da terminale. Questa cosa è interessante, ma questo tool è scritto in Go. Intendiamoci, il Go è un ottimo linguaggio, ma deve essere compilato per la piattaforma. Io quindi ho scelto di riscrivere in Python e invece di supportare tanti LLM, ho preferito usare solo Phind. Per accedervi uso il componente Httpx, che mi assicura di mandare le richieste e di ricevere le risposte. Uso ovviamente solo il modello leggero. Non voglio abusare del servizio. Sui netbook sono costretto ad usare questo metodo perché nessun LLM di rilievo può funzionare con così poche risorse. Invece così si riesce ad usare e risponde spesso in modo soddisfacente.

Si potrebbe fare una versione online? Si certo, ma non ha senso tanto vale usare il servizio. Se avessimo X mi sarei limitato a mettere nei preferiti il link. Ma qui siamo all'osso e con Lynx (il browser testuale che ho messo) non entro in Phind. Non metterò questo tool su GitHub perché non voglio togliere spazio a Tgpt, che è un eccellente prodotto, ma che qui avrebbe comportato il doverlo ricompilare, posto che si possa fare in un ambiente a 32bit. Se pero cercate nel mio campo di carote e pippate i moduli Python necessari funziona ovunque. Penso anche nel terminale di Windows. La mia speranza era di farlo con Bash, ma manca un componente come Httpx e Curl non riesce a superare i check javascript. Andrebbe fatto ma per ora è oltre le mie forze.

Questo progetto rappresenta una soluzione praticabile per l'utilizzo di Phind su dispositivi con risorse limitate, offrendo un'alternativa flessibile per l'integrazione di LLM in ambienti con requisiti hardware ridotti.

 

 

2025-08-05

installation weekly

   

Eccoci qua: ieri non ho fatto granché per cui non c'era nulla da scrivere. Oggi invece ho iniziato a installare i PC portati domenica. Voglio lavorare con calma. Sto installando alpine dev ma ho dovuto mettere insieme anche una Debian-dev. La alpine appare più reattiva ed grande la metà. Con 2 giga di immagine ne avanzo. Invece la Debian richiede 4 gigabyte e devo stare attento a cosa installo. La compatibilità è pero inferiore. Sui netbook atom va abbastanza bene invece sui portatili di 15 anni fa non parte proprio. I computer sono abbastanza disastrosi. Alcuni hanno guasti pesanti e a volte non c'è l'alimentatore. 

Stasera ho voluto testare anche slitaz per vedere come va. Con quickemu non avvia e ho dovuto farmi una configurazione ad hoc per farlo andare. Piccola è piccola la base senza x è 8 megabyte! Però purtroppo è disastrosa non si riesce a configurarla. Il pakage system non gestisce le dipendenze e ha una sintassi ancora diversa. Se con alpine è più comoda in questo caso è molto più difficile da memorizzare. Ha un frontend dei pacchetti che in effetti è la via per salvarsi. Mi sono capitati diversi problemi con lxpanel che si spegne senza apparente motivo. La goccia che fa traboccare il vaso è firefox esr che si installa ma non parte e il firefox ufficiale che va ma che è talmente vecchio che non puoi aprire YouTube. Anche Midori è antico. Anche per i driver delle schede wifi siamo in alto mare. Per cui per ora resta nelle macchine virtuali

  

2025-08-03

sempre nel terminale

 

 ciao,

oggi sempre a sperimentare sul terminale. Avevo pensato di scrivere velocemente un tool per scrivere lettere grandi sul terminale. Stavo per partire ma poi ho trovato figlet e toilet che fanno esattamente questo. Mi sembrano entrambi ottimi: toilet un po più complesso e figlet più leggero e minimalista. Inutile farne un altro che non credo verrebbe meglio.

Sono quindi passato a studiare vi. Non è che sono a zero ma non conosco tutte le feature offerte. In generale mi pare evidente che è nato sulle tty testuali con tutti i limiti del caso. 

Servirebbe un nuovo modo di intercettare i tasti in tty. Nei prossimi giorni studierò anche questo. 

Ultimo lavoretto vorrei migliorare il mio interprete php di file markdown che ho usato nel sito di alpine-dev.   

Nel pomeriggio è passata Laura che mi ha portato una ventina di pc da demolitore per vedere di tirare fuori altri pc da usare con alpine-dev. Quindi per la prossima settimana ho di che divertirmi 

2025-08-02

la tastiera con tty


 

Eccomi di nuovo. Mi fermo e poi cazzeggio un po'.

Stamattina ho provato a portare su Alpine-dev Linux il mio microeditor Zepto e mi sono accorto che non potevo selezionare per copiare-incollare. Controllando solo mcedit lo faceva correttamente. Micro e il mio Zepto invece no. Ho fatto alcune prove e alla fine ho scoperto che la combinazione di Maiuscolo+Cursori in tty senza Xorg o Wayland non è supportata. Di fatto si comportano in modo diverso in terminale su finestra grafica mentre sul terminale no.

E non succede nemmeno se usi SSH. In quel caso è il tuo X a sistemare le cose. Quindi la soluzione che ho ideata per Zepto è stata aggiungere F3 che attiva la selezione e ripremendolo la disattiva come mcedit.

Httpx: dopo averlo studiato un po'  credo convenga usarlo con Python. Non è affatto banale, a quanto pare. Per ora ho rinunciato all'idea di riscriverlo.

Ho rimesso le mani su IdeaAI che non funzionava. IdeaAI è un giocattolino che premendo una sequenza di tasti si attiva e ti apre un prompt. Tu fai una domanda e lui risponde sulla finestra attiva. Inoltre, se selezioni il testo diventa parte del mandato alla AI. Così evitiamo anche di fare copia-incolla. Il difetto è che risponde Phind 70b non certo ChatGPT-4. Non funzionava più perché avevo levato il timeout; errore mio. Adesso è perfetto.

Ho grazie a Daniele notato che avevo confusione con i domini Apache e l'ho sistemata. Non sono del tutto convinto e anche qui ci tornerò su. L'obiettivo è renderla una macchina autosufficiente.


2025-08-01

rabbit r1 e sistemiamo il carrotcamp

 

Ciao, ieri sera in comPVter Luca, un nostro socio, ha portato il suo Rabbit R1.

Interessante progetto, plasticoso, giocattoloso e molto sperimentale. Mi ha sorpreso il loro sito web che apre al suo interno google e amazon. Penso che sia un browser remoto che naviga per noi. Ha risolto un captcha!!!! Ora o hanno un esercito di indiani che risolvono e navigano per noi oppure hanno un intelligenza artificiale davvero valida. Sono tempi duri per i tool antispan. Sul rabbit ho un opinione precisa: gli LLM  li hanno spiazzati. Loro contavano su un automatizzazione più semplice ma con ChatGPT hanno dovuto giocoforza dirottare e abbracciare le nuove intelligenze artificiali.

Stamattina ho aggiornato dev-tool adesso funziona bene mentre ieri sera dava problemi. Poi ho cambiato il messaggio di entrata di carrotcamp. "Questo sito è sperimentale e viene utilizzato per testare software in fase di sviluppo.Alcune sezioni possono utilizzare cookie o altri strumenti tecnici, unicamente per garantire il corretto funzionamento del sito. Non viene effettuato alcun tracciamento per fini pubblicitari.L'accesso al sito, anche tramite link diretto, implica l'accettazione piena e consapevole di tutti i rischi legati all'utilizzo di software sperimentale.L’autore declina ogni responsabilità, diretta o indiretta, per danni, malfunzionamenti o conseguenze derivanti dall’uso del sito o del software, anche in caso di imperizia propria o altrui.Se non accetti queste condizioni, chiudi la pagina. Altrimenti puoi proseguire". Questo perché vedo che vogliono impedire che la gente smanetti. Ci tornerò su e farò un post dedicato. Ho fatto velocemente i siti per le vecchie distribuzioni e ho mandato al cimitero semplice e minimo. Il cimitero è una sezione dei Laboratori   dove riposano i progetti che non hanno piu motivo di esistere. Hanno fatto il loro tempo. Credo molto nel markdown e penso diventerà il motore di internet del futuro,  posto che il web abbia un qualche futuro in questa era di llm. 

Passiamo a phind: non porterò phind su github ma resterà nel mio sito. È pienamente compatibile con gli altri linux e credo anche con windows e anche macosx. Dove c'è python e pip phind funziona. Merito di httpx che domattina studierò 

2025-07-31

apriamo la sezione distribuzioni linux

Ciao!
Oggi ho iniziato una nuova sezione del Carrotcamp chiamata distribuzioni-linux.

Ho già spostato dentro alcune cartelle che prima erano in Public, e ho cominciato a lavorare sul sito di alpine-dev.

La pagina è compatibile con Lynx, il browser da riga di comando, ed è in stile fosfori verdi su sfondo nero.
Per ogni tool ho creato una paginetta dedicata. Sto usando un nuovo sistema: un index.php che legge index.md scritto in Markdown e lo converte in HTML, applicando il CSS in stile terminale.
Uso PHP perché Lynx non supporta JavaScript, ma dovrebbe comunque visualizzarsi bene (devo ancora fare i test).

Per quanto riguarda find, invece, fumata nera con lo script in shell.
Purtroppo bisogna usare Python e httpx: con curl non si riesce a superare il filtro anti-bot.
Sarebbe interessante creare un comando httpx che si comporti come curl, magari in futuro ci penso.

Intanto ho fatto una versione più minimale di phind, ridotta a 45 righe di codice.

Questa sera ho una serata compvter: porto un netbook funzionante per far vedere come vorrei organizzare il corso C/Python/Linux che ho in mente.

 

 

2025-07-30

alpine-dev day

 

 Eccomi adesso mi fermo. Oggi ho lavorato a fondo sulla alpine-linux testuale  per netbook. Ho deciso di chiamarlo alpine-dev. Ho fatto la schermata di accesso e sto cercando di renderla carina. Ho messo fish e l'ho temato senza mettere il pesante oh my fish.

Ho scritto diversi script:

wifi: l'avevo iniziato ieri adesso sono molto a posto. Il limite sono i driver che nel kernel Alpine sono un po limitati. Ho provato a caricarli tutti con apk add linux-firmware ma cavolo sono 600 megabyte di driver. I netbook asus sono molto compatibili, quelli acer invece è un po variegato. Il mio acerone prima edizione va al primo colpo uno molto più nuovo mi ha tirato scemo e non sono riuscito a farlo andare. Domani vado avanti.

 dev-tools: si tratta di un tool per scaricare gli script. Ho intenzione di mettere anche altro. Si tratta del punto di partenza.

expandfs: è un tool per espandere il disco. L'immagine del disco è 2.1 giga byte. Per installare la copio con dd. Quindi la restante parte del disco è inutilizzata.con questo script espando la partizione / mentre è montata. Funziona bene e credo farò altre modifiche.

phind: è uno script Python che interroga il motore AI phind. Ho preso il codice da tgpt. Non uso tgpt direttamente solo perché è scritto in Go e va ricompilato. Un po un casino. Appena ho tempo cercherò di convertirlo in sh cosi elimino le dipendenze. I dettagli li spiegherò in un post a parte.

Questi tools nei prossimi giorni riceveranno le pagine di progetto dentro carrocamp.

 

 

 

 

 

2025-07-29

il primo giorno (del resto della vita)

Eccomi tornato. 

 Era un botto che non scrivevo su questo blog. Anni, e di codice ancora meno

È un periodo che sto facendo davvero tanto codice open source e comincio a perdere cognizione di tutto quello che ho in ballo. Per cui aggiungo anche il blog che mi farà da diario per tracciare con snellezza i vari progetti in cui mi sono impelagato.

Oggi ho fatto altri pc con la coderdojoOS. Questa volta sono passato a mint xfce editon ma usando la iso che ho aperto, estratto lo squashfs e con chroot ho aggiunto pacchetti, configurato la lingua e la tastiera ecc. Il cuore di tutto è Scratch 3 che compilo, dal repository ufficiale in github,  tutte le domeniche in automatico e pubblico sul sito del coderdojoOs (https://coderdojoos.altervista.org). È una cosa automatica. La domenica mattina appena accendo il pc lo script fa il pull del repository costruisce l'appImage con electron e lo mette sul sito.Lo faccio la domenica mattina perché mi aspetto che sia un minimo più stabile

Altro progetto che mi sta dando soddisfazione è il mio avvicinamento al mondo alpine-linux.

Ho 3 diversi sotto progetti:

alpinest: un installazione in userspace di alpine fatta da uno script. Ho copiato l'idea di junest. Funziona bene anche se le applicazioni piu complesse che hanno sandbox o che richiedono privilegi elevati purtroppo non vanno ancora. Il cuore è proot. Non sarei mai riuscito a fare una cosa simile in pochi giorni senza chatGPT.

 

 alpine-dev: questo è più indietro: sto cercando di creare una versione di alpine senza x con tool per avanzati per la connessione a internet e per la compilazione. Se riesco a tirarla come dico io la userei sui vecchi netbook che ho in cantina e che non vanno più bene con scratch3 in special modo per la risoluzione dello schermo, da usare per un corso di c, python e linux da riga di comando. Alpine è sicuramente la cosa che si troveranno ad affrontare sul lavoro, sicuramente dentro Docker ma anche con altre fantasiose maniere

Il terzo e ultimo è semplicemente fare su qemu/quickemu una versione di alpine rifinita come una mint. I desktop su alpine non mancano ma appena avviata l'aspetto è spoglio anche più delle versioni Debian. Non tutti hanno il tempo e a volte la capacità di configurarsi a dovere l'ambiente di lavoro. È questa la forza di Mint: avere un ambiente molto coerente semplice e pronto all'uso senza modifiche. L'esperienza fatta mi ha fatto modificare anche la Mint stessa che è la base del mio sistema  

 

 Infatti ho installato il tema nordic che è molto equilibrato. Io da molto tempo ho come desktop mate. Mi piace molto perché sono desktop centrico e con questo DM posso cambiare le icone delle cartelle e anche la dimensione in base all'importanza. 

Per ora è tutto.