Older blog entries for company (starting at number 31)

So, talking about the MS/Novell deal has been declared stupid by dobey even though according to other hackers 80 percent of hackers think that there is nothing wrong with it. jclinton has issued a statement condemning this action. Perhaps he said it best

"Since you guys are all buddy, buddy and everything, I'm sure it wouldn't be too hard for you to take a few minutes of his time to explain the spirit of Free Software to Steve."
Personally I think that if people weren't outraged about it, we'd have already lost to MS.

Update: Iain has said that if more people think like this he will do what he is told and stop blogging completely.

Flash

So about a month ago Federico blogged a Youtube link again. That made me wonder about Free Flash decoders and I had a look around. In the end I started hacking on David's Swfdec, since it has all the goodies: Cairo for beautiful Graphics, GStreamer for sound, David's excellent code (the SWF parsing code is awesome) and of course it was written in Gnome C.

Long story short: I haven't had this much fun in hacking for ages. I think I haven't done much else in the past month but hacked on Swfdec and watched lots of stupid Flash movies lots of times.

So what's the current state? It's still very far from finished since Flash is huge. It's a graphics framework (think GDK) with a scripting engine (think Javascript). But if you're adventurous, bored or both, feel free to check out the sources from git://people.freedesktop.org/~company/git/swfdec and play with them. They might even play back some weird flash file. For now I'll continue to make FLash files work one by one. Next stop: South Park.

PS: Before someone asks: Gnash is low quality, written in C++ with Boost, requires Copyright assignment, svn doesn't even compile and it does less than my current Swfdec, so I didn't hack on it.

Selection Fun

Do you know this: You select some text with the mouse and after you did this you wonder why you missed the last or the first letter?
I asked some people around me and they have that problem. Today I got annoyed enough to venture into the deep world of selecting text to figure out what the reason for this could be.

So I started my journey by looking into the GtkEntry source code. And the first thing I found where two things I didn't know. The first is a workaround for this problem: You can shift-click to extend the selection.
The second: If you start selecting with a double-click (triple-click), you'll only select full words (lines).

And I found out what the problem is: When selecting text, you don't select letters, you select gaps. What does that mean? If you click on a letter, Gtk selects the closest gap for you. So if you click on the left half of the letter, the gap in front of the letter is taken, if you click on the right half, the gap on the right is taken. If you want to try: The best letter is an "m", at least with Vera. So, go, enter "mmmmm" in your location bar and try it. :)

This seemed like an obvious usability issue to me, so I thought that other toolkits would get it right. And then I found - for the first time ever - that everyone: Gtk, Qt, XUL, Gecko and Windows, they all behave the same. This got me thinking: Are you actually supposed to select gaps? I mean, it's very likely that I am wrong and the rest of the world is right and not vice versa. But actually, all the people I asked said they knew that problem.

So I'm currently a little lost. Should I really file bugs with literally everyone or did I miss something? I've filed a bug with Gtk, but I'm wondering if I it's really wrong and I should file bugs with Qt, Mozilla, Abiword, ...?!

I need to follow up on David's Post about Foundation membership because it fits so well:

As much as it is a nice feeling to feel welcome when you've got your confirmation email, it's a weird feeling when you get the email that you will be no longer a member now, because you didn't do the work to renew it, even though you're still very involved with GNOME.
This is the only reason why I am no longer a foundation member.

Who let this crap into Gtk? I'm really annoyed that such code ended up there, because that code not only works bad, but also is conceptual crap. I'm talking about the dnd code. So what's wrong with it? I'll start with the worst things:

  1. You have to provide a function that creates a new window if the tab is dragged off the notebook. So what's wrong with gtk_notebook_set_window_creation_hook? It's global. Every self-respecting programmer should know by now that globals are bad, mkay? Especially so in libraries. Anyone remember XSetErrorHandler? So just assume for a moment, that you were using a docking library (like the Gimp or Gdl) that wants to support floating docks and you want to make some of your own notebooks detachable. Who sets the hook?
  2. To figure out if dragging from one notebook to another is allowed, one has to set a group id. And this is a (positive) integer. Hi namespace collision. By now I'd thought that it was common knowledge to use strings or pointers for such a thing. But apparently it's not. So what ID is the docking library using now? Just pick one and hope?
  3. Detaching tabs only works if you drag them to the desktop. Don't ever try this with a fullscreen app.
  4. Reordering is implemented without drag'n'drop to give nice visual feedback. Unfortunately detaching is implemented with drag'n'drop. So once you've gone over the threshold to start a drag, the UI looks completely different. Even if you later on move the mouse over the notebook again, it doesn't change back.
  5. There is absolutely no visual feedback (aka highlighting) when doing a drag.
  6. The code for reordering (or dragging) tabs in a small notebook (where the arrows are visible and preferrably only one notebook is visual at any time) does not work in any reliable way.
  7. There are lots of different annoying drawing glitches from flickering to drawing tabs in weird places during reordering and dragging.
These are lots of reasons that would have gotten me patches rejected almost everywhere in the gnome stack. So why did the normally excellent Gtk quality control fail to work in the notebook case?

So there's lots of discussion about screencasting going on. And since I'm the Byzanz guy, I'll add my stuff to this discussion.

While thinking about how to extend Byzanz and what features to add to it, I came up with four requirements for a good screencasting application on Linux, which are, in descending importance:

  1. Can be played back inside a browser with a default installation of current versions of Windows, RHEL and Ubuntu.

    This is important because most screencasts are made for the web and for a wide audience. And these audiences probably use an average distribution and are not into installing weird software. They probably just use the default. This is why I picked Windows (the biggest audience) and Linux (a big audience for recordings of Linux desktops).

  2. Can be recorded on a recent Fedora or Ubuntu with a default install and an install of the recorder.

    It should not be hard to get going. If there's a custm compile needed or packages are required that for some reason cannot be included in the package tree (think multimedia and patents here), then it's not an easy tool.

  3. Has a decent quality and file size.

    This is fairly obvious. You don't want to wait an aeon until the download is finished and you want to be able to see what the screencast is about. And this point requires special care because a lot of video formats are bad for screencasts since they fail to produce good enough recordings of text.

  4. records audio

    While this sounds fairly easy ("just add the feature!"), it becomes a problem when choosing the right format. It's also currently a problem in the "just works" department because there's quite some setup required in all the apps I've used that support audio input. Even Ekiga, which is a simple to use multimedia application, still has a druid.

So with these 4 points I set out to find a format suitable for recording screencasts. And I haven't found one. There's a lot of formats that sort-of work, but none of them does all 4.
  • GIF does (1) and (2) and is ok for (3). That is, until you start recording images or videos, because the format only supports 256 different colors and videos or images tend to use all the 16 million different ones. And the file size starts to suck, too. GIF totally fails at (4), because it has no sound.
  • Flash is the probably the best choice for (3) and (4), might work for (1) - I have no clue about Flash playback in current Linux distros, but totally fails at (2). Flash audio is MP3 and currently no distro ships an MP3 encoder in their main repository. Add to that the missing availability of flash encoding libraries in Linux and especially Linux distros.
  • All video formats (think MPEG, AVI formats or OGG THEORA here) do (4) and are ok at (3). But none of them does (1). Either they work in Windows or they work in Linux. Probably they work nowhere because browser plugins for video playback aren't installed by default. And the we haven't touched (2) which is hard becase multimedia production enters the patent minefield again which makes distros not ship encoding libraries.
  • JAVA is an option. A custom Java applet for playing back screencasts could easily handle (3) and (4). And it would do (1) and (2) for every distro that has a JRE and Java browser plugin installed. Unfortunately this is the first problem. Most current Linux distributions don't have that installed. And the second problem is that a good Java applet is missing and noone has stepped up yet to code a screencast applet.
So currently, even though I have written an application that in my opinion almost perfectly manages the first 4 points of Quim's requiremens, I can't do anyting right now to solve the last ones because I'm lacking a format that would manage them. I'd love to, but I have no clue how. Suggestions welcome.
27 Jun 2006 (updated 27 Jun 2006 at 17:32 UTC) »

To go with the rest of the people: GUADEC is great. What is apparently great, too, is my English. Thanks to all the people who really thought I was a native Brit, you made my day. It'll probably make the day of my former English teacher, too, when I tell him this.

And I've met almost all the people I wanted to meet. Only iain, thos and vuntz are missing on my list. I probably forgot one though.

And, most important: sri is totally afraid of my verbal skills and keeps hiding from me!

Since I was nicely asked to do so, I'll write a blog entry about this stuff, that's been happening around me.

Workspace switcher


The workspace siwtcher got a facelift for the upcoming GNOME 2.16. Besides some visual improvements, you'll notice from the above animation that dragging items around is now real drag and drop with proper highlighting and prelighting. It's also now possible to drag windows from the tasklist to the pager. Says Vincent:

This is awesome. I don't understand how we could live without this!
Volume Applet

It seems to be a not so well known fact that using the Ctrl key, you can select multiple tracks to control. This is especially useful for people who have a different volume track for headphones and speakers on their Laptop.

12 May 2006 (updated 12 May 2006 at 17:21 UTC) »
Byzanz 0.1.1

Today I received a patch by Richard Ferguson, who made new icons for Byzanz. Wow. Together with the translations and various other people helping me fix stuff, that's a nice list of stuff other people did for Byzanz. Basically the first release where I didn't need to do anything for it. :)
Get it here.

There's one interesting patch that I didn't include, which tries to add "save to HTML". Problem with that patch is that it requires saving two files. This breaks a lot of assumptions of various parts of the code (example: overwrite confirmation in the file chooser) and it would probably break user expectations, too. ("I saved to HTML and then copied that to my webspace, but now the image doesn't show up.") So if there is a good solution to that problem that any app implements, please tell me.

Guadec Accomodation

Since many people have been wondering about this and I couldn't find it on the GUADEC page:
The accomodation is 8 nights, checking in on Friday 23rd and leaving on Saturday 1st.

22 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!