Category Archives: General

what would push do?

Here’s a quick hack that I thought I’d share. After accidentally pushing some extra commits that were on my local ‘master’ branch, Lars told me that he always tries to do a ‘git push –dry-run’ before pushing, followed by a ‘git log’ in order to check if the reported range is what he was actually […]


(by request of Lars): “This is a public service announcement.” For some time, GCC has had support for __attribute__((cleanup)) which is a really nice way for automatically cleaning up variables when they go out of scope. After a few attempts at people suggesting it for GLib, Alex finally convinced me to give it another thought. […]

How Do I…

I’ve struggled for some time with long-form tutorial style documentation for various bits of things in our platform. It feels out of place in the reference documentation (since it’s not reference documentation) and often it doesn’t fit neatly into one module or another. In 2013 the GNOME foundation sponsored my attendance at OpenHelp and the […]


… 7 years later. This is a public service announcement. Please stop writing this: #define G_DESKTOP_APP_INFO(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DESKTOP_APP_INFO, GDesktopAppInfo)) #define G_DESKTOP_APP_INFO_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_DESKTOP_APP_INFO, GDesktopAppInfoClass)) #define G_IS_DESKTOP_APP_INFO(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DESKTOP_APP_INFO)) #define G_IS_DESKTOP_APP_INFO_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_DESKTOP_APP_INFO)) #define G_DESKTOP_APP_INFO_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_DESKTOP_APP_INFO, GDesktopAppInfoClass)) typedef struct _GDesktopAppInfo GDesktopAppInfo; typedef struct _GDesktopAppInfoClass GDesktopAppInfoClass; struct _GDesktopAppInfoClass { GObjectClass parent_class; }; […]

(allow-none) is dead. long live (nullable)!

This is a public service announcement. Writers of introspected libraries have long been familiar with (allow-none) as an annotation on the arguments of functions. This annotation had a few shortcomings: it had a strange name with an implied direction it was not supported for return values for (out) parameters it does not mean “null may […]

GNOME 3.12 and FreeBSD (and a virtual machine)

As a result of the work that has been going into increasing the portability of GNOME this cycle, I’m happy to announce the availablility (on “day 0″) of a virtual machine image of GNOME 3.12.0 running on FreeBSD. You can download it here if you want to try it out: FreeBSD GNOME 3.12 VM image […]

On portability

After nagging me for several days to write a post on the topic, Matthias stole my thunder and wrote his own. I agree with almost everything he wrote there (and indeed, I wrote both of the documents that he links to as our policies on portability), but I’d like to add a bit more. Some […]

GNOME in Montréal

It’s 2013. The GNOME summit is coming back to Montréal! The summit will be on the usual Canadian Thanksgiving long weekend (Columbus day long weekend for the US): October 12, 13, 14. The summit is being hosted by Savoir-faire Linux. The venue will most likely be their offices in Montréal, but we may move to […]

PSA: g_settings_create_action()

Have radio items or checkboxes in your GMenu? Probably they’re effectively proxies for a key in GSettings somewhere. Check out g_settings_create_action(). I write about this because someone suggested to me the other day that this may be a neat feature. I responded that I had thought about it before but never got around to implementing […]

dear lazyweb: thinkpads and ata passwords

i recently bought an intel 520 series drive which has advertised support for hardware disk encryption based on the ata security feature set. thinkpads have long had support for issuing ata security feature set commands during boot in order to lock and unlock these drives. this means that you end up with transparent full disk […]