iPad2 Pocket Color

Posted: novembre 15, 2011 by eamedeo in freschi di stampa

È veramente molto tempo che non scrivo sul blog e me ne dispiaccio. In attesa di proporre qualche post tecnico voglio segnalare l’uscita di iPad 2, la nuova edizione del tascabile a colori dedicato al tablet di Apple ed edito da Apogeo.

Con Federico Gatti abbiamo fatto un bel lavoro di revisione e di approfondimento. Non solo il testo ora è incentrato su iPad2, con annessi e connessi di fotocamere e applicazioni correlate, ma è anche e sopratutto incentrato sulla versione 5 di iOS.

Questo ha significato una radicale revisione dei contenuti in alcune sezioni chiave, ma siamo soddisfatti, perché così il testo è aggiornatissimo alle ultime novità dell’azienda di Cupertino. Il testo è composto da 160 pagine a colori: non un’enormità, quindi il lavoro di cesello per far rientrare tutti gli argomenti nello spazio che meritavano è stato impegnativo.

Abbiamo seguito il rilascio delle diverse beta della nuova versione di iOS, mantenendo però la bocca cucita sui contenuti, dato che le politiche di Apple vietano agli sviluppatori che ricevono le beta di parlarne pubblicamente. Versione dopo versione abbiamo cesellato il testo arrivando all’uscita ufficiale di ottobre, al quale è seguito ancora un bel lavoro di revisione e verifica.

Insomma è stato impegnativo, ci abbiamo lavorato tanto e spero che vi piaccia.

Ah, è disponibile anche come ebook.

A pagina 123 di Objective-C Pocket viene spiegato come risolvere i problemi circolari tra le classi (con i delegati si può presentare un problema simile, se ne fa cenno a pagina 174). In parole povere, un problema circolare si ha quando la classe A fa riferimento alla classe B e viceversa. Non è possibile includere, in ciascun file d’intestazione, il file d’intestazione dell’altra classe, perché il compilatore va in confusione. Cioè, non è possibile scrivere:

//
// ClasseA.h
//
#import "ClasseB.h"

@interface ClasseA : NSObject {
}
@end

e:

//
// ClasseB.h
//
#import "ClasseA.h"

@interface ClasseB : NSObject {
@end

Per ovviare a questo problema è possibile utilizzare la direttiva @class nel file d’intestazione, per specificare che i simboli ClasseA e ClasseB fanno riferimento alle classi.

Fino a qui tutto bene, ma quando si utilizzano effettivamente le classi dichiarate con @class nel codice dell’implementazione viene sollevato il warning in oggetto. Per esempio:

//
//  ClasseA.h
//
@class ClasseB;

@interface ClasseA : NSObject {
@private
    ClasseB *objB;
}

@end

//
//  ClasseA.m
//
#import "ClasseA.h"

@implementation ClasseA

- (id)init
{
    self = [super init];
    if (self) {

        objB = [[ClasseB alloc] init];

    }

    return self;
}

- (void)dealloc
{
    [super dealloc];
}

@end

In questo caso sulla riga dove viene allocato un oggetto di tipo ClasseB viene presentato il warning seguente:

warning: Semantic Issue: Receiver ‘ClasseB’ is a forward class and corresponding @interface may not exist

Questo perché se è vero che non bisogna includere il file d’intestazione di ClassB in quello di ClassA, questo è comunque necessario all’implementazione di ClassA. Per risolvere il problema è bisogna quindi includere ClassB.h nel file ClassA.m, che quindi diventa:

//
//  ClasseA.m
//  RiferimentiCircolari
//
#import "ClasseA.h"

#import "ClasseB.h"

@implementation ClasseA

- (id)init
{
    self = [super init];
    if (self) {

        objB = [[ClasseB alloc] init];

    }

    return self;
}

- (void)dealloc
{
    [super dealloc];
}

@end

Ricompilando il progetto si noterà che il warning non viene più presentato.

Fuori dalla metro

Posted: aprile 7, 2011 by eamedeo in fiction
no stopping at any time

Image via Wikipedia

Sono arrivato nel centro studi della grande metropoli. Scatto fuori dalla fermata della metropolitana, risalendo una rampa di scale che sembra non finire mai. Mi accoglie la luce del sole di un giorno d’inverno. È mattino avanzato, di quelli che non manca tanto all’ora di pranzo.

Subito sento la puzza. I miasmi della città. Odori multietnici, di tutti i tipi. La base è sempre quella fiatella di smog, puzzo di scarico di automobili, motorini e camioncini. Si sente che l’aria è più pesante, vuoi confrontarla con quella del paesello, più fresca e pulita?

Poi arrivano le folate di sigaretta; sembra che questi drogati che non sanno neanche di esserlo non possano resistere, neanche di fronte a una bella giornata.

E poi gli effluvi corporali dei barboni, della gente che suda.

Questo quartiere multietnico, questa città senza confini. Quando ero bambino abitavo proprio dietro l’angolo. Si riconoscono ancora gli esercizi storici e i palazzi sono rimasti più o meno quelli di trent’anni fa. Ma molto è cambiato. Le facce per prima cosa.

E poi i negozi, sono molti di più, molto diversi. A fianco della latteria che ha resistito agli anni c’è un nuovo kebabbaro. I bar si sono moltiplicati, oramai ce ne è uno ogni isolato. E in mezzo panetterie, fruttaroli, ristoranti e locali. Dietro l’angolo il ristorante coreano, quasi di fronte alla trattoria di un tempo. E poi il parrucchiere cinese, di quelli che non si sa se in pausa pranzo si cucinano da mangiare nel retrobottega.

[continua... (forse)]

 

Approfondimenti su Objective-C

Posted: marzo 30, 2011 by eamedeo in prossimi venturi
Etichette:

(Il materiale originale da cui è stato tratto questo post era in origine un appendice del libro Objective-C Pocket di recente uscita)

In questa sezione sono elencati documenti utili presenti sul sito di apple dedicato agli sviluppatori (http://developer.apple.com).

The Objective-C Programming Language
Introduce la programmazione orientata agli oggetti e descrive il linguaggio principale utilizzato per lo sviluppo in Cocoa.
http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjectiveC/Introduction/introObjectiveC.html

Objective-C Runtime Programming Guide
Descrive la libreria di supporto a runtime di Objective-C 2.0.
http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Introduction/Introduction.html – //apple_ref/doc/uid/TP40008048

Object-Oriented Programming with Objective-C
Descrive la programmazione orientata agli oggetti dalla prospettiva di uno sviluppatore Objective-C.
http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/OOP_ObjC/Introduction/Introduction.html – //apple_ref/doc/uid/TP40005149

Memory Management Programming Guide
http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html – //apple_ref/doc/uid/10000011i

Garbage Collection Programming Guide
Descrive il sistema di Garbage Collection di Cocoa.
http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/GarbageCollection/Introduction.html – //apple_ref/doc/uid/TP40002431

Number and Value Programming Topics
Spiega come utilizzare wrapper per tipi dato C primitivi.
http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/NumbersandValues/NumbersandValues.html

String Programming Guide
Spiega come creare, cercare, concatenare e disegnare stringhe in Cocoa.
http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/Strings/introStrings.html

String Programming Guide for Core Foundation
Spiega come creare, manipolare e cercare stringhe in Core Foundation e come queste interagiscono con gli encoding e i set di caratteri.
http://developer.apple.com/mac/library/documentation/CoreFoundation/Conceptual/CFStrings/introCFStrings.html

Date and Time Programming Guide for Core Foundation
Spiega come gestire date e ore di Core Foundation.
http://developer.apple.com/mac/library/documentation/CoreFoundation/Conceptual/CFDatesAndTimes/CFDatesAndTimes.html

Data Formatting Guide for Core Foundation
Spiega come utilizzare i formattatori di Core Foundation per creare e validare testo.
http://developer.apple.com/mac/library/documentation/CoreFoundation/Conceptual/CFDataFormatting/CFDataFormatting.html

Collections Programming Topics for Core Foundation
Spiega come raggruppare oggetti in vettori, insiemi o dizionari.
http://developer.apple.com/mac/library/documentation/CoreFoundation/Conceptual/CFCollections/CFCollections.html

Exception Programming Topics
Spiega come sollevare e come gestire eccezioni in applicazioni Cocoa.
http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/Exceptions/Exceptions.html

Error Handling Programming Guide
Descrive gli oggetti NSError, il supporto correlato di Application Kit per la gestione degli errori e come utilizzare queste funzionalità nel proprio codice.
http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ErrorHandlingCocoa/ErrorHandling/ErrorHandling.html

Blocks Programming Topics
Descrive la funzionalità Blocchi per il linguaggio di programmazione C.
http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/Blocks/Articles/00_Introduction.html

Predicates Programming Guide
Descrive come specificare interrogazioni in Cocoa.
http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/Predicates/predicates.html

Key-Value Coding Programming Guide
Descrive il protocollo che definisce un meccanismo per accedere a proprietà di un oggetto indirettamente per nome o chiave.
http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/KeyValueCoding/KeyValueCoding.html

Threading Programming Guide
http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/Multithreading/Introduction/Introduction.html

Concurrency Programming Guide
Spiega come implementare percorsi concorrenti di codice nell’applicazione.
http://developer.apple.com/mac/library/documentation/General/Conceptual/ConcurrencyProgrammingGuide/Introduction/Introduction.html

Distributed Objects Programming Topics
Spiega come oggetti Objective-C in thread differenti o in diversi processi possono comunicare tra loro.
http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/DistrObjects/DistrObjects.html

Coding Guidelines for Cocoa
Linee guida per la scelta dei nomi per API Cocoa e suggerimenti di progettazione per sviluppatori di framework.
http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/CodingGuidelines/CodingGuidelines.html

Xcode Glossary
Definisce i termini più comuni necessari a capire l’applicazione Xcode.
http://developer.apple.com/mac/library/documentation/DeveloperTools/Conceptual/Xcode_Glossary/10-Introduction/Introduction.html

Mac OS X Reference Library
http://developer.apple.com/mac/library/navigation/

iOS Reference Library
http://developer.apple.com/iphone/index.action

Objective-C: programmazione chiave-valore

Posted: marzo 15, 2011 by eamedeo in programming
Etichette:

(Il materiale originale da cui è stato tratto questo post era in origine il Capitolo 14 del libro Objective-C Pocket di recente uscita)

La sintassi di Objective-C per l’accesso alle proprietà è molto semplice e consente di esprimere codice compatto e autodescrittivo. Per esempio, per accedere alla proprietà nome dell’oggetto Persona è possibile scrivere come segue:


Persona *p = [[Persona alloc] init];
p.nome = @"Enrico";

Con la codifica chiave-valore è possibile considerare l’insieme di proprietà di un oggetto come un dizionario, una struttura dati che contiene un insieme di oggetti, ciascuno dei quali è identificato in modo univoco da una chiave.

Per assegnare un valore alla proprietà nome utilizzando la codifica chiave-valore è necessario utilizzare il metodo setValue:forKey:. Il codice di cui sopra è implementabile quindi anche come segue:


Persona *p = [[Persona alloc] init];
[p setValue: @"Enrico" forKey: @"nome"];

Utilizzando questo metodo si imposta il valore della proprietà indicata nel parametro forKey con il valore passato come primo parametro. Se invece si desidera leggere il valore della proprietà, si può utilizzare il metodo valueForKey che si aspetta come parametro la chiave (il nome della proprietà) e ne restituisce il valore.

Per esempio, il codice seguente stampa nei log il valore delle proprietà nome e cognome:


NSLog(@"Nome=%@", [p valueForKey:@"nome"]);
NSLog(@"Cognome=%@", [p valueForKey:@"cognome"]);

Ma a cosa serve questa ulteriore modalità d’accesso alle proprietà? Il codice non risulta più compatto di quello normalmente utilizzato per accedere alle proprietà, né appare particolarmente elegante. Infatti, la codifica chiave-valore non offre il meglio di sé se utilizzata da sola, ma è una caratteristica abilitante per altre tecnologie, come l’osservazione chiave-valore, i collegamenti con elementi visuali e Core Data.

Dal punto di vista tecnico, i metodi relativi alla codifica chiave-valore sono definiti nel protocollo informale NSKeyValueCoding e una implementazione di default è presente nella classe NSObject.

Chiavi e dizionari

Nelle righe precedenti sono stati citati i dizionari, presentati come stretti parenti della codifica chiave-valore. Questa struttura dati è implementata in Cocoa dalla classe NSDictionary.

Oltre a una certa similitudine, NSKeyValueCoding e NSDictionary hanno un’attinenza a livello di API, dato che è possibile riversare il contenuto di un dizionario nelle proprietà di un oggetto oppure estrarre queste ultime per ottenere un’istanza di NSDictionary.

L’operazione più semplice è la prima e si basa su un metodo di NSKeyValueConding che si chiama setValuesForKeysWithDictionary. Il metodo si attende come parametro un dizionario, i cui valori sono utilizzati per valorizzare le proprietà dell’oggetto. Ovviamente sono utilizzate solo le chiavi del dizionario per cui esiste una corrispondenza con le proprietà dell’oggetto.

Il codice che segue utilizza questo metodo per valorizzare un oggetto Persona:


NSArray *objs = [NSArray
  arrayWithObjects:@"Mario", @"Rossi", nil];

NSArray *keys = [NSArray
  arrayWithObjects:@"nome", @"cognome", nil];

NSDictionary *dict = [NSDictionary
  dictionaryWithObjects:objs forKeys:keys];

Persona *p = [[Persona alloc] init];
[p setValuesForKeysWithDictionary:dict];

NSLog(@"Nome=%@", [p valueForKey:@"nome"]);
NSLog(@"Cognome=%@", [p valueForKey:@"cognome"]);

Il dizionario creato ha il seguente contenuto:


{
cognome = Rossi;
nome = Mario;
}

L’output del programma è il seguente:


KeyValue[4246:a0f] Nome=Mario
KeyValue[4246:a0f] Cognome=Rossi

L’operazione inversa è possibile attraverso il metodo dictionaryWithValuesForKeys, ma è necessario passare a quest’ultimo un vettore con le chiavi da estrarre.

Nel codice che segue è presente un esempio: viene creato un oggetto Persona e un vettore di chiavi che contiene i valori nome e cognome. Quindi viene invocato il metodo dictionaryWithValuesForKeys e stampato il risultato:


Persona *p = [[Persona alloc] init];

p.nome = @"Giuseppe";
p.cognome = @"Verdi";

NSArray *keys = [NSArray
  arrayWithObjects:@"nome", @"cognome", nil];

NSDictionary *dict =
  [p dictionaryWithValuesForKeys:keys];

NSLog(@"%@", [dict description]);

L’output del programma è il seguente:


KeyValue[4355:a0f] {
  cognome = Verdi;
  nome = Giuseppe;
}

Nel caso il dizionario passato a setValuesForKeysWithDictionary o il vettore passato dictionaryWithValuesForKeys a non contengano chiavi per cui non sono presenti proprietà, viene sollevata una NSException (il cui nome è NSUnknownKeyException e la reason vale this class is not key value coding-compliant for the key XXX).

Valori mancanti

Le proprietà di un oggetto possono assumere il valore nil, la costante che indica che una variabile di tipo riferimento a oggetto non contiene alcun valore. Il problema è che i dizionari non possono contenere chiavi il cui valore è nil. Questo potrebbe creare confusione nel momento in cui si utilizzino i metodi sopra indicati per passare da proprietà a dizionari e viceversa.

In oggetti NSDictionary i valori nil vengono rappresentati da un oggetto specifico e molto semplice. Presenta infatti pochissimi metodi e campi perché è sostanzialmente una classe che rappresenta un concetto. Si tratta di NSNull.

I metodi setValuesForKeysWithDictionary e dictionaryWithValuesForKeys eseguono in modo autonomo la conversione tra nil e NSNull, quindi nelle proprietà degli oggetti si troverà, dove opportuno, il valore nil, mentre nelle collezioni NSNull.

La codifica chiave valore non cerca solo le proprietà con la chiave richiesta, ma anche le variabili d’istanza. Quando si utilizza il metodo valueForKey o setValue:forKey:, la ricerca della dato a cui accedere avviene cercando prima la presenza nella classe di un metodo accessor adeguato (per esempio, per la proprietà nome vengono cercati getNome, nome e isNome, dato che la proprietà potrebbe essere di tipo booleano e quindi si sarebbe potuto utilizzare un getter dal nome personalizzato). Se questo non viene trovato vengono cercate le collezioni (percorsi); se anche questa ricerca non produce risultati e il flag accessingInstanceVariablesDirectly dell’oggetto vale YES, vengono cercate le variabili (nell’ordine, per la chiave nome il runtime cerca _nome, _isNome, nome e IsNome).

Convenienze…

Posted: febbraio 28, 2011 by eamedeo in authoring

Può costare meno l’edizione cartacea di un libro, rispetto all’edizione in digitale?

È possibile, è possibile.

Guarda qui.

Objective-C live

Posted: febbraio 9, 2011 by eamedeo in freschi di stampa

just to let you know… che sono arrivate le copie autore. Prime impressioni: 240pp di Pocket sono un bel peso. Lo sfoglio, c’è da valutare l’impatto del libro su carta (impossibile farsi un’idea delle vibrazioni cosmiche emanate dall’oggetto quando ancora questo è solo un file Word o un’impaginato PDF). Comunque eccolo… Croccante!

Objective-C

Posted: gennaio 31, 2011 by eamedeo in freschi di stampa

«Arriva eh? Guarda che arriva!» ammoniva la mamma al piccolo, che preoccupato si chiedeva «ma chi?». Quando, pochi giorni fa, ricevetti un mail del mio editor, il messaggio sembrava simile: «guarda che arriva!». Ma tutti e due sapevamo bene cosa: stava per uscire il mio nuovo libro, Objective-C Pocket. E a differenza del piccolo spaventato, i miei sentimenti erano di gioia e soddisfazione, non di paura.

Di questo libro ne ho scritto tanto nei mesi scorsi, pubblicando materiale e diverse versioni della scaletta. Quindi riporto qui solo la descrizione che l’editore fa nella relativa scheda:

Objective-C è un’estensione a oggetti del linguaggio C. Semplice e potente è diventato linguaggio ufficiale e cuore pulsante per i programmatori del mondo Apple: le applicazioni iPhone, iPad e Mac sono scritte in Objective-C. Partendo dalle basi della sintassi, il libro arriva a introdurre le strutture dati, le eccezioni, gli eventi e i delegati. Non mancano tutorial, consigli ed esempi, che rendono questo libro ideale per lo sviluppatore alle prime armi, ma permettono anche a programmatori più esperti di avere un punto di riferimento per una consultazione agile ed efficace.

Arriva eh? Guardate che arriva. Ma non è ancora disponibile, lo sarà il 9 febbraio in tutte le “migliori librerie”, come amava dire la pubblicità. Come Pocket è corposo (240pp): l’editore è stato d’accordo a spendere qualche sedicesimo in più di carta in modo da poter coprire l’argomento in modo veramente completo, nonostante il recente trend per i Pocket sia quello di utilizzare un numero di pagine più contenuto.

In più c’è un bonus: l’Appendice C in formato PDF, liberamente scaricabile qui. Tre paginette con il riassunto dei simboli di Objective-C, da stampare e appendere alla parete, come supporto mnemonico. Spero sia un omaggio utile, ma prima bisogna leggere il libro, altrimenti si capirà poco.

Vi aspetto sulle pagine del libro. E buona lettura.

Libri in digitale

Posted: dicembre 9, 2010 by eamedeo in authoring

Sono sempre di più le piattaforme e le aziende che offrono piattaforme per i contenuti in digitale. Libri, riviste e quotidiani sono o saranno sempre di più disponibili per una fruizione in formato elettronico. Tramite computer, palmare o meglio il tablet, strumento del nuovo millennio per l’accesso a nuovi e vecchi prodotti editoriali.

Non c’è che dire, un grosso vantaggio per i lettori che non saranno più vincolati al supporto cartaceo. Un collega me l’ha detto oggi: per Natale mi faccio regalare un iPad, ci carico 10GB di libri e li tengo solo lì. Quando mi servono li leggo.

A parte il fatto che secondo me in questo modo si viene a perdere una delle funzionalità più importanti di una libreria di libri in digitale: la possibilità di eseguire ricerche a tappeto a-la-Google. In cantina ho diversi bauli di libri di informatica: è chiaro che data la veloce obsolescenza di questa tipologia di contenuti, i testi rivestono per me principalmente un ruolo affettivo. Ma il grosso limite della carta è che non posso fare una ricerca a tappeto su tutti i volumi: dovrei aprirne uno a uno per cercare nel sommario o nell’indice analitico. Esattamente la stessa cosa che dovrà fare il mio collega, potendo però contare in più sulla ricerca full-text di iBooks. A meno ovviamente di non utilizzare un computer.

L’enorme disponibilità di contenuti in digitale che si sta creando anche qui in Italia non risolve solo il problema della ricerca a tappeto (che comunque poteva essere supportata da Google Books): costituisce anche un miglioramento significativo in merito alla qualità dei libri in digitale.

L’archivio di dieci gigabyte di libri del mio collega mica nasce oggi: è il risultato di anni di download da diversi circuiti peer-to-peer. La collezione completa di O’Reilly, di Wiley e così via. Libri di informatica, ma anche di matematica, statistica e ingegneria. Soprattutto testi in inglese, perché le scansioni che si trovano sulle varie reti sono fatte soprattutto su questi.

Come dicevamo, avremo un aumento di qualità: i file che si trovano in rete spesso hanno caratteristiche scadenti: copertina mal scansita, pagine senza link. Se va bene si tratta di pagine ben fatte, altrimenti di copie fotostatiche di bassa qualità (soprattutto su libri vecchi). Sono lavori amatoriali, non confrontabili con quelli prodotti dalla professionalità di un editore o di un service editoriale. E molto spesso si tratta di file PDF e non di ePub. Chi usa iPad sa che c’è una bella differenza d’esperienza d’uso tra i due formati. Cento volte meglio il secondo, almeno con le versioni attuali di iBooks. Ma la natura stessa del PDF, che ha un’impaginazione statica, può essere meno godibile di un ePub che può essere reimpaginato e adattato al layout orizzontale o verticale del dispositivo.

Con il proliferare dei contenuti digitali offerti dagli editori questa epoca di file dalla qualità amatoriale di avvia verso il tramonto. Nessuno più si metterà a scansire il libro cartaceo per produrne un PDF, sarà sufficiente mettere in rete il file venduto dall’editore e con pochissima fatica si potrà godere di un prodotto di qualità. È sufficiente che il libro venga acquistato da una persona e che questa sia disposta a mettere in rete il file.

I DRM non sono un problema, si bypassano velocemente. Ve lo immaginate? Esce l’ultimo libro di Stephen King in formato elettronico: il giorno stesso (o addirittura la sera prima), c’è già il file in digitale sulle reti peer-to-peer. Il DRM? Andato. Ovvio, con gli autori di minor appeal questo non succederà subito: in funzione dell’interesse e della presenza o meno del DRM il file sarà presente in Rete presto o tardi. Ma lo si troverà di sicuro, questo non c’è dubbio.

La rivoluzioni del digitale presto porterà molti più contenuti, di qualità migliore, “con maggiori funzioni” sui computer, palmari e tablet di tutti i lettori.

Scaldate i vostri client BitTorrent.

—-

Certo, c’è anche la possibilità di acquistarli, i libri. Ma il lettore si potrebbe chiedere “perché pagare per avere qualcosa che posso avere gratis”? Buona domanda. Con il libro cartaceo acquisti anche il supporto, ma con il digitale?

PS: ovviamente non sto consigliando a nessuno di scaricare i file illegalmente, sarebbe istigazione a delinquere (anche se lo fanno tutti). Questo è solo un pezzo di… colore.

I have a dream

Posted: dicembre 1, 2010 by eamedeo in Uncategorized

Ho un sogno.

Trovare una casa con vista sull’oceano, con muri in sasso e persiane azzurre. Non la voglio sulla riva, ma un po’ in collina, in un posto verde e tranquillo. Il mare mi basta scorgerlo dalle finestre, discreto e presente solo all’invito dello sguardo.

Una casetta semplice, fatta di elementi naturali. Legno, pietra e calce. Qualche luce ben piazzata. Lampade a risparmio energetico, ovviamente, anche perché quelle a incandescenza stanno per essere vietate. Ma nessun faro alogeno o lampada LED, perché saprebbero troppo di moderno.

Una casetta piccola, perché quando sei a contatto con la natura la tua casa è l’ambiente naturale che ti circonda e non lo spazio delimitato dalle quattro mura.

Una stufa a legna, forse un camino, per scaldare l’ambiente e non solo come temperatura. Ma il luogo che immagino ha un clima mite, non troppo freddo neanche d’inverno.

Una casetta senza televisione, decoder o parabola. L’unica tecnologia che mi serve è un accesso a Internet. Devo pur rimanere connesso con il mondo, e continuare a scrivere. Libri e articoli di informatica, ma non solo. Potrei allargare gli orizzonti e occuparmi anche di altro.

Una casa in un bel posto… potrebbe essere il Portogallo. Per esempio tra Odemira, Almòdovar e Monchique. Mi raccoglierei tra il Parque Natural do Sudoeste Alentejano e Costa Vicentina e il Parque Natural do Vale do Guadiana. Una zona puntellata da paesini dalle chiese bianche bordate d’azzurro, separate da colline ocra e verdi.

Potrei prendere una piccola barca e navigare sul Rio Mira, che è molto lungo e potrebbe portarmi fino all’oceano. E lì, giunta la sera, potrei osservare tutta la gamma di sfumature arancioni che il sole fa quando abbraccia l’orizzonte: dall’ambra al corallo, dal melograno al vermiglione. Per poi passare al ruggine e al mogano, fino a raggiungere il buio.

E un’arco di stelle comparirebbe nel cielo, avvolgendomi nella notte.