30 July 2010

GUADEC Day-X

I should have blogged more about it, but I already suck at blogging (I have to improve this), and also the Internet connection was not really working well with my computer at the conference (now I’m using the hotel connection!).

One world: AWESOME.

My first GUADEC, and I’m really enjoying it.

A lot of interesting talks, lots of great people, and also lots of work to do.

We had the documentation workshop the day before GUADEC started, and it has turned out really cool and interesting: lots of people are interested in documentation, users and developers documentation; and this is absolutely great!

We had interesting discussions with the Anjuta developer, the Evolution developers, people from Openismus, and many other I can’t probably even remember the names (apologies for that!).

Phil and I have also been working quite a lot in these days: Phil on the what is going to be the new GNOME users help, me mostly on the Rhythmbox docs.

Today we will have the BoF room at GUADEC for us and we will brainstorm a lot on new topics for the GNOME users help. If you want to help us out, or just to hang around and see how we work, please join us!

Last but not least: there are rumors about having a developers documentation hackfest, probably in Berlin, thanks to Openismus. It’s not confirmed yet, but it would be absolutely great! (I hope I can have days off from work to help out with that too).


29 July 2010

T = T + 24


No, tranquilli, non io :)
Adesso però avrò più tempo per aggiornare questo blog... o forse no? ;)

Using Mash with Vala

Hello,
recently Mash has been released. It is a library for reading models in PLY format and creating Clutter actors from them. For reference, Blender is able to export to PLY. It means you can draw your models with Blender and use Clutter as rendering engine.
Clutter is a 3D canvas and animation toolkit while Blender is a 3D modelling suite.

What I've tested so far is porting the Monkey Viewer C example to Vala: code snippet and monkey PLY here.



That is going to be awesome, stay tuned!

Mipsdis MIPS32 disassembler

Hello,
I've written a MIPS32 (Release 2) disassembler for ELF files. It is not a simple disassembler, it's mostly made for reverse engineering proprietary boxes for educational purposes. It has been successfully tested on Vodafone Station which has Broadcom binaries. These boxes don't have a sections table, therefore normal disassemblers don't work. Mipsdis instead will guess the bounds of those sections (most important ones are TEXT and RODATA for strings).

This console program outputs a friendly assembly code, whose each instruction is commented (comments copied directly from the mips specification). It also features labels for branches and symbol resolution for strings, global variables and functions.

More information and downloads here.

27 July 2010

Non pensavo di farcela

Oggi ho fatto un bel giretto, 10km in 55′ 11”. Un po’ di salita, fino alla Madonna delle vigne, un sacco di bella discesa e un po’ di piano.
Sinceramente non pensavo di farcela e non pensavo di stare così bene dopo una salita che, specie nel tratto da Cesino alla Madonna delle vigne è piuttosto duretta.
Come al solito la mappa dettagliata del percorso:
<iframe frameborder="0" height="350" marginheight="0" marginwidth="0" scrolling="no" src="http://maps.google.com/maps?f=d&amp;source=s_d&amp;saddr=Via+Coni+Zugna,+4,+16164+Genova,+Repubblica+Italiana+(liguria)&amp;daddr=Via+Benedetto+Da+Cesino+to:Via+Benedetto+Da+Cesino+to:Via+Madonna+delle+Vigne+to:Via+Madonna+delle+Vigne+to:Via+Vittoria+to:Via+Vittoria+to:Salita+Bricco+to:Salita+Bricco+to:Via+Adolfo+Lavagetto+to:Via+Adolfo+Lavagetto+to:Via+Adolfo+Lavagetto+to:Via+Adolfo+Lavagetto+to:Via+Vittorio+Veneto%2FSP35+to:Via+Natale+Gallino%2FSP35+to:Via+Natale+Gallino%2FSP35+to:Via+Natale+Gallino+to:Via+Guido+Poli+to:Via+Guido+Poli+to:Via+Isocorte+to:44.497541,8.901284&amp;hl=it&amp;geocode=FYb6pgIdaNKHAClT2IRsIkbTEjFd44Gc7Ho0Zw%3BFYAOpwIdA-KHAA%3BFckUpwIddduHAA%3BFWEdpwIdVNiHAA%3BFZpNpwIdBtGHAA%3BFR1ZpwIdg-KHAA%3BFTRSpwId2_aHAA%3BFcFRpwIdjP6HAA%3BFU5LpwIdRP2HAA%3BFfhMpwIdlvyHAA%3BFXFLpwIdl_qHAA%3BFfhJpwIdlPyHAA%3BFcxIpwIdtP-HAA%3BFZ8-pwIdXQSIAA%3BFeQvpwIdT_6HAA%3BFYQipwIdFPaHAA%3BFVUFpwIdl9qHAA%3BFSX6pgIdjt2HAA%3BFSzzpgIdZt-HAA%3BFbbwpgIdBtuHAA%3B&amp;mra=mi&amp;mrcr=16&amp;mrsp=20&amp;sz=17&amp;via=1,2,7&amp;dirflg=w&amp;sll=44.495411,8.905288&amp;sspn=0.00512,0.013937&amp;ie=UTF8&amp;t=h&amp;ll=44.495411,8.905288&amp;spn=0.00512,0.013937&amp;output=embed" width="425"></iframe>
Visualizzazione ingrandita della mappa

Domani farò un altro tentativo sempre in salita, tutto sommato farò sicuramente più fatica ma oggi senza macchine che ronzavano attorno ho potuto sentire l’odore dell’erba tagliata, il profumo di alcuni fiori e i cani avvicinarsi :-)

24 July 2010

Problemi col file di status di dpkg

Da qualche giorno a questa parte, utilizzando il tasto TAB per l’autocompletamento dei comandi di rimozione dei pacchetti da terminale (sia con dpkg che con apt-get), invece di ottenere il nome del pacchetto ottenevo questo errore:

grep-status: /var/lib/dpkg/status:10414: expected a colon

Provando ad editare il file /var/lib/dpkg/status a mano, non sono riuscito a capire neanche lontanamente quale fosse l’errore, ma ravanando in rete ho trovato un comodo script in perl che ricostruisce da zero quel file. Lo riporto pari pari qui sotto:

#!/usr/bin/env perl

#
# A script to build a new dpkg status file.  Relies on an assumption
# that /usr/share/doc is intact, and that each subdir of that
# indicates an installed package.
#
# This script can be run as a non-root user and creates output files,
# in an unsecure fashion, in /tmp.
#
# Thanks to capink on ubuntuforums.org, and Karsten M. Self.
#

use strict;
use warnings;

my @installed_packages;
my %package_control_info;  # By package, then by file.
my $new_status_file = "/tmp/new-status";
my $new_dpkg_selections_file = "/tmp/new-dpkg-selections";

##
##  Here we populate @installed_packages by examining /usr/share/doc,
##  as suggested by Karsten M. Self.
##
opendir DOC, "/usr/share/doc" or die "failed opening doc dir";
foreach ( grep { -d "/usr/share/doc/$_" } readdir( DOC )) {
 next if ( m/^\./ );
 next if ( m/[A-Z]/ );
 next if ( $_ eq 'texmf' );
 next if ( $_ eq 'debian' );
 push @installed_packages, $_;
}
closedir DOC;

##
##  Now we hash the contents of the control files.
##
my ($package, $control_file);
opendir LISTS, "/var/lib/apt/lists" or die "failed opening lists dir";
while (my $control_file = readdir( LISTS )) {
 next unless ( -f "/var/lib/apt/lists/$control_file" );
 next unless ( "/var/lib/apt/lists/$control_file" =~ m/_Packages$/ );

 open CONTROL_FILE, "/var/lib/apt/lists/$control_file"  or die "failed opening control file '$_'";
 while (my $line = <CONTROL_FILE>) {
 if ( $line =~ m/^(Package:\s)(.*$)/ ) {
 my $package_name = $2;
 push @{ $package_control_info{$package_name}->{$control_file} }, $line;
 $line = <CONTROL_FILE>;
 while ($line !~ m/^\s*$/ ) {
 push @{ $package_control_info{$package_name}->{$control_file} }, $line;
 $line = <CONTROL_FILE>;
 }
 }
 }
 close CONTROL_FILE;
}
closedir LISTS;

##
## Here we create the new status file by printing all the control info
## we have for all the installed packages, as suggested by 'capink' on
## ubuntuforums.org.
##
open NEW_STATUS_FILE, ">", $new_status_file   or die "this sucks";
foreach my $package ( @installed_packages ) {
 while (my ($control_file, $control_info_ref) = each( %{ $package_control_info{$package} } ) ) {
 my @status_info;
 foreach my $line ( @{ $control_info_ref } ) {
 next if ( $line =~ m/^Filename:/ );
 next if ( $line =~ m/^MD5sum:/ );
 next if ( $line =~ m/^Size:/ );
 next if ( $line =~ m/^SHA1:/ );
 next if ( $line =~ m/^SHA256:/ );
 push @status_info, $line;
 if ( $line =~ m/^Package:/ ) {
 push @status_info, "Status: install ok installed\n";
 }
 }
 push @status_info, "\n";
 print NEW_STATUS_FILE @status_info;
 }
}
close NEW_STATUS_FILE;

##
## Here we create a dpkg selections file containing a list of the
## packages we think are installed.
##
open NEW_SELECTIONS_FILE, ">", $new_dpkg_selections_file   or die "this also sucks";
foreach my $line ( @installed_packages ) {
 print NEW_SELECTIONS_FILE "$line install\n";
}
close NEW_SELECTIONS_FILE;

print "\n";
print "New status file created: '$new_status_file'.\n";
print "If it looks right, then:  mv  '$new_status_file'  '/var/lib/dpkg/status'\n";
print "\n";
print "New dpkg selections file created: '$new_dpkg_selections_file'.\n";
print qq|run 'dpkg --get-selections < "$new_dpkg_selections_file"'  to re-create deselect's selections.\n|;
print "\n";

Lo script ricostruisce il file basandosi sui file presenti in /usr/share/doc e lo posiziona in /tmp/, poi basta spostarlo a mano nel posto giusto, col comando che viene suggerito alla fine:

mv  /tmp/new-status  /var/lib/dpkg/status

Con un po’ di fortuna basterà poi un apt-get -f install per calmare le acque e riavere di nuovo un apt-get funzionante.

È importante fare sempre prima un backup del file di status originale, che se le cose vanno storte per qualche motivo, senza quel file son dolori!


23 July 2010

Aggiornamenti sulle mie corsette mattutine

È tanto che non vi tedio con le mie corsette mattutine, non per questo ho smesso di farle.

In questi giorni ero stufo della solita strada, sia perché è la solita strada sia perché, pur non essendo tanto trafficata, i pochi mezzi che passano la mattina presto sono camion da cantiere, avete presente quei robi con tante ruote e un tubo di scarico grosso come lo scarico del water? Quando la strada cambia pendenza e uno di quei mostri arriva e cambia marcia vengo avvolto istantaneamente da una nuvola nera che non è proprio il massimo. Per fortuna questa cosa accade di rado perché normalmente vado a correre veramente presto. Tutto questo mi ha spinto a provare strade alternative che non avevo mai provato perché giudicate troppo ripide per il mio stato di allenamento. L’altro ieri sono andato a Cesino (salita sulla strada e ritorno per sentiero) e oggi sono andato a San Cipriano (salita passando da Prelo e discesa per la strada dell’autobus). Il bilancio è positivo: ho incontrato uno scooter e due auto ieri, una moto e un auto oggi; le gambe hanno retto bene sia in salita che in discesa; il battito cardiaco è sempre rimasto nei limiti; il respiro non era per nulla affannato; inoltre ho recuperato benissimo. L’unico piccolo neo di questi giri è che sono corti, una mezz’oretta di salita e meno di 10 minuti di discesa, sono abituato a correre circa un’oretta.

Il percorso, completo, dell’altro ieri (tutti i punti intermedi li ho messi per disegnare correttamente il tracciato sulla mappa):

<iframe frameborder="0" height="350" marginheight="0" marginwidth="0" scrolling="no" src="http://maps.google.com/maps?f=d&amp;source=s_d&amp;saddr=Via+Ricreatorio&amp;daddr=Piazza+Cesino,+16164+Genova,+Italia+(Piazza+Cesino,+Genova,+Italia)+to:Salita+Grasso+to:Via+Campomorone%2FSP5+to:Via+Martiri+della+Libert%C3%A0+to:Via+Bartolomeo+Parodi%2FSP4+to:Via+Ricreatorio&amp;hl=it&amp;geocode=FQD8pgIdENGHAA%3BFewbpwIdYteHAClpnIfWoUjTEjGwihUpYVekAA%3BFWIhpwIdUvOHAA%3BFZcGpwIdzNKHAA%3BFQQqpwIdsJCHAA%3BFWoipwIdVpmHAA%3BFQD8pgIdENGHAA&amp;mra=ls&amp;dirflg=w&amp;sll=44.50381,8.89667&amp;sspn=0.021548,0.04519&amp;ie=UTF8&amp;t=h&amp;ll=44.50381,8.89667&amp;spn=0.01178,0.02596&amp;output=embed" width="425"></iframe>
Visualizzazione ingrandita della mappa

Il percorso, completo, di oggi:(tutti i punti intermedi li ho messi per disegnare correttamente il tracciato sulla mappa):

<iframe frameborder="0" height="350" marginheight="0" marginwidth="0" scrolling="no" src="http://maps.google.com/maps?f=d&amp;source=s_d&amp;saddr=Via+Ricreatorio&amp;daddr=Via+Ricreatorio+to:Via+Ricreatorio+to:Via+Natale+Gallino+to:Via+Natale+Gallino%2FSP35+to:Via+Paolo+Gennaro+to:Strada+sconosciuta+to:Via+Domenico+Carli+to:Via+Giuseppe+Cassissa%2FSP70+to:Via+Domenico+Carli+to:Piazza+Giuseppe+Arimondi+to:Ponte+Ludovico+Patrizi+to:Via+Fiorenzo+Semini+to:Ponte+della+Forestale+to:Lungo+Polcevera+to:Via+del+Casone+to:44.497923,8.900909&amp;hl=it&amp;geocode=FQD8pgIdENGHAA%3BFQD8pgIdENGHAA%3BFd7_pgIdWtKHAA%3BFesIpwIdJuCHAA%3BFWUnpwIdOf-HAA%3BFTggpwIdiwSIAA%3BFVD6pgIdhf6HAA%3BFRn_pgId9gCIAA%3BFYDvpgIdHAGIAA%3BFRPupgId7PKHAA%3BFa_ypgIdft6HAA%3BFSTxpgIdutuHAA%3BFfzXpgIdEsqHAA%3BFbrWpgId886HAA%3BFZLxpgId_N-HAA%3BFaT4pgIdNtiHAA%3B&amp;mra=mi&amp;mrcr=15&amp;mrsp=16&amp;sz=17&amp;dirflg=w&amp;sll=44.495602,8.90355&amp;sspn=0.005388,0.011297&amp;ie=UTF8&amp;t=h&amp;ll=44.495602,8.90355&amp;spn=0.005388,0.011297&amp;output=embed" width="425"></iframe>
Visualizzazione ingrandita della mappa

20 July 2010

Murrine 2.0?

What would you like to see in a Gtk+ 3.0 engine?

This blog post is the right place to discuss your dreams :)

16 July 2010

Prague 17th-24th July

I’m just packing for Prague, I will be at the Ubuntu Platform Sprint to work on a lot of exciting things you’ll love.

Stay tuned ;)

12 July 2010

One-Hand Writing

Sweating and sweating, I’m trying to get this post out… it’s 12 days that I can only use one hand: I dislocated my right shoulder, and will be like that for the next few days, wearing this tutor thing that keeps my arm blocked, and keeps me very well warm (not that in this period I needed that…).

But I’m not writing for that, I’m writing for this:

Yeah, the Ubuntu for Non-Geeks: 4th Edition.

I think it is better if I leave you to our own Phil Bull blog post describing the book, since he’s one of the author:

http://philbull.livejournal.com/55089.html

I had the opportunity to read the book while I was reviewing it (thanks to Phil that mentioned my name to someone!), and I have to sat that it is a very well written book, easy on you. A worth read if you are moving your first steps in the Linux and Ubuntu world. Spread the voice, it’s a really good book!

Oh, and by the way, I’ll be at GUADEC! (I’m really looking forward to my first GUADEC!) And remember, we are holding a documentation workshop on Tuesday the 27!

A big thank goes to the GNOME Foundation!

(Time taken to write this blog post: almost 20 minutes…)


11 July 2010

Un tranquillo week-end di volo

Questo fine settimana è passato all’insegna del volo.

Venerdì ho fatto uno stupendo volo in Pizzorne, 46 minuti di permanenza in aria raggiungendo i 1250m sopra l’abitato di Matraia.
Più su di quella quota non si poteva andare, come confermava anche lo strato di inversione che, visto di taglio, diventava improvvisamente visibile, ma lassù l’aria era calmissima, si stava su anche senza intervento sui comandi, e ne ho approfittato per lasciarli e riposare un po’ le braccia. La temperatura era gradevolissima. Nel complesso, una sensazione  meravigliosa di pace e rilassatezza che da sola mi ha ripagato degli altri viaggi fatti a vuoto.

Sabato di nuovo in Pizzorne, stavolta poco più che una planata ma comunque divertente.

Oggi abbiamo provato ad andare a Prato Fiorito (ma una volta si chiamava Campo Minato anche quello?), ma l’aria era troppo instabile e carica di umidità, i cumuli sono diventati nembi e ci hanno impedito di volare.
Se non altro siamo stati un po’ al fresco ed abbiamo visto un bel posto, ci si volerà la prossima volta.

Prato Fiorito - decollo alto

Per finire, siamo andati in un campo a lanciare il paracadute di emergenza di Giancarlo, in vista della ripiegatura periodica. Abbiamo scoperto che tra lanciare o tirare l’emergenza, è più faticosa la seconda :D


9 July 2010

Custom ringtones for your contacts

Yesterday I finished implementing the first release of a new program (ringtoned, i.e. ringtone daemon, i.e. I don’t have any imagination for program names) that allows setting a custom ringtone for specific contacts. Ringtoned tries to integrate nicely with the system:

  • You can select the default ringtone in Settings → Profiles as usual
  • To set a custom ringtone you go to the Contacts application, select the contact and press the new “Set custom ringtone” button in the menu
  • The dialog to set custom ringtones tries to be a perfect copy of the dialog to set the global ringtone
  • It works both for normal phone calls and GTalk/SIP/Skype calls, thanks to Telepathy
  • The ringtone is played only when the normal one would be played and at the same volume, thanks to some PulseAudio magic

Ringtoned also tries not to break your phone, if for any reasons it crashes the default behaviour should be restored. Nevertheless, this is just version 0.1, so it could be full of bugs and could make you miss phone calls. You have been warned! Moreover, replacing the default ringtone components with something more complex could make the ringtone start slightly later in case of heavy load, see my previous blog post. You have been warned again!

If you still want to give it a try, ringtoned is now in Maemo extras-devel under the name “Custom ringtones for your contacts”. If you don’t want to add the extras-devel repository (as it contains a lot of unstable software), you can download ringtoned directly from my personal repository:

Install per-contact-ringtones
Install from my personal repository
(follow the link on the N900 browser)

If you are interested in the source code, it’s in Collabora’s git repositories.

The are two major features that are missing at the moment: the ability to set a custom ringtone for anonymous phone calls and for calls from an unknown number, and the ability to set ringtones for groups and not only for single contacts. The former feature should be easy and it mainly just requires some UI, so it will be hopefully implemented shortly.
Groups are more difficult to implement because they are not supported at all by the Maemo address book; I would first have to implement support for groups and then add ringtones for the groups. I hope to be able to find time for this, but I cannot guarantee anything.

In a future post I will explain the architecture of ringtoned and how to extend it: the code that chooses the custom ringtone is actually just a small plugin of the ringtone daemon and it’s possible to write other similar plugins for different needs.

7 July 2010

How hard can it be? (Or why you don’t have custom per contact ringtones on Maemo)

Often in blogs, forums or IRC you can find people complaining of missing features in some programs (and some of them are very rude). While they can be right some times, other times they just make me angry because they don’t know how difficult writing software can be, and they don’t understand the difference between a semi-working prototype and a proper stable application written by professional developers, designed by professional UI designers and tested by professional testers.

Implementing some features can actually be quite difficult and it could be better to skip those from your product and focus on other things; on the N900 one of these missing features is the ability to set customised ringtones for specific contacts.
Several people wondered how hard it can be, after all a lot of old phones do it. What they don’t consider is that, in many ways, the N900 is not a traditional phone and is more similar to a small computer. On the other hand, the N900 still needs to be reliable to be certified as a phone; for ringtones this means that the ringtone should be played as soon as the phone call is received, or the user could miss it.
Now suppose your N900 is under heavy load due to multitasking (real multitasking, like on a normal computer) and you receive a phone call from a friend; being a close friend that often calls you, you have an MP3 ringtone set just for him. The phone has to look up for the contact corresponding to the phone number, load the file from the (slow) memory card, load the libraries for playing the ringtone, uncompress the file, and finally play it. All of this on a phone under heavy load with most programs swapped out of memory!
To workaround this problem the N900 seems to do some tricks: the ringtone is uncompressed into a (big) WAV file and saved on the faster (but small) internal memory, and the component playing the ringtone is memlocked (i.e. never removed from memory). Of course, you cannot do this for all the possible ringtones or the already small disk space would be used immediately. Choosing not to uncompress the files, on the other hand, would mean keeping loaded in memory all the possible codecs.

Does this mean that it’s impossible to have a different ringtone for a specific contact on Maemo? No, it just means that if you want it you have to be ready to accept that the ringtone could start playing a couple of seconds later in some uncommon heavy load conditions. When you are ready to do that you just have to wait a couple of days, so that I can polish and publish the program I wrote to have custom ringtones :D

In other news, I’m going to GUADEC for the whole week: see you there!

I'm going to GUADEC

17 June 2010

Finalmente...

Un tocco di Design in questo rude blog....

18 May 2010

GAliceSms v.1.70

Il piccolo script grafico per l’invio degli sms gratuiti previsti dagli utenti con contratto Telecom-Alice è stato recentemente aggiornato alla versione 1.70. Le recenti modifiche effettuate da Telecom sul portale hanno infatti imposto la completa riscrittura delle procedure di accesso e di controlli.

Sulla pagina web dell’applicazione sono disponibili tutte le istruzioni per l’installazione e l’uso. In particolare, essendo l’applicazione scritta in Perl, sarà necessario aggiungere i seguenti moduli:

LWP::UserAgent
HTML::Form
URI::Escape
Crypt::SSLeay

Gli utenti ubuntu/debian potranno soddisfare tutti i pre-requisiti del programma installando i seguenti pacchetti:

sudo apt-get install libcrypt-ssleay-perl libwww-perl liburi-perl

Il programma può essere scaricato da questo indirizzo.


1 May 2010

Better Software Playlist

Alfredo Morresi and Piergiorgio Grossi, two of the other bloggers invited at the Better Software conference, published their schedule of the talks they want to attend to so I thought it’s about time I’d do the same.

Better Software is split in three parallel tracks with a lot of speeches. The name of the tracks are self-explanatory: Auditorium, Workshop, Interactive.

So, here is my schedule:

5th of May

09:00 – Application Store, potenzialità e trappoleStefano Sanna will talk about the new distribution (and hence business) model introduced by the application stores of the various smartphones vendors.

09:50 – Sviluppare e vendere applicazioni per iPhoneOmar Cafini will give an overview on application development for the iPhone and how to actually sell those apps on the store.

10:25 – Una storia di SW dai protocolli alla startupLeandro Agrò will retrace the steps of the creation of the company WideTag

11:35 – Playing between the CloudsDaniele Montagni, Davide Cerbo and Stefano Linguerri will show the crowd how to create a “hybrid” application using technologies like XMPP, Google App Engine, the iPhone and the Android.

12:10 – Startup Web in Italia. Si può fareAndrea Santagata’s talk will be focused on his experience as an entrepreneur and manager and how to create a startup business in Italy.

14:00 – Alcune lezioni che ho imparato negli ultimi due anniGiacomo “Peldi” Guillizzoni will talk about Balsamiq. The company, his experience and his suggestions.

15:55 – Crowdfunding, finanziare un’idea con il WebAlberto Falossi will give his take about funding an idea with the help of the people on Internet.

16:55 – Web crawling for fun and profitFederico Feroldi will talk about how cloud computing helps companies retrieving large quantity of data.

17:45 – Sviluppare Applicazioni Mobile Native in HTML e JavaScriptFabio Franzini will raise the attention on how to develop mobile applications using standard technologies like HTML and JavaScript.

6th of May

09:00 – Agile Lean Development, a war storyFabio Armani will talk about his experience as an engineer and a manager with Scrum, XP and Lean.

09:50 – Lavorare da remoto, le ragioni di una scelta vincenteRenzo Borgatti will share his experience of working remotely in a distributed team.

10:25 – Agile tricks, keep the moral of your team highGiovanni Intini will explain how to encourage developers to improve and maintain an high quality standard of the source code using small tricks, continous integration and more.

11:25 – Agile and QA… ma che ciazzecca?Stefano Fornari will introduce the role of the QA tester in an agile team.

12:15 – Qualità TotaleJacopo Romei will talk about defects in production software and how to handle them in an agile process.

14:00 – Coaching WorshopMatteo Vaccari and Simone Casciaroli will explain in their workshop the role of the coach creating a team and sharing responsibility with fellow developers.

15:10 – Alla ricerca della user story perdutaEdoardo Schepis’s user stories will lead the workshop attendants through and to the creation of a search engine starting from the following single story: “As a user I want to search Internet for the information I need”.

17:20 – WorseSoftware: errori e orrori nel business del softwareLuca Mearelli will take us down to the path of software horrors to shed some light upon the worst and best practices of software development.

7 April 2010

New logo

New logo, courtesy of Henry Peters.

New gedit logo

As announced by nacho, we have been looking for a new logo for a while. We had many interesting submissions and iterated through a couple of designs, borrowing ideas here and there. Thanks to all those who sent us their work!

Not only the new logo is already committed, but you can even wear it :)

1 April 2010

La Corte Costituzionale approva l’Open Source: respinto il ricorso del Governo

Lo scorso anno il Governo, attraverso l’Avvocatura dello Stato, aveva sollevato una questione di legittimità contro una legge della Regione Piemonte atta a favorire l’uso di software libero e standard aperti nel territorio.

Il 22 marzo scorso, la Corte Costituzionale ha dichiarato non fondate le questioni sollevate dal Governo, rigettando il ricorso. Riporto di seguito il paragrafo conclusivo della Sentenza n. 122 della Corte:

Infine, si deve ancora ribadire che i concetti di software libero e di software con codice ispezionabile non sono nozioni concernenti una determinata tecnologia, marca o prodotto, bensì esprimono una caratteristica giuridica. In sostanza, ciò che distingue il software libero da quello proprietario è il differente contenuto dell’accordo negoziale (licenza), posto a fondamento della disciplina dei diritti di utilizzazione del programma; e la scelta circa l’adozione dell’uno o dell’altro modulo negoziale appartiene alla volontà dell’utente.

Ne deriva che la lesione della concorrenza, paventata dalla difesa dello Stato in relazione alla normativa de qua, non è configurabile.

Il Governo aveva sollevato la questione di legittimità sostenendo che la legge sul software libero della Regione Piemonte avrebbe interferito con le leggi nazionali sulla concorrenza e sul copyright. Con la citata sentenza, invece, la Corte ha stabilito che la preferenza per il software libero è legittima e rispetta il principio della libertà di concorrenza.

Ogni tanto, seppur ancora troppo saltuariamente, qualcuno si solleva dal torpore…

.


3 March 2010

Blogging @ Better Software 2010

Monday I received a wonderful news: I’ve been invited as a guest blogger at the Better Software 2010 conference in Florence, the 5th and 6th of May.

Better Software is a national conference about the business of software, project management, development, agile, web 2.0. opensource and more. I’m really looking forward to attend. The conference program is rich and full of talks I’d like to listen to such as talks about iPhone development, OpenSpime, augmented reality, real world project development experiences, cloud computing, the business of startups in Italy, Balsamiq, user experience design and much more. I’ll have to multiply myself :-)

I’ll cover the conference here on this blog and hopefully in realtime on my Twitter account.

25 January 2010

gedit 2.29.5

I just rolled the tarball for the next development release of gedit. This release marks an important milestone, since we completed all the goals we had on our roadmap for 2.30.

In particular this release overhauls the internals of I/O handling in gedit by always using gio for file loading and saving (we only used gio for saving remote files) and by taking advantage of the new data conversion api added by Alex.

For the casual gedit user these changes should be pretty much transparent, since they do not introduce new features except for the ability of forcing different line endings (Window’s CRLF, old MacOS CR and the usual UNIX LF). However since they are affecting one of the most important parts of the gedit codebase we would like to ask anyone running the development version and in particular who uses files with encodings different from UTF-8, to heavily test file loading and saving  and report any problem or regression.

18 January 2010

Long time no blog

Hi there! It’s been a long time since I last wrote something on this blog, which reminds me how many things have happened in my life in the last year and a half.

As some of you might know, I’ve been working part-time for Collabora (on Empathy), helping fixing misc bugs and implementing nice things like file transfer, the accounts dialog user interface and the transition to the Mission Control 5 framework.

In the meanwhile I kept myself busy with my university and finally, last week, I took the last exam of my course! This means I’ll hopefully graduate on April :) Since November, I already started digging into my thesis, which will be aTelepathy implementation of the XTLS protocol, an end to end solution to crypt communication over XMPP.

In order for Telepathy to support channel encryption, some new interfaces need to be written. I drafted some proposals for this on the telepathy mailing list in the last few months, and I’m happy that Eitan Isaacson picked them up and turned them into something more concrete. In order to discuss with him and the rest of Collabora about the proposal, I’ll visit the Cambridge office at the end of the month, right in time to attend FOSDEM and the XMPP summit together with the Collabora gang.

After that, the items on my TODO list include:

  • draft a proof-of-concept implementation of the XTLS handshake into Wocky(I already started coding for this before I had to stop for my exams).
  • make sure the new Telepathy interfaces work fine in telepathy-glib
  • implement the interfaces into Gabble.

Hope to see you all in FOSDEM :)

12 December 2009

Essere inglesi

Mettersi a litigare all’una e mezza di notte per decidere se la fila per i taxi deve andare da sinistra verso destra o da destra verso sinista.

11 December 2009

Lacrime

Ho quasi le lacrime agli occhi

Pur non avendo due monitor.

UPDATE: Leggendo il commento #81 sembra comunque che non sia ancora possibile selezionare immagini diverse. Aspettiamo ancora un po’…

Technorati link icon ,


8 September 2009

Old Before I Die

lease

è un mese che non faccio che pensare a questa strip di xkcd.

oggi abbiamo ricevuto il via libera (preliminare) al mutuo.

mi sento improvvisamente buttato in mezzo a eventi che non posso controllare — il tutto condito dal fatto che altri colleghi non sposati e più giovani del sottoscritto hanno già preso/stanno prendendo casa. non solo vecchio, ma pure underachiever.

16 August 2009

Space…

… the final frontier

le notti insonni che ogni tanto mi capitano vengono di solito messe a frutto recuperando serie tv che non sono riuscito a vedere. l’altra notte ho recuperato Castle1. questa notte ho recuperato i primi tre episodi di Defying Gravity2.

il fatto che venga marketizzato come Grey’s Anatomy in space sarebbe ragione bastante per crocifiggere i responsabili intorno al VAB. fortunatamente, dell’hype ho imparato a fregarmene in tenera età, quindi non mi sono lasciato abbindolare.

la storia, dopo tre episodi, sta cominciando a prendere forma. devo dire che la parte di esplorazione spaziale mi ricorda molto Virtuality3 con due principali differenze:

  • nello show di Ron Moore gli effetti speciali erano migliori
  • nello show di Ron Moore c’era Clea DuVall

la differenza numero uno porta ad alcune interessanti4 considerazioni su quanto una serie di fantascienza debba lavorare per evitare che la mia funzione suspension of disbelief non venga obliterata dalla magica funzione it’s fucking science, bitches5.

la differenza numero due è mitigata dalla presenza di un cast di volti noti di serie tipo: Reaper, Dead Like Me, Band of Brothers, Arrested Development.

sinceramente, sono in attesa. dato che si tratta di una serie da 12 episodi voglio vedere dove andrà a parare prima della metà, per esprimere un giudizio. la verità è che sono così in bisogno di una serie di hardcore sci-fi che qualunque metadone andrebbe bene.

  1. di cui parlerò un’altra volta — per ora bastino: Nathan Fillion, Stana Katic, procedurale
  2. obligatory Wikipedia page per chi non ne ha mai sentito parlare
  3. seconda obligatory Wikipedia page
  4. e per “interessanti” intendo “cringe-worthy
  5. ovvero: se mi dici che gli astronauti sono attaccati al pavimento da nano-fibre che creano il velcro più naturale dell’universo, va bene: ti credo. non mi puoi, però, far vedere oggetti che chiaramente seguono traiettorie da presenza di gravità — specialmente se cinque minuti prima hai messo in piedi una dimostrazione di assenza di gravità che sarà costata i suoi bei soldi in CGI

25 May 2009

Dear lazyweb

Well, not so lazy… I’ve spent a couple of hours looking into this but didn’t find a solution.

Is there a way to set default size of a widget (or better just of a GtkDrawingArea) without limiting its minimum size?

It seems that the only way to have a drawing area of the size I’d want is to set a size request.

Thanks!

12 March 2009

Cribbio...

Stavo giusto guardandomi in giro per fare una bella patch a Nautilus, integrando il menù così come l'ho pensato e descritto nel post "Mockup, Gtk e Clutter".Ho installato jhbuild e mi sono scaricato/compilato l'ultimo Nautilus da svn; sgrufolo nel codice e trovo quello che fa per me (esattamente i file che si occupano di popolare/gestire il contenuto del GtkTreeView contenente i bookmark di

10 March 2009

Mockup, Gtk e Clutter

Che dire.... è un pò che non scrivo, ma prima per il lavoro, poi per l'organizzazione del mio matrimonio, non ho mai molto tempo!Comunque, sgrufolando come al solito in giro per internet, mi sono imbattuto in questo interessante mockup:Molto carino, non c'è che dire. L'unica cosa che mi pare veramente strana è stata l'idea di utilizzare Clutter per creare un menù di questo tipo.Ora, io adoro

20 February 2009

12 January 2009

HP Support: FAIL

Hey I’m back on planet gnome isn’t it cool? Many thanks to Lucas and Jeff!

Some of you may already know that I’ve been laptop less in the past three months. Since about mid September display started to behave odd: it randomly turns off the lamps until I close and reopen the lid, then after about half a minute it turns off again, then again on, and so on. Sometimes it even starts blinking like a crazy stroboscope :D .
Long story short, here is a little video of the crazy display. Awesome, isn’it?

Unfortunately this little issue is a bit difficult to reproduce, sometimes it does it the whole day, and believe me, it’s quite irritating, sometimes it doesn’t for several days… Sometimes it does it only early in the morning (cold lamps?).

I contacted HP Support and they argued it could be a motherboard issue.
A motherboard issue, at least in Italy is under a 2-year pick-up-and-return warranty.
So they sent it to their repair center (actually an external one: A-NOVO Italia, Saronno) and sent it back after about two of weeks with a nice HP headed sheet stating they didn’t find any issue at all and just restored the operative system (a laptop coming with a motherboard issue and they did just that?). They also installed and ran a couple of benchmarks and other test software that said everything was ok, and I guess nothing more.

Guess what… display started blinking again 2 days after.
I contacted again HP, already a bit upset, I talked with another technician and he said his colleague was surely wrong. I had no motherboard issue but just some lamp or hinge one. It was covered by one year warranty with the producer and one with the seller.

Ok, I then went to the seller and told them about the previous story.
They sent the laptop to the very same repair center with a long description saying that it was a bit an unpredictable issue, that it was just been there some week before and suggesting to test it carefully this time. It was the December 1st.

Three days ago I was called to take back the laptop. Same HP headed sheet, all tests were successful, no issue found. Oh, they did a BIOS update, damn you receive a laptop for repair twice with the very same issue and you just run some test and do a BIOS update? Seriously, a BIOS update?!

Needless to say screen started blinking again soon. You can see it in that video taken a couple of hours ago and I can see it in front of me right now.

I don’t know if I feel more upset or frustrated… still I cannot believe how a repair center can suck this way… they didn’t even try to replace the lamps! they didn’t even unmount the display to check the cables!

15 July 2008

MediaManager, week 7

Hi everyone,

Last week I have been to Istanbul, to attend GUADEC. It has been an amazing time there, and I have been really happy to meet, socialize and share ideas with the other SoC students and some of the GNOME gurus :P

Together with Bastien, Clemens and Felix, we planned the next final steps for the MediaManager project. Also, it seems that Felix’ project (Cheese integration) will be one of the first clients to use my MediaManager library to expose cool features in the GtkFileChooser! :)

== Work to be done ==

- Write a set of widgets wrapping around the backend code
- Write a GtkModule that hooks up into the GtkFileChooser to achieve my ultimate SoC goal of integration with it.

== Timeline ==

I don’t know how much work I will be able to do in this following week until the 23rd of July, as I’m having some exams in this timeframe. Anyway, afterwards I’ll be home until the 10th of August at least and working again full-time on the project, so I came up with this plan, which would be perfectly synced with both the SoC timeline and my holidays :)

- 24th of July to 31st of July, writing of the widgets
- 1st of August to 5th of August, writing of the GtkModule
- 6th of August to 10th of August, final bugfixing & release

Feel free to mail me for any suggestions on the widget part or if you think your application needs some specific widget to use my library. I will start coding them in the next week, so there’s still time for thinking/designing.

29 June 2008

19 October 2006

1 October 2006

happy birthday ( + 3 )

I'm re-loving this CD, I think that the band itself is one of the best ever.

Anyway, as a not-so-late birthday present, we finally have compiz+AIGLX goodness on Debian. Honestly I was quite WTF, and so I have been for ages, seeing everyone being able to use such things before I could, but now, officially:

compiz + AIGLX work ( almost ) out of the box on Debian / MacBook

Just append:

Option "AIGLX" "true"

to the ServerLayout section, and, for better performance:

Option "AccelMethod" "XAA"

to the Device section.

What pisses me off is that "we have a metacity compositor" which is not working and there are lots of forked compositors and none integrates nicely with anything, even if compiz's GNOME integration doesn't suck.

Still, configuring the keybindings is deep pain and non-trivial through GNOME. At least compiz has a ( pluggable ) gconf backend. At least.

For what still concerns Debian, i've filed two ITP's as Riccardo kindly forced asked me to do, and as it's said, they just need an upload.

Elsewhere, I've turned 19 the 28th September. Happy birthday to me.