Friday, May 16, 2008

Down and Out in Chicago

I'm a big fan of Cory Doctorow, the person, the advocate, and the author. He's extremely eloquent, funny, and grounded. I got the chance to meet Cory tonight at a reading of his latest book, Little Brother — which is fantastic; I couldn't put it down.

Cory Doctorow reading from Little Brother at a signing in Chicago


I gave Cory a Banshee shirt and told him about our upcoming 1.0, since he's a GNU/Linux user (his words and his actions speak volumes) and he popped into #banshee a while back.

Cory Doctorow and yours truly


Anyway, if you haven't seen Cory speak, he's able to explain difficult, technical issues to non-techies in a way that they can understand and makes geeks proud. I'm happy to have finally met him.

Monday, May 12, 2008

F-Spot Summer of Code

I am excited to be mentoring Andrew Wytyczak-Partyka this summer as part of GSoC. Andrew will create a library implementing the Digital Photo Access Protocol (DPAP) and integrate it into F-Spot. I'm not familiar with DPAP, so any experts please feel free to give us pointers.

Andrew previously did work on face recognition for F-Spot/GSoC. I see he's already been added to Planet GNOME, so you should be hearing from him before too long. Work officially starts on May 26.

F-Spot was lucky enough to get three SoC students this year. The other two are Ruben Vermeersch working on the sidebar and possibly GEGL integration, and Vasiliy Kirilichev working on color profile support. It's great to see F-Spot getting this much attention. I'm also looking forward to seeing the results of Cosimo Cecchi's work on GNOME media integration.

Thanks to Google for creating and sponsoring the SoC, and to Novell for giving many of its engineers, including me, time to participate.

Thursday, May 08, 2008

Banshee Podcast Support Coming in Beta 2

First, a quick note to people using the Ubuntu Banshee 1.0 PPA packages. Unfortunately, the packager messed up and at first released packages without iPod or MTP support. And now it has come to my attention (via comments and bugs from disappointed users) that the packages include the podcast extension, when it is pre-alpha and should not have been included. Hopefully the Ubuntu guys will get fixed packages out soon, and be more careful with packaging in the future. Jorge is working to make things right.

We do expect to have the podcast extension ready by Beta 2. And Beta 2 will have auto-rip support which I just committed last night. After enabling it in your Preferences, whenever you insert a CD it will automatically begin importing it, if it's not already in your library and if MusicBrainz information can be found for it. Very useful if you are ripping many CDs.

Tuesday, May 06, 2008

Banshee 1.0 Beta 1 Released

We have just released Banshee 1.0 Beta 1, aka 0.99.1! This release adds some major features and lots of polish.


MTP and iPod device support have landed! Both MTP and iPod support album artwork, on-the-fly transcoding (converting between file formats), and video support!

Animation showing Banshee playing music, transferring files to a MTP device, and showing large cover art.
Banshee playing music, showing cover art, and transferring to an MTP device

Other features and fixes include:
  • Fullscreen video playback (go to Now Playing and press f or hit the Fullscreen button)
  • Extensions can be enabled and disabled in the new Mange Extensions tab within your Preferences.
  • Banshee can be scripted using Boo
  • Improved gstreamer error handling (for missing files, codecs, etc)
  • A bug with play counts, introduced in Alpha 3, has been fixed
  • Writing metadata to file was not working in the Alphas, is fixed
  • Issues with the play queue should all be resolved
  • Limiting smart playlists by file size or duration works
  • Shuffle and repeat are automatically disabled while playing Last.fm

Default smart playlists in Banshee
Default Smart Playlists
This release also features default smart playlists, created for new users and users with zero smart playlists. There is a more extensive list of predefined smart playlists, including the defaults, available in the New Smart Playlist dialog.

Thanks to Aaron Bockover, Alexander Hixon, Bertrand Lorentz, Christopher Rogers, Scott Peterson, Sebastian Dröge, and Wouter Bolsterlee for code contributions for this release, and to Daniel Nylander (sv), Gabor Kelemen (hu), Jordi Mas (ca), and Wouter Bolsterlee (nl) for updated translations! And to Jorge Castro for testing and release notes help, and Michael Monreal and Andrew Conkling for testing and bugzilla work!

You can follow the posts of Banshee contributors on Planet Banshee. We are a friendly, vibrant community and always glad to have people join us! If you have been wanting to contribute back to free software and GNOME, I think you'll find Banshee's code and C# a pleasure to work in, and a healthy amount of support and encouragement from a very active community. Join us on our mailing list, in our IRC chatroom, and on our wiki!

Digg It!

Wednesday, April 16, 2008

Banshee at LugRadio Live

Aaron and I gave a 30 minute talk on Banshee to a packed room at LugRadio Live last Saturday. Media Archive did a great job of filming the talks and getting them on DVD by the end of the conference. I ripped the DVD and posted the video on Google Video and as a 114MB Ogg/Theora file.

I really enjoyed hanging out with Chris Toshok, Dave Camp, Erinn Clark, Sandy Armstrong, Ryan Paul, Zonker, Steve and Ian from Songbird, and tons of other cool people. Our community is full of friendly, social people. Zonker and Aaron did a great job getting hundreds of awesome Banshee shirts for us:


Photo CC-BY-SA by Ian McKellar

I'm hoping to make it to Penguicon in Detroit this weekend, though I think I'm getting sick, so at this point I think it's not happening. Jorge says he can give my Banshee talk for me, and hopefully we can get some shirts there.

Thursday, March 27, 2008

Banshee Media Player

Banshee is now the Banshee Media Player. With the release of 1.0 Alpha 2 we've added support for video management and playback! It works, looks, and feels great.

Banshee playing a video in its new Now Playing source

Our goal with trunk has always been to fix fundamental design issues and create a well-organized, flexible, and powerful code base. And video support has proven to us that we've been successful. We were able to add video management with very little code and playlists, smart playlists, searching, queuing, and bookmarks all just work.

We also have a wonderful new source called Now Playing. It sits at the top of your source list and is where video playback happens. And the idea, coming in Alpha 3, is when you're playing audio you'll find visualizations, Last.fm recommendations, and other contextual information there.

Aaron goes into more detail about features, running the latest from svn, and more on his blog.

Friday, March 14, 2008

Subvocalization

My friend Michael Callahan (no, really, he is my close friend) and his team have been working hard for years on the Audeo, a device that sits on your neck and understands the electrical signals it can pick up from your nerve/vocal cord activity - even if you're subvocalizing. From the start, it's been a project to improve the quality of life for people with ALS and similar health issues, but they're expanding their vision in all sorts of awesome ways - including demonstrating the first subvocalized telephone call.

Michael is a fantastic person doing amazing work, and he's getting recognition, from winning big grants to doing the Tour de Web - on BoingBoing, TechCrunch, and Netscape-creator Marc Andreessen's blog just in the last two days. That's got to be over a million viewers.



Says Marc:

I have a feeling that someday, this may be up there with "Come here, Watson, I need you."

I wonder if Marc knows that Michael is doing his work at his alma mater.

If you have read Cory Doctorow's "Down and Out in the Magic Kingdom" (it's free, CC-BYNDNC), or have seen Michael's demonstrations, you can't help but be excited by this.

Banshee 1.0 Alpha 1

Aaron and I are tremendously excited to announce the release of Banshee 1.0 Alpha 1.

User Focused
We have a ton of new features - a slick artist/album browser, a play queue, powerful search, better Last.fm radio, an equalizer, and continuous playback from a given playlist or source, even if you browse another playlist or check what's on Last.fm. And things are faster - much faster - thanks to using SQLite to do the heavy lifting.

Banshee with its new artist/album browser to the left of the track list

Visit the release notes for more pretty pictures and details about this release, including missing features and running it alongside Banshee 0.13.2 or earlier.

Developer Friendly
Banshee's source tree is better organized than ever. And with tools like MonoDevelop, working on Banshee is fun. Two of MonoDevelop's many features, autocompletion and jump to class/method-declaration, are especially valuable to people new to Banshee development.

Screenshot of MonoDevelop editing a Banshee class

If you want to tweak Banshee, fix a bug, write an extension, or just explore the code, I encourage you to install MonoDevelop and get started building trunk. We have a vibrant community ready to help you on our mailing list and on IRC in #banshee.

For those running openSUSE 10.3:


Digg it

Wednesday, February 13, 2008

A Reason to Hope

I'm thrilled that my close friend Barack Obama is inspiring others like he has inspired me.

I'm thrilled to have a president

  • who leads with hope and unity, not fear and divisions,
  • who improves on JFK's "ask not" line with "we invest in you, you invest in your country",
  • who is as consistent with his positions and demeanor as he is with his beautiful website and branding.
  • who finds the time to vote against giving the telecoms immunity for spying on us, unlike Senator Clinton.
I call him my close friend because you can't read the honest, heartfelt story of his pre-political life (Dreams From my Father) without feeling like he's your brother, your friend.

Friday, January 18, 2008

Howling Queries

Banshee's search code is getting revamped. Before getting into the technical discussion, I want to note that simple queries that you can perform in stable today will most of the time produce the same results in trunk. In trunk, the default operator in user-queries is AND, so a query dave matthews is parsed as dave AND mathews. Filtering is done in real-time as you type, and mal-formed queries are handled gracefully. You can also specify fields (by:dave, album:"under the table", rating=4).

Trunk is well organized into assemblies that break along logical boundaries. One of these assemblies is called Hyena, and contains reusable data-oriented classes. I want to highlight one namespace in it that has come a long way in the last few weeks.

Hyena.Data.Query

The fundamental data structure in Hyena.Data.Query is the QueryNode tree, made up of QueryTermNodes (literal values, field queries) and QueryListNodes (and, or, not).

We have two parsers, UserQueryParser and XmlQueryParser, as well as methods to take a tree and produce user or XML queries. This means we can go from a user query to XML and back, or vice-versa. Given a list of queryable fields and their mapping to Banshee's database (a QueryFieldSet), we can also take a tree and produce SQL for actually carrying out the search. You can see all this in action if you run trunk from a terminal:

Searching in Banshee, showing query parsing and XML/SQL generation

All this work makes searching much faster (straight against the database), unifies our search infrastructure, and makes it trivial to implement features like dragging a smart playlist onto the search entry and turning a search into a smart playlist.

Both our user-query language and XML are extremely close to the XESAM spec, and we want to be compliant. We're working with the XESAM team to make sure it meets our needs.