il curolleggio

November 18th, 2009

ovvero curry pollo e taleggio

ho notato che ci sono ricette per fare il pollo con lo zola, e ovviamente c’è il celeberrimo pollo al curry. io avevo del pollo, del taleggio invece dello zola, e del curry, e non ho resistito alla tentazione di mettere tutto assieme.
metti un filo d’olio nella padella, ci metti il pollo (io non l’ho fatto a pezzetti per pigrizia, ma avrebbe anche senso), un po’ di sale, e inizi a farlo cuocere. da ambo i lati.
nel frattempo togli la crosta e fai a cubetti il taleggio. preparane quanto ne vuoi, più ce n’è più il pollo annega, tieni solo conto che alla fine te lo devi magnare tutto.
il curry l’ho aggiunto a due terzi della cottura.
quando il pollo è cotto e dorato, buttaci il taleggio, in modo che faccia giusto in tempo a sciogliersi.
come sempre, servire senza dire cosa è. gli ospiti tendono ad apprezzare di più il piatto.

p.s.: ho letto da qualche parte che la carne va cotta girandola una sola volta. sposo la tesi, ci si sbatte di meno.








considerazioni banali

November 17th, 2009

aggressivo:
facce di culo, vi lascio soli un attimo e tornate tutti al tavolo a fare i compiti.

ipotetico:
è l’inizio di una nuova epoca, poi andrà meglio.

pessimista:
i 40 sono la morte nera.

realista:
pensa a laurà.

ci siamo sentiti per anni i paladini del verbo digitale. abbiamo cavalcato per primi le onde dell’epoca interconnessa, abbiamo scoperto per secondi come funzionava, abbiamo sbracato per terzi nell’orgia social… e per primi, nuovamente, ce ne andiamo? è così che chiudiamo il cerchio?
detto in prosa, nonostante il momento aulico in cui scrivo (per me, ovviamente… voi starete già dormendo) la mia generazione sta mollando la botta sull’internet pubblico. la mia generazione è quella dei nati nella prima metà degli anni settanta, o ultimi anni sessanta. la nostra iniziazione è passata attraverso i primi collegamenti seriali e paralleli, la nostra adolescenza era ancora libri e vinili, ma la nostra punta di diamante è stata l’attività bloggatoria, è stata la new economy, i segreti (mio malgrado) del DOS. siamo la generazione windows (e saibaba solo sa quanto mi pesi ammetterlo).
ebbene sembra che la nascita di nuove forme di vita, la clonazione di se stessi, insomma, il mettere al mondo i figli, sia il più fenomenale acido contro la basicità della nostra vita. abbiamo sempre avuto il dubbio che la famiglia fosse incomaptibile con la vita che facevamo, ma tutto si sta ribaltando, e riscontrarlo così puntualmente mi ha buttato addosso un fiotto di imbarazzo e prurito cui non posso prescindere. sia chiaro: mi fa piacere che sia stata scelta la famiglia (NON in senso cristiano, ma antropologico), non voglio passare per irriducibile, non lo sono. ma mi sentivo in dovere di sollevare lo sguardo su quello che sta succedendo: le pagine che con più piacere ho sempre letto su internet, insomma i blog dei miei amici, non ci sono praticamente più (e io sono stato tra i primi a smettere di scrivere). e se devo essere sincero anche i miei amici non ci sono praticamente più, ognuno in cammino altrove.
la vita ci ha preso tutti in contropiede, giusto per testimoniare che è ancora lei a dettare le regole. macigni sono cascati dal cielo, vortici sono sorti sotto al culo. siamo sempre orgogliosi di stare nella stessa barca, anche se tutte le energie servono per non farla finire a fondo. quasimodo parlava di sera subito e montale di tutto il suo travaglio, e noi ci siamo cascati dentro in pieno: stiamo passando dai bit alle bavaglie, dai gin tonic agli idraulici, dai conti del bar a quelli della banca. dai viaggi nelle baite a quelli negli ambulatori. come è semplice e banale. come è difficile e incerto.

tiro fuori a caso un vinile dagli scatoloni che mi ha lasciato ezio prima di partire per miami. pink floyd: meddle. bella scelta. un buco di un orecchio in copertina. loro giovanissimi. io pieno di peli bianchi.








gli alberi

November 12th, 2009

ho 37 anni. ho il riscaldamento in casa. ho una connessione adsl.
siamo i primi figli dell’informatica. e metà di noi odia l’informatica. forse per colpa del digital divide, perchè potersi immergere nell’informatica era roba da benestanti. adesso pure i benestanti si stanno distaccando, o quantomeno stanno passando dall’altra parte del bancone (per citare un lessico da bar), lasciando la prima linea ingenua ed innocente per ritirarsi nelle trincee della tecnicità. ma l’informatica è la nostra grande opportunità culturale, il nostro nuovo linguaggio, per dirla schiettamente.

cosa vuol dire per una generazione vivere un cambiamento di linguaggio? vuol dire qualcosa che accade con una periodicità millenaria. si dice che il cervello umano abbia un pezzetto, un qualche decigrammo, dedicato al linguaggio. e sono cose che darwinisticamente non si creano da un giorno all’altro. ebbene la nostra generazione ha visto cambiare il contenuto di questo “tocco” di cervello. la portata è ancora tutta da commisurare e assaporare, entusiasmo e campanilismo (mio e dei tecnicisti come me) a parte. e per essere più precisi il grande cambiamento non sta nel passagio dal decimale al binario, ma dal lineare all’albero. anzi, per dirla un po’ più correttamente, dal sequenziale al grafo.
la storia si distacca dalla preistoria per l’invenzione della parola scritta. il linguaggio scritto come lo intendiamo è lineare. un libro si legge parola per parola, riga per riga. linearmente. un programma è un grafo, li chiamavamo diagrammi di flusso. si passa da un ragionare lineare, ad un ragionare ad albero. si impara a non aspettare più la parola seguente, ma a scegliere il nodo successivo, con la consapevolezza che ci sono anche gli altri nodi possibili, quelli non scelti. negli anni ottanta si parlava di universi paralleli. oggi parlerei di siblings, di fratelli del nodo in cui ci si trova all’interno dell’immenso grafo che è la conoscenza.
se qualcuno oggi mi chiedesse cosa vuol dire programmare gli direi che è la capacità di muoversi su un albero. come il barone rampante, che non si ritira in mare, o in una stanza, ma su un albero. imparare a rappresentare i problemi come un’insieme di particelle tra loro legate da forze, legami, relazioni, che portano ad altre particelle, che creano un tessuto di particelle cui tutti facciamo parte. non è più importante la scelta del singolo, ma la logica con cui ogni singolo compie le proprie scelte, moltiplicato per tutti i singoli del grafo, fino a generare i fenomeni di massa, i comportamenti sociali. come un algoritmo ricorsivo che non contempla tutte le combinazioni di scelte possibili, ma solo le regole con cui ogni particella compirà la propria scelta.

è ovvio che scrivendo con la lingua scritta come sto facendo ora, con il linguaggio che ci ha distinto dalla preistoria, non si possa spiegare ciò che ci sta distinguendo dalla storia. un po’ come non è possibile con le parole descrivere la musica. forse è per questo che anche i blog lasciano il passo ai social network, che ftp lascia il passo al peer to peer.








links for 2009-09-11

September 11th, 2009







links for 2009-09-08

September 8th, 2009







SEO joke

September 2nd, 2009

So a CEO, a web programmer and an SEO expert are on a desert island.

And the SEO expert says, “You guys, I’m so thirsty. Is there anything to drink?”

And the CEO says, “I just drank the last of my water 30 minutes ago.”

And the web programmer says, “I have plenty of water, a true abundance, but I won’t give any to you. Because, you are the worst. I hate you with every fiber of my being. Your very existence is an inherent refutation of the basic concept of quality workmanship and craft. Every additional second you remain on this planet is a deep, personal offense to me.”

Then the SEO expert died slowly and painfully of thirst, and over the next several days his body slumped, shriveled and shrank as his organs collapsed upon themselves with a hissing sound while the CEO and web programmer sat and stared. And the sun set, and rose, and set again.

THE END








flash, bitmapdata, chroma key (or color key)

March 19th, 2009

here’s a routine to apply chroma (color) keying on a bitmapdata.
i’m not sure this is the best way to achieve chroma keying in flash, but it works.

an usage example:
we have imageBitmapData that is an image (imagine a panorama view), and we want to chroma key the blue sky in it. first we define the lower and higher blue values to be cutted off (they can be the same, if we want to chroma key exactly an rgb color and not a range). then we call the chromaKey method.

	
var imageBitmapData:BitmapData = new BitmapData();
//... load or draw here some content in imageBitmapData
var myThresholdHigh:uint = 0xffacc9e5; //AARRGGBB, this is a light blue
var myThresholdLow:uint  = 0xff8aa2b8; //AARRGGBB, this is a dark blue
imageBitmapData = chromaKey(imageBitmapData, myThresholdLow, myThresholdHigh);

and here’s the routine code:

	import flash.display.*;
	import flash.filters.*;
	import flash.geom.*;
	
		//if keepColor = false, returns the original bitmapdata with colors between colorLow and colorHi cutted off, otherwise (keepColor = true) return the inverse, that is the original bitmapdata with only colors from colorLow to colorHi
		public static function chromaKey(myBitmapData:BitmapData, colorLow:uint, colorHi:uint, keepColor:Boolean = false):BitmapData
		{
			if ( keepColor )
			{
				//throw away pixels not in my color range
				//red
				myBitmapData.threshold(
					myBitmapData,
					new Rectangle(0, 0, myBitmapData.width, myBitmapData.height),
					new Point(0,0),
					\"< \",
					colorLow,
					0x00000000,
					0x00FF0000,
					false
					);
				myBitmapData.threshold(
					myBitmapData,
					new Rectangle(0, 0, myBitmapData.width, myBitmapData.height),
					new Point(0,0),
					\">“,
					colorHi,
					0×00000000,
					0×00FF0000,
					false
					);
				//green
				myBitmapData.threshold(
					myBitmapData,
					new Rectangle(0, 0, myBitmapData.width, myBitmapData.height),
					new Point(0,0),
					“< \",
					colorLow,
					0x00000000,
					0x0000FF00,
					false
					);
				myBitmapData.threshold(
					myBitmapData,
					new Rectangle(0, 0, myBitmapData.width, myBitmapData.height),
					new Point(0,0),
					\">“,
					colorHi,
					0×00000000,
					0×0000FF00,
					false
					);
				//blue
				myBitmapData.threshold(
					myBitmapData,
					new Rectangle(0, 0, myBitmapData.width, myBitmapData.height),
					new Point(0,0),
					“< \",
					colorLow,
					0x00000000,
					0x000000FF,
					false
					);
				myBitmapData.threshold(
					myBitmapData,
					new Rectangle(0, 0, myBitmapData.width, myBitmapData.height),
					new Point(0,0),
					\">“,
					colorHi,
					0×00000000,
					0×000000FF,
					false
					);
			}
			else
			{
				//throw away pixels in my color range
				//red
				var myBitmapDataRedLow:BitmapData = new BitmapData(myBitmapData.width, myBitmapData.height);
				myBitmapDataRedLow = myBitmapData.clone();
				myBitmapDataRedLow.threshold(
					myBitmapData,
					new Rectangle(0, 0, myBitmapData.width, myBitmapData.height),
					new Point(0,0),
					“>=”,
					colorLow,
					0×00000000,
					0×00FF0000,
					false
					);
				var myBitmapDataRedHigh:BitmapData = new BitmapData(myBitmapData.width, myBitmapData.height);
				myBitmapDataRedHigh = myBitmapData.clone();
				myBitmapDataRedHigh.threshold(
					myBitmapData,
					new Rectangle(0, 0, myBitmapData.width, myBitmapData.height),
					new Point(0,0),
					“< =\",
					colorHi,
					0x00000000,
					0x00FF0000,
					false
					);
				//merge low and hi
				myBitmapDataRedLow.draw(myBitmapDataRedHigh,null,null,BlendMode.MULTIPLY,null,false);
				//green
				var myBitmapDataGreenLow:BitmapData = new BitmapData(myBitmapData.width, myBitmapData.height);
				myBitmapDataGreenLow = myBitmapData.clone();
				myBitmapDataGreenLow.threshold(
					myBitmapData,
					new Rectangle(0, 0, myBitmapData.width, myBitmapData.height),
					new Point(0,0),
					\">=”,
					colorLow,
					0×00000000,
					0×0000FF00,
					false
					);
				var myBitmapDataGreenHigh:BitmapData = new BitmapData(myBitmapData.width, myBitmapData.height);
				myBitmapDataGreenHigh = myBitmapData.clone();
				myBitmapDataGreenHigh.threshold(
					myBitmapData,
					new Rectangle(0, 0, myBitmapData.width, myBitmapData.height),
					new Point(0,0),
					“< =\",
					colorHi,
					0x00000000,
					0x0000FF00,
					false
					);
				//merge low and hi
				myBitmapDataGreenLow.draw(myBitmapDataGreenHigh,null,null,BlendMode.MULTIPLY,null,false);
				//blue
				var myBitmapDataBlueLow:BitmapData = new BitmapData(myBitmapData.width, myBitmapData.height);
				myBitmapDataBlueLow = myBitmapData.clone();
				myBitmapDataBlueLow.threshold(
					myBitmapData,
					new Rectangle(0, 0, myBitmapData.width, myBitmapData.height),
					new Point(0,0),
					\">=”,
					colorLow,
					0×00000000,
					0×000000FF,
					false
					);
				var myBitmapDataBlueHigh:BitmapData = new BitmapData(myBitmapData.width, myBitmapData.height);
				myBitmapDataBlueHigh = myBitmapData.clone();
				myBitmapDataBlueHigh.threshold(
					myBitmapData,
					new Rectangle(0, 0, myBitmapData.width, myBitmapData.height),
					new Point(0,0),
					“< =\",
					colorHi,
					0x00000000,
					0x000000FF,
					false
					);
				//merge low and hi
				myBitmapDataBlueLow.draw(myBitmapDataBlueHigh,null,null,BlendMode.MULTIPLY,null,false);
	
				//merge channels in output bitmapdata
				myBitmapData = new BitmapData(myBitmapData.width, myBitmapData.height, true, 0x00000000);
				myBitmapData.draw(myBitmapDataRedLow,null,null,BlendMode.MULTIPLY,null,false);
				myBitmapData.draw(myBitmapDataGreenLow,null,null,BlendMode.MULTIPLY,null,false);
				myBitmapData.draw(myBitmapDataBlueLow,null,null,BlendMode.MULTIPLY,null,false);
	
			}
			return myBitmapData;
		}
	







justice

March 16th, 2009

un video penzo:

e la degna risposta:

lo sfottò, la presa in giro, l’ironia insomma, è uno dei meccanismi sociali spontanei che rendono gli uomini un pelino migliori di quello che sono. e più uno si prende sul serio, più provoca involontariamente l’ironia.








mangiare invece di uccidere

March 16th, 2009

è ufficiale, dopo decenni il più radicato e inamovibile luogo comune, nonchè meccanismo, dei videogiochi ha finalmente un’alternativa credibile. non è più necessario schiacciare bottoni per uccidere il prossimo, ma è ora necessario schiacciare bottoni per mangiare ed evolvere. tecnicamente non cambia nulla, più si schiaccia, più si va avanti, più si diventa complessi, più si possono affrontare creature potenti. ma a livello filologico è una piccola rivoluzione. ecco 2 citazioni giusto per…:



Blush Trailer from Flashbang Studios on Vimeo.


e per finire la solita presa per il culo che non guasta.








chitarre e flash

March 16th, 2009

Andre Michelle è forse il più prolifico e famoso programmatore audio della piattaforma flash. Il suo pupillo è audiotool, ma tutto il suo lab è pieno di cose meravigliose, e questo sintetizzatore di chitarra appena partorito, basato sul modello fisico Karplus Strong per la sintesi di stringhe, è semplicemente incredibile.