Search Results: "zed"

23 August 2006

Wouter Verhelst: Accept to gettext

In 2003, I needed to write a PHP site that would need to be internationalized, and decided to use gettext() for this purpose. While PHP has proper support for gettext, it unfortunately does not have any builtin way to easily convert the data in the Accept-Language and Accept-Charset HTTP headers into something that can be understood by gettext. So I sat down, and over the course of an afternoon, I wrote 83 lines of PHP code (excluding comments) that would do just that: parse the above two headers, and return a gettext string which represents the best match out of a set of strings specified. It's pretty easy in use, and was written quite generically, so I put a GPL tag on top of it, put it online, added a comment to the documentation of the gettext stuff in the PHP manual advertising the URL, and stopped thinking of it. The project that I wrote this file originally for eventually wasn't even finished; today, I don't even recall what it was. In early 2005, I received a mail from Matthew Palmer thanking me for the code, and telling me that he'd incorporated it in IRM of which he's part of the development team. Which reminded me of its existance. For a short while. Today, I was cleaning out my INBOX, and stumbled upon this old email again. Which got me curious, so I started googling for those 83 lines of code that I'd entrusted to the Free Software world three years ago. I must say I'm pleasantly surprised. My file accept-to-gettext.inc seems to be used in a variety of free software projects, including of course IRM, but also the GnuCash website, or in this french educational thing called SLIS. It seems to be quoted in its entirety on some turkish PHP-related forum. It has been adapted to support different translation systems. And so on... the list is rather long. Can't say I'm not proud. And yet, the code contains a rather silly bug: the assumption that character set encodings are somehow linked to translations. They are not; gettext is perfectly capable of transparently transcribing one character set to another. Oh well...

Evan Prodromou: 6 Fructidor CCXIV

Argh... trying to get caught up on this journal in the wee hours of the morning here in wt:Odense. I've had pretty bad jet lag this trip -- I've never been particularly good with time changes, and the North-America-to-Europe switcheroo really throws me off. So by 2PM I'm falling down on my feet, but at 4AM I'm rarin' to go. Odense has been a particularly nice place to visit. We got into wt:Copenhagen a few days ago, and crashed at the Airport Hilton there. It's actually attached to the airport -- you can just walk right in. Maj got a good deal on a room, and we figured it would make sense to sleep with the baby right there, rather than fight the train system to find another hotel in the city centre. After a free brunch including many different kinds of pickled fish, and a looong nap, we took the train into the Central Station in Copenhagen, right by Tivoli Gardens. There were lines around the block for the amusement park, but we skirted them and headed into the pedestrian area near City Hall. Based on a recommendation in Wikitravel, we went to the line of caf s and restaurants off of Nyhavn, a sliver of water poking into the heart of the town. It was a great walk, and we had a casual sidewalk dinner at a place called Carl's Corner. The canal was lined with boats that had been converted to restaurants -- we may try one when we go back to Copenhagen this week. tags:

Wikisym The next morning I got up at dawn and got on a train to Odense for Wikisym. I missed my connection at the Central Station, and all the trains were running late, so I got real confused about where to go. The fact that I was carrying all of our luggage didn't help matters. But a few false starts later, I managed to get myself oriented and on my way. The train ride was beautiful -- wt:Denmark is a very pretty country, with rolling grassy hills and clusters of small, peak-rooved houses by the tracks. The trip from Copenhagen to Odense takes you from wt:Zealand to wt:Funen, across a long rail bridge. Very impressive. Once I'd landed in Odense and got myself organized, I slipped into the back of the room for Wikisym to catch the last few minutes of Angela Beesley's keynote address. Angela might be the hardest-working person in Wikidom -- she's a tireless community organizer not only for the Wikimedia Foundation sites like Wikipedia but also for Wikia's sites. After her talk, we did an wp:Open Space session, which continued throughout the day, interlaced with the academic presentations. I'm getting to be a big fan of Open Space; it was really effective for RecentChangesCamp, and I think it works well for organizing a conference. Ted Ernst led the sessions, with the help of Gerard Muller of the Danish Open Space Institute. Probably the most productive Open Space session for me was the one about non-text wikis -- using wiki techniques for video, audio, image and visual language editing. I'm fascinated by this stuff, and it's great to hear that some people are working with SVG and SMIL to do in-browser multimedia editing. The consensus is that the technologies Aren't There Yet but are around the corner. The other major thing I think I picked up from this session was Eugene Eric Kim's discussion of Wiki Ohana. Ohana is the Hawaiian word for family; the Wiki Ohana is a project to develop some interoperability and a transmission of our Wiki principles to new members of the family. I think it's a great idea and I'm going to try to get involved further. tags:

Odense We had a great walk around Odense's core pedestrian area. It's not exceptional for Northern European towns -- it reminds me of the Netherlands, and Maj of Switzerland -- but the car-free cobble-stone walking areas are a real relief after years in North America. We have some pedestrian areas in Montreal, of course, but not in the same way. Odense is the childhood home of wp:Hans Christian Anderson, and the city is decorated with statues of HCA, and of characters from his stories (the Tin Soldier, Thumbelina, etc.) It gives a kind of fairy-tale air to the town. I'm not sure they should feel so proud of being Anderson's childhood home, though -- from everything I've read, his childhood was nightmarishly cruel, and his abysmally poor family was harshly treated by the society here. But, of course, that's in the past. Now, we had a real nice time walking around. Amita June likes tottering along on the cobblestones, and shouting really loud in the small streets to hear the echos. We ended up having dinner in a place called the Cuckoo Caf -- great food under a spreading tree in a little square. This morning -- no, yesterday morning -- Maj got up and took the first sessions, and Amita June and I slept in. We went off into town again to find a bakery, and shared a chunk of brunsviger, a sugary pastry that will probably rot out her tiny teeth. I had a cup of tea, which was less than satisfying. I've been trying to cut caffeine out of my life, so we've been having decaf at home, but they don't seem to serve it in caf s here. I'm a creature of habit, and I like the taste of coffee even if it doesn't have the caffeine oomph. tags:

CAPS LOCK SUCKS In response to Lars's defense of CAPS LOCK: Lars, you ignorant slut. Caps lock has been the bane of online culture since the invention of mixed case in the late 1960s. It is a hallmark of clueless newbie-ism for people who are too analphabetic to remember the exceedingly simple English capitalization rules. The only legitimate purpose for CAPS LOCK is for doing C macros and defines, but hey, who writes in C any more? Anyways, that's just lazy programming. A real programmer would write a macro to capitalize the names of other macros where used. That's just good programming practice. Another important point is that CAPS LOCK is Eurocentric and imperialistic. What value does CAPS LOCK have for someone writing in Eritrean, Malayalam or Ojibwa? None at all. Yet dead white males like Lars Wirzenius want to force their CAPS LOCK cultural hegemony on an increasingly global culture. For shame. The worst thing about CAPS LOCK is that it squats in the middle of the most important letters on the keyboard, like a rat trap waiting to spring. Big and ugly, it always catches your left pinky when you're reaching for Ctl or Shift or Tab or A or whatever. Key-chording is here to stay, and CAPS LOCK not only ignores this important UI development but actively interferes with it. Modal interfaces are rightfully extinct, and CAPS LOCK needs to go the way of the dinosaur. It's time to eliminate this obsolete key once and for all. (This message brought to you by The Taxpayers Against Caps Lock Coalition. I, Evan Prodromou, endorse this message.) tags:

22 August 2006

Evan Prodromou: 5 Fructidor CCXIV

I can't believe it's been 4 days since I wrote in my blog. I think that's by far my longest gap so far, but I have to plead victimization of terrible jet lag. We got out of Montreal OK on Saturday afternoon, although we realized at about noon that we had a whole bunch of bills and other financial transactions to take care of before we left (doh). But we took a taxi to the airport, which shortened our door-to-door considerably, and the checkin for SwissAir was pretty reasonable. So we had a decent lunch inside YUL and then got on our plane just fine. The flight over was kind of, uh, bad. We got the bulkhead seats, which was great because Amita June could sit on the floor and play, but because everything (tray, TV) is built into the armrests, the seats are a few inches more narrow than other seats, and my hipbones were scraping against them the entire time. Painful. Amita June slept, but we were in the baby ghetto and a baby sitting behind us was crying constantly. At one point in the night, a man, obviously three sheets to the wind, got up and shouted at the baby. "Shut up already! Why don't you shut up?" It was a surreal situation -- a grown man shouting at a 14-month-old on the plane. I was getting out of my seat to guide him back to his when he disappeared into the dark. The weird thing was that the same guy came up after the sun came up and tried to play with Amita while he was waiting for the bathroom. He tickled her in the belly once, and the next time he reached out, I grabbed his arm. "Don't touch her, please." We didn't see him again afterwards. tags:

21 August 2006

Gustavo Franco: epiphany 2.14 in Debian

<a onblur="try parent.deselectBloggerImageGracefully(); catch(e) " href="http://www.telecable.es/personales/algarcia/img/epiphany-88x31.png"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 89px; height: 31px;" src="http://www.telecable.es/personales/algarcia/img/epiphany-88x31.png" alt="" border="0" /></a>If you're using GNOME as your desktop environment, it's possible that you're using the wrong browser or just using one that isn't doing everything you want as i was, right ? Well, when Firefox came into the scene with one of its previous names i was using Galeon. Galeon worked for me, but it lacked some features that the new browser was offering. I would like to tell you that the same thing is happening again, and it's now time to give <a href="http://www.gnome.org/projects/epiphany/">epiphany</a> a try. If you did it before, do it again with the latest epiphany (2.14.0) in Debian sid, my reasons are below:<br /><span style="font-weight: bold;"><br /><span style="font-weight: bold;">Gecko<br /><span style="font-weight: bold;"></span></span></span>Yes, it uses Gecko 1.8 as backend and not gtkhtml so don't worry about page rendering. For those 'in the loop', it's already linked against <a href="http://developer.mozilla.org/en/docs/XULRunner">xulrunner</a><span style="font-weight: bold;"><span style="font-weight: bold;"><span style="font-weight: bold;"> </span></span></span>library. Firefox (in Debian sid) isn't yet.<br /><br /><span style="font-weight: bold;"><span style="font-weight: bold;"><span style="font-weight: bold;"></span></span>Bookmarks</span><br />You can attach tags (epiphany calls them 'topics') to the bookmarks and it will organize everything in a tree for you. The bookmark manager looks good for me too, i'm not too much into the bookmark thing but together with deskbar-applet and epiphany topics i can find what i want.<br /><br />The most interesting feature is that epiphany can look up to bookmarks published using avahi (mdns/dns-sd daemon) and show them as "local sites". In other words, you can setup a centralized bookmark server and all the epiphany users in your network will be able to see them. I've a mt-daapd server, and epiphany recognize that there's a admin website around, just like rhythmbox does.<br /><br /><span style="font-weight: bold;">Extensions<br /></span>Yes, it has extensions and is able to do ad-block and all that. Unfortunately the latest <a href="http://packages.debian.org/epiphany-extensions">epiphany-extensions</a> package still needs to be built for i386, but it's already ok for amd64 arm hppa powerpc s390.<br /><span style="font-weight: bold;"><br /></span><span style="font-weight: bold;">RSS<br /></span>I had some rss apps around, but wasn't really using them because what i needed was subscribe from the browser, organize the feeds in the app using topics/tags or folders and see some interesting integration between that app and the browser. It's now done, try epiphany and liferea. =)<br /><span style="font-weight: bold;"><br /></span><span style="font-weight: bold;">Memory<br /></span>After eight hours using epiphany it won't eat all your memory to 'optimize page loading' and even with this "bug" i don't see epiphany (and the rest of my desktop) too slow to open a new page after all this time.<br /><br />I think that a lot of users and developers will just look to epiphany as a serious Firefox alternative, after a big "user oriented" distribution pick it as the default browser. Thanks to the epiphany developers anyway, keep the good work.

Gustavo Franco: Python, ltsp, xchat and more.

Well, after some issues it's true, the Python transition is still going on. No flames, after all i'm in the Debian Python Modules Team from the start, and i'm trying to burn the pythonX.Y-foo from quite some time. Hopefully we will see Python 2.4 as default in Etch and maybe 2.5 in too (without a new transition and weird package names), for this we need to squash some more bugs. Join us at irc.d.o / #debian-python.<br /><br />I haven't dedicated the time i should in pkg-ltsp group, but Otavio and others are doing this and i'm for some time just a tester, organized online meetings and all that. I've a branch ready to be carefully tested and merged with our main. There's now stuff coming in for sure and hopefully we will be able to add a 'thin client server' task and deliver it in time for Etch. :-)<br /><br />xchat-gnome (hopefully) is back, just sponsored the upload for Marco Cabizza (from pkg-gnome). The package is of course sitting in NEW.<br /><br />Have you heard about wotomae? We're all waiting wotomae... Go Arnaud!<br /><br /><worldcup>2 hours for the next Brazil game. The country is almost stopped (it really is) waiting and i'm done with mails and builds at the office, writing this blog entry warming up to go home.</worldcup>

15 August 2006

Mario Iseli: OpenLDAP, LUG-Seeland, School

Today was a strange christian day here in Kanton Solothurn and I didn’t have to work, so I had a lot of time to prepare my presentation for next Friday about OpenLDAP. First of all I prepared the stuff for the school which begins tomorrow, so my holidays are now definitely past :-( . I was excited that I didn’t receive my timetable by snailmail so I had to google and found it finally. Poorwise i have now to stand up very early in the morning, my train goes at 07.07 in the morning. Now to OpenLDAP, fortunately Mathias Weyland, the president from the LUGS, gave me a book about OpenLDAP from O’reilly, I really like it: It’s quite informative and sometimes the author is making some jokes. Priska Rubischon already bothered that i have to tell something about netgroups and autofs, this was completely new because I newer worked with NIS (and netgroups etc.) and neither with autofs (in most cases I use samba and libpam-mount). It’s not so difficult as i thaught. OpenLDAP in Debian comes with nice schemas which help to migrate from NIS to LDAP, so I had a look at those schemes and the chapter about netgroups in the book. Also autofs is not complicated, for example, if you want to share /home to the clients you have to prepare a NFS-Server which shares this directory and configure /etc/auto.master and /etc/auto.home on the clients. These two files can lookup where and how it can mount /home. On my testing-infrastructure I just used netgroups for the NFS-exports, so I have now an example what they’re for. After all I realized that my speech will also be about “How do I plan a network in a company”, so I realized that the security of LDAP is also very important. Fortunately OpenLDAP can be secured quite hard, it supports SASL and KERBEROS_V4 authentication mechanisms! When I would realize now a network i would do the following: I still ask me how i can protect my netgroups so that nobody can plug computer “x” out and plug in his computer, take the IP of “x” and mount the NFS-shares. Kerberos as user authentication would be a solution, but I don’t really like it. As I already told I prefer libpam-mount, with it’s help it would be possible that every user gets his share mounted maybe over smb. Now I will search for a solution how i can properly secure NFS, so it does only allow connections from users@boxes authenticated with LDAP and not user@host-which-can-be-faked. If you have an idea feel free to write it down here in my blog! In the evening I went to “Biel” by train to join the LUG-Seeland meeting. Beat Fasel explained me a lot about genetical biology, his work and the evolution, this was very interesting. Later we talked about the future of our community, I will prepare bylaws for the next meeting which we will sign. Other ideas were about preparing an install event and a mailinglist because we don’t have communication over the internet and this is quite complicated if we want to organise something in teamwork.

Benjamin Seidenberg: All packed

[This is the first post in the new “Cornell” Category]
Well, my room looks quite empty and the van is quite full. We weren’t sure if all the stuff we were planning on taking was going to fit, but it did. Now, the question is will it fit in the 10×10 dorm room that is typical of the building I’m in. We’ll soon find out. We are driving up to Ithaca Thursday, and I move in Friday. Now that it’s getting close, I am starting to get more and more excited.
If anyone recently out of college, or still in it (Ari, joshk, and others) wants to offer any advice for a rising freshman, feel free to leave a comment. In other news (those of you who were helping me in #d-d already know), my server was out of commision for a few days. Grub and lilo both refused to boot off the 200 hard drive that I had moved my data to using a live system, and sarge D-I saw it as the wrong size, and did not see the partitions (perhaps why grub and lilo both failed). This was apparently a kernel issue, and so I installed using the etch beta3 netinst. G-I was working fine, but after partitioning got in a loop where it would drop to console and complain about some fatal error then go back to graphics again (somewhere around setting time zone) so I eventually used the old text system, which worked flawlessly. The only thing that I found I forgot to backup was my wordpress theme directory, so not only do I have to find my theme again (whose name I forget), I have to modify it, since I had customized the CSS. Pity.
The last bit of this post is a thank you to Joerg for approving my NM application. Now all that’s left is for elmo to proccess his backlog.

14 August 2006

Isaac Clerencia: [Book] Wilt, Tom Sharpe

I had tried to read Wilt already twice, it’s quite a short book, but somehow I had failed to get past the first pages both times. I failed to even open it when I took it to my holidays in the beach, but I’d to come back home earlier than my friends, so I had a boring three hour bus ride ahead, which was a great opportunity to finally read it. Wilt (Tom Sharpe, 1976) is a novel about an underachieving assistant lecturer (Henry Wilt), which grows increasingly demoralized by both his simpleminded wife (which he dreams to kill) and his frustrating experiences teaching literature to a bunch of uninterested construction apprentices in a South England community college. Everything gets messed up when Mrs. Wilt gets lured by Sally Pringsheim’s liberal ideas, and talks Henry into attending a party hosted by the Pringsheims, a bizarre hip couple. Henry ends up with an inflatable sex doll overinflated around his genitals, and Mrs. Wilt gets extremely infuriated. From this moment the story goes wild and I won’t spoil it :)

13 August 2006

Lars Wirzenius: Random thought: Quick! Press 3, click mouse button, press A, press 4, keep mouse button pressed...

I am in a murderous mood. Every time I see movement, my right index finger twitches. My head keeps jerking left, right, up, down. My ankle hurts because I almost twisted it, turning suddenly around when I heard a noise from outside. Today, instead of doing a bit of work that I left undone on Friday, and going to the gym, and making a nice meal, I ate leftovers and played Quake 2. Finished it, in fact. I probably died a hundred times, but eventually I got the bastard. Now I'm frustrated. I don't actually feel anything from the first paragraph. My ankle got hurt because I was trying to catch a bottle that fell off the table. However, I do feel frustrated. As I told before, some time ago I started looking at modern computer games, or rather, modern first person shooters, in single-player mode. I had a friend demo me a representative selection, and then got myself an authentic copy of Quake 2. I've now finished it, and I'm not entirely happy about the experience. The actual playing was OK while it lasted. The game is highly playable, the controls are easy, they quickly feel natural, and the game reacts to them very well. The only thing I never really got the hang of was jumping, but that was rarely necessary. The place with the three stones sliding around in water was quite annoying. Playing Quake 2 consists mainly of two things: shooting everything that moves, and solving small puzzles. The puzzles are mostly of the kind where you need to run around in buildings and twisty little corridors, all alike, and find a button to press. Not highly challenging, but if you miss one, you may have to run around the place an extra time or two, and that takes time, and gets quite boring. The shooting was also a bit of a puzzle, at times, since in order to not get shot yourself, you can't just stand in one place. In the ideal case, you can figure out a way to deal with the opponents from a safe place, throwing grenades around a corner or something like that. Mostly, though, you just shoot. Aim and click. Aim and click. Move about a bit. Aim and click. Aim and click. Move about. Aim and click. Continue until the thing blows up. The computerized opponents do get smarter, and a bit harder to kill, as the game progresses. The final big bad guy is really hard to kill, took me a dozen attempts. That turned out to be surprisingly unsatisfying. There is a storyline in the game, but it was pretty much irrelevant. There are several stages, and at each stage you need to do certain tasks, and as a result, you can go to the next task, or the next stage. All the tasks are "shoot everything" and "press a few buttons in the right order". Oh, sometimes you have to collect some items, too, and take them to places. Now that I've finished the game, I wonder if it was all worth it. I spent quite a number of hours on the game, and what I mainly got out of it was some adrenaline boosts, and those weren't enjoyable. They're addictive, even highly so, and every time I had to stop playing (to do work, or sleep), it required a lot of willpower. I wanted to continue, even if it wasn't fun. I hate being addicted. I can't deny having had a bit of fun. The feeling of being able to do things, to run tirelessly for hours, to overcome obstacles, to vanquish my foe, all that is fun, and gives a certain satisfaction. That satisfaction is feeble and fleeting. As soon as I re-focus my eyes, get up from the couch, and look outside, I realize that it was all for nothing. I haven't really accomplished anything. I'm a hacker. My life revolves around doing things with my brain, and having them affect the real world. I make software that other people use, and their lives get better, even if only a little. Every time I fix a bug in Debian, I improve the world. Heck, even just finding a new bug from piuparts log files gives me a nice, warm feeling in my stomach. I realize people don't play games to improve the world, and that's all right. I don't watch movies or read fiction to improve the world, myself. Computer games are a form of entertainment, and as long as they're fun, and you're enjoying yourself, they're fine. If playing makes you happy, be happy, and I'll be happy for you. I am not judging you in any way, I'm expressing my own feelings. I can't seem to get enjoyment from computer games, or at least I didn't get it from Quake 2. I got an adrenaline addiction, and a high frustration level. I do get distraction, something to take my mind off things, but I can get that from, say, romantic comedies, without any side effects. Thus I conclude that I am better off not playing first person shooter games. I suspect that no computer game is going to be particularly good for me. For many years now, I've played a bit of tetris, or Mahjongg, or a solitaire card game, when I wanted a bit of distraction. Those never were satisfying, either. While I did get distracted, somewhat, for a while, they didn't really work for that, either. Watching Lord Arthur and Miss Mabel get each other works much better. If I solve solitaire, nothing has changed; if I watch An Ideal Husband the nth time, at least I've felt something beautiful. A surrogate emotion is better than an adrenaline addiction.

Adam Rosi-Kessel: Return to Traverse City Film Festival

We spent last week at the Traverse City Film Festival in Michigan. This was the second year of the festival as well as our second year attending. Unlike last year, there was no “Freedom Festival” organized by Michael Moore-haters this year. Perhaps they are still recovering their debts from last year, when they lost money and had to stop their showing of “Michael Moore Hates America” after discovering it had inappropriate language for the family audience they were targeting. We saw nine films in just five days — four in one day was our max. (Rachele saw one more — The Beauty Academy of Kabul — that I missed, unfortunately, and we gave our tickets to Jesus Camp to Rachele’s parents.) Our selections were: The one that sticks most in my memory is La Moustache. The essence of the plot is revealed in the first minute of the movie: a man shaves off his mustache. His wife of fifteen years doesn’t notice. In fact, she doesn’t remember he ever had a mustache. While the film starts as vaguely comic, it quickly spirals into a psychic breakdown with a possibly unreliable narrator. It was quite nearly perfect. The beautifully restored virgin print of Monty Python’s Holy Grail was astonishing. The film was shown for free on a large outdoor screen by the lake, and the sound was crystal clear (now in stereo!) no matter where you sat. There are a bunch of scenes everyone always remembers in the Holy Grail. I realized after watching it again that the movie is composed entirely of these memorable scenes. (I had the same feeling watching the Wizard of Oz after a ten to fifteen year hiatus recently.) Finally, Stanley Kubrick’s first film, The Killing (1956) also merits the maximum rating, whatever that is (5.5 stars?). While it lacks the surreal/experimental feel of his later films, Kubrick was already beginning to play with narrative structure and sequencing. The film walks through the events leading to the climax several times, each time from a different character’s point of view. But really it’s just a great heist flick. Mani Haghigi, the Iranian director of Men at Work, had an interesting observation about the festival. Unlike most other film festivals, he, as a director, could just hang out and enjoy the films and the company and not worry about impressing executives and distributors. The festival’s motto is accurate — “Just Great Movies.”

Edd Dumbill: Ten things you need to know about me

To keep you reading all the way through, the best one's at the end.
1. I'm striking back out on my own againAfter a couple of years working full time in an office, I've decided it's the right time to take my own business, the Useful Information Company, further on. As the rest of this post illustrates, we'll be involved in web technology conferences, our own products, and Rails-based software development. I'm always looking for collaborators, comment and customers, so get in touch if any of this lot grabs you.
2. I'm organising an amazing web developer event in London, late OctoberUseful's first venture is XTech WebDev London. This is the first of a new type of event for XTech: a focused one-day training event for web developers. The idea is to focus on the best practice in web development that emerges from the cutting-edge work demonstrated in the regular XTech conference.This year, that means: Ajax, web standards, open data, REST and Ruby on Rails. Any web developer wanting inspiration and a view of the future should come along. London, UK. October 31, 2006. You can reserve your place now. (We're right-priced for your training budget, and start late enough that folks could make it from all over the UK and beyond without staying a night.)
3. The pace is hotting up for XTech 2007 in ParisMeanwhile, I'm busy putting together the call for participation and programme committee for XTech 2007, in Paris, France. Our theme is "The Ubiquitous Web." As keynotes, I'm pleased to welcome Adam Greenfield, Matt Webb and Jack Schulze.
4. I'll be off travelling shortly and reconnect with old and new friends Though a little daunted by the new face of air travel, I'm heading out to O'Reilly in Sebastopol at the end of this month to take part in FooCamp. One of my main aims is to seek out the ingredients required for a successful professional online community. In September I'll be putting in some time at EuroOSCON. Both visits will let me hook up with friends, many of whom I've not seen for a couple of years.
5. I'm on the programme committee for O'Reilly's Emerging Technologies 2007 conferenceThis one has me interested and engaged. Rael Dornfest is due to unveil the call for participation in a couple of weeks' time, and I'll give my take on the conference then. The show itself is March 26-29, 2007.
6. I have an exciting startup under the covers, in the area of conference and event managementOne of the things I've done a lot of over the last half-decade is organise, coax and bully people into presenting at conferences. I'm pouring what I've learned, and more besides, into a great product. You'll soon be bored of me talking about it.
7. I'm involved in taking Pharmalicensing into an exciting new phasePharmalicensing is an online exchange for intellectual property in the biotech and pharmaceutical world. I was part of its foundation in 1998, and am still involved. I will be part of a newly energized team of people pushing it forward into 2007. 8. I'm having a bit of a clean-out of projectsAlas, with so much going on, I need to cut out a few existing commitments. One of these things will be Monopod, my Mono-based podcast client for Linux. If I can't find anybody interested in its maintenance, I'll just hang the source code out there for anyone to pick up.
9. I want to get more energy put into DOAPOne of my long term projects I definitely don't want to cut out is DOAP, my project to describe software projects in RDF. It's had a slow but sure take-up over the last few years, and is finding its way into some significant projects. However, I do need a bit more energy for it, and one or two collaborators would certainly help. 10. Around Christmas-time, I'm going to become a father to twinsI've still not recovered from the shock. Rachael and I are going to be the proud, stunned, parents of a couple of bright shiny bundles of Human 2.0. Completely awesome, and I've absolutely no idea what to do! For now, we're just concentrating on throwing enough junk out to make room for them.

11 August 2006

Evan Prodromou: 24 Thermidor CCXIV

I said a few days ago that Ross Mayfield had one of the best blogs about wikis and the wiki business. But Eugene Eric Kim gives him a run for his money. EEK Speaks covers in detail a lot of the public and private aspects of wiki going on right now. Of course, I wouldn't paint EEK and Ross as rivals; after all, they won the Web 1.0 pitch contest at Wikimania together. tags:

Victory is mine (I think) For the last few weeks, some of the more advanced features of this wiki have been blowing up with a 500 Internal Server Error, to my great chagrin. I had switched from using CGI to FastCGI for WiLiKi and I'd seen a real improvement in the responsiveness of the site, but these occasional errors were becoming more frequent. I finally hunkered down to figure out the problem. Annoyingly, there was no error output in the Apache error logs, so I guessed that the problem was sooooo bad that the process didn't even get a chance to scream on stderr before dying. I had all kinds of theories about this. Most of the problems had to do with full-text searches of the database, so I guessed that the underlying cause had to do with I/O and concurrency. Gauche has a nice logging facility, so I threw in a lot of logging printf statements (or their equivalent) and isolated the problem to a few calls into Gauche's dbm libraries. Aha! The problem had to be concurrent DB access. I layered on a big slathery scoop of mutexes and locking and other such good concurrency stuff and... the problem was still there. D'oh! So much for my diagnostic skills. I decided to take a step back. After ascertaining for myself that any writes to stderr from within a FastCGI program should indeed show up in the error log -- by reading and by writing a couple of sample programs -- I turned to the debugging tool of last resort: strace. strace logs all system calls by a program, which can be a lot of information. I couldn't, of course, just start my FastCGI program, so I had to strace the entire Apache process, with lots of command-line flags to divvy up the output on a per-process level. Once I had that going, I could kind of see what was going on. My full-text searches were starting up fine, but about halfway through the search they'd get a SIGTERM and terminate. Holy moly! That wasn't an error in my program -- someone was murdering my poor little FastCGI processes. At first I suspected fratricide -- that the processes were terminating each other when they needed the database resource -- but I realized right away how dumb that was. That only left one suspect -- the parent! I dug a little bit into the fcgid documentation, and sure enough, if a process went too long without giving any output, fcgid would terminate it. I upped the time limit for this wait, and now all my search processes are working fine. I'm going to need to start doing something smarter with these full-text searches. I think doing some indexing at write time is the best bet -- that should probably speed stuff up quite well. But for the time being the processes will run, if slowly. The only bummer is now I have to go dig out all the mutex-y lock-y stuff I wrote earlier. tags:

Zak B. Elep: ntfs-3g Love

Yesterday I was back again at the Parish to continue working on arete, the newly-installed Ubuntu Dapper machine. I was back because I had to continue migrating my father’s files from Windows to the new setup, since he wanted to try out Scribus as a replacement for his MS Publisher system for writing the parish newsletter. Anyhow, this reason, coupled with my own urge to seriously try out Ubuntu Dapper (I was running Kubuntu Dapper, doh) made me spend the whole day trying out something new. ;-) As I was looking at Dad’s documents folder, I realized that I had a problem: there are so many files here, some of them sizing up from tens to hundreds of megs (actually, stuff worked on thru the Gimp,) and knowing well that disk drive space was at a premium (arete had an 80G drive, yes, but nevertheless its already cramped,) I simply couldn’t accept copying the files from the XP’s NTFS C:\ to arete’s ext3 /home. Moving wasn’t an option either; although Dad would very much like to try out Ubuntu, he still had some projects (especially the newletter) that needed, uhm, proprietary software to work (sigh.) Thus, remembering that Linux already had some way of reading NTFS partitions, I promptly Googled about it. I also knew that the Linux-NTFS guys (who made the ntfsprogs suite and kernel module) were already working on getting full read/write NTFS support on Linux, but it didn’t occur to me that they were able to get a working implementation done so soon… Enter ntfs-3g: the third generation Linux-NTFS driver. Weighing in at around 550K, this seems to be the one thing that I need for my problem. From the looks of it, ntfs-3g can both read from and write to NTFS partitions, allowing one to create, delete, and update files and directories on the system; it can even allow access to certain metadata that even Windows XP hides from its users. Furthermore, its built from the ground up as a filesystem-in-userspace driver, using the Linux fuse subsystem. It certainly looks very attractive indeed. So, being the sysadmin for arete that I was, I quickly decided to give ntfs-3g a try. After all, it was a simple matter of grabbing the tarball, then reading the README, then doing the three-step tango of ./configure; make; sudo make install, then calling ntfs-3g /dev/hda1 /media/hda1 -o umask=007 as root. Right? Wrong. I quickly ran into a trio of subproblems: first, I needed fuse (>= 2.5.0); the one Dapper had on its official archives was 2.4.2 . So, naturally, I had to make a quick backport of the fuse source from Edgy (2.5.3), but I at this point I ran into the second problem: for Eggy’s fuse to get busted, I needed the new makedev (2.3.1) as well. Forgetting to do apt-get -f install for the moment, I grabbed Edgy’s makedev and proceeded backporting it, which ran me against the last problem: I also needed the newest sysvinit (2.86.ds1). In short, I needed to do a trio of backports first before being able to build ntfs-3g. My own fuse was almost ready to explode. Fortunately, everything went fine after the backports (thank goodness for my being a Debian package maintainer and MOTU,) so I didn’t break my own fuse after all. Soon after, I was reading and writing stuff to and from /media/hda1 without so much as batting an eyelash. Dad was definitely pleased, since that meant that he no longer had to dread the thought of having to maintain two separate document trees and cause him pain and gnashing of teeth. I was glad too, since I no longer had to dread the thought of having to hack on this today, causing me to disrupt my Summer of Code schedule. But, being the packager that I was, I realized that I could make the world a better(?) place by turning ntfs-3g from a regular Joe source to a real Debian/Ubuntu package. While I was happily waiting for ntfs-3g’s build to complete, I happened to pass by a certain HOWTO on the Web using pre-built fuse and ntfs-3g Ubuntu packages. I grabbed those packages, and took a look at them, and while they were pretty much useful, the ntfs-3g package certainly did not look to pass the gold(?) standards of Debian and Ubuntu: the ntfs-3g package was a single binary package, shipping both a shared library and its headers, coupled with the working binaries. It had outdated FSF addresses too, which my bugging Lintian pointed out to me. With some more extra time to spare on arete, I decided to go ahead and build proper a proper source package for ntfs-3g, producing the three binary packages ntfs-3g (containing ntfs-3g and mount.ntfs-3g,) libntfs-3g0 (depended on by the former package,) and libntfs-3g-dev (containing the include headers.) CDBS and debhelper definitely made this easy pickings, and made my life with ntfs-3g easier. And, I’m going to make everyone else’s life with ntfs-3g easier, by making this package available for nit-picking. ;-) I won’t pretend this to be getting into the official Debian and/or Ubuntu archives for the moment, since the upstream authors have explicitly stated that ntfs-3g will be eventually merged into the existing ntfsprogs suite, thereby making my packaging of ntfs-3g obsolete sometime soon; furthermore, the binary packages up there are built against Debian unstable and Ubuntu Edgy, so anyone looking for a Dapper solution can read this post first to avoid reinventing the wheel. But if anyone needs a good solution for NTFS read/write right now (or, if somebody else has time to kill in testing ntfs-3g,) then here’s a good one for you. Caveat emptor!  Ok, next up: finishing my SoC work…

John Goerzen: Whose Distributed VCS Is The Most Distributed?

Lately I have been trying out a number of distributed version control systems (VCS or SCM).

One of my tests was a real problem: I wanted to track the Linux 2.6.16.x kernel tree, apply the Xen patches to it, and pull only specific patches (for the qla2xxx driver) from 2.6.17.x into this local branch. I wanted also to be able to upgrade to 2.6.17.x later (once Xen supports it) and have the version control system properly track which patches I already have.

But before going on, let's establish what it means to be an ideal distributed VCS:


There are also some things that we would generally want:



Evaluation

Let's look at some common VCSs against these criteria. I'll talk about Arch (tla, baz, etc), bzr (bazaar-ng), Darcs, Git, Mercurial (hg), and Subversion (svn) for reference.

1. The fundamental method of collaboration must be a branch
All of the tools pass this test except for svn.

2. Branching should be cheap
Everyone except svn generally does this reasonably well.

The tla interface for Arch had a pretty terrible interface for this, so it took awhile simply due to all the typing involved. That's better these days.

Darcs supports hardlinking of history to other local repositories and will do this automatically by default. Git also supports that, but defaults to not doing it, or you can store a path to look in for changesets that aren't in the current repo. I believe Mercurial also can use hardlinks, though I didn't personally verify that. bzr appears to have some features in this area, but not hardlinks, and the features were too complex (or poorly documented) to learn about quickly.

svn does not support branching across repositories, so doesn't really pass this test. Branches within a repository are not directly supported either, but are conventionally simulated by doing a low-cost copy into a specially-named area in the repository.

3. Merging between branches is intelligent
Arch was one of the early ones to work on this problem. It works reasonably well in most situations, but breaks in spectacular and unintelligble ways in some other situations.

When asked to merge one branch to another, Darcs will simply merge in any patches from the source branch onto the destination which the destination doesn't already have. This goes farther than any of the other systems, which generally store a "head" pointer for each branch that shows how far you've gone. (Arch is closer to darcs here, though ironically bzr is more like the other systems)

Merging between branches in svn is really poor, and has no support for recognizing changesets that have been applied both places, resulting in conflicts in many development models.

4. Inividial changesets should be mergeable without bringing across the whole history
Darcs is really the only one that can do this right. I was really surprised that nobody else could, since it is such a useful and vital feature for me.

Both bzr and git have a cherry-pick mode that simulates this, but really these commands just get a diff from the specific changeset requested, then apply the diff as with patch. So you really get a different changeset committed, which can really complicate your history later -- AND lead to potential conflicts in future merges. bzr works around some of the conflict problems because on a merge, it will silently ignore patches that attempt to perform an operation that has already occured. But that leads to even more confusing results, as the merge of the patch is recorded for a commit that didn't actually merge it. (That could even be a commit that doesn't modify the source.) Sounds like a nightmare for later.

Arch has some support for it, but in my experience, actually using this support tends to get it really confused when you do merges later.

Neither Mercurial nor svn have any support for this at all.

5. Branching preserves full history
git, darcs, and Mercurial get this right. Making a branch from one of these repos will give you full history, including individual diffs and commit logs for each changeset.

Arch and bzr preserve commit logs but not the individual changesets on a new branch. I was particularly surprised at this shortcoming with bzr, but sure enough, a standard bzr merge from a remote branch commited three original changesets into one and did not preserve the individual history on the one commit.

svn doesn't support cross-repo branching at all.

6. Merging preserves full history
Again, darcs, git, and Mercurial get this right (I haven't tested this in Mercurial, so I'm not 100% sure).

Arch and bzr have the same problem of preserving commit logs, but not individual changesets. A merge from one branch to another in Arch or bzr simply commits one big changeset on the target that represents all the changesets pulled in from the source. So you lose the distinctness of each individual changeset. This can result in the uncomfortable situation of being unable to re-create full history without access to dozens of repositories on the 'net.

Subversion has no support for merging across repositories, and its support for merging across simulated local branches isn't all that great, either.

7. It is possible to commit, branch, merge, and work with history offline
Everyone except Subversion does a good job of this.

8. The program is fast enough for general-purpose use
All tools here are probably fast enough for most people's projects. Subversion can be annoying at times because many more svn commands hit the network than those from others.

In my experience, Arch was the slowest. Though it was still fine for most work, it really bogged down with the Linux kernel. bzr was next, somewhere between arch and darcs. bzr commands "felt" sluggish, but I haven't used it enough to really see how it scales.

Darcs is the next. It used to be pretty slow, but has been improving rapidly since 1.0.0 was released. It now scales up to a kernel-sized project very well, and is quite usable and reasonably responsive for such a thing. The two main things that slow it down are very large files (10MB or above) and conflicts during a merge.

Mercurial and git appear to be fastest and pretty similar in performance.

All of these tools perform best with periodic manual (or scheduled cron jobs) intervention -- once a month to once a year, depending on your project's size. Arch users have typically created a new repo each year. Darcs users periodically tag things (if things are tagged as part of normal work, no extra work is needed here) and can create checkpoints to speed checkouts over the net. git and Mercurial also use a form of checkpoints. (not sure about bzr)

Subversion works so differently from the others that it's hard to compare. (For one, a checkout doesn't bring down any history.)

Conclusions
I was surprised by a few things.

First, that only one system actually got #4 (merging individual changesets) right. Second, that if you had to pick losers among VCSs, it seems to be Arch and bzr -- the lack of history in branching and merging is a really big issue, and they don't seem to have any compelling features that git, darcs, or Mercurial lack. #4 was a unique feature to Darcs a few years ago, but I figured it surely would have been cloned by all the other new VCS projects that have popped up since. It seems that people have realized it is important, and have added token workaround support for it, but not real working support.

On the other hand, it was interesting to see how VCS projects have copied from each other. Everyone (except tla) seems to use a command-line syntax similar to CVS. The influence of tla Arch is, of course, plainly visible in baz and bzr, but you can also see pieces of it in all the other projects. I was also interested to see the Darcs notion of patch dependencies was visible (albeit in a more limited fashion) in bzr, git, and Mercurial.

So, I will be staying with Darcs. It seems to really take the idea of distributed VCS and run with it. Nobody else seems to have quite gotten the merging thing right yet -- and if you are going to make it difficult to do anything but merge everything up to point x from someone's branch, I just don't see how your tool is as useful as Darcs. But I am glad to see ideas from different projects percolating across and getting reused -- this is certainly good for the community.

Updates / Corrections
I got an e-mail explaining how to get the individual patch diffs out of bzr. This will work only for "regular", non-cherry-picked merges, and requires some manual effort.

You'll need to run bzr log, and find the patch IDs (these are the long hex numbers on the "merged:" line) of the changeset you're interested in, plus the changeset immediately before it on the same branch (which may not be on the same patch and may not be obvious at all on busy projects.) Then, run bzr diff -r revid:old-revid-string..new-revid-string.

I think this procedure really stinks, though, since it requires people to manually find previous commits from the same branch in the log.

10 August 2006

Bernhard R. Link: Graphic Libraries

Wouter Verhelst asked why simple games are so slow nowadays.

I think the problems are in the libs. All this modern stuff tries to become more and more modern, and get more and more stuff out of all those new render extensions, direct graphics and hardware accelerations. There simply is no way to decide which way is faster, so libraries have to guess. So it is no suprise things go wrong. And the place they go wrong are of course not the fast computers, but the older stuff, that does not has those nifty accelerations and no fast CPU to cancel it out.

Another disadvantage are all those "portable" libaries. SDL for example needs three connections to the X server before it does anything. Three times etablishing a connection, checking of security cookies, and so on. Its API looks like living with windows, or never intended to be use for anything other than full-screen mode. (You want to find out how large the window is? Why should you be able to when you said the window cannot be resized?)

QT likes to use extensions, too. I don't know if it is its fault or newer X servers, but the newer your installation gets, the slower 2D games using QT can become. (Note the can, if you have the right graphics card, lucky you, if you have the wrong one, bad luck). To be fair QT is not supposed or designed for 2D games. On the other hand I don't know what it is supposed to do other than being a C++ compiler benchmark measured in hours.

GTK was such a promising design. Object orientated (widget classes are one of those very few things were object orientated can be used with more advantages than disadvantages) but still plain C, small and looking like designed for X. To be fair, I do not even know how well it performs, as the ever increasing library cancer drives me away. From the "users should not be able to change their homedir, that would be far too much the Unix way" glib, over all this miriad of differt little libraries, all moving all the time, spewing their headers in so many different directories a compiler invocation folds three time around your terminal.

Well, enough ranted. My next graphical program will use Athena Widgets. I only have to hope all this reanimated X development in the last time will not pull xlib away from under out feets in the future...

9 August 2006

NOKUBI Takatsugu: I'm trying to use xenoprof.

In Xen Dom0/U environment, some optimized binaries for the prossessor type i686 work slower than standard Debian binaries. To discover the reason, now I am trying to use xenoprof, some patchsets for Xen 3.0.0. The latest unstable Xen have already merged the patch, but Debian sid's package is still not supported, so I need to use Xen 3.0.0... I hope xenoprof will be merged the Debian Xen related packages.

Evan Prodromou: 21 Thermidor CCXIV

We had a great trip up from wt:Boston yesterday and today. Monday morning, after Wikimania had ended, I went to visit the Cambridge offices of Let's Go publications. Let's Go is a travel guide series researched, written, edited and published exclusively by Harvard students. It's an amazing feat, and I've always liked the quality of the guides and the depth of coverage. Let's Go is far from the most prolific of travel publishers, but they have good writing and high-quality listings. I spent about an hour talking with the publicity manager, editor-in-chief, and publisher, mostly about Let's Go but also about Wikitravel a bit. It was a good time. Catching back up with Maj and Amita June, we had lunch at the Barking Crab, a clam shack on the harbor in Boston. Amita June loved the clam chowder; Maj ordered crab legs, and cracked them open with a big rock. Sated, we headed out of Boston on Massachusetts highway 2, through wt:Concord (Massachusetts) and a few other towns to the Connecticut River. It took a while to get out of Greater Boston, but once we were out it was beautiful country, still very wild after almost 400 years of Europeans. We drove up through wt:Brattleboro to wt:White River Junction and then called it a night -- the baby was wailing something fierce. We got a calzone and a Greek salad delivered by Ramunto's Pizza in wt:West Lebanon (New Hampshire), right across the border. It was a great addition to the otherwise so-so wp:X-Men: The Last Stand that we watched on the hotel movie channel. tags: ramunto's pizza

Today This afternoon was even better. We got up this morning early and were on the road before 9AM. That's always the best time to drive with the baby -- before she gets too crazy. We whizzed past wt:Burlington (Vermont) and up into the Lake Champlain Islands -- a really nice string of communities that reminds me of wt:Prince Edward Island. The baby started wailing around noon, so we stopped at North Hero State Park and waded in the lake a bit. Lake Champlain has a lake serpent like Loch Ness, but this one is named "Champ". I held Amita June carefully to make sure she wasn't swept away by this fossil reptile. After a two-hour nap on the grass (!), we had some delicious sandwiches in wt:Alburg then crossed the border. Maj had to renew her work permit -- she sent in a renewal by mail a couple of months ago, but she hadn't received the permit by the time we left, so she had to re-apply at the border. Once we got through with that, it wasn't long before we were back in Montreal. Home again, home again, though. I guess there was some pretty nasty weather last week in Quebec -- there are huge tree limbs, 3-4 feet in diameter, on the ground across the street in Parc La Fontaine. My lawn out front is positively glowing green, though. tags:

4 August 2006

Wouter Verhelst: Password expiration sucks!

Just a few moments ago, I was trying to commit a minor fix to the NBD subversion repository. However, suddenly the server refused my commit; the password which I knew to be right wasn't working. So I loaded SourceForge.net in my browser and went to the admin link there to find out whether I had perhaps fucked up my own commit rights. I've been known to do that before. Doing so of course required me to log in. Which revealed the problem that was causing this in the first place: apparently my password had expired. I had been using the very same password since ages, but for some reason unknown to me, sourceforge has now decided that they want to introduce password expiry. Of course, good password management is very important if you want to avoid issues with people stealing your passwords. For that reason, I usually generate my passwords with pwgen -s 15, which generates passwords that are impossible to guess—one example of an actual password that I have used in the past (but that I do not have in use in any other system anymore today) is qChjZeWIbSDGON/. The hard part is, probably, to memorize that; for that, I have a pretty simple method: I enter 'gpg -o ~/foo' and enter my new password. Then I pick out some random .jpg file somewhere on my hard disk, and concatenate the gpg data to that file. It is usually still possible to view the file in a viewer with that extra data added to it; IME, most image viewers have the ability to view all data in a corrupt JPG-encoded image that occurs before the corruption—which in this case, will be all of the image. As such, if you don't know which file it is, and you don't know my GPG password, chances are low that you'll find it and steal my login data. Additionally, of course the .jpg file is either removed or restored to its original state when I memorized the password, and finally I also update my GPG key and the password of the system that contained the file with the encrypted password to be using the same new password, so chances of stomeone stealing it get even lower. However, even with this method, it still takes me a few days or weeks to memorize it. Also, synchronizing the new password to all the systems and websites on which I have an account takes a while. For that reason, I prefer not to do it too often. With that in light, it is slightly problematic to have an account on a system that has a password expiration policy in force, because a) this makes it impossible for me to use the highly secure passwords that I use "everywhere else" on these expiration-using systems, b) because the average expiration policy is 2 months, making it impractical for me to generate secure passwords for these sites as well (by the time I memorized the new password, we're already at least halfway through the two months if I need to use that password fairly regularly—or it might even be too short if I don't use the password regularly. The result of the above is that password expiration policies, in my case, force me to use less secure passwords of which I'm sure I can remember them—old passwords which I used before I had a GPG key or had learned about pwgen. I still use those on websites that require me to enter a password but which I do not trust to handle my passwords in a secure manner; I don't want to give these sites the password to unlock my gpg key, for example. The problem with these passwords is that they are easy to guess; they're usually not some unintelligible bit of random letters, but are six to eight characters that actually have a meaning. In fairness, I did have one of those old and insecure passwords in use at sourceforge, because I indeed didn't trust them with my secure passwords. If they base their password expiration policy on the strength of the password, then this whole blog post should be ignored. But in general, it is my point that password expiration policies do not improve security at all. It forces people to use passwords that they can quickly memorize (otherwise they're trying to memorize all the time), and it does not give people who usually pick easy to guess passwords any incentive to pick better, harder to guess passwords. On the contrary, in fact. Password expiration policies suck.

Andrew Pollock: [tech] I always seem to buy lemons

I wish hardware printed the PCI ID on it, so you could at least do some homework on what's what. Bought a HP branded four port USB 2.0 controller from Fry's tonight, and the sucker doesn't appear to work despite the page for a mighty similar device saying it should work. Here's the relevant bits for posterity: lspci output:
01:0a.0 USB Controller: NEC Corporation USB (rev 43) (prog-if 10 [OHCI])
        Subsystem: Unknown device 1631:0035
        Flags: bus master, medium devsel, latency 64, IRQ 10
        Memory at ff8f5000 (32-bit, non-prefetchable) [size=4K]
        Capabilities: [40] Power Management version 2
01:0a.1 USB Controller: NEC Corporation USB (rev 43) (prog-if 10 [OHCI])
        Subsystem: Unknown device 1631:0035
        Flags: bus master, medium devsel, latency 64, IRQ 9
        Memory at ff8f6000 (32-bit, non-prefetchable) [size=4K]
        Capabilities: [40] Power Management version 2
01:0a.2 USB Controller: NEC Corporation USB 2.0 (rev 04) (prog-if 20 [EHCI])
        Subsystem: Unknown device 1631:1600
        Flags: medium devsel, IRQ 11
        Memory at ff8f7c00 (32-bit, non-prefetchable) [size=256]
        Capabilities: [40] Power Management version 2
01:0a.0 0c03: 1033:0035 (rev 43)
01:0a.1 0c03: 1033:0035 (rev 43)
01:0a.2 0c03: 1033:00e0 (rev 04)
Relevant dmesg output:
0000:01:0a.2 EHCI: unrecognized capability 00
ACPI: PCI Interrupt 0000:01:0a.2[C] -> Link [LNKA] -> GSI 11 (level, low) -> IRQ 11
ehci_hcd 0000:01:0a.2: EHCI Host Controller
ehci_hcd 0000:01:0a.2: new USB bus registered, assigned bus number 1
ohci_hcd: 2005 April 22 USB 1.1 'Open' Host Controller (OHCI) Driver (PCI)
ehci_hcd 0000:01:0a.2: irq 11, io mem 0xff8f7c00
ehci_hcd 0000:01:0a.2: startup error -19
ehci_hcd 0000:01:0a.2: USB bus 1 deregistered
ACPI: PCI interrupt for device 0000:01:0a.2 disabled
ehci_hcd 0000:01:0a.2: init 0000:01:0a.2 fail, -19
ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 10
PCI: setting IRQ 10 as level-triggered
ACPI: PCI Interrupt 0000:01:0a.0[A] -> Link [LNKC] -> GSI 10 (level, low) -> IRQ 10
ohci_hcd 0000:01:0a.0: OHCI Host Controller
ohci_hcd 0000:01:0a.0: new USB bus registered, assigned bus number 1
ohci_hcd 0000:01:0a.0: irq 10, io mem 0xff8f5000
ACPI: PCI Interrupt 0000:01:0a.1[B] -> Link [LNKD] -> GSI 9 (level, low) -> IRQ9
ohci_hcd 0000:01:0a.1: OHCI Host Controller
ohci_hcd 0000:01:0a.1: new USB bus registered, assigned bus number 2
ohci_hcd 0000:01:0a.1: irq 9, io mem 0xff8f6000
I knew I should have bought the VIA-based one instead. Red always goes faster.

3 August 2006

Biella Coleman: In between pride and anxiety: the state of South Africa

Writing blog entries in South Africa did not come so easily, mainly for technological reasons. While for the first 4 days of my trip I had steady Internet access, most of my time was spent enjoying the Law and Society Summer Institute. Once over, I headed from Joburg to Durban and my access became much spottier, not to mention that Bernard, my indefatigable host, made sure the days were filled seeing the gritty but beautiful urban beach town, hanging with the crew of University of Chicago students/graduates that descended upon the city, and having a go at sufring in the Indian Ocean. In the evenings, I did have some free time, but they were too chilly for me to do much of anything but burrow myself deep under a small mountain of covers and pass out after a day filled with plenty to do and see. The theme of the conference I attended was the intersection of rights and regulations and given the Summer Institute was held in South Africa, it was not all that surprising that much of the conversation centered on one class of rights, those of human rights. Since the end of apartheid, SA has become a particularly-impossible-to-ignore beacon for human rights, and acts as a sort of modern guiding light that has defined the meaning and institutionalization of human rights post-WWII. So if WWII and the Holocaust represent the generative genesis of human rights, South Africa represents a new era of human rights, a place that revisited, rejuvenated the discourse and implementation in a post-Apartheid Constitution that has been touted, world-wide, as exemplary for its generous commitment to equality and other rights. In this respect, one feels, quite everywhere, the collective pride of a nation who managed to end a brutal regime and it did so under the gaze of world who followed the drama on TV screens, college campuses, and newspaper headlines. As SA has moved to another era of picking up pieces and trying to build a more equitable society, many in the world are still eagerly watching. But pride does not stand alone, in isolation, for it mixes with other collective sentiments. The collective admiration and pride of a nation, like the sweet water of a river, visibly and freely mixes with a more salty frustration and anxiety to produce an in-between brackish state of affairs. Pride in other words sits alongside social anxiety, which palpably manifests at different registers and tones, to texture the cultural and political landscapes of SA. The frustration follows from the fact that many are still living in dire poverty and in the last ten years, many steady jobs have vanished. Shantytowns, the symbols and material conditions of apartheid, are still omnipresent (though very well hidden from the middle class and the rich). The ruling government, while having roots in communism and socialism, has to contend with a world-wide regime of neoliberal governance and, thus, must try to balance satisfying commitments with the outside world with delivering promised goods to its population, demands that often run uncomfortably counter to the neoliberal logic of deregulation and financial austerity. Alongside this or perhaps as a manifestation of it, the talk of the town, especially in Johannesburg, is of the rampant crime. As a sign of crime and fear, most middle-class and wealthy houses are adorned with metal fences, barbed wires, electric fences, and a simple sign from private security companies (Chubb being the most common in Johannesburg) that announce they provide armed response security to break-ins. This is serious stuff. And while some of the fear of crime is a self-perpetuation exaggeration of itself (and as my friends explained, before the end of Apartheid the monitoring of crime was not as common, so crime statistic can only go one direction, up), it has in certain parts of cities spiraled out of control. And if there comes a time when the crime abates, the architecture of barbed wire and security services is now really an architecture-in-place and will be hard to dislodge from the mental and physical spaces of SA. So more than anything else, I found that the vibe of SA seesaws between pride and anxiety. As a visitor, you are enveloped in this dyanmic duality. You can’t help share in the pride now enshrined in national monuments and museums. But at the same time, you also are not sure what path the nation is heading in and you too share in the fear of crime and move your body and belongings cautiously through the cities. There is no doubt of the governmental commitment to provide services like health care and housing, a commitment that in places like the United States seems to exist more like an endangered species on the brink of perpetual extinction. And so it was awfully refreshing to be in a place where talk of such things is not seen with a suspicious eye that in the US is often tagged as something that runs counter to the realization of freedom and a just society. But whether these important goals can be brought into the plane of existence is another question, one that is not unique to SA but is something that many other countries, especially Latin American countries, from Venezuela to Bolivia are also asking and trying to answer. Bernard and others reminded me that South Africa is number 4 in terms of producing new millionaires, which is quite a remarkable statistic given how many nations there are in the world. But despite the poverty of the place, this wealth is evident and there was one place in particular that symbolized this: Melorse Arch. Located in Johannesburg, this is a lifestyle compound/gated community that mixes posh residential condos with posh restaurants and bars. To tell you the truth, I have never seen anything like this and it was probably been the most extraordinary thing I saw in South Africa. The United States and Puerto Rico (where I am from) and undoubtedly many parts of the world are no strangers to gated communities. But Melrose Arch took the implementation of them to a whole new, somewhat disturbing, level, in part because the domestic sphere of expensive housing co-mingles so intimately with sites of accentuated consumption, reminding visitors that the point of life, (hence the name lifestyle) is to make money so as to consume, and to do so lavishly. And what brought this really home was that the South African Bond Market was also located here in Melrose Arch. In fact we could see the building clearly from our restaurant, which proudly displayed a large Elephant statute (which, I think, harkens to the large bull in Wall Street NYC). I guess if you are a bond trader, and dislike commuting, and like good places to eat, well this is the place for you as you don’t ever have to leave your complex. Work and play become seamless and thus this place is perhaps one of the most powerful signs that the point of work is to play, is to consume, so that a perfect cycle is reached in which making money is a path for self-pleasure (or at least nuclear-family self-pleasure), a form of life, that does not have to engage with the rest of society, literally. Of course, there are many layers of production that do exist and make a place like Melrose Arch possible yet are well hidden from the visitors and residents of the compound. But Melrose Arch is not fully gated. It is open to outsiders so they can enjoy the fine dining, and if you sit in one of the many outdoor tables, one can fully take in the glittering performance of this social cycle, and for some, undoubtedly it is a measure for and of the good life, the right life, that to which others will aspire. What I find interesting about the place is that it captures, with unmistakable clarity and precision, the point of much of neoliberal economy, especially the love for finance (in which money seemingly is made out of nothing), a robust service economy (the service in the restaurant was unlike anything I have seen, with people bring you ceramic jugs of water to wash your hands, live entertainment, outdoor fires, and blankets, henna painters etc), and consumptive pleasure. To drive home the point, in Melrose Arch, there is not even a supermarket; lest there be any mistake, this place was constructed as a place of consumption, through and through. There were many other posh areas in South Africa, and as I mentioned earlier, the impoverished areas were kept a distance from middle class neighborhoods, so much so, that in some areas, like Cape Town, you really had to go out of your way to see them (again this is very different from many parts of Latin America where, in an instant, poor neighborhoods switch to wealthy). On the other hand, quite visible were things like malls and there were a lot of them. Apparently South Africa has been a testing ground for the modern mall. To get to the malls, there are very good roads to travel (much better than most of Latin America) and other basic services like tap water, and infrastructure like airports and phones, are in excellent condition. So it was somewhat surprising and frustrating that Internet services outside of business are somewhat scant, expensive, and slow. Sure Internet services are the best in Africa and you can get Cable, ADSL etc. at home but you have to pay a pretty Rand for it and on top of it, the access is pretty slow. Now, there are many parts of the world where this is the case (though apparently in a study that compared 12 countries at a similar lever of development to SA, Internet access was 10 times more expensive in SA than the most expensive country which was Chile), but for me, it was the juxtaposition of having such solid infrastructure and wealth mixed with lackluster Internet access that made it somewhat odd. And it also made me realize how much the Internet and access to it had not only saturated my life, but how I have come to see it as a something creeping close (though not the same) as a basic right. Of course, security and self-determination, food, shelter, and health services are for me are the basic architecture of human rights. Without these, existence in the most basic sense becomes difficult. Access to the Internet, though in no way is indispensable to the basic conditions of living, can at least greatly facilitate the type of political work and organizing needed to demand other basic human rights. In this sense, it is more like an extension of or at least serious complement to basic services like clean water, and it seems like once there has been an investment in securing fiber optic (which I am sure is pricey), the cost of maintenance compared to physical infrastructures is so much smaller that it is really worth the initial costs. This bring up some difficult questions and vexing specters related to many of the human rights (in the Universal declaration), which are I think not so much so how to define them in a general sense (I think this has been laid out somewhat well) but how to specify them so as to realistically implement them . On the one hand, the flexibility and vagueness of human rights is what gives it tremendous currency. Folks around the world have wielded the discourse of human rights to make demands that resound strongly and profoundly. But once a proclamation of a human right has been made, like article 25:
Everyone has the right to a standard of living adequate for the health and well-being of himself and of his family, including food, clothing, housing and medical care and necessary social services, and the right to security in the event of unemployment, sickness, disability, widowhood, old age or other lack of livelihood in circumstances beyond his control..
it seems like the real hard work is about specifying and implementation. We may easily agree that an adequate standard of living may not be Melrose Arch but it still does need definition and a plan for implementation. And so there seems to be plenty of room in human rights politics to move from the state of declaration to that of strategies of implementation.

Next.

Previous.