
| July 04, 2009 | |
| July 03, 2009 | |
GUADEC is starting tomorrow, but the GNOME Foundation was busy today with a all-day board meeting. With the election results now being official, we were able to welcome Germán and Srini.
Still, the meeting wasn't easy for everybody.




Still, you can be sure that the board is working hard for the Foundation to make sure that the GNOME project will succeed!

I just found this blog post on LXDE blog while reading LWN.net.
It made me smile because that's what Ohloh says for awesome:
Over the past twelve months, 70 developers contributed new code to awesome. This is one of the largest open-source teams in the world, and is in the top 2% of all project teams on Ohloh. For this measurement, Ohloh considered only recent changes to the code. Over the entire history of the project, 99 developers have contributed.
So awesome project is roughly twice bigger than LXDE. Impressive! 
| July 02, 2009 | |
After seeing that I possibly might have had some exploits run on my site again, I upgraded to wordpress 2.8
After reading up on hardening wordpress, the official site mentions AskApache, some plugin that helps hardening. I’m not too sure about it yet, because it wants to be writing .htaccess files in my directories and for that I have to open up more than I would want. But hey, let’s give it a go.
At some point it creates a username and password that you choose. I go on and configure stuff, not knowing very well which of its many modules I’m supposed to activate, or why.
I forget about it, and ten minutes later I check my mail. I have a mail from AskApache. With my login details. And the password in plaintext.
…
Is the WordPress security model just fundamentally broken ?


Yesterday was cause for celebration. We got together to celebrate five years of the Fluendo Group!
The picture quality is bad, and not everyone is in it, but I just took it on a whim after marveling how many people were there. I didn’t even know all of them – yes it’s gotten to that point. 67 months ago I arrived in Barcelona without the company even being created…
We celebrated with mountains of cheese and rivers of wine which in the first year would have lasted us a few weeks and now only lasted an hour.
As magical accidents sometimes happen, today is also the day Fluendo received the certification confirmation from Dolby for our DVD player. It didn’t take long to land in the webshop, so finally our DVD player is up for sale! So you know what to get us for our birthday – a shop checkout with the dvd player in your cart.
Good timing – that means that at this year’s GUADEC/Desktop Summit I know what the answer will be to one of the most asked questions I get.
This is the first GUADEC I’m going to with Kristien in tow, I hope she can manage. I’ll be there from Monday through Friday, because the week is bookended by two weddings. Looking forward to a GStreamer summit on Thursday discussing 1.0…
| July 01, 2009 | |
09:02 #dri-devel: < Weiss> awesome - first picture on the screen using KMS on my FreeRunner! :D Woo, Jan Schmidt just created a wiki page so people can register to the most important part of GUADEC: the Ice Cream Deathmatch (renamed to Ice Cream Eating Competition
, probably because Jan doesn't feel he can win ;-)). So go ahead and register! If you want to help organize this, send us a small note — we don't know yet the date or format of this competition.
Last year, the deathmatch was crazy, with Henri being stunningly fast. And fast
is actually not giving him enough credit...
So the BBC is making a new drama series about the battle between the ZX spectrum and the BBC Micro. Currently codenamed ‘Syntax Era’. As it turns out Clive Sinclair, the creator of the ZX Spectrum, had his offices very close to the current Collabora office here in Cambridge. And due to our own Edward Hervey knowing some of the people involved, the production team behind this new series came by our offices to do some location scouting some weeks ago. It is a little bit up in the air if they are going to use our offices or not in the end, but there is a chance they will, and if that happens there is also chance you might catch some familiar faces as extras in this new series
Last week was LinuxTag, in Berlin, and I went there to help with the openSUSE booth. We had a really nice booth, where people could play with laptops, try the build service or SUSE Studio. Oh, and we enjoyed writing words with magnetic letters on a board :-)
Attendees were mostly german people, of course. So it was quite funny to start talking with people in English, and have them reply in German ;-) But after some time, I got used to German again, so I could talk a bit, or at least understand what people were saying. Yes, you might not know about it, but I'm supposed to have a good level of German. Let me stress the supposed
...
Image from Adrian Schröter
This was a great opportunity to meet various people from the community. I discovered how active the people from the openSUSE Education are — quite impressive! As usual, it was good to also be able to put faces on names, and catch up with friends, or discuss various topics (login-time performance, UI design, openSUSE Conference, etc.). I definitely came back with some food for thoughts.
Sven made sure the GNOME booth was working well The stickers that GNOME-FR had printed for Solutions Linux were quite nice to have, at least I would think so ;-) At some point, Sven and I created a new lovely background for the GNOME desktop, based on Big Buck Bunny; I'm pretty sure it would make a great default background! Ah, if only I had kept a copy of it...
Among the tidbits worth mentioning, I demoed GNOME Shell to various people — mostly people from the KDE community ;-) —, and although the version I had was quite old (it was git master as of May 1st), people seemed to like it. That makes me even more confident there will be quite some positive action around GNOME Shell during the GUADEC/Desktop Summit.
Image from Adrian Schröter
All in all, this event was obviously quite some hard work for me :-)
I came back from Berlin on Sunday evening, and I'm leaving for Gran Canaria tomorrow. No need to mention that the three days between those dates were incredibly busy, if only for the part where I naively try to catch up with all mails ;-) Still, I find time to be quite excited about the Desktop Summit: it will probably be a busy week, but it'll be amazing for sure! It was also a good surprise to see people thanking the Foundation for sponsoring them to go! The travel committee did a really great job there!
See you all in Gran Canaria!
left work around 38 degrees C, got a haircut, went for some great tapas on my own reading Darkly Dreaming Dexter, went to a bar, met up with friends, an impromptu bbq plan was hatched, went to a lovely atico at Portal De L’Angel, barbecued in a soothing summer breeze, rode home on the back of a motorcycle hanging on for dear life. All in all a typical Barcelona summer Tuesday.
| June 30, 2009 | |
| June 29, 2009 | |
While searching the blogosphere for responses to the survey on Swedish culture in Finland, I came across this interesting gem [translated and commented in Finnish on Suomi 24] by Vasa Bladet columnist Kenneth Myntti.
After summarizing the findings of the survey that was conducted by Magma and the Helsinki Times, he moved on to describing my efforts for getting access to Swedish language classes and how it lead me to directly contact the Ministry of Employment on this issue.
Myntti then concludes the article by making a rather astute observation (my own translation; apologies for any inaccuracy):
Racine simply would not give up so easily. He took the initiative to approach the Ministry of Labor with a proposal that any foreigner who already passed level 4 of the National Certification in Finnish Proficiency would be admissible to study Swedish via labor training. It was he who approached the Ministry, not the Ministry who approached him.
Is this really how things are supposed to be? Are immigrants really expected to battle the bureaucracy just to become a part of this country's Swedish-speaking community?
Of course not. It should be up to us to have our own "Swedish Finn operatives" inside the bureaucracy and parliament, knocking on doors and driving changes in policy to ensure that immigrants can have the option to integrate with the Swedish-speaking part of the population, if they want to.
The Swedish language has a status that is equal to the Finnish language in this country's constitution and a direct consequence of that ought to be a possibility to take Swedish classes on equal footing with Finnish classes for those who chose to immigrate to our country.
That Swedish is considered easier to learn than Finnish should in fact increase foreigners' interest in choosing Swedish as their primary integration language.
From that perspective, we could even complement Racine's proposal by saying that any foreigner who already achieved a sufficient level of proficiency in Swedish could be offered Finnish classes afterwards.
In my opinion, Myntti is absolutely right. If Swedish's status as an official language of Finland is to have any meaning, then it must be possible to study it via Integration Act measures. However, this country's majority speaks and has always spoken Finnish. As such, I think that it makes perfect sense to put the emphasis on Finnish as the primary integration language.
Still, I'll emphasize that this doesn't dispense this Government from acquitting its constitutional obligations to safeguard the status of both official languages and, as a direct consequence, to ensure that immigrants get equal access to immigrant labor training in both national languages.
Basically, for as long as Swedish retains its official language status, there can be no excuse for preventing immigrants from getting Swedish classes via the Integration Act measures!
On the issue of whether or not Swedish should be reinstated as a compulsory subject for the matriculation exam, Prime Minister Vanhanen said in Iltasanomat that:
Youths who couldn't give a damn about studying Swedish significantly reduce their opportunities on the job market and they concede a tremendous advantage to others who do speak it.
What's interesting about Vanhanen's opinion is that, while he correctly acknowledges how a Finnish professional who doesn't master Swedish could be seriously disadvantaged on the job market, he clearly doesn't realize how an immigrant who only knows one of the official languages could similarly be affected. I wonder why...
So I got a new computer from Dell UK. Unfortunatelly it came with Windows Vista Home Premium (32-bit) SP1 and Microsoft Works 9.0, which I did not intend to use. I contacted Dell Customer Care last Wednesday and they promised to call me back to inform me of their course of action. On Thursday morning I got a call that Dell is in the process to issue the refund and that they will contact me during the coming week when they actually issue the refund. I got the call today Monday at 15:09 that the refund has been issued, £31 for Windows Vista Home Premium SP1 and Microsoft Works 9.0.

In detail, the Credit Note says
Item No. Description Quantity Unit Price Net VAT Cust Invd b4 parts recd 3rdpty -1 26.96 -26.96 S GBP VAT Summary Subtotal -26.96 Freight 0.00 VAT VAT Rate GBP GBP VAT £ -4.04 Type % Total Net £ VAT £ S 15 -26.96 -4.04 Total -31.00
Now, that was the short story for getting my Windows refund. The long story was that I had to go through several weeks of effort to figure out how to get a new computer without Microsoft software. I contacted by phone both Dell and Microsoft and I estimate I was on the phone for about four hours in total. To save you the effort, here are some tips,

By using the software, you accept these terms. If you do not accept them, do not use the software. Instead, contact the manufacturer or installer to determine their return policy for a refund or credit.. (why are there two dots? — simos)
When you first boot a new computer that has Windows pre-installed, you are presented with the above screen. Why would Microsoft give the option to reject their software? I believe the reason is that they want to enter into a contract directly with the customer, thus there is no issue with removing this facility in future versions of Windows (probably for similar reasons, Hotmail now supports POP3, apparently so that small mobile devices can retrieve e-mail. You can now migrate from Hotmail to GMail easily.). However, the whole environment is setup in such a way that virtually noone would be able to pursue a successful refund. One has to scroll the tiny text box in order to find the pictured paragraph (no option to print!). Even the Microsoft Customer Care EMEA are not aware of the option not to accept the EULA.
In your case, if you do not intend to use the pre-installed Microsoft software (apparently includes the case where you already have a license, such as an Academic License), you have the option to reject for a refund or credit. Simply press the Shutdown button and do not accept the license. Then, get on the phone.

I installed Ubuntu 9.04 (x86_64) and the computer runs fine
.
It was unexpected when Intel got a heavy fine from the EU for anticompetitive practices. Does this practice by Microsoft (making it extremely difficult to obtain a refund or credit) constitute an anticompetitive practice?
Jan and Arek entered this year’s ICFP programming contest. It’s a three day programming contest, so this morning they asked if they could swap their Friday project day for today to finish the contest. They seem to be in the top third at the moment.
Arek’s never been a fan of long meetings, but today’s standup meeting was particularly amusing with Arek urging everyone to keep focused and get out there quickly. They had less than two hours left on the clock.
Spot the seven differences
Amusingly, today they came to work with almost the same shirt on, by accident! I can only assume there is a big clothes factory in Poland where they have huge stock of the same fabric…
90 minutes left, knock them dead, guys!
mach allows you to set up clean roots from scratch for any distribution or distribution variation supported.
This release of mach contains fixes for Python 2.6, and adds Fedora 10 and 11, while fixing the archived Fedora locations.
Get it from the mach project page.
In an effort to cleanup spam telepathy wiki has been shifted to annarchy, upgraded and catchpa’s added. All spam pages have now been removed.
| June 28, 2009 | |
| June 27, 2009 | |
Still on the yak shave expedition.
I’ve written some simple scripts and files to set up and build python 2.3, 2.4, and 2.5 in separate prefixes to be able to test my software against these versions.
If you’re interested, in theory it should be really simple:
As the README says, this should go on to build all versions of python, and install some scripts.
After that, you just run py-2.3 to go into a shell with Python 2.3 on your path.
Don’t say I never did anything for you.
As part of this weekend’s yakshave, I’m trying to implement a handler for STORE_MAP in pychecker. STORE_MAP is a new opcode in Python 2.6, which speeds up dict building.
So, for the first time I went under the hood of Python and figured out just enough to understand this problem. It was a lot less scary than I thought it was going to be!
It seems that using dis.dis(), one can easily dissassemble any python function into its opcodes. This shows clearly where the behaviour is different between python 2.5 and python 2.6.
Given the following function:
f = lambda: {'a': 1, 'b': 2}
Python 2.6 gives:
1 0 BUILD_MAP 2
3 LOAD_CONST 0 (1)
6 LOAD_CONST 1 ('a')
9 STORE_MAP
10 LOAD_CONST 2 (2)
13 LOAD_CONST 3 ('b')
16 STORE_MAP
17 RETURN_VALUE
I couldn’t find a good description of the output of dis.dis, but in my naiveness I am guessing the following:
I am assuming each opcode takes one address location, and each argument takes two; that maps with the address pointers in front of the opcodes.
The opcodes are all documented.
So, in human terms:
Pretty simple, when you look at it twice.
For the same code, python 2.5 gives:
>>> dis.dis(f)
1 0 BUILD_MAP 0
3 DUP_TOP
4 LOAD_CONST 1 ('a')
7 LOAD_CONST 2 (1)
10 ROT_THREE
11 STORE_SUBSCR
12 DUP_TOP
13 LOAD_CONST 3 ('b')
16 LOAD_CONST 4 (2)
19 ROT_THREE
20 STORE_SUBSCR
21 RETURN_VALUE
This code is slightly longer and more complicated. Basically, LOAD_CONST, LOAD_CONST, STORE_MAP was implemented with DUP_TOP, LOAD_CONST, LOAD_CONST, ROT_THREE, STORE_SUBSCR
It looks like DUP_TOP was needed because STORE_SUBSCR consumes the dictionary off the stack, and ROT_THREE is needed because the arguments are pushed on the stack in the wrong order.
Seems like a nice and obvious improvement once you understand it. An exercise for the reader is to profile whether this change actually makes things faster in practice.
So, where does this leave me for pychecker ? It now looks deceptively simple. STORE_MAP simply pops off two items of the stack. There is nothing to check for, since we’re in a dictionary context. So all my implementation needs to do is to pop 2 items off the stack, and that’s it.
And thus it was commited to pychecker CVS. Popping one item off the yak stack!
Next step on this weekend’s yakshave: a first implementation of moap vcs bisect!
The interface is lifted from git, obviously, since that’s where most people will know the feature from.
I implemented it first with CVS, so I could fix this pychecker bug which was blocking Fedora from bumping the pychecker version from 0.8.17 (3 years old) to 0.8.18. And sure enough, it picked out the commit I broke.
While implementing and while dealing with CVS’s idea of how it stores CVS revisions and dates and so on, I googled and was amused to find this first hit on google for the words cvs and bisect. Clever Andy! And he cleverly sidestepped the problem I wrestled with by making the user specify two dates at the start instead of trying to figure it out from the checkout. And all in lisp too!
Then, to test that my VCS interface was sane, I implemented it for Subversion as well. That took about 15 minutes, since Subversion is much more sane than CVS. I tried the following command on a flumotion checkout:
moap vcs bisect reset; moap vcs bisect start; svn up; moap vcs bisect good; svn up -r 3000; moap vcs bisect bad; MOAP_DEBUG=4 moap vcs bisect run ./test.sh
With test.sh containing
test -e flumotion/component/consumers/gdp/gdp.py
(In other words, look for the commit that added this file.)
Sure enough, it picked out this commit:
[moap-trunk] [thomas@ana flumotion]$ moap vcs bisect diff
Index: /home/thomas/tmp/flumotion/configure.ac
===================================================================
--- /home/thomas/tmp/flumotion/configure.ac (revision 6909)
+++ /home/thomas/tmp/flumotion/configure.ac (revision 6908)
@@ -212,7 +212,6 @@
flumotion/component/combiners/switch/Makefile
flumotion/component/consumers/Makefile
flumotion/component/consumers/disker/Makefile
-flumotion/component/consumers/gdp/Makefile
flumotion/component/consumers/httpstreamer/Makefile
flumotion/component/consumers/preview/Makefile
flumotion/component/consumers/shout2/Makefile
Index: /home/thomas/tmp/flumotion/flumotion/component/consumers/Makefile.am
===================================================================
--- /home/thomas/tmp/flumotion/flumotion/component/consumers/Makefile.am (revision 6909)
+++ /home/thomas/tmp/flumotion/flumotion/component/consumers/Makefile.am (revision 6908)
@@ -11,7 +11,6 @@
SUBDIRS = \
disker \
- gdp \
httpstreamer \
preview \
shout2
Index: /home/thomas/tmp/flumotion/ChangeLog
===================================================================
--- /home/thomas/tmp/flumotion/ChangeLog (revision 6909)
+++ /home/thomas/tmp/flumotion/ChangeLog (revision 6908)
@@ -1,16 +1,5 @@
2008-06-20 Thomas Vander Stichele <thomas at apestaart dot org>
</thomas>
- * configure.ac:
- * flumotion/component/consumers/Makefile.am:
- * flumotion/component/consumers/gdp (added):
- * flumotion/component/consumers/gdp/gdp.py (added):
- * flumotion/component/consumers/gdp/__init__.py (added):
- * flumotion/component/consumers/gdp/Makefile.am (added):
- * flumotion/component/consumers/gdp/gdp.xml (added):
- Add a GDP consumer.
-
-2008-06-20 Thomas Vander Stichele <thomas at apestaart dot org>
-
* flumotion/component/producers/gdp/gdp.py:
Add error for http://bugzilla.gnome.org/show_bug.cgi?id=532364
</thomas>
So, the feature is ready for testing. It could use some more documenting, and some additional goodies like accepting arguments to moap vcs bisect start for example.
Feedback appreciated!
The yak shave started yesterday evening. The yak stack is actually a forked one this time, both of the forks involving pychecker.
I might not remember everything in order, but in a nutshell the stack is something like this:
Fork point 1 continues here:
Fork point 2 continues here:
ef func():
d = { 'a': 1, 'b': 2}
print d.keys()which triggers, in python 2.6, the following warning:
Object (d) has no attribute (keys)
I’ll blog about the useful products of my yak shave separately, for those who don’t enjoy descriptions of yak shavings, only outcomes.
In general, I actually enjoy yak shaves. They’re massive treasure hunts, you learn a lot, and you end up fixing a nice bunch of things all over the stack if you persevere. But it’s probably more a mentality thing than anything else, and I really only indulge myself in these in my spare time.
So in preparation for heading of to Gran Canaria and GUADEC on Thursday I pushed a new Transmageddon release today. 0.11 is actually the first release I posted to sites such as Gnomefiles and Freshmeat so in some sense I guess I feel more confident about this version that earlier ones. A lot of new features included, like multipass encoding, videoflipping (so if your video is 90 degrees tilted you can correct that during transcoding) and better profiles. Still kinda rough at the edges though, and the very latest GStreamer releases are needed for everything to work. Still expecting quite a few bugs to be reported still.
In some sense development have stood still for a while as I have focused on testing various devices and GStreamer features. Remuxing is still on my todo list, but discovered that for instance an ac3parser is still needed in GStreamer to
do nice DVD conversions.
Was kinda nice to successfully use Transmageddon for a business related need at work, we had gotten a request at Collabora Multimedia which meant I needed to transcode a video into quicktime+h264+aac from a .vob file. Worked like a charm
I mean while I have of course done hundred of transcodes as part of development, it was nice to do one for something ‘real’
My awesome sister-in-law Suzy is in Ayacucho, Peru, volunteering for Kiva for around nine months. One of the difficulties with poverty relief charities is that people feel a disconnect between their donation and the result, and Kiva works around this problem by personalizing the process of making a loan to a specific entrepreneur. Kiva also empowers recipients by organizing loans that the recipients are expected to pay back.
Suzy's working with a local microfinance organization, interviewing potential borrowers and uploading their profiles to the main Kiva site for lenders to see. She's posted twice to the main Kiva Fellows blog now, and I hereby humbly present her posts. You should read them.
| June 26, 2009 | |
After a time, this results in even more damage. People stop scheduling meetings with this person. They stop traveling to their part of the building and, again, I’m not talking about one or two people here, I’m talking about the majority of the team."
** WARNING **: Entry 'DBusGProxy' not foundIf somebody knows...
| June 24, 2009 | |
moap is a swiss army knife for maintainers and developers.
This is MOAP 0.2.7, “MMM…”.
Coverage in 0.2.7: 1424 / 1899 (74 %), 109 python tests, 2 bash tests
Features added since 0.2.6:
- Added moap vcs backup, a command to backup a checkout to a tarball that
can be used later to reconstruct the checkout. Implemented for svn.
- Fixes for git-svn, git, svn and darcs.
- Fixes for Python 2.3 and Python 2.6
I’ve been fixing things left and right for python 2.6, and in the process I noticed that moap hasn’t had a release for over a year. This release contains mostly bug fixes collected over the year, and a new feature that isn’t implemented yet for all VCS’s. Basically it’s an automatic replacement for something I was doing manually every time I removed an old GNOME cvs/svn/git checkout: figure out what’s in that tree that’s not in the repository (diffs, unversioned files, …), so I can delete everything else and free some disk space.
The only problem with this release is that, after doing the release, I noticed that Freshmeat removed their XML-RPC interface. Apparently they have some new kind of interface they want people to use. Sigh. But that means 0.2.8 is right around the corner!
Last week, after upgrading my home desktop to F11, I had palimpsest tell me one of my disks was broken on the desktop machine. The desktop is running on two 250 GB drives in software raid. It was time to get new drives.
After a weekend of fiddling with new 1 TB disks for my home desktop, trying failure scenarios, making sure the system can boot from each of the two drives, and waiting for the 4 hour resync of the software RAID in between each step, I finally closed up the desktop machine and cleaned up under my desk again, thinking I was done with my halfyearly messing about with broken disks.
I guess I was tempting faith anyway. Doing a routine operation on my home server after all the configuration stuff I’d done to set up asterisk last week, suddenly an rsync aborted, a journal errored out, a partition changed to being mounted read-only, and the log was full of scary drive errors. Ouch.
Well, that’s why I keep around a big box of old drives - for when some drive fails and I want to tempt fate even more by reusing an old drive that’s probably going to fail real soon too. And anyway, I had just spent my hard drive piggybank on the new desktop drives.
Luckily, I seemed to have a 400 GB SATA drive lying around that used to belong to my media center. I don’t remember why I swapped it out, given that the media center has a 160GB drive for the OS (and two 1.5 TB raid drives for the data, of course), but this was a lucky break. I booted with a rescue cd, and tried copying the root filesystem of my CentOS 5.2 home server partition to this new drive. Which worked fine, except that /var was where I triggered an Input/Output error and some more drive errors in the kernel log.
So, powered off, took out the broken drive, and put it in a USB chassis. The advantage of a USB chassis is that you can easily just replug the drive to try again, instead of locking up your system terribly and having to reboot. Sadly, /var was broken beyond repair. I ran an e2fsck hoping to recover the contents, and that partly worked, but some of the important stuff is missing even from lost+found (apart from the annoying situation where you have to reconstruct file names, which I usually end up not bothering with).
But really, how important can /var be ? Turns out, rather important. As in, you need it to boot in the first place. And also, it holds your rpm database. Crap.
Some Googling gave me some posts on how to reconstruct your rpm database from log files (using –justdb –noscripts –notriggers). But to use those, you actually need those log files. Where are those ? On /var as well. Crap. And they’re not in lost+found either.
Ok, so time to get creative. Here’s what I ended up doing:
rpm -qf /etc/* | grep 'not owned' | cut -f2 -d' ' > /tmp/unowned
yum --enablerepo=c5-media --disablerepo=base --disablerepo=updates --disablerepo=addons --disablerepo=extras whatprovides `cat /tmp/unowned` | cut -f1 -d' ' | sort | uniq > /tmp/missing
yum --enablerepo=c5-media --disablerepo=base --disablerepo=updates --disablerepo=addons --disablerepo=extras install `cat /tmp/missing`This works by first listing all files that are not owned by rpm (on the first run, that’s all of them), figure out what packages can provide these files, then installing those packages.
find / -name *.rpmnew | sed s/.rpmnew//g > /tmp/rpmnew
for c in `cat /tmp/rpmnew`; do echo $c; diff $c $c.rpmnew && mv -f $c.rpmnew $c; donefind / -name *.rpmorig | sed s/.rpmorig//g > /tmp/rpmorig
for c in `cat /tmp/rpmorig`; do echo $c; diff $c $c.rpmorig && mv -f $c.rpmorig $c; doneWhile it’s not an experience I hope to repeat any time soon, it worked out surprisingly well!
I managed to completely skip updating to F10. All my machines (work desktop, home desktop, laptop, media center) where running F9 without any real problems I worried about.
But of course I was curious. And, especially with the move to python 2.6, things I care about where bound to break.
So, last weekend I took the plunge, and after little over a week here are my first impressions:
I am not entirely sure what the security problems are with enabling the network after installation. The default firewall is pretty locked down, SELinux is enabled by default, and there’s no way I can install updates without the network anyway. But I’m sure that I could find huge bikeshedding threads on fedora-devel about this if I really cared why this was decided.
All in all, not a bad first week experience, and seems like a solid release. Now, off to rebuild bits and pieces, and clean up Python 2.6 deprecation warnings…

| June 23, 2009 | |
Hey everyone, my two roommates are moving out to be closer to the city. Those who have been to my place know it is an amazing apartment in North Cambridge, MA with a five minute walk to the Alewife T station. If you are looking to move or know someone who needs a place let me know. The lease is for a year and is super inexpensive at $635 a month per person plus utilities.
Oh and you will have to like dogs since Ty is staying too
| June 22, 2009 | |
The Open Video Conference just ended yesterday. I attended the first two days and just stopped in briefly during the hack-fests yesterday before having brunch with some old highschool friends and heading back to my parents house where my dog and car were stashed.
I can say without a doubt the turnout was amazing and even though not everything I heard all weekend was positive it was a giant leap forward in then understanding of the importance of Open Video and culture. I won’t put a figure on how many people attended but some of the upstairs talks were standing room only and after the first day some of the organizers were lamenting that then needed to get bigger rooms (consequently some of the talks were swapped the next day). Speaking about the organizers, they ran an incredibly smooth ship and should be thanked and praised for their efforts.
I was mainly there looking to see what video producers wanted from FOSS application developers and to support the PiTiVi/GStreamer teams on behalf of the GNOME Foundation. It is amazing to see the PiTiVi non-linear video editing app at such a usable state. While Edward Hervey (bilboed on irc) gave his mini presentation on PiTiVi I was busy hacking up a “How To Make Chocolate Truffles” video from pictures and clips I had laying around.
Afterwards I showed him some of the bugs I encountered in the 0.13.1 release and he just rattled off, fixed in git, fixed in git, fixed in git…etc. Sadly the releases are tied to GStreamer releases (which is a good thing from a development/bugs standpoint but not so good from a user standpoint given the early stages of PiTiVi) so we won’t see an official release soon. I plan on trying to automate a Fedora Repository at some point just to be able to view the progress without breaking my system.
The point is PiTiVi is about 90% there (and perhaps 100% in git) to be able to support my needs for basic video editing in terms of stability and basic tools. That should be pretty reflective of those who need to do things like screen casting and interview style video blogs. Some advanced features like effects (look at Cheese for some examples of this already working in an app) already exist in GStreamer and just need to be integrated in PiTiVi’s UI and rendering pipeline.
There was also a show of Cinelarra but more interesting is the GTK+ fork Lumiera which unfortunately is not usable yet but the direction they are going in (GTK+ interface and some GStreamer integration) looks like a great re-start in the case of pro level editing tools.
Also of interest in the pro level space was Blender which seems to be the pro project with the most momentum and features for pro’s. At least that was the initial reaction from some on the Red Hat media team. The dev’s did admit that the functionality is limited to what they needed during production of Big Buck Bunny (and other productions currently in the queue) but that in those areas it is rock solid. It is interesting to see a UI designed with different usability profiles. For instance one of Blender’s usability criteria is the avoidance of repetitive strain injury. To combat RSI mouse clicks are evenly divided between left and right mouse clicks.
Bassam Kurdali, one of the Blender developers and animators, came up to me later in the conference and said he had noticed me using PiTiVi to edit my video. He was impressed at the simplicity and slickness of the interface and how far along it is. There is plenty of room for different approaches and a real potential for cross pollination between the pro tools and the every day end user tools.
Speaking of end users we got to hear from a bunch of them who let us know how we could support them. One of the biggest themes was that Windows tools suck and those who taught others couldn’t just tell them to go out and buy a mac (praises were heaped on iMovie and Final Cut Pro). They really want an easy to use tool, with the unfortunate note that it would have to run on Windows. One really good thing is that a lot of the non-tech content producers understood the need for free codecs. However in the end they just want a simple way to render down to DVD, You Tube, Daily Motion, iPhone, etc. and don’t want to deal with formats.
I ended up collecting a bunch of buisness cards and am toying with the idea of starting a feedback group with content producers which would get them involved in improving GNOME App usability from the perspective of those who are not yet familiar with the GNOME workflow. If we are serious about expanding our reach we need to go beyond our current self selecting internal feedback loops. The goal wouldn’t be to get these people using GNOME (though giving them a way through the apps wouldn’t be a bad thing). It would be more about getting groups outside of GNOME/Linux to be part of the process of improving GNOME. Will it be fruitful? I don’t know but it is an interesting experiment with a potential huge payoff for a little bit of effort.
This good section wouldn’t be complete without the mention of Sita Sings the Blues by Nina Paley which is a feature length (82 minutes) animated film released under the Creative Commons Attribution-Share Alike 3.0 United States License. You have complete rights to watch, screen, remix and redistribute the film as long as you abide by the license. I do suggest you watch it and if you like it buy the DVD or simply donate to encourage more works like this (I bought the DVD for $20). Not only is Nina a content producer but she is heavily involved in advocating her distribution methods, going as far as documenting the process that went into releasing Sita under a creative commons license and in her work with QuestionCopyright.org.
I was very impressed with Mozilla’s involvement and their push for Ogg Theora to become a base line codec for the HTML 5 video tag. They are also helping launch the upcoming Open Video Contest which would see the winner flown to the 2010 South by Southwest conference. We should probably run some sort of sister contest to encourage GNOME users to submit entries.
It wasn’t all roses. While I feel we are reaching independent content producers way more than I would have though at this point, some of the big companies still don’t get it or are afraid of Open Video implications.
It must be said that Adobe has been somewhat good at working with the community over long periods of time but that they just never get around to resolving key issues. What really surprised me was when on one of the industry round tables the Adobe representative pointed to their release of the Flash documentation as a shining example of this relationship. After checking with a developer of an alternative flash implementation I was told those documents are pretty much useless. Due to bugs, some of the spec just doesn’t work as written and other issues makes it impossible to write a third party Flash player.
While reportedly Chrome will ship with Ogg Theora support their flagship video site YouTube seems afraid to do so. Their rep at the round table stated some pretty audacious things such as continuing the myth that Theora wasn’t good enough when clearly that argument was directly debunked (the side by side comparisons were even playing on HDTV’s at the conference).
Even more of an issue was the representative’s idea on what Open Video meant. He declared that they would love to support Open Video but that it meant letting anybody do whatever they wanted and that doesn’t work from a buisness perspective.
Open Video isn’t about wild west, trample on rights. If anything it is about balancing the rights of content producers, end users and fair use. From what I read, YouTube’s position is that they are the 1000 pound gorilla in video distribution and at the end of the day they only believe in a user’s and content producer’s freedoms if it is walled behind their own servers. “All the world’s video” indeed.
The solution there is to drive traffic to sites like Daily Motion and Blip.tv which understand the issues involved.
Nothing is perfect, but we are off to a really good start. In the end it is up to us to keep the momentum going and eventually produce a better experience within the complete Open Video stack, from content production to delivery. The web was built and exploded around the concept of open technology. Let’s continue to make sure this is the case going forward. The last thing we want is the web to become the domain of a few, with creativity being stifled by restrictions in the non-open parts of the stack.
[read this post in: ar de es fr it ja ko pt ru zh-CN ]A few days ago, we released version 2.11.3 of the Geode X.org driver. As you'll notice from the version number, this is only a maintenance release, mainly to fix crasher bugs that appeared since X.org server core 1.6 was released.
Meanwhile, Otavio Salvador has been busy cleaning up our GX2 support and, in the process, he also found a few interesting regressions that affect LX support as well.
Unfortunately, our goal to integrate GX1 support into our unified Geode driver still hasn't been reached, due to a lack of resources: most people who knew anything about GX1 and SC Geodes and who had access to development hardware have moved on. As such, help to complete this goal is extremely welcome.
| June 21, 2009 | |
.In VMware, Palo Alto, we evaluated Clonezilla for Imaging different Linux distributions like openSUSE, SLED, Ubuntu, RHEL, Fedora, Madriva. Some success stories:
Took Ubuntu image on DELL 390 Intel single processor, first hard disk and restored it in HP AMD Athlon Dual processor, second hard disk using Clonezilla Live CD and worked awesome ! The restore times took approx 2 minutes 12 seconds. The system is usable now ! wow !! I didn't expect this to work, to be frank :) This is with regular partition.
Also, tried with Fedora LVM image, with different hard disk size, this failed, I assume this is due to LVM, though I'm not sure.
Next tried creating Windows XP SP2 32bit image from DELL 390 and deployed it on DELL 3400 based on the info available here and here and it worked amazingly !
Great work Clonezilla team
Philip proposes that we should modify the entire human race for them to have fewer possibilities to reproduce as a measure of birth control. As a prerequisite you will need to modify every single newborn, if we had the resources to influence how every single new person is born, we would actually be at the point where we could stop thos non desired borns in a much simpler way...
Anyway, there's an easier way that actually has many other upsides. Philip, let's solve poverty instead of proposing sci-fi :-)
| June 20, 2009 | |
A while back I was celebrating that arrival of secure realtime scheduling for the desktop. As it appears this was a bit premature then, since (mis-)using cgroups for this turned out to be more problematic and messy than I anticipated.
As a followup I'd now like to point you to this announcement I posted to LAD yesterday, introducing RealtimeKit which should fix the problem for good. It has now entered Rawhide becoming part of the default install (by means of being a dependency of PulseAudio), and I assume the other distros are going to adopt it pretty soon, too.
Check out this 1991's video, starting minute 23. We are in 2009 now. After you've watched it, repeat with me:
| June 19, 2009 | |
After updating to Fedora Core 11 I noticed a new feature, the automatic font download system. Essentially it works like the automatic codec download system we have in GStreamer, but for fonts.
So judging by how often the font download box pops up the spam I am getting these days seems to be mostly in 3 languages Coptic, Syriac and N’Go
I have to assume the spams are using random character sets to confuse spam filters, as I doubt that for instance either the ancient egyptians or their Coptic descendants of today are a big enough demographic for the spammers of the world
After some situations at work this week where I lost time where I really shouldn’t have had to, combined with the observation that I get more useful strategic work done at home in Belgium, and because practically speaking going to Barcelona next week would be silly given that I can only leave on Monday and Wednesday is a day off (which I loathe - San Joan, the most dangerous night in Barcelona), I decided to stay home next week and compensate by fixing my phone setup.
You see, the only really annoying thing is that any conference call I end up in is terrible because I have a really hard time hearing the other side through either my mobile or my fixed phone, as the audio cuts out several times a second.
So, I spent a few hours yesterday first setting up the VPN, which aside from some minor issues seems to be working fine now. This was apparently a prerequisite for setting up asterisk because asterisk needs a fixed IP address or something I’ve been told.
After that, I started setting up Asterisk so that I could use the same THOMSON phone we have at work from home and call people in the office over it.
All of that is not what this post is about though.
This post is about the TFTP tricks and things I always need to re-learn any time I meddle with tftp. I’m putting them here because Google usually doesn’t find the problems and solutions I come up with, so maybe they’re of use to you if you play with TFTP. They will definately be of use to me next time I mess with tftp.
tcpdump | grep tftptftp localhost -c get testIdeally, you should get Error code 1: File not found back immediately.nmap -sU -p 69 server which should come back with 69/udp open|filtered tftp. If it doesn’t, you probably didn’t open 69/UDP on your server’s firewall. You can confirm by just turning off your firewall on the server for a quick test.tftp server -c get test. This should error out immediately as well. If it doesn’t, it’s probably because your test machine does not allow tftp in. Confirm simply by turning off your firewall. The simplest way to fix this is to load the tftp connection tracking module: modprobe nf_conntrack_tftp. This makes sure that your machine knows to accept the reply tftp request coming in on a random port. On Fedora/RedHat systems you can make this permanent by adding it int /etc/sysconfig/iptables-config to the IPTABLES_MODULES variable. This is the number one thing I keep forgetting when debugging tftp troubles.restorecon -vR /tftpbooton the server for that. You can always confirm or deny whether SELinux is giving you trouble by temporarily turning it off. My auditd (the process that logs SELinux violations to /var/log/audit/audit.log) sometimes stops logging properly to the log file, and I need to restart it in that case. It’s easy to spot when auditd is misbehaving because by default it even logs replies to calls like setenforce 0.ln -sf /phone/phone.inf /tftpbootso that the symlink will work for tftpd.in This is one of those steps that I completely forget every time too.Well, that should be it for the next time I have tftp troubles!
| June 18, 2009 | |
static void print_info(XIDeviceInfo *info)
{
int i;
XIAnyClassInfo **classes = info->classes;
printf("\tReporting %d classes:\n", info->num_classes);
for (i = 0; i info->num_classes; i++) {
switch(classes[i]->type) {
case XIButtonClass:
print_button_class((XIButtonClassInfo*)classes[i]);
break;
case XIKeyClass:
print_key_class((XIKeyClassInfo*)classes[i]);
break;
case XIValuatorClass:
print_valuator_class((XIValuatorClassInfo*)classes[i];
break;
}
typedef struct
{
int type;
int sourceid;
int num_buttons;
Atom *labels;
XIButtonState state;
} XIButtonClassInfo;
typedef struct
{
int type;
int sourceid;
int num_keycodes;
int *keycodes;
} XIKeyClassInfo;
typedef struct
{
int type;
int sourceid;
int number;
Atom label;
double min;
double max;
double value;
int resolution;
int mode;
} XIValuatorClassInfo;
| June 17, 2009 | |
| June 16, 2009 | |


In case you’ve been hiding under a rock for the last several months, I’d like to remind you that the Linux Plumbers Conference is currently soliciting submissions for the following tracks:
I’m particularily interested in submissions around the changes in the Linux desktop, past present and future. We’re seeing all kinds of new Linux-based user interfaces around these days, and I’d like to hear about where things are going, from both the hardware and software perspective. It’s Plumbers, so sessions which will generate active discussion among the participants are the best kinds.
As appears the tradition with Linux conferences, we’ve received numerous requests for “just a bit more time” in the submission process, and so the deadline has been extended from today until next Monday, June 22nd. Please head on over to the submission page and make sure we know you’re interested in contributing.
| June 15, 2009 | |
Whoever defines awesome as a tiling window manager should think twice before saying such a thing.
In that case, I'll change some software description also:
A software being able to do something do not mean that the software is meant to be something. You can browse FTP servers with Firefox, but it's not mainly a FTP browser. You can send mails with Thunderbird, but it's not mainly what it does. You can edit text with OOo, but also do some spreadsheets stuff. You can play games with GNOME, but you can also do plenty of others stuff. You can write Zope and its applications with Python, but that does not mean Python is Zope.
So you can definitively do tiling window management with awesome, but you can do a lot more. It's not its primary feature. So it's not a tiling window manager.
| June 13, 2009 | |
In february, I made a post about how nice a proper Windows port of evince could be. Well, seems like some lads have been actually working on it in the meantime and finally all the patches to make it work are in place. Special mentions goes to Alan Horkan for starting the ball rolling, Hib Ebris for doing all the work and Carlos Garcia Campos for reviewing and committing all the patches.

Trying to get a handle on 2D graphics rendering performance can be a difficult task. Obviously, people care about the performance of their 2D applications. Nobody wants to wait for a web browser to scroll past tacky banner ads or for an email client to render a screen full of spam. And it's easy for users to notice "my programs aren't rendering as fast with the latest drivers". But what developers need is a way to quantify exactly what that means, in order to track improvements and avoid regressions. And that measurement is the hard part. Or at least it always has been hard, until Chris Wilson's recent cairo-perf-trace.
Various attempts at 2D-rendering benchmark suites have appeared and even become popular. Notable examples are x11perf and gtkperf. My claim is that these tools range from useless to actively harmful when the task is understanding performance of real applications.
These traditional benchmarks suites are collections of synthetic micro-benchmarks. Within a given benchmark, some tiny operation, (such as "render a line of text" or "draw a radio box"), is performed hundreds of times in a tight loop and the total time is measured. The hope is that these operations will simulate the workload of actual applications.
Unfortunately, the workload of things like x11perf and gtkperf rarely come close to simulating practical workloads. In the worst case, the operation being tested might never be used at all in modern applications, (notice that x11perf tests things like stippled fills and wide ellipses which are obsolete graphics operations). Similarly, even if the operation is used, (such as a GTK+ radio button), it might not represent a significant fraction of time spent rendering by the application, (which might spend most of its time drawing its primary display area rather than any stock widget).
So that's just the well-known idea to not focus on the performance of things other than the primary bottlenecks. But even when we have identified a bottleneck in an application, x11perf can still be the wrong answer for measurement. For example, "text rendering" is a common bottleneck for 2D applications. However, a test like "x11perf aa10text" which seems like a tempting way to measure text performance is far from ideal. This benchmark draws a small number of glyphs from a single font at a single size over and over. Meanwhile, a real application will use many glyphs from many fonts at many sizes. With layers and layers of caches throughout the graphics stack, it's really not possible to accurately simulate what "text rendering" means for a real application without actually just running the actual application.
And yes, I myself have used and perhaps indirectly advocated for using things like x11perf in the past. I won't recommend it again in the future. See below for what I suggest instead.
For 3D performance, everybody knows this lesson already. Nobody measures the performance of "draw the same triangles over and over". And if someone does, (by seriously quoting glxgear fps numbers, for example), then everybody gets a good laugh. In fact, the phrase "glxgears is not a benchmark" is a catchphrase among 3D developers. Instead, 3D measurement is made with "benchmark modes" in the 3D applications that people actually care about, (which as far as I can tell is just games for some reason). In the benchmark mode, a sample session of recorded input is replayed as quickly as possible and a performance measurement is reported.
As a rule, our 2D applications don't have similar benchmark modes. (There are some exceptions such as the trender utility for mozilla and special command-line options for the swfdec player.) And coding up application-specific benchmarking code for every interesting application isn't something that anyone is signing up to do right now.
Over the past year or so, Chris "ickle" Wilson has been putting a lot of work into a debugging utility known as cairo-trace, (inspired by work on an earlier tool known as libcairowrap by Benjamin Otte and Jeff Muizelaar). The cairo-trace utility produces a trace of all cairo-based rendering operations made by an application. The trace is complete and accurate enough to allow all operations to be replayed with a separate tool.
The cairo-trace utility has long proven invaluable as a way to capture otherwise hard-to-reproduce test cases. People with complex applications that exhibit cairo bugs can generate a cairo-trace and often easily trim it down to a minimal test case. Then after submitting this trace, a developer can replicate this bug without needing to have a copy of the complex application nor its state.
More recently, Chris wrote a new "cairo-trace --profile" mode and a tool named cairo-perf-trace for replaying traces for benchmarking purposes. These tools are currently available by obtaining the cairo source code, (either from git or in the 1.9.2 development snapshot or eventually the 1.10 release or later). Hopefully we'll see them get packaged up so they're easier to use soon.
With cairo-perf-trace, it's a simple matter to get rendering performance measurements of real applications without having to do any modification of the application itself. And you can collect a trace based on exactly the workload you want, (as long as the application you are interested in performs its rendering with cairo). Simply run:
cairo-trace --profile some-application
Which will generate a compressed file named something like some-application.$pid.lzma. To later benchmark this trace, first uncompress it:
lzma -cd some-application.$pid.lzma > some-application.trace
And then run cairo-perf-trace on the trace file:
cairo-perf-trace some-application.trace
The cairo-perf-trace utility will replay several iterations of the trace, (waiting for the standard deviation among reported times to drop below a threshold), and will report timing results for both the "image" backend (cairo's software backend) and whatever native backend is compiled into cairo, (xlib, quartz, win32, etc.). So one immediately useful result is its obvious to see if the native backend is slower than the all-software backend. Then, after making changes to the graphics stack, subsequent runs can be compared to ensure regressions are avoided and performance improvements actually help.
Finally, Chris has also established a cairo-traces git repository which collects useful traces that can be shared and compared. It already contains several different browsing sessions with firefox, swfdec traces (one with youtube), and traces of poppler, gnome-terminal, and evolution. Obviously, anyone should feel free to generate and propose new traces to contribute.
In the few days that cairo-perf-traces has existed, we're already seeing great results from it. When Kristian Høgsberg recently proposed a memory-saving patch for the Intel driver, Chris Wilson followed up with a cairo-perf-trace report showing that the memory-saving had no negative impact on a traced firefox session, which addressed the concern that Eric had about the patch.
As another example, we've known that there's been a performance regression in UXA (compared to EXA) for trapezoid rendering. The problem was that UXA was allocating a pixmap only to then use software-based rasterization to that pixmap (resulting in slow read-modify-write cycles). The obvious fix I implemented is to simply malloc a buffer, do the rasterization, and only then copy the result to a pixmap.
After I wrote the patch, it was very satisfying to be able to validate its real-world impact with a swfdec-based trace. This trace is based on using swfdec to view the Giant Steps movie. When running this trace, sysprof makes it obvious that trapezoid rendering is the primary bottleneck. Here is the output of cairo-perf-trace on a GM965 machine before my patch:
[ # ] backend test min(s) median(s) stddev. count
[ 0] image swfdec-giant-steps 45.766 45.858 0.11% 6
[ 0] xlib swfdec-giant-steps 194.422 194.602 0.05% 6
The performance problem is quite plain here. Replaying the swfdec trace to the X server takes 194 seconds compared to only 45 seconds to replay it only to cairo's all-software image backend. Note that 194 seconds is longer than the full video clip, meaning that my system isn't going to be able to keep up without skipping here. That's obviously not what we want.
Then, after my simple just-use-malloc patch I get:
[ # ] backend test min(s) median(s) stddev. count
[ 0] image swfdec-giant-steps 45.792 46.014 0.37% 6
[ 0] xlib swfdec-giant-steps 81.505 81.567 0.03% 6
Here the xlib result has improved from 194 seconds to 81 seconds. That's a 2.4x improvement, and fast enough to now play the movie without skipping. It's very satisfying to validate performance patches with real-world application code like this. This commit is in the recent 2.7.99.901 or the Intel driver, by the way. (Of course, there's still a 1.8x slowdown of the xlib backend compared to the image backend, so there's still more to be fixed here.)
The punchline is that we now have an easy way to benchmark 2D rendering in actual, real-world applications. If you see someone benchmarking with only toys like x11perf or gtkperf, go ahead and point them to this post, or the the cairo-perf-trace entry in the cairo FAQ, and insist on benchmarks from real applications.
| planet.fd.o | ||
|
planet.freedesktop.org is powered by Planet,
and the freedesktop.org community.
|
||
| Planetarium | ||
|
Planet Debian Planet Fedora Planet Gentoo Planet GNOME Planet GStreamer Planet IM Planet Jabber Planet KDE Planet Kernel Planet Mozilla Planet OpenOffice.org Planet SuSE Planet Xiph |
||