Category Archives: Open Source

Open Source, Free Software, and similar

Portably Yours

Archos PlayerOne day in late 2001 I had a talk with my brother Björn and our mutual friend Linus about how their portable MP3 player was very cool but the software/firmware on it was rather limited and lame in many ways. (Correct, I didn’t own any portable music player at that time). As usual, we brought up the idea about being able to hack it yourself and oh how good couldn’t you make it then? Not very long afterwards, we had a mailing list setup for discussing how to reverse engineer and improve the Archos Player firmware. Personally, I had no device yet but it sounded like good fun so I subscribed and participated from the start. After a few months, I got myself an Archos Recorder to be able to get down on the metal too, and the Recorder was also slightly different and thus brought some more challenges to the team.

Archos Recorder

Archos RecorderThe Recorder was a step forwards since it provided better sound and a (gasp!) graphical LCD. Some of the first work I did in the Rockbox project was to work on the code for the LCD, to bring text to it using fonts and to provide line drawing routines etc. Keeping the entire screen in a separate “frame buffer” that is updated to the screen with a lcd_update() call was an early design decision that has stuck ever since.

We took the Rockbox a long way supporting more and more of the early SH-based Archos targets, including the V2s, the FM and the Ondio series. But eventually of course the models started to get hard to get and out of production. It was time to start looking into moving to other targets, and other targets would more or less force us into a world with software audio codecs!

I got my original Recorder stolen, but I had it replaced and put in a 80GB disk and it was much rejoicing.

iriver h140

iriver h140We did scan the market for targets that used somewhat standard components for which we could get specs and docs and we found the iriver h1x0 series and the work began. As usual we got plenty of help from everywhere and it didn’t take too long to show the nay-sayers that we could indeed transition Rockbox into the future with software codecs. We also took it to the h3x0 series with its color screen not that long after and my golly, didn’t an entirely new world of opportunities open? 40GB of disk was just about enough to hold most of my music collection.

iAudio X5

iAudio X5What’s the fun of Rockbox if I couldn’t follow along? I got the iAudio X5 early on in the porting effort and joined in and got my first color-screen target. Of course I didn’t like how the mere 20GB disk narrowed what music I was bringing with me, but hey some sacrifices had to be made for the greater good of advancing Rockbox! 😉

Rockbox was now booming and flourishing, coming to new targets all over and getting more and more developers involved.

Sansa E260

Sandisk Sansa e260A guy from SanDisk contacted us asking about a Rockbox port to their Sansa E200 series, and even though they sent me a bunch of targets etc they never provided any docs or actual help on the effort of porting Rockbox to these babies. Not even the figuring out the firmware format, as that was instead made by our own secret super-hero MrH.

Meizu M6

Time flies and soon enough (like in the late 2007) none of the targets Rockbox ran fine on were no longer being manufactured and started to get hard to get in shops all over the world. The eternal race to get Rockbox ported to a currently manufactured model of course just got more important.

It was almost two years since I got the Sansa e200 series from SanDisk and it was time to join in the efforts of bringing Rockbox to some Meizus. The amount of interested people and the existence of a (leaked) data sheet for the main SoC helped me settle for buying this.

Cowon D2

As I’ve already explained, I bought a D2 too at the same time I got the Meizu so that I could do comparison for people and just play around some extra.

Of course, my timing is dubious as I got my two new targets exactly at the same period in my life when I went back to work (almost) full-time from having been on paternity leave for six months. Together with my extra “admin duties” such as the euro devcon and gsoc 2008 happening, I really haven’t had much time to actually dive into low-level fiddling with the ports yet. Hopefully I soon get adjusted and get some time to really help out.

Download (Yester)Day

I won’t be joining the attempted world record of Firefox downloads on the release day June 17th 2008 since I dist-upgraded my Debian unstable just a few days ago and I got my Firef… eh Iceweasel version 3 then.

Of course, others have also noted that Firefox will miss a few Linux users downloading that version as Linux users all over will prefer to get it using their distros’ ordinary means of getting packages and updates…

Firefox 3

Twentyfour inches any good?

My 19″ (Acer) LCD screen at work died the other day. It started flickering a lot and when I tried to switch it off/on to see if the flickering would go away, it wouldn’t go back on again.

I got a lowly 1280×1024 screen to borrow until my new screen would arrive and I got to experience that using the panning screen thing of Kubuntu (my desktop would remain 1600×1200 since I preferred not to reboot or even shutdown my X) could easily get the mouse coordinates confused and then I had to hurry up to the upper left corner to “reset” the coordinates and then I could again click on the correct items on the screen…an lcd screen

Very well, I got a 24″ 240BW Philips. This being a widescreen thing (they’re really taking over the world, those widescreen versions) it prefers 1920×1200 resolution. My computer had one of them intel graphics chips (82Q963/Q965) on the board and dang, I got no good resolution no matter how I poked the xorg.conf file. After trying out 915resolution, I learned that the graphics card couldn’t in fact show the necessary resolution so I had to insert a card that can. I got a dreaded Nvidia and now I’m using the evil proprietary drivers to get DVI at this resolution…

But I must say that with my 19″ at 1600×1200 and my 20″ at home at the same resolution, bumping up the screen size yet another notch to 24″ makes me think 1920×1200 is kind of on the low side for such a huge screen. I did a quick check on my favourite tech stuff compare site (prisjakt.nu) but it seems there’s no screens with higher resolutions at this size?

Bad Reviews Never Die

I like user feedback and comments from people in projects I participate in – even those that I run or maintain myself. I value bug reports and I think no project can evolve without a fair amount of external input.

But they can also be annoying since when done in public places they tend to stick around. If they’re negative I can respond to them if posted in forums where that is possible and where I care about it, but sometimes they’re just “blurted” out in a way that I cannot respond to and that I cannot do anything about. And the review/comment/complaint will sit there to be watched by the world. Uncommented by me or anyone else thinking otherwise.

Let me point out the recent example that made me write this particular rant: user review on curl at ohloh.

I realize there’s nobody to blame and that this is the way of life and how things work and that everybody is entitled to publish their opinions and all that. It still doesn’t feel really good when you just don’t agree with them and they’re “against” one of your own babies.

public suffixes list

I noticed the new site publicsuffix.org that has been setup by the mozilla organization in an attempt to list public suffixes for all TLDs in the world, to basically know how to prevent sites from setting cookies that would span over just about all sites under that “public suffix”.

While I can see what drives this effort and since we have the same underlying problem in curl as well, I have sympathy for the effort. Still, I dread “having to” import and support this entire list in curl only to be able to better work like the browsers in the cookie department. Also, it feels like a cat and mouse race where the list may never be complete anyway. It is doomed to lack entries, or in the worst case list “public suffixes” that aren’t any such public suffixes anymore and thus it’ll prevent sites using that suffix to properly use cookies…

There’s no word on the site if IE or Opera etc are going to join this effort.

Update: there are several people expressing doubts about the virtues of this idea. Like Patrik Fältström on DNSOP.

curl 7.18.2 and lunch

Just minutes ago I uploaded the curl and libcurl 7.18.2 package to the curl site. There are a few new changes that people might just like, but most importantly there are many bug fixes.

And by a happy coincidence, a bunch of #curl visitors (the irc channel on freenode) are going to meet up for lunch on tuesday next week (June 10th) in Stockholm, Sweden. If you’re a curl hacker or curl fan and in the proximity that day, feel free to get in touch and join us!

curl needs a fresh take on command line options

I just posted about this on the curl-users mailing list and I’ll just echo it here to reach a slightly larger audience:

One of the not so good behaviors of curl is how many of the command line options work when being repeated: toggling on/off.

We’ve got bug reports about this in the past and I know for a fact that this behavior has burnt more than one guy who’s tried to set default options for curl in their .curlrc etc. When they then re-use the same option on the command line or in a script, it effectively disables the option again…

I’d like this corrected. I want people to be able to explicitly enable and disable features with the command line options. I think the toggling is very rarely useful and something we can just abandon – unless we can figure out a way to keep it for backwards compatibility when we introduce the new behavior.

I’m willing to sacrifice some backwards compatibility to get this done, but I would of course like to hurt as few users as possible.

I’m very interested to get ideas and feedback from you guys on how we can accomplish this!

My first thoughts on how to do this, is simply to convert all the current options to enable options and then introduce a new concept that negates the option. Like -v or –verbose to enable verbose, and –no-verbose to disable verbose.

Any bright ideas?

Update: my suggestion above is what has now been committed targeted for the upcoming 7.19.0 release…