PulseAudio in Google Summer of Code 2012

If you’re a student participating in this year’s edition of Google Summer of Code and want to get your hands dirty with some fun low-level hacking, here’s a quick reminder that PulseAudio is a participating organisation for the first time, and we have some nice ideas for you to hack on.

The deadline for applications is 2 days away, so get those applications in soon! If you’ve got questions, feel free to drop by #pulseaudio on the Freenode IRC network and ping us. (I’m Ford_Prefect there for those who don’t know)

GNOME Asia 2011

Just a quick (and late!) heads-up for all of you who missed it — the GNOME Asia Summit 2011 is happening in Bangalore this week, with a bunch of really cool people doing hackfests through the week, and whole bunch of talks on Saturday and Sunday (April 2nd and 3rd).

I’ll be presenting a talk titled DLNA in a GNOME 3 World, talking about Rygel and the work we’ve been doing on gupnp-dlna to make DLNA rock on GNOME.

If you’re in or around Bangalore and contribute to or are interested in contributing to GNOME, you really have no excuse to not attend (heck, entry’s free). This applies doubly to students who are looking for cool stuff to do for the Google Summer of Code this year. So, do drop by and say hello! :)

He xells, xea xea-xells on the xesam xhore

After a look at this blog entry and some gentle prodding from Mikkel, I decided to actually get down to updating the Xesam adaptor to the latest spec.

With that done, and a little cheating (i.e. not really doing any parsing on the userQuery), Mikkel’s simple-ui and xesam-adaptor now talk to each other. Whoopee! There’s still a bug I can’t seem to pin down which crashes the adaptor after 2-3 searches from the UI. Will look at that soon. Instructions on taking these out for a whirl are also up.

This is what it looks like: Screenshot

It’s (almost) alive!

Is no news really good news? :-)

Well, I’ve got some code up and running. It doesn’t install anywhere yet, but does talk Xesam in it’s own limited and special way. The parser is possibly not too efficient, and definitely has trouble parsing more complex queries (ones with multiple or data elements). You can find the code is in the Gnome subversion repository.

There’s a list of outstanding issues in the top-level directory. For example, a major concern is that there isn’t much of a grouping mechanism in Beagle for queries with lots of ANDs and ORs (something like “(a and b) or c” is not possible right now).

In the initial implementation I left a lot of the smaller details hanging, I’m going about addressing these now. The set of supported metadata fields needs to be finalised before I can touch upon the set of fields returned and sorting order. The parser is also could do with some touching up (I’ve kept it as simple as possible now).

All this should push the adaptor closer to completeness.

It starts …

Exam done. Got cracking on the code today. Slow start, but some progress made. I’ve now got the skeleton code to hook up to DBus and listen for messages. You can even connect to my tool using the Xesam NewSession method, but that’s about it. I’ve started out with GetProperty, but came upon an interesting hitch.

GetProperty is supposed to return a so-called “Variant” type. Depending on the property requested, the method might return a bool, an int, a string, or even an array of strings. Now I’m not sure how the C# bindings for DBus (dbus-sharp) handle this. Intuitively, returning an ‘object’ (the class from which all types are derived) should work, but it doesn’t seem to. Will need to dig deeper, since this might just be a problem with my version of dbus-sharp (0.63, from Gentoo’s gentopia overlay), and speak to the creator of dbus-sharp (Alp Toker) about it.

It feels good to be writing C# code. The focus is purely on solving the problem at hand, rather than small, nagging, ancillary tasks. For example, setting up the Xesam listener is as simple as:

public static int Main(string[] args)

Connection conn = Bus.GetSessionBus();
Service xesam = new Service(conn, "org.freedesktop.xesam.searcher");
Xesam.Search search = new Xesam.Search();
xesam.RegisterObject(search, "/org/freedesktop/xesam/searcher/main");


return 0;


I’m using the xesam-tools package written by Mikkel Kamstrup Erlandsen for testing this, which makes things a lot simpler for me. The idea now is to continue implementing the Xesam methods by translating to the equivalent implementation using the BeagleClient interface.

Many thanks to jonp and mdx4ever on #mono for their patience with all my n00b questions. :-)

Fun, fun, fun! Good night!

SoC Goodness

I’d mentioned that I’d be participating in the the Google Summer of Code programme this year. More details ensue …

I will be working on Beagle, an uber-cool desktop search tool. The idea behind such a tool is that most of us today work with a massive amount of diverse information everyday. Often we find ourselves trying to remember the answers to questions like “where’d I put that email about …”, “what was that site I saw on …”, “what was that phone number X gave me on IM”, and “where the !@#$ did I put that file …”. Beagle tracks all this and more information, and makes is very simple for you to find. If you haven’t used it, or a similar tool, I highly recommend it, especially if you do a lot of work on your computer.

I’ve posted more details on what I’ll be working on, and why at http://beagle-project.org/BeagleXesam

Phew! Comments, feedback welcome.

Personally, this is great for me, having a focused task to work on and being able to contribute to an open source project. I’m also excited about working with Mono/C#. This might seem strange, given my reservations about a Microsoft-controlled platform. You have to see the code to understand how much cleaner Beagle looks than an equivalent C/C++ implementation would.

Once the semester ends (2 weeks), I will dive into the code and familiarise myself with it.

Update: It seems that I forgot one thing. :D

Things good and bad

Alas, Kurt Vonnegut is no more.

Time I read Slaughterhouse 5. Currently on Margaret Atwood’s The Handmaid’s Tale. Time, it is short, as the semester end nears.

And it appears that I will be busy this summer.

Not much else that is spectacularly worthy of reporting. Now to read about routing protocols in mobile, wireless, ad-hoc networks and associated security concerns.