ZacTools: AucTEX ed AquaMacs

Lo so che, leggendo il titolo, un brivido freddo sarà scorso lungo la vostra schiena, ma AucTEX è l’unica estensione per Emacs che mi ha fatto provare la voglia di provarlo. Si tratta di un estensione (compatibile con Emacs, XEmacs e anche con l’ottimo AquaMacs, per Mac OS X) che consente di editare più agevolmente i file Latex e, addirittura di avere una preview delle equazioni e dei grafici inseriti nel codice Latex.

La versione che ho provato io è incorporata in AquaMacs e funziona davvero bene. Inoltre AquaMacs presenta una comoda toolbar per accedere alle funzioni più usate in latex ossia, compila preview e attiva/disattiva la preview di AucTEX.

Se qualcuno, nei commenti, volesse aggiungere qualche scorciatoia da lui preferita…

Zac

Personal Augmented Reality

A volte ripenso al tizio della HP che pensava “che se ne fa la gente comune di un personal computer?” o a Bill Gates che progettò l’MSDOS per funzionare al più con 640KB di memoria e mi viene da pensare quali grandi o immense invenzioni un giorno avremo nelle nostre case o sulle nostre scrivanie a prezzi modici. Un tempo i computer occupavano stanze intere, oggi stanno all’interno di un cellulare e possiamo programmarli ed utilizzarli con estrema semplicità.

Ed ancora fino a circa 15 anni fa i cellulari erano poco più che dei ricetrasmettitori costosissimi, oggi sono ipersofisticati, ultraperformanti e “li trovi nelle patatine”.
In futuro potrebbero non esistere più i carrier di telefonia perché le connessioni wireless saranno così diffuse ed efficienti da non richiedere ponti radio, sistemi di localizzazione dell’utente e quant’altro. E magari nemmeno i cellulari.

Oggi sbarca nelle nostre case un sistema che è proprio del mondo accademico e militare: quell’Augmented Reality fatto di un mix tra riprese dal vivo ed immagini generate dal computer? Finora è stato utilizzato per arricchire una ripresa fatta con una telecamera o con una sonda medicale di dettagli che l’utente può utilizzare per interagire con la ripresa stessa. I soldati utilizzano da anni questi sistemi per le loro esercitazioni militari.

Ma noi utenti domestici? Cosa possiamo mai farcene di un sistema del genere? Solo la fantasia delle persone potrà dirlo ma, di sicuro, nel prossimo futuro la webcam non sarà un misero accessorio che rende più divertente comunicare con altre persone, ma diventerà il tramite per nuovi modelli di interazione con il computer, consentirà di utilizzarlo con maggiore naturalezza e, si spera, con maggiore soddisfazione. Vi lascio a due video che ci fanno capire cosa, già oggi, è possibile fare con le nostre webcam.

Nel primo video si assiste ad un sistema di augmented reality che utilizza delle “card” per istruire il computer su come orientare e visualizzare una scena artificiale che ha come sfondo la ripresa stessa della webcam. Sistemi simili prevedono anche strumenti di interazione come piccole bacchette in grado di indicare anche azioni particolari da eseguire.

Nel secondo video viene mostrato com’è possibile, con un pò di ingegno, realizzare un pad multitouch utilizzando una semplice webcam e dei driver opportuni.

Inoltre andate a vedere quello che fanno i ragazzi di Camtrax.

Zac

A volte succedono anche queste cose…

When the source code to Quake was leaked and circulated among the Quake community underground in 1996, a programmer unaffiliated with id Software used it to port Quake to Linux, and subsequently sent the patches to Carmack. Instead of pursuing legal action, id Software, at Carmack’s behest, used the patches as the foundation for a company-sanctioned Linux port. id Software has since publicly released the source code to Quake, Quake 2 and most recently Quake 3, all under the GNU General Public License (GPL).

Odiatissimo XML

So di andare controcorrente, soprattutto in tempi di apertura dei formati di interscambio dei dati basati su XML, ma io l’XML non l’ho mai potuto sopportare: né lui né i suoi derivati. Capisco il grande merito di aver introdotto un formato testuale human readable, ma l’uomo, fino a prova contraria, riesce a leggere meglio se si tolgono tutte quei “<", ">“, “/” di mezzo e, magari, al loro posto si mettono dei bei “a capi”. D’altronde, se non ve ne foste mai resi conto, nessun linguaggio di programmazione è mai stato sviluppato sulla scia di XML e derivati. XML è prolisso, grosso e lungo da scrivere (dite la verità, quanto odiate quei software/librerie che si configurano tramite file XML?).

Chi ha inventato XML ha avuto una buona idea, separare le informazioni dal loro uso o dalla loro presentazione. All’epoca della sua invenzione i tag di markup erano molto corti, ma, purtroppo non fece i conti con i grandi protagonisti dell’informatica, coloro che con le loro idee innovative hanno rivoluzionato il web, reso internet accessibile alle masse: i grandi geni della Microsoft: è grazie a loro che questo standard si è imposto come unico e solo mezzo per archiviare le impostazioni dei vari software, i documenti che scriviamo ogni giorno e i dati scambiati con i web services: fa nulla poi che per mandare un numero (ad esempio “0”, indicante il valore di una check box) dobbiamo scrivere “0” (e ci va bene) ossia la bellezza di 22 byte per un informazione che in binario ne richiede 4 e che in formato testuale “human readable” ne richiede 10. Per non parlare dei commenti che richiedono la tassa fissa di 5 byte per scrivere il tag del commento.

Provate a trasferire una tabella, diciamo di 1000 righe e 10 colonne, in XML e vedrete la splendida intuizione della Microsoft prendere corpo e sostanza. OpenOffice, che pure ha adotatto l’XML come standard, salva i propri documenti compattandoli…per rimediare alla pessima decisione di utilizzare XML per l’archiviazione dei documenti.

Ora ci sta provando il web a soppiantare questo macello con due standard: JSON (usatissimo nelle pagine web dinamiche o che utilizzano AJAX) e YAML (un formato che ricorda un programma Python ed usato, tra gli altri, dal Google App Engine).

A questi si aggiunge il supporto di Google che da poco ha rilasciato i sorgenti del suo Protocol Buffers che codifica le informazioni in un formato molto simile ad una classe java. I sorgenti rilasciati sono di una applicazione in grado di leggere queste informazioni strutturate e generare le classi, in grado di parsificarle, in Java, C++ o Pyton. Le prestazioni in termini di velocità sono notevoli, come anche il risparmio di spazio delle informazioni stesse.

Vedremo come la battaglia dei formati testuali andrà a finire (se battaglia ci sarà). Ma sappiate per chi NON tifo sin da adesso.

Zac

Netbeans 6.5: con più Groovy e meno cacao

Netbeans sta dirigendosi rapidamente verso la release 6.5 ed ora include un supporto a Groovy degno di nota.

Groovy si è sviluppata molto in quest’ultimo anno fedele al suo motto imperativo “prima le funzionalità, poi la velocità”. Ed infatti, puntuale come un orologio svizzero, appena gli utenti avevano finito di assaporarne la sintassi “agiail” e cominciavano a lamentarsi delle sue prestazioni (fino a 60 volte più lente di java) ecco arrivare la versione 1.6 che risolveva anche i principali problemi di velocità. Groovy, ed il suo fratello Grails (una suite per lo sviluppo di web application), è un linguaggio dalle enorme potenzialità visto che già nella versione 1.0 aveva dimostrato di saper colmare il gap esistente tra java e c#, proponendo anche nuove idee come i builder. Inoltre la sua capacità di integrarsi con la standard library del Java, ne fa un linguaggio particolarmente performante, se confrontato con gli altri linguaggi che girano sulla JVM, come ad esempio JRuby.

Speriamo di vedere presto anche l’estensione Matisse, di Netbeans, supportare a pieno il linguaggio Groovy.

Zac

Il futuro di tanti anni fa…

Navigando sulla rete ogni tanto trovo delle piccole curiosità risalenti alla paleo-informatica, un periodo di grande fermento in cui la conoscenza dei computer si diffondeva attraverso riviste specializzate e libri di varia natura.

Quando, nel 1985, iniziai ad utilizzare il mio primo computer, un Apple ][ (mi piace scriverlo in originale), il primo programma che mandai in esecuzione era un certo Paint. All’epoca mi sembrava tutto naturalissimo ma quello era già il frutto di ciò che stava avvenendo dall’altra parte del globo. La Apple l’anno prima aveva presentato il Macintosh, il primo computer di successo a sfoggiare un’interfaccia utente fatta di pulsanti, finestre e puntatori ma in Italia a stenti si vedevano gli Apple ][ figuriamoci i Macintosh. Oggi leggevo una piccola curiosità su cui non mi ero abbastanza soffermato: il pulsante “OK” che ritroviamo dappertutto tra i nostri sistemi operativi fu “inventato” dalla Apple nel vero senso del termine.

I poveri utenti che fecero da cavia al progetto dell’Apple Lisa, il precursore del Macintosh, si trovarono a fare i conti con due pulsanti, tra i tanti: “DO IT” e “CANCEL”. “DO IT” era la parola scelta dagli ingegneri della Apple per dare la conferma ad una finestra, ma alcune di queste cavie leggevano la parola “IDIOT” rimanendo perplesse davanti al monitor senza sapere che fare.

Fu così che dopo estenuanti brainstorming e innumerevoli test nacque il pulsante “OK” che oggi noi tutti conosciamo ed apprezziamo (per leggi statunitensi l’avrebbero anche potuto brevettare).

Lisa, a sua volta era un progetto nato “copiando” le idee della Xerox. La Xerox, già nel 1972, aveva messo a punto un computer futuristico chiamato “Alto” il quale era dotato di:

  • Un mouse a tre tasti
  • 128KB di memoria
  • HD su cartuccia da 2.5 MB
  • connessione di rete ethernet
  • interfaccia utente a finestre
  • linguaggio di programmazione SmallTalk (un’immagine in figura)
  • un pad esterno dotato di 5 tasti aggiuntivi configurabili dall’utente


In pratica molto di quello che abbiamo oggi sulle scrivanie è nato in quel progetto: e non parlo solo dell’interfaccia grafica o del mouse. Parlo di un computer nato per essere connesso ad una rete locale. Parlo di un linguaggio di programmazione che è ancora oggi pesantemente copiato dai più moderni linguaggi. Objective C e l’XCode (l’ambiente di sviluppo Apple) sono sicuramente i due più grandi tributi a Smalltalk (anche l’interfaccia ricorda l’immagine che vedete in alto) ma anche linguaggi come Ruby, Java o C# devono molto a Smalltalk (alcuni stili di sintassi, il concetto di reflection (!!) e ovviamente la programmazione ad oggetti).

In pratica i progettisti di Alto, e di tutto ciò che gli ruotava intorno, già nel 72 avevano fatto una profonda immersione in tutte quelle che erano le problematiche di un computer moderno partendo dall’utente fino ad arrivare agli sviluppatori. Lo stesso Steve Jobs, nell’intervista che in basso (minuto 4:30) ammette che di tutte le cose che aveva visto alla Xerox, lui si accorse solo dell’interfaccia grafica: della programmazione object oriented e della connessione ethernet (con client di posta) che pure gli fu mostrata, lui non vide niente.

E pensare che di quel progetto così strano ne la Xerox, ne la Apple, ne la Microsoft hanno saputo capirne il vero valore…

Zac

Linguaggi portabili…tsk

Oggi mi vedo comparire sulla chat il messaggio: “conosci haxe e neko?” (si pronunciano hacks e Nee-ko) e penso “saranno i due nuovi animaletti buffi di quei cartoni tipo Pretty Cure o Sailor Moon“: e invece no; scopro da qui che il primo è un linguaggio di sviluppo ed il secondo è una virtual machine per il primo.

“E fin qui”, mi direte voi, sagaci lettori di mille ed uno feed rss di programmazione agile, esperti di scrum, di test driven e model driven development, “ndo sta la novità?”

Beh la novità è che haxe può essere ANCHE compilato a mo di java o c#, ma ‘odesto linguaggio può ANCHE essere compilato in JavaScript, in Flash 9, in PHP: avete capito bene: il compilatore haxe, oltre ad essere dotato di una discreta libreria standard per il linguaggio omonimo ha a disposizione la stessa libreria anche per gli altri linguaggi. Quindi una routine scritta in haxe può essere agevolmente trasformata dal compilatore anche in altri linguaggi.
Questa sua caratteristica lo rende molto adatto allo sviluppo di progetti web, laddove la piattaforma client o server potrebbero richiedere l’adattamento di un codice esistente…se aveste scritto i vostri progetti in haxe, una semplice operazione di compilazione avrebbe risolto il tutto. Inoltre haxe si presenta anche come un buon framework per lo sviluppo di applicazioni ajax. Scrivere una web application diventa molto simile a scrivere un’applicazione in java…la differenza sta nel fatto che basta compilarla per rendarla indipendente da qualsiasi Server Engine dato che haxe può essere tranquillamente tradotto in Javascript. Se poi abbiamo bisogno di aggiungere dinamicità al nostro sito, potremo sempre optare per la compilazione in PHP e magari con qualche bella animazione, che si renderizzerà in Flash.

Il linguaggio, che alle prime si presenta molto simile a java, è dotato ANCHE di quelle facezie a cui questi dannati linguaggi moderni ci stanno vieppiù abituando tipi anonimi, reflection e così via. Il tempo ci dirà se attorno a questo progetto si svilupperà un pò di interesse oppure l’idea andrà morendo sotto l’enorme peso di dover scrivere la stessa funzione per ogni linguaggio di destinazione di haxe.

Per adesso mi sembra un accrocchio davvero interessante.

Vi lascio al blog del progetto per altre interessanti dimostrazioni.

MS: Vecchi formati, nuove specifiche

Nell’evidente tentativo di soddisfare le richieste provenienti da anni dalla concorrenza e dall’UE e nel nome della tanto temuta interoperabilità, Microsoft ha pubblicato delle dettagliate specifiche dei vecchi formati di Office 97-2003. Troppo tardi? Può darsi… Ma sicuramente un passo avanti verso una visione meno chiusa del software e una mossa sulla quale pochi avrebbero scommesso fino a pochi mesi fa.
Qualcuno fa notare come tutto ciò avvenga proprio qualche giorno dopo il pensionamento di Bill Gates. Comunque, non credo che Steve Ballmer sia in alcun modo più aperto di Bill nei confronti delle filosofie open. Inoltre, bisogna riconoscere che Microsoft negli ultimi tempi ha iniziato delle collaborazioni a vario titolo con il mondo open source che dopo le dichiarazioni di guerra di Ballmer nessuno avrebbe mai potuto immaginare.
Attenti però, a guardar bene il trucco c’è… Tra le condizioni per l’uso delle specifiche rilasciate c’è scritto che non servono autorizzazioni per implementare software open source a partire dalle specifiche, a patto che tali implementazioni siano distribuite con modalità “non commerciali”. Insomma, aperte sì, ma fino ad un certo punto 😐