Going to GUADEC

I decided to go to GUADEC this year. My employer was also convinced it’s a good idea so I’m even getting sponsored for it. Traveling expenses, food, the hotel and the conference price for professional GNOME Foundation members are being payed by my employer. Thanks :-).

I’ve been to all FOSDEM‘s (Brussels). I’m hoping the GUADEC meeting will be even more technical. So even more programmers and even more interesting discussions and presentations from GNOME developers. If I checkout the planned schedule, I’m confident I’ll be satisfied.

One of my colleagues, Bjorn Monnens, will be joining me. He’s mainly interested in the Nokia, Eclipse and Java talks. He works as a Java and .NET developer for our GIS-group. So that’s probably his reasoning. He’s also getting interested in different opensource (free software) projects. So it isn’t a bad idea to invite him, right?

I’ll be visiting Keiths talk about fdo, Fresh and new evolution maintainer Harishs Eplugin talk, Owens talk about Cairo, Wims talk about GStreamer, Roberts fast and slick talk, Damiens talk about gnomemeeting (so that I can explain my girlfriend why it often doesn’t work), Jons talk about Beagle, Federicos talk about Mono, Thomas talk about Flumotion and probably many many more lightning talks and/or other non scheduled talks.

Multithreaded GLib applications

Okay. I learned this the hard way: Never use the pthread API in glib applications. Use the GThread stuff! For example will the GList type reuse memory from the memory pool (the GAllocator stuff). This memory pool is locked using G_LOCK macros. If you didn’t launch g_thread_init(NULL), those macros won’t really lock the code-parts that ought to be locked. Therefor won’t the GList be threadsafe. So filling multiple glists in multiple threads can (and probably will) cause race conditions.

The GThread stuff will wrap pthread functions on platforms that use pthread as threading implementation. It doesn’t support the pthread_cancel() function. But then again, is the cancellation of threads not a clever thing to do. It’s better to implement cancelling of parallel procedures by checking some condition that might have been set by another thread (and returning or g_thread_exit in the thread that is to be cancelled).

“Linux Kernel Development” by Robert Love

I received my copy of “Linux Kernel Development” by Robert Love from Amazon. Started reading it. I even reached chapter seven by now! It’s a good book, easy and fun to read. For example when Robert starts to describe bottom halves (like) softirqs and tasklets and how important it is to use tasklets rather than softirqs. That chapter is a little bit subjective but for sure fun to read.

For example on page 96: To further confound the issue, some people refer to all bottom halves as software interrupts or softirqs. Ignore those people. They run with the same crowd that named the BH and tasklet mechanisms.

And on page 97: Some people also confusingly call all bottom halves “softirqs,” but they are just being annoying.

Okay. I get the point :-). Not all bottom halves are softirqs! Your code should be using tasklets (unless you have a really good reason for using softirqs) and tasklets are in fact build upon softirqs. (Did you really need 20 pages to explain that Robert?)

Going to start reading about Work Queues now.

A generic desktop application configuration management system

Since people started blogging about this[1], I feel I have to respond in blog-fashion. I’m probably wrong about that, but oh well. It won’t hurt much. So far I never used my personal blog-space for this type of discussions so bear with me.

I’ll introduce myself first: Yes, I’m one of the people who are actively discussing the requirements and design of a possible generic desktop application configuration management system dubbed D-Conf. In fact, I’m the person who started collecting some of the requirements using this wiki. This doesn’t mean I’m the only person. I’m not.

So whats the status? So far have a few people added and/or corrected both views and real requirements to this wiki-page. Some xdg-list quotes from developers of important applications have been used to form some requirements. Other requirements listed on the wiki-page originate from the many many discussions and threads that popped up on the xdg-list about this subject. So you’d say the project has most of the requirements, why isn’t development starting? It’s a good question.

And it has a simple answer:

First does the wiki-page need some Guassian filtering on the collected requirements. And a project leader would need to select which requirements will become the features of the first releases.

And second so far nobody in the group of interested people is qualified to actually lead this project. Such a qualified person would have to carry a very heavy burden with this project and he (or she) would need the trust from most important desktop environment communities and desktop application developers. A bad project leader would condemn the project. Thats why I, personally, decided not to lead this project. I just started the wiki-page with requirements because Alexander Larsson suggested me to start collecting them. That doesn’t mean I want to lead the project. I bet thats a relief to a lot people. As a project leader I would probably get the implementation done. However, I wouldn’t manage to get acceptance from all desktop environment communities. I know that. Therefor I understand that I, as a project leader, would condemn the project long before it’s started.

I’m also confident that without a project leader, nor the implementation nor acceptance would happen successfully. I am, however, highly interested in helping with the implementation of a new such system. So my role would (or will) be a developer (a coder). Not really a decision-making or leading role.

I understand many people are thrilled about this and want to see it happen. I even got a few personal mails from people who’ve been following the discussions and who have read that I wasn’t interested in leading this project. They tried encouraging me to continue leading it (while I never played a leading-role, but .. okay). I guess these people will have to be patient. There’s still many things to discuss first. It’s not easy to convince certain developers and people. And its not easy to agree on which technologies to use and depend on. And IMHO does the project still need a project leader. We can’t start without. Or IMHO it would be a foolish attempt.


[1] I’ll list the blogs in chronological sequence

Stupidity of dconf by Aaron J. Seigo,
On the virtues of a common configuration system by Waldo Bastian,
It’s not the virtues, stupid ; or, more D-Conf fun by Aaron J. Seigo,
freedesktop.org by Havoc Pennington.

Matthew Thomas first 48 hours enduring Ubuntu Hoary

Make sure you read this.

G-inspector is so cool!

Check this out. In the screenshot you can see me doing edits and analysis on the userinterface of a running Evolution instance. Like getting and setting the properties of the userinterface-widgets. For illustration I’ve set the second button on the toolbar invisible. You can find more about g-inspector here.

Related information: For people who need accesibility-aid, you can checkout at-poke. It allows you to poke-around in widgets that have accesibility-support.

Skiing in La Bresse, France

My girlfriend and I stayed at a very lovely chalet in G�rardmer. What I can tell you was that we had beautiful warm weather (around twenty degrees Celsius). Yet there was snow on the mountain for skiing. The pistes where not in a perfect condition but overall they were okay. The area wasn’t very huge. Nevertheless it was big enough for a “one weekend” ski-trip. You can find a picture of my girlfriend sitting both in the snow and enjoying the sun here.
And on this movie you can actually see her skiing.

For her it was the first time she went skiing. I recommend La Bresse to everybody who’s going to ski for the first time. Since it’s perfect for weekends. Not very expensive. And when driving from Belgium it’s not even far from home.

Bounty #127557

Cool! I finally received my bounty cheque! It was for doing this bounty.
Clickerdieklik for a webcam snapshot.

Distributing the free cd’s from Ubuntu

Yesterday I gave away the free Ubuntu cd’s which I mentioned here.

I needed fifteen minutes to get rid of one box of fifty such CD’s and I left the remaining 100 cd’s to get picked up this Friday by a second teacher
who’s going to give them away to students and by colleagues who haven’t got one from me personally. A few weeks ago we already distributed
a box of fifty Ubuntu Warty CD’s at our company. So that brings the number to 100 owners of an Ubuntu Warty CD. Thats one in seven. Sweet.

We are actually getting some questions about Ubuntu on our Linux company mailinglist. So I assume thats a sign the CD’s are actually being used.

More hacking on the alarm notification dialog of Evolution

Yesterday I wrote about the multi alarm notification dialog box. Evolution hacker Dobey was a bit displeased with my userinterface.

So he proposed a new one. After some discussion on IRC and sending some userinterface-mockup screenshots in both
directions to each other we found this getting more or less the way we want it. Other screenshots here and here.

This might get into Evolutions 2.3 release. It’s posted to the evolution-hackers mailinglist and filed as an assigned-to-me Cosmetic bug here.

It’s not a promise it will be available in that release. But chances are getting high.

Getting free cd’s from Ubuntu

Ubuntu is so cool. A few weeks ago I used this URL to ask for 200 Ubuntu Warty cd’s to giveaway at my company (Cronos/X-Tend). They actually shipped it. So now I have a box full of Ubuntu Warty cd’s. Thats so cool! Thanks Ubuntu! I can’t wait for my Hoary order.

I’ve already gave 50 of the cd’s to a friend of mine who is going to distribute them in schools. He’s a teacher informatics and maintains software and hardware in a few schools here in Belgium/Antwerp.

Hacking the alarm notification dialog of Evolution

During one of the #evolution-meeting’s I got interested in implementing a feature request. The feature request requested that the alarm notification dialog would be shared for all alarm notifications that happen while you’re not paying attention.

At this moment will Evolution spawn a new instance of a dialog box each time an alarm notification happens. If you leave your Evolution instance running for a few hours and extensively use the calendaring and it’s alarm-features. You might end up with a desktop with lots of such dialog box instances.

After my work on this, Evolution will make a treeview/listbox at the left of the already created dialog visible and will add the alarm notification
to the dialog box instance.

Click for a screenshot

This won’t make it to the Evolution 2.2 release. I’m not even sure yet whether it will ever be included whatsoever. Nevertheless can you already try it.

You can find documentation on building Evolution from source here. You’ll have this alarm-notification stuff after applying this patch. I created that BuildEvolutionFromSource a few weeks ago for people who are planning to hack on Evolution. So don’t let the hassle of building Evolution hold you back. It’s easy.

Winning time in real-time time- and interrupt critical measurements and processes by being asynchronously

On this url you can find a document which I wrote that explains how to win time during real-time time -and interrupt critical measurements and processes by being asynchronously. It explains how to read from slow devices while letting faster devices perform stuff in parallel.

Ons onderwijs systeem en patenten

Dit is een brief die verstuurd werd naar ondermeer de Belgische minister van onderwijs. Het handelt over ons onderwijssysteem (meer bepaald de informatica lessen) en software patenten.

My view on the beauty and the beast (of informatics)

Here you can find my personal view on the company Microsoft.

Digitale TV, innovatie of een inbreuk op onze privacy?

Dit is een document dat ik schreef en dat handelt over het opkomende Digitale TV tijdperk en eventuele consequenties die daaraan verbonden zouden kunnen zijn.

Friday the fourteenth

I’ve never been superstitious nor ever really believed in a God or anything that can’t be seen, can’t be studied with my own eyes. Nevertheless I’m okay with people who do.

Last Friday, however, (my) destiny seemed to have it’s periods.

Thursday evening I just couldn’t stop thinking about the meeting that we had at my current Customer, Maia Scientific (read about them and what I am doing there in my bio). The consensus was that we couldn’t use any other way than some difficult mathematics to know at which exact location the motor that makes focusing the microscope happen is.

Somehow I caused a breakthrough in knowing the exact position of the motor in real-time, programmatically, by using some special techniques for reading results from and instructing commands through the RS-232. Friday antemeridian, the result was that the microscope can be set in focus. And the really nice thing is that it actually can be reliably reproduced. The mathematically technique only 85% reproducible for a yet unknown reason. Mine, so far, has been 95% reproducible.

So we where all very happy about that. Postmeridian I went back to my personal laptop, and noticed that the screensaved was hanging. I couldn’t login to it either. It really seemed like a hardware problem, actually. So I forcefully rebooted the laptop. The result was that even GRUB failed to load! The harddisk was making funny noises: Tssk Tssskk Tsssk. Panic!

At home during my recovery attempts, using Knoppix, this weekend, it seems that sometimes I can actually mount the harddisk. But the more I try recovering from it, the more it starts failing. I am suspecting a headcrash or something.

So I decided to advertise the brand of my laptop, so that you people know what type you should buy if you want harddisk failures too: Acer Travelmate. I just hope that their service is good. I’ve bought this device a half year ago so it should be warranted. I wonder if and with what argument they’ll try to void that. Probably something like: Fedora Core 3 isn’t a supported software on the device, we can’t therefor test the harddisk and we can’t therefor test whether or not it’s broken. I guess I’ll have to pray to the Gods in which I don’t believe. Damned.

Having fun with Dia code: The properties of all selected objects in a diagram

Yesterday (and other evenings this week) I had some fun with the code of the famous diagram drawing application Dia.

While I was doing a diagram for my current customer (Maia Scientific for whom I’m developing software for a scientifically microscopical device) I got very annoyed with the fact that Dia cannot handle setting the properties of multiple selected objects simultaneously. The current release will only set the properties of the first selected object. And it isn’t a bug. It’s actually coded that way.

So I decided I was going to fix that when I was done at Maia Scientific, that day. This illustrates how much of a code addict I am. I just can’t stop, also not in the evening. Luckily my girlfriend knows how to stop me, from time to times. IMHO, an addicted programmer, is a healthy programmer. No? We ought to be addicted. It’s our passion, job and life. (or replace “our” with “mine” if you’re a programmer and dissagree with this).

A few hours later I mailed my intentions to the mailinglist of Dia. A day later I had my first prototype diff file ready. Some other Dia developers responded. Eventually also the man in charge, Lars Clausen, who appears to be one of the current Dia-maintainers, responded.

Lars told me he likes the idea. There’s still a few features and bugs attached to this new feature (manipulating properties of all your selected objects). Like how to show which property has changed and thus will be applied on all selected objects, and which property isn’t changed. And how to store the undo/redo history (make the whole set of propertysets atomic. The undo will have to undo all applies on all objects that where selected at the time).

However. We or I am expecting support for this in Dia in the next release. They told me this has been a very frequently requested feature. So I guess it’s good news for all the Dia users that people, like Lars and me, are working on this today.

Tackling the many problems I have with clipboards on the current UNIX desktop

I got myself interested in clipboards again. I kinda lost my interest
while trying to maintain gnome clipboard manager a few years ago. The
clipboard of X has lots of problems which I wanted to tackle by doing a
clipboard manager.

I didn’t succeed for the simple reason that the X clipboard wasn’t very
accesible. For example to know when another xclient became the owner of
the current clipboard, you had to make sure you (as a clipboard
manager) had to own it at all times. By stealing it from the new owner
and claiming ownership. Simply because the only event available was
“you have lost the ownership”. Well actually, I did succeed in creating it. But I didn’t in making it actually being used. For the application itself was ugly clumbsy and needed to perform horribly ugly tricks to get it’s job done.

The new xfixes
extensions
, however, make it possible to know about clipboard-owner
changes more easily. Therefor some common clipboard manager tasks can
be done more easily today. I’d like to create a common clipboard
manager daemon that can be shared by different popular desktop
environments.

Some of the tasks such a clipboard manager could do:

  • Make the clipboard persist when an xclient who’s owning the clipboard is about to die
  • Make the clipboard persist between X sessions
  • Create a clipboard-history
  • Share clipboards between different hosts

I also want to tackle the problem that an xclient needs to first
deliver it’s clipboard to the xserver when another xclient is
requesting it. While often both xclient processes are running on the
same host, the xserver isn’t always. It makes sharing larger clipboards,
in such a situation, a very network intensive job. It causes lots of
network-traffic. And honestly, it’s slow. In my humble opinion, it
would be better to utilise an Inter Process Communication mechanism. An
added advantage would be that sharing the clipboard between non xlib
applications and xlib applications could take place much more easily.
Today this is only possible while utilising a clipboard manager or an
xclient like xterm which will copy it to the console-window it’s
displaying, as if it’s being typed by the user. Imagine vi supporting
pasting the HTML-source behind the selected text of your Firefox
instance without the need for first going to the source of the website
you’re viewing. Imagine two instances of vi copy and pasting to each
other in both directions without the need of temporary files (which is
more or less how mcedit does it). Imagine copy and pasting on the
console as easy as today on X.

One problem with implementing such an idea was the fact that there
wasn’t an IPC-system being liked by the programmers of the popular
desktop environments. For example KDE preferred to use DCOP whereas GNOME preferred
ORBit. Today, however, a new such mechanism is being designed just for
the purpose of desktop inter process communication by the
freedesktop.org organisation: DBUS.

We have all the ingredients to implement these idea’s. I am working on
a very first piece of testing code here. For
non-programmers there’s nothing interesting to see there at this
moment.

There’s a discussion about this going on at the xdg mailinglist of freedesktop.org.

Introducting the people behind gnome-schedule

Yesterday I invited Gaute Hope and Kristof Vansant to this advogato-site. They are co-authors of the gnome-schedule module. Gnome-schedule is a userinterface for configuring the crontab and at daemons. In some future Gaute Hope is planning to add support for anacrontab.

If you are interested in scheduling mechanisms, you also want to checkout (the highly unfinished project) Eventuality
by Maciej Katafiasz which promises a scheduling mechanism that works like how GConf works for configuration. So events to which you can subscribe to in your applications.

We’re planning a first stable release of gnome-schedule very soon. Dag Wieers will probably create Fedora packages for it. It’s being written in Python and uses PyGtk.

Personally I started to dislike Python and PyGtk after this first project I made with it. It’s not really something for me. I’m one of those developers who like to code with and for the very latests GNOME technologies. PyGtk from CVS offers that, but the distributions weren’t using such an unstable version of course. So it has been holding me back lots of times during development, and is has been holding back a packaged release for various distributions. Next time I’ll just use plain C or perhaps C++. Maybe C# once it’s going to be adopted by the distributions. Other than that doesn’t python feel like my programming language. Sorry.

However, it looks like both Gaute Hope and Kristof Vansant liked it for the purpose of creating gnome-schedule. So I guess it’s okay as a development environment for many other people