Feeds:
Posts
Comments

Siv – Racconto

Ed allora pianse calde lacrime, nascondendosi la faccia tra le mani, mentre la sua stessa voce usciva dagli altoparlanti, come tanti anni prima: un’esplosione di vita e di energia, ancora innocente ed ancora libera, ignara del mondo.

Felice.

Noi degli anni '80

Ho finalmente iniziato a programmare un po’ in Erlang, in vista di quando dovrò iniziare a scrivere codice seriamente per la tesi (di cui parlerò più avanti, ora siamo parecchio agli inizi), ed oggi ho fatto un test estremamente semplice per giocare un po’ con il codice mobile.

Premesso infatti che Erlang favorisce il codice distribuito e la comunicazione tra nodi e processi remoti, mi sono chiesto se era possibile far muovere non solo dati (quindi variabili, anche se forse il termine variabile in questo contesto non è del tutto adatto, dato che sono immutabili), ma anche codice vero e proprio, in particolare funzioni e closure. E la risposta, naturalmente (e sorprendentemente), è stata: sì.

Modulo

Modulo

Il modulo qui sopra, dal comportamento piuttosto scontato, esporta un’unica funzione che riceve due parametri: una funzione (o meglio, una funF ed un valore Value, e non fa altro che invocare la prima passando il secondo; se F non è una funzione, il programma va democraticamente in crash, altrimenti ritorna il risultato di F (Erlang non richiede alcuna parola chiave return).

Questo modulo, debitamente compilato, è stato copiato in due computer diversi, che ho chiamato big e little, principalmente perchè il primo è il notebook ed il secondo è il netbook 🙂

Nodo big

Nodo big

Questa è la console del notebook: assegnato un nome di rete completo al nodo ed un cookie (e segato il firewall, forse ho sbagliato ad aprire la porta giusta per far comunicare Erlang), ho lanciato l’interprete e l’ho lasciato lì: il codice visto sopra non ha bisogno, infatti di essere in alcun modo avviato (ho anche creato una versione server, lievemente più complessa, ma il risultato è lo stesso anche con 2 righe 2 di codice), basta assicurarsi che l’interprete sappia dove trovare il file compilato, se ne avrà bisogno (ovvero se mai qualcuno dovesse richiedere una delle sue funzioni): nel caso più semplice basta lanciare l’interprete erl dalla cartella dove si trova tale file.

Nodo little

Nodo little

E qui, sul nodo little, avviene il bello: anche qui è necessario assegnare un nome di rete e lo stesso cookie di cui sopra (e lanciare l’interprete sempre dalla directory contente il file compilato, debitamente copiato dal primo nodo); a questo punto, ho dichiarato una funzione Double, che altro non fa che ricavare il quadrato del parametro, lanciarla in locale e successivamente in remoto, tramite la chiamata ad rpc:call(). Ed ha funzionato!

Cos’è successo

In pratica, nel secondo nodo è stata creata una fun, ovvero una funzione anonima assegnata ad una variabile; essendo la funzione appunto anonima, il suo codice non era a priori conosciuto dal primo nodo, dato che la sua implementazione (X*X) non era situata nel modulo presentato più sopra (che costituiva l’unico listato comune ai due nodi), bensì salvata in qualche modo direttamente nella variabile Double.

Quando tale variabile è stata inviata al nodo remoto, essa ha portato con sè tale implementazione, così che il nodo remoto è stato in grado di eseguirla e restituire al chiamante il risultato (4). Spettacolare!

Fortune

Now she speaks rapidly.
“Do you know why you want to program?”
He shakes his head. He hasn’t the faintest idea.
“For the sheer joy of programming!” she cries triumphantly. “The joy of the parent, the artist, the craftsman. You take a program, born weak and impotent as a dimly-realized solution. You nurture the program and guide it down the right path, building, watching it grow ever stronger. Sometimes you paint with tiny strokes, a keystroke added here, a keystroke changed there.”
She sweeps her arm in a wide arc.
“And other times you savage whole blocks of code, ripping out the programs’ very essence, then beginning anew. But always building, creating, filling the program with your own personal stamp, your own quirks and nuances. Watching the program grow stronger, patching it when it crashes, until finally it can stand alone – proud, powerful, and perfect. This is the programmer’s finest hour!”
Softly at first, then louder, he hears the strains of a Sousa march.
“This… this is your canvas! Your clay! Go forth and create a masterwork!”

Now she speaks rapidly.

“Do you know why you want to program?”

He shakes his head. He hasn’t the faintest idea.

“For the sheer joy of programming!” she cries triumphantly. “The joy of the parent, the artist, the craftsman. You take a program, born weak and impotent as a dimly-realized solution. You nurture the program and guide it down the right path, building, watching it grow ever stronger. Sometimes you paint with tiny strokes, a keystroke added here, a keystroke changed there.”

She sweeps her arm in a wide arc.

“And other times you savage whole blocks of code, ripping out the programs’ very essence, then beginning anew. But always building, creating, filling the program with your own personal stamp, your own quirks and nuances. Watching the program grow stronger, patching it when it crashes, until finally it can stand alone – proud, powerful, and perfect. This is the programmer’s finest hour!”

Softly at first, then louder, he hears the strains of a Sousa march.

“This… this is your canvas! Your clay! Go forth and create a masterwork!”

Inizia un altro anno

Oggi inizia il mio sesto anno di università, inizialmente non previso (come si può ben immaginare), ma ormai siamo in ballo…

L’anno appena conclusosi non esiterei a definirlo campale, almeno da un punto di vista universitario e dintorni: la partecipazione al Google Summer of Code ha coronato un annetto nella media, e la tesi probabilmente trasformerà in maniera simile anche quello che sta per iniziare (e che deve essere campale anche lato esami e voti).

Anyway, è uscito l’altro giorno l’articolo sui ragazzi che hanno partecipato per KDE al Summer of Code 2009: ovviamente ci sono anch’io, ma anche tantissimi altri progetti, più o meno spettacolari: leggete leggete! Intanto su Mandriva 2010 RC1 hanno integrato un sacco di migliorie di Nepomuk, e con KDE 4.3 dovrebbe essere diventato anche più semplice testare anche smartsave, vi farò sapere prossimamente.

Oggi è stata una giornata decisamente soddisfacente dal punto di vista informatico e linuxiano in generale, e non potevo non condividere l’avvenimento coi miei 15 lettori…

Erano 10 anni che non compravo una stampante: a quell’epoca infatti risale la mia HP Deskjet 710C, che a tutt’oggi funziona perfettamente; l’unico difetto è che non è qui a Milano, perciò era ora di averne una anche in appartamento. La scelta è caduta su una HP (marca che vince non si cambia) Photosmart C4580, occasione capitata quasi per caso ad un MediaWorld.

Il primo avvio

Al primo avvio, la stampante si rende del tutto autonoma: prima chiede la lingua (dal piccolo display), poi mostra come inserire le cartucce (incluse) e la carta; fatto questo, si stampa la pagina per l’allineamento delle cartucce e se la scannerizza (unico sforzo: inserire il foglio appena stampato nello scanner): già mi torna in mente la 710, per la quale bisognava stampare apposta la pagina ed inserire a mano i valori (operazione per la quale, dopo qualche anno, mi sono ampiamente stufato: ora non le allineo più 🙂 ).

Al termine dell’operazione, la stampante è pronta (e fumante) per funzionare.

Al PC

Linux mi ha reso anche più soddisfatto: ho inserito il cavo USB, e dopo pochi istanti KDE mi comunica che una stampante è stata inserita, e la sta configurando; tempo una decina di secondi (meno di quanto ci avrebbe messo XP, peraltro) afferma che la HP serie C4500 è configurata e pronta a stampare. Spalanco Okular e lancio il primo documento, e tutto va felicemente in porto.

In conclusione

Questo è quanto io chiamo “informatica al servizio dell’uomo”, e non viceversa…

Unico difetto riscontrato finora: non so se Linux supporta il Wireless della stampante: bisognerebbe infatti lanciare il software per Windows presente sul CD, con la stampante collegata, per poterla configurare alla rete di casa, e non ho ancora provato il buon Wine; la speranza però è un po’ flebile, da quel che vedo su Internet…

Non testato (yet): lo scanner.

P.S.: leggo oggi, tra le notizie dei netbook in uscita, che l’eeepc non poteva avere un hard disk più grande di 160 GB a causa delle limitazioni della licenza XP in uso, ed ora invece con Windows 7 possono allargarsi… :O

Oggi, finalmente, sono riuscito a reinstallare il buon Remuco, nella nuova e scintillante versione 0.9, che finalmente supporta Amarok 2.x.

Per chi non lo conoscesse, Remuco è un pratico software client/server che permette di gestire via cellulare tutti i più diffusi software audio(/video) per Linux; il server è scritto in Python, mentre il client in J2ME: una volta installato ed avviato il primo, ed il relativo software da controllare, è possibile installare ed avviare il secondo sul proprio telefonino, effettuare il pairing via bluetooth (o a scelta connettersi via Wifi, se supportato da entrambi i device) e quindi avere sotto le proprie dita tutti i tipici controlli di riproduzione e di volume, nonchè la possibilità di muoversi nella playlist.

Esclusa la parte server, che è piuttosto semplice da installare una volta scaricato il pacchetto dal sito indicato, l’unica difficoltà è quella di adattare le proprietà di compilazione del client in base al proprio cellulare: dopo un po’ di tentativi, ad esempio, io ho dovuto ridurre il numero dei temi inclusi, ed al contempo limitare la dimensione delle icone a 12 pixel; solo così facendo, finalmente il telefono ha iniziato a riconoscere il programma ed avviarlo correttamente…

Premessa: ammetto che mi sto per scagliare contro programmi che a me personalmente stanno sulle scatole; forse, se li seguissi anch’io, la penserei diversamente…

Ci stavo pensando stanotte, quando all’1 e mezza erano ancora lì, su Rai1, a concludere Miss Italia: per tre giorni di fila, il primo canale pubblico ha trasmesso più di 4 ore in diretta (più di 12 in totale) di una trasmissione sostanzialmente inutile, che riprendeva peraltro una manifestazione altrettanto inutile, senza che alcun beneficio culturale o informativo sia venuto al cittadino che seguiva tale canale.

E questo è molto diverso dalla mia idea di televisione pubblica: secondo me, lo scopo di questa deve essere portare alla nazione cultura ed informazione, lasciando tutto il resto, in particolare l’intrattenimento, alla televisione privata. Se importiamo dai paesi anglosassoni (tanto per nominare l’esempio più importante) il modello di televisione commerciale, non possiamo importarlo a metà, o all’italiana, come si ama troppo spesso dire.

La televisione pubblica è finanziata anche da noi cittadini, ma io non vedo scopo nel trasmettere programmi culturalmente nulli come Miss Italia o i vari reality; posso capire che si trasmettano i funerali di stato, ma non vedo perchè trasmettere tutte le domeniche la messa, sempre sul primo canale nazionale: fossimo almeno uno stato religioso, ma siamo uno stato laico, quindi non ha alcun senso. Perchè sempre il medesimo canale deve trasmettere tutte le fiction italiane, che di nuovo sono solo intrattenimento: i ritratti storici sono un aspetto importante, ma una trama inventata come “Rebecca la prima moglie” non ha senso che sia trasmessa da un canale pubblico.

E’ per questo che continuo a trovarmi d’accordo su quanto diceva tempo fa Grillo: eliminiamo i tre canali, facciamone uno solo che faccia solo informazione (bene o male, questo è un altro paio di maniche), e quello sì che ha senso che venga finanziato dai cittadini; l’intrattenimento deve essere lasciato al privato. La RAI si sta portando dietro ancora l’eredità di quando era l’unica ad essere presente, e giustamente faceva tutti i tipi di programmi; oggi però le cose sono diverse, ed è ora che anche lei si adegui.

If you don’t mind, I would like to leave for a moment the devlopment behind, and ask a question: what do you think about netbooks and development?

I mean, I would like to buy a netbook, and I’ve already found and affordable one, and I’m going to buy it for carrying it around at the university and in conferences, so I can access the Web, chats and things like that with a light instrument; what I’m asking is: for your experience, how is using a netbook in events like hackmeetings or development meetings, for example like the “KDE projectname sprint” ones?

I have already experienced programming on an Atom (I have an eeebox at home, and I had to use it for a couple of weeks while waiting for my new notebook), and of course I had been able to develop some code without much fuss, yes I had to wait some time while recompiling code, but not that much in the end, so is it worth bringing a netbook to that kind of meeting?

The positive aspect is that a netbook is light in dimensions and weight, and I can survive on a 10″ screen for a few days (I had a friend who survived on a 7″ screen for a year!), and I can bring it with me every time (I don’t want to leave a computer in a hotel room, for example…).

Please, comment and tell your opinion! 🙂

Dopo il wrap up del Google Summer of Code, ora anche il mio mentore, Sebastian Trueg, ha scritto sui risultati raggiunti finora, ed il lavoraccio degli ultimi 10 giorni ha permesso di arrivare a quanto potete vedere negli screenshots pubblicati finora; c’è ancora da lavorarci, ma già adesso una prima preview (potremmo definirla un’alpha release?) è già usabile.

Sebastian ha pubblicato anche la guida per la compilazione, che vi riporto anche qui:

  1. c’è prima di tutto da applicare una patch alle kdelibs, che speriamo venga integrata per KDE 4.4 ma compatibile anche con la versione 4.3;
  2. poi basta scaricare il modulo di Nepomuk in playground e compilarlo: potete installare tutto oppure compilare ed installare i soli sottomoduli scribo, nepomukutils, annotation e smartsave; consiglio anch’io comunque di installare tutto;
  3. infine è necessario modificare i kdeglobals inserendo una nuova voce, file module=smartfilemodule, nella sezione dedicata a KFileDialog ed alle sue impostazioni.

Ho comunque le migliori intenzioni di preparare sia una versione modificata delle kdelibs 4.3 per Ubuntu, con la patch già applicata, ed un pacchetto contenente il modulo aggiuntivo; tenete d’occhio il mio account su Launchpad per gli aggiornamenti del caso.

Chi l’avrebbe mai detto, ormai 6 anni fa, quando ho installato la mia prima distribuzione Linux (Mandrake) e KDE, che un giorno sarei stato citato dal blog di uno dei maggiori sviluppatori di KDE stesso (l’autore di K3b prima e di Nepomuk ora)… 😀