Advertising

Murray's Blog


cluttermm and playing with clutter-box2d

August 11th, 2008

cluttermm

There are now C++ bindings for the various clutter-0.8 libraries. That’s cluttermm-0.8, clutter-gtkmm-0.8, and clutter-cairomm-0.8. The tarball versions are 0.7.x because they are not ABI-stable yet. Armin Burgmeier did most of the work for Openismus to update cluttermm for clutter-0.8 and make it mostly complete.

I’d still like to find the time to do a C++ version of my Clutter tutorial.

clutter-box2d

I really wanted to look at clutter-box2d. It’s the clutter-with-simple-2D-physics thing created by Øyvind Kolås. His Moblin Playground Clutter prototype (watch the screencast) shows how it might be used. For instance, it makes it easier to implement the spinning circular menus you see at the left and right, and to implement the photo “table”. Since I wrote the clutter tutorial, I’ve thought we need abstractions such as this.

So I wrapped it as clutter-box2dmm and made C++ versions of its examples to get familiar with it.

clutter-box2d provides a ClutterBox2D (or Clutter::Box2D::Box2D in C++) container actor, which has child properties for its child actors. For instance, you can say whether the actor should be static (not moving) or dynamic (moving and colliding according to some simple physics), and you can say whether the actor should be manipulatable by pushing it around with the mouse. You can also specify its velocity. These are explicit methods on the Box2D class in the C++ binding.

You can then start the simulation on the ClutterBox2D. By default there is normal gravity (a bug, I think), which makes examples fun. The examples create a static box around the edges of the ClutterStage so the actors don’t fall out of it.

You can also specify some joints to connect actors in certain ways, such as a distance joint to put an invisible rod between them, or a revolute joint, as used to link the sections in the chain example. The joints are a bit difficult to understand.

This is all useful apart from some minor bugs that seem fixable, maybe together with the Box2D project that clutter-box2d uses. (Can’t stop damping and Can’t stop rotation.) It would be even more useful if applications could respond to collisions between objects and objects arriving at locations, which is apparently also doable.

However, I think clutter-box2d provides only some of the abstractions that I’d like. I particularly still miss the ability to simply define a rail and put an actor on it so its motion is restricted to that path. The actor would then be moved programmatically (maybe just by specifying an end point to reach) or by the user. clutter-box2d could do that by defining a rail and some runners, but it’s not a high level concept, and it’s probably not efficient.

I’d also like the idea of actors falling into locations as you move them, like those ball bearing maze games, and maybe it would be useful to have some ability to connect actors by elastic, and to let them bounce and compress.


Finding an office in Berlin

July 28th, 2008

I’d like to open an Openismus office in Berlin in the next couple of months, for about three of our people. I don’t have much idea where office rental is advertised in Berlin. What’s the equivalent of the Süddeutschezeitung’s small ads there?

I’d love us to have something in Kreuzberg, near Schlesiches-Tor, maybe by the river there, but it looks like Prenzlauerberg will be more convenient for Mathias to get to. I’d like to avoid being in one of the anonymous office buildings in the centre of town. It’s much nicer to have something with character in a lively residential area like Kreuzberg or Prenzlauerberg which is still close to everything by public transport.


D-Bus in jhbuild: Confusion and hacks

July 16th, 2008

Jhbuild seems to have a general problem with D-Bus. This has become obvious now that GConf is using D-Bus instead of ORBit (see these gconf-list messages: 1, 2).

To make GConf work in jhbuild, you need to do this in each jhbuild shell:

dbus-launch --exit-with-session bash

Then there’s the problem of Avahi. To make Avahi work in jhbuild, you need to do this in each jhbuild shell:

export DBUS_SYSTEM_BUS_ADDRESS=unix:path=/var/run/dbus/system_bus_socket

I wish that jhbuild has some general solution for these issues by default because I suspect that these are just hacks.

However, I imagine that it’s a difficult problem. For instance, you probably don’t want to kill the main (non-jhbuild) D-Bus (and D-Bus services) because that would break your desktop. But you probably want a different D-Bus (and D-Bus services) for jhbuild. The two prefixes don’t seem to work well together in D-Bus at the moment.


Liam at six and a half months

July 16th, 2008

Liam is now six and a half months old. He’s not crawling yet, but in the last couple of weeks he has learned to get around quickly by doing a kind of commando elbow crawl. It lets him entertain himself without being carried around so much, but we must now move many things up from the floor level.


GooCanvas has come home

July 15th, 2008

Over the last month or so I’ve been moving various GooCanvas stuff to GNOME’s infrastructure, on Damon’s behalf, away from Sourceforge.

As you can see on the live.gnome.org GooCanvas page, it’s now in svn.gnome.org, we have a gnome.org mailing list, we use bugzilla.gnome.org, and the documentation is on library.gnome.org.

Thanks to the various admins.


Back from Istanbul, headed to Helsinki

July 14th, 2008

Last week was the GUADEC Conference in Istanbul. Overall it felt like one of the best GUADECs, just because I like Istanbul so much. It’s a proper city.

That’s despite the organization of the registration, accommodation, travel instructions (to the venue) being a near disaster (as they usually are). For people who made it to the venue, the University was a perfect location - efficient and clean and well equipped, with many helpful volunteers keeping things organized.

It was great to have all the Openismus employees together in one place for the first time, sharing apartments in a building near the Galata tower in that wonderful maze of narrow streets. It turns out these are great people to hang out with, particularly when you have a rooftop terrace looking over the city and a fridge full of beer on a summer night.

On Thursday morning I fly out to Helsinki with Sigi and baby Liam. I have a day of meetings on Friday, also with Jan Arne from Openismus, and then some touristing until Tuesday, including a night in Tallinn. I’m looking forward to seeing our Helsinki friends.


The Case of the Disappearing Emails

July 4th, 2008

Over the last two years, a couple of people have had problems sending email to my openismus email address. They never received any failure message, but the mails never arrived. This was annoying and mysterious, but the problem was obviously with the senders’ systems so there wasn’t much I could do.

This week one more person had the problem. All three people were German, which made me suspicious. We discovered that all three people were using bytecamp’s email servers. For instance, gnome-de.org email addresses are hosted at bytecamp (for free, I believe). Major clue.

openismus.com was hosted at bytecamp a couple of years ago, but I moved it away because I found their services limited and rather ad-hoc, though it seems to have improved since then. It turns out that they forgot to update their MX records, so they were just swallowing any email to openismus.com from their remaining customers. Some emails to bytecamp solved the problem, so bytecamp customers can now send email to us again.

I do hope that several German GNOME developers (with gnome-de.org email addresses, for instance) have been trying to email me about working for Openismus. If you didn’t get a reply before, please try again.


Openismus 2008 T-Shirts

July 3rd, 2008

The Openismus T-shirts for the GUADEC Istanbul conference are ready.

I wanted to do something different again, so I persuaded the people at Brandt to do a kind of Rolf Harris punk thing. It’s a little bit funky. I don’t think it will please everyone but it will be noticed. Each one is different.

PunkPunk

There was a shortage of T-shirts in these colours, so we did a small batch of classic retro-style dark green T-shirts too, with white banding and stripes with white flock-print. They are quite nice but less challenging.

Classic RetroClassic Retro

Like last time, I chose to do a small number of expensive T-shirts rather than lots of cheap ones. Scarcity adds value.


Running and Turkish

July 2nd, 2008

After six months I started running again, trying to lose my 5Kg of paternity weight. I’m up to four bridges again, out of a usual eight.

This gives me the chance to listen to my Pimsleur Turkish course again while running. Hopefully I’ll be able to say very few things well, so I’ll be looking for opportunities to use my small collection of nouns and verbs at GUADEC in Istanbul next week.


Thinkpad X61: Everything just works in Ubuntu

July 1st, 2008

Yesterday I received my new Lenovo Thinkpad X61. It’s the UX29DGE model, with Intel GMA X3100 graphics (gnome-device-manager says GM965/GL960), and 2.20 GHz Core Duo T7500. It shows up as Model 76739DG in gnome-device-manager.

After fighting with Windows Vista to reduce its partition size enough, I installed Ubuntu Hardy easily. I wanted to keep Vista around so I can look at it sometimes, but that short experience of it is enough to help me understand why people hate it so much. It’s as if they went out of their way to break all the basic principles of UI design, as if the managers had a running feud with the human interface department and wanted to outrage them. People who hate computers (most people), and who think that computers hate them, will not be surprised.

But it’s great to have a new laptop on which everything works. Even hibernation. I’ve never seen that work before and it’s truly useful. I wish my desktop could do it, in the absence of working session management.

I am a little disappointed that it’s almost as hot as my Acer. I guess this is just how all laptops are. How do people manage to use these things on their laps? Do we need a control panel to limit the CPU speeds, together with the internal temperature sensor, with options for “cosy”, “slow grilling” and “burning trousers”?