Showing posts from 2008

This blog makes money... erm gifts!

I lately discovered CuriousInventor as they sell some quite interesting diy kits like the touch strip LED display that looks perfect for synthesizer controlling to me (Hope to get one for christmas). But the really interesting thing to me is that you get a PanaVise Junior Clamp for free if you link them from a page with Google PageRank of 2 or higher (this page had 3, when I checked). So lucky me, I get a gift worth 18$ at their shop for free. Who said making profit from the web would be hard? ;)

It's done

Finally Summer of Code 2008 is over for me and it has been good. Although I had a lot to do this summer, I can say that I really enjoyed working on my project. So thanks to Google, Musicbrainz and Philipp for his mentoring.


I made a little screen cast showing my project in action:

Implementing an finite state machine

I have to confess that informatics has to offer some really useful concepts. One of them is the finite state machine. Basically it works like this: The system is in a certain state. Then you have transition matrix that contains the condition for a transition from one state to another. If the update() function is called matrix conditions are checked. If a conditions is fulfilled for the current state a transition is done and the system enters the new state. Here is the current transition matrix:

The states used are:
Init: asks the user to drag in some filesadd_files: at least one file dragged into_many_files: over fifty files dragged in. Tells the user that less would be better but doesn't force him to do soselect_ungrouped: asks to select the "ungrouped cluster"choose_method: ask to put mouse over scan or lookup to get an detailed description of the two methodsexplain_lookup: As it says, explains the lookup process, advantages and disadvantagesexplain_scan: same hereproces…

Second part started

I'm glad the wiki thing worked and I'm already working on the in application support part of my project.

The goal is to guide a first time user through the process of tagging. This will be accomplished by a little box above the two main panels that provides information on what to do next automatically and based on the users action.

Although I realized that there a many ways users are working with Picard, I decided to go a simple way that should work for most users. As the user advances in using Picard, he'll find his own favorite way of tagging.

Help me to improve support texts

under the hood the wizard now is quite finished. But as I'm not a native English speaker I need your help at improving the support texts given inside the wizard.

They are, as Robert stated a bit to formal and stiff.

I really would be glad if some of you could have a look at the wiki page, where you can edit the texts.

Midterm evaluation is near

It's already some time ago that I last posted an update. Doing something really periodic seems to be my week point.
The time of the midterm evaluation has finally come. This means I have to fill a survey on how things are going for me and my mentor. I have to say, that everything seems to be alright. The Wizard part of my project is quite finished despite of some smaller fixes and a bit code cleanup. Here you can see it in it's full beauty:

From the last time I posted changed that it now has an functionality to sort out duplicates in various manners. Another thing is that the wizard can be disabled to show up on when starting Picard. On the other hand it can be started from the menu now. If one clicks cancel without completing it one is also asked if it should show up the next time Picard starts. This should be enough to prevent the wizard from annoying long-term Picard users.


Here you can see my work-in-progress of the first run wizard. The help texts still need to be improved but the rest basically should work. Dependent on if you choose "Custom format" in page 3 (unfortunately hidden on the screen shot, but is within the preset list) you get page 4 displayed. The bottom right dialog appears if you hit insert field in the custom format dialog and displays you a choice of fields you could use.
Maybe one should change the background color of the help texts to make them distinguishable from ordinary text widgets.

So, was quite a bunch of work so far and I hope it payed out.

official coding stated

This week the official coding started. An monday Philip and I had a little chat on how I should proceed from now.
The first thing is to integrate the prototype on which I worked on in the pre-coding time into Picard itself.
Therefor I brached Picard on lauchpad. So feel free to check out my working copy of picard. Just keep in mind that you will also need the latest version of Mutagene to run picard's trunk. (Ubuntu folks go here)

Wizard: File handling setup

So, being back from London (was really cool meeting all those people) I started coding.
I decided to start with the first run settings wizard that basically sets up the things that are accessible from the settings dialog too. Additional I'm trying to make the file naming easier by providing an overview of the existing scripting variables taken from the wiki. Here comes up a question I'm just think about: Should I save the description in a local plaintext file or should it be pulled from the wikipage? The second option would be nice on the one hand as the wikipage is easy to extend by non-coders, but everything could also break more easily, too, e.g. by changing the formating.

Another idea that might be interesting to put on my schedule is the posibility of downloading and installing plugins available for picard but not included for e.g. legal reason using the wizard.

Diving into pyQt

I started learning pyQt and as far as I can tell I'm quite happy with my book. While I didn't have this big expectations on the book reading it is a quite a joy.

The author starts by introducing python itself, but in a way also interesting to people experienced with python. Of course there are mentioned all the basic concepts in python but also some less known topics like things that are new in python 2.5 and even 2.6.

So now I'm at the point of general principles on hand-coded dialog layout and the signal and slot concept. While having learned pyGtk and wxWidgets more from reading the reference it is really nice having everything introduced by well explained code examples.

timeplan update

Here is the updated time plan for the PicardQt Wizard:

Total duration (Week numbers):
21 - 33

21, 22

Sample Application:
23 - 27

mid term Evaluation

Real Application:
28 - 32

Cleanup and other things:

ps: please someone write a gantt chart widget!

Starting up...

I finally decided to buy the book "Rapid GUI Programming with Python and QT. The Definitive Guide to PyQt Programming" by Mark Summerfield. Actually there are not many choices if you're looking for something up to date.

Thinking on what might be the best way to introduce the user to Picard it came to my mind, that I maybe should choose a more visual way based around screen shots. I came to this conclusion while looking at myself always clicking away these more annoying than helpful "Tip of the day" dialog boxes when starting for example GIMP. But I will see how this could fit together when starting with the actual dialog outline while practicing some pyQt.

Accepted for SoC 2008

Hi, I finally got accepted for Google's Summer of Code 2008. One interesting thing is, that I my semester are two more SoC participants, so the University of Regensburg probably has one of the highest rate of participants at all.

For SoC I plan to update my blog about once a week, to allow people to keep track of my progress on creating "A Wizard for PicardQt". PicardQt is a quite innovative mp3 tagger using the Musicbrainz database run by the Metabrainz foundation. From the software side it is written in python and using Qt I really would recommend it to everyone who would like to have a clean and structured music collection.

The purpose of the Wizard is, in short, helping new users to set up PicardQt correctly and provide help on further steps after.

So having mentioned Qt, this will be my first investment in the project: Buying a book on Qt.
As I did stuff with wxWidgets and Gtk using the reference was ok, but a book is simply more comfortable if you don't have a mult…

OpenDNS Fritzbox Howto

While I did some research on how getting this to work I saw many people trying this without success. Here is the definitive guide on how you use OpenDNS with your Fritzbox:
Make sure your firmware is up-to-dateEnable telnet
Login over telnet and type "cd /var/flash/", "nvi ar7.cfg"Search for overwritedns1 and overwritedns2 (they appear two times each) using the "/" key and "n" (next search result).
Press "i" to get into edit mode and enter the opendns server as noted in the opendns linux guideESC brings you back to command mode. ":w" saves the file and ":q" closes the editor again.type "reboot" to restart the fritzboxRestart you networking and you browser. The OpenDNS Site now should tell you that you are using OpenDNS already. Now you can create an account, set it to dynamic DNS, add network and login to dnsomatic.Now login to using your browser and enter the following dynamic DNS settings: Update …

Workshop Project: Hot Wire Anemometer

I just want to present my project I built as an own project in the electronics workshop hold at my university, that really has been quite interesting. Its a so called "Hot Wire Anemometer" (Airflow-meter).
Here you have the explanation as an excerpt of the project documentation:
Die Idee beim Hitzdrahtanemometer ist den Wärmeverlust an einem Glühfaden zu bestimmen und dadurch auf die Geschwindigkeit des kühlenden Luftstroms zu schließen. Um den Wärmeverlust messen zu können wird die Widerstand – Temperatur Abhängigkeit des Glühdraht benutzt um diesen auf einer konstanten Temperatur also Widerstand zu halten. Schließlich wird der dazu notwendige Strom, bzw der Spannungsabfall am Glühdraht gemessen, verstärkt und ausgewertet. Although we had a bunch of problems in the end everything worked very well and was a nice combination on analog and digital elements. As a hot wire we used a 6V light bulb where we took off the glass.


I just wanted to mention my latest work also in this place. It's called pyfmgraph and it's a visualization on listening customs using the data collected by
I need to mention that this is actually not my idea. If seen this before on but since this guy didn't reply on my email I decided doing this by myself. While first looking for a convenient program for this task I found none and decided creating my own using Python.

The biggest problem actually was smoothing the curves to have something nice looking. I decided using bezier curves as they are easy to implement and look good.

Now the thickness of each colorstream represents the listening frequency at the time which represents the x axis. Furthermore the colors fade from blue tones to red tones which represents the time the artist has been listened for the first time. Blue means earlier while red references to a later time.

My current work on the pyfmgraph focuses on implementing vector based …