Search Results: "cas"

3 December 2007

Russell Coker: New Bonnie++ Releases

Today I released new versions of my Bonnie++ [1] benchmark. The main new feature (in both the stable 1.03b version and the experimental 1.93d version) is the ability of zcav to write to devices. The feature in question was originally written at the request of some people who had strange performance results when testing SATA disks [2]. Now I plan to focus entirely on the 1.9x branch. I have uploaded 1.03b to Debian/unstable but shortly I plan to upgrade a 1.9x version and to have Lenny include Bonnie++ 2.0x. One thing to note is that Bonnie++ in the 1.9x branch is multi-threaded which does mean that lower performance will be achieved with some combinations of OS and libc. I think that this is valid as many applications that you will care about (EG MySQL and probably all other modern database servers) will only support a threaded mode of operation (at least for the default configuration) and many other applications (EG Apache) will have a threaded option which can give performance benefits. In any case the purpose of a benchmark is not to give a high number that you can boast about, but to identify areas of performance that need improvement. So doing things that your OS might not be best optimised for is a feature! While on this topic, I will never add support for undocumented APIs to the main Bonnie++ and ZCAV programs. The 1.9x branch of Bonnie++ includes a program named getc_putc which is specifically written to test various ways of writing a byte at a time, among other things it uses getc_unlocked() and putc_unlocked() - both of which were undocumented at the time I started using them. Bonnie++ will continue using the locking versions of those functions, last time I tested it meant that the per-char IO tests in Bonnie++ on Linux gave significantly less performance than on Solaris (to the degree that it obviously wasn’t hardware). I think this is fine, everyone knows that IO one character at a time is not optimal anyway so whether your program sucks a little or a lot because of doing such things probably makes little difference.

2 December 2007

Matthew Johnson: Passwordless Encrypted Root in Debian

If, like me, you wanted both an encrypted root filesystem and some form of bootsplash you may have discovered that this is tricky. You need to enter the decryption passphrase on the terminal which means exiting the bootsplash. I decided it must be possible to use a USB token with the key on it rather than a passphrase to decrypt the drive and while this seems supported upstream, it is not supported out of the box on Debian. This is a short howto explaining my solution. Pre-requisites You will need a USB hard disk and a computer using Debian with an encrypted root filesystem. I am assuming that you are using a stock kernel with an initramfs image and have a luks encrypted LVM containing the root filesystem. You will have to change some of the details below to match your specific system. In the examples below /dev/hda5 is the encrypted partition and /dev/sda2 is the partition on the USB disk holding the key. Setting up the key First we need to generate a random key and put it on the disk. To save having to mount things in the initramfs, I chose to use a partition at the end of the USB flash disk. This means repartitioning and reformatting your USB disk. I recommend allocating the last cylinder in fdisk to primary partition 2. Once you have the second, small partition (you are only going to use 1k, so as small a partition as possible) you can put a key on it. This is as simple as dd if=/dev/urandom of=/dev/sda2 bs=1M . Adding the key to the luks partition Next, you need to add your new key as able to decrypt the partition. Luks allows several keys to be able to unlock the partition. The real key is decrypted under each of the user keys or passphrases and stored in a key slot' in the partition. To add your key type:
touch /tmp/keyfile
chmod 600 /tmp/keyfile 
dd if=/dev/sda2 bs=1k count=1 of=/tmp/keyfile
cryptsetup luksAddKey /dev/hda5 /tmp/keyfile
wipe /tmp/keyfile
Note the careful handling of the temporary key file (luksKeyAdd won't read from stdin, whereas luksOpen will), I recommend storing it on a ramdisk and you should certainly use wipe rather than rm if you don't. Once you have added your USB key you could remove the passphrase from the key list with luksDelKey, but if for any reason you lose the USB hdd you will be unable to decrypt the partition; I recommend leaving both keys available. Booting automatically In order to boot using the USB key we need to provide a couple of helper scripts in order for the initramfs to work. We also need to set some parameters on the kernel command line. In Debian these scripts can be added to the initramfs by putting them in /etc/initramfs-tools/. The first script is a helper script used when building the initramfs. This writes a second script into the initramfs itself which takes the partition as a parameter and prints the key on stdout. This should be written to /etc/initramfs-tools/hooks/cryptkey (executable) and contain:
#!/bin/sh --
PREREQ=""
prereqs()
 
   echo "$PREREQ"
 
case $1 in
prereqs)
   prereqs
   exit 0
   ;;
esac
. /usr/share/initramfs-tools/hook-functions
cat > $ DESTDIR /bin/loadkey 
The second script runs immediately before the cryptsetup script in the initramfs and ensures that the USB disk is available. This will cause the boot sequence to block until the USB disk is inserted and the device nodes created by udev. It can be provided directly in /etc/initramfs-tools/scripts/local-top/00ensureusb (executable) and should contain:
#!/bin/sh --
PREREQ=""
prereqs()
 
   echo "$PREREQ"
 
case $1 in
   prereqs)
      prereqs
      exit 0
   ;;
esac
if ! grep cryptopts /proc/cmdline >/dev/null; then return; fi
. /scripts/functions
log_begin_msg "Waiting for USB to become available..."
modprobe usbcore
modprobe uhci_hcd
modprobe ehci_hcd
modprobe usb_storage
while [ ! -b /dev/sda2 ]; do
   sleep 1
done
log_end_msg
exit 0
The cryptsetup script itself reads configuration from the kernel command line. Here you can give it a script which will read the key and the source for the key to read. Edit your grub or lilo config and append the following to the kernel command line: cryptopts=keyscript=/bin/loadkey,key=/dev/sda2,source=/dev/hda5,target=hda5_crypt,lvm=hecate-root You will obviously have to change the name of your lvm root partition (volumegroup-logicalvolume). I recommend having two entries in the boot menu, one with the cryptopts and one without to allow easy decryption using the passphrase instead. Conclusion That should be everything. Boot your computer and inset the usb hdd. When the boot process passes decryption you can remove it again. You may have to replug it if you boot with it inserted to start with.

Brandon Holtsclaw: ugh

fabbione why oh why did you upload openssl097 UNPATCHED when there were known security issues with this version, with the fix even linked to in the bug? This software was removed from Gutsy for a reason, if its going to be added back it should ATLEASTE be patched, as it stands right now anyone who installs vmware-server via Canonical’s Partner Repository is remote exploitable and it was known prior to the upload, is this a case of $$ from VMware means more than security? I’m sorry but this is simply not acceptable from Canonical as far as I’m concerned. It isnt a case where VMware is distributing it, its us, or atleaste Canonical distributing it to STABLE releases. At this point a patch to fix the issue will simply not be enough, I want to know why this happened. And whats going to be done to ensure the Distribution I spend many hours for volunteering isnt going to allow this to happen again. I Love Ubuntu and hate to see things like this happen, lets ensure they dont. /* annoyed */

1 December 2007

John Goerzen: Visiting Indiana

It was two weeks ago now that we hopped on an Amtrak train in the middle of Kansas at the bright and early hour of 3AM, bound for Indiana.

This has been our third trip with Jacob. He's 14 months old now. We never really enjoyed long car or airplane trips before we had a baby, and haven't really had the desire to try a long car trip since. So we try to take the train, or if time is short, fly.

Jacob enjoys the train. There's lots to see and do. The one thing he doesn't like doing is waiting for food to arrive in any situation, so when we have sit-down meals in the diner, things can get challenging.

We arrived in Indiana the same evening and spent a few days with Terah's dad out at the farm.

Jacob enjoyed grandpa and grandma:

img 3944

img 3961

Jacob got his first ever ice cream there. Despite the concerned "unknown food alert" look, he opened up quick for another bite.

img 3946

The big hit of the visit there were chickens. I've never seen Jacob so thrilled about watching something before. He was so excited he was just moving his arms all around, almost jumping up and down. Here he is watching them:

img 3977

img 3984

Terah wants us to get chickens now. Just because we still have a chicken house left...

On Tuesday, we went north to spend a few days with Terah's mom. On the way up, it became overcast. Terah's mom calls it the winter "permacloud", which is the best description of it I've heard yet. I didn't believe Terah at first when she said that they don't see the sun for 3 months in winter up there, but I believe her now.

Jacob found a rocking chair just his size there, and was able to make it rock. But the big hit of this stop were refrigerator magnets, at Jacob height.

img 4023

He spent a long time with them, and got pretty good at working with them, too.

He also thought he ought to check out the camera in great detail. So of course, the camera checked him out.

img 4032

Terah's mom wanted to spend some time with Jacob, so on Wednesday, Terah and I headed up to Niles, MI to visit some antique shops. We found some postcards from small towns in Kansas dating back to the 1930s, an old metal fan (still works), a wooden "apothecary box" with pull-out drawers, and some furniture we might have purchased if we were closer to home.

For the first time ever, Terah was the first one to say "aren't you done shopping yet?" She was getting tired, so we started heading back. Magically her energy returned as we approached the road leading to the South Bend Chocolate Co. factory and retail store, so we headed in that direction. The next tours didn't start for almost an hour, so we bought some chocolate, looked around a bit, and then left.

Terah's mom had a good time with Jacob while we were gone.

img 4053

Thursday was the O'Connor Thanksgiving. Terah's grandma and some other relatives were there. Here's Jacob with his great grandma:

img 4064

Jacob enjoyed Thanksgiving dinner, and managed to keep finding things to munch on all afternoon.

That evening, we went over to Terah's Yoder grandparents and spent a few days there. Not long after we arrived, Terah's uncle showed up and brought his adopted greyhound with him. Jacob was very excited about this, though the dog wasn't so sure about Jacob.

Eventually the greyhound calmed down and Jacob got to see him up close and pet him. Jacob didn't even mind getting his whole face licked.

img 4107

The next morning at breakfast, Terah's grandma had set out the high chair that she used as a girl for Jacob to eat in. I got some pictures, but Jacob was far more interested in asking to have food ready to eat.

img 4110

Here's Jacob with his Yoder great grandparents:

img_4129.jpg

Later Friday, it was the Yoder Thanksgiving. Jacob got plenty of attention. He also was looking VERY CAREFULLY for Waldo.

img_4151.jpg

Jacob wasn't feeling the best all week, but despite having a busy week and feeling not so good, he did really well. He has been walking with help now, holding on to one adult finger with each hand. He really enjoys that, but is short enough that adults have to bend over a bit to help him. I imagine several people had sore backs after the week was over, including us.

On the train trip home, I took him to the lounge car to go walking. Usually he likes to walk as fast as he can for as long as he can, but there he would only go a little bit at a time. He'd stop at each group of chairs to look at the people, and most of them were really happy to see him, too. After he was done with the lounge car, we walked back through the coaches to our seat. As long as he kept walking, he again would stop at each row of seats to make friends with anybody that wanted to.

We tried to find a nice place to go for lunch during our layover in Chicago. But let me tell you, downtown Chicago -- at least the part near Union Station -- is dead on Sunday and the fact that it was just after Thanksgiving probably didn't help. We wound up finding a place in Union Station to eat. Jacob fussed for awhile, then went to sleep on my lap (he rarely manages to go to sleep while being held). Then on our connecting train back to Kansas.

It was a fun and busy week, but it's nice to be home too. Our train arrived in Kansas at 3:15AM Monday morning. So we went home to catch a few more hours sleep before going to work. As I went outside that morning, we had a gorgeous Kansas sunrise. As the sun was coming up, it was lighting the underside of the clouds with a vibrant deep red and orange color. The whole sky to the east was lit up like that, and felt so warm and inviting on a bitterly cold morning.

Joey Hess: my mpd setup

One of the hard things about getting started with mpd is that there seems to be little documentation about the details of how other people use it. Instead you're given a collection of great tools and an excellently designed system, and expected to build your own personal music playing setup out of them with little direction. So I thought I'd document mine. There are several computers around the house that run mpd. One in my office, one has speakers in the bedroom. My laptop, of course. And I put a nslu2 in the living room in a fun lego case that embeds the little computer into a remote controlled speaker (photos when I find a camera). All of these machines have their music libraries synchronised using unison. I use sonata as a graphical frontend and browser. I keep one instance of sonata running on my desktop in the office, so I can go there to change music if my laptop's not on. Also so guests can change the music. I like to listen to whole albums at a time, and sonata doesn't make this especially easy in its user interface. I eventually realised that the best way to do it, for me, was to create a separate playlist for each album. Sonata does make it really easy to click on a playlist and start playing it. I wrote mpgenplaylists to automatically generate those playlists for me. I wrote a set of commands that I can use to transfer state between my mpd daemons. The easiest to use and most useful of these is mpswap, which swaps the state of two daemons. Generally I only have one mpd playing at a time, and the others are paused, though it'll also swap the states of two running mpds. So if I run "mpswap dodo dragon", the music that had been playing in my bedroom starts coming out the speakers in the office. Same song, not a single missed note. That's pretty handy. Or I can run "mpswap dodo" to swap state with my laptop, and carry the music out of the house with me. (This would be more seamless if I carried some bluetooth wundergadget so my computers knew where I am, but I think I'll pass.) Another tool I wrote is mpstore, which dumps the mpd daemon state out to stdout, so it can be saved to a file and later loaded with mpload. I use this when I'm listening to audiobooks, to store my place. Another one is mpfade, that can wake me up by slowly fading in music. Or slowly fade out and stop. Writing these little hacks is addictive, but I won't bore you with the rest. On some of the servers I run mpd-dynamic, a daemon that watches the playlist and makes sure it always has 10 unplayed items in it, chosing new items at random. It also removes old played items from the playlist. This is nice if I want music going without the bother of picking what. I typically add some albums to the playlist, and then when they're done, it keeps playing random stuff until I manually add something else. I do want to find something that can more intelligently pick things to play. I tried lastfmpdqc, but didn't like its results. Switching to mpd has meant that the filenames of mp3s matter again, since mpd UIs expose the filenames (a pity). I used exfalso to clean up all my file names based on the music's tags. I also added ReplayGain information to all my music so mpd can use it to normalise volume. BTW, after all this, I'll probably still only listen to music for an average of 3 hours per week.
mpd-dynamic is in the Audio::MPD perl module. mpdswap, mpdstore, mpfade, mpgenplaylists, and more are in mpdtoys.

30 November 2007

Daniel Burrows: The Dreaded I-Word

A popular and recurrent topic of conversation on the Internet has the following form:
Is (X) innovative?
I occasionally find myself reading these discussions; they have the same sort of macabre fascination for me that's often ascribed to train wrecks, messy divorces, and Usenet. Of course, the outcome (or rather the lack of one) is always predetermined. The only variable is how many pixels will be mutilated and how many absurd postures will be struck before the dust settles. Why do I say the outcome is predetermined? Because in not one of these discussions does the person posing the question precisely define what innovation is. If the discussion concerned, say, whether an object was blue, or made of concrete, or 5 meters by 6 meters, this would not be a real problem: while any hair can be split, there are commonly accepted definitions of blue, concrete, and meter that are sufficient for an informal discussion. But innovation is not blue, concrete, or meter. Different people have subtly, even radically different views of what constitutes innovation and how to measure it. Hence, any discussion involving more than one person quickly devolves into chaos. One person will say, X is innovative because of such-and-such, and another will reply, X is not innovative because of such-and-such unrelated reason. Both writers are correct by their own definitions of innovation; they are answering different questions, and so they end up talking past one another. Although these discussions never go anywhere, I think it's entertaining and enlightening to catalogue some of the definitions of innovation that the participants use. I've listed some popular definitions below; feel free to email me with more suggestions and I'll update the list. Of course, since people rarely bother to define their terms, most of these meanings have been inferred from the statements people have made about what is and is not innovative. As a result, some of them are fairly absurd and may not accurately reflect the opinions of the speakers, had the speakers stopped to think about what they were saying. Caveat lector. Conventions: Below, personal pronouns such as I and me refer to the speaker. The words product, idea, and technique are used interchangeably and as appropriate to refer to the thing whose innovativeness is in dispute.
  • The idea advanced the state of human knowledge.
  • The idea was an improvement over existing ideas.
  • The idea improved the state of practice within its field.
  • The idea was previously unknown.
  • The idea was previously unknown to its creator.
  • The idea was previously unknown to me.
  • The technique solved a problem thought to be unsolvable.
  • The technique solved a problem with no known solution.
  • The technique solved a problem with no solution known to me.
  • The technique solved a problem with no solution known to its inventor.
  • The product was aesthetically pleasing to me.
  • The product is entirely unlike any other product with which I am familiar.
  • The product is exactly the same as some other product with which I am familiar.
  • The product solved a problem more effectively than existing tools.
  • The product made its creator the wealthiest living human.
  • The product made its creator wealthy.
  • The product made someone wealthy.
  • The product reaped a huge profit for the corporation selling it.
  • The product was bought by many people.
  • The product was used by many people.
  • The product was useful to many people.
  • The product was useful to someone.
  • I bought the product.
  • The product was useful to me.
  • The product was created by (some particular entity, such as Toyota or Apple).
  • The product was not created by (some particular entity).
  • The product is good. (NB: of course good is another ambiguous term with many definitions, one of which appears to be innovative; the fun never stops!)
A Contrarian View This post charitably assumes that the purpose of the discussions I described, and the goal of the participants, is to arrive at a commonly agreed-upon answer to the opening question. In reality, though, most discussions on the Internet, particularly when they involve many anonymous or pseudonymous parties, are just tribal wars. Individuals decide which side to affiliate themselves with, then search for arguments that will tend to support their side or undercut the opposition. Facts and logic are largely irrelevant, except as weapons with which to smack one's opponents, and a dismissive put-down is as good as or better than a reality-based analysis. Actually changing your mind based on the evidence presented shows weakness, and is to be avoided at all costs. If you have to assert that up is down, do it. In this environment, using vague terms appears to be a bonus, since it gives you more wiggle room and opportunities to play gotcha!. If someone responds to your post with facts that rebut you based on the definition you were using, you can pick any other definition and say ...but what about..? Which is why these discussions (in which no-one is actually discussing anything) are both a fascinating window into human nature and a depressing commentary on human nature, and why I keep finding myself reading them.
PS: This post is the first long post that I've used ikiwiki to write. An advantage of my new workflow, where I write posts on the bus and commit them into a local git repository, is that I have a nice block of time to write down random thoughts that have occurred to me on the way to or from work; sometimes I forget what I was going to write over the course of the day, and when I get home I usually get deluged in email and real life. It's always amazing to me how long it takes to write posts when I actually think about what I'm doing. This post has taken me at least an hour to compose, and I think probably more (especially counting the composition I did in my head while, e.g., walking from point A to point B). It's a lot harder -- which means, of course, that it's fun; if I don't get distracted by a coding project, I'll be trying to take advantage of my new workflow to post more often.

Evan Prodromou: 8 Frimaire CCXVI

A few days ago I installed the Flock browser, version 1.0, on my notebook computer. I've been using it as my default browser for that time, and I have to say that I find it very slick and useful. I'd used the early beta versions of Flock and I thought it was a good idea, but I wasn't able to use most of the features. The blog posting tool, for example, doesn't work with my hacked-together WikiBlog system. Also, a lot of my must-have Firefox extensions, like SearchStatus, wouldn't install on Flock. But version 1.0 now installs all my Firefox extensions, and it also has lots of neat features that I find really useful. The feed reader, for example, is very slick, complete, and useful. The integration with social software sites like Facebook and Twitter is amazing, and the People View -- which tracks your friends on different systems -- is huge. The "My World" generated home page has replaced Netvibes for me. All good things. I'm a little disappointed with the narrow range of sites that are integrated into the browser, though. It'd be great to see more and better documentation on writing integration plugins on the Flock Developer site. I'd love to work on ways to make it easier to post to MediaWiki sites, upload files, get notifications, etc. I think getting site owners to make their own Flock plug-ins, or making it easy for users or third parties to do the plug-ins themselves, is going to be key to the success of these features. One other thing I found annoying was the indexer. This is a background task that indexes your browsing history so you can search for stuff you've recently seen ("Where did I read about that new version of JavaScript...?") Although this seems really useful, I found that the indexer was pegging the CPU on my Linux box -- possibly a threading problem? -- and I found the program increasingly unresponsive. Eventually I found the toggle in about:config to turn off the indexer ("flock.service.indexer.enabled"), and once I switched it off my browsing experience has been much less frustrating. I'd like to see Flock succeed -- it's a nice piece of work, and I think it's going down the right path. Getting more contributions from the world Web community will go a long way towards making it more useful for users. tags:

Yo Gamma Gamma Last night I dropped by the SAT for a great games event here in Montreal. Gamma 256 was a fun party, associated with the MIGS game summit. The event showcases submitted games based on a theme -- this year's theme was 256x256 pixel games (or smaller) -- thus the name. There were a ton of Montreal tech people there. The games were fun to play, especially the insanely violent Bloody Zombies, where your chainsaw-wielding alter ego slaughters the undead and then swims in their blood to reach the next level. Great fun, and a good example of Gamma's concentration on art in games. The music was good too -- lots of bleeps and boops and gamety fun. Congratulations to Heather Kelley and Damien DiFede and the rest of the Kokoromi Collective on their great job with this event. I'm already looking forward to next year. tags:

One-liners Some more things going on with me: tags:

29 November 2007

Colin Watson: aptitude safe-upgrade

Erich: I do sometimes wonder why we don't relax the definition of "safe" upgrades to include installing new packages but still not removing old ones. I know that many of my uses of dist-upgrade are just for when something grows a new dependency that I didn't previously have installed. (Of course this wouldn't always help as it wouldn't account for a new dependency that conflicted with an old dependency, but never mind. It would certainly do wonders for the metapackage case.)

Ross Burton: Dear Mark Prisk

I sent this last night to my MP as a followup to his reply to my original letter.
Dear Mark Prisk, Recently I wrote to you regarding the "homoeopathic hospitals" EDM, and your response included the following paragraph: "All therapies should be considered equally, and decisions on whether or not to provide them on the NHS should be evidence-based, as is the case with all other conventional medicines and treatments." I wholeheartedly agree that all therapies provided by the NHS should be judged on openly peer-reviewed evidence of their effectiveness, because otherwise we'd still be using leeches, performing exorcisms or practising blood letting. However, as far as I am aware there is no scientific evidence that homoeopathy is any better than placebo, so could you tell me where you saw the evidence for homoeopathy that you are using to justify homoeopathic hospitals because I'd like to see it myself. Indeed, evidence that it was in fact better than placebo would be welcomed with open arms by the scientific community, because this would open entirely new realms of both medicine and physics. Yours sincerely, Ross Burton

Russell Coker: Apprentices

Shintaro wrote an interesting post about Rakugo (a form of story-telling) and Mottainai (a particular form of gratitude that is now becoming an English word in reference to environmentalism) [1]. My definitions of the two words are poor, I encourage interested readers to read Shintaro’s post for the links. Recently I had been considering which jobs are most like a senior programmer position in terms of skills and the work environment. It occurred to me that a chess-master has a job that bears some similarities to that of a senior programmer. A chess master might play a Simul [2] which compares to a programmer or sys-admin fixing lots of small bugs at the same time. In a serious chess tournament up to seven hours may be on the time clocks - not an uncommon amount of time taken to find a subtle bug in a program. For quick chess games as little as three minutes may be on the clock for all your moves - similar to the situation where the network goes down and the CEO is watching you fix it. The intellectual abilities for playing chess and programming have many obvious similarities, memorising significant patterns to avoid re-calculation, having a large mental register set to allow considering complex situations or multiple possibilities at the same time, and being able to spend many hours thinking about a problem. With that in mind one thing that particularly interested me in Shintaro’s post was the reference to a Japanese apprentice system where “They are trained at his masters house from early years maybe after junior-high, living and caring his boss every day life, like Go or Shogi players“. I wonder how this could be used in other cultures and career paths (such as English-speaking countries and computer programming). Probably the “every day life” part wouldn’t be well accepted. When comparing with the high-school experiences that seem typical of people in the computer industry an apprentice program has a lot to offer. A small amount of pay (as opposed to school-fees) and an environment where laws apply (IE almost no bullying) are both significant benefits. Anyone who is reasonably intelligent is most likely to find that they can’t learn anything from the teachers in the final years of high-school because most teachers don’t know much about the subjects that they teach and in the instances where the teacher does know more the class environment doesn’t permit teaching more advanced material. Someone of average intelligence who has worked for 5+ years in an industry can always teach a beginner some useful things so there is some obvious potential to learn. There is a meme that apprentice programs only apply to trades not intellectual work. This meme is probably correct when applied to many categories of office work but seems obviously wrong when applied to computer work. My observation is that at most places where I have worked there has been a significant amount of time from the most productive, skilled, and highly paid people spent on tasks that are way below their skill level - and often requiring skills that they don’t have. One example is when I was working for an ISP in a senior sys-admin position, when things really went wrong on the network I was usually the person to fix them - but I spent moderate amounts of time fixing hardware problems with desktop PCs and some time fixing Windows networking issues (of which I know little). Some of the problems I fixed could have been fixed by a 16yo apprentice who would probably have taken less time to fix them while also having a much lower hourly rate - and in some cases may have done a better job). I’m not sure that having an apprentice assigned to an individual programmer would work well, but having one per team should. I have previously written about how to get the benefits of a university education without attending university [3] so I don’t think that the inability of such apprentices to attend university would necessarily be a problem.

Ondřej Čertík: Debian meeting in Merida, Spain

Right now, some Debian Developers (and also not yet Developers, like me:), are on
the work sessions in Extremadura, I am on the QA and release teams meeting.

We started in the morning with presentations (see also the schedule). Any comments and suggestions welcomed, please add comments below the post.

Lucas Nussbaum presenting:


Most of us:



And in details, names from left to right. Cyril Brulebois, Gon ri Le Bouder:


Luk Claes, Marc 'HE' Brockschmidt, J rg Jaspert, Lars Wirzenius:


Fabio Tranchitella, Bernd Zeimetz, Mario Iseli, Luk Claes:


Filippo Giunchedi, Stefano Zacchiroli, Tzafrir Cohen, Simon Richter, Faidon Liambotis:


And again, so that Faidon is visible:

28 November 2007

Benjamin Mako Hill: Errorism

I think that traveling extensively and working on my new blog Revealing Errors might make me an international errorist. My new life of errorism is, in any case, developing nicely. If you haven't yet, you should check the blog out.

Ross Burton: My MP Is A Fool

My MP finally replied to my letter where I questioned his signing of the Early Day Motion regarding homoeopathic hospitals. Whilst defending homoeopathy he said that doctors should be allowed to prescribe homoeopatic treatments, which I expect many homoeopaths wouldn't like as the homoeopath/patient interaction is pretty much where the cure is. Whilst I was still laughing at that, I came across this.
All therapies should be considered equally, and decisions on whether or not to provide them on the NHS should be evidence-based, as is the case with all other conventional medicines and treatments.
I'm about to write to him, asking for this evidence. I haven't seen any, and I'm sure the medical profession would like to see it too. NP: Burning Off Impurities, Grails

Lucas Nussbaum: Re: Two years of Python

Andrew writes about Python, Perl and Ruby:
Ruby has some nice things (like Perlish regular expression handling), but it brings back all that punctuation noise again.
He gives an example of punctuation noise in Perl:
I go back to Perl and my eyes bleed after trying to dereference a reference to a scalar, or something like that. It’s just ugly in Perl.
I don’t think that’s fair to compare Perl’s ponctuation noise with Ruby. Ruby has a feature that could qualify as punctuation noise, but it’s really a feature: variables are prefixed with their scope. For example, class variables start with @@ (@@var), instance variables start with @ (@var), global variables start with $ ($var), and constants are in CAPS. I don’t know if Ruby “invented” that, or if it comes from another language (it’s probably the case: Ruby takes a lot of good ideas everywhere). Also, Andrew, joining elements of an array in ruby is written myarray.join(” “), and Ruby has =~. So you should definitely give Ruby a try ;) No, seriously, Ruby is a really interesting language. It’s really a shame that it’s still so japanese-centric (most development decisions are taken on a japanese mailing list !!), since it’s not really help a wide adoption.

Russell Coker: Creepy Social Networking

Cory Doctorow wrote an interesting article about social networking [1]. One of his points is “Imagine how creepy it would be to wander into a co-worker’s cubicle and discover the wall covered with tiny photos of everyone in the office, ranked by “friend” and “foe,” with the top eight friends elevated to a small shrine decorated with Post-It roses and hearts“, another concerns the issue of forced “friends” where colleagues and casual acquaintances demand to be added to a friends list. He speculates that the reason for social networking systems to be a fad is that once too many people you don’t really like force themselves into your friends list then you will feel compelled to join a different service. I believe that the practice of ranking friends is simply a bad idea and wonder whether anyone who has completed high-school has ever used it seriously. If you publicly rank your friends then you will alienate other friends (particularly any who might have ranked you more highly than you ranked them). Everyone who has used social networking systems has discovered the pressure to avoid alienating people that you don’t actually like. It seems obvious that alienating people who you do like is even more of a problem. In my previous post about Better Social Networking [2] I suggested having multiple lists on your social networking server that are published to different people. That would allow segregating the lists as a way of dealing with some demands to be listed. People who are associated with work (colleagues, managers, and in an example Cory used students at a school where a teacher worked) would be on a work list. The work list would point to the work profiles of other people which would match whatever the standards are for the industry in question (which would still allow quite a range, the standards for sys-admins of ISPs differ significantly from those for primary school teachers). I’m sure that someone who worked for an ISP in Amsterdam would understand that a work-based friend request made to someone who teaches primary school in a part of the world that is religiously conservative would understand why that request would be declined (but the same person might add them to a personal friends list). Another way of alleviating such problems is to not require that listing be bi-directional. Current social networking systems involve one party making a friend request to another which is listed as pending in the GUI for both parties. The options are to either leave it in that state (which is an annoyance) or reject it (which may cause offence). With a uni-directional listing one party would add the other and hope for the best. If they aren’t obsessive about such things they may not even notice that the other party didn’t reciprocate. Also it would allow for famous people receiving links from many people to their public profile without any expectation of reciprocation. Of course a distributed social networking system such as I suggest would inherently have uni-directional links as there would be no central repository to force them to be all bi-directional.

26 November 2007

Steve Kemp: You're making me live

Is there an existing system which will allow me to query Apache logfiles via an SQL string? (Without importing into a database first). I've found the perl library SQL::YASL - but that has a couple of omissions which mean it isn't ideal for my task: Still it did allow me to write a simple shell which works nicely for simple cases:
SQL>LOAD /home/skx/hg/engaging/logs/access.log;
SQL>select path,size from requests where size > 10000;
path size 
/css/default.css 13813 
/js/prototype.js 71261 
/js/effects.js 37872 
/js/dragdrop.js 30645 
/js/controls.js 28980 
/js/slider.js 10403 
/view/messages 15447 
/view/messages 15447 
/recent/messages 25378 
It does mandate the use of a "WHERE" clause, but that was easily fixed with "WHERE 1=1". If I could just have support for count I could do near realtime interesting things... Then again maybe I should just log directly and not worry about it. I certainly don't want to create my own SQL engine .. it just seems that Perl doesn't have a suitable library already made which is a bit of a shocker!

Maximilian Attems: Sony VGC Ubuntu Install

This Sony 22' display is fun to watch movies or tv. Installed Ubuntu on such a all in one desktop for a friend. As much as Debian improved visually thanks to newer Gnome and good upstream tango icons. I'm much less impressed by the visual appearance of Ubuntu 7.10. The compiz stuff is fun of course, but the replaced icon sets seem like a regression nowadays.
The logout buttons seem uglier and more misplaced then the usual Gnome ones, same story with the orange openoffice.org or the gnome menu icons. Restricted-manager failed in strange loops due to no initial network availability. Network-manager seemed to write settings to the correct file for static ip setup, but didn't actually set up the network. Also the "play Dvd" usecase seemed not much easier then in Debian. Only bonus is the python apt sugar "Add Remove Applications".

Miriam Ruiz: gkismet

Gkismet is a GTK GUI fontend for Kismet wireless sniffer. It is helpful because it allows you to display more data to the screen at once than the curses client shipped with kismet itself, and is conveniently useful to connect to multiple instances of kismet. There are however additional system requirements and a graphical environment in order to run it. I needed gkismet for myself, so I decided to properly package it. I’m not sure if I want to put it into Debian, as it seems to be unmaintained upstream (“Rather than trying to fix the problem with unbalanced quotes in Kismet data I am going to wait and see if I can re-write the whole thing in Java.”). In any case, I thought it might be useful for someone else, so there it goes.

Pierre Habouzit: git-commit(1) vim ftplugin update

Dear vim-ers, yes I know my git.vim ftplugin was kind of a dirty hack, and that it didn't worked that well. Since a few days, git.git next branch shows relative paths in git-status(1) and that was the last hit to my already not that stable hack. So I raised the question on the git mailing list on how to do that plug-in properly, and it happens there is a perfect solution, that was here from day 1 So here is a new release of the plugin that uses the special index[1] git-commit(1) builds for the occasion, hence can use git-diff(1) directly instead of parsing clumsily the commit buffer. Direct benefits:
Notes [1] or commit staging area ;D

Andrew Pollock: [life/americania] Thanksgiving below zero

We got home from our week in Arizona late last night. We decided to drive non-stop yesterday, and get home in a day, rather than split it over two days like we did getting there. It ended up taking around 15 hours (we had an unexpected delay at Lost Hills because we found a stray dog (we initially thought it to be injured to boot) and Sarah was trying to get hold of some local animal control people to do something about it), otherwise it'd have taken closer to 14 hours. The drive to Phoenix was pretty uneventful. We took our time leaving Mountain View on Sunday (we had an early Thanksgiving dinner with all of our neighbours on Saturday night), and decided to call it a night at Cabazon. For about the same price that we stayed in a crappy motel last time we went this way, we stayed at the Morongo Casino, which was really nice. We were in a "Canyon View" room, and, well this is what the view looked like... We arrived at Craig and Sarah's place at about 5pm on Monday afternoon. Their new place is really nice. It's huge, with a huge yard, and a nice view of the hills. I've found suburban Phoenix (well Peoria to be precise) to be the closest looking thing to what I consider "normal Australian suburbia" that I've seen so far in the US. Granted, Peoria's a bit upmarket (at least the part that Craig and Sarah live in). So we spent a day and a half vegging out at Craig and Sarah's place, then on Wednesday afternoon, we headed off to Woods Canyon Lake, in the Sitgreaves National Forests. I rode most of the way with Craig in their new motor home, and then swapped to drive our car after we got close to our destination. It turns out that the headlights in RVs are universally crap, so it was better for the Prius to be out front lighting the way on the gravel road. I'd always associated Arizona with cacti and sand, but as it turns out, the majority of the state is forest. We arrived at the campsite after nightfall, and set up shop. We met some of Craig and Sarah's friends that night, who were all very friendly towards us. It was ridiculously cold that night. We went to bed rather under-dressed for the temperature, and absolutely froze. The next day (Thursday), we all drove from the campsite (Craig towed their Jeep behind the RV) to Woods Canyon Lake itself, and went fishing. Arizona fishing licences for non-Arizona residents were a bit on the expensive side, so Sarah and I just hung out on the rocks and chatted to people and took photos. The collective haul of trout from about 5 hours fishing was pretty impressive. I'm not quite sure why, but Friday was the group Thanksgiving dinner. Everyone pitched in, and cooked up a storm. They deep-fried three turkeys (which came out very nice and looking much less like KFC than I expected), and we had way more food than we needed. We all ate outdoors at around 3:30pm, and it was about 33°F (0.55°C). The only downside of this (aside from it being bloody cold) was the leftovers went cold almost instantly, so going back for seconds was a bit of a disappointment. Everyone gravitated back to the fire pretty quickly afterwards. It got pretty cold that night. I think it was down around -4°C when we went to bed that night. We left a bit before 8am the next morning, and the car thought it was -7°C outside. One of the other campers told Sarah his thermometer was reading something closer to -14°C. I'm not sure how cold it was when we were in New York in January, but I didn't think it was that cold. It was a good week away. The mix of camping and not camping was about just right. Now it's back to work for two weeks before we head off to Australia. Photos from the trip are here.

Next.

Previous.