La tecnica del pomodoro

Al Pycon4 ho comperato un libro eccellente, non direttamente legato all’informatica, bensì orientato a migliorare le proprie prestazioni “intellettuali“.
Il principio è tanto banale quanto efficace.

Fare una sola cosa per volta

Per farlo è necessario un timer ed utilizzarlo, settandolo su un tempo variabile, solitamente intorno ai 25 minuti per fare un compito e solo quello fino a che non suona.

Ovviamente non è detto che un compito sia esprimibile in un solo pomodoro (poiché il timer utilizzato dall’inventore del metodo era un timer da cucina dalla forma del rosso ortaggio, oggigiorno il metodo ha preso quel nome) quindi in tal caso si valuta quanti pomodori occorrono per completarlo e ci si mette all’opera fino a che, 25 minuti alla volta, non lo si è terminato.

Questo è il funzionamento di base e vi assicuro che soltanto questo ha portato il mio rendimento ad un miglioramento non trascurabile: prima di questa “filosofia” ero portato ad interrompere una cosa che stavo facendo o perché mi veniva chiesto o perché mi veniva in mente che ne dovevo fare una altrettanto urgente o forse di più.

Con la tecnica del pomodoro invece la mia coscienza è a posto perché so che per la durata del timer mi occuperò solo di un compito (o di una sua parte) e se qualcuno mi interrompe nel mezzo della mia “iterazione” per un compito più urgente chiedo lui (gentilmente) se può aspettare il termine dei miei 25 minuti.

Se questo accade, perfetto ho ottenuto quello che volevo e se ciò non avviene semplicemente azzero il timer e “scarto” il pomodoro: a fine giornata conterò i pomodori portati a termine e così potrò valutare quale è il mio carico di lavoro includendo in esso anche tutte le interruzioni.

E’ veramente una lettura illuminante e vi rimando al libro della Pragmatic Programmers che ho letto pochi giorni fa; esiste anche il sito ufficiale della tecnica  su cui si può trovare sia il manuale anche in formato bignami.

Pubblicato in automiglioramento | Lascia un commento

Come trasformare un portatile in un e-reader

Ultimamente non si fa che parlare di kindle reader, e-readere  ipad che sembrano essere il futuro tecnologico della carta stampata e in questo 2010 sembra che molti giganti dell’hardware si lanceranno nella corsa a riempire il mercato di questi nuovi gioiellini tecnologici.
Ammetto che anche a me la cosa attira molto e nel frattempo con il mio mitico Elitebook 6940p e ubuntu 9.10 mi sono dato da fare ma non troppo per leggere i miei pdf preferiti.
Ovviamente quello che sono riuscito ad ottenere è stato inizialmente questo

che come e-reader lascia molto a desiderare.
A questo punto mi è venuto in mente di “maneggiare” il mio portatile come un libro e ho premuto CTRL-freccia sinistra e questo è il risultato.

E’ decisamente meglio ed il bello è che posso usare il tasto sinistro e destro del pad per andare avanti/indietro nel mio pdf.

Pubblicato in book, ipad, kindle, reader | 1 commento

Come stampare un pdf di una sola pagina in doppia copia sulla stessa pagina

Quello che si vuole fare è il seguente:

da un pdf così:

si vuole stampare un pdf così

senza usare strumenti “strani” l’unica cosa necessaria è o ubuntu o windows con configurata una stampante virtuale in grado di creare pdf.

Il procedimento, se non si conosce la giusta sequenza può non essere molto intuitivo e per farlo occorre un passo intermedio.

1) Si prende il pdf di partenza e usando la stampante virtuale si stampa la pagina in duplice copia

ottenendo

e si salva il pdf in una directory temporanea ad esempio /tmp/output.pdf

2) si apre il pdf /tmp/ouput.pdf e si stampa con l’opzione 2 pagine in una

e quello che si ottiene è proprio quello che volevamo

semplice e veloce senza usare strumenti aggiuntivi, spesso complicati da capire come funzionano.

Pubblicato in pdf, stampa | Lascia un commento

Due giorni all’IPW09 (Italian Perl Worlshop 2009)

Quest’anno per la prima volta mi sono regalato una full immersion di 2 giorni all’ipw09.
E’ stata una esperienza bella ed appagante e mi ha lasciato con la voglia di scrivere tanto tanto codice perl.
Un’altra cosa che mi reso questa esperienza ancora più appagante è che alcuni relatori che hanno presentato progetti molto interessanti sono anche miei colleghi ed amici.
La manifestazione si è tenuta al Centro Nazionale delle Ricerche una cornice eccellente all’alto livello della manifestazione.
Fare una carrellata dei talk che si sono tenuti sarebbe un lavoro lungo e faticoso quindi per ulteriori informazioni vi rimando su perl.it, non appena disponibili le slide le potrete trovare qui (come bonus trovate anche quelle degli anni scorsi). Alcuni talk  riguardavano aspetti tecnici specialistici, altri erano divulgativi (tra cui un corso completo di perl della durata di 480 minuti – scusate se è poco) ed ancora alcuni erano ironici come il talk sull’Antiquated Perl   riguardante i trucchi rocamboleschi che si possono fare con il perl delle vecchie versioni, una lezione  che si è rivelato un ottima introspezione sul funzionamento a basso livello del perl.
Insomma molti interventi tutti caratterizzati da un elevato livello di competenza, una voglia di divulgare una propria passione ed anche di divertirsi un pochino.
Una ottima iniziativa.

Pubblicato in perl | Lascia un commento

Git e Gitosis

Ecco come creare un repository git e condividerlo con gitosis su ubuntu 9.04.

Installare git

sudo apt-get install git-core python-setuptools

Installare gitosis

cd /tmp
git clone git://eagain.net/gitosis.git

cd gitosis
python setup.py install

Gitosis è un modo “semplificato” – si fa per dire – per gestire gli accessi al repository git e consiste nel modificare un file di configurazione con una serie di autorizzazioni e di chiavi pubbliche ssh associata ad ogni utente.

Prima di poter utilizzare gitosis va creato un utente ad hoc e configurato come amministratore di gitosis. L’utente che andiamo a creare molto originariamente si chiamerà git.


sudo adduser \
--system \
--shell /bin/sh \
--gecos 'git version control' \
--group \
--disabled-password \
--home /home/git \
git

l’utente appena creato avrà come unico compito di “ospitare” il repository e di far girare gitosis. Quindi i repository saranno almeno due

  • il repository in cui vogliamo mettere i nostri dati da versionare (può essere più di uno)
  • il repository amministrativo di gitosis che si chiama gitosis-admin

a questo punto bisogna fornire l’accesso al repository amministrativo ad un utente del sistema utilizzato per sviluppare (chiamiamolo valerio)
occorre quindi recuperare la chiave pubblica dell’utente valerio da ~/.ssh/id_rsa.pub ma se non è presente va creata con



ssh-keygen -t rsa

e importata nel repository amministrativo gitosis-admin con


sudo -H -u git gitosis-init < ~/.ssh/id_rsa.pub

il quale confermerà con un


Initialized empty Git repository in ./
Initialized empty Git repository in ./

si lo dirà 2 volte.

Bisogna aggiornare alcuni permessi poichè gitosis li imposta in maniera non corretta


sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update

A questo punto il repository amministrativo è pronto e lo si può accedere ovviamente utilizzando git con

git clone git@localhost:gitosis-admin.git

verrà creata una sandbox con il file e la directory

-rw-r–r– 1 valerio valerio 142 2009-07-04 17:31 gitosis.conf
drwxr-xr-x 2 valerio valerio 80 2009-07-04 17:31 keydir

gitosis.conf contiene la configurazione degli utenti mentre keydir contiene le chiavi pubbliche di tutti gli utenti (compresa già quella di valerio che è stata passata precedentemente con il comando sudo -H -u git gitosis-init < ~/.ssh/id_rsa.pub )

gitosis.conf contiene le seguenti voci

[gitosis]

[group gitosis-admin]
writable = gitosis-admin
members = valerio@ken

il che significa che attualmente il repository gitosis-admin è accedibile da valerio dalla macchina ken utilizzando la chiave pubblica valerio@ken che è in

ls -l keydir/
-rw-r–r– 1 valerio valerio 393 2009-07-04 17:31 valerio@ken.pub

A questo punto l’installazione è conclusa anche se ovviamente dovrebbero essere aggiunti i repository su cui si vuole versionare il proprio codice. Supponendo di voler creare un repository chiamato personale gitosis.conf assumerà l’aspetto

[gitosis]

[group gitosis-admin]
writable = gitosis-admin
members = valerio@ken

[group team]
writable = personale
members = valerio@ken

dopodichè va fatto il commit ed il push di queste modifiche

git commit -m “new personal repository” -a
git push

a questo punto l’utente valerio@ken è in grado di creare il repository personale con

cd /tmp
mkdir personale
cd personale/
git init
git remote add origin git@localhost:personale.git
echo “il mattino ha l’oro in bocca” > readme.txt
git add readme.txt
git commit -m “primo file”
git push origin master

e il repository personale adesso è accessibile con

git clone git@localhost:personale.git

Utenti multipli

Ovviamente è possibile utilizzare utenti multipli per un singolo repository aggiungendo vari utenti alla configurazione
[group team]
writable = personale
members = vcrini@vcrini-laptop valerio@ken

qui il repository mysite è scrivibile da vcrini e valerio. In keydir va copiata a mano la chiave pubblica vcrini@vcrini-laptop.pub

Volete debuggare?


Aggiungere “loglevel = DEBUG” proprio sotto la voce [gitosis] e fate attenzione agli spazi altrimenti non funziona.

[gitosis]
loglevel = DEBUG

[group gitosis-admin]
writable = gitosis-admin
…

Maggiori informazioni?
C’è un ottimo tutorial su Git qui.

Pubblicato in git, repository | Lascia un commento

ubuntu e terminali multipli


Con linux a me torna comodo avere una visualizzazione di questo tipo dei terminali

il problema è che mi tocca fare sempre tutto a mano fino a che non ho scoperto questa riga di comando:

gnome-terminal —geometry=160×30 && gnome-terminal —geometry=80×21+0+820 && gnome-terminal —geometry=73×21-1+820

mettendo questo comando in uno script multi_finestra

#!/bin/sh
gnome-terminal —geometry=160×30 && gnome-terminal —geometry=80×21+0+820 && gnome-terminal —geometry=73×21-1+820

e rendendolo eseguibile con

chmod u+x multi_finestra

adesso, associandole un tasto veloce riesco a fare tutto con una semplice combinazione di tasti

Pubblicato in gnome-terminal | Lascia un commento

Pycon 3 – La conferenza italiana di Python a Firenze

Da Venerdì 8 a Domenica 10 Maggio si è tenuta a Firenze la terza conferenza italiana sul linguaggio python.
Un’incontro molto interessante per chi usa il linguaggio Python e per chi (come me) è semplicemente incuriosito dal fermento che viene fatto scaturire da un incontro con persone legate da un’interessa comune come l’informatica.
La conferenza aveva un’ospite di eccezione quest’anno: Guido Van Rossum il papà di Python ovvero colui che lo ideò tanti anni fa che ha tenuto uno talk sulla nuova versione 3 del linguaggio ed uno su Google App.

In particolare ho trovato molto interessante il talk di Martelli su le Astrazioni , l’epopea della conversione del modulo postgrep da python 2 a python 3 di Federico di Gregorio e il corso di software finanziario tenuto da Stefano Taschini.

Una nota a parte per una introduzione all’utilizzo di Erlang che con Python ha ben poco a che fare ma che è stata molto gradita sia per la simpatia del suo relatore che per l’interesse che è stato destato sull’argomento.

Insomma nel complesso una conferenza ben fatta, ben organizzata e ricca di contenuti. La cosa che più mi ha colpito è stata la grande abilità nel rendere appassionante l’incontro e questo è un grande merito trasversale all’argomento trattato.

Pubblicato in pycon3, python | Lascia un commento

xml e wsdl in perl

Dato uno schema wsdl e il modulo SOAP::Lite di perl è semplice ottenere una modulo perl personalizzato per effettuare le chiamate semplicemente utilizzando il comando

stubmaker.pl ‘file:./schema.wsdl’

in questo modo verrà creato il modulo schema.wsdl che contiene tutte le chiamate previste nello schema

Pubblicato in wsdl, xml | Lascia un commento

Ubuntu e firefox senza audio su youtube

Mamma mia per mesi ho avuto l’impossibilità di sentire l’audio su youtube malgrado l’audio funzionasse correttamente il player di ubuntu.
Il problema si è verificato facendo l’upgrade da ubuntu 8.04 a 8.10 e questa è la soluzione:

killall pulseaudio
sudo apt-get remove pulseaudio
sudo apt-get install esound esound-clients libao2
sudo rm /etc/X11/Xsession.d/70pulseaudio

adesso posso finalmente tornare a sentire “L’uomo che usciva la gente”

Pubblicato in audio, ubuntu, upgrade | 2 commenti

validatore xml sotto linux con vim

Mi avrebbe evitato un’errore qualche giorno fa mentre testavo un parser di xml proprio perchè vim 7 non ha di default un formattatore e validatore di xml ma è molto semplice aggiungerne uno.

Inserendo in vimrc la seguente riga

vmap ,px !xmllint –format -<cr>

basta selezionare in modalità visuale ciò che si vuole verificare e digitare ‘,px’ a questo punto se l’xml è valido viene formattato altrimenti segnala un errore e specifica anche il punto.

Quindi si passa da

<xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”> <message version=”1″ type=”foo”> <metadata1> bla</metadata1> <metadata2> bla bla</metadata2> </message>

a

<xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”>
<message version=”1″ type=”foo”>
<metadata1> bla</metadata1>
<metadata2> bla bla</metadata2>
</message>

ma se c’è un errore (ad esempio manca un ‘?’ iniziale)

<xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”> <message version=”1″ type=”foo”> <metadata1> bla</metadata1> <metadata2> bla bla</metadata2> </message>

otteniamo

-:1: parser error : attributes construct error
<xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”> <message version=”1″ type=”” parser=”” error=”” couldn=”” t=”” find=”” end=”” of=”” start=”” tag=”” xml=”” line=”” 1=””><xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”> <message version=”1″ type=”” parser=”” error=”” extra=”” content=”” at=”” end=”” of=”” the=”” document=””><xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”> <message version=”1″ type=””>

</message></xml></message></xml></message></xml></xml></cr><cr><xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”><xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”><message version=”1″ type=”” parser=”” error=”” couldn=”” t=”” find=”” end=”” of=”” start=”” tag=”” xml=”” line=”” 1=””><xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”><message version=”1″ type=”” parser=”” error=”” extra=”” content=”” at=”” end=”” of=”” the=”” document=””><xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”><message version=”1″ type=””>
</message></xml></me

Pubblicato in Uncategorized | Lascia un commento