Feeds:
Posts
Comments

Arduino 1.0 beta 1

Non so perchè mi ero perso questa cosa, ma è disponibile da maggio ormai la versione beta della 1.0 di Arduino IDE; i tarball si possono trovare qui, mentre il branch Git è qui.

Sì, so che è software non ancora stabile, ma a parte il fatto che questo non mi ha mai fermato, la cosa importante (almeno per me, oggi) è che il client DHCP funziona. Fino alla versione 0.22, infatti, era necessario utilizzare una libreria esterna che a me personalmente ha sempre dato problemi; in particolare, con Arduino Uno e l’Ethernet Shield di Adafruit, le richieste inviate al server DHCP sono malformate la maggior parte delle volte e la scheda non riesce a rispondere al DHCPOFFER, di fatto impedendo l’acquisizione di un indirizzo IP corretto.

Con la nuova versione dell’IDE, le librerie ethernet hanno (finalmente) incluso tutte le funzionalità di indirizzamento dinamico, e lo sketch di esempio per DHCP ha funzionato al primo colpo; questo mi basta a decidere di passare a questa versione (direi definitivamente, ma questo lo stabilirò solo dopo ulteriori test). Presto vi farò sapere quali seghe mentali esperimenti ho in ballo…

Stiamo abbandonando i diritti fondamentali, privacy e libertà di manifestazione del pensiero in primis, in cambio di una fiducia errata nel fatto che simili rinunce possano servire a portare una maggiore sicurezza o alla protezione di piccoli privilegi destinati comunque, prima o poi, a cadere, travolti dall’onda di internet.

Ecco le slides della presentazione dell’articolo prodotto a partire dal mio lavoro di tesi magistrale; la conferenza in questione è TOOLS Europe 2011, tenutasi a Zurigo dal 28 al 30 giugno 2011.

Dopo il discorso di ieri di Richard Stallman, ho iniziato a pensare al software installato nel mio PC, e che uso abitualmente e negli ultimi tempi, e riporto qui la riflessione se sia veramente possibile abbandonare completamente il software proprietario e passare interamente a quello libero. Premetto che io non ho alcun problema nell’uso del software proprietario, quando funziona ovviamente, anche se preferisco il software libero se ho la possibilità di scegliere.

Ecco le parti proprietarie che ho installate nel PC in questo momento (tra parentesi ho indicato sia la motivazione dell’uso di quel software, sia se la sostituzione con alternativa free sia possibile):

  • driver ATI (supporto completo alla mia scheda video sul Dell): questi valgono solo per uno dei miei computer, e l’ultima volta che ho controllato non mi era possibile abbandonarli, dato che quelli free non supportavano il throttling della potenza (quindi temperatura a 70+ gradi); ammetto di non aver controllato l’ultima versione (FORSE NO, ma nel caso solo sul Dell)
  • Google Chrome (scelto in alternativa a Chromium dato che utilizzo molti servizi di Google, e suppongo questo garantisca una migliore integrazione): facilmente sostituibile con Chromium, non so effettivamente quali funzionalità perderei, ma non credo sarebbe una tragedia (in fondo ho usato per anni Firefox, alla peggio potrei tornare a quello) (SI)
  • Oracle JDK (miglior JDK per Java): qui bisognerebbe verificare, dato che utilizzo Java per lavoro e di conseguenza non so se OpenJDK sia compatibile per le funzionalità di cui io ho bisogno (FORSE SI)
  • Dropbox (comodo per condividere file tra i miei computer): software non essenziale alla mia esistenza, ma di nuovo lo utilizzo (tra le altre cose) per lavoro; potrei comunque accedervi dalla sola interfaccia grafica. Non esiste un’alternativa libera (SI)
  • Mono (software che uso da parecchio tempo, ed in cui ho salvati parecchi dati): utilizzo due software basati su C#, Tomboy e F-Spot; possono essere sostituiti con alternative basate su altri linguaggi (SI)
  • Flash Player (incluso in Chrome): la stragrande maggioranza del mio uso di Flash è per i video di Youtube, e dato il supporto di quest’ultimo ad HTML5, non dovrebbero esserci problemi a segarlo (SI)
I formati:
  • codec video: potrei anche rinunciare alla libdvdcss, e guardare i DVD in un lettore da tavolo, ma non so se potrei farlo anche con i DivX, dato che VCast non supporta formati liberi come OGG Theora; di fatto, queste sono le mie fonti principali di video (NO)
  • codec audio: l’abbandono dell’mp3 implicherebbe due cose, ovvero procurarsi un lettore con supporto ad OGG Vorbis (esistono, ma sono ben pochi) e non comprare più musica online, dato che praticamente tutti i rivenditori usano gli mp3. Certo, una volta acquistati si possono riconvertire, ma questo implicherebbe comunque sostenere il mercato degli mp3 stessi, cosa che resterebbe comunque sbagliata. Certo, potrei continuare a comprare CD, ad un prezzo superiore e in direzione contraria rispetto alla mia idea di passaggio completo al digitale (NO)
  • libri: epub è un formato libero, ma avrei comunque bisogno di un convertitore verso mobi per poter usare il Kindle, senza contare il fatto che i libri di Amazon sono protetti a loro volta da DRM (come gli epub italiani, peraltro). Certo, il problema di conversione si risolverebbe con un lettore tipo il Nook (che, detto per inciso, ha l’aria di essere spettacolare, anche meglio del Kindle), ma l’acquisto di epub con DRM sarebbe come acquistare mp3 per poi convertirli in ogg (NO)
Da questo elenco si deduce come il vero problema, oggi come oggi, sia sui formati multimediali più che sui programmi in sè (di fatto, ad oggi l’unico software che da informatico ho usato in versione proprietaria per la mancanza di alternative valide è Matlab). Questo in parte si potrebbe risolvere non appena le case editrici capiranno la cazzata del DRM e inizieranno a vendere epub aperti. A quel punto resterà la sola questione dell’audio.

RMS @ Polimi

Richard Stallman

Richard Stallman

Ecco Richard Stallman, mentre espone il suo keynote conclusivo alla “V Conferenza Italiana sul Software Libero” (link). Discorso particolarmente denso di significati, in cui RMS ha esposto le varie minacce alla libertà degli utenti delle tecnologie del ventunesimo secolo, limitazioni imposte da aziende, che inseguono il profitto puro e semplice calpestando dette libertà, o da governi miopi se non collusi con queste aziende. Come sempre, tutto estremamente ideologico e le soluzioni ritengo siano complesse e per le quali bisogna trovare un compromesso tra le parti, ma resta il fatto che le questioni sollevate (il cloud ed i propri dati in mano a terzi, il software proprietario, la censura su Internet, la condivisione etc) sono reali ed è necessaria una riflessione da parte dei governi più approfondita e che sia meno orientata verso una mera limitazione delle libertà dell’individuo. Tutto questo, peraltro, a seguito dell’altra importante conferenza con Google ed il trattamento dei dati personali, tenutasi mercoledì scorso.

Approvato anche il passaggio per la sede POuL con foto di gruppo.

Erlang R14B03

I have just published the packages for the latest version (R14B03) of Erlang: as usual, you can find them in my PPA.

As a reminder, they have been backported directly from Debian Unstable, without changes, so they work for me and may work for you, but I have published them “as are“, and I am not taking any responsibility for bad behavior.

POuL 2001-2011

POuLMi

POuLMi

C.A.R. Hoare

[…] In this last resort, I appeal to you, representatives of the programming profession in the United States, and citizens concerned with the welfare and safety of your own country and of mankind: Do not allow this language (ADA, N.d.R.) in its present state to be used in applications where reliability is critical, i.e., nuclear power stations, cruise missiles, early warning systems, anti-ballistic missile defense systems. The next rocket to go astray as a result of a programming language error may not be an exploratory space rocket on a harmless trip to Venus: It may be a nuclear warhead exploding over one of our own cities. An unreliable programming language generating unreliable programs constitutes a far greater risk to our environment and to our society than unsafe cars, toxic pesticides, or accidents at nuclear power stations. Be vigilant to reduce that risk, not to increase it.

Benchmarks

(Nota bene: ciascuno dei test riportati sotto ha una scritta che indica se il valore massimo o il valore minimo sono da considerarsi meglio come performance)

Ho passato l’ultimo weekend a casa a giocare con la test suite di Phoronix, più che altro con l’intento di mostrare quanto pena faccia l’Atom N270, anche comparato ad un AMD Sempron Mobile di sei anni fa. Posso dire che la missione è discretamente riuscita, per quanto in realtà la gran parte dei test di CPU che ho lanciato misurino le performance sfruttando uno solo dei core disponibili (se sono più di uno, come nel caso dei miei due Atom). Per aumentare il divertimento, ho anche lanciato gli stessi test sul Core 2 Duo del mio portatile serio.

Innanzitutto, ecco un’overview dei sistemi coinvolti:

Systems

Systems

Ed ecco il test CPU maggiormente significativo, dato che sfrutta appieno la parallelizzazione (se disponibile):

Parallel BZIP2 compression

Parallel BZIP2 compression

Vorrei far notare come il Core 2 Duo vinca in maniera quasi imbarazzante sugli altri computer, e come invece il computer desktop, quello equipaggiato con l’AMD Sempron Mobile 3000+, perda dai due Atom ma di soli 8 secondi su 240 (il 3-4% circa), a dimostrazione di quanto siano estremamente lenti questi ultimi processori (che sono una delle prime generazioni, ormai hanno due anni di vita circa).

A titolo esemplificativo, riporto uno dei test mono-core:

BYTE test

BYTE test

In questo caso, l’unico core del Sempron vince sul singolo core dell’Atom, perdendo clamorosamente dal singolo core Intel. Infine, ecco un test sui dischi (lanciato con client count a 1, data la durata di detto test ed il poco tempo a disposizione nel weekend passato a casa):

Dbench - 1 client

Dbench - 1 client

Il fatto che l’Eeebox perda così tanto anche solamente dall’Eeepc spiega in parte la lentezza estrema di quella macchina, confrontata con un sistema molto simile ad essa. Il desktop è equipaggiato con un Sata1, degli altri non ho controllato i dettagli sull’interfaccia a disposizione (suppongo sia una Sata2 per il Dell, dato che asfalta democraticamente tutti gli altri).

Insomma: l’N270 fa veramente pena, e tra i due Eee, il Box è veramente vergognoso (causa dischi, essenzialmente). Non ho fatto test grafici, dato che la Radeon 9200 del PC desktop usa i driver open source che sono inguardabili, ed i due piccoli hanno una scheda Intel piuttosto vecchiotta. Ah, non mi ritengo troppo responsabile di eventuali incomprensioni con l’interpretazione dei dati della test suite, dato che è la prima volta che la uso…

Erlang vs. Erjang

(Edit: lo davo per scontato, ma meglio chiarirlo: nel grafico sottostante l’asse Y è misurato in millisecondi di esecuzione per ciascun test, quindi un valore inferiore è preferibile)

Uno dei punti di forza da sempre declamati di Erlang è la capacità del runtime di gestire la concorrenza anche di migliaia di processi leggeri, grazie alle capacità del runtime, sviluppato appositamente attorno (tra le altre cose) a questa caratteristica. E’ anche il motivo per cui si dice che linguaggi concorrenti implementati su altre macchine virtuali (ad esempio, Scala sulla JVM) non potranno mai avere le medesime prestazioni.

Ebbene, dopo un post intrigante in una mailing list, ho esplorato le prestazioni del progetto Erjang (Erlang sulla JVM) versus Erlang stesso, utilizzando un programma di test distribuito direttamente con i sorgenti di quel progetto: gli autori di Erjang stesso dichiarano che le performance sono, in media, in linea con quelle del runtime originario; il mio test è stato fatto sull’Atom N270 dell’Eeepc, ed è interessante vedere come in alcuni punti la versione Java riesca ad avere le performances più alte.

Grafico del confronto

Grafico del confronto

Ammetto di non aver fatto i test in modo eccessivamente scientifico, in ogni caso i valori sono stati presi alla seconda esecuzione del test stesso, supponendo che la prima possa essere inficiata dal caricamento o dalla compilazione del codice.