September 02, 2010

hackergotchi for

Evgeni Golov

Using plugins.svn.wordpress.org with Git

So I got SVN access to plugins.svn.wordpress.org, but I hate SVN. Let’s just use Git instead of SVN, especially when I already have my plugin as Git on github.com :)

git svn clone -s -r283636 https://plugins.svn.wordpress.org/statusnet-widget/
git remote add -f github git://github.com/evgeni/wp-statusnet-widget.git
git merge github/master
git svn dcommit

(note the -r283636 – it’s very important, if you ommit it, git svn will fetch 280k revisions which takes ages, if you put it to something AFTER your repo was created, the log will be b0rked)
Done! Now you can work as usual, push to github and commit to svn via dcommit :)

PS: Dear WordPress.org Team, you have working SSL, why do you still have http-links in your mails?

02 September, 2010 12:18PM by evgeni

The joy and pain of WordPress

As you may not have noticed, I migrated my site to WordPress some time ago as I did not want to maintain the old piece of crap I wrote myself when I was “young” ;)
Today I want to tell you a story of the development of a plugin for WordPress.

As the title says, it’s much about joy and pain and I think I should start with the pain :)

WordPress is written in PHP, so are the plugins for it. And PHP is REAL pain (but there is no decent blogging software for Django or Zope that would fit all my needs). It is especially pain when you work with Python every day. What the heck are those curly braces and dollar signs and “$this->”? That’s just not the way Guido indented it ;)
Additionally my last contacts with PHP were some time back in 2008 when I hacked on SysCP, which today result in commits like this:

-        if (is_int($new_instance['max_items'])) $instance['max_items'] = $new_instance['max_items'];
+        if (ctype_digit($new_instance['max_items'])) $instance['max_items'] = $new_instance['max_items'];

But I have to admit that the WordPress API is pretty good. Not very well documented (the wiki pages at codex.wordpress.org are sometimes outdated), so you have to read the source and google a bit, but when you found the needed sources, it’s pretty straight forward.
My plan was to write a simple widget, displaying my Twitter and identi.ca timelines. Yes, both together, not one widget per service. The reason for this is the fact that I mostly post via identi.ca and the messages get synced over to Twitter and only the local replies and retweets/redents differ.
The basic WordPress widget would look like this (source: http://codex.wordpress.org/Widget_API#Developing_Widgets_on_2.8.2B):

class My_Widget extends WP_Widget {
	function My_Widget() {
		// widget actual processes
	}

	function form($instance) {
		// outputs the options form on admin
	}

	function update($new_instance, $old_instance) {
		// processes widget options to be saved
	}

	function widget($args, $instance) {
		// outputs the content of the widget
	}

}
register_widget('My_Widget');

One only has to modify the widget() function and here you go.

From some other Twitter plugin I knew that I only had to include rss.php and call fetch_rss(url) for every feed URL to get the timelines as an array via MagPie. But when looking at rss.php, you notice the deprecation message in the header, saying one should use SimplePie now. Some google later I knew that I had to include feed.php and call fetch_feed(url) to get a SimplePie object representing the feed contents. But SimplePie is even cooler: I can call fetch_feed(array(url1, url2)) and get a merged feed, containing both.
Now I added a duplicate filter to elliminate the messages posted to both, twitter AND identi.ca and my widget was ready.

You can find the result on http://github.com/evgeni/wp-statusnet-widget and soon on http://wordpress.org/extend/plugins/statusnet-widget/ :)

02 September, 2010 12:14PM by evgeni

hackergotchi for

Wouter Verhelst

Frans Pop

I'm shocked to learn that Frans has died.

Even more shocked to learn that, due to me sitting with my head in the sand, I almost missed it.

You'll be missed, Frans. I didn't always agree with you or your methods, but I deeply respected you for who you were, what you did, and what you were willing to do.

May you rest in peace.

02 September, 2010 11:17AM by Wouter Verhelst (w@uter.be)

hackergotchi for

MJ Ray

KohaCon10

Russel Garlick writes on behalf of the KohaCon10 Organising Committee:

“KohaCon10 starts on October 25th in Wellington, New Zealand. We have an exciting line up of speakers on a range of topics related to Koha and [Free and] Open Source and Open Standards in libraries. See our programme for details.

KohaCon is an opportunity for the entire Koha community, librarians and developers alike, to come together, meet each other, swap ideas and learn something new.

The conference is split into 2 parts.

The community conference will be held over 3 days – 25-27th of October. This is not just a developer’s conference. There will be presentations from librarians and developers alike.

The second part of the conference is the Hackfest for Koha developers that will be held from 29th-31st of October.

For more information see our website

KohaCon10 is a free conference (that is right it will cost nothing for you to attend), but you still need to register to reserve your place.

Registrations from the international Koha community have been very strong. Over half of all available spaces are already taken.

If you have been holding off on the premise that you will have plenty of time to do this later, then please register now. Please do not rely on there being free spaces on the day.

Registration is quick and easy via the website.

We look forward to seeing you in Wellington!”

Our co-op will be represented there. Will you?

02 September, 2010 05:00AM by MJ Ray

Debian News

DebianDayPT 2010 in Aveiro, Portugal

The next 4th of September, the Portuguese Debian community will gather at the University of Aveiro for the third edition of the DebianDayPT

There will be several talks about about Debian/Free Software in Portuguese and as special guest, Martin Michlmayr will deliver a couple of talks titled “Contributing to Debian” and “Project Management in Free Software”. Like last year, there will be DVDs with Debian Live so people can discover, try and install upcoming Debian stable ‘Squeeze‘.

You can find more information of the event and information of how to arrive at: http://debiandaypt.debianpt.org/.

02 September, 2010 02:26AM by ana

September 01, 2010

hackergotchi for Amaya Rodrigo

Amaya Rodrigo

Dear Frans

You will be missed so much. You were kind, you were fun to be around.
It is a privilege to have met  you. Debian is privileged for the effort and time you put in it.
Your contribution will remain with us and will inspire others for a long time.
You made a difference in this world, one that will last and outlive you. I can only thank you.

Rest in peace, my brother. See you at the other side of the Firewall, and thanks for all the FLOSS ;)

01 September, 2010 11:54PM

hackergotchi for

Gunnar Wolf

Cycling, cycling everywhere!

I have been wanting to post for several days already, at least since this last Sunday. I have repeatedly bragged about taking part in the Ciclotón: The last Sunday every month, the city's government closes to automotive transit a ~33Km circuit, for cyclists to enjoy. And by cyclists, I mean people from all expertise ranges — Well, the very elite bikers will not take part of such a massive thing, but there are people pedalling a couple of blocks, people taking their small kids to drive a bit, and I recognized an amazingly large proportion of people doing the whole route.

Well, this last Sunday one lap was not enough for me — I did two laps, ~65Km.

(oh, and just for keeping the complaint current: After all, SportsTracker did release a version of thier software for the N95... But it requires Flash for using the webpage at all. I have several pointers at other applications... but am time-starved right now to start reviewing :-/ )

Anyway, I decided to do this double ciclotón in order to train for next week. If you are anywhere near Mexico City, you are invited - this is meant to be a large group ride, and looks very fun!

Doble Maratón Ciclista Urbano del Bicentenario

We are two weeks away from the 200 year conmemoration of the beginning of the Independence War in Mexico. A group of cyclists came up with the idea to organize a Double Marathon to celebrate! 84Km of biking in Mexico City:

For some reason, the distance numbers in that map were made... in miles :-P Anyway, the planned route will be:

  1. Jardin de los periodistas ilustres (Delegación Venustiano Carranza)
  2. Aeropuerto Internacional de la Ciudad de México
  3. Circuito Bicentenario ( antes circuito interior )
  4. Monumento a La Raza - Hospital La Raza
  5. Río San Joaquin
  6. Viaducto Bicentenario ( carril confinado sin interrumpir la circulacion )
  7. Torres de Satélite 50 aniversario
  8. Presidencia municipal de Tlalnepantla
  9. Presidencia municipal de Naucalpan
  10. Anillo Periferico Sur
  11. Secretaría de la Defensa
  12. Bosque de Chapultepec 1ª y 2ª sección
  13. Segundo Piso del Distrito Federal
  14. Ciudad Universitaria patrimonio cultural de la humanidad
  15. Insurgentes Sur
  16. Miguel Ángel de Quevedo
  17. Calzada de Tlapan
  18. Zócalo centro historico del distrito federal
  19. Calle 16 de septiembre fin del recorrido

It looks very fun. Besides, although it is not that flat, it is one of the flattest long distance routes you will ever have. The toughest part will be IMO the Northern part of Circuito Bicentenario and possibly some bits of Periférico towards Naucalpan. Then, a long flat stretch, with one long but not steep way up in Segundo Piso (near Las Flores), and a little stretch towards Ciudad Universitaria. Other than that, it looks very doable if you are in a moderately decent condition. And taking part in such a thing is very very worthy!

As a final note... This same Sunday, it has been somewhat publicized the first Día Nacional de la Bicicleta (Bycicling National Day) will be held all over the country, kickstarting the National Cycling Crusade. Sounds nice, right? Even impressive? Yeah, but... If you look at the published information (in the page I just linked), you will see several cities are opening cyclist circuits. For one day only, which means, it does not build awareness among the population on how easy, how convenient and how fun it is to use the bicycle as means of transportation. And not only that — The cyclist routes clearly make a point that cycling is a good way, at most, to have fun... But not a general habit we should all embrace. Lets see, as an example, the distances offered (only for the cities quoting route length):

  • Guerrero: Chilpancingo, 2Km; Chilapa de Álvarez, 4.5Km
  • Sinaloa: Culiacán, 4.7Km
  • Nuevo León:Monterrey, 1.9Km
  • Querétaro: Querétaro, 3.2Km
  • Sonora: Nacozari, 1.5Km; Naco, 1.5Km; Huasbas, 1Km; Granados, 1Km; Imuris, 1.5Km; Huatabampo, 1.5Km; Yecora, 1.5Km; Sahuaripa, 1Km; Caborca, 2Km; Navojoa, 3Km; Santa Ana: 2Km; San Luis Río Colorado: 2Km; Cd. Obregón: 3Km; Hermosillo: 3Km; Nogales: 4Km; Magdalena: 3Km; Guaymas: 4Km; Empalme: 2Km
  • Morelos: Cuernavaca: 2Km

...And so it goes. As you can see, several very important cities (i.e. Monterrey, Chilpancingo, Cuernavaca) put only a 2km route. 2Km by bike is... Nothing. 2Km is done at a leisurely pace in less than 15 minutes (I often sustain 20Km/h, which would mean 2Km in 6 minutes). And, in this short sample (the linked page has the information for several other states, but the pattern holds), most states are only making this in the largest city or two, completely forgetting the bulk of their territories. In my opinion, this "effort" was done backwardsly, and ends up delivering the exact opposite message to what should be done.

01 September, 2010 10:52PM by gwolf

Russ Allbery

git-pbuilder 1.16

Getting the git-pbuilder script included in git-buildpackage has significantly increased the usage, which means lots more people finding new features and facilities that they need. I love that part of free software work. Here's a new version with a few new facilities.

Since the previous release announcement (for 1.13), this adds:

  • New support for an ARCH environment variable, which sets the architecture to use for the build chroot. This appends the architecture to the base directory name and passes the --architecture flag on to cowbuilder and pbuilder.

  • When called with update, create, or login, pass any additional arguments to cowbuilder. Patch from Svend Sorensen.

  • Say what distribution and architecture we're building for if DIST or ARCH is set. Error out if /usr/sbin/cowbuilder isn't available, telling the user to install the cowbuilder package. Based on patches from Guido Günther.

You can get the latest version from my scripts distribution page.

01 September, 2010 10:46PM

Petter Reinholdtsen

My first perl GUI application - controlling a Spykee robot

This evening I made my first Perl GUI application. The last few days I have worked on a Perl module for controlling my recently aquired Spykee robots, and the module is now getting complete enought that it is possible to use it to control the robot driving at least. It was now time to figure out how to use it to create some GUI to allow me to drive the robot around. I picked PerlQt as I have had positive experiences with the Qt API before, and spent a few minutes browsing the web for examples. Using Qt Designer seemed like a short cut, so I ended up writing the perl GUI using Qt Designer and compiling it into a perl program using the puic program from libqt-perl. Nothing fancy yet, but it got buttons to connect and drive around.

The perl module I have written provide a object oriented API for controlling the robot. Here is an small example on how to use it:

use Spykee;
Spykee::discover(sub {$robot{$_[0]} = $_[1]});
my $host = (keys %robot)[0];
my $spykee = Spykee->new();
$spykee->contact($host, "admin", "admin");
$spykee->left();
sleep 2;
$spykee->right();
sleep 2;
$spykee->forward();
sleep 2;
$spykee->back();
sleep 2;
$spykee->stop();

Thanks to the release of the source of the robot firmware, I could peek into the implementation at the other end to figure out how to implement the protocol used by the robot. I've implemented several of the commands the robot understand, but is still missing the camera support to make it possible to control the robot from remote. First I want to implement support for uploading new firmware and configuring the wireless network, to make it possible to bootstrap a Spykee robot without the producers Windows and MacOSX software (I only have Linux, so I had to ask a friend to come over to get the robot testing going. :).

Will release the source to the public soon, but need to figure out where to make it available first. I will add a link to the NUUG wiki for those that want to check back later to find it.

01 September, 2010 07:00PM

hackergotchi for

Sylvain Le Gall

OCaml 3.12 with Debian Sid right now!

Some careful readers of Planet OCamlCore should wonder why the OCaml packages in Debian has not yet been upgraded to 3.12.0. For the Planet Debian readers, this is the latest version of the Objective Caml programming language.

The answer is simple: Debian Squeeze froze on 6th August. This means that Debian folks focus on fixing release critical bugs and avoid doing big transitions in unstable (Sid). In particular, the Debian OCaml maintainers has decided to keep OCaml 3.11.2 for Squeeze, because the delay was really too short: OCaml 3.12 was out on 2nd August.

A great work has already been done by S. Glondu and the rest of the Debian OCaml maintainers to spot possible problems. The result was a series of bugs submitted to the Debian BTS. This effort has started quite early and have been updated with various OCaml release candidates.

S. Glondu has also built an unofficial Debian repository of OCaml 3.12.0 packages here.

Let's use it to experiment with OCaml 3.12.0.

schroot setup

Following my last post about schroot and CentOS, we will use a schroot to isolate our installation of unofficial OCaml 3.12.0 packages.

approx

approx is a debian caching proxy server for Debian archive files. It is very effective and simple to setup. It is already on my server (Debian Lenny, approx v3.3.0). I just have to add a single line to create a proxy for ocaml 3.12 packages:

 $ echo "ocaml-312   http://ocaml.debian.net/debian/ocaml-3.12.0" >> /etc/approx/approx.conf
 $ invoke-rc.d approx restart

approx is written in OCaml, if you want to know how I come to it.

debootstrap and schroot

We create a chroot environment with Debian Sid:

# PROXY = host where approx is installed, debian/ points to official Debian repository of 
# your choice. 
$ debootstrap sid sid-amd64-ocaml312 http://PROXY:9999/debian

We create a section for sid-amd64-ocaml312 in /etc/schroot/schroot.conf (Debian Lenny):

[sid-amd64-ocaml312]
description=Debian sid/amd64 with OCaml 3.12.0
type=directory
location=/srv/chroot/sid-amd64-ocaml312
priority=3
users=XXX
root-groups=root
run-setup-scripts=true
run-exec-scripts=true

Replace XXX by your login.

And we install additional softwares:

 $ schroot -c sid-amd64-ocaml312 apt-get update
 $ schroot -c sid-amd64-ocaml312 apt-get install vim-nox sudo

OCaml 3.12 packages

Now we can start the setup to access OCaml 3.12.0 packages.

The repository is signed by S. Glondu GPG key (see here). We need to get it and inject it into apt:

$ gpg --recv-key 49881AD3 
gpg: requête de la clé 49881AD3 du serveur hkp keys.gnupg.net
gpg: clé 49881AD3: « Stéphane Glondu <steph@glondu.net> » n'a pas changé
gpg:        Quantité totale traitée: 1
gpg:                      inchangée: 1
$ gpg -a --export 49881AD3 > glondu.gpg
$ schroot -c sid-amd64-ocaml312 apt-key add glondu.gpg

The following part is done in the schroot:

$ schroot -c sid-amd64-ocaml312
# PROXY = host where approx is installed
(sid-amd64-ocaml312)$ echo "deb http://PROXY:9999/ocaml-312 sid main" >> /etc/apt/sources.list
(sid-amd64-ocaml312)$ cat <<EOF >> /etc/apt/preferences
Package: *
Pin: release l=ocaml
Pin-Priority: 1001
EOF
(sid-amd64-ocaml312)$ apt-get update 
...
(sid-amd64-ocaml312)$ apt-cache policy ocaml
  Installé : (aucun)
  Candidat : 3.12.0-1~38
 Table de version :
     3.12.0-1~38 0
       1001 http://atto/ocaml-312/ sid/main amd64 Packages
     3.11.2-1 0
        500 http://atto/debian/ sid/main amd64 Packages
(sid-amd64-ocaml312)$ apt-get install ocaml-nox libtype-conv-camlp4-dev libounit-ocaml-dev...

That's it. The apt-policy command shows that OCaml 3.12 for the ocaml-312 repository has an higher priority for installation.

Good luck playing with OCaml 3.12.0.

01 September, 2010 05:07PM by gildor

hackergotchi for

Raphaël Hertzog

Free and opensource software to Flattr

Flattr FOSS LogoSince I published “How to make 110.28 EUR in one month with free software and Flattr”, quite a few people joined the movement and I had less troubles finding projects to Flattr. That’s great! :-)

Without further ado, here are my recommendations for september:

  1. Smuxi is an IRC application that integrates from the start the need to be permanently connected. You can run the “engine” on a server and the graphical interface connects there. The engine has all the intelligence so it remembers what message you last saw in each channel (including highlights) and you won’t miss anything. I recently switched to it and I like it. It’s not perfect but it’s improving quickly. The next version even supports Ubuntu’s messaging indicator for better integration with the desktop.
  2. Geshi is a PHP class used by many other software to provide enhanced views of code on web pages by coloring the various parts based on the syntax of the respective programming language. It’s used by Wikipedia, many blog plugins and lots of other web applications.
  3. Git-buildpackage is a set of tools developed by Guido Günther to make it easier to maintain Debian packages in Git repositories. I use it for several packages that I maintain.
  4. Mixare is an augmented reality browser. Take your Android phone and it will incrust information in the (camera) view of the environment. Impressive video on the website.
  5. Lightspark is is a modern flash player implementation targetting ActionScript 3.0 support (while Gnash only supports older versions). It’s one of those few projects that are really needed to get rid of the non-free Adobe plugin that almost everybody installs because there’s nothing else that work well enough.

This article is part of the Flattr FOSS project.

Flattr this Share/Bookmark No comment | Support my work

01 September, 2010 01:30PM by Raphaël Hertzog

Russell Coker

Optimising the How To Vote Process

I previously wrote about my experience handing out How To Vote (HTV) cards at the federal election a couple of weeks ago [1].

One comment noted that at one polling place “all the volunteers for different candidates had combined into a single team, handing out all the cards together“, which makes sense. There is some advantage in forcing cards on people, some people decide who to vote for once they are inside the polling booth based on information on the HTV cards (a couple of voters stated an intention to do so which disappointed the politically aware people who hand out the HTV cards). But for most voters there is no benefit in competing to hand them a HTV card.

Some of the comments expressed a dislike of being subjected to people handing out HTV cards. As a voter I don’t particularly like having a group of conflicting people wanting to hand me a HTV card either. Also it is obviously a waste of resources to hand out so much cardboard that goes to waste (particularly the Liberal and Labor parties that use glossy non-recycled paper).

I think that the ideal solution would be to have the officials at the polling booths hand out HTV cards on request. A voter would have to specifically request the card from a party and the poll officials would not be able to offer them a selection, “sorry I can’t tell you who is running for election, but if you express a desire to vote for a particular party I can give you a card instructing you how to do so“. The parties would be responsible for providing the HTV cards (according to strict specifications regarding the acceptable sizes), and if the supply runs out then the officials would decline requests.

This could even be made self-financing by making the parties who want their cards distributed pay for a fraction of the wages of the people who hand out the cards, if each polling place had one person handing out the HTV cards at a salary of $500 for the day and there were 5 parties cards to hand out then each party would have to pay $100. The reduced print runs for HTV cards would probably save each party more than $100.

Something like this should satisfy the real need of voters who want advice on how to support their preferred party while not annoying the voters who know how to vote without any assistance. I expect that most members of the parties would be in favor of this idea. The only reason we go to the significant amount of effort and expense to hand out the HTV cards is because everyone else is doing so.

01 September, 2010 01:08PM by etbe

Cyril Brulebois

SD: Travel with your bugs

(For Those Who Care About An Introduction: Christine Spang gave a talk during DebConf10 about Simple Defects (SD), and blogged about it later on.)

Folks maintaining Debian packages are already able to partially-clone bugs.debian.org’s bug database thanks to the local-debbugs tool. But what about upstream’s bug tracker? Taking a (shamelessly self-centered) example: X.Org packages are hosted on FreeDesktop.org’s bugzilla. Thanks to SD, it’s possible to fetch bugs from there as well! Here’s the obligatory picture:

SD example

This means that you can browse/search them locally while being offline (or well-connected, but without having to use that !$\§%$^ bugzilla web interface). Many of the replica types support both reading and writing, meaning you can also queue some changes locally, and push them later. Currently, sd help sync says that read-write support is available for RT, Hiveminder, Trac, Google Code, and GitHub. There’s also read-only support for redmine. Debbugs is being worked on, see Christine’s blog post about her SD talk for more info.

Given there was no support for bugzilla, I had a quick look and reported my findings. The main point being: \o/ Bugzilla’s XMLRPC \o/

A little while later (I’m not exactly fluent in Perl…), I came up with a tentatively-mergeable branch adding preliminary read-only support for bugzilla. There’s still a lot of work, but I’m trying to work on it on a regular basis, adding support for more properties, and fixing bugs (tests should be written some day, too).

Flattr this!

01 September, 2010 11:40AM

hackergotchi for Maximilian Attems

Maximilian Attems

fjp

Frans Pop contributions to Debian has already been honoured: Frans Pop obituary by Steve McIntyre. One less known fact is that he hacked in upstream linux-2.6 too. Latest linux-2.6 git lists him with 80 commits. A bigger part of his work was testing latest linux-2.6 on different architectures. There are lots of patches with "Reported-by: Frans Pop <elendil>" and "Tested-by: Frans Pop <elendil>". Also in this field he was aiming for big coverage and a special responsive tester.

I am very sad to have missed the opportunity to meet you in person. You are missed. Rest in peace, my friend.

01 September, 2010 07:57AM

August 31, 2010

John Goerzen

Life snippets

#1: Dreams of a (almost) 4-year-old

Yesterday, Terah had something going on in the evening, so it was just Jacob, Oliver, and me. Due to how the logistics worked out, she brought them to the office after work and I took them from there. We went to the post office, pharmacy, and a restaurant. Jacob and I had this conversation at the pharmacy.

Jacob: Ooo! We are at the Goessel pharmacy! *claps happily*

Me: Hmmm… Actually Goessel doesn’t have a pharmacy. This is the Hesston pharmacy.

Jacob: *gets a serious look on his face* Dad, actually Goessel has a pharmacy…. Look! A fire station!

Me: That’s right. And what can you see inside it?

Jacob: FIRE TRUCKS! They are all still.

Me: I guess there isn’t a fire.

Jacob: I think the Goessel pharmacy is on fire! Shall they go there now?

Me: I hope it’s not on fire. (what are you going to say to that?) Were you wanting to see a fire?

Jacob: YEAH! I think it IS on fire. Shall we go see?

So now he has an imaginary pharmacy with an imaginary fire and he wants to go see. Fortunately he was OK with just going inside Hesston Pharmacy instead.

#2: The Songs on a Ceiling

I read a book and sing a song to Jacob for bedtime every night. Over the weekends, sometimes I do that for him at nap time too. This weekend, he wanted us both to get on his bed, lie on our backs, and look at the imaginary songs on his ceiling. He gave me a whole tour, pointing to various (to me, nondescript) parts of the ceiling as he did so.

“Over there is a song about railroad tracks. There is one about trains. That train is upside down. That other one is stuck. There is a song about Word World. There is a song about preschool. There are the train tracks. There is a train on them. It might bump into the other train. Shall you sing a song about two trains on the tracks and they bump into the other train and go BLAM?”

He appeared to have a whole map in his head of his songs. The train songs were all at a specific place on the ceiling.

#3: Younger Brother

Oliver has really been changing lately. He occasionally will take a few steps by himself, and he has started to say a few parts of words. He communicates really well, though, especially with things he wants. He has a deep, vigorous nod to say yes, and sometimes it’s accompanied by “yesh” for extra emphasis. His face is incredibly expressive too, and he has a distinctive Yoda-like expression at times. I almost expect to hear him say one day, “Like that green bean I do not. Watermelon better is.”

Jacob, of course, is a lot bigger and sometimes is rough with Oliver. But they also have started to play together. Sometimes Jacob will put his head by Oliver’s face. Oliver will grab fistfuls of Jacob’s hair in both hands and pull. Both of them apparently find this hilarious and laugh on and on about it.

#4: Viruses and Stomachs

Sunday Jacob was complaining of a stomach ache. We were driving home, and shortly after we got home, he vomited on the driveway. Jacob really doesn’t like throwing up. It’s unpleasant and maybe a bit scary for him. He was about to start crying after vomiting, except…

One of our cats was hanging around. Claire came over, sniffed Jacob’s vomit, and started eating it. Jacob was so fascinated by what was happening that he stopped sniffling and stood there staring at the cat, then gave an excited report of events to Terah and me.

That evening, he was afraid he would throw up in bed. So we had a large bowl he held *directly* under his chin during story time. But then he didn’t want to lie down, since he was afraid he’d throw up in bed. Terah pointed out that he could have the bowl close while he slept. I went up and checked up on him an hour or two later, and he was sound asleep, face in the large bowl.

#5: The Jukebox

After the pharmacy, Jacob saw Skoops, a local 50s greasy spoon diner place across the street. He really wanted to eat there and get the “birthday cake” ice cream flavor. So we did. He was jabbering about getting a corn dog as we walked over, so that’s what he had to eat. I don’t know how he knew Skoops had them, as I don’t think he’s ever had a corn dog. Oh well.

There’s a jukebox inside Skoops, and every fifteen minutes or so, it’ll spring to life and play a random song even if nobody put coins in it. This was very exciting for Oliver. He’d twist all around in his highchair to watch it. And, most amusingly, he’d start bopping his head. Not really in time with the music or anything, but it was cute to watch. Sometimes he’d get really excited and pretty much his whole body was dancing. Well, as much dancing as you can do when you’re 1 and strapped into a high chair, at any rate.

One time, he heard the music, started “dancing”, and looked at me expectantly. So I started nodding in time with the music, and then Jacob saw us both and started sort of flailing about, somewhat in time with the music. All three of us wound up laughing after that.

31 August, 2010 11:05PM by John Goerzen

hackergotchi for Jordi Mallach (jordi@sindominio.net)

Jordi Mallach

De mar a mar, hiking across the Pyrenees

Two weeks ago, Maria and I completed one of our dreams when we arrived in Cap de Creus, where the Pyrenean range sinks in the Mediterranean. To get there, we walked hundreds of kilometres during a month, crossed dozens of steep valleys and enjoyed one of the richest experiences of our lives.

We managed to complete this challenge without facing major problems or pains, and after the first five our six days, our legs seemed to have gotten used to the daily effort and it started to be easier and easier. Our morale kept growing as days passed and we advanced east. When I started walking on a cold and rainy morning in Hondarribia, after barely no rest in the night bus to Irún, I thought for myself that it was improbable that we'd manage to get anywhere near Catalunya, that one of us would get injuried way before, or we'd just give up and go for the easy beach vacation in the Basque Country.


Biadós refuge, under Posets

But we didn't, and after a somewhat painful start, with our boots soaking wet during the stages that crossed the enchanting Selva de Irati which ended up with me getting the biggest blister I've ever seen, we started to walk farther every day, extending the stages when we felt strong after reaching their official end. When we crossed from Nafarroa to Aragonese territory, the mental wall that I had built over the toughest stages in our quest started to fall apart. Days later, we found ourselves climbing down to Pineta, leaving Ordesa behind and enjoying a feeling that our adventure could not go better. The weather had been perfect for over a week and our legs and back were strong to go all over the way to the sea.


Cañón de Añisclo, on our way to Pineta

When we finally saw that huge blue stain on the horizon, the day before getting to the last mark, we got really excited. We had made it, but as we walked towards the cape, happiness slowly got mixed with melancholy. An unforgettable adventure was about to end, and we didn't want to face our return to the city and our routines. It had been many days surrounded only by awesome landscapes, and living without watches, with only sunlight and weariness marking the time to get in our sleeping bags.


At the very last red and white mark of our journey

We've had plenty of time to meet great people. Starting with the Navarrian brothers we met in the early stage, which provided us with a good pace to follow while our leg muscles were still building up; or Kike and Ana, who drove from Pamplona to visit us during the first Aragonese stages (thanks for the supplies!). Tomàs and Roger, young hikers from Mataró, surprised us with their maturity and experience as mountaineers; we had the pleasure to join forces during four days, walking a really cool variant through the Infiernos and Collado del Letrero which avoided going through the ghost city of Panticosa. Roger and Tomàs, we really hope to meet you soon! Andreu, Manel, Ghandi and Gaŀla visited us at the Vall de Núria and were unlucky to suffer a frightening hail and thunder storm when they left our shelter on their way back to their car. Thanks! All of you have been a very special part of our experience!

This adventure through GR 11 has been incredibly positive for us for several reasons. We've learned a lot about ourselves and strengthened our relation, and now I know how powerful drive can be; to get somewhere, no matter how far, it's really easy if you just believe you can do it and desire to get there.

Maria and I are proud of what we've done, and no wonder we're looking for new challenges. An obvious one would be repeating this experience, going through the French side of the Pyrenees, but for now, the Corsican GR 20 seems the most appealing. We'll see, next summer!

31 August, 2010 09:40PM

hackergotchi for Gustavo Franco (noreply@blogger.com)

Gustavo Franco

Frans Pop

It feels like it was yesterday that I was talking all things d-i with Felipe (faw) and Otavio during the last International Free Software Forum and discuss d-i without mentioning Frans Pop and Joey Hess at least a couple of times is definitely not the same thing.

Otavio convinced me to help and I promptly synced with him and Daniel Baumann to deliver an alpha quality syslinux-installer udeb; that was during debconf a bit after the forum, that they've all attended and I couldn't.

I feel I can't let it pass without a post, now that we've put out a notice about our loss. RIP Frans. :/

31 August, 2010 09:05PM by Gustavo Franco (noreply@blogger.com)

hackergotchi for

Luke Faraone

Generating manpages with help2man

To quote the ftp-masters REJECT-FAQ :

  • Write manpages. Yes. Really. Write them. Well. It’s basically: If your program/tool has a help and version commandline option you can simply run help2man and have a working start.

What may not be obvious to the recently REJECTed developer is actually how to use help2man. To try t0 explain the process a bit more verbosely, I took the liberty of writing a tutorial on the Debian wiki. Comments and corrections are welcome.

Of course, help2man-generated manpages are no substitute for real, hand-written manpages made of sweat, blood, and the Maintainer’s tears, and it won’t work for all packages. This is just a start, and is much better than no manpages at all.

There was a discussion on #debian-devel a couple of days ago when I brought up my creation of the above, and some wondered if it wouldn’t be better to add hooks to man-db to allow package maintainers to enable manpage generation at runtime. I’m not sure if that idea will ever make it into a proposal, but, if the details of the implementation were worked out, would be much better than the above, manually generated method.

31 August, 2010 05:14PM by luke

hackergotchi for Joey Hess

Joey Hess

swarmnation story

Swarmnation is a neat game, but I'm not sure if it's for the reasons its authors intended. It may be interesting mostly because of its bugs. Read on for spoilers and the story that developed from an apparently abstract time waster game.

When I first saw the game, I saw a grid of squares moving around. I was obviously one: A (Blue) Square. There seemed to be no pattern to the movements. So, it seemed the game represented random passers-in-the-night on the net, unable to communicate except by dashing back and forth.

Then after a few minutes, a geometric shape was highlighted in yellow from out of the mass of squares. Woah! I'd been missing something here. It turned out my display was too small, and I had not noticed that the gameboard scolled over to show a tetris-style "next shape" display. Which the other squares had been busily trying to make before time ran out.

Now all their movements made sense. Now with a shared goal, we could communicate. Some of us were trolls and blocked shapes from forming. A few of us became leaders, boldly taking that center position in the hollow-square-with-spot-in-the-middle shape. Most of us herded into place as soon as a shape began to form, and stayed there, frantically hoping our neighbors would also conform and keep property values high. We were playing the game. We were accumulating scores.

We split into two groups, both playing the game, and then some of us defected from one group to the other, which seemed to be doing better at making a particular shape, and there was no reason to go back to that first group, I felt strongly that I was part of the second, better, group.

Then, as I was getting bored and feeling the neighbors all around stifling, I noticed my square highlighted yellow for a shape that I was not currently part of. Oh, this must be a bug I thought. I hacked around, and got it to happen again. I thought maybe it was just being a bit fuzzy in accepting shapes, but no, it turned out to be more interesting.

The game didn't care if we stayed in the shape. Just being part of the shape for an instant was enough. With this realization, whole new ways to play the game opened up. Dash left and right, near a forming shape, and you'll probably, for an instant, be part of it. Hang back and have your fun, spot an instant to plug a hole, and then get out and let someone else also take part. Try to form the same shape in both groups. And so on.

So a grid of squares hooked up to keyboards on the net has let me watch the invention of politics, rebel from conformity and hack the system, in an hour? That's what games are about!

31 August, 2010 05:02PM

Dominique Dumont

Improve config upgrade – Ep 03 – GSoC results

Hello

Thanks to Google, Debian and more importantly Krzysztof Tyszecki, the “accept” feature discussed in episode 2 is now implemented and tested in Config::Model 1.206 and Config::Model::Itself 1.216.

Next task is to create a minimal model to enable upgrades for cupsd.conf.  This minimal model will heavily use the new “accept” feature coded during this GSoC. Cups configuration is an interesting use case because:

  • cupsd.conf is often upgraded (at least in Debian/sid)
  • its syntax and structures are more complex than configuration found in INI files (although, cupsd.conf needs a new apache like read/write backend :-/ …)

Next episode should provide more details on the work required to provide this minimal model.

All the best


31 August, 2010 03:46PM by ddumont

hackergotchi for Steve McIntyre

Steve McIntyre

Frans Pop

My good friend Frans Pop died on the 20th of August, just over a week ago. We had worked together for several years within Debian (especially within the Debian CD team), and we had become firm friends during that time. He was great to work with, always ready to help design new features or pick holes and find the bugs in the stuff I was developing myself, happy for others to dig into his own projects. On the more personal side, we met up many times at different Free Software events like DebConf and FOSDEM, and also for pure social things like BBQs and parties. We shared a lot of good times.

Last week, along with some other Debian people who had worked with Frans, I headed over to the Netherlands for his funeral. His family also asked me to talk about him, and I was honoured to do so. I spoke briefly about Frans' work in Debian, highlighting the areas where he worked and the number of people he had worked with in various teams. I also told the group about the massive number of messages of sympathy and condolence which I had been asked to pass on from all over the world. His family knew that Debian was important to Frans, but were not aware of just how wide his influence and effect had been. They were especially surprised and grateful that people had travelled so far for the funeral; I told them that I would not have missed it for anything.

Rest In Peace, my friend. You will be missed.

31 August, 2010 02:00PM

Iustin Pop

Spooky harddrive

For a couple of weeks, one of the harddrives in my server has started to behave strangely. The RAID controller has started first reporting some drive timeouts (daily, when the drive runs a short or long smart test), and now it even kicks it out of the (RAID1) array.

And yet, during normal operation, there's no read error or write error that I can trigger, and there are no reallocated sectors (according to smart). The only time when I can reproduce the error is:

  • the drive is running a SMART short or long self-test
  • a SMART query for the drive is being done (e.g. -c, -l selftest, etc.)

What happens when both these conditions are met? The the SMART query is taking ages (as in ~20-30 seconds). This might cause some such high delays that the drive itself will report a timeout error (if any I/O takes place at the same time), and log an error in its internal error log.

Another harddrive (identical brand): ~3s for SMART query during selftest and I/O load, no issues whatsoever. For this harddrive, smartctl -a reads a while, and then:

Error SMART Error Self-Test Log Read failed: Input/output error
Smartctl: SMART Self Test Log Read Failed
…
real    0m39.029s

The timeout above also has generated lots of errors in the drive's error log. I don't know how to read these properly, but in any case they don't seem too scary:

Error 144 occurred at disk power-on lifetime: 13552 hours (564 days + 16 hours)
  When the command that caused the error occurred, the device was doing SMART Offline or Self-test.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  10 51 00 80 ae 39 40

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  61 80 70 80 ae 39 1c 08  41d+08:07:45.052  WRITE FPDMA QUEUED
  b0 d0 01 00 4f c2 00 08  41d+08:07:45.038  SMART READ DATA
  ec 00 01 00 00 00 00 08  41d+08:07:44.958  IDENTIFY DEVICE
  2f 00 01 10 00 00 00 08  41d+08:07:44.957  READ LOG EXT
  61 80 70 80 ae 39 1c 08  41d+08:07:37.960  WRITE FPDMA QUEUED

For some of the errors, all preceding commands are WRITE FPDMA QUEUED, but all are during a "SMART Offline or Self-test" phase.

When a self-test is not being done, reading all the SMART data (smartctl -a) is very very quick, taking half a second.

The only thing I can think of is that the drive's own area for storing SMART data is unhealthy, and reading it takes time, and a concurrent SMART test and I/O load makes it hard for the drive to do so. But again, I can't trigger any real I/O error, nor at the beginning of the drive neither at the end, so…

This also happens when the drives is connected to a plain SATA port, skipping the RAID controller, so it's not just the controller playing games on me.

I'm really confused now. Given my previous experience, this drive will die, should already have died, and yet, no I/O errors, just some timeouts. Do I just need to wait a couple more weeks?

31 August, 2010 06:42AM

August 30, 2010

hackergotchi for Steve Kemp

Steve Kemp

jQuery in use upon this blog

Blog Update

I've just updated the home-grown javascript I was using upon this blog to be jQuery powered.

This post is a test.

I'll need to check but I believe I'm almost 100% jQuery-powered now.

AJAX Proxies

It is a well-known fact that AJAX requests are only allowed to be made to the server the javascript was loaded from. The so-called same-origin security restriction.

To pull content from other sites users are often encouraged to write a simple proxy:

  • http://example.com/ serves Javascript & HTML.
  • http://example.com/proxy/http://example.com allows arbitrary fetching.

Simples? No. Too many people write simple proxies which use PHP's curl function, or something similar, with little restriction on either the protocol or the destination of the requested resource.

Consider the following requests:

  • http://example.com/proxy.php?url=/etc/passwd
  • http://example.com/proxy.php?url=file:///etc/passwd

If you're using some form of Javascript/AJAX proxy make sure you test for this. (ObRandom: Searching google for inurl:"proxy.php?url=http:" shows this is a real problem. l33t.)

ObQuote: "You're asking me out? That's so cute! What's your name again? " - 10 things I hate about you.

30 August, 2010 11:17PM

Tim Retout

Hacking

Here in the UK we've had a bank holiday weekend. Usually I would have gone to Cambridge for the Debian BBQ, but this year I joined forces with Thomas Adam for some SmoothWall Express on Debian hacking.

There are several challenges involved in moving the SWE3 code from its native distribution to Debian; this weekend we worked around some of the permissions problems.

On SWE3, the web server and most of the service daemons run as the user 'nobody'. This means that the web server can write out configuration files as the same user as everything else; it can also read the system log files. When the web interface needs to run a privileged action (like setting firewall rules), it sends a command to 'smoothd', which is a daemon running as root. (Admin ssh access is always directly as the root user.)

However, web servers in Debian tend to run as user 'www-data', which does not have permission to read log files. Similarly, writing out configuration files as that user would mean that any cgi script (not just ones in the swe3 package) could modify them. I would prefer to run the swe3 cgi scripts as a separate user, and grant this user permission to view logs etc. This debian-webapps thread makes it sound very easy, but if you want to do that with cgi scripts rather than fastcgi, I think you have to run a separate web server for each user.

On Sunday afternoon, in a dramatic display of corner-cutting, I gave up on that approach and added www-data to the 'adm' and 'proxy' groups in the postinst. Thomas heroically patched all the cgis to call the "config writers" via smoothd, although I'm wondering whether some careful use of the chgrp command in the postinst might be better than running that code as root.

Another hack: in order to actually start a firewall, we needed to know which network card is the "RED" interface, in SWE3 terms; i.e. which one is meant to be the public-facing network device. It's also nice to know which one is "GREEN". So two debconf questions and some hardcoded magic numbers later, we have a basic firewall init script. Lovely.

Oh, and at some point I removed the htaccess file, so any user on your network can mess with your firewall. Should probably fix that.

Today I started some awful scripts which use Simple-CDD to build an iso containing all the packages we want. We are going to need to extend the networking configuration in the installer to set up multiple network cards. Then we need to figure out a nicer way of assigning IP addresses to devices; unlike on the proprietary version of the product, there seems to be no web configuration of network settings in Express. I've not figured all of this out yet.

So, in summary: we are deliberately trading some technical debt in order to quickly produce an initial release that might interest people. (But please note the disclaimer of warranty in the README file in that directory.) And in other news, I've been working at Smoothwall Ltd. for just over one year. Hmm. So this is what they call 'experience'.

30 August, 2010 08:38PM

Petter Reinholdtsen

hackergotchi for Martín Ferrari (Martin.Ferrari@gmail.com)

Martín Ferrari

Some LaTeX stuff

The last few weeks I have been using LaTex a lot, to write the final report for my master's course. During that period I found a couple of LaTeX goodies that might be interesting to share: the memoir class, gnuplot integration, and some stuff to help preparing cover pages.

The memoir class is a kind of all-in-one package. It is meant to be used in place of the book and report classes, but it can also replace simpler environments, such as article. It provides many ready-to-use templates, and loads of commands to easily customize them. It seems to be specially tailored for dead-tree publication, dedicating an entire chapter in the manual to page layout.

It also aims at removing the usual cruft you have to add into any medium sized project, it is macro-compatible with: abstract, appendix, array, booktabs, ccaption, chngcntr, chngpage, dcolumn, delarray, enumerate, epigraph, framed, ifmtarg, ifpdf, index, makeidx, moreverb, needspace, newfile, nextpage, parskip, patchcmd, setspace, shortvrb, showidx, tabularx, titleref , titling, tocbibind, tocloft, verbatim, and verse. Furthermore, it provides functionality equivalent to the following packages: crop, fancyhdr, geometry, sidecap, subfigure, titlesec. In the end, you have a project that only needs a couple of packages, and a few customisation commands, which is nice and also eases distribution.

Other nice thing I have found is that there is not one, but many ways of merging gnuplot graphs into your text while having LaTeX typeset all the labels. There is some LaTeX packages aimed at this, but I have more success using a special gnuplot terminal. Again, there is more than one option: eepic, epslatex, latex, lua, mp, pslatex, pstex, pstricks, texdraw, and tpic. While I could not try them all, I tried a few and the easiest and prettiest was epslatex. This terminal creates two files: a EPS file, as would have been created with the usual postscript terminal, except that it does not contain any text; and a LaTeX snippet meant to be included with \input{foo}. Finally, I could generate graphs that match the rest of the document!

To end this post, a couple of things about creating the dreaded cover page. First, a suggestion: don't fret too much about finding a ready-made template, once you understood the basics of how to insert arbitrary spaces around text, it is quite easy to roll your own cover! Having said that, the memoir manual has some sample cover pages that can be useful to use as a base, and there is another really useful resource I have found: titlepages.pdf, a collection of 40 sample title pages with source code for you to choose.

Tags: Planet Debian, Planet Lugfi, latex

30 August, 2010 04:55PM by Martín Ferrari (Martin.Ferrari@gmail.com)

hackergotchi for

Raphaël Hertzog

Understanding Membership Structures in Debian and Ubuntu

Debian and Ubuntu have a set of official membership roles that can be granted to regular contributors. Those roles come with rights that enable the contributors to do their work and to participate in the project governance (elections and other official decision-making processes). It’s also a way for the distributions to acknowledge the work done: most contributors are proud of the status they reached.

The membership structure plays an important role in the development of a distribution: it defines the kind of contributors that are welcome in the project, it sets expectations of the project towards its contributors and defines their rights. In the end, this shapes the project’s ability to recruit new contributors to keep the project alive and kicking. This article introduces the existing statuses in Debian and Ubuntu, and defines the — sometimes confusing — jargon associated with them.

The Debian Case

Debian only has two types of official members: Debian Developers (DD) and Debian Maintainers (DM). The rights of the developers are codified in the Debian Constitution while those of the maintainers have been defined in a general resolution of 2007. The Debian Maintainer status is still mostly documented in a wiki page. The integration of this new status in Debian’s official processes has been slow to come largely because it was introduced — at that time — without enough negotiation with the involved parties. Nowadays, it is preferred that people get the DM status before applying for DD.

DM is a very limited role: maintainers can only upload packages that already have their name on them (either in the Maintainer or Uploaders field) and a specific flag (DM-Upload-Allowed: yes) that only Debian Developers can add. They have no other rights and limited access to Debian’s resources.

Besides those official roles, there are also maintainers of packages that have no official status within Debian except that they are listed in the “Maintainer” field of the package. They are doing the maintenance work but all uploads are done by a Debian Developer after verification of the work done (this is called “sponsorship” and is the only way to start with official packaging work). Once the DD trusts the maintainer, the developer will typically ask the maintainer to apply for DM status in order to be relieved from the sponsorship work.

In the end, that makes three different kind of package maintainers and a lot of confusion when you discuss membership issues… in particular when the New Maintainer process is the path that you follow to become a Debian Developer. Don’t be fooled by the names when reading Debian’s documentation!

The Ubuntu Case

Ubuntu had, from the start, an official Ubuntu Member status that includes all contributors: developers of course, but also documentation writers, artists, translators, etc. This status notably grants the right to vote in elections of the Community Council, the right to participate on Planet Ubuntu, and the @ubuntu.com email alias.

For developers, the situation is more complicated: the wiki page lists no less than five different statuses. Initially, developers were split between Ubuntu Core Developers and the MOTU (Masters Of The Universe). The latter were responsible of the universe/multiverse sections of the archive while the former also had upload rights for the main/restricted sections. But, inspired by the Debian Maintainers concept and facing concrete problems in terms of archive management, they changed their infrastructure to offer more fine-grained control on package uploads.

Ubuntu can now grant upload permissions on a package-per-package basis, but it can also delegate the right to grant upload permissions with the same granularity. This lead to the new Per-Package Uploader status which is simply an Ubuntu Member with upload rights on a limited set of packages where they have a specific expertise. The more generic Ubuntu Developers status now encompasses members of various development teams that have been delegated the right to manage upload permissions on a (usually large) package set (the current teams are Ubuntu Desktop, Mythubuntu, Kubuntu, and Edubuntu). Those teams can define their own policy to add new members provided they follow the basic rules defined by the Developer Membership Board (see this wiki page).

Ubuntu Contributing Developer is an intermediate status for someone who is not yet ready for one of the other developer statuses but who has still shown enough commitment to be an Ubuntu Member.

All those statuses can be obtained in a similar way: you prepare a wiki page listing your past contributions, you collect testimonials from existing members that you have worked with, you add yourself in the agenda of the next meeting of the board (or council) that grants the status that you seek, and you attend the meeting. The members of the board will decide whether you are ready for the status (or not) based on what you provided in the wiki, based on your answers during the meeting (and on a mailing-list for developers), and based on what others have to say about you.

The most important boards are usually elected by the community while others are commonly appointed by the community council. Those governance bodies include Canonical employees but not as many as one would expect: two out of eight in the Developer Membership Board, two out of eight in the Community Council, but all six members of the Technical Board. The last figure, while not intended, is not surprising given the high expectations set on potential members of the technical board. Mark, as the founder, is the only person to have a permanent seat on both the Community Council and the Technical Board.

Comparison of the Statuses Between Debian and Ubuntu

The following table summarizes the rights given to each developer role in the two projects (Put the mouse over the abbreviations to know what they are referring to).

Rights Debian Ubuntu
DM DD UM PPU/UD MOTU UCD
Package maintenance via sponsorshipYN/AYYYN/A
Official email alias-YYYYY
Participate in votes for members-YYYYY
Participate in votes for developers-Y-YYY
Upload rights restricted to pre-approved packagesY--Y--
Upload rights restricted to a section of the archive----Y-
Unlimited upload rights-Y---Y
Number of contributors (as of 2010-07-27)117904462278563

Please note that the number of contributors are not 100% accurate for Ubuntu. A contributor can have multiple statuses (direct membership to a launchpad group) granted over time (while gaining experience). The problem has been mostly avoided by calculating differences between number of members of the various groups but it’s not perfect and it can’t be: some MOTU are also PPU for packages in main and it’s legitimate (but I only counted them as MOTU and not as PPU). Another limitation is that members of some administrative teams are included indirectly in many teams and thus appear in the count while they should not.

Anyway, this simple table makes it obvious that Ubuntu’s structure offers a broader choice of statuses. They acknowledge the work of all contributors from the start while still giving the most critical rights only to those who have proven that they deserve them. Despite this difference, Debian still has a significant advantage in terms of number of developers. That number does not tell the whole story though: the Ubuntu contributors include many Canonical employees (e.g. 36 out of 63 core developers have a @canonical.com email registered on their launchpad account) that are likely to spend more time working on the distribution than the average Debian member. But even if comparing person-hours would be a challenging thought experiment, in practice it’s of not much interest if both projects continue to cooperate and if more and more of the contributions flow in both directions.

Debian is aware of the shortcomings of its structure. Changes to better accommodate non-packagers have been discussed several times already. The last efforts in that direction were unfortunately perceived as a solution ready to go rather than a proposal to be discussed, and the project got quickly buried by a general resolution (GR). Even if that resolution invited for further discussion and a new proposal, the truth is that when someone’s initiative is “corrected” by way of GR, it usually kills any motivation to go forward.

Possible Evolution?

On the Ubuntu side, the infrastructural changes were completed recently and they don’t expect any further change in the near future. They do plan, however, to expand usage of those new features so that more teams benefit from the possibility to control upload rights on packages that are relevant to them, and so that more individuals developers apply to become Per-Package Uploaders on packages that they know very well.

On the Debian side, a recent discussion on the debian-project list brought back the topic of the bad terminology and it was agreed that the “New Maintainer process” should be renamed into something else (“New Developer process” has been suggested). But Christoph Berg — Debian Account Manager and hence heavily involved in the New Maintainer Team — suggested that Debian would be better off implementing the long-awaited membership changes before trying to update all the documentation. It would certainly imply some more vocabulary updates. Later in the discussion, he confirmed that membership reform is on the top of the TODO list of the new maintainer team (just after the rewrite of the nm.debian.org website).

What can be expected from this reform? The following answers are my own guesses based on my experience of Debian, but the project hasn’t decided anything yet.

  • First of all: a new status for contributors that are not packagers. The tricky part will be defining the process to follow and the rights granted.

  • Changes to the technical implementation of the DM status. The current implementation does not allow to give upload rights to a single DM if two are listed in the Uploaders field of a package (and both might not have the same experience for that package). Furthermore, it suffers from annoying restrictions like the inability to upload new binary packages.

  • A change of the Debian constitution to integrate those new statuses is almost unavoidable.

  • Other more invasive changes have been proposed like replacing the NM process by a simple designation by other DD, but it’s unlikely to happen. The NM process can already be greatly simplified by the application manager if the applicant can show good testimonials from other developers and if he has a track record of real contributions (e.g. as witnessed by changelog entries in Debian packages).

Almost two years have elapsed since the previous efforts in that direction, the new maintainer team has recruited new members and is in a general better shape. Hopefully, the next episode of this saga will have a better outcome.

This article was first published in Linux Weekly News. In a comment, Mark Shuttleworth tried to explain how the Ubuntu community is being setup.
Flattr this Share/Bookmark 9 comments | Support my work

30 August, 2010 01:22PM by Raphaël Hertzog

hackergotchi for

Matt Zimmerman

Traveling at home

For me, the most enjoyable part of traveling is the inspiration that I derive from visiting different places, talking to people, and generally being outside of my normal environment. This bank holiday weekend, when so many Londoners visit faraway lands, my partner and I stayed in London instead, and my sought inspiration closer to home. The city has been delightfully quiet, and in contrast to the preceding week, the weather was mostly pleasant, apart from the sudden downpours the BBC described as “squally showers”.

Photo of deer in Richmond Park

Photo credit: Márcio Cabral de Moura


We spent Saturday afternoon in Richmond Park, a 2500-acre nature preserve easily accessible via public transport from London. The plentiful oak trees, fallow deer, and various species of water fowl made it easy to forget the city for a while. Having visited a few times on foot, I think it would be fun to cycle next time, and see different areas of the park.

Afterward, we had dinner at a tapas restaurant in Parsons Green which offered notably excellent service as well as good food. By this time, it was nearly 7:00pm, and we took a chance on getting last-minute theatre tickets to see Jeff Goldblum and Mercedes Ruehl in Neil Simon’s The Prisoner of Second Avenue. We arrived at the theatre just in time for the show, which was not sold out, and in fact had quite reasonable seats available. The show had several good laughs, holding up fairly well after nearly 40 years since the original Broadway production.

Photo of the exhibition at the Design Museum

Photo credit: Gary Bembridge


On Sunday, we visited the Design Museum for the first time. Having been disappointed by the nearby Fashion and Textile Museum, our expectations were not too high, but it turned out to be very worthwhile. The Brit Insurance Designs of the Year exhibition showcased designs from architecture, fashion, furniture, transport and more. Some of my favorites were:

  • Pachube, a system for sharing real-time sensor data and fostering a community around its uses
  • Grassworks, a line of flat-pack, self-assembled furniture constructed entirely from bamboo, without glue or fasteners
  • The Gocycle, a lightweight (16kg) electric bicycle for city dwellers
  • The Eyewriter, a low-cost eye tracking system powered by open source software
  • The Land Glider, a small (1×3 meters), enclosed electric vehicle which maintains stability by leaning into turns
  • Analog Digital, a clock which is operated by a person covering and revealing segments using paint
  • BMW GINA, a fabric-skinned shape-shifting car concept

I was delighted to see that there were a half dozen or so exhibits which related to open source software.

Even including the theatre tickets, it was a very inexpensive holiday compared to traveling overseas, and generated a lot less CO2. I was more than satisfied with the inspiration available within a relatively small radius. I don’t think I’ll give up traveling, as I really enjoy seeing friends who live far away, but I think I’ll be more inclined to stay home during peak travel times and enjoy local activities.


30 August, 2010 01:17PM by Matt Zimmerman

Julian Andres Klode

Google Public DNS blocks wikileaks.org (Update: No, they don’t)

It seems that Google is blocking wikileaks.org in its ‘Public DNS’ servers (8.8.8.8 and 8.8.4.4):

; <<>> DiG 9.7.1-P2 <<>> @8.8.8.8 wikileaks.org ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 50227 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;wikileaks.org. IN A ;; Query time: 2457 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) ;; WHEN: Fri Aug 27 18:10:43 2010 ;; MSG SIZE rcvd: 31

Update: Sorry Google, for me doubting you. As it turns out, you did no evil, you were just a bit slower than the others.


Filed under: General

30 August, 2010 01:15PM by Julian Andres Klode

Richard Darst

The DebConf registration process

The DebConf registration team has the hard job of coordinating accommodation, food, and payments for hundreds of people.

There are two major dates here: the sponsored registration deadline, and the reconfirmation deadline. There is also the date of opening registration, but that's usually more a matter of "how soon can we?" than "when should we?"

The sponsored registration deadline (April 15 for DC10) is the deadline for requesting sponsored accommodation, food, or travel. This allows us to figure out how much we'll have to pay for attendees - attendees who register after this point should pay enough to cover their own costs.

The reconfirmation deadline (June 10th for DC10) is used as a ping for attendees, particularly the sponsored ones. Attendees must reconfirm they will attend, so that we don't waste money reserving more food/rooms than we will have people using them. This deadline usually depends on the date we must give firm numbers to our accommodations.

Historically, registration hasn't ever closed, anyone can come, just if you register too late you won't necessarily get any free stuff (and definitely no free food/accommodation). The deadline for food and accommodation themselves has been based on the logistics of the conference itself - DC9, when we ran out of physical rooms for accommodation, and DC10, when we had to give firm housing numbers to Columbia. Food has tended to be easier as caterers could take updates on shorter notice, usually the day before.

DebConf8 began a system where attendees could pay a registration fee if they desired. This was encouraged, for example, for attendees whom could get this fee reimbursed by their company, but was not required nor encouraged of sponsored attendees. DC8-9 had two classes of fees: Professional, covering the actual costs, and Corporate, covering about double of professional and for companies or registrants whom could provide extra financial support for DebConf. DebConf10 added an extra layer of "pay per day" on top of this.

It's up to the registration team to pin down attendee numbers as early as possible, as this is usually the biggest cost. DebConf provides food and accommodations to a huge number of people, but the numbers are constantly changing. It's hard to know how many people will drop out at the last minute. It's hard to know how many people will actually pay a corporate or professional fee, as opposed to mistakingly selecting it when they'd rather something else. Our registration system can't support all the little intricacies of how much an attendee will cost us, or pay us. Without knowing how many people will attend, how can we accurately get the right number of meals and right number of rooms? Sponsored people may always choose to not eat some meals with us, possibly saving us money there. How many people with travel sponsorship will actually request their full reimbursement?

The registration system, Pentabarf, is used to track attendance numbers, but it isn't completely reliable. Not everyone in it will attend all days, and most people who aren't staying with us don't have accurate dates of attendance. Thus, it can only be used as estimates, not for all decisions.


The difficulties above are challenges for the registration and budgeting teams, but are not too bad - they just require thought, time, and answering many questions from attendees.

30 August, 2010 06:37AM by Richard Darst (rkd)

Russell Coker

Interesting Developments in Islamic Culture

Shereen El Feki gave an inspiring TED talk about Islamic youth culture [1]. She shows some interesting exerpts from the 4SHBAB TV network which is known as “Islamic MTV“, the music video from the US was of particularly high quality – while I expect high quality videos to be made in the US I don’t generally expect quality Islamic videos from the US (or anywhere else really). She also notes that the videos show a “kinder gentler face of Islam“.

She contrasts that with a clip by Haifa Wehbe [2] – a Lebanese pop star who appears to have a lot in common with Britney Spears (Shereen describes her as a “pan-Arab pinup-girl”).

She cites the comic “The 99” which has Islamic super-heros who represent the 99 attributes of Allah. One thing that I found very interesting was that the 99 character Jemi is shown using what is obviously an OLPC.

This seems to indicate some very positive trends for the interaction of Islamic culture with the European and American culture which is Christian and Atheist dominated.

Kavita Ramdas gave an interesting TED talk about radical women embracing tradition [3]. She highlights a woman who teaches girls to read in Afghanistan based on the religious edict that every Muslim should read the Koran and a Croatian Lesbian choir that sings traditional fold songs.

Naif al-Mutawa gave an interesting TED talk about the creation of “The 99″ [4]. He starts by comparing some of the characters in the Justice League of America to Christian traditions and then describes the back story behind his Islamic super-heroes. His major aim is to provide positive role models for Muslim children.

Apparently a cross-over production involving characters from The 99 and the Justice League of America is being developed at the moment – Wonder Woman wears clothing that is less revealing than usual though. It’s worth noting that Naif is a practicing psychologist who’s clients include victims of political torture, so he seems to have some insight into the problems that most people will never have.

30 August, 2010 06:24AM by etbe

August 29, 2010

hackergotchi for Steve Kemp

Steve Kemp

Proxies and Robots

I don't like repeating myself, but I'm very tempted to past my mini-review of the Roomba Vacuum Cleaner robot into this blog.

Instead I will practise restraint and summerise:

  • It works. It works well.
  • It is a little noisy, but despite this it is great fun to watch.
  • It takes a long time to clean a few rooms, due to the "random walk" it performs. Despite this it is still fun to watch and actually useful.
  • Have I mentioned I grin like a child when it doesn't crash into things, and hums away past me on the floor?

£250. Worth. Every. Penny.

In more Debian-friendly news I've been fighting HTTP proxies today. I've noticed a lot of visitors to the various websites I host are logged as 127.0.0.1 - which is an irritation. My personal machine looks like this:

Internet -> Apache listening on *:80 -> thttpd on 127.0.0.1:xxxx

(This has been documented previously - primarily it is a security restriction. It means I can run per-UID web-servers.)

I had previous added a patch to thttpd to honour the X-Forwarded-For: header - so that it would receive the correct remote address passed on from Apache. However the fact that so many visitors are logged as coming from 127.0.0.1 meant it wasn't working 100% correctly, and I wanted to understand why.

Today I used ngrep to capture the incoming headers and the source of the problem became apparent:

skx:~# ngrep  -d lo  X-For ' port 1007'
..
T 127.0.0.1:41886 -> 127.0.0.1:1007 [AP]
  GET /about/ HTTP/1.1..Host: images.steve.org.uk..If-Modified-Since: Mon, 07
   Jun 2010 15:24:33 GMT..User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-U
  S; rv:1.9.1.10) Gecko/20100701 Iceweasel/3.5.10 (like Firefox/3.5.10)..Acce
  pt: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8..Accept
  -Language: en-us,en;q=0.5..Accept-Encoding: gzip,deflate..Accept-Charset: I
  SO-8859-1,utf-8;q=0.7,*;q=0.7..Referer: http://images.steve.org.uk/2009/11/
  20/img_0471.html..X-Forwarded-For: 127.0.0.1, 11.22.33.123..Cache-Control:
  max-age=0..X-Forwarded-Host: images.steve.org.uk..X-Forwarded-Server: image
  s.steve.org.uk..Connection: Keep-Alive....

I bolded the important input; just in case that didn't jump out it was:

X-Forwarded-For: 127.0.0.1, 11.22.33.123

My patch to thttpd was making it read the first address, rather than the second - which meant that requests were being logged as coming from 127.0.0.1 and avoiding my efforts to track sources.

Now I understand the problem - The X-Forwarded-Host header is being tweaked by a proxy server, such as Squid, upstream of my server.

For the moment I've updated the thttpd patch to read:

        else if ( strncasecmp( buf, "X-Forwarded-For:", 16 ) == 0 )
          { char *tmp = NULL;

            /* Jump to the header-value  */
            cp = &buf[16];
            cp += strspn( cp, " \t" );

            /*
             * If the first change is a 127.0.0.1, then we'll
             * jump over it.  Cope with Squid, et al.
             */
            if (  ( tmp = strstr( cp, "127.0.0.1, " ) ) != NULL )
              cp = tmp + strlen( "127.0.0.1, " );

            /* Parse the IP */
           inet_aton( cp, &(hc->client_addr.sa_in.sin_addr) );
        }

That's not perfect, but the alternative would be:

  • Install a patched version of libapache2-mod-rpaf to add a X-HONEST-REMOTE-IP
  • Update thttpd to use that header.

Or something equally hacky and security-by-obscurity-alike.

Really I just want a simple way of always getting the correct remote IP. Shouldn't be so hard, should it? *pout*.

ObQuote: "You don't mess with fate, Peanut. People die when they are meant to die. There's no discussion. There's no negotiation. When life's done, it's done." - Dead Like Me.

29 August, 2010 10:16PM

Bastian Blank

New software: python-dvdvideo

After a long time, I decided to write again. I decided to start with software I wrote for my own usage that could be usefull for other people. I'll start with python-dvdvideo, a DVD-Video reader written in Python 3, and the reference tool dvd-video-backup-image, a generic DVD-Video dumper. Lets see, if this blog will see more postings in the future.

Intention

I started to write this software, because libdvdread was often unable to decipher my newly purchased video DVDs. libdvdread expects a rather valid structure of the filesystem and other metadata on the disk. It will forcefully bail out on several error conditions. So I often ended patching libdvdread to make dvdbackup able to read the new disks.

Usually there are two ways to create backups of such DVDs, as files or complete images. Dumping them as files have large problems if there are certain defects in the filesystem, like some space is referenced in several titlesets. I have a disk that produces 25GiB of output during such a dump. So the less problematic way to do that is to dump the complete image. That is the way I used in the tool I built on top of this.

Parts

The software is devided into several parts. First a small UDF reader. On top of this comes a DVD video reader. It makes use of libdvdcss wrapper. All of this is used to implement a small tool to dump whole images. I will describe this parts here.

UDF reader

The UDF reader implements a minimal set of features. I implemented only the stuff I found as needed and used in the available DVDs. This reader allows to read the lowlevel UDF, used as base of all video DVDs.

DVD video reader

The dvd video reader uses the UDF reader to get the necessary information from the disk. Again this reader is quiet smallish. It only trusts the UDF for the starts of titlesets and expects that anything else is listed in the info files. This allows to read even discs with broken filesystems, which are really common.

libdvdcss wrapper

The libdvdcss wrapper is implemented using ctypes. The ctypes library allows easy access to functions defines in shared object. The library allows calling of the functions and maps arguments and return values to the Python datatypes. This wrapper allows me to read also encrypted DVDs.

Image dumper

This tool allows to dump a encrypted video DVD into a file. It tries to detect encrypted (video/vob files) and unencrypted (info files, otherwise used space) parts of the disk. This way it is able to dump anything, as long as it can read the filesystem and info files. However, some discs contains overlapping areas, which can't be that easily deguised.

The tool includes a small conflict resolver that handles overlapping parts. It uses a set of rules to allow some types to coexist and some to be modified. On of the rules relabels things included in an info files but also a title vob as always unencrypted. With this resolver, most of the problems can be handled and we get a playable result.

License and distribution

This package is licensed GPL 3 or later. It is for new distributed via Alioth.

Conclusion

This tool allows me to dump all video DVDs I got my hands on in the last time. It allows me to watch the videos on my notebook that have no optical disc reader on its own. Maybe someone may need such a tool also.

29 August, 2010 05:20PM by Bastian Blank

hackergotchi for

Julien Blache

forked-daapd: new features, Squeeze

A number of things have happened in and around forked-daapd in the last month or so, so let’s review the new features and the plan for Squeeze.

On the features front, Kai Elwert has done a lot of work since July to implement missing features at the DAAP and DACP level to get better support for Remote:

  • playlists can now be played from Remote;
  • listings are sorted in a way that’s closer to what you get from iTunes;
  • sort headers are now generated when requested so Remote can display the A-Z quick access list.

Also, forked-daapd can now remember which speakers were selected before shutdown and attempts to automatically reselect these speakers the next time around. Speakers that were selected will be reselected if they appear at most 5 minutes after startup and the player isn’t running at that time.

On the Squeeze front, a viable snapshot of forked-daapd will release with Squeeze. This snapshot doesn’t have all the Remote improvements listed above, although it’s got the playlist support, can remember the speaker selection and includes bug fixes.

My plan is to provide backports through backports.org once Squeeze is released and for as long as possible after that.

There’s always more in the works, so stay tuned =)

29 August, 2010 02:38PM by jblache

hackergotchi for

Luca Bruno

Too many gurus spoil the plug

Being a rather patient and peaceful guy, I acknowledge that perfection is a difficult goal and I rarely rant publicly about troubles I’ve stumbled upon.
Today however, I feel I have to wholeheartedly agree with Bernd about Guruplug: it has been a waste of money.

I received mine in May, with the order placed and payed in February. First thing noticed is the issue with the power supply: I really think they forgot QA testing on these machines, as my PSU (and many others, just skim through the official forum) blew up just an hour after power-up.

I wasn’t lucky enough to admire over-heating and internal (mis-)cooling, as it went immediately through GlobalScale sales department for a RMA under warranty.

And then I waited for GlobalScale, for an actually working unit. And still I am, it’s almost September now. Patiently waiting (hoping, I’d say) for some answers.

I’m not sure who to blame here, Marvell, GlobalScale or both, for this issues with regards to QA, design and sales. But I’m quite sure the final result has been already perfectly described: a major fail.


29 August, 2010 01:28PM by kaeso

hackergotchi for bzed.de

Bernd Zeimetz

the guruplug server plus - major design and qa fail

As a lot of people are coming to my blog to read the installing instructions for Debian on the GuruPlug Server Plus, I shall not hide my opinion about it: It is a major design and QA fail. Don't waste your money on it.

The power supply

Although I've ordered the Guruplug pretty early with the promise, that I'd have it in April, it arrived at the end of May due to QA issues with the power supply. While I appreciate that they didn't deliver broken power supplies, I would have preferred not to receive one which was "fixed" by somebody who uses the soldering iron like an axe. Here are some macro photos to show the gory details:

GuruPlug Server Plus PSU 1 GuruPlug Server Plus PSU 2 GuruPlug Server Plus PSU 3

Software issues

The version of UBoot which shipped with the device was only able to boot from NAND and network. Booting from USB failed and ext2 support was missing, too. Didn't have a look if the community came up with a fixed UBoot version yet, but in my opinion a piece of hardware for >100 EUR should not have such flaws.

Thermal issues

Using the Guruplug with more than one 100 MBit/s connection is just not possible, as it would toast itself to death. For the details have a look at this discussion in the NewIT forum, it links to a lot of interesting photos and postings. This issue is a major design and QA failure. Even without knowing what the datasheets say, it is easy to imagine that a thin piece of alloy is not the proper way to cool a CPU and network chip. Especially not when it is mounted with cheapish pads instead of a proper paste.

GuruPlug Server Plus Cooling 1

As it seems the plan was to send the heat to the shielding of the network/USB/eSata ports (the area is marked red as my first plan was to remove that part of the alloy and reuse the heat-spreader), a strong indication for that is that this is the only area with holes for air circulation. I could imagine that it was not possible to have these holes next to the PSU, which was mounted above the heat-spreader, to avoid electrical shocks.

GuruPlug Server Plus Cooling 2

As there was no other opening for the heat to leave the case, even the microSD card became pretty hot - I've measured temperatures around 60 deg. C next to the card - while CPU and 100MB/s network were idling.

The official information from GlobalScale Technologies is that only 10/100MBit/s should be used as workaround to avoid overheating until a "Professional Upgrade Kit" is released. As mentioned here the upgrade kit announcement was removed silently from GST's website. To be honest, this doesn't make me wonder. There is no way to fix the Guruplug with an external fan or any other external magic as the only way to fix it is to cool the CPU and networking chip properly.

There are various workarounds for the cooling issues posted to the forums. I've decided to rip out the power supply and heat spreader out of the case and get a nice external PSU. The new connector is mounted, ready to supply the GuruPlug's board with power.

GuruPlug Server Plus power connector

Currently I'm waiting for the new heat sinks and glue to arrive. Then I'll give it a try to mount eveything in the small case again, probably with some additional air holes. As soon as I have a workign solution, I'll blog about it again.

29 August, 2010 10:25AM

the guruplug server plug - major design and qa fail

As a lot of people are coming to my blog to read the installing instructions for Debian on the GuruPlug Server Plus, I shall not hide my opinion about the Guruplug Server Plus: It is a major design and QA fail. Don't waste your money on it.

The power supply

Although I've ordered the Guruplug pretty early with the promise, that I'd have it in April, it arrived at the end of March due to QA issues with the power supply. While I appreciate that they didn't deliver broken power supplies, I would have preferred not to receive one which was "fixed" by somebody who uses the soldering iron like an axe. Here are some macro photos to show the gory details:

GuruPlug Server Plus PSU 1 GuruPlug Server Plus PSU 2 GuruPlug Server Plus PSU 3

Software issues

The version of UBoot which shipped with the device was only able to boot from NAND and network. Booting from USB failed and ext2 support was missing, too. Didn't have a look if the community came up with a fixed UBoot version yet, but in my opinion a piece of hardware for >100 EUR should not have such flaws.

Thermal issues

Using the Guruplug with more than one 100 MBit/s connection is just not possible, as it would toast itself to death. For the details have a look at this discussion in the NewIT forum, it links to a lot of interesting photos and postings. This issue is a major design and QA failure. Even without knowing what the datasheets say, it is easy to imagine that a thin piece of alloy is not the proper way to cool a CPU and network chip. Especially not when it is mounted with cheapish pads instead of a proper paste.

GuruPlug Server Plus Cooling 1

As it seems the plan was to send the heat to the shielding of the network/USB/eSata ports (the area is marked red as my first plan was to remove that part of the alloy and reuse the heat-spreader), a strong indication for that is that this is the only area with holes for air circulation. I could imagine that it was not possible to have these holes next to the PSU, which was mounted above the heat-spreader, to avoid electrical shocks.

GuruPlug Server Plus Cooling 2

As there was no other opening for the heat to leave the case, even the microSD card became pretty hot - I've measured temperatures around 60 deg. C next to the card - while CPU and 100MB/s network were idling.

The official information from GlobalScale Technologies is that only 10/100MBit/s should be used as workaround to avoid overheating until a "Professional Upgrade Kit" is released. As mentioned here the upgrade kit announcement was removed silently from GST's website. To be honest, this doesn't make me wonder. There is no way to fix the Guruplug with an external fan or any other external magic as the only way to fix it is to cool the CPU and networking chip properly.

There are various workarounds for the cooling issues posted to the forums. I've decided to rip out the power supply and heat spreader out of the case and get a nice external PSU. The new connector is mounted, ready to supply the GuruPlug's board with power.

GuruPlug Server Plus power connector

Currently I'm waiting for the new heat sinks and glue to arrive. Then I'll give it a try to mount eveything in the small case again, probably with some additional air holes. As soon as I have a workign solution, I'll blog about it again.

29 August, 2010 10:14AM

August 28, 2010

hackergotchi for Xana

Clint Adams

Today on Libre.fm

28 August, 2010 09:16PM

Romain Francoise

An update on md5sums, and Debian's growth

Back in August 2007 I looked at the state of embedded md5sums in Debian packages and found that approximately 3% of the files in the archive didn't have checksums. Three years later, things have improved: only 0.76% of the archive is now missing checksums (sid, main/contrib/non-free). (See this lintian report for the list of affected packages.)

Since then there's also been various discussions on this subject and there is now a policy bug open to make md5sums a requirement (at the "should" level). There is also a wishlist bug against debhelper to turn dh_md5sums into dh_checksums with a stronger hash algorithm, but MD5 still being good enough for simple integrity checking, it seems rather pointless to upgrade the algorithm without a trust path in the form of in-package signatures ala RPM...

Anyway, what's perhaps more surprising is the growth of the distribution in only three years: sid has gone from 20774 to 30314 packages, a 45% increase. Similarly, the number of regular files has gone from approximately 2 million to just above 2.9 million.

Indeed, looking at our last five releases, the distribution's growth is impressive:

  • woody (2002): 8273 packages
  • sarge (2005): 15195 packages (+83.7%)
  • etch (2007): 18043 packages (+18.7%)
  • lenny (2009): 22277 packages (+23.5%)
  • squeeze (2010?): 28870 packages (+29.6%)

Whether or not that is a good thing is, of course, yet to be determined. As a data point, I used the UDD to know how many of these thousands of packages are actually used, and to my surprise, 22321 binary packages have a popcon installation count that is less than 500! (By comparison, dpkg's installation count is 89393.) So while each new release adds lots of packages, the majority of them have very few users.

(If you want to check yourself, the query I used is select p.package, version, insts from packages p, popcon where (p.architecture = 'i386' or p.architecture = 'all') and p.release = 'squeeze' and p.package = popcon.package and popcon.insts < 500 order by insts;.)

28 August, 2010 09:02PM

hackergotchi for The MirOS Project (tg@mirbsd.org)

Thorsten Glaser

mksh, encodings, MirBSD, BitTorrent, WinCE

mksh was merged into Android (both AOSP and Google’s internal master tree) in the night 24/25th August, and is expected to be the one shell to rule them all, for Gingerbread.

mksh(1) now also has a cat builtin, for here documents mostly. It calls the cat(1) command if it receives any options. The shell is nevertheless smaller than yesterday because of improved string pooling.

There’s another reason to use the MirOS OPTU-16 encoding instead of PEP 383, on which I already wrote: try passing a wide-char filename to a function such as MessageBoxW, or create a filename on a system using wide chars, such as FAT’s LFN or ISO 9660’s Joliet, or one that only allows Unicode (canonically decomposed – ü → ü – out of all things) like HFS+. OPTU-8 at least maps to somewhat reserved codepoints (would, of course, be better to get an official 128 codepoint block, but the chance’s small of getting that in the BMP). Still.

Oh well, the torrents. I’ve remade them all, using one DHT seed node and OpenBitTorrent as tracker and put them on a very rudimentary BT page that will be completely redone soonish. Please re-download them. I currently do not believe f.scarywater.net will return.

Finally, I fell victim to a selling-out and may have just bought a Windows Mobile 6 based phone (Glofiish X650) and an SDHC card and an extra battery with double capacity. Well, at least it’s said to run CacheWolf well. I still would like to have something like Interix, Cygwin, UWIN, coLinux, or maybe some qemu-for-WinCE variant that runs Android, Maemo, Debian/armhf (or armel or arm) at near-native speed (and is usable – the device sadly doesn’t have a hardware keyboard, but it comes with SiRFstar Ⅲ GPSr). It only has 64 MiB RAM, like the Zaurus SL-C3200 and the jesusPhone, though. ☹ Any chance to get MirWorldDomination onto that device as well?

28 August, 2010 08:31PM by MirOS Developer tg (tg@mirbsd.org)

hackergotchi for Maximilian Attems

Maximilian Attems

Release of klibc-1.5.20

This release fixes an important ipconfig regression from Lenny due to a badly tested monster patch 4efbcf90f60. ipconfig should now perform better then ever, thanks to the inflow of fixes since Lenny release. This RC fixes are scheduled for Squeeze and it already landed in Sid.

1.5.19 had no release announcement, but fixed compilation on x86_32, the syscall handling on sh4 (initramfs-tools is said to boot fine with it), valgrind ipconfig warnings and added getrusage() for the mksh port.

Thanks to hpa for giving me the official co-maintenance of klibc. Thanks to all contributors.

P.S.: See klibc git repo.

28 August, 2010 02:15PM

hackergotchi for

Antti-Juhani Kaijanaho

Dear Lazyweb: Does this software exist?

I’ve been wondering if the following kind of testing management software exists (preferably free software, of course).

It would allow one to specify a number of test cases. For each, one should be able to describe preconditions, testing instructions and expected outcome. Also, file attachments should be supported in case a test case needs a particular data set.

It would publish a web site describing each test case.

A tester (who in the free software world could be anyone) would take a test case, follow the instructions given and observe whatever outcome occurs. The tester would then file a test report with this software, either a terse success report or a more verbose failure report.

The software should maintain testing statistics so that testers could easily choose test cases that have a dearth of reports.

As a bonus, it would be nice if the software could submit a failure report as a bug report .

(Note that this would be useful for handling the sort of tests that cannot be automated. There are many good ways already to run automated test suites.)

28 August, 2010 09:43AM by Antti-Juhani Kaijanaho

hackergotchi for Ben Hutchings (ben@decadent.org.uk)

Ben Hutchings

Boot loader disruption in sid

IN UR DISTRO BRAKIN UR PACKAGEZ

Something was bound to go wrong when changing the policy for boot loaders. Let me try that again.

28 August, 2010 02:39AM

hackergotchi for n/a

Erich Schubert

Facebook closing up for third party developers?

It looks a lot as if Facebook is closing up on third party developers. Seems like they've cherry picked the features they want to copy, and now are no longer interested in third parties anymore:

  • They removed the "publisher" feature, which allowed applications to offer custom story forms. They said it wasn't used a lot - the reason was simple, they placed third party publishers in a tiny dropdown in the "attach" section, second class to their link sharing and even crappy 'gift' application. Of course: otherwise nobody would buy their birthday "gifts".
  • They're removing the extra info boxes you could put into your profile. This is a key feature for two of my applications, which allowed people to publish a calendar feed in their profile.
  • Places is aiming at killing FourSquare and similar on the long run.

Expect once-famous Facebook applications such as SuperPoke to disappear on the long run - their integration hooks have been pulled. The API gets more and more limited for the cash cow use case: games. And of course marketing. Oh, I forgot one type of "applications". The one that basically embeds you regular web page within a Facebook tab. Wow. That's technology!

If it was really about the users, Facebook would seriously fight Facebook spam, worms and fraud. They still don't have that under control (and none of them used either of the removed features!). They do even less to prevent users from clicking on such bad links such as the Free iPad scam, which has been around for at least a week now. Or the famous "dislike button" scam. They could not spell much more clearly that they do not care about their users - they just want your data to sell more directed advertising to you. Forget about privacy, too!

Now that all my three Facebook applications are pretty much dead, this comes with a good side for me: I've been considering to disable/suspend/kill my Facebook account for quite some time. But I wasn't sure if that would also kill my applications for their users. Now that they're dead anyway, there is not much keeping me anymore.

28 August, 2010 12:40AM

August 27, 2010

Mark Brown

eBooks

Recently I’ve been using ebook readers rather a lot – mostly the Kindle DX, though I have given iBooks a spin as well. Obviously, as with MP3 players, the main win they offer is the ability to easily carry about an entire library without the inconvenience of the physical media. I’ve been reading an awful lot more than before since I started using them, mostly by virtue of it being very easy to keep several books on the go at once. What I’ve found especially good with the Kindle is the ease with which I can flip between devices, taking advantage of the tradeoffs between the different form factors.

Phones are obviously portable and these days have clear, easy to read screens (in most lights anyway) and are very light and easy to hold. They’re great if you’re stuck in a queue or on a bus but the small screen size and the fact that keeping the screen on for an extended period of time runs down the battery which isn’t always desirable. Computers are similar, trading off portability and convenience in the form factor for the larger form factor.

The iPad deals with the screen size issue without much impact on either the form factor or the battery life but the LCD display is hard to read in sunlight and can be hard on the eyes for extended use. E-Ink displays deal with those issues by swapping them for others that mean they can only work for eBooks so the devices aren’t at all general purpose. The first generation of displays had problems with frustratingly long refresh times and less than ideal contrast ratios but these have been largely addressed in current generations of device – current generation displays are beautiful.

Thus far I’ve pretty much just been reading copies of books I already have physical copies of so I’ve not really had a think about how I feel about any of the models for eBook publishing that are floating about out there, or about the DRM issues.

27 August, 2010 11:50PM by Mark Brown

hackergotchi for Colin Watson

Colin Watson

Windows applications making GRUB 2 unbootable

If you find that running Windows makes a GRUB 2-based system unbootable (Debian bug, Ubuntu bug), then I'd like to hear from you. This is a bug in which some proprietary Windows-based software overwrites particular sectors in the gap between the master boot record and the first partition, sometimes called the "embedding area". GRUB Legacy and GRUB 2 both normally use this part of the disk to store one of their key components: GRUB Legacy calls this component Stage 1.5, while GRUB 2 calls it the core image (comparison). However, Stage 1.5 is less useful than the core image (for example, the latter provides a rescue shell which can be used to recover from some problems), and is therefore rather smaller: somewhere around 10KB vs. 24KB for the common case of ext[234] on plain block devices. It seems that the Windows-based software writes to a sector which is after the end of Stage 1.5, but before the end of the core image. This is why the problem appears to be new with GRUB 2.

At least some occurrences of this are with software which writes a signature to the embedding area which hangs around even after uninstallation (even with one of those tools that tracks everything the installation process did and reverses it, I gather), so that you cannot uninstall and reinstall the application to defeat a trial period. This seems like a fine example of an antifeature, especially given its destructive consequences for free software, and is in general a poor piece of engineering; what happens if multiple such programs want to use the same sector, I wonder? They clearly aren't doing much checking that the sector is unused, not that that's really possible anyway. While I do not normally think that GRUB should go to any great lengths to accommodate proprietary software, this is a case where we need to defend ourselves against the predatory practices of some companies making us look bad: a relatively small number of people do enough detective work to realise that it's the fault of a particular Windows application, but many more simply blame our operating system because it won't start any more.

I believe that it may be possible to assemble a collection of signatures of such software, and arrange to avoid the disk sectors they have stolen. Indeed, I have a first draft of the necessary code. This is not a particularly pleasant solution, but it seems to be the most practical way around the problem; I'm hoping that several of the programs at fault are using common "licence manager" code or something like that, so that we can address most of the problems with a relatively small number of signatures. In order to do this, I need to hear from as many people as possible who are affected by this problem.

If you suffer from this problem, then please do the following:

  • Save the output of fdisk -lu to a file. In this output, take note of the start sector of the first partition (usually 63, but might also be 2048 on recent installations, or occasionally something else). If this is something other than 63, then replace 63 in the following items with your number.
  • Save the contents of the embedding area to a file (replace /dev/sda with your disk device if it's something else): dd if=/dev/sda of=sda.1 count=63
  • Do whatever you do to make GRUB unbootable (presumably starting Windows), then boot into a recovery environment. Before you reinstall GRUB, save the new contents of the embedding area to a different file: dd if=/dev/sda of=sda.2 count=63
  • Follow up to either the Debian or the Ubuntu bug with these three files (the output of fdisk -lu, and the embedding area before and after making GRUB unbootable.

I hope that this will help me to assemble enough information to fix this bug at least for most people, and of course if you provide this information then I can make sure to fix your particular version of this problem. Thanks in advance!

27 August, 2010 11:50PM

hackergotchi for

Gunnar Wolf

No sense in caring for a hard disk

  1. Aug 27 06:00:15 lafa kernel: [7218302.960003] sd 1:0:0:0: [sdb] Add. Sense: No additional sense information
  2. Aug 27 06:00:15 lafa kernel: [7218302.960003] sd 1:0:0:0: [sdb] Sense Key : No Sense [current]

My hard drive does not currently make any additional sense.

27 August, 2010 10:28PM by gwolf

hackergotchi for Martin-Éric (noreply@blogger.com)

Martin-Éric Racine

Batch-editing EXIF data to add copyrights?

I've recently become more serious about my photographic hobby and it dawned onto me that manually editing each JPEG to add my copyright was entirely the wrong approach. Thus, I was wondering if anybody would know of a Free Software tool that can batch edit the EXIF data in JPEG images? What I'd like to accomplish is simple:

  • Add the string Copyright ©$YEAR Martin-Éric Racine where $YEAR is directly extracted from the original EXIF data's day when the picture was taken.
  • Optionally, produce smaller versions of the source images to an output folder as TFCD samples for my models to take home.

Preferences go for a tool that is already packaged for Debian or Ubuntu but, worse comes, I could package the software myself.

27 August, 2010 04:26PM by Martin-Éric (noreply@blogger.com)

hackergotchi for Marco d'Itri

Marco d'Itri

Impact of CVE-2010-2959 on Debian systems

CVE-2010-2959 allows to exploit an integer overflow in the CAN protocol driver to escalate privileges to root.

This requires the CAN BCM module (can_bcm) to be loaded, so its impact is either null or easily mitigated since it is never used on normal systems.

If this command finds the alias needed to autoload the module then an unpatched system is vulnerable:

grep can-proto-2 /lib/modules/$(uname -r)/modules.alias -r /etc/modprobe.d/

In practice, the combination of the unpatched lenny kernel and module-init-tools packages are not (normally) vulnerable because the alias does not exist, while more recent kernels are: nowadays kernel modules carry their own built-in aliases, which are collected by depmod(8).

27 August, 2010 01:47PM

hackergotchi for

Alexander Reichle-Schmehl

Release Critical Bug report for Week 34

The unofficial rc bug tracker currently knows about the following bugs:

In Total:390
Affecting Squeeze:299
Squeeze only:82
Remaining to be fixed in Squeeze:217

Of these 217 bugs, the following tags are set:

Pending in Squeeze:18
Patched in Squeeze:35
Duplicates in Squeeze:21
Contrib or non-free in Squeeze:14
Claimed in Squeeze:3
Delayed in Squeeze:10
Can fixed in a security Update:13
Otherwise fixed in Squeeze:17

Ignoring all the above (multiple tags possible), 126 bugs need to be fixed by Debian Contributers to get Debian 6.0 Squeeze released.

However, with the view of the Release Managers, 245 need to be dealt with for the release to happen.

Please see my older post for an explanation of the different numbers.

27 August, 2010 11:17AM by Alexander Reichle-Schmehl (alexander@schmehl.info)

Richard Darst

DebConf budgeting for a single conference

My last post discussed the year-to-year budgeting of DebConf. This post discusses what makes budgeting difficult within one particular DebConf. Since every DebConf is unique in its arrangements, the particular difficulties always vary year-to-year. For example, DebConf10 was easy in that Software in the Public Interest was in the same country so that we had easy access to bank accounts, but more difficult venue payment logistics. I'll use DebConf10 as an example below.


For DebConf10, we get our venue "for free" thanks to the support of the Columbia Computer Science department. However, we had to pay for guard costs after building hours, and custodial costs. For custodial costs at least, we had to go through many layers of bureaucracy, and people kept insisting it would be more than they quoted. (It ended up being about half, since DebConf attendees were so responsible!)

DebConf sponsors many attendees. This means that all their food and accommodation costs are paid by us. We have sponsored registration and reconfirmation deadlines to set a maximum of the number of people we have to sponsor, but people are continually dropping out and it's hard to know just how many people to reserve for. Sponsored people won't always eat every meal with us, and usually won't decide until the day before - so figuring out food amounts is hard, too. Furthermore, we have unsponsored people who will want food and accommodations (paying themselves) which we must somehow plan for.

Different venues operate on different payment rules. This year, CU Housing was fairly strict on asking for attendee counts and room assignments two weeks in advance. Then, as time gets closer, they got more flexible, and in the end told us that they will, in fact, only charge based on number of people actually attending - a huge win for us. Similarly with CU Dining, we had to go through great lengths to make sure that we would pay only for meals we ate. At CU, food had to be paid in advance, but accommodation and other costs are paid afterwards.

We have to guess how much will be spent on miscellaneous supplies once DebConf starts. We have to then decide how much to spend on extras such as the day trip or conference dinner, and how to sponsor those, if possible.

Debian (and thus DebConf) has money held in trust in many currencies in different accounts. Different sponsors will pay to different currencies, depending on what is convenient for them. This means that we need to consider fluctuating currency conversion rates, and decide if and when to transfer money. In general, DebConf hasn't transfer money just to make sure the DebConf-tagged money gets spent first. Some surpluses are best left in other countries to help pay future travel sponsorship since it is expensive to move money out of the country. Some conferences may result in a net movement of money from USA to Europe (more donors in one, more expenses in the other), some the other way around.

Travel sponsorship is in the form of reimbursement. These can take many months to have the documentation received from attendees and the reimbursements all sent out, and thus finalizing the budget and surplus for next year.

The overall principle we've tried to stick to is plan for a balanced budget in the worst case scenario, and then be happy when it ends up better than that.


At the DebConf&Debian BOF, someone mentioned how budgeting for any (free software) conference is hard. I think that's certainly true. Some of the registration fluctuations could be made easier by being less flexible, but DebConf wants to serve our attendees even if it is a bit of extra work for us. Each DebConf will have its own ways budgeting is difficult, but things have always work out, and usually with a bigger surplus than we were expecting.

Tags: debconf

27 August, 2010 09:02AM by Richard Darst (rkd)

Russell Coker

August 26, 2010

hackergotchi for

Sylvain Le Gall

CentOS 5 chroot with schroot

OCaml compiles native executables in static mode. It allows to have a minimal set of dependencies when delivering an executable. It has also disadvantages like the size of the executable and problems arising when considering libraries update -- but this is another topic. There is still one strong dependency that you should not forget when you want to deliver a product for most of the Linux distributions: dependency on the glibc version.

Trying to run OASIS compiled with Debian Lenny, on CentOS 5.5:

$ OASIS
.../OASIS: /lib64/libc.so.6: version `GLIBC_2.7' not found (required by .../OASIS)

So when compiling for delivery, one should choose the oldest distribution he targets. In my case, I choose CentOS 5 which comes with glibc v2.5. I usually choose Debian stable at the moment of writing Debian Lenny. But for now, the Debian Lenny's glibc is newer (v2.7) than the one coming from the CentOS 5.5 stable release. CentOS is a Red Hat like Linux distribution.

I use a Debian Lenny amd64 host system and I decided to setup a chroot of CentOS 5 i386 and amd64. I also setup schroot to use my CentOS chroot.

CentOS 5 amd64 setup

First of all we use rinse, which can setup a RPM based distribution in a chroot. The version v1.3 shipped with Debian Lenny has some bugs: it doesn't install nss and other mandatory packages. So I downloaded v1.7 directly from Debian Sid. There is no dependencies problems and the package is arch:all, so it is straightforward to install:

$ wget http://ftp.de.debian.org/debian/pool/main/r/rinse/rinse_1.7-1_all.deb # Replace ftp.de.debian.org by your preferred Debian mirror
$ dpkg -i rinse_1.7-1_all.deb

Then I create the chroot directory and launch rinse:

$ mkdir /srv/chroot/centos5-amd64
$ rinse --arch amd64 --distribution centos-5 --directory /srv/chroot/centos5-amd64 # N.B. you must use --arch, the default is i386

Once installation is complete, you can add an entry for this distribution in /etc/schroot/schroot.conf:

[centos5-amd64]
description=Centos 5 (amd64)
location=/srv/chroot/centos5-amd64
priority=3
users=XXX
groups=
root-groups=root
type=directory
run-setup-scripts=true
run-exec-scripts=true

Replace XXX by your login.

If you try to login directly, you will get warnings:

$ schroot -c centos5-i386
I : [chroot centos5-i386-a952de23-7f4b-4bae-a9b9-752ecee4a185] Exécution de l'interpréteur de commandes initial : « /bin/bash »
-bash: /dev/null: Permission denied
-bash: /dev/null: Permission denied
-bash: /dev/null: Permission denied
-bash: /dev/null: Permission denied
-bash: /dev/null: Permission denied

This is a bit misleading because the real problem is that nothing is created in /dev/. CentOS delegates creating char/block devices to udev. You have two solutions to solve this issue:

  • login and call MAKEDEV to create missing devices:
$ MAKEDEV random
$ MAKEDEV console
$ MAKEDEV zero
$ MAKEDEV null
$ MAKEDEV stdout
$ MAKEDEV stdin
$ MAKEDEV stderr
  • use an already setup Debian chroot to copy the missing devices:
$ rsync -av /srv/chroot/lenny-amd64/dev/* /srv/chroot/centos5-amd64/dev/

That's it, you now have a functional chrooted CentOS 5 environment:

$ schroot -c centos5-amd64 cat /etc/redhat-release
I : [chroot centos5-amd64-b9bae264-285b-4d17-a046-13386736cecd] Exécution de la commande : « cat /etc/redhat-release »
CentOS release 5.5 (Final)

CentOS 5 i386 setup

To setup an i386 environment, we follow almost the same scheme, except we need to fix a bug in rinse v1.7: we need to call linux32 before executing chroot. The problem is that the first stage installation of rinse install an i386/686 environment but as soon as you call chroot yum install ..., it will guess that the system is amd64 and will install missing packages. See the Debian bug report and the example patch attached to correct this behavior.

WARNING: this patch is just an example, you can apply it for creating CentOS i386 chroot on Lenny amd64 host but you should remove the patch as soon as the installation is complete.

$ mkdir /srv/chroot/centos5-i386/
$ rinse --arch i386 --distribution centos-5 --directory /srv/chroot/centos5-i386 # With /usr/lib/rinse/centos-5/post-install.sh patched 
$ rsync -av /srv/chroot/lenny-i386/dev/* /srv/chroot/centos5-i386/dev/

Add this distribution to /etc/schroot/schroot.conf:

[centos5-i386]
description=Centos 5 (i386)
location=/srv/chroot/centos5-i386
priority=3
users=XXX
groups=
root-groups=root
type=directory
run-setup-scripts=true
run-exec-scripts=true
personality=linux32

You now have a schroot of CentOS 5 i386:

$ schroot -c centos5-i386 cat /etc/redhat-release
I : [chroot centos5-i386-9acafa91-9862-4488-aaef-4ab2a482771e] Exécution de la commande : « cat /etc/redhat-release »
CentOS release 5.5 (Final)

Happy schroot hacking!

26 August, 2010 03:43PM by gildor

hackergotchi for Benjamin Mako Hill

Benjamin Mako Hill

Italian Travel Update

Due to a variety of people and places we want to see, Mika and I have regrouped around a more ambitious travel schedule in Italy for the next week or so. Our new plan is:

  • August 23-27: Florence
  • August 27-29: Verona
  • August 29-31: Bologna
  • August 31-September 1: Siena
  • September 1-3: Rome

I know we'll have an organized LUG meeting in Siena. The rest of the period is a little more open. As always, if other free software, wikimedian, or like-minded folks are around and would like to meet up in any of those places, don't hesitate to get in contact.

In related news, inspired by Florence and by Mika's domo-kun purse, I made a duomo-kun today.

/copyrighteous/images/duomo-kun-small.png

26 August, 2010 01:17PM

hackergotchi for Maximilian Attems

Maximilian Attems

Coffee is better without sugar

Apparently this statements also holds true for frozen yogurt. An Austrian A1 spokes person has confirmed that the HTC Magic will not receive a 2.1 or 2.2 Android update. One can only wonder about the sugar HTC puts on top of regular Android that hinders themself to update their products. The Austrian A1 carrier sells you the device for a 18 month contract, but actively only supported it for 6 month. I must revise my previous positive review of the HTC Magic.

Some HTC speaker had promised earlier this year an upgrade to at least 2.1: HTC Magic 2.1 upgrade. A SFR speaker had promised an update to current Android: HTC Magic and Nexus One 2.2 upgrade.

The Webkit Android Browser can be easily tricked into leaking your user and passwords: Android Luecke. Beside the obvious that as a user one shouldn't give out to much data to untrusted third party this opens lots of Google accounts for criminal activity. The inability of the carrier to provide a secure and uptodate device is massively deceiving and certainly not appropriate handling of their defects liability.

26 August, 2010 12:51PM

hackergotchi for Dirk Eddelbuettel

Dirk Eddelbuettel

Louis: A Silent Film with Live Music

The Chicago Symphony hosted the world premiere of Louis last evening, and I had snatched the (literally) last available ticket.

The film, which is written, directed and producted by Dan Pritzker, is based loosely on the early years of Louis Armstrong in New Orleans. The movie is shot beautifully by Vilmos Zsigmond in blend of colour and black-and-white which works very well for invoking the early days of film. A key part of the production is of course the score, and the live music with both a thirteen-piece orchestra featuring Wynton Marsalis as well as piano solo recitals by Cecile Licad with an emphasis on pieces by 19th-century composer Louis Moreau Gottschalk. The combination of a silent movie with a stong live band is something to behold -- if you can catch the movie and performance in a city nearby, go!

26 August, 2010 12:34PM

Petter Reinholdtsen

Broken umask handling with sshfs

My file system sematics program presented a few days ago is very useful to verify that a file system can work as a unix home directory,and today I had to extend it a bit. I'm looking into alternatives for home directory access here at the University of Oslo, and one of the options is sshfs. My friend Finn-Arne mentioned a while back that they had used sshfs with Debian Edu, but stopped because of problems. I asked today what the problems where, and he mentioned that sshfs failed to handle umask properly. Trying to detect the problem I wrote this addition to my fs testing script:

mode_t touch_get_mode(const char *name, mode_t mode) {
  mode_t retval = 0;
  int fd = open(name, O_RDWR|O_CREAT|O_LARGEFILE, mode);
  if (-1 != fd) {
    unlink(name);
    struct stat statbuf;
    if (-1 != fstat(fd, &statbuf)) {
      retval = statbuf.st_mode & 0x1ff;
    }
    close(fd);
  }
  return retval;
}

/* Try to detect problem discovered using sshfs */
int test_umask(void) {
  printf("info: testing umask effect on file creation\n");

  mode_t orig_umask = umask(000);
  mode_t newmode;
  if (0666 != (newmode = touch_get_mode("foobar", 0666))) {
    printf("  error: Wrong file mode %o when creating using mode 666 and umask 000\n",
           newmode);
  }
  umask(007);
  if (0660 != (newmode = touch_get_mode("foobar", 0666))) {
    printf("  error: Wrong file mode %o when creating using mode 666 and umask 007\n",
           newmode);
  }

  umask (orig_umask);
  return 0;
}

int main(int argc, char **argv) {
  [...]
  test_umask();
  return 0;
}

Sure enough. On NFS to a netapp, I get this result:

Testing POSIX/Unix sematics on file system
info: testing symlink creation
info: testing subdirectory creation
info: testing fcntl locking
  Read-locking 1 byte from 1073741824
  Read-locking 510 byte from 1073741826
  Unlocking 1 byte from 1073741824
  Write-locking 1 byte from 1073741824
  Write-locking 510 byte from 1073741826
  Unlocking 2 byte from 1073741824
info: testing umask effect on file creation

When mounting the same directory using sshfs, I get this result:

Testing POSIX/Unix sematics on file system
info: testing symlink creation
info: testing subdirectory creation
info: testing fcntl locking
  Read-locking 1 byte from 1073741824
  Read-locking 510 byte from 1073741826
  Unlocking 1 byte from 1073741824
  Write-locking 1 byte from 1073741824
  Write-locking 510 byte from 1073741826
  Unlocking 2 byte from 1073741824
info: testing umask effect on file creation
  error: Wrong file mode 644 when creating using mode 666 and umask 000
  error: Wrong file mode 640 when creating using mode 666 and umask 007

So, I can conclude that sshfs is better than smb to a Netapp or a Windows server, but not good enough to be used as a home directory.

Update 2010-08-26: Reported the issue in BTS report #594498

Update 2010-08-27: Michael Gebetsroither report that he found the script so useful that he created a GIT repository and stored it in http://github.com/gebi/fs-test.

26 August, 2010 11:30AM

Vincent Sanders

Sunny Brittany

Alas I did not go to Debconf 10 which looked like everyone had a blast, congratulations to the organisers. Nor will I be able to attend the traditional Steve McIntyre BBQ at the weekend, hope everyone has fun.

On the other hand I have managed to take a family holiday in sunny Brittany...

OK perhaps sunny is pushing it, we did have several nice days last week which we spent on the Le Pouldu plages but this week has been more challenging.

Fortunately the camp site where we are staying has reasonable bandwidth so I can continue to waste time online.

This has given me time to look at some Debian packaging. Specifically the mingw32-runtime packages. Their maintainer seems to be unwilling to allow an updated version to be uploaded despite there being numerous upstream releases since the last packaged release in 2007.

The packaging manual makes it clear that hijacking is not permitted and I discover my desire for having a huge, unhelpful argument about maintaining a package is non existent.

I guess when I have my updated packages available I will maybe announce them but its not the same. I guess this is one of those problems with being a Debian maintainer, we all have to rub along even with decisions we disagree with. Hmm thought I had more to say on the subject ...perhaps next time.

Anyway must go and entertain the kids for an hour or two, maybe go to the beach in the rain, hell they cannot get any soggier ;-)


26 August, 2010 10:11AM by Vincent Sanders (noreply@blogger.com)

hackergotchi for David Paleino

David Paleino

gmtkbabel 0.1

Version 0.1 of gmtkbabel has just been released! :)

It consists of a set of shell scripts, which use zenity to give a nice GUI over mtkbabel.

gmtkbabel 0.1

Future improvements might include providing a Qt alternative (and the "g" in the name might just mean "GUI" instead of "GTK" then), and whatever users need. It might also become something more serious, written in a more complex language, who knows :)

Many thank to Elena ``of Valhalla'' Grandi, who started this project to help some users on #osm-it@oftc.

26 August, 2010 09:01AM

Uwe Hermann

openbiosprog-spi, a DIY Open Hardware and Free Software USB-based SPI BIOS chip flasher using flashrom

openbiosprog-spi device

If you're following me on identi.ca you probably already know that I've been designing a small PCB for a USB-based SPI chip programmer named openbiosprog-spi.

The main use-case of the device is to help you recover easily from a failed BIOS upgrade (either due to using an incorrect BIOS image, due to power outages during the flashing progress, or whatever). The device only supports SPI chips, as used in recent mainboards (in DIP-8 form factor, or via manual wiring possibly also soldered-in SO-8 variants). It can identify, read, erase, or write the chips.

Of course the whole "toolchain" of software tools I used for creating the hardware is open-source, and the hardware itself (schematics and PCB layouts) are freely released under a Creative Commons license (i.e., it's an "Open Hardware" device). The user-space source code is part of flashrom (GPL, version 2), the schematics and PCB layouts are licensed under the CC-BY-SA 3.0 license and were created using the open-source Kicad EDA suite (GPL, version 2).

openbiosprog-spi schematics
openbiosprog-spi Kicad PCB layout

The schematics, PCB layouts, and other material is available from gitorious:

  $ git clone git://gitorious.org/openbiosprog/openbiosprog-spi.git

You can also download the final Gerber files (ZIP) for viewing them, or sending them to a PCB manufacturer.

Some more design notes:

  • The device uses the FTDI FT2232H chip as basis for USB as well as for handling the actual SPI protocol in hardware (MPSSE engine of the FT2232H).
  • Attaching the SPI chip:
    • There's a DIP-8 socket on the device so you can easily insert the SPI chip you want to read/erase/program.
    • Optionally, if you don't want a DIP-8 socket, you can solder in a pin-header with 8 pins, which allows you to connect the individual pins to the SPI chip via jumper wires or grippers/probes.
  • The PCB board dimensions are 44mm x 20mm, and it's a 2-layer board using mostly 0603 SMD components.

Basic usage example of the device on Linux (or other OSes supported by flashrom):

  $ flashrom -p ft2232_spi:type=2232H,port=A -r backup.bin (reads the current chip contents into a file)

openbiosprog-spi PCBs
openbiosprog-spi parts list

Over at the main projects page of openbiosprog-spi at

  http://randomprojects.org/wiki/Openbiosprog-spi

I have put up a lot more photos and information such as the bill of materials, the Kicad settings I used for creating the PCBs, the Gerber files and the Excellon drill files and so on.

The first few prototype boards I ordered at PCB-POOL.COM (but you can use any other PCB manufacturer of course), the bill of materials (BOM) lists the Mouser and CSD electronics part numbers and prices, but you can also buy the stuff elsewhere, of course (Digikey, Farnell, whatever).

I already hand-soldered one or two prototypes and tested the device. Both hardware and software worked fine basically, you just need a small one-liner patch to fix an issue in flashrom, but that should be merged upstream soonish.

In order to make it easy for interested users to get the PCBs I'll probably make them available in the BatchPCB Market Place soonish, so you can easily order them from there (you do still need to solder the components though). Note: I'm not making any money off of this, this is a pure hobby project.

All in all I have to say that this was a really fun little project, and a useful one too. This was my first hardware project using Kicad (I used gEDA/PCB, also an open-source EDA toolsuite, for another small project) and I must say it worked very nicely. I didn't even have to read any manual really, it was all pretty intuitive. Please consider not using Eagle (or other closed-source PCB software) for your next Open Hardware project, there are at least two viable open-source options (Kicad, gEDA/PCB) which both work just fine.

26 August, 2010 08:23AM by Uwe Hermann