Tasks 0.9

After fixing a few bugs, cleaning up the source code, and even adding a few new features, Tasks 0.9 is ready.

Most of the changes were internal, but there are a few user-visible changes.

21:15 Tuesday, 26 Jun 2007 [#] [computers] (7 comments)

GTK+ Is My Bitch

Thanks to some pointers from Kris, I've got some subtle new bling in Tasks. The core of the code is KotoCellRendererPixbuf, a GtkCellRendererPixbuf subclass which implements the activate virtual method, so that it is clickable. However because the other renderer in the column is not activatable (a text renderer), clicking on the row activates the pixbuf renderer. A quick bit of logic in the activate virtual function to look at where was clicked solves this, and now Tasks shows clickable icons when a task has a URL set.

Tasks

I particularly like how space for the icon isn't allocated in every row, so if there is no icon the text extends all the way across the view.

NP: The Herd, The Herd

13:40 Tuesday, 26 Jun 2007 [#] [computers] (9 comments)

For Sale: Babylon 5 DVDs

In the continuing effort to clear some space and pay some bills, I'm selling my collection of Babylon 5 DVDs. I have the boxed sets of series 1 through to 5, in great condition: they've been watched once and then put on the shelf, where they've stayed.

Each series retails at £57, I'm asking for £90 for the complete set (plus shipping, or we meet in Cambridge or London for the cost of a beer). If anyone is interested, please mail me.

Update: I've got a buyer!

19:40 Wednesday, 20 Jun 2007 [#] [life] (9 comments)

Sound Juicer Love Hour

Does anyone fancy hacking for an hour on a neat little feature for Sound Juicer, as a way of learning the code base a little? This shouldn't take more than an hour or so, and would be good for the world.

When Musicbrainz can't find the track listing for a CD, it automatically queries FreeDB and will attempt to return something from the garbled nonsense that FreeDB generally contains. The user cannot tell the difference, unless they notice that the track listings are badly formatted, the album artist is incorrect, or the encoding is wrong. The user will not notice any trivial issues, fix any obvious problems and then rip the CD, or just give up now if the encoding is wrong.

This is bad.

What should happen is that Sound Juicer should subtly point out to the user if the data is proxied from FreeDB, so that they can import it into MusicBrainz where more data can be added and verified. What I'd like to see is a little pane appear if a CD is from FreeDB (SJ knows this already) with a link to the relevant import URL, so the user can quickly import it once for the benefit of everyone else who rips the album in the future.

Does anyone fancy hacking this? As I said, it sounds like an hour of coding for someone who can code GTK+ but hasn't touched SJ before.

NP: This Book Is About Words, Ahmad Szabo

14:30 Wednesday, 20 Jun 2007 [#] [computers/sound-juicer] (11 comments)

Hito Lives!

Hito is alive!

Hito

I admit that the contact preview needs some work, there is some tasty code in Contacts I need to refactor.

So, what is happening here? The tree view is a HitoContactView, which subclasses GtkTreeView. This displays the contents of a HitoContactStore, a subclass of GtkListStore which holds the EContacts from an EBookView. In between the store and the view is a HitoContactFilterModel, which can filter both on groups (currently the most useful implementation is HitoCategoryGroup, which groups on the CATEGORY vCard field) and text, which does decomposed matches against the contact's name.

The combo box is a HitoGroupCombo, which controls the group being filtered. The entry is the only widget which isn't a subclass (yet), and controls the text being filtered. The final bit of magic is HitoGroupStore, which collects categories from contacts and creates HitoCategoryGroups as required (this is used as the model for the combo).

Now for the hard work of writing a usable preview widget, and the nightmare of a decent contact editor...

NP: Live At the Union Chapel, Damien Rice

19:50 Monday, 18 Jun 2007 [#] [computers] (4 comments)

Sound Juicer "Little Bit Of Your Song In My Ear" 2.19.2

Sound Juicer "Little Bit Of Your Song In My Ear" 2.19.2is out. Tarballs are available on burtonini.com, or from the GNOME FTP servers.

10:50 Monday, 18 Jun 2007 [#] [computers/sound-juicer] (2 comments)

Tasks 0.8

After all of the mad Tasks hacking that I did over the last few weeks, I thought it really was time to make a release. So without much ado, here is Tasks 0.8.

Tarballs and packages for Etch, Edgy and Feisty are on debian.o-hand.com. Packages for Sid are uploaded already.

As a teaser, using the experience from working on both the Nokia addressbook and Tasks I've started working on a framework for the next generation of Contacts. Large amounts of the code are from Tasks but with s/task/contact/g applied, and it works quite well already.

Hito screenshot

That is a view of my entire addressbook, filtered on the OpenedHand group. There is no widget to select groups yet, so you'll have to trust me that it's live!

To anyone who noticed that not all of OpenedHand are in the list, and are wondering if I'm subtly dissing people: No I'm not. We have an internal LDAP server, so I stopped keeping my local addressbook up to date some time ago.

NP: What's Come Inside Of You?, Freescha

14:20 Thursday, 14 Jun 2007 [#] [computers] (3 comments)

Postr 0.7

Postr 0.7 is out, fixing a couple of very nasty bugs.

Tarballs at the usual place, packages heading towards Debian shortly.

NP: Flight 602, Aim

11:30 Wednesday, 13 Jun 2007 [#] [computers/postr] (1 comments)

Shock and Awe

From The Hacker's Guide To GPSD:

The best way to avoid having dynamic-memory allocation problems is not to use malloc/free at all.

An interesting approach to avoiding dynamic memory problems which in general are not that hard to debug with good tools (such as Valgrind), especially in relatively simple pieces of code like gpsd. However, in the next section:

The parsing of GPGSV sentences in the NMEA driver has been a persistent and nasty trouble spot, causing more buffer overruns and weird secondary damage than all the rest of the code put together.

Personally, I often find that not allocating buffers on the stack and using dynamically allocated memory with length-bounded functions helps fix buffer overruns.

21:58 Tuesday, 12 Jun 2007 [#] [computers] (5 comments)

Generating Random vCards

Again I found myself wanting a pile of realistic vCards to test with, and decided to write a decent and extendable solution for once (instead of the hilarity of this). A while ago I discovered Barnum, which can generate pseudo-realistic data by containing large data sets of names, street addresses, zip codes and credit card numbers. I extended it a little, adding support for creating an email address from a given name (it looks weird when the contact's name is John Smith but the email is john.doe@bar.com) and generating birth dates, then wrote a tiny script to write valid vCards. Et voilà:

$ ./gen_vcard.py 
BEGIN:VCARD
VERSION:3.0
UID:barnum-1107705517
FN:Caleb Barone
N:Barone;Caleb;;;
BDAY:1955-05-06
EMAIL;TYPE=WORK:cbarone@blanditvelit.eu
X-JABBER;TYPE=HOME:cbarone@eratdolore.eu
ADR;TYPE=HOME:;;8270 Kahlden Lane;Thompson;CT;06277;USA
END:VCARD

If this is useful to anyone else, you'll want Barnum, my patched gen_data.py, and gen_vcard.py.

NP: More Than Music, Murphin

15:00 Wednesday, 06 Jun 2007 [#] [computers] (2 comments)

Postr 0.6

Postr 0.6 is here! What is new I hear you ask. Well:

The tarball is in the usual place, and I'll make Debian packages shortly.

NP: Konfusion, Skalpel

19:45 Tuesday, 05 Jun 2007 [#] [computers/postr] (3 comments)

Sound Juicer Refactor: Testers Wanted

I've been slowly refactoring bits of Sound Juicer to make it more manageable and in the end usable with plugins, and I'm ready to commit a chunk of refactoring back into Subversion. However before I do so I'd appreciate it if some others would test the changes. The changes are in this Bazaar repository, branch, build and use it like you would any other Sound Juicer release.

I've refactored the track store and view into separate objects, which meant that the spagehtti code that held the UI together had to be rewritten. I think I tested all of the cases, but if someone could give it a go, and check that the buttons are correctly enabled and disabled as you select tracks, that the sorting is correct and so on, I'd be very happy. Thanks!

NP: Live EP, Bonobo

18:00 Monday, 04 Jun 2007 [#] [computers/sound-juicer] (0 comments)