gstreamermm: C++ bindings for gstreamer

The latest attempt to create a gtkmm-ish C++ API for gstreamer is making good progress, this time started by Milosz Derezynski for his “Beep” player. Over the last few weeks I’ve tried to help out by solving the more difficult problems such as support for GstMiniObject (a cut-down GObject), and support for GstObject (GObject with a floating reference, like GInitiallyUnowned, and with thread-safe reference-counting, I think). José Alburquerque and Siavash Safi have been helping out too.

That’s done and we can now actually play an Ogg Vorbis file, as seen our first example. I’m fairly confident that gstreamermm can now become finished, useful and stable with a little more effort.

svn: http://svn.beep-media-player.org/gstreamermm/trunk/. though I ‘d like to move it to the GNOME svn if I can persuade Milsoz. It’s also in jhbuild.

Update:: gstreamermm is now in GNOME’s svn.

New www.gnome.org: Plone people needed

The plone-based replacement for www.gnome.org struggles forward. But it won’t get much further unless we find some new Plone developers who can help make it happen.

I have a whole other blog post that I’ve been waiting to publish for about a year as things have crawled forwards, variously delayed by an svn account request (Olav’s mango system fixed that problem), an unstable test server, and our single Plone developer’s extreme lack of time. It’s called “New www.gnome.org: Test it now” and it has lots of great links to a test site, our design plans, and where to report bugs. Instead you get this, based on my email to gnome-web-list:

Status

The Plone stuff is now in GNOME’s svn, in the gnomeweb-plone module. We also have a backup of the database with the content (Zope format).

However, the svn is not quite in the desired structure and the “buildout” system probably needs some work. See the README for hints from Ramon.

I had hoped that Ramon could get those done so we would be more ready for other people to contribute but that’s obviously not going to happen. He is now busy with his PhD and can’t help us much more. I’m posting this after talking to him.

So we need some Plone people who can do this for us. I personally have no experience of Plone so I wouldn’t trust me to do it even if I taught myself about Plone.

What to do

The first aim should be to make it possible for anyone to install it locally to test it. That includes instructions (hopefully simple) so that even I could deploy it and test it. I would like some reassurance that this “buildout” system is the best way to do that. Experienced Plone sysadmins should know the answer to that.

Then I would like the Plone experts to generally check it over and point out anything that we could do better.

Then we can deploy it as a beta on gnome.org, fix the last few bugs, and see if it’s good enough.

Glom’s Initial Dialog

Glom now lets you browse the local network to open a document already opened by someone else, so you can easily both use the same database system.

That adds a new button in a file chooser dialog (though it doesn’t use the file system or URIs). This has complicated our already odd start-up dialog. We have some thoughts about the initial Glom dialog in the wiki but, to summarize, this is my current best mock-up for what we should have. Apologies for the inept use of Glade and Inkscape:

glom_initial_dialog_mockup_from_inkscape.png

The treeview row buttons are to avoid having to select and then click a separate button. I think that’s easier. I generally hate start-up dialogs, so I’d avoid it if I could and I’d welcome suggestions. I do think it’s better than having a wizard and I do think something like this is needed to deal with the two common cases:

  • The first-time user starts Glom and has no idea what he could do.
  • The regular user starts Glom and wants to open the database that he uses every day. Unlike with a word processor, people will rarely use more than one or two Glom files.

My Mobile Phone Is For Girls

A few weeks ago I lost my Samsung X460 “Handy”, after breaking the previous one of the same model.

The X460 is more perfectly formed than any newer phone I’ve found so I wanted to get an X460 again, but that seemed unimaginative and I wanted Bluetooth so I could back up my telephone numbers, and a handy camera will be good for the new project in January. Choosing a new mobile phone is a major project, but I eventually settled on a Samsung E570, in silver gray rather than that shocking pink, though it still has the flowery design on the back. It’s small, though not nearly so small as the X460. It has a clock on the front, but again it’s not as clear as the clock on the X460.

But this really does seem to be phone targeted at women (I am male). Features include a fragrance type calculator (no idea), biorhythms, height/weight ratio calculator, a calorie calculator, a menstruation calendar, and multiple shopping lists. I’m not entirely convinced that this was designed by women, but there’s something so inept about it that it feels special. Otherwise it’s rather awkward to use and I won’t be too sorry when I lose it.

Also, I’ve lost all my mobile phone contacts from the last few years. In Germany this presents particular difficulties because half the people in Germany are called either Christian or Thomas, and without number recognition there is no way to know which one just sent you a text message.

(Why don’t device manufacturers make product images available under CC licenses or at least make it clear that you are free to reproduce them. This seems like something they should want us to do.)

Glom in Maemo Chinook extras

After much struggling with branch merging and fighting with incompatible scratchbox rootstraps, an alpha version of Glom is now available for Maemo’s new Chinook SDK, in the extras repository. Thanks to Armin and Johannes.

glom_maemo_screenshot.png

Software developers might also be interested in the dependencies that we packaged, in addition to the existing gtkmm and hildon*mm libraries: libglademm, libpq (postgres client), libgda, libgdamm.

I think Glom on Maemo could be very useful for tasks such as

  • Restaurant order-taking
  • Stock taking in warehouses
  • Surveying of property
  • Note-taking for deliveries or checkpoints
  • Portable databases
  • Jack Bauer fighting crime

But so far this is purely a proof of concept. Some work would be needed to make it really useful. For instance,

  • The screenshot shows that there is a huge amount of wasted space. The spacing and padding needs to be reduced to 1 pixel everywhere, and the table title and mode can be removed. We use libglade and don’t want to have a separate .glade file for the two platforms, so maybe a new feature in Glade/libglade could help us.
  • Obviously it shouldn’t say it’s in developer mode. This client-only version can’t even do developer mode.
  • The Details/List tabs and navigation buttons need to go into the menu so they are not seen normally.
  • The treeviews needs to have column headers. Applications must do this explicitly when porting to Maemo because it GTK+ changes the GtkTreeView defaults – this is unnecessary and frustrates people.
  • Entry widgets need the hildon keyboard hints so appropriate on-screen keyboards are used for numeric or text fields, plus auto-capitalization where appropriate.
  • Use hildon widgets such as the time and date widgets (needs modifications to hildon to allow them to be empty (NULL), though these should probably be in GTK+ anyway).
  • Special layouts for the Maemo version. We need to let the developer specify a full layouts for the regular desktop version and a cut-down layout for the handheld version, so he doesn’t need to keep two separate copies of the .glom file.
  • We probably need Mathias’ height-for-width extended layout to make sure that we only have vertical scrollbars, though I think we can fit a lot into the horizontal space, at least in full-screen mode.
  • Keyboard navigation: Make sure that this works well by default and allow the developer to specify a tab sequence.
  • Dealing with loss and reconnection of the network, requesting new connections when necessary, using libconic.
  • Support Maemo’s offline mode and other states (suspend).
  • Avoid excessive network re-connections and duplicate SQL queries
  • Self-hosting of databases. Glom on maemo is currently client-only, though the desktop version has self-hosting by starting its own postgres instances. So at the moment you need a central database server and a constant network connection. It would be nice to allow the database to exist on the handheld itself. We’d probably want to port the client-only version to sqlite, though I suppose we should check postgres’s performance on the internet tablet before dismissing it. Our use of libgda should make it fairly easy to use sqlite if necessary, though some generated SQL will need attention.
  • A simple replication feature. People will often need to add or edit data while offline and then have everything reconciled when they get back to base. This is a complex issue, but I hope we can offer some simple strategies for this which don’t require much human intervention.

I hope Openismus can find funding for that work somewhere.

By the way, Armin is now working on the Windows port.

Update: Here is a new screenshot after making some of the easiest small changes:
Glom 1.6.6 on Maemo

GNOME Board 2007 candidates: The good

Some thoughts about the candidates that I’ll be voting for, and why:

The successful board

Typically, a successful board member will achieve just one big thing and three or four much smaller things. The board as a whole will achieve maybe three big things. Some of your big things will not reach completion. If you focus on just one or two big tasks then you will get at least one done. If you think that’s not ambitious enough then you will waste your energies on five different tasks, none of which you will complete.

The successful board member will get these few things done because he believes it’s important or just because he enjoys getting things done. There will be no reward or thanks for success, and certainly no punishment for failure or inactivity. Nobody will know it was your fault. Do it anyway.

And to make all this work together, a firm chairman is needed. The chairman should keep the board focused by prioritizing tasks, tracking tasks, reassigning them when necessary, and keeping discussions on track. It’s simple stuff, but it isn’t done enough and then everything falls apart quickly.

And the board needs to recognize the things that only the board can do. It’s lazy to claim that something is not a board problem if nobody else can do it. The board is there to do what individuals cannot or may not do. That includes managing the teams whose authority flows from the board (e.g. fixing the release team when its broken. It’s not now.) and making statements on behalf of the GNOME community that elected you (e.g. about OOXML or about the code of conduct). Theoretical discussions about the range of your job just waste time when you should be taking action.

I don’t want to vote for people who think this is taking it all too seriously, or expecting too much. The 50% of people who actually vote probably take GNOME seriously and devote a large part of their lives to it. Don’t let them down and don’t get in their way.

The good

  • Vincent Untz:

    I don’t know Vincent well, but he seems to pop up everywhere when something needs done. I’m really glad he’s leading the release team now (following on from Elijah, who I also admire) and hope the board continues to benefit from his energy levels.

  • Lucas Rocha:

    Lucas can focus on a task and drive it to completion, herding the necessary people along. He knows that it takes determination and persistence. Well, that’s what I think when I see his work on the GNOME Road Map.

  • Behdad Esfahbod:

    Behdad is just so easy to like. He plans to work with the various groups to set up events such as GUADEC, and I think he’s a great person to do that. Though he’s also a very technical guy, I like what he’s saying about separating administrative board tasks from architectural direction, so he’s likely to stay focused.

  • John Palmieri:

    His involvement with the OLPC and GNOME Online Desktop projects should help the board to support them, though John recognizes that the board rarely needs to set technical direction. He fitted in well to the release team and knew when to pass it on to some one else. I think he’s responsible and capable and we’d benefit if he got even more involved.

  • Luis Villa:

    Luis displayed good judgment when we dealt with a big problem on the board in 2005, and the board is now far better organized because of it. We missed out on having him as an executive director because of our unnecessary delays. I’d be happy if he takes care of the legal stuff, though I don’t believe that he’ll stay focused on only that. He should.

    Luis, you still need to reduce the verbosity that pads your insights. Try to be better than the professional bloggers who name drop you, so you outlive them.

With one exception, the others are also capable and worthy, if they can focus their work and that of the others.

And next, the bad. The very bad.

libepc

I’m very pleased with the libepc library that Mathias Hasselmann created for Glom. I much prefer having the Avahi and network communication wrapped up in a simple separate library rather than mixing it in with Glom’s source code. I don’t want to deal with avahi, libsoup and gnutls if I don’t have to.

Glom will effectively use it to discover and load .glom documents over the network from other Glom instances. I suspect that it will be useful to a few other applications, but if not then it will still have been a good exercise in modularity.

I’ve already reviewed a few iterations of the library. Mathias and I are both fussy coders, though in different ways, so that’s why it already has full and meaningful documentation, tests, and examples. But we would welcome feedback so we can show how seriously we take documentation and API. I’ve added it to jhbuild.

My WordPress cracked

A couple of days ago, Google sent me an email complaining that my blog (this one) contained hidden text advertising viagra, and threatening to remove it from their index. To my surprise, they were right.

The HTML was coming from the WordPress code itself, somehow via the call to wp_footer() in the theme’s footer.php. My theme is a simple one based on the standard WordPress theme, so I don’t think the exploit is in the theme.

I wasn’t using the version of WordPress (2.1.1) that was known to be cracked, but I upgraded to the latest WordPress anyway (2.3.1). Two days later, it was cracked again. I noticed because the change broke the site, causing php errors. This time I got a diff of the change. (Ignore the missing files in plugins/. I made a mess of restoring my plugins when upgrading.)

Both times, it was trying to add HTML with a <div id=”goro”> block. wordpress.net.in seems to be involved too. Googling showed me that others (1, 2) have had the same problem, though I haven’t found any real fix to stop it happening again. I feel vulnerable.

Update: Here are some lines from the access log that seem to be relevant. I don’t know whether they are the original hack.

Eightysevened

After years of loyal effort, I conclude that I have Bruce-related anterograde amnesia: The inability to form new memories of any song by Springsteen after Tunnel Of Love.

It happens with Prince too, triggered halfway through Lovesexy.

gtkmm book as pdf

Jonathon Jongsma recently fixed up the “Programming with gtkmm” book so the result of docbook2pdf is fairly useable. We’d like to improve it even more and maybe sell hard copies online. But I think we need more control over docbook2pdf (a wrapper for jw). For instance:

  • We need to scale images down instead of cropping them.
  • Ideally, the links to the reference documentation would be real hyperlinks in the PDF.
  • It would be nice to specify a different base URL (an XML entity in our Docbook) for the PDF than for the HTML, to make the URLs absolute instead of relative.
  • A background block for the source code examples would provide some structure.
  • Syntax highlighting of the source code examples would be really nice, but we don’t have that in the HTML either. (It’s inserted in the Docbook automatically, from our real source code.)

Does anyone have experience with this?

Of course, I also plan to review all the text and make improvements to the content where necessary. It’s been a few years since I read it all through.