On the other side of the screen, it all looks so easy

Archive for Software

Driving Sideways

non ti rendi conto di quanto dai per scontato in Linux se non quando devi replicare un ambiente di sviluppo sotto OS X. fortunatamente, con un po’ di Macports e di JHBuild si riesce a mettere in piedi qualcosa di usabile.

una cosa sicuramente mi piacerebbe avere anche sotto GLX, e sono i tool per fare profiling delle chiamate OpenGL; l’UI è banale da replicare (basta prendere una cosa tipo questa) ma quello che è interessante è tutta la serie di hooks per attaccarci uno statistical profiler.

Comments

Dead Duck

L’altra settimana ho aggiornato il laptop a Gutsy. In generale, il feel è che questa release sia una mezza tragedia: non siamo ai livelli di Edgy, ma poco ci manca. Tra le cose che hanno smesso di funzionare:

  • NetworkManager non sopravvive al suspend e sono costretto a disabilitare la rete quando sposto il computer da casa all’ufficio; questo quando va bene: alle volte devo andare di killall. Update@2007-11-01T15:39+0100: bug noto, a quanto pare risolto in SVN.
  • Se spengo il monitor sotto X (ad esempio, se chiudo il laptop ma lo lascio acceso) due volte su tre non viene riacceso e sono costretto a far ripartire GDM.

C’è di buono che GNOME 2.20 è meraviglioso, e che Debian non riconosca (ancora) l’esistenza dei laptop, altrimenti sarei tornato di corsa al mix di testing+unstable che usavo prima.

Ovviamente, ho provato di nuovo Compiz - il compositor che alle volte fa da (pessimo) window manager. L’user interface è un totale disastro ferroviario, in cui puoi scegliere solo tre livelli:

  1. Niente effetti (ovvero: Metacity)
  2. Effetti per persone sane di mente
  3. Hurt me plenty1 (ovvero: gente che si bulla con gli amici, gente che registra un video per bullarsi con gli amici, gente che sta male perché non ha amici ma non ne ha bisogno perché ha Compiz, gentooisti)

In più, se hai qualcosa che non è installato di default e non ha un nome umanamente inferibile2, hai anche il livello segreto:

  1. Customizzami tutta

Che permette di selezionare cose utili come il motion blur ma non ha un setting per avere un window manager sensato, tra il miliardo di tunables, plugin che si disattivano a vicenda e chiari esempi di opzioni di tipo unfuck my application.

Il problema è che perfino al livello per persone normali dopo dieci minuti di utilizzo comincio a sentire il mal di mare e un mal di testa impressionante. A questo va aggiunto il fatto che il trasferimento di opzioni da Metacity a Compiz è orrido e mi sono trovato dall’avere dodici workspace all’avere dodici viewport con dodici workspace l’uno - l’equivalente di 144 aree di lavoro la cui navigazione è banalmente impossible.

Morale della storia:

  cd ~/git
  git clone git://anongit.freedesktop.org/git/xorg/app/xcompmgr
  ./autogen.sh
  make && cp xcompmgr ~/bin
  xcompmgr -cC -o .3 &

e Metacity. E, ovviamente, AWN (che ha dei bug grandi così, ma posso rompere le scatole a Neil di persona).

  1. citazione colta []
  2. hint: non è gnome-compiz-manager []

Comments (28)

Just a Ride

Dicevo altrove di aver provato Vala, il linguaggio C#-like scritto usando GLib e GObject come base, e che viene “compilato” in C invece di usare una VM e un linguaggio intermedio1.

Ho trovato dei difetti nel layer di traduzione, ma sono dovuti essenzialmente alla giovane età del progetto, e il team di sviluppo sta raccogliendo intorno a sé una quantità di collaboratori più o meno saltuari che fa ben sperare. In più, la mera esistenza di Vala sta spingendo a completare il supporto per l’introspezione in GObject2.

Quello che più mi interessa, però, è la possibilità di avere un linguaggio a medio/alto ufficialmente sanzionato da GNOME - come Objective-C da Apple. Intendiamoci: la quantità di binding già presenti è enorme, e già oggi se volessi scrivere un’applicazione per GNOME potrei farlo in Perl, come in Java, come in C# e perfino con quel train wreck di Python3. Tuttavia, i bindings sono quello che sono: si portano dietro virtual machine, ambienti di runtime, licenze, implementazioni patent encumbered e altre amenità.

Intendiamoci: non ho nulla contro le VM - a parte l’obiezione classica: “sto già usando una macchina virtuale su una macchina reale, perché devo usarne un’altra ancora per ogni linguaggio?”; tuttavia, e specie sulle macchine su cui lavoro, una virtual machine è già sufficiente - figuriamoci quattro o cinque. Mi piacerebbe che qualcuno prendesse Mono e ci portasse più di tre o quattro linguaggi; mi piacerebbe ancora di più che qualcuno prendesse Parrot e lo completasse. Mi piacerebbe, insomma, avere una macchina virtuale per tutti i linguaggi ad alto livello. Se non posso averla, allora tanto vale usare Vala.

  1. si potrebbe arguire come, in realtà, la VM usata sia il sistema operativo ospite, e che sicuramente esistono più piattaforme con un compilatore C che piattaforme che supportano Java o C# []
  2. ovvero la possibilità di avere meta-informazioni a runtime su una libreria, sulle API e sui tipi di dati esportati []
  3. che, spero, Python 3.0 affosserà definitivamente con tutte le modifiche arbitrarie alle API senza vere nuove feature; non ci resta, quindi, che sperare in IronPython per una implementazione sana di mente? non voglio pensarci []

Comments (8)

Hysteria

O mio dio! Skype usa D-Bus, che usa getpwnam (3posix), che apre /etc/passwd! Moriremo tutti!

O mio dio! La demo giocabile di un gioco già uscito installa un sistema per il DRM possibilmente scritto dalla stessa compagnia che aveva scritto un altro sistema per il DRM che aveva le caratteristiche di un rootkit! Moriremo tutti!

L’isteria di massa del weekend è stata gentilmente offerta da blog e webforum e dal tam-tam della stessa gente che installa un firewall per sentirsi più sicuri - e poi magari blocca il DNS e pensa di essere stata “acherata”. Chiunque campi sull’informatica non può che ringraziare questi fessi che permettono di portarsi a casa la pagnotta e non offrono alcun pericolo imminente di rimpiazzo.

Comments (6)

The Worst Joke Ever

Ho passato gli ultimi tre giorni a tentare di capire perché un pezzo di codice producesse un SIGSEGV. Ho cambiato linee, logica, tipi di dato. Niente: qualunque cosa facessi, solo crash. Come al solito, gdb si rivelava poco utile, mentendo spudoratamente sul luogo della violazione di memoria.

Oggi pomeriggio ho deciso di arrendermi e ho chiesto a Kris se poteva darmi una mano (dato che il segfault si verificava nel codice del GtkTreeModelSort che lui mantiene). Stasera mi dice di aver trovato la patch:

Index: gtk/gtkfilechooserdefault.c
==============================================================
--- gtk/gtkfilechooserdefault.c (revision 17846)
+++ gtk/gtkfilechooserdefault.c (revision 17848)
@@ -9508,7 +9508,7 @@ recent_column_path_sort_func (GtkTreeMod
   if (!name_a)
     return 1;

-  if (!name_b);
+  if (!name_b)
     return -1;

   if (is_folder_a != is_folder_b)

Penso che i miei moccoli siano arrivati vicinissimi al Moccolo a Delta di Dirac (dieci alla ventottesima madonne in un microsecondo).

Va da sé che Kris si vedrà offrire una birra al GUADEC.

Comments (11)

Give It Up

La missione, se deciderete di accettarla, sarà di trovare la playlist nel prossimo Amarok:

amarok-2.png

Se verrete catturati, uccisi oppure vi butterete dalla finestra dall’orrore, il dipartimento negherà di essere a conoscenza della vostra missione.

Poi, a che diavolo serve il menu Engage? Cos’è, l’Enterprise?

Le motivazioni per utilizzare Amarok stanno scivolando sempre più verso il lombrosiano.

Comments (14)

Next Year

Attenzione: post ad elevato livello di sarcasmo

È bello vedere gli amici di KDE pensare agli utenti, e passare a Dolphin. Certo che, potendo scegliere, non sarebber convenuto loro usare un file manager che non assomigliasse a Nautilus com’era cinque anni fa?

Ad ogni modo, il cerchio si chiude e si ritorna al 1999: KDE torna ad essere l’ambiente per i corporate user, transfughi di Windows, mentre GNOME torna ad essere il desktop environment pieno di crack.

Comments (3)

Twist the Knife

Panacea
\Pan`a*ce”a\, n.
[L., fr. Gr. pana`keia fr. panakh`s all-healing; pa^s pa^n, all + ‘akei^sqai to heal.] [1913 Webster]
1. A remedy for all diseases; a universal medicine; a cure-all; catholicon; hence, a relief or solace for affliction. [1913 Webster]
2. (Bot.) The herb allheal. [1913 Webster]
3. (Programming) Tracker. [2007 Gnome]

Okay, adesso si è andati talmente oltre il ridicolo che non è neppure più divertente. Gli autori ci si sono messi per la loro parte, ma adesso i droni stanno diventando davvero fastidiosi.

Comments (2)

Overdrive/1

Un recap sui progetti a cui sto lavorando al momento.

Clutter

Nei commenti al blog precendente mi si chiedeva di Clutter. Per chi non seguisse Planet GNOME (o per chi lo seguisse ma non avesse comunque la più pallida idea di cosa si tratti), Clutter è un toolkit che ho contribuito a realizzare più o meno da quando sono stato assunto alla OpenedHand (settimana più, settimana meno).

Clutter è un toolkit basato sulle stesse librerie usate per le GTK+ (GLib, GObject, Pango) ideato per scrivere applicazioni con un’interfaccia grafica mono-finestra - ad esempio: media box, personal video recorder, etc. - in ambienti (embedded e non) dotati di grafica accelerata (tramite OpenGL oppure OpenGL ES). Clutter fornisce un canvas, rappresentato dal singleton ClutterStage, e alcuni widget, chiamati ClutterActor. I widget forniti sono (volutamente, al momento) pochi: non solo perché siamo alla release 0.2.0, ma soprattutto perché vogliamo vedere di cosa necessitano gli sviluppatori prima di implementare ClutterActor nel modo sbagliato o del tutto inutili.

Hello, World - Come funziona Clutter? Ecco un semplice “hello, world” che sfrutta buona parte delle nuove API. È scritto in Python - avrei preferito scriverlo in Perl, ma conoscendo la quantità di pythonisti in “ascolto” ho scelto altrimenti; la versione in Perl è disponibile a richiesta. Se volete, potete scaricarla e farci quello che volete - è nel public domain, come dovrebbero essere tutti gli “hello world” di questo mondo. Se cliccate dopo il link, smonto il codice in blocchi per spiegare come funziona.

Read the rest of this entry »

Comments (16)

The Body Says No

È giunto il momento di rivelare al mondo, e alle anime belle che lo abitano, una verità orrenda, per troppo tempo taciuta da Chi Sa:

Python Fa Schifo e Chi l’Ha Scritto Va Tumulato Vivo Sotto Una Colata di Cemento a Presa Rapida

Certo, il linguaggio in sé è moderatamente carino, ma appena tenti di muoverti sotto l’interprete, per scrivere un modulo di interfaccia tra una libreria C e Python, l’idiozia della API Python/C e l’assenza di messaggi di errore significativi rendono il lavoro con Python una tortura - e dimostrano un’amatorialità degna di Ruby. Un’ora di questa tortura e rimpiango le macro criptiche e l’assenza di documentazione delle API del Perl. Per un linguaggio che si vanta di seguire il dogma del better explicit than implicit, le API C sono il trionfo della perversione mentale, della rottura all’indietro, dell’inconsistenza nelle naming policy e della mancanza di utilità.

Ovviamente, ognuno è libero di pensarla diversamente; sono convinto che Pythonisti arriveranno qui nel tentativo di mostrarmi la Retta Via Verso l’Illuminazione. Per me, tuttavia, e per i miei scopi non esiste differenza tra il lavorare per mezza giornata con Python e darmi delle vigorose martellate sui coglioni.

Adesso mi sento molto meglio. E no, Python continua a farmi schifo.

Comments (9)

Something to Look Forward to

Apple iPhone, quindi.

Il Sofri giovane riporta il commento di un lettore che si aggiudica la palma del vincitore per l’asserzione più stupida in un altrimenti ragionevole discorso sul fatto che l’iPhone avrà anche un’UI interessante, ma l’hardware è ben lungi dall’essere rivoluzionario:

Non c’è nessuna compatibilità con Office.

Voglio conoscere il fesso che userebbe Excel su uno schermo da 3.5 pollici senza stilo e con manipolazione via dita; vorrei conoscerlo per potergli stritolare la mano in una pressa idraulica, that is. Un po’ come le pubblicità della Microsoft che infestano le stazioni dei treni e della tube da queste parti: “vai avanti, fai le modifiche a quel foglio di Excel” - sullo schermo di uno smartphone con una tastiera ridicola. Devi essere un decerebrato per pensare di farlo - neanche di riuscirci.

Comunque, l’iPhone e AppleTV segnano lo spostamento definitivo della Apple (non-più-Computer) Inc. nel magico mondo delle appliance e della elettronica di consumo; staremo a vedere che succederà nei prossimi mesi.

Prima che me lo dimentichi: su X ci sono sviluppatori che lavorano da tempo al multi-point input su touchscreen; dato che l’Apple ha brevettato l’universo, spero non ci saranno ripercussioni sull’utilizzo di questa tecnologia nelle interfacce. Ad esempio, al momento non possiamo implementare alcune funzioni del Finder in Nautilus (come le “cartelle a molla” durante il drag and drop) perché brevettate dalla casa di Cupertino.

Comments (9)

Cast no Shadow

Questo è ancora il blog di un geek che sviluppa su GNOME, quindi ogni tanto vi tocca. ;-)

Con un grassissimo anticipo di trentacinque (si, 35) secondi sull’ora della deadline per effettuare una release, ieri notte ho impacchettato la version 2.17.1 delle GNOME Utilities, nome in codice Cast no Shadow. Dalle undici di sera fino al momento in cui make distcheck ha completato il suo lavoro, ho implementato una delle due feature richieste per questo ciclo di sviluppo per l’utility che prende screenshot del desktop (l’altra, ovvero la nuova finestra di dialogo per il salvataggio dell’immagine, ahimé, dovrà attendere GNOME 2.20, dato che non l’ho completata in tempo - penso che finirà in una branch, dato che è quasi finita e manca solo il codice per il drag and drop):

GNOME Screenshot
La cosa buffa è che ho catturato l’immagine di gnome-screenshot usando gnome-screenshot.

Questa finestra di dialogo apparirà solamente se gnome-screenshot verrà invocato dal meno oppure usando lo switch --interactive da linea di comando; ovviamente, la finestra di dialogo terrà conto delle opzioni da linea di comando, quindi:

$ gnome-screenshot --window --delay=5 --interactive

modificherà il RadioButton selezionato e il valore nello SpinButton. Purtroppo non sono riuscito ad infilare dentro una ComboBox per l’effetto (bordo o ombreggiatura), e dato che siamo in UI freeze dovrò chiedere il permesso prima di inserirlo. In più, c’è un bug: non appare l’icona dell’applicazione nella parte sinistra della finestra - probabilmente, l’icona non è installata correttamente grazie a Dennis Cranston, il bug è stato rimosso.

Riassumendo, le feature mancanti in questo ciclo di gnome-utils sono:

  • usare GtkPrint nel dizionario [da fare];
  • supporto per dizionari locali [includere il parser e il backend];
  • speller nell’applet del dizionario - o rimozione dell’applet in toto, in favore di deskbar-applet; [da fare]
  • plug-in nel visualizzatore di log - e, in generale, pulizia del codice [quasi completo, da pulire];
  • nuova finestra di dialogo per il salvataggio degli screenshot [quasi completo];

Adesso che GNOME è passato a SVN potrei finalmente sfruttare l’occasione e aprire qualche branch per gli esperimenti.

Comments

Fortress

I filtri usati dal sottoscritto per evitare di finire sommerso da spam di varia natura sono governati da una qualche forma di intelligenza artificiale dotata dello stesso livello di sarcasmo di Erwin, e la prova è che oggi mi è arrivata un’email con questo oggetto, ed è stata lasciata passare:

  Subject: Want to work stable? You need to buy licensed WINDOWS

Ordunque: dal 1992 in poi mio padre ha acquistato copie di DOS e di Windows per un totale di svariate centinaia di euro, e se dovessi pensare che questo abbia in qualche modo influenzato (in positivo, ovvero riducendo) il numero di piantamenti creativi che i computer che ho usato, allora mi chiederei anche quale possa essere stato l’effettivo guadagno nell’aver comprato le licenze, rispetto a coloro i quali si sono fatti la loro bella copia pirata; BSA che ti sfonda la porta alle sette del mattino e ti infila in un furgone ammanettato davanti ai vicini esclusa.

Comments (3)

The Slow Descent Into Alcoholism

In quel di Princeton, Avi Flamholz commenta (dopo averne fatto per l’ennesima volta le spese) l’implicita equivalenza che la gente fa tra computer scientist e tech support.

Come (ex-)studente in ben due facoltà di informatica non posso fare a meno di dargli il benvenuto nel club. Confesso di aver sempre avuto un brivido lungo la schiena quando, durante feste o altri eventi sociali, arrivava la fatidica domanda: “ma tu, che cosa studi?” - anche perché, invariabilmente, succedeva una delle seguenti due cose dopo la mia risposta: 1. la noia si impadroniva del mio interlocutore, che mi lasciava con il mio long island in mano verso gente più interessante (chessò, uno studente di economia o di fracazzodivelletrologia applicata); 2. partiva una raffica di domande su come mettere a posto windows-office-mediaplayer-emmessenne, salvo poi ricadere nella fase 1) quando dichiaravo la mia più totale ignoranza sulle questioni tecniche microsoft-indotte. Ero a un passo dal comprare e indossare t-shirt più o meno esplicite.

now playing: The New Pornographers, Mass Romantic

Comments (4)

Problem solving without solving problems

Ikitt, su autopackage (in particolare, penso si riferisca a questa pagina.

Il vero problema di autopackage non è l’attitudine dei programmatori di autopackage - in fondo, progetti F/OSS portati avanti da persone che non riescono a comportarsi come degli adulti razionali ne abbiamo avuti e ne avremo ancora; pensiamo a MPlayer: nato male, portato avanti con arroganza e spocchia, sta finalmente per finire nel dimenticatoio, sorpassato da soluzioni tecnicamente superiori e sviluppate da gente che, almeno, non dice che tutto il resto fa schifo. Questo perché MPlayer copriva una nicchia nell’ecosistema del free software che doveva essere coperta.

Autopackage, al contrario, non risponde ad alcuna esigenza vera e propria, se non al bisogno di alcuni sviluppatori per Windows (che non hanno ancora capito come funzionano le cose sotto *nix e Linux) di avere un unico pacchetto da installare su tutte le macchine che hanno sotto mano. È un’esigenza sentita da qualcuno? Si - ovviamente. È un’esigenza rilevante? No, altrettanto ovviamente. Altrimenti avremmo molti altri progetti simili ad autopackage - mentre l’unico che mi viene in mente è Klik, ovvero un altra soluzione messa a punto da e per programmatori per Windows.

Secondo gli sviluppatori di autopackage l’onere di far funzionare il proprio software con tutte le distribuzioni dovrebbe ricadere sugli sviluppatori delle applicazioni; questo non solo è dimostrabilmente inutile, ma pure dannoso. Io uso Ubuntu e conosco il sistema di pacchettizzazione della Debian a sufficienza per poter fare pacchetti .deb; tuttavia, uno sviluppatore Debian che abbia finito la NM ne sa indiscutibilmente più di me riguardo alle policy della Debian; stesso discorso vale per pacchetti RPM e per uno sviluppatore della Fedora Core 5. Anche se quelli di autopackage mi forniscono un’API per astrarmi dal lavoro pesante di aver ca che fare con relocation di librerie e binari, le minutie del package management non le posso (e non le voglio) imparare. In più, a meno di non ricorrere alla Fatina dai Capelli Turchini, e di sostituire tutto l’installato planetario con pacchetti basati su Autopackage in un microsecondo, avremo sempre a che fare con pacchetti autopackage che rompono inesorabilmente i pacchetti legittimi delle distribuzioni.

Quindi, il vero e serio problema di autopackage è la completa inutilità del fine prefisso (”un solo package manament system per tutte le distribuzioni gestito dagli sviluppatori stessi”); a questo si deve aggiungere una ignoranza di base sui meccanismi delle distribuzioni e dei loro package manager; poi, ma solo alla fine, una manifesta arroganza da “noi abbiamo la soluzione per tutti i vostri problemi, e tutti gli altri sono solo dei perfetti stronzi”, che fa risultare gli sviluppatori di autopackage automaticamente dalla parte del torto.

Comments (4)

Thread

Alle volte mi chiedo chi cavolo ha messo in testa ai programmatori che i thread servono nella realizzazione di programmi con un’interfaccia grafica.

Let me spell it out for you: i thread non servono. Sono, anzi, dannosi nel 90% dei casi, a meno che non sappiate esattamente quello che state facendo - e se sapete cosa state facendo, probabilmente non li starete usando comunque.

A che cazzo serviranno dei thread a un programma che passa il 99% dei tempo in un idle loop è fuori da ogni mia comprensione.

Nota: se usate un toolkit che non ha un main loop degno di questo nome allora mi spiace per voi; fatevi un favore, e cambiate toolkit.

Comments (2)

Security

What do you think of your antivirus company, the one that didn’t notice Sony’s rootkit as it infected half a million computers? And this isn’t one of those lightning-fast internet worms; this one has been spreading since mid-2004. Because it spread through infected CDs, not through internet connections, they didn’t notice? This is exactly the kind of thing we’re paying those companies to detect — especially because the rootkit was phoning home.

Bruce Schneier, Wired.

Comments

Life on a deadline - Seven Days

Una settimana. Quattro esami.

Cominciamo con Linguaggi di Programmazione per la Sicurezza; alla prima lezione (a cui mi degno di andare), nell’ordine:

  • mi viene chiesto di scrivere un programma in C sbagliandolo di proposito - cosa che mi risulta quasi impossibile, dal punto di vista fisiologico: posso sbagliare se e solo se faccio cazzate (e ne faccio, mind me, in quantità industriali), ma non di proposito (faccio smorfie orrende, tanto che il docente viene a controllare che cosa mi stia succedendo);
  • il docente mostra una slide con scritto Da C a Java (sola andata) - e io commento: “sta scherzando, vero?”. Solo perché un linguaggio è type safe, garbage collected e portabile mica vuol dire che è meglio; se poi è Java - beh, lasciamo stare…

Update 20051106@19:42 - Per inciso, type safe riferito a Java lo so essere una esagerazione; d’altronde, i docenti scambiano ancora i concetti di strongly typed e statically typed, quindi mi sento un po’ meno in colpa; quanto al codice sbagliato, per mostrarne un paio di varianti, mi sono scritto una semplicissima (~50 LOC) libreria di gestione di doubly linked list - simile, in utilizzo e codice, a questo, e sbagliavo un paio di allocazioni e di assegnamenti.

Continuiamo con Crittografia, esame simpatico, del quale non ho seguito una lezione.

Proseguiamo con Sistemi Operativi - take two, perché alla prima volta, alle domande troppo generiche, non ho risposto troppo precisamente. Se anche voi ci vedete qualcosa che non va, siete normali; se non lo vedete, e state insegnando/studiando in una facoltà scientifica (albeit “soft” come informatica/ingegneria informatica) allora avete sbagliato carriera, e dovevate andare a giurisprudenza.

Finiamo con Sistemi di Elaborazione delle Informazioni. In pratica, Internetworking with TCP/IP. Che cazzo c’entra il titolo del corso con il contenuto del corso (e, non del tutto incidentalmente, con il titolo del Comer - libro di testo del corso)? Come direbbe Alex Drastico: un cazzo. Ma gli vogliamo bene lo stesso.

Se riemergo tra una settimana, allora posso farcela a finire questa diavolo di una laurea finta.

Comments (7)

Gnome 2.12

Finalmente, dopo sei mesi di sviluppo (come da qualche anno a questa parte) è stata rilasciata la nuova release di Gnome.

Gnome 2.12

Alcune delle novità le trovate qui, anche se quello che non c’è scritto sono le tonnellate di bug corretti, e gli aggiustamenti per rendere questa interfaccia grafica ancora più veloce, flessibile ed espandibile.

Gnome 2.12

Come già per la scorsa release, chi volesse provare Gnome 2.12 senza andare a toccare il proprio sistema operativo può farlo scaricando il Live CD (via BitTorrent); basta scaricare l’immagine ISO sul proprio computer e “bruciarla” (per chi già usa Gnome, tasto destro sul file ISO, “Write to disc”).

Update 2005-09-11@00:21: Il live CD è uscito da quasi quattro giorni, e l’immagine italiana ancora non si fa vedere - perché nessuno del gruppo di localizzazione si decide a mandare la traduzione dell’avviso mostrato al boot. Sono due righe. La localizzazione di Gnome in italiano è ferma all’85% 97% (sull’HEAD); il sito it.gnome.org ancora usa lo stile di Gnome 1.4. Addirittura il gruppo di localizzazione vietnamita è più attivo di noi. Forza, e che sarà mai - bisogna darsi una mossa. Non ci credo che tutti gli italiani che usano Linux usino anche KDE.

Update 2005-09-11@00:44: neanche venti minuti dopo avergli mandato la traduzione, Marcus Bauer mi ha confermato che il live CD in italiano sarà online domani (nel pomeriggio) sul torrent.

Comments (2)

Shell

Ordunque, veniamo a descrivere quello strumento di tortura noto come Conchiglia, dato che ne parlavo brevemente qui, e pure Leo lo cita qui.

Il software in questione (scaricabile da qui) è un malridotto simulato di un vecchio programma, come direbbe Sark. In breve, serve per automatizzare e centralizzare parte del lavoro della commissione d’esame.

Prima degli esami, la segreteria didattica compila tutta l’anagrafica dei candidati; anagrafica che, poi, sarà portata sul computer di ogni commissione. Fin qui, nulla di complicato - a parte l’interfaccia studiata per venire incontro a dei lobotomizzati (lo studio di usabilità dietro la realizzazione dell’UI è stato condotto sui residenti del manicomio di Collegno).

I problemi, però, iniziano a biglie in movimento (com’è ovvio - se non hai realizzato un minimo di test in condizioni reali prima del deployment).

Infatti, l’accrocchio viene usato, per prima cosa, per generare i verbali di commissione. O, meglio, vorrebbe essere usato per tale scopo, se non fosse che si inchiodasse con errori tanto astrusi quanto spettacolari nel tentativo di infilare a forza in Word (si, dipende direttamente da Microsoft Office) un modello precotto, riempito con i dati del database interno (ad occhio, una schifezza generata e gestita con JET). A dimostrazione di come non solo Windows faccia onco come sistema operativo, ma anche come piattaforma di sviluppo, quando Word viene invocato da un componente terzo, e muore, lascia dietro di sé un processo (meglio: un thread) attivo, che occupa risorse; cosicché, se lancio più volte la generazione di un verbale, ecco che saturo la memoria con istanze zombie di Word, e inchiodo la macchina. L’unico modo per stampare più di un verbale è quello di generarne uno per volta, previa uscita dalla sessione di Conchiglia dopo ogni stampa.

L’interfaccia utente, brutta come solo i programmi “disegnati” da sub-umani alle prese con un tool visuale sanno essere, è inconsistente, basata su metafore ignote ai più, e assolutamente illogica.

Tanto per fare un esempio: per i verbali viene usato Word, ma gli elenchi vengono generati con un tool per report; per poter salvare questi ultimi, bisogna esportare i dati - e l’icona per l’esportazione è una busta aperta con una freccia verso il basso. Chi diavolo ha pensato a un’icona tanto idiota? Non mi stupisce che oggi tutti quanti siano venuti a dirmi che gli elenchi non si possono salvare: è impossibile intuire il funzionamento della funzione di esportazione. Sempre riguardo alle icone: perché usare quella per la stampa, quando in entrambi i casi non viene stampato nulla, bensì viene invocato un altro programma?

La commissione può salvare lo stato del “processo” (quale? Quello simil-Norimberga che sarebbe da fare ai creatori di Conchiglia, presumo), e alla visualizzazione di tale stato è dedicata una frazione dello schermo; tuttavia, che lo stato del processo sia stato modificato oppure no, è assolutamente ininfluente al funzionamento del programma.

La finestra principale si comporta come un immenso contenitore, ma si può aprire una sola finestra alla volta; perché usare una metafora (fallita) come l’MDI in un contesto a documento singolo? E, soprattutto, dove sono i documenti? Conchiglia genera e gestisce dati - non documenti.

Questi più o meno semplici difetti, più gli altri che il programma ha e che sarebbe troppo lungo elencare, sarebbero stati trovati e corretti se, verso febbraio/marzo, fosse stata fatta una simulazione di esame di stato, con carico quanto più possibile veritiero. Ovviamente, data la situazione in cui ci si trova adesso, questo non è avvenuto.

Comments

Projects

Ultimamente, sono stato un po’ troppo occupato per scrivere qualcosa sul blog (eccezione fatta per quei cinque minuti di Gimp che son serviti per partorire questo).

Il lavoro è aumentato in maniera esponenziale - grazie alla c.d. Settimana della Scienza[1] - e il tempo libero si è ridotto di conseguenza.

Tuttavia, qualche ora è stata rubata al sonno per tornare a programmare; mi sono, effettivamente, obbligato a sedermi davanti al computer e a scrivere qualcosa, prima di perdere abitudine e velocità. La prima è ancora lì, la seconda…

Per inciso, ho in stesura una riscrittura completa del sistema di gestione delle password di Gnome - ovvero, la libreria che si occupa di salvare le informazioni di autenticazione per non doverle sempre riscrivere. L’attuale stesura è un hack che mi ha fatto rimpiangere di aver pranzato, la prima volta che l’ho vista.

In più, sto scrivendo una bagatella: un programma in Perl che cambi lo sfondo del desktop - scegliendone casualmente uno tra quelli posti in una directory - a intervalli regolari. Per la serie life is (pseudo-)random.

Questo programma mi permette anche di scrivere il famigerato gnome-hello in Perl. gnome-hello è il programma che serve per imparare come scrivere, pacchettizzare e gestire un programma per Gnome. Esiste in C, in Python ma non in Perl - e non sia mai che i nostri cugini pythonisti abbiano un vantaggio.

[1] sed -e "s/ie/ieme/" $< > $@

Comments (6)

Decostruttori di certezze

Mentre ne parlavamo (davanti a una birra e a salsicce di Norimberga) con varia umanità, la nuova ad campaign della RAS mi ha fatto immediatamente pensare a una possibile contro-campagna per una nota azienda produttrice di software.

Microsoft AD

Fin troppo facile, vero?

Comments (5)

Layout

Un sano ringraziamento a Sergey V. Udaltsov per l’applet che permette il “cambio in corsa” del layout della tastiera in Gnome.

DosBox, infatti, non gestisce i layout differenti da quello statunitense; avrei potuto installare keyb.com dal progetto Free DOS, lo so, ma questa soluzione mi sembra molto più elegante. Mi basta aprire un terminale, selezionare il nuovo layout, ed ecco come per magilla che solo in quel terminale ho il layout americano.

Così, ho potuto giocare ad Ultima VI, Alone in the Dark, Another World e a Sim City 2000 (a quanto pare, Civ2 ha bisogno di Windows, così come SimCity Classic; Wing Commander e X-Wing usano il joystick, e rogue la porta joystick non ce l’ha).

Per un attimo, stamattina, mi sono trovato nel 1994.

Per un attimo, dato che intorno a me c’era un casino che la metà bastava.

Comments (2)

Omelette

Gli sviluppatori del toolkit grafico Gtk, per poter sperimentare nuovi widget e nuovi oggetti, hanno creato tempo fa una libreria dal nome evocativo libegg. Lo spirito della denominazione di questa libreria è che quanto vi è contenuto è fragile, destinato a “rompersi”, e va quindi maneggiato con cura - esattamente come le uova. Succede spesso, piuttosto e anzichenò, che le API cambino da una settimana con l’altra, o che vi siano bug che non passerebbero cinque minuti di QA (come questo, segnalato e corretto dal sottoscritto).

Da un paio di settimane a questa parte (partendo dal giorno in cui ho scoperto di avere la febbre, tra l’altro, e questo potrebbe gettare una strana luce sul mio rapporto con la programmazione), ho iniziato a giocare un po’ con questa libreria, e ho deciso di creare i binding per il Perl di alcuni oggetti. Sul sito del progetto gtk2-perl esistono già da tempo i binding per la creazione di icone nella notification area, e anche per la creazione di notification area. Io mi sono cimentato nella creazione dei wrapper per la libreria di gestione della lista dei file recentemente usati; successivamente, oggi (in meno di tre ore di lavoro) ho messo insieme anche la libreria per la creazione di icone di stato per la notification area.

Devo dire che la cosa è stata molto semplice da mettere in piedi; per inciso, questo va a grande merito del team di sviluppo delle gtk2-perl, che ha messo su un incredibile framework per la scrittura di binding Perl per librerie basate su GObject. Quindi, kudos a tutto il team.

Prossimamente, mi metterò sotto per la realizzazione dei binding per la manipolazione dei file .desktop (usati per la creazione di icone di avvio, menù di sistema e quant’altro); in questo modo, buona parte delle librerie standardizzate da FreeDesktop.Org (il collaborative effort per la standardadizzazione del desktop su Linux e altri sistemi operativi open) saranno a disposizione anche dello sviluppatore Perl.

Comments (2)

« Previous entries ·