Mark Kretschmann

聚合内容 RSS: Amarok Blog - markey - Amarok developers at work
Amarok developers at work
更新时间: 31 分钟 44 秒 前

Kubuntu "Karmic" Release Party @ Puzzle ITC

November 22, 2009 - 10:14
Yesterday Myriam and I attended the Kubuntu "Karmic Koala" release party in Berne, Switzerland, kindly hosted by a href="http://www.puzzle.ch/"Puzzle ITC/a in their very nice office. We did all sorts of funny things there, including a talk on a href="http://www.kubuntu.org/news/timelord"Project Timelord/a (given by Myriam), some a href="http://amarok.kde.org/en/releases/2.2.1"Amarok 2.2.1/a goodness (presented by me), having pizza (including some emvery/em hot sauce), and... wait for it... beer!br / br / All in all we had a jolly good time, made some new friends, and even talked about the possibility of having a a href="http://en.wikipedia.org/wiki/Nokia_N900"Nokia N900/a release event there in January (anyone interested in giving a presentation?) img src="http://amarok.kde.org/blog/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /br / br / br / div class="serendipity_imageComment_center" style="width: 750px"div class="serendipity_imageComment_img"a class='serendipity_image_link' href='http://amarok.kde.org/blog/uploads/IMG_0430.JPG'!-- s9ymdb:239 --img class="serendipity_image_center" width="750" height="563" src="http://amarok.kde.org/blog/uploads/IMG_0430.serendipityThumb.JPG" alt="" //a/divdiv class="serendipity_imageComment_txt"Myriam presenting Project Timelord/div/divbr / br / br / div class="serendipity_imageComment_center" style="width: 750px"div class="serendipity_imageComment_img"a class='serendipity_image_link' href='http://amarok.kde.org/blog/uploads/IMG_0415.JPG'!-- s9ymdb:240 --img class="serendipity_image_center" width="750" height="563" src="http://amarok.kde.org/blog/uploads/IMG_0415.serendipityThumb.JPG" alt="" //a/divdiv class="serendipity_imageComment_txt"Me making a weird face/div/divbr / br / br / div class="serendipity_imageComment_center" style="width: 750px"div class="serendipity_imageComment_img"a class='serendipity_image_link' href='http://amarok.kde.org/blog/uploads/IMG_0432.JPG'!-- s9ymdb:241 --img class="serendipity_image_center" width="750" height="563" src="http://amarok.kde.org/blog/uploads/IMG_0432.serendipityThumb.JPG" alt="" //a/divdiv class="serendipity_imageComment_txt"Pizza time!/div/divbr / br /
分类: Planet Amarok

Micro-Options, Many-Options, No-Options? A practical guide to help you decide.

November 19, 2009 - 09:21
Not very long ago, Aaron a href='http://aseigo.blogspot.com/2009/10/two-simple-things-to-improve-user.html'wrote an article/a about improving our user experience, stating that em"Micro-Options Suck"/em. Coincidentally, an a href="http://dot.kde.org/2009/10/21/kde4-demonstrates-choice-not-usability-problem"article/a appeared on dot.kde.org only a few hours later, stating the following: em"Choice Is Not A Usability Problem"/em.br / br / Ardent readers will notice that there is possibly a contradiction here. In this article I would like to explain why this is not really a contradiction, but rather a misunderstanding. To get us started, let's make a jump back in time (using Flux Capacitor technology):br / br / The year is 2004. It's cold. You are alone. There is a house in the north (called "KDE"), and a house in the south ("GNOME"). Press "n" or "s".br / br / nbr / br / You have entered the house of KDE. It's a big house, full of obscure items. The sheer number of items is highly impressive, but you get confused. It is too much. What is your next step? Press "n" or "s".br / br / sbr / br / You have entered the house of GNOME. This house is neat, clean, but also kind of empty. There are very few things to play with. You get confused. What is your next step?br / br / I give up. emUser reboots into Windows./embr / br / br / The gist of this little analogy:br / br / strongKDE was wrong. GNOME was wrong. Also - they both were right!/strongbr / br / br / This is quite obviously another contradiction. Obviously this means that Mark is not quite right in the head! Well, you're possibly right on both accounts, but let me explain why it actually makes sense: emThe truth is somewhere in between./embr / br / KDE has historically been known for being "the nerd's desktop". Basically, we were so proud of having our own desktop that we quickly determined that giving everyone as much freedom as possible is ideal. After all, the competition (Windows) did not offer this. Developer A came along, going "Hey, I have this fancy idea. It's a bit weird, but let me show you!". Developer B was quick to reply: "Hell yeah, why not? After all this is our own desktop. We can make all of our dreams come true. Let's do it!"br / br / GNOME has historically been known for being very sparse with options. They did this for a good reason: Someone smart realized that KDE was totally going overboard with options. Too much is too much. Let me show you a classical example:br / br / !-- s9ymdb:237 --img class="serendipity_image_center" width="778" height="710" style="border: 0px; padding-left: 5px; padding-right: 5px;" src="http://amarok.kde.org/blog/uploads/crypto_ssl.jpg" alt="" /br / br / br / Now let me show you an example of the Dolphin settings dialog:br / br / !-- s9ymdb:238 --img class="serendipity_image_center" width="520" height="494" style="border: 0px; padding-left: 5px; padding-right: 5px;" src="http://amarok.kde.org/blog/uploads/dolphin_settings.png" alt="" /br / br / Dolphin has won 2009's Akademy Award for "Best Application". The above screenshot demonstrates one of our reasons for choosing it: Peter Penz realized what generations of GUI developers (both in KDE and GNOME) got wrong: The true secret to getting your settings right is emchoosing the essential ones, while making good choices for defaults that don't need micro-options./embr / br / Unfortunately, this is not easy, and it separates the good GUI designer from the bad one. In fact making these choices is bloody damn hard, I kid you not. It requires a lot of thought, experience, and taste. But in the end, you, as a developer, are responsible for making these choices. Creating software is not about giving the user a LEGO blocks game. If options get too complex, the users might as well learn programming and do it all by themselves. That's because, if you think about it, choosing an option emis/em programming: You make the program use one code path, or a different one. This is essentially the same as an "if() {}; else() {};" block wrapped in GUI sugar.br / br / To sum it up:br / br / liBefore adding an option, think hard about it. Could the same be achieved with a smarter algorithm? Often options are bad excuses for deciding between one bad implementation and another bad one. Find a good one!/libr / br / liDon't try to solve the problem by removing all options. Some options are very useful, and they are actually needed. Finding out which of these are needed is the developer's task. It's a hard task, but it can be done./libr / br / liConsider asking professionals. We have a KDE Usability team, comprised of real experts on this topic. Among them is Celeste, a member of the KDE board. She knows what she's talking about, and she's generally very helpful. Don't be shy, ask them!/libr / br / That's it for this time, I hope you will be able to get something useful out of this blog. Remember, it's not meant as bashing, but rather as useful advice, stemming from many years of experience with these things (we Amarok developers have made our good share of mistakes as well, there is little doubt about that).br / br / br / Thanks for reading img src="http://amarok.kde.org/blog/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /br / br /
分类: Planet Amarok

Const Correctness

November 14, 2009 - 09:27
emWhat is a href="http://en.wikipedia.org/wiki/Const-correctness"const correctness/a?/embr / br / It's a programming paradigm that helps writing correct code. In C++, const correctness comprises a set of different techniques, you can read up about them a href="http://www.parashift.com/c++-faq-lite/const-correctness.html"here/a. In this article however I only want to focus on one form of const correctness, that is object constness.br / br / emWhy should I care about const correctness?/embr / br / Because it increases a href="http://en.wikipedia.org/wiki/Type_safety"type safety/a, makes your code more easy to understand, and it helps making your code correct. Const objects can be seen as a href="http://en.wikipedia.org/wiki/Invariant_(mathematics)"invariants/a in mathematical terms, that is, objects that do not change, that do not emvary/em. br / br / An example in code:br / br / prebr / const int myNumber = 41;br / int result;br / br / result = myNumber + 1;br / KMessageBox::information( 0, "The meaning of life is: " + QString::number( result ) );br / /prebr / br / In this example, emmyNumber/em is a const object (an int is really a a href="http://en.wikipedia.org/wiki/Plain_old_data_structures"POD/a type, but let that not distract us). This indicates that I cannot change the object. And indeed, if I were to try that, the compiler would complain about it, which is a good thing. It helps preventing mistakes by accidentally changing this object later on.br / br / Additionally, it helps readability, because anyone can clearly see that emmyNumber/em is not meant to be changed. So you see, writing that "const" before it is a little bit of work, but it has a big pay-off. I think it's worth it, so I try to use it always in my code.br / br / br / emPS: It's likely that somewhere in this article I made a slight mistake or a bad wording. With these things, you will always find a C++ expert who will point out something, because C++ is very pointoutable. So that might happen, but I'm fairly sure I got the gist right img src="http://amarok.kde.org/blog/templates/default/img/emoticons/wink.png" alt=";-)" style="display: inline; vertical-align: bottom;" class="emoticon" //embr / br /
分类: Planet Amarok

Desiderata

November 13, 2009 - 13:37
In the spirit of Aaron's post, I also wanted to contribute something positive to Planet KDE. However, instead of writing it myself, I leave this to someone who could do it much better than me, Max Ehrmann (1872 – 1945). His work "Desiderata" is one of the most famous prose poems ever written. Famous as it may be, not everyone knows it, and I think that's a shame, as it has much to give. br / br / Enjoy this little off-topic post, have a nice weekend, and maybe give some thought to Desiderata; it would make me happy, and maybe you as well.br / br / br / strongh2Desiderata/h2/strongbr / strongGo/strong placidly amid the noise and haste,br / and remember what peace there may be in silence.br / As far as possible without surrenderbr / be on good terms with all persons.br / Speak your truth quietly and clearly;br / and listen to others,br / even the dull and the ignorant;br / they too have their story. br / br / strongAvoid/strong loud and aggressive persons,br / they are vexations to the spirit.br / If you compare yourself with others,br / you may become vain and bitter;br / for always there will be greater and lesser persons than yourself.br / Enjoy your achievements as well as your plans. br / br / strongKeep/strong interested in your own career, however humble;br / it is a real possession in the changing fortunes of time.br / Exercise caution in your business affairs;br / for the world is full of trickery.br / But let this not blind you to what virtue there is;br / many persons strive for high ideals;br / and everywhere life is full of heroism. br / br / strongBe/strong yourself.br / Especially, do not feign affection.br / Neither be cynical about love;br / for in the face of all aridity and disenchantmentbr / it is as perennial as the grass. br / br / strongTake/strong kindly the counsel of the years,br / gracefully surrendering the things of youth.br / Nurture strength of spirit to shield you in sudden misfortune.br / But do not distress yourself with dark imaginings.br / Many fears are born of fatigue and loneliness.br / Beyond a wholesome discipline,br / be gentle with yourself. br / br / strongYou/strong are a child of the universe,br / no less than the trees and the stars;br / you have a right to be here.br / And whether or not it is clear to you,br / no doubt the universe is unfolding as it should. br / br / strongTherefore/strong be at peace with God,br / whatever you conceive Him to be,br / and whatever your labors and aspirations,br / in the noisy confusion of life keep peace with your soul. br / br / strongWith/strong all its sham, drudgery, and broken dreams,br / it is still a beautiful world.br / Be cheerful.br / br / Strive to be happy. br / br / br / emMax Ehrmann, Desiderata, Copyright 1952./embr / br /
分类: Planet Amarok

Sansa Clip (or: How I learned to love Skullcandy Chops)

November 10, 2009 - 13:35
!-- s9ymdb:229 --centera href='http://www.sandisk.com/products/sansa-music-and-video-players/sandisk-sansa-clip-mp3-players.aspx'img class="serendipity_image_center" width="600" height="338" style="border: 0px; padding-left: 5px; padding-right: 5px;" src="http://amarok.kde.org/blog/uploads/sansa_clip.jpg" alt="" //a/centerbr / br / So, long story short, or maybe long, we'll see after I've finished writing this:br / br / I had been looking for a new portable music player for a while. My old one was crappy, to say the least. Incidentally I had talked about this on IRC, and fellow KDE developer a href="http://www.kdedevelopers.org/blog/77"Will Stephenson/a said he was also on the look for a new player. So we googled a bit. I had some special wishes for my "ideal" device, and Will eventually found one that exactly fitted my needs. What I needed was this:br / br / liSmall size of the device. With a bigger device, I might as well carry a smartphone./libr / liRugged and water proof. I'm an avid jogger, I run in all weather conditions, and I sweat a lot while running./libr / liFlash based. For jogging I need the device to be shock resistant, HDD is out of the question./libr / liSupporting all formats. I don't want to transcode constantly, so I need MP3, OGG, FLAC, AAC, etc./libr / liUsable with Amarok. What Amarok does really well is MTP, so I wanted that./libr / liNot made by Apple. For various reasons (ethical, reality distortion field, etc) I boycott Apple products./libr / liNo fancy schmancy video features. I need the device to do one thing well, that is playing music./libr / liLong battery life. Preferrably easily chargable with the my PC./libr / br / As it turned out, the a href="http://www.sandisk.com/products/sansa-music-and-video-players/sandisk-sansa-clip-mp3-players.aspx"Sansa Clip/a is exactly the device I had dreamed of. Impatient as I (notoriously) am, I had to head out instantly and buy the thing (4GB version costs about 60 USD). Loaded some music on it, went on a jogging tour today, and what can I say: The thing rocks img src="http://amarok.kde.org/blog/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" / I'm a happy camper now. The Clip worked out of the box, the original firmware from Sandisk supports all formats I need (including OGG and FLAC), so I didn't even have to upgrade it (or install Rockbox).br / br / Additionally, I bought these sweet headphones, cause the bundled ones didn't really cut it for sports. They have a fancy name, a href="http://www.skullcandy.com/shop/configable/index/links/id/1006/cid/6/""Skullcandy Chops"/a, and their sound quality is fancy too. Also ideal for sports, as they are not classical earbuds, but instead they are worn close to the ear, which I like. With standard earbuds the things tend to fall out of my ears, apparently I have weird ears or something.br / br / !-- s9ymdb:230 --centera href='http://www.skullcandy.com/shop/configable/index/links/id/1006/cid/6/'img class="serendipity_image_center" width="250" height="250" style="border: 0px; padding-left: 5px; padding-right: 5px;" src="http://amarok.kde.org/blog/uploads/skullcandy_chops.jpg" alt="" //a/centerbr / br / br / emDisclaimer: I do not work for Sandisk, nor do I work for Skullcandy. They did promise me a "really cool holiday" though for making some promotion. We'll see about that./embr /
分类: Planet Amarok

Phonon Bugday, join the fun!

November 6, 2009 - 13:58
Hello goodpeople,br / br / this is a quickreminder for all kdefriendly bug triagers and otherfolks. Ok, I'll stop with the emstrangetalk/em now...br / br / !-- s9ymdb:228 --a href='http://phonon.kde.org/'img class="serendipity_image_center" width="420" height="159" style="border: 0px; padding-left: 5px; padding-right: 5px;" src="http://amarok.kde.org/blog/uploads/phonon_logo.jpg" alt="" //abr / br / br / We are going to have a a href="http://phonon.kde.org/"Phonon/a Bugday on the 8th of November, which is really quite soon, if you think about it. Phonon is a very central component of KDE and Qt, but like all software it does contain a number of bugs. It doesn't have to stay this way though img src="http://amarok.kde.org/blog/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /br / br / Come join us at our Bugday. Developers, triagers, normal users - you can all be helpful. I'm pretty much convinced that many of Phonon's issues are fairly low hanging fruits that could be fixed rather easily, if we all help out a bit. Also, Phonon's new maintainer Martin Sandsmark is pretty awesome, and I'm confident that with him at the helm we will be able to make a real difference.br / br / br / Join us! img src="http://amarok.kde.org/blog/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /br / br / br / PS: The event is emnot/em actually happening in a href="http://blogs.fsfe.org/myriam/2009/10/travelling-to-bugday/"Bu#287;day/a, but rather on irc.freenode.net, channel #phonon. Bringing Kebab is totally fine though.br / br /
分类: Planet Amarok

Amarok joins the Software Freedom Conservancy

November 2, 2009 - 18:52
!-- s9ymdb:227 --a href='http://amarok.kde.org/en/node/700'img class="serendipity_image_center" width="598" height="448" style="border: 0px; padding-left: 5px; padding-right: 5px;" src="http://amarok.kde.org/blog/uploads/splash_screen3.jpg" alt="" //abr / br / Do you like Amarok? If so, we have some good news for you:br / br / The Amarok project has joined the a href="http://conservancy.softwarefreedom.org/"Software Freedom Conservancy/a. This move allows donors to give tax-deductible donations, and it increases the transparency in the spending of Amarok's funds. This greatly helps us to be more efficient, and focus on what we really do best: Creating kick-ass software. At the same time, we stay fully committed to the KDE project! Amarok is, and will always stay, a fully committed project under the KDE umbrella. We have coordinated this move with the KDE e.V. board, who approves of our endeavors. br / br / If you want to help us making Amarok even better, head over to our a href="http://amarok.kde.org/en/node/700"official announcement/a, and support our fund drive img src="http://amarok.kde.org/blog/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /br / br / Our development speed is faster than ever before, and we are highly motivated to deliver you the best music player possible. The upcoming Amarok 2.2.1 release will bring our users features that many of you have been waiting for, and we constantly aim to improve our quality too. I guarantee you that with my (hopefully) good name. br / br / Thanks for supporting us in advance.br / br / br / Mark Kretschmann,br / Amarok project founder and developer.br / br /
分类: Planet Amarok

Amarok 2.2.1 - We're getting there!

October 15, 2009 - 09:18
Here's a little teaser article, showing off some of the work we're doing for the upcoming emAmarok 2.2.1/em. As some of you may know (or maybe not), we have decided to turn the 2.2 "Sunjammer" series into a longer lasting series, similar to the 1.4.x "Fast Forward" cycle. This means, we're not branching to 2.3 immediately, but instead we will make new releases about every six weeks, each including a number of new features and bug fixes.br / br / This style of working was partly made possible by our migration to the Git version control system. I can only say, for us the migration was fully worth it. Our development speed has skyrocketed, as we are now able to develop new features in different branches, test them safely, and then merge them into our master branch. Also, the number of third-party contributions has increased dramatically, thanks to Git and Gitorious. You can find our Git repository online here:br / br / a href="http://gitorious.org/amarok"http://gitorious.org/amarok/abr / br / br / These are some of the improvements in 2.2.1 so far:br / br / liOptional support for KNotify./libr / liNew toolbar with nicer looks (you will also be able to select a "slim" version for small screens)./libr / li"Jump To" feature for quick playlist navigation./libr / liBetter Podcast support./libr / liEnhanced playlist inline editor./libr / liFull screen mode toggle, allowing to show Amarok without window decorations./libr / liMuch improved collection scanner (see a href="http://blog.jefferai.org/2009/10/14/speed-never-gets-old-at-least-in-software-1129"Jeff's blog/a)./libr / liMany many (many) bug fixes./libr / br / Words are one thing. We want screenshots! So here goes - please remember, it's a empreview snapshot/em:br / br / br / centerdiv class="serendipity_imageComment_center" style="width: 300px"div class="serendipity_imageComment_img"!-- s9ymdb:223 --a href="http://amarok.kde.org/blog/uploads/amarok_221_gettingthere.png"img class="serendipity_image_center" width="300" height="229" src="http://amarok.kde.org/blog/uploads/amarok_221_gettingthere.serendipityThumb.png" alt="" //a/divdiv class="serendipity_imageComment_txt"Click to show full size/div/div/centerbr / br /
分类: Planet Amarok

Chromium: It really shines

October 12, 2009 - 19:14
!-- s9ymdb:222 --a href="http://en.wikipedia.org/wiki/Chromium_(web_browser)"centerimg class="serendipity_image_center" width="300" height="300" style="border: 0px; padding-left: 5px; padding-right: 5px;" src="http://amarok.kde.org/blog/uploads/chromium-logo.png" alt="" //center/abr / br / Have you tried it yet? I'm running the Chromium "Daily Builds" on Kubuntu 9.10. At first, not very long ago, I was quite skeptical about Chromium. It looked unfamiliar, it seemed to lack features. Then, about a week ago, I gave it another try. And boy, has it improved!br / br / To give you some back story on my personal history of browser usage, I'm a die hard Opera fan. I've been using Opera since about 10 years, and nothing ever came close to its performance, usability, and elegance. In fact Opera used to be the last remaining non-free software that I used on a daily basis. While I'm a huge supporter of Free Software, I didn't feel bad about using it, as it was just so damn good. Still, I would have preferred a good free alternative, but nothing else did it for me (including Firefox).br / br / Now, what makes Chromium so great? Let me just list a few things that I love about it:br / br / liIncredibly fast./libr / liBased on WebKit, which is based on KDE's KHTML. Proves how great KDE technology is./libr / liRapid development process, fully transparent, using Git for version control./libr / liIngenious multi-process system. Forget about memory leaks, plugins crashing the whole browser, etc./libr / liSimple user interface. Doesn't overwhelm me with obscure options./libr / liFree Software (not just as in beer)./libr / br / br / Where there is light, there is also shadow, and there is one thing about Chromium that I find a bit sad: Why did they not use Qt from the beginning? Qt would have provided a perfect foundation for a cross-platform application. Google probably had its reasons for doing it differently (I assume it's simply time-to-market, they made a pure Windows version first), but that's still one aspect that they could have done better. Anyway, Chromium's GUI is rather simplistic, so the choice of toolkit doesn't make a very big difference to the user.br / br /
分类: Planet Amarok

SmartPointerList

October 9, 2009 - 18:41
Here's a little class that we developed for Amarok, and I thought it might be interesting for some of you as well (maybe KDElibs?). What it does is the following:br / br / Assume that you have a list of pointers to objects (they must be QObject subclasses). Sometimes such lists are used to cache pointers in multiple places, but the objects they contain (as pointers) might be destroyed at some point. In Amarok we had this problem with QAction: Many classes stored lists of pointers to actions, but sometimes actions were destroyed (e.g. on track change), and the lists got out of sync. You could probably see this as a design flaw, but we came up with a simple solution:br / br / emSmartPointerList/em is a QList for pointers which automatically removes a pointer when the object it refererences is destroyed. A simple idea (by myself), implemented with help from Ian Monroe and Max Howell (of Amarok/FileLight/DragonPlayer/Last.fm fame). In our case, it solved many ugly crashes that were pretty hard to debug. br / br / br / If you feel the class could be useful to you, have a look here:br / br / a href="http://gitorious.org/amarok/amarok/blobs/master/src/SmartPointerList.h"http://gitorious.org/amarok/amarok/blobs/master/src/SmartPointerList.h/abr / a href="http://gitorious.org/amarok/amarok/blobs/master/src/SmartPointerList.cpp"http://gitorious.org/amarok/amarok/blobs/master/src/SmartPointerList.cpp/abr / br / br / Enjoy img src="http://amarok.kde.org/blog/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /br / br /
分类: Planet Amarok