Search Results: "tar"

5 December 2007

Andrew Pollock: [life] Queensland dragged kicking and screaming into the 60's

I'm pleased my home state of Queensland (which bills itself as the Smart State) has finally decided to start fluoridating its water, a move the rest of the country made back in the 1960's and 1970's. Hardly surprising I guess, when the No campaign for a referendum on daylight saving involved a fear of the curtains fading from that extra hour of sunlight... I remember when I was little, my Mum used to give me fluoride tablets. Dentists to this day, who have known I've grown up in Brisbane, have remarked how they can tell by my teeth that I've had fluoride as a kid. Apparently ones teeth are noticeably different (for the better) if fluoride has been involved.

Kartik Mistry: Foss.in: Debian/Ubuntu Project Day

* I was too tired to write this yesterday. Yes, it was very hectic day (but great fun!). Things started very well. Sam and Bubulle did great presentations (specially, this slide from bubulle’s presentation!). Problem with G0SUB’s laptop lead our workshop in very bad situation but Karunakar’s laptop made life easy by some percent! Thanks to him!! Personally, I will not say anything about last two talks, but we have to be very careful next time :( * Congrats to Varun for being 4th Indian Debian Developer! Yeppie!

Sylvain Le Gall: Thinkpad X60s configuration (ipw3945, network-manager, hda-intel...)

I spend quite a long time to fully configure my new Thinkpad X60s laptop. This will be my work computer and i wish to use Debian Etch on it. Since it is for my job, i want to use a stable debian release. The aim of this laptop is to always have something that works -- to keep focus on my job. The configuration was tricky because there is a lot of people reporting that everything works with this laptop, but not a lot of people describing problems they encounter. Here is a list: Sound:
   hda_intel: azx_get_response timeout, switching to polling mode 
   hda_intel: azx_get_response timeout, switching to single_cmd mode 
It prevents to have the sound working. The problem is related to the modem. You need to be sure that the modem is enabled in the BIOS. ipw3945: The WIFI driver of etch doesn't work well. To fix this, you must get the version 1.2.2 of ipw3945-source and rebuild it with module-assistant. I also use firmware-ipw3945 from unstable (v0.7) but I am not sure this is a firmware issue. network-manager disconnects every 10 seconds or so: This bug was pretty annoying. The wifi connection was good with wpasupplicant alone (or at least seems to be OK). With network-manager-gnome i keep getting messages about connection and disconnection every 10 seconds. The solution is to remove everything which is related to bluetooth. This really improves the situation a lot! (i.e. i am not having disconnection messages for at least the time i am writing this blog entry).
 apt-get remove --Purge bluez-utils bluetooth
in file /etc/modprobe.d/myblacklist:
 blacklist bluetooth
and run:
 update-initramfs -u
"linux is an HDD killer": You need to copy /etc/acpi/start.d/90-hdparm.sh from unstable and place it in /etc/acpi/ suspend resume start .d. This prevents an increase of the Load_Cycle_Count. Now the laptop seems stable, the wifi connection is up and running -- let's start working (again).

Matthew Palmer: Strategists and Tacticians

Like most things, the scale of decisions that have to be made by a person or organisation fall across a wide spectrum. At one end, you've got the fine-detail work: lines of code, individual config settings, IP addresses, that sort of thing. This is crucial work, because it's this detail that ultimately produces saleable results. Travelling all the way to the other end, there's the "big picture" decisions: the "visionary" stuff. What market segment will we target? What will we do (in large-scale terms) to get there? I am convinced that individuals naturally gravitate towards one end of this spectrum or the other, depending on their psychology. While people usually can work at all scales, they have a "most comfortable" point where they work the most naturally. The further away from this point they are pushed, the less comfortable and effective they are. No level of thinking is better or worse than the other; they're just different. While "large scale thinker" and "small scale thinker" could be taken as being insulting, I certainly don't mean it that way. I should point out that "Strategy" isn't (just) about setting goals. A strategist isn't someone who comes out with grand pronouncements like "By the end of next year this company should be providing telecommunications services to 20% of the Fortune 500" without knowing how to get there. That's not a strategist, that's a poor-quality management consultant. People whose only skill is making vague pronouncements should just be taken out and shot. They're not doing anything useful for anyone. A strategist is someone who is good at planning the goal of "20% of the Fortune 500". They're thinking about the big picture issues, without getting bogged down in the minutiae. A tactician, given the job of planning something at the macro scale, will chase some good idea down an intricately detailed rabbit hole, and miss the other dozen or so large issues that need to be considered. The strategist's planning needs to stop at a certain level and let other people take on the detail work. Conversely, a good tactician can focus on the individual details without getting distracted by the big picture. A strategist put into a tactical role will miss all the important minutiae because they're working out how their little part fits into the big picture, instead of working out how to make their little part work, in and of itself. It's important, for individual happiness, to try and work out what level you're most comfortable thinking at, and then trying to find a job that puts you there. It's almost as important to make sure that the people who are working at the more and less detail levels around you are equally comfortable. Take, for example, the micromanager. We've all either been there ourselves or have heard multiple stories on the subject. I think the micromanager is nothing more than a person who wants to work at a smaller scale than they're being forced to by their organisational rank. Since they can't do the detail work any more, their only outlet is working vicariously through their subordinates. Voila! Instant micromanagement. An even more painful case of micromanagement would be when the subordinate wants to think at a larger scale than the superior. In that case, the subordinate will naturally be thinking large scale, and will miss the details. To the small scale thinking superior, that is incompetence, and will naturally be dealt with by more micromanagement. In reality, both parties are incompetent at their jobs, and they should really swap roles, so that everyone is in their element. It would be nice if companies stopped thinking hierarchically in this way -- that a more "senior" person has to think at larger levels. Just because you've been somewhere longer (or have been working in an industry longer, or got higher marks, or whatever), it doesn't mean that you're more of a strategist. This is probably the Peter Principle restated: people get promoted to a level where they just can't comfortably think at the necessary scale any more. If instead people were put into a planning hierarchy based on their natural scale of thinking, we'd all be a lot better off. There'd be a lot less power games, though, which makes me think it's not going to happen any time soon. A business, at whatever size it might be, needs an appropriate mix of strategists and tacticians. A really small business (1-10 people) can get away without needing large scale thinkers, in the same way that a really small boat can get away without needing a rudder or pilot. If a really small boat gets itself into trouble, everyone on board can grab an oar or bucket and help get the boat out it's predicament -- it's small and nimble enough to be able to do that. As the company expands, though, it's important to make sure you've got some strategists around. If you don't have anyone to keep an eye out for problems and plan around them, your small-to-medium sized boat is likely to have a hole punched in it by a submerged rock. Even if somebody on board happens to notice the rock before you actually hit it, once you get to a certain size you can't physically stop or turn the boat in time. If you don't understand the growth issues in the company, you might not even realise that you're no longer the nimble and low-inertia dinghy until you're up to your knees in sea water. Although an obvious solution to this problem might be to say that all businesses should be small and nimble ones, it's as impractical as saying that all boats should be dinghies. A fleet of dinghies isn't going to be able to support the worldwide sea freight market, and a fleet of small companies doesn't have the necessary resources on hand to take on the big projects that are so often needed. Also, a dinghy is at risk of being swamped by one freak wave, while a larger ship can weather significant storms without going under. Regardless of the size of the business, there always needs to be a good supply of tacticians. A boat (of whatever size) full of people who are all looking out for rocks isn't going to go anywhere, because nobody's making the thing move. Similarly, a company full of strategists isn't going to be doing any of the day-to-day work that actually earns money, and no money means no company. The single most important thing, though, is be self-aware enough to know what sort of person you are, and try to find something that lets you work at the level you're most comfortable at. Otherwise you're just setting yourself up for unhappiness.
(I'm not really sure why I'm suddenly writing management blog posts; this idea of "levels of thinking" just came to me and I figured I'd put it out there. If it makes you feel more comfortable, there's a fairly transparent mapping of these ideas to the practice of software development, although I'll leave the execution of that mapping to the reader. Comments are welcome.)

4 December 2007

Eddy Petrișor: wiki.d.o theme -is it bad timing or too late?

I have been working recently working on the wiki.d.o theme; this work was started last year around May - June and I halted it due to lack of time. The point was (opposed to what many might have thought) to make a theme that looks like the www.d.o theme.

Currently the TODO is outdated, so here is an updated one (I'll update it and push it there, too):
There are some screen shots with the current theme as seen on Opera, Epiphany (for some reason sometimes different from iceweasel) and MSIE 6.0, but here are again since I expect that my public darcs repo will change:

In MSIE (by far the most annoying browser and creates the most issues):


In Opera:


In Epiphany (the window was smaller, the content isn't bigger):

If you want to contribute, you can:

darcs get http://users.alioth.debian.org/~eddyp-guest/darcs/wiki.debian.org_theme

read the README to understand what matters, and tackle one of the items on the TODO list above.



I found it pitiful that Zack has based his PTS rework based on the wiki.d.o default theme since that theme is, in my opinion the one that should be corrected (at least the colors should be).

I am not an expert in aesthetics and i don't claim that the www.d.o theme is beautiful, but it seems that the recurrent discussion of it being replaced with something better never found a person to make it true. This is one of the reasons I stopped last year since it seemed the dream would come true at that time.

Ondřej Čertík: M rida - wrap up

From November 28 till December 2, 2007, I attended a Debian QA and release teams work session in Extremadura, which is an autonomous community of western Spain, that managed to install Debian on 90000 computers in every school (technically a Debian based distribution called gnuLinEx) and Junta de Extremadura also sponsored this meeting.

I took photos of all participants, see my first, second and third posts. When I arrived at the Madrid airport where we first met, I set myself a goal to remember all names and faces, so I used my blog to help me and I think I succeeded in the end. :)

See also our wiki page that we used prior and during the meeting.

So what did we do besides throwing candies?


Lucas Nussbaum will send a summary email soon about the meeting, so I'll just speak for myself:


I worked with Gon ri on svnbuildstat, that is a service for building packages and show statistics about lintian/linda/piuparts checks. It for example contains all packages of the Debian Python Modules Team (that I am a member of) and many others. We discussed and started to work on how to create robust buildbots, that can be installed as a regular Debian package with zero (if possible) configuration, so that many people can just install them without pain, thus providing a huge scalability to the project.

We wrote a preliminary patch to pbuilder for killing the build if it exceeds given memory/disk usage. I had to learn the internals of pbuilder and I lost quite some time squashing some stupid bug I caused while writing the patch.

I spent most of my time with svnbuildstat, mostly learning and discussing things. This will be important for the future, but to also have some real results, I also fixed some packages I comaintain:

Together with Kumar Appaiah we fixed the python-numpy package and I had it uploaded, then I learned how to work with quilt instead of dpatch to handle patches in Debian packages, thanks to Holger's webpage, that contains a nice tutorial. Then I switched from dpatch to quilt in python-scipy and backported a patch from upstream svn to fix a segfault bug and had the package uploaded.

Then I finished the Cython package and had it uploaded. Cython is a marvelous package to speed up Python programs and interface C/C++ programs. I greatly recommend to try. If you don't like it, you can try some of at least 10 other ways to wrap C code in Python. I also used quilt in there to backport a patch from the upstream Mercurial repository to implement parsing @classmethods. Quilt is really a pleasure to work with.

Impressions from the meeting

I've been using Debian since 2001 as my only operating system on all of my computers, so I am not a complete beginner. But it never occured to me I could get involved in Debian more than a user and an occasional bug reporter. What a mistake.

I started packaging new things and fixing packages that I need for my work and that didn't work. This got me involved quite a bit in Debian. But in M rida it was the first time I could dring a beer (well, especially wine) with Debian Developers and I found out they are really cool people. They are all very skilled. Also something, that I love about Debian, is that the people involved in it share two common features, that are very important for them - respect to democracy and personal freedom. When I think about it, those are probably the first two items on my presonal list of values.

Of course, everytime there is a group of 1000+ people, there are good and bad people, more and less skilled, but important is the overall atmosphere - and that is as I described. I think Debian is truly unique. There is Gentoo, that has maybe 40 (?) active developers. There is Ubuntu, that has maybe 100 (?) developers, but it's basically a comercial distribution and there is not so many interesting work for non employees of Canonical. There is opensuse and fedora, where I am not sure about the numbers. The atmosphere in Debian can change in the future, one never knows, but as of the end of 2007, I think it's very cool to get involved.

Maybe it's not for everyone, but it's the right place for me.

Evan Prodromou: 13 Frimaire CCXVI

I'm organizing a micro-coworking session here in Montreal for 6 December (15 Frimaire). "Micro-coworking session" is just a fancy way of saying "hanging out together and working at a caf ". Folks will be meeting in the back of Caff ArtJava from about 9AM to about 5PM. More info on the subStation Coworking event page on Upcoming. The event is for people interested/involved in (or supportive of) Station-C, the incipient Montreal coworking facility scheduled to open in February 2008. But everyone's welcome to come by -- heck, we'd have a hard time keeping you away. tag:

Private and public life in the age of Facebook One of the things I find interesting about life on the Internet is the distinction between public and private life. So much of our lives are on-line today; for many of us, the Web is where we make our living, make our friends, enjoy our social life, and plan our off-line activities. But what about those personal activities that don't jibe with our intended professional image? If we have out-of-the-mainstream political or religious views, or unorthodox social activities, how do we keep them to ourselves? How do you talk about things on-line with friends that maybe you don't want your parents or other family to know about -- or vice versa? How do we preserve our reputation in more than one sphere, in situations where those spheres are very different? I think there are a number of strategies for doing this.
  1. Be discreet. In other words, just don't put personal stuff on the Web. Keep up your professional image at all times, and don't use Web sites or tools to make connections in more private ways. This is probably the safest strategy, and the one that most privacy groups and media recommend. But there are some downsides, too. You miss out on the Web's power to enhance your life as a well-rounded human being -- your personal life languishes for the benefit of your professional one. You give up on some important opportunities to connect with other human beings in a deep and meaningful way. Especially if your interests are shared by only a small percent of the human population, it's unlikely you'll run into other people who share them off-line. I also think there's something unhealthy about stifling your personal side for your professional life's benefit.
  2. Use pseudonyms. Another way of being "discrete" -- here, I mean separated into different parts. I think this is one of the most common ways to deal with the problem. Use your "real name" for activities, groups, and opinions that you feel safe presenting to the world at large, and use made-up names or handles for activities you might not feel like discussing at a job interview. This can be very successful, but also nerve-wracking. What parts of life require a "secret identity", and what parts don't? What if one part of your life leaks into another? It can also be tedious to set up, say, two or three different Flickr accounts, two or three Facebook accounts, umpteen blogs, etc. Or, you keep a LinkedIn account for work and a MySpace one for your partying set, and hope that Google doesn't make a link between the two. But you can get sick of managing them, and other people don't know which name or pseudonym to use and when to "out" you to their other friends.
  3. Integrate. By this I mean: let your personal and professional life grow together. Decide what parts of your personal life you're willing to make public, and bring them into your public persona. Parts of your life that you don't feel you can integrate, consider letting go of. I think this can be risky and difficult, but ultimately I think it's the most healthy psychologically for people who spend a lot of time on the Web. Most often, these people either work for themselves and don't have to answer to others, or they work in industries where offbeat or out-of-the-mainstream lifestyles are tolerated or encouraged (or the need for highly-skilled people makes those "quirks" easier to ignore). Or they just gamble that nobody at their work or in their family is really checking (quite often the case).
  4. Wait for better software. I think the main reason that this is a problem is that social software developers aren't very good sociologists. Or, rather, we focus on the software rather than on the social. It would be nice to see the next generation of Web services support the multiple facets of a person's life. I'm an Open Source fanatic, a Web developer, a wikitista, an entrepreneur, a father, a Burner, a Montrealer, a man, a prankster, a partier and a cook -- among many other things. How can social software, or a federation of services, let me reflect these different aspects of my personality to my friends, coworkers, colleagues, relatives and strangers? Could I define finer-grained relationships with others than just "friend", and choose what parts of my life to feature or downplay with each? It's a fascinating design and implementation question, and my hope is that someone will take on the challenge in the future.
I think this is a situation where our society and our software both need to evolve and change. It would be nice -- very nice -- if edgy politics or weirdo culture didn't hurt your chances of advancing in your chosen field. And if friends, family and colleagues could accept us all for who we are, in all our parts. But it will also be nice if software and software usage patterns on the Web let us find a way to adapt to that, too. People have lots of different parts and lots of different personae that they inhabit at different times and in different contexts -- it would be great to match our social software more to that reality. tags:

One-liners Some other things to note:
  • Montr al has had an insane amount of snow in the last few days. I dug out our car for about 90 minutes this morning, and drove for hours in snow-blind traffic. Not an easy time, but boy the city is lovely like this.
  • I'm doing a talk on extending MediaWiki at the PHP Qu bec meeting this Thursday, Dec 6. Meeting info is here.
  • Pictures from Montreal Santarchy are available on Grimmwire's Santarchy Montreal 2007 set. Great group, fun crowd, loooooong night. Oh boy.
  • Speaking of SantaCon, Santarchy in Second Life sounds totally nutso.
  • My server overload problems seem to be getting better. I moved Vinismo to its own server on Amazon Elastic Compute Cloud. I also moved SonaUiki and the Br leurs site to GoDaddy, where I have a ridiculous number of free Web hosting credits. It worked surprisingly well, and GoDaddy supports PmWiki out-of-the-box. Nice! Update: Apparently GoDaddy adds a whole bunch of ads in on their free Web hosting. I didn't notice; I have Adblock Plus installed. Gar. I'll have to move these sites back pronto.
  • My light and convenient Toshiba Port g R200 has been throwing I/O errors. So I gotta get a new hard drive. Good news: the thing's still under warranty (yay!). Bad news: I gotta drive through this miserable weather to a place in St. L onard to get the HD replaced. Boo!
tags:

Otavio Salvador: A Resume made easy

It was a very long time ago since I did my last resume and never found the energy to update (or translate it to English) so I thought it was nice to have this kind of information about myself. It was nice since it gave to me a nice impressions of events I participated and like. I’ve decided to do my resume using LaTeX (I use it for majority of my documents) and started to browse the web to find something useful to use as basis. I ended up finding Making a Resume in LaTeX and liked the final result. I then wanted to have it in English and Portuguese and them I remembered about po4a that makes that task very easy :-) I ended changing Adrew’s style to a class and writing a cuple of Makefiles to automate all this. All well done :-D I suggest that anyone interested on it to take a look on the GIT repository and also provide tips about how to improve it. I hope it’s useful to anybody else :-D

3 December 2007

Michael Prokop: git[-svn] in 30 minutes

… or something like that… I planned to write a short note about how to start with using git-svn so I can provide a pointer to some of my colleagues. It turned out that git has too many nice features that you should be aware of. :) Hopefully my notes (now being a reference for myself as well, thx to gebi for all the help and feedback) are useful anyway. If you think something (more or less essential, or at least something most of us should be aware of) is missing: please feel free to mention that in the comment section of my blog entry, thanks. Disclaimer: I’m still happy with mercurial for what I - and we at grml in general - use it: linear, but anyway distributed development. git on the other hand provides some really nice features. Rebasing and branching with git is really great - so non-linear development just works. As usual: use the right tool for the right job. git is a bit complicate to use. Not only but especially in the beginning. On the other hand I’m not such a big friend of subversion. If you wanthave to use subversion (Graz University of Technology for example provides a svn service to their students and employees) but prefer to work with git instead you should be aware of git-svn. git-svn gives you bidirectional operation between subversion and git. First of all make sure you have all you might need when working with git. Make sure to use a current version of git (I’m refering to version >=1.5.3). Just execute the following command line on your Debian system to install all relevant packages:
aptitude install \
git-buildpackage git-core git-cvs git-daemon-run \
git-doc git-email git-gui git-load-dirs git-svn \
gitk gitweb qgit
Now let’s start with some general and basic configuration:
# Remove directories from the SVN tree if there
# are no files left behind, configure it globaly:
git config --global svn.rmdir=true
# Want some more global, personal git configuration?
for line in  
  user.name=Michael Prokop 
  user.email=foo@example.invalid 
  color.diff=auto 
  color.diff.new=cyan 
  color.diff.old=magenta 
  color.diff.frag=yellow 
  color.diff.meta=green 
  color.diff.commit=normal 
do
  git config --global $line
done
Check out man git-config for much more details about configuration options. First tip: set ‘g’ as an alias for git so you don’t have to type that much. I’ll write the long version in the following examples so copy/paste works for everyone. Make sure to use the short options of git itself as well: use ‘git co’ for example instead of ‘git checkout’. You can define your own aliases inside git as well - either manually in ~/.gitconfig or running something like:
git config --global alias.st status
Enough pre-configuration for now. It’s time to checkout the SVN repository:
# Check out the SVN repository and set 'svn/' as
# prefix for the branches:
git svn clone -s --prefix=svn/ \
https://svn.tugraz.at/svn/$project foobar && 
cd foobar
# Adjust svn:ignore settings within git:
git svn show-ignore >> .git/info/exclude
# List all branches:
git branch -a
# List all remote branches:
git branch -r
# Rebase your local changes against the
# latest changes in SVN (kind of 'svn up'):
git svn rebase
# Checkout a specific branch:
git checkout $branch
Ok so far? But what do we have to do if we want to work on the upstream source and are allowed to commit/push directly to the repository? Let’s see how to work on that without using branches:
# Hack:
$EDITOR foobar
# Check status
git st[atus]
# List diff:
git diff [foobar]
# Commit it with a commit message using $EDITOR:
git commit -a
# Now commit your changes (that were committed
# previously using git) to SVN, as well as
# automatically updating your working HEAD:
git svn dcommit
But what should we do if we do not have commit rights? Let’s create our own branch and send a patch via mail to upstream:
# Make a new branch:
git checkout -b mikas_demo_patch
# and hack...
$EDITOR
# Commit all changes:
git ci -a -m 'Best patch but worst commit msg ever'
# ... and prepare patch[es]:
git format-patch -s -p -n master
# Now send mail(s) either use git-send-email:
git send-email --to foo@example.invalid *.patch
# ... or if you prefer mutt instead (short zsh syntax):
for f in *.patch ; mutt -H $f
You got a mail from someone else and would like to incorporate changes from the attached patch in your repository? Just store the mail in a seperate mailbox (use save-message in mutt for example, keybinding ’s’ by default), then execute:
# Apply a [series of] patch[es] from a mailbox
git am /path/to/mailbox
Want to work on a seperate branch and rebase your work with upstream?
# First of all make sure to use recent sources...
# So pull when using plain git:
git pull -u
# .. or when using git-svn use:
git svn rebase
# Then create a new branch:
git checkout -b mika
# Hack:
$EDITOR
# Commit:
git ci -a -m 'Best patch but worst commit msg ever'
# Switch to master branch:
git checkout master
# Pull again when using plain git:
git pull -u
# .. or when using git-svn use:
git svn rebase
# Finally switch back
git checkout mika
# Now rebase it with plain git using:
git rebase origin/master
# ... or when using git-svn:
git svn rebase
# Now check out the last 5 commits:
git log -n5
Another branch-session might look like:
git co -b foo
$EDITOR
git ci -a -m 'foo changes'
git co master
git co -b bar
$EDITOR
git ci -a -m 'bar changes''
git co foo
git rebase bar
git log -n5
git st
git branch
Pfuhhh? Right. :) Now it’s time to check out another cool feature: git stash, which is just great when pulling into a dirty tree or when suffering from interrupted workflow. Demo:
git stash
git pull / fetch+rebase
$EDITOR # fix conflicts
git commit -a -m "Fix in a hurry"
git stash apply
git stash clear # unless you want to keep the stash
git reset rocks as well:
# List all recent actions:
git reflog
# Now undo the last action:
git reset --hard HEAD@ 0 
How to get rid of branches?
# Delete a branch. The branch must be fully merged:
git branch -d remove_me_branch
# Delete a branch irrespective of its index status:
git branch -D remove_me_branch
# Delete a remote branch:
git push reponame :branch
Repack a git repository to minimize its disk usage:
git pack-refs --prune
git reflog expire --all
git repack -a -d -f -l
git prune
git rerere gc
Use git cherry to find commits not merged upstream. Another really cool feature is the interactive rebasing: git rebase –interactive Make sure you are aware of gitk: Screenshot of gitk … and don’t forget to set readable fonts for gitk, like:
[ -r ~/.gitk ]   cat > ~/.gitk << EOF
set mainfont  Arial 10 
set textfont   Courier 10 
set uifont  Arial 10 bold 
EOF
If you prefer a Qt based interface check out qgit. Useful ressources:

Enrico Zini: mod-proxy-html-and-gzip

mod_proxy_html and compressed pages After putting it behind a reverse proxy, our phpmyadmin setup started showing empty pages. After one morning of deep cursing, this is what happened:
  1. the web server where phpmyadmin runs generates compressed html pages;
  2. modproxyhtml tries to edit them, and "normalises" them, adding <html>...</html> headers around the compressed data;
  3. Firefox fails to decompress because there is extra garbage, and shows a blank page instead of complaining.
Other things to note: How I found it:
  1. nc -l -p 444;
  2. configure mod_proxy to send connections to netcat instead of the web browser;
  3. compare curl headers and Firefox headers;
  4. add the headers from Firefox to curl one by one, until the output breaks.
How to solve it:
  1. a2enmod deflate
  2. Replace SetOutputFilter proxy-html with SetOutputFilter DEFLATE;proxy-html;INFLATE so that we always have mod_proxy_html work on decompressed HTML.

Miriam Ruiz: Software patents are buggy

Patents are the best way to improve development, and software inventors have just the natural right to their algorithms and designs. Research and Development in industry wouldn’t just work without patent protection, and technology improvements would just stop, right? Well, I’m not so sure of that. Key arguments against software patents, stolen from Pieter Hintjens’ article:

Edd Dumbill: Smartcard authentication on Linux and Mac

For various reasons, I need to secure access to some resources using two-factor authentication, and thus have been looking at smartcards. These little devices store digital keys and certificates, protected by a passphrase, and calculate digital signatures on-device. Hence the two factors: possession of the card, and knowledge of the password.This sort of scheme is widely used by government agencies and large corporations (and largely reliant on Windows, too), but I wanted to find the low cost way in for the small operator using open source.
OpenSC on Linux
The best starting point for Linux is the OpenSC project. It supports a reasonably broad array of devices, and is well supported by Linux distributions. Using command line tools you can create keys and certificates, as you would in OpenSSL for web servers and so on, and then upload them to the smartcard.Although OpenSSH source code has support for OpenSC, it is not compiled in by default in Debian and derived distributions. Unfortunately this means a bit of recompilation to get SSH supporting OpenSC. When that's done, you have an SSH implementation that can use an RSA key from your smartcard, and best of all, you can add this key to the ssh-agent like you would with regular keys. The hardwareI ordered two devices, which seemed to have the best support from OpenSC, the Axalto Cryptoflex E-Gate, and an Aladdin eToken. I got these from UsaSmartCard, who have a special section in their catalogue for Open Source compatible products. Both these cards have a USB interface built-in, I didn't want to be toting around an extra card reader in addition to the tokens themselves.
On the MacWhile both the devices worked as advertised under Linux, the experience has been a lot less fruitful under Mac OS 10.5 Leopard. There is a port of the OpenSC project for Mac OS, called SCA. The promise of the integration is great: you can use the on-device keys with apps like Safari and Mail, but there is a change in the way that the daemon responsible for talking to the smartcards (pcscd) works on Leopard, which means OpenSC won't recognise the cards.
With some fiddling, I have managed to force the Cryptoflex device to work with Mac. Unfortunately the Leopard/Darwin source for OpenSSH has diverged significantly enough from the upstream OpenSSH, that I couldn't apply the OpenSC patches. Not having ssh-agent work with the smartcard is a significant nuisance for me, as it's the easiest way to patch in the extra security to deployment processes.The Aladdin eToken just plain didn't work on Leopard. There is a report that Aladdin are working on Leopard drivers, however.I think a small number of mainly US federal smart cards will work out of the box on Leopard, though I've seen a few complaints about these on the Apple forums. It loooks unfortunately like smartcard support slipped through the net a bit. ConclusionSmartcard support is relatively straightforward on Linux. On Mac OS 10.5, it looks like some waiting is in order before things will work properly.

Kartik Mistry: Debian Flyer

* Jaldhar started Debian-Intro project sometime back (I saw this as pamphlet in Indic Developer Meet in 2005!). And we wanted this for Foss.in. I created branch for Foss.in and we have it ready (only small changes, really!).

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.

Biella Coleman: The other AAA s

The (overpriced) Amtrak train is rapidly hurling itself north toward New York City, the vanishing light gently illuminating the first snowfall of the year. I am heading back from the American Anthropological Association annual meetings, which were held in Washington D.C this year. After a year’s hiatus, I attended to present a short version of my paper on hacker conferences, which I have pushed along further to entertain more general questions and ideas about the role of conferences in ensuring forms of solidarity among publics that are dispersed geographically. While there are other events that are far more visceral or more profoundly produce what Emile Durkheim has called collective effervescence, conferences are probably one of the most common social forms for ensuring a steady state of moral solidarity among connected but geographically dispersed groups of people. Their importance and role is often overlooked, I think, because of their sheer ubiquity (and I am sure the fact that many are held in creepy corporate hotels populated by seriously over sized & gaudy furniture where you can sit and sip your overpriced Starbuck’s coffee does not help). But it is because they are so common that I think we need to take them a little more seriously as distinctly 20th century events that combine much older elements of ritual and pilgrimage. Because I have attended so many developer and hacker conferences, which tend to be longer as well as far more more enveloping, festive, and, frankly, well executed than academic ones, I tend to think of academic conferences as tepid, lightweight versions. But as I make my way back home, I am pretty worn yet inspired from this one as I decided to sort of let go to give it my all, sleeping far less than I really should have. I usually hold back some, perhaps because most academic conferences I attend are smack in the middle of the academic year, so my mind is partially occupied with the pile of work that awaits me, somewhat depressingly, at the end of your journey. Academic conferences can also produce a fair bit of anxiety, especially for younglings like myself, given that you are performing your skills (or lack of) and ideas (or lack of) to people you respect and admire too. Perhaps it is also due to the hotel environment, which I find not only particularly uninspiring but in all honesty, sort of soul sucking, though albeit, *very* conveniently so. This time, however, I was not going to let the hotel suck any more soul out of me because I was thrilled to see friends from time’s past, had a great time on my panel on digital subjectivities, and was excited to meet new folks and talk about those topics that I spend a lot of time thinking about. I also think the proliferation of (very cute) babies among my friends and the now visible crow’s feet adorning the smiling eyes of my friends made me feel the passing of time a little more forcefully than really I wanted to. So I did my best to turn that pesky faucet of time of off so as to give way to immersion, drawing those from past into the shared nest of the present, so that I would want to see them again in the future. And in the end, that is the point: social reproduction and shouldn’t procreation be fun? I think so… Now back to that pile of work.

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.

Julien Danjou: Testing out rebuildd 0.3.0

awesome beiing in rc state, that leaves me a small amount of spare time. I decided to spend it on rebuildd. I had started the 0.3.0 version back in August, but never touched it again until now. I was afraid because I did not remember in which state I left the code repository. And, good surprise, the code was in a quite good shape! I just implemented and fixed some stuff that were reported on the BTS, and then, I only had to test it out. For that I used the servers kindly provided by TuxFamily.org: I stored the MySQL database on whisky. filled it with rebuildd-job add-quinn-diff (new feature in 0.3.0) and then started rebuildd on each node. And then I saw the 2 hosts starting to grab, lock jobs, build packages on each side. Wonderful. That just works. :-) rebuildd-job stats says that 20 % of the archive is now built in less than 24h, seems fast, cool. Bad point is that I'm building and trashing logs into /dev/null because I've no QA idea to implement right now.

Steve Kemp: to let the insects in

My migration to mercurial is now complete. I've completed the last step, which was the migration of all the $foo-commits mailing lists. It is at times like this that I remember two things: Right now I'm using ecartis for my mailing lists, primarily because it isn't mailman. (Long story). For making archives of mbox files I'm using hypermail. The latter I intend to change as soon as I can find something else to use. It isn't attractive, but it is in the Debian archive and seems reliable. Since I was changing things around already I've centralised the list-archive making, and started using the haschanged tool to avoid rebuilding the archives i there are no new posts. That works nicely.

1 December 2007

Andrew Pollock: [tech] MacOS 10.4 setup rant

We popped out and bought a MacBook Pro for Sarah today, as her PowerBook G4 is starting to really fall apart. Despite Leopard being well and truly out now, it came with Tiger preinstalled, but included a Leopard upgrade DVD. No big deal. So we fired up the laptop, and went through the final install steps for Tiger. I was trying to preempt any networking problems by adding the MAC addresses to my DHCP server and wireless access point before it went to try and connect to the network. I have a whitelist of allowed MAC addresses in my access point, and DHCP server is only configured for static reservations on that interface. The onboard Ethernet MAC address was easily determined. It's printed inside the battery cavity. Finding out the wireless Ethernet MAC address is another story altogether. Basically I couldn't, so I gave up, hoping maybe the access point would log the unauthorised MAC address, and I could then add it where it was needed. Well, the access point didn't appear to log anything useful. The Mac did however pop up a dialog box saying something the effect of the laptop needing to be added to the wireless access point's access control list. The one piece of useful information to display at this point would be, you guessed it, the very MAC address I need to be adding to the access control list! I ended up temporarily disabling MAC address restrictions in the access point and then the DHCP server happily logged the MAC address that didn't have a lease, and we were able to proceed. Maybe preinstalled Leopard does it better. We'll never know. Update Aww crap. Seems I didn't study the box closely enough. There's a sticker with all that pertinent information on it.

John Goerzen: Attention Junkmailers

We love to hear from you. I'm sure that's what you're thinking, anyway, as you prepare volumes of paper to send to our mailbox.

But just so you know, let me explain just how much we love the material you send us.

When we get one of your catalogs, it will get added to the junk mail pile. Every so often, I will go through this pile. I will contact the company behind each and every mailing, asking them to remove me from their list and not rent my name further. If I have extra time, I will probably also write that note on your postage-paid envelope and pop it in the mailbox. I will also add your name to my list of companies that send me junk mail, so I can avoid doing business with you in the future. If you have sent me junk mail in the past, rest assured that I will find some creatively enjoyable way of dealing with your refusal to honor my removal request.

After I have processed your piece of artfully-crafted handiwork, possibly trying to sell me pink laptops or a shirt with the word "femail" on it -- whatever that means -- I will deposit your catalog, along with dozens of other similar catalogs, on the kitchen floor.

This is when the real fun begins, because now it's Jacob's turn to process them.

He will usually start by ripping out every page from the catalog. He'll start slowly and carefully, ripping out pages one at a time, savoring the wonderful rrrrriiiiippppp noise as he goes. But then he'll get faster, going for two pages at a time, then more, until finally he just will lunge for paper by the handful to crush, tear, or otherwise mutilate.

After that, there are many things he might do to your fine piece of unsolicited advertising. Perhaps he will enjoy drooling on it -- a satisfying fate for your 4-color catalog, don't you think? Or perhaps he will grab some of your pages, carefully emblazoned with your logo, and tear them into as many tiny bits as he can. Or maybe he will simply gather your work together on the floor, then spin himself around on top of it, scattering the remnants as far and wide as possible, cackling all the while. He may also smear bits of food on them if he ate recently, or perhaps he will simply resume tearing pages apart.

But whatever he does, rest assured that he will treat your catalog with the care and attention it deserves. No catalog will survive intact, and as many pages as possible will be ripped apart and left in bits. He does, after all, have a great attention to detail.

After Jacob is done, we will gather up what remains and put it all in our recycling container.

Oh, and under no circumstances will we actually make a purchase from your catalog.

Here are two pictures of the scene.

img_4160.jpg

Notice the careful concentration in this photo. Obviously he knows that Dell has been ignoring my removal requests for some time, and is taking note to tear their pages into the smallest possible bits.

But it's not all hard work -- processing your catalogs is fun, too.

img_4163.jpg

Next.

Previous.