TagLib 1.6.2 has been released. It’s another bug-fix release in the 1.6 series. There is no new functionality, only a few bugs and compatibility issues have been fixed. Please see the change log for details. You can download the source code tarball here (or here). As with previous releases, there are no Windows binaries, but you can easily build your own with CMake.
Change log:
Read Vorbis Comments from the first FLAC metadata block, if there are multipe ones. (Bug #211089)
Fixed a memory leak in FileRef’s OGA format detection.
Fixed compilation with the Sun Studio compiler. (Bug #215225)
Handle WM/TrackNumber attributes with DWORD content in WMA files. (Bug #218526)
More strict check if something is a valid MP4 file. (Bug #216819)
Correctly save MP4 int-pair atoms with flags set to 0.
Fixed compilation of the test runner on Windows.
Store ASF attributes larger than 64k in the metadata library object.
Ignore trailing non-data atoms when parsing MP4 covr atoms.
Don’t upgrade ID3v2.2 frame TDA to TDRC. (Bug #228968)
After seeing Gource videos for Perl and Twisted today, I wanted to make a similar video for the MusicBrainz server code. Well, and for some of my personal projects, but those turned out to be boring :). Anyway, here is the result (YouTube link):
GitHub has a nice feature called “Punchcard”. It’s a graph that represents numbers of commits by day and hour (example). You can easily see wherether a project was hacked over weekends or nights, if it’s done by full-time employees, etc. There are two problems though:
It ignores timezones. All timestamps are treated as if they were somewhere in the US. For projects where committers live across the world (most open source projects) it’s therefore almost useless.
It only works for GitHub projects, obviously.
I’ve put together a little Bazaar plugin that can generate similar graphs for Bazaar branches. You can get the plugin here. It requires PyQt for image drawing, but many Bazaar users should already have PyQt installed. Once you install the plugin, you can generate a “Punchcard” by running a command like this in a branch directory:
You can see that the project is done by people who obviously have too much free time. There is activity pretty much any time. I guess only on weekend nights, people are tired and enjoy some sleep. :)
On the other hand, Picard was hacked by people with good sleep patterns over evenings and weekends:
MusicBrainz Server is in a similar situation, minus the good sleep patterns:
The last example is Bazaar. It’s mostly written by full-time employees and it shows:
Some programming languages really encourage using UNIX timestamps for working with dates. PHP is a good example of such a language. Functions like date, strtotime, strftime are used all the time. Most people don’t realize that timestamps in general can’t really be used for calculations though. The problem is that most countries use daylight saving time, which means that two times a year the local timezone changes. This nicely breaks the assumption that every day has 24 hours. It doesn’t. Sometimes it has 23 or 25 hours.
The code seems logical. Get the timestamp of the last Monday, add 60 * 60 * 24 * 7 – 1 seconds and you have the end of Sunday. Works fine most of the time. Although, if the $monday happens to be Mon, 22 Mar 2010 00:00:00, the date that was supposed to be Sun, 28 Mar 2010 23:59:59 will actually be Mon, 29 Mar 2010 00:59:59. Why? Because 28 March 2010 has only 23 hours.
Never use timestamps to do calendar calculations. It’s hard to get it right. If you really have to, at least use GMT timestamps.
Database Modeller 0.3 has been released. There isn’t as many changes as I wanted, but the main changes were unreleased for almost half a year. You can download the source code and Windows installer on the project page.
Changes since version 0.2:
PDF export
Support for printing
Opening of files passed through the command line arguments (Bug #401595)
The recently used files list now always uses absolute paths
Implemented auto-scrolling in the diagram view (Bug #420324)
The “Close” menu item will now only close the document, not the window (Bug #420322)
Use the selected file format in the export dialog, instead of relying only on the extension (Bug #396056)