With my last post a day over three weeks ago, I had not noted the passage of time until this weekend. I think the delay can be attributed to proficiency with F# after scaling some important parts of its learning curve. Since then, I’ve set about creating some components from the earlier examples.
The decorator pattern for DBus property support, discussed in an ealier post, has given way to an abstract generic base class which makes efficient use of the bus; rendering the property support that I had implemented redundant, if it weren’t for the unexpected benefit of correcting dbus-sharp’s event implementation for F# classes…
With some robust plumbing in place it was time to move on to integration. Starting with a Service for monitoring the state of adapters and devices, followed by a Source for displaying some basic information and controls within Banshee we’re able to provide some simple, but useful shortcuts to features already available to users under the hood of their system. For example, BlueZ and PulseAudio integrate beautifully; it is quite a simple matter of connecting bluetooth speakers and headsets. Users may now do this through Banshee, as the screenshot below shows:
It’s taken quite a bit of effort getting here, but the work on dbus-sharp and the invisible infrastructure that has been slowly evolving leaves me with a sense of big things, just about to happen, like a snowboarder hearing the rumble of an avalanche.