sabato 31 dicembre 2016

perl6fix

Una caratteristica nota e molto interessante di Perl6 è che il sistema di error reporting è particolarmente migliorato e molto dettagliato, consentendo di ridurre di molto la fatica di trovare errori di compilazione.
Nella classica tradizione Perl, e forse con la complicità di TAP, l'output riportato per gli errori è ben strutturato, tanto che è possibile costruire un programma Perl per suggerire le modifiche.
Ed ecco il post che introduce perl6fix.

sabato 24 dicembre 2016

Vaffa... dell'avvento: 24 Dicembre

Musica: Frank Sinatra - Let it snow

Bene, un grosso vaffanculo a tutti quelli che hanno fatto si che il periodo pre-natalizio fosse costellato da nuovi dolori, nuovi problemi, nuovi casini, quando invece dovrebbe essere stato impegnato solo per la mia famiglia, solo per il mio 100%.

venerdì 23 dicembre 2016

Vaffa... dell'avvento: 23 Dicembre

Musica: Robbie Williams - Kids

Fanculo agli sprechi, di qualunque natura essi siano.
E fanculo a chi cerca di insegnarci a non sprecare, perché il piu' delle volte si dimostra essere solo un mero trucco per permettersi di sprecare di piu' a livelli piu' alti.

Perlbrew, cpanm e Module::Build

Dopo la migrazione da un computer ad un altro mi sono trovato con perlbrew e Perl 5 che non funzionavano come mi aspettavo.
Ad esempio per installare alcuni moduli mi veniva fornito un dubbioso messaggio di successo e di errore contemporaneo:

% cpanm Net::SCP
...
Successfully installed Net-SSH-0.09
...
Successfully installed String-ShellQuote-1.04
! Installing the dependencies failed: Module 'String::ShellQuote' is
not installed, Module 'Net::SSH' is not installed
! Bailing out the installation for Net-SCP-0.08.
2 distributions installed

Come si può vedere, mentre ad esempio Net::SSH risulta installato, poche righe dopo lo stesso modulo risulta assente.
Alla fine ho scoperto, quasi per caso l'arcano: avevo migrato anche una configurazione della shell che impostava due variabili di ambiente usate da Module::Build, e in particolare

PERL_MB_OPT="--install_base \"/home/luca/perl5\"";
PERL_MM_OPT="INSTALL_BASE=/home/luca/perl5";

Rimosse quelle variabili tutto ha ripreso a funzionare come dovuto. In sostanza cpanm installava i moduli in un percorso differente da quello usato per la costruzione dei moduli successivi.
Non si finisce mai di imparare.

giovedì 22 dicembre 2016

Vaffa... dell'avvento: 22 Dicembre

Musica: Evanescence - Call me when you are sober

Vaffanculo a chi ha la fortuna di non avere problemi di salute e non se ne rende conto. Ma lo capisco, ero così anche io.

mercoledì 21 dicembre 2016

Vaffa... dell'avvento: 21 Dicembre

Musica: P.O.D. - Sleeping Away

Penso di parlare un italiano corretto, penso di esprimermi con sicurezza e decisione.
Ma evidentemente non è così.
Cerco di mettere in fila scadenze, impegni, rendendomi disponibile a fare fronte agli stessi perché siano portati a termine nei tempi che io stesso prefiggo.
Eppure non ci si riesce mai. Non per mia mancanza, ma perché i professionisti dall'altra parte non riescono mai a onorare i propri impegni.
Fanculo.

martedì 20 dicembre 2016

Linux & UEFI boot...mannaggia a WIn8

Mannaggia a Windows 8 e al sistema UEFI!
Installare Linux su macchine recenti puo' diventare un vero macello se non si tiene in considerazione delle nuove disposizioni (perche' mi rifiuto di chiamarla tecnologia) di avvio.
Ora capita che debba installare Linux come unico sistema oeprativo su un computer recente con Windows 8 pre-installato.
Dimenticamendomi completamente dei requisiti UEFI cancello tutto il disco e procedo all'installazione.
Pessima idea: cancellare la partizione UEFI preimpostata previene il boot del computer, anche se l'installazione va a buon fine.

Occorre allora rimediare, e in effetti il trucco e' abbastanza semplice (e per certi versi mi riporta indietro alle prime installazioni che facevo ove anche /boot aveva la sua partizione): occorre creare una partizione di tipo EFI (EF00) come prima partizione su disco e assegnarle il mount point /boot/efi. Il filesystem deve essere comprensibile da "tutti", quindi deve essere un vfat.
E' sufficiente questo per permettere il regolare boot del sistema.

% sudo gdisk -l /dev/sda
...

Number Start (sector) End (sector) Size Code Name
1 2048 1050623 512.0 MiB EF00 EFI System Partition
2 1050624 137768959 65.2 GiB 8300
3 137768960 274487295 65.2 GiB 8300
4 274487296 323315711 23.3 GiB 8300
5 323315712 342847487 9.3 GiB 8300
6 342847488 733472767 186.3 GiB 8300
7 733472768 741285887 3.7 GiB 8200
8 741285888 976771071 112.3 GiB 8300

% mount | grep sda1
/dev/sda1 on /boot/efi type vfat
(rw,relatime,fmask=0077,dmask=0077,codepage=437,
iocharset=iso8859-1,shortname=mixed,errors=remount-ro)

Vaffa... dell'avvento: 20 Dicembre

Musica: Queen - Innuendo

Mezzo secolo di attività è...tanta roba!
La gente ormai non ha piu' rispetto, non onora piu' i pensionamenti, siano essi effettivi, obbligati, o necessari.
Anche io mi comporto così, ma ci sono casi in cui una persona ti apre la sua casa, letteralmente.
Ci sono casi in cui ti viene insegnato molto di piu' di quello che ti è richiesto di apprendere.
Ci sono casi in cui l'attività diventa quasi una missione e viene portata avanti con dedizione, passione, e impegno.

Eppure nemmeno davanti a questi casi ci si organizza per onorare chi abbandona la propria attività dopo molto tempo.
Care persone che non sapete riconoscere 50 anni di attività, care persone che andate a professare valori ed educazione che non vi appartengono, care persone impegnate a polemizzare invece che a costruire, andatevene a fanculo e portate maggior rispetto per chi ha contribuito a farvi diventare quello che siete.

Compilare Emacs 25.1 (per Spacemacs): segmentation fault

Se si tenta di compilare Emacs 25.1 su una Kubuntu 16.10 si potrebbe avere un errore di segmentation fault.
La soluzione e' abbastanza semplice: occorre impostare un flag del compilatore e ritentare.

./configure --prefix=/opt/emacs25.1 CFLAGS=-no-pie

Il flag no-pie produce un eseguibile che non puo' essere posizionato arbitrariamente, e questa e' una misura di sicurezza per evitare exploit sulla memoria.

Se poi si usa Spacemacs, una nuova installazione risolve diversi problemi e consente anche di far funzionare tutti i layer correttamente (ad esempio con PHP avevo alcuni problemi legati ai font-face), ma per un uso ottimale occorre che sia presente la libxml2 (-dev) affinche' si possa compilare anche il supporto alla documentazione. Ovviamente quest'ultimo punto non dipende da Spacemacs.

lunedì 19 dicembre 2016

Vaffa... dell'avvento: 19 Dicembre

Musica: Anastacia - Stupid Little Things

L'ho imparato nel tiro con l'arco, sempre a mie spese, e cerco di applicarlo sempre: si ascolta un mentore alla volta.
Perché? Perché averne piu' di uno causa dubbi, contrasti, andamenti irregolari.
Ma a volte si deve anche poter decidere se cambiare mentore o meno.
E così si cerca un nuovo guru, che ovviamente esprime parere negativo su quanto fatto fino ad ora, dandosi però disponibile a seguire ogni cambiamento da questo punto in avanti.
Per poi lasciarti nuovamnete da solo se non giuri fedeltà eterna fin dal giorno zero.
E quindi rimangono solo i dubbi.
Che si tratti di arco, o di salute.
Fanculo.

domenica 18 dicembre 2016

Vaffa... dell'avvento: 18 Dicembre

Musica: Pink - U + Ur Hand

Mando a fare in culo tutti quelli che, proprio in questo periodo, mi costringono ad essere cattivo. Io gioco secondo le regole, mi applico secondo le regole, se voi siete troppo impegnati a raccontarvela e a usurpare diritti e gratifiche vi scontrate poi con un buono.
E non c'è peggior cattivo di un buono quando si incazza.

sabato 17 dicembre 2016

Cat avatar generator

Un'idea carina ed interessante per la generazione di avatar a forma di gatto: <http://peppercarrot.com/extras/html/2016_cat-generator/>.
Un po' ripetititivi, ma sicuramente di effetto.

Vaffa... dell'avvento: 17 Dicembre

C'è gente che si improvvisa opinionista su tutto, specialmente sul cibo.
Ora, non serve un genio per capire che se la tua passione è mangiare hamburger con coca cola o cotolette unte e bisunte (e magari ricoperte da panna) non ti puoi certo definire un esperto della cucina.
Quindi invece che sputare opinioni melodrammatiche su dove sei a mangiare e su quali presunte leccornie hai gustato, vattene affanculo!

venerdì 16 dicembre 2016

Vaffa...dell'avvento: 16 Dicembre

Musica: Prodigy - Invaders Must Die

Nel nostro paese ci sono due momenti particolari e tradizionali: le ferie estive e il Natale.
Eppure questi momenti coincidono con due altri eventi alquanto antipatici: le tasse sugli immobili.
Eh si, perché con una capacità organizzativa che nemmeno un bimbo dell'asilo, il governo ha saputo negli anni calibrare un meccanismo a mio avviso molto anti-economico: tassare i cittadini subito prima delle ferie (estive o natalizie).
Ora, in momenti di difficoltà, a cosa sarà costretto a rinunciare il cittadino? Ad esempio ai regali per la propria famiglia. E questo che incidenza avrà? Che i rivenditori percepiranno meno soldi, e di conseguenza avranno meno liquidità a loro volta per onorare le tasse.
Ma nessuno ci arriva? Fanculo!

Hacktoberfest Shrew

So, Hacktoberfest 2016 is out (well, you know already) and a few days ago I finally got my shrew. The t-shirt is amazing, and also the other stuff (mainly  stickers) is fun too, and my son already stolen a couple of them.





Thanks to everyone who contributed to this event and to the organizers.
See you next year!

giovedì 15 dicembre 2016

Vaffa... dell'avvento: 15 Dicembre


Se si frequenta un qualche tipo di attività sportiva si finisce inevitabilmente per essere risucchiati nelle chiacchere da spogliatoio. In questo, ovviamente, le palestre sono il covo peggiore.
Ragazzi che perdono letteralmente tempo davanti allo specchio mentre parlano di sostanze e integratori che possono aiutare a ottenere un fisico migliore.
A meno che non siate agonisti, andatevene a fanculo, voi e i vostri bibitoni!

mercoledì 14 dicembre 2016

Vaffa... dell'avvento: 14 Dicembre

Musica: Soundgarden - Black Hole Sun

Le persone hanno la brutta abitudine di morire, credo che sia una imposizione della natura.
Quando una persona muore, dal punto di vista burocratico, occorre aggiornare tutta una serie di banche dati affinché quella persona sparisca dalla società attuale.
Tempo necessario per aggiornare le banche dati? 
10 secondi, se il database è impegnato a ricostruire tutti gli indici proprio in quel momento.
Tempo necessario al propagare l'aggiornamento? 
Qualche giorno, diciamo una settimana al massimo a seconda di come sono interallacciate le banche dati fra di loro.

E allora perché si continua a ricevere posta, documentazione, richieste commerciali e perfino politiche indirizzate a persone decedute ormai da anni?
Fanculo, quanto ci mettete a capire che non solo è uno spreco immane di tempo e denaro, ma è anche una mostruosa mancanza di rispetto?

martedì 13 dicembre 2016

Vaffa... dell'avvento: 13 Dicembre


Musica: Depeche Mode - A Pain that I'm used to

Carissimo ex-amico,
tu che per motivi a me ancora oscuri hai deciso di troncare la nostra amicizia senza spiegazioni e risposte;

tu che, permettimi, da ora in avanti potrai essere chiamato "bimbo minchia" per il tuo atteggiamento infantile e spocchioso;

tu che, nonostante sapessi delle mie attuali difficolta' e impegni non hai esitato ad usarmi come segretario non onorando gli impegni istituzionali che tu stesso hai voluto prendere;

tu che dopo avermi frantumato i coglioni sulla tua visione del mondo e della vita pensando, anzi ritenendoti in dovere di insegnarmi cose che secondo te non capivo, hai deciso di rinunciare ad una amicizia pluriennale per via di poche righe sulle quali non avevi potuto apporre il tuo sigillo in cera lacca, mostrando così una mentalita' chiusa e una mancanza di controllo agghiacciante;

tu che non ti sei nemmeno posto il problema che altri, nei tuoi panni, avrebbero reagito semplicemente diversamente;

tu che, con la tua "assenza", hai consentito la completa cannibalizzazione di quanto "libero" e "condiviso" avevo contribuito a creare;

tu che, dopo aver condannato per tanto tempo (e giustamente) gli accordi massonici e segreti, ti sei abbassato a tale livello non indicando chiaramente i tuoi impegni e le tue assenze se non solo a chi volevi tu;

tu, per il quale ho speso parole cercando di aiutarti in un momento di difficolta';

tu, che mi hai tuttavia insegnato molto, e fidati, ho appreso quello che mi serviva

sei libero di andartene a 'fanculo, restarci e inloopparti nelle tue paranoie da bimbo minchia.

PgDay.IT 2016: ci siamo (senza di me)

Oggi è la giornata del decimo PgDay.IT.
Sono passati già dieci anni dal primo evento organizzato da un gruppo di "ragazzotti" aggregati in un modo abbastanza disorganizzato ma efficace.
Io ne entrai a far parte per caso: era il 2007 e stavo iniziando un progetto importante basato su PostgreSQL, e così, cercando gruppi di discussione in italiano capitai sopra ad una rudimentale pagina wiki che parlava di un evento interamente dedicato a questo database.
Mandai quindi una mail di disponibilità e il gioco fù fatto: ero uno degli organizzatori dell'evento, il quale si dimostrò da subito molto importante per la comunità internazionale.
Da lì si formò ITPUG, l'associazione che nelle nove edizioni passate ha organizzato le altrettante versione dell'evento.

Quest anno, purtroppo, non potrò partecipare all'evento, per ragioni personali. Anche la mia partecipazione nell'organizzazione dell'evento è stata meno incisiva rispetto agli anni passati.

In generale però posso affermare di non essere stato l'unico ad aver contribuito in maniera ridotta a questo PgDay.IT, e l'impressione generale e che mi viene riportata è quella di un evento sottotono. Spero che l'organizzazione possa dimostrare il contrario; il programma e la partecipazione parlano da soli.

Ma il dispiacere piu' grande non è certo quello di non avere un evento colossale, quanto quello di non poter passare una giornata intera a parlare ed ascoltare le avventure di PostgreSQL, di non poter rivedere amici di conferenza (e non solo) e bere una buona birra in loro compagnia.

Ma ci saranno altri eventi, altre conferenze, altri PgDay.IT e altre birre per recuperare il tempo perso!

Buon evento a tutti.

lunedì 12 dicembre 2016

Vaffa... dell'avvento: 12 Dicembre

Musica: Soundgarden - Superunknown


A livello informatico le mode non mi sono mai piaciute.
Anzi, in generale non mi piace la moda, e chi mi vede vestito lo sa bene!
Considero che un professionista (informatico) non debba basarsi sulla moda del momento, ma debba capire e concretizzare le proprie capacità, quelle dei propri strumenti  e le problematiche da risolvere prima di lanciarsi in qualuque progetto.
Se mi fossi fatto influenzare dalle mode avrei passato la vita ad imparare linguaggi di programmazione, uno dietro l'altro, nonché a installare versioni di Linux leggermente differenti fra loro, nonché a passare da un database ad un altro e così via.
E il fatto è che faccio quanto sopra! Studio nuovi linguaggi, studio nuovi strumenti, provo nuovi sistemi operativi, ecc. Ma lo faccio con cognizione, e comunque prima di proporre una determinata soluzione voglio averne una buona padronanza.
Non ho quindi convertito tutti i miei repository SVN a git in un sol colpo, e da git a fossil in un batter di ciglia. Anzia, cerco di tenere tutti i repository nel loro habitat naturale, adattandomi io alle nuove esigenze.
Non ho riscritto le mie utilities da Perl a Python e poi a Ruby, e magari con Go.
Eppure ho incontrato tanti professionisti, o gente che si definisce tale, che ha propinato e avolte imposto migrazioni assurde solo per  propinare la moda del momento.
Ovviamente tali professionisti si fanno pagare profumatamente per migrare tutta la codebase a git o mercurial, per spostare tutti i file server da Unix a Microsoft senza alcun reale valore aggiunto.
E al suono di "se non passiamo a XXX non potremo lavorare correttamente".
Certo, come che il mondo informatico non sia riuscito ad evolversi nel frattempo...
Guardate il repository CVS di OpenBSD, o l'ecosistema di Perl 5 (che dura da oltre venti anni)...
E non soprendentevi se qualcuno vi manda a fanculo quando propinate una delle vostre migrazioni assurde.


domenica 11 dicembre 2016

Vaffa... dell'avvento: 11 Dicembre

Musica: Marylin Manson - The beautiful people


Vendersi è una cosa che non mi piace fare, non mi è mai piaciuto.
Colpa forse della mia mentalità maturata con l'arco: i punti si contano sul campo di gara, non a chiacchere.
Ne conseguen che non ho particolare stima per chi continua a vendersi a me come il migliore nel suo settore. Solitamente i migliori non si autodefiniscono tali, lo sono (definiti) dagli altri.
Se sei bravo nel tuo settore (lavorativo, sportivo, ...) non avria bisogno di rimarcarlo. Oppure lo stai marcando perché vuoi convincere te stesso.
Quindi mi sento di sfanculeggiarti e invitarti a rivalutare la tua autostima prima della tua immagine.

The Chat Noir

Fra tutti i gatti che si sono alternati al mio fianco, di varie razze, dimensioni, pezzature, non ho mai avuto un gatto nero. Il gatto nero si dice porti sfortuna, si dice sia il gatto delle streghe... ma sono tutti motivi abbastanza stupidi e non la ragione per la quale non ho mai avuto un gatto nero. Di fatto non esiste una ragione, è sempre stato il caso che mi ha "portato" una pezzatura di gatto rispetto ad un'altra.

In effetti solo ora comprendo che il gatto nero è un po' un gatto a sé, è particolare.
Penso che il gatto nero non sia un vero gatto, quanto sia l'ombra autonoma di un altro gatto che è sfuggita ed ha preso vita.
Il gatto nero non si aggira furtivo, il gatto nero scivola sullo sfondo.
Il gatto nero non si mimetizza, semplicemente sparisce dalla scena e, usando una qualche tecnologia aliena, è capace di ricomparire in un altro punto.
Il gatto nero non si nasconde, semplicemente si lascia avvolgere dall'ombra 
 E quando si siede si avvolge nel proprio pelo, come fosse un tabarro finissimo.

sabato 10 dicembre 2016

Vaffa... dell'avvento: 10 Dicembre

Musica: Caparezza - Comunque dada

Siamo nel 2016, anzi ormai nel 2017. Eppure abbiamo un sistema di accounting che risale forse al medioevo. I contatori di acqua, luce e gas non sono in telemetria, anche se stanno montando ovunque apparecchi preposti a farlo. E si, ho scritto bene: anche il contatore elettrico non è in telemetria: viene letto una volta al mese, e se quella volta non coincide con la fatturazione allora si usa il consumo presunto.
Consumo presunto?
Fanculo: devo passare la vita a dirti i miei consumi nei momenti che vuoi tu per avere un fatturazione corretta? Nel 2017? E se manco di qualche giorno l'istante di autolettura avviene il consumo presunto, ma stai scherzando?
E invece è quello che succede con quasi tutti i distributori sul mercato.
Eppure abbiamo telefonini che sono in grado di calcolare le nostre conversazioni al secondo, linee internet a consumo fin dai tempi dei grossi mainframe, automobili connesse ad internet (e forse anche meno sicure), ma per i contatori domestici c'è da aspettare un'altra rivoluzione industriale...

venerdì 9 dicembre 2016

Vaffa... dell'avvento: 9 Dicembre

Musica: Keane - Is it any wonder?

I social network sono per me una vera e propria piaga.
Ho tenuto tante lezioni sull'importanza del corretto uso di questi strumenti che, ahimé, si nutrono letteralmente dei contenuti degli utenti e della loro malattia di esprimersi al mondo.
Ma uno dei problemi dei social network è che hanno dato voce a una serie di imbecilli universali che non fanno altro che sputare sentenze, offese e opinioni poco documentate e fondate solo sul passaparola invece che su una concreta azione di documentazione.
Cerco quindi di astenermi il piu' possibile da questa trappola dei social network, ma ogni volta che ci finisco dentro provo una gran voglia di mandare a fanculo il 99% degli utenti.

giovedì 8 dicembre 2016

Getopt::Long::Descriptive

Getopt::Long::Descriptive è al momento il modulo che uso di piu' per le applicazioni Perl "serie", quelle dove devo fornire un minimo di supporto alla configurazione da linea di comando.
Gli svantaggi di questo modulo sono a mio avviso veramente pochissimo, e il primo è sicuramente e oggettivamente il fatto che non è distribuito con la versione core di Perl 5, il che complica un po' la portabilità di alcuni script su altri sistemi.
Questo bell'articolo descrive bene il modulo in questione.

Vaffa... dell'avvento: 8 Dicembre

Musica: Puddle of Mudd - Famouse

E' molto bello interagire con la comunità per quanto riguarda i bambini, i propri figli.
Ma quando i genitori prendono il sopravvento...beh diventa irritante.
Se i genitori non capiscono che al centro devono stare i bambini allora tutto diventa superfluo, o meglio diventa superfluo per i bambini.
Se il carro di carnevale, giusto per fare un esempio, viene fatto per tenerci sopra i genitori e non i figli allora c'è qualcosa che non va.
Se la recita è fatta con soggetti e ambientazioni che difficilmente i bambini capiscono, allora c'è qualcosa che non va.
Se i compleanni sono organizzati per radunare i genitori invece che i bambini, allora c'è qualcosa che non va.
Genitori con manie di protagonismo: andate a fanculo.

mercoledì 7 dicembre 2016

Vaffa... dell'avvento: 7 Dicembre

Musica: Guns'n Roses - Locomotive

Se si viaggia usando il potente e rinomato "gigetto" (con la "g" minuscola) il vaffanculo e' quasi automatico.
I treni che si alternano, oltre ad essere vecchi e malandati, sono sporchi e puzzolenti.
I viaggiatori stessi non sono migliori del treno: chi appoggia i piedi sui sedili, chi abbandona cibo, sacchetti, fazzoletti e altre cose viscide e umide ovunque, chi sputa per terra e chi urla al telefono.
Viaggiare con questo mezzo e' avvilente, non solo per quanto sopra, ma anche e in particolare per il costo esagerato che sarebbe molto meglio ammortizzato in auto.
Per non parlare degli inconvenienti quali ritardi, cancellazioni, bus sostitutivi che poi non ci sono (anche se vengono regolarmente annunciati).
Che schifo!

martedì 6 dicembre 2016

PGDay.IT 2016: cena sociale

Ormai manca pochissimo al prossimo PGDay.IT 2016, ed è ora ufficiale che ci sarà anche la cena sociale, con una organizzazione meno formale rispetto agli anni passati.
Se volete unirvi al gruppo che tiene in vita la conferenza fatevi trovare la sera prima dell'evento presso il locale Camelot 3.0.

Quando scrivere gli articoli scientifici diventa un'arte

Un interessante articolo su come sia possibile utilizzare strumenti evoluti, anche se apparentemente antichi, per creare un workflow di editing degli articoli scientifici.
Ormai io non scrivo piu' molte pubblicazioni scientifiche, ma quando lo faccio uso strumenti molto simili. L'università invece, e paradossalmente, ha sempre cercato di condizionarmi mentalmente all'uso di strumenti di editing "piu' user-friendly" (leggasi Microsoft) e nessun controllo di gestione se non il Salva con nome e l'aggiunta di un numero progressivo...insomma, altro che approccio scientifico!

lunedì 5 dicembre 2016

Vaffa... dell'avvento: 5 Dicembre

Musica: Foo Fighters - The feast and the Famine


Viviamo in un mondo sempre piu' interconnesso, che banalita'!
Ma quando vedo gente che gia' alle 7 della mattina e' ipnotizzata da cellulare o tablet alla fermata dell'autobus o del treno mi sale un prurito alle mani.
Ma chi ti credi di essere?
Possibile che il mondo abbia bisogno proprio di te a quell'ora?
Possibile che se non alzi gli occhi da quel dispositivo il mondo possa crollare?

Prova a ragionare, utente stolto: stai pagando profumatamente una compagnia telefonica che inonda il mondo di onde, forse nocive, per scrivere minchiate delle quali probabilmente non frega nulla a nessuno (un po' come questo post).

E quando poi ti trovi davanti ad una conversazione tridimensionale non sai nemmeno fornire un saluto di educazione.

Continua pure a portarti il tuo dispositivo intelligente (forse piu' di te) al cesso, appoggialo sulla scrivania dell'ufficio, sulla tavola dove mangi, sul sedile della macchina e in tasca della camicia. Continua a instupidirti e a inondarti di germi.
E vai affanculo!

domenica 4 dicembre 2016

Vaffa... dell'avvento: 4 Dicembre

Musica: dal film "Altrimenti ci arrabbiamo"

Pensiamo di essere in democrazia, ma forse siamo ormai giunti alla monarchia.
Come dei sudditi dobbiamo sottostare a leggi, regolamenti, delibere, tassazioni spesso in constrasto e contraddizione fra di loro.
La lotta è impari: per ogni contribuente c'è un numero n (n>>>1) di funzionari preposti al controllo.
Il contribuente ha un tempo finito per consegnare la propria documentazione, il funzionario ha un tempo almeno quintuplicato, a volte addirrittura superiore.
La lotta è impari.

Invece che tutelare chi ancora crede in questo paese, chi ancora non fugge (fuga di cervelli? bisogna avere il cervello prima di usare le gambe), si finisce per crocifiggere chi è costretto, suo malgrado, per difendersi, ad accumulare qualche chilometro lineare di carta. Che comunque non basta mai. Che comunque non è mai adatta allo scopo.

Fanculo!

sabato 3 dicembre 2016

Vaffa... dell'avvento: 3 Dicembre


Ho fatto delle elementari pessime, con una insegnante della quale ho un ricordo orribile.
Nonostante questo, e forse per merito della dedizione dei miei genitori, sono riuscito ugualmente a fare le scuole medie.
E dopo le superiori.
E dopo a laurearmi, con lode!
E a completare il mio dottorato di ricerca.
E ad insegnare.

E non per questo mi ritengo un genio, anzi.

Ma appurato che è possibile raggiungeere ugualmente i traguardi che si vuole pur con delle scuole elementari non perfette, perché c'è una serie di genitori accanita pesantemente con tali scuole? 
Per loro gli insegnanti non sono mai bravi a sufficienza. 
Per loro il figlio non sbaglia, non viene compreso.
Per loro è piu' importante passare del tempo a conferenze pedagogiche che con la prole.
Per loro è meglio che la scuola faccia fare ai figli tutte le attività che li porteranno ad essere dei dirigenti. Si, magari come Lapo...

Genitori: rilassatevi un attimo e andate un po' a fanculo!
Ah, e parcheggiate pure meglio le vostre auto all'uscita da scuola.

venerdì 2 dicembre 2016

Vaffa... dell'avvento: 2 Dicembre



Da cosa si compone una famiglia?
Dai parenti? Sbagliato.
Una famiglia si compone di familiari.
I parenti sono persone con una banale relazione anagrafica, nulla di piu' di una join in una qualche tabella di un qualche ufficio.
Essere familiari va ben oltre l'essere parenti, e ci sono anche persone non-parenti che diventano familiari.

Ho visto parenti tentare di smantellare, con tutte le forze, la mia famiglia.
Bipedi (definirli persone mi pare riduttivo per tutto il resto del mondo) che dovrebbero avere la loro normale residenza nella torre degli asinelli, e non mi riferisco al nobile del dodicesimo secolo, ma all'animale usato come dispregiativo nelle favole e nelle scuole elementari.

A tali esseri auguro di sentire forte e distinto il mio vaffanculo dell'avvento, magari proprio mentre sono impegnati a danzare attorno al fuoco dell'inganno neanche fossero incarnazioni di Tremotino.

giovedì 1 dicembre 2016

Vaffa... dell'avvento: 1 Dicembre




Diversi anni fa, proprio nel periodo natalizio, iniziavo una battaglia che si sarebbe rivelata lunga e dura.
Ancora oggi non posso abbassare la guardia, perché i miei avversari, seppure mutati, usano ogni possibile scorrettezza per schiacciare i miei diritti e quanto ottenuto e difeso dalla mia famiglia.

Ebbene, io non ho intenzione di farmi schiacciare facilmente.
Il mio nome deriva dal santuario che sovrasta Bologna, e come quel santuario vi guardo dall'alto verso il basso e vi mando a fare in culo.

mercoledì 30 novembre 2016

No Shave November 2016

No-Shave November ends today, or at least November ends today.
A few centimeters so far, more on the hair than on bear.
No money, I'm sorry. Next year maybe I'll grow better.


PgDay.IT 2016: keynote

Il programma del PgDay.IT 2016 è ormai completo: anche il keynote che anora non era stato annunciato è stato posizionato.
Ad aprire la decima edizione della conferenza italiana dedicata a PostgreSQL sarà il dott. Giorgio Roncolato, attuale direttore dei Sistemi Informativi ULSS 5 di Arzignano, dove ovviamente viene usato massivamente PostgreSQL.

domenica 20 novembre 2016

PgDay.IT 2016: partner!

Ormai vicinissimo il PgDay.IT 2016 si arricchisce di diversi partner, e speriamo che presto altri allunghino la lista. Al momento si ha:

Partner Platinum
  • Interlogica
  • Esosphera
  • Miriade

Partner Silver
  • 2ndQuadrant Italia

Movie-like film reader/printer based on Perl 5

Again I found  myself inspired by a blogs.perl.org post that demonstrate how to let a computer print stuff as it was reasoning on what it was printing, that is a movie-like message reader. In other words, a king of char-by-char cay(1) implementation. So, how difficult could it be to do it in Perl 5?
And here it is my solution:


#!/usr/bin/perl

use v5.10;
use Time::HiRes qw( usleep );

open my $fh, $ARGV[0] || die "\nCannot open input file\n$!";
$/ = \1; # set one char at time (input record separator)
$| = 1;  # force autoflush
while ( <$fh> ){
    print;
    usleep( ( /[a-zA-Z]/ ? 1 : ( /[.!?\n]/ ? 10 : 2 )  ) * 75000  );
}

As you can imagine it is pretty simple: it does read an input file one char at a time, placing it into the topic variable ($_) and printing it on the screen (using autoflush, of course). Then I wait for a quite random time depending on the fact the char was a letter or something else. In this way I can simulate someone is really writing down the message, stopping after a dot or  anew line.
I have to use millisecs sleep in order to make it usable at all, since perl func sleep accepts only integers, and printing a message one second at time is a little dummy!

sabato 12 novembre 2016

Hangman in Perl 5: a simple example

Inspired by an article on blogs.perl.org I decided to write down a small version of the hangman game using Perl 5.
It was interesting and quite nice.
Here it is my version, with an eye on italian words (wovels marked as '+' on the guessing line), find it only on GitHub.

#!/usr/bin/env perl

use v5.10;
use Term::ReadKey;

my $word;

# search for a word
open my $word_fh, '<', '/usr/share/dict/words' || die "\nCannot read words!\n$!\n";
srand;
rand( $. ) < 1 && ( $word = lc( ( split( /[\s']/, $_ ) )[ 0 ] ) ) while( <$word_fh> );
close $word_fh;

# wovels converted to +
my ( %guess_status ) = map { $_  , ( /[aeiouèéòà ùì]/ ? '+' : '_' ) } ( split // , $word );
my $current_guessing = '';
my $max_trials       = 10;
my @wrong_chars      = ();

ReadMode 3; # allow for signals

# while there are undiscovered chars or other trials to do, go for it!
while( grep( /[+_]/,  values %guess_status ) &&  $max_trials > 0 ){

    # build the guessing line
    $current_guessing = join ' ' , map { $guess_status{ $_ } } ( split // , $word );

    say "\n\n|| $current_guessing ||\t" . join( ',', @wrong_chars );
    say "guess a char: ";
    my $current_char = lc ReadKey( 0 );


    if ( ! $guess_status{ $current_char } ){
        # not guessed
        $max_trials--;
        push @wrong_chars, $current_char;
        say "No [$current_char] in the word, you still have $max_trials trials.";
    }
    else{
        say "You guessed right [$current_char]!";
        $guess_status{ $current_char } = $current_char;
    }



}

say "You guessed [$word] !\n" if ( $max_trials > 0 );
say "Sorry, the word you were looking for was [$word]\n" if ( ! $max_trials );


ReadMode 0;




First of all, I read in a random word from a words file, using a quite well know "read-radom-line" approach (at least it is well documented in the Perl community, see ). Since the dictionary could contain multiple words per line, I cut them taking only the first one of them and excluding also shortings, and of course making the whole result lower case for ease of comparison. In other words something like "Bud's" become simply "bud", something like "Smooth words" become simply "smooth" and so on.

The selected word is split into its chars and each char is mapped either to a '+' or a '_'. The result is placed into an hash indexed by the plain char itself, so that the word 'hello' results in an hash as follows:

%guess_status = {
  h => '_',
  e => '+',
  l => '_',
  l => '_',
  o => '+',
}

(of course the hash is not sorted on the keys, and that does not matter).

Now the main loop: unless no more '+' or '_' are present in the hash, meaning that the user has guessed all occuriences of all chars, the user is prompted with the guessing line and asked for a char. I use Term::ReadKey for getting a single char, that is of course lowered and compared against the hash keys. If the current char is a key for the hash, the character is discovered and the guessing line re-prompted with the right character in the right place(s), otherwise the character is appended to an array of missed chars and the loop continues.
Each time the user inputs a wrong char a counter is decreased to allow the game to stop in a fixed number of missed trials.

There is of course a lot of room for improvements: for instance the guessing line does not need to be updated each time, but only when the user guesses a char. Therefore a little different version of the main loop becomes as follows:

$current_guessing = join ' ' , map { $guess_status{ $_ } } ( split // , $word );
while( $current_guessing =~ /[+_]/ &&  $max_trials > 0 ){


    say "\n\n|| $current_guessing ||\t" . join( ',', @wrong_chars );
    say "guess a char: ";
    my $current_char = lc ReadKey( 0 );


    if ( ! $guess_status{ $current_char } ){
        # not guessed
        $max_trials--;
        push @wrong_chars, $current_char;
        say "No [$current_char] in the word, you still have $max_trials trials.";
    }
    else{
        say "You guessed right [$current_char]!";
        $guess_status{ $current_char } = $current_char;
        # build the guessing line
        $current_guessing = join ' ' , map { $guess_status{ $_ } } ( split // , $word );
    }
}

where the guessing line is updated only when a good character is inserted. Having the guessing line built before the main loop allows me for searching directly for undiscovered chars in the line itself, instead of among the values of the hash (so avoiding a grep() applied to a values() ).
And in the case you are wondering why I don't compare the guessin line against the word to guess in the while condition, well, it is because I like to print the guessing line with spaces between letters to be guessed.

Hope it can be useful as simple base Perl program for someone!

venerdì 11 novembre 2016

PgDay.IT 2016: schedule is online!

The PgDay.IT 2016 is approaching and the schedule is available on line here. Of course it could be subject to some little changes, but it is pretty mich a complete list of what you are going to see at the tenth edition of the PostgreSQL Italian Day.

PgDay.IT 2016: programma online!

Il programma del prossimo (e ormai vicinissimo) PgDay.IT 2016 (decima edizione) è online. Anche se potrebbe subire qualche variazione da parte degli organizzatori, il programma online rende l'idea dei talk e degli aspetti che saranno trattati nel prossimo evento.

E se si vuole cogliere l'occasione per farsi un po' di pubblicità attraverso il PgDay.IT 2016 perché non diventare sponsor?

Haiku: quando root non è root!

Sicuramente ero già inciampato in questa specificità, ma non la ricordavo, e un utente molto piu' devoto di me di questo sistema operativo mi ha riportato alla mente che in Haiku l'utente "user" è equivalente a "root".






giovedì 10 novembre 2016

Eclipse: un bell'esempio OpenSource da oltre 15 anni!

Eclipse è un pezzo fondamentale della storia di qualunque programmatore, non importa il linguaggio o il sistema operativo, non conosco nessun developer che non abbia mai provato almeno una volte questo IDE.
Certo, IDE è riduttivo, Eclipse segue la filosofia di tanti progetti ambiziosi (es. Emacs) di creare veri e propri ecosistemi estendibili da parte dell'utente (sviluppatore) e che possono essere utilizzati come base per applicazioni e sistemi complessi.
Io stesso ho usato nel tempo Eclipse come ambiente di sviluppo e piattaforma per la costruzione di alcune applicazioni.
A parte la mia storia personale con questo strumento, che forse è diventato un po' troppo complesso ed enorme, Eclipse festeggia un importante ricorrenza: sono ormai 15 anni che il codice sorgente è diventato di pubblico dominio.

In un periodo nel quale l'OpenSource sembra un po' "passato di moda" questo è un buon promemoria di come una politica Open Source sia tutt'altro che sorpassata o sorpassabile.

Interessante spiegazione di vacuum e autovacuum

Sembra quasi un argomento da novellino: PostgreSQL deve usare la procedura di vacuum per mantenere la struttura dati (su disco) pulita e ordinata, in altre parole efficiente.
La necessità di vacuum è dovuta all'implementazione del sistema MVCC, non proprietario di PostgreSQL e usato anche in altri RDBMS. Spesso si accusa vacuum di essere uno degli svantaggi di PostgreSQL, senza considerare i vantaggi di MVCC.
Consiglio caldamente la lettura di questo articolo, ben strutturato, che dettaglia la necessità di vacuum nonché come ottimizzare il demone di autovacuum al fine di mantenere buone prestazioni anche in un database di grosse dimensioni.




Falcon: un pezzetto di storia (mia e sua)

C'era una volta un bambino con la passione per le macchinine radiocomandate, ma non proprio per il modellismo in generale.
Ero io quel bambino.

A darmi la passione per il radiocomando fu' la Gig-Nikko Turbo Panther, la "seconda" vettura piu' veloce della serie di quegli anni, se si escludono le 4WD.
Successivamente, grazie allo sforzo dei miei genitori (soprattutto economico), arrivò la Tamiya Falcon.
Una vera rivoluzione.

Ricordo ancora l'evento: la vigilia di Natale mi trovavo già  in montagna per gli (allora) usuali festeggiamenti.
Mio padre arrivò in tarda serata, portando su la tanto sognata macchinina e tutti i pezzi. E mentre tutti gli altri parenti erano già  a letto, io e lui passammo la serata in cortile al freddo a provare la fiammante dune buggy. E per ricaricare i due power pack (uno nuovo, uno usato), ci riscaldavamo in auto con un super charger collegato all'accendisigari.

Pochi giorni dopo, grazie alla pazienza e meticolosità  di mio padre, avevo una valigia completa in cui custodire tutta l'attrezzatura, libretti di istruzioni compresi.
Come mio solito, essendomi appassionato, studiavo il modellino, lo pulivo continuamente, oliavo le parti che lo richiedevano e controllavo con un tester le batterie. Tutto era sempre in ordine, tutto era sempre perfetto.



Le carrozzerie le preparavamo io e papa' verniciandole con una bomboletta in garage, rigorosamente nere. Ne facemmo due, fondamentalmente identiche (nere) se non per la disposizione degli adesivi e qualche piccola finitura.




Ogni tanto mettevamo a dura prova la Falcon facendola "salire" per la strada che portava a Luminasio, e rimasi stupito la prima volta che riuscì ad affrontare senza sosta la famigerata curva che faceva "fischiare le gomme" (dell'automobile) .

Con il passare del tempo i miei interessi cambiarono, e all'interesse per la Falcon sostitui quello per la FI...TARCO (prima) e per la GN...U (dopo). E così il modellino se ne stette in solaio per diversi anni, fino a quando cambiai casa e lo ritrovai, ancora in ordine nella sua valigia nera. Mancavano però le carrozzerie, perse durante la "grande ristrutturazione" del tetto.
Era l'epoca pre-ebay e quindi reperire le carrozzerie era quasi impossibile. Fra le altre cose anche i power pack si erano ossidati ed erano inutilizzabili. E non conoscevo nessuno che fosse in grado di aiutarmi a sistemarla e farla funzionare.
E così da una soffitta ad un'altra, la Falcon ha atteso di essere nuovamente considerata come meritava.

Poi circa un anno fa l'idea di provare a venderla su subito.it, non per il guadagno (misero) ma per poterla donare a qualcuno che l'avrebbe rimessa in pista. Ammetto che prima di questa opzione ho provato a regalarla a qualche appassionato, ma ho solo trovato appassionati del motore a scoppio che schifano letteralmente quello elettrico.
Comunque metto foto e dettagli online, cercando di essere preciso come sempre.
E con stupore vengo letteralmente inondato di richieste e contatti. Ma nessuno che si dimostra serio, nessuno disposto a valutare la Falcon per quello che è, e così mi trovo costretto a perdere molto tempo e a dover rifiutare "generose" offerte che spaziano dai 10 ai 15 euro.
Finalmente si fa viva una persona che è interessata e che decide di venirla a vedere dal vivo. Un ragazzo a prima vista simpatico che finalmente dichiara apertamente "è¨ veramente bella".
Quella sera era un po' triste per aver perso questo pezzetto della mia storia, ma dopotutto non ci avrei fatto nulla.
E sono comunque lieto che la persona che l'ha presa mi abbia fino ad ora aggiornato sui progressi di "riparazione" e sia riuscito a metterla nuovamente in pista, funzionante.

La Falcon farà  un pezzetto di storia anche per qualche altra persona!

Un nuovo sguardo

Ho deciso di cambiare la mia immagine principale del blog, come pure il mio hackergotchi, che da oggi di fatto non è piu' una immagine di quel tipo.
Fino ad ora ho sempre usato gli "occhi di gatto", anzi gli occhi della Duchessa, immagine pluripremiata ai concorsi fotografici e che mio padre aveva scattato tanti anni fa.
Ho deciso semplicemente di sostituirla, non per rompere il legame sentimentale e l'emozione che tale immagine mi da, ma per dare posto ad un'altra emozione.
E lo faccio inserendola appositamente sfuocata, come ormai la mia vista.




domenica 6 novembre 2016

OSX Dock: basta emularlo!

Non sono solito voler sminuire i progetti OpenSource, specialmente quelli creativi, ma veramente, basta tentatre di emulare il dock di OSX!
Da quando la Apple ha lanciato OSX abbiamo assistito a ogni forma di emulazione: temi liquid, schemi di colore, menu' piazzati in alto e distaccati dalle finestre (una cosa che sta tornando in Qt 5), e il temuto dock di OSX.
OK, il dock è molto elegante, è sicuramente molto flessibile, ma dopo aver lavorato tante ore con sistemi differenti posso dire che il vecchio pannello old-style è quello che rende piu' comfortevole l'ambiente.
Non mi importa di avere le icone che fanno zoom, rimbalzano, si illuminano o altro, mi interessa che il dock occupi poco spazio e che la roba che mi serve sia al suo posto (e possibilmente fissa!).
Quindi voto negativo all'ennesimo sforzo di emulare questo dock.

Ricordi...


Credo che questo sia uno dei video piu' belli di Madonna che abbia mai visto.
Lo guardavo e riguardavo ogni volta che lo trasmettevano su MTV (eh si, era l'epoca pre- YoutTube) e rimanevo sempre incantato per le movenze.

venerdì 28 ottobre 2016

From File::Find to File::Find::Rule

I tend to use File::Find the most in order to get some file searching and mangling. Usually my scripts have the same simple structure as follows:

$| = 1; # autoflush
find( \&directory_scanner, ( $starting_directory ) );
$| = 0; # non autoflush

# and the scanner is something like
sub directory_scanner{
    chomp;

    return if ( $_ eq $starting_directory || ! -f $_ );
    return if ( $File::Find::dir !~ /$re_dir(\d{4}-\d{6})$/ );
    ...
}
 
As you can see the event handler invoked by File::Find is used to both print some report (the $counter) in order to tell me the script is still alive (I do pass 200+k files at once) but, most notably, applies a regexp to the directory I'm in in order to avoid some staging/backup/etc. directory that could be likely the one I'm interested into but I don't want the script to pass.
For a few times I've tried to convert my Find::File based scripts to File::Find::Rule, just to get more used with such interface, but I didn't know how to fix the application of regular expression to the traversing path. Reading a little more deeply the documentation I found the exec subroutine that allows me to specify an handler (i.e., a subroutine) that can return true or false depending on what I want to do on the file I'm visiting. Therefore, converting my scripts becomes as easy as follows:
 
$| = 1; 
my $engine = File::Find::Rule->new();
my @files  = $engine->file()
    ->exec( sub {
        my ( $shortname, $path, $fullname ) = @_;
        return $path !~ /$re_dir(\d{4}-\d{6})$/;
            } )
    ->exec( sub{
        my ( $shortname, $path, $fullname ) = @_;
        $counter++;
        return $shortname =~ /KCL/;
            } )
    ->exec( sub{
        my ( $shortname, $path, $fullname ) = @_;
        print "." if ( $counter % 100 == 0 );
        print "$counter\n" if ( $counter % 1000 == 0 );
        return 1; # do not forget !
            } )
    ->in( $starting_directory );
$| = 0
 
I've kept three different handlers for readibility sake, but as you can image, it is possible to shrink them down into a single one. The funny part here is that I can check the path against a regexp again. The drawback is that an handler used for output reporting only must return always a true value.
In the case you are wondering, the autoflush is used simply to display the dots while the program is running.

not $foo++

Sono inceppato nell'impementazione di List::MoreUtils::PP::uniq e ho notato una cosa che mi ha fatto sorgere un grosso punto di domanda: un uso quasi malsano dell'operatore not. Ma in fondo è questo il bello di Perl: riuscire ad esprimere concetti molto difficili con pochissimo codice. Ecco quindi il codice in esame:


sub uniq (@)
{
    my %seen = ();
    my $k;
    my $seen_undef;
    grep { defined $_ ? not $seen{ $k = $_ }++ : not $seen_undef++ } @_;
}
 
Il trucco che fa funzionare il tutto è in quel pezzo not $seen{ $k = $_ }++, e in particolare nella negazione. Provo a smontare il codice far comprendere come io sono giunto alla soluzione. Anzitutto la funzione grep processa la lista di paramentri e si aspetta un risultato true o false a seconda del fatto che lo si voglia restituire in uscita dalla funzione (essendo grep l'ultima istruzione effettuata si ha un return implicito). Se il parametro corrente $_ è valido (defined) lo si usa come chiave di un hash %seen e si incrementa (con autovivification) il valore della cella relativa. Fin qui tutto facile, ma occorre ricordarsi che l'operatore postfisso ++ restituisce il valore prima del suo incremento. In sostanza, la prima volta che si trova un elemento nella lista la relativa cella di %seen viene incrementata ma il valore restituito dall'operazione di ++ è zero (ossia falso). Questo valore viene passato all'operatore not che a sua volta lo riconverte in contesto boolean a true e l'elemento viene "greppato" nella lista di ritorno. Alla successiva occorrenza dello stesso elemento la sua cella in %seen viene incrementata, l'operatore ++ restituisce il vecchio valore (1) e questo viene forzato in contesto boolean (quindi true) e negato portando quindi il valore a false, scartando quindi l'elemento. Cosa analoga avviene per i valori undefined, che però in questo caso vengono considerati tutti uguali e quindi non si ha bisogno di tenerli come chiave di un hash.
Direi un bell'esempio di come Perl 5 possa portare a codice molto compatto che però richiede un po' di potenza mentale per essere interpretato!

venerdì 14 ottobre 2016

PGDay.IT 2016: there's some extra time before the CFP is out!

Ehi, the CFP for the PGDay.IT 2016 (Italian tenth edition of the PGDay) has been extended until next Saturday 22 October at 23:59 (Rome).
Don't miss the opportunity to be a speaker at one of the most well known PGDay!

Happy Birthday KDE!

Oggi KDE (era Kool Desktop Environment) compie 20 anni!
E da circa 8 è il mio desktop di riferimento, per scelta, sia per uso quotidiano che sviluppo.
Ho scritto tanti post su questo famoso e glorioso progetto, ma oggi una cosa in particolare ha fatto sobbalzare il mio animo informatico: una nuova release di KDE 1. No, non è un errore di battitura, bensì lo sforzo di un programmatore di mantenere in vita la prima versione del famoso desktop facendola girare su sistemi moderni. E poco dopo l'uscita di una immagine NEON, che non vedo l'ora di provare.
Già, ricordo ancora quando quel desktop comparve, brillante e ordinato, sulla mia Mandrake 6 che dopo appena un paio di ore si era installata su un vecchio Celeron a 300 MHz...

PGDay.IT 2016: CFP estesa ancora di qualche giorno

Al fine di fornire un PGDay.IT 2016 denso e ricco di contenuti gli organizzatori hanno deciso di estendere la Call For Papers di ancora qualche giorno, e precisamente fino a 

SABATO 22 OTTOBRE alle ore 23:59

Le informazioni su come inviare un contributo si trovano sul sito ufficiale della conferenza.

Questione di educazione...

Eh si, su gigetto si incontra gente molto variegata e soprattutto variopinta.
Ebbene chi come me lo prende alla mattina sa che il treno è assaltato da studenti assonnati dal naso illuminato dai loro smartphone (ma che C$%&! vi dovete scrivere alle 7 della mattina?) e quindi si fatica un po' per trovare un posto a sedere.

E così qualche giorno fa trovo due persone sedute una di fronte all'altra, che occupano bellamente ciascuno un sedile da due posti. Faccio segno ad uno dei due di farmi spazio e senza troppi convenevoli mi siedo. Ovviamente il signore in questione brontola con la sua compagna di chiacchere circa la mia intromissione, ma forse a quell'ora della mattina sono troppo assonnato e troppo educato per mandarlo a farsi...beh avete capito.
Dopo qualche fermata una studentessa, con aria gentile e molto educata, chiede cortesemente alla signora che mi stava di fianco se poteva sedersi, visto che il resto del sedile era occupato dal suo marsupio (non zaino, marsupio).
La signora molto sgarbatamente risponde di no, e manda via la studentessa che, visibilmente perplessa ha perfino l'educazione per scusarsi del disturbo.
E da qui inizia un concione della signora che spiega al suo compagno di viaggio che lei deve andare a lavorare, che si vuole riposare sul treno, che non vuole stare pigiata, che gli studenti possono andarsene aff...
Ora, considerato che a tutti piacerebbe viaggiare comodi, non pigiati come sardine, senza l'alito del vicino in faccia o la tosse di qualche ragazzoto che si asciuga il naso nella manica o il telefono di un qualche personaggio scuro che urla. Ma al momento non pare che i trasporti vogliano dare soluzione e soddisfazione a viaggiatori. E a parte questo, l'educazione è ancora un valore importante.

Quindi cara signora, spero vivamente che qualche studente non ti lasci il posto la prossima volta.

Inserire il cubo nel buco della sfera......

Chissà, forse gente non ha mai fatto all'asilo quel simpatico gioco in cui si dovevano inserire le forme giuste nel foro giusto.
Perché affermo questo?
Beh, è molto facile osservare ai supermercati donne indaffarate alla cassa mentre tentano di infilare il carrellino rettangolare in quello stondato. Certo, le due forme non sono compatibili, ma nulla ferma la donna in carriera che con forza da muratore riesce ad incastrare i due oggetti fra loro.
Un altro esempio lo sti trova nella stazione centrale dei treni di Modena. Fino a qualche mese fa le panchine esterne erano di forma semicircolare e addossate alle pareti delle scale, ovvero ben riparate dalla pensilina in caso di pioggia. Ebbene un qualche colto ha deciso di sostituirle con un altro modello di panchina, lineare. Nulla di male fino a qui, peccato che, per usare esattamente lo stesso spazio tali panchine siano state messe lunghe quanto il raggio del cerchio di quelle di prima (eh si, devono stare nello stesso spazio). E come ti insegnano nella geometria piana delle elementari il raggio è ben piu' lungo della circoferenza! O no?



Vabbé, ma il colpo di genio non finisce qui: per permettere una comoda seduta da ambo i lati della panchina questa è stata spostata dal muro e quindi si trova esattamente sotto al bordo della pensilina. In altre parole quando piove l'acqua arriva direttamente sulla panchina. E in tutto questo quanti posti in piu' sono stati guadagnati? Nessuno! Eh si, perché anche se bilaterale la panchina non è piu' larga di quella precedente, quindi un posto su un lato occupa anche l'altro lato. Provare per credere!

Ma il premio assoluto per non aver giocato al gioco degli incastri lo vince chi ha progettato i bidoni della spazzatura con oblç per i sacchetti del pattume. Già, perché così si insegna il senso civico di dover infilare un sacchetto di dimensioni prestabilite in un foro prestabilito. COme è noto esistono standard molto ferrei nella produzione di pattumiere, quindi non capiterà di certo che vi siano in commercio bidoncini di forma e dimensione differenti! O no?
Uhm...forse gli standard sulle pattumiere non sono poi così definiti, visto che tutti i bidoni sono stati poi rifatti per permettere l'apertura totale senza oblò. 
Allora prima di fare questi ammodernamenti inutili, magari mandiamo questa gente a fare un corso di geometria base.

giovedì 13 ottobre 2016

Hacktoberfest

Si, sto cercando di partecipare all'Hacktoberfest 2016.
E qui si trova il mio stato ad oggi, anche se non sto partecipando solo a patch #Hacktoberfest!

domenica 18 settembre 2016

PGDay.IT 2016: it's time for you to speak!

As you probably already know the Call For Papers for the PGDay.IT 2016 is now open. Please see the details here and send your contribution following the instructions. The organizing committee will review each proposal in order to deliver a great program for the tenth edition of the italian PostgreSQL based conference.

PGDay.IT 2016: Call For Papers

Ve ne sarete ovviamente già accorti, perché è da circa una settimana, che la Call For Papers per il PGDay.IT 2016 è aperta.
C'è tempo fino a MARTEDi' 11 OTTOBRE (ore 23:59).
Cosa bisgona fare? Vincere la timidezza e inviare il proprio contributo per talk/tutorial seguendo le istruzioni riportate qui. Ogni singolo contributo è importante e verrà valutato attentamente al fine di garantire un grandioso programma della decima edizione della conferenza.

venerdì 9 settembre 2016

WANTED: Bambino

Mi sembra il giusto tributo a una persona di grandissimo spessore, imprenditore, padre, amante della vita, compagno di tante serate davanti alla tv.


Emacs, Org, Kanban

Personalmente non sono un amante di Kanban, anzi diciamo pure che non lo applico per niente. Ok, chiamatemi pure arretrato, ma non ho bisogno della visualizzazione dei miei task, quanto piu' di gestirli correttamente attraverso stati, dealine, dipendenze, ...
... ma questa è un'altra storia!
Devo però portare all'attenzione un interessante post su come usare Org Mode, e in particolare le tabelle e i task che si possono in esso definire, al fine di gestire un flusso Kanban like: leggete con attenzione questo articolo.

PGday.IT 2016: tenth edition of the italian PostgreSQL conference

ITPUG is proud to announce the tenth edition of the italian PostgreSQL conference, namely PGDay.IT 2016, that will take place in Prato, Tuscany, on December 13th.
The organizing committee is working to provide another great edition of the famous italian day dedicated to PostgreSQL.
Very soon the Call For Papers will start (see http://2016.pgday.it for more details).
In the meantime...stay tuned!



pgday_468x60_it

E' ora di rimboccarsi le maniche: PGDay.IT X!

E' ufficiale: il PGDay.IT 2016 è in corso di organizzazione.
La dcima edizione della conferenza nazionale dedicata a PostgreSQL si svolgerà a Prato, nella splendida sede offerta dalla Camera di Commercio (sede già sfruttata l'anno precedente).
La data è il 13 Dicembre 2016.

pgday_468x60_it

Fra pochi giorni sarà disponibile la Call For Papers e gli organizzatori si metteranno al lavoro per selezionare gli interventi e offrire un programma degno di nota per questa edizione così importante nella storia di ITPUG e di PostgreSQL in Italia.

Per maggiori informazioni vedere il sito ufficiale 2016.pgday.it.

giovedì 25 agosto 2016

Perl Magazine: Cultured Perl

A news from perlsphere.net: CulturedPerl community collaborative blog has been launched!
The idea is really interesting: have a nice online magazine about Perl.
I'm not a Perl expert, at least not enough to be a writer/author for such pubblication, but I will surely read on it.

KDevelop 5

Dal'annuncio sembra che questo fantastico IDE; che ho usato alcune volte (ammetto che lasciare Emacs è per me molto difficile) pare aver fatto un decisivo salto di qualità. E' obbligatoria una prova su strada.
Ma quali sono le differenze con altri IDE, esempio Eclipse? Tante, tecnologiche e concettuali, ma una che a me pare evidente è che KDevelop utilizza le integrazioni di altri servizi esistenti (es. editor Kate) e integrati in un ambiente molto piu' ampio (ecosistema desktop), cosa su cui tutti gli altri IDE o editor evoluti (es. atom) non possono fare affidamento.

Mozilla logo contest

Mozilla sta pensando di cambiare logo e ha pubblicato una serie di proposte (e relative spiegazioni) qui.
Non voglio influenzare in alcun modo nessuno, quindi non pubblico qui la lista dei loghi, anche se non ne trovo uno che mi piaccia. Forse quello che mi mi dispiace meno è il protocol, ma secondo me non è necessario il cambio di logo. Dopotutto per me Mozilla è il dinosauro rosso dalla testa squadrata, e rimarrà sempre quello!

domenica 7 agosto 2016

Emacs, elisp e suggest.el

L'ecosistema di Emacs è veramente molto esteso e denso, ed è facile perdersi al suo interno.
Oggi ho scoperto un pacchetto denominato "suggest"  il cui scopo è tanto semplice quando sbalorditivo: dato un input e un output questo fornisce una lista di potenziali funzioni elisp che possono soddisfare la condizione.

sabato 6 agosto 2016

Compratori su subito.it? Ecco alcuni esempi da cui stare alla larga!

Nella mia breve carriera di venditore di materiale usato mi capita spesso di incontrare (anche se solo virtualmente) gente curiosa, che oltre a far saltare la vendita spesso all'ultimo momento mi fa perdere parecchio tempo.
Si tratta ahimé di comportamenti seriali, catalogabili in specifiche categorie (e già in passato l'ho fatto). Con il tempo però le categrio si espandono aggiungendo nuove forme di, ehm, imbecillità.

Categoria: la moltiplicazione dei pani e dei pesci

Non mi è ancora chiaro se questa categoria di persone sia realmente stupida o se tenti solo di abbassare di colpo del 50% il prezzo, ma quello che succede è che nonostante l'annuncio parli di un oggetto, nonostante le foto siano tutte riferite ad un solo oggetto, nonostante il prezzo sia ovviamente per un singolo oggetto, qualcuno ha il coraggio di chiedere di quanti oggetti si tratti perché l'annuncio risulta poco chiaro.

Un esempio per tutti: provate a vendere un "ottimo tagliasiepi" e vi troverete qualcuno che, ingannato proprio dal plurale di "tagliasiepe" vi chiede di quanti attrezzi disponete.
E con tono anche abbastanza saccente vi spiegherà che la dizione corretta era "ottimo tagliasiepe".
Beh, caro compratore, il posto dove ti vorrei mandare non ammette plurali, quindi non ci può essere fraintendimento!


Categoria: io speriamo che me la cavo

La domanda piu' frequente che ricevo è "il prezzo è trattabile?" (o una sua variante). Spesso rispondo con qualcosa del tipo "dipende da cosa intendi per 'trattabile'".
E tutto in genere fila liscio fino a quando non si incontra questo maestro frustrato delle scuole elementari che mi spiega, in puro stile Treccanni, il significato della parola "trattabile".
Senza giungere ad una offerta concreta.


Categoria: let me google that for you

Come ho già avuto modo di scrivere, io cerco sempre di pubblicare annunci quanto piu' precisi: marca, modello, caratteristiche, peso, dimensioni, ecc.
Nonostante questo trovi sempre il potenziale compratore che ti chiede se la feature X è presente o meno (es. "ha la wi-fi?", "funziona con la corrente a 220V?"). Ma porca miseria, anche ammettendo che a me possa sfuggire qualcosa nell'annuncio, con marca e modello non puoi fare una semplice ricerca su un qualunque motore di ricerca e valutare se l'oggetto fa al caso tuo? Anche perché, coincidenza strana, qualunque cosa io risponda mi sento sempre dire che lo si voleva l'opposto.


Categoria: ti insegno io a stare al mondo

Premessa: mio padre è stato venditore, mia mamma aveva una attività commerciale, io ho seguito diversi sistemi per ordini di svariate misure, posso dire che magari non sono proprio digiuno di una trattativa commerciale?
Beh, capita che ci sia qualcuno che, forse colpito dal caldo e dalla solitudine estiva, scriva qualche decina di pagine email per convincermi che la trattativa fra privati conviene, che però non essendoci garanzia si dovrebbe essere flessibili sul prezzo, ecc.
Beh, sono molto grato a queste persone desiderose sempre di insegnarmi come stare al mondo, peccato che i loro insegnamenti pare vadano sempre e solo nella direzione di prezzo al ribasso (mai al rialzo).



Categoria: ne ho trovato un altro

Incontro con l'acquirente (potenziale) fissato, su sua richiesta spostato, anticipato, riorganizzato.
All'ultimo manda un SMS (neanche una telefonata) per dire che ha trovato un altro articolo ad un prezzo inferiore.
Scusa, la prossima volta, prima di bombardarmi per fissare un appuntamento quando pare a TE, puoi controllare a modo se ti puoi permettere di acquistare il mio oggetto (e in parte anche il mio tempo)?



Categoria: spedizione inclusa

E' il caso piu' classico: si richiede che la spedizione dell'oggetto sia inclusa nel prezzo finale. Il problema che molti acquirenti non sembrano valutare è che, al giorno d'oggi, spedire costa da 10 a 15 euro a seconda di dimensione e peso (per alcuni pacchi si arriva perfino a 30 euro!).
Veniamo ad un esempio pratica: un oggetto di piccole dimensioni, del valore (nuovo) di 70 euro, venduto a 25 euro. Se si include la spedizione cosa rimane al venditore? Ma tentando di essere volenterosi si prova ad offrire almeno metà spedizione, ossia 5 euro sui 10 della spedizione. Ma poi l'acquirente vuole pagare solo con un sistema che prevede 2,5 euro di commissioni a carico del venditore.
Quindi in realtà l'acquirente è disposto a pagare solo 2,5 euro di spedizione (un quarto) su un oggetto che viene venduto a meno della metà del suo valore nuovo. E per 2,5 euro di differenza rinuncia all'oggetto.
Ma qualcuno si è reso conto che non siamo ancora figli di 2 euro?