I've previously written about some of the implementation details of runtime PCI power management. One of the key aspects for PCI devices is that the PME line on the device be able to generate a wakeup event. Unfortunately, it turns out that since Windows makes no use of this functionality at present, some vendors have started failing to wire this up. This is problematic because the device itself still announces PME support and will even raise a PME signal when it gets woken up - but it's pretty much screaming as hard as it can and nobody's listening because somebody's replaced the air with cheese.a configuration file cannot be validated if an unknown parameter can t be distinguished from a user typo.This stance is fine for casual user interaction on a stable system: an unknown parameter is most likely an error. And the user must be warned of his error as soon as possible. For a stable distro release, packagers should have the time to provide complete models, so basing upgrade on complete models should be possible (famous last words ?). On the other hand, a lot of configuration upgrades will be done on unstable systems where software evolve quite fast, where models will likely fall behind software evolutions. Another shorcoming of my drawer statement is that it assumes user interaction where erroneous input is more likely. In case of configuration upgrades, there should be no user interaction. And we can assume that the config file to be upgraded was used (and thus validated) by the old version of the software. So unknown parameters should be tolerated and managed as best as possible. Now, the big question is: how ? In all attempts I ve seen in managing upgrades that goes beyond diff3 tools, the configuration is stored as structured data. Sometimes this structure can be infered from the configuration file syntax (shell vars, INI files, YAML, XML), sometimes not (sshd config file). In the latter case, some structural knowledge must be built in the upgrade tool. Currently, Config::Model is designed to bring a complete description of the structure and semantics of a configuration file. This is perceived as bringing too much structural and semantic knowledge ( too semantic ). So the maintenance cost is perceived as too important. That may be right or wrong, but that does not matter. Perception is more important here. So, let s figure out a way to reduce the amount of work required to perform upgrades (you may want to read a little bit more on configuration model creation before going on ) One possibility would be to support configuration models that allow unknown leaves in nodes. Such a model would provide a kind of fallback leaf description. Something like: this parameter is unknown, let s assume it s a simple string value . Let s consider sshd_config example to see how such a behavior would pan out for some upgrade scenarios. sshd model is made of 2 main classes:
I ve been working on this for a few months now; it s taken quite some time because I wanted to do it right and deliver something better than what already existed in the OpenSource world as far as that particular technology was (not) concerned. So here it is:
AirTunes v2 UDP streaming forked-daapd can now do streaming to multiple AirTunes devices (as well as the local soundcard) and can be controlled from Remote (and, ideally, from anything that speaks DACP). I m releasing this early while the paint is still wet and not everything works on the DACP-side of things. Case in point, while playing a song or an album is supported, playing a playlist isn t. There s some work needed on this particular feature, and it ll get there eventually. There have been a couple of other changes in the codebase in recent weeks too; details after the jump. Implementing AirTunes v2 has been quite fun and, in addition to releasing the forked-daapd code today, I ve also taken the time to write down my findings about the protocol so others can experiment with it. This documentation is by no means exhaustive nor complete as far as the protocol goes; if you find out anything I haven t, let me know so I can update this document. Let s review the recent changes in the forked-daapd codebase over the past few weeks. AirTunes v2 You can now use Remote from your iSomething together with your AirTunes devices and forked-daapd to listen to your library. As mentioned above, playing a playlist is not supported; I have a few things to sort out before this can work and I suspect this will bring changes not only to the DACP interface but also to other parts of the code. So, stay tuned. forked-daapd supports synchronized playback to multiple AirTunes devices together with the local soundcard if so desired. You can expect the AirTunes devices to be in sync with each other, but the soundcard will usually run in circles around them. It looks like AirTunes plays sound a bit slower than 44.1 kHz; not a big deal, though, as AirTunes will catch up periodically and the desync, while it can be noticeable, isn t big (ie we re not talking seconds, not even one full second). Make sure your network can handle the load, as streaming to a single AirTunes device requires in excess of 1.6 Mbps (1.8 Mbps is actually closer to the real thing). Local audio output is supported via ALSA and OSS4, although note that the OSS4 code hasn t been very well tested. I intend to test and debug it fully at a later date, but feel free to beat me to it and send patches. Also note that, while there is code for FreeBSD in the player/streaming part of forked-daapd, it doesn t work well at all. The streaming code needs a timer with a higher resolution than kqueue/kevent has to offer, and I haven t found anything as capable as timerfd. So it s there, but it s broken. Read on about FreeBSD support. Metadata scanning Several fixes and enhancements have been made to the filescanner so it picks more and better metadata. Format-specific tagnames have been added to work around ffmpeg s limitations. Using a recent enough ffmpeg version (anything after mid-december 2009) will work best, especially for MP3 files. SQLite concurrency fixes The database code has been reworked to handle concurrency on the database. Issues with locked tables (or the whole database) were noticed pretty easily with big libraries when accessing forked-daapd during the library update after startup. On uniprocessor machines, this was even easier to hit. This, however, comes with new requirements for SQLite3: you ll now need SQLite3 v3.5.0 at least and it must be built with the unlock notify API enabled. Not all distributions ship SQLite3 with the unlock notify API enabled, so you may need to do a rebuild. Debian, for instance, doesn t; this is #579266. A word about FreeBSD support I m giving up on FreeBSD support. The streaming code doesn t work on FreeBSD due to timer issues, and I don t intend to fix it. I also don t intend to invest much time in porting future features to FreeBSD; if I can make it work, then fine, otherwise, too bad. Someone needs to step up if there s interest in having forked-daapd work on FreeBSD.
Based on this experience I am not inclined to trust Lexmark in future, I will not trust any future claims of Linux support that they may make. The above picture of the Lexmark box shows Tux (the Linux logo), it doesn t mean support out of the box as you would hope, but instead means support for old systems with some effort.
Most of my email comes to me via mailing lists. When someone asks a question or
starts a discussion, I used to jump at the chance to be the first
to reply with an answer. I don't want to unsubscribe; often, I know something
that can move the conversation forward or help someone out. But I'm trying to
allocate more time for myself away from computing these days.
So now I let these discussions mature a little before I see them. All mailing list messages
are delivered to a folder called OneDayDelayed. Every night,
my server moves those messages to my INBOX. If someone else has already contributed what I would
have, perfect! If not, I still have a chance to participate.
Sometimes, if I have a long backlog of email, I disable that cron job, sometimes for up to two
weeks.
Being able to turn the cron job on and off
really helps; when I have time to deal with mailing lists, I do. Otherwise, I know
the messages will be there when I do have time.
Since this OneDayDelayed change, I've gained have a sense of
calmness and distance from them. I like that.
(Note that if you add me to the CC: line of a mailing list thread, I will see your
message immediately, for better or for worse.)
What Next?
I ve sent email to the LinkWithin people about all these issues other than the FireBug problem reports, given that they haven t responded to some suggestions for over 10 weeks it seems hardly worth my effort in informing them of other issues.
I m thinking of trying OutBrain.com again. 18 monthe ago I tried OutBrain but never got it working due to technical issues and then forgot about it. It has some similar features and may work better at least it has tech support people who respond to queries!
Last month I joined Mozilla as a UI engineer on the Fennec (Mobile
Firefox) project. Firefox is already available for Nokia's Maemo platform, and
now a group of Mozilla programmers are porting it to Google's Android OS.
This Tuesday they made an early preview build available for public feedback.
Until now, the only people working on Firefox for Android were platform
developers getting the back-end code to build and run. This week was the
first time most other people including me got to try it
out. We front-end developers and designers are now starting to adapt the
user interface to Android. (The preview build used the look and feel of
Firefox for Maemo, designed for rather different hardware and software.)
Because we are an open source project, we like to share our work and hear your
feedback even at this early stage of development. While I wasn't directly
involved in the Android development effort, I spent some of my spare time this
week talking to users via Twitter and our Android feedback group. Here's
what I heard, in rough order of importance to users, plus some information on
our future plans.1
One for the note-to-self file...
Strangely, it's labeled as a "Mustek 1200 UB Plus" on the unit itself, but
lsusb says it's a "Ultima Electronics Corp. Artec Ultima 2000
(GT6801 based)/Lifetec LT9385/ScanMagic 1200 UB Plus Scanner"
apt-get install xsane sane-utils
http://www.meier-geinitz.de/sane/gt68xx-backend/
says I should be downloading sbfw.usb, which needs to go into
/usr/share/sane/gt68xx
Uncomment override "mustek-scanexpress-1200-ub-plus" in
/etc/sane.d/gt68xx.conf
adduser apollock scanner
newgrp scanner
scanimage -L should now report something like "device
gt68xx:libusb:001:002' is a Mustek ScanExpress 1200 UB Plus flatbed
scanner"
Getting close now.
Sarah had another ultrasound yesterday, just to check things. Unfortunately
I couldn't be there due to a self-inflicted scheduling screw up. Apparently
you could see hair on the ultrasound, so I'm a bit bummed to have missed it.
The baby has "dropped", so that's good. Her head's still down, and she's
swallowing, so that's all good too. Weight-wise she's now in the 38th
percentile.
We're booked in for a C-section on the 14th, unless she comes of her own
free will between now and then (which is what we'd prefer), in which case
our OB
will allow an attempt at a VBAC. Our OB is reluctant to
allow the pregnancy to go past 39 weeks, given prior history and Sarah's
heart, and they don't induce for VBACs, so it's going to require some
planetary alignment to avoid a C-section.
The whole heart thing still
being an issue was only a fairly recent discovery for us. Sarah's cardiac surgeon
had told us we could go forth and have as many kids as we wanted, but it
turns out the fine print in that statement is that while the previous
aneurysm has been repaired, she has an undiagnosed connective tissue
disorder, so there's no telling what might happen with the rest of her aorta
in the future. So her OB is just doing what a good high-risk OB should do,
and being extra paranoid, on two fronts.
So we've got a couple of weeks to try and convince our daughter to come more
than a week and 2 days early. I don't think we have statistics on our side,
unfortunately (although I had a surprisingly hard time finding concrete
statistics on delivery dates relative to due dates for first-time deliveries
versus subsequent deliveries).
No sooner do I discover it, and
TransLink
up and renames itself to Clipper.
I wonder how much that exercise is going to cost? I'm also curious as to
what they're going to do in terms of a new domain name.
Ah, marketing:
Why is the name being changed? Now that the system is fully operational on five transit agencies - Muni, BART, AC Transit, Caltrain and Golden Gate Transit and Ferry - it is available to the majority of Bay Area transit riders. Giving the system a new name and logo helps make it more appealing to potential customers and also takes away any confusion with other local programs such as FasTrak, Fast Pass, as well as several other transportation programs around the world that are also named TransLink.With Bay Area public transportation being woefully inadequate, I have to wonder if much of any adoption problems (which is what I presume they're trying to solve with this rebranding) are more a function of overall patronage?
Alex released another set of Radeon power management patches over the weekend, and I've been adding my own code on top of that (Alex's patches go on top of drm-next, mine go on top of there). I've left it stress-testing for a couple of hours without it falling over, which tells me that it's stable enough that I can feel smug. This is a pleasing counterpoint to the previous experiences I've been having, which have been rife with a heady mixture of chip lockups or kernel deadlocks. It turns out that gpus are hard.Child pornography is great, the speaker at the podium declared enthusiastically. It is great because politicians understand child pornography. By playing that card, we can get them to act, and start blocking sites. And once they have done that, we can get them to start blocking file sharing sites .
The venue was a seminar organized by the American Chamber of Commerce in Stockholm on May 27, 2007, under the title Sweden A Safe Haven for Pirates? . The speaker was Johan Schl ter from the Danish Anti-Piracy Group, a lobby organization for the music and film industry associations, like IFPI and others.
[...]
Start with child porn, which everybody agrees is revolting, and find some politicians who want to appear like they are doing something. Never mind that the blocking as such is ridiculously easy to circumvent in less than 10 seconds. The purpose at this stage is only to get the politicians and the general public to accept the principle that censorship in the form of filters is okay. Once that principle has been established, it is easy to extend it to other areas, such as illegal file sharing. And once censorship of the Internet has been accepted in principle, they can start looking at ways to make it more technically difficult to circumvent.
Debian Developer www.debian.org Member of the Linux Foundation www.linux.com Fellow of the Free Software Foundation Europe www.fsfe.org
Next.