…nelle luci e nelle ombre della foresta.

La foresta è un rifugio, una casa. È il luogo in cui si può perdere per ritrovarsi, dove si ritrova il sé smarrito tra le foglie e i sentieri che sembrano non finire mai. È il dominio del silenzio, dove ogni rombo, ogni sussurro assume un significato profondo e imperscrutabile.

Alexandre Maia, custode di questo silenzio, lo conosce come pochi. Armato della sua macchina fotografica, ha calcato i sentieri dei boschi della Germania, imprigionando in pellicola analogica momenti fugaci di una bellezza selvaggia in costante metamorfosi. Ha calcato le ombre tra abeti e faggi, ha strisciato lungo brughiere e paludi, sfidando le stagioni e il tempo, in un continuo alternarsi di luce e oscurità. Non cercava solo di afferrare l’atmosfera raccolta, quasi monastica, della foresta, ma voleva mostrare i suoi mutamenti, lanciare un campanello d’allarme sulle problematiche ambientali e climatiche.
Le sue fotografie a colori non sono solo la celebrazione di alberi maestosi e panorami mozzafiato. Sono lo specchio di un ecosistema sottile e delicato, che rischia di svanire, di essere inghiottito dal nulla. Sono il grido di dolore di una madre Terra sofferente, un appello straziante a prenderci cura di ciò che abbiamo.

E anche il libro è un tributo a questa coscienza ecologica, un grido silenzioso. Stampato su carta riciclata tedesca, “Enter the Forest” è un manifesto di una nuova sensibilità, un appello all’attenzione e alla cura.
Entrare nei boschi attraverso le lenti di Maia è un’esperienza intensa, quasi mistica. Si torna a essere bambini, quando ogni cosa sembrava animata da uno spirito proprio. Si riscopre il legame ancestrale con la terra, si sentono i propri passi echeggiare come una preghiera sussurrata. In quel silenzio sacro, scorgiamo la nostra miseria e la nostra grandezza, riflesse nelle luci e nelle ombre della foresta.

il frutto maturo di un amore mai sopito…

Il fotografo Ara Oshagan è figlio di Beirut, quel porto-rifugio dove gli Armeni hanno gettato l’àncora dopo la tempesta del genocidio. Lui, nato e cresciuto nei quartieri che odorano di caffè e za’atar, un giorno è partito. Ha spiccato il volo verso terre lontane, eppure il richiamo della città-madre gli è rimasto nel sangue.

Così, un mattino d’autunno è tornato con la sua vecchia Leica appesa al collo, i capelli brizzolati dal tempo e gli occhi pieni di ricordi. Ha percorso stradine, vicoli, piazze, assaporandone ogni crepa. Si è immerso nel paesaggio urbano spezzato di Bourj Hammoud, una casba verticale abitata dai suoi Armeni.

Con gesto lento ha puntato l’obiettivo verso volti, pareti scrostate, insegne logore. Ha cercato tracce, indizi, memorie. Le sue dita callose hanno premuto il pulsante, bloccando attimi per sempre sulla pellicola. In ogni scatto, una storia nascosta.

Oshagan non è un turista con la macchina fotografica. Lui conosce l’anima di questa città malridotta. Ne vede la bellezza lì dove altri vedrebbero solo degrado. La sua lente non mente, non abbellisce, scruta in profondità. Svela la poesia dietro la polvere, la luce oltre le ombre.

I suoi scatti raccontano di radici e di ali. Della malinconia dolceamara di chi è partito e ha lasciato un pezzo di cuore tra queste strade. Dicono lo stupore di ritrovare un cielo immutato dopo anni di assenza. Parlano di un popolo che non si arrende, che rinasce tra le macerie della storia.

Oshagan non è mai partito davvero da Beirut. Nel bene e nel male, quella rimane casa sua. Per questo ritorna spesso, e ogni volta scopre qualcosa di nuovo e antico insieme. Le sue fotografie sono il frutto maturo di un amore mai sopito. Linfa che scorre ancora tra queste vene di pietra.

l’essenza di ciò che ti circonda…

La fotocamera è un’amante affascinante e mistica, richiede tempo e dedizione per svelare il suo animo e i suoi misteri. La GRIIIx, in particolare, è una damigella schiva che preferisce l’essenzialità al rumore del superfluo. Non è amante dei fronzoli o dei trucchi. La sua bellezza risiede nella purezza delle forme, nel sussurro della sua discrezione.
In mano, si adatta come se fosse fatta apposta per te, un’estensione naturale del tuo braccio. I suoi tasti rispondono docilmente ai tuoi comandi, raccontando storie attraverso i suoni metallici del diaframma e dell’otturatore. Il mondo, visto attraverso il suo occhio di vetro, appare in una luce completamente nuova. È lei a scegliere quali dettagli mostrare, quale bellezza catturare.
Nelle tue passeggiate, lei è la tua compagna fedele, rapida e silenziosa. In un istante, con un semplice clic, la GRIIIx può catturare e cristallizzare un frammento di vita. Quell’istante, quell’attimo di vita, esiste solo grazie a lei.
Ciascuna delle sue immagini è un dono, un ricordo impresso che riporta a casa. Sono i segreti che condividete, i momenti passati insieme, custoditi per sempre. Solo tu puoi veramente conoscerli e apprezzarli.
Ecco perché questo gioiellino è più di un semplice strumento, è una musa, un’amante, una compagna. Quando cominci a comprendere il suo linguaggio, a corteggiarla con cura e a seguirne i ritmi, solo allora ti svelerà la sua vera anima. È allora che tu, attraverso i suoi occhi, potrai catturare la bellezza nascosta del mondo. La fotocamera diventa un’estensione del tuo occhio e la GRIIIx è l’interprete che ti aiuta a vedere la poesia dove prima non l’avevi notata. Perché è il feeling con lo strumento che hai tra le mani che dà vita allo stile, e la GRIIIx ha la capacità di scoprire l’essenza di ciò che ti circonda.

Realizzare un’app di citazioni a caso in Swift utilizzando SwiftUI e Combine

In questo articolo, esploreremo come costruire un’applicazione mobile iOS semplice che visualizza una citazione casuale da un elenco di citazioni memorizzate in un file di testo online. Questo esercizio ci permetterà di imparare a utilizzare alcune importanti tecnologie Swift, tra cui SwiftUI per l’interfaccia utente e Combine per la gestione degli eventi asincroni.

Iniziamo descrivendo l’architettura generale del nostro progetto. L’applicazione sarà composta da una singola schermata che visualizza una citazione casuale e offre un pulsante per caricare una nuova citazione. Le citazioni saranno memorizzate in un file di testo online, con una particolare formattazione per separare ogni citazione.

Partiamo da una semplice applicazione SwiftUI. Creiamo una nuova classe Cancellables per tenere traccia dei nostri processi asincroni. Utilizzeremo la libreria Combine di Swift per gestire i processi asincroni e i cambiamenti di stato.

import SwiftUI
import Combine

class Cancellables: ObservableObject {
    var set = Set<AnyCancellable>()
}

Successivamente, creiamo il nostro ContentView, che è il componente principale della nostra applicazione.

struct ContentView: View {
    @State private var text = "Loading..."
    private let url = URL(string: "https://www.raucci.net/frasi.txt%22!
    @StateObject private var cancellables = Cancellables()
    @State private var rotation = 0.0

Abbiamo definito alcune variabili di stato: text per la citazione attuale, url per l’URL del nostro file di citazioni, cancellables per conservare i processi asincroni e rotation per gestire l’animazione dell’immagine.

A seguire, definiamo la struttura visiva del nostro ContentView.

    var body: some View {
        NavigationView {
            VStack {
                Image("yourImageName") 
                    .resizable()
                    .aspectRatio(contentMode: .fit)
                    .scaleEffect(0.8) 
                    .rotationEffect(.degrees(rotation))
                    .onTapGesture {
                        fetchQuotes()
                        withAnimation(.easeInOut(duration: 1.0)) {
                            self.rotation += 360
                        }
                    }
                Text(text)
                    .font(.custom("jgs_Font", size: 38)) 
                    .padding() 
                    .frame(maxWidth: .infinity, maxHeight: .infinity) 
            }
            .navigationTitle("fortune...")
            .toolbar {
                ToolbarItem(placement: .navigationBarLeading) {
                    Button(action: copyQuote) {
                        Image(systemName: "doc.on.doc")
                    }
                }
                ToolbarItem(placement: .navigationBarTrailing) {
                    Button(action: fetchQuotes) {
                        Image(systemName: "arrow.clockwise")
                    }
                }
            }
        }
        .onAppear {
            fetchQuotes()
        }
    }

Qui abbiamo definito una NavigationView con una VStack che contiene un’immagine e un Text. L’immagine è configurata per ridimensionarsi, mantenere le proporzioni, ridursi all’80% della sua dimensione originale e ruotare in base alla variabile di stato rotation. Il Text visualizza la citazione attuale e ha un font personalizzato, del padding e viene centrato nella vista. Abbiamo anche una barra di navigazione con due pulsanti: uno per copiare la citazione attuale e l’altro per caricare una nuova citazione.

La funzione fetchQuotes viene chiamata quando l’utente tocca l’immagine o il pulsante di caricamento e quando la vista appare.

    private func copyQuote() {
        UIPasteboard.general.string = text
    }

La funzione copyQuote copia la citazione attuale negli appunti del dispositivo.

    private func fetchQuotes() {
        URLSession.shared.dataTaskPublisher(for: url)
            .map { data, _ in String(data: data, encoding: .utf8) }
            .receive(on: DispatchQueue.main)
            .sink(receiveCompletion: { completion in
                if case .failure(let err) = completion {
                    self.text = "Failed to load: \(err)"
                }
            }, receiveValue: { text in self.processText(text) })
            .store(in: &cancellables.set)
    }

fetchQuotes avvia un processo asincrono per caricare il contenuto del nostro file di citazioni. Una volta che il contenuto è stato caricato, viene invocata la funzione processText.

    private func processText(_ text: String?) {
        guard let text

 = text else {
            self.text = "Failed to load"
            return
        }

        let trimmedText = text.replacingOccurrences(of: "\n", with: " ")
        let components = trimmedText.components(separatedBy: "#-")
        var phrases: [String] = []

        for component in components.dropFirst() {
            if let endRange = component.range(of: "-#") {
                let phrase = String(component[..<endRange.lowerBound]).trimmingCharacters(in: .whitespacesAndNewlines)
                if !phrase.isEmpty {
                    phrases.append(phrase)
                }
            }
        }

        if phrases.isEmpty {
            self.text = "No phrases found"
        } else {
            self.text = phrases.randomElement() ?? "No phrases found"
        }
    }
}

La funzione processText processa il contenuto del file di citazioni, estrae le singole citazioni e seleziona una citazione casuale.

Una mano che scrive…

Una mano che scrive è un prodigio di ogni giorno. Quando sento il bisogno di silenzio e riflessione, la prima cosa che faccio è spegnere tutto intorno a me. Via il computer, muto il telefono. Poi prendo un foglio bianco, una penna e mi metto seduto al tavolo.
L’atto di scrittura ha un inizio lento, la punta della penna graffia sulla carta, la mia mano procede incerta tracciando parole a fatica, con la lentezza di un pensiero che arranca a prendere forma. È difficile all’inizio, la mente vaga, mi distraggo facilmente. È dura pensare davanti a uno schermo spento, il silenzio mi mette a disagio.
Ma poco a poco entro nel ritmo, mi lascio cullare dal fruscio della penna. Le parole escono, i pensieri fluiscono, la pagina bianca comincia a riempirsi. È come respirare a pieni polmoni, finalmente: mi concedo il lusso di pensare con calma, di limare le idee, cambiare opinione. La matita cancella, la penna riscrive. Mi sento libero, nessuna gabbia, solo la libertà di riempire questo foglio passo dopo passo.
Scrivere a mano è anche lasciare traccia del mio passaggio. È dire “sono stato qui”. È parlare a me stesso e agli altri. Queste parole vergate di mio pugno hanno un’anima che nessun testo digitale possiede. La mia scrittura è unica.
Chissà se arriverà il giorno in cui passerò completamente alla tastiera – mio figlio (altra generazione, altre abitudini) ci riesce. Per ora scrivere a mano è insostituibile – almeno lo è per me. La penna è parte del mio braccio, serve a dare forma concreta ai miei pensieri. È il mio modo di essere nel mondo.
Scrivere a mano è una passeggiata, scrivere al computer una corsa.
Quando scrivo a mano prendo la strada più lunga, mi godo il tragitto passo dopo passo. Le dita scivolano piano sulla carta, ogni lettera tracciata è una piccola conquista. Scrivere a mano è una piacevole fatica. Quando scrivo al computer invece corro, vado di fretta. Le dita tamburellano veloci sulla tastiera, le parole compaiono come d’incanto sullo schermo. È tutto più facile e immediato. Meno fatica ma anche meno piacere. A volte – sia chiaro – corro volentieri, quando ho fretta. Ma quando posso, preferisco camminare.
È magico vedere le parole prendere forma sotto la mia mano. Assisto alla nascita dell’opera, al pensiero che si struttura: ogni pagina è unica e irripetibile. Anche la mia grafia rivela il mio stato d’animo. Se sono nervoso la calligrafia è tremolante, se sono rilassato diventa ampia e distesa.
Quando scrivo di getto è come impastare pane, farina acqua e lievito. Le parole si gonfiano sulla pagina, la mia mano impasta frasi dense che espandono il testo. Aggiungo pensieri finché l’impasto è pronto.
A volte l’ispirazione si esaurisce, le frasi suonano vuote, la mano è stanca. Allora mi fermo, lascio lievitare le idee. Dopo torneranno parole nuove. La pagina sa aspettare.
La mano che scrive è un miracolo di ogni giorno. Finché avrò voglia di pensieri lenti, continuerò a staccare la spina. Prenderò carta e penna e lascerò che la mano dia forma alle parole. È il mio modo di respirare in libertà.

L’ombra nascosta dell’intelligenza artificiale…

L’intelligenza artificiale è un fiume carsico. Serpeggia silenziosa nelle viscere della nostra società, cercando faticosamente il suo percorso. Affiora qua e là in superficie con risultati prodigiosi, per poi scomparire di nuovo nell’ombra.
È un fiume che ha bisogno di molte braccia per scavare il suo letto. Braccia pagate una miseria, due dollari l’ora, in luoghi lontani come il Kenya. Lì dei giovani, chini su piccoli schermi, rendono meno “tossiche” le risposte di ChatGPT, più gentili, politically correct. Lo stesso accade con Bard, il chatbot di Google. Software miracolosi, dietro cui si celano esseri in carne e ossa, che correggono, limano, affinano…
È una storia che si ripete. Come nel Settecento, quando tutti ammiravano esterrefatti il Turco Meccanico, quell’automa che giocava divinamente a scacchi. Celato nelle sue viscere, c’era un nano che muoveva i fili. Oggi mille corpi invisibili alimentano la corrente sotterranea dell’intelligenza artificiale.
Sono lavoratori precari, assunti da multinazionali come Accenture o Appen. Denunciano di non riuscire a controllare quello che le macchine dicono. Temono che le risposte diventino pericolose. Un grido nel deserto, che dovrebbe scuotere le nostre coscienze.
Non permettiamo che la luce accecante del progresso ci abbagli. Dietro c’è sempre un sacrificio umano. Ricostruiamo il percorso sotterraneo di questo sapere, seguiamo il filo rosso dello sfruttamento che lo alimenta.
Le imprese prosperano grazie al lavoro nascosto di molti. Devono riconoscere questo impegno, retribuirlo dignitosamente, non voltarsi dall’altra parte. Il profitto non può calpestare la dignità dell’uomo.
Camminiamo inquieti su questa strada accidentata della tecnologia, tra intuizioni geniali e regressioni etiche. Ma non smarriamoci. Guardiamo la persona dietro la macchina, l’anima dietro gli algoritmi. Solo così potremo immaginare un futuro più umano, dove progresso scientifico e giustizia sociale vadano di pari passo.
Continuiamo a interrogarci, a porre domande scomode all’intelligenza artificiale. Perché la tecnologia non è mai neutrale, porta impressa l’anima di chi l’ha generata. Spetta a noi decidere che volto darle: un volto luminoso di speranza, o un ghigno oscuro di prevaricazione.