First Ubuntu Patch Day, care to help? ;)

On next May 5th, will take place the very first Ubuntu Patch Day! According to Nigel Babu in this post to the ubuntu-devel mailing list, the Patch Day is about giving love to patches submitted to Ubuntu bugs, and also making them upstream if possible.

Isn’t that cool? 🙂

If you’re seeking ways to start on Ubuntu development, here’s your chance to get involved.  There are lots of patches waiting for you there, I’ll give it a try myself. 🙂

Of course I have to mention: the awesomeness of Launchpad makes the Patch Day easier with its new patch-related features, that’s part of the “Bridging the Gap” 10.05 Launchpad development series.

You can see the full post in the Fridge. See you! 🙂

Managing your Google Calendars in Thunderbird

Quick help for those who want to manage their google calendars using Thunderbird: you can use the combination of Lightning addon (based on the Sunbird calendar one) and the Provider for Google Calendar addon.

I’m using here Ubuntu Jaunty (9.04) and Thunderbird, and I faced the following problem: after installing both addons, I wasn’t able to create a new calendar, it was showing greyed. So, after googling a little, I found out that one of the requirements for Lightning to work properly is the package libstdc++5, as you can see here. So, you need to install this package before installing Lightning.

Like this:

sudo apt-get install libstdc++5

After that, just download the addons .xpi files and install them – In Thunderbird, Tools -> Addons -> Install… Restart Thunderbird as requested and when it opens again, you should see three buttons on the lower left, that are Mail, Calendar and Tasks.

Click on the Calendar one, and with right click you should have a Add Calendar… option. Note: you *must* be in the Calendar view to see it.

Click on it. You’ll need the Private XML address of your Google Calendar. To get it, go to your Calendar page on Google, and right click the arrow next to your calendar. Choose “Calendar settings”, and search for the Private address. Click on the XML orange button, and voila! There it is. Copy it and go back to Thunderbird.

After clicking in the “New Calendar..” option, choose “In the network” calendar, and then “Google”, and paste the address. It now should ask you your Google credentials, and if authenticated sucessfully, you should be asked to choose a name and a color for it to be displayed in Thunderbird. Lightning doesn’t import the name neither the color used in the web interface.

That’s it! Worked for me. Hope this helps!

Getting crazy with gwibber, part 2, or intrepid libwebkit saved the day

After the first part of the odyssey, I just wanted gwibber to work, and started googling around for some desperate fix. So, I realized a lot of people were having the same issue, and the fix was simple: to install the Intrepid version of libwebkit, 1.0-1.

Trying to fix the previous issue, I started using the packages from the WebKit Team PPA, that contain a newer version of libwebgtk, 1.0-4. So, considering I don’t need the newest package versions that PPA provides, I just removed the PPA line from my sources.list.d/ppa.list and safely removed/reinstalled libwebkit.

Easy as that:

sudo aptitude update
sudo aptitude remove libwebkit-1.0.1-4

aptitude suggested me first removing gwibber and python-webkitgtk, and second, just downgrading libwebkit. I chose the first one, because removing everything to install again later was more guaranteed to put things to work, considering that this approach will likely get the correct versions needed. If you just downgraded the libwebkit package and it worked, let me know!

sudo aptitude install gwibber

And it reinstalled gwibber, python-webkitgtk and the libwebkit, now in the correct version.

Now gwibber works like a charm, and I’m again a happy user. 🙂
Gwibber now shows twitter direct messages on the Replies tab, and clicking on a users’ nick opens a tab on gwibber with the users’ timeline. Awesome!

Getting crazy with gwibber, part 1, or python-simplejson and the evil file

I met Gwibber about 5 months ago, and was a happy user. For those who don’t know Gwibber, it’s a more client for Gnome.

Well, the one feature I was missing on it was a tab only for replies, as TwitterFox does, and one day @jorge announced (and other people excited about it commented) on that the newest version just released that time got that tab. So, I ran to find a console window, and then, after the update, thought: “Cool! Let’s check out the new feature!”. Closed gwibber, reopened and.. sigh. It suddenly stopped working.

I thought myself “WTH”, and kept trying to open it, without success. It was freezing, after a few seconds open.

Finding that thing weird, I started doing the good’ol debugging thing, and found out that the problem was when retrieving messages. With the possible bug in hands, went to my beloved Launchpad to see if there were any open bugs reporting the problem, and if not, open a new one providing all the info I’d gathered in all that debugging. For my luck (or not :)) I’ve found one possible bug, and then commented on it, giving the problem I was having:

Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/lib/python2.5/", line 486, in __bootstrap_inner
File "/usr/lib/python2.5/", line 446, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/lib/python2.5/site-packages/gwibber/", line 685, in process
File "/usr/lib/python2.5/site-packages/gwibber/", line 52, in load_messages
indent=4, default=str)
File "build/bdist.linux-i686/egg/simplejson/", line 216, in dumps
TypeError: __init__() got an unexpected keyword argument 'default'

At that point I already had tried everything: reinstalling python-simplejson, gwibber and python-webkitgtk, also using –purge, and nothing.
One suggested that it could be my version of python-simplejson, considering that this error wasn’t supposed to happen with python-simplejson version 1.9.1. Unfortunately, that was exactly my version according to dpkg, and I got desolated. What would I do?

So I downloaded gwibber code and started messing to see how stuff works, and then realized that doing a import simplejson and calling the dumps function would give me the same error, so the problem wasn’t on gwibber or the way it could be calling the module. Given that, intrigued, opened ipython, did again the same import simplejson, simplejson.dumps(default=”bla”, {}) thing and noticed this time:

/usr/lib/python2.5/site-packages/simplejson-1.7.3-py2.5-linux-i686.egg/simplejson/__init__.pyc in dumps(obj, skipkeys, ensure_ascii, check_circular, allow_nan, cls, indent, separators, encoding, **kw)
TypeError: __init__() got an unexpected keyword argument 'default'

Yes, a simplejson.__version__ confirmed the crack: 1.7.3. But why oh why that thing was there if I uninstalled and installed it exaustively, and then checked and rechecked the package version with dpkg -L python-simplejson?

After a minute of frustration, I realized the python-simplejson package wasn’t placing any files on that folder. Maybe because of a packaging problem, removing python-simplejson package didn’t erased the file on site-packages. A rm -rf simplejson-1.7.3-py2.5-linux-i686.egg was enough to solve the problem. After that, just out of curiosity, I did the import simplejson and voila, version 1.9.1.

It stopped freezing, but the window it open was blank. So what now? More in the next post..

apt-get what?

If you are like me, when you need to use a program in your console, the first thing is to run “bla –help”.


Having a Ubuntu box, typed apt-get --help. That’s what I saw, here shortened:

ursula@ursula-laptop:~$ apt-get --help
apt 0.7.9ubuntu17 for i386 compiled on Apr 22 2008 15:19:47
Usage: apt-get [options] command
apt-get [options] install|remove pkg1 [pkg2 ...]
apt-get [options] source pkg1 [pkg2 ...]
This APT has Super Cow Powers.

This APT has Super Cow Powers? Hm… Let’s try something that a cow would do, like mooing:

ursula@ursula-laptop:~$ apt-get moo
...."Have you mooed today?"...


Now, let’s see what aptitude says:

ursula@ursula-laptop:~$ aptitude --help
aptitude 0.4.9
Usage: aptitude [-S fname] [-u|-i]
aptitude [options]
This aptitude does not have Super Cow Powers.

Does not have? So it doesn’t feel like mooing… Let’s see:

ursula@ursula-laptop:~$ aptitude moo
There are no Easter Eggs in this program.

Uuhh… It doesn’t want to play! Please aptitude, be more verbose about it!

ursula@ursula-laptop:~$ aptitude -v moo
There really are no Easter Eggs in this program.

hauhauha.. Let’s push harder! 🙂

ursula@ursula-laptop:~$ aptitude -vv moo
Didn't I already tell you that there are no Easter Eggs in this program?
ursula@ursula-laptop:~$ aptitude -vvv moo
Stop it!
ursula@ursula-laptop:~$ aptitude -vvvv moo
Okay, okay, if I give you an Easter Egg, will you go away?
ursula@ursula-laptop:~$ aptitude -vvvvv moo
All right, you win.

ursula@ursula-laptop:~$ aptitude -vvvvvv moo
What is it? It's an elephant being eaten by a snake, of course.

Cool! 😀