Exciting news! As of today, TeleMetrum
starter kits are available through Apogee Components in addition to the Garbee and Garbee web store!
At the beginning of DebCamp, Zack started the RCBC the Release
Critical Bug squashing Contest. Two weeks later not only DebConf10 is over
but we also have results for the RCBC:
My project.
This post assumes that the reader has read my last post.
I ve been trying to find a reasonable method (which computer to use, single user or multi user) to benchmark for some time, and now an e-mail from Simon Marlow calmed me down. He suggests that in this stage it s not necessary to run a long benchmark, but only a short one, that will be enought to have an idea about what each change is causing to performance.
For some time I was struggling with the benchmarks to get a reasonable result. I ve started more than once to write a blog post analysing the results I ve got, until in the middle of the post I notice the results are not consistent. This usually happens when there s a big distortion in benchmarks that shouldn t present no change. For instance, in a patch that only changes code that is executed with +RTS -w -RTS, there was a difference of 50% on execution time in default mode, that is, without +RTS -w -RTS.
I think that only disabling CPU scaling and running a small number of tests, which make it easier to reproduce a possibly inconsistent result, will be enough to get a good data.
I ve made a stack of patches, splitting each part of my work. The stack does not reflect my preferences between the patches, that is, the complete stack applied is not what I think that is the best change to GHC. It s only a set of patches applied linearly, in a way that it s easy to see the impact in performance of each change. The patches are:
Don t check for swept blocks in -DS.
The checkHeap function assumed the allocated part of the block contained only alive objects and slops. This was not true for blocks that are collected using mark sweep. The code in this patch skip the test for this kind of blocks.This patch is only needed to make it possible to run the binary with the parameters +RTS -w -DS -RTS. I ve already explained this patch. I didn t measure the difference in performance before this patch, since it only changes code that is not going to be executed in the benchmarks, since none of them are runned with -DS. Immix: allocate and free memory on lines. This is the main patch with the initial implementation of Immix. As it is the initial implementation, it has it s problems, that will be treated in the following patches. The comparison was done using 3 programs from nofib/gc: fibheaps, fulsom and constraints, as suggested by Simon Marlow. Two tests were made for each version of the compiler code: one using the default GC strategie (copy-collection with mark-compact if there s few heap space left), another one using mark-sweep (or Immix after my changes). When comparing the default GC strategie between before and after this change, the program got 0.4% slower, with the collection of the generation 0 being 0.1% slower and the collection of the generation 1 0.4% slower. Comparing the mark-sweep with Immix, it got 13.7% slower, 15% in GC0 and 7.2% in GC1. The change in memory used is irrelevant. Chose between allocating in line or blocks in todo_block_full The first improvement I ve made is to change the place where the allocation was searching for free lines. Most of the changes were done in the function alloc_for_copy(), in rts/sm/Evac.c. This is bad because this function is called a lot of times, and should be kept fast. So I moved them to ctodo_block_full() in rts/sm/GCUtils.c. It got about 9.9% and 9.6% faster in default and sweep, which makes it 1% faster and 2.8% slower than in the original code. Improvements in sweep() I was bothered that the code I ve written to free memory in lines was messy, and I thought it could be simplified and maybe even turn faster. The general execution time increased 0.4%, but the GC1 time, which is the only one that should be affected, was reduced by 0.6%. In the default GC strategie, there was also a 0.2% increase in time, so I guess this is inside the margin of change. I have to investigate better on this one, but it seems to have improved slightly the performance. Line before inscresing block size. In a conversatio with Simon Marlow, we thought about these two options: one is to search for a line after trying to increase the block size, and that s what I did in Chose between allocating in line or blocks in todo_block_full; the other is trying to search a line first, and just increase the block size if a block (and not a line) was being used for allocation and there is no line available. With this patch I ve changed it to use the second one. Using sweep, the GC time got 0.5% slower, and with default it got 0.1%. rts/sm/Sweep.c: Mark all BF_MEDIUM blocks as BF_FRAGMENTED In my first implementation, the blocks that contain objects bigger than a line (of medium size) are marked with BF_MEDIUM, and are treated as the usual block in mark-sweep: if the block is empty, it s freed; if it s very fragmented, it s marked to be collected using copy-collection. In this patch, instead of making it use the rules of mark-sweep, I just mark it as fragmented and make it be collected by copy-collection. This made the GC0 time be reduced by 3%, but caused an increase of 509.7% in the GC1 time. This was also the first time the memory used was reduced, by 25.4%. The results in the default mode are insignificant. What it seems to me is that the copy-collection code is more efficient with memory usage, but also more slow. Marking objects as BF_FRAGMENTED make this algorithm be used even for full objects. rts/sm/Sweep.c: Don t use 3/4 heuristics to mark as BF_FRAGMENTED The mark-sweep algorithm considered that an object was fragmented if more than 1/4 of the word groups are completely unmarked. I kept using this heuristic, and this change removes it, making more use of the Immix, and less use of copy-collection. This didn t change the memory used, and made the code 10.4% slower in sweep. In default GC mode, there was no relevant difference, as expected. Allocate in lines in minor GCs. In the initial implementation I was only allocating on lines only in major GCs, because I needed the mark stack, which was only available in these kind of allocations. In this change, I created the mark stack on all GCs, and used the allocation on lines. The results for the default mode are insignificant, and the code got 9.0% faster in sweep, using the same memory. Selection I ve made a selection with the presumably better patches, which are: Don t check for swept blocks in -DS, Immix: allocate and free memory on lines, Chose between allocating in line or blocks in todo_block_full, Improvements in sweep() and Allocate in lines in minor GCs. This is an attempt to achieve the best set of patches possible, to see how it improved the original code. Comparing the default strategie for this selection and the original code, it got 3.7% slower. Comparing both sweep, it got 3.9% slower. Comparing the original default with the final sweep, it got 4.2% slower and uses 4.7% more memory. There s a lot of room for improvement, and I m willing to hear suggestions of what I could change in the code to achieve this improvement.
What do you do when you have a technical question that you're embarrassed to ask?
The first Sunday of Debconf, I led a birds of a feather (BoF) session called
Debian for Shy People.
The conference team scheduled it on "Debian Day," a pre-conference day that was open to the public
and still had plenty of Debian Developers in attendance. I just uploaded the slides
to the "Penta" page for the talk.
I led it because of my own experience. In 2004 or so, I saw Debian as the cool kids' club,
that awesome project that I wished I could be a part of. By 2006, I managed to get over myself,
read the New Maintainer's Guide, and find a way to get involved. As of mid 2009, I am a full-blown
Debian Developer. I have
real ultimate power. But I sometimes do still feel
hesitation akin to "Imposter Syndrome".
(A bunch of people at Debconf didn't really believe I'm "shy," since I asked a lot of
questions at the conference. At core, I don't naturally believe that the things I say are
worth hearing, but I patch over this hesitation. Sometimes I speak too much, and then I feel
ashamed of burdening everyone. But anyway, this is about Debconf not, me -- so moving on....)
In the past year of being a Developer, one thing I've seen is that other contributors
ask me privately for help. Rather than blast the public lists like debian-mentors, they email
or IRC private-message me, or SMS me, or find me at a Linux Users Group event.
I'm lucky to know these people, and they're lucky to have me as a safe person to ask
questions of. Moreover, Debian is better because these people could move past their confusion to make
a technical contribution.
I began the BoF session by talking about when someone asked me for help.
Then I asked,
"How many of you have
someone you can ask embarrassing questions of?" Of the forty people crammed into Schapiro 414,
two people' raised their hands. One person put it plainly, "I don't know anyone else who does Debian."
It reminded me of a fact that
Karen discovered when she was doing
market research for us at OpenHatch: the vast majority of free
software programmers know zero other people who do free software. I had seen the figure;
we even used it in a talk to try and convince venture capitalists to fund OpenHatch last year. But I didn't
really feel it until I heard it from a room full of Debian contributors.
I structured the BoF in two parts: First, I talked in front of some slides to set the
tone properly, and then we enjoyed open discussion. As I was preparing thoes slides,
Daniel Morais asked me, "What's the point
of having the session? Why not just come up with some ideas, implement them, and not bother
also talking about it at the conference?" I had considered this; I decided I wasn't
self-confident enough to start implementing ideas without talking to people to make sure I
wasn't the only one who saw a problem. But I discovered another benefit of
giving the talk: people who want to make Debian more welcoming knew to reach out to me.
So here are some thoughts that came from our discussion (and later discussions during the
conference):
Remember when I said Epiphany worked out of the box with Youtube s WebM? Well, Google has recently decided to deny us WebM, like it did before with Wave, the Pacman doodle, and who knows what else? \o/
Wouldn t it be nice if Google practiced what they preach?
Update: so it looks like my message went through to the people who needed to see it, and they found a filtering error in the User Agent sniffing code that made it think Epiphany was a too old Safari - I m told the change will land in Youtube soon, thanks for those paying attention, and working on this! User Agent sniffing keeps being a problem, of course, and there are other stuff to fix, so I will probably still push my patch to spoof the user agent to google services which are still mishandling Epiphany, but it s good to see some progress being made!
Update2: I started shipping a patch to send the Chrome user agent string to google domains in the Debian package for WebKitGTK+, when the enable-site-specific-quirks setting is enabled (which is the case for Epiphany); I already found something we were missing out on =D Google Images seems to have been greatly improved, and now faking being Chrome we are also able to enjoy it:
The following packages will be REMOVED:
hal u hal-info u
0 packages upgraded, 2 newly installed, 2 to remove and 121 not upgraded.
Which means faster startup times and one daemon less on Squeeze's GNOME
desktop. The new version also uses PolicyKit instead of gksu for finer
grained permission control.
Apparently some people misunderstood Christian's
recent statistics how Debian Developers are distributed over countries
a bit. Especially the the sentence We now have 62% of active DDs while we had 73% last year.is kind of misleading, if you don't know how an
activedeveloper is defined. And especially, if you ignore the following sentence:
This year's campaign of MIA work has been somehow "successful", apparentlySo, let's start with the
activedevelopers. To be precise: Neither Christian (nor did I back then) tried in any way to decide which developer is active, in the meaning of: He is actively contributing to Debian. That's pretty difficult data to get. Instead we just took the data available, and looked for activated accounts. And that's an important difference. See, if an Debian Developer leaves the project, his account doesn't get deleted (for various reasons), it just gets deactivated in our central account setup. So, when Christian wrote, he counted active developers he basically said: I didn't counted the deactivated accounts. So far so good. But indeed quite a lot accounts got disabled last year. Is that a bad sign (as some journalist say)? Actually no. As it's quite complex to check, who's still using his account (see http://wiki.debian.org/MIA for some explanation), it is quite possible for someone to still have his account active, who isn't using it. During the last year many of these
Karteileichen(nominal members, if you will) have been deactivated (after being pinged several times). Or, to write it this way: While indeed quite some accounts have been disabled, Debian hasn't lost much through at, as these account's weren't used!
I know I have not updated this blog in quite a long time now, but something caught my attention today: canonical-census.
3 interesting small things happened in the weekend.
Due to the hard work of mostly Florian Reinhard and George Kiagiadakis, Bluedevil is now available. Bluedevil is a new and improved bluetooth handling thing targetted the KDE Workspaces.
The Debconf people have uploaded the Qt Debconf frontend that I blogged about a while ago, so now it should be available.
Last, but not least, applications now has more accurate data for if they are online or not, by using the ntrack library. This was especially problematic for people having some interfaces defined in /etc/network/interfaces, and other interfaces managed by NetworkManager.
So, DebConf time is over once again. The two weeks worth of fifty weeks waiting are left behind once again, and it's back to get back to normal. DebConf was great Yes, it always is, and that's what we are all saying, but hey - Seriously! Being in the same building than 300 crazed developers is always fun, and it's always better than last year's fun. A good highlight this year is that, given the number of Free Software and Free Culture groups that exist in USA's north-eastern coast, we had the opportunity to join a large crowd which has never been part of DebConf. Also, I must agree that the USA bid for DebConf was aiming to attract as many Debian people (developers, maintainers, or just happy users) which had not yet been to a DebConf before as possible. And it was a great success! I finally met several people I have long read in the mailing lists, in blogs or in IRC. A much higher proportion than usual, I'd venture to say. Another interesting phenomenon /methinks is that this year's DebCamp started much more staffed than usual: I arrived on the first day, Sunday 25, and there were ~40 people there already; I don't have the actual numbers, but we quickly grew, and the number started to stabilize past mid-week, only to (sharply) rise in the weekend, in time for DebianDay and DebConf start. Great time!
But, they say, nobody can go to the USA without buying some sweet toys, right?
Well, being the proud owner of six very hairy cats, I have thought into entering the looming and weaving industry... But cat hair, while abundant, I have heard is untreadable... Maybe due to the indisciplined, natural and independent personality of the cats (catonality should I say?)...
So I had two choices: Clean up my home quite often, or live in a literally hairy mess.
Enter choice #3: The Roomba!
I had been waiting to buy this thing for several years, as they refuse to send to Mexico or charge Mexican cards. So, I walked across Manhattan and got my very own robot cleaner!
For my further surprise, although I have not yet tried it (I don't even have a suitable cable yet), I found this:
Yay, the Roomba is actually hackable (via a 7 pin miniDIN serial port)! Wikipedia says that:
Roomba comes with a Mini-DIN TTL serial interface, which is incompatible with standard PC/Mac serial ports and cables, both electrically and physically. However, third-party adapters are available to access the Roomba's computer via Bluetooth, USB, or RS-232 (PC/Mac serial). New, 500-series, and 410/420 series Roombas upgraded with the OSMO hacker device allow the user to monitor Roomba's many sensors and modify its behavior. The Roomba Open Interface (formerly "Roomba Serial Command Interface") API allows programmers and roboticists to create their own enhancements to Roomba. ( )My first impressions? Well, the Roomba lazily charged its battery throughout the day today, and was hungry and ready when I arrived home. It is a but louder than what I expected, and of course my cats were not thrilled by the presence of a eighth animated and apparently sentient being at home. Their initial reaction was of course to be verrry alert of the thing. Twelve eyes were constantly pointing at the Roomba while mine alternated between them. As they measured the thing's speed and (I guess) inferred its movement patterns, they started escaping upstairs A flat, round thing with no legs to be seen will not likely be able to climb the stairs. And they were completely right. At first, only Chupchic remained downstairs. After a bit, I went up to show them the Roomba didn't jump on us to eat our brains, and after a bit, Santa and Macusa joined. The Roomba roombed for maybe 90 minutes (this space is large, and decided it was enough... And slowly, the rest of them started coming down. I would not say Roomba's cleaning is perfect, of course. Its room discovery algorithm is funny, and it even seems it's based on the mere chance of covering most (never all) of the space it has to clean. I had, of course, not fully studied it (after a single run, how could I?). It does make a honestly good attempt at cleaning under coaches, chairs and tables. It collected a fair amount of dust (on a house that seemed quite clean to me, I cannot imagine what would happen on a messy one). I have not yet played with the virtual walls (infrared transmitters which limit rooms as if a door was closed), but given the size of this house (and that I don't want it to clean around the cats' designated bathroom area), I guess I will end up using them regularly. During DebConf, I heard one bad (stupid useless noisy thing) and two very good (it has radically changed my life) comments on the Roomba. I hope to shift the balance towards 3/4 and not towards 2/2! Anyways... Thanks to each and every one of you. DebConf is great. Always great. Always a success. I cannot even thank specific teams. Debian Rules, and DebConf Rocks!
rainbow-mode had a big success and good feedbacks when I released it for the
first time a couple of months ago.
Several users asked to me request its inclusion into Emacs. Therefore, some
days ago, I proposed to merge it inside Emacs trunk. My request has been
denied, but the mode has been added to the Emacs 24 package repository.
In the mean time, I've added support for hsl() and hsla() support, and added
CSS 3/SVG color names.
You might remember that I started to work on closing RC bugs for stable. This effort hasn't died off so I joined the RC Bug Squashing Contest that was going on during the Debian conference (which I was unable to attend). The rules did permit it, even though I was aware that it can't (and shouldn't) be compared to the unstable/testing squashers and thus it was split of into its own Special category. There still seems to be a lot of confusion on how our BTS works, especially with respect to version tracking. I was even accused of falsely claiming bug closing because the bug has been closed by someone else already. This wasn't the case, otherwise the bugs would had been archived a long time ago already[1] given that I had expected that person to know how bug archival works and also given the sheer amount of bugs that I simply had closed for stable, I guess it is needed to shine a light upon why some bugs won't get archived as expected. If you followed my IRC talk on BTS usage last month you might already have an idea of what's going on. There might be several different reasons why bugs aren't marked for archival yet. I'll try to explain them as I understand it (given that I neither have taken a look at the debbugs code nor am involved with its development) through my working on bugs over the last 10 years.
closein stable:
+ squeeze sid will tell the BTS to consider them only for those releases, so not thinking it affects lenny, too.select count(*) from bugs where status = 'done' and last_modified <= '2009-12-31';
When I started working on WebKitGTK+ I was a web developer, writing IT applications using Python and Django, and building features for content portals running Plone (argh). Even though I was an Epiphany user ever since it was forked off Galeon, I still had to use Firefox for my work, because I couldn t really live without Firebug.
It should come as no surprise, then, that one of my first patches to WebKitGTK+ was actually making the awesome Web Inspector work in our port. After the initial support, though, not a lot has been done to further improve it, partly because it was already good enough for many uses, partly because I somehow started doing non-web development again ;).
These last weeks, through my R&D efforts in Collabora, I have been able to push Web Inspector features and integration a bit further. A simple change that boosts the Inspector s usability quite a bit is having the nodes that are being hovered highlighted. Along with that, the ability to attach the inspector to Epiphany s window should make it easier to use for poking the DOM.
The Web Inspector has a number of settings that control its behaviour. Since, for instance, enabling javascript debugging may slow down javascript performance, the inspector usually has it disabled by default, and provides a button to enable it. It also provides an option for always enabling that feature, but that does not work right now, because we are not saving/restoring the relevant settings. A solution to that is in the works using the GSettings infrastructure that was recently merged into glib.
Here s a simple screencast, showing these improvements in action (click the video to check it out in full size):
<video controls="controls" src="http://kov.eti.br/media/webkit/inspector.ogv" width="400"></video>
There was plenty interesting to see. At each step of the way, I told him what was going to happen next, so there wouldn t be any surprises. I told him once we got in the air, and got a breathy Woooooooow .. I told him, Jacob, we are flying! And his reply has to be his best quote of the week:
Dad, I don t know that I ve ever been a butterfly before!I pointed out that we were above the clouds, which was also exciting. About every 5 minutes, he d poke me, and say, Dad, look out the window. Look down. WE ARE UP IN THE SKY! Meanwhile, Oliver slept.
On the second flight, Jacob slept (and was in a very foul mood when he woke up on the ground) while Oliver tried his best to squirm out of the seat and onto the ground.
Now, to wind up this post, I would like to leave you with some statistics and photos comparing my home with New York.
| Item | NYC | Marion County, KS |
|---|---|---|
| Land Area | 469 sq mi | 954 sq mi |
| Population | 8,391,881 | 12,952 (6871 excluding the 3 largest towns quite some distance away) |
| Population Density | 27,532/sq mi | 14/sq mi (7 if excluding large towns) |
That s our fruit guy there, and the bagel and roll place is across the street by the RadioShack.
Now, the street view from our front door after we got home:
OK, so that s sort of misleading. You can t actually see the street scene because it s on the other side of the hill. That s just our driveway to get to the street. (Not that the street looks much different. It has the weeds growing on the sides instead of in the middle, as one notable difference.)
We loved New York and I m certain we ll go back again. It s also nice to be home and enjoy the peace of the countryside.
Thanks to Debconf for a wonderful conference a topic I ll have more to say about in the coming days.
/*
* Some tests to check the file system sematics. Used to verify that
* CIFS from a windows server do not work properly as a linux home
* directory.
* License: GPL v2 or later
*
* needs libsqlite3-dev and build-essential installed
* compile with: gcc -Wall -lsqlite3 -DTEST_SQLITE fs-test.c -o fs-test
*/
#define _FILE_OFFSET_BITS 64
#define _LARGEFILE_SOURCE 1
#define _LARGEFILE64_SOURCE 1
#define _GNU_SOURCE /* for asprintf() */
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/file.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#ifdef TEST_SQLITE
/*
* Test sqlite open, as done by gcompris require the libsqlite3-dev
* package and linking with -lsqlite3. A more low level test is
* below.
* See also <URL: http://www.sqlite.org./faq.html#q5 >.
*/
#include <sqlite3.h>
#define CREATE_TABLE_USERS \
"CREATE TABLE users (user_id INT UNIQUE, login TEXT, lastname TEXT, firstname TEXT, birthdate TEXT, class_id INT ); "
int test_sqlite_open(void)
char *zErrMsg;
char *name = "testsqlite.db";
sqlite3 *db=NULL;
unlink(name);
int rc = sqlite3_open(name, &db);
if( rc )
printf("error: sqlite open of %s failed: %s\n", name, sqlite3_errmsg(db));
sqlite3_close(db);
return -1;
/* create tables */
rc = sqlite3_exec(db,CREATE_TABLE_USERS, NULL, 0, &zErrMsg);
if( rc != SQLITE_OK )
printf("error: sqlite table create failed: %s\n", zErrMsg);
sqlite3_close(db);
return -1;
printf("info: sqlite worked\n");
sqlite3_close(db);
return 0;
#endif /* TEST_SQLITE */
/*
* Demonstrate locking issue found in gcompris using sqlite3. This
* work with ext3, but not with cifs server on Windows 2003. This is
* done in the sqlite3 library.
* See also
* <URL:http://www.cygwin.com/ml/cygwin/2001-08/msg00854.html> and the
* POSIX specification
* <URL:http://www.opengroup.org/onlinepubs/009695399/functions/fcntl.html>.
*/
int test_gcompris_locking(void)
struct flock fl;
char *name = "testsqlite.db";
unlink(name);
int fd = open(name, O_RDWR O_CREAT O_LARGEFILE, 0644);
printf("info: testing fcntl locking\n");
fl.l_whence = SEEK_SET;
fl.l_pid = getpid();
printf(" Read-locking 1 byte from 1073741824");
fl.l_start = 1073741824;
fl.l_len = 1;
fl.l_type = F_RDLCK;
if (0 != fcntl(fd, F_SETLK, &fl) ) printf(" - error!\n"); else printf("\n");
printf(" Read-locking 510 byte from 1073741826");
fl.l_start = 1073741826;
fl.l_len = 510;
fl.l_type = F_RDLCK;
if (0 != fcntl(fd, F_SETLK, &fl) ) printf(" - error!\n"); else printf("\n");
printf(" Unlocking 1 byte from 1073741824");
fl.l_start = 1073741824;
fl.l_len = 1;
fl.l_type = F_UNLCK;
if (0 != fcntl(fd, F_SETLK, &fl) ) printf(" - error!\n"); else printf("\n");
printf(" Write-locking 1 byte from 1073741824");
fl.l_start = 1073741824;
fl.l_len = 1;
fl.l_type = F_WRLCK;
if (0 != fcntl(fd, F_SETLK, &fl) ) printf(" - error!\n"); else printf("\n");
printf(" Write-locking 510 byte from 1073741826");
fl.l_start = 1073741826;
fl.l_len = 510;
if (0 != fcntl(fd, F_SETLK, &fl) ) printf(" - error!\n"); else printf("\n");
printf(" Unlocking 2 byte from 1073741824");
fl.l_start = 1073741824;
fl.l_len = 2;
fl.l_type = F_UNLCK;
if (0 != fcntl(fd, F_SETLK, &fl) ) printf(" - error!\n"); else printf("\n");
close(fd);
return 0;
/*
* Test if permissions of freshly created directories allow entries
* below them. This was a problem with OpenOffice.org and gcompris.
* Mounting with option 'sync' seem to solve this problem while
* slowing down file operations.
*/
int test_subdirectory_creation(void)
#define LEVELS 5
char *path = strdup("test");
char *dirs[LEVELS];
int level;
printf("info: testing subdirectory creation\n");
for (level = 0; level < LEVELS; level++)
char *newpath = NULL;
if (-1 == mkdir(path, 0777))
printf(" error: Unable to create directory '%s': %s\n",
path, strerror(errno));
break;
asprintf(&newpath, "%s/%s", path, "test");
free(path);
path = newpath;
return 0;
/*
* Test if symlinks can be created. This was a problem detected with
* KDE.
*/
int test_symlinks(void)
printf("info: testing symlink creation\n");
unlink("symlink");
if (-1 == symlink("file", "symlink"))
printf(" error: Unable to create symlink\n");
return 0;
int main(int argc, char **argv)
printf("Testing POSIX/Unix sematics on file system\n");
test_symlinks();
test_subdirectory_creation();
#ifdef TEST_SQLITE
test_sqlite_open();
#endif /* TEST_SQLITE */
test_gcompris_locking();
return 0;
When everything is working, it should print something like
this:
Testing POSIX/Unix sematics on file system info: testing symlink creation info: testing subdirectory creation info: sqlite worked info: testing fcntl locking Read-locking 1 byte from 1073741824 Read-locking 510 byte from 1073741826 Unlocking 1 byte from 1073741824 Write-locking 1 byte from 1073741824 Write-locking 510 byte from 1073741826 Unlocking 2 byte from 1073741824I do not remember the exact details of the problems we saw, but one of them was with locking, where if I remember correctly, POSIX allow a read-only lock to be upgraded to a read-write lock without unlocking the read-only lock (while Windows do not). Another was a bug in the CIFS/SMB client implementation in the Linux kernel where directory meta information would be wrong for a fraction of a second, making OpenOffice.org fail to create its deep directory tree because it was not allowed to create files in its freshly created directory. Anyway, here is a nice tool for your tool box, might you never need it. :)
So, DebConf is over and it was a blast. I wanted to blog
about my talks for a couple of days, but the conference was
so great that I did not get around to it until now.
The unique thing about this year's conference were the
outstanding contributions by non-Debian FLOSS people from
the east coast. I am really glad the organizers decided to
reach out to the communi
ty and take this opportunity when a lot of great minds were
just a couple of hours away. Also, discussing and hanging
out with the local team people was so much fun and
interesting that it was wor
th the visit alone.
The venue was just perfect, the dorms were on campus, the
cafeteria had an all-you-can-eat buffet, everything was in
short walking distance and the Columbia campus is beautiful.
I would have liked to go to a couple more places in the
evenings, but hanging out in the Carman basement lounge with
awesome people was just as good. A big thanks to Richard
Darst, Biella, Micah and the rest of the
crew.
The Debian GNU/Hurd talk went quite well, I was
pleasantly surprised so many people made it to the Davis
auditorium. I wanted to do the presentation on Debian
GNU/Hurd (and I had it working before the talk), but as my
notebook has a different resolution than the projector, I
decided to play it safe and just show a d-i run in qemu.
Nevertheless, Jeremie's wo
rk on debian-installer is impressive, I got it installed
on my ThinkPad without a problem (using qemu) and it
automatically installed and setup grub2. Unfortunately,
grub2 seems to be having issues when booting my notebook
natively, but I got it to work with grub-legacy, including X
and evince.
There were quite a few comments and I had interesting
conversations afterwards with a couple of people. It is a
shame Emilio Pozuelo Monfort (pochu) could not make it to
DebConf to give the talk himself, he did lots of great work
on porting packages and fixing the Hurd and glibc for
various testsuites over the last couple of months.
My other talk about GOsa and FAI was a
bit rougher, I scrambled to get FAI integration in GOsa to
work based on Mark Pavlichuk'sinstallation
scripts which I fixed up over the last couple of weeks
to the point where one can install a client using the FAI
simple demo classes (which I ported to GOsa's FAI LDAP).
There were some problems with the demonstration during the
talk and I guess it was a tough audience for a web-based
admin tool but I hopefully got my point across that we
should salvage this work done for the city of Munich.
Indeed, I had great discussions with Andreas Mundt
from debian-edu afterwards who posted a summary and call for
discussion to the debian-edu mailing list.
![]() |
![]() |
The FrOSCon 5 - 21./22. August 2010 booth plans have finalised, I am rather content:
This is especially good, as XTaran will be shared among (at least) Debian, Grml, FreeWRT; same for me plus of course MirBSD; kimnotyze is FreeWRT but may help with MirBSD; benz and gecko2 probably are MirBSD but gecko2 could help with FreeWRT, tokkee was interested in FreeWRT too anyway.
Some days, you just love software.
Aug 6 13:55:01 blau firesomething-bin: stack overflow in function VFY_EndWithSignature Aug 6 13:55:01 blau /bsd: signal 6 received by (firesomething-bi:1146) UID(2999) EUID(2999), parent (sh:9059) UID(2999) EUID(2999)
Thus, let me re terate it for all of you:
(removed from Planet Debian)
Well, now that the Debian Release Managers have sent their freezing
bits around *shudder* Squeeze is frozen. Well, at least everything
I have my hands in has migrated. I m still not persuaded. I also can t
decide which looks worse (KDE 4 or Win 7), tending towards KDE 4
(Read on for more controverse/questionable statements.)
Next.