Informatica

Internet, la mala informazione, l’ignoranza globale: alcuni esempi

(Si, ogni tanto ritornano, contrariamente a quanto pensa Lonestar :P)

Ho bisogno di scrivere questo post qui dopo che il mio feed Facebook e’ stato inondato di gente adirata per le ultime notizie Instagram, (si anche Palo Attivissimo c’e’ cascato, per poi correggersi)
Aggiungetevi tutte le cazzate che ho letto su Informare per Resistere e giu’ di li’ ultimamente. (A proposito, ho fatto un-follow da mo’ perche’ non li potevo sopportare piu’), o anche il recente episodio con dei venditori porta a porta avuto ieri (in cui dovevo decidere se fare lo switch al loro servizio da un altro operatore DAVANTI ALLA PORTA, senza potermi sedere a tavolino a farmi i miei conti) e il mio livello di frustrazione deve sfogare da qualche parte 😀

Uno dei problemi del mondo moderno e’ che man mano che diventa piu’ facile accedere alle informazioni il rischio di accedere a mala informazione o informazione incorretta (in buona o cattiva fede) aumenta considerevolmente, se il tutto e’ poi alimentato da una buona dose di ignoranza, pigrizia nel leggere, o semplicemente dal fatto di come il cervello umano funziona capite bene la portata del problema…

Mi direte: «Ci sono problemi ben piu’ gravi al mondo: genocidi, guerre, fame, poverta’, corruzione, etc», e vi do’ ragione, ma sono convinto che quello il problema sopra non debba passare come una frivolezza, perche’ ci sono casi in cui mala-informazione, o disinformazione (chiamatela un po’ come volete) puo’ avere effetti anche importanti sulle nostre vite (pensate alla disinformazione fatta da governi piu’ o meno corrotti etc).

Tutto nasce dal solito giornalista incompetente che, vuoi perche’ deve portare la pagnotta a casa, vuoi perche’ e’ pigro, vuoi perche’ non sa leggere l’inglese, scrive uno di quegli articoli sui vari blog, testate giornaliste online piu’ o meno autorevoli, affermando una qualsiasi supposta verita’ (naturalmente completamente distorta), normalmente tutto cio’ e’ fatto in buona fede, o a volte la informazione e’ volentemente  . E li e’ tutto un giro di share sui social networks e nella societa’ in generale.

L’articolo ha normalmente un titolo ad effetto (di solito completamente deviante dalla verita’), il corpo dell’articolo prende una via completamente diversa dal titolo e di norma da’ una interpretazione ambigua di quello che afferma la fonte ufficiale, aggiungete che un mucchio di gente ignorante (o forse solo pigra) si ferma a leggere i solo titolo o le prime due righe/paragrafi per farsi una idea dell’intero articolo (a proposito, lo sapevate che c’e’ un studio che afferma che la maggior parte della gente si ferma a leggere le prime 3 frasi di un articolo e poi abbandona?). La stessa gente poi posta commenti, shara sui social networks, altri ci cascano perche’ seguono la stessa logica.

Si possono vincere elezioni cosi’, processare ingiustamente qualcuno, far calare azioni in borsa (succede specie dopo IPO :P), far crollare business insomma.

Veniamo al caso specifico: Instragram (d’ora in poi IG): la gente e’ adirata per le recenti modifiche alle condizioni d’uso (d’ora in poi ToS) perche’ “Instagram vendera’ le nostre foto!!!”. Alcune considerazioni:

  1. IG non fa benficenza
  2. IG rimane un servizio gratuito
  3. Per salvare foto di milioni di utenti, servirle a tutto il mondo, e processarle ci vogliono i $$$
  4. L’unico modo per assicurarsi una pipeline di revenue e’ usare le pubblicita’
  5. La gente non sa leggere i documenti legali (la ToS e’ chiara in quel senso, la proprieta’ delle foto rimane degli UTENTI, IG si riserva solo il diritto di USARE le vostro foto all’interno di IG stesso per fini publicitari, notare che USARE le foto all’interno del sito stesso e’ DIVERSO dal venderle ad enti esterni
  6. Anche solo il pensiero di vendere foto IG e’ ridicolo, le foto sono cosi’ a bassa risoluzione che e’ ridicolo pensare che possano essere vendute, NON E’ POSSIBILE NEMMENO STAMPARLE IN FORMATO A4 😀

La ToS e’ qui: http://instagram.com/about/legal/terms/updated/ (notare le note in rosso messe da me)

  1. Instagram does not claim ownership of any Content that you post on or through the Service (ndr: IG non ha la proprieta’ delle vostre foto che rimangono vostre). Instead, you hereby grant to Instagram a non-exclusive, fully paid and royalty-free, transferable, sub-licensable, worldwide license to use the Content that you post on or through the Service, except that you can control who can view certain of your Content and activities on the Service as described in the Service’s Privacy Policy, available here: http://instagram.com/legal/privacy/.

  2. Some or all of the Service may be supported by advertising revenue (ndr: per campare e hostare le vostre foto di merda dobbiamo pur prendere qualche soldo). To help us deliver interesting paid or sponsored content or promotions, you agree that a business or other entity may pay us to display your username, likeness, photos (along with any associated metadata), and/or actions you take, in connection with paid or sponsored content or promotions, without any compensation to you (visto che non paghi il servizio tu acconsenti affinche’ alcune entita’ terze possano pagarci per ***VISUALIZZARE** il tuo username, likes, foto e le azioni che fai in connessione all’interno di contenuti pubblicitari, notare che non vuole dire vendere le vostro foto :P). If you are under the age of eighteen (18), or under any other applicable age of majority, you represent that at least one of your parents or legal guardians has also agreed to this provision (and the use of your name, likeness, username, and/or photos (along with any associated metadata)) on your behalf.

  3. You acknowledge that we may not always identify paid services, sponsored content, or commercial communications as such.

La gente semplicemente non capisce il business model delle .com …

In sostanze se non siete d’accordo potete pure disiscrivervi e cercarvi un altro spazio, che all’inizio sara’ esente da questa mentalita’, fino a quando non diventera’ cosi’ grosso da dover trovare modi per sostenersi, e risarete punto e a capo 🙂
Oppure se siete competenti scrivetevi voi il vostro Instagram e compratevi voi storage, server, e usatelo fra i vostri amici nella vostra bella isola internet non integrata col resto del mondo 🙂

Approfondimenti interessanti

 

 

Che futuro ci dobbiamo aspettare?

Salve lettori, (a proposito: c’e’ ancora qualcuno che legge?)

Qualche giorno fa sono stato colpito da questo articolo che ho letto su Slashdot sulla sezione “ask Slashdot”. Il titolo mi ha attirato immediatamente: “Sono troppo vecchio per imparare un nuovo linguaggio di programmazione?”.

La domanda se la pone un lettore di Slashdot, un quarantenne con 25 di anni di esperienza lavorativa alle spalle. La domanda in se’ non e’ tanto originale: d’altronde chi tra di noi non si e’ posto gia’ simili domande? Quello che mi ha colpito e’ il primissimo commento di un tale che riporto qui per la cronaca, anche per non perderlo (magari tra 10 anni mi ricapita di rileggerlo per vedere se la profezia si e’ avverata):

I’m 55, a programmer, and I’ve been out of work for two years. I’ve had plenty of interviews, but no job offers. Here’s my take on all of this: I’m too old to be a programmer. I’ll put my “management hat” on and tell you why:

1. I’m old. One 5 hour energy drink revvs up your basic 20 year old code monkey all day. I need a saline drip with caffeine in it all day to keep going.
2. I’m expensive. I have 30 years of experience in the ‘biz and a masters degree in CS. I’m not cheap. You could hire two 25 year olds for what I’m asking.
3. (and what I consider to be my greatest failing in the corporate world) I’ve seen all the tricks. I’ve been exposed to every nasty little mindgame management has at it’s disposal. And sometimes I have the bad manners to call people on it. This is called “having a bad attitude”.

So when I compete against 20-somethings in the worst economy since 1929 (I hesitate to say the worst economy ever), I lose. I should have made the leap to management when I had the chance, not because I would have loved management (I would have had to manage assholes like me, after all ;), but because at 40 you have TWENTY YEARS LEFT. The years go by really, really fast. You should really start thinking about a soft place to land when you’re 60 now, because if you aren’t in line to be a VP or a Director you ain’t gonna make it at this point.

The suggestion to “Follow Your Bliss” only works in an economy that’s not run by sociopaths. Hell, it only works in a country that’s not run by sociopaths. Strike one strike two. Tighten your belt, put as much money away as you can, and make sure you keep your health up. Because the era of “company loyalty” is over, COBRA for a family costs as much as your mortgage, and finding a new job is going to be a real challenge.

Other than that, have a nice day! 😀

L’autore del commento, ma anche qualche altro commentatore piu’ sotto nei commenti, pare vedere nella carriera manageriale l’unico sbocco che un 40enne possa vedere nella sua carriera. Voi che ne pensate?

Io ci ho rimuginato sopra ultimamente anche complice un periodo di pensieri attorno alla senilita’ in cui mi ritrovo, in questi due anni ho assistito ad alcune scene poco piacevoli che hanno coinvolto amici stretti e non che mi hanno ricordato che la nostra vita non e’ infinita.

L’articolo e i commenti dei lettori sono un grande input a riflettere sul futuro, almeno nella sua sfaccettatura lavorativa.

Sono ancora nei 20-something per poco e lavoro da quando ne ho 18, con buoni risultati solo negli ultimi 5 anni. La mia carriera professionale migliora ogni anno che passa (dovrei scrivere un articolo sui miei primi 6 mesi in Facebook e probabilmente lo faro’ quanto prima), mi trovo in uno dei migliori ambienti lavoriativi dove un informatico possa ritrovarsi.

Della capacita’ di imparare non mi preoccupo tanto, penso che il giorno in cui finiro’ di imparare mi potro’ considerare morto:sono sempre stato in grado di andare avanti da autodidatta e ho sempre trovato interessi e cose da imparare, anche aldila’ dell’informatica (fotografia, arte bianca, cucina, etc), e sinceramente benedico il giorno che ho deciso di lasciare l’universita’.

Non credo di aver problemi a ritrovarmi 40-enne in mezzo a un mondo di 20-enni, almeno non credo sara’ un problema mio, magari il problema sara’ loro, dei 20-enni che si sentiranno a disagio a lavorare con un 40-enne intendo…

Per quanto riguarda la carriera manageriale, non so, non ci sono portato, ne mai ci saro’, sono un tecnico, mi piace sporcarmi le mani coi problemi pratici invece di dire alla gente quello che deve fare, o assicurarsi che lo facciano, o mettermi nel politichese.

La scorsa settimana a lavoro ci hanno fatto fare un test attitudinale per trovare i maggiori 5 punti di forza in ogni componente del nostro team. La cosa interessante che abbiamo notato in tutti noi e’ che siamo un gruppo molto basato sul data analysis, learning driven, e tutto il resto, ma con poche doti comunicative o comunque altre doti di public relations, la cosa molto simpatica e’ che il nostro manager ha avuto un risultato completamente opposto, meno tecnico e molto piu’ comunicativo.

In piu’ lavoro in una societa’ molto engineering-centric e molto orizzontale, i manager ci sono, ma sono dei semplici mediatori, le decisioni vengono lasciate ai tecnici, e piu’ che altro essi funzionano come scudi o punti di contatto quando e’ necessario buttarsi nel politichese aziendale. Io  vedo un futuro da technical specialist. Ma non so, si vedra’.

Ci sono anche posizioni di mezzo tipo team/tech leader o senior engineer in cui ti sporchi ancora le mani ma nello stesso tempo sei buttato in mezzo a riunioni dove si decide che percorso prendere, oppure devi dirigere un team di engineers.

Penso che l’incertezza vada combattuta con diverse azioni strategiche:

  • migliorare la propria capacita’ di risparmio (visto che probabilmente non ci sara’ una pensione adeguata per noi lavoratori del presente);
  • ottimizzare le spese;
  • vedere un piano pensione? qualcuno dei lettori sa consigliarmi in questo merito?
  • concentrarsi in campi dove la domanda e’ grande ma dove le competenze sono difficili da trovare, in modo tale da avere poca concorrenza;
Chissa’ come saro’ messo da qui a 10 anni. Saluti e buon ferragosto, io lo passo sul divano scrivendo quello ceh avete appena letto e a guardare la TV aspettando le ferie che inizieranno il 26 Agosto 😛

Highlight text on the fly thanks to terminfo and sed.

A colleague today was looking for a way to pipe something to a command that highlights particular strings of text, keeping intact the stdin, similar to what you can see on some modern distros, ie Gentoo.

Grep is not the way as it only prints the lines which contain the pattern that we are looking for.

While there are a bunch of tools that can do that, like supercat, etc. I felt no need to install additional packages for something you can do with few lines of bash and knowing terminal capabilities.

Therefore I wrote this small script, put it in the PATH env variable. The script uses sed and makes use of the terminfo database and of the terminal capabilities to color the text, here it is in case you find it useful:

#!/bin/bash

red=$(tput bold;tput setaf 1)
normal=$(tput sgr0)

while read line; do
  echo $line | sed -e "s/\($1\)/$red\1$normal/"
done

If you don’t like red just read `man tput` and read this link about terminal codes.

Interested in doing anything to your PDFs beyond reading and annotating?Use sodapdf editor to make updates such as adjusting content, layout, margins, and more.

Example of usage:

It also accept regexps (in sed syntax, not perl syntax), for example:


$ sudo tail -f /var/log/system.log | highlight [Ss]potify

RSS-Bot

Ho scritto questa cazzata un po’ di tempo fa a lavoro nel tentativo (non riuscito) di migliorare un po’ di comunicazione interna intra-dipartimentale e rendere l’azienda un posto piu’ geek dove lavorare. Serviva un luogo dove tutti potessero stare per lavorare insieme a delle robe, con un bot che stampasse nei diversi canali ticket di nagios, jira e altre robe basate su RSS feed. Non doveva essere ne’ Skype, ne’ qualcosa XMPP based (perche’ le stanze in XMPP sono un casino da creare). Ho proposto il classico server IRC + questo bot. Cosa c’e’ di meglio di IRC? 😀 La proposta non e’ stata recepita ovviamente…

Magari a qualcuno serve e/o puo’ prenderci spunto per fare qualcosa di migliore o diverso ma sempre basato su irc, ho messu su un po’ di codice (non che sia poi il massimo) sul mio GitHUB a questa URL.

Il bot legge un file YAML dove si possono specificare una serie di feed rss che poi possono essere associati a piu’ canali, in modo tale che quando qualcosa di nuovo viene postato su un feed il bot printi un summary su ogni canale a cui e’ associato.

Il codice e’ molto basic, giusto un proof of concept che ho messo su’, e non vuole essere niente di performante, infatti dopo un po’ di feed le prestazioni fanno un po’ schifo 😀

Immagino che per tanti feed tocchi passare ai thread. Magari glieli aggiungo, oppure magari provo a farlo in Python visto che sto imparando…

Uso un CPAN module chiamato Bot::BasicBot, basta solo estendere la sua classe e implementare il proprio codice per avere qualcosa di basic.

Alla prossima

Setting up WordPress Multisite on Debian 5.0 (lenny)

This post explains how to install WordPress 3.x on a Debian lenny and to set up a multisite installation on your Debian server.

All the blogs will log into the same file /var/log/apache2/access.log; the first column will be the blog host and port (see the LogFormat configured below).

This chapter is based on information collected at http://codex.wordpress.org/Create_A_Network and in /usr/share/doc/wordpress/README.Debian.

All WordPress blogs will use the same shared PHP code in /usr/share/wordpress.

Assumptions

  • Main website will be http://domain.com
  • Blogs will be under http://${blogname}.domain.com

File uploaded into the main blog (www.domain.com) will be stored in /srv/www/wp-uploads/domain.com/%year/%month/

Files uploaded into the *.domain.com blogs will be stored in /usr/share/wordpress/wp-content/blogs.dir/${blog_id}/files/%year/%month/, where ${blog_id} is the numeric id of the blog, as managed by the Multisite feature.

Configuration of Debian lenny-backports repository and installation

WordPress 3.x is not in lenny so we have to use the backport repository.
Excute this as root:

echo "deb http://backports.debian.org/debian-backports lenny-backports main" >> /etc/apt/sources.list

cat < /etc/apt/preferences
Package: *
Pin: release a=lenny-backports
Pin-Priority: 200
EOF

apt-get update
apt-get -t lenny-backports install wordpress

Installation of non free swf plugin

As stated in /usr/share/doc/wordpress/README.Debian WordPress originally comes with a Flash-based tool that allows to upload files. However, that tool violates the Debian Policy, as stated in the
bug #591195. That is why this tool is not shipped with the Debian package anymore. If you want to enable this feature, you need to install the Flash file yourself with the following command:

   
wget -O /usr/share/wordpress/wp-includes/js/swfupload/swfupload.swf http://core.svn.wordpress.org/branches/3.0/wp-includes/js/swfupload/swfupload.swf

Configure your DNS server

Add the following records in your zone (I suppose you know how to deal with your DNS zone):

; wp multisite
$ORIGIN        IN A       ${IP}
www            IN A       ${IP}
*.domain.com.  IN CNAME   www

Apache configuration

Configure the vhost_combined log format in /etc/apache2/apache2.conf modifying the default one:

   
LogFormat "%{Host}i:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined

Configure apache in /etc/apache2/sites-available/wordpress-multisite :


UseCanonicalName    Off

ServerAlias *.domain.com domain.com
ServerName www.domain.com
DocumentRoot /srv/www/domain.com/

Options All
ServerAdmin you@domain.com

# Store uploads of www.domain.com in /srv/www/wp-uploads/$0
RewriteEngine On
RewriteRule ^/wp-uploads/(.*)$ /srv/www/wp-uploads/%{HTTP_HOST}/$1


        Options FollowSymLinks
        AllowOverride All


CustomLog /var/log/apache2/access.log vhost_combined

# this is needed when activating multisite, WP needs to to a 
# fopen("http://randomname.domain.com") to verify
# that apache is correctly configured
php_admin_flag allow_url_fopen on


Configure /etc/wordpress/htaccess:


RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
## uploaded files
RewriteRule ^files/(.+) wp-includes/ms-files.php?file=$1 [L]
## real files dealt directly
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
## other go through index.php
RewriteRule . index.php [L]

Enable the config executing this as root:

a2ensite wordpress-multisite
a2enmod rewrite && a2enmod vhost_alias
/etc/init.d/apache2 restart

Setting some permissions

# required to allow the main site to upload content
chown www-data /srv/
chown www-data /srv/www/

# required to allow subdomains site to upload content
chgrp www-data /usr/share/wordpress/wp-content/blogs.dir/
chmod g+w /usr/share/wordpress/wp-content/blogs.dir/

# required in order to be able to install/update themes/plugins 
# from the webgui (only on the main site)
chown -R www-data:www-data /usr/share/wordpress/wp-content/
chown -R www-data:www-data /usr/share/wordpress/wp-admin/ 

Creating main site

At this stage we can create the main site using this bash script:

bash /usr/share/doc/wordpress/examples/setup-mysql -n main domain.com

This script creates the DB & tables and it also creates a file called /etc/wordpress/config-domain.com.php.

You should end up with the following files:

  • /etc/wordpress/config-domain.com.php
  • /srv/www/domain.com symlink to -> /usr/share/wordpress
  • /srv/www/wp-uploads/domain.com/

Activating Network (aka multisite)

At this stage you should log into http://domain.com and follow the on screen instructions.
Once you are in the backend you can than click into the “Tools -> Network” link and enable the mulsite, this will create some tables in your db and it will ask you to copy&paste some lines into /etc/wordpress/config-domain.com.php:

define( 'SUBDOMAIN_INSTALL', true );
$base = '/';
define( 'DOMAIN_CURRENT_SITE', 'domain.com' );
define( 'PATH_CURRENT_SITE', '/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );

define( 'AUTH_KEY', 'blabla' );
define( 'SECURE_AUTH_KEY', 'blabla' );
define( 'LOGGED_IN_KEY', 'blabla' );
define( 'NONCE_KEY', 'blabla' );
define( 'AUTH_SALT', 'blabla' );
define( 'SECURE_AUTH_SALT', 'blabla' );
define( 'LOGGED_IN_SALT', 'blabla' );
define( 'NONCE_SALT', 'blabla' );

define( 'MULTISITE', true );

# for debugging purposes only
# define('WP_DEBUG', true);

After that you’re ready to go 😀

Logging as super admin and going into the SuperAdmin webgui area you can create new subdomains (blogs), and users, when you can create blogs an email is sent to the owner, you can personalize templates, decide how much storage space you want to assign to every single blog, etc, etc.

At this point you should be able to also install/upgrade plugins and themes straight from the web gui.
Note that define('WP_CORE_UPDATE', false); in your config file will disable the auto update, your wordpress update cycle will be managed using Debian apt tool.

That’s it folks, any question please comment 🙂