Search Results: "nate"

31 January 2006

Wouter Verhelst: Whee.

According to the graphs, we are now officially no longer the worst architecture! Whee. Not that I feel happy for the hppa folks, but we've been in this position for way too long already, now. It's about time we got through this. Therefore: Whee! Of course, the fact that we're not the last in the list now does not mean that our problems are over. There's #345574 to care about (and, hence, #340563; and there are a bit more issues like that one that will need a bit of love to be resolved. But we're going in the good direction again, which is great. In somewhat related news, some of our ColdFire eval boards have arrived at their destinations already. Unfortunately, mine has not arrived yet; but I presume it will rather soonishly. I should probably finish patching binutils to handle those FPU instructions as well, so that I can start testing and comparing...

Joey Hess: sleepd 1.3.0

Recently I put a new drive in my laptop, and unlike the last one (but like the one before), the 2.6 kernel cannot handle apm sleep with this drive. So I had to, horrors, switch to using acpi and software suspend and hibernate. Which, suprisingly, is working ok. But it was missing a little piece, something to put the machine to sleep if the battery got too low, and so I remembered this sleepd program that I wrote years ago and have been tying to ignore ever since despite people who persisted in using it for some strange reason. Apprently there's still nothing else to handle this job. So now I'm releasing version 1.3.0, with a bunch of patches and improvements.

30 January 2006

Antti-Juhani Kaijanaho: Counting lines

Insipired by Daniel Burrows’ tests, I decided to do mine. The object is to come up with a Haskell program that performs the job of wc -l as efficiently as possible. My test material is a randomly generated file with all lines less than 80 characters long. Summary: my final idiomatic version is twice as slow as wc -l, and my final nonidiomatic version is as fast as wc -l, or at least within the margin of error. First, the baseline:
$ time wc -l testfile
7798137 testfile
real    0m12.127s
user    0m0.765s
sys     0m0.399s
Then the most idiomatic program. Honestly, I expect it to suck performance-wise:
main = getContents >>= print . length . lines
And it does:
$ time ./wcl1.hs < testfile
7798137
real    1m14.993s
user    0m54.182s
sys     0m0.573s
But only by a factor of six. My first hypothesis is that garbage collection is the culprit. And, indeed:
$ time ./wcl1.hs +RTS -sstderr -RTS < testfile
./wcl1.hs +RTS -sstderr
7798137
25,236,174,340 bytes allocated in the heap
5,070,193,924 bytes copied during GC
117,484 bytes maximum residency (3750 sample(s))
96274 collections in generation 0 ( 26.36s)
3750 collections in generation 1 (  0.74s)
2 Mb total memory in use
INIT  time    0.00s  (  0.00s elapsed)
MUT   time   27.17s  ( 42.72s elapsed)
GC    time   27.10s  ( 33.72s elapsed)
EXIT  time    0.00s  (  0.00s elapsed)
Total time   54.27s  ( 76.44s elapsed)
%GC time      49.9%  (44.1% elapsed)
Alloc rate    928,824,966 bytes per MUT second
Productivity  50.1% of total user, 35.5% of total elapsed
real    1m16.616s
user    0m54.278s
sys     0m0.700s
As you can see, GC takes half of the processing time. Unfortunately, minimizing GC time does not have as big an effect as I hoped:
$ time ./wcl1.hs +RTS -H100M  -RTS  < testfile
7798137
real    1m1.354s
user    0m44.371s
sys     0m1.171s
Here, I’m effectively telling it to use a 100-megabyte heap. A separate GC profiling run tells me that GC time has dropped from 50 % to 1 %. The memory problem seems to be a red herring. What we’re doing here is creating four separately allocated memory cells for each character in the input. Of course, the cells are generated lazily, that is, a cell pair is allocated when the lines function demands another character; it then creates another cell pair to denote the same character in a list of lines. As soon as each line has been counted, the four cells become garbage. This sounds like a lot of work! But apparently it isn’t; I tried a few variations that did away with the stream of input altogether, not much unlike what Daniel did in his tests. Surprisingly, the performance worsened a lot. The lesson: functional programming language implementations, unlike typical imperative ones, are built on the assumption that you’ll be doing a lot of allocation. What I suspect is taking a lot of the time is arithmetic. Haskell’s Int is boxed, and lazy by default, adding a lot of overhead. I hand-fused length and line, yielding a tail-recursive countLines function, and I added the command-line switch -funbox-strict-fields, which enables a few significant optimizations of the laziness of Int. The results were nice:
ajk@kukkamaljakko:~/scratch$ cat wcl4.hs
module Main (main) where
main :: IO ()
main = getContents >>= print . countLines 0
countLines :: Int -> String -> Int
countLines n ('n':r) = countLines (n + 1) r
countLines n (_:r) = countLines n r
countLines n [] = n
ajk@kukkamaljakko:~/scratch$ ghc -O -Wall -funbox-strict-fields --make wcl4.hs -o wcl4
Chasing modules from: wcl4.hs
Compiling Main             ( wcl4.hs, wcl4.o )
Linking ...
ajk@kukkamaljakko:~/scratch$ time ./wcl4 < testfile
7798137
real    0m37.961s
user    0m29.853s
sys     0m0.495s
ajk@kukkamaljakko:~/scratch$ time ./wcl4 +RTS -H100M < testfile
7798137
real    0m25.153s
user    0m13.497s
sys     0m0.803s
ajk@kukkamaljakko:~/scratch$
With a large heap, the program is only twice as slow as the baseline. This is pretty good, considering that the code is still idiomatically functional. The following rather ugly, imperative program does away with the lazy stream and carefully avoids any laziness without doing any too dirty tricks:
ajk@kukkamaljakko:~/scratch$ cat wcl7.hs
module Main (main) where
import Data.Word
import Data.Array.IO
import IO (stdin)
count :: Int -> (Int, Int) -> IOUArray Int Word8 -> IO Int
count 0 _ _   False = undefined -- force ac evaluation
count ac (l,u) _   l > u = return ac
count ac (l,u) ar
    = do a < - readArray ar l
         let ac' = case a of 10 -> ac + 1
                             _  -> ac
         count ac’ (l+1, u) ar
maxn :: Int
maxn = 4096
main :: IO ()
main = do
  arr < - newArray (0,maxn) 0
  let loop :: Int -> IO Int
      loop acc = do n < - hGetArray stdin arr maxn
                    if n == 0
                       then return acc
                       else do acc' <- count acc (0,n) arr
                               loop acc'
  res <- loop 0
  print res
ajk@kukkamaljakko:~/scratch$ ghc -O  -Wall -funbox-strict-fields --make wcl7.hs -o wcl7
Chasing modules from: wcl7.hs
Compiling Main             ( wcl7.hs, wcl7.o )
Linking ...
ajk@kukkamaljakko:~/scratch$ time ./wcl7 < testfile
7798137
real    0m13.431s
user    0m10.342s
sys     0m0.467s
Of course, this program is not Haskell 98, but the nonstandard things it uses are fairly common. As can be seen, this version’s performance is, considering the margin of error, equal to the baseline. The compiler used in this test is The Glorious Glasgow Haskell Compilation System, version 6.4.1, as packaged in Debian sid.

Daniel Burrows: How much speed are you willing to give up for pretty code?

After experimenting a bit with Haskell and using it for some toy projects, I decided to see if there was any chance it could be used for a non-toy task; i.e., one where it might one day be necessary to actually have fast code. As a proxy for this, I decided to try a very simple task: counting the number of lines in a file. As input, I generated a file with a million lines of random data and an average of 40 bytes per line; all the Haskell programs were compiled with the current GHC in Debian unstable and with optimizations enabled.

The baseline is, of course, our friend "wc":

real    0m0.084s
user 0m0.043s
sys 0m0.040s


(this and all other timing data was taken after "cat /tmp/testwc.txt > /dev/null" to ensure that the file was cached) Now, it's probably too much to hope that a Haskell program will run as fast as a C program does, since the C program can run in a tight loop. But it seems reasonable that it should be possible for Haskell to be competitive with the trivial Python implementation of this program -- after all, Python is interpreted and Haskell is compiled.

import sys
n = 0
for line in sys.stdin:
n += 1
print n


Running this simple Python program under "time" produces the following statistics, a bit less than 10 times slower than the C version:

real    0m0.698s
user 0m0.643s
sys 0m0.050s


The trivial Haskell program to count the lines of its input is:

main = do c <- getContents ; print $ length $ lines c


Note that this is basically identical to the Python program, but expressed in a functional style. Pretty, but how does it stack up?

real    0m6.744s
user 0m6.426s
sys 0m0.213s


OW! Ten times slower than the Python code, and a good 80 times faster than "wc"! The gap can be lowered to "only" 50 times with the following program --

do c <- getContents; print $ length $ elemIndices '\n' c


-- but surely it's possible to do better. I'd expect that the expense here is in the use of lazy streams for IO; eliminating them gives us the following code:

wc :: Handle -> IO Int
wc h = do a <- mallocArray bufSize :: IO (Ptr Word8)
loop a 0
where loop a n = do amt <- hGetBuf h a bufSize
elts <- peekArray amt a
(if amt == 0
then return n
else loop a $! n + nlCount elts)


At this point, we're basically using Haskell as a (bad) imperative language. This function allocates a buffer, repeatedly reads into it, and counts the number of newlines in the buffer (I dropped some auxillary code to keep the post short). The $! is important; without it, even though this routine is tail-recursive, Haskell will still allocate an unbounded amount of memory to store the return value. (because, of course, it's terribly important to remember that you're actually returning "1+2+3", not "6")

So, how does this unreadable, hand-optimized version of the code perform?

real    0m1.980s
user 0m1.757s
sys 0m0.094s


That's right -- I've eliminated most uses of higher-level functional techniques, and the Haskell version is still two times slower than an ultra-high-level interpreted language, while also being uglier and harder to read! Ouch. It appears the old performance albatross of functional languages is not quite dead yet.

29 January 2006

Alexander Schmehl: Coming home...

from the DebianEdu gathering at Erkelenz. If you don't know where that Erkelenz is: It's in Germany. Sort of. To explain it with unförmchens words: You travel to the west until the big abyss, and after you dropped down you still need to drive 20km ;) However it was a nice meeting, while a teacher and several scholars served us with bread, pizza, drinks, power, net and everything else we need (I'm really impressed by the work of the local volunteers! A big THANKS! to Erek-Dingsbumms!) we did some work for DebConf, CeBIT, in the wiki, partly for DebianEdu, oh, and of course we made a lot of jokes about you-probably-don't-know-who ;) You-probably-don't-know-who is sometimes a bit difficult. He can really get on your nerves, but on the other hand, he does things were you just can't stop laughing, so it's more or less okay. Speaking of that: He found a cool method to find his way in semi known territory: If you don't know where you need to go, just drive in increasing bigger circles and sooner or later you'll get to the point. This algorithm terminates even, if your start and your end poinst are on the same plane. Luckily for you-probably-don't-know-who that's the case on every pair of two points on earth's surface... Even better for him: From time to time he has a navigational assistance system, in form of a female human sitting on his passenger seat...

Michael Janssen: How to become more interesting to people

Everyone would like to be more interesting. While this seems like a broad statement which can't possibly be true for all people, I am confident that it is true for most. Even if you aren't a person who is driven by social interaction, if asked "would you like to lead a more interesting life?" most people would answer with a yes (ninjas and pirates need not apply, I think). There are very easy ways to make your life more interesting - you can volunteer somewhere, change your habits, or go out and party all the time. Unfortunately, some of these things aren't interesting to you, and they may be downright boring. So an ideal way to make your life more interesting would catch not only other people's interests, but yours as well, raising the whole world's interest level. The device today which garners the most attention is, arguably, the TV. It sits ensconced in the middle of almost every living room in America. We watch TV so much that there's a considerable market for devices which make it easier to watch, either by time shifting or space shifting . If we're guaging the interest of people just by what gets the most eyeballs, the TV wins hands down. So if you want to be more interesting, and whatever's on the TV is the most interesting thing around, it stands to reason that you should emulate what you're watching. I'm not saying you bust into a hospital and start performing surgery just because you like ER, or start having saucy affairs with the other families on your own personal wysteria lane, but people can make small decisions which make things more interesting. This is all a long-winded and round-about way of coming to my point, however. In most TV shows, the TV plays a very small role, if any at all. How many times do you ever see a TV screen on a sitcom? Almost never. They are always off screen, obviously not interesting enough to put on camera. There's no "watching the tube" show, in which everyone watches the TV. It's because that's boring. This suggests that if people want to be more interesting, they should just reduce the amount of TV watching they do. In most shows on the tube, the only reason they watch TV is because of some specific purpose relating to the other, non-TV-watching. things which they are doing. Also there are very few if any big screen TVs on TV - I would bet someone that I've never seen even a 35 inch screen ever on TV. Smaller TVs and a minimal amount of TV watching make for more interesting lives.

28 January 2006

Jos Parrella: Call For Papers: IV Foro Mundial de Conocimiento Libre

Call For Papers for the 4th. World Forum on Free Knowledge is now released in english (non-official translation, sorry for mine) and spanish. The WFFK is a Community-organized Forum, made possible by the sponsorship of Government Enterprises and Private Enterprises, as well as Volunteers and Donations. The first was made in Caracas, on November 2004, in the installations of the Universidad Bolivariana de Venezuela, with the sponsorship of the Venezuelan Oil Company, PDVSA. The second WFFK was made in Thiruvananthapuram, in Kerala-India, under the name Free Software, Free Society in May 2005, and the third WFFK was made in Maracaibo, Venezuela, with the support of several Institutions, including PDVSA, CONATEL and serveral others. Impressed by the success of the 3rd. WFFK, a group of people is organizing the fourth, which will take place in Puerto La Cruz, Venezuela, in October 2006. This is the first ocassion a Call For Papers is being done, because the Forum will have a Congress inside it, as well as selected articles. In the past, we only had selected articles and invited speakers on a certain basis. This time, a Call For Papers will also be done, so we can invite nice speakers to come and share with the attendance. Last time in Maracaibo we had David Moreno Garza with us, as well as several Debian Maintainers and Co-Maintainers with us, from Venezuela and Colombia: Ernesto Hern ndez-Novich, Polkan Garc a, Ernesto Crespo, V ctor P rez, Ana Delgado, Gerardo Curiel, Manuel Garc a, V ctor P rez and myself (am I missing someone?). So this was quite a MiniDebConf! Let’s make the 4th. a complete one :)

Norbert Tretkowski: Ingolstadt

Today, my familiy and I visited the Audi forum in Ingolstadt, my dad got his new car there. The museum was really interesting, I made some pictures which I'm going to upload tomorrow. Unfortunately, it wasn't allowed to take pictures in the factory itself, but it was nice to see live what everyone knews from the television already.

Gunnar Wolf: Frustration comes on ISO/OSI layer 2 (or: On one of the ways 3Com sucks)

Over one month ago, I truly hoped an evasive network misbehavior issue was solved. In the institute, we had a strange situation which caused a (seemingly random) stack of switches to go out to lunch and leave one of the floors without network access until it decided to restore itself (usually power-cycling it was not enough). The equipment, ten 4200 SuperStack switches, is new, we got it ~September, so I expected 3Com to give me at least some support on the issue. The behavior was apparently random, and I could not track it down, only (thanks to the very nice Cacti) prove it existed.
December 5 was terrible. The whole building's network refused to work. Switches were able to reply to my pings for no more than a minute after booting before they got flooded with "Spanning Tree CTRL MAC PAUSE: Quanta 65535" (according to another great tool, the Ethereal protocol analyzer).
I had been bugging the support people at 3Com for at least three weeks before this incident, they kept promising they would come soon to help us track the cause of the ellusive problem - We threatened to send the switches back and pursue reimbursement through whatever means we could (we had much better stability and performance with our old 10Mbps hubs, so my boss insisted on replacing them), so we got them to come. The answer they gave me? Upgrade your firmware to version 2.50 (not available at their website, of course) and disable spanning tree functionality at the switches.
I have to admit the big problem immediately ceased. This is not to say I was pleased with the response time or with the switches' software quality, but at least we could work.
Happily, ~7 weeks passed by with no major outages (although with a few small ones).
Yesterday, we got back the complete chaotic conditions. This time, though, I was able to get a good and useful tcpdump snapshot, passed it through Ethereal, and actually got something interesting (available to whoever requests it to me if it sounds interesting). In short: Something happens that confuses a switch (I guess it's a faulty NIC), and makes it request to all of the neighbouring switches (via spanning tree protocol - Yes, it's disabled, but still) for their complete ARP tables. But somehow, this noise or whatever keeps confusing it, so the spanning tree requests start repeating every two seconds for slightly over one minute. Then, the same switch which requested this information gets tired of too many ARP tables being thrown at it, and sends out a storm of packets (one each 0.04 seconds) asking every other switch _not_ to send updates anymore. This is broadcasted to all of each of the switches' ports, and the network dies.
My grudge against 3Com is: How come this frigging noise (at least that's what I assume it to be) on one of the ports kill all of the network? If a switch is supposed to be smart, would it be too much for it just to disable the misbehaving port?
Anyway... One and a half days went down the drain trying to find the cause for the problem, sending the report to the 3Com guy (who is very nice in person, yes, but that's by far not enough!), running up and down the stairs to reset different switches, lock down on the source of distress... And as my 3Com contact was busy with another client (who presumably had not yet given them money), I never got a call back from them.
All my good intentions to spend a nice quiet time coding for three projects we currently need to have ready soon (one of them is in production and many of you have used, my dear Comas conference management system, but requires heavy tinkering to be able to extend it) were stuck at that: Good intentions.
I seem to have locked down the problem in one of three computers (that is, network seems stable again once I disconnected them). I insist it must be a faulty NIC. My boss bets it's an ber-contaminated Windows machine. My boss' boss insists we should get the switches double-grounded just to be sure that's not the reason for failure. I am tired, bad mooded, and -again- bored you to death with a too-long blog entry.
Blame it all on 3Com.

Matthew Palmer: That's Not A Question, *This* Is A Question!

I've just come out of Mark Shuttleworth's Saturday morning keynote, and I'm a bit irritated. His talk was fairly short, and so there was a long question time. I use the word "question" in a fairly general sense, as there seemed to be a lot of people who were keen on using their 15 seconds of fame to expel a long-winded monologue. A few notes for those people (and there were quite a number of them): This has been a public service announcement sponsored by Opinionated Geeks for A Less Painful Session (OGALPS).

27 January 2006

Norbert Tretkowski: Ingolstadt

Today, my familiy and I visited the Audi forum in Ingolstadt, my dad got his new car there. The museum was really interesting, I made some pictures which I'm going to upload tomorrow. Unfortunately, it wasn't allowed to take pictures in the factory itself, but it was nice to see live what everyone knews from the television already.

Clint Adams: For those who notice that this is not my food blog: yes, this is not my food blog.

CAPPESANTE DEL NANTUCKET A LIDO VENEZIANO
Marinated Nantucket bay scallops with Osetra caviar, lemon, chives and extra virgin olive oil

2003 Soave Classico, Leonildo Peropan, Veneto, Italia PROSCIUTTO LA QUERCIA CON BURRATA E PUREA DI DATTERI
Cured Berkshire pork with burrata cheese, date puree and wild arugula

2003 Chardonnay, Viberti, Piemonte, Italia ARAGOSTA E PAGLIOLAIA CON PUREA DI FAGIOLI
Braised lobster and crisp dewlap with Umbrian white bean puree and spiced vinegar syrup

2004 Saint George-Moschofilero Rose, "Zo !," Domaine Skouras, Argos, Greece CANNELONI DI FAGIANO CON CASTAGNE
Handcrafted pasta filled with braised pheasant with Parmigiano Reggiano and toasted chestnuts.

2004 Charbono Villa Andrianan-Napa Valley, Summers Winery, Calistoga, California TAGLIATA DI MANZO CON FEGATO ALLA GRIGLIA E BALSAMICO INVECCHIATO
Wood grilled prime strip steak with grilled calves liver, slow cooked cippolini onions, trumpet royale mushrooms and 50 year old balsamic vinegar

1999 Barolo, Vietti, Castiglione Falletto, Piemonte, Italia SELEZIONE DI FORMAGGI
A selection of fine cheeses

10 Year Verdelho Madeira, Henriques & Henriques, Portugal CREMA TIEPIDA DI CIOCCOLATO E CAFFE
Warm chocolate espresso cup with whipped cream and raisin pasticcini

2004 Dolce Stilnovo Rosso, Cantina Aurora, Piemonte, Italia

26 January 2006

David Pashley: Bad Shell: Lazyweb replies

Yesterday I posted about some bad shell code I had found and posted an improved version. Part of the reason for posting it was that I hoping someone could point out any errors in the version I posted. Fortunately Neil Moore emailed me some improvements.
  1. If the script returns more than one line they will be removed by the $(...) expansion when it is split into words. The solution there is to surround it in double quotes.
  2. The next problem Neil pointed out was that $@ should be surrounded by quotes in pretty much every case, otherwise parameters with spaces in will get split into separate parameters.
  3. The final problem is that if the script includes a return statement, it will stop the inner most function or sourced script, but not during eval.The solution is to enclose it in a function:
    
    dummy()   eval "$(perl "$CONF_DIR/project.pl" "$@")";   dummy "$@"
    
    
Since making the post, I discovered that Solaris' /bin/sh doesn't like $(...), so it's probably better to use backticks instead if you want to be portable. As I know the output from the script I'm not worried about return statements, so I've ended up with:

eval " perl "$CONF_DIR/project.pl" "$@" "

25 January 2006

Andrew Pollock: [tech] Asterisk and Engin, continued

So, given my earlier musings, I went ahead and signed up for the $10 a month Engin account (man it's hard to suppress adding an "e" on the end every time I type "Engin"). They finally approved the account today (took about a week or so I think), and I have a Brisbane telephone number. I've also bought the O'Reilly Asterisk book (yes, I've also downloaded the PDF for free, but I feel I should support the author, and I like reading books in dead-tree format). My next challenge is to obtain a couple of entry-level SIP handsets (recommendations welcome) and to actually get Asterisk up and running, talking to Engin. The pi ce de r sistance will be to get a TDM card with a couple of FXO modules to plug the standard POTS line and the output of the Vonage ATA (unfortunately Vonage doesn't appear to play well with Asterisk, so I'll have to do this crazy conversion) and have everything terminating in Asterisk. Of course this is up there with the MythTV box I never got around to building back home, but at least Asterisk is packaged for Debian, so all I have to do is get the handsets and configure Asterisk appropriately. Oh, and maybe actually stay at home for a couple of weekends.

24 January 2006

Andrew Pollock: [life] Making like a tourist

Had a busy couple of weekends with Rick visiting and us doing much sightseeing. I've been too busy to blog. The weekend before the one just gone was a long one on account of Martin Luther King Day on the Monday. We spent Saturday in San Francisco, Rick and I at Camp Sysadmin, as previously mentioned, and Sarah pottered around on her own (photos here). On Sunday, Rick and I went for a reasonable (28 kilometre) bike ride around the part of the bay accessible from the Stevens Creek Trail in the morning, and in the afternoon we all drove into the hills to check out the Lick Observatory. You can see the observatory as a little bump on the top of the mountains on a clear day, but it's deceptively further away than you think, because it's actually on top of the second line of mountains, not the first. We didn't expect to find ice and snow or for it to be zero degrees (Celsius) at the summit. We made it up just before 5pm, which was closing time, so we'll have to go again earlier in the day (and more appropriately attired) to check it out more thoroughly. Some photos here. On the Monday, we did a bit of a group outing with a few other people from work, including Tanya, who is visiting from the Dublin office and also in extreme tourist mode. We took a Caltrain in to Millbrae, and then switched to the BART for the remainder of the journey. Finally, we took a cable car from Powell station over to Fishermen's Wharf, where we wandered about for a bit, and then had a nice $11 cruise on the bay for an hour and a half, which went around Alcatraz and under the Gold Gate bridge. After that we caught another cable car back downtown, wandered around for a bit, and then met up with a few more people from work for a beer, and then had dinner at a nice Irish pub that we found. Photos from that outing here. On the Saturday of the weekend just gone, we drove to Monterey, mainly with the aim to hire Segways and fang around on them. Mission accomplished, and it was very affordable too. I think we'll definitely do that again. We also need to visit the aquarium. I really liked Monterey. It reminded me a lot of Berry, on the New South Wales south coast. Photos here. Finally, on Sunday (i.e. yesterday), we drove back to San Francisco, where Sarah, Rick and Tanya did the Alcatraz cruise/tour thing, and I spent most of the time riding the cable cars and street cars. The $10 day pass purchased on the cable cars is great value, as it seems to be valid on all of the San Francisco Municipal Railway (affectionately known as the "muni"). In the afternoon, we all went on a bus tour of San Francisco (the same one Michael and I did in July, but with a different driver, and slightly different route). Finally, we had a really nice dinner at an Afghani restaurant a few doors down from the backpacker's hostel that Tanya was staying in. Photos from the day here. Rick flew out tonight, and hopefully had a good time while he was here. We're certainly feeling a bit weary from all the sightseeing, but having visitors is always a good excuse to get out and do it. Next weekend, our friend Brett is visiting from Canada. No rest, I tell ya...

21 January 2006

Steve McIntyre: I Hate Computers, part N in an ongoing series

I had a gas engineer out to visit me yesterday, to repair the boiler for my central heating. That's probably going to be expensive enough. However, in addition he touched together a couple of wires and caused the RCD for the house to trip. Instant power cut... The machines that matter most are on a UPS, so weren't affected. Unfortunately, it looks like the shock of the sudden power failure may have caused two hard disks in two separate machines to die. I've replaced one in my mips machine mallet - that was easy enough as I had a useable spare sat around, and the disk just had chroots on it for sbuild. The more awkward one is sledge, my amd64 workstation. There wasn't anything actually important on the disk, but it's still a pain re-installing it and restoring the backups. So much for spending time doing some debian-cd hacking this weekend. :-(

Ian Murdock: The celestial jukebox

Fred Wilson: “I will not buy music that I cannot remove the DRM from.” I agree wholeheartedly, though the strategy I use is the one Fred dismisses in the first paragraph, namely burning the music to CD and ripping it back, sans DRM, to MP3 format. Yes, it’s a pain, but it beats having to jump through all the digital hoops at some indeterminate point in the future when all I want to do is queue up a song I’ve legitimately purchased and have probably forgotten where I bought the thing, let alone what magic pixie dust I need to decode it. Sure, the MP3 format has issues too, but at least I know my music will play anywhere. (Since I’m on the subject, I’m looking for some sort of a virtual CD burner, which the operating system thinks is a CD burner but which is actually a piece of software that converts the tracks it “burns” to MP3 format. Anyone know if such a beast exists? That would certainly do wonders to curtail my contribution to the world’s coaster supply.) In practice, DRM isn’t as much as a problem for me as it seems to be for other people. Personally speaking, I don’t want to be in the music storage business—I’d much rather stream music on demand from some digital jukebox in the sky, which is why I’ve been a Rhapsody customer since 2003. (Greg Papadopoulos sums up my thinking pretty well exactly here: “I’ll bet that we will look back of this era of quasi-networking and wince, ‘How did we ever live that way?’ And the idea of wanting to carry all of your content with you will seem both old-fashioned and rather ridiculous.”) In my case, DRM is normally a non-issue—I simply route around it. Rhapsody has come a long way since I first started using it in 2003: They added a Rhapsody To Go service, which more or less solves the “disconnected operation” problem (though I still tangle with DRM issues from time to time if I go for too many days untethered), and they finally embraced the web, though the current web offering leaves much to be desired—the Linux plugin still doesn’t support Firefox 1.5 nearly two months after its release, the web interface has huge gaps compared to the jukebox software (you can’t access your music library on the web, among other things?!), and they don’t seem to be taking advantage of the new web platform at all (where, oh where, are the RSS feeds of my favorites, recommendations, etc, so I can mash them up with other stuff?). At the end of the day, I suspect the “economic boycott” James Governor calls for is the right way to fix the DRM problem. For my part, I’m voting with my wallet by supporting the model I want to win out in the end (that your music library will live on the web, not on your PC or in your pocket) and by buying music, in those rare cases when I do want to manage my own music library rather than letting someone else do it for me, from legitimate music services but opting out of the silos the platform providers are trying to build around me as a byproduct. Above all, I resist the temptation to climb into the big, beautiful lockbox Apple is building for us. As Clayton Christensen recently told BusinessWeek, I’m firmly convinced open standards will win out in the end:
Look at any industry — not just computers and MP3 players. You also see it in aircrafts and software, and medical devices, and over and over. During the early stages of an industry, when the functionality and reliability of a product isn’t yet adequate to meet customer’s needs, a proprietary solution is almost always the right solution — because it allows you to knit all the pieces together in an optimized way. But once the technology matures and becomes good enough, industry standards emerge. That leads to the standardization of interfaces, which lets companies specialize on pieces of the overall system, and the product becomes modular. At that point, the competitive advantage of the early leader dissipates, and the ability to make money migrates to whoever controls the performance-defining subsystem.
I don’t know about the rest of you, but that day can’t arrive soon enough for me.

Bartosz Fenski aka fEnIo: switched to 2.6

I didn't want to migrate to 2.6.x kernels, since I really don't like its current development approach, but unfortunately I had to, because my usb cable for mobile phone works only with this branch.
So from now I'm not-so-happy 2.6 user ;)
At least now I can exchange data with phone, so Debian logo is now on the screen.

Martin Michlmayr: NSLU2 Debian porting work, NSLU2 core

&lt;p&gt; The Linksys NSLU2 is a sub-$100 ARM based gadget that allows you to connect storage (in the form of a USB disk) to the network. The &lt;a href = &quot;http://www.nslu2-linux.org/&quot;&gt;NSLU2-Linux project&lt;/a&gt; is working on technical development (including 2.6 support), and provides technical information and alternative firmware images. There has been some interest in get Debian properly working and the project kindly donated a NSLU2 to me so I can help out with debian-installer porting and other Debian related work that needs to be done. While my work hasn&apos;t been fully completed yet I have made good progress in the last few weeks since I got the NSLU2 and yesterday I found myself invited to the NSLU2-Linux core team. &lt;/p&gt; &lt;!-- time: 2006-01-21 03:52:24 +0000 --&gt;

20 January 2006

Thomas Hood: POSIX doesn't represent UTC

Seeing the reports of kernels logging the addition of leap seconds and, along with others not seeing such messages on my system, I decided to read up. To my surprise I learned that POSIX systems do not represent Coordinated Universal Time (UTC), but only a variant of UTC without leap seconds. One consequence of this is that arithmetic done in POSIX time does not correspond to arithmetic done in UTC if one crosses a point where leap seconds were added. Another consequence is that if someone wants his POSIX system clock to display a time corresponding to UTC then the clock needs to be adjusted whenever UTC counts leap seconds. The log messages are the result of ntpd telling the kernel to skip one increment of the system seconds counter. So much for the smug comments about those broken OSes that don't handle time properly.

Next.

Previous.