More mDNS madness, this time Qt4.

Ok, so after my last post about mDNS I haven't touched it since the API really put me off. But wanting a sexy mDNS browser in my newly founded Qt4 client I took a bite in the bad Apple and started to write a C++ wrapper class for mDNS (bonjour). After reliving all the madness of before I managed to do a pretty neat class. It works just fine on MacOSX (where bonjour is default), Linux (with avahi-dnssd-compat) and probably Windows too (if you download and install the lib from Apple).

If you ever need the code, go here: implementation and header.

Here is the result: Esperanza server browser window.


Post-honeymoon review of the black MacBook

By popular demand I will write the follow-up on my old post.

To make a long story short: 5 months later I am still in love.

I compile xmms2 and c++ code so much faster, make -j 2 really makes your day on a dual-core system. The overall speed is still great, but I have also understood by talking to other macbook owners that you should put in as much memory as possible. Using less then 1Gb in two sticks seems to be a waste of CPU. This might not be true for other OSes then MacOSX, but I don't know since I never installed anything else.

The glossy screen doesn't really create any visible problems. The widescreen is of course great for movies and I don't really have anything negative to say about the screen in whole.

Some of the things that I have had a problem with, the airport in particular has been corrected with macosx updates. The current version 10.4.8 seems to have fixed all things I have been irritated at. The heat was a issue until recently when they released another update to the firmware and it has gotten a lot better.

The battery-time is about 4 hours which is very ok for a powerful laptop with a big screen like this.

The only negative thing I have noted is a quirky sound when I move the screen, it seems to be related to that the whole thing is in plastic :-) But I don't really mind.

Haven't noted any discoloration or any high-frequent sounds. I take it that the black model doesn't have the same problems as the white one with discoloration, and the sounds might just be me that is deaf, but I can't hear anything that is annoying.

All in all, the macbook is a very fast and nice laptop. It's a tad to big for laptop-on-airplane but otherwise I happily trade the extra size for the nice screen. I have also been blessed and have not encountered any of the "normal" problem for this line. I recommend anyone that want a mac computer to go for the macbook. The only reason I see you would like a pro over a macbook is that you want the better graphics card for games, for everyday use it works just fine.


blogger beta

So I upgraded my blogger profile to Blogger Beta, seems to include a lot of features I have missed.

But it also reseted my RSS feed, sorry to all that is following it.

More from Mountain View #1 - Summer of Social Integration?

One thing that really struck me when I was at the mentor summit in Mountain View was that Summer of Code is really more about social integration and contact making than I ever imagined. When I carried out the project within XMMS2 I saw it as a way to get cool features incorporated into XMMS2 and some kick-ass code. After spending some time with other mentors (and former students) I realized how this is only half the truth.

GSoC is really about bringing bright people and coders that have not been exposed to open source into our communities, this is where the long time benefit is getting realized. If we get some new non-FLOSS coders into our little group and can keep them there we have the real benefit of the program.

For my part I will surely look at the students in a very different perspective next year.

I would like to say that GSoC is 70% about social integration and 30% of code. Maybe it's time to rename it to Summer of Social Integration?


Google Summer of Code Mentor Summit, Mountain View, CA

For the last week I have been in California for some work and now for the Summer of Code Mentor Summit. If you don't know what Google Summer of Code is you should probably look here. Google wanted a follow-up on their program and invited two people from each successful organization to Mountain View, CA to discuss between mentors how we can improve this to next year.

It has been a wonderful day at Googleplex with lot of sessions, meetings and cold soda. We really got to discuss all the problems that we encountered during the program and made some real progress on how we want to work it out next year. It's funny how much energy it gives you to discuss open source things with open source developers. I am really looking forward to mentor students next summer and I really think I can be a better mentor by really treating the students as students and not "yet-another-opensource-developer".

Apart from discussing the SoC program I found some really nice guys that I got the chance to talk code with. Me and Seb Ruiz (from Amarok fame) had a very productive talk on how we could help each other and share code / standards between XMMS2 and Amarok. Great things might come from this. And I had a lot of time to spend with Ralph Giles from Xiph talking about everything from an XMMS2 ogg-demuxer and the future of vorbis.

All in all I had a wonderful time and I am really happy that I had the chance to be here with all of you.

p.s. Chris DiBona uses XMMS2, cool :-) d.s.


Bindata API in Gonzo

New exciting (can you feel it) releases from us! XMMS2 - Dr. Gonzo was released today. It's a feature addition release which contains DAAP streaming plugin and Monkeys Audio decoder and more.

Of course the cool things happens under the hood. We have added a framework for storing binary data on the server (primary for use of cover art). This is called bindata. The API can be used by plugins and by clients, currently only id3v2 and faad plugins have added support for coverart extraction. Plugins use the xmms_bindata_plugin_add() call that returns the md5 hash for the data. The hash can later be used to extract the covertart from a client. The hash is stored in the medialib as "picture_front".

The clients can easily show coverart with this method, a simple example with python-like-code:

if mediadata.has_key("picture_front"):
pic = xmms.bindata_retreive(mediadata["picture_front"])
Clients can also add coverart by calling bindata_add() with the data and the length, this will return the hash that is suitable to save in the picture_front property. This is already done by xmms2-covers that will fetch coverart from several different sources for your collection.

Clients can also of course remove bindata by calling bindata_remove() with the hash as argument.

We hope that the addition of this API will be giving coverart prettyniess to all clients.


Pre-testing for DrGonzo

Dr.Gonzo is looking really sweet. The details here: http://wiki.xmms2.xmms.se/index.php/Release:DrGonzo

and contribute testdata for us by following the instructions on http://test.xmms.se/

and remember to file bugs!


mDNS madness

I have spent the weekend trying to get my head around Apples implementation of mDNS. In my efforts I have concluded two things:

  1. The code-monkey at Apple that created the API was probably high on LSD
  2. I needed to create a wrapper as soon as possible to get away from the madness.
The result is GLib mDNS Wrapper 0.1. Download it here: http://exodus.xmms.se/~tru/gmdns/

This will allow you to integrate the DNS-SD API into GMainLoop and give you a somewhat more understandable API. It will only do browsing for now. Maybe I add more features in the future, maybe not.

Maybe this will save some frustration for someone in the future.


Qt4.2 Technology Preview

As many of you might already know, I am a strong Qt4 follower. The latest TP for 4.2 looks very very good. It's funpacked with a lot of new nifty features that I would like to start using in my programs allready :) Here is some of the things I know I can use directly:

* The "clearlooks" theme. This makes Qt4 look like GNOME. This will finaly (hopefully) stop all the whining about how "ugly" Qt4 is.
* GMainLoop integration. Qt4 programs can now share mainloop with Gtk Programs, great for interoperbillity.
* QCompleter. A completion framework that can make your applications complete the text input.
* QFileSystemWatcher. Wrapper around KQueue, Inotify and friends, since gamin suck nuts I really want this.
* Also the possibility to customize your widgets with CSS like syntax.

I will probably start using a lot of these features whenever PyQt is available for 4.2.



Just after I released DrEvil I found this nifty little program included in XCode called MallocDebug. I thought, hey, let's take it for a ride on XMMS2. Man what a ride. In under 20 minutes I found four memory leaks that has been eluding me for a long time. I just love Apple when they do things as right as this. The program seems to work with libc in OSX to track allocations and then show it to you in a not-so-intuitive GUI, but when you finaly learn how to use it, it's great. You can sort the leaks on counts or used memory which makes it easy to understand if it's really a leak or just a one time problem. To bad I discovered it 20 minutes after a release :-)


Black MacBook

So I got myself a black MacBook and considering all the negative press this piece of equipment has gotten lately I got a bit worried after I ordered it. Now I have had it for a couple of days and I just wanted to share what I found out.

Yes it does get hot, no it doesn't get hotter then my PowerBook 12" that I had before. Dunno why people are whining about that.

It's SOOO fast. This computer out-preforms most laptops I have owned, ever. I really like how my macosx is all snappy and fun again!

Glossy screen
I like it! It gives nice colors, good viewing angels and it's really nice when I look at movies. Widescreen is a big plus too :)

Yes the black makes it more sexy, I promise :-) Keyboard is as good as on my Powerbook, no problems here.

I am happy with this computer, I will get back to more information when the honeymoon phase is over, but I dooooo like it. No outstanding problems for now.


Summer of Code and Dr. Evil Testing.

I am mentoring two Summer of Code projects. Since we are still very early on I can't say anything about the progress, but I can comment on the projects.

TurboX2 - By DraX, is a webbased AJAX client. My aim for the end of the summer is to have my girlfriend use and like turbox2. :-) Since she is going to live with me I must have her stop using Windows Media Player for her own small speakers.... So the idea is that she is going to use TurboX2 that is running on my Mac Mini. Right now I am experiencing some really wierd preformance problems that DraX can't reproduce. I hope we will solve this pretty soon.

DAAP support
- by Cole Thompson. DAAP is the protocol that iTunes use to exchange music between two instances of iTunes, so that you can stream and play your friends music (if he allows you too). Adding this to XMMS2 would be cool since you will be able to share music with iTunes user and also with other XMMS2 users.

I have a good feeling about both my students and I hope to be able to update on their progress after the 8th of June when we have our first checkpoint.

Oh, and the first Release Canidate of Dr. Evil is out there now. I think you will find it a even better and cooler version of XMMS2. Please give it a try and donate test data.


DrDolittle and Random hacking.

Hello everyone. It's blogging time again.

We released DrDolittle the other day. Check it out, it has some very fancy fixes and feature additions.

I have also done some random hacking lately.
  • Promoe - A winamp2 skinable XMMS2 client. We are hacking it good and hopefully it will fill a void that we had in the community.
  • Last.FM tool - It will get information about top rated entries over at last.fm and create XMMS2 playlists of it.
  • Music Applet - A XMMS2 proxy for the Gnome Music Applet. This fits fine into your Gnome Desktop. It's still not in the authors main branch, but I hope it will be soon :)
Have fun with XMMS2 :-)


XMMS2 0.2 DrCox

Get your dope at http://sf.net/projects/xmms2.

Now the fun starts.


MacOSX sweeties.

I've done it. It's a fulhack but it's working (at least for me).

Instead of fiddeling with fink, scons and python in macosx you can now download xmms2 binaries for MacOSX tiger! I have created a .pkg file for DrBombay that will install all the things you need.

Beware! It's not tested that much. but it should work (since all macs are almost identical).

Download it and test it here!



Enjoy another release by the XMMS2 team. This one fixes most critical issues found in DrAlban, except one that was found like a couple of minutes after the release by Anders. Bleh ;) It's an old bug that could lead to a deadlock in the IPC layer, it happens very seldom, so don't be alarmed.

I have not been that much involved in the DrBombay release due to real-life issuse. I am now situated in Santiago de Chile instead of Stockholm. I will live here for a year. This doesn't mean that I have quit worked on XMMS2 just that before I have everything in order over here it's kind of crazy.

Stay tuned for next release of XMMS2 which will be DrCox, we are still debating what should be included and not. Feel like contributing? Join our IRC channel and start the patching.