Hoppa över navigation

It’s time again for the annual Hackaton where a heap of creative people meat up and bash their heads against their keyboards until something cool comes out. Be there, write the code, spread the source…

Details can be found at the official page here.


PTSD, I miss google…
I want to go back…
I want to hack…
take me back…

Got a new laptop at work yesterday, the long awaited ThinkPad X200.

Hands down best laptop ever. Everyone should throw away their old crappy laptops and get this one, or the X200s. I’ve started writing a page over at ThinkWiki on how to install Debian on it.

Buildbot is nice… I use it for the XMMS2 project, and I use it at work. However, the hellspawn OS known as Windows likes to tell the user if some executable crashes. This might be nice and user-friendly as it’s a pretty common scenario that applications crash on this OS, but when running unittests in a buildbot slave this causes the slave to hang instead as there’s nobody watching the screen and clicking the ok button in the dialog box. Killing the application with the Win32-api doesn’t help as the message box heavily guarded by the OS (…or rather the result of another application intercepting the crash). I bet others have stumbled upon this disturbing issue, and like me don’t know that much about the OS in question, so here’s one solution that works:

  • Disable problem reporting in ”Properties in My Computer”
  • Disable JIT debugging in ”Tools->Options->Debug” in Visual Studio versions
  • Enable drwatson by running drwtsn32.exe -i

After reading an article over at wired.com earlier this week I wondered how fast I typed these days. The girl in the article managed to type 120 words per minute, and I know I was pretty fast in school when we worked on type writers, so up to the test.

First I tried copying a Swedish text from paper while a friend was standing next to me with a stop watch, the result measured around 80 wpm (although I think I could write a bit faster if I’d tried a couple of more times).

Second up was finding a program on the computer that just gave me random words and performed the same measurement. After a quick search with apt I found the package ‘typespeed’ and gave it a spin. A couple of tries later I didn’t even manage to get past 52 words per minute, but this test was in english, and there were some words I hadn’t heared of before, but still, both 80 and 52 are WAY less than 120.

Ok.. so finally time to get to the point. This ReCaptcha thing has been around for a while now. For those of you who haven’t heared about this wonderful project, here comes a short resume: ReCaptcha is like regular Captcha, but with two words, one known word, and one word that a computer has failed to interpret while digitalizing a book. So each time you solve a Captcha, you help opening up the world of cyberspace to a dear old book. Each word will be sent out to a lot of Captchas thus providing a kind of voting mechanism that filters out the typos.

Ok.. so finally time to get to the point (really). It would be pretty damn neat if you had a typespeed program that fed you a specified ratio of unknown words for you to train up your fingers with. This would ofc not distort the actual word before displaying it like done with Captchas. Unfortunatly I guess it’s a bit more common with people having to fill in captchas for blogs etc, than people trying to improve their writing speed using some silly program.

Anyways, way past bedtime (perhaps the reason for the idea in the first place), so good night intarweb, see you tomorrow!

I’m not a GUI designer, but (…) I still get ideas every once in a while. My last post on the subject turned into an OpenMoko client based on the sliding GUI idea thanks to Anders. This time I present to you three more ideas.

First out, an MTV-isch OSD.

The idea behind this is obviously MTV. Over the years they’ve outdone themselves in the design of new fresh OSD’s to present their artists. The OSD’s are often animated, and always very pleasant to the eye. When looking at the OSD’s available for different music players, none of them comes near. Som just print text on the screen, that disappears after a couple of seconds, some add fading to make it a bit prettier, some use the notification area of GNOME to present the current artist, and some use Growl on OS X, and none of these look very pretty, they just look like half-assed attempts at presenting the current song.

A year or two ago I was into writing C# bindings for XMMS2, and I whipped up this example that made an attempt at creating an animated OSD.

Here is the screencast.

This is obviously butt ugly as IANAGD, but it shows a glimpse of what may be the future of OSD’s. Perhaps using EFL might be the way to go to get thos animations blinging. Anyway the code and the tools are of no importance without a good design, so copying designs from MTV to start with, and then evolve those to something new, fresh and free could probably lead to something interesting.

Another interesting design is the flowers from the Moppi Productions Assembly 2004 invitation demo, linked to the music. This could definitely be written as an OSD to XMMS2, as we now have a great visualization API thanks to the Google Summer of Code. The demo is for Windows, but works great in wine. In an OSD these flowers would grow out around the OSD box, and then anti-grow back when the box is to be closed.

Second out, drag-n-drop cover art.

I have no idea why many of my ideas are related to cover art, as I don’t really think they are that important, but here is another good thing to have. The ability to drag an image from Firefox, drop it in the cover art area of the client, and the client downloads the image and sets it as the default cover art of the current song (or album). The point here is that it should be as easy as possible to set the cover art. It’s a changeable target, and it should be easy to change it. Other than drag-n-drop it should definatly support copy/paste too. Drag/drop, copy/paste should ofc both handle urls, and data pasts/drops.

And here’s the obligatory screencast.

Third out, LastFM buttons.

The way LastFM works is a bit disturbing to the music player. When a LastFM stream is activated you either have to change the GUI, or be dysfunctional. The last alternative sucks a bit, as the power of LastFM is only unleached if you can skip tracks, otherwise you could just aswell listen to regular shoutcast. I prefer music players with three buttons for playback control, [prev, (play|pause), next], so some days ago I realized that this happens to be the same amount of buttons required to control LastFM, so why not combine them? I still haven’t decided in detail how this should work, but I wrote a small demo application that, when a LastFM stream starts, the three playback-buttons become LastFM buttons. You can access the original buttons by holding the mouse over the controls for a few seconds, this could also be handled with holding shift or something.

Anyway, here’s the obligatory screencast.

And this is all for this time, hope some of the ideas are put into use in some clients.

Time to indulge in all the Christmas food. Merry Christmas everyone! \o/

In January this year I rearranged my living room. After the furniture were in position and cables were starting to find their new routes, I realized that my TV-antenna cable was too short.

At the time it wasn’t unusual for me to get cought in front of the TV, zapping channels, watching random crap, and by doing so I also polluted my brain with those evil commercials that NOBODY wants to watch, but most of us watch anyway.

Instead of going out to buy a new one (so that I could continue to destroy my brain, bit by bit) I decided to simply ditch oldschool TV, and consume all content on demand.

Most series I follow were already available for download from great websites that really understands how to treat a consumer. The missing piece was my absolute favorite TV-station, Swedish Television, that has given me hours of interesting content since I was a kid.

At the time Swedish Television was accessible only through the webbrowser, by Real Media, or Microsoft Media Player, but after browsing some HTML source I managed to grab the URL to the Windows Media stream, and was able to play it successfully with Xbox Media Center. By using the python scripting interface to XBMC I could replicate the web interface as a browsable directory tree with all content Swedish Television decided to put online (which is quite a lot of material). I eventually released the script on the XBMC scripts portal for others to download and it seemed like others liked the idea too. To this day I’ve had 16804 downloads, and lots of positive emails that made it all even more worthwhile.

I’ve been free from commercials for almost a year now, and I must say it feels great. Visiting friends who still watch oldschool TV feels like walking through a time portal, and it’s kind of scary to watch commercials when you’re not used to them, they feel pretty offensive (which of course is the purpose).

Ok, so the year of 2007 has been a great year, but what about 2008? The future of Swedish Television on the web is uncertain. This weekend I had to update the script because the short news clips are now distributed using Macromedia Flash. Luckily the url to the .flv-files could be found in the HTML-source, and XBMC can play all formats known to man, so I still have access to all content I’m interested in. But using Macromedia Flash isn’t the only new addition to the webportal. A couple of months ago Swedish Television started to distribute some content with Move Media Player that would allow for higher quality streams, but required the consumer to install additional software on their competers. When I saw the news I did a little digging to see if I could access the stream, unfortunatly without much luck (may still be possible to find out where to reach them). During the digging I found out a bit more about Move Media Player and it seems to be using the VP7 codec which FFMPEG currently doesn’t suppor (but hopefully will soon). So using VP7 on the Xbox is a no go, for now at least.

FFMPEG not supporting VP7 isn’t that big of a deal. The frustration lies in that Swedish Television is produced by tax-money, and obligatory TV-licence that you must pay if you have a TV or a computer with a TV-card and you live in Sweden. We fund the production of their content, and they repay us with restrictions on the content by using proprietary and patent damaged solutions.

This is NOT ok!

Swedish Television put pride in their claim to be Free as in Freedom. I fully agree to this when applied to their content, but by locking that Free as in Freedom content into proprietary and patent damaged distribution forms they completly invalidate their claim.

Their locked down agenda also stretches outside their own web portal. In an attempt to gain more publicity in the younger crowd of Internet-addicted kids they started to publish some of their content on YouTube which offers really crappy video quality, and uses the non-Free Macromedia Flash format for distributing its content. I can see why they do this as a LOT of people use YouTube, by creating a link between YouTube and their own web portal they are likely to get more publicity, at least to some degree.

However, YouTube isn’t the only external site with damaged distribution forms they’ve looked at. The latest way to gain more viewers has been to establish a relationship with a new site called Joost. This site is run by the founder of Skype, and is even more closed down by requiring you to create an account to watch the TV programs that the population of Sweden has collectively funded. Sorry, I don’t see the public interest in associating a person with a tv program, maybe someone can enlighten me? I haven’t verified what codec Joost uses, but as Skype uses VP7, that is probably a good bet. But to play content from Joost, you have to blindly implement their P2P technology too which most likely will never happen.

I wonder how much money has poured into the pockets of Microsoft, Real Media and Move Media for providing the current solutions, and Joost for the new sidetrack, and the project of uploading their content to YouTube. I wonder how many hours of developer time those price tags could have translated to if Swedish Television had hired a group of good programmers to write the necessary tools and modifications to get a Free solution using Theora or Dirac up and running.

So, in my eyes the future of video on demand from Swedish Television using Free software without steping on patents is in grave danger, specially when (and it’s probably just a question of when) EU opens its arms for US patents. For those who agree with me I strongly suggest you sign this petition in hope of seeing the Free as in Freedom content using Free as in Freedom distribution forms:


The Xbox Media Center script, Sveriges Television 0.94, can be found here.

Been looking for a new bag for the past months due to my old one having a non-padded laptop compartment, and was above all starting to get pretty worn out after the 7-8 years it had served me. I went to the common stores downtown, I went to Apple store, I browsed the net, I asked people what bags they had, and finally I got a tip from Per at work of a San Francisco based company by the name Timbuk2. I knew I wanted a vertical messenger bag this time, and that limited my choice to more or less two models, Blogger or Hacker. After having read a review at Laughing Squid I decided to go with the Hacker model.

Timbuk2 Hacker


By now it’s filled up with my accessories and I’ve been using it for the first day. I must say I’m very satisfied, definatly should have bought it months back. The laptop compartment is well padded (woho!) and it’s roomy enough for my needs, and of course it looks good too! Without doubt the best bag I’ve ever had, and I haven’t even tried out the backpack mode for real yet, more love ahead I suspect.

After having talked about setting up a BuildBot service for XMMS2 for 6-7 months I finally got my shit together a couple a days ago and did it.

For now we have three slaves running, Debian Etch, mingw32 and Freebsd 7. The latter two have already helped us locate one bug each and a fix for one of them has been merged. In the near future a Mac OS X slave will be added, and Anders has mentioned that an ARM Scratchbox slave might happen.

The BuildBot setup currently online is just the first step in improving the quality of the XMMS2 project. When DrK is out and the Google Summer of Code testing framework project has been merged, tests will automatically be run on all builds, and hopefully catch even more bugs thus save a tear or two from our users.

Also, when I get the time I will make the mingw32 slave produce snapshots for download to make it easier to run XMMS2 on that strange OS we are forced to use in unfortunate times.

Click here to get the latest build status.

Update: The ARM slave is now up and running.

Update: The Darwin slave is also up, and yet another bug found.

In the world of XMMS2 there are a heap of clients that more or less rip the design from something that already exists. Some clients have potential, while a lot of clients are just ”Hey, I has writes my 0wnz0r music player!! zomgbbqzuhl!!11!”. Though this kind of sucks when new users find XMMS2 and have to wade through an ocean of crap, it also reflects how easy it is to whip up a GUI connected to a real application so that you can try out new concepts in a live environment without much hazzle, which is a good thing<tm>.

I myself am far from a GUI designer, but every once in a while I come up with some idea that I actually decide to implement. The downside is that I’ve never as of yet put my ideas together into a whole client but instead they end up in my ~/dev_home directory and bitrot, so here comes two ideas that I haven’t seen anyone experiment with, that with some luck might get picked up by some client author.

First out, an attractive info dialog.


Basically looks like the standard old info dialog that we have seen before, but with the coverart switcher added. The idea is that when you drag your mouse over the image you get a number of alternative images. We have the xmms2-covers client that surfs the net for coverart and then adds them to the entries in the media library, it’s pretty common that some art is found at multiple places in a variety of qualities, and the user should easily be able to pick one of them, or optionally pick one from file.

So some weeks back I wrote two implementations of this kind of view.

clutter based version
gtk based version

It’s not a feature that propells your client to the moon with, but imho also the tiny parts should get their fair share of time and thought to give a rich user experience (without offending the user with too much bling ofc).

Second out, Sliding GUI.

The idea was to have a simple GUI that only showed information to the user relevant to the current use case. This was accomplished by having a small number of cards (3 in my example) that slide, like the desktop switch effects on Mac OS X and Compiz. The first card was to show coverart in 90% of the screen and then artist – title (and maybe album), the second card held the playlist, and the third card was undefined. By pressing tab the next card slides in, and when reaching the last card, a final slide occurs passing all cards until the first card is visible. Later I realised that this is kind of how the iPod works, evil Apple manipulating my brain! 😉

Anyway, here’s a screencast.

This idea could actually be implemented for Esperanza. There would be two cards then, one for coverart/artist/title (card A), and one for the playlist (card B). When moving focus and/or mouse out from Esperanza card A would be shown, and when focused/entered card B would be shown. Alternatively card B could be shown on focus/enter, and after a timeout card A could be shown.

Conclusion (IANAGD)

I think it’s more important to question the reason for each part of the gui, than to have a gazillion features, and it would probably not be a bad idea if the GTK client writes unite, and some goes for the QT client writers. Also, with the exception of Euphoria, no clients as of yet take advantage of animated GUI components. It’s very easy to add animations here and there without making the GUI unusable, and it can add to the user experience, so why not take advantage of it? Oh, and I also want to see more web-awareness folks!

There, I’ve said it, time to hit the sofa and wait for the perfect client<tm> 😉

(Oh, and the code for the above hacks exists, ask me on irc if you really want to see, mostly really really …. *zzz* …. really nasty hacks).