tag:blogger.com,1999:blog-75546080231767690172024-03-14T03:29:55.914+01:00Sax AppealMusica e altro. (Musings about music and stuff.)Sax Appealhttp://www.blogger.com/profile/04374547857513573488noreply@blogger.comBlogger224125tag:blogger.com,1999:blog-7554608023176769017.post-19809713734302090522019-10-04T15:43:00.003+02:002019-10-04T15:43:46.974+02:00Frasario romanesco inglese<ul>
<li><b>BREAD TO BREAD, WINE TO WINE</b> - <i>pane al pane, vino al vino</i><br /> </li>
<li><b>WE ARE AT THE SHORT IRONS</b> - <i>semo a li ferri corti</i><br /> </li>
<li><b>I TELL YOU POPELY POPELY</b> - <i>te 'o dico papale papale</i><br /> </li>
<li><b>ARE YOU LOOKING THE HAIR</b>- <i>stai a guardà er capello</i><br /> </li>
<li><b>WHEN IT WANTS, IT WANTS </b>- <i>quanno ce vo' ce vo'</i><br /> </li>
<li><b>BUT MAKE ME THE PLEASURE</b> - <i>ma famme 'r piacere</i><br /> </li>
<li><b>DON'T EXTEND YOURSELF</b> - <i>nun t'allargà</i><br /> </li>
<li><b>NOT EVEN TO THE DOGS!</b> - <i>manco a li cani!</i><br /> </li>
<li><b>BUT WHO MAKES ME MAKES IT</b> - <i>ma chi m'o fa fa'</i><br /> </li>
<li><b>HOW DOES IT THROW?</b> - <i>come te butta?</i><br /> </li>
<li><b>WHO WIRES YOU!</b> - <i>chi te se fila!</i><br /> </li>
<li><b>WHO HAS BEEN SEEN, HAS BEEN SEEN</b> - <i>chi s'è visto s'è visto</i><br /> </li>
<li><b>TODAY IT'S NOT AIR</b> - <i>oggi nun è aria</i><br /> </li>
<li><b>BY FEAR!</b> - <i>da paura!</i><br /> </li>
<li><b>GIVE IT TODAY AND GIVE IT TOMORROW</b> - <i>daje oggi e daje domani</i><br /> </li>
<li><b>PLEASE RE-TAKE YOURSELF</b> - <i>aripijate!</i><br /> </li>
<li><b>STAND IN THE BELL, LITTLE BROWN (DARK)</b> - <i>sta 'n campana, moro</i><br /> </li>
<li><b>STAY BEEF</b> - <i>stai manzo</i><br /> </li>
<li><b>I DON'T CARE OF LESS</b> - <i>nun me ne po fregà de meno</i><br /> </li>
<li><b>WE ARE AT HORSE</b> - <i>semo a cavallo</i><br /> </li>
<li><b>THERE ISN'T TRIPE FOR CATS</b> - <i>nun c'è trippa pe' gatti</i><br /> </li>
<li><b>I'M SO HUNGRY THAT I DON'T SEE</b> - <i>c'ho 'na fame che nun ce vedo</i><br /> </li>
<li><b>GO TO DIE KILLED</b> - <i>vammori ammazzato</i><br /> </li>
<li><b>YOU ARE BASTARD INSIDE</b> - <i>sei bastardo dentro</i><br /> </li>
<li><b>IT DOESN'T MAKE A FOLD</b> - <i>nun fa 'na piega</i><br /> </li>
<li><b>I OPEN YOU IN TWO LIKE A MUSSEL</b> - <i>t'apro 'n due come 'na cozza</i><br /> </li>
<li><b>SPEAK LIKE YOU EAT</b> - <i>parla come magni</i><br /> </li>
<li><b>I'VE MY LEGS THAT ARE DOING JAMES JAMES</b> - <i>c'ho le gambe che me fanno giacomo giacomo</i><br /> </li>
<li><b>GIVE TO THE HEEL, GIVE TO THE TIP</b> - <i>daje de tacco, daje de punta</i><br /> </li>
<li><b>YOU ARE OUT LIKE A BALCONY</b> - <i>stai fori come 'n barcone</i><br /> </li>
<li><b>I LIVE IN HUNDRED CELLS</b> - <i>sto a Centocelle</i></li>
</ul>
Sax Appealhttp://www.blogger.com/profile/04374547857513573488noreply@blogger.com0tag:blogger.com,1999:blog-7554608023176769017.post-56019301760986902682019-06-13T09:55:00.001+02:002019-06-13T09:56:34.915+02:00Zero, thoughThis is a shower thought I will have to research - not a chance in the universe that was I the first to think about this. <br />
<br />
Consider natural numbers as a counting device (and not as, say as an assiomatic system, or as points on line). As such, they are naturally attached units of measure - one pear, six aircraft carriers, two days. And, in set theory you can then take the set of sets having two of something as a definition of the number <b>2</b> (well, not <a href="https://en.wikipedia.org/wiki/Natural_number#Modern_definitions" target="_blank">quite</a>, but almost).<br />
<br />
Zero, though. Of course, one can use zero as a counting device: <i>"I have one apple. I will eat it at lunch, and I will then have zero apples"</i><br />
<br />
The notion of attaching measure units to "zero" (quite natural as you go form one apple to none) becomes rather strange as one considers the process of telling apart sets of equal numbered things.<br />
<br />
Distinguishing between <b>one </b>elephant and <b>one </b>saxophone player is easy enough (assuming empty the set of saxophone playing elephants). What about telling apart zero apples from zero oranges?<br />
<br />
Given an orange, and questioned about apples, I will count to zero, obviously. But, given the same orange, I will count to zero also if questioned about wine bottles, pencils, cars...<br />
<br />
And of course, the notion of "no things" is a gaping void (arh, arh).<br />
<br />
So it looks that zero should be dimensionless - a fact that set theory implicitly acknowledging the <b>empty set</b> as a member and subset of any set, while being unique.<br />
<br />
<br />Sax Appealhttp://www.blogger.com/profile/04374547857513573488noreply@blogger.com0tag:blogger.com,1999:blog-7554608023176769017.post-9147627941689684992018-08-31T10:24:00.000+02:002018-08-31T10:24:06.353+02:00A history of the word "Fuck"Announcer:<br />
<br />
Perhaps one of the most interesting words in the English language today is the word <i>"fuck"</i>.<br /><br />Of all the English words beginning with <i>f</i>, <i>"fuck"</i> is the single one referred to as the "f-word". It's the one magical word: just by its sound it can describe pain, pleasure, hate and love.<br /><br />"Fuck", as most of the other words in English, has arrived from Germany. <i>"Fuck"</i> from German's <i>"fliechen"</i> which means <i>"to strike"</i>. In the English language, <i>"fuck"</i> folds into many grammatical categories.<br /><br />As a transitive verb, for instance:<br /><br /><i>"John fucked Shirley."</i><br /><br />As an intransitive verb: <br /><br /><i>"Shirley fucks."</i><br /><br />Its meaning isn't always sexual: it can be used as an adjective, as in:<br /><br /><i>"John's doing all the fucking work."</i><br /><br />As a part of an adverb:<br /><br /><i>"Shirley talks too fucking much."</i><br /><br />As an adverb enhancing an adjective:<br /><br /><i>"Shirley is fucking beautiful."</i><br /><br />As a noun:<br /><br /><i>"I don't give a fuck!"</i><br /><br />As a part of a word:<br /><br /><i>"Abso-fucking-lutely"</i><br /><br />or: <br /><br /><i>"In-fucking-credible"</i><br /><br />Or as almost every word in a sentence:<br /><br /><i>"Fuck the fucking fuckers!"</i><br /><br />As you must realize, there aren't many words with the versatility of the word fuck.<br /><br />These examples show it used as a synonym the following words;<br /><br />
<ul>
<li>fraud: <i>"I got fucked."</i></li>
<li>trouble: <i>"I guess I'm really fucked now."</i></li>
<li>dismay: <i>"Oh, fuck it!"</i></li>
<li>aggression: <i>"Don't fuck with me, buddy!"</i></li>
<li>difficulty: <i>"I don't understand this fucking question"</i></li>
<li>inquiry: <i>"Who the fuck was that?"</i></li>
<li>dissatisfaction: <i>"I don't like what the fuck is going on here"</i></li>
<li>incompetence: <i>"He's a fuck-off!"</i></li>
<li>dismissal: <i>"Why don't you go outside and fuck yourself?"</i></li>
</ul>
<br />I'm sure you can think of many more examples.<br /><br />With all these multipurpose applications, how can anyone be offended when you use the word?<br /><br />Use this unique, flexible word more often in your daily speech. It will identify the quality of your character immediately. Say it loudly and proudly:<br /><br /><b><i>"FUCK YOU!"</i></b><br /><br /><br />- <i>The Monty Python</i><br />Sax Appealhttp://www.blogger.com/profile/04374547857513573488noreply@blogger.com0tag:blogger.com,1999:blog-7554608023176769017.post-74704611672563036232018-05-14T14:27:00.000+02:002018-05-14T14:27:56.612+02:00Kit antitroll: cartellino giallo.<div style="border: 0px; font-size: 14px; line-height: 1.42857em; margin: 0px; padding: 0px;">
<div class="separator" style="clear: both;">
<a href="https://i.imgur.com/epR1GTq.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="99" src="https://i.imgur.com/epR1GTq.gif" width="320" /></a><span style="font-family: "courier new" , "courier" , monospace;"><b><u>Istruzioni:</u></b></span><span style="font-family: "courier new" , "courier" , monospace;"><b> </b>questo modulo serve a rendere più comodo sbarazzarsi dai troll. Si può usare nei forum, sui social, e in tutti i casi in cui s'incontra il buon vecchio Dick Internet. Basta copiare, incollare e personalizzare il testo, e farlo ogni volta che si individuano i segni del trollaggio (è il caso di familiarizzarsi con le sottogliezze di quest'arte oscura). Immediatamente dopo l'uso del form, bisogna scollegarsi dalla discussione (il che è il senso principale di tutta l'operazione), e ci si gode la pace portata dal silenzio. Evitate di usare il modulo troppo spesso, e tenete solo le violazioni commesse (se volete, potete citare la fonte).riducete alle gli eccessi, </span><span style="font-family: "courier new" , "courier" , monospace; line-height: 1.42857em;">Il modo in cui lo uso io: </span></div>
<div class="separator" style="clear: both; font-size: medium; line-height: normal;">
</div>
<ol style="line-height: 1.42857em;">
<li><span style="font-family: "courier new" , "courier" , monospace; line-height: 1.42857em;">Alla prima violazione, invio <a href="https://sax-appeal.blogspot.com/2015/04/taking-fun-out-of-trolling.html" target="_blank">questo modulo</a> e cesso ogni interazione diretta.</span></li>
<li><span style="font-family: "courier new" , "courier" , monospace; line-height: 1.42857em;">Alla seconda violazione reinvio la notifica seguita da un avviso di <a href="https://sax-appeal.blogspot.com/2015/04/taking-fun-out-of-trolling-killfile-aka.html" target="_blank">killfile</a> seguito dal ban (una classica sequenza cartellino giallo/rosso, tanto non imparano mai)</span></li>
</ol>
<div class="separator" style="clear: both;">
<span style="font-family: "courier new" , "courier" , monospace;">Soprattutto, non fate come Dick, e seguite le regole della casa.</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "courier new" , "courier" , monospace;">Licenza: </span><a data-mce-href="http://creativecommons.org/licenses/by-nc-nd/3.0/" href="http://creativecommons.org/licenses/by-nc-nd/3.0/" style="border: 0px; color: #047ac6; font-family: "courier new", courier, monospace; line-height: 1.42857em; margin: 0px; padding: 0px;">CC-BY-NC-ND</a></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both; font-family: Helvetica, Arial, 'Droid Sans', sans-serif; text-align: center;">
<a href="http://i.imgur.com/9Fn283f.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="233" src="https://i.imgur.com/9Fn283f.jpg" width="320" /></a></div>
<div style="font-family: Helvetica, Arial, 'Droid Sans', sans-serif;">
<br /></div>
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">Salve, devo purtroppo avvisarti che hai violato le regole della casa.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span></div>
<div style="border: 0px; margin: 0px; padding: 0px;">
<div style="font-size: 14px; line-height: 1.42857em;">
<span style="font-family: "courier new" , "courier" , monospace;">In particolare le tue infrazioni sono: (spuntare tutte le infrazioni rilevanti)</span></div>
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-size: 14px; line-height: 20px;"><br /></span><input type="checkbox" /><span style="font-size: 14px; line-height: 1.42857em;"> 1.1 Ti sei comportato da troll</span><br /><input type="checkbox" /><span style="font-size: 14px; line-height: 1.42857em;"> 1.2 </span><span style="font-size: 14px;">Ti sei comportato in maniera arrogante</span><br /><input type="checkbox" /><span style="font-size: 14px; line-height: 1.42857em;"> 1.3 </span><span style="font-size: 14px;">Ti sei comportato in maniera stupida</span><br /><input type="checkbox" /><span style="font-size: 14px; line-height: 1.42857em;"> 2.1 </span></span><span style="font-family: "courier new" , "courier" , monospace; font-size: 14px;">Ti sei comportato in maniera fastidiosa</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><input type="checkbox" /><span style="font-size: 14px; line-height: 1.42857em;"> 2.2 Hai fatto osservazioni personali</span><br /><input type="checkbox" /><span style="font-size: 14px; line-height: 1.42857em;"> 2.3 </span><span style="font-size: 14px;">Hai insultato altri utenti</span><br /><input type="checkbox" /><span style="font-size: 14px; line-height: 1.42857em;"> 2.4 Ti sei comportato da adolescente senza esserlo <i>(Se hai meno di 15 anni, fallo presente e questa infrazione non sarà presa in considerazione)</i></span><br /><input type="checkbox" /><span style="font-size: 14px; line-height: 1.42857em;"> 3.1 Sei stato irrazionale</span><br /><input type="checkbox" /><span style="font-size: 14px; line-height: 1.42857em;"> 3.2 Sei stato maleducato</span></span><br />
<ul></ul>
</div>
<div style="border: 0px; font-size: 14px; line-height: 1.42857em; margin: 0px; padding: 0px;">
<span style="font-family: "courier new" , "courier" , monospace;"><br clear="none" /></span></div>
<div style="border: 0px; font-size: 14px; line-height: 1.42857em; margin: 0px; padding: 0px;">
<span style="font-family: "courier new" , "courier" , monospace;">Inoltre, hai agravato la tua posizione con le seguenti azioni: <span style="line-height: 1.42857em;">(</span></span><span style="font-family: "courier new" , "courier" , monospace;">spuntare tutte le aggravanti applicabili</span><span style="font-family: "courier new" , "courier" , monospace;">)</span><br />
<div style="border: 0px; line-height: 1.42857em; margin: 0px; padding: 0px;">
<span style="font-family: "courier new" , "courier" , monospace;"><br clear="none" /></span></div>
<div style="border: 0px; line-height: 1.42857em; margin: 0px; padding: 0px;">
<span style="font-family: "courier new" , "courier" , monospace;"><input type="checkbox" /> doxxing</span></div>
<div style="border: 0px; line-height: 1.42857em; margin: 0px; padding: 0px;">
<span style="font-family: "courier new" , "courier" , monospace;"><input type="checkbox" /> net-stalking</span></div>
<div style="border: 0px; line-height: 1.42857em; margin: 0px; padding: 0px;">
<span style="font-family: "courier new" , "courier" , monospace;"><input type="checkbox" /> aver tenuto comportamenti incredibilmente asinini</span></div>
<div style="border: 0px; line-height: 1.42857em; margin: 0px; padding: 0px;">
<span style="font-family: "courier new" , "courier" , monospace;"><input type="checkbox" /> aver messo per iscritto frasi che richiederebbero un esposto al tribunale</span></div>
</div>
<div style="border: 0px; font-size: 14px; line-height: 1.42857em; margin: 0px; padding: 0px;">
<div style="border: 0px; line-height: 1.42857em; margin: 0px; padding: 0px;">
<span style="font-family: "courier new" , "courier" , monospace;"><input type="checkbox" /> aver dimostrato di possedere una bassissima padronanza della lingua e di essere incapace di comprendere un testo scritto</span></div>
<div style="border: 0px; line-height: 1.42857em; margin: 0px; padding: 0px;">
<span style="font-family: "courier new" , "courier" , monospace;"><input type="checkbox" /> aver tenuto un comportamento normalmente associato a gravi disordini neurologici/psichiatrici</span></div>
<div style="border: 0px; line-height: 1.42857em; margin: 0px; padding: 0px;">
<span style="font-family: "courier new" , "courier" , monospace;"><input type="checkbox" /> aver provato, al di là di ogni ragionevole dubbio, di essere incapace di intrattenere penseri coerenti (e lasciamo stare il pensiero razionale)</span></div>
<div style="border: 0px; line-height: 1.42857em; margin: 0px; padding: 0px;">
<div style="border: 0px; line-height: 1.42857em; margin: 0px; padding: 0px;">
<span style="font-family: "courier new" , "courier" , monospace;"><input type="checkbox" /> aver messo in mostra ignoranza ed inadeguatezza intellettuale in quantità stupefacente perfino per internet (e ce ne vuole)</span></div>
<div style="border: 0px; line-height: 1.42857em; margin: 0px; padding: 0px;">
<span style="font-family: "courier new" , "courier" , monospace;"><input type="checkbox" /> Altro:................................................................</span></div>
<div style="border: 0px; line-height: 1.42857em; margin: 0px; padding: 0px;">
<div style="border: 0px; line-height: 1.42857em; margin: 0px; padding: 0px;">
<span style="font-family: "courier new" , "courier" , monospace;"><br clear="none" /></span></div>
</div>
</div>
<div style="border: 0px; line-height: 1.42857em; margin: 0px; padding: 0px;">
<span style="font-family: "courier new" , "courier" , monospace;">Questo utente osserva le regole della casa, e perciò terminerà ora la conversazione. Inoltre disabiliterà le notifiche, per darti agio di reagire con una delle elaborate e leggeremente patetiche risposte tipiche di queste situazioni, senza con ciò esserne ulteriormente disturbato. In caso di ulteriori infrazioni, l'utente si riserva il diritto di inserirti nella sua ban list (Wikipedia search: <a href="https://en.wikipedia.org/wiki/Plonk_(Usenet)" target="_blank">plonk</a>), un luogo tranquillo dove potrai continuare a comportarti male senza essere sentito.</span></div>
<div style="border: 0px; line-height: 1.42857em; margin: 0px; padding: 0px;">
<span style="font-family: "courier new" , "courier" , monospace;"><br clear="none" /></span></div>
<span style="font-family: "courier new" , "courier" , monospace;">Cordialmente,</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace;">Nota Bene: questo è un modulo prestampato, l'originale aggiornato si trova a <a href="https://sax-appeal.blogspot.com/2018/05/kit-antitroll-cartellino-giallo.html" target="_blank">questo indirizzo.</a></span></div>
Sax Appealhttp://www.blogger.com/profile/04374547857513573488noreply@blogger.com0tag:blogger.com,1999:blog-7554608023176769017.post-88131658440192252612018-01-28T19:57:00.005+01:002018-01-29T12:41:46.148+01:00Guardate che neanche uno su mille ce la fa. E in fondo neanche se lo merita. Un paio di giorni fa è capitato in uno dei miei stream il sottotitolo<br />
di uno dei Ted Talks (non mi ricordo quale, so solo che l'oratore è<br />
una donna di colore). Una cosa motivazionale del tipo <i>"Come possiamo</i><br />
<i>insegnare ai giovani ad essere pensatori indipendenti, mettere in</i><br />
<i>dubbio l'autorità, perseguire il proprio sogno"</i>. L'ossatura di un<br />
Bildungsroman Hollywoodiano o Disneyano. Il signor Smith che va a<br />
Washington, Erin Brokovitch che sconfigge la corporation e via<br />
dicendo. Lo sappiamo tutti che il piccolo uomo e la piccola donna,<br />
armati della propria <i>vis sognatoria </i>e della loro capacità di pensiero<br />
indipendente che li porta inesorabilmente a dubitare della realtà<br />
stabilita e delle parole dell'autorità, dopo peripezie appasionanti e<br />
drammatiche, coronano il racconto prevalendo orgogliosamente. Nei film.<br />
<br />
Poco dopo, sempre nel (dannato) stream che marcia incessantemente in<br />
uno dei tab del mio browser è passata una di quelle benintenzionate,<br />
ma ormai stantie, tirate sulla crisi della fiducia nelle competenze,<br />
dove <i>"democrazia non significa che la tua ignoranza equivale alla mia</i><br />
<i>incompetenza"</i>, <i>"fake news"</i> e via dicendo.<br />
<br />
Questo casuale accostamento mi ha fatto pensare (strano, dirà qualcuno). Prendiamo lo<br />
sciachimista medio. È senz'altro possibile sostenere che costui pensi<br />
indipendentemente e metta in questione l'autorità, che insiste a<br />
dirgli che nessuna potenza oscura sta seminando sostanze chimiche<br />
utilizzando gli scarichi degli aerei e che le scie di condensazione<br />
sono infatti vapore acqueo. Ted talk da manuale. Purtroppo la sua vis<br />
sognatoria e la sua capacità di pensiero indipendente etc. etc. sono<br />
al servizio di una solenne idiozia. Il che ci porta alla crisi di<br />
fiducia nella competenza, e via dicendo.<br />
<br />
Forse scopro l'acqua calda, ma mi pare singolare che non abbia<br />
mai sentito sottolineare da nessuno che questi due miti della società<br />
contemporanea: <i>"devi pensare indipendentemente, mettere in discussione</i><br />
<i>l'autorità, realizzare il tuo sogno"</i> e <i>"devi sapere riconoscere e</i><br />
<i>rispettare la competenza degli esperti"</i>; sono in diretta<br />
contraddizione tra loro.<br />
<br />
La popolarizzazione/democratizzazione della figura dell 'eroe'<br />
romantico ottocentesco ha moltiplicato i racconti di esemplari di<br />
persone della strada che, quasi con una mano legata dietro la schiena,<br />
svelano l'ipocrita ingiustizia dello status quo, additando a tutti la<br />
verità negata che era lì, sotto i loro occhi, bastava un po' di<br />
pensiero indipendente.<br />
<br />
Capisco che le storie in cui l'autorità in fondo aveva ragione, l'uomo<br />
della strada viene schiacciato dalla stupidità delle sue persuasioni o<br />
dalla preponderanza delle istituzioni, la verità accettata risulta<br />
vera e il sogno non si realizza, al botteghino vadano così così. Sono<br />
racconti che non comunicano grandi aspirazioni, essenzialmente perché<br />
riflettono il normale stato delle cose. In altre parole, la<br />
democratizzazione del mito eroico lascia fuori dalla porta uno degli<br />
ingredienti essenziali: l'eroe è un personaggio eccezionale che agisce<br />
in circostanze uniche.<br />
<br />
Galileo e Copernico hanno messo il Sole al centro dell'universo (si fa<br />
per dire), ma l'esercito di quadratori del cerchio ed inventori di<br />
macchine del moto perpetuo erano semplicemente una folla di ridicoli<br />
eccentrici, che avrebbe fatto meglio ad accettare la verità ricevuta e<br />
il cui sogno la storia si è incaricata di seppellire sotto una<br />
risata. Le cose sono quasi sempre come sembrano. "Uno su mille ce la<br />
fa" è una frase gravemente sbagliata per eccesso. E così via.<br />
<br />
Io non credo che questo voglia necessariamente dire che il pensiero<br />
critico sia una cosa da non esercitare o che quello che viene da una<br />
qualche autorità debba sempre e in ogni caso essere preso per buono a<br />
ragione della sua provenienza. Mi sembra però che la ripetizione e<br />
l'universalizzazione di questo messaggio abbia alla fine logorato la<br />
sua esagerata semplicità, e che continuare a riproporlo senza pesanti<br />
qualificazioni serva solo a peggiorare le cose. Bisognerebbe forse<br />
proporre qualcosa come:<br />
<i><br /></i>
<i>"Devi pensare con la tua testa, ma solo se </i><br />
<i>sei effettivamente capace di farlo, e, francamente, le probabilità sono </i><br />
<i>gravemente a tuo sfavore. Ah, e per il tuo sogno vale lo stesso."</i><br />
<br />
Certo, come messaggio motivazionale ha una forza abbastanza limitata.<br />
<br />
Capita quello che, ad opera di internet, è accaduto alle frasi belle e<br />
alle citazioni semplici del pensiero dei "grandi uomini". Quando non<br />
sono false (e lo sono piuttosto spesso) la loro ripetizione incessante<br />
da una parte ne espone i limiti, la paradossalità, non di rado la<br />
falsità. Dall'altro le rende, per molti, verità autoevidenti, parte<br />
dello sfondo accettato di come le cose stanno, o dovrebbero stare.<br />
E così, finiscono per essere dannose, oltre che ormai inutili.<br />
<br />
Ad esempio la mia città è stata tappezzata (forse lo è ancora) di una<br />
enfatica frase ad effetto attribuita ad Enzo Ferrari:<br />
<br />
<i>"Se lo puoi sognare, lo puoi fare" </i><br />
<br />
Ora, questa frase è semplicemente falsa, sia nel suo<br />
significato letterale (posso sognare un mondo fatto ad anello popolato<br />
di unicorni, farlo è un altro paio di maniche), sia nel suo contenuto<br />
esortativo: poter sognare cose, poterle fare e farle effettivamente<br />
sono cose completamente slegate. Solo il fatto che Enzo Ferrari<br />
(praticamente unico) avesse sognato di avere una scuderia di successo<br />
e che abbia poi in effetti realizzato questo sogno presta alla sua<br />
frase un'aura totalmente immeritata.<br />
<br />
E quindi, dopo decenni di esaltazione Ted-iana e Hollywoodiana degli<br />
eroi che vengono dal basso, è al tempo stesso percepito come<br />
banalmente ovvio - ma totalmente falso - il fatto che il pensiero deviante<br />
costituisca un valore in sè e sia alla portata di tutti.<br />
<br />
La morale non la so. Forse è che i messaggi semplici, in un'epoca in<br />
cui non abbiamo il tempo per meditarci sopra e interpretarli come<br />
semplificazioni di realtà complesse e tendiamo invece a prenderli alla<br />
lettera, hanno fatto il loro tempo, e che i messaggeri dovrebbero<br />
prendersi un po' di tempo per contestualizzarli e renderli, se non<br />
veri, almeno utili. Ma può darsi che mi sbagli.<br />
<div>
<br /></div>
Sax Appealhttp://www.blogger.com/profile/04374547857513573488noreply@blogger.com0tag:blogger.com,1999:blog-7554608023176769017.post-43071937530019212452016-12-15T10:22:00.000+01:002016-12-15T10:22:42.532+01:00Plus ça change<h1>
What those proposals really mean</h1>
<pre> <tt>
From a218@mindlink.UUCP Thu Sep 21 11:21:53 1989
From: a218@mindlink.UUCP (Charlie Gibbs)
Subject: What those proposals really mean
I came across this while cleaning out some old files...
</tt>
</pre>
<table align="left">
<tbody>
<tr>
<th align="left"><b><tt>PROPOSAL PHRASE</tt></b></th>
<th align="left"><b><tt>MEANING</tt></b></th>
</tr>
<tr>
<td><pre><tt>You are fortunate indeed to have
contacted a manufacturer who can
deliver the equipment within the
six-month delivery period, which
we estimate you require.
</tt>
</pre>
</td>
<td><pre><tt> If we don't get some revenue
from you this year we won't
make our budget.
</tt>
</pre>
</td>
</tr>
<tr>
<td><pre><tt>We have carried out an exhaustive
and comprehensive survey of your
problems.
</tt>
</pre>
</td>
<td><pre><tt> Look at the number of times
we've taken you to lunch.
</tt>
</pre>
</td>
</tr>
<tr>
<td><pre><tt>Furthermore, in a multiprogramming
environment,two machines would offer
an element of parallel processing
which would not otherwise be possible
on any computer equipment you are
likely to consider.
</tt>
</pre>
</td>
<td><pre><tt> We can't do it on one machine.
</tt>
</pre>
</td>
</tr>
<tr>
<td><pre><tt>We cannot overemphasize the
importance of this decimal
arithmetic capability.
</tt>
</pre>
</td>
<td><pre><tt> We have no floating-point
hardware.
</tt>
</pre>
</td>
</tr>
<tr>
<td><pre><tt>Our third-generation equipment
provides the highest standard of
reliability.
</tt>
</pre>
</td>
<td><pre><tt> There will be no local backup.
</tt>
</pre>
</td>
</tr>
<tr>
<td><pre><tt>While we have not been shown detail
flow charts and description of your
production control systems, we
estimate that the computer time
required each week should not exceed
four hours.
</tt>
</pre>
</td>
<td><pre><tt> We can't understand your
specification, but the last
one we did took four hours.
</tt>
</pre>
</td>
</tr>
<tr>
<td><pre><tt>No detailed knowledge of the
interface to the communications
network is required by the user's
programming staff.
</tt>
</pre>
</td>
<td><pre><tt> You will have to hire
a specialist who can
understand it.
</tt>
</pre>
</td>
</tr>
<tr>
<td><pre><tt>Using our high-level COBOL compiler
programs can now be written in the
English language.
</tt>
</pre>
</td>
<td><pre><tt> 02 NICTRB REDEFINES SLSGTB
PIC X(30).
</tt>
</pre>
</td>
</tr>
<tr>
<td><pre><tt>This particular peripheral is
available on a purchase-only basis.
</tt>
</pre>
</td>
<td><pre><tt> We don't make it, and never
want to see it again once
you have bought it.
</tt>
</pre>
</td>
</tr>
<tr>
<td><pre><tt>Local backup with comparable
installations will be provided.
</tt>
</pre>
</td>
<td><pre><tt> We are hoping to sell a
similar configuration to
another company 350 miles
away.
</tt>
</pre>
</td>
</tr>
<tr>
<td><pre><tt>The software we have recommended is
in the advanced development stage.
</tt>
</pre>
</td>
<td><pre><tt> We will start writing it as
soon as you sign the order.
</tt>
</pre>
</td>
</tr>
<tr>
<td><pre><tt>The equipment can be delivered to
suit your requirements, but we
estimate that you will not be ready
to take delivery until considerable
systems work has been carried out.
</tt>
</pre>
</td>
<td><pre><tt> We cannot deliver a machine
for two years.
</tt>
</pre>
</td>
</tr>
<tr>
<td><pre><tt>Independent assessment has rated
our data preparation equipment
among the best available.
</tt>
</pre>
</td>
<td><pre><tt> If you don't want our computer
please buy our keypunches.
</tt>
</pre>
</td>
</tr>
<tr>
<td><pre><tt>In accordance with our policy of
progressive improvement, the right
is reserved to alter any detail of
price, specification, or terms
without notice.
</tt>
</pre>
</td>
<td><pre><tt> We hereby divest ourselves of
any responsibility for what we
have said, written, or are
about to say or write.
</tt>
</pre>
</td>
</tr>
<tr>
<td colspan="2"><tt>(Taken from the October 1968 issue of
Datamation)</tt></td>
</tr>
</tbody></table>
Sax Appealhttp://www.blogger.com/profile/04374547857513573488noreply@blogger.com0tag:blogger.com,1999:blog-7554608023176769017.post-80182060096350001212016-10-25T17:22:00.001+02:002016-10-26T09:06:06.433+02:00Some basic IT typesA short, non-exhaustive list of basic types I met while working in IT.<br />
<br />
<b>The jobber, a.k.a "The reliable".</b> Does what needs to be done, nothing more, nothing less. Seldom takes initiatives, and when he does, they're on the excruciatingly safe side. For instance, she may change a comment o clarify it. Because he does not care endless repetition of the same task, and is apparently impervious to boredom, he is often assigned to reporting, the printing subsystem, backups, and fixing the bugs nobody else has ever been able to reproduce. Infinitely useful in production. Gets scared if talked to abruptly, or too loudly.<br />
<br />
<b>"The visionary", a.k.a. "whizkid", "The maniac".</b> Always getting up to speed on the latest technologies, harbors a deep disdain for anything that's been developed before than N years ago (N>0.5). Seldom seen installing software at the RC level, favors pre-alphas or nightly builds. For this reason, the machines he's been using for more than three days need to be reinstalled from scratche before they can be passed on. His projects, usually a wreck of failed dependencies from abandonware, do sometime evolve in the prototype of the next great product. Anyway, nobody can ever tell what the visionary's current project is about, because he describes it in obscure utterances that Mr. Wolf (QV) himself takes a day to parse:<br />
<i><br /></i>
<i>"My paradigm shifting, game changing idea is a Cordova project built with Bower and Grunt, of course I threw in Moustache for templating and Angular - Ionic, really - as a framework. It is nearly at the deploy stage, which will be in a microservices matrix on Digital Ocean created using Terraform and based on Kubernetes clustering technology". </i><br />
<br />
Should never be given checkin permission on official repositories.<br />
<br />
<b>Mr. Wolf a.k.a "I solve problems". </b>An omnivorous reader, he is constantly reading up on everything, never really becoming a specialist of something. He solves problems that baffle most anyone, but he gets quickly bored and he's back on reddit or hacker news after delivering a three day "proof of concept solution" (<i>"I'm sure the guys will figure out the details by themselves, better than I can"</i>). Usually distant, aloof and detached, has a hard time switching contexts, and may dreamily remark <i>"Oh, you talking to me? Would you remind repeating?"</i> after ten minutes of being spoken to. Depending on his/her level of attention, he may answer in maddening monosyllables (<i>"Do you know a solution for quantum gravity?" "Yes"</i>) or keep on talking for the balance of the afternoon. His code must be closely reviewed by The Jobber or by Auntie (QV) to tie up the hundreds of loose ends and missing details. On the other hand, one can converse with him about quantum physics or XV century Flemish waterpainters because <i>"Good you mentioned it, I just read a few interesting things about this".</i><br />
<br />
<b>The Anal Retentive, a.k.a "Auntie".</b> Fastidious in the extreme, the anal retentive is the universal source of overengineering. If a project has the dreaded <i>"Are you sure that you are sure that you want to do this?"</i> popup/feature, Auntie is invariably the author. Spends his/her free time dreaming up unforeseen actions users may engage in, and inventing ways to block them. His projects are the wet dream of bondage practitioners and the screaming nightmare of user support, flooded by phone calls of users unable to proceed past the welcome screen because <i>"You do not have permission"</i>. When given a data model, Auntie releases a database in 13th normal form that nobody would be able to use, except it comes accompanied with 10,000 documented use cases. This way, when asked about the product, Auntie can roll up his eyes, sigh despiritedly, and say <i>"It's all described in the use cases. Have'nt you read them?"</i>. A tireless worker, Auntie is a useful, sometimes necessary presence. But he will drive you insane.<br />
<br />
<b>Elliott a.k.a. "The socially challenged"</b>. Has exchanged no more than four sentences with the co-workers since the day he arrived. His desk is cluttered with stacks of objects - manuals, electronic equipment, pizza cartons, cheese bagels in various stages of decay - which hide him from view. His hours are unpredictable, as proved by the fact that he answers email (if ever) at 3 AM. <i>"I stopped using Tor long before the NSA thing, the level of privacy it offers is nothing less than laughable"</i>. His checkins are impeccable and his code brilliant, but everyone expects to see him hauled away by the Police any day.<br />
<br />
<b>The Ballast, a.k.a "The fish", "The idiot"</b>. Started dabbling in PHP at school, mixing html and code. Still does. If told "framework", The Ballast exhibits the blank stare of a mackerel confronted with a photo of the Large Hadron Collider. Persuaded that SQL injection is an intractable problem, was puzzled by the "Bobby Tables" cartoon and did not even smile at it. <i>"I'd really like to read up and study, but what with all my day to day workload"</i>. This type is a catastrophe, but - being extremely cheap - it's always very well represented.<br />
<b><br /></b>
<b>Mozart, a.k.a "The genius".</b> Has deep knowledge of 14 programming languages and has written popular projects in all of them, as well as designing one of his own (due in the next ACM conference on languages). Mozart's github has 397 forks and 12000 yearly downloads. "Oh, no, I finished this weeks tests and checkins early Tuesday. This one is my weekend project." His resume lists stints at all the major industry outlets, and he sometimes drops lines like <i>"...I know, this is something I must have tried to explain to Linus 100 times. At a minimum."</i> , <i>"Larry (Wall) and Guido (van Rossum) also chimed in, so yes, all the old gang was there."</i>. Never around for long.<br />
<br />
<b>"Been there, done that" a.k.a. "The veteran".</b> <i>"Yes, it is the same exact thing we used to do on the CDC Cyber 7600. Of course, today we have a different DCL and much more resources"</i>. Usually spotted among the sysadmins.<br />
<br />
<b>"The peripheral" a.k.a "Stressed out"</b>. Disillusioned by the core job (often because of a close cooperation with Auntie) has applied to QA or User Support, realizing too late of having fallen from the frying pan into the fire. Constantly confronted with the trivial (<i>"Of course you have to turn the PC on"</i>) or the absurd (<i>"I can assure you long term weather predictions were never a part of our inventory management software"</i>) he has developed brilliant evasive tactics (<i>"Did you upgrade the graphic card and mouse drivers, and applied all the OS updates? Get back to us when you are done"</i> - <i>"NOTABUG - WONTFIX"</i>). Nevertheless, the job is taking its toll. Seen by the colleagues as a harbinger of bad news and as somebody out of the loop, is treated by them with condescending lines: <i>"Of course a basic understanding of the technology is needed..."</i>. Usually resigns in two years.<br />
<br />
<b>"Bastard Operator From Hell", a.k.a "Herod".</b> A school buddy of the founding partners, his authority is unassailable. Manages network security, resources and - often - telephony and has elected Argus Filch (the Hogswarth warden) as a role model.<br />
<br />
<i><span class="Apple-tab-span" style="white-space: pre;"> </span>"I cannot understand what use can you possibly have of print privileges."</i><br />
<i><span class="Apple-tab-span" style="white-space: pre;"> </span>"We were running low on space and, since you where not using it fully, I had your new 1TB disk replaced with a 500MB one. It's more reliable, and you can still use some space on the server."</i><br />
<i><span class="Apple-tab-span" style="white-space: pre;"> </span>"Of course we removed the network card and blocked all USB ports. The licensing machine has to be secure."</i><br />
<i><span class="Apple-tab-span" style="white-space: pre;"> </span>"WI-FI??????? You outta your mind kid??"</i><br />
<br />
<b>The Old Fart, a.k.a "The retiree".</b><br />
<i> <span class="Apple-tab-span" style="white-space: pre;"> </span>"You know, I never really got along with this OO fad."</i><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>CHAR(17) SURNAME</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> GOTO LABEL019<span class="Apple-tab-span" style="white-space: pre;"> </span></span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> </span><span style="font-family: "courier new" , "courier" , monospace;">$ ed README</span><br />
<i> <span class="Apple-tab-span" style="white-space: pre;"> </span>"Was it on usenet?"</i><br />
<i> <span class="Apple-tab-span" style="white-space: pre;"> </span>"Mine is a lightweight site. It shines on lynx"</i><br />
<i> <span class="Apple-tab-span" style="white-space: pre;"> </span>"UTF?"</i><br />
<i> <span class="Apple-tab-span" style="white-space: pre;"> </span>"Zzzzzzzzzz...."</i><br />
<div>
<br /></div>
Sax Appealhttp://www.blogger.com/profile/04374547857513573488noreply@blogger.com0tag:blogger.com,1999:blog-7554608023176769017.post-64529434881487131322016-10-24T15:20:00.000+02:002016-10-24T15:20:42.969+02:00Alcuni tipi base in ITUna lista, non esauriente, di alcuni tipi base di personalità che ho incontrato lavorando n campo informatico.<br />
<br />
<b>Lo sgobbone, ovvero "L'affidabile""</b>: Fa quello che è necessario fare. Niente di più, niente di meno. Raramente prende iniziative, e quando lo fa, sono prudentissime, tipo rendere più chiaro un commento. Si aggiorna solo per quello che è necessario ai compiti che deve svolgere al momento. Poichè non gli pesa ripetere la stessa attività un numero arbitrario di volte ed è apparentemente incapace di annoiarsi, in genere gli vengono affibbiati i report, i sottosistemi di stampa, i backup e i bachi che nessun altro riesce a riprodurre. Utilissimo in produzione, basta non rivolgergli la parola troppo bruscamente o a voce troppo alta, che si spaventa.<br />
<br />
<b>Il visionario, ovvero "Il Ciappinaro"</b>: insegue costantemente l'ultima tecnologia, sdegna tutto quello che è stato fatto N anni fa (N>0.5). Di rado installa qualcosa che è allo stadio RC, preferisce le alpha release o i nightly build. Di conseguenza, le macchine che ha usato per più di tre giorni vanno reinstallate da zero prima di passarle ad altri. I suoi progetti naufragano miseramente in una jungla di dipendenze da abandonware oppure diventano il prototipo del prossimo prodotto di successo. Nessuno è in grado di dire esattamente su cosa stia lavorando, anche perchè descrive i suoi progetti con frasi criptiche che anche Mr. Wolf ci mette una giornata a decodificare.<br />
<i><br /></i>
<i>"Si tratta di un progetto Phonegap che usa Bower e Grunt per il build, Moustache come sistema di template e Angular - Ionic, in realtà - per l'MVC. Presto farò un deploy di test in una matrice di microservizi su Digital Ocean usando Terraform, con una tecnolgia di clustering basata su Kubernetes."</i>. <br />
<br />
Da tenere alla catena, lontano dai repository ufficiali.<br />
<b><br /></b>
<b>Mr.Wolf, ovvero "Risolvo problemi"</b>: Onnivoro, legge qualunque cosa e si aggiorna costantemente su tutto senza mai diventare specialista di quasi niente. "Risolve problemi" che lasciano perplessi tutti gli altri, ma dopo tre giorni si annoia, molla tutto e torna su redddit o hacker news.<br />
Normalmente distratto, quando è assorto ha grandi difficoltà a cambiare contesto: capita di parlargli per dieci minuti prima che dica, con tono sognante <i>"Ah, ma parlavi con me? Ti dispiace ripetere?".</i> A seconda del livello di attenzione in cui si trova, può dare risposte monosillabiche alla Clouseau (<i>"Sai se sia possibile quantizzare la gravità?" "Sì"</i>) o parlare per un pomeriggio intero.<br />
Il codice che sviluppa dev'essere ripassato da uno sgobbone o da Zietta per mettere a posto i diecimila dettagli che mancano. In compenso ci si può parlare anche di meccanica quantistica e degli acquarellisti fiamminghi del '400, perchè <i>"ha letto alcune cose al proposito"</i>.<br />
<br />
<b>anal retentive, ovvero "Zietta"</b>: Ossessivamente pignolo, è quello che introduce l'overengineering nei progetti. Se in un progetto esiste il popup "<i>Sei sicuro di essere sicuro di voler fare X?"</i>, l'ha fatto lui. Passa il tempo libero a immaginare azioni impreviste che gli utenti potrebbero intraprendere e ad almanaccare modi per vietarle. I suoi progetti sono il sogno di un appassionato di bondage, e l'incubo dello user support che è bombardato di telefonate di utenti impastoiati nella schermata iniziale perchè "non hanno i permessi adeguati". Se gli si dà un data model, svilupperà un database in 13a forma normale, che nessuno sarebbe in grado di usare, se non fosse che ha anche simultaneamente prodotto 13,000 pagine di use cases, in modo che tutte le volte che qualcuno gli chiede qualcosa sul suo prodotto può rispondere (sospirando) <i>"E' tutto negli use cases. Non li hai letti?"</i>. Lavoratore instancabile, è una presenza utile e perfino necessaria. Ma ti tira scemo.<br />
<br />
<b>Elliot, ovvero "L'asociale"</b>: da quando è stato assunto non ha scambiato più di otto parole con nessuno. La sua scrivania è costantemente coperta da alte pile di oggetti di varia natura (manuali, schede elettroniche, cartoni di pizza, panini dimenticati in vari stadi di decomposizione) che lo nascondono alla vista. Fa orari imprevedibili e risponde alle email (se risponde) alle tre di notte. Dice cose del tipo <i>"Ho smesso di usare Tor, perchè le garanzie di privacy che offre sono risibili."</i>. I suoi checkin sono impeccabili, il suo codice brillante, ma tutti si aspettano che prima o poi i carabinieri arrivino e lo portino via.<br />
<br />
<b>Il peso morto, ovvero "Il programmatroto"</b>: ha imparato a scrivere un po' di php quando studiava, mischiando html e codice. Continua a farlo. Se gli dici "framework" nei suoi occhi compare l'espressione perplessa che ha uno sgombro davanti alla fotografia del Large Hadron Collider di Ginevra. E' convinto che la SQL injection sia un problema insormontabile: quando ha visto il cartoon di Bobby Tables, non ha neanche sorriso. <i>"Eh, mi piacerebbe aggiornarmi, ma il lavoro è sempre troppo"</i>. E' una sciagura, ma siccome è molto economico, è numericamente dominante.<br />
<br />
<b>Mozart, ovvero "Il genio"</b>: conosce in profondità 14 linguaggi di programmazione, e ha fatto progetti importanti e popolari con quasi tutti. Il suo github ha 12000 download e 345 fork. <i>"Ah, no, i test e i checkin della settimana li ho finiti Martedì. Questo è il mio progetto del weekend"</i>. Ogni tanto dice cose come <i>"...avrò cercato di spiegarlo a Linus 100 volte"</i>. Non si riesce mai a tenerlo per molto.<br />
<br />
<b>Been there, done that, ovvero "Il veterano"</b>: <i>"Sì, è esattamente la stessa cosa che facevamo sempre sui Cyber CDC 7600, ma naturalmente oggi abbiamo un altro DCL e molte più risorse."</i> Spesso avvistato tra i sysadmin.<br />
<br />
<b>Il periferico, ovvero "Lo stressato"</b>: deluso dallo sviluppo (spesso per il burnout derivato dalla collaborazione con Zietta) si è fatto assegnare al QA o allo User Support senza capire di essere caduto dalla padella nella brace.<br />
Bombardato da richieste banali (<i>"Certo che deve accendere la macchina"</i>) o assurde (<i>"Ne sono sicuro, le previsioni meteorologiche di medio periodo non fanno parte del nostro software di magazzino"</i>), ha sviluppato brillanti strategie evasive (<i>"Ma prima che cominciamo, ha aggiornato il firmware, il driver della scheda grafica e quello del mouse? Ritelefoni quando l'ha fatto"</i> - <i>"<b>NOTABUG. WONTFIX</b>"</i>). Però, lo stress si vede.<br />
I colleghi lo considerano un messaggero di sventure e uno fuori dal giro e gli dicono cose del tipo <i>"Certo, se non sei aggiornato o non capisci la tecnologia di base..."</i>. In genere si licenzia dopo un paio d'anni.<br />
<br />
<br />
<b>Bastard Operator From Hell, ovvero "Erode"</b>: Inamovibile per essere andato a scuola coi soci fondatori, è responsabile della sicurezza di rete, delle risorse e (spesso) della telefonia. Ha eletto a suo modello caratteriale Argus Filch, il guardiano di Hogswarth.<br /><br />
<i><span class="Apple-tab-span" style="white-space: pre;"> </span>"Non capisco a cosa possono servirti i privilegi di stampa."</i><br />
<i><span class="Apple-tab-span" style="white-space: pre;"> </span>"Eravamo a corto di spazio e, visto che non lo usavi tutto, ho fatto sostituire il disco da 1TB della tua macchina con uno da 500MB. Fra l'altro è più affidabile, e puoi sempre usare i dischi del server."</i><br />
<i><span class="Apple-tab-span" style="white-space: pre;"> </span>"Certo che abbiamo tolto le schede di rete e disabilitato le porte usb. La macchina del licensing deve essere sicura, o no?"</i><br />
<i><span class="Apple-tab-span" style="white-space: pre;"> </span>"WI-FI????????????? Sei impazzito?"</i><br />
<br />
<br />
<b>The old fart, ovvero "Il pensionato"</b>:<br /><br />
<i> "Mah, io 'sta moda dell'Object Oriented..."</i><br />
<span style="font-family: Courier New, Courier, monospace;"> CHAR(23) COGNOME</span><br />
<span style="font-family: Courier New, Courier, monospace;"> GOTO LABEL019</span><br />
<span style="font-family: Courier New, Courier, monospace;"> $ ed README</span><br />
<i> "L' hai letto su usenet?"</i><br />
<i> "Il mio è un sito web leggerissimo, che si vede bene anche su lynx"</i><br />
<i> "UTF?"</i><br />
<i> "Zzzzzzzzzz...."</i><br />
<div>
<br /></div>
Sax Appealhttp://www.blogger.com/profile/04374547857513573488noreply@blogger.com0tag:blogger.com,1999:blog-7554608023176769017.post-58130699683379116882016-09-22T17:28:00.003+02:002016-09-22T17:28:49.258+02:00Building emacs 25.1 on Fedora Core 22I am not (no longer) a big fan of OS updates (and the grueling work of picking up the pieces of broken stuff the usually comes after that. So it is not unusual, for me, to be lagging 2-3 major releases behind my distro of choice. I am currently at Fedora Core 22, while the world runs at FC24 speed.<br />
<br />
Now, however, <a href="https://lists.gnu.org/archive/html/emacs-devel/2016-09/msg00451.html" target="_blank">emacs 25.1 is out</a>, and a birdy is telling me it won't be built for FC22. Few choices but to build it myself (<a href="http://sax-appeal.blogspot.it/2013/06/building-gnu-emacs-242-on-fedora-core.html" target="_blank">I'd already done it back in FC15 days</a>): it turns out that it is pretty staightforward on my main box:<br />
<br />
<span style="font-family: Courier New, Courier, monospace;"> # wget http://mirror2.hs-esslingen.de/fedora/linux/updates/24/SRPMS/e/emacs-25.1-0.3.rc2.fc24.src.rpm</span><br />
<span style="font-family: Courier New, Courier, monospace;"> # dnf builldep emacs</span><br />
<span style="font-family: Courier New, Courier, monospace;"> # dnf builddep emacs</span><br />
<span style="font-family: Courier New, Courier, monospace;"> # sudo dnf builddep emacs</span><br />
<span style="font-family: Courier New, Courier, monospace;"> # rpm --install emacs-25.1-0.3.rc2.fc24.src.rpm </span><br />
<span style="font-family: Courier New, Courier, monospace;"> # cd ~/rpmbuild/RPMS/SPECS/</span><br />
<span style="font-family: Courier New, Courier, monospace;"> # dnf install webkitgtk3-devel</span><br />
<span style="font-family: Courier New, Courier, monospace;"> # rpmbuild -bb emacs.spec </span><br />
<span style="font-family: Courier New, Courier, monospace;"> # cd ../RPMS/</span><br />
<span style="font-family: Courier New, Courier, monospace;"> # dnf update */*.rpm</span><br />
<div>
<br /></div>
<div>
<br /></div>
Sax Appealhttp://www.blogger.com/profile/04374547857513573488noreply@blogger.com0tag:blogger.com,1999:blog-7554608023176769017.post-4124739853209108962016-09-16T10:08:00.001+02:002016-09-16T10:08:09.161+02:00Una strana corsa ad ostacoli.<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://i.imgur.com/CnFPiaB.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://i.imgur.com/CnFPiaB.jpg" height="240" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><a href="http://www.palazzostrozzi.org/mostre/aiweiwei/" target="_blank">Installazione di Ai Wei Wei a Palazzo Strozzi</a></td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Nell'arte, per un lungo tempo, ci sono state la materia - la tela, la pietra, il suono, il tamburo - e la forma - la Madonna in trono con santi, la scena mitologica, la fuga, il blues. La materia andava vinta. La forma era un avversario e una camicia di forza, ma anche il punto d'incontro tra l'espressione e le aspettative dello spettatore.<br />
<br />
I migliori, quelli che chiamiamo Artisti, utilizzavano la loro maestri tecnica per dominare la materia e per piegare la forma a fini espressivi: talvolta portavano l'espressione di una forma al suo massimo culmine (Bach, la fuga), talvolta addiritura la trasfiguravano (Beethoven, la sonata, la sinfonia). C'era poi chi si limitava ad appoggiarsi alla forma: gli artigiani, i virtuosi.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://upload.wikimedia.org/wikipedia/commons/f/f6/Duchamp_Fountaine.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://upload.wikimedia.org/wikipedia/commons/f/f6/Duchamp_Fountaine.jpg" width="302" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://en.wikipedia.org/wiki/Fountain_(Duchamp)" target="_blank">"Fontana" Marcel Duchamp</a></div>
A un certo punto (che fisso arbitrariamente al 1945) quello che fino ad allora era considerato un evento traumatico - la creazione di una nuova grammatica formale - è diventata una pratica non solo concessa, ma perfino richiesta agli artisti che volessero essere "contemporanei". Il patrimonio tecnico-artigianale della pratica artistica poteva essere subordinato all'apparato concettuale che si voleva rappresentare. Così l'opera d'arte a volte sfumava nella trovata e diventava un capolinea. L'immagine della madonna ha avuto migliaia d'interpretazioni, ma un pisciatoio rovesciato si può esporre una volta sola, e dopo <a href="https://en.wikipedia.org/wiki/4%E2%80%B233%E2%80%B3" target="_blank">4' 33" di Cage</a> nessuno (tranne Cage, ma è morto) puo' comporre "1 minuto e 43 secondi e mezzo" .<br />
<br />
Attraversando l'esposizione permanente del <a href="https://www.centrepompidou.fr/fr/Collections/Les-oeuvres" target="_blank">Centre Pompidou</a> in senso cronologico si passa da opere di contenuto magari provocatorio, ma con cui la relazione è immediata (il quadro, la scultura) ad oggetti ambigui, multiformi e arbtrari, le proverbiali installazioni sempre a rischio di essere buttate dalla signora delle pulizie. Ai Wei Wei può, da artista, esporre gommoni arancioni sulla facciata di palazzo Strozzi a Firenze (una installazione che personalmente non trovo sgradevole, ma che ha sollevato un discreto clamore).<br />
<br />
Cosa resta al non specialista che vuole orientarsi? Studiare la grammatica espressiva di ogni artista, o della particolare microscuola a cui aderisce è un'impresa al di fuori della portata dei più. Si deve forse dare ragione a <a href="https://en.wikipedia.org/wiki/Morton_Feldman" target="_blank">Morton Feldman</a>, quando scrisse che il musicista è diventato come lo scienziato, depositario di una conoscenza specialistica esclusiva di cui il non iniziato non può chiedere più di tanto ragione? A me questa sembra una sconfitta dell'espressione artistica in generale. L' arte sarebbe quella del pittore preferito dai pittori, del poeta preferito dai poeti, più un modo di soddisfare i bisogni (o di grattare i pruriti) di un circolo privato che uno sguardo sull'esistenza umana.<br />
<br />
A volte guardare la scena artistica contemporanea è come assistere ad un gara di 400 ostacoli dove sono spariti ostacoli, linea della partenza, traguardo, corsie e pista. C'è chi corre da campione, chi da dilettante, chi c'è entrato per caso. Forse qualcuno vince. Ma distinguerli è quasi impossibile.<br />
<div>
<br /></div>
Sax Appealhttp://www.blogger.com/profile/04374547857513573488noreply@blogger.com0tag:blogger.com,1999:blog-7554608023176769017.post-29523021764386648072016-06-21T10:04:00.003+02:002016-06-21T16:08:49.186+02:00Extreme(ly stupid) programmingI recently hired (that's rented, for many) a car on my trip to Ireland, and the company (Sixt) withdrew a huge cautionary deposit from my credit card. That's because I purchased <i>"basic insurance" </i>without reading the fine print (Note to self: never again).<br />
<br />
Because of this I have a keen interest in the final bill which - it is claimed - I can retrieve from the company web site, where a form to that effect is provided. The bill itself can be searched by surname of the renter (yours truly) and reservation number: mine looks like <span style="font-family: "courier new" , "courier" , monospace;"><b>IE123456789</b>.</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: inherit;">Power of the NET. After dinner, I fire up my device, go to the site, fill in the required numbers, and <b>WHAM-BAM-ALAKAZAM </b>I am greeted by a pink box, containing a twelve line SQL error enchantement. </span>Not being at the office, I cannot be bothered, think <i>"Oh, well, system maintenance or sump'in"</i> and go back to my book.<br />
<br />
<br />
<br />
<br />
Two days and four ALAKAZAMs later, however, I am nervous and annoyed enough to make the form's problem my own. The above mentioned statement includes the code <b style="font-family: arial, sans-serif; line-height: 18.2px;">ORA-01722</b><b style="font-family: arial, sans-serif; font-size: small; line-height: 18.2px;"> </b><span style="line-height: 18.2px;">error (which, for the uninitiated, is an error code of the underlying ORACLE DBMS)</span><b style="font-family: arial, sans-serif; line-height: 18.2px;"> </b><span style="line-height: 18.2px;"><span style="font-family: inherit;">As it happens, its textual description is "invalid number" (I had to look it up). Being the adroit IT professional I am, I fired up the form again, entering </span></span><b style="font-family: "Courier New", Courier, monospace;">123456789 </b><span style="font-family: inherit;">as the reservation number (rather the IE123456789 that is present on all the documents I have been given) and <b>ALAKAZORK!</b> <i>"No document found"</i>. </span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Now t</span><span style="font-family: inherit;">hat is still a problem (for me) but not an error, and therefore, not the topic I'm after in this post.</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Here are some things I am fairly sure of</span><br />
<span style="font-family: inherit;"><br /></span>
<br />
<ol>
<li>There is no chance in hell that anybody, except the useless author of this useless form (who should be metaphorically taken to the backyard and shot, but I digress) have ever been able of making it work at the first attempt (and very few people even after the 100th).</li>
<li>All the system has been built with a test-driven approach, as the extreme programming best practices dictate;</li>
<li> But the reservation number is actually made up by the two letter country code (IE) and a number and these, in the database, are split between two columns (countrycode, textual, resnum, integer)</li>
<li>and the aforementioned useless git has successfully run its tests against the contents of the resnum column, never - in his/her useleness - checking what the customer documents actually contain, because that would require the capability of thinking <strike>sensibly</strike>.</li>
<li>form field validation code is for sissies</li>
</ol>
<div>
All of which bring us to the proof of these interesting corollaries of software testing:</div>
<div>
<br /></div>
<h3>
Corollary 1 (extreme GIGO)</h3>
<div style="text-align: center;">
<i>"If your tests suck, your code will suck, for any number of successful tests Nt > M, Nt and M being positive arbitrary integers and for any input I to the tests"</i></div>
<div style="text-align: center;">
<i><br /></i></div>
<div>
This, coupled with the following :<br />
<br />
<h3>
Empiric finding 1</h3>
</div>
<div>
<br /></div>
<div style="text-align: center;">
<i>"A stupid programmer will conceive stupid tests"</i></div>
<div style="text-align: center;">
(I.e. for a nuclear power generator control software he will test for correct string justification but not for correct temperature reading of the core; in case he does, he will mix up fahrenheit and centigrades).</div>
<div style="text-align: center;">
<br /></div>
<div>
<br /></div>
<div>
Gives us:</div>
<h3>
Empiric corollary 2 </h3>
<div style="text-align: center;">
"<i>A stupid programmer will conceive thoroughly tested sucky code"</i></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
A more useful way of stating this is, do not let anybody write tests for their own software (we all go through bouts of stupidity, after all, especially when our own children are involved), or, in other words, separate development and QA.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Advice of the day:<i> "Don't be stupid"</i></div>
<div style="text-align: left;">
<br /></div>
Sax Appealhttp://www.blogger.com/profile/04374547857513573488noreply@blogger.com0tag:blogger.com,1999:blog-7554608023176769017.post-23346730288011677042016-05-13T10:59:00.000+02:002016-05-13T10:59:24.348+02:00Support Ticket #131313<i>Ticket #131313</i><br />
<br />
<span style="font-family: Courier New, Courier, monospace;">Ciao Arturo,</span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;">invio in allegato alla presente la segnalazione del collega.</span><br />
<span style="font-family: Courier New, Courier, monospace;">Ti prego di verificare e tenermi aggiornato riguardo alla risoluzione </span><br />
<span style="font-family: Courier New, Courier, monospace;">del problema.</span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;">Saluti e grazie</span><br />
<span style="font-family: Courier New, Courier, monospace;">Paolo</span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;">--[Visualizza allegati email.pdf]</span><br />
<br />
<span style="font-family: Courier New, Courier, monospace;"><i>(Nota Bene: email con allegato PDF contenente messaggio email. Almeno non è word, Ndr)</i></span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;">Ogetto: Sito Web</span><br />
<span style="font-family: Courier New, Courier, monospace;">Mittente: Troto Programma</span><br />
<span style="font-family: "Courier New", Courier, monospace;"><br /></span>
<span style="font-family: "Courier New", Courier, monospace;">Ciao,</span><br />
<span style="font-family: Courier New, Courier, monospace;">Ho notato questo fine settimana, ma non so da quanto tempo c'è il problema <i>(WAY TO GO! Ndr),</i> che il sito non visualizza correttamente la parte destra della home.</span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;">Puntando su un problema di compatibiltà/contenuti inseriti,ho colto l'occasione di aggiornare <i>(<b>naturalmente </b>sul sito di produzione, Ndr)</i> 22 plugin e tutto l'ambiente di Wordpress <i>(Già che c'eri potevi aggiornare anche il firmware ed il cabinet, Ndr)</i>.</span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;">Purtroppo il problema non si è risolto <i>(Mission Accomplished, Ndr)</i>, ma nel frattempo ne è apparso un altro <i>(Cioè: "ho creato un altro problema, più grave, e ora il sito è completamente rotto". Strano. Ndr)</i> Sarebbe necessario comunicare a <b>$DittaCheCollaboraConVoi</b> la seguente esigenza:</span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;">"Occorre aggiornare la versione di PHP dall'attuale a 5.6.x"</span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;">Grazie,</span><br />
<span style="font-family: Courier New, Courier, monospace;">Troto</span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;">P.S. Se a <b>$DittaCheCollaboraConVoi</b> servono maggiori dettagli sono a disposizione. <i>(No grazie, se stai fermo è già un aiuto prezioso. Ndr)</i></span><br />
<span style="font-family: Courier New, Courier, monospace;"><i><br /></i></span>
<span style="font-family: Courier New, Courier, monospace;">-----</span><br />
<br />
Heavy drinking intensifies.<br />
<div>
<br /></div>
Sax Appealhttp://www.blogger.com/profile/04374547857513573488noreply@blogger.com0tag:blogger.com,1999:blog-7554608023176769017.post-15117158776427668912016-04-08T10:10:00.000+02:002016-04-11T09:31:49.897+02:00Simpler? No, just dumber. On language.So Morten Just wrote a text editor/word processor that requires its owner to use words taken from the 1000 most commonly used English words, based on the Einstein-attributed quote<br />
<i><br /></i>
<i>"If you can’t explain it to a six-year-old, you don’t understand it yourself"</i><br />
<br />
(By the way, do you spot the misunderstanding of the quote? It states that you <b>must be able to</b> explain it to a six year old, not that you should always express yourself that way) <br />
<br />
And Morten was surprised by the negative reactions of some of the public, as he explains in <a href="https://medium.com/@mortenjust/i-doomed-mankind-with-a-free-text-editor-ba6003319681" target="_blank">this post</a>.<br />
<br />
I just had to take exception, and did it in the reply that follows.<br />
<br />
<i>No, sorry, I cannot agree. I do concur that one should express his ideas in the simplest possible way — but not any simpler, lest the ideas get distorted.</i><br />
<i><br /></i>
<i>Besides, I think simplicity is a feat one should achieve because he thinks about it — not because it’s been given a crippled tool that forces its owner to do strange stuff. In a way, that (leaving stuff out of a tool because you don’t believe in, or know about, it) is a typical approach of some brand of software design — the email application that assumes that your username will <b>always </b>be equal to your email address, last sighted on windows, is an example.</i><br />
<i><br /></i>
<i>Not to mention the many fields of endeavour where the original Einstein’s quote is, quite simply, bullshit. Art prose. Poetry. “Serendipity”. Formulating the sentence “Swift is a Multi-paradigm (Protocol-oriented, object-oriented, functional, imperative, block structured) programming language” without bizarrely contorted and extended paraphrases (which I should be probably expressing as “weirdly restating its meaning using other words in much longer sentences” — see?). This happens because unusual words (especially when domain specific) synthesize required prior knowledge that would make expression unbearably long winded without making it any simpler, or clearer. Einstein himself wrote “covariant bidimensional tensor” when needed — how does that come out under the 1000 words rule?</i><br />
<i><br /></i>
<i>Also, I find the idea that simple words enable clear expression incredibly naive — germane to the idea that good coding style is a feature of the programming language, rather than the programmer’s. Confused thought breeds confused and confusing expression, vocabulary breadth notwithstanding. (See Gargantua and Pantagruel for amusing examples)</i><br />
<i><br /></i>
<i>Does all this amount to make your editor a tool apt to “dumbing down” (rather than simplifyng) communication? Yes, I am afraid it does.</i><br />
<i><br /></i>
<i>And one last point. English (my second language) has accepted into its fold words that come from many other tongues: latin, french, german, indian, native american. The subset of english words that are familiar to— and therefore immediatley usable by — an Italian is widely different from the one a German — or a Jamaican — would recognise. I have the idea that this alluring diversity within linguistic unity fares rather poorly under 1,000 words rule.</i><br />
<i><br /></i>
And I really loved what Brian Luff said (same thread):<br />
<main class="postArticle-content js-postField js-notesSource" data-scroll="native" role="main" style="margin-bottom: 0px; outline: 0px; position: relative; word-break: break-word; word-wrap: break-word;"></main><br />
<section class=" section--body section--first section--last" name="223e" style="clear: both; margin-top: 20px; padding-bottom: 5px; padding-top: 0px; position: relative;"><div class="section-content">
<div class="section-inner layoutSingleColumn" style="margin: 0px auto; position: relative; right: 0px; transition: right 0.2s; width: 700px;">
<div class="graf--p graf--first" id="44cf" name="44cf" style="font-family: medium-content-serif-font, Georgia, Cambria, 'Times New Roman', Times, serif; letter-spacing: -0.003em; line-height: 1.58;">
<span style="font-size: 21px;">"</span>... although Orwell may have said</div>
<div class="graf--p graf--first" id="44cf" name="44cf" style="font-family: medium-content-serif-font, Georgia, Cambria, 'Times New Roman', Times, serif; letter-spacing: -0.003em; line-height: 1.58;">
<em class="markup--em markup--p-em" style="-webkit-font-feature-settings: 'liga' 1, 'salt' 1; letter-spacing: -0.003em; line-height: 1.58;"><br /></em></div>
<div class="graf--p graf--first" id="44cf" name="44cf" style="font-family: medium-content-serif-font, Georgia, Cambria, 'Times New Roman', Times, serif; letter-spacing: -0.003em; line-height: 1.58;">
<em class="markup--em markup--p-em" style="-webkit-font-feature-settings: 'liga' 1, 'salt' 1; letter-spacing: -0.003em; line-height: 1.58;">Never use a long word when a short one will do</em></div>
<div class="graf--p graf--first" id="44cf" name="44cf" style="font-family: medium-content-serif-font, Georgia, Cambria, 'Times New Roman', Times, serif; letter-spacing: -0.003em; line-height: 1.58;">
<span style="letter-spacing: -0.003em; line-height: 1.58;"><br /></span></div>
<div class="graf--p graf--first" id="44cf" name="44cf" style="font-family: medium-content-serif-font, Georgia, Cambria, 'Times New Roman', Times, serif; letter-spacing: -0.003em; line-height: 1.58;">
<span style="letter-spacing: -0.003em; line-height: 1.58;">he clearly did not mean</span></div>
<div class="graf--p graf-after--p" id="255e" name="255e" style="font-family: medium-content-serif-font, Georgia, Cambria, 'Times New Roman', Times, serif; letter-spacing: -0.003em; line-height: 1.58; margin-top: 29px;">
<em class="markup--em markup--p-em" style="-webkit-font-feature-settings: 'liga' 1, 'salt' 1;">Never use a long word.</em></div>
<div class="graf--p graf-after--p" id="5104" name="5104" style="font-family: medium-content-serif-font, Georgia, Cambria, 'Times New Roman', Times, serif; letter-spacing: -0.003em; line-height: 1.58; margin-top: 29px;">
As far as I know, he never said</div>
<div class="graf--p graf-after--p" id="d35a" name="d35a" style="font-family: medium-content-serif-font, Georgia, Cambria, 'Times New Roman', Times, serif; letter-spacing: -0.003em; line-height: 1.58; margin-top: 29px;">
<em class="markup--em markup--p-em" style="-webkit-font-feature-settings: 'liga' 1, 'salt' 1;">Why use a long word when you can use a lot of short ones instead?</em></div>
<div class="graf--p graf-after--p graf--last" id="0318" name="0318" style="font-family: medium-content-serif-font, Georgia, Cambria, 'Times New Roman', Times, serif; letter-spacing: -0.003em; line-height: 1.58; margin-top: 29px;">
How many short words would I need in order to suggest that your premise is an absurd extrapolation?<span style="font-size: 21px;">"</span></div>
</div>
</div>
</section>Sax Appealhttp://www.blogger.com/profile/04374547857513573488noreply@blogger.com2tag:blogger.com,1999:blog-7554608023176769017.post-44954634306975845282016-02-22T12:02:00.000+01:002016-02-22T13:11:12.285+01:00I giornali e l'effetto amnesia Gell-MannLa fiducia che accordiamo ai media è totalmente immeritata. Tutti noi abbiamo sperimentato quell'effetto che io chiamo <i>"effetto amnesia di Gell-Mann"</i>. (Lo chiamo così perchè una volta ne ho parlato con Murray Gell-Mann, e questo mi permette di citare un nome famoso che conferisce più importanza all'effetto)<br />
<br />
In breve si tratta di questo: aprite il giornale e leggete un articolo su qualcosa che conoscete bene; che so, per Murray potrebbe essere la Fisica, per me, lo spettacolo. Vi rendete conto che il giornalista non sa nulla nè di quello che è successo, nè di quello che è coinvolto, fino al punto, spesso, di capovolgere cause ed effetti. (Il mio nome per queste storie è "L'allagamento della strada provoca un forte acquazzone") I giornali ne sono pieni. Comunque, leggete divertiti - o esasperati - l'articolo con tutti gli assurdi errori che contiene. Poi girate pagina, ad esempio alla sezione Esteri, e riprendete interessati la lettura come se per qualche motivo il giornale possa essere più preciso sulla Palestina che sui fatti dell'articolo che avete appena finito di leggere. Voltate la pagina e dimenticate quello che avete appena imparato.<br />
<br />
Questo è l'effetto amnesia di Gell-Mann.<br />
<br />
Una cosa notevole è che questo effetto non compare in altre aree della nostra esperienza: nella vita di tutti i giorni, quando sappiamo che qualcuno ci mente regolarmente o che distorce i fatti in altri modi, impariamo presto a non dargli retta. In tribunali, si applica normalmente il principio <i>falsus in uno, falsus in omnibus </i><b> - </b>se una parte è falsa, è falso tutto il resto. E tuttavia nel caso del giornale (e degli altri media) continuiamo a credere, irragionevolemente, che valga la pena prendersi il tempo di leggere gli altri articoli, benché sia quasi certo che si tratti uno spreco di tempo. L'unica spiegazione per questo tipo di comportamento è l'amnesia.<br />
<br />
<i>- Michael Chricton “Why Speculate?”, 2002</i><br />
<br />
<br />
<br />
<br />
"Media carries with it a credibility that is totally undeserved. You have all experienced this, in what I call the Murray Gell-Mann Amnesia effect. (I call it by this name because I once discussed it with Murray Gell-Mann, and by dropping a famous name I imply greater importance to myself, and to the effect, than it would otherwise have.)<br />
<br />
Briefly stated, the Gell-Mann Amnesia effect works as follows. You open the newspaper to an article on some subject you know well. In Murray’s case, physics. In mine, show business. You read the article and see the journalist has absolutely no understanding of either the facts or the issues. Often, the article is so wrong it actually presents the story backward-reversing cause and effect. I call these the “wet streets cause rain” stories. Paper’s full of them. In any case, you read with exasperation or amusement the multiple errors in a story-and then turn the page to national or international affairs, and read with renewed interest as if the rest of the newspaper was somehow more accurate about far-off Palestine than it was about the story you just read. You turn the page, and forget what you know.<br />
<br />
That is the Gell-Mann Amnesia effect.<br />
<br />
I’d point out it does not operate in other arenas of life. In ordinary life, if somebody consistently exaggerates or lies to you, you soon discount everything they say. In court, there is the legal doctrine of falsus in uno, falsus in omnibus, which means untruthful in one part, untruthful in all. But when it comes to the media, we believe against evidence that it is probably worth our time to read other parts of the paper. When, in fact, it almost certainly isn’t. The only possible explanation for our behavior is amnesia."<br />
<br />
<i>- Michael Chricton “Why Speculate?”, 2002</i><br />
<div>
<i><br /></i></div>
Sax Appealhttp://www.blogger.com/profile/04374547857513573488noreply@blogger.com0tag:blogger.com,1999:blog-7554608023176769017.post-37505735001394830942015-12-23T10:05:00.000+01:002015-12-23T10:05:04.784+01:00Using Linux LVM snapshots to run "experiments" on VMs<br />
I am going to show how to create a <a href="https://en.wikipedia.org/wiki/Logical_Volume_Manager_(Linux)" target="_blank">LVM</a> (Logical Volume Manager) snapshot and use it to return its base to a previous state.<br />
<div>
<br />
This is useful for experiments, e.g on a LVM-based virtual machine (VM):<br />
<div class="level1">
<ul>
<li class="level1"><div class="li">
take a partition snapshot of the FS where the VM lives.</div>
</li>
<li class="level1"><div class="li">
experiment with the VM (make config changes etc.)</div>
</li>
<li class="level1"><div class="li">
if your tests are successful, lvremove the snapshot and keep the experiment's results</div>
</li>
<li class="level1"><div class="li">
if you want to discard the tests, <strong>stop the VM</strong> then lvconvert –merge -v <snapshot> will restore the partition to its snapshot state.</div>
</li>
</ul>
</div>
<h2 class="sectionedit2" id="check_required_capabilities">
Check required capabilities</h2>
<div class="level2">
<pre class="code"><span style="color: #38761d;"><b># dmsetup targets
zero v1.1.0
mirror v1.13.2
snapshot-merge v1.3.0
snapshot-origin v1.9.0
snapshot v1.13.0
striped v1.5.1
linear v1.2.1
error v1.3.0
</b></span></pre>
<br />
For the rest of the tutorial to work, we need the <strong>snapshot-merge</strong> target to exist.
<br />
If (as it happened to me) you run this on a machine with no kernel support for merging, you will be stumped in the last passage (lvcreate –merge). You can get out of this pickle by either:
<br />
<ol>
<li class="level1"><div class="li">
Grabbing a Live DVD of a distribution that has merge support</div>
</li>
<li class="level1"><div class="li">
run the last step from the live environment</div>
</li>
</ol>
or:
<br />
<ol>
<li class="level1"><div class="li">
Boot rescue from a distribution that has merge support</div>
</li>
<li class="level1"><div class="li">
Do not mount the LV partitions involved when/if asked</div>
</li>
<li class="level1"><div class="li">
run the last step from the rescue environment</div>
</li>
</ol>
While the first course of action worked perfectly in my case, it is the second one that <a class="urlextern" href="https://access.redhat.com/solutions/58510" rel="nofollow" target="_blank" title="https://access.redhat.com/solutions/58510">redhat reccommends</a>. When I tried it, however, the rescue environment was missing the required device files /dev/SataGroup and I could not proceed.
</div>
<h2 class="sectionedit3" id="create_volume_make_a_filesystem_mount_it">
Create volume, make a filesystem, mount it.</h2>
<div class="level2">
<pre class="code"><b><span style="color: #38761d;"># lvcreate --size 100m -n test SataGroup01
# mkfs.ext2 /dev/SataGroup01/test
# mkdir /tmp/test
# mount /dev/SataGroup01/test /tmp/test
# cd /tmp/test
# ls
# mkdir a{0..2}
# ls
a0 a1 a2 lost+found
# for i in {0..2}; do touch a$i/b$i ; done
# ls a0
b0</span></b></pre>
</div>
<h2 class="sectionedit4" id="create_a_snapshot_on_the_base_volume_then_mount_it">
Create a snapshot on the base volume, then mount it.</h2>
<div class="level2">
When the snapshot is created<strong>, care must be taken to make a large enough snapshot to avoid filling it</strong>. If the snapshot fills up, you will end up with a stuck snapshot and you'll have to go to hell and back to get rid of it (I may show how in a followup post).<br />
<br />
<pre class="code"><span style="color: #38761d;"><b># lvcreate --snapshot --size 100m -n test-snap /dev/SataGroup01/test
# mkdir /tmp/test-snap
# mount /dev/SataGroup01/test-snap /tmp/test-snap</b></span></pre>
<span style="color: #38761d;"><b>The contents of the volumes are identical:
</b></span><br />
<pre class="code"><span style="color: #38761d;"><b># ls /tmp/test
a0 a1 a2 lost+found
[root@cane test]# ls /tmp/test-snap/
a0 a1 a2 lost+found</b></span></pre>
<span style="color: #38761d;"><b>Change them in different ways:
</b></span><br />
<pre class="code"><span style="color: #38761d;"><b># mkdir /tmp/test/b0
# rm -rf /tmp/test/a1
# mkdir /tmp/test-snap/c0
# ls /tmp/test*
/tmp/test:
a0 a2 b0 lost+found
/tmp/test-snap:
a0 a1 a2 c0 lost+found
</b></span></pre>
<pre class="code">
</pre>
Now unmount them:
<br />
<pre class="code"><b><span style="color: #38761d;">
</span></b></pre>
<pre class="code"><b><span style="color: #38761d;"># umount /tmp/test
# umount /tmp/test-test snap</span></b></pre>
</div>
<h2 class="sectionedit5" id="end_the_experiment">
End the experiment</h2>
<div class="level2">
If we now throw away test-snap, we'd be left with the changes done in test.
If we want to back up our changes, and keep what was done in snap instead, do:
<br />
<br />
<pre class="code"><b><span style="color: #38761d;"># lvconvert --merge -v /dev/SataGroup01/test-snap
Using logical volume(s) on command line.
Archiving volume group "SataGroup01" metadata (seqno 41).
Loading SataGroup01-test-real table (253:14)
Suppressed SataGroup01-test-real (253:14) identical table reload.
Loading SataGroup01-test--snap-cow table (253:15)
Suppressed SataGroup01-test--snap-cow (253:15) identical table reload.
Loading SataGroup01-test table (253:16)
Loading SataGroup01-test--snap table (253:17)
Not monitoring SataGroup01/snapshot0
Suspending SataGroup01-test (253:16) with filesystem sync with device flush
Suspending SataGroup01-test--snap (253:17) with filesystem sync with device flush
Suspending SataGroup01-test-real (253:14) with filesystem sync with device flush
Suspending SataGroup01-test--snap-cow (253:15) with filesystem sync with device flush
Loading SataGroup01-test-real table (253:14)
Suppressed SataGroup01-test-real (253:14) identical table reload.
Loading SataGroup01-test--snap-cow table (253:15)
Suppressed SataGroup01-test--snap-cow (253:15) identical table reload.
Resuming SataGroup01-test-real (253:14)
Resuming SataGroup01-test--snap-cow (253:15)
Resuming SataGroup01-test (253:16)
Resuming SataGroup01-test--snap (253:17)
Creating volume group backup "/etc/lvm/backup/SataGroup01" (seqno 42).
Merging of volume test-snap started.
Checking progress before waiting every 15 seconds
test: Merged: 100.0%
Merge of snapshot into logical volume test has finished.
Archiving volume group "SataGroup01" metadata (seqno 42).
Removing snapshot test-snap
Loading SataGroup01-test table (253:16)
Loading SataGroup01-test--snap table (253:17)
Suspending SataGroup01-test (253:16) with device flush
Suspending SataGroup01-test--snap (253:17) with device flush
Suspending SataGroup01-test--snap-cow (253:15) with device flush
Suspending SataGroup01-test-real (253:14) with device flush
Resuming SataGroup01-test--snap-cow (253:15)
Resuming SataGroup01-test-real (253:14)
Resuming SataGroup01-test (253:16)
Removing SataGroup01-test-real (253:14)
Removing SataGroup01-test--snap (253:17)
Removing SataGroup01-test--snap-cow (253:15)
Releasing logical volume "test-snap"
Creating volume group backup "/etc/lvm/backup/SataGroup01" (seqno 44).
Logical volume "test-snap" successfully removed</span></b></pre>
<br />
We have kept the changes originally in the snapshot volume (which as been removed by lvconvert);
a1 has come back, b0 is gone, c0 - from test-snap - is now in place:
<br />
<pre class="code">
</pre>
<pre class="code"><b><span style="color: #38761d;"># ls /tmp/test/ /tmp/test/a1
/tmp/test/:
a0 a1 a2 c0 lost+found
/tmp/test/a1:
b1</span></b></pre>
</div>
</div>
Sax Appealhttp://www.blogger.com/profile/04374547857513573488noreply@blogger.com0tag:blogger.com,1999:blog-7554608023176769017.post-29544755097845432102015-11-26T12:30:00.001+01:002015-11-26T12:44:00.685+01:00Mojibake and the horrors of database encoding.I gave <a href="http://sax-appeal.blogspot.it/2009/12/unicode-and-encoding-problem.html" target="_blank">several sound and wise advices</a> (If I say so myself) in the past when writing about character encodings, whle stopping on the threshold of DBMS encodings with some smartass comment like "God helps you if you must".
<br />
<br />
So it was just appropriate that I should go into that same task and that it bit me in the arse in revenge. (Background: my company hosts several legacy LAMP sites which had originally been set up with very little thought given to character encodings and all that).
<br />
<br />
And so it was that - having read a few <a href="http://www.stackoverflow.com/" target="_blank">StackOverflow</a> posts on the subject - I started handling a multilingual, latin1 encoded, MySql database with what turned out to be a very hazy understanding of the subject, took a several misguided turns and ended with a character soup. In truth, the character soup was probably there to begin with, and I just made it worse, although the changes I made in the (panicked) attempts to fix it just concurred to make it quite hard to sort out.
<br />
<br />
Of course, all this happened before I ran across two (<a href="http://jonisalonen.com/2010/mysql-character-encoding/" target="_blank">1</a> and <a href="http://jonisalonen.com/2012/fixing-doubly-utf-8-encoded-text-in-mysql/" target="_blank">2</a>) wise posts on the subject by Joni Salonen. He knows his stuff, and, had I known it in advance, I would have toiled less. So most of what follows was learned the hard way (trial and error). I am presenting it here compounded with what I learned from Joni's posts.
<br />
<br />
<a href="https://en.wikipedia.org/wiki/Mojibake" target="_blank">Mojibake </a>(a japanese word, and not by chance: asians I guess have a lot of encoding fun) was for me entirely out of the equation - I know better now. For europeans, this is a common form of mojibake (courtesy of <a href="http://www.ltg.ed.ac.uk/~richard/" target="_blank">Richard Tobin</a>'s <a href="http://www.ltg.ed.ac.uk/~richard/utf-8.cgi?input=302+235&mode=obytes" target="_blank">useful tool</a>:
<br />
<br />
<tt></tt><br />
<pre><tt><code>
Character: è
Character name: LATIN SMALL LETTER E WITH GRAVE
Hex code point: 00E8
Decimal code point: 232
Hex UTF-8 bytes: C3 A8
Octal UTF-8 bytes: 303 250
UTF-8 bytes as Latin-1 characters bytes: Ã ¨
</code></tt></pre>
<br />
<br />
Mojibake (in one of its simplest forms) is when you start with a UTF8 encoded character top row which is (at one point of its life) mistaken as two latin1 chars (bottom row). This is usually compounded by something (someone) taking the two not-quite-latin1 characters and encoding them back to UTF8 (for european alphabets this normally means you now have four bytes).
<br />
<br />
Oh, and let's not forget about <a href="https://en.wikipedia.org/wiki/Windows-1252" target="_blank">Windows-1252</a>, helpfully using bytes 128-159 for characters the are UTF8-encoded in three byte sequences (most sighted as single/double quotes, often a result of copy-paste from word). Eg:
<br />
<br />
<tt></tt><br />
<pre><tt><code>
Character „
Character name DOUBLE LOW-9 QUOTATION MARK
Hex code point 201E
Decimal code point 8222
Hex UTF-8 bytes E2 80 9E
Octal UTF-8 bytes 342 200 236
UTF-8 bytes as Latin-1 characters bytes â [80] [9E]
</code></tt></pre>
<br />
<br />
This is just the beginning of the story, though. When trying to understand just what is going on with your DBMS (mysql, in this case) you should bear in mind that each link of the chain has its own idea of what encoding is being used and may (or may not) decide to make it "easier" for you by converting, from the encoding it thinks are your strings in, to the one it is using. It may get it wrong: if it does not, you will - if you believe to the characters you see - and will end up with egg on your face (mojibake, scrambled).
<br />
<br />
The links you should be aware of are:
<br />
<ul>
<li>the server (holds the truth, but won't tell)
</li>
<li>the client (it lies: it has a default encoding that won't tell)
</li>
<li>the terminal (may be lying: check your $LANG)
</li>
<li>the operating system (probably an innnocent bystander)
</li>
<li>your editor (It lies. Maybe. See later.)
</li>
</ul>
<br />
The server. Mysql has what it calls 'default encodings': they exist for the database, for the table, for the single column of the database. If you tell it nothing, mysql defaults to latin1 (there are good reasons for this: holding a multilingual catalog, however is not one). The clients, meanwhile, have their own idea of the encodings that the incoming/outgoing characters are in. The most typical SNAFUs: UTF8 characters stored as couples of latin1 chars in a latin1 table. It will display as character soup, and if now you ALTER TABLE to change the encoding (mysql doing automatic conversions for you), you will end up with the double encoded mojibake I mentioned above.
<br />
<br />
You can have even more fun if you have the (not) brilliant idea (advocated by several posts on the 'net) to do the DB conversion by dumping the databas to a file (mysqldump), edit it to change the default latin1 encodings to utf8, and then run a conversion tool the like of iconv/uconv to modify the (supposedly) latin1 characters to utf8, and then feed the result to mysql. Don't. What you are not realising here is that - when dumping - the characters are being output in the encoding that the client is using - which these days is most often utf8, if the client is the command line mysql tool and your terminal is using a .utf8 locale. Running iconv on the dump, then, accomplishes the "fine" result of doubly encoding all the characters which are already utf8.
<br />
<br />
What to do then? There is a good a case, and a host of bad cases.
<br />
<br />
Regardless of the situation you are in, you should try your best to know what you are exactly looking at - when in doubt reach for an hex editor/viewer (bvi, emacs' hexl, hexdump, xxd). This seems silly but consider that, when you see the sequence 'è', your instinct will be telling you that you are looking at a UTF8 char displayed on a latin1 device. But throw mojibake in, and you may well have two UTF8 characters as displayed by a UTF8 device. Looking at the actual bytes will give you certainty.
<br />
<br />
Also locking every chain of your environment in utf8 will help, and will also prevent future mixups. This is how I do it.
For mysql, I put this in my.cnf:
<br />
<br />
<tt></tt><br />
<pre><tt><code>
[mysqld]
; this inhibits start on v5.5 (a bug)
; default-character-set=utf8
character-set-server=utf8
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
skip-character-set-client-handshake</code></tt></pre>
<pre><code>... </code></pre>
<pre><code>[</code>client]</pre>
<pre>default-character-set=utf8</pre>
<br />
<br />
This alone should be enough. However you always want to be explicit so be sure that (wher you are in charge of this things) the db connection strings specify the encoding eg. (php,PDO):
<br />
<br />
<tt></tt><br />
<pre><tt><code>
"mysql:host=localhost;dbname=test;charset=utf8"
</code></tt></pre>
<br />
<br />
In your terminal, be sure that locale-related variables are utf8 aware (e.g: LANG=en_US.UTF-8). Your editor should be modern, UTF8 aware, and prefer the UTF8 encoding when in doubt (e.g., for emacs, run versione greater than 21.3, and ‘M-x prefer-coding-system utf-8' or have (prefer-coding-system 'utf-8) in your .emacs)
<br />
<br />
With this, you will be sure that every link of your chain is thinking UTF8 - for CLI mysql, you can confirm it with:
<br />
<br />
<tt></tt><br />
<pre><tt><code>
mysql> SHOW VARIABLES LIKE 'character_set%'; SHOW VARIABLES LIKE 'collation%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_unicode_ci |
| collation_database | utf8_unicode_ci |
| collation_server | utf8_unicode_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)
</code></tt></pre>
<br />
<br />
I also put
<br />
<br />
<tt></tt><br />
<pre><tt><code>
AddDefaultCharset UTF-8
...
AddCharset utf-8 .html .css .php .txt .js
</code></tt></pre>
<br />
<br />
In Apache's config for the involved web sites.
<br />
<br />
And note, here I am talking about small DBs, therefore giving little, if any, consideration to performance, conversion times, and somesuch. If you have multiGB DBs with full text indexes that take days to rebuild or somesuch, you should research the topic for your specific requirements.
<br />
<br />
In the good case, you have a coherent latin1 encoding environment. If so, just issuing
<br />
<br />
<tt></tt><br />
<pre><tt><code>
ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
</code></tt></pre>
<br />
<br />
should do the deed. Watch out that
<br />
<br />
<tt></tt><br />
<pre><tt><code>
ALTER TABLE tbl CHARACTER SET utf8
</code></tt></pre>
<br />
<br />
(notice the missing "convert to"?) will change the default encoding, but will do no conversion, leave the encoding of the existing columns as it is and confuse the hell out of you.<br />
<br />
And, if you already are in this unfortunate situation, this may sort of help you (assuming your column is CHAR(50)):
<br />
<br />
<tt></tt><br />
<pre><tt><code>
ALTER TABLE t MODIFY col1 CHAR(50) CHARACTER SET utf8;
</code></tt></pre>
<br />
<br />
This snippet - http://stackoverflow.com/questions/8906813/how-to-change-the-default-charset-of-a-mysql-table - will cobble the queries for your entire table set:
<br />
<br />
<tt></tt><br />
<pre><tt><code>
SELECT concat('alter table ', table_name, ' </code></tt></pre>
<pre><tt><code> CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;') </code></tt></pre>
<pre><tt><code> FROM information_schema.tables WHERE table_schema='your_database_name' </code></tt></pre>
<pre><tt><code> AND table_collation != 'utf8_general_ci' GROUP BY table_name;
</code></tt></pre>
<br />
<br />
As an alternative, you may mysqldump your (smallish) database, edit the resulting file, change all latin1 occurrences to utf8 and reload into a fresh database (defaulting to utf8, of course).
<br />
<br />
Bad cases are plentiful, but from my experience, have mostly to do with double-encodings (see above) or mixed encodings. Because I do not think my personal struggles with them are of great interest, I will refer you again to the excellent posts of Joni on the subject. Print them. Study them. And may mojibake never cme close to your DBs.
<br />
<br />
<b>Appendix:</b>
<br />
<br />
The following bash script reports on the encodings in effect on a particular (or all) database, table.
<br />
<br />
<tt></tt><br />
<pre><tt><code>
#!/bin/bash
ver=0.1
author="Alessandro Forghieri <alf orion.it="">"
name=`basename $0`
sa_usage () { echo "usage: $0 [-l] [-t] [-c] [db [table [column]" ; }
usage () {
echo "$name $ver $author"
echo
echo $(sa_usage)
echo
echo " -l like dbname "
echo " -t like tablename"
echo " -c like columnname"
echo "report on database encodings"
echo
}
# getopts optstring name [args]
while getopts dvltc opt ; do
case "$opt" in
d) set -v ;;
v) opt_v=1 ;;
l) opt_l=1 ;;
t) opt_t=1 ;;
c) opt_c=1 ;;
?) usage; exit ;;
esac
done
shift `expr $OPTIND - 1`
#http://stackoverflow.com/questions/1049728/how-do-i-see-what-character-set-a-mysql-database-table-column-is
echo "======================"
echo "SHOW VARIABLES LIKE 'character_set%'; SHOW VARIABLES LIKE 'collation%';" | mysql
echo "======================"
CSET_DB="SCHEMA_NAME AS name,DEFAULT_CHARACTER_SET_NAME AS encoding,DEFAULT_COLLATION_NAME AS collation"
if [[ x$1 == x ]]; then
CLAUSE_DB=""
else
if [[ x$opt_l == x ]]; then
CLAUSE_DB="WHERE schema_name = '$1'"
else
CLAUSE_DB="WHERE schema_name like '$1'"
fi
fi
echo "SELECT $CSET_DB FROM information_schema.schemata $CLAUSE_DB" | mysql
[[ x$1 == x ]] && exit 0;
[[ x$opt_l != x ]] && exit 0;
echo "======================"
if [[ x$opt_l == x ]]; then
CLAUSE_DB=" AND T.table_schema='$1' "
else
CLAUSE_DB=" WHERE T.table_schema like '$1' "
fi
if [[ x$2 != x ]] ; then
if [[ x$opt_t == x ]]; then
CLAUSE_TABLE=" AND T.table_name = '$2' "
else
CLAUSE_TABLE=" AND T.table_name like '$2' "
fi
fi
CSET2="T.TABLE_SCHEMA, T.TABLE_NAME, CCSA.character_set_name"
echo "SELECT $CSET2 FROM information_schema.TABLES T,information_schema.COLLATION_CHARACTER_SET_APPLICABILITY CCSA WHERE CCSA.collation_name = T.table_collation $CLAUSE_DB $CLAUSE_TABLE" | mysql
echo "======================"
if [[ x$opt_l == x ]]; then
CLAUSE_DB=" WHERE table_schema='$1' "
else
CLAUSE_DB=" WHERE table_schema like '$1' "
fi
if [[ x$2 != x ]] ; then
if [[ x$opt_t == x ]]; then
CLAUSE_TABLE=" AND table_name = '$2' "
else
CLAUSE_TABLE=" AND table_name like '$2' "
fi
fi
if [[ x$3 != x ]] ; then
if [[ x$opt_c == x ]]; then
CLAUSE_COLUMN=" AND column_name = '$3' "
else
CLAUSE_COLUMN=" AND column_name like '$3' "
fi
fi
CSET3="TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME , CHARACTER_SET_NAME"
echo "SELECT $CSET3 FROM information_schema.COLUMNS $CLAUSE_DB $CLAUSE_TABLE $CLAUSE_COLUMN" | mysql
</alf></code></tt></pre>
Sax Appealhttp://www.blogger.com/profile/04374547857513573488noreply@blogger.com0tag:blogger.com,1999:blog-7554608023176769017.post-34803302308528314472015-10-12T16:00:00.000+02:002015-10-12T16:00:20.008+02:00Di un libro quasi comperato (grazie al cane). Quasi una recensione, quindi.<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="http://i.imgur.com/FC7lwWm.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" src="http://i.imgur.com/FC7lwWm.jpg" height="240" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Ritratto di Marie salvatrice</td></tr>
</tbody></table>
In una delle mie puntate in libreria del Sabato mattina, ho preso in mano il libro di <a href="https://en.wikipedia.org/wiki/Yanis_Varoufakis" target="_blank">Yanis Varoufakis</a>, "E' l'economia che cambia il mondo". Mi dirigevo verso la cassa, deciso ad acquistarlo, quando <a href="http://i.imgur.com/FC7lwWm.jpg" target="_blank">Marie</a> (il mio cane di 5 anni, e compagna delle mie passeggaite di Sababto mattina. Illustrata a sinistra), ha deciso, come fanno quelli della sua specie che non avrebbe mai e poi mai potuto abbandonare il negozio senza avere prima placato la sua sete di conoscenza annusando un odore - quasi certamente rivoltante - che proveniva dall'angolo opposto a quello dove si trova la cassa. Ve beh, è Sabato per me e anche per il cane - mi sono detto assecondandola. Mentre lasciavo che annusasse a sazietà, ho adocchiato una poltroncina modello IKEA che la provvidenza libraia aveva messo proprio a portata delle mie terga, e mi ci sono accomodato iniziando a sfogliare il libro, mentre Marie si posizionava strategicamente nel punto di massimo ingombro, in modo da far inciampare tutti quelli che passassero nel raggio di una ventina di metri dalla mia postazione.<br />
<br />
Questo contrattempo in forma di cane ha fatto sì che mi rendessi conto che Yanis:<br />
<br />
<ul>
<li>Scrive con l'abusato e ormai quasi insopportabile artificio retorico di "X spiegato a mia figlia";</li>
<li>Ritiene che l'agricoltura sia stata inventata dagli europei perché avevano depauperato l'ambiente...</li>
<li>...ma non dagli australiani che "vivevano in armonia con la natura" creando miti e opere d'arte "di rilevantissimo valore culturale"...</li>
<li>...mentre gli africani (che avevano anch'essi l'agricoltura: perché, Yanis non lo spiega) non sono riusciti a dominare l'Europa perchè per motivi cliematici non potevano trapiantare le loro colture da Sud a Nord;</li>
<li>Ritiene che la rivoluzione industriale britannica sia stata causata dai proprietari feudali per riciclare il surplus di manodopera nelle industrie, e che questo abbia disgraziatamente distrutto la millenarie tradizioni agricole feudali. Questo viene scritto con una vena di rimpianto - I kid you not - mentre il fatto che in altre regioni d'Europa il permanere di quelle millenarie tradizioni risultasse oin crisi alimentari e (orribili) carestie periodiche pare non turbare più di tanto il Nostro.</li>
<li>Ritiene che tutta la storia umana sia una di sopraffazione in perpetuo inseguimento del surplus, che solo pochi saggi gruppi umani evitano. Gli aborigeni australiani sono l'unico esempio in cui mi sono imbattuto.</li>
<li>Generalmente pensa che il modo migliore di risolvere ogni problema economico sia attraverso una legge impositiva creata dal "Governo" la cui (del Governo) bontà è sempre data per certa.</li>
</ul>
<div>
A queso punto Marie ha visto un beagle uscire dalla libreria e ha dato chiari segni di volerlo seguire, strappandomi dalla marea di insulsaggini in cui Varoufakis mi stava avviluppando. Ho riposto il libro nello scaffale, e, decidendo che stava molto meglio lì, sono uscito dal negozio. Grazie al cane.</div>
<div>
<br /></div>
Sax Appealhttp://www.blogger.com/profile/04374547857513573488noreply@blogger.com0tag:blogger.com,1999:blog-7554608023176769017.post-9643533985907518632015-10-07T10:08:00.001+02:002015-10-07T10:08:35.617+02:00La biblioteca, incarnataUn programmatore umanista di genio - e mio fratello spirituale - <a href="https://libraryofbabel.info/" target="_blank"><b>ha realizzato in concreto</b></a> il vasto edificio intellettuale che fino ad ora si poteva solo contemplare nel racconto <i><a href="http://web.mclink.it/MK1027/BIOPARCO/DOWNLOAD/labibliotecadibabele.pdf" target="_blank">"La biblioteca di Babele"</a>, </i>contenuto nella raccolta <i>"Finzioni" </i>dell'immenso autore argentino <a href="https://en.wikipedia.org/wiki/Jorge_Luis_Borges" target="_blank">Jorge Luis Borges</a>.<br />
<br />
Si tratta di un sito che mi tocca particolarmente da vicino, perché ricordo ancora come(*) scoprii questo capolavoro, e lo stupore e la meraviglia di cui mi riempì.<br />
<br />
<a href="https://libraryofbabel.info/bookmark.cgi?la_biblioteca_de_babel_p.0" target="_blank">Come</a> previsto da <a href="https://libraryofbabel.info/bookmark.cgi?la_biblioteca_de_babel_p.1" target="_blank">Borges</a> la <a href="https://libraryofbabel.info/bookmark.cgi?la_biblioteca_de_babel_p.2" target="_blank">Biblioteca</a> contiene <a href="https://libraryofbabel.info/bookmark.cgi?la_biblioteca_de_babel_p.3" target="_blank">anche</a> la propria <a href="https://libraryofbabel.info/bookmark.cgi?la_biblioteca_de_babel_p.4" target="_blank">descrizione</a> espressa con <a href="https://libraryofbabel.info/bookmark.cgi?la_biblioteca_de_babel_p.5" target="_blank">le stesse parole</a> usate dall'autore <a href="https://libraryofbabel.info/bookmark.cgi?la_biblioteca_de_babel_p.6" target="_blank">nel racconto omonimo</a>.<br />
<br />
Gli attuali limiti dell'algoritmo usato fanno sì che la descrizione che si può trovare oggi sia spezzettata in sei parti (i link del paragrafo precedente) e la mia pigrizia che la traslitterazione dallo spagnolo sia imperfetta specie nelle accentate. Ma è certo che una traslitterazione impeccabile, in unico brano continuo e conforme <a href="http://www.literaberinto.com/vueltamundo/bibliotecaborges.htm" target="_blank">all'originale</a>, vi è contenuta, così come la <a href="http://www.neteditor.it/content/199854/la-biblioteca-di-babele-di-jorge-luis-borges-prima-parte-versione-imago-litweb" target="_blank">sua traduzione in Italiano</a>, ed in ogni altra lingua concepibile.
<br />
<br />
Il sito permette di cercare qualsiasi combinazione di 3200 caratteri di ricordarne la collocazione, che è immutabile.<br />
<br />
Questo testo, naturalmente, è superfluo - <a href="https://libraryofbabel.info/bookmark.cgi?blogpost" target="_blank">la biblioteca lo contiene già.</a><br />
<hr />
(*) Il racconto era in appendice alla bellissima antologia, curata da Fruttero e Lucentini <i><a href="https://it.wikipedia.org/wiki/Il_secondo_libro_della_fantascienza" target="_blank">"Il secondo libro della fantascienza"</a>, </i>che, a 11 anni, avevo divorato dopo avere scoperto la non meno bella antologia di cui quella era il seguito, <i><a href="https://it.wikipedia.org/wiki/Le_meraviglie_del_possibile" target="_blank">"Le meraviglie del possibile"</a>, </i>Einaudi, 1959<i>.</i>
<br />
<hr />
<h1>
</h1>
<h1>
LA BIBLIOTECA DI BABELE (J. L. BORGES)</h1>
L'universo (che altri chiama la Biblioteca) si compone d'un numero
indefinito, e forse infinito, di gallerie esagonali, con vasti pozzi
di ventilazione nel mezzo, bordati di basse ringhiere. Da qualsiasi
esagono si vedono i piani superiori e inferiori, interminabilmente. La
distribuzione degli oggetti nelle gallerie è invariabile. Venticinque
vasti scaffali, in ragione di cinque per lato, coprono tutti i lati
meno uno; la loro altezza, che è quella stessa di ciascun piano, non
supera di molto quella d'una biblioteca normale. Il lato libero dà su
un angusto corridoio che porta a un'altra galleria, identica alla
prima e a tutte. A destra e a sinistra del corridoio vi sono due
gabinetti minuscoli. Uno permette di dormire in piedi; l'altro di
soddisfare le necessità fecali. Di qui passa la scala spirale, che si
inabissa e s'innalza nel remoto. Nel corridoio è uno specchio, che
fedelmente duplica le apparenze. Gli uomini sogliono inferire da
questo specchio che la Biblioteca non è infinita (se realmente fosse
tale, perché questa duplicazione illusoria?), io preferisco sognare
che queste superfici argentate figurino e promettano l'infinito... La
luce procede da frutti sferici che hanno il nome di lampade. Ve ne
sono due per esagono, su una traversa. La luce che emettono è
insufficiente, incessante.<br />
<br />
Come tutti gli uomini della Biblioteca, in gioventù io ho viaggiato;
ho peregrinato in cerca di un libro, forse del catalogo dei cataloghi;
ora che i miei occhi quasi non possono decifrare ciò che scrivo, mi
preparo a morire a poche leghe dall'esagono in cui nacqui. Morto, non
mancheranno mani pietose che mi gettino fuori della ringhiera; mia
sepoltura sarà l'aria insondabile; il mio corpo affonderà lungamente e
si corromperà e dissolverà nel vento generato dalla caduta, che è
infinita. Io affermo che la Biblioteca è interminabile. Gli idealisti
argomentano che le sale esagonali sono una forma necessaria dello
spazio assoluto, per lo meno, della nostra intuizione dello spazio.<br />
<br />
Ragionano che è inconcepibile una sala triangolare o pentagonale. (I
mistici pretendono di avere, nell'estasi, la rivelazione d'una camera
circolare con un gran libro circolare dalla costola continua, che fa
il giro completo delle pareti; ma la loro testimonianza è sospetta; le
loro parole, oscure. Questo libro ciclico è Dio). Mi basti, per ora,
ripetere la sentenza classica: «La Biblioteca è una sfera il cui
centro esatto è qualsiasi esagono, e la cui circonferenza è
inaccessibile».<br />
<br />
A ciascuna parete di ciascun esagono corrispondono cinque scaffali;
ciascuno scaffale contiene trentadue libri di formato uniforme;
ciascun libro è di quattrocentodieci pagine; ciascuna pagina, di
quaranta righe; ciascuna riga, di quaranta lettere di colore nero. Vi
sono anche delle lettere sulla costola di ciascun libro; non, però,
che indichino o prefigurino ciò che diranno le pagine. So che questa
incoerenza, un tempo, parve misteriosa. Prima d'accennare alla
soluzione (la cui scoperta, a prescindere dalle sue tragiche
proiezioni, è forse il fatto capitale della storia) voglio rammentare
alcuni assiomi.<br />
<br />
Primo: La Biblioteca esiste ab aeterno. Di questa verità, il cui
corollario immediato è l'eternità futura del mondo, nessuna mente
ragionevole può dubitare. L'uomo, questo imperfetto bibliotecario, può
essere opera del caso o di demiurghi malevoli; l'universo, con la sua
elegante dotazione di scaffali, di tomi enigmatici, di infaticabili
scale per il viaggiatore e di latrine per il bibliotecario seduto, non
può essere che l'opera di un dio. Per avvertire la distanza che c'è
tra il divino e l'umano, basta paragonare questi rozzi, tremuli
simboli che la mia fallibile mano sgorbia sulla copertina d'un libro,
con le lettere organiche dell'interno: puntuali, delicate, nerissime,
inimitabilmente simmetriche.<br />
<br />
Secondo: Il numero dei simboli ortografici è di venticinque. Questa
constatazione permise, or sono tre secoli, di formulare una teoria
generale della Biblioteca e di risolvere soddisfacentemente il
problema che nessuna congettura aveva permesso di decifrare: la natura
informe e caotica di quasi tutti i libri. Uno di questi, che mio padre
vide in un esagono del circuito quindici novantaquattro, constava
delle lettere M C V, perversamente ripetute dalla prima all'ultima
riga. Un altro (molto consultato in questa zona) è un mero labirinto
di lettere, ma l'ultima pagina dice Oh tempo le tue piramidi. È ormai
risaputo: per una riga ragionevole, per una notizia corretta, vi sono
leghe di insensate cacofonie, di farragini verbali e di
incoerenze. (So d'una regione barbarica i cui bibliotecari ripudiano
la superstiziosa e vana abitudine di cercare un senso nei libri, e la
paragonano a quella di cercare un senso nei sogni o nelle linee
caotiche della mano... Ammettono che gli inventori della scrittura
imitarono i venticinque simboli naturali, ma sostengono che questa
applicazione è casuale, e che i libri non significano nulla di per
sé. Questa affermazione, lo vedremo, non è del tutto erronea). Per
molto tempo si credette che questi libri impenetrabili
corrispondessero a lingue preterite o remote. Ora, è vero che gli
uomini più antichi, i primi bibliotecari, parlavano una lingua molto
diversa da quella che noi parliamo oggi; è vero che poche miglia a
destra la lingua è già dialettale, e novanta piani più sopra è
incomprensibile. Tutto questo, lo ripeto, è vero, ma quattrocentodieci
pagine di inalterabili M C V non possono corrispondere ad alcun
idioma, per dialettale o rudimentale che sia. Altri insinuarono che
ogni lettera poteva influire sulla seguente, e che il valore di M C V
nella terza riga della pagina 71 non era lo stesso di quello che la
medesima serie poteva avere in altra riga di altra pagina; ma questa
vaga tesi non prosperò. Altri pensarono a una crittografia; questa
ipotesi è stata universalmente accettata, ma non nel senso in cui la
formularono i suoi inventori.<br />
<br />
Cinquecento anni fa, il capo d'un esagono superiore trovò un libro
tanto confuso come gli altri, ma in cui v'erano quasi due pagine di
scrittura omogenea, verosimilmente leggibile.<br />
<br />
Mostrò la sua scoperta a un decifratore ambulante, e questo gli disse
che erano scritte in portoghese; altri gli dissero che erano scritte
in yiddish. Poté infine stabilirsi, dopo ricerche che durarono quasi
un secolo, che si trattava d'un dialetto samoiedo-lituano del guaraní,
con inflessioni di arabo classico. Si decifrò anche il contenuto:
nozioni di analisi combinatoria, illustrate con esempi di permutazioni
a ripetizione illimitata. Questi esempi permisero a un bibliotecario
di genio di scoprire la legge fondamentale della Biblioteca. Questo
pensatore osservò che tutti i libri, per diversi che fossero,
constavano di elementi eguali: lo spazio, il punto, la virgola, le
ventidue lettere dell'alfabeto.<br />
<br />
Stabilí, inoltre, un fatto che tutti i viaggiatori hanno confermato:
non vi sono, nella vasta Biblioteca, due soli libri identici. Da
queste premesse incontrovertibili dedusse che la Biblioteca è totale,
e che i suoi scaffali registrano tutte le possibili combinazioni dei
venticinque simboli ortografici (numero, anche se vastissimo, non
infinito) cioè tutto ciò ch'è dato di esprimere, in tutte le
lingue. Tutto: la storia minuziosa dell'avvenire, le autobiografie
degli arcangeli, il catalogo fedele della Biblioteca, migliaia e
migliaia di cataloghi falsi, la dimostrazione della falsità di questi
cataloghi, la dimostrazione della falsità del catalogo autentico,
l'evangelo gnostico di Basilide , il commento di questo evangelo, il
commento del commento di questo evangelo, il resoconto veridico della
tua morte, la traduzione di ogni libro in tutte le lingue, le
interpolazioni di ogni libro in tutti i libri.<br />
<br />
Quando si proclamò che la Biblioteca comprendeva tutti i libri, la
prima impressione fu di straordinaria felicità. Tutti gli uomini si
sentirono padroni di un tesoro intatto e segreto.<br />
<br />
Non v'era problema personale o mondiale la cui eloquente soluzione non
esistesse: in un qualche esagono. L'universo era giustificato,
l'universo attingeva bruscamente le dimensioni illimitate della
speranza. A quel tempo si parlò molto delle Vendicazioni: libri di
apologia e di profezia che giustificavano per sempre gli atti di
ciascun uomo dell'universo e serbavano arcani prodigiosi per il suo
futuro.<br />
<br />
Migliaia di ambiziosi abbandonarono il dolce esagono natale e si
lanciarono su per le scale, spinti dal vano proposito di trovare la
propria Vendicazione. Questi pellegrini s'accapigliavano negli stretti
corridoi, profferivano oscure minacce, si strangolavano per le scale
divine, scagliavano i libri ingannevoli nei pozzi senza fondo, vi
morivano essi stessi, precipitativi dagli uomini di regioni
remote. Molti impazzirono... Le Vendicazioni esistono (io ne ho viste
due, che si riferiscono a persone da venire, e forse non immaginarie),
ma quei ricercatori dimenticavano che la possibilità che un uomo trovi
la sua, o qualche perfida variante della sua, è sostanzialmente zero.<br />
<br />
Anche si sperò, a quel tempo, nella spiegazione dei misteri
fondamentali dell'umanità: l'origine della Biblioteca e del tempo. È
verosimile che di questi gravi misteri possa darsi una spiegazione in
parole: se il linguaggio dei filosofi non basta, la multiforme
Biblioteca avrà prodotto essa stessa l'inaudito idioma necessario, e i
vocabolari e la grammatica di questa lingua. Già da quattro secoli gli
uomini affaticano gli esagoni... Vi sono cercatori ufficiali,
inquisitori. Li ho visti nell'esercizio della loro funzione: arrivano
sempre scoraggiati; parlano di scale senza un gradino, dove per poco
non s'ammazzarono; parlano di scale e di gallerie con il
bibliotecario; ogni tanto, prendono il libro più vicino e lo
sfogliano, in cerca di parole infami. Nessuno, visibilmente, s'aspetta
di trovare nulla.<br />
<br />
Alla speranza smodata, com'è naturale, successe una eccessiva
depressione. La certezza che un qualche scaffale d'un qualche esagono
celava libri preziosi e che questi libri preziosi erano inaccessibili,
parve quasi intollerabile. Una setta blasfema suggerí che
s'interrompessero le ricerche e che tutti gli uomini si dessero a
mescolare lettere e simboli, fino a costruire, per un improbabile dono
del caso, questi libri canonici. Le autorità si videro obbligate a
promulgare ordinanze severe. La setta sparì, ma nella mia fanciullezza
ho visto vecchi uomini che lungamente s'occultavano nelle latrine, con
dischetti di metallo in un bossolo proibito, e debolmente rimediavano
al divino disordine.<br />
<br />
Altri, per contro, credettero che l'importante fosse di sbarazzarsi
delle opere inutili. Invadevano gli esagoni, esibivano credenziali non
sempre false, sfogliavano stizzosamente un volume e condannavano
scaffali interi: al loro furore igienico, ascetico, si deve
l'insensata distruzione di milioni di libri. Il loro nome è esecrato,
ma chi si dispera per i «tesori» che la frenesia di coloro distrusse,
trascura due fatti evidenti. Primo: la Biblioteca è cosí enorme che
ogni riduzione d'origine umana risulta infinitesima. Secondo: ogni
esemplare è unico, insostituibile, ma (poiché la Biblioteca è totale)
restano sempre varie centinaia di migliaia di facsimili imperfetti,
cioè di opere che non differiscono che per una lettera o per una
virgola.<br />
<br />
Contrariamente all'opinione generale, credo dunque che le conseguenze
delle depredazioni commesse dai Purificatori siano state esagerate a
causa dell'orrore che quei fanatici ispirarono. Li sospingeva l'idea
delirante di conquistare i libri dell'Esagono Cremisi: libri di
formato minore dei normali; onnipotenti, illustrati e magici. Sappiamo
anche d'un'altra superstizione di quel tempo: quella dell'Uomo del
Libro. In un certo scaffale d'un certo esagono (ragionarono gli
uomini) deve esistere un libro che sia la chiave e il compendio
perfetto di tutti gli altri: un bibliotecario l'ha letto, ed è simile
a un dio. Nel linguaggio di questa zona si conservano tracce del culto
di quel funzionario remoto.<br />
<br />
Molti peregrinarono in cerca di Lui, si spinsero invano nelle più
lontane gallerie. Come localizzare il venerando esagono segreto che
l'ospitava? Qualcuno propose un metodo regressivo: per localizzare il
libro A, consultare previamente il libro B; per localizzare il libro
B, consultare previamente il libro C; e cosi all'infInito... In
avventure come queste ho prodigato e consumato i miei anni.<br />
<br />
Non mi sembra inverosimile che in un certo scaffale dell'universo
esista un libro totale; prego gli dèi ignoti che un uomo - uno solo, e
sia pure da migliaia d'anni!, - l'abbia trovato e l'abbia letto. Se
l'onore e la sapienza e la felicità non sono per me, che siano per
altri. Che il cielo esista, anche se il mio posto è all'inferno. Ch'io
sia oltraggiato e annientato. ma che per un istante, in un essere, la
Tua enorme Biblioteca si giustifichi.<br />
<br />
Affermano gli empi che il nonsenso è normale nella Biblioteca, e che
il ragionevole (come anche l'umile e semplice coerenza) è una quasi
miracolosa eccezione.<br />
<br />
Parlano (lo so) della “Biblioteca febbrile, i cui casuali volumi
corrono il rischio incessante di mutarsi in altri, e tutto affermano,
negano e confondono come una divinità in delirio”. Queste parole, che
non solo denunciano il disordine, ma lo illustrano. testimoniano
generalmente del pessimo gusto e della disperata ignoranza di chi le
pronuncia. In realtà, la Biblioteca include tutte le strutture
verbali, tutte le variazioni permesse dai venticinque simboli
ortografici, ma non un solo nonsenso assoluto. Inutile osservarmi che
il miglior volume dei molti esagoni che amministro s'intitola Tuono
pettinato, un altro Il crampo di gesso e un altro Axaxaxas mlo.<br />
<br />
Queste proposizioni, a prima vista incoerenti. sono indubbiamente
suscettibili d'una giustificazione crittografica o allegorica; questa
giustificazione è verbale, e però, ex hypothesi, già figura nella
Biblioteca. Non posso immaginare alcuna combinazione di caratteri<br />
<br />
<a href="https://libraryofbabel.info/bookmark.cgi?dhcmrlchtdlj1" target="_blank">dhcmrlchtdlj</a><br />
<br />
che la divina Biblioteca non abbia previsto, e che in alcuna delle sue
lingue segrete non racchiuda un terribile significato. Nessuno può
articolare una sillaba che non sia piena di tenerezze e di terrori;
che non sia, in alcuno di quei linguaggi, il nome poderoso di un
dio. Parlare è incorrere in tautologie. Questa epistola inutile e
verbosa già esiste in uno dei trenta volumi dei cinque scaffali di uno
degli innumerabili esagoni - e cosi pure la sua confutazione. (Un
numero n di lingue possibili usa lo stesso vocabolario, in alcune, il
simbolo biblioteca ammette la definizione corretta di sistema duraturo
e ubiquitario di gallerie esagonali, ma biblioteca sta qui per pane, o
per piramide, o per qualsiasi altra cosa, e per altre cose stanno le
sette parole che la definiscono. Tu che mi leggi, sei sicuro
d'intendere la mia lingua?) Lo scrivere metodico mi distrae dalla
presente condizione degli uomini, cui la certezza di ciò, che tutto
sta scritto, annienta o istupidisce. So di distretti in cui i giovani
si prosternano dinanzi ai libri e ne baciano con barbarie le pagine,
ma non sanno decifrare una sola lettera. Le epidemie, le discordie
eretiche, le peregrinazioni che inevitabilmente degenerano in
banditismo, hanno decimato la popolazione.<br />
<br />
Credo di aver già accennato ai suicidi, ogni anno più
frequenti. M'inganneranno, forse, la vecchiezza e il timore, ma
sospetto che la specie umana - l'unica - stia per estinguersi, e che
la Biblioteca perdurerà: illuminata, solitaria, infinita,
perfettamente immobile, armata di volumi preziosi, inutile,
incorruttibile, segreta.<br />
<br />
Aggiungo: infinita. Non introduco quest'aggettivo per un'abitudine
retorica; dico che non è illogico pensare che il mondo sia
infinito. Chi lo giudica limitato, suppone che in qualche luogo remoto
i corridoi e le scale e gli esagoni possano inconcepibilmente cessare;
ciò che è assurdo. Chi lo immagina senza limiti, dimentica che è
limitato il numero possibile dei libri. Io m'arrischio a insinuare
questa soluzione: La Biblioteca è illimitata e periodica. Se un eterno
viaggiatore la traversasse in una direzione qualsiasi, constaterebbe
alla fine dei secoli che gli stessi volumi si ripetono nello stesso
disordine (che, ripetuto, sarebbe un ordine: l'Ordine). Questa
elegante speranza rallegra la mia solitudine.<br />
<br />Sax Appealhttp://www.blogger.com/profile/04374547857513573488noreply@blogger.com0tag:blogger.com,1999:blog-7554608023176769017.post-43973705984784951612015-09-12T11:06:00.001+02:002015-09-12T11:31:49.948+02:00Building a query string with the Smarty template engineCurse the pesky "?" and "&"!" The first one separates the query string part from its url, the second separates the various parameters as in the very well known idiom:<br />
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div style="text-align: center;">
<span style="font-family: Courier New, Courier, monospace;">/bar/baz.php?</span><span style="font-family: 'Courier New', Courier, monospace;">curses=99&</span><span style="font-family: 'Courier New', Courier, monospace;">sna=foo</span></div>
<div style="text-align: left;">
<span style="font-family: inherit;"><br /></span></div>
<div style="text-align: left;">
<span style="font-family: inherit;">So why did the HTML creators, in their wisdom, decide to have two different separators, rather than one? Go read the <a href="http://www.w3.org/" target="_blank">W3C</a> docs, if you feel like it (I don't). Regardless, it sucks like a tornado. Because you cannot now very well do things like:</span></div>
<div style="text-align: center;">
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div style="text-align: center;">
<span style="font-family: Courier New, Courier, monospace;">{$url}?sna=foo</span></div>
<div style="text-align: left;">
<span style="font-family: inherit;"><br /></span></div>
<div style="text-align: left;">
<span style="font-family: inherit;">because, depending on what's in $url, you may and up with things like:</span></div>
<div style="text-align: left;">
<span style="font-family: inherit;"><br /></span></div>
<div style="text-align: center;">
<span style="font-family: 'Courier New', Courier, monospace;">/bar/baz.php?</span><span style="font-family: Courier New, Courier, monospace;">sna=foo" //right</span></div>
<div style="text-align: center;">
<span style="font-family: 'Courier New', Courier, monospace;">/bar/baz.php</span><span style="font-family: Courier New, Courier, monospace;">??sna=foo" //wrong</span></div>
<div style="text-align: center;">
<span style="font-family: 'Courier New', Courier, monospace;">/bar/baz.php?b=1</span><span style="font-family: Courier New, Courier, monospace;">?sna=foo" //wrong</span></div>
<div style="text-align: left;">
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span></div>
<div style="text-align: left;">
<span style="font-family: inherit;">sucky sucky, as stated. Wanna see which browsers will puke (and which will digest) the above wrong instances and write a nice table? I don't. But you go ahead, if you feel so inclined.</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Having solved the problem in oomph languages and currently involved in <a href="http://www.smarty.net/" target="_blank">Smarty</a>+php development, I give you, elusive reader, this (rather involved) solution. Basically, tear apart query_string in an array, add your thingies to the array, glue it back together with "&"s, tack it to the end of your $smarty.server.SCRIPT_NAME variable. Unless, of course, you also have PATH_INFO. Stick these antics in a smarty plugin, use to your heart content in templates. Usage and credits are in the code comments.</span></div>
<div style="text-align: left;">
<span style="font-family: inherit;"><br /></span></div>
<br />
<tt></tt>
<br />
<pre><tt><code>
//Usage:
// href="{$smarty.server.SCRIPT_NAME}?{add_to_query_string q="foo=bar&sna=fu"}}
// also:
//{capture name="qstring" assign="qstring"}{$pfield}={$ct->id}&sna="foo"{/capture}
// href="{$smarty.server.SCRIPT_NAME}?{add_to_query_string q=$qstring}"</code></tt></pre>
<pre><tt><code>// OR
// {$qsedit="edit=1&id=`$product->id`"}
// href="{$smarty.server.SCRIPT_NAME}?{add_to_query_string q=$qsedit}"
// See: http://www.smarty.net/forums/viewtopic.php?p=608&sid=5601319f7015ef49edaca38455c2517e
// https://cameronspear.com/blog/smart-query-strings/
</code></tt></pre>
<pre><tt><code>function smarty_function_add_to_query_string($param, $smarty)
{
// turn current query string and changes into arrays
parse_str($_SERVER['QUERY_STRING'], $return);
parse_str($param['q'], $new);
foreach ($new as $key => $value) $return[$key] = $value;
return http_build_query($return, '', '&');
}
</code></tt></pre>
Sax Appealhttp://www.blogger.com/profile/04374547857513573488noreply@blogger.com0tag:blogger.com,1999:blog-7554608023176769017.post-16912375221578643652015-07-31T10:01:00.001+02:002015-07-31T10:01:16.911+02:00Efficient CKeditor tabbing with bootstrap and jquery<h2>
The Problem</h2>
<br />
Ok, so you are back in web coding and want to add the nifty <a href="http://docs.ckeditor.com/#" target="_blank">CKeditor</a> to your site, so some admin will be edit to add, say descriptions or notes in crisp, nicely formatted HTML (or maybe crufty, luridly formatted HTML - it really makes no difference).<br />
<br />
More than that, you need to do that in a form, want to keep your elements as textareas, <b>and</b> you need more than one editor - in fact, you want one per language on a multilanguage site. Also you would like to keep not in use editors tucked away from view.<br />
<br />
So you gather a tabbing widget, put textareas where they belong, deploy your editors in their place (no, not going into details here, but they will be shown momentarily).<br />
<br />
And behold! Everything is painfully slow, even with a paltry 4 editors on your page (four europeans languages, is that asking too much?). Ouch.<br />
<br />
<h2>
The idea. The recipe</h2>
<div>
Of course, what's needed is:</div>
<div>
<ul>
<li><b>lazy creation of the editors</b></li>
</ul>
This is OK, since most of them are already out of view when the page starts up - that's because we're tabbing, remember?</div>
<div>
<br /></div>
This also means that the admirably short:<br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;">$('textarea').ckeditor()</span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
provided by CKeditor's jquery plugin won't cut it, as it will do everything at once, and your page will pop back up to consciousness only after it's finished - several seconds later.<br />
<br />
This is not enough, however. CKeditor's 'classic' view, sitting in its own <span style="font-family: Courier New, Courier, monospace;">iframe</span>, is quite hefty in itself - and even with lazy instantiation, mapping the GUI takes forever. So I'll also need:<br />
<br />
<ul>
<li><b><a href="http://docs.ckeditor.com/#!/guide/dev_inline" target="_blank">CKeditor inline editing</a></b></li>
</ul>
That's lingo meaning that CKeditor will be attached to an element until it is clicked, when it springs into existence. That turns out to be much lighter.<br />
<br />
CKeditor will inline a lot of elements which set the<span style="font-family: Courier New, Courier, monospace;"> HTML5</span> attribute <i><span style="font-family: Courier New, Courier, monospace;">contenteditable</span></i> to true - <span style="font-family: Courier New, Courier, monospace;">DIVs</span><span style="font-family: inherit;">, notably </span>. I am an old timer, however, and I want this to happen in a <span style="font-family: Courier New, Courier, monospace;">form</span>'s <span style="font-family: Courier New, Courier, monospace;">textarea</span>, so I can enjoy the automatic variable population that happens when my little lusers hit the "Submit" button. (Aside: can this also be made to happen with <span style="font-family: Courier New, Courier, monospace;">DIVs</span>, I wonder? Comment if you know it.)<br />
<br />
Critically, CKeditor allows to do inline on <span style="font-family: Courier New, Courier, monospace;">textarea</span>s since V4.2. And this is another reason why the jquery plugin for CKeditor cannot be used - its <span style="font-family: Courier New, Courier, monospace;">.ckeditor()</span> method appears to force 'classic' view on <span style="font-family: Courier New, Courier, monospace;">textarea</span>s (a feature request that appears to be promising on the CK's blog gave me no joy whatsoever).<br />
<br />
What else? Oh, right, I'm gonna need<br />
<br />
<ul>
<li><b><a href="http://www.w3schools.com/bootstrap/bootstrap_ref_js_tab.asp" target="_blank">a good tabbing widget</a></b></li>
</ul>
unless, that is, one wants to do the click-hide-show wiring and dance by hand. (Which I did, on first iteration. Darn me, for not knowing my manuals - but I'm old, did I already mention it? So never mind me). Not to worry, <a href="http://getbootstrap.com/" target="_blank">bootstrap</a> (which makes everything oh, so 2.0 not to mention, responsive) has a perfectly fine tabbing widget camped on an appropriatedly marked up UL section. <a href="http://stackoverflow.com/questions/22667368/how-to-use-bootstrap-tabs" target="_blank">Be sure to read up on it carefully</a>, or you will be liable to miss (as I did) the critical part on javascript plumbing that makes the tabbing automatic.<br />
<br />
And because it's bootstrap, and 2015 to boot, I'm going to spruce it all up by adding:<br />
<br />
<ul>
<li><b><a href="https://jquery.org/" target="_blank">jquery</a> and its <a href="https://api.jquery.com/category/events/" target="_blank">event wiring</a></b></li>
</ul>
to the mix - after all, bootstrap needs jquery, and will everybody wanting to do browser sniffing on their own please raise their hands? I thought so. Which of course also implies we will want a last ingredient:<br />
<br />
<ul>
<li> <b> a modern, <a href="https://html5test.com/results/desktop.html" target="_blank">html5 compliant browser</a></b></li>
</ul>
anything above IE8 will do, but surely you have <b>that</b> - you are not still supporting IE6 and Netscape 4.7, are you? Or, God forbid, IE7.<br />
<br />
And voilà. Sounds easy? It's not.<br />
<div>
<br /></div>
<h2>
The reasearch</h2>
And so, google and <a href="http://stackoverflow.com/" target="_blank">stackoverflow</a> to the rescue, you start looking for the solution's pieces, and put them together , and it takes a day or more. Unless of course you stumbled on this page, where I laid it all down for you, my trusty reader. (It took more than a day, thank you very much - show your gratitude by sending money - lots of it - in a stamped envelope. Yes, I'm <b>that</b> greedy.)<br />
<br />
<h2>
The execution</h2>
<h3>
Markup: the header</h3>
<br />
<div style="border: 3px dotted red;">
<tt>
</tt>
<br />
<pre><tt><!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CKEditor ALF</title>
<link href="/core/jquery-ui-1.11.4/jquery-ui.min.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="/core/jquery/jquery-1.11.1.min.js"></script>
<script type="text/javascript" src="/core/jquery-ui-1.11.4/jquery-ui.min.js"></script>
<!-- Bootstrap -->
<script type="text/javascript" src="/core/bootstrap/js/bootstrap.min.js"></script>
<!-- Bootstrap core CSS -->
<link href="/core/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<!-- Optional Bootstrap Theme -->
<link data-href="/core/bootstrap/css/bootstrap-theme.min.css" rel="stylesheet" id="bs-theme-stylesheet">
<script src="../ckeditor.js"></script><!-- the editor -->
<script type="text/javascript" src="../adapters/jquery.js"></script>
<script src="tab4.js"></script>
</head>
</tt></pre>
</div>
<br />
<div>
<br />
Here I'm pulling all of my ingredients - plus my own code - on board, html5-style.</div>
<div>
Not much to see, here - we're loading the CKeditor jquery plugin for the heck of it, since we are not going to use it.</div>
<div>
<br /></div>
<h3>
Markup: the body</h3>
<div style="border: 3px dotted red;">
<tt> </tt><br />
<pre><tt><body id="main">
<div style="width:100%; height:400px; border: 3px solid red;">
<!--First tabset -->
<ul class="nav nav-tabs">
<li><a data-target="#oita" data-toggle="tab" class="editor">Italiano</a></li>
<li><a data-target="#oeng" data-toggle="tab" class="editor">English</a></li>
<li><a data-target="#oesp" data-toggle="tab" class="editor">Spagnolo</a></li>
<li><a data-target="#odeu" data-toggle="tab" class="editor">Deutsch</a></li>
</ul>
<span style="border:3px solid #0f0;">Seleziona il testo per editare</span>
<div class="tab-content" style="box-shadow: inset 0 0 10px #999999;border:3px solid yellow;" >
<div id="oita" class="tab-pane" style="height:300px"><textarea id="ita" name="ita">Ciao!</textarea></div>
<div id="oeng" class="tab-pane" style="height:300px"><textarea id="eng" name="eng"><i>Hello!</i></textarea></div>
<div id="oesp" class="tab-pane" style="height:300px"><textarea id="esp" name="esp"><b>Hola!</b></textarea></div>
<div id="odeu" class="tab-pane" style="height:300px"><textarea id="deu" name="deu"><b>Guten tag!</b></textarea></div>
</div>
</div>
</body>
</html>
</tt></pre>
</div>
<br />
The meat and potato of the UI, these is textbook stile bootstrap JS tabbing, with all its data-xxx thingies wired up just right. I am also adding an 'editor' class to seize upon later with a jquery selector, and a few containers and visual cues that will tell the user that yes - click the text and editing will happen.<br />
<h3>
Javascript: the wiring</h3>
It is now time to sprinkle our jquery magic ppowder, tucked away in tab4.js (yes, the <b>fourth</b> iteration):<br />
<br />
<div style="border: 3px dotted red;">
<pre>$(document).ready( function() {
CKEDITOR.config.height = 150;
CKEDITOR.config.width = 'auto';
$('.editor').on('shown.bs.tab', function (e) {
var target = $($(this).data("target"));
target.find('textarea').each(function () {
if(!CKEDITOR.instances[this.id]) {
CKEDITOR.inline(this);
}
});
return 1;
});
});
</pre>
</div>
<br />
<br />
A bit of explanation is in order, here.<br />
<br />
<ol>
<li><b><span style="font-family: Courier New, Courier, monospace;">$(document).ready()</span></b>: wrap everyhting inside this. No need to worry, I can register as many ready- handlers as you like and they will fire on a first-defined, first-served basis.</li>
<li><b><span style="font-family: Courier New, Courier, monospace;"> $('.editor')</span></b>: seize the editor-classed elements . These are the anchors that compose the links on the tabs</li>
<li><b><span style="font-family: Courier New, Courier, monospace;">.on('shown.bs.tab', function (e) {</span></b>: attach a callback to the "expose" event . the funky event name took me forever to locate</li>
<li><span style="font-family: Courier New, Courier, monospace;"><b>$($(this).data("target"))</b>:</span> select the target that will be exposed (it is one of the divs, see markup). Is this syntax bit ugly, or what?</li>
<li><b><span style="font-family: Courier New, Courier, monospace;">target.find('textarea').each(function () {</span></b>: iterate on the descended textares (better have one per container, or there goes your efficiencies</li>
<li><b><span style="font-family: Courier New, Courier, monospace;">if(!CKEDITOR.instances[this.id]) { CKEDITOR.inline(this)</span></b>: if it does not already contain an editor, create it.</li>
</ol>
<div>
Six easy pieces.</div>
<h3>
Catharsis</h3>
<div>
And there you have it. Efficient CKeditor tabbing</div>
Sax Appealhttp://www.blogger.com/profile/04374547857513573488noreply@blogger.com0tag:blogger.com,1999:blog-7554608023176769017.post-78166198585222815822015-07-07T09:39:00.004+02:002015-07-07T09:39:55.398+02:00Cicale Greche, formiche Europee?<i style="font-family: 'Liberation Serif'; text-align: justify;"><br /></i>
<i style="font-family: 'Liberation Serif'; text-align: justify;">"Le conseguenze finanziarie di un'uscita Grecia dall'Euro oggi possono essere valutate con più tranquillità che in passato perché il <b><u>rischio di contagio è molto inferiore a di quanto non fosse in passato</u></b> [...]</i><br />
<i style="font-family: 'Liberation Serif'; text-align: justify;">Il sistema bancario europeo, che è il più probabile portatore di contagio nel corso delle crisi finanziarie, è in uno stato migliore che non all'inizio della crisi. Le banche dell'Eurozona hanno accumulato 250 miliardi di capitale dal 2008, rafforzando una situazione contabile poco solida. <b><u>Le banche che erano pesantemente esposte al debito Greco hanno avuto tutto il tempo di riordinare i propri bilanci. Secondo Deutsche Bank, l'esposizione dei i creditori (privati, NdR) Europei, un tempo pari a quasi 300 miliardi, è ora di circa 54 miliardi. La maggior parte del debito greco è ora nelle mani dei governi e di istituzioni internazionali, che sono in grado di sopportare i costi di un'insolvenza greca, cosa che le banche non potrebbero fare.</u></b> Il costo dell'uscita della Grecia dall'euro potrebbe essere 230 miliardi di Euro, secondo le stime di Alberto Gallo di RBS - un bella cifra, ma solo il 2% del PIL Europeo"</i><br />
<i style="font-family: 'Liberation Serif'; text-align: justify;"><br /></i>
<i style="font-family: 'Liberation Serif'; text-align: justify;"><span style="background-color: white;">"</span>The financial consequences of Greece leaving the euro can now be considered with much more equanimity than previously because the risk of contagion looks much smaller than it used to. [...]</i><i style="font-family: 'Liberation Serif'; text-align: justify; widows: auto;">Europe’s banking system, a likely vector for contagion in any financial crisis, is in better shape than at the outset of the crisis. Euro-zone banks have raised some €250 billion in capital since 2008, bolstering once-shaky balance sheets. And banks once heavily exposed to Greece have had ample time to reorder their affairs. European lenders’ claims on Greece, which once topped €300 billion, now stand at just €54 billion, according to Deutsche Bank. Most of the outstanding Greek debt is now owed to governments and international institutions, which could handle the cost of default, rather than to banks, which would struggle to do so. The overall cost of Grexit might be €230 billion, according to Alberto Gallo of RBS, another bank: hefty, but only about 2% of euro-zone GDP."</i><br />
<br />
(Tratto da <i>"The Greek crisis-There comes up a day"</i> The Economist, 4/07/2015 - sottolineature aggiunte) <div>
<br /></div>
<div>
Chi crede che la crisi Greca sia solo una favola morale in cui una cicala (greca) chiede alle formiche (europee) di pagare per i propri vizi estivi può dare un'occhiata al brano citato poco sopra. In sintesi: nel 2012 la Grexit era impensabile perché il debito Greco era in gran parte in mani private,ora si può pensare perché in questi tre anni il suo costo è stato trasferito dalle banche (Goldman Sachs, tra le altre) ai governi - cioè a noi.</div>
<div>
<br /></div>
<div>
Non c'è da scandalizzarsene più di tanto, visto che nonostante le perplessità di alcuni commentatori (<i>"Ma zio, se non brucio una banca...sono un coglione!"</i>) <a href="http://www.economist.com/node/12342237" target="_blank">senza banche si sta tutti maluccio</a>. Ma questo non significa che alle banche si debba condonare qualunque comportamento rischioso - ad esempio suggerire ad un governo i modi di truccare il proprio bilancio, cosa che la Grecia ha fatto, con il complice silenzio-assenso di tutti, fino al 2010. Si possono pewrò mettere in prospettiva i discorsi sulla responsabiltà e le spiegazioni semplificate del tipo <i>"i debiti vanno pagati".</i> </div>
<div>
<br /></div>
<div>
Poi i debiti vanno pagati, e la crisi Greca è <i>anche </i> una favola morale di cicale greche - solo che le formiche, se ci sono e se sono europee, non sono probabilmente tra quelli che decidono oggi cosa fare, e se ci sono, sono anche più odiose che nella favola originale.</div>
<div>
<br /></div>
Sax Appealhttp://www.blogger.com/profile/04374547857513573488noreply@blogger.com0tag:blogger.com,1999:blog-7554608023176769017.post-65800615428483394872015-06-18T10:13:00.003+02:002015-06-18T12:44:37.548+02:00Tutta colpa della ggenteSupponete di essere un commentatore 2.0, ma con idee radicali 1.0 maturate essenzialmente nell'area movimentista degli anni 1970, tra Roma, Bologna, Indiani Metropolitani & co.<br />
<br />
Supponiamo (non è difficile, è successo poche settimane fa) che un gruppo di post-adolescenti, con ormoni in eccesso, cervello in difetto (<i><a href="http://www.youtube.com/watch?v=wYozZNd8g0o" target="_blank">"Zio, se non bruci una banca non sei nessuno!"</a></i>) e un Sabato pomeriggio libero decida di vandalizzare un quartiere centrale di Milano "in opposizione all'Expo 2015" (Huh? wut).<br />
<br />
Non siete abbastanza ipocriti da prendere le distanze dagli imbecilli e da condannarne le azioni (<i>"La galera, la galera ci vuole"</i>) che neanche troppo segretamente, in fondo, condividete. Ma siete troppo sgamati per prendere le loro parti apertamente rovinando la vostra immagine equilibrata. Che fare? Ignorare l'evento è impossibile.<br />
<br />
Allora seguite i commenti che la pubblicazione dell'evento ha sui social. Qualcuno che dice <i>"Io li gaserei, quei terroristi"</i> ci sarà - probabilmente molti, e molti diranno di peggio. Qualche signora in età che mette alla finestra un cartello d'incitamento alla Celere (<i>"Sparategli!"</i>) ci sarà. Laggente verrà in vostro aiuto, e il vostro commento è bell'e pronto:<br />
<br />
<i>"Più dei Black Bloc mi fanno paura quelli che scrivono 'sprangateli, massacrateli, fateli a pezzi'</i><span style="background-color: white; color: #545454; font-family: arial, sans-serif; font-size: x-small; line-height: 18.2000007629395px;"> </span><i>"</i><br />
<br />
Mettete un link, e il gioco è fatto. Visto? Basta dare la colpa a laggente. Il vecchio benaltrismo, certo (<i>"Il problema è ben altro"</i>), armi di distrazione di massa, certo, ma con quel fascino <i>blasé</i> di chi ben conosce le vie di internet <i>"e i i pericoli della demagogia, signora mia, che pericoli".</i><br />
<br />
Ma se siete di destra, leghisti, Salvinisti? Chi vi aiuterà a non prendere le distanze con l'aria di prenderle?<br />
<br />
Nessun problema, laggente è anche di sinistra, pronta a minacciare di orrende rappresaglie (<i>"Sappiamo come ti chiami e dove vivi, pezzo di merda"</i>) il minus habens che esulta perchè una barca di migranti affonda in alto mare (ed è uno/una che passa il resto del suo tempo a postare a favore dei gatti e a difendersi dalle scie chimiche, per intenderci sul livello).<br />
<br />
Fidatevi de laggente, amici 2.0.<br />
<div>
<br /></div>
Sax Appealhttp://www.blogger.com/profile/04374547857513573488noreply@blogger.com0tag:blogger.com,1999:blog-7554608023176769017.post-2695204061583293892015-05-07T18:02:00.001+02:002015-05-07T18:02:54.841+02:00Nostalgy corner: EDIf you don't get this, you're:<br />
<br />
<ol>
<li>Not into UNIX</li>
<li>Not old.</li>
</ol>
<div>
</div>
<br />
<pre><span style="font-family: Courier New, Courier, monospace;"> From: patl@athena.mit.edu (Patrick J. LoPresti<a href="http://c2.com/cgi/wiki?edit=LoPresti" rel="nofollow">?</a>)
Message-ID: <1991jul11 .031731.9260="" athena.mit.edu="">
Sender: news@athena.mit.edu (News system)
Subject: The True Path (long)
Date: 11 Jul 91 03:17:31 GMT
Path: ai-lab!mintaka!olivea!samsung!zaphod.mps.ohio-state.edu!think.com!snorkelwacker.mit.edu!bloom-picayune.mit.edu!athena.mit.edu!patl
Newsgroups: alt.religion.emacs,alt.slack
Organization: Massachusetts Institute of Technology
Lines: 95
Xref: ai-lab alt.religion.emacs:244 alt.slack:1935
<!--1991jul11--></1991jul11></span>
<span style="font-family: Courier New, Courier, monospace;">
When I log into my Xenix system with my 110 baud teletype, both vi
*and* Emacs are just too damn slow. They print useless messages like,
'C-h for help' and '"foo" File is read only'. So I use the editor
that doesn't waste my VALUABLE time.
</span>
<span style="font-family: Courier New, Courier, monospace;">
Ed, man! !man ed
</span>
<span style="font-family: Courier New, Courier, monospace;">
ED(1) UNIX Programmer's Manual ED(1)
</span>
<span style="font-family: Courier New, Courier, monospace;">
NAME
ed - text editor
</span>
<span style="font-family: Courier New, Courier, monospace;">
SYNOPSIS
ed [ - ] [ -x ] [ name ]
DESCRIPTION
Ed is the standard text editor.
---
</span>
<span style="font-family: Courier New, Courier, monospace;">
Computer Scientists love ed, not just because it comes first
alphabetically, but because it's the standard. Everyone else loves ed
because it's ED!
</span>
<span style="font-family: Courier New, Courier, monospace;">
"Ed is the standard text editor."
</span>
<span style="font-family: Courier New, Courier, monospace;">
And ed doesn't waste space on my Timex Sinclair. Just look:
</span>
<span style="font-family: Courier New, Courier, monospace;">
-rwxr-xr-x 1 root 24 Oct 29 1929 /bin/ed
-rwxr-xr-t 4 root 1310720 Jan 1 1970 /usr/ucb/vi
-rwxr-xr-x 1 root 5.89824e37 Oct 22 1990 /usr/bin/emacs
</span>
<span style="font-family: Courier New, Courier, monospace;">
Of course, on the system *I* administrate, vi is symlinked to ed.
Emacs has been replaced by a shell script which 1) Generates a syslog
message at level LOG_EMERG; 2) reduces the user's disk quota by 100K;
and 3) RUNS ED!!!!!!
</span>
<span style="font-family: Courier New, Courier, monospace;">
"Ed is the standard text editor."
</span>
<span style="font-family: Courier New, Courier, monospace;">
Let's look at a typical novice's session with the mighty ed:
</span>
<span style="font-family: Courier New, Courier, monospace;">
golem> ed
</span>
<span style="font-family: Courier New, Courier, monospace;">
?
help
?
?
?
quit
?
exit
?
bye
?
hello?
?
eat flaming death
?
^C
?
^C
?
^D
?
</span>
<span style="font-family: Courier New, Courier, monospace;">
---
Note the consistent user interface and error reportage. Ed is
generous enough to flag errors, yet prudent enough not to overwhelm
the novice with verbosity.
</span>
<span style="font-family: Courier New, Courier, monospace;">
"Ed is the standard text editor."
</span>
<span style="font-family: Courier New, Courier, monospace;">
Ed, the greatest WYGIWYG editor of all.
</span>
<span style="font-family: Courier New, Courier, monospace;">
ED IS THE TRUE PATH TO NIRVANA! ED HAS BEEN THE CHOICE OF EDUCATED
AND IGNORANT ALIKE FOR CENTURIES! ED WILL NOT CORRUPT YOUR PRECIOUS
BODILY FLUIDS!! ED IS THE STANDARD TEXT EDITOR! ED MAKES THE SUN
SHINE AND THE BIRDS SING AND THE GRASS GREEN!!
</span>
<span style="font-family: Courier New, Courier, monospace;">
When I use an editor, I don't want eight extra KILOBYTES of worthless
help screens and cursor positioning code! I just want an EDitor!!
Not a "viitor". Not a "emacsitor". Those aren't even WORDS!!!! ED!
ED! ED IS THE STANDARD!!!
</span>
<span style="font-family: Courier New, Courier, monospace;">
TEXT EDITOR.
</span>
<span style="font-family: Courier New, Courier, monospace;">
When IBM, in its ever-present omnipotence, needed to base their
"edlin" on a UNIX standard, did they mimic vi? No. Emacs? Surely
you jest. They chose the most karmic editor of all. The standard.
</span>
<span style="font-family: Courier New, Courier, monospace;">
Ed is for those who can *remember* what they are working on. If you
are an idiot, you should use Emacs. If you are an Emacs, you should
not be vi. If you use ED, you are on THE PATH TO REDEMPTION. THE
SO-CALLED "VISUAL" EDITORS HAVE BEEN PLACED HERE BY ED TO TEMPT THE
FAITHLESS. DO NOT GIVE IN!!! THE MIGHTY ED HAS SPOKEN!!!
</span>
<span style="font-family: Courier New, Courier, monospace;">
?
</span></pre>
<div>
<br /></div>
Sax Appealhttp://www.blogger.com/profile/04374547857513573488noreply@blogger.com0tag:blogger.com,1999:blog-7554608023176769017.post-46652562764582449072015-05-06T15:28:00.001+02:002015-05-06T15:28:17.379+02:00Glutine! Arghhhh! Glutine!!!!!<div class="separator" style="clear: both; text-align: center;">
<a href="http://upload.wikimedia.org/wikipedia/commons/b/b3/Seitan.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://upload.wikimedia.org/wikipedia/commons/b/b3/Seitan.jpg" height="213" width="320" /></a></div>
Nel giro di poco tempo, pare che il <a href="http://en.wikipedia.org/wiki/Gluten" target="_blank">glutine</a> si sia trasformato da una delle proteine più consumate dall'uomo in una specie di succedaneo dell'arsenico. per uno come me, che del glutine sapeva solo che è la benefica sostanza che permette la lievitazione del pane questo violento attacco al glutine faceva un effetto un po' strano.<br />
<br />
La paura è tanta, la consapevolezza poca, visto che ho sentito dire "Ho un'amica celiaca e vegetariana, praticamente non mangia nient'altro che seitan" (<a href="http://it.wikpedia.org/wiki/Seitan" target="_blank">seitan</a> è il nome che in Aisa, si dà al glutine puro).<br />
<br />
Ho cercato allora di informarmi e ho trovato un articolo, bello ed esauriente, pubblicato dal New yorker qualche mese fa e intitolato "<a href="http://www.newyorker.com/magazine/2014/11/03/grain" target="_blank">Against the grain</a>".<br />
Tutti quelli che s'interessano di quello che mangiano per più del tempo necessario a mangiarlo dovrebberlo leggerlo. Siccome però è in inglese e lunghetto, ne riassumo i punti principali di seguito.<br />
<br />
<ul>
<li>Il glutine fa sicuramente male ai <a href="http://it.wikipedia.org/wiki/Celiachia" target="_blank">celiaci</a>, che costituiscono circa l'1% della popolazione;</li>
<li>L'incidenza della celiachia negli ultimi 70 anni è quintuplicata passando dallo 0.2% all'1% e non per una migliore capacità
diagnostica. Però nessuno sa perché: quasi certamente si tratta di un fattore ambientale, ma nessuno ne ha finora proposto uno plausibile</li>
<li>Negli ultimi anni si è diffusa (soprattutto negli USA) l'opinione che esista una forma di tolleranza non-celiaca al glutine di cui una grande percentuale di persone (fino al 40%) è convinta di soffrire.</li>
<li>Uno studio medico standard (effettuato col metodo doppio cieco) che ha mostrato
l'esistenza della intolleranza non-celiaca al glutine (2011, Dr. Peter
Gibson Monash University)</li>
<li>Ma le conclusioni dello studio di cui sopra sono poi state messe in
questione da un altro studio - che invece ha attribuito l'intolleranza ai
<a href="http://en.wikipedia.org/wiki/FODMAP" target="_blank">FODMAP</a> - fermentable oligosaccharides, disaccharides, monosaccharides,
and polyols, in pratica un gruppo di carboidrati che tendono a
fermentare nell'intestino e che sono spesso associati a cibi che
contengono anche glutine;</li>
<li>Ma gli studi clinici sull'alimentazione sono lunghi e difficili.</li>
<li>Spesso una dieta priva di glutine fa star meglio chi la fa perché
elimina anche molti altri nutrienti in eccesso nelle nostre diete
(grassi zuccheri, FODMAPs - q.v.)</li>
<li>In ogni caso i medici sono convinti che l'intolleranza
non-celiaca al glutine sia vastamente sovradiagnosticata un po' si mette in mezzo gente che
non dovrebbe proprio fare diagnosi (psicologi, personal trainer...) e
perchè il gluten-free è ormai una moda e un business</li>
<li>E' però anche vero che l'industria alimentare utilizza il glutine
come addittivo in dosaggi ben lontani da quelli presenti nelle diete
tradizionali e l'effetto di questi dosaggi non è noto (e non è escluso
che possa sensibilizzare alcuni).</li>
<li>La margarina fa peggio del burro.</li>
<li>Nathan Myrvold ha definitivamente più interessi che capelli</li>
</ul>
<div>
Stretta la foglia, larga via...</div>
Sax Appealhttp://www.blogger.com/profile/04374547857513573488noreply@blogger.com0tag:blogger.com,1999:blog-7554608023176769017.post-31937554792658509192015-04-09T10:17:00.001+02:002015-04-09T10:17:29.547+02:00Taking the fun out of trolling: the killfile (a.k.a. plonking)<div style="border: 0px; margin: 0px; padding: 0px;">
<div class="separator" style="clear: both; font-size: 14px; line-height: 1.428571em; text-align: left;">
<a href="http://i.imgur.com/epR1GTq.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://i.imgur.com/epR1GTq.gif" height="99" width="320" /></a><span style="font-family: Courier New, Courier, monospace;"><b><u>Instructions</u>: </b>the following form is provided for your plonking comfort. You may use it on internet boards, forums, etc. any time you meet our old friend Dick from the internet. Just copy and paste to let Dick know that whatever residual interest you had in him is exhausted, and you'll no longer be able to hear him making an ass of him/herself. My rule of thumb is: </span></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<ol style="font-size: 14px; line-height: 1.428571em;">
<li><span style="font-family: 'Courier New', Courier, monospace; line-height: 1.428571em;">Send a <a href="http://sax-appeal.blogspot.com/2015/04/taking-fun-out-of-trolling.html" target="_blank">violation notice</a> and disengage from direct interaction on first offence </span></li>
<li><span style="font-family: 'Courier New', Courier, monospace; line-height: 1.428571em;">Send a further notice and plonk on repeat violation (that's two strikes, and you're out - you don't really need three for this kind of scum)</span></li>
</ol>
<span style="font-family: Courier New, Courier, monospace;"><span style="font-size: 14px; line-height: 1.428571em;">Obviously, you don't have to warn trolls that you're plonking them, but doing it gives a nice closure feeling, and </span><span style="font-size: 14px; line-height: 19.9999942779541px;">explicitly</span><span style="font-size: 14px; line-height: 1.428571em;"> classifies as childish and useless further attempts of the trolls to contact you. Just be sure to never resume contact with the plonked individual unless a very long time has passed (and even then, I wouldn't, but that's me). Don't overdo this or you'll soon run out of people to talk to.</span></span><br />
<div class="separator" style="clear: both; font-size: 14px; line-height: 1.428571em; text-align: left;">
<span style="font-family: 'Courier New', Courier, monospace; line-height: 1.428571em;">Above all, don't be like Dick, and be sure to follow the house rules yourself. Always follow the <a href="http://i.imgur.com/9Fn283f.png" target="_blank">house rules</a>.</span></div>
<div class="separator" style="clear: both; font-size: 14px; line-height: 1.428571em; text-align: left;">
<span style="font-family: 'Courier New', Courier, monospace; line-height: 1.428571em;"><br /></span></div>
<div class="separator" style="clear: both; font-size: 14px; line-height: 1.428571em; text-align: left;">
<span style="font-family: 'Courier New', Courier, monospace;">License: </span><a data-mce-href="http://creativecommons.org/licenses/by-nc-nd/3.0/" href="http://creativecommons.org/licenses/by-nc-nd/3.0/" style="border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; color: #047ac6; font-family: 'Courier New', Courier, monospace; line-height: 1.428571em; margin: 0px; padding: 0px;">CC-BY-NC-ND</a></div>
<div class="separator" style="clear: both; font-size: 14px; line-height: 1.428571em; text-align: left;">
</div>
<div class="separator" style="clear: both; font-size: 14px; line-height: 1.428571em; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; font-size: 14px; line-height: 1.428571em; text-align: center;">
<a href="http://i.imgur.com/gAEnALX.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://i.imgur.com/gAEnALX.png" height="128" width="320" /></a></div>
<h2 style="font-size: 14px; line-height: 1.428571em; text-align: center;">
<span style="font-family: Courier New, Courier, monospace;"><br /></span></h2>
<h2 style="font-size: 14px; line-height: 1.428571em; text-align: center;">
<span style="font-family: Courier New, Courier, monospace;">Welcome to my <a href="http://en.wikipedia.org/wiki/Kill_file" target="_blank">killfile</a>!</span></h2>
<div style="font-size: 14px; line-height: 1.428571em;">
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;">I am writing this to inform you that you finally made it: you have been <a href="http://en.wikipedia.org/wiki/Plonk_(Usenet)" target="_blank">plonked</a>. Most people never get even close to this place, but you are such a special person, and this place fits you to a T. This a moment to celebrate both as an achievement and as the last time we get a chance to talk (actually, that last chance is already gone for you).</span></div>
<div style="font-size: 14px; line-height: 1.428571em;">
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div style="font-size: 14px; line-height: 1.428571em;">
<span style="font-family: Courier New, Courier, monospace;">This place has many names: the bitbucket, /dev/null, the ignore list... but I love our internet traditions, and I like its grim original name: killfile.</span></div>
<div style="font-size: 14px; line-height: 1.428571em;">
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;">So,now you're here, look around. </span></div>
<div style="font-size: 14px; line-height: 1.428571em;">
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;">Make yourself at home. </span></div>
<div style="font-size: 14px; line-height: 1.428571em;">
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;">Have conversations (with yourself).</span></div>
<div style="font-size: 14px; line-height: 1.428571em;">
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;">If you feel like it, feel free to behave like a jerk (I know that's a natural to you).</span></div>
<div style="font-size: 14px; line-height: 1.428571em;">
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;">Or, just keep trolling away as you usually do.</span></div>
<div style="font-size: 14px; line-height: 1.428571em;">
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;">Don't worry, I won't mind. </span><span style="font-family: 'Courier New', Courier, monospace; line-height: 1.428571em;">As a matter of fact, I won't be even able to hear you - that's what killfiles are for.</span></div>
<div style="font-size: 14px; line-height: 1.428571em;">
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div style="font-size: 14px; line-height: 1.428571em;">
<span style="font-family: Courier New, Courier, monospace;">Please note: this is a form letter.</span></div>
<div style="font-size: 14px; line-height: 1.428571em;">
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div style="font-size: 14px; line-height: 1.428571em;">
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div style="font-size: 14px; line-height: 1.428571em;">
<br /></div>
<div style="font-size: 14px; line-height: 1.428571em;">
<br /></div>
</div>
Sax Appealhttp://www.blogger.com/profile/04374547857513573488noreply@blogger.com0