Search Results: "ron"

29 January 2009

MJ Ray: identi.ca and twitter OLPC - One Line Per Contact

I ve been having fun with identi.ca and twitter recently, but some of my contacts, friends, followees, subscriptions (or whatever you want to call them) send many more messages than others. One contact gave a running commentary on his progress up the floors of a building yesterday. Fine, but a bit of a torrent of data. If someone posts and leaves it for a while, it s sometimes an explanation of where they ve gone, so I d like to check people s last tweets. I ve seen some clients do that and it seems there s a method in the API to do it. The API returns XML, so I m using XSL to transform it to xhtml (I ve still not taken the time to learn the XML CSS ways) with the following commands:-
	wget --no-check-certificate -O - https://username:PASSWORD@identi.ca/api/statuses/friends.xml   \
	sed -e '1a\
<?xslt-param name="site" select="identi.ca"?>\
<?xml-stylesheet title="Site Summaries" type="text/xsl" href="twitters.xsl" ?>
' > identica.xml
And here s twitters.xsl which converts the downloaded xml to xhtml:-
<?xml version='1.0' ?>
<xsl:stylesheet version="1.0"
 xmlns="http://www.w3.org/1999/xhtml"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="site">twitter.com</xsl:param>
<xsl:template match="/" xml:space="preserve">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<title><xsl:value-of select="$site" /> Friends</title>
<link rel="stylesheet" type="text/css" href="mirrors.css" />
</head><body>
<dl class="statuses">
<xsl:apply-templates />
</dl>
</body></html>
</xsl:template>
<xsl:template match="/users/user" xml:space="preserve"><dt><a href="http:// $site / screen_name "><img src=" profile_image_url " /><xsl:value-of select="name" /> (<xsl:value-of select="screen_name" />)</a> - <a class="time" href="http:// $site / screen_name /statuses/ status/id "><xsl:value-of select="status/created_at" /></a></dt><dd><xsl:value-of select="status/text" /></dd>
</xsl:template>
</xsl:stylesheet>
Have fun! (And what have I done wrong?)

Bdale Garbee: Facial Dignity

People keep asking me about the beard thing... Here's my take on what happened and why. Just before I left for LCA 2009, my wife offered to send along one of the limited edition prints of her award-winning waterfall photograph. She knew from prior years that the LCA organizers often host an auction or raffle to raise money for some worthy charity at the conference banquet. Since the photo was taken at Milford Sound on the way to last year's LCA in Melbourne, there was a connection between the photo and LCA. We had no idea what this year's charity might be, nor did we anticipate that her photo would become the centerpiece of the evening's fund-raising activities. The charity selected this year was an organization that is trying to save the Tasmanian Devil from extinction. Professor Hamish McCallum, the chief scientist with the program, gave a talk after dinner and before the auction began. The native population is suffering from a fatal facial tumor disease that results in horrible lesions, and is likely to kill off all the Devils within a decade or three. My family and I all have a strong love of nature, and Karen and I had the pleasure of touring Tasmania after LCA 2003 in Perth, so this seemed like a great charity to raise money for with her photo. As often happens at LCA, the auction and related fund-raising activities got complicated. This year, the photo alone was bid up to $2500 (which was very cool!), before people started offering things for higher bids. For years, going maybe as far back as Perth, I've been cajoled about shaving my beard if the bidding hit some level, and have always said no. This year, someone offered $5000 if I would shave my beard, and again I said no. Much later, after more cajoling and many counter offers, when the bids and various matching offers had us approaching $20,000 in total donation to the charity, I relented and announced that if we hit a total of $25,000 going to the charity I would consent to a shave. The resulting frenzy, including the suggestion that if it went high enough Linus should do the shaving, and the formation of a bidding consortium that kept raising more money and bidding against itself, was completely unexpected! Others have tried to capture details of the insanity, but the bottom line is that by the end of the evening, the total had blown way past anything we could have imagined, and by the end of the conference the total going to the charity was on the order of $40,000! Why did I agree to let Linus shave my beard? To be honest, I'm not entirely certain. I only had one beer that evening, so I can't blame intoxication. The fact that it would yield a worthy charity something over 10 times what my wife's photo alone had drawn as a maximum bid seemed significant to me. In hindsight, I also think I was at least a little bit curious to see what my face looked like after having a beard since sometime around September of 1982! In any case, I made the offer, insane amounts of money were raised, and on the last day of the conference, over the lunch hour, Linus took trimmers in hand and removed my beard in front of an audience. The reactions have been completely overwhelming. A local TV station and a local newspaper in Hobart were both there and ran stories. The ripple of mentions in the blogosphere was and is just astounding. There's even a silly Shaving Bdale game created overnight by the "Mad Scientists" at Secret Lab! And from all over the globe, people I do and don't know have been sending emails and finding me on IRC to plead with me to grow my beard again! Right after the shave, my good friend Keith Packard said "Bdale, grow it back!". Before I left Hobart, my wife emailed saying she and the kids hoped I wasn't waiting until I got home to start. Joey Hess blogged a hairy tale about how I'd scarred the minds of young Debian developers. The leader of Debian-RS sent word by email that the group all hoped I would re-grow my beard. And on and on and on... I'm really not used to being the center of so much attention! Being suddenly without beard felt weird in lots of silly little ways. I was hyper-sensitive to drafts. The feel of cold beverages hitting my upper lip was downright strange. And I kept wanting to scratch what wasn't there! After making faces at myself in the mirror for a while, I decided I really wasn't happy, and do prefer being bearded. So I haven't shaved since Saturday morning in Hobart, and am pretty scruffy looking. My wife said today that I'm "already starting to look like Bdale again". At the current growth rate, I have high hopes of having at least some facial dignity back by the time I speak at FOSDEM. And no, I won't be shaving my beard off again any time soon...

28 January 2009

Joey Hess: GSoC followups

Arthur Liu is doing a great series of posts following up on the results of Google Summer of Code '08 projects in Debian. (post 1 post 2) Most of them failed to produce code that's actually used in Debian, though there were some very successful projects, too. My experience with ikiwiki in '07 parallels that: latex Patrick Winnertz produced a working teximg (latex -> image) plugin that's in ikiwiki. The initial proposal also included doing latex -> html and wiki page -> latex conversions; that work never happened. file upload and image gallery Ben Coffey had an ambitious proposal to add file upload support to ikiwiki and also write an image gallery plugin using that. Ben did produce a working file upload interface, but that code never got into ikiwiki. This was due to a combination of at least three things:
  1. The only outside communication with the ikiwiki community was doing a design proposal at the beginning, and a code dump toward the end of the project.
  2. There was an existing complex spec for how to limit who could upload what files, but Ben didn't choose to implement those access controls.
  3. The code dump was not even noticed until much later, when I was putting the finishing touches on my own implementation of an attachments plugin.
By the way, since I happened to do that attachments plugin as a paid consultant, I have an interesting data point: It took me 19 hours total to implement it, vs roughly a summer of work for the GSoC project. I don't mean this to reflect poorly on Ben, it just shows that someone who is familar with a code base and has thought a lot about a problem can work on it much more efficiently than a newcomer. AFAICS, Ben never did get to the gallery part. His involvement in SoC was cut short for personal reasons. Wiki WYSIWYG Editor Taylor Killian produced a working interface to Wikiwyg, but it tragically never made it into ikiwiki. This seemed to be going swimmingly -- Taylor set up a subversion repository for his work and produced several revisions of the wikiwyg plugin in response to feedback. At the end of the summer, it was close to ready to be included in ikiwiki. Then we lost contact with Taylor, and his site fell off the net. Subversion repo: Gone. Tarballs: Gone. The final tragic part of this story is that I had a local copy of all of Taylor's work. And when I moved ikiwiki over from subversion to git, I set up a wikiwyg branch, and put his work into it, and happily deleted my other copies of his work. But I made some kind of newbie mistake pushing that branch, and so his work never made it onto my git server, and at this point seems completly lost. (I still hope to hear from Taylor..) gallery Arpit Jain produced a working gallery plugin for ikiwiki. But that code never made it into ikiwiki. The main stumbling block seems to be that it used the lightbox javascript library, which, at least at the time was licensed under a non-free CC license. The code is present in a branch in ikiwiki's git repo, but at this point there is still no image gallery plugin in ikiwiki, though others are now working on other implementations. Conclusions I learned some important things from participating in the '07 SoC:

Martin Michlmayr: Pictures of QNAP TS-409U and Conceptronic CH3SNAS

I took some pictures the other day of NAS devices I'm currently working on. They are now available in the QNAP TS-409U and Conceptronic CH3SNAS (aka D-Link DNS-323) image galleries.

Obey Arthur Liu: Debian Summer of Code 08 : Where are they now (part 2/3)

Here s for the second installment of my review of this past year s Summer of Code at Debian. See the previous part here: Debian Summer of Code 08 : Where are they now (part 1/3). I apologize for being so late at getting this second part out but I have been very busy. Still, I ll get the last part out before FOSDEM. Those of you who ever had to write a Java compiler (ok, Java subset, but the OOP part was here ) in brainfucking Ada will understand what I went through working on two of my most loathed languages. Debian NAS, improve support of Debian on NAS devices Presentation There is a large range of inexpensive Network storage devices available on the market. For some of them, such as Linksys NSLU-2 and Thecus N2100, we have added support, but there is many many more devices we could support. For this summer we look forward at supporting multiple Marvell Orion based devices (as outlined in Martin Michlmayr s talk Running Debian on Inexpensive Network Storage Devices), such as Revogear Kuro Box Pro, Buffalo Linkstation, QNAP TS-109+, If you don t have old computers lying around to turn into NAS servers, you need to sleep at night without the soothing sound of computer fans or if you actually pay your own electricity bill, you might want to have a look at standalone NAS devices. They re cheap and can be made vastly more capable by slapping a Debian on it. If you ever heard of DD-WRT, you know the spirit. The project was mentored by Riku Voipio, with help from Martin Michlmayr. The project proposal (sorry, Google cache) was introduced by Martin, who did a presentation about it the previous year at FOSDEM. Student Per Andersson was a 24 year old student working towards a MSc in computer science at Chalmers University of Technology in Sweden. He had been looking for ways to join Debian but with school still being priority one, he didn t find time to dive in. Result This project was successful. The Kurobox Pro is now supported and several useful tools were packaged to make life easier with these NAS devices. Martin Michlmayer is still working on Debian NAS related stuff. Per was happy to be invited to the Emdebian work session in Extremadura and has been active within debian, maintaining the packages he created during the Summer of Code. Cran2deb, generate Debian packages from R packages Presentation GNU R has become the preeminent platform for computing with data . The CRAN archives contain over 1300 source packages of very high-quality, and BioConductor has again almost as many focuses on bioinformatics. We want more of these in Debian, and going beyond the 50+ packages we currently have suggests more scripting and automation. R is a pretty big among statisticians and all of them they wasted no time writing their own package to work on particular research subject. It s a lot like Perl with CPAN or LaTeX with CTAN. It s always a pain to discovery that a particular R package is not wihtin Debian and having to resort to unmanaged installation of said packages. The project was mentored by Dirk Eddelbuetel. The project proposal (which is nowhere to be found but seemed to be good) was introduced by Dirk, along with another proposal he did for R. Student Charles Blundell is a research student at.. hum.. didn t do my homework about that. Anyway, you can find him around R related projects. Result This project was successful. Cran2deb is happilly turning more than 1400 of the ~1500 CRAN R packages, all with correct dependencies. The work has since been moved to R-Forge. It s working, we re almost there. We just need it to be polished and we ll get a whole bunch of new packages into Debian. Charles pinged me about the status of Cran2Deb after the previous post. He admits that he hasn t done much about cran2deb recently because of his new position as a research student but hopes to commit again to it soon. I do encourage him to get these R packages into Debian. I had to manually install some packages myself when I had to use R for school because they weren t into Debian and it s not pretty. Mergemaster, interactively merge changes in configuration files Presentation FreeBSD has a shellscript called mergemaster which is used to interactively merge changes in configuration files, based on 3-way diffs. Debian s approach to configuration file differences is much more primitive: either keep the original file, or blow it away (including all local changes) and use the Debian-provided file. It would be nice to get a system such as mergemaster into Debian. Important is to remember that Debian contains two often-used configuration file management systems: ucf, and conffiles; porting mergemaster in such a way that it will be used in both cases would be great. The handling of configuration files during upgrades has always been a little.. brutal, with the user being asked at gunpoint to make a good decision, lest the upgrade won t continue or configuration files get borked (ever tried automerging nagios configuration files?). Having a less stressful upgrade experience is a good thing since the point of Debian is to make package management a stressless thing. The project was mentored by, hum, Manoj Srivastava. I have no idea who came up at first with the proposal. UPDATE: Wouter Verhelst mailed to say that he made the original proposal. Student Max Wiehle was a physics student at the University of Heidelberg. He did a Summer of Code stint (Archive.org copy..) as a student for Beagle Project in 2006 which, I suppose, was successful. He s been active in the past with Gnome and desktop related projects. Result This project was somewhat successful. He posted an update one month into the program with repositories with code to test. Last commit to the mergecf branch of project was September 19th but it was never merged in. According to Steve McIntyre, it s dead, Jim. I couldn t find any further public involvement of Max within Debian. PAS NSS Debian Installer, improve support of PAM and NSS at install-time Presentation It would be very important for the Debian allowing the user to configure additional PAM and NSS modules (eg. LDAP, NIS) during the installation process inside the Debian Installer. To do this, we have to provide tools and helpers to modify /etc/nsswitch.conf and /etc/pam.d/common-*, as well as changing the maintainer scripts for the packages libpam-* and libnss-* to apply the required changes at install time using debconf and these helpers. To be honest, I will probably never use this. I don t do that many coordinated installs in the same place to warrant doing funny authentication with PAM and NSS, and if I did, I would probably use a more elaborate tool to personalize the install, like FAI. On the other hand, I can see the appeal of being done with authentication mechanisms before the first boot. The project was mentored by Fabio Tranchitella. The proposal came from the student. Student Juan Luis Belmonte was a computer science student. He worked in a couple of companies in the area of Sarragossa. He is now founding debug_mode=ON. Result This was quite a disappointement after seemingly good work. Although Juan was satisfied with the project, the PAM package maintainer (Steve Vorlon Langasek) was not. He was never asked about this project (but didn t intervene timely either when the accepted projects were announced though). In his words, it was the wrong solution to the problem . You can find his lenghty rationale on the wontfix bug report that resulted from the project. It really was a problem of communication with the Debian developpers since Juan could certainly have done the right work if pointed to it. Juan didn t ask thoroughly for existing work and Steve didn t publicize his (enough). That s all for now. The information is quite fragmented I admit. Most of it was pulled from Google, mailing lists, commit logs, blogs, whatever. If some projects are lacking in information here, it s because I couldn t find it readily (which is an issue in itself!). In my next post, I ll try to give a student point of view of the Summer of Code in general, and more specifically, at Debian. It will be post 2.5/3 since it s getting a little longer than I planned. Release early, release often, as the say.
If you re a student or a mentor mentioned above, feel free to fill any of the blanks in my report. It s much appreciated. You re not a student or mentor mentioned above and have an opinion on how to improve the next Debian Summer of Code ? Feel free to comment.

Wouter Verhelst: FOSDEM and Novell

Sigh. I'm not part of the FOSDEM organisation team, and this is by choice. I know that I wouldn't find the time to help organize a conference of the scale of FOSDEM, since I'm rather liable to forget to do important things at times. Having said that, I happen to run a company together with Philip Paeps, who is now one of the main FOSDEM organizers; apart from that, I've also managed the Debian presence there for the past few years (lost count how many exactly), and arranged the key signing party for a few years with Joost Van Baal taking over for me starting this year. As such, I'd like to believe that although I'm not exactly in to all their secrets, I do have a front-row seat when it comes to how things are going there. FOSDEM is the "Free and Open Source Developers' European Meeting". It has been that since 2001, and will always remain so. Yes, originally it was called "OSDEM", because frankly, the organisation of the original OSDEM was done by a group of people who like Open Source, without necessarily subscribing to the Free Software ideals. The core group of the organisation is a rather diverse group; for instance, Philip has been known to be rather... negative... about Ubuntu, while Mark (one of the press contacts) has done some activism and translation work for Ubuntu. The change of name from OSDEM to FOSDEM was done not because the organisation's ideas about software were changed overnight by a mail from Richard Stallman or anyone else from the FSF; but rather, because they were open-minded enough to understand that having a name which only says 'Open Source' would be excluding a considerable part of the community that encompasses both Free and Open Source people. This is why the name wasn't changed in FSDEM; it is FOSDEM. I'm quite sure that the fact that FOSDEM is so open-minded about many of the controversial issues that have separated our community over the years not just Open Source vs Free Software, but so many other things as well is one of the main reasons why FOSDEM is so popular today: because everyone, and I truly mean everyone, will find something that he or she likes. That is why I'm so saddened that some people seem to find it necessary to not only whine, but also boycott a conference, because they believe that FOSDEM should not take money from a big Free Software/Open Source contributor, just because they also happen to be a company, and as such make business deals with Microsoft. Note that I'm not either defending or condemning Novell's attitude here; but it is a fact that not everyone in the larger Free and Open Source community feels the same way about the whole Novell/Microsoft deal (else there wouldn't be an openSUSE anymore), and as such they still deserve a place on FOSDEM. Over the history of the organisation of FOSDEM, it's always been a place where everyone could get their opinion out; whether it be the opinion that "Free Software Must Rule The World", or that "It's All About The Way You Do Things"; as long as your opinion is shared by a large enough number of people in the larger FLOSS community, it is welcome. I feel that blocking one organization from sponsoring the event, just because they have made some deals which a significant group of people, one which nevertheless does not encompass the whole of the FLOSS community, disapprove of, would set a dangerous precendent that might jeopardize the very core of what makes FOSDEM so great: its impartiality. Thank god that didn't happen.

27 January 2009

Andrew Pollock: [life] It never ends...

And I thought the recovery from original heart surgery was a bit rocky... Let me try and gather my thoughts... Yes, Sarah's got gall stones, no, they're not the problem. Yes, she's definitely got a staph infection, no, it's apparently (again, fortunately) not the bad type, but unlike last time, it is in the blood. Apparently that makes endocarditis a bigger concern, the consequences of which are rather scary to put it mildly. I'm guessing this is why they're pumping her full of IV antibiotics. The doctor(s) that is/are looking after her only do their rounds in the morning, so we've only got all of this information out of band from the cardiologist who popped in to see her this afternoon and sneaked a peek at her chart. So the exact course of action is unclear. He mentioned the possibility of getting a PICC line, which can stay in for up to a month, so they can continue giving her IV antibiotics for a while. We don't know if that means they could or would then discharge her. They want to do an ultrasound of her heart tomorrow to make sure everything's still okay there. Pain-wise, she's doing better. She hasn't had any more IV pain medication since this morning (just oral stuff), but she hasn't got much of an appetite since throwing up last night. She did eat some dinner though. Nausea has been coming and going throughout the day. Despite all of this, she's in fairly good spirits and is fairly mobile. I'm going back to the hospital tomorrow morning to try and catch the doctor(s) when they do their morning rounds. Somewhat ironically, this hospitalisation is now buggering up her attendance at the Certified Nursing Assistant course she's doing in the evenings. She was due to start clinical training this week. Somehow, even if she were to be discharged tomorrow, I don't see how working in an aged care facility with a PICC line, an open (albeit packed and covered) chest wound and a staph infection is going to be a good idea for anyone involved.

25 January 2009

Ben Armstrong: Involve kids in free software development through play

Giving up on a position within a free software project when you know you re no longer managing to do an effective job is a wonderfully liberating experience. Now that I have started to talk with Miriam Ruiz about handing over the Debian Jr. project, I can stop worrying about the leadership task and just have fun with it. I can always count on Miriam for recommendations for games in Debian my kids may enjoy, as she has a passion for finding good games to package for Debian, and in particular, games for children. Over the past few weeks we ve had some fun with her picks. At the same time, I always have Debian Jr. in mind. How can we ensure kids can have the most fun with this? How do we equip their guides to help them? What we ve done with each new piece of software is to find a quiet time when one or more of the children can start playing with it on their own while we watch, offering such guidance as they need, but for the most part just letting them loose with it. Each wrinkle of the brow, each impetuous thump of the mouse, every illuminated grin and exclamation of delight is noted. We try to see what frustrates or pleases our kids and discuss it both with them and the Debian maintainers and upstream developers. This is an excercise we ve managed to pull off without being overly intrusive and the results have been well worth the effort. Using a few of Miriam s picks we tried this week, we were able to draw their play into the free software development process. Here s a brief summary of those sessions: Platinum Arts Sandbox puts into children s hands the ability to role play in a 3D world and edit that world using simplified controls. The expressions on the faces of our kids as they played were priceless: both the ups and the downs. I wanted to capture this on video and share it. After having established a rapport with upstream, we took a 20 minute clip of one of our play sessions and gave a copy to them to use to help further their work. Here is the edited result. They were very pleased to have that kind of feedback and found the video valuable for determining where the software still needed improvement and to notice which aspects particularly pleased the children. I happen to know that Hex-a-hop is one of Miriam s personal favourites. We have a household full of puzzle-lovers so this puzzle game was an instant hit. While on irc on #debian-jr with Miriam we relayed in real-time some of the reactions as they played this and a handful of her other picks. This gave her some confirmation of areas she knew needed work as well as inspiration for upcoming releases of these packages. During this play session, which also included StegaVorto, kartofel, Anagramarama, Funny Boat and Vodovod, my youngest girl, age 7, plunked down on the couch next to me as her 10-year-old sister played. Then she started to notice I was typing what people in the livingroom were saying and doing on irc. She took a mild affront to me copying her own words and actions, so I decided it would be better to let her participate so she would feel included. At this point, I started playing secretary for her, typing what she dictated to me while she read the responses from the display. Later, I just handed her the keyboard so she could type and read the responses on her own. She was still at it long past bedtime and it was with some reluctance that she finally gave up the keyboard. We all had a lot of fun and look forward to doing this again. We are particularly careful with privacy, taking care to share pictures, videos, and other personal details only so far as we believe it does not put our children at risk. Also, we need to ensure we observe in a way that is welcome and doesn t interfere with their enjoyment. But with a little bit of prudence and a practiced eye and ear for what increases or diminishes enjoyment of the software, we can involve our children directly in the free software development process. I commend to anyone who has the privilege to share free software with children to use this method to communicate with maintainers and developers, increasing your own enjoyment of the software in the process and that of children and their guides everywhere.

Sami Haahtinen: Purging postfix queue

Since I keep ending up in situations where I need to clean up postfix queue from mails sent by a single host and always forget the command, I'm posting it here. Maybe someone else will find it useful as well. To begin with, you need to determine the IP address of the culprit you want to eliminate. How you do this, is up to you. Grepping logs or examining the files in the queue both work. But for some reason there doesn't appear to be a good tool to get statistics on the sending IP addresses, only the origin and destination domains. Once you have determined the IP address which you want to purge, you can use the following spell. You might have to repeat the same line for active and incoming queues as well, but usually deferred is the queue I have the most mails. grep -lrE '[^0-9]10.20.30.4[^0-9]' /var/spool/postfix/deferred xargs -r -n1 basename postsuper -d - It's important that the IP address has escaped dots, because dots can account for any character. In the worst case it will end up matching a lot of wrong IP addresses. Another important bits are the '[^0-9]' groups in both ends of the pattern. Those make the IP address only match that particular IP address. Without that extra limitation 1.1.1.1 would match anything that has 1 as the last number in the first octet and 1 as the first number of the last octet. For example: 211.1.1.154 would be a valid match. The other important bit, yet oddly unknown, is the postsuper command. Postsuper modifies the queue and -d flag makes it delete files in the queue by QueueID. For some reason I keep on seeing all sorts of find -exec rm spells all over, which isn't really that nice for the daemon itself. So here it is, one more tidbit I've been meaning to write up for quite some time now. Enjoy!

John Goerzen: Review: The Economist

A few months ago, I asked for suggestions for magazines to subscribe to. I got a lot of helpful suggestions, and subscribed to three: The New Yorker, The Atlantic, and The Economist. Today, I m reviewing the only one of the three that I m disappointed in, and it s The Economist. This comes as something of a surprise, because so many people (with the exception of Bryan O Sullivan) recommended it. Let s start with a quote from the issue that found its way to my mailbox this week:
A crowd of 2m or more is making its way to Washington, DC, to witness the inauguration of Mr Obama. Billions more will watch it on television. [link]
Every issue, I see this sort of thing all over. An estimate, or an opinion, presented as unquestioned fact, sometimes pretty clearly wrong or misleading. For weeks before Jan. 20, and even the day before, the widely-reported word from officials was that they had no idea what to expect, but if they had to guess, they d say that attendance would be between 1-2 million. In the end, the best estimates have placed attendance at 1.8 million. Would it have killed them to state that most estimates were more conservative, and to cite the source of their particular estimate? That s all I want, really, when they do things like this. I knew going into it that the magazine (to American eyes) essentially editorializes throughout, and I don t have a problem with that. But it engages in over-generalization far too often and that s just when I catch it. This was just a quick example from the first article I read in this issue; it s more blatant other places, but quite honestly I m too lazy to go look some more examples up at this hour. I do remember, though, them referring to members of Obama s cabinet as if they were certain to be, back before Obama had even announced their pick, let alone their confirmation hearings happening. One of my first issues of The Economist had a lengthy section on the global automobile market. I learned a lot about how western companies broke into markets in Asia and South America. Or at least I think I did. I don t know enough about that subject to catch them if they are over-generalizing again. The end result is that I read each issue with a mix of fascination and distrust; the topics are interesting, but I can never really tell if I m being given an accurate story. It often feels like the inside scoop, but then when I have some bit of knowledge of what the scoop is, it s often a much murkier shade of gray than The Economist s ever-confident prose lets on. Don t get me wrong; there are things about the Economist I like. But not as much as with the New Yorker or the Atlantic, so I ll let my subscription lapse after 6 months but keep reading it until then.

Russ Allbery: Lintian 2.2.0

We're still managing to keep to the weekly release cycle and put substantial changes into each version. This makes me happy. I'm hoping that we'll be able to keep slowly working the bug count down. This release merges quite a bit of work done by Raphael Geissert, most notably the addition of pedantic tags. Lintian has quite a few open bugs for checks that are useful in only some contexts or that check coding style issues that not everyone agrees with or wants to be bothered with, and we've been holding off on implementing those since I'd like to encourage everyone to enable info-level tags and I didn't want to just put them all in there. Now we have a new level, --pedantic, which includes all the picky stuff and the stuff that may be completely wrong. It's up to each maintainer whether to use --pedantic at all. The tags won't be in the default lintian.debian.org view (right now, they're not there at all). If you do use --pedantic, please don't worry too much about making your package pedantic-clean unless the tags really seem like a good idea. Also, as noted in the man page, adding overrides for pedantic tags is probably not worth the effort. You should look over the report and apply human judgement. I expect this mode to be useful for sponsors, who want to be alerted to possible issues but can decide for themselves which ones to mention. This release will also add a new page on lintian.debian.org that shows tags sorted by severity and certainty. Not only will this be useful for people looking for problems in the archive, it will also help the Lintian maintainers with updating severities and certainties. (For example, looking at the test page, I think a lot of the important tags should probably be serious instead.) I'm currently doing a full archive run from scratch with the new version to make sure that I plugged the memory leak problems that Lintian had before and to finish fixing #507849. Once that run finishes, I'll send a "bits from the Lintian maintainers" post to debian-devel-announce with information about the pedantic mode and the new tag page.

24 January 2009

Uwe Hermann: Recovering from a dead disk in a Linux software-RAID5 system using mdadm

RAID5 failure As I wrote quite a while ago, I set up a RAID5 with three
IDE disks at home, which I'm using as backup (yes, I know that
RAID != backup) and storage space. A few days ago, the RAID was put to a real-life test for the first time, as one of the disks died. Here's what that looks like in dmesg:
raid5: raid level 5 set md1 active with 3 out of 3 devices, algorithm 2
RAID5 conf printout:
 --- rd:3 wd:3
 disk 0, o:1, dev:hda2
 disk 1, o:1, dev:hdg2
 disk 2, o:1, dev:hde2
[...]
hdg: dma_timer_expiry: dma status == 0x21
hdg: DMA timeout error
hdg: 4 bytes in FIFO
hdg: dma timeout error: status=0x50   DriveReady SeekComplete  
ide: failed opcode was: unknown
hdg: dma_timer_expiry: dma status == 0x21
hdg: DMA timeout error
hdg: 252 bytes in FIFO
hdg: dma timeout error: status=0x50   DriveReady SeekComplete  
ide: failed opcode was: unknown
hdg: dma_timer_expiry: dma status == 0x21
hdg: DMA timeout error
hdg: 252 bytes in FIFO
hdg: dma timeout error: status=0x58   DriveReady SeekComplete DataRequest  
ide: failed opcode was: unknown
hdg: DMA disabled
ide3: reset: success
hdg: dma_timer_expiry: dma status == 0x21
hdg: DMA timeout error
hdg: 252 bytes in FIFO
hdg: dma timeout error: status=0x58   DriveReady SeekComplete DataRequest  
ide: failed opcode was: unknown
hdg: DMA disabled
ide3: reset: success
hdg: status timeout: status=0x80   Busy  
ide: failed opcode was: 0xea
hdg: drive not ready for command
hdg: lost interrupt
hdg: task_out_intr: status=0x50   DriveReady SeekComplete  
ide: failed opcode was: unknown
hdg: lost interrupt
hdg: task_out_intr: status=0x50   DriveReady SeekComplete  
ide: failed opcode was: unknown
That's when I realized that something was horribly wrong. Not long after that, these messages appeared in dmesg. As you can see the software-RAID automatically realized that a drive died and removed the faulty disk from the array. I did not lose any data, and the system did not freeze up; I could continue working as if nothing happened (as it should be).
 md: super_written gets error=-5, uptodate=0
 raid5: Disk failure on hdg2, disabling device.
 raid5: Operation continuing on 2 devices.
 RAID5 conf printout:
  --- rd:3 wd:2
  disk 0, o:1, dev:hda2
  disk 1, o:0, dev:hdg2
  disk 2, o:1, dev:hde2
 RAID5 conf printout:
  --- rd:3 wd:2
  disk 0, o:1, dev:hda2
  disk 2, o:1, dev:hde2
This is how you can check the current RAID status:
 $ cat /proc/mdstat
 Personalities : [raid6] [raid5] [raid4] 
 md1 : active raid5 hda2[0] hde2[2] hdg2[3](F)
       584107136 blocks level 5, 64k chunk, algorithm 2 [3/2] [U_U]
The "U_U" means two of the disks are OK, and one is faulty/removed. The desired state is "UUU", which means all three disks are OK. The next steps are to replace the dead drive with a new one, but first you should know exactly which disk you need to remove (in my case: hda, hde, or hdg). If you remove the wrong one, you're screwed. The RAID will be dead and all your data will be lost (RAID5 can survive only one dead disk at a time). The safest way (IMHO) to know which disk to remove is to write down the serial number of the disk, e.g. using smartctl, and then check the back side of each disk for the matching serial number.
 $ smartctl -i /dev/hda   grep Serial
 $ smartctl -i /dev/hde   grep Serial
 $ smartctl -i /dev/hdg   grep Serial
(ideally you should get the serial numbers before one of the disks dies) Now power down the PC and remove the correct drive. Get a new drive which is at least as big as the one you removed. As this is software-RAID you have quite a lot of flexibility; the new drive doesn't have to be from the same vendor / series, it doesn't even have to be of the same type (e.g. I got a SATA disk instead of another IDE one). Insert the drive into some other PC in order to partition it correctly (e.g. using fdisk or cfdisk). In my case I needed a 1 GB /boot partition for GRUB, and the rest of the drive is another partition of the type "Linux RAID auto", which the software-RAID will then recognize. Then, put the drive into the RAID PC and power it up. After a successful boot (remember, 2 out of 3 disks in RAID5 are sufficient for a working system) you'll have to hook-up the new drive into the RAID:
 $ mdadm --manage /dev/md1 --add /dev/sda2
 mdadm: added /dev/sda2
My new SATA drive ended up being /dev/sda2, which I added using mdadm. The RAID immediately starts restoring/resyncing all data on that drive, which may take a while (2-3 hours, depends on the RAID size and some other factors). You can check the current progress with:
 $ cat /proc/mdstat 
 Personalities : [raid6] [raid5] [raid4] 
 md1 : active raid5 sda2[3] hda2[0] hde2[2]
       584107136 blocks level 5, 64k chunk, algorithm 2 [3/2] [U_U]
       [>....................]  recovery =  0.1% (473692/292053568) finish=92.3min speed=52632K/sec
As soon as this process is finished you'll see this in dmesg:
 md: md1: recovery done.
 RAID5 conf printout:
  --- rd:3 wd:3
  disk 0, o:1, dev:hda2
  disk 1, o:1, dev:sda2
  disk 2, o:1, dev:hde2
In /proc/mdstat you'll see "UUU" again, which means your RAID is fully functional and redundant (with three disks) again. Yay.
 $ cat /proc/mdstat
 Personalities : [raid6] [raid5] [raid4] 
 md1 : active raid5 sda2[1] hda2[0] hde2[2]
       584107136 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
Btw, another nice utility you might find useful is hddtemp, which can check the temperature of the drives. You should take care that they don't get too hot, especially so if the RAID runs 24/7.
 $ hddtemp /dev/hda
 dev/hda: SAMSUNG HD300LD: 38  C
 $ hddtemp /dev/hde
 dev/hde: SAMSUNG HD300LD: 44  C
 $ hddtemp /dev/sda
 dev/sda: SAMSUNG HD322HJ: 32  C

23 January 2009

Josselin Mouette: On the good use of compiler warning flags

The gnome-power-manager developers like clean code. Actually, more than clean code: code that will not generate a single nitpicking warning. The package builds with the following C compiler flags:
-Werror -Wcast-align -Wno-uninitialized -Wall -Wformat-security
Sometimes the compiler is more clever than the coder On the SPARC architecture, -Wcast-align really starts to mean something. Unlike most other architectures, any alignment error on here will leave you gather your teeth spread on the floor after you ve been hit by a SIGBUS. It tries to catch at build time alignment errors resulting from a cast between pointers to different types. Together with -Werror, it triggered a first FTBFS bug. The error occured on the following code:
        if (XRRGetOutputProperty (brightness->priv->dpy, output, brightness->priv->backlight,
                                  0, 4, False, False, None,
                                  &actual_type, &actual_format,
                                  &nitems, &bytes_after,  ) != Success)  
                egg_debug ("failed to get property");
                return FALSE;
         
        if (actual_type == XA_INTEGER && nitems == 1 && actual_format == 32)  
                *cur = *((int *) prop);
                ret = TRUE;
         
        XFree (prop);
        return ret;
More precisely, the error occurs when casting prop (which is an array of pointers) into an int *. The compiler is clearly right. The alignment requirements are different for a pointer and an integer; therefore, casting a pointer to a pointer into a pointer to an integer will always work, but dereferencing the pointer later will possibly cause a crash. Turning this expression into a memcpy leads to code that should always work. Lesson learned: do not design APIs where an array of pointers can actually store integers. Have you ever heard of opaque structures? and sometimes it is not This was not enough and a second FTBFS bug showed up. Here, the error happens in the following code:
static inline GstBuffer *
gst_buffer_ref (GstBuffer * buf)
 
  /* not using a macro here because gcc-4.1 will complain
   * if the return value isn't used (because of the cast) */
  return (GstBuffer *) gst_mini_object_ref (GST_MINI_OBJECT_CAST (buf));
 
GstBuffer is a structure which contains a GstMiniObject at the beginning. Therefore, you conduct operations on the GstMiniObject through a mere cast. The first cast (GstBuffer GstMiniObject) is fine, but in the second cast (GstMiniObject GstBuffer), the compiler suspects a problem, since the alignment requirements on GstBuffer are stronger than those on GstMiniObject. The compiler is wrong because it didn t read the API documentation; otherwise, it would have known that gst_mini_object_ref can only return NULL or its argument, which means there can t be any loss of alignment. Since there are no function attributes to express such complex things, we are still forced to rely on the developer having correctly read the documentation. Way to go, compiler. Lesson learned: there are good reasons why some warnings are not part of -Wall. Especially, it is dubious to use them with -Werror. Does anyone know whether it is possible to apply -Werror only to some of the warnings and not to all of them? It would sound like a useful improvement.

Daniel Kahn Gillmor: target disk mode (sbp-2 mass storage host mode?)

One very convenient feature of Apple's hardware is the ability for their workstations to enter target disk mode. This effectively transforms the machine into a glorified ieee1394 (firewire) block device, which can then be manipulated from outside the machine using the standard SBP-2 protocol. Is there a way to provide this same functionality from a running GNU/Linux machine? For example, i have a GNU/Linux system with a block device attached to it. I would prefer if the block device was available to a neighboring machine, but (for whatever reason) i'm unable to physically move it. However, i'm able to link the two machines via a simple ieee1394 connection. A "virtual target disk mode" server (or would it be better to say "an SBP-2 mass storage target service over an ieee1394 link"?) would be really useful. One thing that occurs to me is that i could do some sort of networking abstraction over the link (using eth1394?), and then use something like vblade (an ATA-over-Ethernet target service) to provide a virtual block device to the remote host. However, this requires the remote host to run an operating system capable of dealing with these (more obscure) protocols, and i'd like this to work for any remote machine that knows how to deal with generic SBP-2 ieee1394 mass storage. I know that in general GNU/Linux is at least as powerful and capable as the firmware that Apple ships ;) But it's possible that our community just hasn't gotten around to implementing something like this. Is this the case? My attempts to search for it haven't turned up anything, but it's entirely possible that i'm reading the wrong docs (or reading the docs wrong). Any pointers?Tags: firewire, ieee1394, sbp2, vblade

Axel Beckert: MBC09: The Day Before

Helped my parents moving the first half of the week. Left there at Thurdays around 9am. Drove 45min to Zurich. Removed everything bicycle related from my daypack. Left the TomTom at home. (Google Maps on the E51 has to sufficed and sufficed so far.) Crammed cloths for three days in. Was at Zurich Main Station around 11:40am. My plan was to take the direct ICE train from Zurich to Hamburg Dammtor. Bought a Rivella for the journey. First suprise at the platform: No ICE train. Instead a Swiss InterCity. The staff told us due to a defect in the ICE train, we have to go to Basel SBB with this train, then switch trains there. No carriage numbers and reservations valid here. Hrmpf. For luck, there where not that many people in the train. No power sockets though. Next surprise at Basel SBB: No ICE train here either. We re advised to switch to a German InterCity and then switch again a few kilometers later at Basel Badischer Bahnhof (aka Basel, German Station ). There then finally waited an ICE labelled as the initially expected ICE 72 from Zurich to Hamburg Altona. Even the reservations were displayed, departure was though 20min later than the original ICE 72. The voice from the speakers told us that this is a replacement train which came empty from Zurich. WTF? The next time the voice explained the situation, it was a replacement train coming from Interlaken Ok, DB is not as insane as I believed for about half an hour. ;-) Worked though the git tutorial and the git glossary on the train since in future I ll use git in some of the OSS project I m working together with Conkeror beyond others. Also had a conversation with some doctor from University Hospital Zurich who has chasing as hobby. (WTF?) The train arrived about 45 minutes late at Dammtor, so I first checked in in my hotel ( Hotel am Dammtor , very close to the MBC09 venue) and then walked to Hamburger Botschaft where the twitter reading was already running, hoping to meet someone I know and having dinner afterwards. Guided by Google Maps on my Nokia E51 it took longer than expected to walk there. And it was windy and raining. The twitter reading venue was quite full, but I still found a place where I saw most of the screen. At least the reminder of reading was quite funny: #famouslasttweets. They closed with a tweet similar to And then there s also identi.ca . :-) I was told it wasn t that funny at the beginning. Didn t find anyone I really knew, just sticked to a group talking about being hungry. When we met @igorette on our way to some restaurant and he recognised me, I found out that @muhh was also in the group I m heading though Hamburg. We had a nice dinner at Schmitt Foxyfood, I had GrillGold (Pommes Frites) with WuchtBrumme (Currywurst) and Fritz Cola. After dinner, @moeffju drove me and some other guy to our hotels. So the first evening was already very interesting despite the usual lateness of Deutsche Bahn.

22 January 2009

Benjamin Mako Hill: Annual Free Software Foundation Fundraiser

When I explain the importance of free software, I often use some variation of the following example:
Suppose I see a beautiful sunset and I want to describe it to a loved one on the other side of the world. Today's communication technology makes this possible. In the process, however, the technology in question puts constraints on message communicated. For example, if I pick up my cellphone, my description of the sunset will be limited to words and sounds that can be transmitted by phone. If I happen to have a camera phone and the ability to send a picture message, I will be able to communicate a very different type of description. If I'm limited to 150 characters in an SMS message, my message will be constrained differently again.
The point of the example is this: the technology I use to communicate puts limits and constraints on my communication. Technology defines what I can say, how I can say it, when I can say it, and even who I can say it to. This is neither good nor bad. It is simply the nature of technology. But it means that those who control our technology control us, to some degree. As information technology becomes increasingly central to our lives, the way we experience, understand, and act in the world is increasingly controlled by technology and, by extension, by those who control technology. I believe that the single most important struggle for freedom in the twenty first century is over the question of who will set these terms. Who will control the technology that controls our lives? Free software can be understood as an answer to this question: An answer in the form of an unambiguous statement that technology must be under the control of its users. When free software triumphs, we will live in a world where users control their technological destiny. We simply cannot afford to fail. The Free Software Foundation is the most important organization fighting for the rights of users in this struggle. Here are some of the ways that I plan to direct the FSF to support software freedom in the coming year:
Network Services Last year, the FSF organized a meeting on software freedom and network services that lead to the creation of the Autonomo.us group and the release of the Franklin Street Statement on Freedom and Network Services. As network services --- like those built by Facebook, Google, and others --- continue rise in popularity, progress in this conversation is of increasing importance. This year, I will direct the FSF to build on the work of Autonomo.us to launch the first of what I hope will be several FSF position statements on software freedom and network services. More importantly, the FSF will begin to provide support and planning for solutions --- technologies, social campaigns, and legal steps --- that will protect computer users whose freedom is currently threatened by network services. Enforcing free software licenses Early on, people who decided to work on free software did so because they agreed with --- or, at the very least, were willing to abide by --- the principles and rules laid out in our licenses. In our push for software freedom, we have created software of immense value and attracted companies and individuals to our community who are less willing, or simply less interested, in protecting users' freedom. In December 2008, the FSF went to court for the first time in the organization's history to force Cisco to uphold the freedom of the users of FSF copyrighted software. This lawsuit asks Cisco to live up to its obligations under the GPL and to ensure that it does so in the future. The FSF needs the support of its community in this and in future enforcement actions. The FSF has operated a compliance lab for several years and has ensured software freedom for countless users. As free software becomes more successful in the next year, the FSF will be playing an increased role in protecting software freedom from those who do not share its principles. Continuing the fight against software patents As I said last year, one cannot write non-trivial software today without running a serious risk of infringing patents. The software patent minefield we've found ourselves in is a very fundamental threat to the success of free software and we've already begun to see the first casualties and costs. We must eliminate software patents. Now. The FSF will continue its work toward this end. The FSF's End Software Patents project's major contribution this year was a brief submitted in the In Re Bilski case at the U.S. Court of Appeals for the Federal Circuit. Recently, an opinion was issued which seems to mark an important shift away from broad protection for software patents. With this victory, now is the time to keep up this momentum. The FSF is drawing up a strategy to do just this and will be announcing the relaunch of its campaign on February 9,2009 led by Ciaran O'Riordan.
Every recent fundraising appeal seems to mention the difficult economic climate and it seems to cliche to do so here. That said, the effect of a bad economy is, in fact, felt most strongly in non-profits dependent on donations. The FSF is not immune. The FSF's work is essential for success on the issues I've described here and on all of its other campaigns and projects. Although the cost of a membership or donation may be less easy to afford this year for many of you, the free software movement cannot afford a weakened FSF at this important moment. If you are not an FSF associate member, now is the time to become one. If you are already a member, please join me in giving generously through a tax-deductible donation. The FSF is a very lean, very humble organization of passionate and dedicated individuals working tirelessly for software freedom. Every single gift makes a difference.

David Welton: Github Part III

Since this seems to be fairly constructive, I'll keep going. Those not interested in Github, or the dynamics of open source code creation can safely tune out. Chris, the Github dude, has some more to say: http://ozmm.org/posts/forking_continued.html
I mentioned the Network Graph and Fork Queue but David mentioned neither. I think he doesn t know what they are, probably because I didn t explain what they are :)
I had had a look at them, and they're handy tools (I would never accuse Github of not doing good work, that's not the issue at all), but I would respectfully submit that perhaps Chris is looking at things from a very Github-centric perspective, in which it's second nature to go look at those. They aren't obvious, and certainly don't jump out at the user to say "hey, maybe this code your looking out isn't the latest and greatest!". For someone just cruising around, perhaps it should be more evident who's the 'top dog'? Chris then goes on with a very helpful and illustrative demo of how things work at Github, which is good stuff. However, at the end, he says something that I don't agree with:
It may seem strange, and perhaps even like a lot of work. Why should I have to check to see which is the most current? In the old model, there s always a canonical repository.
That's precisely the problem. It does seem like a lot of work, especially when your search space is not limited to Github, but may include other places like Sourceforge, RubyForge, Google Code, project specific sites, and so on.
In the old model, actionwebservice wouldn t have made it past 1.2.6. Welcome to distributed version control.
Plenty of 'old style' projects have survived beyond their founders' interest in the project. What happens is that you ask for permission to work on the project, and either :
  1. It's given to you, in which case you can keep working on the canonical code. For instance, someone could have asked DHH to work on the RubyForge version of actionwebservice. Did they? Did he say no? At the very least, he could have been asked to point the RubyForge actionwebservice page at some other site with a more current version of the code.
  2. You have to fork the project, and in that case, sure, you might as well have been using the Github model.
I've often found that people are happy to let you contribute to their projects, though, and part of my original point with all of this is that if people just go spitting out forks willy-nilly, it creates a "paradox of choice" type problem, and perhaps takes something away from the community aspect of open source projects. As people are fond of saying at the Apache Software Foundation, it's about the people, not necessarily about the code. I'm not saying that forks are always bad and that everything should be centrally done, but there's a balance to be struck between people just working on their own, and some sort of onerous, bureaucratic Central Project Authority. It's nice that people who want to improve the code make themselves heard on a mailing list/forum/whatever, and thus cover the "people" part of merging in new code and new ideas. More often than not, help and contributions are more than welcome. Design decisions and conversations recorded on mailing lists are available for people to peruse in the future when they have questions. Just to repeat something that bears repeating: I am not claiming that Github will lead to social disintegration of open source projects or anything drastic like that. However, I'm a bit wary of certain patterns I've seen. It's certainly possible that I'm wrong - as I mentioned, one error I might be making is that people are dumping code they simply wouldn't have shared on Github, because Github makes it so easy. I do hope my worries are unfounded, and in any case, it's a good thing that the Github guys are interested in the problem too, and will hopefully do things to alleviate it where possible.

David Welton: Github Part III

Since this seems to be fairly constructive, I'll keep going. Those not interested in Github, or the dynamics of open source code creation can safely tune out. Chris, the Github dude, has some more to say: http://ozmm.org/posts/forking_continued.html
I mentioned the Network Graph and Fork Queue but David mentioned neither. I think he doesn???t know what they are, probably because I didn???t explain what they are :)
I had had a look at them, and they're handy tools (I would never accuse Github of not doing good work, that's not the issue at all), but I would respectfully submit that perhaps Chris is looking at things from a very Github-centric perspective, in which it's second nature to go look at those. They aren't obvious, and certainly don't jump out at the user to say "hey, maybe this code your looking out isn't the latest and greatest!". For someone just cruising around, perhaps it should be more evident who's the 'top dog'? Chris then goes on with a very helpful and illustrative demo of how things work at Github, which is good stuff. However, at the end, he says something that I don't agree with:
It may seem strange, and perhaps even like a lot of work. ???Why should I have to check to see which is the most current? In the old model, there???s always a canonical repository.???
That's precisely the problem. It does seem like a lot of work, especially when your search space is not limited to Github, but may include other places like Sourceforge, RubyForge, Google Code, project specific sites, and so on.
In the old model, actionwebservice wouldn???t have made it past 1.2.6. Welcome to distributed version control.
Plenty of 'old style' projects have survived beyond their founders' interest in the project. What happens is that you ask for permission to work on the project, and either :
  1. It's given to you, in which case you can keep working on the canonical code. For instance, someone could have asked DHH to work on the RubyForge version of actionwebservice. Did they? Did he say no? At the very least, he could have been asked to point the RubyForge actionwebservice page at some other site with a more current version of the code.
  2. You have to fork the project, and in that case, sure, you might as well have been using the Github model.
I've often found that people are happy to let you contribute to their projects, though, and part of my original point with all of this is that if people just go spitting out forks willy-nilly, it creates a "paradox of choice" type problem, and perhaps takes something away from the community aspect of open source projects. As people are fond of saying at the Apache Software Foundation, it's about the people, not necessarily about the code. I'm not saying that forks are always bad and that everything should be centrally done, but there's a balance to be struck between people just working on their own, and some sort of onerous, bureaucratic Central Project Authority. It's nice that people who want to improve the code make themselves heard on a mailing list/forum/whatever, and thus cover the "people" part of merging in new code and new ideas. More often than not, help and contributions are more than welcome. Design decisions and conversations recorded on mailing lists are available for people to peruse in the future when they have questions. Just to repeat something that bears repeating: I am not claiming that Github will lead to social disintegration of open source projects or anything drastic like that. However, I'm a bit wary of certain patterns I've seen. It's certainly possible that I'm wrong - as I mentioned, one error I might be making is that people are dumping code they simply wouldn't have shared on Github, because Github makes it so easy. I do hope my worries are unfounded, and in any case, it's a good thing that the Github guys are interested in the problem too, and will hopefully do things to alleviate it where possible.

Daniel Kahn Gillmor: Trancendental Nonsense and the Functional Approach

Poking around the web site for Law in Contemporary Society, a class taught this semester by Eben Moglen, (who is counsel for the Free Software Foundation and founder of the Software Freedom Law Center), i found Felix Cohen's Trancendental Nonsense and the Functional Approach, which (according to wikipedia) is one of "the most-cited law review articles ever written". I haven't read the whole thing yet (and i'm neither a lawyer nor a philosopher) but it's fascinating reading. And from what i've read so far, it's a strong push toward directly addressing the values that lie hidden beneath our technical or mechanical decisions, and to avoid mistaking technical success or skill with a worthwhile outcome and clear goals at a societal level. This is something we software developers and system administrators struggle with as well (or at least i think we should). It's neat to get my head around these concepts from a different intellectual sphere, and a different era (74 years ago!) when the technical and mechanical tools i work with didn't exist in anything like their present form. This kind of reading makes me wonder what works from Computer Science or Systems Engineering or Information Technology will have this kind of exhortative power and social relevance so far into the future. Do you have a favorite (or abhorred?) text from your field that offers the kind of moral and technical challenges that Cohen's work does?Tags: law, moglen, philosophy

21 January 2009

Joey Hess: git as an alternative to unison

I've used unison for a long while for keeping things like my music in sync between machines. But it's never felt entirely safe, or right. (Or fast!) Using a VCS would be better, but would consume a lot more space. Well, space still matters on laptops, with their smallish SSDs, but I have terabytes of disk on my file servers, so VCS space overhead there is no longer of much concern for files smaller than videos. So, here's a way I've been experimenting with to get rid of unison in this situation.
    git clone --shared /mnt/fileserver/stuff.git stuff
Caveats: (Thanks to Ted T'so for the hint about using --shared, which makes this work significantly better, and simpler.)

Next.

Previous.