<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    
    <title>Amarok Blog - xevix</title>
    <link>http://amarok.kde.org/blog/</link>
    <description>Amarok developers at work</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.6 - http://www.s9y.org/</generator>
    <pubDate>Wed, 27 May 2009 21:41:04 GMT</pubDate>

    <image>
        <url>http://amarok.kde.org/blog/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Amarok Blog - xevix - Amarok developers at work</title>
        <link>http://amarok.kde.org/blog/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>GSoC: Boston/Cambridge Dev Sprint</title>
    <link>http://amarok.kde.org/blog/archives/1027-GSoC-BostonCambridge-Dev-Sprint.html</link>
            <category>xevix</category>
    
    <comments>http://amarok.kde.org/blog/archives/1027-GSoC-BostonCambridge-Dev-Sprint.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=1027</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1027</wfw:commentRss>
    

    <author>nospam@example.com (Alejandro Wainzinger)</author>
    <content:encoded>
    &lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://3.bp.blogspot.com/_vlB73cxVKVI/SgiN7V6LDjI/AAAAAAAAAJQ/I1URCUK8RSQ/s1600-h/850A0686.JPG&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 400px;&quot; src=&quot;http://3.bp.blogspot.com/_vlB73cxVKVI/SgiN7V6LDjI/AAAAAAAAAJQ/I1URCUK8RSQ/s400/850A0686.JPG&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5334669809253289522&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;The dev sprint was filled with conversation on all sorts of topics, open-source software and pop culture references, but above all, people got set up to go on their GSoC projects and got inspired by each others&#039; enthusiasm.  This being my second time doing GSoC for the same project, I was already set to go and know my way around development, but this gave me a chance to meet with a fellow Amarok developer Jeff Mitchell, and now I&#039;ve met a good amount of the core Amarok team, which is awesome.  In the end I didn&#039;t get a lot of actual coding done, but I took from the sprint enough inspiration to hurry up even more on the code I&#039;m working on.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Highlights:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;- MIT&lt;/strong&gt; == We spent a good amount of time in one of MIT&#039;s buildings on our laptops (a &lt;a href=&quot;http://blog.cryos.net/uploads/kde_gsoc_sprint.jpeg&quot;&gt;photo&lt;/a&gt; on &lt;a href=&quot;http://blog.cryos.net/archives/221-KDE-GSoC-Sprint-in-Boston.html&quot;&gt;Marcus&#039; blog&lt;/a&gt;).  Spent time on getting people set up on svn, setting up distributed compiling with IceCream and a bit of hacking.  Above all it set the pace for a lot of conversation which is really what the open source community is about: sharing ideas so that later on, you can work on making them real.&lt;/p&gt;&lt;p&gt;- OpenSuSE&#039;s IceCream == Not satisfied with the slow compiles of core stuff like Qt and our own huge projects, we tried to set up IceCream distributed compiler to get more bang for our byte.  Unfortunately we were doomed to failure (found out later) since some of us were 32-bit systems others 64-bit, and differeng GCC versions, and cross-compilers take too long to build.  However, we did get it somewhat going in the hotel, which was nice.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;- JP Licks Ice Cream &lt;/strong&gt;== In a word, amazing.  Suffolk County&#039;s own local chain, which redefines what a &quot;small&quot; ice cream should be.  I haven&#039;t seen so many unknown or strange flavors in a while, ranging from black raspberry, to peppered ice cream.  You definitely get your money&#039;s worth, but I had trouble even finishing the small.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;- Indian Restaurant&lt;/strong&gt; (don&#039;t recall the name) == More food than you could hope for, for the right price (the rest of Boston/Cambridge was quite pricy).  Had Chicken Tikka Masala (obligatory), Garlic Naan (also obligatory) and a ton of rice.  I should&#039;ve gotten more spicy food but I wanted to play it safe.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;- Star Trek @ IMAX&lt;/strong&gt; == Nevermind why Reading has an IMAX theater in a furniture store, the movie was quite a visual spectacle.  The story/characters/acting was exactly what I expected, and I wasn&#039;t let down.  I&#039;m sure Star Trek fans enjoyed it more since there seemed to be a lot of hidden humor, but luckily the few bits I&#039;ve seen helped me out.&lt;/p&gt;&lt;p&gt;- &lt;a href=&quot;http://en.wikipedia.org/wiki/Candlepin_bowling&quot;&gt;Candlepin Bowling&lt;/a&gt;&lt;/p&gt;&lt;p align=&quot;left&quot;&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://2.bp.blogspot.com/_vlB73cxVKVI/SgiPHyzg30I/AAAAAAAAAJY/yyFhrvSaDc0/s1600-h/850A0683.JPG&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 400px;&quot; src=&quot;http://2.bp.blogspot.com/_vlB73cxVKVI/SgiPHyzg30I/AAAAAAAAAJY/yyFhrvSaDc0/s400/850A0683.JPG&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5334671122680045378&quot; /&gt;&lt;/a&gt; == Unlike the 10-pin bowling I&#039;m used to, here you get a ball the size of a skiball, pins aren&#039;t cleared until 3 shots, and the pins are cylinder-shaped.  Definitely interesting.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;- The Kendall Hotel &lt;/strong&gt;== Nice hotel, right in front of MIT, right next to the T.  Wireless was hassle-free, breakfast every morning.  Overpriced food can&#039;t be helped, but I went it cheap.  Nice beds and nice rooms, all that was needed for some late-night hacking.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;- The T&lt;/strong&gt; == The big pitfall of living in California is that the concept of mass public transportation is, to put it politely, lacking.  The Boston T, for about $2, will let you ride from one side of Boston to the other, and even to Cambridge and other outlying areas.  Reasonably fast, reliable, and not too packed.  Definitely one thing I would love to have here in car-driven California.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;- Dunkin Donuts&lt;/strong&gt; == There are ~300 of these in Boston alone, which is mind-boggling.  There&#039;s a DD underground in the T, there&#039;s one at Logan Airport, there&#039;s one in the MIT admin building!  Such cheap, decently-flavored iced cofee you will not find elsewhere, and the monstrous size of the large was worth the price.  Definitely went again and again...&lt;/p&gt;&lt;p&gt;&lt;strong&gt;- Dunkin Donuts&lt;/strong&gt; == .... and again&lt;/p&gt;&lt;p&gt;&lt;strong&gt;- Dunkin Donuts&lt;/strong&gt; == .... and again.  I got a lot of coffee in Boston.  I don&#039;t think I&#039;ve ever had so much consecutive coffee drinking in my life.  Definitely missed on the west coast.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;The People:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Veteran Devs:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Jeff Mitchell &lt;/strong&gt;-- The guy who worked hard to make this all happen, and go well, and a fellow Amarok dev.  Many many thanks for making this possible, and for not getting too frustrated with my lack of brainpower in navigating directions and so forth this last weekend.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Marcus Hanwell&lt;/strong&gt; -- Avogadro dev, soon to be working on our beloved build-system CMake.  Really cool guy, loves photography, well-travelled.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://socghop.appspot.com/org/home/google/gsoc2009/kde?limit_0=100&quot;&gt;GSoC Students&lt;/a&gt;:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Chani Armitage&lt;/strong&gt; -- Plasma dev, brought you screensaver plasmoids, now working on fancy popups using mouse buttons.  Energetic and very involved.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Constantin Berzan&lt;/strong&gt; -- Working on a global outbox for Akonadi, to take away dependence on e-mail related things from KMail to free e.g. applets to do stuff with mail.  Good at directions, shame he had to go back so soon in the sprint.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Christopher Ing&lt;/strong&gt; -- Bringing fluids to STEP.  Good roommate, made sure I didn&#039;t miss breakfast the 2nd day =)  The only mac user in the group, which shows the variety of people working on KDE-related things.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Ramon Zarazúa&lt;/strong&gt; -- Working on refactoring support for KDevelop 4.  I really look forward to the results of this project, being an avid KDev 4 user.  Cool guy, the only one with whom icecream was working.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Adam Kidder&lt;/strong&gt; -- Nepomuk search.  Picked up the slack for my lack of common sense this last weekend (&quot;you need an IP address to run a dhcp server?&quot;).  At Ann Arbour, my cousin went there.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Marwan Hilmi&lt;/strong&gt; -- Parsek.  Didn&#039;t get much of a chance to talk to him about his project, but seemed cool.  Note to self: round tables are only good if people aren&#039;t too far away from each other.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Pierre-Alexandre St-Jean&lt;/strong&gt; -- Abstracting Kopete chat window for use in other apps.  Probably the only relaxed person of the bunch (most of the rest of us were doped up on caffeine).  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Conclusion:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Completely worth the 3,000 mile trip.  It looks like this GSoC, for KDE at least, will be filled with a lot of awesome people and work getting done.  These kinds of get-togethers help to motivate us to do awesome things, and to open up channels of communication between different parts of KDE which is essential to making KDE cohesive as well as feature-filled.  I don&#039;t think I&#039;ll be making it to Akademy this year unfortunately, so I&#039;m happy I was able to make it to this.&lt;/p&gt;&lt;p&gt;I would, at some point, like to &lt;strong&gt;set up a similar event in California&lt;/strong&gt;, perhaps in San Francisco or San Diego, and I wonder who would be interested in it.  &lt;/p&gt;&lt;p&gt;At any rate, good luck to all GSoC&#039;ers on your projects, and I&#039;ll see you on IRC/ML.&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&#039;1&#039; height=&#039;1&#039; src=&#039;//blogger.googleusercontent.com/tracker/1504418270400156450-4114451841494692500?l=awainzin-foss.blogspot.com&#039;/&gt;&lt;/div&gt; 
    </content:encoded>

    <pubDate>Thu, 21 May 2009 08:22:02 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/1027-guid.html</guid>
    
</item>
<item>
    <title>Amarok: A Better Media Device Experience, GSoC 2009</title>
    <link>http://amarok.kde.org/blog/archives/1029-Amarok-A-Better-Media-Device-Experience,-GSoC-2009.html</link>
            <category>xevix</category>
    
    <comments>http://amarok.kde.org/blog/archives/1029-Amarok-A-Better-Media-Device-Experience,-GSoC-2009.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=1029</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1029</wfw:commentRss>
    

    <author>nospam@example.com (Alejandro Wainzinger)</author>
    <content:encoded>
    &lt;p&gt;So I have again the pleasure of being selected for Google&#039;s Summer of Code for Amarok to scratch some very serious itches concerning media device support in Amarok 2.&lt;/p&gt;&lt;p&gt;Itches:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Playlist Support&lt;/li&gt;&lt;li&gt;More GUI Feedback, more intuitive interface&lt;/li&gt;&lt;li&gt;UMS(Universal Mass Storage) Support&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Playlist:&lt;/p&gt;&lt;p&gt;Actually, iPods in Amarok already have their playlists read on connect, but at the time I wrote the code, the code in Amarok for any collection dealing with playlists wasn&#039;t at a satisfactory level yet, which I believe it to be now thanks to the work of a few people, in particular I know that Stecchino (Bart) has worked on it.&lt;/p&gt;&lt;p&gt;GUI:&lt;/p&gt;&lt;p&gt;The media devices applet seemed like a good idea at first, but it&#039;s terrible from a usability standpoint, and since the PUD (Popup Dropper) removes any possibility of dragging-and-dropping tracks onto it, for instance, it doesn&#039;t make much sense to have it.  However, I understand there&#039;s plans in the works to redo some of Amarok&#039;s GUI, part of which will accomodate the previous functions of this applet, and I&#039;ll be taking advantage of that.&lt;/p&gt;&lt;p&gt;UMS Support:&lt;/p&gt;&lt;p&gt;Yes!  I swear it this time.  It turned out that building a new collection-based media devices infrastructure more-or-less from scratch took a lot longer than planned last summer, and I did not get to UMS.  Another reason I&#039;ve held back on it up until now is that media device support in general is going to get a massive refactoring before GSoC begins, to accomodate for simple adding of support not only of UMS devices, but in the future, other types as well.&lt;/p&gt;&lt;p&gt;Ok, now that the explanations of GSoC are out of the way, I move on to something else.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;People with media devices,&lt;/strong&gt; aside from the above, &lt;strong&gt;what is it you would like to see&lt;/strong&gt; in Amarok for devices?  I can list a few off the top of my head, please list more so that I can prioritize perhaps some time for this summer and beyond.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;MTP Cover Support&lt;/li&gt;&lt;li&gt;iPod stale/orphaned scan support&lt;/li&gt;&lt;li&gt;Playlist synching with the local collection&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&#039;1&#039; height=&#039;1&#039; src=&#039;//blogger.googleusercontent.com/tracker/1504418270400156450-5021629046398541858?l=awainzin-foss.blogspot.com&#039;/&gt;&lt;/div&gt; 
    </content:encoded>

    <pubDate>Thu, 21 May 2009 08:22:02 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/1029-guid.html</guid>
    
</item>
<item>
    <title>OpenSolaris, Qt and Game Development</title>
    <link>http://amarok.kde.org/blog/archives/1030-OpenSolaris,-Qt-and-Game-Development.html</link>
            <category>xevix</category>
    
    <comments>http://amarok.kde.org/blog/archives/1030-OpenSolaris,-Qt-and-Game-Development.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=1030</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1030</wfw:commentRss>
    

    <author>nospam@example.com (Alejandro Wainzinger)</author>
    <content:encoded>
    &lt;span style=&quot;font-weight: bold;&quot;&gt;Overview&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A group of 3 other people and myself were charged with making a game for a class this trimester, which is essentially a Final Fantasy clone with a few quirks localized to our university.  In thinking of a toolkit, I thought to myself &quot;what event-driven toolkit provides a graphics system and paint system complete and robust enough to make this happen?&quot;  Naturally Qt came to mind.  The professor suggested some Java toolkits, including SWT, but my experiences with SWT have not been at all good, so I decided to give Qt a shot.  Another perk of Qt over SWT is how easy it is to learn and use, since my 3 team members are not familiar with it.&lt;br /&gt;&lt;br /&gt;After a few days of playing with Qt tutorials on the Graphics framework and studying KDE games code, I had a small but working prototype of one of the modes of our game, where the character explores the scene of a level.&lt;br /&gt;&lt;br /&gt;&lt;object height=&quot;344&quot; width=&quot;425&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/iRqCEet5-j0&amp;amp;hl=en&amp;amp;fs=1&quot;&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;embed src=&quot;http://www.youtube.com/v/iRqCEet5-j0&amp;amp;hl=en&amp;amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; height=&quot;344&quot; width=&quot;425&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Things to notice that were easy to do:&lt;br /&gt;&lt;br /&gt;- Creating a graphics item from a graphic file&lt;br /&gt;- Moving it around&lt;br /&gt;- Having it change form&lt;br /&gt;- Collision detection with walls&lt;br /&gt;- Dragging of the view to see different parts of the scene&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Deployment&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Before proceeding I had to make sure that the program would run on the target platform of the school servers: SunOS 5.10 (Solaris).  Now Qt is a cross-platform toolkit, and binary builds of it are provided for Linux, OS X, and Windows, but not for Solaris (that I could find &lt;a href=&quot;http://www.qtsoftware.com/downloads/opensource/appdev&quot;&gt;here&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Having recently installed &lt;a href=&quot;http://www.virtualbox.org/wiki/Downloads&quot;&gt;VirtualBox&lt;/a&gt; after hearing lots of good things about it, I decided to give &lt;a href=&quot;http://opensolaris.org/os/downloads/&quot;&gt;Solaris&lt;/a&gt; a spin as a virtual machine.  There was a bit of confusion for me at the beginning with so many possible distros to choose from, but luckily since only 2 of them are supported by the KDE Solaris team, that narrowed it down.  They prefer &lt;a href=&quot;http://techbase.kde.org/Projects/KDE_on_Solaris&quot;&gt;using SXCE&lt;/a&gt;, so I gave that a shot, but unfortunately some bug where X would show up but then freeze on the live dvd stopped me short (I figured it was an issue of running in a VM or something).  Then I tried OpenSolaris 2008.11, which installed fine&lt;br /&gt;&lt;br /&gt;Then the problem became that the instructions on the &lt;a href=&quot;http://techbase.kde.org/Projects/KDE_on_Solaris/OpenSolaris&quot;&gt;wiki for compiling using OpenSolaris&lt;/a&gt; were a bit lacking, a problem I have since mended with some updates based on my experience.  After much strife with getting the environment set up just right, compiling was not a big deal, thanks to the awesome efforts of the KDE OpenSolaris team.  I ran into some issue with a Qt example not compiling, and hacked it up to fix it, since it didn&#039;t much matter, and voila, Qt was on the system, and my previous example in the youtube video worked.&lt;br /&gt;&lt;br /&gt;From here, I had a few options (as I saw it):&lt;br /&gt;- build Qt as static, deploy a static binary&lt;br /&gt;- build Qt as shared library, ask school admins to install Qt on servers&lt;br /&gt;- build QtJambi, port to Java, deploy as jar&lt;br /&gt;&lt;br /&gt;Since building Qt as static was not supported by the KDE Solaris team, I decided to give QtJambi a shot, and ported my example to Java.  Unfortunately the QtJambi build specfile provided didn&#039;t work too well, and went into an infinite recursive make loop.&lt;br /&gt;&lt;br /&gt;When at last I had almost given up, I discovered that the &lt;a href=&quot;http://doc.trolltech.com/4.4/deployment-x11.html#creating-the-application-package&quot;&gt;shared library approach&lt;/a&gt; doesn&#039;t actually require the system to have Qt installed on it, just that the necessary .so shared object files be deployed with the program itself, and to use a script to launch the program (a script which simply adds current directory to linker path).&lt;br /&gt;&lt;br /&gt;A simple ldd resulted in this:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;br /&gt;     libc.so.1 =&gt;     /usr/lib/libc.so.1&lt;br /&gt;     libQtGui.so.4 =&gt;         /opt/foss/qt4/lib/libQtGui.so.4&lt;br /&gt;     libQtCore.so.4 =&gt;        /opt/foss/qt4/lib/libQtCore.so.4&lt;br /&gt;     libCrun.so.1 =&gt;  /usr/lib/libCrun.so.1&lt;br /&gt;     libm.so.2 =&gt;     /usr/lib/libm.so.2&lt;br /&gt;     libglib-2.0.so.0 =&gt;      /usr/lib/libglib-2.0.so.0&lt;br /&gt;     libpng12.so.0 =&gt;         /usr/lib/libpng12.so.0&lt;br /&gt;     libSM.so.6 =&gt;    /usr/lib/libSM.so.6&lt;br /&gt;     libICE.so.6 =&gt;   /usr/lib/libICE.so.6&lt;br /&gt;     libz.so.1 =&gt;     /usr/lib/libz.so.1&lt;br /&gt;     libXrender.so.1 =&gt;       /usr/lib/libXrender.so.1&lt;br /&gt;     libXrandr.so.2 =&gt;        /usr/lib/libXrandr.so.2&lt;br /&gt;     libXfixes.so.1 =&gt;        /usr/lib/libXfixes.so.1&lt;br /&gt;     libXcursor.so.1 =&gt;       /usr/lib/libXcursor.so.1&lt;br /&gt;     libXinerama.so.1 =&gt;      /usr/lib/libXinerama.so.1&lt;br /&gt;     libfreetype.so.6 =&gt;      /usr/lib/libfreetype.so.6&lt;br /&gt;     libfontconfig.so.1 =&gt;    /usr/lib/libfontconfig.so.1&lt;br /&gt;     libXext.so.0 =&gt;  /usr/lib/libXext.so.0&lt;br /&gt;     libX11.so.4 =&gt;   /usr/lib/libX11.so.4&lt;br /&gt;     libgthread-2.0.so.0 =&gt;   /usr/lib/libgthread-2.0.so.0&lt;br /&gt;     libnsl.so.1 =&gt;   /lib/libnsl.so.1&lt;br /&gt;     libsocket.so.1 =&gt;        /lib/libsocket.so.1&lt;br /&gt;     libexpat.so.1 =&gt;         /usr/lib/libexpat.so.1&lt;br /&gt;     libXau.so.6 =&gt;   /usr/X11/lib/libXau.so.6&lt;br /&gt;     libpthread.so.1 =&gt;       /lib/libpthread.so.1&lt;br /&gt;     libmp.so.2 =&gt;    /lib/libmp.so.2&lt;br /&gt;     libmd.so.1 =&gt;    /lib/libmd.so.1&lt;br /&gt;     libscf.so.1 =&gt;   /lib/libscf.so.1&lt;br /&gt;     libuutil.so.1 =&gt;         /lib/libuutil.so.1&lt;br /&gt;     libgen.so.1 =&gt;   /lib/libgen.so.1&lt;br /&gt;     libXevie.so.1 =&gt;         /usr/X11/lib/libXevie.so.1&lt;br /&gt;     libXss.so.1 =&gt;   /usr/X11/lib/libXss.so.1&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Wow, that&#039;s a lot of shared objects!  According to the &lt;a href=&quot;http://doc.trolltech.com/4.4/deployment-x11.html#additional-libraries&quot;&gt;Qt deployment guide&lt;/a&gt; though, all of the X libraries could and should be avoided to be packaged.  I did end up adding other ones though, one by one, as I saw necessary until the program finally ran without a linker error.  The bad news is this blew the total package up to 30 MB or so.  Oh well, so be it, it ran!&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;And now...?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And now the real development can begin.  There&#039;s only a few weeks to work on it, but that should be plenty.  It won&#039;t be a terribly fantastic game as a result, but it was an interesting adventure, and more importantly proves the point that Qt is an awesome toolkit, and that there are quite a few options open for deployment.&lt;br /&gt;&lt;br /&gt;Thanks to the KDE Solaris team for helping me with getting things building, I&#039;d be nowhere without your help (in particular: szt, [ade], steleman, and trochej thanks a lot guys).&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&#039;1&#039; height=&#039;1&#039; src=&#039;//blogger.googleusercontent.com/tracker/1504418270400156450-1334288057111695449?l=awainzin-foss.blogspot.com&#039;/&gt;&lt;/div&gt; 
    </content:encoded>

    <pubDate>Thu, 21 May 2009 08:22:02 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/1030-guid.html</guid>
    
</item>
<item>
    <title>Delete Multiple Files</title>
    <link>http://amarok.kde.org/blog/archives/1032-Delete-Multiple-Files.html</link>
            <category>xevix</category>
    
    <comments>http://amarok.kde.org/blog/archives/1032-Delete-Multiple-Files.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=1032</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1032</wfw:commentRss>
    

    <author>nospam@example.com (Alejandro Wainzinger)</author>
    <content:encoded>
    Again, school keeps me busy and away from solving issues, but here&#039;s the most recent thing I&#039;ve been working on.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/&lt;u&gt;vlB73cxVKVI/SRFSSB7lWeI/AAAAAAAAAGc/cwzED9stG_w/s1600-h/delete_amarok.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 241px;&quot; src=&quot;http://1.bp.blogspot.com/_vlB73cxVKVI/SRFSSB7lWeI/AAAAAAAAAGc/cwzED9stG_w/s400/delete_amarok.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5265079909082290658&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_vlB73cxVKVI/SRFSbuvjfDI/AAAAAAAAAGk/TVyaGE8bVW0/s1600-h/warning_delete_amarok.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 241px;&quot; src=&quot;http://1.bp.blogspot.com/_vlB73cxVKVI/SRFSbuvjfDI/AAAAAAAAAGk/TVyaGE8bVW0/s400/warning_delete_amarok.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5265080075730254898&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;(Yes, the dialog isn&#039;t at all final, I just put it there as a placeholder)&lt;br /&gt;&lt;br /&gt;A few collections like the MP3Tunes service, and the local collection, are actually able to delete tracks already!  They just... have no GUI to make it all happen.  Devices like iPods and MTP devices can delete too, but only one track at a time (far from optimal).  So I&#039;m working to bring this ability to all collections alike.  Actually getting this working isn&#039;t too hard, but making the code nice, understandable and maintainable is a bit of a trick.  Luckily I&#039;ve got a pretty good idea now of how I want it done.&lt;br /&gt;&lt;br /&gt;Beta 3 is out =D but still so much left to be done on my end:&lt;br /&gt;- fix MTP track playing, so that the next track properly loads/plays&lt;br /&gt;- add orphaned/stale track checking for iPods&lt;br /&gt;- enhance the Media Devices Applet, and add interface to root item of TreeView for connect/disconnect&lt;br /&gt;- fix cover-related things on iPods (and _possibly&lt;/u&gt; implement it for MTP devices, by popoular request)&lt;br /&gt;&lt;br /&gt;The list goes on, but that&#039;s already enough.  &lt;span style=&quot;font-weight: bold;&quot;&gt;More manpower&lt;/span&gt; for any of these jobs is MORE than welcome.  Do apply =)&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&#039;1&#039; height=&#039;1&#039; src=&#039;//blogger.googleusercontent.com/tracker/1504418270400156450-7433936749301954174?l=awainzin-foss.blogspot.com&#039;/&gt;&lt;/div&gt; 
    </content:encoded>

    <pubDate>Thu, 21 May 2009 08:22:02 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/1032-guid.html</guid>
    
</item>
<item>
    <title>&quot;Absence,&quot; Akademy and Devices</title>
    <link>http://amarok.kde.org/blog/archives/1034-Absence,-Akademy-and-Devices.html</link>
            <category>xevix</category>
    
    <comments>http://amarok.kde.org/blog/archives/1034-Absence,-Akademy-and-Devices.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=1034</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1034</wfw:commentRss>
    

    <author>nospam@example.com (Alejandro Wainzinger)</author>
    <content:encoded>
    &lt;span style=&quot;font-weight: bold;&quot;&gt;So I apparently haven&#039;t blogged in a month.&lt;/span&gt;  Sorry about that, it&#039;s not that I have nothing to say, just that I&#039;m usually busy doing that I don&#039;t really take the time to talk about it.  That said, I&#039;ll still keep this short as I myself like to read short blurbs from people who aren&#039;t well-known.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Akademy.  Awesome.&lt;/span&gt;  Of course I got to meet a good amount of the &lt;span style=&quot;font-weight: bold;&quot;&gt;Amarok&lt;/span&gt; people I often talk to, which was the highlight of the trip for me really.  It&#039;s one thing to discuss over IRC, and quite another to have breakfast together, chat about things non-Amarok as well as Amarok in person, and in general hang out.  I also got to meet a lot of other people, like &lt;span style=&quot;font-weight: bold;&quot;&gt;Will Stephenson&lt;/span&gt; who donated an MTP device for development (who I met while waiting in the waffles line) [p.s. thank you so much again for it].&lt;br /&gt;&lt;br /&gt;Most exciting stuff non-Amarok: &lt;span style=&quot;font-weight: bold;&quot;&gt;Gallium3D&lt;/span&gt;... just wow, that&#039;s all I can say.  &lt;span style=&quot;font-weight: bold;&quot;&gt;Step&lt;/span&gt; was pretty awesome too, though my physics is really bad.  &lt;span style=&quot;font-weight: bold;&quot;&gt;Marble&lt;/span&gt; is exciting stuff, but in Openstreetmap there remains much to be mapped so it may be a while before it becomes truly amazing.  There&#039;s more, but these are the ones that stuck out most in my mind right now.&lt;br /&gt;&lt;br /&gt;So, &lt;span style=&quot;font-weight: bold;&quot;&gt;Media Device Status Report&lt;/span&gt;.  As you can see, I haven&#039;t blogged so obviously nothing has happened.  &lt;span style=&quot;font-weight: bold;&quot;&gt;Lies&lt;/span&gt;.  MTP playing off the device is now supported, a bunch of random bugs have been fixed, and an applet is under way to deal with configuration etc. of devices.  Don&#039;t worry, this is only for connect/disconnect and options and whatnot, the configuration of devices will still be almost entirely automated.  I&#039;m trying to figure out a way to make it more obvious that for media devices you need only plug in your device essentially, for it to just work.  I think that I&#039;ll try to push for the Media Devices applet to be one of the initial defaults loaded, and it&#039;ll show a text like &quot;plug in media device to play from it&quot; or something.&lt;br /&gt;&lt;br /&gt;Why have I been so slow at coding?  The truth is I&#039;ve been held in Guantanamo for the last couple of weeks.  And.... again, &lt;span style=&quot;font-weight: bold;&quot;&gt;lies&lt;/span&gt;.  No, between random life, then Akademy in Belgium (which I spent most of my time bugfixing and socializing), and now I&#039;m in Japan where it&#039;s hard to stay on the computer too long, I haven&#039;t been that able to.  But I&#039;ll be back in the USA Sept. 2, so starting then things should pick up a bit more hopefully.&lt;br /&gt;&lt;br /&gt;On that note, cheers from Japan!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&#039;1&#039; height=&#039;1&#039; src=&#039;//blogger.googleusercontent.com/tracker/1504418270400156450-4503402751492895181?l=awainzin-foss.blogspot.com&#039;/&gt;&lt;/div&gt; 
    </content:encoded>

    <pubDate>Thu, 21 May 2009 08:22:02 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/1034-guid.html</guid>
    
</item>
<item>
    <title>MTP File Management and iPod Covers</title>
    <link>http://amarok.kde.org/blog/archives/1035-MTP-File-Management-and-iPod-Covers.html</link>
            <category>xevix</category>
    
    <comments>http://amarok.kde.org/blog/archives/1035-MTP-File-Management-and-iPod-Covers.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=1035</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1035</wfw:commentRss>
    

    <author>nospam@example.com (Alejandro Wainzinger)</author>
    <content:encoded>
    So MTP file management (copying/deleting) has gotten implemented, and works well on all 3 devices I tested on.  Still a lot of polishing left to do as far as interface goes, and some threading to not stall Amarok at key points, and it should be good to go.  One thing I&#039;m having issues with is copying files directly from an MTP to an iPod and vice versa, but will investigate this later as this is a bit more advanced.&lt;br /&gt;&lt;br /&gt;&lt;technical babble=&quot;&quot;&gt;&lt;br /&gt;&lt;br /&gt;So, I had a bit of an epic struggle with a few things over the last day or so.  See, libgpod can only retrieve covers in the form of GdkPixbuf structs, but so as to not force the GdkPixbuf dependency on people, they return it as a gpointer which you can then choose to cast if you want to use GdkPixbuf.  Sounds great, right?  No problem...&lt;br /&gt;&lt;br /&gt;... except for having CMake pull in the dependency.  So as it turns out, there&#039;s no built-in module for gdk-pixbuf library.  So, I decided to create my own as I did with libgpod, except when I pulled it in, a certain function wasn&#039;t present.  Odd... hm.  Well as it turns out, this function is only present in the gdk-pixbuf library that resides in gtk.  Great!  There&#039;s a CMake module for GTK, all should be fine this time, yes?  No.  The GTK module in CMake pulls in GTK1, and gdk-pixbuf is in GTK2.  So I end up modifying the gdk-pixbuf module I made before, learning lots about CMake along the way, and finally get it compiling.&lt;br /&gt;&lt;br /&gt;Long story short for the next part, the README in libgpod didn&#039;t really work for me for setting up SysInfo for my iPod, and I accidentally tripped on a feature from the old Amarok which set it up right, after I modified some permissions.  Wonderful, yeah?&lt;br /&gt;&lt;br /&gt;Wrong!  Turns out that iTunes and libgpod handle covers in two different ways, and so I have to cater to both of them.  This turned out to be a bit of a pain, but at last, I finally got a size-distorted but correct solution:&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_vlB73cxVKVI/SIygoU9Rg5I/AAAAAAAAAEw/epmAjsKoB8Q/s1600-h/amarokuglycovers.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;http://1.bp.blogspot.com/_vlB73cxVKVI/SIygoU9Rg5I/AAAAAAAAAEw/epmAjsKoB8Q/s400/amarokuglycovers.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5227729882151224210&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;The m-flo cover was set by me using libgpod via Amarok, and the Maná cover was set by iTunes.  I&#039;m going to fine-tune the sizes later, and all should be peaches and cream.&lt;br /&gt;&lt;br /&gt;That&#039;s all for now.  One note though about the interface, which right now is either non-existent or bad: likely going to be making an applet which does all the fun stuff that A1 did for media devices, including: connect/disconnect, % free space, possibly a queue, and if supported, even % battery level!  That however, is a ways away from coming true, but do stay tuned.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/technical&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&#039;1&#039; height=&#039;1&#039; src=&#039;//blogger.googleusercontent.com/tracker/1504418270400156450-2943523552453387344?l=awainzin-foss.blogspot.com&#039;/&gt;&lt;/div&gt; 
    </content:encoded>

    <pubDate>Thu, 21 May 2009 08:22:02 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/1035-guid.html</guid>
    
</item>
<item>
    <title>MTP Incoming and Ipod File Deletion Support</title>
    <link>http://amarok.kde.org/blog/archives/1037-MTP-Incoming-and-Ipod-File-Deletion-Support.html</link>
            <category>xevix</category>
    
    <comments>http://amarok.kde.org/blog/archives/1037-MTP-Incoming-and-Ipod-File-Deletion-Support.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=1037</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1037</wfw:commentRss>
    

    <author>nospam@example.com (Alejandro Wainzinger)</author>
    <content:encoded>
    First off, thanks to everyone who has responded to the request for devices so far, and those to come!  Sorry if the replies to the e-mails take a bit, but I&#039;m probably working on Amarok ironically enough.  Some of the devices offered have already been sent, and soon we&#039;ll see the first signs of MTP support on Amarok 2 =D .  To get this question out of the way, &lt;u&gt;yes&lt;/u&gt;, of course we&#039;re going with libmtp 0.3, it just makes sense to.  Look forward to this MTP users, and thanks again to all donors of devices!&lt;br /&gt;&lt;br /&gt;Summary of Ipod News:&lt;br /&gt;&lt;br /&gt;- You can now delete files one at a time from the iPod&lt;br /&gt;- You can now &quot;edit&quot; tags, although changes won&#039;t save yet (implementing next)&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/_vlB73cxVKVI/SHrSIqHZSzI/AAAAAAAAAEQ/MbjYegaK5kQ/s1600-h/amarokremove.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;&quot; src=&quot;http://4.bp.blogspot.com/_vlB73cxVKVI/SHrSIqHZSzI/AAAAAAAAAEQ/MbjYegaK5kQ/s400/amarokremove.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5222717764075604786&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After fighting for a while with how to create a custom &quot;remove&quot; button, users now have access to deleting files on the ipod! ... one at a time, hah, looks like I have to do some more magic before you can do it with multiple files at once.  Also, the icon for &quot;remove&quot; doesn&#039;t seem to make sense, and I&#039;m fixing this soon too.  Why there isn&#039;t a built-in capability to remove from a collection when there&#039;s built-in support for it in CollectionLocation?  Probably nobody got around to it yet.  If nobody does it after this summer, I&#039;ll implement it so that people don&#039;t have to go through this again, haha.  &lt;br /&gt;&lt;br /&gt;Turns out that because pre-made actions are in the CollectionTreeView, they can do all sorts of magic like... know which items are selected, so that they can work with multiple things at once.  I&#039;ll have to look into this next.&lt;br /&gt;&lt;br /&gt;Anyway, editing ipod tags will no longer crash your Amarok, and they&#039;ll even update in the view!... but not in the ipod&#039;s database, so a restart of Amarok will clear those changes, don&#039;t be fooled!  It won&#039;t be too hard to port over tags support I&#039;m sure.  Er.. wait, I&#039;ve said &quot;it shouldn&#039;t be too hard to...&quot; way too many times already, and I&#039;m always surprised when it turns out to be a pita, haha.&lt;br /&gt;&lt;br /&gt;The rest of the stuff I mentioned in previous posts has not yet been dealt with.  No need to ask about the progress, it&#039;ll get here fairly soon.  I&#039;ve tried to concentrate on core features (tag editing, file management) for now.  Yes, album covers and podcasts are wonderful, and they&#039;re soon to be here.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&#039;1&#039; height=&#039;1&#039; src=&#039;//blogger.googleusercontent.com/tracker/1504418270400156450-7562464047817391743?l=awainzin-foss.blogspot.com&#039;/&gt;&lt;/div&gt; 
    </content:encoded>

    <pubDate>Thu, 21 May 2009 08:22:02 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/1037-guid.html</guid>
    
</item>
<item>
    <title>Getting Close to Displaying Collection</title>
    <link>http://amarok.kde.org/blog/archives/1041-Getting-Close-to-Displaying-Collection.html</link>
            <category>xevix</category>
    
    <comments>http://amarok.kde.org/blog/archives/1041-Getting-Close-to-Displaying-Collection.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=1041</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1041</wfw:commentRss>
    

    <author>nospam@example.com (Alejandro Wainzinger)</author>
    <content:encoded>
    Back!  A week of finals and a week of vacation later, here I am.&lt;br /&gt;&lt;br /&gt;Set back by that, and git-svn losing my code, I&#039;m still on a fairly good track.  I don&#039;t think anyone really gets how dense the legacy Ipod code is except for Max, but it&#039;s a beast.  In the end I won&#039;t be needing most of it, but it&#039;s hard to tell before checking it all.&lt;br /&gt;&lt;br /&gt;I&#039;ve gotten an itdb (itunes database struct) to read the ipod and parse the songlist just now, though I&#039;m still at a loss for figuring out when to initialize or not, or even why we need initialize, but I&#039;ll get to that later.  The bottom line is, that it&#039;s just a matter of using this info to fill in the Meta data and get a collection displaying!  =D&lt;br /&gt;&lt;br /&gt;Nikolaj recommended that I set up a separate MediaBrowser KVBox-based singlecollectiontreeview thing for testing, which I&#039;m not all too sure how to do, but I&#039;ll just rip some code out of the servicebrowser probably.  For my own purposes, I&#039;ll keep it in the collection view for a bit longer.&lt;br /&gt;&lt;br /&gt;Hopefully my next blog will show a screenshot of an IpodCollection being displayed.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&#039;1&#039; height=&#039;1&#039; src=&#039;//blogger.googleusercontent.com/tracker/1504418270400156450-6616705871079763602?l=awainzin-foss.blogspot.com&#039;/&gt;&lt;/div&gt; 
    </content:encoded>

    <pubDate>Thu, 21 May 2009 08:22:02 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/1041-guid.html</guid>
    
</item>
<item>
    <title>MediaDevice vs. MediaDeviceCollection</title>
    <link>http://amarok.kde.org/blog/archives/1042-MediaDevice-vs.-MediaDeviceCollection.html</link>
            <category>xevix</category>
    
    <comments>http://amarok.kde.org/blog/archives/1042-MediaDevice-vs.-MediaDeviceCollection.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=1042</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1042</wfw:commentRss>
    

    <author>nospam@example.com (Alejandro Wainzinger)</author>
    <content:encoded>
    So I&#039;m running into a wall at the moment.  The code for recognizing a device, initializing it, and doing any kind of transaction with it, is already there in MediaDevice, its subclasses, and MediaBrowser.&lt;br /&gt;&lt;br /&gt;The idea of creating a MediaDeviceCollection was to benefit from a unified way of fetching and displaying information about a given group of music files.  The MediaBrowser does more than this, and deals with specific media device interactions (like connect, disconnect, device-specific actions).  So why bother using a collection here at all?&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&#039;1&#039; height=&#039;1&#039; src=&#039;//blogger.googleusercontent.com/tracker/1504418270400156450-1212038917902335838?l=awainzin-foss.blogspot.com&#039;/&gt;&lt;/div&gt; 
    </content:encoded>

    <pubDate>Thu, 21 May 2009 08:22:02 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/1042-guid.html</guid>
    
</item>
<item>
    <title>A week later... not much done...</title>
    <link>http://amarok.kde.org/blog/archives/1043-A-week-later...-not-much-done....html</link>
            <category>xevix</category>
    
    <comments>http://amarok.kde.org/blog/archives/1043-A-week-later...-not-much-done....html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=1043</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1043</wfw:commentRss>
    

    <author>nospam@example.com (Alejandro Wainzinger)</author>
    <content:encoded>
    A combination of school/life/compile issues have meant that I haven&#039;t done a lot.  I added libgpod as an optional package to Amarok, and started to play around using the MediaDeviceCache in the MediaDeviceCollection but still haven&#039;t figured out how to get it to be run by Amarok automatically like Daap, so still a ways to go before I get something semi-functional.&lt;br /&gt;&lt;br /&gt;I&#039;ve decided I&#039;m probably tossing out a lot of the old media device code, as it&#039;s being superceded by Meta and Collection stuff, and I have a feeling the ipod-specific code will be going away as well (that file is a nightmare =p ).  The MediaBrowser was a good idea, but its code almost makes me want to cry, yet I&#039;m still trying to figure out what to do on that.&lt;br /&gt;&lt;br /&gt;But all that needs to be done now is a simple collection showing songs so I have something real to begin with.&lt;br /&gt;&lt;br /&gt;After next week school ends, and more hacking can begin!  =D&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&#039;1&#039; height=&#039;1&#039; src=&#039;//blogger.googleusercontent.com/tracker/1504418270400156450-1733774668154301688?l=awainzin-foss.blogspot.com&#039;/&gt;&lt;/div&gt; 
    </content:encoded>

    <pubDate>Thu, 21 May 2009 08:22:02 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/1043-guid.html</guid>
    
</item>
<item>
    <title>First Day of Coding</title>
    <link>http://amarok.kde.org/blog/archives/1044-First-Day-of-Coding.html</link>
            <category>xevix</category>
    
    <comments>http://amarok.kde.org/blog/archives/1044-First-Day-of-Coding.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=1044</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1044</wfw:commentRss>
    

    <author>nospam@example.com (Alejandro Wainzinger)</author>
    <content:encoded>
    Finally got my environment set up a few days ago, turns out Qt was compiled with some very strange flags and it was having a ripple effect on kdelibs.  I was gone last weekend in Berkeley and had some school stuff to catch up on, but I did get a bit started at least.&lt;br /&gt;&lt;br /&gt;I started looking into collections, and I ripped off the Daap directory, ripped out the Daap references and replaced it with MediaDevice and now I have a new toy to play with =).  There&#039;s a lot of things that aren&#039;t commented on too much, like Observer in MetaBase, but I&#039;m sure it&#039;ll make sense with a bit more time.  Other than that, making a collection seems pretty straightforward (albeit involved).&lt;br /&gt;&lt;br /&gt;I&#039;m trying to find a balance between studying the MediaDevice code and Collection code since I&#039;ll have to end up using both, but since I&#039;m going to be using both in related ways there doesn&#039;t seem to be a way around this.  Either way, I hope I get my first real commit sometime next week (this week is going to be a bit involved with schoolwork as well).&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&#039;1&#039; height=&#039;1&#039; src=&#039;//blogger.googleusercontent.com/tracker/1504418270400156450-8764535003600817402?l=awainzin-foss.blogspot.com&#039;/&gt;&lt;/div&gt; 
    </content:encoded>

    <pubDate>Thu, 21 May 2009 08:22:02 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/1044-guid.html</guid>
    
</item>
<item>
    <title>KDE4 on Gentoo</title>
    <link>http://amarok.kde.org/blog/archives/1046-KDE4-on-Gentoo.html</link>
            <category>xevix</category>
    
    <comments>http://amarok.kde.org/blog/archives/1046-KDE4-on-Gentoo.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=1046</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1046</wfw:commentRss>
    

    <author>nospam@example.com (Alejandro Wainzinger)</author>
    <content:encoded>
    &lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/_vlB73cxVKVI/R70bMgvmTEI/AAAAAAAAABo/0R8QeHoXdYM/s1600-h/kde4_snap1.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;http://4.bp.blogspot.com/_vlB73cxVKVI/R70bMgvmTEI/AAAAAAAAABo/0R8QeHoXdYM/s400/kde4_snap1.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5169317849053154370&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;After weeks of trying to get to setting up a KDE4 development environment for Amarok, success is finally at my door =D.  First Kubuntu and kdesvn-build needing every dependency imaginable and building issues, then Gentoo and the broken qt-4.4 ebuilds, but a combination of kdesvn-build and manually building Amarok has finally granted me my dream.&lt;br /&gt;&lt;br /&gt;&lt;object height=&quot;355&quot; width=&quot;425&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/B9rdjuRbYWY&amp;amp;rel=1&quot;&gt;&lt;param name=&quot;wmode&quot; value=&quot;transparent&quot;&gt;&lt;embed src=&quot;http://www.youtube.com/v/B9rdjuRbYWY&amp;amp;rel=1&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;transparent&quot; height=&quot;355&quot; width=&quot;425&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;For a higher quality version, download from here(note: .ogv file) : &lt;a href=&quot;http://www.filesend.net/download.php?f=03f4722730dfa9115d143701fd0d3db1&quot;&gt;http://www.filesend.net/download.php?f=03f4722730dfa9115d143701fd0d3db1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For an avi version (lesser quality a bit) :&lt;br /&gt;&lt;a href=&quot;http://www.filesend.net/download.php?f=bdbe2dcd1626b6aa2f3ab5d78888bcae&quot;&gt;http://www.filesend.net/download.php?f=bdbe2dcd1626b6aa2f3ab5d78888bcae&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&#039;1&#039; height=&#039;1&#039; src=&#039;//blogger.googleusercontent.com/tracker/1504418270400156450-7601948934744026198?l=awainzin-foss.blogspot.com&#039;/&gt;&lt;/div&gt; 
    </content:encoded>

    <pubDate>Thu, 21 May 2009 08:22:02 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/1046-guid.html</guid>
    
</item>
<item>
    <title>GSoC: Boston/Cambridge Dev Sprint</title>
    <link>http://amarok.kde.org/blog/archives/1013-GSoC-BostonCambridge-Dev-Sprint.html</link>
            <category>xevix</category>
    
    <comments>http://amarok.kde.org/blog/archives/1013-GSoC-BostonCambridge-Dev-Sprint.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=1013</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1013</wfw:commentRss>
    

    <author>nospam@example.com (Alejandro Wainzinger)</author>
    <content:encoded>
    &lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://3.bp.blogspot.com/_vlB73cxVKVI/SgiN7V6LDjI/AAAAAAAAAJQ/I1URCUK8RSQ/s1600-h/850A0686.JPG&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 400px;&quot; src=&quot;http://3.bp.blogspot.com/_vlB73cxVKVI/SgiN7V6LDjI/AAAAAAAAAJQ/I1URCUK8RSQ/s400/850A0686.JPG&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5334669809253289522&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;The dev sprint was filled with conversation on all sorts of topics, open-source software and pop culture references, but above all, people got set up to go on their GSoC projects and got inspired by each others&#039; enthusiasm.  This being my second time doing GSoC for the same project, I was already set to go and know my way around development, but this gave me a chance to meet with a fellow Amarok developer Jeff Mitchell, and now I&#039;ve met a good amount of the core Amarok team, which is awesome.  In the end I didn&#039;t get a lot of actual coding done, but I took from the sprint enough inspiration to hurry up even more on the code I&#039;m working on.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Highlights:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;- MIT&lt;/strong&gt; == We spent a good amount of time in one of MIT&#039;s buildings on our laptops (a &lt;a href=&quot;http://blog.cryos.net/uploads/kde_gsoc_sprint.jpeg&quot;&gt;photo&lt;/a&gt; on &lt;a href=&quot;http://blog.cryos.net/archives/221-KDE-GSoC-Sprint-in-Boston.html&quot;&gt;Marcus&#039; blog&lt;/a&gt;).  Spent time on getting people set up on svn, setting up distributed compiling with IceCream and a bit of hacking.  Above all it set the pace for a lot of conversation which is really what the open source community is about: sharing ideas so that later on, you can work on making them real.&lt;/p&gt;&lt;p&gt;- OpenSuSE&#039;s IceCream == Not satisfied with the slow compiles of core stuff like Qt and our own huge projects, we tried to set up IceCream distributed compiler to get more bang for our byte.  Unfortunately we were doomed to failure (found out later) since some of us were 32-bit systems others 64-bit, and differeng GCC versions, and cross-compilers take too long to build.  However, we did get it somewhat going in the hotel, which was nice.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;- JP Licks Ice Cream &lt;/strong&gt;== In a word, amazing.  Suffolk County&#039;s own local chain, which redefines what a &quot;small&quot; ice cream should be.  I haven&#039;t seen so many unknown or strange flavors in a while, ranging from black raspberry, to peppered ice cream.  You definitely get your money&#039;s worth, but I had trouble even finishing the small.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;- Indian Restaurant&lt;/strong&gt; (don&#039;t recall the name) == More food than you could hope for, for the right price (the rest of Boston/Cambridge was quite pricy).  Had Chicken Tikka Masala (obligatory), Garlic Naan (also obligatory) and a ton of rice.  I should&#039;ve gotten more spicy food but I wanted to play it safe.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;- Star Trek @ IMAX&lt;/strong&gt; == Nevermind why Reading has an IMAX theater in a furniture store, the movie was quite a visual spectacle.  The story/characters/acting was exactly what I expected, and I wasn&#039;t let down.  I&#039;m sure Star Trek fans enjoyed it more since there seemed to be a lot of hidden humor, but luckily the few bits I&#039;ve seen helped me out.&lt;/p&gt;&lt;p&gt;- &lt;a href=&quot;http://en.wikipedia.org/wiki/Candlepin_bowling&quot;&gt;Candlepin Bowling&lt;/a&gt;&lt;/p&gt;&lt;p align=&quot;left&quot;&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://2.bp.blogspot.com/_vlB73cxVKVI/SgiPHyzg30I/AAAAAAAAAJY/yyFhrvSaDc0/s1600-h/850A0683.JPG&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 400px;&quot; src=&quot;http://2.bp.blogspot.com/_vlB73cxVKVI/SgiPHyzg30I/AAAAAAAAAJY/yyFhrvSaDc0/s400/850A0683.JPG&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5334671122680045378&quot; /&gt;&lt;/a&gt; == Unlike the 10-pin bowling I&#039;m used to, here you get a ball the size of a skiball, pins aren&#039;t cleared until 3 shots, and the pins are cylinder-shaped.  Definitely interesting.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;- The Kendall Hotel &lt;/strong&gt;== Nice hotel, right in front of MIT, right next to the T.  Wireless was hassle-free, breakfast every morning.  Overpriced food can&#039;t be helped, but I went it cheap.  Nice beds and nice rooms, all that was needed for some late-night hacking.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;- The T&lt;/strong&gt; == The big pitfall of living in California is that the concept of mass public transportation is, to put it politely, lacking.  The Boston T, for about $2, will let you ride from one side of Boston to the other, and even to Cambridge and other outlying areas.  Reasonably fast, reliable, and not too packed.  Definitely one thing I would love to have here in car-driven California.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;- Dunkin Donuts&lt;/strong&gt; == There are ~300 of these in Boston alone, which is mind-boggling.  There&#039;s a DD underground in the T, there&#039;s one at Logan Airport, there&#039;s one in the MIT admin building!  Such cheap, decently-flavored iced cofee you will not find elsewhere, and the monstrous size of the large was worth the price.  Definitely went again and again...&lt;/p&gt;&lt;p&gt;&lt;strong&gt;- Dunkin Donuts&lt;/strong&gt; == .... and again&lt;/p&gt;&lt;p&gt;&lt;strong&gt;- Dunkin Donuts&lt;/strong&gt; == .... and again.  I got a lot of coffee in Boston.  I don&#039;t think I&#039;ve ever had so much consecutive coffee drinking in my life.  Definitely missed on the west coast.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;The People:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Veteran Devs:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Jeff Mitchell &lt;/strong&gt;-- The guy who worked hard to make this all happen, and go well, and a fellow Amarok dev.  Many many thanks for making this possible, and for not getting too frustrated with my lack of brainpower in navigating directions and so forth this last weekend.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Marcus Hanwell&lt;/strong&gt; -- Avogadro dev, soon to be working on our beloved build-system CMake.  Really cool guy, loves photography, well-travelled.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://socghop.appspot.com/org/home/google/gsoc2009/kde?limit_0=100&quot;&gt;GSoC Students&lt;/a&gt;:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Chani Armitage&lt;/strong&gt; -- Plasma dev, brought you screensaver plasmoids, now working on fancy popups using mouse buttons.  Energetic and very involved.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Constantin Berzan&lt;/strong&gt; -- Working on a global outbox for Akonadi, to take away dependence on e-mail related things from KMail to free e.g. applets to do stuff with mail.  Good at directions, shame he had to go back so soon in the sprint.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Christopher Ing&lt;/strong&gt; -- Bringing fluids to STEP.  Good roommate, made sure I didn&#039;t miss breakfast the 2nd day =)  The only mac user in the group, which shows the variety of people working on KDE-related things.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Ramon Zarazúa&lt;/strong&gt; -- Working on refactoring support for KDevelop 4.  I really look forward to the results of this project, being an avid KDev 4 user.  Cool guy, the only one with whom icecream was working.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Adam Kidder&lt;/strong&gt; -- Nepomuk search.  Picked up the slack for my lack of common sense this last weekend (&quot;you need an IP address to run a dhcp server?&quot;).  At Ann Arbour, my cousin went there.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Marwan Hilmi&lt;/strong&gt; -- Parsek.  Didn&#039;t get much of a chance to talk to him about his project, but seemed cool.  Note to self: round tables are only good if people aren&#039;t too far away from each other.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Pierre-Alexandre St-Jean&lt;/strong&gt; -- Abstracting Kopete chat window for use in other apps.  Probably the only relaxed person of the bunch (most of the rest of us were doped up on caffeine).  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Conclusion:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Completely worth the 3,000 mile trip.  It looks like this GSoC, for KDE at least, will be filled with a lot of awesome people and work getting done.  These kinds of get-togethers help to motivate us to do awesome things, and to open up channels of communication between different parts of KDE which is essential to making KDE cohesive as well as feature-filled.  I don&#039;t think I&#039;ll be making it to Akademy this year unfortunately, so I&#039;m happy I was able to make it to this.&lt;/p&gt;&lt;p&gt;I would, at some point, like to &lt;strong&gt;set up a similar event in California&lt;/strong&gt;, perhaps in San Francisco or San Diego, and I wonder who would be interested in it.  &lt;/p&gt;&lt;p&gt;At any rate, good luck to all GSoC&#039;ers on your projects, and I&#039;ll see you on IRC/ML.&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&#039;1&#039; height=&#039;1&#039; src=&#039;http://res1.blogblog.com/tracker/1504418270400156450-4114451841494692500?l=awainzin-foss.blogspot.com&#039;/&gt;&lt;/div&gt; 
    </content:encoded>

    <pubDate>Mon, 11 May 2009 21:42:02 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/1013-guid.html</guid>
    
</item>
<item>
    <title>Amarok: Quick Status Report on Refactoring, Git Rocks</title>
    <link>http://amarok.kde.org/blog/archives/1004-Amarok-Quick-Status-Report-on-Refactoring,-Git-Rocks.html</link>
            <category>xevix</category>
    
    <comments>http://amarok.kde.org/blog/archives/1004-Amarok-Quick-Status-Report-on-Refactoring,-Git-Rocks.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=1004</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1004</wfw:commentRss>
    

    <author>nospam@example.com (Alejandro Wainzinger)</author>
    <content:encoded>
    Between the business of school &amp;amp;c. I&#039;ve been at work &lt;span style=&quot;font-weight: bold;&quot;&gt;making Media Device code smaller&lt;/span&gt; and easier to write, as promised.  Here is a preview of the difference in the amount of code required before, and in my git branch after.  Let&#039;s just look at the MediaDeviceCollectionFactory subclass for Ipods, which keeps track of Ipods connected and talks to Solid.&lt;br /&gt;&lt;span style=&quot;font-size:180%;&quot;&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Before:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;AMAROK_EXPORT_PLUGIN( IpodCollectionFactory )&lt;br /&gt;&lt;br /&gt;IpodCollectionFactory::IpodCollectionFactory()&lt;br /&gt;    : Amarok::CollectionFactory()&lt;br /&gt;{&lt;br /&gt;    //nothing to do&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;IpodCollectionFactory::~IpodCollectionFactory()&lt;br /&gt;{&lt;br /&gt;    DEBUG_BLOCK&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void&lt;br /&gt;IpodCollectionFactory::init()&lt;br /&gt;{&lt;br /&gt;    DEBUG_BLOCK&lt;br /&gt;&lt;br /&gt;    // connect to the monitor&lt;br /&gt;&lt;br /&gt; //   connect( this, SIGNAL( ipodDetected( const MediaDeviceInfo &amp;amp; ) ),&lt;br /&gt;//             MediaDeviceMonitor::instance(), SIGNAL( deviceDetected( const MediaDeviceInfo &amp;amp; ) ) );&lt;br /&gt;&lt;br /&gt;    connect( MediaDeviceMonitor::instance(), SIGNAL( ipodReadyToConnect( const QString &amp;amp;, const QString &amp;amp; ) ),&lt;br /&gt;             SLOT( ipodDetected( const QString &amp;amp;, const QString &amp;amp; ) ) );&lt;br /&gt;&lt;br /&gt;    // HACK: emitting old signal to avoid refactoring applet yet&lt;br /&gt;    connect( this, SIGNAL( tellIpodDetected( const QString &amp;amp;, const QString &amp;amp; ) ),&lt;br /&gt;             MediaDeviceMonitor::instance(), SIGNAL( ipodDetected( const QString &amp;amp;, const QString &amp;amp; ) ) );&lt;br /&gt;&lt;br /&gt;    connect( MediaDeviceMonitor::instance(), SIGNAL( ipodReadyToDisconnect( const QString &amp;amp; ) ),&lt;br /&gt;             SLOT( deviceRemoved( const QString &amp;amp; ) ) );&lt;br /&gt;&lt;br /&gt;    connect( MediaDeviceMonitor::instance(), SIGNAL( deviceRemoved( const QString &amp;amp; ) ), SLOT( deviceRemoved( const QString &amp;amp; ) ) );&lt;br /&gt;&lt;br /&gt;    // HACK: Usability: Force auto-connection of device upon detection&lt;br /&gt;    checkDevicesForIpod();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void&lt;br /&gt;IpodCollectionFactory::ipodDetected( const QString &amp;amp;mountPoint, const QString &amp;amp;udi )&lt;br /&gt;{&lt;br /&gt;    DEBUG_BLOCK&lt;br /&gt;    IpodCollection* coll = 0;&lt;br /&gt;    if( !m_collectionMap.contains( udi ) )&lt;br /&gt;    {&lt;br /&gt;        debug() &lt;&lt; &quot;New Ipod not seen before&quot;;&lt;br /&gt;        coll = new IpodCollection( mountPoint, udi );&lt;br /&gt;        if( coll )&lt;br /&gt;        {&lt;br /&gt;            // TODO: connect to MediaDeviceMonitor signals&lt;br /&gt;            connect( coll, SIGNAL( collectionDisconnected( const QString &amp;amp;) ),&lt;br /&gt;                     this, SLOT( slotCollectionDisconnected( const QString &amp;amp; ) ) );&lt;br /&gt;            m_collectionMap.insert( udi, coll );&lt;br /&gt;            emit newCollection( coll );&lt;br /&gt;            debug() &lt;&lt; &quot;emitting new ipod collection&quot;;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void&lt;br /&gt;IpodCollectionFactory::deviceRemoved( const QString &amp;amp;udi )&lt;br /&gt;{&lt;br /&gt;    DEBUG_BLOCK&lt;br /&gt;    if( m_collectionMap.contains( udi ) )&lt;br /&gt;    {&lt;br /&gt;        IpodCollection* coll = m_collectionMap[ udi ];&lt;br /&gt;        if( coll )&lt;br /&gt;        {&lt;br /&gt;            m_collectionMap.remove( udi ); // remove from map&lt;br /&gt;            coll-&gt;deviceRemoved();  //collection will be deleted by collectionmanager&lt;br /&gt;        }&lt;br /&gt;        else&lt;br /&gt;            warning() &lt;&lt; &quot;collection already null&quot;;&lt;br /&gt;    }&lt;br /&gt;    else&lt;br /&gt;        warning() &lt;&lt; &quot;removing non-existent device&quot;;&lt;br /&gt;&lt;br /&gt;    return;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void&lt;br /&gt;IpodCollectionFactory::slotCollectionDisconnected( const QString &amp;amp; udi)&lt;br /&gt;{&lt;br /&gt;    m_collectionMap.remove( udi ); // remove from map&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void&lt;br /&gt;IpodCollectionFactory::slotCollectionReady()&lt;br /&gt;{&lt;br /&gt;    DEBUG_BLOCK&lt;br /&gt;    IpodCollection &lt;strong&gt;collection = dynamic_cast&lt;ipodcollection*&gt;( sender() );&lt;br /&gt;    if( collection )&lt;br /&gt;    {&lt;br /&gt;        debug() &lt;&lt; &quot;emitting ipod collection newcollection&quot;;&lt;br /&gt;        emit newCollection( collection );&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void&lt;br /&gt;IpodCollectionFactory::checkDevicesForIpod()&lt;br /&gt;{&lt;br /&gt;    QStringList udiList = MediaDeviceMonitor::instance()-&gt;getDevices();&lt;br /&gt;&lt;br /&gt;    /&lt;/strong&gt; poll udi list for supported devices &lt;strong&gt;/&lt;br /&gt;    foreach( const QString &amp;amp;udi, udiList )&lt;br /&gt;    {&lt;br /&gt;        /&lt;/strong&gt; if ipod device found, emit signal */&lt;br /&gt;        if( isIpod( udi ) )&lt;br /&gt;        {&lt;br /&gt;            // HACK: Usability: Force auto-connection of device upon detection&lt;br /&gt;            QString mountpoint = MediaDeviceCache::instance()-&gt;volumeMountPoint(udi);&lt;br /&gt;            ipodDetected( mountpoint, udi );&lt;br /&gt;&lt;br /&gt;            //MediaDeviceInfo &lt;strong&gt;deviceinfo =&lt;br /&gt;            new IpodDeviceInfo( mountpoint, udi );&lt;br /&gt;            //emit ipodDetected( deviceinfo );&lt;br /&gt;            // HACK: emit old signal to avoid refactor of applet yet&lt;br /&gt;            emit tellIpodDetected( mountpoint, udi );&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;bool&lt;br /&gt;IpodCollectionFactory::isIpod( const QString &amp;amp;udi ) const&lt;br /&gt;{&lt;br /&gt;    DEBUG_BLOCK&lt;br /&gt;&lt;br /&gt;    Solid::Device device;&lt;br /&gt;&lt;br /&gt;    device = Solid::Device(udi);&lt;br /&gt;    /&lt;/strong&gt; going until we reach a vendor, e.g. Apple &lt;strong&gt;/&lt;br /&gt;    while ( device.isValid() &amp;amp;&amp;amp; device.vendor().isEmpty() )&lt;br /&gt;    {&lt;br /&gt;        device = Solid::Device( device.parentUdi() );&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    debug() &lt;&lt; &quot;Device udi: &quot; &lt;&lt; udi;&lt;br /&gt;    debug() &lt;&lt; &quot;Device name: &quot; &lt;&lt;&gt;deviceName(udi);&lt;br /&gt;    debug() &lt;&lt; &quot;Mount point: &quot; &lt;&lt;&gt;volumeMountPoint(udi);&lt;br /&gt;    if ( device.isValid() )&lt;br /&gt;    {&lt;br /&gt;        debug() &lt;&lt; &quot;vendor: &quot; &lt;&lt; device.vendor() &lt;&lt; &quot;, product: &quot; &lt;&lt; device.product();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /&lt;/strong&gt; if iPod found, return true */&lt;br /&gt;    return device.product() == &quot;iPod&quot;;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:180%;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;After:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;AMAROK_EXPORT_PLUGIN( IpodCollectionFactory )&lt;br /&gt;&lt;br /&gt;IpodCollectionFactory::IpodCollectionFactory()&lt;br /&gt;    : MediaDeviceCollectionFactory&lt;ipodcollection&gt; ( new IpodConnectionAssistant() )&lt;br /&gt;{&lt;br /&gt;    //nothing to do&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;IpodCollectionFactory::~IpodCollectionFactory()&lt;br /&gt;{&lt;br /&gt;    DEBUG_BLOCK&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;----------------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;As you can see (excuse the bad formatting, blogger doesn&#039;t take kindly to source code), the amount of code required has been &lt;span style=&quot;font-weight: bold;&quot;&gt;greatly reduced&lt;/span&gt;, and the other required classes are soon to follow.  Also, things are going to be implemented more in the predictably correct classes now, and after refactoring is done and I&#039;ve ported both Ipods and MTPs to it, I will write a small tutorial on how to go about implementing your own device.  No, UMS will be done by me, heh, but it should be a piece of cake afterward to implement support for some of the other devices some of you miss from Amarok 1.4, so yay!&lt;br /&gt;&lt;br /&gt;Unfortunately I&#039;m fairly busy with school too so this proceeds in big bumps every 4-7 days, might take a bit, but getting there.  I&#039;m &lt;span style=&quot;font-weight: bold;&quot;&gt;going to Boston&lt;/span&gt; next weekend for the &lt;span style=&quot;font-weight: bold;&quot;&gt;KDE GSoC&lt;/span&gt; meetup, which should be fun.  If you&#039;re around, do say hello!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&#039;1&#039; height=&#039;1&#039; src=&#039;http://res1.blogblog.com/tracker/1504418270400156450-5269383381995271618?l=awainzin-foss.blogspot.com&#039;/&gt;&lt;/div&gt; 
    </content:encoded>

    <pubDate>Sun, 03 May 2009 11:02:01 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/1004-guid.html</guid>
    
</item>
<item>
    <title>Amarok: A Better Media Device Experience, GSoC 2009</title>
    <link>http://amarok.kde.org/blog/archives/998-Amarok-A-Better-Media-Device-Experience,-GSoC-2009.html</link>
            <category>xevix</category>
    
    <comments>http://amarok.kde.org/blog/archives/998-Amarok-A-Better-Media-Device-Experience,-GSoC-2009.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=998</wfw:comment>

    <slash:comments>6</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=998</wfw:commentRss>
    

    <author>nospam@example.com (Alejandro Wainzinger)</author>
    <content:encoded>
    &lt;p&gt;So I have again the pleasure of being selected for Google&#039;s Summer of Code for Amarok to scratch some very serious itches concerning media device support in Amarok 2.&lt;/p&gt;&lt;p&gt;Itches:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Playlist Support&lt;/li&gt;&lt;li&gt;More GUI Feedback, more intuitive interface&lt;/li&gt;&lt;li&gt;UMS(Universal Mass Storage) Support&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Playlist:&lt;/p&gt;&lt;p&gt;Actually, iPods in Amarok already have their playlists read on connect, but at the time I wrote the code, the code in Amarok for any collection dealing with playlists wasn&#039;t at a satisfactory level yet, which I believe it to be now thanks to the work of a few people, in particular I know that Stecchino (Bart) has worked on it.&lt;/p&gt;&lt;p&gt;GUI:&lt;/p&gt;&lt;p&gt;The media devices applet seemed like a good idea at first, but it&#039;s terrible from a usability standpoint, and since the PUD (Popup Dropper) removes any possibility of dragging-and-dropping tracks onto it, for instance, it doesn&#039;t make much sense to have it.  However, I understand there&#039;s plans in the works to redo some of Amarok&#039;s GUI, part of which will accomodate the previous functions of this applet, and I&#039;ll be taking advantage of that.&lt;/p&gt;&lt;p&gt;UMS Support:&lt;/p&gt;&lt;p&gt;Yes!  I swear it this time.  It turned out that building a new collection-based media devices infrastructure more-or-less from scratch took a lot longer than planned last summer, and I did not get to UMS.  Another reason I&#039;ve held back on it up until now is that media device support in general is going to get a massive refactoring before GSoC begins, to accomodate for simple adding of support not only of UMS devices, but in the future, other types as well.&lt;/p&gt;&lt;p&gt;Ok, now that the explanations of GSoC are out of the way, I move on to something else.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;People with media devices,&lt;/strong&gt; aside from the above, &lt;strong&gt;what is it you would like to see&lt;/strong&gt; in Amarok for devices?  I can list a few off the top of my head, please list more so that I can prioritize perhaps some time for this summer and beyond.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;MTP Cover Support&lt;/li&gt;&lt;li&gt;iPod stale/orphaned scan support&lt;/li&gt;&lt;li&gt;Playlist synching with the local collection&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&#039;1&#039; height=&#039;1&#039; src=&#039;http://res1.blogblog.com/tracker/1504418270400156450-5021629046398541858?l=awainzin-foss.blogspot.com&#039;/&gt;&lt;/div&gt; 
    </content:encoded>

    <pubDate>Sat, 25 Apr 2009 09:12:02 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/998-guid.html</guid>
    
</item>
<item>
    <title>OpenSolaris, Qt and Game Development</title>
    <link>http://amarok.kde.org/blog/archives/908-OpenSolaris,-Qt-and-Game-Development.html</link>
            <category>xevix</category>
    
    <comments>http://amarok.kde.org/blog/archives/908-OpenSolaris,-Qt-and-Game-Development.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=908</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=908</wfw:commentRss>
    

    <author>nospam@example.com (Alejandro Wainzinger)</author>
    <content:encoded>
    &lt;span style=&quot;font-weight: bold;&quot;&gt;Overview&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A group of 3 other people and myself were charged with making a game for a class this trimester, which is essentially a Final Fantasy clone with a few quirks localized to our university.  In thinking of a toolkit, I thought to myself &quot;what event-driven toolkit provides a graphics system and paint system complete and robust enough to make this happen?&quot;  Naturally Qt came to mind.  The professor suggested some Java toolkits, including SWT, but my experiences with SWT have not been at all good, so I decided to give Qt a shot.  Another perk of Qt over SWT is how easy it is to learn and use, since my 3 team members are not familiar with it.&lt;br /&gt;&lt;br /&gt;After a few days of playing with Qt tutorials on the Graphics framework and studying KDE games code, I had a small but working prototype of one of the modes of our game, where the character explores the scene of a level.&lt;br /&gt;&lt;br /&gt;&lt;object height=&quot;344&quot; width=&quot;425&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/iRqCEet5-j0&amp;amp;hl=en&amp;amp;fs=1&quot;&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;embed src=&quot;http://www.youtube.com/v/iRqCEet5-j0&amp;amp;hl=en&amp;amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; height=&quot;344&quot; width=&quot;425&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Things to notice that were easy to do:&lt;br /&gt;&lt;br /&gt;- Creating a graphics item from a graphic file&lt;br /&gt;- Moving it around&lt;br /&gt;- Having it change form&lt;br /&gt;- Collision detection with walls&lt;br /&gt;- Dragging of the view to see different parts of the scene&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Deployment&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Before proceeding I had to make sure that the program would run on the target platform of the school servers: SunOS 5.10 (Solaris).  Now Qt is a cross-platform toolkit, and binary builds of it are provided for Linux, OS X, and Windows, but not for Solaris (that I could find &lt;a href=&quot;http://www.qtsoftware.com/downloads/opensource/appdev&quot;&gt;here&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Having recently installed &lt;a href=&quot;http://www.virtualbox.org/wiki/Downloads&quot;&gt;VirtualBox&lt;/a&gt; after hearing lots of good things about it, I decided to give &lt;a href=&quot;http://opensolaris.org/os/downloads/&quot;&gt;Solaris&lt;/a&gt; a spin as a virtual machine.  There was a bit of confusion for me at the beginning with so many possible distros to choose from, but luckily since only 2 of them are supported by the KDE Solaris team, that narrowed it down.  They prefer &lt;a href=&quot;http://techbase.kde.org/Projects/KDE_on_Solaris&quot;&gt;using SXCE&lt;/a&gt;, so I gave that a shot, but unfortunately some bug where X would show up but then freeze on the live dvd stopped me short (I figured it was an issue of running in a VM or something).  Then I tried OpenSolaris 2008.11, which installed fine&lt;br /&gt;&lt;br /&gt;Then the problem became that the instructions on the &lt;a href=&quot;http://techbase.kde.org/Projects/KDE_on_Solaris/OpenSolaris&quot;&gt;wiki for compiling using OpenSolaris&lt;/a&gt; were a bit lacking, a problem I have since mended with some updates based on my experience.  After much strife with getting the environment set up just right, compiling was not a big deal, thanks to the awesome efforts of the KDE OpenSolaris team.  I ran into some issue with a Qt example not compiling, and hacked it up to fix it, since it didn&#039;t much matter, and voila, Qt was on the system, and my previous example in the youtube video worked.&lt;br /&gt;&lt;br /&gt;From here, I had a few options (as I saw it):&lt;br /&gt;- build Qt as static, deploy a static binary&lt;br /&gt;- build Qt as shared library, ask school admins to install Qt on servers&lt;br /&gt;- build QtJambi, port to Java, deploy as jar&lt;br /&gt;&lt;br /&gt;Since building Qt as static was not supported by the KDE Solaris team, I decided to give QtJambi a shot, and ported my example to Java.  Unfortunately the QtJambi build specfile provided didn&#039;t work too well, and went into an infinite recursive make loop.&lt;br /&gt;&lt;br /&gt;When at last I had almost given up, I discovered that the &lt;a href=&quot;http://doc.trolltech.com/4.4/deployment-x11.html#creating-the-application-package&quot;&gt;shared library approach&lt;/a&gt; doesn&#039;t actually require the system to have Qt installed on it, just that the necessary .so shared object files be deployed with the program itself, and to use a script to launch the program (a script which simply adds current directory to linker path).&lt;br /&gt;&lt;br /&gt;A simple ldd resulted in this:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;br /&gt;     libc.so.1 =&gt;     /usr/lib/libc.so.1&lt;br /&gt;     libQtGui.so.4 =&gt;         /opt/foss/qt4/lib/libQtGui.so.4&lt;br /&gt;     libQtCore.so.4 =&gt;        /opt/foss/qt4/lib/libQtCore.so.4&lt;br /&gt;     libCrun.so.1 =&gt;  /usr/lib/libCrun.so.1&lt;br /&gt;     libm.so.2 =&gt;     /usr/lib/libm.so.2&lt;br /&gt;     libglib-2.0.so.0 =&gt;      /usr/lib/libglib-2.0.so.0&lt;br /&gt;     libpng12.so.0 =&gt;         /usr/lib/libpng12.so.0&lt;br /&gt;     libSM.so.6 =&gt;    /usr/lib/libSM.so.6&lt;br /&gt;     libICE.so.6 =&gt;   /usr/lib/libICE.so.6&lt;br /&gt;     libz.so.1 =&gt;     /usr/lib/libz.so.1&lt;br /&gt;     libXrender.so.1 =&gt;       /usr/lib/libXrender.so.1&lt;br /&gt;     libXrandr.so.2 =&gt;        /usr/lib/libXrandr.so.2&lt;br /&gt;     libXfixes.so.1 =&gt;        /usr/lib/libXfixes.so.1&lt;br /&gt;     libXcursor.so.1 =&gt;       /usr/lib/libXcursor.so.1&lt;br /&gt;     libXinerama.so.1 =&gt;      /usr/lib/libXinerama.so.1&lt;br /&gt;     libfreetype.so.6 =&gt;      /usr/lib/libfreetype.so.6&lt;br /&gt;     libfontconfig.so.1 =&gt;    /usr/lib/libfontconfig.so.1&lt;br /&gt;     libXext.so.0 =&gt;  /usr/lib/libXext.so.0&lt;br /&gt;     libX11.so.4 =&gt;   /usr/lib/libX11.so.4&lt;br /&gt;     libgthread-2.0.so.0 =&gt;   /usr/lib/libgthread-2.0.so.0&lt;br /&gt;     libnsl.so.1 =&gt;   /lib/libnsl.so.1&lt;br /&gt;     libsocket.so.1 =&gt;        /lib/libsocket.so.1&lt;br /&gt;     libexpat.so.1 =&gt;         /usr/lib/libexpat.so.1&lt;br /&gt;     libXau.so.6 =&gt;   /usr/X11/lib/libXau.so.6&lt;br /&gt;     libpthread.so.1 =&gt;       /lib/libpthread.so.1&lt;br /&gt;     libmp.so.2 =&gt;    /lib/libmp.so.2&lt;br /&gt;     libmd.so.1 =&gt;    /lib/libmd.so.1&lt;br /&gt;     libscf.so.1 =&gt;   /lib/libscf.so.1&lt;br /&gt;     libuutil.so.1 =&gt;         /lib/libuutil.so.1&lt;br /&gt;     libgen.so.1 =&gt;   /lib/libgen.so.1&lt;br /&gt;     libXevie.so.1 =&gt;         /usr/X11/lib/libXevie.so.1&lt;br /&gt;     libXss.so.1 =&gt;   /usr/X11/lib/libXss.so.1&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Wow, that&#039;s a lot of shared objects!  According to the &lt;a href=&quot;http://doc.trolltech.com/4.4/deployment-x11.html#additional-libraries&quot;&gt;Qt deployment guide&lt;/a&gt; though, all of the X libraries could and should be avoided to be packaged.  I did end up adding other ones though, one by one, as I saw necessary until the program finally ran without a linker error.  The bad news is this blew the total package up to 30 MB or so.  Oh well, so be it, it ran!&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;And now...?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And now the real development can begin.  There&#039;s only a few weeks to work on it, but that should be plenty.  It won&#039;t be a terribly fantastic game as a result, but it was an interesting adventure, and more importantly proves the point that Qt is an awesome toolkit, and that there are quite a few options open for deployment.&lt;br /&gt;&lt;br /&gt;Thanks to the KDE Solaris team for helping me with getting things building, I&#039;d be nowhere without your help (in particular: szt, [ade], steleman, and trochej thanks a lot guys).&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&#039;1&#039; height=&#039;1&#039; src=&#039;http://res1.blogblog.com/tracker/1504418270400156450-1334288057111695449.gif?l=awainzin-foss.blogspot.com&#039;/&gt;&lt;/div&gt; 
    </content:encoded>

    <pubDate>Fri, 13 Mar 2009 03:22:02 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/908-guid.html</guid>
    
</item>
<item>
    <title>Karaoke with Windows (via VirtualBox)</title>
    <link>http://amarok.kde.org/blog/archives/909-Karaoke-with-Windows-via-VirtualBox.html</link>
            <category>xevix</category>
    
    <comments>http://amarok.kde.org/blog/archives/909-Karaoke-with-Windows-via-VirtualBox.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=909</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=909</wfw:commentRss>
    

    <author>nospam@example.com (Alejandro Wainzinger)</author>
    <content:encoded>
    &lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://i37.photobucket.com/albums/e71/fomch/HOME.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 640px; height: 450px;&quot; src=&quot;http://i37.photobucket.com/albums/e71/fomch/HOME.jpg&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Some time ago, a friend gave me this Chinese karaoke program called HomeKara2, which puts out a song-selection screen to one monitor, and the actual video with lyrics to another.  I thought this was nifty, and tried to virtualize it with wine.  First, to get Chinese working, I tried this &quot;wineloc&quot; project I used for my Japanese programs.  No go.  Also, the dual monitor output thing wasn&#039;t working.  Bummer.&lt;br /&gt;&lt;br /&gt;Recently I got hooked up with VirtualBox, a handy replacement for vmware for me, which I&#039;ve been using for an OpenSolaris machine for developing a Qt game (that&#039;s a blog post to come).  Somewhere along the line, I set up a Windows XP VM, just to test, and was surprised that it ran quite well, so I decided to put it to the test with HomeKara2.&lt;br /&gt;&lt;br /&gt;I ran into some obstacles again, starting with that HomeKara2 has not a UTF-8 codepage, but some Chinese one.  I decided to try the good &#039;ol Microsoft applocale program that changes codepages.  This worked amazingly!  Until the program crashed randomly and inexplicably at different times.  Another problem was that the program uses an external MDB (Microsoft Access Database) file to keep track of the tables of artists, songs, etc, which is not readily editable or even viewable on Linux without extra tools.  Last but not least, I had to figure out how to get multiple monitors set up within the virtual machine.&lt;br /&gt;&lt;br /&gt;My solutions are out of order of how they happened, but in the order as previously mentioned&lt;br /&gt;&lt;br /&gt;The applocale program is apparently quite unstable, and all I had to do to get HomeKara2 to run correctly without it, was to set the default codepage for non-utf8 codepage applications in Control Panel&#039;s regional language settings somewhere.  This required a quick vm reboot, which was fine.&lt;br /&gt;&lt;br /&gt;For the MDB issue, I sought out some freeware editors, which are in general wonderful, but realized that the Windows version of OpenOffice can connect to an MDB file and modify existing tables.  A bit fat of a solution to install OpenOffice, but I can&#039;t doubt the ease of it.&lt;br /&gt;&lt;br /&gt;The multiple monitors issue was a bit tough, but some googling around eventually brought up the right combination of answers.   First, shut down the VM if it&#039;s running, and start up a terminal.&lt;br /&gt;&lt;br /&gt;Note: replace VMNAME with the name for your VM&lt;br /&gt;&lt;br /&gt;1. Use the VirtualBox GUI to enable VRDP (remote desktop) and change the port, in case Windows doesn&#039;t like you using its default RDP port, and take note of the port.&lt;br /&gt;&lt;br /&gt;2. `VBoxManage modifyvm VMNAME -monitorcount 2` will set the number of monitors on the machine to 2.&lt;br /&gt;&lt;br /&gt;3. `VBoxManage modifyvm VMNAME -vrdpmulticon on` will allow for multiple connections to the same RDP port.  This allows you to connect twice, once for each monitor.&lt;br /&gt;&lt;br /&gt;4. Start up your VM as normal, right-click the background wallpaper, click properties, goto settings tab, and select decent sizes for each of your monitors, checking the box for &quot;extend my Windows desktop into this monitor&quot; and apply.&lt;br /&gt;&lt;br /&gt;5. Shut down your VM.&lt;br /&gt;&lt;br /&gt;6. `VBoxHeadless -s VMNAME` will start your VM in a headless mode (like a daemon) which will listen on the port you specified for RDP connections.&lt;br /&gt;&lt;br /&gt;7. Use an RDP program (I use KRDC on KDE), and set up an RDP connection to &#039;localhost&#039; at your port, i.e. &#039;localhost:port&#039;.  When KRDC asks for extra options, put in &#039;-d @1&#039;  and this will connect you to monitor 1 of the VM.  Adjust resolution as necessary.&lt;br /&gt;&lt;br /&gt;8. Repeat step 7, but change &#039;-d @1&#039; to &#039;-d @2&#039; to connect to the second monitor.&lt;br /&gt;&lt;br /&gt;9. KRDC allows you to full-screen each desktop.  In my setup, I use nvidia-settings to set up twinview, then put a KRDC instance on each desktop, and fullscreen.&lt;br /&gt;&lt;br /&gt;10.  Run HomeKara2, and behold the beauty of success.&lt;br /&gt;&lt;br /&gt;Notes: be careful with sound forwarding on KRDC, as it might cause an echo.  You can just choose to keep sound on &quot;remote only&quot; to fix this.&lt;br /&gt;&lt;br /&gt;-- Interesting little other hack --&lt;br /&gt;&lt;br /&gt;My friend gave me his music videos by putting them on my iPod, along with the program.  I don&#039;t have much room left on my laptop&#039;s hard drive, so I did something somewhat hackish which actually worked.&lt;br /&gt;&lt;br /&gt;1. I mounted the iPod with this long command:&lt;br /&gt;&lt;br /&gt;`mount -t vfat -o rw,nosuid,nodev,uhelper=hal,shortname=mixed,uid=1000,utf8 /dev/sdb1 /media/ALEX_IPOD`&lt;br /&gt;&lt;br /&gt;The real trick here was the shortname=mixed, which makes sure capitalization is done correctly, and the &lt;u&gt;long&lt;/u&gt; vfat names are used.  Weird stuff can happen with the default mode on Kubuntu&#039;s mounter.&lt;br /&gt;&lt;br /&gt;Beforehand, I had set /media/ALEX_IPOD as a shared folder for VirtualBox, so to keep consistency I mounted there again.  I then changed the cdrom&#039;s drive letter to not D: and assigned D: to a particular folder on the iPod, so that the path lined up perfectly with the path listed in the MDB file for the videos.  This worked quite well, so I was able to get away with not modifying the MDB file&#039;s path for videos, and with reading all videos directly off the iPod.&lt;br /&gt;&lt;br /&gt;-- end hack --&lt;br /&gt;&lt;br /&gt;So what did this all look like in the end?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://3.bp.blogspot.com/_vlB73cxVKVI/SZJ0oh34acI/AAAAAAAAAIw/FL3-M3hYIhM/s1600-h/850A0672.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 300px; height: 400px;&quot; src=&quot;http://3.bp.blogspot.com/_vlB73cxVKVI/SZJ0oh34acI/AAAAAAAAAIw/FL3-M3hYIhM/s400/850A0672.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5301427951004838338&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Well OK, later on I fixed the resolutions so that each Windows &quot;monitor&quot; would take up my entire monitor, for both monitors, but this is my setup with my laptop screen and a classic CRT.  Not bad for a day&#039;s work I&#039;d say, and now I can set up haphazard karaoke when hanging out with friends and there&#039;s no place nearby.  Nice!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&#039;1&#039; height=&#039;1&#039; src=&#039;http://res1.blogblog.com/tracker/1504418270400156450-394738123896508563.gif?l=awainzin-foss.blogspot.com&#039;/&gt;&lt;/div&gt; 
    </content:encoded>

    <pubDate>Fri, 13 Mar 2009 03:22:02 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/909-guid.html</guid>
    
</item>
<item>
    <title>Delete Multiple Files</title>
    <link>http://amarok.kde.org/blog/archives/910-Delete-Multiple-Files.html</link>
            <category>xevix</category>
    
    <comments>http://amarok.kde.org/blog/archives/910-Delete-Multiple-Files.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=910</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=910</wfw:commentRss>
    

    <author>nospam@example.com (Alejandro Wainzinger)</author>
    <content:encoded>
    Again, school keeps me busy and away from solving issues, but here&#039;s the most recent thing I&#039;ve been working on.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/&lt;u&gt;vlB73cxVKVI/SRFSSB7lWeI/AAAAAAAAAGc/cwzED9stG_w/s1600-h/delete_amarok.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 241px;&quot; src=&quot;http://1.bp.blogspot.com/_vlB73cxVKVI/SRFSSB7lWeI/AAAAAAAAAGc/cwzED9stG_w/s400/delete_amarok.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5265079909082290658&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_vlB73cxVKVI/SRFSbuvjfDI/AAAAAAAAAGk/TVyaGE8bVW0/s1600-h/warning_delete_amarok.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 241px;&quot; src=&quot;http://1.bp.blogspot.com/_vlB73cxVKVI/SRFSbuvjfDI/AAAAAAAAAGk/TVyaGE8bVW0/s400/warning_delete_amarok.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5265080075730254898&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;(Yes, the dialog isn&#039;t at all final, I just put it there as a placeholder)&lt;br /&gt;&lt;br /&gt;A few collections like the MP3Tunes service, and the local collection, are actually able to delete tracks already!  They just... have no GUI to make it all happen.  Devices like iPods and MTP devices can delete too, but only one track at a time (far from optimal).  So I&#039;m working to bring this ability to all collections alike.  Actually getting this working isn&#039;t too hard, but making the code nice, understandable and maintainable is a bit of a trick.  Luckily I&#039;ve got a pretty good idea now of how I want it done.&lt;br /&gt;&lt;br /&gt;Beta 3 is out =D but still so much left to be done on my end:&lt;br /&gt;- fix MTP track playing, so that the next track properly loads/plays&lt;br /&gt;- add orphaned/stale track checking for iPods&lt;br /&gt;- enhance the Media Devices Applet, and add interface to root item of TreeView for connect/disconnect&lt;br /&gt;- fix cover-related things on iPods (and _possibly&lt;/u&gt; implement it for MTP devices, by popoular request)&lt;br /&gt;&lt;br /&gt;The list goes on, but that&#039;s already enough.  &lt;span style=&quot;font-weight: bold;&quot;&gt;More manpower&lt;/span&gt; for any of these jobs is MORE than welcome.  Do apply =)&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&#039;1&#039; height=&#039;1&#039; src=&#039;http://res1.blogblog.com/tracker/1504418270400156450-7433936749301954174.gif?l=awainzin-foss.blogspot.com&#039;/&gt;&lt;/div&gt; 
    </content:encoded>

    <pubDate>Fri, 13 Mar 2009 03:22:02 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/910-guid.html</guid>
    
</item>
<item>
    <title>Media Devices Applet</title>
    <link>http://amarok.kde.org/blog/archives/911-Media-Devices-Applet.html</link>
            <category>xevix</category>
    
    <comments>http://amarok.kde.org/blog/archives/911-Media-Devices-Applet.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=911</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=911</wfw:commentRss>
    

    <author>nospam@example.com (Alejandro Wainzinger)</author>
    <content:encoded>
    To control connection/disconnection of media devices, along with advanced functionality such as the stale-and-orphaned feature for iPods in Amarok 1.4, some kind of GUI is needed.  One of the discussed long-term ideas is to add functionality into the root item of a treeview, which has its merits in terms of simplicity.  However, imagine that you plug in your device, and want to connect to it.  The collection would have to be present in a kind of dormant state in the collection browser until you hit connect in the root item.  This could work, but it&#039;s admittedly odd to have a &quot;dead&quot; collection sitting around.&lt;br /&gt;&lt;br /&gt;Since modifying the root item of a treeview was beyond my current knowledge, I wanted to play with plasma a bit, and it gave me more leeway, both in terms of  creativity and space, I decided, at least for now, on a Media Devices applet.  Some of you may have seen the ghost of this thing in svn and wondered what the dickens it is, so I&#039;ll explain to you its current functionality first, and then some of my visions for it.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://3.bp.blogspot.com/_vlB73cxVKVI/SOr8f3O_Z4I/AAAAAAAAAFs/LfAAYDQgGhw/s1600-h/applet1.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;http://3.bp.blogspot.com/_vlB73cxVKVI/SOr8f3O_Z4I/AAAAAAAAAFs/LfAAYDQgGhw/s400/applet1.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5254289539614074754&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;This first screenshot shows the applet blank since nothing is plugged in (eventually I want it to say &quot;no devices&quot;).  Then, for instance, you plug in your iPod (and for now, mount it outside of Amarok) and bam!&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/_vlB73cxVKVI/SOr9ARMa5WI/AAAAAAAAAF0/1n8rtP1tPW4/s1600-h/applet2.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;http://4.bp.blogspot.com/_vlB73cxVKVI/SOr9ARMa5WI/AAAAAAAAAF0/1n8rtP1tPW4/s400/applet2.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5254290096338429282&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Notice a row has been added for the iPod, representing an icon for what the device is, a connect button, a disconnect button, and its mount point.  Then you click the connect button and...&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_vlB73cxVKVI/SOr9Xk4OGJI/AAAAAAAAAF8/9eNUkLdG5w4/s1600-h/applet3.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;http://1.bp.blogspot.com/_vlB73cxVKVI/SOr9Xk4OGJI/AAAAAAAAAF8/9eNUkLdG5w4/s400/applet3.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5254290496759404690&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;You guessed it, it connects (notice the iPod collection on the left).  After this, you can work with it like usual, or click the disconnect button and the collection will poof away back to things as you see them in the 2nd screenshot, allowing you to eject the iPod.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;The Obvious:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;- This is what I would call alpha.  Yes, the icons are a bit inappropriate and admittedly borrowed, but I&#039;m sure I can get someone magnificent to create beautiful specialized icons later on (*wink wink*)&lt;br /&gt;- There are still advanced features missing (like showing battery % etc.), but again, this can come later without much trouble once the base concept gets off the ground&lt;br /&gt;- Usability!  How will people know to go open the media devices applet the first time they try out Amarok with their device?  I&#039;m thinking to have the applet open itself on detecting a compatible device for the first time and getting focus to get the user&#039;s attention&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;The Vision:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;So back to the stale and orphaned concept.  In 1.4, you had to look at orphaned/stale tracks along with your &quot;normal&quot; tracks in the media browser.  Now, you could have a scrollable list each of the stale and orphaned tracks, with the same functionality as before, but now it&#039;s not in your way!  You can continue to browse through your iPod tracks and the orphaned/stale tracks at the same time.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;The conclusion:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Well this all sounds quite well and dandy, but if I have a good idea of how this is going to work, and basic functionality for connect/disconnect is already implemented on my personal box, why don&#039;t I commit and get all the rest of the bells and whistles going?  The same lame excuse: life is busy.  Also I&#039;d like to commit it in a slightly prettier more usable form with less of the obvious bugs in there. &lt;br /&gt;&lt;br /&gt;That said, if anyone out there wants to help out with this, let me know, and I can even guide you through the code to get you going.  For now though, I&#039;ll chug away at it in my spare hours.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&#039;1&#039; height=&#039;1&#039; src=&#039;http://res1.blogblog.com/tracker/1504418270400156450-4083099057769287429.gif?l=awainzin-foss.blogspot.com&#039;/&gt;&lt;/div&gt; 
    </content:encoded>

    <pubDate>Fri, 13 Mar 2009 03:22:02 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/911-guid.html</guid>
    
</item>
<item>
    <title>&quot;Absence,&quot; Akademy and Devices</title>
    <link>http://amarok.kde.org/blog/archives/912-Absence,-Akademy-and-Devices.html</link>
            <category>xevix</category>
    
    <comments>http://amarok.kde.org/blog/archives/912-Absence,-Akademy-and-Devices.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=912</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=912</wfw:commentRss>
    

    <author>nospam@example.com (Alejandro Wainzinger)</author>
    <content:encoded>
    &lt;span style=&quot;font-weight: bold;&quot;&gt;So I apparently haven&#039;t blogged in a month.&lt;/span&gt;  Sorry about that, it&#039;s not that I have nothing to say, just that I&#039;m usually busy doing that I don&#039;t really take the time to talk about it.  That said, I&#039;ll still keep this short as I myself like to read short blurbs from people who aren&#039;t well-known.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Akademy.  Awesome.&lt;/span&gt;  Of course I got to meet a good amount of the &lt;span style=&quot;font-weight: bold;&quot;&gt;Amarok&lt;/span&gt; people I often talk to, which was the highlight of the trip for me really.  It&#039;s one thing to discuss over IRC, and quite another to have breakfast together, chat about things non-Amarok as well as Amarok in person, and in general hang out.  I also got to meet a lot of other people, like &lt;span style=&quot;font-weight: bold;&quot;&gt;Will Stephenson&lt;/span&gt; who donated an MTP device for development (who I met while waiting in the waffles line) [p.s. thank you so much again for it].&lt;br /&gt;&lt;br /&gt;Most exciting stuff non-Amarok: &lt;span style=&quot;font-weight: bold;&quot;&gt;Gallium3D&lt;/span&gt;... just wow, that&#039;s all I can say.  &lt;span style=&quot;font-weight: bold;&quot;&gt;Step&lt;/span&gt; was pretty awesome too, though my physics is really bad.  &lt;span style=&quot;font-weight: bold;&quot;&gt;Marble&lt;/span&gt; is exciting stuff, but in Openstreetmap there remains much to be mapped so it may be a while before it becomes truly amazing.  There&#039;s more, but these are the ones that stuck out most in my mind right now.&lt;br /&gt;&lt;br /&gt;So, &lt;span style=&quot;font-weight: bold;&quot;&gt;Media Device Status Report&lt;/span&gt;.  As you can see, I haven&#039;t blogged so obviously nothing has happened.  &lt;span style=&quot;font-weight: bold;&quot;&gt;Lies&lt;/span&gt;.  MTP playing off the device is now supported, a bunch of random bugs have been fixed, and an applet is under way to deal with configuration etc. of devices.  Don&#039;t worry, this is only for connect/disconnect and options and whatnot, the configuration of devices will still be almost entirely automated.  I&#039;m trying to figure out a way to make it more obvious that for media devices you need only plug in your device essentially, for it to just work.  I think that I&#039;ll try to push for the Media Devices applet to be one of the initial defaults loaded, and it&#039;ll show a text like &quot;plug in media device to play from it&quot; or something.&lt;br /&gt;&lt;br /&gt;Why have I been so slow at coding?  The truth is I&#039;ve been held in Guantanamo for the last couple of weeks.  And.... again, &lt;span style=&quot;font-weight: bold;&quot;&gt;lies&lt;/span&gt;.  No, between random life, then Akademy in Belgium (which I spent most of my time bugfixing and socializing), and now I&#039;m in Japan where it&#039;s hard to stay on the computer too long, I haven&#039;t been that able to.  But I&#039;ll be back in the USA Sept. 2, so starting then things should pick up a bit more hopefully.&lt;br /&gt;&lt;br /&gt;On that note, cheers from Japan!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&#039;1&#039; height=&#039;1&#039; src=&#039;http://res1.blogblog.com/tracker/1504418270400156450-4503402751492895181.gif?l=awainzin-foss.blogspot.com&#039;/&gt;&lt;/div&gt; 
    </content:encoded>

    <pubDate>Fri, 13 Mar 2009 03:22:02 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/912-guid.html</guid>
    
</item>
<item>
    <title>MTP File Management and iPod Covers</title>
    <link>http://amarok.kde.org/blog/archives/913-MTP-File-Management-and-iPod-Covers.html</link>
            <category>xevix</category>
    
    <comments>http://amarok.kde.org/blog/archives/913-MTP-File-Management-and-iPod-Covers.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=913</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=913</wfw:commentRss>
    

    <author>nospam@example.com (Alejandro Wainzinger)</author>
    <content:encoded>
    So MTP file management (copying/deleting) has gotten implemented, and works well on all 3 devices I tested on.  Still a lot of polishing left to do as far as interface goes, and some threading to not stall Amarok at key points, and it should be good to go.  One thing I&#039;m having issues with is copying files directly from an MTP to an iPod and vice versa, but will investigate this later as this is a bit more advanced.&lt;br /&gt;&lt;br /&gt;&lt;technical babble=&quot;&quot;&gt;&lt;br /&gt;&lt;br /&gt;So, I had a bit of an epic struggle with a few things over the last day or so.  See, libgpod can only retrieve covers in the form of GdkPixbuf structs, but so as to not force the GdkPixbuf dependency on people, they return it as a gpointer which you can then choose to cast if you want to use GdkPixbuf.  Sounds great, right?  No problem...&lt;br /&gt;&lt;br /&gt;... except for having CMake pull in the dependency.  So as it turns out, there&#039;s no built-in module for gdk-pixbuf library.  So, I decided to create my own as I did with libgpod, except when I pulled it in, a certain function wasn&#039;t present.  Odd... hm.  Well as it turns out, this function is only present in the gdk-pixbuf library that resides in gtk.  Great!  There&#039;s a CMake module for GTK, all should be fine this time, yes?  No.  The GTK module in CMake pulls in GTK1, and gdk-pixbuf is in GTK2.  So I end up modifying the gdk-pixbuf module I made before, learning lots about CMake along the way, and finally get it compiling.&lt;br /&gt;&lt;br /&gt;Long story short for the next part, the README in libgpod didn&#039;t really work for me for setting up SysInfo for my iPod, and I accidentally tripped on a feature from the old Amarok which set it up right, after I modified some permissions.  Wonderful, yeah?&lt;br /&gt;&lt;br /&gt;Wrong!  Turns out that iTunes and libgpod handle covers in two different ways, and so I have to cater to both of them.  This turned out to be a bit of a pain, but at last, I finally got a size-distorted but correct solution:&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_vlB73cxVKVI/SIygoU9Rg5I/AAAAAAAAAEw/epmAjsKoB8Q/s1600-h/amarokuglycovers.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;http://1.bp.blogspot.com/_vlB73cxVKVI/SIygoU9Rg5I/AAAAAAAAAEw/epmAjsKoB8Q/s400/amarokuglycovers.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5227729882151224210&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;The m-flo cover was set by me using libgpod via Amarok, and the Maná cover was set by iTunes.  I&#039;m going to fine-tune the sizes later, and all should be peaches and cream.&lt;br /&gt;&lt;br /&gt;That&#039;s all for now.  One note though about the interface, which right now is either non-existent or bad: likely going to be making an applet which does all the fun stuff that A1 did for media devices, including: connect/disconnect, % free space, possibly a queue, and if supported, even % battery level!  That however, is a ways away from coming true, but do stay tuned.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/technical&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&#039;1&#039; height=&#039;1&#039; src=&#039;http://res1.blogblog.com/tracker/1504418270400156450-2943523552453387344.gif?l=awainzin-foss.blogspot.com&#039;/&gt;&lt;/div&gt; 
    </content:encoded>

    <pubDate>Fri, 13 Mar 2009 03:22:02 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/913-guid.html</guid>
    
</item>
<item>
    <title>MTP Support Arrives</title>
    <link>http://amarok.kde.org/blog/archives/914-MTP-Support-Arrives.html</link>
            <category>xevix</category>
    
    <comments>http://amarok.kde.org/blog/archives/914-MTP-Support-Arrives.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=914</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=914</wfw:commentRss>
    

    <author>nospam@example.com (Alejandro Wainzinger)</author>
    <content:encoded>
    &lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://3.bp.blogspot.com/_vlB73cxVKVI/SIlMzsQhlwI/AAAAAAAAAEg/127qMEcNwlc/s1600-h/amarokmtp1.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;http://3.bp.blogspot.com/_vlB73cxVKVI/SIlMzsQhlwI/AAAAAAAAAEg/127qMEcNwlc/s400/amarokmtp1.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5226793293477680898&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Caption: 2 MTP devices connected, and songs playing from iPod&lt;br /&gt;&lt;br /&gt;This is a bit overdue, but initial support for MTP devices has arrived.  To use it, you require limbtp &gt;= 0.3.0 installed on the system, and a device supported by libmtp of course.&lt;br /&gt;&lt;br /&gt;Part of the reason this took so long is that I&#039;m starting to notice a lot of potentially reusable code, and will probably soon refactor to reflect this.  MTP devices are strange beasts, because their filesystem can&#039;t be directly accessed.  As a result, Amarok 1 and Windows Media Player et al can only do file management of tracks on these devices, not actually play directly off of them.  I&#039;m going to be working on an idea that allows playing off of them to be possible, because let&#039;s face it, A2 is an audio player, not just a file manager.&lt;br /&gt;&lt;br /&gt;Thanks again to everyone who donated MTP devices to the Amarok group.  You&#039;re the ones who make this possible.  Support is still pretty basic, so please don&#039;t file bugs on this yet, but be ready to at some point in the semi-near future.&lt;br /&gt;&lt;br /&gt;Edit: Snapshot of 3 Mentioned Devices&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_vlB73cxVKVI/SIlNRtcvonI/AAAAAAAAAEo/7G4xYRm2RIs/s1600-h/850A0367.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;http://1.bp.blogspot.com/_vlB73cxVKVI/SIlNRtcvonI/AAAAAAAAAEo/7G4xYRm2RIs/s400/850A0367.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5226793809193443954&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&#039;1&#039; height=&#039;1&#039; src=&#039;http://res1.blogblog.com/tracker/1504418270400156450-8064467454605831613.gif?l=awainzin-foss.blogspot.com&#039;/&gt;&lt;/div&gt; 
    </content:encoded>

    <pubDate>Fri, 13 Mar 2009 03:22:02 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/914-guid.html</guid>
    
</item>
<item>
    <title>MTP Incoming and Ipod File Deletion Support</title>
    <link>http://amarok.kde.org/blog/archives/915-MTP-Incoming-and-Ipod-File-Deletion-Support.html</link>
            <category>xevix</category>
    
    <comments>http://amarok.kde.org/blog/archives/915-MTP-Incoming-and-Ipod-File-Deletion-Support.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=915</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=915</wfw:commentRss>
    

    <author>nospam@example.com (Alejandro Wainzinger)</author>
    <content:encoded>
    First off, thanks to everyone who has responded to the request for devices so far, and those to come!  Sorry if the replies to the e-mails take a bit, but I&#039;m probably working on Amarok ironically enough.  Some of the devices offered have already been sent, and soon we&#039;ll see the first signs of MTP support on Amarok 2 =D .  To get this question out of the way, &lt;u&gt;yes&lt;/u&gt;, of course we&#039;re going with libmtp 0.3, it just makes sense to.  Look forward to this MTP users, and thanks again to all donors of devices!&lt;br /&gt;&lt;br /&gt;Summary of Ipod News:&lt;br /&gt;&lt;br /&gt;- You can now delete files one at a time from the iPod&lt;br /&gt;- You can now &quot;edit&quot; tags, although changes won&#039;t save yet (implementing next)&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/_vlB73cxVKVI/SHrSIqHZSzI/AAAAAAAAAEQ/MbjYegaK5kQ/s1600-h/amarokremove.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;&quot; src=&quot;http://4.bp.blogspot.com/_vlB73cxVKVI/SHrSIqHZSzI/AAAAAAAAAEQ/MbjYegaK5kQ/s400/amarokremove.png&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5222717764075604786&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After fighting for a while with how to create a custom &quot;remove&quot; button, users now have access to deleting files on the ipod! ... one at a time, hah, looks like I have to do some more magic before you can do it with multiple files at once.  Also, the icon for &quot;remove&quot; doesn&#039;t seem to make sense, and I&#039;m fixing this soon too.  Why there isn&#039;t a built-in capability to remove from a collection when there&#039;s built-in support for it in CollectionLocation?  Probably nobody got around to it yet.  If nobody does it after this summer, I&#039;ll implement it so that people don&#039;t have to go through this again, haha.  &lt;br /&gt;&lt;br /&gt;Turns out that because pre-made actions are in the CollectionTreeView, they can do all sorts of magic like... know which items are selected, so that they can work with multiple things at once.  I&#039;ll have to look into this next.&lt;br /&gt;&lt;br /&gt;Anyway, editing ipod tags will no longer crash your Amarok, and they&#039;ll even update in the view!... but not in the ipod&#039;s database, so a restart of Amarok will clear those changes, don&#039;t be fooled!  It won&#039;t be too hard to port over tags support I&#039;m sure.  Er.. wait, I&#039;ve said &quot;it shouldn&#039;t be too hard to...&quot; way too many times already, and I&#039;m always surprised when it turns out to be a pita, haha.&lt;br /&gt;&lt;br /&gt;The rest of the stuff I mentioned in previous posts has not yet been dealt with.  No need to ask about the progress, it&#039;ll get here fairly soon.  I&#039;ve tried to concentrate on core features (tag editing, file management) for now.  Yes, album covers and podcasts are wonderful, and they&#039;re soon to be here.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&#039;1&#039; height=&#039;1&#039; src=&#039;http://res1.blogblog.com/tracker/1504418270400156450-7562464047817391743.gif?l=awainzin-foss.blogspot.com&#039;/&gt;&lt;/div&gt; 
    </content:encoded>

    <pubDate>Fri, 13 Mar 2009 03:22:02 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/915-guid.html</guid>
    
</item>
<item>
    <title>Ipod File Transfer Support Arrives</title>
    <link>http://amarok.kde.org/blog/archives/916-Ipod-File-Transfer-Support-Arrives.html</link>
            <category>xevix</category>
    
    <comments>http://amarok.kde.org/blog/archives/916-Ipod-File-Transfer-Support-Arrives.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=916</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=916</wfw:commentRss>
    

    <author>nospam@example.com (Alejandro Wainzinger)</author>
    <content:encoded>
    After an all-nighter porting over file-related code and some hours trying to make it work with CollectionLocation, we have the first signs of file transfer to ipod support available.&lt;br /&gt;&lt;br /&gt;Details:&lt;br /&gt;- AA format not yet supported due to some Audible strangeness&lt;br /&gt;- Copying might seem slow right now (as in, takes 3-5 seconds to copy about 12 tracks), but I will fix this pretty soon as I know the cause&lt;br /&gt;&lt;br /&gt;How to copy to iPod?&lt;br /&gt;1.) Have iPod plugged in and mounted&lt;br /&gt;2.) In Amarok, an iPod collection should show&lt;br /&gt;3.) Either right-click an artist/album/track from another collection (e.g. local collection), or drag into the middle area to bring up the PUD.  Hover over Copy to Collection, and select your Ipod.&lt;br /&gt;4.) The tracks should then be being added.  Expand your ipod collection to confirm that the tracks have been added and are able to be added to the playlist and played.&lt;br /&gt;5.) Confirm that the songs can be played from the iPod itself&lt;br /&gt;&lt;br /&gt;Forthcoming but not yet here:&lt;br /&gt;- Album Cover support&lt;br /&gt;- Podcast support&lt;br /&gt;- Tag editing support&lt;br /&gt;- Playlist support&lt;br /&gt;- Pretty interface for file transfers &amp;c.&lt;br /&gt;&lt;br /&gt;Also, there&#039;s a &quot;hang on exit&quot; bug right now, but don&#039;t be afraid to &quot;killall -9 amarok,&quot; as it won&#039;t affect your iPod.  Sorry for the inconvenience, I&#039;m tracking that one down fairly soon too.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&#039;1&#039; height=&#039;1&#039; src=&#039;http://res1.blogblog.com/tracker/1504418270400156450-9105119850797586667.gif?l=awainzin-foss.blogspot.com&#039;/&gt;&lt;/div&gt; 
    </content:encoded>

    <pubDate>Fri, 13 Mar 2009 03:22:02 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/916-guid.html</guid>
    
</item>
<item>
    <title>Wanted: Portable Media Devices</title>
    <link>http://amarok.kde.org/blog/archives/917-Wanted-Portable-Media-Devices.html</link>
            <category>xevix</category>
    
    <comments>http://amarok.kde.org/blog/archives/917-Wanted-Portable-Media-Devices.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=917</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=917</wfw:commentRss>
    

    <author>nospam@example.com (Alejandro Wainzinger)</author>
    <content:encoded>
    So iPod support should be pretty well set by this next weekend, and the next thing on my list is support for MTP devices.&lt;br /&gt;&lt;br /&gt;So, what&#039;s an MTP device?  MTP = Media Transfer Protocol, a protocol Microsoft came up with for media devices.  Examples of devices that use it?  Pretty much every Creative Zen, iRiver, Samsung and Sandisk media device you can think of, which is why the support for these devices is so important.&lt;br /&gt;&lt;br /&gt;But I&#039;m at an impasse, since I don&#039;t actually &lt;u&gt;have&lt;/u&gt; any of these devices.  The lack of devices is actually a pretty common issue for the Amarok project, which is where we come to you =).  If you have access to a media device which you can donate for development , please let the Amarok team know at: &lt;a href=&quot;mailto:amarok-device-donation@emailgoeshere.com&quot;&gt;amarok-device-donation@emailgoeshere.com&lt;/a&gt;.  A list of devices that the project is looking for is available &lt;a href=&quot;http://amarok.kde.org/wiki/Wanted_Devices&quot;&gt;here&lt;/a&gt;.  This will ensure that the people with these devices are happy people when Amarok 2 rolls around.  Of particular urgency to the 2.0 release is the need for an MTP device (see list of MTP devices: &lt;a href=&quot;http://libmtp.sourceforge.net/index.php?page=compatibility&quot;&gt;here&lt;/a&gt;)  Any of those devices will be a great help.&lt;br /&gt;&lt;br /&gt;And, once I have one of those devices in hand and support starts rolling out, I ask anyone who has an MTP device to check out a copy of Amarok 2 from your friendly neighborhood svn server to help me test things out and make support be &lt;u&gt;good&lt;/u&gt; (see: &lt;a href =&quot;http://amarok.kde.org/wiki/2.0_Development_HowTo&quot;&gt;here&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Lastly, thanks in advance to all of you!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&#039;1&#039; height=&#039;1&#039; src=&#039;http://res1.blogblog.com/tracker/1504418270400156450-6515102694064494067.gif?l=awainzin-foss.blogspot.com&#039;/&gt;&lt;/div&gt; 
    </content:encoded>

    <pubDate>Fri, 13 Mar 2009 03:22:02 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/917-guid.html</guid>
    
</item>

</channel>
</rss>
