Articles Written in 2008

Si riparte...

Karate Do

Due di Settembre, riprendono le lezioni di Karate. Come tutti gli anni, verrebbe da dire, ma in realtà per me è passato più di un anno da quando ho indossato l’ultima volta il karategi perché lo scorso anno ho saltato l’intero corso per impegni di lavoro. Quest’anno ho deciso che niente mi avrebbe distolto dal riprendere lo studio di una disciplina che tiene in forma ed apre la mente, allena la potenza e l’equilibrio ed impone concentrazione.

È stato un piacere rivedere i vecchi amici, che mi avevano giustamente dato per disperso, e ritrovare il maestro, felice di rivedermi.

Questi gli aspetti positivi. Ora, brevemente, quelli tragicomici: dopo un anno di inattività il primo allenamento (blando a dire la verità) mi ha massacrato! Tachicardia, muscoli intorpiditi e doloranti, più che il karateka cui dovrei assomigliare sembro il ritratto di Fantozzi dopo l’estenuante Coppa Cobram. Ora, siccome l’obbiettivo per quest’anno è arrivare all’esame di 2° dan, non c’è che da rimboccarsi le maniche e darci dentro.

Os!

Draw something on the screen... and interact with it!

Summary of the previous episodes: 10 days ago Richard Jones complained about the difficulties to achieve simple tasks (drawing a function graph on the screen) on modern computers with modern programming languages; the day after Erik de Castro Lopo replied with a post in which he used GTK and Cairo (better: the OCaml bindings) to achieve the result to draw a simple function on the screen. Yesterday Matias Giovannini added some pepper to this argument using SDL to draw the Newton fractal.

So, what can be added to all this? With a perfect graphic toy you can draw on a window with simple commands, of course, but you also want to interact with the objects you drew. So I elaborated Erik example to add some keyboard and mouse interaction with the graphics on the screen.

Downloading and compiling

First of all, download the source code or, if you want the latest version, clone my GIT repository:

$ git clone http://www.ex-nunc.org/projects/pdonadeo/cairo_toy.git cairo_toy.git

To compile the program you need:

  • OCaml (I have version 3.10.2, but probably 3.10.0 or 3.10.1 are ok);
  • Lablgtk2, the OCaml binding to GTK2;
  • the OCaml binding to libcairo.

All these packages are available in any recent Linux distribution; on Debian/Ubuntu:

$ aptitude install ocaml liblablgtk2-ocaml-dev libcairo-ocaml-dev

To compile instruct this command inside the program directory:

$ ocamlbuild demo_toy.native

The code

The program is very simple and is essentially derived from Erik's code: the core is the functor Toy_maker.Make which accepts, as input, a module with the following signature INTERACTOR:

module type INTERACTOR =
sig
  type state
  val init_state : state
  val win_title : string
  val init_width : int
  val init_height : int
  val cmd_line_handler : state -> string array -> state
  val keyboard_callback : state -> GdkEvent.Key.t -> state * bool
  val pointer_buttons_callback : state -> GdkEvent.Button.t -> state * bool
  val pointer_motion_callback : state -> GdkEvent.Motion.t -> state * bool
  val pointer_scroll_callback : state -> GdkEvent.Scroll.t -> state * bool
  val repaint : state -> Cairo.t -> int -> int -> state * bool
end

In this module the user must provide a type state, which contains the application state, some initialization values, a command line handler (in case you need) and 4 event handlers for the following events:

  • keyboard;
  • mouse motion;
  • mouse buttons;
  • mouse wheel event (scroll events in GTK).

The user also provides a repaint function, which takes care of repainting the Cairo context.

As a demo I wrote a simple My_interactor module implementing the following simple features:

  • left click on the gray background creates a new circle;
  • left click inside an existing circle moves it around;
  • right click inside a circle deletes it;
  • the mouse wheel zooms (in and out);
  • middle click is used to pan;

Here is the result.

Yes, it's somewhat dull, but it does its job. Have fun!

Ascoltare Radio Monte Carlo… con Linux

Mi piace ascoltare la radio, specialmente quando programmo. Siccome siedo davanti ad un PC e siamo nel 2008, pretendo di ascoltare la mia stazione preferita, Radio Monte Carlo, usando il mio sistema operativo, cioè Linux (Debian “Sid”, per la precisione).

Purtroppo navigando sul sito della radio faccio fatica ad interagire con il player integrato e poi, visto che uso il browser per provare il software che scrivo, trovo scomodo avere una finestra impegnata ad ascoltare musica.

Così, smanettando un po’, ho trovato la URL da cui proviene lo stream, ascoltabile con MPlayer con il semplice comando:

$ mplayer rtsp://151.1.245.2/broadcast/2

con buona pace della terribile pagina web sul sito.

Buon ascolto…

Holiday!

Next week I’ll be away on holiday, finally! It’s only one week, but better than nothing. I’ll be back on line Monday the 14th of July.

Ciao!

Vacanze!

Finalmente vado in vacanza, per una sola settimana, ma è meglio di niente.

Tornerò on line Lunedì 14 Luglio.

Ciao!

Ritardo Cronico

Sono sempre così preso dal lavoro che non ho mai il tempo di pubblicare su Flickr le (poche) foto che scatto. Con sei mesi di ritardo ho messo on line questa sera quelle di… capodanno!!! Da non crederci. Per la cronaca, si è trattata di una festicciola solo con gli amici più cari, ospitato a Varese da Valeria.

Ho quindi approfittato per fotografare qualche angolo di Varese.

Ad ogni modo per tutti gli interessati le potete trovare qui.

PyCon Due

PyCon2 Italia official logo

Si è appena conclusa la seconda convention italiana dedicata al linguaggio Python, il PyCon2, svoltosi a Firenze lo scorso fine settimana. Pur non essendo un vero pythonista sono comunque interessato a Python perché in questo momento gran parte della mia attività di consulenza richiede la conoscenza di questo linguaggio e, devo dire, perché molto attirato da alcuni key note, tra i quali spicca certamente quello di Alex Martelli su Google App Engine.

Un altro aspetto interessante è stato per me il constatare come molti talk fossero incentrati sulle tecnologie legate al web e siccome sto scrivendo Ex-nunc, un web framework in Objective Caml, ho voluto informarmi su quale fosse lo stato dell’arte di progetti simili scritti in Python.

L’organizzazione della manifestazione è stata a dir poco eccellente. Develer, l’azienda che ha promosso ed organizzato il PyCon2, non ha tralasciato nessun dettaglio, a partire dal sito della manifestazione, dettagliatissimo e ricco di informazioni, dalla scelta dell’albergo centralissimo e raggiungibile a piedi dalla stazione ferroviaria, fino al ricco buffet.

Anche l’organizzazione logistica dei talk è stata di livello eccezionale: ottima acustica e disponibilità di traduzione simultanea per gli ospiti di lingua Inglese.

Infine, magari meno importante, la cornice della città di Firenze è splendida e, seppure immagino sia possibile organizzare un PyCon3 a Sesto San Giovanni, spero davvero che scelgano ancora, l’anno prossimo, una città in cui ad ogni angolo si vedono panorami come questo.

Organizzazione perfetta, argomenti trattati interessanti ed ospiti internazionali hanno fatto del PyCon2 un appuntamento di assoluto rilievo, che non teme il confronto di nessuna manifestazione simile nel mondo. Per il panorama italiano si tratta poi di un fatto del tutto eccezionale anche dal punto di vista culturale, in un paese che di tecnologia parla sempre meno e di software libero non parla affatto.

Copyright © 2004–2014 by .
Creative Commons License Content on this site is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 2.5 Italy License.

Valid XHTML 1.1. This blog is written in Objective Caml. Design based on the work of Rodrigo Galindez.