Find headlines
Channels
|
News tracker

|

Planet Debian - Planet Debian
|
Wednesday - September 8th | | 6:00 | | Dirk Eddelbuettel: Straight, curly, or compiled?
 | | 0 hits | Christian Robert
, whose blog I
commented-on here once before
, had
followed up on a recent set of posts by Radford Neal
which had appeared both on Radford's blog and on the
r-devel mailing list.
Now, let me prefix this by saying that I really enjoyed Radford's posts. He obviously put a lot of time into finding a number of (all somewhat
small in isolation) inefficiencies in R
which, when taken together, can make a difference in
performance. I already spotted one commit by Duncan in the SVN logs for R so this is being looked at.
Yet Christian, on the other hand, goes a little overboard in bemoaning performance differences somewhere between ten and fifteen percent -- the
difference between curly and straight braces (as noticed in Radford's first post). Maybe he spent too much time waiting for his MCMC runs to
finish to realize the obvious: compiled code is evidently much faster.
And before everybody goes and moans and groans that that is hard, allow me to just interject and note that it is not. It really
doesn't have to be. Here is a quick
cleaned up version of Christian's example code, with proper assigment operators and a second variable x. We then get to the
meat and potatoes and load our
Rcpp
package as well as
inline
to define the same little test function in C++. Throw in
rbenchmark
which I am becoming increasingly fond of for these little timing tests,
et voila, we have ourselves a horserace:
# Xian's code, using <- for assignments and passing x down
f <-function(n, x=1)for(i in1:n) x=1/(1+x)
g <-function(n, x=1)for(i in1:n) x=(1/(1+x))
h <-function(n, x=1)for(i in1:n) x=(1+x)^(-1)
j <-function(n, x=1)for(i in1:n) x={1/{1+x}}
k <-function(n, x=1)for(i in1:n) x=1/{1+x}# now load some toolslibrary(Rcpp)library(inline)# and define our version in C++
l <- cxxfunction(signature(ns='integer', xs='numeric'),'int n = as<int>(ns); double x=as<double>(xs); for (int i=0; i<n; i++) x=1/(1+x); return wrap(x); ',
plugin='Rcpp')# more toolslibrary(rbenchmark)# now run the benchmark
N <-1e6
benchmark(f(N,1), g(N,1), h(N,1), j(N,1), k(N,1), l(N,1),
columns=c('test','replications','elapsed','relative'),order='relative',replications=10)
And how does it do? Well, glad you asked. On my i7, which the other three cores standing around and watching, we get an
eighty-fold increase relative to the best interpreted version:
/tmp$ Rscript xian.R Loading required package: methods test replications elapsed relative 6 l(N, 1) 10 0.122 1.000 5 k(N, 1) 10 9.880 80.984 1 f(N, 1) 10 9.978 81.787 4 j(N, 1) 10 11.293 92.566 2 g(N, 1) 10 12.027 98.582 3 h(N, 1) 10 15.372 126.000 /tmp$
So do we really want to spend time arguing about the ten and fifteen percent differences? Moore's law gets you
those gains in a couple of weeks anyway. I'd much rather have a conversation about how we can get people speed increases that are orders of
magnitude, not fractions. Rcpp
is one such tool. Let's get more of them. | | 4:30 | | Andrew McMillan: Making my laptop quiet
 | | 0 hits | A few days ago I talked about how noisy my new Dell Studio 15 was
but I can now report back with the beginnings of a solution to that problem, and it doesn't appear to be ACPI related.
The first clue I needed was that if I switch to the proprietary fglrx drivers for the Radeon the fan quite quickly drops off to a much more reasonable level. It seems the fglrx drivers have issues, however, in particular I get big black patches on my screen. This video corruption happens especially in Firefox, but sometimes in other applications as well. They also appear to screw up my suspend/resume, which is probably even more annoying to me.
The second clue that I needed was that Radeon power management support has only just made it into recent kernels. Thanks to Michael Kirkland
for providing me with both of those clues :-)
Looking under /sys/class/drm/ I find a whole bunch of stuff, but in particular there are /sys/class/drm/card0/device/power_method and /sys/class/drm/card0/device/power_profile.
Looking through the kernel source code I can see that power_profile can be set to low, mid, high, auto and default, while power_method can be set to either dynpm or profile.
Trying out all of these values, it seems I get the quietest result with the profile method and either the low or mid profile. The dynpm method is nearly as good, and I would think it should really be the default for a 'Mobility' chipset. From the detailed benchmarking that Phoronix did
I wonder if it shouldn't be the default for everyone.
For myself, I see some small 'tearing' artifacts occasionally when running with the low profile. These disappear when I run with the mid profile, and since that seems to have pretty much the same temperature (and noise) results I'll go with that one. Though the laptop often does still make more noise than I would prefer it to, it is no longer annoying everyone in the room.
Not unexpectedly this seems to have a huge impact on power use, too. It appears that the laptop should now give me around 4.5 hours when I do everything I can think of to lower the power use, whereas before it was more like 2.5 hours.
Now I guess I can get back to hacking on DAViCal...
| | 3:30 | | Joey Hess: solar day 2
 | | 0 hits | End of the second day in the off-grid house. Three things strike me about
being here: quiet, rhythm, and awareness.
In the city, I am constantly annoyed by noise. Here, there's a empty,
echoing feeling to the quiet. It's not lack of noise exactly -- I can hear
cicadas and birds right now -- but it's still quiet. At first I wanted to
fill it, but now I can feel my hearing instead expanding outward. Catching
a faint engine noise, or a dog barking in the distance.
Here there's a rhythm to the day driven by the sun. Get up, connect the
batteries to the solar panels. (Only necessary because the charge
controller is broken.) Check and record the battery levels, make sure the
panels are producing well. Think about adjusting them at solar noon. Check
the cooler to see how the ice is holding out. Do weekly chores: Refilling
the kerosine lanterns and replacing the rock salt used to control the
humidity, which is the downside to a earth-sheltered house that stays 70
degrees cool on a 90 degree day. In the evening, watch the sun go down,
disconnect the solar panels, record battery levels, and light lanterns.
That's the shape of the day.
Besides being aware of distant sounds and time time of day, being here
brings to the fore awareness of consumables. Until I get a fridge sorted
out, I have a cooler full of ice that I have to monitor. There's propane
for the stove, and kerosine for the lanterns. And of course always the state
of the batteries. So far, the first battery bank seems likely to last longer
than the ice. I'll know better tomorrow.
Unfortunatly I burned out the 5v power suppzly I was using to run my NSLU2
in a wiring mishap, so I have to run that on an inverter for now, and the
batteries, though not low, can barely power both the inverter and my
laptop. This has made staying online tricky. But I'm finding dialup
psurpisingly tolerable, and it helps to generally slow down, too. Despite
all the above, I got about as much real work done today as I normally
would.
?
tag lay offgrid
| | 2:00 | | John Goerzen: Labor Day with Jacob and Oliver
 | | 0 hits | Yesterday started out with Jacob and me going to a men/boys breakfast organized by my great uncle and some others. He’s in his 80s and this is probably his last year doing this. It was out in the woods by the Little Arkansas River. They cooked up bacon, sausage, and eggs and it was a fun time. Jacob enjoyed throwing sticks in the river and sitting on some logs.
Terah, meanwhile, went to Wichita with Oliver. So it was just Jacob and me when we got home.
Jacob spent two hours playing “rivers” with me. A few weeks ago, he and I set this up outside. I found an old length of pipe on our property (my dad thinks it used to carry water from a well) and some cement blocks. I set it up on the blocks so that one end is higher than the other, and the lower end empties out at the top of a small dirt pile. Then I brought a water hose over to it, turned on the water at a very slow speed, and put the hose in the pipe.
The result is a small stream of water coming out at the dirt pile. After it runs just a little while, the dirt is soft enough that you can dig out little channels, or “rivers”, with your fingers or a stick.
Jacob enjoyed this the first time he played, but yesterday he really enjoyed it. We had a fork in the river, and he informed me that he would sit on his bank and I would sit on mine. He also wanted to give “river food” to his river (the fork closest to him). River food was loose dirt that he’d pick up and sprinkle over the water, and watch it get carried on down. I spotted some random bug in the area once, and that bug got food too. I think Jacob and the bug disagreed about whether this was particularly helpful.
Jacob enjoyed playing other games with the pipe. I had showed him that we could send things through the pipe, so he would take out the hose, stuff some dirt in one end, and then make sure I was watching to see if it came out the other end. He sometimes made a fountain by setting the hose on top of the cement blocks and watching the water drip down from level to level.
Then later in the day, I introduced him to Tuxpaint
. This is a painting program aimed at children. I had told him I had a “painting game” to show him a few days ago, but because he made some bad behavior choices, he had lost access to my computer for a few days. Anyhow, we tried it yesterday and wow — he loved it. There was constant laughter and excitement. I first showed him how to select colors for the paintbrush. He quickly figured out how to make lines, change colors, and change brushes. Tuxpaint has sound effects for just about everything, which he loved too.
Then we explored the interface together and I showed him the “stamps” feature, which lets you paste pre-made pictures into a drawing. Tuxpaint comes with dozens of these, on kid-friendly themes such as animals, cars, fire trucks, signs, etc. This he loved even more. Terah and Oliver got home about this time, and Oliver and Jacob both sat on my lap for a time, both laughing loudly each time Jacob discovered something new to paste into his picture. Of course, then Oliver tried to eat my keyboard and smash my monitor, but there you go.
| Tuesday - September 7th | | 23:30 | | Brett Parker: Life, the Universe, and Everything (or somethi..
 | | 0 hits | Forgive me readers, for I have sinned... or at least, not blogged for a looooong time. I've been reasonably busy, stopped working for Runtime Collective and started contracting for a small company in Portsmouth, it's been somewhat hectic, and the commute isn't brilliant, but it has given me a lot of time for reading...
Really, mostly a lot of my time during the week is commuting, working, reading and sleeping, haven't had much time for anything else, and have mostly been knackered... I'm getting in to the habit now, though, so am getting a bit more time for getting on with other things. I have, however, gained a lot more fiction books in the last few months, and am averaging 2 or 3 books a week at the moment. Most enjoyed the first 2 books of the Demon Trilogy by Peter V Brett - have to wait till 2012 to get the last book, though - which is a loooong time! Actually, I seem to have made a habit of ending up starting trilogys recently where not all of the books are published, in the case of Feed by Mira Grant I managed to really screw up - not even the second book is due out until next year - but the first is really quite good. I've also got the first book of Mark C Newton's Legend of the Red Sun books, really enjoyed that, but am waiting for the second in paperback, as they're much easier to carry around and use on the tube.
Have read the Millennium trilogy, and thoroughly enjoyed it. The first film, although a reasonable adaptation of the book, misses some good parts of the book, and doesn't leave you feeling as if you know the characters as much.
Am also planning on working through all the Laundry books by Charles Stross, I picked up The Fuller Memorandum on a whim (OK, it was on a 2 for 1 in Waterstones...) and really enjoyed it, so am going to get the rest (when I start getting low on books again - I've currently got another 5 queued up, so it might not be for a couple of weeks).
So, other than that, what have I been up to? Well, played the last bits of DLC for Assassins Creed 2 on the PS3, and thoroughly looking forward to the release of AC3, played most of the way through Lego Harry Potter, wandered about and saw people... you know, the usual things!
Oh, and of course, August bank holiday weekend (28-30) were spent with good peoples at the ever fantastic Debian UK BBQ where much Nero was imbibed, many people spoken to, and some gpg signing done - as always many thanks to Steve McIntyre
for a fantastic weekend, to Collabora
and Mythic Beasts
for the beer, and to antibodyMX
and Coding Craft Ltd for the food (Oi, Pashley
, stop being crap and sort out your company website...).
| | 23:30 | | Brett Parker: Discovering Netgear ProSafe switches and IP Po..
 | | 0 hits | So, we have some netgear prosafe switches and some IP Power 9258 devices where I'm currently working, unfortunately, these don't always get the IP configuration that you'd expect (or, they get a DHCP lease from a DHCP server that I can't query the leases from...), however both come with little windows utilities that 'magically' find the devices and give back (quite a lot, really) information on the IP configuration of the device. Being somewhat of a 'oh god, I don't want to use windows, please don't make me' type person, and knowing the the IPPower 9258 boxes were going to a remote site where I'll only have linux machines on the same network as them, I figured that it would be a good idea to sit with wireshark and find out how the heck these tools worked.
Turns out that both just send out a UDP broadcast packet (or two) and then sit and wait for responses - this meant that to get the information that I wanted out of them I could get away with writing very little python, taking the UDP packet that I got back, taking the payload and dismantling it piece by piece so that I could display that information. The scripts aren't at all polished, but if anyone happens to need something (that should work multi-platform, too) to discover either of these, let me know and I can throw you what I've got.
| | 23:00 | | Thomas Girard: Playing with C++0x -- lambdas
 | | 0 hits | C++0x has a workload of new features[2]...
Today I'm having a look at lambdas
. Lambdas are available in g++-4.5
, for now only available in experimental.
What are lambdas?
You can think of it as something akin to a struct with operator(). But it's a more than that: it's closer from a closure
, something that Scheme fans are very familiar with: the closure code block captures its outter environment in its body.
Closures are a very powerful tool that are being retrofitted in many languages (for instance Java
). They can be used as building blocks for many useful programing idioms such as continuations
.
Enough for theory, let's have a look at this new beast.
How do they look like? [](int i) { return i + 1; };
This is the increment lambda. You can declare a lambda in any function or method. Written like this, the lambda compiles[1] but it's not very useful: it's an anonynous lambda that is neither stored nor used.
How to read this? The square brackets open the declaration of a lambda. Then you declare lambda parameters and its body. Nothing suprising so far except for the declaration opening.
Using a lambda
To use it add arguments, for instance:
[](int i) { return i + 1; }(0);
would compute the value 1.
Storing a lambda
The type of a lambda is automatically deduced. You can hint its return type if you need to. To store it you need to use another new C++0x keywork, auto, that was taken back from C:
auto inc = [](int i) { return i + 1; }; std::cout << inc(0) << std::endl;
Notice that calling a named lambda is not different from calling a function. If you need to hint the lambda return type you can use ->:
auto mult = [](int x, double y) -> double { return x * y; };
Capturing environment
You can use lambdas to capture outter environment. A more complex, not working, example:
void f() { int x = 5; [](int w) { return w + x; }(0); }
Tha lambda declaration + invocation does not work, because the x variable we're referring to is declared in the outter scope. To enable capture of the outter scope, we can rewrite the previous example like this:
void f() { int x = 5; [=](int w) { return w + x; }(0); }
The = sign in the square brackets (which are really the capturing clause) means we will copy every variable from the outter scope. Hence we can access x from our anonymous lambda. Now what if you want to change x?
void f() { int x = 5; [=](int w) { return w + ++x; }(0); }
This does not compile: the environment is read-only by default. If you really want to increment x then you need to write:
void f() { int x = 5; [=](int w) mutable { return w + ++x; }(0); }
Yes, mutable. The value returned from the lambda is what you would expect. But guess what? x value is not changed when the lambda returns. Indeed, we've copied outter scope variables by value. To really affect outter scope you need to change the capture clause:
void f() { int x = 5; [&](int w) { return w + ++x; }(0); }
We use the ampersand to capture the environment by reference, and thus we can change x value. We could also be more explicit about what we want to capture:
struct A { int z;
A() : z(0) {}
void f() { int x = 5; [this, &x](int w) { z = w + ++x; }(0); std::cout << 'x: '<< x << ', z: '<< z << std::endl; } };
The lambda in f() explicitely mentions environment variables which are captured by value: this, because we change this->z, and also the local variable x.
Complete example
It's easier to write functionnal-style code. As Sarah just said: 10 years from now everyone will realize how powerful functional programming is, then we'll be the masters of the universe!
#include <algorithm> #include <iostream> #include <vector>
int main(int argc, char* argv[]) { std::vector<int> v = { 1, 2, 3 }; // Show then increment std::for_each(v.begin(), v.end(), [](int& e) { std::cout << e++ << std::endl; }); // Show content now std::for_each(v.begin(), v.end(), [](int e) { std::cout << e << std::endl; });
return 0; }
[1] Use g++-4.5 --std=c++0x to activate C++0x mode
[2] More complete g++ C++0x feature list available here
| | 22:00 | | C.J. Adams-Collier: Debian on Sheeva Plug internal NAND flas..
 | | 0 hits | After a bit of work, I got the sheeva plug working the way I wanted it to. First of all, I grabbed a spare 1G USB flash disk I had laying around and installed Debian squeeze to it by following tbm’s instructions here:
http://www.cyrius.com/debian/kirkwood/sheevaplug/install.html
After debian was installed to the USB disk, I removed it from the plug and used dd on my laptop to create an image of the filesystem. I mounted the filesystem as a loopback device and created a jffs2 partition image from it after doing a bit of minor tweaking. I placed the USB disk back in the plug and booted to it. Using this intermediate filesystem and the mtd-tools package, I wrote the new jffs2 image to the NAND mtd device. I then modified the uboot environment to suit, saved, and now have a working setup.
Detailed instructions are below.
pre-requisitesConnect the plug to your network with the rj-45/cat5 cable.
Connect a USB flash drive to the plug. I used a 1G drive, but 512M should be sufficient.
Install the ‘tftpd’ package on a machine on your network. You’ll also need screen on the machine that you use to connect to the plug’s serial terminal. I’ll assume these are the same host. You need the IP address of the tftp server. In this example, we will assume that the IP is 192.168.1.2 and that you will assign 192.168.1.200 to the plug.
$ sudo apt-get install tftpd screen
Place uImage
, uInitrd
, and uBoot
in the /srv/tftp directory:
$ sudo wget -O /srv/tftp/uImage http://www.cyrius.com/tmp/beta1/marvell/sheevaplug/uImage
$ sudo wget -O /srv/tftp/uInitrd http://www.cyrius.com/tmp/beta1/marvell/sheevaplug/uInitrd
$ sudo wget -O /srv/tftp/uBoot http://wp.colliertech.org/cj/wp-content/uploads/2010/09/07/uboot.bin
Connecting to the serial consoleWe are now ready to boot the plug. Note that you have to be quick with the screen command. I recommend you type it out and get ready to press the enter key. You have to interrupt the bootloader in order to enter the u-boot console. Attach the power and immediately enter the following command:
$ screen -S sheeva /dev/ttyUSB0 cs8,ixoff,115200
If you did this right, you should see a prompt like this:
Marvell>>
update ubootAs per tbm’s instructions, you can now update the uboot if needed. Instructions for that are here:
http://www.cyrius.com/debian/kirkwood/sheevaplug/uboot-upgrade.html
I’ll put them inline here for completeness.
Marvell>> setenv serverip 192.168.1.2 # IP of your TFTP server Marvell>> setenv ipaddr 192.168.1.200 # IP of the plug Marvell>> bubt uboot.bin
be sure to answer ‘n’ to the question about env parameters.
Now reset the device. Don’t forget to interrupt the bootloader so we can get back to the prompt:
Marvell>> reset
Let the device know that you will be running a mainline kernel and set the arcNumber:
Marvell>> setenv mainlineLinux yes Marvell>> setenv arcNumber 2097 Marvell>> saveenv Marvell>> reset
Install Debian to the USB diskInterrupt the boot process once more. We are now ready to run the debian installer. I’ll leave the details as an exercise for the reader. The following should put you into the installer, which you are probably quite familiar with by now.
NB: I will assume that you will use a single ext3 partition for the entire system. This will make it easier to build a jffs2 image out of the resultant partition on the USB disk.
Marvell>> setenv serverip 192.168.1.2 Marvell>> setenv ipaddr 192.168.1.147 Marvell>> tftpboot 0x01100000 uInitrd Marvell>> tftpboot 0x00800000 uImage Marvell>> setenv bootargs console=ttyS0,115200n8 base-installer/initramfs-tools/driver-policy=most Marvell>> bootm 0x00800000 0x01100000
build a jffs2 imageOnce the installation has completed, power down the plug and remove the USB disk. Put the USB disk in the machine you used to get the console on the plug and note what device the kernel assigns to it. In my case, it was given sdc, so debian is installed to /dev/sdc1. I will use these values for this example.
If the filesystem was automatically mounted, unmount it. Create a disk image of the partition and mount it as a loopback device.
$ sudo umount /dev/sdc1 $ dd if=/dev/sdc1 of=/tmp/debian.img $ mkdir /tmp/mnt $ sudo mount -o loop /tmp/debian.img /tmp/mnt
You can now remove the USB disk and return it to the plug.
Modify the /etc/fstab file. The root filesystem will be /dev/mtdblock2 and of fs type jffs2. My fstab file looks like the following:
proc /proc proc defaults 0 0 /dev/mtdblock2 / jffs2 errors=remount-ro 0 1
We can now create a jffs2 image from the mounted and altered fresh install:
$ sudo mkfs.jffs2 -l -e 0x20000 -X zlib --eraseblock=128KiB --pad --output=/tmp/rootfs.jffs2 --compression-mode=priority -n --squash -r /tmp/mnt
write jffs2 to nandNow that we have an image to flash to the NAND, let’s boot off of the USB disk. It should now be attached to the plug. Power on the plug and use screen to get a console. Interrupt the bootloader and enter the following commands:
Marvell>> setenv bootargs_console console=ttyS0,115200 Marvell>> setenv bootcmd_usb 'usb start; ext2load usb 0:1 0x01100000 /boot/uInitrd; ext2load usb 0:1 0x00800000 /boot/uImage' Marvell>> setenv bootcmd 'setenv bootargs $(bootargs_console); run bootcmd_usb; bootm 0x00800000 0x01100000' Marvell>> run bootcmd
Log in as root with the credentials you configured during the install. You will need to install a few packages in order to complete the nand flash. You can then ssh to the host on which you created the jffs2 image and cat it to stdout, piping this to nandwrite:
$ sudo apt-get install mtd-utils $ ssh user@192.168.1.2 cat /tmp/rootfs.jffs2 | sudo nandwrite /dev/mtd2 -p -
You now have a jffs2 image on the nand.
Configure u-bootOne more reboot to set u-boot’s environment, and you will be done. Power down and remove the USB disk. Power on and get the serial console using screen. Break into the bootloader and enter the following commands:
Marvell>> setenv bootargs_console console=ttyS0,115200 Marvell>> setenv mtdpartitions mtdparts=orion_mtd:0x400000@0x100000(uImage),0x1fb00000@0x500000(rootfs) Marvell>> setenv bootargs_root root=/dev/mtdblock2 rw rootfstype=jffs2 Marvell>> setenv bootcmd 'setenv bootargs $(bootargs_console) $(mtdpartitions) $(bootargs_root); nand read.e 0x00800000 0x00100000 0x00400000; bootm 0x00800000' Marvell>> saveenv Marvell>> reset
You should now be good to go.
| | 21:30 | | Kees Cook: cross-distro default security protection review
 | | 0 hits | The recent work
by MWR Labs does a reasonable job showing Debian’s poor security and why I am so frustrated
about it: we have not been able to move very quickly at getting it enabled. While my hardening-includes
package is available to maintainers that want to turn on protections for their builds, it’s still a far cry from having it be distro-wide, and it doesn’t protect people that build stuff by hand. We were able to solve this in Ubuntu very directly a while ago by improving the compiler itself.
Since SSP and FORTIFY_SOURCE can only be confirmed (it’s not possible without source analysis to see if it should have been enabled), it would be nice to see what binaries differed between distros on this. Most of the “SSP disabled” stuff are binaries that lack character arrays on the stack to begin with, and the FORTIFY_SOURCE stuff may have done all compile-time protections. The comments about “other distributions could potentially enable it for a few more binaries” is a bit misleading since, for all but Debian, both SSP and FORTIFY_SOURCE are enabled for all builds.
I did appreciate the nod to Ubuntu for being the only distro without by-default PIE that built Firefox with PIE. Given that Firefox is the #2 most vulnerable piece of software in a desktop distro, it was important to do it. (The #1 most vulnerable is the kernel itself — I’m counting number of fixed CVEs for this stat.)
The kernel analysis by MWR seems rather incomplete. Also, it’s not clear to me which distros were running a PAE kernel, which would change some of the results. I didn’t see any mention of several other userspace protections that the kernel can provide, for example:
- symlink and hardlink protections (Gentoo Hardened and Ubuntu 10.10 only)
- PTRACE protections (Gentoo Hardened and Ubuntu 10.10 only)
And a ton more that only Gentoo Hardened could boast, due to their use of grsecurity.
I’d also be curious to see performance comparisons, too. They compared 4 general-purpose distros against a tuned-specifically-for-security-hardening distro, which seems a bit unfair. How about comparing against vanilla Gentoo instead? I can tell you who would be best then. :)
| | 17:30 | | Gerfried Fuchs: flattr
 | | 0 hits | I started to give flattr
a try, too. It is a social micropayment site and the similarity of its name to the verb flatter is on intention. It is meant to say thanks in small amounts month by month to 'things' you like. One such thing I created is my blog—you can find the link to it below every entry. To be able to flattr someone one needs to create an account on the site and put money into their account. After that it's possible to follow the flattr button links. If you are reading my blog on my site and have JavaScript enabled you just have to click the flattr part of the image (not the number) to do so. If you are reading it through my feed
or with JavaScript disabled you will have to click a second time on the flattr site to make the flattring happen.
Another thing I've created is Debian BTS: cleaning up
. I use this link in my mails to the Debian BTS for my stable RC cleanup efforts, or general proper closing of bugs that aren't getting archived. Through the help of UDD I've created me helpful overview pages
of bugs that need attention for this.
The third thing I've created is Package Maintenance
. If you are a fan of one of the packages I maintain and want to thank me for taking proper care of it, feel free to also click this one. Please be aware that this shouldn't be seen as an Upstream appreciation—if one of the projects I package for Debian uses flattr themself then you should definitely (also) consider flattring them for their own.
About Upstream projects that use flattr: One of the packages I invest quite a lot of effort into started using flattr: wesnoth
. They have put the flattr button on their entry page at wesnoth.org
, here is the direct link to their first and general thing: The Battle for Wesnoth
.
Please be reminded that the things you did flattr in a previous month can again be flattred the next month. This is especially true for general purpose things like what I am using currently. Others might create things for every single blog entry, or very specific tasks, to allow people to flattr them more often in a month and get a bigger share of the cake. So keep in mind which things are general ones and consider returning to them.
Enjoy!
/debian
|
permanent link
|
Comments: 0
|
| | 17:30 | | Raphaël Hertzog: How to use multiple upstream tarballs ..
 | | 0 hits | Since the introduction of the “3.0 (quilt)” source format, it is now possible to integrate multiple upstream tarballs in Debian source packages. This article will show you how to do the same with your own package shall you need it. It’s quite useful to easily integrate supplementary plugins, translations, or documentation that the upstream developers are providing in separate tarballs.
Step by step explanationWe’ll take the spamassassin source package as an example. The upstream version is 3.3.1. The main upstream tarball is named as usual (spamassassin_3.3.1.orig.tar.gz) and contains the top directory of our source package. We already have a debian directory because the package is not new.
Upstream provides spamassassin rules in a separate tarball named Mail-SpamAssassin-rules-3.3.1.r901671.tgz. We grab it, rename it to spamassassin_3.3.1.orig-pkgrules.tar.gz and put it next to the main tarball. The “pkgrules” part is the component name that we choose to identify the tarball, it’s also the name of the directory in which it will be extracted inside the source package. For now that directory doesn’t exist yet so we must create it.
$ mv Mail-SpamAssassin-rules-3.3.1.r901671.tgz spamassassin_3.3.1.orig-pkgrules.tar.gz
$ cd spamassassin-3.3.1
$ mkdir pkgrules
$ tar -C pkgrules -zxf ../spamassassin_3.3.1.orig-pkgrules.tar.gz
This is already enough, the next time that you will build the source package, the supplementary tarball will be automatically integrated in the generated source package.
$ dpkg-buildpackage -S
[...]
dpkg-source -b spamassassin-3.3.1
dpkg-source: info: using source format `3.0 (quilt)'
dpkg-source: info: building spamassassin using existing ./spamassassin_3.3.1.orig-pkgrules.tar.gz ./spamassassin_3.3.1.orig.tar.gz
dpkg-source: info: building spamassassin in spamassassin_3.3.1-1.debian.tar.gz
dpkg-source: info: building spamassassin in spamassassin_3.3.1-1.dsc
The supplementary tarball is now part of the source package but we’re not making anything useful out of it. We have to modify debian/rules (or debian/spamassin.install) to install the new files in the binary package.
A special case: bundling related softwareIn very rare cases, you might want to create a bundle of several software (small perl modules for example) and you don’t have any main tarball, you only have several small tarballs. Rename all the tarballs following the same logic as above and when building the source package you can ask dpkg-source to create an empty (and fake) main archive for you with the option --create-empty-orig:
$ dpkg-buildpackage -S --source-option=--create-empty-orig
Use with care as the version number you give to the bundle is what users will see and it’s likely unrelated to the version number of each individual software.
Common mistakesForgetting to extract the supplementary tarballIf you forget to extract the content of the supplementary tarball in the pkgrules directory, dpkg-source will emit lots of warnings about those files being deleted. In fact, you did not delete them but you only forgot to create them in the first place.
dpkg-source: warning: ignoring deletion of directory pkgrules
dpkg-source: warning: ignoring deletion of file pkgrules/20_fake_helo_tests.cf
dpkg-source: warning: ignoring deletion of file pkgrules/60_shortcircuit.cf
[...]
Using a bad version number for the supplementary tarballSometimes the supplementary tarball has a version of its own that does not match the upstream version. You must still name the file in a way that matches the upstream version of the main tarball otherwise it will not be picked up by dpkg-source and it will generate a new patch in debian/patches/ containing the whole new directory.
It’s possible to encode the version number of the supplementary tarball in the component name (in our example above we could have picked “pkgrules-r901671″ as component name) but this means that the name of the associated directory will regularly change and you must adapt your packaging rules to cope with this.
However this last trick has the benefit of being able to update the additional tarball without bumping the upstream version. A sourceful upload of a new revision of the package will be accepted by the archive: the main tarball is ignored since it’s unchanged but the supplementary tarball is taken since it’s a new file for the archive (it has a different filename).
Be sure to move away old versions of the additional tarball when you do that if you don’t want to upload several versions of the same tarball by mistake!
Misextracting the supplementary tarballdpkg-source is very smart when it extracts the supplementary tarball and you should be as well when you manually extract it.
If the tarball contains only a single top-level directory, that directory is extracted, renamed to match the component name and moved in the source package directory.
If the tarball contains several top-level files or directories, then the target directory is first created and the content of the archive is directly extracted into that directory.
Here are commands to install the files in both cases (we’re already in the source package directory):
$ mkdir pkgrules
# Archive contains a single top-level directory
$ tar -C pkgrules --strip-components=1 -zxf ../spamassassin_3.3.1.orig-pkgrules.tar.gz
# Archive contains many top-level entries
$ tar -C pkgrules -zxf ../spamassassin_3.3.1.orig-pkgrules.tar.gz
No comment
| Support my work
 | | 17:00 | | Benjamin Mako Hill: Selectricity Source
 | | 0 hits | After a semi-recent thread
on debian-devel
, I poked around and
realized that I'd never actually gotten around to formally announcing
the release of source code for Selectricity
, a piece of web-based
election software designed to allow for preferential decision-making and
to provide 'election machinery for the masses.' Selectricity is useful
for a range of decisions but it targets all those quick little decisions
that we might want to decide preferentially but where running a vote
would be overkill.
Things were delayed through a drawn out set of negotiations with the MIT
Technology Licensing Office over how to release the code under a free
software license of my choosing. I was swamped when things finally came
through. Over time, I managed to forget that I never did a formal
announcement, never setup a mailing list, and never did all those things
that I have tried to teach other people in the Free Software Project
Management HOWTO
. Code just sort of appeared on my website under the
GNU Affero General Public License
. It was until the debian-devel
thread that I remembered I'd never made a formal announcement. Sorry
about that!
The git repository has been online
and accessible through searches for
more than a year now. Most folks who wanted the code seem to have been
able to find it there. Indeed, a number of people have set up their own
instances and a few have submitted patches to the code! But more
visibility for the source means more empowered users, more visibility
for free software, and more developers.
So I've shipped all the code into a project in Gitorious
(its like
GitHub, except free
), announced things on the Selectricity Blog
,
changed the Selectricity footer of to include a prominent link to the
source. I've also created a mailing list
. The Gitorious project
page
includes a wiki.
I also want to mention this all here because the attention of the
current development team seems mostly to have moved on to other
projects. The current team seems able to keep the hosted version up and
running, and even gets around to little improvements now and then, but
there's definitely room for new life and new leadership.
There are some nearly-complete and 'complete minus further testing'
features in the development tree that might provide low hanging fruit
for folks interested in elections and decision-making who might want to
get involved in Selectricity development. If you're interested and know
(or want to learn) Rails, feel free to check out the code
, introduce
yourself on the list
or contact team@selectricity.org
to coordinate.
| | 12:00 | | Biella Coleman: Ireland
 | | 0 hits | This summer of 2010 has been memorable. It started with a difficult period following the hospitalization and death of my mother, a series of very intense and equally memorable conferences catapulting me out of my funk and ending with a trip to Ireland, perhaps one of my most pleasant trips ever. I have always wanted to go there, as I have some good Irish friends and I was also quite attracted to the place due to its history, so when the opportunity came for me to go, I did not hesitate to book my ticket. I was not left disappointed in any way, shape or form, although since I barely experienced the gray, misty, and rainy weather Irish is famous for, my experience may admittedly be a bit skewed.
These are some of things I did and some of my fragmented thoughts about Ireland and some photos, proof that the weather was UnIrish
Ireland and The Irish: Well I can’t—as no one can—speak of The Irish as if they were some unitary group but I did learn a lot about Irish history and managed hang out with a number Irish folks (even a family) and one thing that seems to mark Ireland as distinct, what makes it stand out from the rest of its Western European brothers and sisters, is the pervasive sense of history bleeding into the ambiance, perhaps because it is so tragic. The short version of the history, if you don’t know it, is that the Irish, especially the Catholics, got repeatedly screwed by the British monarchs/rulers/planters/government/ for nearly a thousand years, the last five hundred of those being particularly harsh and ugly, a cycle of slight gains crushed by various forms of tyranny and violence at least until part of the country achieved independence (Northern Ireland is a bit of a different story).
I may have gone a bit out of my way to learn about Irish history, more than I have done for any other place, but this historical consciousness seemed to be inescapable, precipitating into all sorts of conversations and places. To take one example, I went to see Gaelic Football, one of the two beloved national sports (the other being hurling), and the minute you learn anything about this sport, you learn that it is intimately bound with the Irish fight for independence and nationalism.
The Irish are also very warm, kind, and outgoing. They also seem to curse an awful lot as well, so much so cursing is a bit of a national pastime, which yes, I (f*cking) loved as I tend to have a bit of a foul mouth myself, curbed I will admit, in recent years and in the classroom. It crept up in a lot of places but was most pronounced during the All Ireland Semi-Final Gaelic football game when the ladies (not lads, mind you) behind me were constantly yelling at the referee, hurling the c-word (rhymes with trunk) whenever they made a call they disagreed with.
EASA/Maynooth.: I went to Ireland to attend the largest Anthropological meetings in Europe
, and in specific an all day panel on digital anthropology
, which seemed like a great opportunity given we are a a bit of a minority. The conference was impressively large with roughly 1200 attendees (can you believe there are that many anthropologists?), smoothly run, and the all-day panel on digital media was quite lively and I got to meet some really interesting folks. I was a tad sad to find out Maynooth is the only university in Ireland with an Anthropology department (for crying shame lads!!!) but at least it is located in a darn stunning university: the old quarters of the campus are strikingly beautiful
.
Anonymous: I have done some work on Anonymous
and well when I found out there was going to be a raid/protest at the Church of Scientology (a pretty dismal, and run down church), I got in contact with Irish anon to let them know I was coming. Although someone first decapitated me
(at least in character with their norms, right?), when I showed up in person, they were not only civil but really quite hospitable (greeting me with one of my favorite songs). Overall it was a great day
. I was reminded of important differences among Anons (Irish Anon’s take their anonymity pretty seriously, the New York Anons do not) and also good to experience the social life and metabolism of a protest, especially one attended by folks who have lost family to the church.
Dublin: Since I stayed with my friend and his family in Dublin, this is where I spent
most of my time
. I was able to hook up with various friends, including one from graduate school who just got back from years of fieldwork in Rwanda and hearing about his experiences and stunning but stunningly sad project made me feel like mine in comparison was Child’s Play (in fact, it really was). I got to see the Debian crew (many who work at Google) and I finally paid a visit to the office, which was exactly how I imagined it to be (good and abundant food, good lighting, lots of toys and bikes, lots of Star Wars posters.. Yep, it could have been in Silicon Valley). But I was surprised at the young age of the marketing and sales folks who were hanging in their lounge when I ran into them. In fact when I saw them I thought like I was looking at my freshman class or something! It was great to see the Debian folks (though no one I met was actually Irish), as well, one of my favorite things to do whenever I visit a foreign city.
I walked my heart out in the city getting a blister in a shoe that I thought was blister proof and while not as picturesque as some other European cities, it has a ton of character and no shortage of Guinness and pubs (no surprise there). My favorite places/things were: The National Library (great exhibit on Yeats, but make sure to use the multi-media as that is where all the information is stuffed), St. Stephen’s Park (overflowing with chubby ducks and lovely flowers), the prison Kilmainham Gaol
(would not advise a visit if you are feeling in any way down, there is some heavy shit you learn during the tour), the simple stained glass
that seemed pretty common, and finally the Long Room
in Trinity Church, which you enter after the Book of Kells (I realized just how much I adore books when I visited this old library stuffed from floor to ceiling with old old old books).
The West Coast: I did not think I was going to head out west but after hurricane Earl started its burst along the eastern Seaboard and I was able to change my ticket for free so I stayed a few more days. I went to the Burren
and the Cliffs of Moher
both totally stunning, really majestic. As is often the case with these type of these natural wonders, I am often left elated and awed but such strikingly wondrous places also seem to subsequently spur a more melancholic state of mind and heart.
Friends, Family, and Dogs: While in Dublin I stayed with my friend A. and his extremely hospitable family, which included, a brother, a father, and three Irish mutts, one of which, Buster (pitt bull/lab mix)
, pretty much stole my heart. Buster’s true love, is food, so much so he almost poised himself to death a little while back snorting down something he shouldn’t have costing the family a pretty penny to save him. My friend no longer lives there but came from Berlin and it was a real treat to not only spend days layered upon each other with a friend (it has been an awful long since I have done that outside of conferences) but also meet his family. You learn a lot about your friends that way and in this case, there is some serious and I mean serious intellectual jousting that happens, sometimes bordering on warfare but generally it plays out in more contained, civil and fascinating fashion. Now I understand why my friend is armed with seemingly endless knowledge: it was needed for purposes of defense at home.
So in the end, a great, great trip and a fantastic way to end a memorable summer and transition into what I hope will be a bit of a monkish (I call it monk mode) period for this academic year. I am (so so so) fortunate enough to have a fellowship at the Institute for Advanced Study and am going to try my darnest to take advantage of the fact I am not teaching (Hell Yes!) and hide away and accomplish all that I have set out to do.
 | Monday - September 6th | | 23:30 | | Gustavo Franco: Gooooogle!
 | | 0 hits | We will celebrate Independency Day here in Brazil tomorrow (the year was 1822 for those into world history). I took the time to visit Belo Horizonte and meet a few googlers I don't see in a while. The cool part is that Rodrigo and his wife Ellen are also in town. We (me and Rodrigo) used to work in the same team at Google here in Belo, he's now living in Zurich.
I would like to let you know that I'll be rejoining Google in a month or so!
For those out of the loop: I quit Google San Francisco a few months ago to get back to Rio de Janeiro in order to assist my family with some complicated issues. They were all sorted out and Google rehired me! How cool is that?
I'm glad to be part of Google Site Reliability Engineering again and looking forward to meet all the Debian Developers in Mountain View and San Francisco. I've met Andy and a few others already. Please stop by and say hi!
| | 23:00 | | Ingo Juergensmann: Problems with IPv6 and Bridging/Xen
 | | 0 hits | I've been using IPv6 on my rootserver for some time now. Last week I migrated to a new rootserver and copied my domU/VM instances over to the new hardware. Everything is working fine so far - except IPv6. The network setup is the same as on the old server: the external interface is eth0. The domU/VMs are hooked up to a bridge, called xenbr0. There's another bridge for internal communication: xenbr1.
The dom0/Xen host itself seems reachable via IPv6. The /48 subnet is provided by Sixxs and is using a static 6-to-4 tunnel. But the VMs are not reliable reachable, although it is setup in the same way as it was on the old server and where it was working like a charme.
The configs of the hosts are these:
Xen dom0| config | old server | new server |
|---|
| System | Debian Etch
2.6.18-6-xen-amd64
linux-image-2.6.18-6-xen-amd64
linux-modules-2.6.18-6-xen-amd64
xen-hypervisor-3.0.3-1-amd64
xen-ioemu-3.0.3-1
xen-linux-system-2.6.18-6-xen-amd64
xen-tools
xen-utils-3.0.3-1
xen-utils-common | Debian Squeeze
2.6.32-5-xen-amd64
libxenstore3.0
linux-image-2.6.32-5-xen-amd64
xen-hypervisor-4.0-amd64
xen-linux-system-2.6.32-5-xen-amd64
xen-tools
xen-utils-4.0
xen-utils-common
xenstore-utils
xenwatch
|
|---|
| /etc/sysctl.conf | net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
net.ipv4.conf.default.proxy_arp=1 | net.ipv4.ip_forward=1
net.ipv4.ip_syncookies=1
net.ipv4.conf.all.rp_filter=1
net.ipv4.icmp_echo_ignore_broadcasts=1 |
|---|
| /etc/xen/xend-config.sxp | (network-script network-route)
(vif-script vif-bridge)
(dom0-min-mem 196)
(dom0-cpus 0) | (vif-script vif-bridge)
(network-script network-route)
(dom0-min-mem 196)
(enable-dom0-ballooning yes)
(total_available_memory 0)
(dom0-cpus 2)
(vncpasswd '') |
|---|
| /etc/network/interfaces | # device: eth0
auto eth0
iface eth0 inet static
address 85.10.209.30
broadcast 85.10.209.31
netmask 255.255.255.224
up route add -net 85.10.209.0 netmask 255.255.255.224 gw 85.10.209.1 eth0 || true
up ip route add 85.10.209.0/28 via 85.10.209.1 src 85.10.209.30 || true
up route add default gw 85.10.209.1 || true
auto xenbr0
iface xenbr0 inet static
address 85.10.209.30
netmask 255.255.255.224
pre-up brctl addbr xenbr0
up route add -net 78.47.85.144/29 dev xenbr0 || true
up ip -6 r a 2001:6f8:90e:145::1/64 via 2001:6f8:90e:1:216:3eff:fe55:197c dev xenbr0 ||true
up ip -6 r a 2001:6f8:90e:146::1/64 via 2001:6f8:90e:1:216:3eff:fe2f:481d dev xenbr0 || true
up ip -6 r a 2001:6f8:90e:147::1/64 via 2001:6f8:90e:1:216:3eff:fe60:68be dev xenbr0 || true
up ip -6 r a 2001:6f8:90e:a100::1/64 via 2001:6f8:90e:1:216:3eff:fe70:be dev xenbr0 || true
auto xenbr1
iface xenbr1 inet static
address 192.168.x.254
netmask 255.255.255.0
pre-up brctl addbr xenbr1
# some internal IPv4 routing
auto sixxs
iface sixxs inet6 v4tunnel
address 2001:6f8:900:c6e::2
netmask 64
endpoint 212.224.0.188
local 85.10.209.30
ttl 64
up ip link set mtu 1280 dev sixxs || true
up ip route add default via 2001:6f8:900:c6e::1 dev sixxs || true
up ip -6 route flush dev eth0 || true
up ip -6 r a 2001:6f8:90e::/48 dev xenbr0 || true
down ip -6 route flush dev sixxs || true
| # device: eth0
auto eth0
iface eth0 inet static
address 178.63.83.84
broadcast 178.63.83.127
netmask 255.255.255.192
gateway 178.63.83.65
# default route to access subnet
up route add -net 178.63.83.64 netmask 255.255.255.192 gw 178.63.83.65 eth0
auto xenbr0
iface xenbr0 inet static
address 178.63.83.84
netmask 255.255.255.192
pre-up brctl addbr xenbr0
up route add -host 178.63.83.104 dev xenbr0 || true
up route add -host 178.63.83.105 dev xenbr0 || true
up route add -host 178.63.83.106 dev xenbr0 || true
up ip route add 178.63.123.128/26 dev xenbr0 || true
up ip -6 r a 2001:6f8:90e:145::1/64 via 2001:6f8:90e:1:216:3eff:fe89:6c31 dev xenbr0 ||true
up ip -6 r a 2001:6f8:90e:146::1/64 via 2001:6f8:90e:1:216:3eff:fedc:af5f dev xenbr0 || true
up ip -6 r a 2001:6f8:90e:147::1/64 via 2001:6f8:90e:1:216:3eff:fe08:8f40 dev xenbr0 || true
up ip -6 r a 2001:6f8:90e:a100::1/64 via 2001:6f8:90e:1:216:3eff:fe70:be dev xenbr0 || true
auto xenbr1
iface xenbr1 inet static
address 192.168.x.254
netmask 255.255.255.0
pre-up brctl addbr xenbr1
# some internal IPv4 routing
auto sixxs
iface sixxs inet6 v4tunnel
address 2001:6f8:900:c6e::2
netmask 64
endpoint 212.224.0.188
local 178.63.83.84
ttl 64
up ip link set mtu 1280 dev sixxs || true
up ip route add default via 2001:6f8:900:c6e::1 dev sixxs || true
up ip -6 route flush dev eth0 || true
up ip -6 r a 2001:6f8:90e::/48 dev xenbr0 || true
down ip -6 route flush dev sixxs || true
|
|---|
The config of one of the Xen domUs is this:
sample domU config| config | old server | new server |
|---|
| system | Debian Lenny
2.6.18-6-xen-amd64 | Debian Lenny
2.6.32-5-xen-amd64 |
|---|
| /etc/sysctl.conf | net.ipv4.conf.default.rp_filter=1
net.ipv4.tcp_syncookies=1
net.ipv4.conf.default.forwarding=1
net.ipv6.conf.default.forwarding=1
net.ipv4.conf.eth0.proxy_arp=1
net.ipv4.conf.default.proxy_arp=1
kernel.shmmax=268435456 | net.ipv4.conf.default.rp_filter=1
net.ipv4.tcp_syncookies=1
net.ipv4.conf.default.forwarding=1
net.ipv4.conf.all.forwarding=1
net.ipv6.conf.default.forwarding=1
net.ipv4.conf.eth0.proxy_arp=1
net.ipv4.conf.default.proxy_arp=1
kernel.shmmax=268435456 |
|---|
| /etc/network/interfaces | # The primary network interface
auto eth0
iface eth0 inet static
address 78.47.85.145
netmask 255.255.255.248
up ip route add 85.10.209.0/27 dev eth0
up route add default gw 85.10.209.30 dev eth0
up ip -6 address add 2001:6f8:90e:145::1/64 dev eth0 || true
up ip -6 route add default via 2001:6f8:90e:1::1 || true
up iptables -t nat -A POSTROUTING -s 192.168.x.96/27 -o eth0 -j MASQUERADE || true
iface eth0 inet6 static
address 2001:6f8:90e:145::1
netmask 64
gateway 2001:6f8:90e:1::1
auto eth1
iface eth1 inet static
address 192.168.x.1
netmask 255.255.255.0
| # The primary network interface
auto eth0
iface eth0 inet static
address 178.63.83.104
gateway 178.63.83.84
netmask 255.255.255.192
broadcast 178.63.83.127
up ip -6 address add 2001:6f8:90e:145::1/64 dev eth0 || true
up ip -6 route add default via 2001:6f8:90e:1::1 src 2001:6f8:90e:1:216:3eff:fe89:6c31 || true
up iptables -t nat -A POSTROUTING -s 192.168.x.96/27 -o eth0 -j MASQUERADE || true
iface eth0 inet6 static
address 2001:6f8:90e:145::1
netmask 64
gateway 2001:6f8:90e:1::1
auto eth1
iface eth1 inet static
address 192.168.x.1
netmask 255.255.255.0
|
|---|
The dom0 seems to be reachable via IPv6 just perfectly fine. When trying to reach the domU I see packets going through the xenbr0 bridge and reaching the domU eth0 interface. The ICMP6 echo request packets (proto 58) are unanswered there, no echo replies. Strange enough it seems to work from time to time, but mostly not. I've also tried to set a generic default route like ip -6 route add default dev eth0, but still no improvement.
Did I miss something when migrating to the new server? Is there any mistake in the configs? Any suggestions are appreciated! :-)
| | 22:00 | | Joey Hess: freedombox for a solar powered house
 | | 0 hits | I'm swinging on the front porch shade, with happy wifi bars lit up on my
laptop. A good network makes for a happy home, isn't that how the saying goes?
(Maybe not yet.)
Typically that's easy to achieve -- here it wasn't. The house is solar powered,
the only connection to the outside is a phone line. So I needed a computer
that would work in that environment, using minimal (12 volt) power, and
getting the most out of the limited bandwidth while providing those
happy wifi bars.
At DebConf we learned that the name for these little home servers we have been
building for years is 'FreeDomBox
'. All
right then, here's my latest FreedomBox build.
A typical inexplicable tangle of computer
bits.
| - Computer: NSLU2. There are faster choices than the 'Slug', but on
dialup, speed doesn't much matter, and there are not many lower-powered
choices. And with the NSLU2, I can take advantage of years of development
and experience, that has resulted in great support for running eg,
Debian on it, and deep available knowledge of hardware hacks.
It's proven, cheap, highly reliable hardware, and I had it lying around.
- Power: The NSLU2 is a 5 volt computer. There are some highly (90%) efficient
12 volt to 5 volt converters, which I covet. But the cheap and easy
option is a automotive USB power adapter. So power is coming in to the NSLU2
on a USB cable. It's possible to just plug that into its usb port and it
will run. But that wastes a port. Instead, I made the other end of the
usb cable have a NSLU2 power socket on it. So, no wasted ports.
The system has available as many amps as the voltage converter supplies.
Not many. Booting it with too many usb gadgets attached could be an issue.
(If I need to run an external usb hard drive, it had better have its own
power supply.)
- Wireless: ZyDAS 2501 USB dongle. Not my first choice, just one I had
lying around. This device cannot run in AP mode. It is, by the way,
possible to use some USB dongles in AP mode with a modified hostapd,
but the few I know that work are out of stock. No problem; this house
won't have many visitors, and I can tell them the details for connecting
using Ad-Hoc wireless mode.
- Storage: 64 gb thumb drive I had lying around. Hmm, last time I touched
a NSLU2, I had only 1 gb drives lying around. Progress.
- Modem: My NSLU2 is modified to have an external serial port, so I can
use an external modem if desired. But I suspect a USB modem will use
slightly less power, even though this third USB device means I need a USB
hub too. I was doubtful about finding a USB modem dongle that works
with Linux, but it was actually no problem, the USR5637 Just Works.
- Software: Debian Linux of course. For the first time I'm using the polipo
web proxy cache, and it works marvelously on dialup and on this low-spec
system. Combined with dnsmasq, this makes web browsing over dialup
actually not painful.
Since the solar house is in the sticks, the result is a server I call
'stick
'.
| | 18:00 | | Jan Hauke Rahm: tmux entered my system
 | | 0 hits | Been playing with that thought for a while now, finally got to rebuilding it for lenny, now I’m using it… tmux
is the new screen. To have fun already I read a few short introductions
and got myself a few suggestions for a proper .tmux.conf. So, for root I have this one now:
# Copy mode
unbind [
bind Escape copy-mode
# Use Vi mode
setw -g mode-keys vi
# Make mouse useful in copy mode
setw -g mode-mouse on
# More straight forward key bindings for splitting
unbind %
bind | split-window -h
bind h split-window -h
unbind '''
bind - split-window -v
bind v split-window -v
# History
set -g history-limit 4000
# Terminal emulator window title
set -g set-titles on
set -g set-titles-string '#S:#I.#P #W'
# Status Bar
set -g status-bg black
set -g status-fg white
set -g status-interval 1
set -g status-left '#[fg=green]#H#[default]'
# no line break here, it's just to long for my blog layout!
set -g status-right '#[fg=yellow]#(cut -d '' -f 1-4 /proc/loadavg)#[default] #[fg=cyan,bold]%Y-%m-%d %H:%M:%S#[default]'
# Notifying if other windows has activities
setw -g monitor-activity on
set -g visual-activity on
# Highlighting the active window in status bar
setw -g window-status-current-bg red
# Clock
setw -g clock-mode-colour green
setw -g clock-mode-style 24
# Create a default session
new -n htop -d htop
neww -n aptitude -d aptitude
neww -d
Then I added a new alias to my user’s zsh config:
alias root='su -c 'tmux attach''
Why ‘tmux attach’? Because tmux would start a new session which I don’t want it to. The config already starts a session which we can immediately attach to. Also, when such session was started I can attach to it as a user with the very same command over and over again. That makes it pretty handy as I always have htop, aptitude and a free shell available in a nice tmux session. Great. How did I live until now? ;-)
| | 15:30 | | Robert Millan: Debian Installer with ZFS
 | | 0 hits | Long time no see… Not much hacking in the last few months. Not much ranting either (some of you I’m sure will appreciate ;-).
Anyway, I recently grew excited to learn that ZFS is coming to Debian
. I decided to bite the bullet, patched the missing bits in GRUB and Parted, a few small changes in D-I and there’s now a modified Debian Installer with ZFS support
for you to play with. Enjoy!
Note1: I didn’t have time or interest in warping D-I into the N:1:M model used in ZFS. Instead, this installer assumes each zpool has exactly one device and exactly one filesystem. However, you can later add more devices (“zpool attach”) or create new filesystems in the same pool (“zfs create”).
Note2: Don’t ask for i386, it was intentionally left out. ZFS is designed with modern CPUs
in mind. It can work on i386 with special tuning
but I don’t want to encourage users to do this unless they’re well aware of what they’re doing.
 | | 10:30 | | Norbert Tretkowski: Backports service becoming official
 | | 0 hits | More than seven years after I initially started the backports.org
project together with Teamix
, my employer at that time, it finally happened: backports.org moved to backports.debian.org! Alexander Wirt wrote a blog entry
including some technical details, and there is also an official announcement
on the debian-announce mailinglist. The most important point from a users perspective is to update your sources.list entry to:deb http://backports.debian.org/debian-backports/ lenny-backports main contrib non-free Thanks a lot to all people who made it happen, especially Alexander Wirt and Jörg Jaspert! | | 9:30 | | Norbert Tretkowski: backports.org moved to backports.debian...
 | | 0 hits | More than seven years after I initially started backports.org, it finally happened: backports.org moved to backports.debian.org! Alexander wrote
an announcement including some technical details, the most important point from a users perspective is to update your sources.list entry to:deb http://backports.debian.org/debian-backports/ lenny-backports main contrib non-free Thanks a lot to all people who made it happen, especially Alexander Wirt and Jörg Jaspert! | | 8:00 | | Craig Small: psmisc 22.13, gjay 0.3.1-2 and son 2.0
 | | 0 hits | Two updates for Debian
today.
I'm the upstream for psmisc
and 22.13 finally got released, which also meant 22.13-1 Debian package got released too. There was some delay to it (see below why) but it is now out. Unless you run a mips or superH architecture, there is not really any exciting changes, but should make it compile for those two architectures and then at least get the mips buildd underway so the versions all line up.
Secondly, gjay
had two minor bug fixes and was updated. If the analysis daemon kept playing music instead of looking at it or the vorbis files were not being recognised, then this new version will help there. The mpg123
command line patch will be rolled into the upstream too.
I'm also working on getting gjay to work with the Exaile
player. If you want it to work with your player the easiest thing is to send me patches or code snippets that do the following:
- Detect your player is running
- Can give me the currently played song, preferably the filename of it. Exaile doesn't so I'll put it a kludge to guess it from title and artist
- Remotely send a playlist to your player and get the player to start
Last of all, my second son was born last week. It's back to those night feeds again and is probably why I've not written as much code as I normally would; but I wouldn't change that either.
<script defer='defer' src='http://static.zemanta.com/readside/loader.js' type='text/javascript'></script> | | 2:30 | | Neil Williams: Emdebian Grip updated
 | | 0 hits | Emdebian Grip 1.0.1 (based on Debian GNU/Linux 5.0.6) is now available.
Emdebian Grip
is binary-compatible with Debian, providing smaller packages for use on embedded devices. Emdebian Grip selects a subset of Debian packages and removes documentation and other non-binary content without recompiling the source code. Currently, Emdebian Grip supports amd64, arm, armel, i386, mips, mipsel and powerpc in the stable distribution. ARM support will be dropped in the next stable release in favour of armel.
This is the first update of the stable distribution Emdebian Grip (based on Debian GNU/Linux 5.0), bringing Emdebian Grip up to date with Debian 5.0.6. This update mainly adds corrections for security problems to the stable release, along with a few adjustment to serious problems.
Please note that this update does not constitute a new version of Emdebian Grip 1.0 or Debian GNU/Linux 5.0 but only updates some of the packages included. Systems will upgrade to 1.0.1 via the Emdebian mirror after an installation.
For more details on the changes within Debian through 5.0.1, 5.0.2, 5.0.3, 5.0.4, 5.0.5 and now 5.0.6, see the Debian news website
.
As well as updates to packages which already existed in Emdebian Grip 1.0, the update includes many new packages, including apache2, aspell and variants, and matchbox.
e.g. 822 packages were released for armel in Emdebian 1.0; this update increases that number to 1,297.
| | 2:30 | | Andrew McMillan: I guess I should have known better
 | | 1 hit | Really, I should have known better than to buy myself a rather 'bleeding-edge' laptop. I suppose I've been lucky with my last couple of laptops and was thinking that pretty much everything works on Linux. Or maybe I'm being picky, because in fact pretty much everything does work on my new Dell Studio.
I bought this laptop mainly because it has a 1920x1080 screen, without being a 17' monster. I had such a monster about four laptops ago (an enormous Sony Vaio weighing in at around 5kg and with a 1hr battery life) and it was an disaster: lots of weird proprietary stuff that never worked, like the external speakers in the docking station. But I loved that screen right up until the day Fraser threw a pair of scissors into it.
With the advent of mass-market 1920x1080 screens I've been waiting for them to arrive in laptops at a reasonable price, and the availability of this screen in a few possible laptops seemed to me to be that point.
It's a Dell Studio 15, and as well as the nice screen, it comes with a new Intel i7 Quad Core CPU, 6G RAM, 640G hard drive and a Blu-ray drive. While there are a few similar models around this one seemed to have the best mix of features-for-weight-and-price, so I bought my first Dell.
I built a USB key with the latest Debian Installer from Squeeze and installed that and everything came up pretty well. I had to use the broadcom-sta driver for the wireless, since the BCM 43224 is not (yet) supported by the free b43 driver (though from looking the mailing list people seem to be working on it, and it looks like it might not be too far away).
Everything seemed good. X came up on the (georgeous) screen. I don't care too much about 3D performance, but it was nice to note that the ATI 5000 series is expected to have full support as soon as it's integrated into the right places - it seems the code is written, and public, it just isn't incorporated into the 'radeon' driver quite yet. The fact that ATI is nowadays a free-software friendly company was one of the reasons for choosing this, in preference to an NVidia-based laptop.
But it seems that it isn't all roses. The fan in the laptop seems permanently on, and not on, in a quiet-just-barely-audible way, but ON, in an 'IN UR LAPTOPZ KOOLIN UR P0RCESSAZ' kind of a way. Too damn noisy for me to concentrate in a quiet room.
I've investigated what's going on, and it seems likely there are some ACPI misunderstandings happening. Some googling and some pecking around in /sys makes me wonder if the laptop expects some kind of configuration choice between favouring Active cooling and Passive cooling, and it's defaulted to the first one. Perhaps you get better benchmarks that way.
Linux ACPI also seems to only half understand it, it has two thermal zones, and one of them always appears with 0 temperature. I can see set points for the fans, but have no control over them. In particular this got me out reading the ACPI 4.0 specification, and it explicitly mentions this choice of favouring 'Active' vs 'Passive' as being done by configuring the passive trip point setting to a higher value than the low & high active trip points.
In the ACPI 4 spec (page 409) it says:
To implement a preference towards performance or energy conservation, OSPM can request that the platform change the priority of active cooling (performance) versus passive cooling (energy conservation/silence) by evaluating the _SCP (Set Cooling Policy) object for the thermal zone or a corresponding OS-specific interface to individual devices within a thermal zone.
This laptop is showing 'passive' at 95000 millidegrees celsius, and 'active' at 55000 / 75000 so right in line with the suggestion.
However I don't see any way in Linux to change these trip point values, and in any case I'm not convinced the laptop is actually obeying them at all. It should be that if I do nothing on the laptop for a while the temperature would surely drop below 55 degrees celsius. Surely a modern laptop will sit at under 40 degrees when it's quiescent, and the temperature sensor that does show me something sits at around 30 degrees in this too, 26.8, to be overprecise. That one doesn't budge either.
Looking in /sys/ I can't for the life of me find a way to set that cooling policy, and when I disassemble the DSDT it looks like a noop...
Thinking that perhaps there was a newer BIOS, I looked at the Dell site and found there was one. Great! Investigating even further, it seems Dell hardware has some interesting capability via libsmbios and some utilities which will let me install my BIOS from a Linux system... even better!
Linux is a second-class citizen though, and when I look for the Dell BIOS Hdr file I need there is no version of the file for this laptop - let alone the current BIOS version. And when I download the BIOS from Dell's website and unzip the first layer of packaging I find that both of the files inside will only run on Windows.
I added a FreeDOS boot stanza to Grub 2 in order to discover this, also discovering in the process that this is not well explained, and I could not find how to do it on the FreeDOS or Grub2 websites, so in passing, here is what I added into /etc/grub/40_custom :
menuentry 'BIOS Flash 1558 A09' --class os { set root='(hd0,msdos1)' linux16 /boot/memdisk initrd16 /boot/1558_A09.img }
Which certainly does boot FreeDOS from Grub2, into the image built from the 8M FreeDOS base image, and which I called '1558_A09.img' because that seems to be one of Dell's reference numbers for this model / BIOS version.
So still no BIOS update for Andrew, it seems, and the laptop is probably going to continue to be noisy for some time. Possibly forever.
Suspend/Resume works though. Kernel mode-setting for the ATI Radeon Mobility HD 5450 (or whatever it is) seems to work. Building kernels seems to work. The Blu-ray drive seems to work, at least as far as reading CDs - just because I got a laptop with a 'Full HD' screen doesn't mean I watch movies on it: those pixels are for programming on! In any case, after reading the literature of pain about playing Blu-ray disks on Linux I'm convinced that we won't be shelling out to buy one any any time soon.
After a bit more frustration I did manage to get the BIOS installed, using the hack I found here
of running the Windows BIOS update under Wine and copying the BIOS file out of the temp directory while the error message is displayed. I could then download a random DOS-installable Phoenix BIOS to get copy of phlash16.exe and put those two files on the FreeDOS image I created earlier. Finally I was able to put that learning about how to boot FreeDOS from Grub2 to good use!
Unfortunately, having jumped through all of those hoops (including the frustration of trying to build and use Dell's firmware-extract tools on a Debian system), the fan continues to grind away at annoying volume, with no way that I have been able to find to control it, and the temperature sensors also seem wrong, since one doesn't budge from 0 and the other doesn't budge from 26800.
During boot I get a bunch of error messages, like:
[ 1.049936] \_SB_.PCI0:_OSC invalid UUID
[ 1.052202] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold [ 1.052210] pci 0000:00:1c.0: PME# disabled
[ 1.065228] pci 0000:07:00.2: PME# supported from D0 D1 D2 D3hot D3cold [ 1.065237] pci 0000:07:00.2: PME# disabled
[ 1.079086] Unable to assume PCIe control: Disabling ASPM
[ 1.086412] HEST: Table is not found!
[ 1.249906] ACPI: Fan [FAN0] (off) [ 1.249959] ACPI: Fan [FAN1] (off)
[ 1.250093] [Firmware Bug]: ACPI: ACPI brightness control misses _BQC function
[ 1.259118] acpi device:02: registered as cooling_device2 [ 1.262132] thermal LNXTHERM:01: registered as thermal_zone0 [ 1.262139] ACPI: Thermal Zone [TZ00] (27 C) [ 1.262561] thermal LNXTHERM:02: registered as thermal_zone1 [ 1.262571] ACPI: Thermal Zone [TZ01] (0 C)
[ 1.262598] ERST: Table is not found!
[ 2.769664] i801_smbus 0000:00:1f.3: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 2.769670] ACPI: resource 0000:00:1f.3 [io 0x1840-0x185f] conflicts with ACPI region SMBI [bus 1840-184f pref window disabled] [ 2.769672] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
I don't yet know what this all means, so I guess I'll be signing up for the linux-acpi mailing list to see if there's anything I can do to get things working better. Any pointers will be gratefully received :-)
Right about now I wonder if maybe I should have gone for the HP or the Asus, even if they were a little heavier and a bit more expensive and next time I get a new laptop I must remember not to spend more than $900 (USD$600) on it.
| | 0:30 | | Junichi Uekawa: I was reading C++ books last month on my com..
 | | 0 hits | I was reading C++ books last month on my commute, and I
would like to look at something different too. This month I
am looking at reading Ruby books.
| | 0:00 | | Jurij Smakov: Kernel config files
 | | 0 hits | Long ago I've set up a small but occasionally useful service on merkel:
Debian Official Kernel Configuration files
.
It extracts and stores the configuration files from all kernel packages
ever uploaded to the archive (does not seem to work particularly well with
stuff uploaded to experimental though). Now that
merkel is going away
,
this service is likely going to die. If you care about things like that,
and would like to see it continue beyond merkel's demise,
feel free to grab the script code
and historical config files, and set it up elsewhere (it's not likely that I'm going to bother).
| Sunday - September 5th | | 23:30 | | Alexander Wirt: backports.org moved to backports.debian.org
 | | 0 hits | After several years of slacking :) by everybody involved it finally happened: backports.org has become backports.debian.org. For that to happen several things had to get changed and streamlined, so please make sure to read this announcement to avoid too many surprises.
We are happy to welcome a new ftpmaster, Gerfried Fuchs (rhonda) joined our team.
The website [1] and the mirror moved to http://backports.debian.org/ and the archive is now available below debian-backports/. Even though we expect the old entries to continue to work for a while, you might still want to update your sources.list entry to: deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free or one of the mirrors[2] that do carry the backports archive.
Moving backports master to a newer version of the debian archive kit (dak) brings support for dpkg version 3 packages, so from now on debian-backports will accept dpkg source 3.0 packages without changes.
The backports service still uses its own version of the keyring. Therefore if you want to put packages onto backports you have to coordinate with the backports team to have your uploads accepted. Please follow the procedure outlined in [2]. Support for Debian Maintainers (DM) is expected to follow soon, if you are interested in helping to test this (and get added to the keyring) please contact Jörg Jaspert <joerg@debian.org>.
While we were at it, the backports branch for squeeze has been added as a squeeze-backports suite, which enables the installer to add (maybe commented) entries for it on fresh installations. For now uploads to it are disabled however, to be enabled after the release, whenever it'll happen. This will be announced separately.
The origin and the label of the Archive changed to 'Debian Backports' so if you used them for pinning you will have to modify your apt.preference configuration. Please refer to [3] for more information. Additionally the archive is now signed by the standard ftpmaster signing key, currently the Lenny key.
Mirroring is now managed by the debian mirror team[4] so if you want to get an official debian-backports mirror get in touch with <mirrors@debian.org> or use the submit webform[4]. Make sure you use the ftpsync script from [5,6].
The mailinglists moved to lists.debian.org [7,8,9], the subscriptions have been moved to the new lists.
Hosting for the equipment that powers backports.debian.org is graciously provided by the Electrical and Computer Engineering department of the University of British Columbia in Canada[10]. Thanks.
We also would like to thank team(ix)[11] for providing a good home for this service for all these years. As mentioned above backports.org will continue to remain functional as a mirror of the official repository from debian.org for a while. Thanks for your attention, the debian-backports ftpmasters (ftpmaster@backports.debian.org), Alexander Wirt, Gerfried Fuchs, Jörg Jaspert.
[1] http://backports.debian.org/ [2] http://backports-master.debian.org/Mirrors/ [2] http://backports.debian.org/Contribute/ [3] http://backports.debian.org/Instructions/ [3] http://www.debian.org/mirrors/ftpmirror [4] http://www.debian.org/mirrors/submit [5] http://ftp-master.debian.org/ftpsync.tar.gz [6] http://ftp-master.debian.org/git/archvsync.git/ [7] http://lists.debian.org/debian-backports [8] http://lists.debian.org/debian-backports-announce [9] http://lists.debian.org/debian-backports-changes [10] http://www.ece.ubc.ca [11] http://www.teamix.net
| | 23:00 | | Jose Luis Rivas Contreras: Multiple -webkit-transition issue
 | | 0 hits | While making a CSS layout for a client I had issues with transitions on WebKit-based browsers, I couldn’t make it renderize more than one transition at the same time with the short -webkit-transition, the line was:
-webkit-transition: background-color .25s linear, shadow .25s linear; Doesn’t works on Safari 3 nor in Google Chrome 6 so I tried splitting out the lines to:
-webkit-transition-property: background-color, shadow; -webkit-transition-duration:.25s, .25s; -webkit-transition-timing-function: linear, linear; And now it works! But it sucks, now I have to write three stupid lines instead of one for the same thing, something that works perfectly on Firefox4 and the draft says explicitly it should work, just:
-moz-transition: background-color .25s linear, shadow .25s linear; Well, at least works…
| | 22:30 | | Clint Adams: Is this about how WNPP sucks or how we will nev..
 | | 0 hits |  | | 20:00 | | Kartik Mistry: Updates: Life and more…
 | | 0 hits | * It is same old life, apart from:
+ Guitar is going good. Learning first thing apart from computer in life 
+ Learning C++ and openFrameworks
for helping friend for project. More details later..
* Packages:
+ I’ve uploaded Gwibber 2 after waiting for ages to experimental now. Now, OAuth sucked life from all previous version of Gwibber – stable version will not have twitter working. I’m thinking what can be best solution for that.
+ Code::Blocks is with me now
. I’m talking to upstream to do better things with license issues. It will not make to stable, but backport version is planned.
* Kavin:
+ Arr. He can reach to my any books, gadgets and even laptop.
 | | 19:00 | | Andreas Metzler: WindowMaker is undead
 | | 0 hits | | I have recently switched to the
wmaker-crm fork
of
WindowMaker
. There are some
new features
but no huge
changes. I am happliy using git next branch plus
these patches
. | | 18:30 | | Benjamin Mako Hill: Free Software Needs Free Tools
 | | 0 hits | I finally finished an article
I've had in one form or another for
years about on the use of proprietary tools in the creation of free
software. From BitKeeper
to SourceForge
to Google Code
to
GitHub
, non-free tools and services have played an important role in
free software development over the past decade and, I argue, continue to
create a number of important, if sometimes subtle, problems for our
community.
The article was published in the Spring 2010 FSF Bulletin
which was
mailed to all FSF associate members
. I've also posted the article
on my website
and in PDF form
as well.
| | 11:00 | | Neil Williams: screen, irssi and page control
 | | 0 hits | In case anyone else hasn't found these tweaks:
termcapinfo xterm|xterms|xs|rxvt ti@:te@
In ~/.screenrc gives you Shift-PageUp and Shift-PageDown control again, without resorting to Ctrl-A Esc, inside screen. (Best to do $ cp /etc/screen.rc ~/.screenrc as a starting point first, if not done already.)
Also:/set scroll_page_count /2
/save
In irssi itself (easier than editing the config) gives you internal PageUp, PageDown control within the irssi window.
In each case, the manpage is so long and impenetrable that these may be obvious to those with a special knowledge of terminals but mere mortals like me can't find it in / understand the docs.
| | 9:00 | | Julien Valroff: End of my vacation
 | | 0 hits | My vacation is now over, and I think it is now time for me to summarise what I have done with regards to free software.
First, I have sent my first real contributions to OpenStreetMap, in the area of my small town: http://osm.org/go/0DCaXeZ
I still have a lot of things to learn, but things are already better than they were!
I will also shortly write an article about how to use the GlobalSat DG-100
data logger on Debian GNU/Linux.
Working on OSM is real fun, as it can be done in family.
I have also spent some time to test & improve the Debian packages for DSPAM
(available from my repository
). I have moved the SVN repository to a new GIT repository available at: http://git.debian.org/?p=pkg-dspam/dspam.git;a=summary
.
Matthijs Möhlmann (matthijs) is currently reviewing the packages, and will upload them to the official archive if everything is ok.
Matthijs also accepted to be my advocate for my New Maintainer application. Thanks a lot to him! I am now waiting to be assigned an Application Manager: http://qa.debian.org/developer.php?login=julien%40kirya.net
As usual, I have also been quite active at reporting bugs on the Debian BTS. unfortunately, I haven’t had the possibility to fix (RC) bugs.
| Saturday - September 4th | | 17:30 | | Julien Blache: forked-daapd: v0.12, release tarballs
 | | 1 hit | Hey, look, a release! I’ve decided to start making tarball releases that make it easier to build forked-daapd, especially on embedded platforms.
The tarballs come with the build system already generated (as should any real release) and they also contain pre-generated source files for the ANTLR3-based parsers used in forked-daapd. The pre-generated files will be used if antlr3 is not available for the build.
I expect that pretty much everybody will end up using the generated files, given the feedback I’ve had about ANTLR3. I hope this will also clear the misconception that forked-daapd depends on Java.
I have expanded the installation instructions, making the distinction between building from the git tree and building from the tarballs.
A few more fixes made it to this version since my last post, and Kai also put the final piece to the sort headers by adding sort headers to the song listings.
Tarballs are available at http://alioth.debian.org/~jblache/forked-daapd/
. Tarball integrity can be verified with GPG using the matching GPG signature file and my F5D65169 GPG key from the Debian keyring.
| | 10:30 | | Petter Reinholdtsen: Some notes on Flash in Debian and Debia..
 | | 1 hit | In the Debian
popularity-contest numbers
, the adobe-flashplugin package the
second most popular used package that is missing in Debian. The sixth
most popular is flashplayer-mozilla. This is a clear indication that
working flash is important for Debian users. Around 10 percent of the
users submitting data to popcon.debian.org have this package
installed.
In the report written by Lars Risan in August 2008
(«Skolelinux
i bruk – Rapport for Hurum kommune, Universitetet i Agder og
stiftelsen SLX Debian Labs
»), one of the most important problems
schools experienced with Debian
Edu/Skolelinux
was the lack of working Flash. A lot of educational
web sites require Flash to work, and lacking working Flash support in
the web browser and the problems with installing it was perceived as a
good reason to stay with Windows.
I once saw a funny and sad comment in a web forum, where Linux was
said to be the retarded cousin that did not really understand
everything you told him but could work fairly well. This was a
comment regarding the problems Linux have with proprietary formats and
non-standard web pages, and is sad because it exposes a fairly common
understanding of whose fault it is if web pages that only work in for
example Internet Explorer 6 fail to work on Firefox, and funny because
it explain very well how annoying it is for users when Linux
distributions do not work with the documents they receive or the web
pages they want to visit.
This is part of the reason why I believe it is important for Debian
and Debian Edu to have a well working Flash implementation in the
distribution, to get at least popular sites as Youtube and Google
Video to working out of the box. For Squeeze, Debian have the chance
to include the latest version of Gnash that will make this happen, as
the new release 0.8.8 was published a few weeks ago and is resting in
unstable. The new version work with more sites that version 0.8.7.
The Gnash maintainers have asked for a freeze exception, but the
release team have not had time to reply to it yet. I hope they agree
with me that Flash is important for the Debian desktop users, and thus
accept the new package into Squeeze.
| Friday - September 3rd | | 23:30 | | Alastair McKinstry: Building a statically-linked program
 | | 1 hit |
I'm currently working on a Fortran program at work: a post-processing tool that takes climate data,
in NetCDF
format, and outputs in
CMOR2
format (a NetCDF variant with climate conventions).
So, it links against netcdf and cmor.
Now in HPC
and climate in particular,
codes are typically linked statically: partially for robustness, but mostly for speed (more on which later).
So, I'd like to link this statically, as I have tens of terabytes of data to process. Now, mostly I've
been linking using pkg-config:
gfortran -o nemo-rewriter nemo-rewriter.f90 `pkg-config --libs --cflags nemo cmor`
pkg-config assembles the libraries. For dynamic libraries, the netcdf and cmor libraries are themselves
linked to dependencies. But in the static case, all dependencies need to be on the link line, which is more
complex. Never mind, it should be possible with:
gfortran -static -o nemo-rewriter nemo-rewriter.f90 `pkg-config --static --libs --cflags nemo cmor`
This should work by assembling all the required static libraries, via pkg-config dependencies. Unfortunately
not every package has a .pc file, and so this fails: As of version 4.1 NetCDF allows a URL instead of a file to read, and
hence depends on curl
to retrieve the file. Curl has
no pkg-config .pc file describing its libraries, and it fails.
Never mind, lets assemble the static libraries by hand. Debian
provides
static versions of libraries in the -dev packages. Can I assemble a statically-linked program ?
For this I need:
- NetCDF needs libnetcdff.a and libnetcdf.a directly.
- NetCDF needs HDF5
: libnethdf5_hl.a and libhdf5.a for version 4 files.
- CMOR2 needs: libcmor2.a
- CMOR2 depends on libudunits2.a
, to convert between physical units.
Now here it gets interesting. To handle secure communications and authentication, curl has some complex dependencies.
It has two versions. Pick the gnutls one for example:
I may have missed some out, having stopped because there is no static implementation of Kerberos on Debian.
But still, the idea that a simple little fortran proggie will statically link in four database libraries is silly.
It appears to be no longer possible to simply statically link a program in Debian, and definitely not via
pkg-config, because so many dependencies do not yet have configuration files.
Tags debian
, static
, cmor
, pkg-config
| | 21:30 | | Christian Perrier: Wheezy, it is
 | | 1 hit | The most important moment in a Debian release cycle just
happened
As an important step of the freeze is choosing the name of the next
release (so that ftpmasters and many other parts of the project can
prepare the infrastructure), the Debian release team did its duty.
Wheezy it is, then. First Debian release named after a character that
is *not* in Toy Story 1.
Indeed, there was one toy character left that fills
in two criteria followed up to now by those who named Debian releases:
- appearing in TS1
- having its name mentioned in the movie itself (Squeeze is already
half an exception as they appear in TS1 but their name is mentioned in
later movies)
...and that's 'Rocky' (Wikipedia names him 'Rocky Gibraltar'). That
wrestler figure is called for help ('Rocky, the ramp!') to rescue Woody and Buzz at the
back of the moving truck, at the end of the film. Guys, you know what
to do in 2 years..:-) | | 15:30 | | Julien Danjou: Emacs and OfflineIMAP
 | | 2 hits |  I recently decided to use OfflineIMAP
to synchronize my mails on my
laptop. It's a great piece of software, and allows me to read my mail
while I'm offline.
I use it with Gnus
, of course. But I lacked a proper way to integrate
OfflineIMAP with it, so I decided to write a little Emacs extension to run
and monitor OfflineIMAP directly from Emacs.
Here comes offlineimap.el
, an Emacs extension to run OfflineIMAP directly
within Emacs. It will display OfflineIMAP output in a buffer, and optionally
shows the current OfflineIMAP operation in the mode line.

By default the status is in the mode line only if you are in the Gnus group
buffer. But that's customizable, of course, since this is Emacs!
If you are using el-get
, there's already a recipe to install it!
| | 13:30 | | Alexander Reichle-Schmehl: Release Critical Bug report for W..
 | | 1 hit | The unofficial rc bug tracker
currently knows about the following bugs:
| In Total: | 379 |
|---|
| Affecting Squeeze: | 291 |
|---|
| Squeeze only: | 65 |
|---|
| Remaining to be fixed in Squeeze: | 226 |
|---|
Of these 226 bugs, the following tags are set:
| Pending in Squeeze: | 14 |
|---|
| Patched in Squeeze: | 43 |
|---|
| Duplicates in Squeeze: | 21 |
|---|
| Contrib or non-free in Squeeze: | 13 |
|---|
| Claimed in Squeeze: | 2 |
|---|
| Delayed in Squeeze: | 8 |
|---|
| Can fixed in a security Update: | 14 |
|---|
| Otherwise fixed in Squeeze: | 16 |
|---|
Ignoring all the above (multiple tags possible), 129
bugs need to be fixed by Debian Contributers to get Debian 6.0 Squeeze released.
However, with the view of the Release Managers, 244 need
to be dealt with for the release to happen.
Please see my older
post
for an explanation of the different numbers.
| | 11:00 | | Richard Darst: DebConf Fundraising
 | | 1 hit | The following post is the work of Pablo Duboue, the DebConf10 fundraising team leader.
So you want to make DebConf, eh? You will need quite a bit of money then. That's when fundraising comes into play.
There are traditionally two sources for funds for DebConf: government and businesses. A third one, micro-donors, has been mentioned, but haven't been explored yet. (Note, in this text I use the terms sponsors and donors interchangeably, as all sponsors are actually doing a donation to the Debian project earmarked for the use at a given DebConf.)
Government funding has been key in a number of DebConfs. In DC10, though, by the time fundraising proper started, it was too late to secure it. Extrapolating from two DebConfs that had government funding, I would venture the following two pieces of advice: target a government level as local as possible (city, provincial level) and try to secure the funding at the time of the bid (which, by the way, can help you win the bid). A successful process will include government representatives aware of the bid status and the whole bidding process. This partnership can help unlock extra government resources such as housing or transportation. But to reiterate, if you haven't at least applied for government grants by the time the DebConf previous to yours is happening, then you have to plan to go along without government funding.
Business funding for DebConf includes a significant amount of recurring donors. Keeping them happy is even more important than any money they will put forward for a given DebConf. Now, because of the high level of recurrence and the fact that government funding can cover easily one third of our costs, fundraising without government funding really means your projected funds are one third off. If that is the case, make sure to communicate that to the rest of debconf-team and even the larger Debian community (see below 'asking for help').
This entry has been truncated read the full entry
.
| | 1:00 | | Joerg Jaspert: Testing ChangeLog
 | | 1 hit | I just merged a nice work from another ftpteam member, Luca Falavigna. He wrote dak make-changelog, which is intended for generating the changelogs for stable point releases.
I took the chance and asked if he can extend it a bit, which he did, so today I could merge that work. Besides that we are able to generate ChangeLogs between all suites we have, we now generate a ChangeLog on every time we import a new set for testing, listing only the changes done in that run, by listing the changelog entries from the package, or in case of removed packages just listing their name with the removed version.
We keep 4 rotations of that ChangeLog, you can find it (with the next mirror push) on all Debian mirrors in the dists/testing/ directory. This should be especially interesting for those people following testing on their systems, to easily see what got changed. :)
| | 0:00 | | Russell Coker: Raw Satire Usually Fails on the Internet
 | | 1 hit | Sarcasm and satire usually don’t work on the Internet. One cause of this is the lack of out of band signalling via facial expression or tone of voice. Another issue is the fact that in real life people usually know something about the person who they listen to while on the Internet it’s most common to read articles without knowing much about the author. So the reader can’t use “I know that the author isn’t an asshole” as a starting point to determine whether a message should be interpreted literally.
This is really nothing new. The standard in printed communication for a long time has been to use Emoticons (Wikipedia)
to indicate emotion and other interpretation that might not be deduced from a direct reading of the text. The Wikipedia page cites examples of emoticon use dating back to 1857 – although the combinations of characters used for different emotions has changed significantly many times. The common uses that we now know on the Internet date back to 1982.
In my experience the symbol :-# is commonly used to note sarcasm or satire. Unfortunately it seems that none of the Internet search engines allow searching for such strings so I couldn’t find an early example of this being used. While I haven’t found a reference describing this practice, I regularly receive messages annotated with it and find that people generally understand what I mean when I use it in my own email. But that is usually applied to a sentence or two.
For a larger section of text a pseudo-HTML tag such as </satire> can be used to signal the end of satire. It seems that a matching start tag is optional as recognising the start of satire is a lot easier once the reader knows that some of the content is satirical. In spoken English a phrase such as “but seriously” may be used for the same purpose, but such a subtle signal may be missed on the Internet – particularly by readers who don’t use English as their first language.
Another way of signaling a non-literal interpretation is by using Scare Quotes
– the deliberate usage of quotation symbols to indicate that the writer disagrees with the content that is written. That is common for the case of referencing a phrase or sentence that you disagree with, but doesn’t work for a larger section of text.
A final option is to make the satire or sarcasm so extreme that no-one can possibly mistake it for being literal. This is not always possible, Poe’s Law holds that “Without a winking smiley or other blatant display of humor, it is impossible to create a parody of Fundamentalism that SOMEONE won’t mistake for the real thing” [1]
. I think that Poe was understating the case, it is impossible to create a parody of religion that most people won’t mistake for the real thing without signals or context. For an example read LandOverBaptist.org
and Chick.com
, of course if you know those sites then you will know whether they are satirical or serious – but I expect that most readers of my blog won’t invest enough effort into either of those religious sites to determine whether they are serious or satire.
But satire and sarcasm without signals or a reputation usually fails. One example of success is The Onion which is a long running and well known satirical news site [2]
. But even The Onion it is regularly mistaken for being serious – the number of occasions when people forward me Onion articles for amusement are vastly outnumbered by the number of occasions when I see people taking it seriously.
Even when material is known to be satirical it can still fail grossly. An example is the Chaser’s satire of the Make A Wish Foundation [3]
. Even material that is well known to be satirical seems to fail when it attacks bad targets or attacks in a bad way. One difficulty is in satirising bigoted people, to effectively satirise them without attacking the minority groups that they dislike can be a difficult challenge.
Finally, when you write some satire and members of your audience don’t recognise it you should consider the possibility that you failed to do it properly. If you can’t get a hit rate close to 100% for people with the same background as you then it’s probably a serious failure.
| Thursday - September 2nd | | 20:30 | | Christian Perrier: 100% for debconf in squeeze: 6 languages ..
 | | 1 hit | Look at the status of debconf translations for top languages in the current ranking
.
Swedish, Russian, French, German, Portuguese, Czech can make it (have
you noticed that French is not leading?). For
lenny, French and German succeeeded in this.
You have no idea about the tremendous and constant effort it requires
for the teams...(and a little bit for me) to reach this.
So, if you're the maintainer of wireshark gnumeric tripwire
request-tracker3.8 bugzilla tomcat6halevt ifetch-tools isc-dhcp
foomatic-filters mailgraph gitosis fts qmail, think about it. You can
make 1 to 6 people happy..:-)
| | 19:00 | | Vincent Sanders: You shall go to the ball!
 | | 1 hit | | Contrary to my last post I was able to attend the Debian UK BBQ at the weekend. My wonderful wife ditched me at Portsmouth station with permission to go play with my friends ;-)
Perhaps a bit more explanation is warranted about that last statement! We travelled back from France last Saturday. We were on the 12:15 (CET) ferry so had to be awake and on the road for the five hour France drive at 'oh my gosh its early' time. The crossing to Portsmouth was slow as it was very choppy and we were leaving the Port at 15:30 at which point Melodie was good enough to let me go play with my friends while she drove home.
I did have the 'fun' of doing the Portsmouth->London->Cambridge trip on UK public transport but it went pretty smoothly. Walking from Cambridge station to the BBQ location was a bit dumb, next time I am taking a cab!
The BBQ was excellent fun and big thanks for Steve for holding it again. Its always fun to meet the usual suspects. We also got to set a new occupancy record at Steves house Saturday night and discovered that certain members of Debian UK snore rather loudly (I think at one point we could measure it on the Richter scale).
Back home now of course. Work is the same as when I left so no change there and the Boys first day back at school seems to have gone smoothly too.
| | 15:00 | | Evgeni Golov: Using plugins.svn.wordpress.org with Git
 | | 1 hit | 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?
| | 14:30 | | Evgeni Golov: The joy and pain of WordPress
 | | 1 hit | 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/
:)
| | 13:30 | | Wouter Verhelst: Frans Pop
 | | 1 hit | 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.
| | 9:00 | | MJ Ray: KohaCon10
 | | 4 hits | 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?
| | 5:00 | | Debian News: DebianDayPT 2010 in Aveiro, Portugal
 | | 2 hits | 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 Milchmayr 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
/.
| | 2:00 | | Amaya Rodrigo: Dear Frans
 | | 2 hits | 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 ;) |
The Mirror is powered by Tilaa
Hosting for The Mirror is being sponsored by Tilaa, a Dutch hosting provider specialized in high quality virtual private servers.
|