martedì 30 ottobre 2012

To be Linux or not

Il team di OpenBSD si è sempre distinto per creatività e serietà.
Ogni release del sistema operativo viene corredato da una canzone e da artwork relativo al "tema" di sviluppo della release stessa. E il tema per la 5.2 è la compatibilità POSIX.
Si sta infatti affermando sempre di piu' il fenomeno di essere Linux-compliant invece che POSIX-compliant. Peggio ancora, perfino POSIX sta iniziando a piegarsi a certi Linux-ismi.
Il fenomeno si è già abbondantemente mostrato con Gnome, almeno nella mia opinione: Gnome si è legato fortemente alla struttura di Linux tanto da rendere i port per le altre piattaformi molto difficili. Il fatto che Linux si sia così diffuso rende il fenomeno ancora piu' incontrollabile: Linux si sta affermando come uno standard de-facto sopra a standard che esso stesso ha perseguito. Di fatto si sta verificando quello che Microsoft stesso ha generato: un sistema che pone monopolio sulla base della sua diffusione. 
Ma non finisce qui: si assiste ormai da tempo alla scrittura di codice legato ad una particolare distribuzione Linux, rendendo quindi il software stesso non portabile per definizione.


lunedì 29 ottobre 2012

Sysadmin panics: maestra non sono stato io!

(ovvero Bikeshed on steroids!)

Grande invenzione le e-mail! Consentono di raggiungere tantissime persone alla distanza di un solo click. E proprio per questa semplicità la maggior parte delle persone, ivi inclusi certi sysadmin che ho avuto il (dubbio) piacere di conoscere, vengono usate in modo errato.

Situazione: un utente notifica il sysadmin di un problema tecnico. Non importa quale sia il problema nello specifico: potrebbe essere un demone fermo, un servizio malfunzionante, un problema di autenticazione o di profilazione, insomma, qualunque cosa di competenza del sysadmin. Ora, piu' o meno diligentemente il sysadmin verifica quanto detto dall'utente e realizza che non c'è nulla che non funzioni nei sistemi segnalati. Il guasto è quindi apparente e forse causato da un erroneo utilizzo dell'utente. 
Bene, cortesia vuole che il sysadmin risponda all'utente informandolo della non riscontrata anomalia. Questo basterebbe a chiudere il caso con buona pace di entrambe le parti.
Eppure un sysadmin dubbioso delle proprie capacità, per paura forse di essere crocifisso in sala mensa come nella classica tradizione di Fantozzi, si affretta a mandare risposta all'utente mettendo in copia anche i propri superiori.
Il dialogo quindi appare come segue:

From: utente generico
To: sysadmin di fiducia
Subject: Malfunzionamento?
Caro sysadmin,
oggi non sono riuscito ad usare/accedere/fruire del servizio/processo/procedura XYZ. Per favore, puoi controllare se qualcosa non sta funzionando a dovere?


From: sysadmin di fiducia
To: utente generico
Cc: superiore 1, superiore 2, capo supremo, god
Subject: Re: Malfunzionamento?

Caro utente,
non ho riscontrato alcun malfunzionamento. I servizi funzionano ogni giorno, ogni ora, ogni minuto nello stesso modo e con regolarità. L'errore deve essere tuo, per favore controlla di aver seguito la procedura di utilizzo in tua dotazione.

Quante volte ho assistito a dialoghi del genere, e forse parecchi anni fa sono caduto anche io (nel ruolo di sysadmin) in una simile trappola.
Cosa c'è che non va?
Il fatto che il sysadmin invii la comunicazione anche a dei superiori.
Quali superiori?
Beh, bisogna distinguere: se sono superiori del sysadmin, dell'utente generico o di entrambi.
Si consideri il primo caso (superiori del sysadmin): in questo caso il sysadmin sta gridando maestra non sono stato io!, ovvero sta cercando di dimostrare attraverso un semplice dialogo con l'utente finale di aver fatto tutto quanto in suo potere per garantire il funzionamento del sistema. L'effetto finale però è che l'utente percepisce l'insicurezza del sysadmin, che ha bisogno non solo di confermare quanto pensa, ma di confermarlo anche ai suoi superiori. Una sorta di "guardate quanto sono diligente".
Si consideri ora il secondo caso (superiori dell'utente generico): in questo caso il sysadmin sta comunicando qualcosa che suona come "oh, questo utente mi sta seccando, si lamenta di cose che non esistono". Il risultato finale è che l'utente non si fiderà piu' del sysadmin, visto che viene preso a pesci in faccia con una comunicazione riservata resa pubblica allo scopo di tentare una umiliazione.

Ma non è finita qui: in entrambi i casi i superiori in questione vengono tirati in ballo in una conversazione privata fra due parti (sysadmin e utente) della quale probabilmente non vogliono e/o non hanno interesse ad essere informati (altrimenti lo sarebbero stati fin dalla prima e-mail). Si consideri il tempo che una persona impiega per leggere la mail di cui sopra, pari a 1 minuto (incluso il tempo per fare click sul messaggio). Si sommi la distrazione del superiore, che viene gettato in una conversazione mentre era impegnato a fare altro. Si moltiplichi tale tempo per il numero di persone in Cc nella e-mail: si ottiene l'ammontare del tempo che il sysadmin, di sua iniziativa, ha deciso che l'azienda e le persone devono sprecare con una sterile polemica.

E comunque non siamo ancora arrivati al peggio.
Mi è capitato personalmente, qualche anno fa, di inviare una comunicazione confidenziale sul malfunzionamento di un server amministrato da un altro sysadmin. Questi mi ha risposto mettendo in Cc un terzo sysadmin cercando di fargli prendere non solo parte alla discussione, ma indirizzandolo verso lo schieramento a suo favore.

Soluzione al problema?
Francamente non ne ho. Posso solo consigliare tutti i sysadmin e, in generale, tutti gli utenti, di riflettere prima di inviare una e-mail: esiste veramente la necessità di coinvolgere le persone nella discussione o lo si sta facendo solo per acquisire sicurezza?


domenica 28 ottobre 2012

Linux Day 2012: un gran evento!

Ho partecipato con piacere al Linux Day 2012 a Modena, organizzato dal LUG Conoscere Linux e dai suoi membri attivi e molto in gamba. Non posso che esprimere parere piu' che positivo circa l'evento, organizzato in modo impeccabile con attrezzature e strutture all'altezza, e con la accoglienza e professionalità del LUG di Modena.
L'evento si è svolto presso il dipartimento di Fisica dell'Università di Modena e Reggio Emilia, all'interno della famosa aula G (ora rinominata L1.1), adatta ad ospitare la buona affluenza di pubblico che questo Linux Day ha avuto. Come ho già detto le attrezzature messe a disposizione erano piu' che adeguate, con musica di sottofondo, proiettori e microfoni e un pannello laterale che mostrava tweet e post in diretta. Al piano inferiore era stata allestita la reception e una sessione interattiva per Asterisk (oggetto di uno dei talk della giornata). Un plauso particolare agli organizzatori per essere riusciti a rispettare con grande precisione il programma della giornata, cosa solitamente difficile perché gli speaker tendono sempre a rubare minuti l'uno all'altro (me compreso!).
IL livello tecnico degli interventi è stato ottimo: la sessione del pomeriggio in particolare ha presentato diversi progetti interessanti relativi a virtualizzazione, VoIP, costruzione di server domestici, ecc. La sessione del mattino è stata invece maggiormente improntata sugli aspetti culturali dell'Open Source e del diritto di autore, anche se non posso esprimermi appieno poiché non sono riuscito a presenziare ad ogni intervento.

Durante la sessione del pomeriggio io ho tenuto un talk introduttivo su PostgreSQL, che ha sollecitato la curiosità di diversi partecipanti che mi hanno posto diverse domande alla fine del talk e della giornata. Per problemi di tempo ho mostrato solo alcune delle feature di PostgreSQL, con particolare riferimento alla server side programming e alla replica, ma senza poter scendere in particolari dettagli. Ovviamente la parte iniziale del mio talk non poteva esimersi dal presentare il progetto, la sua storia e la sua cultura, fattori tutti determinanti per una buona adozione di questo strumento. Alla fine del talk mi è anche stato fatto gradito omaggio del pinguino d'oro, premio del Comune di Modena dato anche a tutti gli speaker invitati all'evento. Farà una bella figura sulla mia scrivania in ufficio.

Infine qualche critica la devo fare, non verso l'evento, ma verso alcuni degli speaker stessi. Sia chiaro, si parla di opinioni personali, ma quando sento uno speaker che parla di diritti di autore e che usa Twitter o di un altro che indica come Facebook sia una delle responsabilità di un buon reparto IT mi si drizzano i peli anche in posti che non sta bene scrivere! 

Ad ogni modo, un ringraziamento particolare agli amici di Conosce Linux che mi hanno ospitato e che hanno organizzato un ottimo evento.
Conitnuate così!

Sysadmin panics: dischi, questi sconosciuti!

Qualche altro episodio esilarante dalla mia esperienza con alcuni sysadmin di dubbio talento!

fsck /your/rw/filesystem
Una delle cose che francamente considero assodate è che un filesystem montato in lettura/scrittura non dovrebbe mai essere passato a nessun tool diagnostico, inscluo fsck. Eppure c'è chi, insospettito da strani comportamenti (non errori!) del proprio filesystem decide di lanciare a tappeto un fsck su ogni file system montato su un server di produzione. Buona fortuna!

 Quando i dischi spariscono....
Le moderne implementazioni di gestione dell'hardware (es. devfs) consentono al sistema di rimuovere o aggiungere i nodi sotto a /dev dinamicamente. Questo significa che se un disco si rompe improvvisamente, e quindi "sparisce" dal sistema, il suo nodo in /dev verrà anch'esso rimosso appena possibile. Ora, non importa quante volte l'amministratore nel panico lanci fsck /dev/missing o fdisk /dev/missing, il disco non tornerà ad apparire. Si prenda atto del fatto che il sistema molto spesso è piu' robusto della mente del sysadmin stesso!

Il partizionamento, questo sconosciuto
Questo mi ricorda un po' il problema dell'inserimento degli account utenti a mano: se si deve "clonare" esattamente la tabella delle partizioni di un disco, non serve copiarla a mano da uno all'altro. Esistono infatti appositi strumenti, come fdisk, che possono fare il lavoro sporco per noi, risultando anche piu' precisi di quello che non saremmo stati. Quindi per cortesia, non fatemi assistere nuovamente a scene di sysadmin che copiano una ad una le partizioni da un disco (o almeno se proprio devo assistervi, almeno che le partizioni siano non piu' di due!).

Il RAID, questo sconosciuto
Grande invenzione il RAID, anche se a volta il suo omonimo insetticida annebbia la mente del sysadmin di turno. Per prima cosa si deve sempre avere chiaro se si parla di RAID software o hardware, e che relazioni ci sono perché ovviamente i due sono stackable. In entrambi i casi però è bene tenere presente che nessuno dei due tipi di RAID è automagico: sostituire un disco rotto e sperare che questo sia partizionato, sincronizzato e messo on-line automaticamente è utopia. Almeno, non ho ancora incontrato un server o un OS che faccia questo. Meglio quindi leggere attentamente la documentazione del RAID in questione. E meglio ancora, si studi il RAID e i suoi livelli, per capire anche come le varie partizioni o i vari dischi devono essere assemblati.

UUID, questo sconosciuto
Se un server inizia a dare errori su una partizione abcdef22a78cd18..... o qualcosa di simile, si provi a costruire la tabella degli UUID dei propri dischi e si controlli che cosa il server tenta di montare. C'è un qualche identificativo sbagliato (ad esempio perché un disco è stato sostituito).  

 

sabato 27 ottobre 2012

Sysadmin panics: sicurezza

Ed ecco come si comportati alcuni dei sysadmin disastrosi che ho conosciuto riguardo alla sicurezza.

Root? Sempre e comunque!
Ho assistito piu' volte a sysadmin che pur di voler mostrare la loro capacità nell'eseguire operazioni remote sui loro server via SSH (come che fosse una gran difficoltà!) non hanno esistato a collegarsi direttamente come root ai server remoti da computer assolutamente non fidati di aule corsi o addirittura da computer di altre persone. E se maliziosamente qualcuno avesse impostato un keylogger?

Ma tanto gli utenti non sanno usare SSH
Diversi anni fa mi trovai a svolgere dei compiti di manutenzione su un server di posta elettronica gestito da una software house esterna. Notai con ribrezzo che tutti gli account utente usati per la posta elettronica avevano abilitato il login. Non solo, la loro shell di login era bash, che per definizione è insicura specialmente in connessioni remote (si pensi a .bash_profile o perggio a .bashrc). Ovviamente ho fatto presente l'errore di configurazione, dovuto al fatto che comandi come useradd e simili, pensando che l'utente sia interattivo, propongo in default una shell di login. Tuttavia mi è stato risposto che, poiché gli utenti che usavano le caselle di posta non erano abbastanza smaliziati da usare anche SSH, non c'era nessun rischio di sicurezza. Devo commentare?
Ad ogni modo, il server in questione venne penetrato, con notevole disservizio. Parecchi anni dopo, la software house in questione continuava ad installare server di posta con utenti abilitati al login da ogni host remoto....

Aggiornamenti? Quando cambiamo il server!
 Gli aggiornamenti software si sa, possono essere problematici e difficilmente sono indolore. Tuttavia, almeno sul fronte della sicurezza, vanno fatti regolarmente seguendo gli advisor dei vari servizi e OS. Non tutti sono propensi agli aggiornamenti, seguendo il principio che quello che funziona non va toccato o si rischia di romperlo. Il principio è vero: se si ha un vaso di cristallo in equilibrio sopra ad un cornicione conviene non toccarlo, o si rischia di farlo cadere. Ma è anche vero che si potrebbe riuscire a metterlo in salvo da un eventuale terremoto. Insomma, io sono propenso a fare gli aggiornamenti il prima possibile e con tutto il lavoro necessario affinché i servizi siano sempre in ordine.
Inutile dire che molti sysadmin non la pensano così, e infatti piu' volte ho dovuto discutere per poter fare aggiornamenti di servizi vecchi di anni. E molto spesso la risposta che ho avuto è stata che le versioni nuove andavano installate con i nuovi server hardware, ovvero visto che all'acquisto di una macchina si deve "spendere" tempo per installare un sistema, quel tempo lo si sarebbe impiegato per installare un sistema aggiornato, risparmiando quindi il tempo "inutile" di aggiornamenti successivi. Inutile commentare oltre.

Password dei servizi
Ho visto così tante password di servizi e demoni impostate tutte uguali a valori noti che mi sono stancato dell'argomento e non intendo nemmeno commentarlo!

Impostare la propria password pensando alla propria banca
Si, un sysadmin impostò una password di amministratore scaduta secondo lo schema delle password della propria banca sostenendo che non era sicuro di poter usare alcuni caratteri perché nel login della sua banca non erano permessi. Se sembra senza senso, è vero. E ancora devo capire cosa mi volesse dire il sysadmin in questione!

Condivisioni, backup e tutto di tutti!
Uno dei miei primi lavori seri fu impostare dei livelli di sicurezza su delle condivisioni di file che risultavano di fatto accessibili a tutti gli utenti indiscriminatamente. E infatti spesso un utente cancellava i file di un altro utente senza motivo. 
Perfino le copie di backup erano "parcheggiate" su condivisioni accessibili a tutti gli utenti. A cosa serve quindi profilare gli utenti se poi chiunque può portarsi a casa l'intero set di dati dell'azienda?

Backup del capo? Totalmente insicuro!
Situazione: il capo chiede al suo sysadmin fidato di fargli una copia di backup dei dati del suo computer (posta e documenti). Il sysadmin ha fretta, quindi decide di posizionare il backup in uno storage di rete. Peccato che scelga una posizione accessibile a tutti gli utenti (si veda il paragrafo precedente). Poco male, visto che il backup viene fatto fuori dall'orario di lavoro, quando i dipendenti di fatto non hanno accesso fisico allo storage. Ben piu' grave è lasciare il backup in suddetta posizione per oltre un mese. 
    
     
  

 

venerdì 19 ottobre 2012

[Mailing List | Forum]-ize yourself!

This could sound weird from me, having been a fan of mailing lists up to almost one year ago. Nowadays I believe much more in technical forums rather than other collaborative spaces.
First of all allow me to explain the need: you are developing/mantaining a piece of code and you get a problem that cannot resolve, so you need for assistance. I'm not going to discuss here the types of support and assistance you can get by proprietary or open source software, I'm supposing you are alone and without any support contract by anyone.
In the programming space there are different ways of getting supports, mainly:
  • IRC (Internet Relay Chat)
  • Mailing Lists
  • Forums
  • Social Networks
Since I'm not a fan of social networks, in any forms they could come, I discourage you to use them as a way of getting support. Consider that social networks are very dynamic, high traffic and easy to confuse readers, so it is quite difficult someone will note your help request in the ocean of messages that flow thru the social network.
IRC is an old fashion way of chatting, and is very respected in the Unix and Unix-related environments. The idea is to have a virtual room that hosts people that discuss about a specific subject. One room means one subject, users do not have to register anywhere, can gain access to server quite easily and can access more rooms at once. My experience is that traffic can become quickly really high or you could fly to a room without any (interested) guest, so your question is going to be dropped and forgotten in the room. Moreover, room logs could not be saved, so even if someone helped you the answer could not be stored somewhere and you could be unable to access the answer again. Usually IRC is used to synchronize committers and developers and to make virtual meetings, but getting help thru it is in my opinion very difficult. Moreover you are required to stay connected for a while, so it requires you to have access to the Internet (even if the required bandwidth is not that much). These are the main reasons why I don't like IRC very much.
As already stated, I was a fan of mailing lists. Mailing lists are channels to which users have to register in order to receive mails. Then users can drop an email to this channel (that is nothing more than a special e-mail address) and all other users registered to such channel will get the mail into their inbox. It is easy to use, it is safe (email travel as pure text), you are sending a message to anyone who is registered (so chances are someone will read your message) and have to just wait for a reply. Moreover, configuring a right set of filter will allow you to manage a ton of e-mail easily. Last but not least you are getting a reply from a valid user behin a valid e-mail address, so you can contact such user directly. This is wrong since you should try to keep the knowledge on the mailing list, so that it is shared and is not something private, but gives you the chance to directly connect to someone else.
Forums are something very popular, that I start used when working behind a stupid firewall blocking my mailing list accounts. Forums can be very good if they provide very technical and constrained topics and if the moderators are doing their job. Moreover, I found that forums that gives you badges as indicators of how much/how often/with which quality you do the forum are attracting developers and committers, that usually are proud of their public image compared to other people. Another aspect of forums is that they tend to be less traffic bloomed than mailing lists, and therefore are the good place for mid-to-advanced users.
To recap, I suggest you to use forums and mailing lists as often as possible and in the correct way: please specify always the system and properties of the context you are working on, the problem you have, the solution you have tried, and any other detail that can help people solving your problem. Remember that on any channel people are volunteers that are donating their free time to you. The best you can do, is to make sure you are not wasting their time!

PGDay 2012: on-line il programma dell'evento

E' disponibile il programma del PGDay 2012 che si svolgerà il 23 Novembre a Prato, nella sede storica di questo evento diventato ormai tradizione nella comunità nazionale (e internazionale) di PostgreSQL.

sabato 13 ottobre 2012

Sysadmin panics...per ridere un po'!

Nel mio lavoro ho conosciuto degli amministratori di sistema, o presunti tali, di un po' tutte le razze. Qualche giorno fa ricordavo, assieme ad un mio amico, alcuni degli episodi piu' divertenti che mi sono capitati lavorando con alcuni sysadmin di dubbia competenza.

Liberare spazio su disco? Fai un reboot!
Una volta un sysadmin si mostrò stupito del fatto che, nonostante avesse forzato un reboot di un server (con ovvio downtime della macchina) lo spazio disco non fosse aumentato. Io francamente mi sarei stupito del contrario! In effetti, tralasciando /tmp (che dovrebbe essere sempre montato a parte), che potrebbe essere pulito da un qualche job allo shutdown o all'avvio, o potrebbe anche essere un filesystem di memoria, non vedo per quale motivo un reboot dovrebbe pulire dei file dal disco. E in effetti se fosse così i nostri dati sarebbero in forte pericolo! Inoltre, anche ammettendo che un processo impazzito stia riempendo log su log, i dati scritti dovrebbero essere persistenti (concetto forse sconosciuto al sysadmin in questione), e quindi il reboot della macchina potrebbe solo avere l'effetto di fermare il processo impazzito (e far impazzire gli utenti nel mentre che la macchina si arresta!).

Account scaduti? Si ricreano a mano!
Un requisito secondo me fondamentale di un sysadmin è la capacità di automatizzare i task ripetitivi. Non importa molto con quale tecnologia e linguaggio, sia Bourne Shell, sia Perl, sia Python, sia Groovy, la cosa fondamentale è che si sia in grado di far fare alle macchine le cose piu' ripetitive e noiose. Eppure ancora ci sono persone che si fanno pagare per il tempo che perdono a inserire manualmente dei dati. Capitò allora che una serie di oltre cento account fossero stati disabilitati per un bug. Ebbene conosco un sysadmin che si è messo in un cantuccio ad inserire, una ad una, le password degli utenti (il fatto che si sappiano le password è un'altra questione...). Se si considera che ogni password va inserita due volte, considerando anche qualche errore di battitura, si capisce benissimo l'ammontare del tempo perso, ovviamente a carico del cliente.
Il primo programma Perl che scrissi per la generazione e manutenzione di grosse moli di account risale al 2003, lo usavo per gestire alcuni laboratori all'università. Nel 2006 ne scrissi uno per un provider di posta, e nel caso di cui sopra, mosso a compassione, ne scrissi uno in meno di 20 minuti per ripristinare tutti gli account disabilitati.   

Router? Gateway? Sono solo numeri!
Ho assistito in diretta al blocco di un intero segmento di rete causato da un sysadmin forse un po' troppo frettoloso che decise di dare un indirizzo IP pubblico al proprio computer per testare la connettività. Peccato che si diede l'indirizzo IP del router, causando un "panico" sul gateway e facendo si che il proprio computer si trasformasse in una sorta di sniffer del poveraccio!

giovedì 11 ottobre 2012

My private library (a part of it)

A part of my computer science collection of books (yes, I've read all of them at least twice!).
If you are interested in a particular book, please drop me an e-mail.


The book that changed my (developer) life

It is "Programming Perl", by Larry Wall and Randal Schwartz. It changed my developer life for two main reasons.
The first reason is that I read the ugly and horrible italian translation, and I found so many errors, typos and code mistakes that learning Perl became a real adventure with such a book. Therefore, it changed my life because it was the book that made me switch to English only tech books. They are the most up-to-date and do not contain silly translation errors.

The second reason is that it showed me how beauty and nice programming can be. It was not tied to Perl itself, but the way the authors were expressing the language. They were showing to the world how they loved programming, how fun can be to automate tasks and to administer complex systems.
Today I appreciate only books by authors that can show me how beauty a technology is, and not those authors that try to simply explain how to use it. I can read the manpages for that!

Emacs shell e sequenze di escape

Se non si e' ancora usato il comando M-x shell è ora di provarlo! In sostanza viene aperta una shell (con in default un terminale di tipo "dumb") direttamente dentro ad Emacs. Il problema è che questo terminale non interpreta correttamente le sequenze di escape che fanno apparire il testo colorato nell'output dei comandi, come ad esempio ls:


E' possibile migliorare l'aspetto dicendo ad Emacs di "interpretare" le sequenze di escape mediante la funzione ansi-color-for-comint-mode-on (e la sua duale -off che disattiva questo comportamento). L'output del terminale verra' quindi interpretato correttamente come in una "normale" shell.



Per avere il comportamento abilitato in default occorre lanciare la funzione di cui sopra come hook per il modo shell.


mercoledì 10 ottobre 2012

Emacs: creating PHP getters and setters easily

Following the initial work on the GNU Emacs and PHP class generator,  I developed a lisp function to create the getter/setter methods, and since I was developing, I thought it would be much more powerful to have the definition of the whole property. The function php-prop does all the stuff: it prompts the user for a property name (that is the name of the internal variable) and for an optional comment to place on the property. After that the function places a private property at the cursor current point, and then scans the current class for a getter and a setter for the same property. If one or both of the previous methods are not found, the function generates the code for them at the very end of the class. The function also places comments in doxygen format using also the current username and e-mail (that have to be set in the Emacs configuration). 
Loading the function allows you to insert a PHP property just hitting M-x php-prop.

domenica 7 ottobre 2012

Emacs PHP class template generator

I use GNU Emacs as my default for a lot of stuff, including developing in PHP. Unluckily the great php-mode does not include a lot of common stuff to handle with OOP PHP programming. So I decided to develop a PHP class template generator, a lisp function that prompts for the class name (that will be capitalized and will be stored in a file with the same name) and for an optional comment, and then generates a class skeleton in a new buffer, saving the result to a file. Actually there are two versions of the function, the base one php-class executes the other php-class-in-path with the current working directory as path. The path is used to let Emacs know where to save the new buffer. In both cases, if a file with that name is already existent, the function aborts.
Therefore, calling M-x php-class and inserting a class name will make a new buffer appearing, with the class skeleton and a new file with such class will be saved.

venerdì 5 ottobre 2012

Geek Moms....si salvi chi puo'!


Solitamente non perdo il mio tempo per leggere e commentare notizie relative alle affiliate delle "Girl Geek Dinners", ma ieri sono incappato in un articolo che ha veramente scatenato la mia ira e il mio disgusto.
Anzitutto occorre fare una precisazione: possedere uno smartphone o un tablet e passare il proprio tempo navigando in Internet (ops, sarebbe piu' corretto sul Web!) o trovando un ristorante con un qualche servizio di ricerca geolocalizzata non fa assolutamente di una ragazza una Geek Girl. Di fatto queste ragazze sono quelle che comunemente vengono denominate "fighette da brodo", ma questa nomenclatura non e' "cool" e quindi se ne sono cercata una che fosse ben piu' attraente, e da qui il nome "Geek".
Di fatto pero' molte (non dico tutte) di queste ragazze non ha nemmeno chiaro cosa si intenda per Geek. Il Geek e' di fatto una persona "strana", fuori dal comune e che coltiva hobby, spesso intellettuali (come informatica e matematica), con enorme attaccamento.
Si noti quindi come (i) un geek non e' per forza legato all'informatica e (ii) un geek sia fuori dal gregge comune, cosa che invece queste GGD non sono, tutte uguali con il loro smartphone in mano, tutte uguali e iscritte a Twitter, tutte uguali e cosi' "Web 2.0".
Care ragazze, documentatevi un po' di piu'!
E si, lo so, ho opinioni molto forti, ma sono fatto cosi'.


Ma e' ora di prendere in esame l'articolo che ha scatenato la mia ira: un articolo che parla di come una "Geek Girl" possa trasformarsi in una "Geek Mom".
L'articolo comincia gia' con una cosa che francamente mi fa ridere:


           Un giorno sei seduta al tavolino di un bar alla moda, a sorseggiare Martini e twittare dall’evento social del momento, il giorno dopo ti ritrovi a scaricare la app iPregnancy e dosare le 2 unità alcooliche che ti sono concesse in un mese segnandotele su iCal.


Certo! Perche' requisito fondamentale della Geek Mom e' di essere cosi' rimbambita da non riuscire nemmeno a ricordarsi quando puo' bere in gravidanza e da necessitare di scaricare delle app (ovviamente su iPhone, perche' quello e' da Geek!) apposite. Cara mamma geek, non sarebbe piu' "cool" non bere proprio in gravidanza? Sai quanti megabyte risparmieresti sul tuo iPhone senza bisogno di una app che ti ricordi quando puoi bere se decidi di non bere proprio?


Il cuore dell'articolo e' poi basato su 10 semplici punti (tanti quanti i comandamenti!) che ogni mamma dovrebbe seguire per rimanere Geek. Mi si conceda di distruggerli uno ad uno.


   1. prima di tutto non lasciare che le nausee e il giro-vita scomparso ti tolgano il piacere dello shopping online. [...] Punta su un bestseller come un Midi Ruched Dress e potrai frequentare tutti i Camp che vuoi sentendoti sexy e cool;


Io non sono un esperto di vestiti da donne, figuriamoci di vestiti da mamma. Pero' sono abbastanza esperto di shopping on-line, e francamente penso che un sano shopping real-life sia meglio in un caso del genere. Intanto perche' e' piacere di molte mamme mostrare il loro pancione; l'attivita' e' sicuramente piu' salutare e piu' sociale, per definizione. Senza quindi togliere nulla allo shopping on-line, lasciamolo solo per i casi realmente necessari.
Fermo restando che lo shopping di indumenti on-line e' per sua natura fortemente rischioso gia' in momenti in cui il fisico mantiene la taglia e la forma, figuriamoci nel periodo di una cosi' sostanziale rivoluzione fisica!


  
   2. [...] naviga tra le recensioni delle altre geekmom alla ricerca dei prodotti che hanno passato il test della vita quotidiana di donne esigenti come te


Beh, effettivamente questo sembra anche un buon consiglio...aggiungerei che anche l'esperienza della propria madre puo' aggiungere valore alla scelta. Dopotutto chi meglio dei tuoi familiari puo' aiutarti a decidere come rivoluzionare la tua vita?


     3. [...] un bel blog anonimo e defilato è un ottimo spazio per sfogarti e buttare fuori tutti i tuoi pensieri più oscuri su gravidanza e maternità, prima che la negatività ti rovini la vita;


Ma per carita'! Quale sarebbe lo scopo? Fornire uno spazio privato di sfogo alla mamma schiacciata dalla negativita' della vita (quale negativita' poi...)? Allora che la mamma si attrezzi con strumenti informatici realmente privati. A che scopo tenere un blog se nessuno lo deve leggere? Sprecare un po' di banda e pagare una connessione per postare informazioni riservate? Oppure si vuole che il blog sia letto, e allora il fatto che sia anonimo e' tutto da dimostrare...


   4. evita come la morte i forum di mamme [...]


Certo, leggi le recensioni sui siti indicati ai punti precedenti, ma evita i forum di mamme! Dopotutto i forum sono proprio spazi di discussione e di confronto, molto meglio un blog autoritario dove l'autore abbia sempre ragione! E poi se sui forum c'e' il rischio di trovare informazioni sbagliate, sui blog o i siti con recensioni questo rischio non c'e'. O forse si?


       5. usa Twitter. Spesso e volentieri. [...] Il bello del cinguettare è che puoi farlo in qualsiasi momento, anche mentre sei in attesa dell’ecografia, mentre ti tiri il latte alle 3 del mattino, ma soprattutto mentre dondoli la culla aspettando che il pupo si addormenti. Essere immersi in una conversazione intelligente é sempre una panacea;


E ti pareva che non saltava pure fuori Twitter? Certo, usa uno strumento che ti ruba perfino il diritto intelletuale del materiale che pubblichi. E perche' non anche dei social network? Chissa' come sara' fiero il vostro bambino di sapere che mentre vi tirate il latte per lui lo scrivete pure su Twitter!
Sia chiaro, ognuno e' libero di passare il tempo come vuole. Ma non e' detto che il resto del mondo sia interessato a come lo passate voi. Ragionate su questo prima di cinguettare...
E se e' vero che una sana e intelligente conversazione e' cosa molto utile e stimolante, tenere una simile conversazione via "messaggini" e' una cosa che di intelligente ha ben poco.


     6. [...] Nell’anno successivo al parto avrai molto bisogno di aiuto per ricordarti le cose, usa Remember the milk con perizia e forse non ti dimenticherai di ritirare la roba in lavanderia


Ma la mamma che scrive e' sponsorizzata da siti e applicazioni? Perche' consiglia in continuazione prodotti per risolvere problemi quando potrebbe proporre tecnologie al loro posto.
Perfino una lavagnetta vicino al frigorifero potrebbe essere utile allo scopo!
E francamente, ricordarsi le cose e' importante sia prima che dopo il parto, e' importante anche per i maschi che mai partoriranno, e avere uno strumento che li aiuti a fare mente locale (si, perfino la volgare ma molto elegante agenda cartacea) e' quasi indispensabile.


        7. nessuno a parte tua madre (che probabilmente non naviga in Internet) vuole vedere una timeline invasa di foto della creatura o update di spessore come “oh, un altro rigurgito!”. Se senti il bisogno di postarne a oltranza usa il blog anonimo al punto 3


Verissimo! A parte che mia  madre naviga in Internet (ops, sarebbe piu' corretto "naviga sul Web", ma Internet e' piu' "cool" del "Web"...) e comunque non vuole vedere la mia timeline invasa da foto o aggiornamenti.
Anzitutto un avviso importante: pubblicare sul Web informazioni sulla propria famiglia, ivi incluse foto di figli, apre le porte a milioni di sconosciuti. E fra questi potrebbero esserci dei malintenzionati. Non si resiste veramente alla voglia di pubblicare qualcosa? Lo si faccia in modo "Geek", con messaggi nascosti o da decifrare.
Inoltre, se al mondo non interessa vedere aggiornamenti sul rigurgito del proprio figlio, perche' dovrebbe interessare avere aggiornamenti su quando la mamma tira il latte alle 3 di notte come specificato al punto 5?


         8. usa il tuo smartphone per intrattenere i bimbi quando siete in viaggio o in attesa di una visita medica [...]


Parzialmente corretto. Ma si rischia di dare l'abitudine al proprio figlio di giocare solo con giochi virtuali. Che fino ha fatto la sacra "macchinina" che il bambino puo' far correre lungo il corridoio dell'ambulatorio medico?
Da notare anche che, mentre una macchinina o una bambola, seppur occupino piu' spazio nella borsa, hanno un costo solitamente piu' contenuto di uno smartphone. E da notare anche che solitamente i bambini tendono a gettare o a scambiare con
altri bambini i propri giocattoli. Se ne traggano le conclusioni.


      9. imposta i meccanismi di blocco sui tuoi device touchscreen, i tuoi bambini saranno in grado di usare smarphone a tablet già dall’anno di età (l’abbiamo provato sulla nostra pelle) e ti conviene essere preparata!


In questo modo, il bambino arrabbiato per non riuscire ad aprire la app-gioco che la mamma gli ha propinato tutta la mattina dal dottore, scagliera' il dispositivo contro la parete all'estremita' della stanza...
Scherzi a parte, i dispositivi touch sono stati usati per ricerche scientifiche complesse dimostrando come anche la capacita' di comunicazione e apprendimento (delle gesture) delle scimmie tragga beneficio.
Solitamente pero' un semplice "riporre i dispositivi fuori dalla portata dei bambini" funziona. Ed e' anche un consiglio riciclabile per tutte quelle cose non-geek come i medicinali e i detersivi!


            10. la rete è popolata di ogni genere di geekmom, dalle talebane del latte alle mamme in negazione, dalle fan del maternage alle post-femministe, naviga fino a che non trovi le compagne di viaggio con cui ti senti più a tuo agio. Conquisterai alleate preziose, tutte a portata di click.


La rete e' anche popolata da professionisti seri, che possono dispensare consigli utili a condurre la gravidanza. Io francamente comincerei la ricerca da quelli, e lascerei la ricerca di compagne di viaggio a spazi tridimensionali.


Possibile che nei "10 comandamenti" di cui sopra, non si menzioni la forte capacita' del Web di intrattenere con contenuti culturali? Perche' la mamma geek deve rimbecillirsi scrivendo un blog dal dubbio scopo, postando su Twitter alle 3 di notte (ma per carita' non quando il bimbo rigurgita!) o facendo shopping on-line di vestiti sperando di indovinare la taglia?
Il riassunto di tutto questo articolo potrebbe essere quindi che una mamma puo' trarre beneficio dal Web e dagli strumenti di oggi per meglio organizzarsi, ma stando attenta a non incappare in notizie fasulle e fuorvianti e senza rompere le xxx al mondo intero ogni volta che le capita qualcosa.
E se si sta pensando che in fondo si sapeva gia' tutto questo, allora si condividera' la mia idea sulla inutilita' del suddetto articolo.



Care Girls, volete essere Geek? Allora cominciate a stimolare il vostro cervello, non a masturbarlo!


Queste sono le mie considerazioni, considerazioni di una persona che si definisce un quasi hacker.
Considerazioni di una persona che e' cosi' geek che va in vacanza con un libro (cartaceo) sui driver Unix.
Considerazioni di una persona che "naviga il Web", non Internet.
Considerazioni di una non-mamma per ovvie ragioni di sesso.


Ci vediamo su un qualche forum stimolante, dove posso passare da "Ant Farmer" a "Robot Herder" per la qualita' dei miei contenuti.
O su IRC.
Ah gia', non e' abbastanza geek per voi!
E per fortuna!

giovedì 4 ottobre 2012

Emacs Dataflex Major Mode

I don't believe there are many Dataflex programmers nowdays, I mean Dataflex for command line (not Visual Dataflex) developers. I had the fortune to torture myself in a previous job working on such an old language, that has some interesting things, but a very rudimentary syntax and approach. Anyway, as usual, I typed most of my code using Emacs, my favorite editor, that unluckily does not support Dataflex (again, this is the proof Dataflex developers are a few!). Even if nowdays I do not more develop using Dataflex, I decided to do a lisp excercise and start implementing a major mode for Emacs to give a little more support to the poor developer that has to maintain a Dataflex code base.
The mode is still a young creature, and I don't even know if I'm going to finish it, since I have to develop it in my spare time and to aim a problem I don't even have anymore! So far there is a small sintax highlighting (first picture) and comment support via the usual M-; (second picture), including comment out a whole region (third and fourth pictures).