Saturday, December 16, 2006

Compounding Smartness

Banshee's smart playlists can now be derived from other smart playlists. Since each one allows you to AND or OR a set of conditions, by compounding them you can create the full range of boolean queries. [visit blog post to see image, blogger blocks external referrers] You can create playlists that match against songs' metadata (including rating, when last played, number of plays, etc) and whether a song is (or isn't) in a normal or smart playlist, and then cap the playlist at some number of songs, minutes/hours, or MB, with preference to higher ratings, or whatever you want. I also added a predefined smart playlist for "Unheard Podcasts".

Thursday, December 7, 2006

Lively Banshee

Performance One of the long standing complaints people have about Banshee is the main view of your songs. Some people want the iTunes artist/album/tracks split view, but others just want switching between their Library and other sources (playlists, devices, etc) to take less than five minutes. Previously I whittled that down to more like one minute, but obviously something was still wrong. Banshee has one TreeView and one ListStore. When you switch sources, it clears itself and loads the new songs. The problem is if you had sorted your view, the ListStore would be resorted after each and every new addition. The fix was to turn off sorting until all the songs were loaded. Net result? Switching takes on the order of one second now. Smart Playlists Also in the patch committed tonight were some changes for Smart Playlists, including fixing a crasher, improving performance and reliability, and fixing the very annoying bug that caused songs to be duplicated or not removed. Aaron also committed a nice little fix so you can right click and 'Edit Smart Playlist' instead of getting there through the obscure 'Source Properties' menu item. He's also roping Jakub into redoing my hastily Gimped smart playlist icon. Audio Players USB mass storage audio player support got some much needed attention a week ago. Fixes included actually working with the new, managed DBus, ignoring iPods to avoid confusion, and providing the ability to override HAL's metadata (if any) for the device by putting key=value pairs in the magic .is_audio_player file. See the new new guide for more details. I've actually been using Banshee recently to sync my iPod, enjoying lots of podcast (thanks Mike!) and cover art (thanks snorp!) goodness. Around the Banshee tromping grounds, Łukasz Wiśniewski announced his work on an OpenGL album browser plugin. There have been a ton of other fixes and new features recently. Aaron has a lot of blogging to do. Look for the next release, 0.11.3, in the next few days. It's going to rock!

Saturday, November 4, 2006

Smartly Importing Banshee

Importing 2,200 songs into Banshee took 97 seconds before if you had the four predefined smart playlists active. Three of those four look for favorites, so they don't match newly imported songs at all. If you change them from Rating > 3 to Rating < 3, they will match all the new songs, and importing is impossibly slow. I just committed rate limiting for the smart playlists; if more than a certain number of update events come in per second it ignores them and refreshes everything when the rate decreases. Importing now takes 55 seconds for both cases - one second more than if you have no smart playlists.

Wednesday, October 11, 2006

Tag Crazy

If you are tag crazy, then managing and getting useful stuff done with your tags in F-Spot can be a bear. Jakub tells me he doesn't use the sidebar tag view at all because of how many tags he has, which means the graphical aspect of the new search functionality isn't useful for him. I added a filter entry above the tag view sidebar, so you can set any tag as the toplevel one, so only its children will be shown. It autocompletes, has a drop down, is reachable at any time via Ctrl-L, clears the filter with a button push or by pressing escape, is hidden by default, remembers if you hide/unhide it, etc: You can also see a somewhat more complicated query here. Even if you don't have an icon set for a tag, you can query it with full DND hotness. The tag filtering patch is solid and should land soon.

Friday, October 6, 2006

F-Spot Searching

New search functionality has finally landed in F-Spot. You can now search your photos using your tags with full boolean goodness in drag-n-drop and text-entry varieties. This closes the two oldest F-Spot bugs, and several others. More details and screenshots on this older post.

Monday, October 2, 2006

Blossoms in the Fall

The sunflowers we planted in the previously barren flower boxes on our roof have bloomed! They beautifully complement the view of Lake Michigan and downtown Chicago:
I installed the Foxmarks extension to Firefox today. It helps you keep your bookmarks in sync across multiple computers, using XML and DAV. You can use their hosting service, or you can specify your own host (which I did). It does an awesome job merging bookmarks in; I combined/unified/rediscovered my bookmarks from five different Firefox installations. Excellent!

Tuesday, September 26, 2006

Wild Banshee

I caught a nice bug tonight in Banshee. Every time you switch between sources (Library, playlists, devices, etc) in Banshee, it reloads the ListStore model three times. Reloading is a linear-time operation, so the results below will scale according to how many songs you have. Here are the seconds it takes to execute everything that's triggered when the ActiveSourceChanged event is raised. I switched fairly quickly between my Library (with 2015 songs) and a Smart Playlist (with 409 songs) before and after my patch:
Before  After
1.08  0.04
0.94  0.06
3.96  0.04
0.87  0.06
0.96  0.05
4.23  0.05
8.14  0.05
1.12  0.06
1.01  0.08
4.79  0.06
10.08  0.05
17.75  0.05
Ouch! I was probably trying to switch faster than Banshee could keep up with toward the end, hence the drastically increasing times. But even in the more typical case, it goes from about 1 second to 1/20 of a second. Fix committed! I've been looking into automated testing for F-Spot and Banshee (using Dogtail and Gendarme) for a while. It would be great to track performance regressions and improvements over time, as well as test importing, exporting, code compliance, and more. Looking forward to seeing and meeting people at the Summit in less than two weeks!

Saturday, September 9, 2006


STS-115 launched this morning with Mission Specialist Joe Tanner. Joe was kind enough to take me flying in a Boeing Stearman open-cockpit biplane, cruising the Gulf from 500 ft and pulling a few aerobatics, when I was in Houston working for NASA/USA. I'll never forget that flight. Best of luck for another successful mission, Joe!

Thursday, September 7, 2006

Tag Searching in F-Spot

Back in mid-August I resuscitated the F-Spot query branch, fixed some things, and added some new features. In particular, I added a type-to-find bar where you can enter arbitrary and/or boolean queries (using parenthesis as needed). The not operator is not supported yet, but shouldn't be hard.
I also created an animated GIF of the type-to-find bar in action. More recently I changed the menu options - in the context menus and the Find menu. They are now more functional yet simpler.
Larry says he wants to get this in soon. You can follow along at home by CC'ing yourself to the infamous bug.

Wednesday, September 6, 2006

Smart Playlists in Banshee Core

Aaron has moved the Smart Playlist plugin from Banshee SVN into Banshee itself. Two nights ago I added some pre-defined smart playlists: