Search Results: "will"

18 March 2009

Biella Coleman: Hyperparenting: The Ethnography

I have a long list (it exists only in my head unfortunately) of various ethnographic projects I would like to conduct. I might start the real list soon but in the meantime, I will just through the half-baked ideas here and perhaps it will inspire others to take it on. I am currently reading a fantastic book, The Case Against Perfection, and am on a section on hyperparenting and well, while I think at a common sense level we know what psychological havoc such controlled parenting can cause, I think an ethnography of some of the practices and institutions of hyperparenting would, nonetheless, make for a fascinating read. If anyone knows of anything that even resembles this, do drop me a line. Update: Not exactly an ethnography but certainly fun to read.

Biella Coleman: Hyperparenting: The Ethnography

I have a long list (it exists only in my head unfortunately) of various ethnographic projects I would like to conduct. I might start the real list soon but in the meantime, I will just through the half-baked ideas here and perhaps it will inspire others to take it on. I am currently reading a fantastic book, The Case Against Perfection, and am on a section on hyperparenting and well, while I think at a common sense level we know what psychological havoc such controlled parenting can cause, I think an ethnography of some of the practices and institutions of hyperparenting would, nonetheless, make for a fascinating read. If anyone knows of anything that even resembles this, do drop me a line. Update: Not exactly an ethnography but certainly fun to read.

Biella Coleman: FLOSS Manuals in Cambdrige, MA March 21-22nd

I recently got to spend some time hanging with part of the FLOSS manual crew and they basically are as busy as ever holding sprints across the US and Europe to write documentation and manuals for Free Software. They are holding a mini sprint in Cambridge, MA and along with the FSF will be writing a manual on the command line in about two days. If the idea of writing documentation makes you feel warm and happy inside, then this is the even for you. They are always looking for volunteers and I assure you, the experience will be well worth your time, effort, and participation.

Biella Coleman: FLOSS Manuals in Cambdrige, MA March 21-22nd

I recently got to spend some time hanging with part of the FLOSS manual crew and they basically are as busy as ever holding sprints across the US and Europe to write documentation and manuals for Free Software. They are holding a mini sprint in Cambridge, MA and along with the FSF will be writing a manual on the command line in about two days. If the idea of writing documentation makes you feel warm and happy inside, then this is the even for you. They are always looking for volunteers and I assure you, the experience will be well worth your time, effort, and participation.

Biella Coleman: Expectations

Expectations: A little over a week ago I participated in a camp/event/conference/ that threw together 12 different networked based-groups/phenomenon/organizations. They got to do what many often can t do: spend some time working face-to-face as well as thinking about about questions of un(organizational) growth/ungrowth. Some of us spent some time learning about the nature of networked coordinations and organizations from these groups. There is a lot I could write about but, in part because I was in Amsterdam for a week, I am now playing serious catch up, but there are a few things that really struck me both of which relate to expectations, which I thought worth jotting down. Generally present were the following types of groups: open source projects (such as Blender), tech-oriented activist projects (Dyne), non-tech oriented projects (such as Free Dimensional), artistic-tech projects (such as GOTO10), artistic projects (Upgrade), academic-activist (Edu Factory) and others which are harder to classify (such as Gender Changes, and FLOSS Manuals). One thing that came out during the plenary sessions, which is when we got together as a large group to debate and discuss, is that technically oriented open source projects are at times singled out for not being inclusive. That is, people pointed out that most projects expect you to contribute technically in order to participate (and don t necessarily offer people the training/capacity so you can participate). I have heard a version of this many many and many times before and find it to be a curious (and generally unproductive) accusation, though I understand why the confusions arises. I say confusion because most of these projects are not overtly set up to be inclusive/technically pedagogical, and this is perhaps the key point they don t purport to be though many folks think this is part of their overall message/mission. Because these free software projects are open source, this, for some, somehow automatically translates into the political projects of inclusivity (that is, training folks so that they can become part of this world). And yet some other projects, such as Edu Factory and GoTo10, which are run as tight-knit of collectives, are rarely accused of not being inclusive. Why should this be? I raise this mostly because I find it interesting, pointing to the way certain terms or phrases (Freedom, Openness) combined with the visibility of FLOSS projects, automatically generate other expectations and meanings even if they don t actually exist. I also raise it because I think it is an unfair expectation to have of these communities only in so far as most of them are full of folks busy hacking up technology and this in and of itself, as I have written about before is worthwhile politically. And yet If one wants to make them more inclusive, then one can go ahead and bring into being such a project for most of them are quite open to various initiatives to enlarge the scope of participation. These projects can be internal to projects or external to them. That is, self-initiative goes a long way in this world, and has helped changed the terrain of participation and inclusivity and I am sure will continue to do so. Which brings me to my second point about expectations. Many people complain that open source is not easy to use. While this was entirely, 1000% true prior to 1998, every passing day makes this statement harder to stand by. I imagine in another 10 years, there will be many many programs that are as usable for the novice user as proprietary software. They had to play serious catch-up and I think have done a decent job. In some regards, all that was and is needed is time because time has already shown that usability has improved leaps and bounds. And yet there is still something odd about the accusations, which my friend tulpje but in the following way One would never accuse the Zapatistas for not having their military might/shit together like the US army, so why accuse open source for not being the mightiest software our there?) While I actually think that free software has already and will continue to give proprietary firms a run for their money in a way that a rag-tag guerrilla army can t do with a national army, it is nonetheless important to couch one s responses and accusations in terms of the constraints and realities of these projects. That said, I still think such expectations reflect important hopes and desires. They show us just how profoundly free software/open source has, simply by virtue of its existence, inspired many to follow suite politically, turning to FLOSS as a beacon of possibility.

Biella Coleman: Expectations

Expectations: A little over a week ago I participated in a camp/event/conference/ that threw together 12 different networked based-groups/phenomenon/organizations. They got to do what many often can t do: spend some time working face-to-face as well as thinking about about questions of un(organizational) growth/ungrowth. Some of us spent some time learning about the nature of networked coordinations and organizations from these groups. There is a lot I could write about but, in part because I was in Amsterdam for a week, I am now playing serious catch up, but there are a few things that really struck me both of which relate to expectations, which I thought worth jotting down. Generally present were the following types of groups: open source projects (such as Blender), tech-oriented activist projects (Dyne), non-tech oriented projects (such as Free Dimensional), artistic-tech projects (such as GOTO10), artistic projects (Upgrade), academic-activist (Edu Factory) and others which are harder to classify (such as Gender Changes, and FLOSS Manuals). One thing that came out during the plenary sessions, which is when we got together as a large group to debate and discuss, is that technically oriented open source projects are at times singled out for not being inclusive. That is, people pointed out that most projects expect you to contribute technically in order to participate (and don t necessarily offer people the training/capacity so you can participate). I have heard a version of this many many and many times before and find it to be a curious (and generally unproductive) accusation, though I understand why the confusions arises. I say confusion because most of these projects are not overtly set up to be inclusive/technically pedagogical, and this is perhaps the key point they don t purport to be though many folks think this is part of their overall message/mission. Because these free software projects are open source, this, for some, somehow automatically translates into the political projects of inclusivity (that is, training folks so that they can become part of this world). And yet some other projects, such as Edu Factory and GoTo10, which are run as tight-knit of collectives, are rarely accused of not being inclusive. Why should this be? I raise this mostly because I find it interesting, pointing to the way certain terms or phrases (Freedom, Openness) combined with the visibility of FLOSS projects, automatically generate other expectations and meanings even if they don t actually exist. I also raise it because I think it is an unfair expectation to have of these communities only in so far as most of them are full of folks busy hacking up technology and this in and of itself, as I have written about before is worthwhile politically. And yet If one wants to make them more inclusive, then one can go ahead and bring into being such a project for most of them are quite open to various initiatives to enlarge the scope of participation. These projects can be internal to projects or external to them. That is, self-initiative goes a long way in this world, and has helped changed the terrain of participation and inclusivity and I am sure will continue to do so. Which brings me to my second point about expectations. Many people complain that open source is not easy to use. While this was entirely, 1000% true prior to 1998, every passing day makes this statement harder to stand by. I imagine in another 10 years, there will be many many programs that are as usable for the novice user as proprietary software. They had to play serious catch-up and I think have done a decent job. In some regards, all that was and is needed is time because time has already shown that usability has improved leaps and bounds. And yet there is still something odd about the accusations, which my friend tulpje but in the following way One would never accuse the Zapatistas for not having their military might/shit together like the US army, so why accuse open source for not being the mightiest software our there?) While I actually think that free software has already and will continue to give proprietary firms a run for their money in a way that a rag-tag guerrilla army can t do with a national army, it is nonetheless important to couch one s responses and accusations in terms of the constraints and realities of these projects. That said, I still think such expectations reflect important hopes and desires. They show us just how profoundly free software/open source has, simply by virtue of its existence, inspired many to follow suite politically, turning to FLOSS as a beacon of possibility.

Michal Čihař: Gammu test version 1.23.91

Welcome back on weekly schedule of Gammu releases. The biggest change in this release is in SMSD and RunOnReceive scripting support, which has been improved and now can contain any arbitrary command. Besides that support for vNote format has been added for backups/restores and some minor bugs were fixed. Full list of changes follows: You can download from usual place: http://cihar.com/gammu/, Debian users will find packages in experimental soon, SUSE, Fedora and Mandriva users can check experimental repository in OpenSuse Build Service.

17 March 2009

Ondřej Čertík: Newtonian Mechanics with SymPy

Luke Peterson from UC Davis came to visit me in Reno and we spent the last weekend hacking on the Python Dynamics package that uses SymPy to calculate equations of motion for basically any rigid body system.

On Friday we did some preliminary work, mostly on the paper, Luke showed me his rolling torus demo that he did with the proprietary autolev package. We set ourselves a goal to get this implemented in SymPy by the time Luke leaves and then we went to the Atlantis casino together with my boss Pavel and other guys from the Desert Research Institute and I had my favourite meal here, a big burger, fries and a beer.

On Saturday we started to code and had couple lines of the autolev torus script working. Then we went on the bike ride from Reno to California. I took some pictures with Luke's iphone:


Those mountains are in California and we went roughly to the snow line level and back:

This is Nevada side:


That was fun. Then we worked hard and by the evening we had a dot product and a cross product working, so we went to an Irish pub to have couple beers and I had my burger as usual.

On Sunday we spent the whole day and evening coding and we got the equations of motion working. On Monday we worked very hard again:



and fixed some remaining nasty bugs. I taught Luke to use git, so our code is at: http://github.com/hazelnusse/pydy, for the time being we call it pydy and after we polish everything, we'll probably put it into sympy/physics/pydy.py. If you run rollingtorus.py, you get this plot of the trajectory of the torus in a plane:

It's basically if you throw a coin on the table, e.g. this model takes into account moments of inertia, yaw (heading), lean, spin and the x-y motion in the plane. Depending on the initial conditions, you can get many different trajectories, e.g for example:

or:


This is very exciting, as the code is very short, and most of the things that Luke needs are needed for all the other applications of sympy, e.g. a good printing of equations and vectors (both in the terminal and in latex), C code generation, fast handling of expressions, nice ipython terminal for experimentation, plotting, etc.

Together with the atomic physics package that we started to develop with Brian sympy will soon be able to cover some basic areas of physics. Other areas are general relativity (there is some preliminary code in examples/advanced/relativity.py) and quantum field theory and Feynman diagrams - for that we need someone enthusiastic that needs this for his/her research --- if you are interested, drop me an email, you can come to Reno (or work remotely) and we can get it done.

My vision is that sympy should be able to handle all areas of physics, e.g. it needs good assumptions (if you want to help out, please help us test Fabian's patches here), then faster core, we have a pretty good optional Cython core here, so we'll be merging it after the new assumptions are in place. Then sympy should have basic modules for most areas in physics so that one can get started really quickly. From our experience so far in sympy/physics, those modules will not be big, as most of the functionality is not module specific.

Sandro Tosi: LPI 101 - pass!

This morning I attempted LPI101 exam (I already passed LPI102 some time ago).

I did because on April 1st the objectives will be updated to newer (and more up-to-date) that they are now (they're still about ISA devices or so) and all the materials to study on would become old.

Pretty scared (due to weird question I couldn't remember) but still passed! Scored 720 points (500 was needed to pass the exam).

Now I own the full LPI-1 certification!

Adeodato Sim : When timestamp without time zone beats timestamp with time zone

I m the kind of guy that keeps a list of all the movies he s watched, with dates. Additionally, I m the kind of guy that used to keep such list in an SQLite database, and that keeps it in a PostgreSQL database now. Heh. I used to register just the day in which I watched a certain film. When moving to Postgres, I decided to record the time of day as well, which can come handy for those times where I d watch 2 films in the same day, in order to know which one came first. (I seem to have a small number of dates registered where I watched 3 films on the same day.) So, I went for a timestamp with time zone column. As its name seemed to promise, I was expecting for it to store the absolute timestamp of the event, plus the time zone it occurred in. But it doesn t work that way: a timestamp with time zone column only stores the absolute timestamp of the event, but not the associated time zone information. When returning the data to you, the event will always be in the local time zone, meaning that the only use for the with time zone part is that you can feed PostgreSQL dates in different time zones, and it will know to convert them all to absolute UTC before storing them in the database. This was a tad upsetting, because it meant I was actually losing information. For me, the most relevant information to store was the date of the event (as in, which day), and I was only storing the time for the purposes stated above. Should I move to a different timezone, either permanently or temporarily, some or all of the dates could very well be off by one day. The proper solution if you re such a pedant is to store in an additional colum the time zone, either as a symbolic name, or as a numeric offset. But I don t care that much, so I ve gone for a timestamp without time zone column, which solves the problem just fine: give me the date this event happened, in whatever time zone you happened to be at the time. By the way, one of my main objectives with keeping my list of watched movies in a database was to be able to quickly answer the question: What other films have I watched this actor in? Is a question that I make myself surprisingly often (because I ll know I ve seen a face before, but will not remember where), and an SQL statement is oh-so-much-more convenient than visiting an IMDB page and scan it for titles you think you ve watched.

Uwe Hermann: Resizing ext3-on-LVM-on-dmcrypt file systems, moving disk space from one LV to another

Back in 2008 I wrote a small article about resizing LVM physical volumes. I had to do something similar, but slighly more complicated, recently. My /usr logical volume (LV) was getting full on my laptop disk, thus I wanted to shrink another LV and move some of that space to /usr. Here's one way you can do that. Requirements: a Live CD containing all required utilities (cryptsetup, LVM tools, resize2fs), I used grml. Important: If you plan to perform any of these steps, make sure you have recent backups! I take no responsibility for any data loss you might experience. You have been warned! First, shutdown the laptop and boot using the Live CD. Then, open the dm-crypt device (/dev/hda3 in my case) by entering your passphrase:
  $ cryptsetup luksOpen /dev/hda3 foo
Activate all (newly available) LVM volume groups in that encrypted device:
  $ vgchange -a y
(maybe you also need a vgscan and/or lvscan, not sure) Check how much free space we have for putting into our /usr LV:
  $ vgdisplay   grep Free
  Free  PE / Size       0 / 0   
OK, so we have none. Thus, we need to shrink another LV (/home, in my case) and put that newly freed space into the /usr LV. In order to do that, we have to check the current size of the /home LV:
  $ mount -t ext3 /dev/vg-whole/lv-home /mnt
  $ df --block-size=1M   grep -C 1 /mnt
  $ umount /mnt
(if you know how to find out the size of an ext3 file system without mounting it, please let me know) Update: See comments for suggestions. Write down the total amount of 1M chunks of space on the file system (116857 in my case), we'll need that later. Now run 'fsck' on the /home LVM logical volume, which is needed for the 'resize2fs' step afterwards. This will take quite a while.
  $ fsck -f /dev/vg-whole/lv-home
Next step is resizing the ext3 file system in the /home LVM logical volume, making it 1GB smaller than before (of course you must have >= 1 GB of free space on /home for that to work). We use fancy bash calculations to do the math. Note: I'm not so sure about the sizes here, in my first attempt something went wrong and resize2fs said "filesystem too small" or the like. Maybe I'm confusing the size units from 'df' and 'resize2fs', or the bash calculation goes wrong? Please leave a comment if you know more!
  $ resize2fs /dev/vg-whole/lv-home $((116857-1024))M
Then, we can safely reduce the LV itself. Note: order is very important here, you must shrink the ext3 filesystem first, and then shrink the LV! Doing it the other way around will destroy your filesystem!
  $ lvreduce -L -1G /dev/vg-whole/lv-home
Now that we have 1 GB of free space to spend on LVs, we assign that space to the /usr LVM logical volume like this:
  $ lvextend -L +1G /dev/vg-whole/lv-usr
As usual, we then run 'fsck' on the filesystem in order to be able to use 'resize2fs' to resize it to the biggest possible size (that's the default if resize2fs gets no parameters):
  $ fsck -f /dev/vg-whole/lv-usr
  $ resize2fs /dev/vg-whole/lv-usr
That's it. You can now shutdown the Live CD system and boot into the normal OS with the new space allocations:
  $ vgchange -a n
  $ cryptsetup luksClose foo
  $ halt

Neil Williams: If the law is inconvenient, unelected bodies just change the rules?

From the FFII:

EPO seeks to validate software patents without the European Parliament

Benjamin Henrion, President of the association, says: "The current plan of the patent lobby is very clear: avoid a new software patent directive, validate the EPO practice via a central patent court, and guide the hand of the courts via a decision of the Enlarged Board of Appeal. They want to avoid the intervention of the European Parliament in substantive patent law."

In other words, seeing as the elected representatives have blocked a change in the law, the unelected quango will simply seek a change in the rules to make it unnecessary to change the law and therefore avoid asking the elected representatives at all.

This is crazy, dangerous and downright sinister.

"Considering that the EPO is an institution acting as judge and party, where the attributions and procedures have to be revised. [...] Demand the revision of rules of function of the EPO in order to guarantee that this institution can publicly justify the accountability in the exercise of its functions [...]."

Judge, jury and executioner more like.

Interested parties have up to the last day of April to send their comments to the Enlarged Board of Appeal.

Information for third parties wishing to file written statements

Communication from the Enlarged Board of Appeal concerning case G 3/08

(my comments added in bold)

In accordance with Article 112(1)(b) EPC, the President of the European Patent Office has referred the following points of law concerning the limits of patentability of programs for computers within the meaning of Article 52(2)(c) and (3) EPC to the Enlarged Board of Appeal. The case is pending under ref. No. G 3/08.

The questions referred are:

1. Can a computer program only be excluded as a computer program as such if it is explicity claimed as a computer program?

No, any computer program is excluded no matter how it is claimed because a computer program is not patentable. The patent claim must contain material other than a computer program and the computer program itself cannot be claimed as part of any patent claim nor can any computer program ever be deemed to have infringed any patent claim even if that claim was previously based entirely in hardware.

2.(a) Can a claim in the area of computer programs avoid exclusion under Art. 52(2)(c) and (3) merely by explicity mentioning the use of a computer or a computer-readable data storage medium?

No patent claim can be made against any method expressed as a computer program. It is the software that matters, not the paraphernalia of computers. Therefore, whether a computer or computer-readable data storage media are mentioned, any software is automatically excluded from patentability. If the claim makes no sense without that software, then the claim is excluded.

(b) If question 2(a) is answered in the negative, is a further technical effect necessary to avoid exclusion, said effect going beyond those effects inherent in the use of a computer or data storage medium to respectively execute or store a computer program?

Any effect is excluded from patentability if that effect is or can be executed by software. If the effect becomes possible via software at some point in the future, the software cannot be deemed to have infringed the patent claim because software is not patentable.

3.(a) Must a claimed feature cause a technical effect on a physical entity in the real world in order to contribute to the technical character of the claim?

Effects on the "real world" are irrelevant - if the effect is or can be performed in software, the effect is excluded and any software implementing that effect cannot be deemed to have infringed the patent claim. The real world still includes the electrons that implement the effect of software but software is not patentable.

(b) If question 3(a) is answered in the positive, is it sufficient that the physical entity be an unspecified computer?

No, the effect is not the issue, the method is the issue.

(c) If question 3(a) is answered in the negative, can features contribute to the technical character of the claim if the only effects to which they contribute are independent of any particular hardware that may be used?

Portability infers software and software is not patentable. A claim must be excluded if it is wholly or partially implemented as software or can be wholly implemented as software and no software implementation can be deemed to have infringed the patent claim either in whole or in part now or in the future because software is not patentable.

4.(a) Does the activity of programming a computer necessarily involve technical considerations?

No. Programming is a form of speech, it uses languages and different languages have different requirements for technical expertise. Some languages require little or no technical expertise to generate an effect within a computer by means of software.

(b) If question 4(a) is answered in the positive, do all features resulting from programming thus contribute to the technical character of a claim?

No software programming can have any technical character for patentability because software is not patentable.

(c) If question 4(a) is answered in the negative, can features resulting from programming contribute to the technical character of a claim only when they contribute to a further technical effect when the program is executed?

No, if the features result from programming then the software to effect those features is not patentable and the feature itself is not patentable. No effect of a computer program can be wholly or partially patentable.

The text of the referral in the English language is available under Referrals pending before the Enlarged Board of Appeal.

The Enlarged Board of Appeal considering the referral will be composed as follows:

* P. Messerli (CH) (Chairman)
* M. Vogel (DE)
* D. Rees (GB)
* M. Dorn (DK)
* K. H rmand (EE)
* A. Klein (FR)
* J.-P. Seitz (FR)

It is expected that third parties will wish to use the opportunity to file written statements in accordance with Article 10 of the Rules of Procedure of the Enlarged Board of Appeal (OJ EPO 2007, 303 ff). To ensure that any such statements can be given due consideration they should be filed together with any new cited documents by the end of April 2009 at the Registry of the Enlarged Board of Appeal, quoting case number G 3/08. An additional filing of the statement and documents in electronic form would be appreciated (Dg3registry_eba@epo.org ).




Feel free to add your own answers to the questions as comments.

Russell Coker: Lobbying for Free Software

I am not aware of any Linux Users Group (LUG) being active in informing it s members of how the policies of the various political parties compare with regard to free software and the other issues that are of interest to most members. I believe that this is a grave mistake. Shortly before an election there are many social groups that send lists of questions to all the parties. They ask about the policies the parties have in regard to the issues that they care about, and helpfully mention the number of members that will receive the response. This of course doesn t mean that every member of the group in question will cast their vote in the same way, merely that they will take note of the answers. The committee members of the parties in question will then decide how to answer the questions and whether policy should be tweaked to allow answers that the lobby groups will like. So this process not only helps members of a group make informed voting decisions related to issues that they care about, but it also helps political parties choose policies that are least offensive to the group in question. Here is a draft of a list of questions that I think should be asked of all political parties on behalf of Linux users:

  1. It is important for all citizens to access all government data without being forced to buy new software or hardware, open standards allow everyone to access the data with free software. Do you support the use of open standards for data on government web sites and other forms of electronic communication between government agencies and citizens?

  2. For long term archival of records it is important that file formats remain readable. The only effective way of doing this is to use open file formats that are implemented in free software. Do you support mandating that all data submitted to government agencies (by citizens or corporations) be in open file formats wherever possible?

  3. In these difficult economic times there is a great interest in keeping jobs in the country instead of sending money overseas. To what extent do you support the use of free software that is installed and managed by locals (keeping the money in the economy) instead of importing software at great taxpayer expense?

  4. Commercial software has a limited support period, after that time has elapsed there is no further support and systems become increasingly unreliable. Do you support mandating that all systems relating to the emergency services run on free software to allow quality long-term support by local citizens?

  5. There has been a lot of concern recently about the spread of child-porn. The best available evidence shows that insecure home PCs that run Trojan Horse programs are a key part of distributing it and other illegal material. Do you support the introduction of government programs to train parents in installing one of the more secure free operating systems on their home PC to protect their children?

This is just a rough draft. Obviously there needs to be local differences (EG don t use point 3 in the US because MS brings money into the US economy). Does anyone have any suggestions for other questions?

Y Giridhar Appaji Nag: External memory data-structures library

I have been looking for a free C library that supports common data structures (queues, trees, hashes etc.) and algorithms (sort, bulk search etc.) in external memory backed by regular files. One piece of software that I have been able to find as being closest to what I want was stxxl, a C+++ STL for extra large data sets. Please let me know if you happened to stumble upon something on these lines.

PS: I filed an RFP for libstxxl and I am willing to sponsor uploads in case somebody is interested in packaging and maintaining it.

Christian Perrier: Bug #520000

Mark Purcell reported bug #520000 on Monday March 16th, against the gsm-utils package. Bug #510000 was reported as of Dec 28th 2008. So, it took us 2.5 months for 10,000 bugs. This is still slower than our rate of 10,000 bugs/2 months but more than the pace we had for 500000-510000. Of course, in the meantime, we released lenny on Feb 14th and, therefore, the development started again and, with development, new bugs come in. To illustrate this, one will notice that bug #515000 was reported on Feb 12th. So, it took 46 days for the first 5,000 bugs and then only 32 for the remainder 5,000. In short, we're probably back to our pace of 10,000 bugs in two months. In case someone cares, the first bug reported after the release of Lenny is #515247, reported by Robin Kluth against the gvfs package. It followed the release of lenny by 25 minutes and 14 seconds. That bug isn't fixed yet but is already reported upstream.

Christian Perrier: News of samba packages

The first version of samba packages (2:3.3.1-1) that is different from the version in lenny (2:3.2.5-4) entered testing this week-end. The first update of samba packages that's aimed for lenny has also been accepted for the next point release of Lenny, through stabe-proposed-updates. This is version 2:3.2.5-4lenny1. It fixes two important bugs discovered after the release of lenny that potentially affect many users and were fixed upstream in post-3.2.5 releases In the constant tracking of a very active upstream, I also uploaded packages for 3.3.2 in unstable. That was quite a straightforward process, of course helped by Steve Langasek, who is a constant active support in the maintenance of samba packages. I really like the team we're having now, with Steve being very picky and motivated by quality and /me doing most of the nasty repetitive work to try saving his time for more important tasks..:-) The next plan is updating packages on backports.org. Having 3.3.1 packages in testing now allows us to upload them in lenny-backports which should be good for lenny users who want to track upstream. Finally, my proposal for a talk about "Packaging Samba for Debian and derivatives" has been accepted at Samba XP, the annual conference of Samba developers and users in G ttingen, Germany. For the first time, I'll be a speaker at this conference which I attend yearly since...it exists. My "german pilgrimage" of the year in Northern/Central Germany... Ah, and I'm still preparing for the Paris Marathon, in 3 weeks now, which I will run with Ralf Treinen and No l K the. I feel in good shape for this as, this week-end, while I promised myself to "not run for too long", I just ran 19km and felt this was a quite "short" run. Still not in the performances of Dirk who mentions that 1h36 for a semi is "good for someone who didn't train that much during winter"...but I think I'll never reach that level of performance. I should have started running long distance 20 years ago for this, I'm afraid.

16 March 2009

Michal Čihař: Expert Python Programming

The book Expert Python Programming comes with subtitle Best practices for designing, coding, and distributing your Python software. Well this seems to be quite broad area to be covered by a single book, but the book really tries to cover all topics at least in some form of overview and pointing user to other documentation sources. Expert Python Programming In first chapter you can find information about installing Python on various platforms. As the book seems to be targeted to more experienced users, this chapter seems to be a bit useless, but author decided to give a chance also to users, who do not know the basics. Next chapters describe best practices for writing Python code, which was the most interesting part for me. I use Python several years, but I never really found time time to properly look at using decorators, generators and other "recently" introduced language features. Second chapter nicely covers these and I really appreciated that I got idea for what decorators can be used. Third chapter into class level and describes how to use metaclasses, attributes, constructors and other things you can face on class level. Fourth moves the topic to even more abstract way and in short summarises PEP 8 best coding practices. Here we leave solid ground of writing code and we move to more abstract areas of managing projects, testing, documenting and distributing software. It begins with description of distutils and setuptools in chapters five and six, where you will find basic information about distributing your software. Seventh chapter covers zc.buildout, which can help you with setting up and deploying applications in way Zope and Plone do. Next chapter is not really related to Python, it just describes advantages of version control. The most Python related part is using Mercurial VCS, which is written in Python, but you can of course use it for managing any project. Next tree chapters are devoted to project development in general, describing management of the project, generating documentation for project using Sphinx (what actually made me into starting documentation for python-gammu in it) and test-driven development practices. Now comes again two more interesting chapters describing optimization of Python code, giving the best advice not to optimize unless you are sure it is needed ;-). But it also goes more deeper and describes benchmarking procedures, how to debug memory usage and some basic tips for general things which might improve performance. Last chapter is some kind of extra in the book and to me it looks it was added just to use buzzwords design patters, but well it is there and it covers few design patterns which might be useful in Python like singleton or more advanced version of it called borg. In general this book covers quite wide range of topics, what can be seen as biggest advantage and disadvantage. You will get basic overview of creating Python project using modern methods (test driven development, design patters, best practices for Python code), but you can not expect it will go into much deep details. The book can extend your knowledge of development in Python, but you should carefully check examples with errata, because otherwise several of them will fail. I'm not that good at spotting problems in written English (as you can probably see in this post), but I spotted several errors in code and I think more careful editor work on the book would improve my feelings a bit. Also I personally would prefer much deeper look into some topics and skipping the others, but one book can not fit all ;-).

Theodore Ts'o: Don t fear the fsync!

After reading the comments on my earlier post, Delayed allocation and the zero-length file problem as well as some of the comments on the Slashdot story as well as the Ubuntu bug, it s become very clear to me that there are a lot of myths and misplaced concerns about fsync() and how best to use it. I thought it would be appropriate to correct as many of these misunderstandings about fsync() in one comprehensive blog posting. As the Eat My Data presentation points out very clearly, the only safe way according that POSIX allows for requesting data written to a particular file descriptor be safely stored on stable storage is via the fsync() call. Linux s close(2) man page makes this point very clearly:
A successful close does not guarantee that the data has been successfully saved to disk, as the kernel defers writes. It is not common for a file system to flush the buffers when the stream is closed. If you need to be sure that the data is physically stored use fsync(2).
Why don t application programmers follow these sage words? These three reasons are most often given as excuses:
  1. (Perceived) performance problems with fsync()
  2. The application only needs atomicity, but not durability
  3. The fsync() causing the hard drive to spin up unnecessarily in laptop_mode
Let s examine each of these excuses one at a time, to see how valid they really are. (Perceived) performance problems with fsync() Most of the bad publicity with fsync() originated with the now infamous problem with Firefox 3.0 that showed up about a year ago in May, 2008. What happened with Firefox 3.0 was that the primary user interface thread called the sqllite library each time the user clicked on a link to go to a new page. The sqllite library called fsync(), which in ext3 s data=ordered mode, caused a large, visible latency which was visible to the user if there was a large file copy happening by another process. Nearly all of the reported delays was a few seconds, which would be expected; normally there isn t that much dirty data that needs to be flushed out on a Linux system, even if it is even very busy. For example, consier the example of a laptop downloading an .iso image from a local file server; if the laptop has the exclusive link of a 100 megabit/second ethernet link, and the server has the .iso file in cache, or has a nice fast RAID array so it is not the bottleneck, then in the best case, the laptop will be able to download data at the rate of 10-12 MB/second. Assuming the default 5 second commit interval, that means that in the worst case, there will be at most 60 megabytes which must be written out before the commit can proceed. A reasonably modern 7200 rpm laptop drive can write between 60 and 70 MB/second. (The Seagate Momentus 7200.4 laptop drive is reported to be able to deliver 85-104 MB/second, but I can t find it for sale anywhere for love or money.) In this example, an fsync() will trigger a commit and might need to take a second while the download is going on; perhaps half a second if you have a really fast 7200 rpm drive, and maybe 2-3 seconds if you have a slow 5400 rpm drive. (Jump to Sidebar: What about those 30 second fsync reports?) Obviously, you can create workloads that aren t bottlenecked on the maximum ethernet download speed, or the speed of reading from a local disk drive; for example, dd if=/dev/zero of=big-zero-file will create a very large number of dirty pages that must be written to the hard drive at the next commit or fsync() call. It s important to remember though, fsync() doesn t create any extra I/O (although it may remove some optimization opportunities to avoid double writes); fsync() just pushes around when the I/O gets done, and whether it gets done synchronously or asynchronously. If you create a large number of pages that need to be flushed to disk, sooner or later it will have a significant and unfortunate effect on your system s performance. Fsync() might make things more visible, but if the fsync() is done off the main UI thread, the fact that fsync() triggers a commit won t actually disturb other processes doing normal I/O; in ext3 and ext4, we start a new transaction to take care of new file system operations while the committing transction completes. The final observation I ll make is that part of the problem is that Firefox as an application wants to make a huge number of updates to state files and was concerned about not losing that information even in the face of a crash. Every application writer should be asking themselves whether this sort of thing is really necessary. For example, doing some quick measurements using ext4, I determined that Firefox was responsible for 2.54 megabytes written to the disk for each web page visited by the user (and this doesn t include writes to the Firefox cache; I symlinked the cache directory to a tmpfs directory mounted on /tmp to reduce the write load to my SSD). So these 2.54 megabytes is just for Firefox s cookie cache and Places database to maintain its Awesome bar . Is that really worth it? If you visit 400 web pages in a day, that s 1GB of writes to your SSD, and if you write more than 20GB/day, the Intel SSD will enable its write endurance management feature which slows down the performance of the drive. In light of that, exactly how important is it to update those darned sqllite databases after every web click? What if Firefox saved a list of URL s that has been visited, and only updated every 30 or 60 minutes, instead? Is it really that every last web page that you browse be saved if the system crashes? An fsync() call every 15, 30, or 60 minutes, done by a thread which doesn t block the application s UI, would have never been noticed and would have not started the firestorm on Firefox s bugzilla #421482. Very often, after a little thinking, a small change in the application is all that s necessary for to really optimize the application s fsync() usage. (Skip over the sidebar if you ve already read it). Sidebar: What about those 30 second fsync reports? If you read through the Firefox s bugzilla entry, you ll find reports of fsync delays of 30 seconds or more. That tale has grown in the retelling, and I ve seen some hyperbolic claims of five minute delays. Where did that come from? Well, if you look that those claims, you ll find they were using a very read-heavy workload, and/or they were using the ionice command to set a real-time I/O priority. For example, something like ionice -c 1 -n 0 tar cvf /dev/null big-directory . This will cause some significant delays, first of all because ionice -c 1 causes the process to have a real-time I/O priority, such that any I/O requests issued by that process will be serviced before all others. Secondly, even without the real-time I/O priority, the I/O scheduler naturally prioritizes reads as higher priority than writes because normally processes are waiting for reads to complete, but writes are normally asynchronous. This is not at all realistic workload, and it is even more laughable that some people thought this might be an accurate representation of the I/O workload of a kernel compile. These folks had never tried the experiment, or measured how much I/O goes on during a kernel compile. If you try it, you ll find that a kernel compile sucks up a lot of CPU, and doesn t actually do that much I/O. (In fact, that s why an SSD only speeds up a kernel compile by about 20% or so, and that s in a completely cold cache case. If the commonly used include files are already in the system s page cache, the performance improvement of the SSD is much less.) Jump back to reading Performance problems with fsync. The atomicity not durability argument One argument that has commonly been made on the various comment streams is that when replacing a file by writing a new file and the renaming file.new to file , most applications don t need a guarantee that new contents of the file are committed to stable store at a certain point in time; only that either the new or the old contents of the file will be present on the disk. So the argument is essentially that the sequence:
  • fd = open( foo.new , O_WRONLY);
  • write(fd, buf, bufsize);
  • fsync(fd);
  • close(fd);
  • rename( foo.new , foo );
is too expensive, since it provides atomicity and durability , when in fact all the application needed was atomicity (i.e., either the new or the old contents of foo should be present after a crash), but not durability (i.e., the application doesn t need to need the new version of foo now, but rather at some intermediate time in the future when it s convenient for the OS). This argument is flawed for two reasons. First of all, the squence above exactly provides desired atomicity without durability . It doesn t guarantee which version of the file will appear in the event of an unexpected crash; if the application needs a guarantee that the new version of the file will be present after a crash, it s necessary to fsync the containing directory. Secondly, as we discussed above, fsync() really isn t that expensive, even in the case of ext3 and data=ordered; remember, fsync() doesn t create extra I/O s, although it may introduce latency as the application waits for some of the pending I/O s to complete. If the application doesn t care about exactly when the new contents of the file will be committed to stable store, the simplest thing to do is to execute the above sequence (open-write-fsync-close-rename) in a separate, asynchronous thread. And if the complaint is that this is too complicated, it s not hard to put this in a library. For example, there is currently discussion on the gtk-devel-list on adding the fsync() call to g_file_set_contents(). Maybe if someone asks nicely, the glib developers will add an asynchronous version of this function which runs g_file_set_contents() in a separate thread. Voila! Avoiding hard drive spin-ups with laptop_mode Finally, as Nathaniel Smith said in Comment #111 of of my previous post:
The problem is that I don t, really, want to turn off fsync s, because I like my data. What I want to do is to spin up the drive as little as possible while maintaining data consistency. Really what I want is a knob that says I m willing to lose up to minutes of work, but no more . We even have that knob (laptop mode and all that), but it only works in simple cases.
This is a reasonable concern, and the way to fix this is to enhance laptop_mode in the Linux kernel. Bart Samwel, the author and maintainer of laptop_mode, actually discussed this idea with me last month at FOSDEM. Laptop_mode already adjusts /proc/sys/vm/dirty_expire_centisecs and /proc/sys/vm/dirty_writeback_centisecs based on the configuration parameter MAX_LOST_WORK_SECONDS, and it also adjusts the file system commit time (for ext3; it needs to be taught to do the same thing for ext4, which is a simple patch) to MAX_LOST_WORK_SECONDS as well. All that is necessary is a kernel patch to allow laptop_mode to disable fsync() calls, since the kernel knows that it is in laptop_mode, and it notices that the disk has spun up, it will sync out everything to disk, since once the energy has been spent to spin up the hard drive, we might as well write everything in memory that needs to be written out right away. Hence, a patch which allows fsync() calls to be disabled while in laptop_mode should do pretty much everything Nate has asked. I need to check to see if laptop_mode does this already, but if it doesn t force a file system commit when it detects that the hard drive has been spun up, it should obviously do this as well. (In addition to having a way to globally disable fsync() s, it may also be useful to have a way to selectively disable fsync() s on a per-process basis, or on the flip side, exempt some process from a global fsync-disable flag. This may be useful if there are some system daemons that really do want to wake up the hard drive and once the hard drive is spinning, naturally everything else that needs to pushed out to stable store should be immediately written.) With this relatively minor change to the kernel s support of laptop_mode, it should be possible to achieve the result that Nate desires, without needing force applications to worry about this issue; applications should be able to just simply use fsync() without fear. Summary As we ve seen, the reasons most people think fsync() should be avoided really don t hold water. The fsync() call really is your friend, and it s really not the villain that some have made it out to be. If used intelligently, it can provide your application with a portable way of assuring that your data has been safely written to stable store, without causing a user-visible latency in your application. The problem is getting people to not fear fsync(), understand fsync(), and then learning the techniques to use fsync() optimally. So just as there has been a Don t fear the penguin campaign, maybe we also need to have a Don t fear the fsync() campaign. All we need is a friendly mascot and logo for a Don t fear the fsync() campaign. Anybody want to propose an image? We can make some T-shirts, mugs, bumper stickers Related posts (automatically generated):
  1. Delayed allocation and the zero-length file problem A recent Ubuntu bug has gotten slashdotted, and has started...

15 March 2009

Joerg Jaspert: Section changes, Content Files and some more

And there we have done it - new sections in the archive. Read more about it in my d-d-a post and the whole set of affected packages is also available - and updated slightly, as some small things slipped through. The whole process was less painful than feared. After some discussion, started a few weeks ago we finally went and coordinated the change today. There was no reliable and good way for changes that large, so we had to create our own way. (The last section changes had been done ages ago). Mike provided a little python script which was able to parse our input file with the section matches against our database, so we ended up with a list we could possibly feed back into the database. Except, not really. Thanks to various things the list generated needed some manual work (which I also managed to fuck up a little), but after that was done we were ready to go. And while Mark told the wanna-build admins about the new sections (for some reason our buildd network cares about sections) and prepared a patch for our policy, I prepared the mail for the d-d-a list. Then we all had a break, as a dinstall was still running, and we did not want to break that. The actual changes then took only a few seconds, sending the mail to d-d-a took longer, thankyou gnupg. :) I wonder how much afterwork this will generate. There are at least the policy changes, lintian, the packages control files to adjust. Also some websites, where Frank already changed packages.debian.org to know about the new names. (Before he fixed up me forgetting some PHP packages to move. This way all of the active ftpteam members did something in it :) ).
In other news, we are currently stress-testing our ftp-master host a little. Well, not really, it could take more, but right now we are scanning the full archive once, importing all filenames from all our Debian packages. The goal is to get projectb larger. Err, no, actually we do want to get rid of apt-ftparchive, as that is one of the worst tools in our dinstall runs. It is slow as hell in the mode it has to run for us, making up a large part of our runtime. Step 1 to get rid of it is to generate the content files on our own, and before we can do that we have to import them all Which means we have to unpack every binary package once, reading in all filenames to store them in our database. Thats a lot of data. Currently the associations table, which is nothing more than 4 integers per row, takes up 972MB, and import is still running. (The index on the binary pkg id in this table alone has 700MB). And this table does nothing more than linking the binary package to the filename and filepath. Which are two extra tables, with the filenames having only 87MB, the path entries only taking up 30MB. Yes, anyone using databases will tell me thats not much, and it really isn t that much. It s just that the largest table before this import had 120MB in it. And some of the others used more space for their indexes than for the actual data. :) Anyway, this is only step one on our way to get rid of the slowness apt-ftparchive is. When the contents all work as we want them, the next step will be to get rid of it generating Packages/Sources files. Which means we have some more data to store in projectb. And after that - we also intend to do a Contents file for our source. Each and every source file listed. Guess we really will end up with some more large tables. :) The final goal and main reason why we do this is to save us at least 60 minutes runtime per dinstall run. My own guess is that Contents alone will get us about 20 minutes down. No, before someone wants to yell at me - apt-ftparchive can t be changed as much to make this possible and keep using it. Not in the way the generate option works. It has the disadvantage that it scans the files after they are installed in their pool/ location and stores that in its own database . This approach has to negative points:
  • first, it is using another database (BerkeleyDB). We do have one database already, projectb, thank you.
  • second, and more important, the files only end up in pool/ on dinstall time. Which means the whole scanning is done during dinstall. Which eats time. The new way will surely use the same amount of cpu time in total - but it will spread it over the whole day. 4 runs each hour. Not 4 runs each day. And during dinstall it will boil down to one sql query per installed package moving data from a pending table into the real contents table. Which is a cheap operation.

The title says some more, so here is some more: We aren t only working on what I wrote above. There is also work on changing our database access. Historically dak used the pg module to do database work. While the module itself does work, the way its used isn t really the best one. Way too much groundwork everywhere. Not nearly as much of the nice things used people say python could have. So another largish work area is getting rid of pg. Migrating to psycopg2. And putting a proper OO class around it, which in the end hopefully hides those dark details from the application. And to achieve even more sanity, we (well, honestly, Mark) are looking into SQL Alchemy usage. (We also considered storm from Canonical, but that sucks when you take a look at its documentation. (Which documentation?). SQLA won there easily.) While I m ranting: WTF are people neglecting their docs that much? Ever tried looking at the documentation for psycopg2? Forget it. No, a db api compliance test suite is NOT documentation. If there would be any better python module to connect to postgres, I would veto the usage of psycopg2, but there doesn t seem to be one. Sucks.

Gustavo Noronha Silva: WebKitGTK+ 1.1.3 released! =D

No, you re not reading it wrong but what about 1.1.2? , you ask. Well, we made a small mistake with the soversion there (if mistakes regarding soversion are ever small, that is =/), so we had to quickly release a fixed up version before packages start showing up for distributions with an incorrect library soname. Apologies. With this release we have a shiny new website at http://webkitgtk.org/, hosted by Igalia and designed by Christian Dywan, who s one of the contributors to WebKitGTK+ s code. This new release sports many interesting features and fixes. You may remember me talking about the download support initially contributed by Collabora, which I was fixing up and pushing for inclusion. Well, it is now available, and already implemented in Epiphany 2.27.0. Christian Dywan tells me he won t let Midori stay behind Epiphany on this one, so expect support for downloading correctly integrated in Midori as well. Some more pet peeves got fixed with this release, such as scrolling with keys such as space bar, home, end, not behaving the way people expect. We also found more improvements which are in order for libsoup, and we ll be pushing them, even though we have added small workarounds to WebKitGTK+ itself for the time being. We have added proper logging support for our port, providing a WEBKIT_BUILD environment variable. Documentation on how to use this will follow soonish, but for now you can look at the LoggingGTK.cpp file to know what values you can add to that variable. Also notice that only debug builds use logging to its full extent! WebKitGTK+ 1.1.1 has now hit Debian experimental, by the way, and I plan to have 1.1.3 uploaded early this week. An epiphany-webkit package based on 2.27 is in the works, and should be in soon, too. There seems to be lots of interest in having a PPA for Ubuntu, as well, so we may see that happening soonish. We plan to get more testing this way, and be able to uncover and fix more bugs, so that we can get a rock solid release ready in time for GNOME 2.28.

Next.

Previous.