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!

Launchpad is now open source! W00t!

I came out of the dark after so long just to say: Launchpad is now open source!

For those who don’t know Launchpad, you should check out the Launchpad tour, here. It’s full of awesomeness. 🙂

Until today it was known that Canonical would keep Soyuz and Codehosting closed source, but for everyone’s surprise, Launchpad was fully open sourced, wisely out in the wild under the AGPLv3 free license.

If you are interested in contributing or are curious, here’s a starter: It’s the development wiki, feel free to try it out and fix wildly, after all, it’s a wiki for God sake! 😛 More specifically, on how to get Launchpad source, for the “show me the code” people. 😉

Wanting to have a chat with Launchpad developers? Come and join us in #launchpad-dev at Freenode, we’re all friendly. 😉

And also, exactly one year ago I started working at Canonical, and joined Launchpad team as a happy QA Engineer. Quoting my colleague jml:

<jml>Ursinha, time flies when you're having fun :)

Indeed my friend! Indeed. 🙂

What a spectacular way to celebrate one year working with this team full of awesomeness. 🙂 Guys, you all rock, keep up the awesome work!

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..


Hey folks! Long time no see.

If blogging was fast like microblogging (as twitter or, it would be much easier to keep this blog updated, differently of the rusty dusty state it is now. 🙂

Well. 🙂

As some of you may know, I’m now working at Canonical – the Ubuntu commercial sponsor -, and I’m really happy and excited about it! I can finally use Ubuntu without my friends bugging me – haha! Just kidding guys. 😉

You may have noticed that I really like Gentoo, but I never hide that I’m indeed a Ubuntu enthusiast, since it brings people together in a huge community, and it’s so beautiful! I can’t let myself not be part of it.

Well, at Canonical I’m a QA Engineer in the Launchpad Releases team.

But what is Launchpad? – you ask me.

Let’s see: I bet you, as a Ubuntu user, found yourself a few times clicking on links Google give you to a bug or answer in Launchpad, regarding your Ubuntu problem/doubt. This often happens because Ubuntu project is hosted in Launchpad.

Launchpad is “a unique collaboration and hosting platform for free software. It brings communities together – regardless of their choice of tools – by making it easy to share code, bug reports, translations and ideas across projects.“, according to Launchpad tour – that I really recommend you to take a look.

In other words, Launchpad is a great environment where you can place your Free Software project and, collaboratively, among your project pals, watch it grow strong. 🙂

It gives you plenty of ways of doing that, such as bug tracking, specs tracking – called blueprints -, code hosting (using bazaar), or mirroring, and a lot more.

You can even have your own “Ubuntu repository”, the PPA (Personal Package Archives) – that is one of the features I like the most. Every Launchpad user has one place in Launchpad where he can upload their deb source packages, and then Soyuz – the LP package builder/handler – builds and hosts the debian built package into the user’s PPA. So you can create your own debian package for the free software you’re developing and tell your friends, when they ask you “Oh, how do I install the great software you’re developing at LP?”: just add the PPA line to your sources.list and use apt to install it! This is really awesome. 🙂

I’m going to write – soon, I promise! – a post talking more deeply about Launchpad, to try to show the advantages I see when using it. 🙂

Last of all, I *must* mention – before someone points me that – that Launchpad is intended to be released as Open Source software. It was already told and I strongly believe so.

By the way, next Wednesday, September 17th, it’s Release day! Launchpad 2.1.9 coming soon, stay tuned. 😉


C compiling: “defined as wrong kind of tag”

Just to help people who face this problem: If you’re compiling your C code, and then the compiler says to you something like this:

./foo.c: In function `bar':
./foo.c:158: `structure_x' defined as wrong kind of tag

Don’t panic! Take a look at the bar function.

You’re probably declaring a variable of the structure_x kind but as a different type it really is.

For example, structure_x is an enum and you did something like this:

struct structure_x my_variable;

when the correct would be:

enum structure_x my_variable;.

This post is simple, but will surely help to avoid headaches 😛

Sorry for being so out

Hi folks!

Since my life is taking a turn, I’ve been out for some time. Now I’m sure it’s going to get way nicer 🙂

I promise to post more often from now on, since I think I’m going to learn a lot. Wait for the next posts, and you’ll understand why. 😉

See ya!

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! 😀