Aggiornamenti sulla questione https://octospacc.altervista.org/2024/05/01/luna-gaming/, anche se sicuramente questo non sarà l’ultimo post a riguardo: a meno che ciò che ho appena ora finito di architettare dovesse saltare per aria, già dopodomani proverò questo setup regolarmente fuori casa, sul campo, e ciò decreterà se effettivamente è una buona #soluzione per il #gaming oppure ho preso l’ennesima cantonata… 👀
Sia ieri sera in cui non l’ho detto bene riguardo il fisso, sia stasera per fare la #configurazione sul portatile (più ideale per questo caso d’uso, consuma meno e il WiFi è forse un po’ più stabile), ho dovuto copincollare dei comandi dalla documentazione di #Sunshine per far funzionare il gamepad virtuale. Una volta fatto ciò, per giochi come SuperTuxKart non c’è bisogno di fare oltre, ma per altra roba invece ho dovuto usare AntiMicroX per mappare gli input del controller ad input di tastiera. Nel mio caso, mi serve per inviare gli input ad NXController. 🪰
Quest’ultimo programmino ha qualche difetto, tipo che la sua finestra deve stare in focus per leggere gli input (io la metto nell’angolino in modo che non copra il gioco) e che la mappatura dello stick va cambiata dai tasti freccia ad altri, perché altrimenti per qualche ragione non funziona bene; però il suo lavoro lo fa, e via WiFi invia tutti gli input alla console #Switch sulla LAN. E dall’altro lato, il video della #console è trasmesso al PC tramite USB con SysDVR, ed arriva praticamente perfetto e con zero latenza… roba che importa poco, perché tanto in ogni caso io ci metto lo streaming da sopra. 🐌
Insomma, è un po’ complicato usare Switch come server di #cloudgaming, ma con il PC così correttamente configurato si può fare… e quindi in giro anziché portarmi la console grossa e pesante mi porto il #Nintendo#3DS (o, in realtà, anche solo il telefono, dipende). Da un certo punto di vista è meglio comunque questa configurazione rispetto ad eseguire giochi nativi PC perché, a parte che dovrei usare per forza il fisso in quel caso, i giochi su PC (a meno di non emulare Switch, ma a quel punto perché non usare la reale?) sono un estremo dolore da gestire quando hai sia la sfiga di usare Linux, che quella di non poterli comprare. Quindi vabbè. 🏴☠️🏴☠️
Ieri non ho assolutamente portato a zero la batteria del tablet per tutto il tempo che ci ho messo a provare #app diverse e a vedere cose per risolvere l’ennesimo problema causato dalle nuove versioni di #Android… ok, in tutta onestà la batteria l’ho finita nel bus più tardi, però comunque, una buona parte della carica è sparita solo nel tempo perso prima. 😶🌫️️
Un altro po’ mi sembrava di star usando iOS per non riuscire a fare una cosa così banale come: aprire un file #HTML direttamente nel #browser, ed averlo funzionante, con anche il caricamento di tutte le risorse embeddate, senza ricorrere ad un webserver locale che causa solo rogne in più… come ho detto su OTIDroid, questa cosa sembra una cazzata, ma è sorprendente quanto è difficile da Android 11 in su:
Firefox Fenix non ha mai supportato i percorsi file:///, #mannaggia a te Mozilla
Firefox legacy funzionerebbe, solo che la versione più recente (v68.11.0) è comunque antica e quindi molte nuove #API web non vanno
I #navigatori Chromium, da quando sono aggiornati per targettare le nuove API Android, non riescono più a vedere qualsiasi file su /sdcard/, ma solo quelli multimediali (utilissimo eh?); e si, hackerare il manifest per portare indietro l’API target rompe la app
La più recente versione di Chromium precedente a tutte queste novità che ho trovato (~v79.0.3945.94) è comunque molto vecchia, stesso problema di Firefox
Evidentemente nessuno ha voglia di creare un browser che funziona correttamente, (nemmeno io, in quel momento volevo solo fare un po’ di programmazione HTML), maremma maiala… ma, per fortuna mi torna in mente che una #soluzione ci sarebbe: le app che usano la #WebView di sistema funzionano ancora normalmente (senza codice aggiornato per lo #storage) se hanno un target SDK vecchio ma, proprio perché il motore che usano è quello di sistema aggiornato, la compatibilità con gli standard è massima. 😤️
Sorprendentemente, di #browserini così che siano allo stesso tempo non mezzi rotti, abbiano un target vecchio, e il permesso di lettura dell’archiviazione, non ce ne sono molti. L’unico che ho trovato è “Tint Browser“, che funzionerebbe già così senza fatica, e stavo per usare quello… ma ha uno strano bug che fa sparire tutte le schede aperte sia alla chiusura della app, che la rotazione dello schermo… e non viene aggiornata da 10 anni, quindi mi sa mi sa che il #problema non sarà risolto. 🕸️
Ho però notato che virtualmente qualunque altra app WebView browser non si rompe se subisce quelle modifiche che ho detto all’AndroidManifest.xml, probabilmente perché sono così semplici che non hanno codice chissà quanto specifico a certe versioni delle API… quindi ne ho semplicemente scelto uno che mi piaceva, ho usato un editor di #APK per portare indietro il valore android:targetSdkVersion del blocco <uses-sdk> (mentre il permesso READ_EXTERNAL_STORAGE c’era già quindi non ho dovuto scriverlo io), e in mezzo minuto il problema è risolto. 🌚️
Tra gli infiniti che si trovano ho preso questo “SmartCookieWeb” comunque, ha delle funzioni avanzate carine. L’APK già modificato, in caso ne aveste bisogno, l’ho caricato qui sul mio server.
Una cosa strana però: teoricamente è stato Android 11, cioè target 30, ad introdurre lo spacc più totale dei #permessi di accesso all’archiviazione locale, quindi a regola impostare il 29 (Android 10) sarebbe sufficiente a visualizzare il permesso di gestire tutti i file nelle impostazioni al posto di quello per soltanto i media… eppure io ho dovuto scrivere 28 (Android Pie). Sarà un fatto del mio Android 12 forse, boh, anyways the fog is coming fuck you Google. 👁️
Parlando di #emulatori non morti, forse saprete che ne esistono tipo solo 2 che emulano il #NintendoDSi (oltre alla versione base del #NDS), e #melonDS è quello che funziona meglio. 💫️
Mi sta essendo utile l’ #emulazione#DSiWare per controllare cose e catturare schermate sulla #FotocameraDSi senza dover per forza usare la #console reale, per quell’articolo che sto finendo*. Però, per quello non mi serve davvero scattare foto, e quindi mi è stata comoda la funzione per impostare come flusso della camera immagini salvate sul PC (Config > Camera Settings > Image file), che avevo generato al volo con Bing AI per averne della tipologia che mi serviva e con un’aspetto un po’ stock, dimostrative appunto. 🎁️
Preparate il #firmware DSi (che vi consiglio di scaricare da qui, è il dump che uso io e confermo che funziona) da dare all’emulatore, creando due cartelle separate per i file DS e #DSi, e rinominando i file in modo preciso, altrimenti la #app si lamenta:
biosdsi7.bin => dsi/bios7.bin
biosdsi9.bin => dsi/bios9.bin
biosnds7.bin => nds/bios7.bin
biosnds9.bin => nds/bios9.bin
dsfirmware.bin => nds/firmware.bin
dsifirmware.bin => dsi/firmware.bin
dsinand.bin => dsi/nand.bin
Fate “Boot firmware > DSi”, da lì si può avviare la magica #applicazione fotografica, date il permesso quando richiesto, e se tutto va bene potete godere. ❤️🔥️
*(Sto facendo progressi per l’articolone, ma troppo lentamente, nonostante io abbia scritto ben settemila parole vedo che mi mancano ancora troppe cose… la mente è pazza, questa situazione è assurda. 😵💫️)
Non so cosa è peggio: che non riesco a trovare in giro #editor grafici decenti di #tabelle per l’editoria #web, che crearle con roba come #HTML, #WikiText, Markdown, ecc è #scomodo oltre il sopportabile (non si vede a colpo d’occhio che intersezione di riga e colonna si sta modificando), o che #TiddlyWiki si dimostra anche questa volta un #tremendo#rabbithole in cui perdersi a #sviluppare#visualizzazioni#avanzate con tutte quelle funzioni #esoteriche integrate, anche per le tabelle. Ho creato ora, per questa #tabella che sto costruendo, una #macro che integra la modifica dei #dati direttamente nella versione renderizzata, così non devo usare scomodi linguaggi di marcatura. …e funziona, ma solo ora mi rendo conto di dover trovare un modo di aggiungere righe e colonne in mezzo a quelle esistenti, e con la struttura dati che questa roba in automatico costruisce, fidatevi, non sarà facile. Ci impazzirò temo. L’ennesima mia #megafine. 💀️
Codice e anteprima della tabella specialeComunque, a dire il vero una piccola app l’ho trovata cercando: https://www.htmltables.io/. Fa modificare una tabella tramite anteprima #grafica (scarna ma adeguata), ma permette di copiare ed incollare (o modificare direttamente, ma a me non serve) il #codice HTML (anche lì, unico modo per spostare righe e colonne, non va dalla #GUI)… solo che, quest’ultimo passaggio è macchinoso, almeno a lungo termine, perché mi troverei a fare avanti e indietro tra modificare i dati e salvarli dove mi servono, quindi… ecco giustificato il trovare una #soluzione nativa alla mia #OcttKB. (Ci sarebbero poi i programmi di fogli di calcolo, ma ecco… non mi servono tutte le loro funzioni, devo solo disporre testo, quindi usare quella roba significherebbe bloat e sofferenza, tra UI disfunzionali su mobile e app in generale laggose.) 🤥️
Non so chi lo ricorda (lo accennai in #138), ma uno dei motivi per cui avevo deciso di spostare il #MicroBlog primariamente qui sul mio #sito venendo da Telegram, era questo: una serie di miei requisiti, che un #canale TG pubblico avrebbe soddisfatto, non riusciva a combaciare con il mio dover tenere privato quel canale… perché c’era troppo di frequente un influsso di #bot pericolosi, che nel migliore dei casi facevano #spam nel #gruppo collegato, e nel peggiore effettuavano #manipolazioni alle mie statistiche (in non so bene che modo). 👿️
A quanto pare, diversa gente ora si trova costretta a rendere privati i propri #canali per lo stesso problema, nonostante gli #svantaggi (ci arrivo in un attimo) per loro e per i lettori. Volevo allora fare un qualche tipo di grafico o tabella per illustrare dei possibili cambiamenti che chiunque potrebbe apportare alla propria configurazione di pubblicazione, senza abbandonare Telegram… ma, provandoci, ho iniziato ad andare totalmente mentale, cercando di pensare a che razza di formato dovrei usare per dire quello che voglio. Le relazioni tra le #opzioni che si possono #scegliere sono fin troppo complesse, anche perché le #combinazioni possibili sono troppe. Quindi, mi devo limitare ad illustrare i soli #punti salienti. 🧵️
Per prima cosa, il metodo drastico, attuabile a sua volta per diverse strade, ma che sicuramente non va bene per tutti: ⚡️
Scegliendo (come me) di postare da un sito #WordPress: 🗜️
Senza rogne si hanno: lettura pubblica, condivisione con linkback, accesso #Web, #ActivityPub, RSS, e via API JSON.
Eventuali bot malevoli possono arrivare solo qualora si lascino i #commenti aperti, e si usi WP self-hosted; io ho scelto di lasciare chiusi i commenti del sito, facendo apparire però quelli lasciati dal #Fediverso.
Si può cross-postare su Telegram facendo apparire i post come nativi; potenziale problematica è la modifica dei messaggi, a quanto so nessun bot RSS la implementa (ma sarebbe fattibile), forse qualche #plugin “da WP a Telegram” lo fa.
Scrivendo da una piattaforma che non sia WordPress e non sia #Telegram, si possono in teoria avere tutti i vantaggi di WP, con (quasi) tutti i vantaggi di TG qualora si faccia #crossposting, ma dipende un po’: 😮💨️
Avendo un profilo pubblico sulle piattaforme di #microblogging del Fediverso, ci sono in potenza tutti i vantaggi di WordPress per questo scopo, ma entrano in gioco fattori secondari. Mi vengono in mente le politiche d’istanza, e il fatto che il feed del proprio profilo sarà gestito diversamente da quello di un microblog isolato: dipende dal software, ma il #feed da cui un bot Telegram può cross-postare potrebbe essere pieno di risposte decontestualizzate, reblog fuori posto, ecc…; tutto filtrabile in teoria, ma se l’obbiettivo è il “just works”, è lecito porsi il problema (e al momento non so bene dire quale piattaforma #fedi generi il miglior feed #RSS).
Si possono usare generatori di siti statici o altri CMS, ma non è un’opzione per deboli di cuore, ergo ora non ve la accenno nemmeno.
E ok… ma volendo evitare di usare #strumenti esterni, ed aggiungere casino a quello che si fa, si può pensare: se con soltanto Telegram pubblico si hanno tanti #vantaggi ma lo svantaggio dei bot, e con il privato si hanno tanti svantaggi ma il vantaggio della #sicurezza, la #soluzione potrebbe essere l’unire queste 2 cose? E allora, la seguente è la soluzione che consiglierei a tutti, invece, perché non cambia di una virgola il #workflow… ♻️
Anche solo in questo caso, troppe possibili #variazioni, quindi descrivo solo la più vantaggiosa (se provaste per conto vostro a ricombinare gli elementi della mia premessa per immaginare #configurazioni diverse, ammesso che la mia mente non sia incappata in un errore di runtime, dovreste trovare meno vantaggi): 💣️
1️⃣️ Si rende #privato il canale che si è sempre usato (seguito da tutti gli utenti storici, e a cui è collegato il gruppo commenti che si è sempre usato).
2️⃣️ Si crea un secondo canale, #pubblico, senza commenti attivi, il cui scopo è fare da “proxy”.
3️⃣️ Si fa uso di un bot per collegare i due canali, che legga i messaggi inviati dagli admin su uno dei due (a piacere), per riprodurli (e cancellarli, quando necessario) sull’altro.
Idealmente, il bot deve ricomporre i messaggi, non inoltrarli, così che sia possibile la sincronizzazione di qualunque modifica. All’inizio o alla fine di ogni messaggio, il bot inserirebbe, in base al caso, un link alla variante dello stesso post sul canale #alternativo (i post del privato linkano al pubblico per chi ha bisogno di condividere/aprire all’esterno, i post del pubblico linkano al privato per permettere agli #utenti legittimi di arrivare da fuori al punto di discussione).
ℹ️ Unico punto di #crisi: le reazioni. Bisogna sceglierle se tenerle attive in entrambi i canali (avendole così per chiunque ma “non sincronizzate”, sconsiglierei), tenerle attive solo sul principale privato (quello che consiglio), o solo sul secondario pubblico (sconsiglio).
Tutte queste belle congetture però ora finiscono: quale botto telegrammico esiste già che faccia questa cosa, in modo così ideale, e gratuitamente? Statisticamente, credo che debbia già esistere, è un #concetto molto #semplice… però non lo conosco. A tutti voi che cercate di fuggire dagli #userbot spammoni, fatemi sapere se adottereste una soluzione del genere per il vostro canale; eventualmente aggiungete le vostre idee alla questione. Se questo #crossposter esiste già, lo troveremo; se non esiste, credo di poterlo realizzare con qualche scarsa centinaia di riga di codice, e ospitarlo #aggratis. 🙀️
Dunque, quel bellissimo #MBViewer, che ho iniziato a realizzare appena 3 giorni fa… è già #SpaghettiCode. Ehh, si, quel codice di #Telegram lì non è proprio fatto per gestire un caricamento di dati troppo avanzato e tutto #ClientSide: nel suo normale caso d’uso riceve #HTML già preparato dal server, ed usa #JavaScript non #moderno, quindi tentare il #retrofitting che ho fatto io è chiaro porti a difficoltà. Si può fare, perché nella #programmazione si può fare tutto, ma è un #casino. …E un po’ me lo aspettavo, e lo sapevo da quando ho iniziato. 😁️
Considerate, questa #idea mi era venuta per un motivo molto #semplice: era da un po’ che volevo implementare una vista più #minimale e con #comodità moderne (come lo scorrimento infinito, o la vista in contesto) per il #MicroBlog nuovo, ma tenendo comunque io il controllo dei miei #dati. Farlo dentro #WordPress non mi va, dato che alla fine comunque dovrei usare #script#JS, e a questo punto ho ritenuto #intrigante l’idea di fare proprio una cosa a parte, che potesse potenzialmente essere facilmente adattata per prendere i #contenuti anche da altre fonti (e lo fa, legge #JSON da ovunque, se opportunamente assemblato), qualora il #sito Altervista dovesse avere dei problemi. 🧭️
Però, questa non è la mia #soluzione a lungo termine. Per quello, in realtà, ho in mente un #progetto semi-segreto che iniziai mesi fa, ma che poi, presa da altre cose, non continuai. Doveva essere una #webapp per il Fediverso e, potenzialmente qualunque altro #protocollo#social grazie ad un layer di astrazione di #API interno. È Il#software che vorrei far funzionare con una doppia #interfaccia, a #messaggi o a “piazza” (stile Miiverse), e quindi in secondo luogo anche come #client Matrix, e in terzo e quarto per #blog e #feed standard… problema è che, dovendo non solo #progettare tutto il #frontend, ma anche svecchiare una spaventosa porzione del #codice, non è affatto una cosa rapida arrivare ad uno stato di primissimo #MVP. 😳️
Insomma, è per questo che questa piccola #applicazione, tirata su alla bene e meglio e che esiste in buona parte per via di #lavoro non mio, l’ho chiamata “#distrazione”. Continuerò ad aggiornarla, anche dopo che ora ho aggiunto l’ultima funzione fondamentale, ossia l’apertura di #post specifici? Probabilmente no, sarebbe meglio pensare a sistemare quell’altro progetto e fare un robo fatto bene. Importa qualcosa? Naaaah… come si dice, “the first rule of gun safety is to have fun“? Vale la stessa cosa per il #coding, quando l’arma è la propria tastiera insomma. Basta sia stato #divertente. 😈️