[…]

Faccio cose, vedo gente, preparo appunti…

come il mare alla bassa marea…

In un mondo dove le nuvole non sono più solo ammassi di vapore sospesi nel cielo, ma scrigni di conoscenza che fluttuano in un’etere digitale, la visione di Crabe Backwards ci offre uno specchio in cui riflettere su quanto la nostra interazione con la tecnologia si stia rarefacendo, come acqua che lentamente evapora sotto il sole di un giorno d’estate.
La sua “Galassia Pan” ci guida in un percorso che ci vede passare dal pesante monolite del televisore, re indiscusso degli anni Settanta, a un leggero flauto, simbolo di una comunicazione che si è trasformata in un soffio di vento, un sussurro nell’orecchio dell’umanità.
La tecnologia, compagna fedele del nostro quotidiano, si è fatta sempre più impalpabile, come la polvere di un vecchio libro che si solleva al passaggio delle dita. Da un monolito che troneggiava nelle nostre case, abbiamo visto nascere il telecomando, piccolo totem che ci ha permesso di sottrarci alla tirannia dell’audio e dei colori, strumento magico che ci ha concesso il dono del zapping.
E poi il videoregistratore, chiave di volta di questa metamorfosi, che ha sottratto il racconto dal rettilineo corso del tempo, permettendoci di riavvolgere il nastro delle storie, di sottrarci all’imposizione della linearità. E infine, l’avvento di Internet, la lente attraverso cui abbiamo osservato il mondo trasformarsi in un collage di immagini statiche, spesso monocrome, un teatro silenzioso dove le parole scritte riecheggiano come echi in una grotta.
Ecco che, allora, la tecnologia si ritrae come il mare alla bassa marea, lasciando scoperto un paesaggio fatto di suoni. Un paesaggio che l’utente, emancipato dalla passività dell’osservatore, può modulare a suo piacimento, come un compositore davanti al suo pentagramma.
Ma nonostante l’apparente leggerezza di questa trasformazione, si cela un’involuzione, un ritorno alle origini. La nostra comunicazione, un tempo ricca di immagini e suoni, si è ridotta a una sequenza di suoni spogli, di parole scritte che fluttuano nello spazio virtuale come foglie portate dal vento. Siamo passati dal pieno rumore del mondo alla silenziosa solitudine del deserto.
E così, mentre osserviamo questa marea che si ritira, ci ritroviamo a domandarci: stiamo realmente andando avanti, o stiamo semplicemente tornando indietro, verso un’era in cui la comunicazione era un flauto suonato da Pan, un fischio nel vento, una melodia così semplice e leggera da poter essere trasportata da un soffio di vento?

Tracciare il progresso dell’anno corrente in SwiftUI

Nell’ambito dello sviluppo di applicazioni, esistono numerose situazioni in cui potrebbe essere utile visualizzare una progress bar per tracciare il progresso di un’attività. In questo articolo, discuteremo come abbiamo implementato una progress bar in SwiftUI che traccia il progresso dell’anno corrente, mostrando non solo una barra di progresso visiva, ma anche una rappresentazione testuale che può essere facilmente copiata negli appunti.

Parte 1: Scelte progettuali

Il nostro obiettivo principale era creare un’app che potesse tracciare il progresso dell’anno corrente in modo visivo e testuale. Per realizzare ciò, abbiamo utilizzato SwiftUI, uno dei framework più potenti di Apple per lo sviluppo di interfacce utente. Ecco le variabili di stato che abbiamo definito all’inizio del nostro ContentView:

@State private var progress: Float = 0.0
@State private var monthsElapsed: Int = 0
@State private var daysElapsed: Int = 0
@State private var hoursElapsed: Int = 0
@State private var minutesElapsed: Int = 0
@State private var secondsElapsed: Int = 0

Queste variabili rappresentano il progresso dell’anno corrente e le unità di tempo trascorse dall’inizio dell’anno. Utilizzando @State, SwiftUI rileva automaticamente quando queste variabili vengono aggiornate e aggiorna l’interfaccia utente di conseguenza.

Parte 2: Calcolo del progresso

Il cuore del nostro codice risiede nella funzione calculateProgress(). Questa funzione calcola l’intervallo di tempo dall’inizio dell’anno ad ora, e lo divide per l’intervallo di tempo totale dell’anno per ottenere il progresso come un valore frazionario. Questo valore viene poi moltiplicato per 100 per ottenere una percentuale.

let elapsedSeconds = now.timeIntervalSince(startOfYear)
let totalSeconds = endOfYear.timeIntervalSince(startOfYear)
progress = Float(elapsedSeconds / totalSeconds)

Oltre a ciò, calculateProgress() calcola anche il numero di mesi, giorni, ore, minuti e secondi trascorsi dall’inizio dell’anno. Fa ciò utilizzando il metodo dateComponents(_:from:to:) dell’oggetto Calendar.current.

Parte 3: Visualizzazione del progresso

Per visualizzare il progresso, abbiamo utilizzato la classe ProgressView di SwiftUI. Questa vista è configurata per mostrare il progresso come una barra di avanzamento, con il valore del progresso impostato sul valore della variabile di stato progress.

ProgressView(value: progress)
    .progressViewStyle(LinearProgressViewStyle(tint: .blue))
    .frame(width: UIScreen.main.bounds.width * 0.8)
    .padding(.bottom, 20)

Oltre alla progress bar, abbiamo aggiunto delle etichette per mostrare il numero di mesi, giorni, ore, minuti e secondi trascorsi dall’inizio dell’anno.

Parte 4: Generazione di una barra di avanzamento testuale

Abbiamo anche voluto dare agli utenti la possibilità di copiare una rappresentazione testuale della progress bar negli appunti. Per realizzare ciò, abbiamo aggiunto un pulsante alla barra di navigazione che genera una stringa di progress bar quando viene premuto.

let filledSection = String(repeating: "▓", count: Int(progress * 20))
let unfilledSection = String(repeating: "░", count: 20 - Int(progress * 20))
let progressBarString = "\(filledSection)\(unfilledSection) \(Int(progress * 100))%"

Questo codice genera una stringa di progress bar con 20 caratteri totali. Il numero di “▓” nella stringa corrisponde alla percentuale del progresso.

Parte 5: Copia della barra di avanzamento negli appunti

Per copiare la barra di avanzamento negli appunti, abbiamo utilizzato il framework UIKit di Apple. Poiché UIKit non è nativamente compatibile con SwiftUI, abbiamo dovuto usare UIPasteboard.general.string per interagire con gli appunti.

Button(action: {
    UIPasteboard.general.string = progressBarString
}) {
    Image(systemName: "doc.on.doc")
}

Con questo codice, ogni volta che l’utente preme il pulsante, la stringa di progress bar viene copiata negli appunti, pronta per essere incollata in un’altra app o condivisa con qualcun altro.

Questo un esempio della barra testuale generata dal codice:

▓▓▓▓▓▓▓░░░░░░░ 50%

Qui, il reposity della app su GitHub.

…il coraggio di lanciare questa pietra contro il sistema.

In Ucraina si combatte, il meccanismo di progresso tedesco s’ingrippa, l’inflazione insidia i tassi e le banche paiono ballare sulla cresta di un crinale. I debiti pubblici crescono, i giovani di Francia, Belgio e Svizzera s’avviano alla protesta, l’integrazione pare una chimera. L’astensione al voto diventa la nuova normalità, la sinistra s’è spenta, l’estrema destra avanza. L’Unione Europea, divisa sull’immigrazione, sul green deal, sui disegni di un progresso che rasenta la distruzione sociale, pare un software neoliberista in corto circuito.

Macron ha acceso la miccia. Gli “infelici” sono tanti, in ogni dove. Non è solo il governo del momento, ma una traiettoria che porta a ciò. La protesta non ha ancora trovato il suo perché, un programma, che non sia solo bruciare e rompere. La lotta ideologica, quella più grande, è stata capita dalla borghesia, padrona degli orologi. Per ora, è la grande borghesia a muovere le lancette, a portare le vite di ognuno in un algoritmo, in un’equazione.

In un tempo storico unico come questo, si vive una recessione delle coscienze e un avanzamento autoritario di un’ideologia tecnocratica, di un culto dell’innovazione e del dogma della “crescita”. Quando invece penseremo a come abitare il nostro mondo e a come realizzarlo? Chi avrà il desiderio di passare da una società di sfruttamento e squilibri a una società di cooperazione e di buon senso?

Quando, invece di sprofondare nella rivoluzione digitale e biotecnologica, invece di pensare a quote di mercato, efficienza, produttività, innovazione, concorrenza, brevetti, proprietà, competitività, parleremo di conoscenza derivante da pratiche alternative, di gioia, di tempo, di spazio e di luoghi lontani da denaro e cronometro, per respirare, ritrovarci, amarci, crescerci, costruire una società del godere?

Non serve più incendiare le città, basterebbe che ognuno ritirasse i suoi risparmi dalle banche, per vedere il loro sistema crollare. Allora, le loro forze dell’ordine non servirebbero a nulla. Chi avrà il coraggio di lanciare questa pietra contro il sistema?