getPrevSaturday

October 29th, 2010 by Gian Carlo

Dealing width dates has always been tricky; recently I needed a way to find the first saturday of the previous week since a given date. Here’s a handy method to get the first occurrence of “Saturday”. If sunday is ‘1′ and saturday is ‘7′ and also if you use Calendar (you should use GregorianCalendar), January is ‘0′ and December is ‘11′… i spent half an hour trying to understand why today’s DAY_OF_WEEK was giving me ‘2′ (Tuesday) while I was expecting 6. Looking at the API you get that today’s MONTH is 10. If you say .set(2010,10,29) you’re setting the calendar to november… d’oh.

 public Calendar getPrevSaturday(Calendar in) {
   Calendar internal = in;
   Calendar prevSat = Calendar.getInstance();
   for(int i = 1; i <= 7; i ++) {
	   internal.add(Calendar.DATE, - 1);
	   if(internal.get(Calendar.DAY_OF_WEEK) == 7) // is it Saturday? then break and assign that date to our prevSat var
		break;
   }
   prevSat.set(internal.get(Calendar.YEAR), internal.get(Calendar.MONTH), internal.get(Calendar.DAY_OF_MONTH));
   return prevSat;
 }

Ok, how do you use it?

Calendar dataDummy = Calendar.getInstance(); // this is now.
Calendar prevSat = getPrevSaturday(dataDummy);
System.out.println(prevSat);
// if today is 2010 OCTOBER 29
// then the previous Saturday was 2010 OCTOBER 23

Quite, but not inactive

September 29th, 2010 by Gian Carlo


The Hagstrom UltraSwede electric guitar.
Been a while since my last study on L-systems (for graphics) and/or some kind of jQuery component, but I feel this is a time for a change; first of all I got a new (another) hobby: electric guitars… wait, I am learning the ‘basic stuff’ (C major scale, pentatonic scales, strum patterns, blues riffs and some Pink Folyd ‘classics’) with a guitar borrowed by a friend of mine, along with its 50W Roland aplifier and a boss DIST effect; I think I’ll get a Hagstrom UltraSwede (the guitar in the picture) wich has a rich/full clean/acoustic sound at a competitive price. The other part of the change is that the server-side (Java, not the dark side) is attracting me because the more i get my hands on the language APIs, libs, patterns and best practices behind a Java Web App (a J2EE app), the more i get hoocked.
More to come. Don’t know why, I am writing in a language wich is not italian.

Faber est suae quisque fortunae.

music and the body

September 9th, 2010 by Gian Carlo


Heart Rate (red) and the Galvanic Skin Response (blue).
Music (grey waveform) has the power to alter our emotional states.
BIO-RHYTHM exhibition. Trinity College Dublin, Science Gallery. Summer 2010.

Se vi capita di passare per Dublino entro il primo ottobre di quest’anno, fermatevi alla Science Gallery nel Trinity College per partecipare a questo singolare esperimento su musica, emozioni e fisiologia: Emotion in Motion, parte della BIO-RHYTHM exhibition. La musica ha il potere di influenzare il nostro ’stato emozionale’; la musica ci fa gioire, saltare, ballare, piangere… ma come è possibile dimostrarlo scientificamente? Analizzando la risposta fisica in termini di battito cardiaco e conducibilità elettrica della pelle, é possibile vedere la ‘risposta’ del nostro corpo alla musica; canzoni che conosciamo o che non ci piacciono, influenzano questi parametri: vi mostro la rappresentazione grafica dei miei parametri registrati durante l’ascolto. Interessante la linea blu, che sale appena inizia la musica: indica che la mia pelle è diventata istantaneamente più ‘conduttiva’.

Inisheer

September 8th, 2010 by Gian Carlo

Immag0579
A wrecked ship. Inisheer, Aran Islands, Galway Bay, Ireland. Summer 2010.

Ken Schles uses slideViewerPro

July 19th, 2010 by Gian Carlo


Image credits: Ken Schles photography - portaits page. featuring slideViewerPro.

Tre o quattro settimane fa, il fotografo Ken Schles mi ha contattato chiedendomi se potevo aiutarlo ad implementare slideViewerPro (il mio jQuery gallery engine) sul suo sito; mi capita abbastanza spesso di ricevere richieste di ‘aiuto’ o di implementazioni di nuove features. Questo ‘Ken’ mi aveva inviato anche una url per vedere come stava implementando l’engine e per farsi aiutare a risolvere alcuni problemi di allineamento su altri elementi della pagina; incollo la url nel browser e appena parte lo slider ecco apparire volti molto noti, tra i quali mi sembra di riconoscere Rod Stewart, Alicia Keys e Martin Scorsese. Dico, ma chi é questo Ken? Leggo la sua bio e mi accorgo che é uno dei fotografi americani più noti ed importanti, con esposizioni permanenti al MoMa di New York, autore di libri definiti una “intellectual milestones in photography” (Süddeutsche Zeitung) e di foto degli album di rock bands come Cypress Hill e Green Day, solo per citarne alcune. Insomma un pro della macchina fotografica.

In un primo momento ho tentato di applicare qualche fix al CSS ma mi sono subito reso conto che avendo Ken costruito quel sito nell’arco di alcuni anni, si era portato dietro parecchie incongruenze e ripetizioni inutili nelle dichiarazioni; un altro grande problema risiedeva nel fatto che nessuna pagina aveva lo stesso markup della precedente: ogni pagina era unica. Ovvio, un progetto amatoriale ma tutto sommato abbastanza bene eseguito; si vede che usa un Mac e che il suo browser di riferimento deve essere Safari: ha usato selettori ed animazioni ‘tipiche’ del webkit, molto avanzate e questo mi ha stupito. Comunque, mi sono proposto di riscrivere per intero il CSS e anche i templates dai quali avrebbe potuto continuare da solo a ricodificare l’intero sito; era l’unico modo - fra l’altro - di far funzionare correttamente la gallery e rendere la grafica consistente in tutte le pagine. Oggi lo ha pubblicato e sono davvero contento di averlo aiutato a ricostruire questo suo sito, nel quale evidentemente ha investito ore di lavoro e voglia di imparare. Bravo Ken.

moving to the (gs) Grid-Service

June 25th, 2010 by Gian Carlo
(gs) Grid-Service

Confermo che se dovessi consigliare un hosting provider a qualcuno gli direi di affidarsi a (mt) MediaTemple, come ho fatto io nel ‘lontano’ 3 dicembre 2002 quando già si parlava di mt perché sembrava essere il provider de-facto per la maggior parte dei siti di designers di fama internazionale e Fortune-500 companies. E infatti da allora, zero problemi. Ieri ho ricevuto una mail da mt nella quale mi si chiedeva di passare (gratuitamente) al Grid-Service poichè il ‘vecchio’ Shared-Server sarebbe stato dismesso a partire dal prossimo 19 luglio. mt ha predisposto una ‘Migrate to the Grid’ web app dalla quale ho potuto - davvero con 3 click - registrare il nuovo DNS, backuppare, migrare e far funzionare il tutto in 12 ore! Una breve interruzione di servizio (5 minuti) e nessun problema di DB, connessioni o malfunzionamenti.

(gs) is a cluster-based, modern hosting service powered by hundreds of servers working in tandem to power your websites, applications and email with unrivaled power, burstability and reliability. The Grid system is designed for continuous operation 24/7/365.

Da oggi, sempre per soli 100 USD annuali (prezzo per una soluzione ‘lite’) ho 50GBs di spazio, 512GBs di network transfer mensile disponibile, antispam, rinnovato custom control panel, 100 databases.

the Deepwater Horizon incident

June 4th, 2010 by Gian Carlo

Il 20 aprile 2010, per cause ancora da chiarire per ciò che concerne le responsabilità, nel Golfo del Messico si sono verificate l’esplosione ed il conseguente affondamento della piattaforma petrolifera off shore Deepwater Horizon di proprietà di British Petroleum (5.20 miliardi di dollari di profitti nel primo quadrimestre 2010).


The oil leak near the wellhead surface location (28.73756°, -88.36166°)
Image source: www.geoplatform.gov/gulfresponse/ - Mosaic Aerial Images

La falla, apertasi sul fondale sabbioso a 1700 metri per la rottura di un tubo é alimentata dal giacimento posto 1500 più in fondo. Il pozzo è finito fuori controllo a causa del mancato funzionamento dei sistemi automatici di interruzione del flusso (BOP) ed ha riversato in mare - fino ad oggi - 35/40 milioni di galloni di greggio (150 milioni di litri) al ritmo di 35/60 mila barili al giorno (sono in corso test per cercare di capire l’entità della perdita) causando uno tra i più gravi incidenti petroliferi che l’umanità abbia mai dovuto affrontare, e che abbia mai causato. Va detto che ci sono stati altri incidenti in passato (nel 1989 un’altra piattaforma off shore e sempre nel Golfo del Messico, (la Ixtoc I) riversò 150 milioni di barili di petrolio in acqua e ci vollero 10 mesi per fermare la perdita), mentre la Exxon Valdez sempre nell’89 riversò in mare il suo carico di circa 40 milioni di litri in seguito alla collisione con un reef sulla costa della Bligh Island in Alaska, ma mai si era verificata una falla a queste profondità, dove con 150 atmosfere di pressione, possono operare soltanto mezzi comandati dalla superficie. Se i dati sulla quantità di greggio che fuoriesce giornalmente dal pozzo fosse rivisto in positivo (probabile), cioè confermando una perdita di 60 mila barili al giorno, si avrebbe una quantià di greggio disperso che é pari a quello della Exxon Valdez, ogni 4-6 giorni. BP potrebbe trovarsi alla fine a dover pagare centinaia di milardi di dollari tra risarcimenti e costi di gestione della situazione (trivellazioni, nuovi sistemi di contenimento, ripulitura coste).

Ci sono buone possibilità che l’operazione ‘top-cap’ si concluda con un parziale successo ed in ogni caso se entro agosto i due pozzi attualmente in costruzione non riusciranno ad intercettare il condotto all’altezza del giacimento (operazione molto difficile da portare a termine con successo), potremmo veder sgorgare il petrolio per anni; il geologo Jill Schneiderman ha rinominato l’incidente il pozzo di Pandora; per allora potrebbero essersi riversati in mare altri 200-400 milioni di litri, se tutto va male, ed inoltre il grosso del greggio non sale in superficie ma resta sul fondale sotto forma di gigantesche chiazze spesse decine di metri, larghe kilometri. Sul sito di British Petroleum (che ad oggi ha speso 1 miliardo di dollari solo per le operazioni) si posso seguire in diretta le operazioni dalle telecamere montate sui 12 ROVs (remote operated vehicles); BP sta inoltre costruendo un enorme ‘barile’ di contenimento collegato ad una dozzina di superpompe che verrà posto sopra al blow out preventer (BOP) fallato ma non ho capito se verrà calato sul fondo.


June 2 2010, 12:43 pm CDT.
The oil spill as seen by the Skandi ROV2, holding its position at -1484m on top of the failed blow out preventer.

Ma quando la smetteremo di trivellare, di sporcare, di consumare, di distruggere, di mentire? Abbiamo un solo mare, un solo cielo, e facciamo finta che non sia così; da giorni seguo con grande apprensione, grazie ai vari live feeds, le operazioni di contenimento della falla ma più le guardo e più penso che siamo piccoli, presuntuosi, aggressivi e irresponsabili; guardo le ‘braccine’ di quei ROV, sballottati dalla corrente generata dal geyser di petrolio e gas mentre cercano di avvitare un bullone, o segare un tubo, e mi chiedo se riusciranno a porre fine al disastro prima di agosto e quali saranno le conseguenze se il petrolio dovesse essere trasportato dalle correnti atlantiche (di superficie) fino in Europa.

June 23, 2010 - 12:48 p.m. ET
La stima per eccesso (ma certamente vicina alla realtà) parla di 8.750.000 litri di petrolio riversati ogni giorno. BP ha dovuto momentaneamente rimuovere il lower marine riser package (LMRP) cap containment system (che almeno conteneva minimamente la perdita) per problemi tecnici dovuti alla collisione tra uno dei ROV ed il sistema di pompaggio di acqua calda, che serve ad evitare la formazione di cristalli di ghiaccio nel sistema di recupero parziale.

July 5, 2010.
Nel Golfo del Messico é iniziata la stagione degli uragani e per BP aumentano i ritardi e le difficoltà nella raccolta del greggio in superficie, mentre a -1500m il pozzo continua ad alimentare una marea nerissima - di Naomi Klein, l’Espresso.

July 13, 2010.
BP mostra un cauto ottimismo, e speriamo abbia ragione nonostante l’ormai obbligatoria premessa che “the sealing cap system never before has been deployed at these depths or under these conditions, and its efficiency and ability to contain the oil and gas cannot be assured”. Il nuovo sealing cap é incorso di assemblaggio; devono poi iniziare i test per vedere se davvero si riesce a bloccare la falla; durante le operazioni di assemblaggio di questo nuovo cap e nel rimuovere il ‘vecchio’ lower marine riser package (LMRP) containment cap si é reso necessario lasciare il pozzo completamente aperto mentre il geyser di gas e petrolio riversa nell’oceano 60.000 barili al giorno.

July 16, 2010.
La falla é chiusa.


July 15 2010, 6:00pm CDT, 12:43 pm CDT.
The well integrity test on the MC252 well commenced today; full closure of the choke valve occurred at approximately 2:25pm.

Per la prima volta, dopo 86 giorni di disastri la falla sembra essere chiusa. In realtà la chiusura delle valvole di questo nuovo ‘tappo’ da 75 tonnellate il cui risultato più evidente é la totale assenza di fuoriuscita di greggio in acqua, rappresenta l’inizio di una serie di test per verificare la tenuta del sistema di contenimento e la pressione nella falla. Se la pressione non sale agli 8-900 psi previsti significa che qualcosa non va come dovrebbe; mi spiego. Il petrolio è liquido e il liquido non è comprimibile. Se mettiamo un tappo su di un tubo, la pressione (se il tappo regge) si stabilizza quasi subito poichè l’acqua - o il liquido - non potendo essere ulteriormente compresso, resta bloccato stabilizzandosi ad una certa elevata pressione. Al momento, dai test in corso, la pressione sta salendo ma non ha raggiunto i livelli sperati. Questo potrebbe, ma non vuol dire di certo, che il condotto che porta petrolio dal giacimento posto a 1500 metri oltre il fondo marino al blow out preventer fallato, potrebbe dico potrebbe essersi rotto. Speriamo di no, è presto per dirlo e comunque finchè la pressione sale e non scende è buon segno. Incrociamo le dita.

August 4, 2010.
Ha funzionato. E continua a reggere. Ieri BP ha annunciato di aver iniettato nel pozzo, per otto ore, fanghi ad alta pressione. Questi fanghi ora esercitano una contro-pressione idrostatica mentre i due relief wells continuano a venir scavati e dovrebbero intercettare il pozzo per la metà del mese corrente.

Aiming System

May 13th, 2010 by Gian Carlo


Aiming System.
Made with Processing + jBullet.

Typo Mishap

May 3rd, 2010 by Gian Carlo


Typo Mishap.
Rendered with P5Sunflow.


Typo Mishap.
Applet and source code: http://www.openprocessing.org/visuals/?visualID=9333

Come anticipato, inizio a studiarmi jBullet - il Java port di Bullet Physics (open source collision detection, rigid and soft body dynamics library), visto che é proprio quello che serve per aggiungere convincenti effetti di fisica agli oggetti 3D disegnati in Processing; la lib é molto complessa ed espone centinaia di classi e metodi per calcolare collisioni, primitive, inierzia, posizioni, piani, velocità, accelerazioni, punti di contatto, shapes convesse e concave, eventi, algoritmi ecc… Si é reso necessario un decompiler per leggere le classi (.java) contenute nel .jar della demo Applet originale; questo é l’unico modo per poter affrontare le API di Bullet Physics almeno per identificare chi-fa-cosa. In questa situazione iniziale é chiaro che per comprendere, devo ricostruire la demo base trovando però un punto di contatto efficiente tra le funzionalità di disegno (rendering) in Processing e quelle di calcolo di forme e comportamenti in Bullet. Comunque - e questa é la parte che mi entusiasma - non ci sono limiti a ciò che si può realizzare, perché questa libreria é scelta come framework per le simulazioni da almeno 3 su 10 tra le Top Game Companies che sfornano videogames per Wii e PS3.



Kill ‘em all!
Posso creare forme e lanciarle nella direzione del lookAt point della camera partendo dalla posizione della stessa. Delle vere e proprie cannonate!

Nello sketch in cui ho tentato di usare per la prima volta Bullet, riprodotto nel video in alto, ad ogni key press la lettera o il numero corrispondente vengono creati e per effetto della gravità piombano sul piano sottostante; le forme sono dei veri e propri corpi rigidi che si fermano sui loro punti di contatto senza attraversarsi. La versione con cui si può ‘giocare’ sotto forma di Applet corredata di sorgente, è come al solito disponbile su OpenProcessing. Col mouse e tasto sx si ruota, col dx si fa zoom, e con la tastiera si creano i Characters.

Il poter simulare la matericità delle cose, ottenere reazioni in seguito ad azioni (come avviene nel mondo che ci circonda) suscita in me la stessa ‘frenesia creativa’ che potrebbe avere un pittore messo di fronte alla più grande tela bianca che potesse desiderare.

textrusion

April 28th, 2010 by Gian Carlo


letterExtruder
http://www.openprocessing.org/visuals/?visualID=9401

Come già visto in qualche post precedente, l’oggetto PGraphics permette di disegnare offscreen; è possibile poi analizzare pixel-per-pixel l’immagine PImage generata ed utilizzare le informazioni come colore e posizione dei pixel per inventarsi qualcos’altro. Da qualche giorno ho scoperto una tecnica per scrivere in 3D partendo da ‘pixel font’ originariamente renderizzati in 2D (i pixel font sono caratteri appositamente realizzati per poter risultare leggibili a dimensioni ridottissime, molto usati nei siti Flash, senza antialias) su di un PGraphics. Ho realizzato queste due Applet dalle quali potrete capire il funzionamento ma avrete la pazienza di studiarvele senza ulteriori indicazioni. Intanto sto indagando ulteriormente per applicare della fisica con jBullet, al fine di poter simulare la collisione tra le forme. Posterò gli sviluppi.