 |
Welcome to my blog about GNOME and free software in general.
On the same topic I have a blog in Italian.
One of my hobbies is cooking, so I have a cooking blog in Italian at
TarteTatin.it. |
In a few days I will go to the first Maemo Summit in Berlin where I will give a talk explaining how Telepathy works, how the different components interact and how to use tubes for arbitrary data transfer, useful for instance for playing games with chat contacts or to view a contact’s desktop using VNC. So, if you are in Berlin, don’t miss my talk on Saturday at 15:30! Also, don’t miss Pierre-Luc Beaudoin’s talk on WebKit at 16:30!
My slides are almost ready (I will post them here after the summit) but I still have some OO.o-related problems, does anybody know how I can transform a linked image to an embedded one in Impress?
I find it’s quite annoying that when you drag an image to a presentation it’s linked and not embedded, is there an option to change the default behaviour?
September 16, 2008 - 2 Comments »
Can someone please explain me why the British railway system is as bad as the Italian one but much more expensive?
August 26, 2008 - 13 Comments »
Stuart: Pierre-Luc Beaudoin and Alp Toker implemented video support in WebKit GTK using GStreamer months ago, but probably (I never tried it) it needs some more love before being fully working.
July 31, 2008 - 1 Comment »
When you use a VCS that makes it easy to manage several braches, it’s easy to get conflicts in the .list file used to generate the C marshallers. I recently fixed this problem in WebKit stealing some code used at least by various Telepathy components and by avahi-gobject, and I want to share the solution so every project can benefit from it.
First of all you have to open your Makefile.am and move the myproject-marshal.list file from EXTRA_DIST to BUILT_SOURCES and add somewhere in the file:
myproject-marshal.list: $(myproject_SOURCES) Makefile.am
( cd $(srcdir) && \\
sed -n -e ’s/.*myproject_marshal_\([[:upper:][:digit:]]*__[[:upper:][:digit:]_]*\).*/\1/p’ \\
$(myproject_SOURCES) ) \\
| sed -e ’s/__/:/’ -e ‘y/_/,/’ | sort -u > $@.tmp
if cmp -s $@.tmp $@; then \\
rm $@.tmp; \\
else \\
mv $@.tmp $@; \\
fi
Then remember to remove the myproject-marshal.list file from your VCS (svn/git/hg/bzr rm).
The code will search for all the functions looking like myproject_marshal_RETTYPE__ARG1TYPE_ARG2TYPE and generate the myproject-marshal.list from them, regenerating automatically the list when you change a signal signature.
Update: fixed the blackslashes in the code that were misteriously eaten by WordPress.
July 31, 2008 - 1 Comment »

Doesn’t this look like the GUADEC t-shirt?
GUADEC was great and talks turned out to be more interesting than what I was expecting after all the decadence discussions, this is also proved by the fact that I managed to stay awake during all the talks despite having a party every day
. Being in an awesome city with wonderful food[2] helped a lot for the final result, this is why I’m so happy that Gran Canaria was chosen for the next GUADEC.
In Istanbul I finally met other people working on WebKit or on related projects and had a chance to discuss with them about the future development of WebKit. While meetings on IRC are useful and allow you to talk with people from everywhere, real life meetings give you a much more efficient channel of communication: how about a hackfest for people working on WebKit, FireFox and desktop programs using them?
[1] Actually I came back to Cambridge ten days ago but, as usual, I fail at writing blog posts at the right moment, I wanted to write this on Sunday but my flight was moved to Monday and then real life started again. [Insert here other childish excuses for being so lazy]
[2] I’m already experimenting some Turkish recipes, Collabora people in Cambridge should expect a Turkish dinner really soon.
July 25, 2008 - 1 Comment »
The Empathy team is proud to announce you that the next release of our fantastic instant messaging client will use tabs for both accounts and groups. This important change will bring Empathy closer to GNOME 3.0 following the path of other popular applications, like Totem, Banshee and gcalctool.

See bug #542675 for more details.
July 12, 2008 - 36 Comments »
What the release team just announced sounds like a good plan for Gnome 3.0 and also a good strategy for other future major releases. Kudos to them and to the GTK+ developers!
I’m sure that they will give us more details soon both on the planet and on the relevant mailing lists.
Hurray for Gnome 3.0!
July 10, 2008 - 5 Comments »
I’m blogging from my n810[1] while having breakfast, in a hour I will be on a train to Heathrow, destination: Istanbul. See you all at GUADEC!
[1] Having a real keyboard is fantastic, but how do I insert the angular brackets?
July 3, 2008 - 3 Comments »
After my desktop computer died over a year ago I have had no space for mp3s on my hard disk, so I only used the music on my mp3 reader.
A week ago I was able to free some gigabytes of disk space and finally I put my music back on my computer. The first problem I faced was choosing a music player, after some testing the only two competitors were Banshee and Rhythmbox. In the end I chose Banshee, but I have to say that this was a completely subjective choice as both programs are nice and have almost all the features I wanted.
Then I decided to cleanup a bit my mp3s removing duplicates. This is a “once in your life” task, so I didn’t want to spend hours finding a suitable program, understanding how it works and tweaking it: I just needed something that worked without too much hassle.
The first program I found was DupeMusicMatch, you just have to run it passing on the command line the directories where your mp3 or ogg files are and "-r" for a recursive search. DupeMusicMatch just works, it seems to finds some false positives but it seems also able to find duplicates if the file names differ a lot. Thanks Todd Korody for your easy to use program!
July 1, 2008 - 1 Comment »
Why I love icecream:
$ (time make) 2>&1 | grep real
real 21m52.649s
$ make clean > /dev/null
$ PATH=/usr/lib/icecc/bin:$PATH
$ (time make) 2>&1 | grep real
real 8m15.954s
Note that about 4 minutes are spent linking the program, not compiling.
And then, while waiting, you can watch the hypnotic icemon showing where your source files are being compiled:

May 19, 2008 - 1 Comment »
Today Adobe released a beta version of Flash 10, from the realease notes:
“Ubuntu OS Support — Flash Player 10 now supports Ubuntu, one of the most popular flavors of Linux.”
- “Ubuntu OS”?

- Previous versions of Flash already work on Ubuntu
- How can you say that you support a .deb-based distro if you only release a .tar.gz and a .rpm?
The bad news is that it crashes both WebKit GTK and QtWebKit. This is a perfect example of why I don’t like closed source software, it isn’t because of political reasons but because interoperability with it is hard: you don’t have any simple way to understand what it’s wrong and it’s impossible to fix it.
May 15, 2008 - 14 Comments »
A picture is worth a thousand words:

Flash plugin in the WebKit GTK demo application

Flash plugin in the WebKit Qt demo application
Since a few hours ago both WebKit GTK and Qt support plugins! Thanks to everyone who worked on this, in particular to Rodney Dawes (who wrote the original patch in the past months) and to Marc Ordinas i Llopis (who maintained the patch and worked on the Qt port, and who recently joined us at Collabora). A thank you also to Alp Toker and Simon Hausmann who reviewed the patch.
Update: See also Marc’s blog for details.
May 2, 2008 - 19 Comments »
$ history|awk '{a[$2]++ } END{for(i in a){print a[i] ” ” i}}’|sort -rn|head
368 cd
355 l
274 git
231 vi
131 u
130 q
101 find
94 time
86 grep
79 svn
Some clarifications:
- “
l” is an alias for “ls -lhA --color”
- “
u” is an alias for “cd ..”
- “
q” is an alias for “exit” (I also use CTRL-D for that)
- “
time” is there because I use “time make” to see how much time I need to compile things
This blog post was brought to you by the huge time required to link WebKit (I want gold as the default linker!)
April 11, 2008 - No Comments »
“People who open a blog should be identifiable and they should ask people writing comments to be identifiable too.”
– Maurizio Gasparri, from punto-informatico.it
Do I have to use my passport every time I write a comment on a blog? And what do I have to do if the server is hosted in another country?
The sad thing about this is that Gasparri is not just a random ignorant politician: he is the former Italian Minister of Communications, and maybe also the next one as his party is probably going to win the elections on Sunday.
Speaking of which, yesterday I watched a report on BBC about Italian elections and now I’m very sad
.
April 11, 2008 - 3 Comments »
Dear LazyWeb,
Every time I log into GNOME I have to disable the “Allow to control the pointer using the keyboard” option in “Keyboard Preferences” if I want to be able to use the numpad on my external keyboard. Why disabling it once is not enough? How can I permanently disable this option?
April 9, 2008 - 9 Comments »
Matthew is leaving the house to move to London:


I wonder why I took a OS/2 Warp box (21 floppy disks + 14 for the bonus pack), a KDE bag and a linux.conf.au 2007 bag…
March 29, 2008 - 1 Comment »
The LazyWeb was not that useful but I was able to find a plugin that does what I need. It is listed in the plugins page on xchat.org but for some reasons I didn’t find it the first time I searched.
The notify channels plugin has every basic feature I need, and it’s also simple enough to be modified adding some other useful features I would like to have.
Thanks Vlad!
Update: the plugin doesn’t work anymore, xchat-gnome doesn’t load it even if it’s listed in the gconf key /apps/xchat/plugins/loaded. The plugin is not even listed in the “Scripts and Plugins” tab in the preferences dialog. Suggestions on how to fix this?
March 16, 2008 - 2 Comments »
Dear LazyWeb,
Is there a way to get a notification pop-up every time someone says something in some IRC rooms? But only in some configured rooms! I don’t want a pop-up for every message in every room as I’m paid to work, not to read IRC.
I’m using xchat-gnome and no, I don’t want to use xchat.
March 15, 2008 - 8 Comments »

King’s College Chapel by Jonathan Rawle. License: 
More King’s College Chapel pictures on flickr
Sorry Alban, next month we will swap desks
.
March 12, 2008 - 8 Comments »
Everyone on Planet GNOME is starting a new job, so now it’s my turn: tomorrow I will move to Cambridge (this Cambridge, not one of the other ones) where I will work for Collabora.
It’s sad to leave so many friends here but I will work on cool technologies like Telepathy, Cambridge is very nice (the office is just in front of King’s college), and everyone at Collabora seems nice.
March 4, 2008 - 2 Comments »
Today Emanuele and I defended our thesis (but the graduation ceremony will be on Friday)! 
The topic of the thesis was the Telekinesis project, a system to easily transfer files on a LAN without having to configure a Samba share or something similar. The project is based on the Telepathy framework, Empathy and telepathy-salut, a connection manager for serverless instant messaging in local networks which discovers automatically available contacts using Avahi. Despite being based on instant messaging programs you don’t have to rely on the chat to send/receive files thanks to nautilus-sendto and to the modularity of Telepathy.

Sending a file with nautilus-sendto
An important requirement for the thesis was to develop a secure system: other users should not be able to intercept the files you are sending and they should not be able to pretend to be someone else. This is hard to achieve without relying on a certification authority or something similar, so we decided to use an SSH-like system where it is the user’s responsibility to decide whether to trust or not the other contact.
This means that contacts that support secure chats and file transfers will be considered untrusted and identified in the user interface with the “security-medium” icon. When the user decide that a contact’s identity can be trusted (by chatting online or directly as you are in a local area network and maybe you’re both sitting in the same room) he marks him as trusted and, from that moment on, the system will check the contact’s credentials (i.e. auto-generated X.509 certificates) to verify they didn’t change. This is not the best level of security you can reach but it’s the best you can have without something like a certification authority and without requiring any extra efforts for users.

Contact list with trust levels

Chat window with trust level button

Accept file transfer dialog with trust level button

Credentials dialog
Note that the file transfer part of the thesis will be merged soon with upstream programs but the security part is a proof of concept and cannot be merged as-is, so don’t criticise the user interface too much! 

Telekinesis screencast (Ogg Theora video, 946 kB)
Both the thesis and the slides used during the defence are available on my web site (but they are in Italian).
We would like to thank all the Collabora guys who worked with us, in particular Sjoerd and Xavier. And, of course, our supervisors fog and gg! 
January 28, 2008 - 8 Comments »
You know that your country is becoming a banana republic when the three main news items of the day are about three separate cases of corruption regarding important politicians.

Image courtesy of Emmanuele Bassi
The Minister of Justice Mario Clemente Mastella (UDEUR, center-left coalition), his wife (president of the Regional Council of Campania) and other members of his party have been accused of bribery. When, on Wednesday, his wife was placed under house arrest he resigned but he will continue to support the coalition on a case-by-case basis. This means that with only three seats, on a total of 315 elected senators, he will have a strong blackmailing power as the center-left coalition has a majority of one in the Senate.
The governor of Sicily, Salvatore Cuffaro (UDC, center-right coalition), was found guilty of having helped the Mafia and was given a five-year sentence but he will not go to jail until the automatic appeal process is concluded. This will take years so, despite the sentence, he can continue to govern Sicily.
In the meantime Naples prosecutors have called for Silvio Berlusconi (Forza Italia, center-right coalition), the former prime minister, to be sent for trial on corruption charges. In a separate criminal case he is also accused of trying to pay some senators elected with the center-left coalition to vote against the government.
January 19, 2008 - 8 Comments »
When using drop-down lists it’s not always a good idea to preselect something. Why? Because someone will forget to change the default selection and you will get the preselected item, usually the first one in alphabetical order. Do you want an example? Look at my IELTS certificate:

Click for bigger image
December 19, 2007 - 3 Comments »
Half a day of downtime is bad, but two major outages in less then ten days are too much! It seems that Unixshell (barisione.org is a virtual XEN server hosted by them) is having some serious connectivity problems and they don’t know what redundancy is, even if on their web page they say:
Built-in redundancy through multiple redundant network connections and redundant router and switch configuration.
By the way, my server is finally back online!
December 8, 2007 - 2 Comments »
Whoever used g_hash_table_foreach() knows how painful is to use since C doesn’t have closures, so you have to create a struct to pass local variables to the callback.
Jean-Yves Lefort wrote a patch for bug #500507 (now marked as accept-commit_now) that finally adds iterators to hash tables. Using glib 2.16 you will be able to do this:
GHashTableIter it;
gpointer key;
gpointer value;
g_hash_table_iter_init (table, &it);
while (g_hash_table_iter_next (&it, &key, &value))
{
/* do something with key and value */
}
Thank you Jean-Yves!
December 7, 2007 - 4 Comments »
On Friday, I took my last exam! 
Now it’s time to work full time on my thesis (I should graduate in January) and to start to look for a good job. Speakig of which, I already got some interesting proposals but if you are interested here is my résumé (PDF, HTML in Italian and PDF in Italian).
November 21, 2007 - 4 Comments »
Cuba, Iran, Syria, North Korea, Sudan, Myanmar (Burma), Quebec and Italy are excluded from the Android Developer Challenge. Probably Italy and Quebec are now in the axis of evil, American bombs are coming.
Just joking! Quebec and Italy are excluded because of local restrictions and I’m not surprised as we have plenty of stupid laws. For the details read Fabrizio Giudici’s post on the topic.
[Other posts on this story: 405849595839]
November 14, 2007 - 1 Comment »
It seems that I’m the only one who won’t receive a N810 discount code
.
November 10, 2007 - 4 Comments »
Just applied for the N810 Maemo Device Program, I’ll keep my fingers crossed for the next weeks.
Nokia, give me a discount code if you want to see Telepathy based file transfers on the N810! 
October 29, 2007 - No Comments »
October 18, 2007 - 6 Comments »
The hackergotchis for our server’s users have been updated for Halloween by Alessandro!

October 16, 2007 - 2 Comments »
Ahoy!
Gnome 2.20 has a new Clearlooks version, known during development as Gummy. The main new features are blue scrollbars, fading tabs and rounded toolbars.

Clearlooks (gummy)

ClearlooksClassic
If you don’t like the new theme you can use ClearlooksClassic, or just disable the single features you don’t like. To do so, just open (or create if it doesn’t exist) the .gtkrc-2.0 file in your home directory and set the options you prefer:
style "my-clearlooks" = "clearlooks-default"
{
engine "clearlooks"
{
colorize_scrollbar = TRUE # TRUE = blue scrollbars
menubarstyle = 2 # 0 = flat, 1 = sunken, 2 = flat gradient
toolbarstyle = 1 # 0 = flat, 1 = enable effects
animation = FALSE # TRUE = animated progress bars
style = GUMMY
}
}
class "*" style "my-clearlooks"
Animations work only if --enable-animation was used at configure-time.
If you want the old style for notebook tabs use:
style "my-clearlooks-notebook" = "clearlooks-notebook"
{
engine "clearlooks"
{
style = CLASSIC
}
}
class "GtkNotebook" style : highest "my-clearlooks-notebook"
Personally, I like blue scrollbars and toolbars, but I’m unsure about fading tabs. Nevertheless, I’m probably going to disable rounded toolbars as they are ugly when there are more bars (such as in nautilus or in file-roller) and in Evolution (the background of the “New” button is flat).

Two toolbars in file-roller

Evolution and Clearlooks
September 19, 2007 - 25 Comments »
Beamer is a LaTeX class that allows you to easily create presentations. It contains several themes, but they are a bit ugly, so I wrote a new theme (named Torino) that I’m going to use for the slides for my graduation dissertation.
The look of the theme is based on a layout by Novell/SUSE and the nouvelle color theme uses the same colors of that one. There are other two color themes: chameleon, similar to nouvelle but green only, and freewilly, a blue theme that should look good even with crappy projectors.
The theme accepts some options that allow you to change the logo, the watermark, bullet lists, etc.

Chameleon

Nouvelle

Freewilly
A big thank you to Alessandro Finamore who helped me with the realization of the theme.
September 18, 2007 - 10 Comments »
I usually prefer oven ready lasagna as it doesn’t need to be boiled before assembling the dish, but you can also use dried or fresh lasagna or prepare the pasta on your own. In the latter case you can use the lasagna recipe written by Fabio Rosciano.
If you are using non-oven ready pasta you have to boil it for some minutes and then drain it, removing completely the water.
The Italian translation of the recipe is on my cooking blog.

Ingredients for the béchamel sauce
- 5 tbs. (75 g) unsalted butter
- 3/4 cup (75 g) all-purpose flour
- 3 cups (750 g) milk
- salt
- pepper
- nutmeg
Ingredients
- 1 box (9 ounces, 250 g) oven ready lasagna
- 6 leeks, with 1 inch of dark green part, split, cleaned and sliced
- 1 lb. (450 g) not cured, sweet, plain (without fennel or anise) pork sausage
- 1 glass white wine
- 2 tbs. olive oil
- Parmesan cheese
- salt
Prepare the béchamel sauce. Heat the butter over low heat until melted, then add the flour all at once and stir until smooth. Cook over low heat for 3 minutes stirring constantly. Add milk (at room temperature or hot) and cook for about 5 to 7 minutes, stirring constantly. Add salt, pepper and some nutmeg.
Prepare the filling. Cut the sausage casing lengthwise and remove it. Heat the olive oil in a large skillet over medium heat. Add the sausage and cook, stirring and breaking up the meat with a spoon, for 5 minutes. Add leeks, salt and wine, and cook for 15-20 minutes, stirring frequently.
Assemble. Arrange a layer of lasagna in a buttered baking dish, spread with some béchamel, some leeks and sausage mixture, and a thin scattering of Parmesan cheese. Repeat with remaining ingredients, ending with béchamel and a good sprinkling of Parmesan.
Pre-heat the oven to 375º F (190° C) and bake for about 25 minutes.
September 4, 2007 - 1 Comment »
Yet another recipe for the GNOME Cookbook, the Italian translation of the recipe is on my cooking blog.
Molten chocolate cake is a dessert, probably created by Jean-Georges Vongerichten, that looks like a normal small cake but has an almost liquid center. It may look difficult to cook, but the recipe is indeed very simple and doesn’t require more than 20 minutes (excluding baking and cooling time).
This dessert is usually served hot but leftovers can be refrigerated and eaten cold the next day (the centers will have a mousse-like consistency) or warmed in microwave.

Ingredients
- 3 1/2 ounces (100 g) dark chocolate, chopped
- 1/3 cup (3 ounces, 85 g) unsalted butter
- 2 egg yolks
- 2 eggs
- salt
- 1 1/2 cups (180 g) powdered sugar
- 2/3 cup (75 g) all-purpose flour
Instructions
Melt the chocolate and butter together in bain marie, that is in a bowl over a pot of hot water, and then let cool for a few minutes.
Whip eggs, egg yolks, sugar and a pinch of salt until you get a light yellow color. Add the melted chocolate and the flour.
Grease and flour 5 or 6 ramekins (or oven-proof glass cups) tapping out the excess flour. Divide the chocolate cream among the ramekins, cover with plastic wrap and place in the refrigerator for about one hour or until you are ready to bake.
Pre-heat the oven to 450° F (230° C) and bake for about 13 minutes. Remove from the oven, run a sharp knife around each cake and unmold onto serving plates. Sprinkle with powdered sugar and serve immediately.
August 23, 2007 - 10 Comments »
Here’s another recipe for the GNOME Cookbook, the Italian translation of the recipe is on my cooking blog.
Eggplant parmesan, “parmigiana di melanzane” in Italian, is a typical dish from southern Italy. The name has nothing to do with the city of Parma, as it is placed in northern Italy, or with the Parmesan cheese, as the original version used to contain the cheaper Pecorino cheese. Probably the name comes from the Sicilian word “parmisana” that is a slat of a Venetian blind, referring to the way eggplant slices are put in the baking dish.
Usually eggplant slices are fried in oil but you can grill them to have a lighter (and faster to cook) dish.

Ingredients
- 2 lbs. (1 Kg) eggplants (about 2 or 3)
- salt
- flour
- olive oil
- 1 small onion, finely sliced
- 2 lbs. (1 Kg) canned peeled tomatoes
- fresh basil, chopped
- 1/2 lb. (250 g) cow’s milk (fior di latte) mozzarella cheese
- Parmesan cheese
Instructions
Wash the eggplants, remove the stems, cut them in slices 1/4 of an inch (1/2 cm) thick, place the slices on a large platter and sprinkle with salt. Place a weight on top of the slices and let stand for at least one hour to make the eggplants tender and remove all bitterness.
Wash the salt off the eggplant slices and dry them. Flour the slices and fry in very hot olive oil. Brown eggplant slices on both sides and set aside to drain on a paper towel.
Brown the onion in olive oil over a low flame. Add the canned peeled tomatoes, mash them with a fork and let simmer for about 15-20 minutes, stirring frequently. When the sauce is ready adjust with salt and add chopped fresh basil.
Cut the mozzarella cheese into thin slices. Arrange a layer of eggplant slices in a baking dish, spread with some tomato sauce, cover with mozzarella and a thin scattering of Parmesan cheese. Repeat with remaining ingredients, ending with the sauce and a good sprinkling of Parmesan.
Pre-heat the oven to 375º F (190° C) and bake for about 20 minutes.
August 20, 2007 - 4 Comments »
I wrote a plugin for nautilus-sendto, so it can send files using Empathy; the code is not in SVN or in bugzilla (because it requires functions not yet merged with Empathy) but it’s already working.

Empathy contacts displayed in nautilus-sendto

Sending a file with nautilus-sendto (Ogg Theora video, 156 kB)
More screenshots and videos are available on the project website.
August 19, 2007 - 11 Comments »
Ten years ago the GNU Network Object Model Environment project was announced by Miguel de Icaza. Happy birthday GNOME!

Buenos días, amantes de la libertad!
August 14, 2007 - 29 Comments »
I need an icon, under (L)GPL, for file transfers in Empathy as the current icon (stolen^Wcopied from gossip) is a bit ugly and 16×16 only. This icon would be used in the menu for the “Send File…” command, in the status icon when someone has offered a file and as the icon for the file transfer dialog.
Suggestions? Anyone who can help me?
August 12, 2007 - 3 Comments »
At GUADEC John (J5) Palmieri announced the GNOME Cookbook project, this delicious dessert is my first contribution to the project, I hope you like it! The Italian translation of the recipe is on my cooking blog.

Ingredients
- 4 eggs
- 3/4 cup (150 g) sugar
- 1 pound (500 g) mascarpone cheese
- salt
- 1 3/4 lbs. (800 g) strawberries
- 1/2 lemon
- 2 tbs. rum
- 3/4 lbs. (340 g) savoiardi (lady fingers)
Instructions
Whisk the yolks with half of the sugar making a cream, then add mascarpone cheese and rum. In a bowl whip the egg whites to hard peaks with a pinch of salt and add them to the mascarpone cream.
Wash the strawberries in very cold water and cut off the tops. Place in a blender 1 lb. strawberries, the lemon juice and the remaining sugar, and blend to puree.
Arrange a layer of savoiardi dipped in the juice in a serving dish and spread with some cream. Repeat layering with remaining savoiardi and cream.
Slice remaining strawberries and garnish the tiramisù with them.
Place in the refrigerator for some hours so the savoiardi can soften and absorb the juice.
August 8, 2007 - 4 Comments »
With the old dialog you had a window for each file transfer but this could be a problem if you are transferring more than a couple of files at the same time. So this week I rewrote the file transfer dialogs and submitted the patch to add file transfer to Empathy (see bug #462172).

The new file transfer dialog
The new dialog is copied from Epiphany but I had to make some changes because we cannot open automatically each received file, so I added a Firefox-like clear button. The thing I don’t like in the window is that it communicates the current progress in three different ways: the percentage (”30 %”), the number of transferred bytes (”8.4 MB of 27.6 MB”) and the remaining time (”00.05″).

Sending a file

Receiving a file
July 31, 2007 - 15 Comments »
Every person going through the corridor where I was sitting yesterday seemed scared by the two strange things in the power sockets, be quiet! They are not weapons of mass destruction, just the best power adapters we found in Vercelli. And, in spite of them, we didn’t break any power socket unlike everybody else here at the Etap hotel.


Now it’s time to try to find a way to reach the Stansted airport in spite of the weather, this page is not very reassuring
.
Update: I’m now at home, a lot of trains were cancelled but luckily mine was on time.
July 21, 2007 - 2 Comments »
If you are at the Etap hotel and you get “Error: The maximum number of subscribers has been reached” just find someone with Internet access that can route you and make him type this as root:
echo 1 >> /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -j MASQUERADE
Then you should type (as root):
route del default gw 10.71.0.1
route add default gw route add default gw $IP_WITH_INET_ACCESS
Tip kindly provided by em
.
July 16, 2007 - 2 Comments »
This week I worked on adding file transfer support to Empathy for the Telekinesis project. Empathy with my patches (the code is not yet in SVN trunk) can exchange files using every connection manager that supports file transfer, that is just telepathy-salut (aka bonjour, aka XEP-0174, aka link-local messaging) for now
.
libempathy, the non-GUI library wrapping the telepathy interfaces, will get a class to handle file transfer channels (i.e. org.freedesktop.Telepathy.Channel.Type.FileTransfer) and a class for single file transfers, which are just IDs in Telepathy.
The dialog, in libempathy-gtk, was copied from Gossip, I’m going to modify it later to better fit our needs and to solve some problems, for instance now you cannot choose the file name, only the directory where to save the file.
This work is far from perfect but I can already show some screenshots and videos:

Receiving a file

Sending a file (Ogg Theora video, 150 kB)

Receiving a file (Ogg Theora video, 138 kB)
Tomorrow I will arrive at the Birmingham train station around 5 PM. See you all there!
July 15, 2007 - 8 Comments »
Havoc, the jhbuild moduleset for Telekinesis was written before deciding any technical detail on the project, so it builds everything including avahi! As soon as the project becomes usable by someone other than me I want to remove unneeded libraries and add a comment suggesting to skip libraries which have recent versions packaged for common distros.
Mercurial is used only by salut-chat, a simple and ugly Python script I use to test telepathy-salut (the library I’m working on at the moment). When telepathy-salut will get more tests and empathy will support file transfer I plan to kill salut-chat removing the need for Mercurial.
This means that when Telekinesis will start to be useful it will require only darcs (used by Telepathy) and svn (used by mission control and empathy). Anyway, if you are interested in telepathy-salut for Big Board, I can already try to reduce the number of needed modules.
By the way, I agree that a question before pulling each patch is silly, to resolve it use “darcs pull -a“.
June 8, 2007 - No Comments »
As said in previous posts, I’m working on a SOC project, called Telekinesis, to make easy to transfer files over a LAN.

For now I modified telepathy-salut (the Telepathy connection manager that handles link-local connections) adding file transfer support, but at the moment chat programs are not yet able to use it so it’s still completely useless for you
.
My next steps are to improve the code in telepathy-salut and then add file transfer support to Empathy.
June 7, 2007 - 2 Comments »
Alberto, why did you chose NSIS to build setup programs? I don’t like it because its scripting language seems a mix between assembly and shell scripting and it doesn’t even have flow control statements, you have to use Goto!
Moreover you have to do manually everthing, for instance to copy a file that later can be uninstalled you need this code:
; Copy the file
File "example.exe"
; Create shortcuts.
CeateDirectory "$SMPROGRAMS\\Example"
CreateShortCut "$SMPROGRAMS\\Example\\Uninstall.lnk" "$INSTDIR\\uninstall.exe" "" "$INSTDIR\\uninstall.exe" 0
CreateShortCut "$SMPROGRAMS\\Example\\Example.lnk" "$INSTDIR\\example.exe" "" "$INSTDIR\\example.exe" 0
; Copy the uninstaller.
WriteUninstaller "uninstall.exe"
; Write the uninstall keys for Windows.
WriteRegStr HKLM "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Example" "DisplayName" "NSIS Example"
WriteRegStr HKLM "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Example" "UninstallString" '"$INSTDIR\\uninstall.exe"'
WriteRegDWORD HKLM "Software\\Microsoft\\Windows\\CurrentVersion\Uninstall\\Example" "NoModify" 1
WriteRegDWORD HKLM "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Example" "NoRepair" 1 WriteUninstaller "uninstall.exe"
And then you have to uninstall everything manually:
; Delete registry keys.
DeleteRegKey HKLM "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Example"
; Remove files and uninstaller.
Delete $INSTDIR\\example.exe
Delete $INSTDIR\\uninstall.exe
; Remove shortcuts.
Delete "$SMPROGRAMS\\Example\\Uninstall.lnk"
Delete "$SMPROGRAMS\\Example\\Example.lnk"
RMDir "$SMPROGRAMS\\Example"
; Remove the program directory.
RMDir "$INSTDIR"
I prefer Inno Setup, the nice thing is that for common tasks (copying files, creating shortcuts, adding registry keys, etc.) you only have to write a simple ini-like file, but if you need something more powerful you can use Pascal scripting.
The previous example in Inno Setup would be:
[Files]
Source: “example.exe”; DestDir: “{app}”
[Icons]
Name: “{group}\\Example”; Filename: “{app}\\example.exe”
Name: “{group}\\Uninstall”; Filename: “{uninstallexe}”
Please, use Inno Setup! 
May 7, 2007 - 13 Comments »
I never dropped my (six months old) Macbook to the floor or mistreated it, nevertheless the chassis got broken where the lid touches it
. Am I the only one with this problem?


April 26, 2007 - 9 Comments »
My ex roommate wrote a tutorial on OpenGL shaders to do Photobooth-like effects. It would be great if someone could wrote a GStreamer plugin and integrate it with Daniel Siegel’s SOC.

The sad thing is that my video driver does not seem to support shaders even if they are supported by the 945GM chipset
.
April 16, 2007 - 7 Comments »
NerdOCRACY, the server hosting barisione.org, moved to lighttpd as it’s less resource-hungry and easier to configure.
I had only some problems with WordPress, to have clean addresses like www.example.com/about instead of something like www.example.com/?p=123 it uses this htaccess file:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
I resolved using server.error-handler-404 as suggested on snippets.dzone.com:
$HTTP["host"] == “www.example.com” {
server.document-root = “/usr/share/wordpress”
server.error-handler-404 = “/index.php”
}
April 14, 2007 - 2 Comments »
My SOC application has been accepted! 
Update: The project is now called Telekinesis.
April 12, 2007 - 4 Comments »
Reading some comments on my SOC proposal I have the impression that someone didn’t understand what I’m going to work on, I don’t want to write yet another Samba-like program but an application to send files over a LAN without the need to share folders.
Systems like Samba or FTP are useful at home or work when you want to permanently share a folder, but often people just want to quickly send a file to some specific person. For that you do not want to first put it in your shared files and then tell your contact that he/she can find it there. Moreover using Samba or FTP means that you have to handle permissions and passwords or just have a public folder available to everyone, which could be a security problem. So on occasional situations just right-clicking on a file and using “Send to” (through a nautilus-send-to back-end) to send this file to a person is a lot nicer.
Recently Xavier Claessens, the author of gossip-telepathy, started to work on grapevine, a modular version of gossip using Nokia’s mission control. A good idea would be to work on it adding file transfers capabilities instead of writing a separate GUI, this way other protocols could benefit of my work, making easy to send files using every chat protocol.
Note that I’m not going to invent new protocols, I will use XMPP (aka Jabber) and in particular I want to work on telepathy-salut, a Telepathy connection manager for XEP-0174, the protocol used by iChat for serverless chats on a LAN. For file transfer stuff I’m going to base my work on the code written by Mads Chr. Olesen for the last year soc on collaborative applications using Telepathy.
Update: The project has been accepted and it’s now called Telekinesis.
April 5, 2007 - 9 Comments »
When using CVS I always use cvspurge (from the CVS Utilities package) to delete the auto generated files that are not deleted by make distclean, this is useful to test local and uncommitted changes in the otherwise clean source tree.
This is why some months ago I wrote a purge extension for Mercurial. Now my code, improved by Emanuele, has been included among the official extensions so it will be shipped in the Mercurial packages of all distros.
April 4, 2007 - No Comments »
There are many solutions to share one or more files, from setting up a Samba share, to a personal directory in a HTTP or FTP server, they have one big common flaw: they do not “just work”. As a consequence people often use services relying on an external server (such as email and chat), or removable devices. In some cases it is not even reasonable to do server-based communication, as is the case of meshed networks.
An ideal system should automatically discover other users in the neighborhood, list them and let the user choose who to send files. The system should also work without any configuration, without the need to tell one’s IP address, and without requiring any operation from the administrator, such as setting up a server or configuring a service.
For my dissertation I’m going to develop a program to satisfy those needs enabling users to easily send and share files over a LAN and I want to propose it as a Summer of Code project for GNOME. Detailed proposal here. Anyone want to mentor me?
Update: The project has been accepted and it’s now called Telekinesis.
March 21, 2007 - 19 Comments »
This morning I committed GRegex to svn, so glib 2.14 will have regular expression support. GRegex is a wrapper around the PCRE library by Philip Hazel that has several interesting features:
GRegex has a nice GLib-ish API that wraps PCRE functions and adds other features:
March 16, 2007 - 8 Comments »
My two years old mobile phone died, so I bought a Nokia 6111, a small, nice and very usable phone.
This is my first Bluetooth mobile phone, so I tried for the first time Bluetooth on my MacBook. On Debian it works out of the box (you only need the bluetooth package), but Debian doesn’t have packages for GNOME Bluetooth, so I tried the packages from tuxfamily.org. To use them install the GPG key:
wget http://download.tuxfamily.org/osrdebian/61B8DB62.gpg -O- | apt-key add -
Then add the repository to /etc/apt/sources.list:
deb http://download.tuxfamily.org/osrdebian unstable gnome-bluetooth
gnome-obex-server (the program used to receive files) works, but gnome-obex-send (the program used to send files) cannot list devices even if “hcitool scan” is working correctly. This Ubuntu bug describes the problem and suggests to use “hciconfig hci0 inqmode 0”, but it doesn’t work for me.
I’m going to use Bluetooth only a few times and I’m lazy, so I decided not to solve this problem and to use a simple script to send files to other devices:
#! /bin/sh
if [ $# -lt 2 ]; then
echo “Usage: $0 DEVICE-NAME FILES”
exit
fi
ADDR=`hcitool scan | grep $1 | awk ‘{ print $1; }’`
if [ -n "$ADDR" ]; then
shift
gnome-obex-send -d $ADDR “$@”
else
echo “Device \`$1′ not found” >&2
fi
A more annoying problem is that, when I try to use Bluetooth, I get disconnected from wireless. Dear Lazyweb, how can I solve this?
March 12, 2007 - 6 Comments »
Not as useful as the Gnome clock applet, but still useful when you are forced to use Windows XP, WinCalendarTime replaces the standard Windows clock with an enhanced one, if you click on it a calendar is displayed.

This new version contains only some bug fixes. I’m using Windows only a few hours per month, so I’m not going to work on new versions, if you want something better just switch to Gnome :)
Update: I was asked how to translate WinCalendarTime in other languages, if you are intersted read this.
February 26, 2007 - 16 Comments »
GtkSourceView is currently licensed under GPL but it should be relicensed under LGPL, the main authors agree on this but we have to ask to every contributor. Is anyone volunteering to get all the permissions?
I have extracted a list of contributors from the ChangeLog, but it may be incomplete and contain translators, that should be excluded.
If you are interested to help add a comment to bug #159134, to get more information you can contact paolo or me on the #gedit channel on irc.gnome.org.
February 24, 2007 - 2 Comments »
Recently Miguel de Icaza blogged about version 2 of gnome-main-menu, available from Gnome’s SVN, so I decided to give it a try.
I’m using gnome-main-menu both on my every day environment (Gnome 2.16 from Debian Experimental) and on the Gnome I build from SVN using jhbuild. For the latter I patched gnome-desktop and gnome-panel with the files found in gnome-main-menu/patch.

gnome-main-menu in action
The version I compiled is uglier than the one shown in the previous screenshot (copied from Miguel’s blog) and it’s lacking some features, such as the “Shutdown” button, does someone know why?
I prefer the newer version because it’s more usable but it isn’t perfect. First of all it’s slow, it leaks memory (it’s using 200 MB after some hours!), but I’m sure that these problems will be solved before a stable release.
I like the idea of the “Applications”, “Documents” and “Places” buttons but I don’t like how they look, they make the interface too chaotic. Moreover they are buttons but behave like tabs.
Probably people using a single panel layout prefer to have only the “Computer” button in the panel but I’d like to put the three buttons directly in the panel, as done by Gimmie. Another idea to steal from Gimmie is the use of different border colors for the different sections.
A thing I hate is to have an external window when “More Applications…” is clicked, why not to put the application links directly in the menu? Windows Vista does it when you click on “All Programs”, but it sucks because the menu is long and deeply nested. The normal menus in Gnome do not have these problems so I would like to have them in the main menu, as in the following mockup.

Mockup: Kill the application browser
I like the search box at the top, but it opens the beagle-search window! I want the results in the same window! I want to type “gedit” and press return to open my beloved text editor!

Mockup: Search results in the menu
In gimmie there is a “People” window, would it be possible to have something similar in gnome-main-menu?
February 20, 2007 - 25 Comments »
After the last post I was asked where to find GRegex and how to use it, GRegex is not yet in GLib, probably it will be included in GLib 2.14, and GLib 2.14 will be probably used by Gnome 2.20.
If you can’t wait for GLib 2.14 you can include a copy of EggRegex, as it’s done by the soc-2006 branch of GtkSourceView. EggRegex has the same API of GRegex except for the egg_ prefix instead of g_ for function names, so the update to GRegex should be easy. The Mercurial repository is at techn.ocracy.org/eggregex, if you are not a Mercurial user you can get the .tar.gz. Please, do not use the EggRegex version you can find in the libegg module at svn.gnome.org because it’s old, buggy and not API-compatible with GRegex.
If you want to read the GRegex documentation without downloading and compiling anything you can read it from barisione.org/gregex, the relevant pages are the API documentation, the regular expression syntax, and the build options.
February 16, 2007 - No Comments »
Recently Emmanuele Bassi asked for help on reviving GFloppy as it’s old and mostly useless. Paul Betts and Riccardo Setti (giskard) accepted the invitation and are working on gnome-format, an utility that will be able to format any removable disk (USB pendrives, etc.) Here’s some screenshots but remember that gnome-format is in alpha stage!




I don’t like the filesystem selection menu, but it will be probably changed to contain something like “Compatible with XXX (FS-NAME)”, so it will be usable be geek and non-geek users.
February 12, 2007 - 17 Comments »
This should be my first post on Planet GNOME (thanks jdub), so hello everybody!
So, who am I? I’m Marco Barisione, an Italian student of Computer Engineering at the Politecnico di Torino.
For my third-year dissertation I wrote a new syntax highlighting engine for GtkSourceView 2 with Emanuele Aina, now the code is in the soc-2006 branch of GtkSourceView and Yevgen Muntyan is working on it.
As a spin-off project of the highlighting engine I resurrected EggRegex (originally written by Scott Wimer and then modified by Matthias Clasen), as it was buggy, incomplete and abandoned in libegg. EggRegex, now called GRegex, should be included in glib 2.14 (bug #50075.)
Now I’m working on GSpell, a GObject-based version of Enchant, to add spell checking support into the Gtk+ stack (bug #383706.)
I maintain and host on my server Planet GNOME Italia.
I also wrote some Windows programs, such as WinCalendarTime, a replacement for the standard Windows XP clock, and HotKeyBind, a program that lets you use shortcut key combinations to do common tasks.
One of my hobbies is cooking, so I have a cooking blog in Italian at TarteTatin.it.
February 11, 2007 - 5 Comments »
A month ago my desktop computer died, Windows XP (both the installed version and the installer) was crashing while booting and using Linux live CDs I was only able to get kernel panics.
As a student of the Politecnico di Torino I can have a free copy of Windows Vista Business and other Microsoft products (see the MSDNAA web page of my university.)
Today I tried to install Vista on my dead computer without any hope to finish the setup, but wow, Vista was installed correctly and now the computer is working. This mean that now I have to use Vista, I’m sad :(.
February 10, 2007 - 3 Comments »
After the post on the “Empty Trash” button in the trash folder, I’m looking for other small changes in GNOME 2.17, i.e. the development version for GNOME 2.18. These are not the big changes everyone can see like the new Control Center, but those small things that are improving GNOME version after version.
In the following screenshots you can see Glossy, a new theme included in 2.18 (to tell the truth it’s not a real theme, but just an option to the ClearLooks theme.)
We will have a UI for configuring theme colors, see this post by Tim Retout.

GNOME Screenshot has a new dialog displayed when you pass --interactive to the program, the default if you launch the utility from the menu. Thanks Emmanuele!

The UI of GNOME Power Manager was cleaned up, now the menu is much more readable and the ugly “Power History” window with lots of tabs has been improved too.
Some minor changes were done to the “Startup Programs” tab in gnome-session-properties, spot the differences!

The last small improvement I found is the new “System” tab in GNOME System Monitor, see this, this, and this.

February 7, 2007 - 1 Comment »
I know that it’s a small and simple change but I really like the new “Empty Trash” button displayed in the trash folder.

This is a useful change for normal users, as the menu item is not easily discoverable, so thanks pbor!
February 6, 2007 - 3 Comments »
While working on GRegex (Perl-style regular expressions for GLib) I discovered that arrays of string pointers can cause lots of relocations.
Relocation is the process of adjusting the pointers whose value is unknown at link-time, such as the pointer to a function is a dynamically loaded library.
In PCRE (the library used by GRegex) there is a table used to associate the name of a script, such as Latin or Arabic, to its properties:
const ucp_type_table _pcre_utt[] = {
{ “Any”, PT_ANY, 0 },
{ “Arabic”, PT_SC, ucp_Arabic },
{ “Armenian”, PT_SC, ucp_Armenian },
…
{ “Zs”, PT_PC, ucp_Zs }
};
The strings (they are more than 100!) are placed in read-only memory, while the _pcre_utt array will be placed in writeable memory, so the dynamic loader has to do a relocation for each string. The number of relocations in libglib with GRegex was:
libglib-2.0.so: 290 relocations, 263 relative (90%), 131 PLT entries, 1 for local syms (0%), 0 userstable
Without GRegex:
libglib-2.0.so: 90 relocations, 63 relative (70%), 131 PLT entries, 1 for local syms (0%), 0 users
A possible solution is to replace the strings in the table by offsets into one big string constant.
const char _pcre_ucp_names[] =
“Any\\0″
“Arabic\\0″
“Armenian\\0″
…
“Zs”;
const ucp_type_table _pcre_utt[] = {
{ 0, PT_ANY, 0 },
{ 4, PT_SC, ucp_Arabic },
{ 11, PT_SC, ucp_Armenian },
…
{ 653, PT_PC, ucp_Zs }
};
The result after this operation is:
libglib-2.0.so.0.1300.0: 187 relocations, 160 relative (85%), 131 PLT entries, 1 for local syms (0%), 0 users
Using the same technique on the other arrays in PCRE and GRegex, we reduced the number of relocations, now the results are similar to the ones obtained without GRegex:
libglib-2.0.so.0.1300.0: 102 relocations, 75 relative (73%), 131 PLT entries, 1 for local syms (0%), 0 users
The number of relocations was obtained using the relinfo.pl script by Ulrich Drepper. If you want to know something more about dynamic libraries, you can read How To Write Shared Libraries by the same author.
UPDATE: Declare _pcre_ucp_names as a char [] instead of char *, as suggested by Ulrich Drepper.
January 27, 2007 - No Comments »
When developing my web sites I need to test them with Internet Explorer, after all it’s the most used browser. As my home computer (running Windows) died, I tried IEs4Linux.

The stable version of IEs4Linux can run Internet Explorer 5, 5.5 and 6. If you want to run IE 7 (or better the GUI of IE 6 with the engine of IE 7) you need the 2.5 beta version. To run all these versions of Internet Explorer under Debian unstable, install wine and cabextract, then follow these instructions:
wget http://www.tatanka.com.br/ies4linux/downloads/ies4linux-2.5beta2.tar.gz
tar xzf ies4linux-2.5beta2.tar.gz
cd ies4linux-2.5beta5/
./ies4linux --install-ie5 --install-ie55 --beta-install-ie7
January 21, 2007 - 1 Comment »
Cooking is one of my preferred hobbies, so I opened a new cooking blog in Italian at TarteTatin.it. Tarte tatin is a French upside-down apple tart, I chose it as the name only because it sounds well :).

January 13, 2007 - No Comments »
In these days using the Internet is a real pain for lots of Italians. The former TLC monopolist claims that the problems are due to viruses, but this does not explain why the service with the biggest problems is DNS, host name resolution requires at least 10 seconds! This is why I have been using OpenDNS for some days. Note that I don’t care about phishing protection and the other stuff offered by OpenDNS, but it’s fast and reliable.
BTW, merry Christmas!
December 25, 2006 - No Comments »
As already said we are going to have spell checking in GTK+. No more GnomeSpell, GTKSpell, SexySpellEntry, the gedit plugin, all using different libraries for spell checking and with several different problems!
I’m working on the glib side of this project, GSpell will be the low level spell checking library that will be the base of the future GTK+ spell checking stuff. The Mercurial repository is at http://techn.ocracy.org/gspell, the relevant bug is #383706.
GSpell has the same goals of Enchant and shares a lot of code with it. Probably the next version of Enchant will be just a wrapper around GSpell.
December 19, 2006 - No Comments »
Blob Sallad is the most addicting and unuseful program I found in this month!

On the home page there is a (mostly working) JavaScript version of the game or you can download the source code for Linux.
UPDATE: to compile the program you need libsdl-dev and libcairo2-dev. The most recent version is at the end of the list.
December 18, 2006 - 1 Comment »
Behdad Esfahbod proposed to add spell checking, based on the Enchant library, to GLib and GTK+.
I tried some existing spell checking tools for GNOME:
Some time ago I wrote with Emanuele Aina some code forked from gedit. This, temporarily called GnomeSpellChecker, is unreleased and unfinished but has some interesting features, such as multi-language support.
In this post I’m considering only the UI of these libraries, I will read and analyze the code in the following days.
The contextual menu
All the libraries use the same approach, the wrong words are underlined in red. The popup menu displays the suggestions in a sub-menu.

GtkSpell3

SexySpellEntry

Gedit spell checking plugin
In GtkSpell3 and SexySpellEntry I don’t like the gtk-remove icon for the “Ignore” item. In gedit I don’t like the “…” after the “Spelling suggestions” string and the bold font for the suggestions.
Microsoft Word’s menu is similar, instead Apple programs add the suggestions directly to the contextual menu.

Spell checking in Mail
Multilanguage support
The new spell checking stuff in GTK+ should allow to check more languages in the same widget. A good approach would be to recognize the language of a paragraph, as done by Microsoft Word, for this see libtextcat and its competitors. Paolo Maggi thinks that this is out of the scope of the spell checking library since it’s an application specific problem.
A simpler solution is to check words in the union of the used dictionaries. This is supported only by GtkSpell3 and by GnomeSpellChecker.

Spell checking with multiple languages in GtkSpell3
The GtkSpell3 implementation does not seem to work, “mondo” is in the Italian dictionary but it’s considered mispelled. I don’t like the multi-language menu because it adds another submenu, I propose something similar to the image below (made with GIMP):

Proposal for the contextual menu
Configuration
It would be a good thing to have a tool for control-center to set the languages, but please do not add yet another item to the preferences menu!

GnomeSpellChecker dialog to set the languages
This configuration tool could have some other options, e.g. to ignore words with numbers.
All the libraries can add a word to the personal dictionary, but there is no way to remove wrong words from it. It would be good to add such feature to the configuration tool.
Spell checking dialog
GtkSpell3 and SexySpellEntry do not have a dialog to do spell checking, this could be useful for longer texts, such as text files in gedit or forms in Epiphany. Word and AbiWord use similar dialogs, shown in the images below.

Word spell checking dialog

AbiWord spell checking dialog
I prefer the gedit dialog, but it does not show the context of the wrong word, this means that it could be difficult to understand what the word should be.

Gedit spell checking dialog

GnomeSpellChecker spell checking dialog