venerdì 26 gennaio 2018

Biblos e nuove funzionalità da programmare

La programmazione di nuove funzionalità non è mai un lavoro da iniziare senza una preventiva valutazione, soprattutto in questo periodo in cui ho bisogno di ricaricare le batterie. Perciò scrivo guardando al futuro, cercando di descrivere le funzionalità che ho messo in pausa.

Nella scaletta di programmazione di Biblos 5 ci sono 3 macrofunzionalità che in futuro vorrei/dovrei sviluppare, oltre alle classiche integrazioni o correzioni minori.

  1. Stili del testo
  2. Riconoscimento ottico dei caratteri
  3. Riconoscimento vocale

Lo sviluppo della gestione degli Stili del testo è in pausa sin dall'uscita di Biblos 5. È una funzionalità di media complessità che va a incidere su vari aspetti del documento di scrittura e di tutti gli elementi complessi in esso utilizzabili. La funzionalità è parzialmente programmata, ma di codice da scrivere ce n'è ancora tanto.
I vantaggi che si avrebbero con gli Stili del testo sarebbero diversi. Il più importante sarebbe quello di formattare completamente un documento scegliendo semplicemente uno stile da dargli. Per chi prepara libri per la stampa in braille, per esempio, in pochi click si potrebbe formattare un documento e renderlo immediatamente strutturato, con estrema semplicità. Anziché stampare in braille un documento privo di formattazione specifica, applicando uno stile il documento assumerebbe un altro aspetto e avrebbe tutti quegli elementi utili per una migliore lettura braille.
Sì, lo so, dovrei farlo, sarebbe una bella cosa. La domanda a cui non so darmi ancora una risposta è: nel 2018 il braille è ancora vivo, moribondo o definitivamente morto? Sono consapevole che gli Stili del testo servono anche a fare altro, e perciò temporeggio, al fine di chiarirmi bene le idee e ricevere stimoli da quello che osservo.

Aggiungere un motore OCR in Biblos è stata sempre una funzionalità allettante. Ho cercato contatti, ho fatto delle ricerche in merito, ma non sono mai riuscito a trovare soluzioni qualitativamente accettabili e a basso costo. Con Windows 10 si sono aperte nuove possibilità, in quanto questo sistema operativo possiede internamente un motore OCR che potrebbe essere utilizzato anche da Biblos. L'inconveniente che mi frena un attimo è che legherei Biblos a una funzionalità esterna, soggetta agli umori e alle decisioni di Microsoft. Traduco: da un giorno all'altro Microsoft potrebbe toglierla o inibirne l'accesso e Biblos resterebbe in braghe di tela. Legare una funzionalità di un software a uno strumento prodotto da terzi non è mai una scelta da fare a cuor leggero. In ogni caso mi sono promesso di studiare l'interfaccia di accesso che Microsoft mette a disposizione degli sviluppatori (presumo), per valutarne la stabilità, la qualità e la fattibilità di introdurla in Biblos.

L'ultima funzionalità a cui penso da tempo e che vorrei sperimentare è il riconoscimento vocale. I precedenti Windows possedevano l'interfaccia per poter utilizzare questa funzionalità, ma erano come scatole vuote se non si installavano o compravano appositi software. Windows 10 invece, è una mia ipotesi che non ho verificato, dovrebbe essere corredato di motore di riconoscimento vocale, dato che già a bordo c'è Cortana. Vorrei aggiungere in Biblos la capacità di accogliere comandi vocali o utilizzare la dettatura vocale. Questa è una funzionalità tutta da sperimentare, che mi impegnerebbe un po'. Certo, non avrebbe molta utilità, in quanto un non vedente fa prima a utilizzare la tastiera, ma la penso più per quelle persone che hanno difficoltà alle mani, per le quali dettare sarebbe più immediato che premere dei tasti.

Dal mio punto di vista gli Stili del testo sono la parte più semplice da sviluppare, perché mi muovo in un terreno conosciuto. Confesso che per OCR e riconoscimento vocale mi piacerebbe approcciare il problema in ottica di ricerca e sviluppo, ma sono consapevole che già sviluppare un motore OCR mi impegnerebbe tutto il tempo disponibile, e probabilmente all'inizio non avrebbe neanche la qualità degli OCR che il mercato oggi offre. Discorso ancora più difficile per il riconoscimento vocale, un settore talmente specialistico che mi verrebbe difficile anche solo iniziare una sperimentazione.
Per queste ultime due funzionalità l'approccio migliore sarebbe quello di avvalersi di soluzioni già esistenti. Il problema è sempre la gratuità. Anche quando Biblos era un prodotto shareware, acquistare prodotti simili da includere era una spesa esageratamente alta. Non ho sufficiente forza per poterlo fare. Infatti, fino ad ora ho aspettato che in ambiente free o di sistema apparissero soluzioni stabili e utili. Forse con Windows 10 si sono aperte delle finestre, scusate il gioco di parole, per poter timidamente sondare queste possibilità.

venerdì 19 gennaio 2018

Volevo fare il programmatore di Biblos?

So per certo che quando programmavo mi divertivo talmente tanto che tutto il resto del mondo spariva. La programmazione per me era un grande infinito luna park costruito da me. Col senno di poi, avrei fatto davvero il programmatore di Biblos?

In verità volevo programmare videogiochi, perché sono giusto cresciuto quando era veramente fantastico programmarli. Negli anni ottanta, quando essere pionieri in elettronica era troppo tardi e avere la grande rete era ancora troppo presto, quando programmare significava stare a contatto con l'hardware, perché più in basso di quello c'era solo l'elettronica, e dovevi trovare tecniche e strategie per sfruttarlo all'osso. Negli anni ottanta, quando i computer erano considerati giocattoli per bambini irrequieti, quando programmavi in linguaggio macchina e non se ne accorgeva nessuno, perché nessuno capiva cosa stessi facendo e scrivendo. Quel linguaggio macchina, fatto di numeri e codici, oppure in assembly, un modo come un altro per rendere letterali quei numeri che ormai conoscevo a memoria.

Quale significato nascondono le parolone che ho utilizzato? Parole che magari sono miti per alcuni, che danno loro un significato non ben definito, proprio perché non le hanno vissute, non le hanno metabolizzate, non sono stati plasmati da esse. Insomma dei falsi ricordi, perché sono solo dei fuochi di paglia, gusci vuoti senza sostanza, miti che si ammira solo perché non si conosce a cosa si doveva inconsapevolmente rinunciare per crescerci insieme. Queste parole indicano solo il fatto che ero letteralmente innamorato del mio computer, in particolar modo il Commodore 64 e l'Amiga, e intendo proprio l'anima elettronica che vive dentro ai circuiti, macchine amate da bambini sprovveduti che con loro hanno condiviso tutto, per sempre.

Ci vedevo, perché da cieco non avrei potuto fare grafica per i videogiochi che inventavo. La programmazione mi ha insegnato a pensare, ha proprio plasmato la mia mente. Programmando ho imparato a risolvere i problemi che man mano mi si presentavano, capacità che oggi noto quando qualcuno mi mette di fronte a un problema da risolvere. Programmando ho imparato a controllare una macchina. Se scrivo un determinato codice, so che quel codice funzionerà sempre allo stesso modo. Se scrivo del codice so che potrebbero esserci dei bachi, pertanto devo avere la capacità di prevedere gli eventuali errori o intervenire a posteriori per risolverli. La programmazione è stata per me una sfida tra me e il mio computer. La tastiera era un invito a "giocare", a immergermi nel divertimento di una competizione tra me e me, che, ne ero sicuro, prima o poi avrei vinto. La programmazione per me è stata puro amore, e per questo il codice che scrivevo era come se fosse il mio più severo insegnante, mio fratello, mio genitore, mio figlio, mio amico. Ne conoscevo ogni riga, ogni routine, ogni valore.

Sono consapevole che non è uno dei soliti articoli del blog. Questo è solo un tentativo di lasciare un tassello alla rete, sperando che prima o poi qui arrivi uno dei tanti sconosciuti fratelli nerd sparsi per il pianeta. Qualcuno che si riconosca in quello che scrivo, nelle esperienze che ho vissuto, nelle sensazioni che ho provato, nella difficoltà di socialità che oggi ci contraddistingue e che cerchiamo malamente di nascondere sotto una superficie biologica, dentro cui batte un'anima elettronica, che guarda con sgomento ai comportamenti illogici che si vivono all'esterno.

In sostanza cos'è Biblos? Biblos è innanzitutto una parte della mia conoscenza. Lo ammetto: se avessi continuato a vedere a Biblos non ci sarei mai approdato. Sarei rimasto insieme a codice ben più complesso, più eccitante, più stimolante. Biblos è una sorta di ripiego, per quanto bello oggi possa essere. La nostalgia che mi pervade è solo per l'hardware e per il codice di qualche decennio fa, per quella esibizione di forza che spremeva fino in fondo ogni bit di un computer. Per quegli anni ottanta, in cui essere maggiorenni era già troppo tardi e essere neonati era ancora troppo presto. Anni in cui era davvero eccitante arrivare a far compiere a un computer quasi l'impossibile, e non avere nessuno a cui far vedere quella maestria, perché nessuno capiva cosa stesse succedendo sullo schermo, perché nessuno conosceva l'hardware con cui stavi dialogando.

Cosa dovrei rispondere quando qualcuno, ora per fortuna meno del passato, mi chiede: come hai iniziato a programmare? Che gli devo dire? Se gli dicessi che ho iniziato evitando di fare domande al prossimo, anche perché non avevo nessuno vicino, ma prendendo il primo manuale a caso e iniziando a leggere, anche se era difficile da capire, cosa mi risponderebbe? Cosa potrebbe rispondere una persona tra tante che non capisce cos'è davvero la programmazione per chi la ama? Cosa mi risponderebbe un trent'enne quando gli confesserei che è tardi per iniziare a programmare? capirebbe che programmare per me ha un significato ben più profondo e diverso da quello che possa avere per lui? capirebbe che la programmazione per lui è un mito e per me è vita? chi a trent'anni è disposto a rinunciare alla propria vita, quando ne ha vissuto già un terzo ignaro di cosa significhi programmare?

Oggi di cosiddetti programmatori la scena informatica mondiale ne sforna una quantità esorbitante. Tutti in fila come soldatini, seduti ai banchi di scuola per imparare a programmare, perché oggi il mercato è in cerca di programmatori. Non hanno capito niente. Se sapessero che la programmazione è amore, se sapessero che è arte, se sapessero che la programmazione innanzitutto è divertimento, è un gioco, è un continuo e perpetuo mettersi alla prova. Se solo sapessero che la programmazione ce l'ho nel sangue, nel DNA, come un gene infiltrato che ora vive con me, da decenni, da sempre, gelosa di qualsiasi altra variabile esterna che possa distogliere la mia attenzione da lei, l'unica e la sola amante che possa avere.

Oggi tutti sono in cerca di miti e di semplicità. Vogliono raggiungere con poco sforzo un obiettivo. Non sanno che, quantunque sembri semplice, un'opera d'arte racchiude una complessità comprensibile solo a chi in quella complessità prima è morto e poi è rinato. Tutti sono in cerca di soldi facili, senza sapere che non esiste niente di facile, soprattutto in un mondo fatto di individui che millantano competenze per cui non hanno speso un centesimo della loro anima. Se sapessero che per un vero programmatore i soldi sono l'ultima cosa che esiste al mondo, perché l'unica cosa che importa è il divertimento, la sfida con se stessi, la capacità di creare bellezza, anche sotto forma di numeri.

Ti starai chiedendo cosa c'entri Biblos con tutto questo discorso. Se non capisci che oggi ne ho scritto più di quanto ne abbia scritto in passato è colpa mia? Questa è solo una lettera d'amore al mio più grande amico: il computer.

venerdì 12 gennaio 2018

Le meraviglie dell'ambiente di grafica

Inizialmente l'avevo chiamata Grafica Tattile, ma oggi l'ambiente di grafica di Biblos è un vero e proprio strumento di creazione e manipolazione di immagini di ogni tipo. In questo articolo ti mostro alcuni esempi, giusto per incuriosirti o ingolosirti.

Già ti ho parlato della grafica tattile, di come uso l'ambiente di grafica, anche per il mio attuale lavoro. L'aiuto che mi offre è essenziale, oggi senza l'ambiente di grafica di Biblos non saprei come fare.

L'ambiente di grafica è un vero e proprio strumento di editing di immagini, che contiene al suo interno un potente linguaggio di programmazione applicato alla grafica, ideato e sviluppato da me stesso. Può essere utilizzato anche da principianti, come per esempio far apprendere ai bambini delle scuole elementari le basi della programmazione e del pensiero computazionale, facendoli giocare nel frattempo con le immagini. Per le cose più complesse può essere utilizzato anche da esperti e professionisti, da persone che già masticano qualcosa di programmazione.

Seguimi in questo esempio, che ti spiego linea per linea.

  1. GraphicSize(256,256)
  2. For Y = 0 to 255
  3. ColorPen(Y,0,0)
  4. Line(0,Y,255,Y)
  5. EndFor
  1. Imposto la dimensione del grafico a 256 pixel orizzontali per 256 pixel verticali;
  2. Uso una variabile di nome Y in un ciclo For che va da 0 fino a 255;
  3. Imposto il colore della penna di tracciamento utilizzando la variabile Y nella componente rossa, al fine di ottenere una progressione del colore rosso da 0 fino a 255;
  4. Per ogni riga del grafico traccio una linea che copre l'intera larghezza;
  5. Termino il ciclo For.

Il risultato è visibile a schermo. Per le persone non vedenti che mi leggono, il grafico crea un quadrato che contiene una superficie sfumata in verticale dal nero al rosso.

Ora rendo le cose un attimino più complesse. Seguimi in quest'altro codice.

  1. GraphicSize(256,256)
  2. For Y = 0 to 255
  3. For X = 0 to 255
  4. ColorPen(Y,X,0)
  5. Dot(X,Y)
  6. EndFor
  7. EndFor
  1. Imposto la dimensione del grafico a 256 pixel orizzontali per 256 pixel verticali;
  2. Uso una variabile di nome Y in un ciclo For che va da 0 fino a 255;
  3. Uso una variabile di nome X in un ciclo For annidato al primo che va da 0 fino a 255;
  4. Imposto il colore della penna di tracciamento utilizzando la variabile Y nella componente rossa e la variabile X nella componente verde;
  5. Per ogni pixel del grafico traccio un punto di colore diverso, come da penna impostata prima;
  6. Termino il ciclo For annidato;
  7. Termino il ciclo For.

Il risultato di questo codice è un quadrato con sfumature in verde e rosso. Nell'angolo in alto a sinistra è nero; in alto a destra è verde; in basso a sinistra è rosso; in basso a destra è giallo; e il resto sono sfumature che mostrano tutti i colori intermedi.

In questo caso il tracciamento impiega qualche secondo, perché i calcoli da fare e il codice da interpretare sono molti di più, rispetto al primo esempio. Anche perché il linguaggio di grafica è interamente interpretato e anche perché un'ottimizzazione nell'esecuzione del codice non farei male a dargliela.

Ora se noti la componente blu del colore resta inutilizzata. Che ne dici di utilizzarla tu in qualche modo? Io avrei qualche idea, fatta di istruzioni trigonometriche, ma lascio a te l'inventiva. Magari poi posta il codice che scrivi nel Gruppo di Biblos su Facebook, così lo valuteremo insieme.

venerdì 5 gennaio 2018

Tutte le visualizzazioni di Biblos

Ehi, primo articolo del 2018: buon anno! Oggi ti parlo di tutti gli strumenti di Biblos che influiscono sulla visualizzazione dei documenti. Ti interessa visualizzare più testo? meno testo? allargare o restringere l'area del documento? Bene, leggimi e ti spiego come fare.

Ognuno di noi ama personalizzare i software che usa a seconda dei propri gusti o delle proprie necessità. Se il software che si utilizza lo consente, tu utente puoi personalizzare l'interfaccia utente adattandola ai tuoi bisogni, anche estetici.

Biblos ti consente di modificare l'interfaccia della finestra principale, togliendo, aggiungendo o riadattando diversi elementi. Di seguito ti elenco e ti descrivo come fare, così potrai personalizzare il tuo Biblos.

Hai un'area di grandi dimensioni e non ti piace che Biblos sfrutti tutto quello spazio per mostrare il documento? Come con altri software, se la finestra è ingrandita togli l'ingrandimento e, col mouse, trascina i bordi destro e inferiore per ridimensionare la finestra alle dimensioni che vuoi. Per riposizionarla invece usa la barra del titolo su in alto.
Se sei non vedente, puoi fare le operazioni di ridimensionamento con la tastiera, ma purtroppo non ne hai percezione immediata. Per questo ti suggerisco di ingrandire la finestra e utilizzare altri metodi che ti spiego più avanti.

Tra le opzioni di visualizzazione, nella finestra delle opzioni generali, c'è la casella per attivare o disattivare la visualizzazione del documento alle dimensioni di stampa. Se attivi questa casella il documento sarà sempre visualizzato alle dimensioni di come lo stampi. Il testo all'interno cercherà di rispettare l'impaginazione di stampa, ma non è proprio una visualizzazione WYSIWYG (What You See Is What You Get - quello che vedi è quello che ottieni). Il tasto caldo per attivare o disattivare al volo questa visualizzazione è CTRL+Maiusc+1.
Collegate a questo aspetto sono le impostazioni della pagina di stampa, raggiungibili dal menù File. L'impostazione del tipo di foglio di stampa si rifletterà anche nelle dimensioni del documento, così come le impostazioni dei margini sinistro e destro.

Per gli ipovedenti che vogliono avere per il testo tutto lo spazio possibile, è utile togliere un po' di elementi della finestra, come le barre degli strumenti, la barra di stato e il righello. Praticamente si può far sparire tutto, così da allungare al massimo la finestra. Nel menù Visualizza basta utilizzare i comandi per le barre degli strumenti, di stato e del righello.
Sempre per gli stessi scopi, è anche possibile far sparire la barra del titolo, quella in cima alla finestra, e le eventuali barre di scorrimento orizzontale e verticale. Questi aspetti si controllano dalle opzioni generali, nella scheda di visualizzazione. In questo modo si avrà una finestra davvero minimale, ridotta all'osso, dove regnerà sovrano tutto il documento.

Il famoso detto dice che l'ultimo viene il braille... o forse era il corvo... boh. Comunque, per chi invece legge il documento con un display braille, tra le opzioni generali, nella scheda Visualizza, c'è un'opzione per scegliere quanti caratteri per linea visualizzare a schermo. Si illumina la lampadina? Si imposta la visualizzazione, per esempio, a 38 caratteri, e tutti i documenti avranno righe a schermo di massimo 38 caratteri. Il bello di questo è che l'opzione agisce solo sulla visualizzazione, la struttura del documento non viene assolutamente modificata.

Velocemente ti ho descritto come puoi adattare la visualizzazione di Biblos alle tue esigenze, mostrando, nascondendo, cambiando gli elementi dell'interfaccia utente. Se vuoi altre info su Biblos, puoi iscriverti nel Gruppo di Biblos su Facebook, e potremo conversare di questi aspetti e di tutto il resto.