Search Results: "reg"

3 March 2010

David Welton: Nickles, dimes, pennies, and Italian regulations

I have recently gone about opening a "Partita IVA" ( http://it.wikipedia.org/wiki/Partita_IVA ) so I can act as an independant consultant here. Like everything here, it's a pain in the neck, but opening it wasn't all that bad, compared to other close encounters of the bureaucratic kind that I've had. When it came time to send out my first bill, of course I had to get the accountant to help me put it together (simply sending a bill with the amount to be paid would be way too easy). The crowning touch, though, was that I had to go to the "tabaccheria" and purchase a 1.81 (one Euro, eight-one cents) "marca da bollo" ( http://en.wikipedia.org/wiki/Italian_revenue_stamp ) to affix to the aforementioned bill. This is only necessary, however, in cases where the bill exceeds 77.47 (seventy-seven Euro, fourty-seven cents). The end result was that between asking the accountant for help, going over to the store to get the stamp, and so on, I probably wasted in excess of a half an hour of my life for something that really isn't that complicated. Who dreams this bullshit up, anyway?

Alexander Reichle-Schmehl: [CeBIT] Yes, we still have free tickets.

But speaking of that I must confess, that by mistake I deleted one of the mails asking for a such a free ticket, instead of replying. I'm very sorry. So if you come from the Netherlands, asked me for a ticket, and haven't got an answer, yet, please use one of the following links: I hope, one of the links will work long enough, till the intended recipient reads this ;)

MJ Ray: Paypal and Ethical Business

DoctorMO is calling Paypal the Pocketing Police after this Paypal [...] decided we were scammers and took our money comment by Daniel Stone during the Xorg foundation election discussions. Our co-op has avoided Paypal for a number of years for two reasons:
  1. Paypal didn t recognise UK company registration numbers that contain letters (like ours) for years after they first occurred, so we couldn t register as a seller;
  2. the terms and conditions are very unequal, there are shedloads of complaints like paypalsucks.com and I don t believe they re all fiction.
We ve not boycotted it yet because there are two of our current suppliers who are very expensive for us to pay by international bank transfer, accept Paypal and don t offer much alternative. I think I ll go ask them again. At least one of them should be sympathetic to Xorg.

1 March 2010

Erich Schubert: Geo-Temporal visualization

I've been playing around a bit with Geo-Temporal visualization. Here's a screenshot of an experimental visualization on Google Maps:Geo-Temporal visualizationThe icons are placed on approximate coordinates; multiple events in a small area are aggregated into a single marker. The red sectors correspond to temporal information: to the right is the current day, a full turn corresponds to a duration of 7 days. Typical events listed on this map cover 1 to 4 hours in the evening of a day, resulting in a rather small sectors in typical angles corresponding to the seven days of a week. There are three larger events, one being a weekend workshop in Hamburg (covering the saturday and sunday sectors), a Friday to Saturday in Leipzig and an event incorrectly set for all tuesday in Dresden. M nchen on the other hand seems to take a day off on Saturday (in fact they have a full-week workshop on Lanzarote, on a part of the map not shown ...).While this visualization is quite fancy and can scale to arbitrary time window, I will not be able to add it to the public version of this map (which can be tried out on http://swing.vitavonni.de/).The rendering of so many polygons with Google Maps is just way to slow for all the browsers I tried. Maybe I could use cached png images instead and traditional overlays to improve performance.For some visualizations, it would also make sense to turn the sectors into a spiral, for example where the angle corresponds to the day of the month and the distance from the center corresponds to the month.

Alexander Reichle-Schmehl: [CeBIT] Free tickets for CeBIT

Sorry, I didn't had the time to update RC Bug statistics last week, and will probably also not be able this week, as I'll be quite busy, as CeBIT is about to start tomorrow, and I haven't written a script to create the statistics, yet. While we are talking about CeBIT, you might already know, that Debian will again be present there. This as partner of Univention, a German company using Debian as base for its own distribution. I would like to thank them very much for their short hand acceptance of us at their booth. If you intend to visit us (Hall 2, stand B36) and still have not ticket, feel free to drop me an E-Mail. We got some free tickets and I'll try to send you the link (you'll need to register at the CeBIT website and print your ticket yourself).

Gregor Herrmann: RC bugs 2010/07, 2010/08

not many closed RC bugs in the last two weeks. it seems we're running out of easy-enough-for-me bugs does this mean the freeze is near? :)

28 February 2010

Joachim Breitner: Exploiting sharing in arbtt

My automatic rule-based time tracker (arbtt), which is written in Haskell, collects every minute a data sample consisting mainly of the list of currently open windows (window title and program name). Naturally, this log grows rather large. Since October of last year, I collected 70,000 samples. I already went from a text-based file format to a binary format using Data.Binary, which gave a big performance boost.
But by now, I was afraid that this is not enough. My log file is now 30MB large. Looking at the memory graph of gnome-panel, it is taking up more than half of my memory. When running arbtt-stats, the Haskell run time system reports 569 MB total memory in use and the command finishes after 28.5 seconds. Naturally, the log file is highly redundant: Compressing it with bzip2 shrinks it to 1.6MB. But as I would like to preserve the ability to just append samples at the end, without having to read the file, I chose not just to add bzip2 or gzip compression. Rather, I am now exploiting a very obvious redundancy: Two adjacent samples usually list exactly the same windows, and a focus change only changes a flag. So now, when storing a string that is part of a sample, it will check if this string was already present in the previous sample and, in this case, just store the number of that string (one byte). Only if the string was not present it will write a zero byte and then the string. When reading the sample, the process is reversed. This greatly reduces the file size: It is down to 6.2MB. It also improves the memory consumption, due to Haskell s abilities with regard to sharing: When a reference to a string in a previous sample is read, then only one instance of this string is in memory, even if it occurs several times in the log. This brings the memory consumption down to 264 MB and the runtime to 17 seconds. I released the changes as version 0.4.5.1 to Hackage, Debian and as a Windows installer. The log file is not automatically converted, but new samples will be written in the compressed format. If you want to convert your whole file, you have to stop arbtt-capture, run arbtt-recover, and then move the hopefully noticeable smaller ~/.arbtt/capture.log.recovered to ~/.arbtt/capture.log.
The required code changes were not too big. I somewhat isolated the relevant code in the Data.Binary.StringRef module. Unfortunately, I have to use OverlappingInstances to be able to provide the special instance for String is there a cleaner way (besides the trick used for the Show class)?

Steve Kemp: Fire and wind come from the sky, from the gods of the sky.

Recently I was flirting with the idea of creating an online game, but I got distracted by wondering how to make the back-end more flexible. To communicate the state of the game to N connected clients I figured I needed some kind of server which would accept "join"/"quit" requests and then make changes available. To that end I came up with the idea that a client would make requests via HTTP such as:
http://example.com/server/game/chess/join
This would regard the originating client as part of a new chess game, for example, and return a UID identifying the "game channel".
http://example.com/server/changes/1-2-3-4
This will retrieve a list of all events which had occurred in the game which had not already been sent. (Here 1-2-3-4 is obviously the UID previously allocated.)
http://example.com/server/submit/1-2-3-4/move
This would submit the move "move" to the server.
After mulling this over for a while it seemed like a great reusable solution, I'd make an initial "join" request, then repeated polling with the allocated UID would allow game moves to be observed. All using JSON over HTTP as the transport. It was only this morning that I realised I'd have saved a lot of time if I'd just proxied requests to a private IRC server, as the functionality is essentially the same. Still I'm sure this pattern of "join"/"poll"/"quit" could be useful for a lot of dynamic websites, even in the non-gaming world. So although the idea was mostly shelved it was an interesting thing to have experimented with. D'oh. ObFilm: Conan The Barbarian

Siegfried Gevatter: Zeitgeist Data-Source Registry

This post is about an upcoming feature in Zeitgeist 0.3.3 and is so far only available in checkouts from trunk or our PPA. It is expected to be released within the next weeks. Some weeks ago I implemented a new feature in Zeitgeist and I figured I d drop some lines about it. I m talking about a data-source registry. You may be wondering, what the hell is that even, a data-source? . So Zeitgeist is a database, a global event log, but it doesn t do any magic indexing or monitoring by itself; the information it logs needs to come from somewhere be it applications sending it to Zeitgeist themselves, daemons, plugins for applications, etc. Any such entity is called a data-source . Having a register of all data-sources interacting with Zeitgeist provides some benefits, like for example:
Screenshot of tools/gtk/zeitgeist-data-sources-gtk.py

Prototype of a data-source management user-interface

More details When they register, data-sources will need to provide the following information: an unique ID, a name (may be localized), a description (may be localized) and optionally a template specifying what sort of events it logs. Additionally, the last timestamp the data-source was seen by Zeitgeist, whether it is running right now and whether it is enabled will also be available. It is important to note that registration is not compulsory; while it is highly encouraged for data-sources to use it, is it still possible to anonymously insert information into Zeitgeist (for example from a shell script). The event template is also only informational, and will not be enforced by Zeitgeist at this time. Avoiding duplicates from GTK Recently Used You may know that zeitgeist-datahub provides basic support for applications which have no direct Zeitgeist support but do use GTK s RecentManager, which is not as detailed as we would like, but it is better than nothing. However, until now we had a problem: when applications had support for both, GTK s Recently Used and Zeitgeist (be it native or as an extension), it was possible for duplicate events to be inserted or other sorts of conflicts between both data-sources. Now that we have the information from the registry available, we ve been able to solve this modifying our Recently Used data-source to ignore any events concerning applications which already have another data-source logging the same types of events.

In case you don t care at all about what I m talking here and you just want to see fancy interfaces, go check this out. Related posts:
  1. Zeitgeist is out!
  2. Introduction to Zeitgeist 0.2 s API
  3. Zeitgeist Hackfest (II)

No comments
Siegfried-Angel Gevatter Pujals, 2010. Permalink License Post tags: , ,

Ben Hutchings: This season I have mostly been building kernels

As some people noticed, a driver update to support a major hardware release in my day job and a long series of trivial patches motivated by Debian kernel work combined to make me joint most prolific change author for Linux 2.6.33. This was a fluke, and 2.6.34 is likely to be fairly quiet for me. Team work Meanwhile the kernel team is still working hard on fixing bugs in Linux 2.6.32. As previously announced, this kernel version will be used in both Debian 6.0 'squeeze' and Ubuntu 10.04 LTS. It is also known to be the kernel version for RHEL 6 though this has not been officially announced. If you find a serious bug that was fixed in 2.6.33 or later, please ask the author to send the fix to stable@kernel.org so that it will be included in all these distributions. Note that this happens automatically for commits with the line 'Cc: stable@kernel.org' in their description. We are also continuing to backport new drivers and new hardware support in existing drivers into Debian 5.0 'lenny' (stable). Missing support for common hardware is considered an important bug and suitable for stable updates. However, if there were major changes to a driver before those that added new hardware support, we may be unable to produce a backport. We are not able to carry out comprehensive hardware testing and do not want to risk a regression existing hardware support. libata transition - call for testing Finally, a major change I have been working on is the transition from the old IDE drivers for PATA controllers to new drivers based on libata. The old IDE subsystem is no longer developed and some drivers do not properly support all the hardware that their libata-based counterparts do. However, while the IDE drivers generate device names beginning with 'hd', libata presents PATA devices as SCSI devices and generates device names beginning with 'sd'. In a system that already has other SCSI or SCSI-like disks, names may change somewhat unpredictably. Similar problems exist for PATA CD/DVD and tape devices. So, while the transition doesn't involve any kernel hacking, it does require a complex upgrade process. Any configuration files that refer to IDE or SCSI device names may need to be changed. It is not enough to switch to only SCSI device names, since we cannot know what they are in advance and the configuration files should continue to work with kernel versions from before and after the transition. In the case of disks we can normally use the partition label or UUID: many tools understand the LABEL= and UUID= syntax, and for others we can refer to the symlinks under /dev/disk created by udev. In the case of CD/DVD devices, we can use the aliases /dev/cdrom etc. created by udev. In the case of tape devices, however, you're on your own. In experimental, kernel image packages depend on a new package linux-base which implements this transition (from 2.6.33-1~experimental.2; the previous version was broken). The postinst script will prompt you to make changes automatically or manually. It can convert most bootloader configuration files, /etc/fstab, the udev CD aliases configuration and the initramfs-tools resume partition. It can also label partitions that don't have a label or UUID. Please do test it and verify that its changes are correct. All changed configuration files are backed up with a suffix of '.old' (or '^old' in one case).

Russ Allbery: Review: Coders at Work

Review: Coders at Work, by Peter Seibel
Publisher: Apress
Copyright: 2009
ISBN: 1-4302-1948-3
Format: Trade paperback
Pages: 601
Coders at Work is a collection of edited interviews by Peter Seibel (probably best known previously for his book Practical Common Lisp) of an eclectic and excellent collection of fifteen programmers. It opens with an interview with Jamie Zawinski (one of the original Netscape developers) and closes with Donald Knuth. In between, the interview subjects range in programmer generations from Fran Allen (who started at IBM in 1957) and Bernie Cosell (one of the original ARPANET developers) to Brad Fitzpatrick (LiveJournal founder and original developer). Techniques and preferences also range widely, including two people involved in JavaScript development and standardization (Brendan Eich and Douglas Crockford), a functional programming language designer and developer (Simon Peyton Jones), language designers and standardizers such as Guy Steele, and people like Dan Ingalls who have a different experimental approach to programming than the normal application development focus. All of the interviewees are asked roughly the same basic questions, but each discussion goes in different directions. Seibel does an excellent job letting the interview subjects shape the discussion. Two things immediately stood out for me about this book. First, it's huge, and that's not padding. There are just over 600 pages of content here, much of it fascinating. The discussions Seibel has are broad-ranging, covering topics from the best way to learn programming to history and anecdotes of the field. There's some discussion of technique, but primarily at the level of basic approaches and mindset. One typical question is how each programmer organizes their approach to reading code that isn't familiar with them. Each interviewee is also asked for book recommendations, for their debugging techniques, for their opinions on proving code correct, and how they design code. The participants are so different in their backgrounds and approaches that these conversations go in fifteen different directions. This is one of the most compelling and engrossing non-fiction books I've read. Second, the selection of interview subjects, while full of well-known names in the field, is not the usual suspects. While I'm interested in the opinions of people like Larry Wall and Guido van Rossum, I've already heard quite a lot about how they think about programming. That's material that Coders at Work doesn't need to cover, and it doesn't. Many of the interview subjects here are people I'd heard of only vaguely or not at all prior to this book, often because they work in an area of programming that I'm not yet personally familiar with. Those who I had heard of, such as L. Peter Deutsch, I often knew in only one context (Ghostscript in that case) and was unfamiliar with the rest of their work. This gives the book a great exploratory feel and a lot of originality. There is so much good material here that it's hard to give a capsule review. This is a book I'm highly likely to re-read, taking more detailed notes. There's entertaining snarking from Jamie Zawinski and Brendan Eich, fascinating history of the field (including in gender balance) from Fran Allen, and an intriguing interview with Joe Armstrong (creator of Erlang), who seems to have a far different attitude towards languages and libraries than the other interviewees. Every interview is full of gems, bits of insight that I now want to research or play with. A couple of examples come to mind, just to provide a feel of the sort of insights I took out of the book. In the interview with Joshua Bloch, who does a lot of work on library APIs, he mentions that empathy is one of the most important skills for designing an API. You have to be able to put yourself in the shoes of the programmer who's going to use the API and understand how it will feel to them. This came up in the context of a discussion about different types of programmers, and how programmers can be good at different things; the one who can do low-level deep optimization may not have that sense of empathy. Another example: Bernie Cosell talked about how he did debugging, and how he got a reputation for being a fantastic debugger who was able to fix just about anything. He confessed that he often reached a portion of the code that he didn't understand, that seemed too complex and tricky for what it was attempting to accomplish, and rather than trace through it and try to understand it, he just rewrote it. And after rewriting, the bug was often gone. It wasn't really debugging, but at the same time it's close to the more recent concept of refactoring. Several of the interview subjects commented on a subjective feeling of complexity and how when it gets too high that's a warning sign that code may need to be rethought and rewritten. A third example: I was fascinated by the number of interviewees who said that they used printf, assert, and eyeballs to debug rather than using any more advanced debugging tools. The former Lisp developers would often bemoan the primitiveness of tools like gdb, but many of them found that print statements and thinking hard about the code were usually all that's needed. (There was also a lot of discussion about test suites and test-driven development.) The general consensus was that concurrency problems were the hardest to debug; they made up a disproportional number of the responses to Seibel's question about the hardest bug the programmer ever had to track down. I could go on giving similar examples at great length, but apart from the specific bits of wisdom, the strongest impact this book made on me was emotional. Coders at Work is full of people who love programming and love software, and that enthusiasm, both in general and for specific tools and ideas, comes through very clearly. I found it inspiring. I realized while reading this book, and I suspect I'm not alone among programmers in this, that I largely stopped learning how to program a few years back and have been reusing skills that I already have. Reading Coders at Work gave me a strong push towards finding ways to start learning, experimenting, and trying new techniques again. It also filled me with enthusiasm for the process of programming, which immediately helped my productivity on my own coding projects. This is obviously a book whose primary target audience is practicing programmers, and while it doesn't go too far into language theory, I was relying on remembered terms and structure from my master's degree for a few of the interviews. I think it's approachable for anyone who has a working background in programming and a few languages or a CS degree, but it might be a stretch for someone new to the field. But even someone without any programming knowledge at all would get a lot out of the anecdotes and snapshots of the history of software development. Coders at Work is also full of jumping-off points for some additional research on Google or additional reading in other recommended books. I only have one complaint, which I have to mention in passing: for such a large book full of interesting ideas and book recommendations, the index is wholly inadequate. I tried looking up five or six things in it, including the source of some of the book recommendations that are collected in an appendix, and I struck out every time. It's very hard to find something again in 600 pages, and more attention paid to the index would have been greatly appreciated. But, despite that, for people within the target audience, I cannot recommend this book too highly. Not only was it full of useful information, at the level of programming above the code details that's often the hardest to talk about, but it's consistently entertaining and emotionally invigorating and inspiring. It made the rounds of tech blogs when it was first released, to nearly universal approval, and I can only echo that. If you're a practicing programmer, I don't think you'll regret spending a few weeks reading and thinking about this book. Rating: 10 out of 10

Cyril Brulebois: Where have you been

Time for a little end-of-the-month looking back. (Looking back o-ver my shoul-der ) What about X11-based graphical installer? After the one-week rush early this month, a summary of my findings was posted on debian-boot@, including udebs, patches, and source packages, labelled as v1. People seemed to like the idea, and I received a bunch of comments to fix or improve various things. It took some time to implement everything in a satisfying (at least to me) manner, but I reached a point where I was confident enough to publish a v2 set of udebs, patches, and source packages. That was also announced on debian-boot@, and then re-announced once I ve been able to rebuild the image with speakup enabled again. Hopefully, that ll be (more or less) the final plan, and d-i folks should either give us a green or red light based on that v2 set. Some details will have to be ironed out (some items were mentioned in both v1 and v2 summaries), but they shouldn t prevent us from starting adding the needed udebs; or at least not too long. Speaking of X11, xserver-xorg-video-intel is buggy as hell! Basically, yes, and that s known. Many bugs were due to kernel issues, and regressions got fixed in the series of 2.6.32.y stable updates. Usually, upgrading to at least 2.6.32-3-$arch (from linux-2.6 s revision 2.6.32-9) helps, as well as running latest libdrm, xserver-xorg-core, and mesa from sid. Trying with some 2.6.33-ish kernels from experimental would be nice as well. You re of course very welcome to keep us posted through the bugs you opened already, closing them if appropriate. And before reporting more bugs, please make sure you re running recent versions of all those components. That should help people walking the list of remaining bugs to deal with them more efficiently. A very annoying bug which can still be experienced with an up-to-date sid environment is described in freedesktop s #26723.

26 February 2010

C.J. Adams-Collier: Connecting to MySQL with ODBC on Mono

We had a visitor on #mono today who needed help with his homework. It seems that Reggie is happy to have forgotten everything about using ODBC to connect to MySQL. I was curious and feeling helpful, so I figured it out. Install the MySQL ODBC driver $ sudo apt-get install libmyodbc You can also grab the package directly from MySQL Configure the MySQL ODBC driver ODBC looks in /etc/odbcinst.ini for driver configuration. In order to let it know about the MySQL ODBC libraries, append the following to your /etc/odbcinst.ini file:
[MySQL]
Description	= MySQL driver
Driver	= /usr/lib/odbc/libmyodbc.so
Setup		= /usr/lib/odbc/libodbcmyS.so
CPTimeout	=
CPReuse	=
Configure your DSN If you expect that you will be using this database connection often, you may want to create a short name for it, so you don t have to enter all of the parameters every time you want to connect. ODBC uses something called DSNs (Data Source Names, if I recall correctly) to make it easier on the user. If you want to create a DSN, append something like the following to your /etc/odbc.ini file:
[myodbc3]
Driver       = MySQL
Description  = MySQL ODBC 3.51 Driver DSN
Server       = mysql
Port         =
User         = testuser
Password     = password
Database     = test
Option       = 3
Socket       =
You will also need to update the ODBC Data Sources list near the top of the file to mention the new DSN:
[ODBC Data Sources]
myodbc3     = MySQL ODBC 3.51 Driver DSN
C ODBC connection example Here is some example code to get you connected:
using System;
using System.Data;
using System.Data.Odbc;
class ODBCTest  
  public static void Main(String[] args)  
    // Connection string using explicit parameters
    string ConStr = String.Format(
      "DRIVER= 0 ;SERVER= 1 ;DATABASE= 2 ;UID= 3 ;PWD= 4 ",
      " MySQL ","mysql","test","testuser","password" );
    // Connection string using DSN
//  string ConStr = String.Format("DRIVER= 0 ;DSN= 1 ",
//                                " MySQL ","myodbc3");                       
    //Create the connection object
    var OdbcCon = new OdbcConnection( ConStr );
    try  
      Console.Write("Opening connection... ");
      //open the database connection
      if (OdbcCon.State == ConnectionState.Closed)
        OdbcCon.Open();
      Console.WriteLine("connection opened!");
      catch (OdbcException Ex)  
      Console.WriteLine(Ex.Message);
      finally  
      //close the database connection
      OdbcCon.Close();
     
   
 

Andrew McMillan: DAViCal 0.9.8.3 - A return to stability

After a whole bunch of drastic changes, lots of bugfixes, rewriting and refactoring, I released DAViCal 0.9.8 on Christmas day last year. I didn't release it very publicly, because I knew it sucked significantly. In an increasingly fast turnaround I've subsequently released 0.9.8.1 to a somewhat wider audience while I was at the recent Calendaring and Scheduling Consortium meeting in Costa Mesa at the beginning of the month. Earlier this week I released 0.9.8.2 to the more interested of the DAViCal userbase. So finally, yesterday, I released DAViCal 0.9.8.3 to fix the few significant problems that were left with that, and this is the release that I'm telling everyone about, because I believe it should be a good stable platform to people who want to upgrade their production DAViCal servers, or who have been hanging back from using DAViCal until the platform was a little more stable.
<!--break-->
This release marks some significant departures from previous DAViCal. I've decided to walk away from some of the more ancient legacy software I tried to work with in the past (PHP4 & PostgreSQL 7.x), to move to support the most ancient-but-not-superseded legacy Linux release I know of, which is CentOS / RHEL, so DAViCal now has a minimum requirement of PHP 5.1 & PostgreSQL 8.1. The biggest changes to DAViCal are under the covers. It is server software, after all, so the largest changes often are not visible on the surface. What has changed is that the architecture for constructing responses as been refactored into a core object which is used to access any DAV resource in the system. This greatly simplifies the general coding and reduces a fair bit of code duplication which had been happening. Another long overdue change is to get rid of the old arcane & obtuse permissions model, replacing it with something which will be radically faster in installations with more than a few hundred users, as well as being more consistent, easier for people to control, and directly in alignment with the DAV ACL specification. Some of the work here was assisted by NZ Registry Services who gave me a Macbook to help with my compatibility testing. Not all of the changes are under the covers though. The new DAViCal also has a thoroughly revised administrative interface, and over the last couple of releases I've gone through the system trying to uncover all the places which were not properly localisable, too, so if you see DAViCal displaying strings in a language you didn't configure it for, it should be a fixable thing. I'd like to particularly thank Masahiro Mikami for turning around some Japanese translations very quickly which enabled me to quickly and visually see what was not properly translatable. There's still more work to do (there's always more work to do) but a fully translated DAViCal should, I hope, be quite usable by non-English speakers now. The new DAViCal also supports some rather significant extra functionality beyond the CalDAV standard, in particular we can thank Rob 'Cave' Ostensen for providing an implementation of pub/sub event change notifications. This version also supports draft 2 of the proposed WebDAV synchronisation standard - that's still under development, but we expect to track pretty close to released versions of that. Of course with all of this work there are some areas that didn't get changed. I didn't manage to finish an implementation of the scheduling extensions draft, much as I would have liked, but that is going to become very much a focus in the coming couple of months, and I'll be calling it "1.0" when things settle down after we get that done. Other things I will be working on include a ticketing system for providing targeted, controlled access to a specific collection or event, and making a start on CardDAV support for addressbook storage. DAViCal seems to be fitting a need for people, and I know there are several thousand installations around the world, even if I'm not sure where they all are. I know some people are running DAViCal on their 8-way server, where I've no doubt it gurgles along pretty happily, and that there are some people running it on their OpenWRT installation, with some tiny amount of resources - just enough for a family calendar. Traffic on the wiki has increased to several hundred thousand hits per month, perhaps three times what it was a year ago, and I hope that I can continue to provide a valuable and useful piece of infrastructure for that little calendaring corner of your organisation. What heartens me the most in this ongoing experience is the nascent community that appears to be forming around my software, with people writing 'tip sheets' and helping to answer questions on the IRC channel and mailing list. These small contributions made by many people - people whom I have never met, for the most part - are enabling me to put more time into feature development and expansion, and that's what I really love.

Dirk Eddelbuettel: R and Sudoku solvers: Plus ca change...

Christian Robert blogged about a particularly heavy-handed solution to last Sunday's Sudoku puzzle in Le Monde. That had my symapthy as I like evolutionary computing methods, and his chart is rather pretty. From there, this spread on to the REvolutions blogs where David Smith riffed on it, and showed the acual puzzle. That didn't stop things as Christian blogged once more about it, this time welcoming his post-doc Robin Ryder who posts a heavy analysis on all this that is a little much for me at this time of day. But what everybody seems to be forgetting is that R has had a Sudoku solver for years, thanks to the sudoku package by David Brahm and Greg Snow which was first posted four years ago. What comes around, goes around. With that, and about one minute of Emacs editing to get the Le Monde puzzle into the required ascii-art form, all we need to do is this:
R> library(sudoku)
R> s <- readSudoku("/tmp/sudoku.txt")
R> s
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
 [1,]    8    0    0    0    0    1    2    0    0
 [2,]    0    7    5    0    0    0    0    0    0
 [3,]    0    0    0    0    5    0    0    6    4
 [4,]    0    0    7    0    0    0    0    0    6
 [5,]    9    0    0    7    0    0    0    0    0
 [6,]    5    2    0    0    0    9    0    4    7
 [7,]    2    3    1    0    0    0    0    0    0
 [8,]    0    0    6    0    2    0    1    0    9
 [9,]    0    0    0    0    0    0    0    0    0
R> system.time(solveSudoku(s))
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
 [1,]    8    4    9    6    7    1    2    5    3
 [2,]    6    7    5    2    4    3    9    1    8
 [3,]    3    1    2    9    5    8    7    6    4
 [4,]    1    8    7    4    3    2    5    9    6
 [5,]    9    6    4    7    8    5    3    2    1
 [6,]    5    2    3    1    6    9    8    4    7
 [7,]    2    3    1    8    9    4    6    7    5
 [8,]    4    5    6    3    2    7    1    8    9
 [9,]    7    9    8    5    1    6    4    3    2
   user  system elapsed
  5.288   0.004   5.951
R>
That took all of five seconds while my computer was also compiling a particularly resource-hungry C++ package.... Just in case we needed another illustration that it is hard to navigate the riches and wonders that is CRAN...

25 February 2010

Adnan Hodzic: DebConf11; n Banja Luka wiki

Almost all of wiki contents got updated, so please take your time to review it all, once again Heh n was more of a symbolic meaning, since in meantime we solved our bids weakest links and pretty much got it mature and at the stage we were aiming it to be. We ll still make some minor changes to it until the final decision date (in 47 hours) but this is it really Party So without further ado, let me introduce you to our n wiki Announce Since besides changing pretty much the whole wiki we have also added (important) new pages for: Banja Luka and Republika Srpska We have added a new pages to bring Banja Luka and Republika Srpska closer to every potential visitor. Full Government Support Today we have received the most important information when it comes to our bid. Today government council sitting was done, where one of the topics was full financial support in case Banja Luka is host to DebConf11. Proposition was accepted! Dance To remind you, we will get free venue building wheter it s Government Building or Banski Dvori , besides that we re getting them to cover basically all of the costs needed for the conference, and besides that we re getting 5 additional members to our local team (highly capable and educated govt. officials) which even includes city Mayor. Early tomorrow we ll get scan/fax of this memorandum from Chief of Cabinet along with the local team names which will all together be added to this very wiki page. Local Team We have almost assembled our local team/supporters team whose members were wisely and thoroughly selected. Since before anything this is Balkans Debconf, and a new breakthrough to a region that has ~55 million inhabitants, we have made connections all over Balkans, especially from Serbia and Belgrade. This page might might suffer the biggest changes in next few hours, especially since we still need to add people on behalf of ETF (Faculty of Electrical Engineering) and Goverment itself. Accommodation
We have made a separate page for accommodation as well, since we have gathered a whole bunch of new information that just required us to make a new page. Internet We have made a major breakthrough in Network connectivity and technicalities as well! SARNET Academic and Research Network of Republic of Srpska has offered us with 1GB link free as in beer! Please see their Letter of Support/Memorandum, besides that we have Mtel and BHTelecom as our backup options. Besides all that, as I previously noted we made changes throughout wiki page, we have added new contents to fun and free time, as well as to the arrival. Tomorrow with last pages to our local team + govt. support memorandum being added to our wiki we are ready for the DebConf11 final decision! Remainder, decision is being made in 47 hours on #debconf-team on irc.debian.org; please come and support us for being host to DebConf11! Fingers Crossed Bosnia and Herzegovina FTW! Victory http://wiki.debconf.org/wiki/DebConf11/BanjaLuka

Russell Coker: Terms of Abuse for Minority Groups

Due to the comments on my blog post about Divisive Behavior [1] I ve been considering the issue of terms of abuse of minority groups a topic of which racial abuse is only one aspect. It seems that there are many discussions about which terms are offensive and when they are offensive, most of which are very misguided. Solving this problem would be an almost impossible task, but I have some ideas which may help to improve the situation. I would appreciate any pointers to better ideas in comments or in blog posts that are inspired by this one. One common mistake seems to be the idea that there are global objective criteria by which a statement can be proven to not be offensive. In any language that is constantly evolving (IE any language that s not dead) this seems impossible. It is particularly difficult with a language like English which is widely used in different countries and cultures. If a member of a minority group claims that you have just offended them then it seems most reasonable to have the default assumption be that you have said or done something which is actually offensive. In such a situation an immediate apology for the misunderstanding should be well accepted, but a debate about who s cultural standards should be used for determining what is offensive probably won t get a positive reception. It seems extremely difficult (if not impossible) for a member of the majority group to properly understand what members of a minority group experience. So therefore attempts to understand why certain terms are offensive are likely to be doomed to failure. Sometimes if a certain word is used and then a group of people immediately get really angry you just have to accept the fact that it s not a good word to use. One common example of this is words that are associated with violence if someone associates a particular term with a threat of serious injury or death then you won t be able to convince them that it s not a big deal, but there are more subtle things of a similar nature. It s worth trying to understand people and these things can be productively discussed between friends. But a discussion of such things is not viable during the course of a debate. If involved in a debate with someone you really dislike it doesn t seem like a good strategy to start a meta-discussion about whether they should regard one of your statements as being unreasonably offensive (regarding minority group status) as opposed to the level of offense that is acceptable in debate (something like that s the most ridiculous argument I ve ever heard may offend the recipient but is not inherently unreasonable). Words tend to have multiple meanings. Claiming that your intent was significantly different from the way your message was interpreted probably isn t going to work well unless accompanied by an apology. Even I m sorry you were offended (which is not the best apology) will probably do. Finally I m sure that anyone who does Google searches dating back to 2005 (as an arbitrary year that references my previous post) can find examples of me doing things that go against some of these suggestions. I ve learned things since then, it s an ongoing process.

23 February 2010

Russell Coker: Divisive Behavior

Past Sins Sam Varghese wrote an article about Matthew Garrett s LCA talk The Linux community: what is it and how to be a part of it [1]. In page 2 Sam quotes Martin Krafft as asking about how Matthew s behavior had changed between 2004 and the present, Sam cites some references for Matthew s actions in 2005 to demonstrate. I think that this raises the issue of how far back it is reasonable to go in search of evidence of past behavior, something that I think is far more important than the specific details of what Matthew said on mailing lists many years ago and whether he now regrets such email. If someone did something that you consider to be wrong yesterday and did the same thing five years ago you might consider it to be evidence of a pattern of behavior. If someone s statements today don t match their actions yesterday then you should consider it to be evidence of hypocrisy. But if someone did something five years ago which doesn t match their current statements then in many situations it seems more reasonable to consider it as evidence that they have changed their mind. Then of course there is the significance of what was done. Flaming some people excessively on some mailing lists is something that can be easily forgiven and forgotten if Google doesn t keep bringing it up. But as a counter-example I don t think that Hans Reiser will be welcome in any part of the Linux community when he gets out of jail. For the development of the Linux community (and society in general) I think it s best to not tie people to their past minor mistakes. While it is nice when someone apologises for their past actions, the practical benefits of someone just quietly improving their behavior are almost identical. A particular corner case in this regard is the actions of young people, anyone who was born after about 1980 will have had great access to electronic media for their entire life and will have left a trail. Most people do a variety of silly things when they were young, the older members of the Linux community were fortunate enough not to have electronic records remaining where Google could find them. Back to Matthew, I think that if he is to be criticised about such things then evidence that is much more recent than 2005 needs to be used. Cultural Differences Sam quotes Matthew as claiming that the Linux community was largely a Western, English-speaking one, those who participated in it necessarily had to adapt to the norms of this group . I don t believe that there is a single Linux community. There are a number of different communities that are formed around free software, which have significant amounts of overlap. I don t believe that there s any reason why a Chinese or Indian Linux mailing list should conform to the same standards as those of an American list. But there will be a trend towards meme propagation through people who are associated with the Linux communities in multiple countries every time you meet Linux people in another country you are helping to reduce the cultural differences in the Linux community. Someone from China or India who joins a LUG in Australia will have to adapt to some of the norms of Australian behavior in the same way as an Australian who migrates to China or India would have to adapt to some local norms. On page 4 of the discussion Matthew disagrees with Sam s interpretation [2], maybe Matthew s opinions on this matter are closer to mine than the way Sam describes them. Is Division Inherently Bad? I believe that the word divisive is overused. The only way to avoid division is to have everyone agree with the majority, but sometimes the minority will be right. Note that I am using the word minority to refer to any group of people who happen to disagree with the majority, among other things that includes people who vote for a political party that isn t one of the two biggest ones. An entirely separate issue is that of the treatment of minority groups , one of the most divisive events in history was the US civil war it s good that slavery is outlawed but unfortunate that a war was required to gain that result. On page 4 of the discussion Matthew says to Sam Your writing is influenced by members of the Linux community, and in turn it influences the Linux community. The tone of it is entirely relevant to the behavioural standards of the community [2]. If a community can be easily divided then the real problem probably isn t the person who triggered a particular division. Also there is the issue that even if you could get a general agreement that certain issues shouldn t be discussed in certain ways then with the wide range of cultural attitudes and ages of participants you have to expect someone to raise the issue you don t want raised. Of course it s impossible to objectively determine whether a division is productive or not, so it doesn t seem at all viable to have any expectations regarding outsiders not being divisive. Sometimes you just have to deal with the fact that the Internet contains people who disagree with you. It seems to me that the most divisive issues we face involve people who mostly agree on contentious issues. If someone entirely disagrees with you then it s easy to ignore them (if you even have a conversation with them), but if they are someone that you communicate with and they are almost right in your opinion then there s the potential for a big argument. Probably the best way to minimise division in the community is to have the first people who get involved in a dispute take a Rogerian approach [3]. Failing that a good approach is to respond by writing an essay. When an issue is made popular by services such as Twitter that give little explanation then everyone rushes to the barricades. It seems to me that the unreliability of some blogging platforms is part of the cause of the problem in this regard. I ve just given up on writing comments on Blogger, I m not going to write a good comment only to have it eaten by blogger. There are lots of blogs that have problems which discourage the population from writing anything other than a one-sentence response. The Good that can come from Disputes On page 5 of the discussion there is a comment from Anirudh the Indian student who was criticised by Sam (which ended up inspiring part of Matthew s talk and leading to more disputes) [4]. Here is the start: I am the person who wrote the ill thought-out post that drew criticism eight months ago. There has been some discussion about that, so I wish to say something.

I am very grateful to Sam Varghese. I say this with utmost sincerity. Read the rest, it s educational. I m sure that there are others who have had similar learning experiences but who don t want to write about them. I m sure that there have been many disputes which would appear to the casual observer to have resulted in no good at all, but which would actually have resulted in people learning things and amending their behavior. The issue of Age Car rental companies generally don t do business with men who are less than 25 years old. Life insurance policies don t offer reasonable rates to males between the ages of about 16 and 25. This is because the insurance companies have good statistical data on the results of the typical actions of people at various ages and know that young men tend to be at a high risk of earning a Darwin Award. The same combination of hormones and life experience that makes a young man a danger on the road will also tend to make him get involved in flame-wars on the net. If we could figure out how to influence teenagers into being less anti-social then it would be a great achievement. The current young people will become older and more sensible soon enough but will be replaced by a larger number of young people who will do the same things. As things stand I don t expect the next cohort of young people to learn from Anirudh.

21 February 2010

Guido G nther: Libguestfs: Virtual Machine Image Swiss Army Knife

I've finally updated the libguestfs Debian packages to 1.0.84 getting them back in sync with upstream. Download instructions are on the pkg-libvirt's wiki page. Fetching files from a vm image with guestfish is as simple as:
guestfish --ro -a lenny-base-clone.img -m /dev/debian/root download /etc/passwd /tmp/passwd
After hacking around #561991 by running debirf as root we now do pass the testsuite again. The new version includes fuse support as well as the hivex tools to manipulate windows registries. The source for the Debian package is available at git.debian.org. The next step will be to split out the appliance so we can fetch that one via http and upload libguestfs to contrib.

Steve Kemp: Let go of the handle.

I don't talk about SPAM publicly these days, for reasons that are probably self-explanatory. However this is just insane: Currently at 40+ SPAM mails and rising; all mails addressed to "postmaster@", rather than any past users of the domain. (I can see from http://archive.org that the domain was last active in 2008.) ObSubject: The Goonies

Next.

Previous.