Tuesday, August 12. 2008DBug
What is better than Akademy?
... inGardenWithCoffeeHaXX0ring(tm) Nowadays everyone is obsessed with debugging, including me, this obsession leads to the urge of having debug packages for each any everything. So, while half the KDE crew was listening to talks due to leak of power supply I was working on debug packages for Project Neon (i.e. kde-nightly and amarok-nightly) and I think the Neon PPA doubled its size. Now you can install amarok-nightly-dbg which is pulling in a complete debug stack for amarok-nightly. In addition to that you also get a new script called amarok-nightly-debug which wraps around amarok-nightly-vars and gdb. Basically the same applies for kde-nightly, but kde-nightly-dbg will only pull in the necessary dbg packages rather than the complete stack (just like kde-nightly). There is no wrapper script yet, but kcrash takes care of almost everything anyway If you have time, please take the dbg packages for a testcrash and complain if it fails to crash ... err... to trace the crash And tomorrow I'll tell you about a script I created months ago and used it yesterday for the first time.
Sunday, August 10. 2008Best Application EVAR!
so the very kind folks who won the Akademy awards last year ( sebastian trueg, matthias kretz, danny allen ) decided to go ahead and award Amarok with the Best Application award! we are obviously very excited and very pleased to win this award, and want to (tearfully) thank all those users who have been with us through the long dark (teatime of the soul) times of Amarok 1.x.... wait, we never had those. nevermind.
Anyway, I would like to thank everyone on the behalf of the Amarok team for supporting us, and most of all for believing in us throughout the long Amarok 2 process. It's coming. Soon. But Not Yet (tm). The other winners of Akademy awards this year include Nuno Pinheiro (Oxygen) for Best Non-Application Contribution, and we're exceedingly glad to be able to say that we have been collaborating with Nuno to get some kick-ass new looks for Amarok. Our continued cooperation will definitely result in some pretty sweet new designs for Amarok, and we are really happy to be working with him. The other winner of the Best Contributor to KDE is none other than Aaron Seigo, KDE dancer extraordinaire and resident party animal. After a late night saturday, Aaron was able to provide enough lap dances to the judges to sway their opinion in his favor, and he took home the goods. I'm excited to be done with the talk portion of Akademy, and to get to the hackathon sessions. I'll have to find a way to get through the e.V. meeting tomorrow, but other than that, expect a productive week of amarok hacking coming up! Akademy social eventLast night I managed to have nearly 100 people sign Lydia’s little black notebook at the Akademy beer-event. It was fun and a perfect example of how beer can give you a reason to do practically anything. Coming up: Amarok talk. Must write notes. Saturday, August 9. 2008Plotting Total World Domanation
The wolf has once again descended on Akademy. Last year there were 6 of us, this year that has more than doubled. Come the hacking marathon on monday, this will hopefully lead to a great amount of code, technical discussions, bugfixes and general coolness.
( there are a few people missing from this picture ) Tonight was the social event, with great food and great ( and strong... ) Belgian beer. As should be evident from the above picture, the Amarok'ers were making the most of this and having a great time ( I am sure some of them are still going strong as I am typing this... ) An event like this is, as Aaron illustrated, also the perfect place to ponder the needed steps for KDE to achieve ultimate and inevitable goal of total world domination. Amarok File TrackingI don't blog often, but when I do it tends to be meaty. I won't disappoint. I'll be covering Amarok, Amarok history, and a possible future part of kdelibs. "We can rebuild him. We have the technology. Better than before. Better, stronger, faster." A little-known feature in Amarok 1, starting at about 1.4.3, was what was known as Amarok File Tracking, or AFT. For every single file in your collection, on scan, a unique identifier (UID) was generated from some of the file's attributes. If you moved your tracks around your folders, as the incremental scan kicked in, the UID would allow for the file to be identified, and integration throughout Amarok would mean that your statistics, your cached lyrics, and the current playlist would all be updated with the new path. No longer did you have to worry that moving around your files would mean losing years of statistics. Or losing your files. But I'm getting ahead of myself. See, AFT wasn't born AFT. AFT could not track both a file metadata change and a file location change at once, because the UID was being based on file properties such as file length, plus a portion of the file itself hashed together. So you could still lose track of your files. This was a limitation that was known in advance. It was also a limitation that didn't originally exist. As I said, AFT wasn't born AFT. It was born as Advanced Tag Features, or ATF. ATF was the same idea, but a little different -- it would store the generated UID directly in the file's metadata. This allowed for superb file tracking capabilities, because unlike generating a UID from a part of a file, if that part of the file changed, you'd still have your UID. In fact, the only way you couldn't track your file was if you either removed the file's tag entirely (or some other program removed the UID when it shouldn't), or if you removed the corresponding information from Amarok's database. (There are some downsides to this scheme: only certain file types are supported, for instance, determined by the kind of tag they use and the tag's ability to store this kind of information.) So why the change? Well, ATF had a problem, which was related to the structure of Amarok itself, and Amarok's historical penchant for crashing (which got much better as the 1.4 series progressed). The outcome is possibly worthy of an entry in The Daily WTF. In gory detail, here's the problem. 1. Amarok would start a collection scan. The collection scanner was the entity responsible for adding the UIDs to the file metadata. Important note: the collection scan was a separate process. 2. Amarok would crash, leaving the collection scan running, although not communicating with anything. This scanner could be very slow if it was adding the UIDs, depending on whether padding had to be added to the file's tag. If this was the case, the entire file would have to be rewritten. 3. Amarok would be restarted by the user. Another collection scan process would start. Becuase UIDs would already exist for the early files, it would very quickly catch up to the first collection scan process. 4. You now had two collection scan processes generating and writing UIDs at the same time to the same file. If you were lucky, this would mess up your tag. If you were unlucky, this toasted your entire file. 5. Repeat step 4 for the rest of the scan. ATF was never released in this state, but it did get turned on in SVN. And a few unlucky users had far too many files end up corrupted, depending on how crashy things became for them. After we finally realized what the issue was, a user came forward on the mailing list (still trying to find the exact mail or user) proposing a solution that I believe they'd seen in a class. Essentially, the solution relies on modifications to temporary, uniquely named files instead of the original file, using MD5 checksums to find out of the original file has changed while writing the new file, then using filesystem atomicity guarantees to move the new file back over the old one. This became the MetaBundleSaver, and it worked quite well, but it was also extremely slow compared to a normal scan. And most importantly, no one was quite trusting of the whole ATF scheme any more. So, ATF was renamed to AFT and with it came a new algorithm that wouldn't touch anyone's files, but couldn't track as well. A couple weeks ago, I added AFT to Amarok 2's SqlCollection. Enjoy, everyone -- statistics, lyrics, and the playlist are already supported, with support for stored playlists coming eventually. But there's more. Fast forward to today (okay, two days ago). I'm taking a shower -- Wade does insist that there's something about showers and KDE coders -- and I had a thought, which was essentially: there's absolutely no reason why Amarok 2 can't use a UID inside a file, if one exists, for superior tracking, and if not, generate a read-only type for normal tracking. So I created a utility that is built and installed with Amarok 2. It's called amarok_afttagger, and it will write UIDs into your files, using a class ported from MetaBundleSaver and called SafeFileSaver to ensure that files are not overwritten/interleaved, even if you run the process twice or three times at once. It optionally supports recursion if you want to pass in directories, and it can also remove UIDs from your files if you like. Right now it supports MP3s only, but Vorbis and FLAC support will be coming soon. I've tested it extensively. I've added UIDs to files, removed them from files, regenerated the ones in files, over and over, and still everything is cherry. And Amarok 2, when it finds these files, can do some awesomely robust file tracking. I encourage people to give it a run on their MP3s and check it out -- if you're worried by all the Dark Ages info up above and don't have faith in the implemented solution, back up your files first, or operate on a copy of them, until you're satisfied it won't harm your files. And if you still don't want to do it, you can enjoy the less awesome but still awesome power of the non-embedded UID file tracking. Now, I promised this would talk about a possible KDE library. I'll eventually be submitting the SafeFileSaver class for hopeful inclusion into kdelibs, so that any application that is worried about data integrity and needs to write to a user's files can take advantage of it. It's very simple to use -- you simply give it a file path, and then operate on the file path that's returned to you when you call prepareToSave(), instead of the original one. When you're all done, you call doSave() and it will perform the necessary functions. That's it. Hope this has been enjoyable, and enjoy AFT in Amarok 2. Play with it and be amazed. Use amarok_afttagger on your files and be even more amazed. More information is available here: http://amarok.kde.org/wiki/AFT Continue reading "Amarok File Tracking" Dragons, DVDs and New Device Notifiers
Some days Dragon Master Ian aka eean asked me to have a look at integrating Dragon Player into the New Device Notifier thingy. While I was pretty sure it's not meant for actual use yet (didn't seem like it afterwards either
The magic behind that stuff is that one actually can define very clearly when the desktop file should apply (using information provided by Solid). X-KDE-Solid-Predicate=[[ StorageVolume.ignored == false AND OpticalDisc.availableContent == 'Data|VideoDvd' ] OR [ StorageVolume.ignored == false AND OpticalDisc.availableContent == 'Data|VideoDvd' ]]Meaning unless the volume is set to be ignored somewhere from something and if it is an optical disc providing video dvd data this cool application can launch it. The line above might seem a bit strange ... actually it is ... apparently whatever is parsing that desktop file (some solid dataengine I guess) doesn't like 2 ANDs or no AND or no OR => simply put: x = ? AND y = ? OR x = ? AND z = ? No more and no less than that Also I think the new device notifier needs some changes to increase understandibility: The usual action is 'Open with ApplicationName' (e.g. Open with Dolphin), in my opinion an approach like in KickOff would be much better => use the generic name and only provide the application name as minor information. As a new user I might not know what Dolphin or Dragon Player is and what it does (ok, for Dragon it's pretty obvious Anyway, get the new dragonplayer and check out the new device notifier integration ![]() BTW: kde-nightly is pretty broken apparently QtScript Bindings and some blogQtScript BindingsIf you've been following Peter Zhou's blogs, you know that he has been implementing QtScript support for Amarok. Probably the neatest thing we did is give access to almost the entire Qt API via the QtScript Binding Generator from Trolltech Labs. It uses technology from QtJambi; if you have Qt 4.4.1 and were wondering why Amarok gives a bunch of MetaJavaBuilder errors, this is why. (The bindings are disabled for Qt 4.4.0; we'll bump the Amarok dependency once 4.4.1 is more widespread). I do think that the QtScript API is probably the most difficult Qt API to get the details right on. Your mind swirls with QScriptValue, QObjects and QVariants. But it is also quite powerful. Since I had been sending the generators creator Kent Hanson emails regularly, I thought a mailing list would be a good idea to make it more public and useful. Join qtscript-bindings for discussion on the QtScript bindings in general. Kent also created a bug tracker and a Git repo. I created a mirror of it on repo.or.cz and posted the changes we've made to our SVN copy. The beginnings of documentation for Amarok scripting are available and Richard Moore started a general Techbase article. Console and Unnamed HTTP ServerThe first script I created was an "irb" for Amarok's QtScript environment. This is available with Amarok SVN now, the "Amarok Script Console." It's quite handy to test out QtScript or to even test out the Qt API. I've been working on a web control application for Amarok 2 using the new API. Using QTcpServer and QHttp, I have created a web server that should work well enough for what I'm doing. Now all that's left is the "little detail" of the HTML interface; I've been tinkering with qooxdoo, a very fancy JavaScript API. One of my first sizable Amarok-related developments was to create the first kde-apps Amarok script in 2004 using Korundrum. So now its full circle. Some BlogThe google news catcher sent me an indirect link to this Time-Warner blog: 3 Linux Apps That Make Me Hate Windows. He cites Synaptic, Compiz and Amarok. As much as you hear people gripe about package management on Linux, I really do think its one of its best features. Certainly from a security standpoint: going to a random web site and installing software just isn't something You Do on Linux, and I think thats for the best. And of course, it goes without saying that I agree Amarok is the best media player. Everyone have fun at aKademy! QtScript Bindings and some blogQtScript BindingsIf you've been following Peter Zhou's blogs, you know that he has been implementing QtScript support for Amarok. Probably the neatest thing we did is give access to almost the entire Qt API via the QtScript Binding Generator from Trolltech Labs. It uses technology from QtJambi; if you have Qt 4.4.1 and were wondering why Amarok gives a bunch of MetaJavaBuilder errors, this is why. (The bindings are disabled for Qt 4.4.0; we'll bump the Amarok dependency once 4.4.1 is more widespread). I do think that the QtScript API is probably the most difficult Qt API to get the details right on. Your mind swirls with QScriptValue, QObjects and QVariants. But it is also quite powerful. Since I had been sending the generators creator Kent Hanson emails regularly, I thought a mailing list would be a good idea to make it more public and useful. Join qtscript-bindings for discussion on the QtScript bindings in general. Kent also created a bug tracker and a Git repo. I created a mirror of it on repo.or.cz and posted the changes we've made to our SVN copy. The beginnings of documentation for Amarok scripting are available and Richard Moore started a general Techbase article. Console and Unnamed HTTP ServerThe first script I created was an "irb" for Amarok's QtScript environment. This is available with Amarok SVN now, the "Amarok Script Console." It's quite handy to test out QtScript or to even test out the Qt API. I've been working on a web control application for Amarok 2 using the new API. Using QTcpServer and QHttp, I have created a web server that should work well enough for what I'm doing. Now all that's left is the "little detail" of the HTML interface; I've been tinkering with qooxdoo, a very fancy JavaScript API. One of my first sizable Amarok-related developments was to create the first kde-apps Amarok script in 2004 using Korundrum. So now its full circle. Some BlogThe google news catcher sent me an indirect link to this Time-Warner blog: 3 Linux Apps That Make Me Hate Windows. He cites Synaptic, Compiz and Amarok. As much as you hear people gripe about package management on Linux, I really do think its one of its best features. Certainly from a security standpoint: going to a random web site and installing software just isn't something You Do on Linux, and I think thats for the best. And of course, it goes without saying that I agree Amarok is the best media player. Everyone have fun at aKademy! I know I would be. :/ Friday, August 8. 2008Introducing: Fuzzy Biases
Suppose you're really into music created around the "summer of love" in 1967. Its easy enough it create a filter so you only get music from 1967. We could do that in Amarok 1, but that excludes a lot of music around that period that's just as significant.
Maybe you could do something like asking for everything that's recorded after 1960 but before 1973. That's better, but it's still not really what you mean when you say around 1967. You would prefer tracks closer to 1967 than farther away. This is where "fuzzy biases" come in. The goal with fuzzy biases, is create a playlists that approximately match a value. Generating biased playlists, is always a question of probability distributions. What we are really trying to do here is generate a playlist that fits normal distribution bell-curve. Like this: The horizontal axis is the year, the vertical axis is the probability of getting track of that particular. So the nearer to 1967 the track is, the better chance of it ending up in our playlist it has.Ok, another example. I really just want to listen to some good straight up pop right now. No eleven minute epic folk ballads, no classical, no post-rock, just tight catchy songs. So I make a fuzzy bias to find songs that are about three minutes long. Great. That's a pretty good mix, and I can refine it later with other biases. The fairly vague "Strictness" slider indirectly controls the standard deviation of of the distribution. ![]() How is this different than the old fashion method, just specifying a pair of strict biases? ![]() To get all mathematical on you, that creates a playlist that matches a uniform distribution. ![]() If you've never taken a statistics class and didn't follow any of this, let me summarize:
Thursday, August 7. 2008GSoC weekly report - issue 10Monday, August 4. 2008Rokers on speed?whatever happened to the rock and roll? Paul always does sweet little graphs to show interesting stuff. Since everyone in the Amarok team felt that development really sped up in the last weeks/months I wanted some proof of that mainly to show it off Impressive, right? So now that Paul did his part I should probably do my job and explain why this is happening There are several “sources of developers”:
So the next question is: Why are more people interested in Amarok 2 now than they were say 2 months ago. The reasons I can see are:
Last but not least: Developers are motivated by:
It is pretty interesting to see how most of this, if not all, can also be applied to KDE 4.1. Let’s see if we can get some nice stuff put together at Akademy to prove this Exiting times and more of them ahead of us! Now is the right time to join KDE development (and any other non-dev part of KDE of course). Friday, August 1. 2008GSoC weekly report issue 9Thursday, July 31. 2008A breath of fresh air for Konsole Oxygen thingy of the day: Konsole Color SchemeI'd still like to get some feedback on the color composition so give it a try. Currently only Nightrose (aka Lydia) tested it, and usually her display's colors are way off Lydia also states that it rocks with irssi, but who uses that thing anyway? Grab it today and get your Konsole a breath of fresh air. BTW: apparently it takes some time to get used to it, but once you did, it is quite awesome to work with this color scheme A breath of fresh air for Konsole Oxygen thingy of the day: Konsole Color SchemeI'd still like to get some feedback on the color composition so give it a try. Currently only Nightrose (aka Lydia) tested it, and usually here display's colors are way off Lydia also states that it rocks with irssi, but who uses that thing anyway? Grab it today and get your Konsole a breath of fresh air. BTW: apparently it takes some time to get used to it, but once you did, it is quite awesome to work with this color scheme Le KDE sprechen ?????
Kubuntu users now also can get a localized KDE
Just install you language's package, e.g. kde-l10n-de for german, then do the following: ![]() Kickoff -> System Settings -> Regional & Language there you can select Country/Region which should auto-adjust a couple of stuff to your local preferences (for example the date formatting) in addition to that it should also select the installed language. If this fails for whatever reason, use the "Add Language" drop-down menu instead. Beside l10n, we also uploaded a couple of extragear packages like KTorrent, Skanlite and KFax. Pimp my Konqueror Installing konqueror-plugin-searchbar-kde4 will add the world famous google searchbar to your konqueror again Also checkout the other konqueror-plugin-* packages, maybe you want to install some of them.
« previous page
(Page 2 of 47, totaling 697 entries)
» next page
|
Amarok LinksCalendar
QuicksearchArchivesCategoriesSyndicate This BlogBlog Administration |
|||||||||||||||||||||||||||||||||||||||||||||||||

