Search Results: "cas"

8 December 2008

Biella Coleman: dino-anon (or how to end your hacker class on a lulzy note)



dino-anon, originally uploaded by the biella.
As I mentioned in my last entry, the end of the semester is one of overwhelming, seemingly unstoppable entropy. People and Professors are tired and to help move us through this thickness, I try to pick fun readings. Today I also had the opportunity to have a group of NYC-based Anonymous come to class today to give us a window into the politics of protesting Scientology and this of course worked magnificently against the end-of-semester-entropy. In a nutshell: they did not fail or in their own lingo, it was an Epic Win. They provided a really nice set of presentations (and then also proceeded to collectively draw the lulzy image featured above) about their origins, their purpose and some of the tensions within the group. Then we had a class discussion about a number of topics, including their argot and “offensive” (offensive) [I am not sure whether to put " " or not] online language. While I am still ambivalent about their use of “fag” and “nigger”, I greatly admire Anonymous for their politics of pleasure and aesthetic audacity (not to mention creativity). They insist that protest must be fun, must be wild, must go beyond simply rational discourse. If you are interested in this topic, check out Stephen Duncombe’s excellent (and very readable) book Dream, which I happened to be (somewhat randomly) reading right now and it helped give me a new fresh perspective about the politics driving Anon.
Duncombe is a professor at NYU Passionate (with a Capital P) about politics with a lot of real world political experience who examines the importance of desire, fantasy, and pleasure for progressives and leftists who tend to shy away or even denigrate such impulses. And it is certainly the case that Anonymous is experimenting, consciously and unconsciously, with these very questions and impulses which helps explain why many people jumped on board. I hope to post the audio from the class a little later on.

Jonathan McDowell: We need a STFU option

The Debian Project recognises that on occasion the General Resolution process is dominated by a vocal minority of the project members, while the majority are uninterested in the topic under discussion. Without wishing to curtail the democratic process it is felt that it should be possible for the silent majority to indicate its desire to move on from the topic of a GR rather than continuing to rehash the same arguments ad infinitum. In order to facilitate this the project resolves to add a further option to all ballets, "No Further Discussion". It is hoped that in the event of the "No Further Discussion" option being the winner of any vote that the project as a whole will accept that discussion of the subject of the vote is not considered to be a worthwhile use of project time or resources, and that we should therefore concentrate on more important matters. (I thought about signing this post, but decided against it)

Anand Kumria: Coughing up blood

Normally, those would not be the search terms I would plug into Google, first thing in the morning. But they were appropriate, today. Because that was what was happening. When I was younger, I used to have asthma and, as part of that, I would invariably contract bronchitis periodicially. Over the past years, even though my asthma has receeded, I would still get bronchitis at the interface between seasons. It did not matter if the season change was hot to cool, or cool to hot. Whatever the change, I would get it. I've been used to this. It is, in it's own way, comforting. I can watch the seasons change, and notice that are changing earlier. It's like I have an in-built global warming detector! This latest bout came on about 3 weeks ago. So, as usual, I thought nothing of it, bought my normal supply of strepsils and went about my life. It was not until I was doing some training, and was left exhausted and wondering why that I decided to head to the doctor. He could not hear anything wrong with my lungs. We did a few peak flow tests; my best of 3 being 250. Typical values for a health person are 600+. His conclusion: Your asthma has recurred. . A week later and I am still short of breath, but also coughing up blood. So after some searching on the interwebs, it appears that this can be normal with excessive coughing. And that the best ways to control excessive coughing are: codine1 (paracetamol / panadol) and chocolate 2 So, I've been indulging myself in both. I'm off to get a chest X-Ray just in case this is more serious and the blood re-appears tomorrow. But now you know that chocolate is good for you (and your cough).

7 December 2008

Biella Coleman: Nerds, Geeks, and Nerd/Geek Grrrls

I have not sat behind the helm of teaching for very long but I already have a few tricks up my sleeve. One of them is that I assign some of my favorite readings at the end of the semester so as to counter the downtrodden and tepid spirit and mood (not to mention attention) of my students, which drops precipitously with each passing day. Let’s face it post Thanksgiving, we are all a little tired and I try to find the readings, which uplift, intrigue, and challenge cherished assumptions about marriage and sex. So far it seems to pay off and I often can tell because the conversational pitch and excitement in class is high and the student writings are good, great, even exceptional, which, again, is hard to produce/induce this late in the semester. Readers of this blog would probably be most interested in one of these lively readings, Ben Nugent’s American Nerd (and it might be interesting to hear how the European Nerd story would diverge or converge with this one). One of my students, an audio geek and Free Culture President/Free Software junkie, by the name of John Randall produced a very nice little response (not research) paper on the Nugent reading as well as a short piece by Sarah Seltzer from Bitch Magazine
The(Girl) Geek Stands Alone (and thanks to Joe> for cluing me into this piece). Seltzer piece basically argues, in her own words, the following:
Imagine this scene from a comedy: a group of female friends sit around smoking a bowl and working on the Wikipedia page for Lord of the Rings. Their fashion sense is decidedly iconoclastic and several sport thick-rimmed glasses. Without a trace of self-consciousness, they have a hilariously ribald discussion on the relative traits of elves and orcs.
Awesome as it is, you’ll never see this scene onscreen. No mainstream movie or TV series would dare group so many female nerds together, or celebrate them so unabashedly
So John’s whole response paper is here and here is the pdf. In the paper, he makes a number of excellent points but what I loved most about it was his very geeky move at the end of the paper to prove Sarah (somewhat wrong) by listing all the girl geeks that do and have appeared in mainstream (and not-so mainstream) entertainment venues/shows, etc. They are as follows and in his own words:
I will now showcase my own geekiness through my knowledge of geeky female characters. Why? Because I can. But also because I want to demonstrate that if you look hard enough for representations of female geekyiness in pop culture, you will find plenty. Moreover, if you pick the right ones, you can make them support your argument about gender relations, whatever that argument might be. Some of these charters and personalities are hardly gendered, some are hyper-sexual. Some are incredibly attractive but completely asexual. Some undergo a transformation into/out of geekiness, while others to not. Some are powerful, while some are powerless. Some (most?) celebrate their geekiness, others are tortured by it. They are all geeks take your pick: Aeon Flux, a sexy geek who’s technological gadgets give her super powers (Comic drawings then Charlize TheronAeon Flux) Wonder Woman, attractive pilot of an invisible plane Lara Croft, a female Indiana Jones in short shorts, wielding guns and cracking computer codes (CGI and then Angelina Jolie in Tomb Raider) She-Ra, who was way smarter than He-Man (Masters of the Universe cartoons) Gadget Hackwrench, beautiful chipmonk technician for Chip and Dale (Rescue Rangers cartoon) Velma, featuring eyeglasses, awkwardness and brains (Scooby Doo), Hermonie Granger, a geek who is temporarily rejected because she is a geek, remains a geek, and finds love and happiness (Harry Potter) Barbarella, who, through comic strips and a 1968 film, helped introduce science fiction and sex to young women (Barbarella) La Femme Nikita, a skillful, savvy, and very feminine girl who doubles as a covert spy Kate Libby, aka ‘Acid Burn’, uber-sexualized hacker (played by Angelina Jolie in Hackers) Kathryn Janeway, smart and powerful captain of the USS Voyager (Star Trek Voyager) Starbuck (Battlestar Galactica), Dana Scully, FBI agent with encyclopedic media knowledge. The bizzare subtex of non-realized sexual tension was part of the magic The X-Files. Willow Rosenberg, geeky sidekick turned geeky supervillian (Alyson Hannigan in buffy the Vampire Slayer) Michelle Flaherty, hyper-sexual band geek (Alyson Hannigan in American Pie series) Dr Ellie Sattler, heroniene scientist (Jurrasic Park) Ellie, scientis hero (played by both Jenna Malone and Jodi Foster in Carl Sagan’s Contact) Dawn Wiener (Heather Matarazzo in Welcome to the Dollhouse Enid and Rebecca (Thora Birch and Scarlett Johanson in Ghost World) just about every charater ever played by Jenna Malone (Donie Darko, The Dangerous Lives of Altar Boys, The United States of Leland, Saved!, etc) half of the charaters played within the last decade by Jodi Foster (Panic Room, The Dangerous Lives of Altar Boys, Flightplan, The Addams Family half of the charaters played by Christina Ricci (Mermaids, The Addams Family, Little Red Riding Hood, The Ice Storm, Buffalo ‘66, Prozac Nation, Pumpkin, Speed Racer) half of the characters played by Natalie Portman (The Professional, Mars Attacks!, Star Wars, V for Vendette, The Darjeeling Limited, Mr. Magorium’s Wonder Emporium, Garden State) Molly Ringwald. characters played by Molly Ringwald. Rock musician Ani DiFranco and geeky Riot Grrls everywhere. Sarah Vowell, NPR commentator celebrating her geeky life. Voiceover for geeky cartoon characters. Rachel Maddow, for being Rachel Maddow.
First, awesome list, though he forgot a few (like one of my favorites, Bionic Woman and a more recent one, Juno) and it is nice to have it in one compact place. But, I have to say, I still agree to some degree with Sarah Setlzer, though I also agree with John. On the one hand there are representations and it is as important just to strut this stuff publicly as it is to claim that there is not enough female geeky representations in mainstream media. This is what John has done quite nicely. One the other hand, as he himself says ” if you look hard enough for representations of female geekyiness in pop culture, you will find plenty.” I think those words, “if you look hard enough” also speaks volumes of the continued disparity that does exist. One should not have to look “hard,” and the only blockbusters, so to speak, which feature a female geek, is Tomb Raider, which for being so hyper-sexualized is not so geeky to me, no matter how good she is with the gadgets. That said, what I find so important, and have emphasized in different contexts, is the need for what I think of simultaneous positive and negative form of critique, the former being about pointing to already exisitng examples to get people jazzed and excited and to put things in perspective. The later form of critique, negative critique, identifies a lack, a void to fill, just the type of excellent commentary in the Seltzer piece… But now for the most important question, who has John overlooked?

David Welton: Python "Surpasses" Perl?

There has been some buzz going around about Python "surpassing" Perl in terms of "popularity": http://mail.python.org/pipermail/python-list/2008-November/517191.html However, they're basing their results on the TIOBE survey, which is, in my opinion, even dodgier than my own, at http://www.langpop.com . It's really difficult to pin this sort of thing down, but I think that by utilizing more data sources, my own numbers bear some relationship to what my "ear to the ground" tells me about what's going on, and certainly more than TIOBE's, which place D, Logo and Lua above things like Tcl/Tk. I know Tcl is not the hottest thing out there these days, but...Logo? D is gaining in popularity, but how many companies are hiring D programmers, how much code is out there written in D? I'm not saying that D is "bad" or "not worthy" because of that - quite the contrary, I think it's on its way up, but there are a lot of things you have to look at in order to take a stab at creating some meaningful numbers, and even then it's important to remember that popularity isn't everything! In any case, picking a precise moment in time when one language "passes" another is also a bit more theater than science, in my opinion. Getting back to Perl and Python, I thought I'd look at some numbers of my own. Unfortunately they only go back a year, but they already give us an idea of what's going on. In order to concentrate on something fairly concrete, let's look at Freshmeat projects: Perl is still clearly more widely used. However, I think there's an important distinction to be made in terms of popularity. Since many systems that function ok stay around for years, there's a big difference between what's being used for new systems, and what's out there already. Perl has a lot of code out there already, but how fast is it growing in comparison to Python? Python's definitely got the edge - it's growing, whereas Perl was very nearly static. To me that does indicate that Python has got momentum right now, where Perl is sort of coasting.

David Welton: Python "Surpasses" Perl?

There has been some buzz going around about Python "surpassing" Perl in terms of "popularity": http://mail.python.org/pipermail/python-list/2008-November/517191.html However, they're basing their results on the TIOBE survey, which is, in my opinion, even dodgier than my own, at http://www.langpop.com . It's really difficult to pin this sort of thing down, but I think that by utilizing more data sources, my own numbers bear some relationship to what my "ear to the ground" tells me about what's going on, and certainly more than TIOBE's, which place D, Logo and Lua above things like Tcl/Tk. I know Tcl is not the hottest thing out there these days, but...Logo? D is gaining in popularity, but how many companies are hiring D programmers, how much code is out there written in D? I'm not saying that D is "bad" or "not worthy" because of that - quite the contrary, I think it's on its way up, but there are a lot of things you have to look at in order to take a stab at creating some meaningful numbers, and even then it's important to remember that popularity isn't everything! In any case, picking a precise moment in time when one language "passes" another is also a bit more theater than science, in my opinion. Getting back to Perl and Python, I thought I'd look at some numbers of my own. Unfortunately they only go back a year, but they already give us an idea of what's going on. In order to concentrate on something fairly concrete, let's look at Freshmeat projects: Perl is still clearly more widely used. However, I think there's an important distinction to be made in terms of popularity. Since many systems that function ok stay around for years, there's a big difference between what's being used for new systems, and what's out there already. Perl has a lot of code out there already, but how fast is it growing in comparison to Python? Python's definitely got the edge - it's growing, whereas Perl was very nearly static. To me that does indicate that Python has got momentum right now, where Perl is sort of coasting.

6 December 2008

Biella Coleman: FLOSS Manuals: How to Bypass Internet Censorship

If you don’t know about this great project, you should. The nitty gritty details are to be found here. FLOSS Manuals Release Circumvention Book, How To Bypass Internet
Censorship December 4, 2008, Amsterdam A new book released by FLOSS Manuals, How to Bypass Internet Censorship,
describes circumvention tools and explains why you might want to use
them, and honestly describes the risks you must consider before
circumventing blockers or monitors. Blockers and monitors restrict
access to areas of the Internet, and this book describes simple
techniques for bypassing those restrictions. The book can be read or
downloaded for free as a PDF from flossmanuals.net, or you can purchase
a high-quality printed copy of the 200 page book through Lulu, an
on-demand printer, at http://www.lulu.com/content/4904448 for 10.83
($14.00). The growth of the Internet has been paralleled by attempts to control
how people use it, motivated by a desire to protect children,
businesses, personal information, the capacity of networks, or moral
interests, for example. Some of these concerns involve allowing people
to control their own experience of the Internet (for instance, letting
people use spam-filtering tools to prevent spam from being delivered to
their own e-mail accounts), but others involve restricting how other
people can use the Internet and what those other people can and can’t
access. The latter case causes significant conflicts and disagreements
when the people whose access is restricted don’t agree that the blocking
is appropriate or in their interest. Problems also arise when blocking
mechanisms and filters reduce access to useful business, health,
educational, and other information. Because of concerns about the effect of internet blocking mechanisms,
and the implications of censorship, many individuals and groups are
working hard to ensure that the Internet, and the information on it, are
freely available to everyone who wants it. There is a vast amount of
energy, from commercial, non-profit and volunteer groups, devoted to
creating tools and techniques to bypass Internet censorship. Some
techniques require no special software, just a knowledge of where to
look for the same information. Programmers have developed a variety of
more capable tools, which address different types of filtering and
blocking. These tools, often called “circumvention tools” help Internet
users access information that they might not otherwise be able to see.
This book documents simple circumvention techniques such as a cached
file or web proxy, and also describes more complex methods using Tor,
which stands for The Onion Router, involving a sophisticated network of
proxy servers. How to Bypass Internet Censorship was written by eight writers in a
FLOSS Manuals ‘book sprint’ - a week-long intensive writing session, and
it also includes content from many different authors’ previous works on
the subject.
How to Bypass Internet Censorship will always be available for free from
the FLOSS Manuals Website. Each sale of the book generates $2.50 (USD).
100% of this income goes back into the development of more manuals about
free software. About FLOSS Manuals
http://www.flossmanuals.net
FLOSS Manuals is a non-profit foundation and community creating a
collection of manuals that explain how to install and use a range of
free and open source software. The manuals are friendly and simple, and
they are intended to encourage people to explore the wide range of free
and open source software. FLOSS stands for Free, Libre Open Source
Software, and FLOSS Manuals intends to provide free manuals for free
software. The manuals on FLOSS Manuals are written by a community of
people, writers, editors, and technicians do a variety of things to keep
the manuals as up to date and accurate as possible. The way in which
FLOSS Manuals are written mirrors the way in which FLOSS software itself
is written: by a community who contribute to and maintain the content. FLOSS Manuals produces printed books, PDF books, and HTML output. Each
chapter from each manual can be recombined with other chapters to create
a new manual, which we call remix capability. An embed API lets you use
FLOSS Manuals to write the content and then embed the content into your
website. For more information contact:
Adam Hyde
Founder, FLOSS Manuals
adam@flossmanuals.net

Mike Hommey: On open source and mobile phones

No software is perfect, and most users happen to have some itches they would like to scratch on them. I don’t know anyone who hasn’t thought some day “why can’t that software do <some feature>”. But not everybody is able to scratch these itches. For a starter, most people aren’t developers, or aren’t able to modify source code to reach some known goal, be it fixing a bug or implementing a missing feature. But even when they are able to do so, most applications can’t be fixed or improved easily: most widespread applications are still proprietary software where access to the source code is either impossible or prohibitively expensive. That’s the good thing about open source and free software: you are able to itch these scratches yourself ; and as a free software user and developer, I often do so in the software I use. I must say it’s even frustrating when you are used to this possibility but end up on damn stupid bugs or limitations you can’t fix in proprietary software. I have quite a bunch of such examples, the most recent ones being with VMware ESX, but that’s another story. Mobile phones are everywhere nowadays. In some countries, there are even more mobile phones than people. A huge amount of people are using them daily. Or maybe should I say “endure”. When you go to shop for a laptop, digital camera, or digital portable music player, you can find demonstration models you can fiddle with, see what the user interface looks like, how it behaves, see if whatever feature you like on such devices is present and how easily you can do what you want. With a mobile phone, you don’t have all that (at least in France and Japan, where I experienced this). You’re lucky if one of the sellers owns the exact model you’d like to test and lends it to you for a minute. Most of the time, the “thing” to watch is a plastic model, not even remotely related to the real thing in colour, weight… and obviously, it has as much use as a brick (not even so, actually, as you can’t, for instance, break windows with it). And most of the time, you end up regretting the choice you made, because the UI is so unuseable, or so slow after a while, or so buggy, etc. More and more phones nowadays have multimedia as their main feature. While it can be nice, especially when you see how some are pretty good at it, and when you consider it avoids you to carry both a phone and a multimedia device. Sadly, they usually forget to be good phones, too. Sometimes even, multimedia(-related) features are crippled by the carriers. As an example, my phone, while able to read mp3 music, has been limited by the carrier to refuse to use them as ring tones, while, according to the maker and to various forums, the phone is perfectly able to do so. It’s even worse than that, because even converted as 3gp, which it otherwise allows as ring tones if you download them at a ridiculous price, it still doesn’t allow to put your music as a ring tone. You got it, features in phones are also limited for big money-making. Fortunately, there is a hole in my phone where I can set a 3gp as ring tone if I do it from the music player instead of the file browser. Most articles I read about Android, or the iPhone SDK, relate how they are great opportunities to enable developers to provide nice applications for users, using the provided frameworks. But the thing is : they’re only applications. An application is not the core of the phone. An application won’t take care of ring tones, or vibration types. And that’s what open source in mobile phones should also allow users to do. That’s what it all should be about. As a user and free-software developer, I would like to enhance my phone like I can enhance my laptop. For instance, my phone will only allow crappy polyphonic tones for SMS or e-mail reception. Digital music is only available when you receive a call. Why ? There is obviously nothing preventing digital musing when receiving SMS or e-mail, except a stupid software restriction that could be fixed if the firmware were open-source. Very few phones in France appear to allow japanese input, let alone proper display of japanese characters in e-mail or on the web. My previous phone was able to display japanese correctly. My current phone doesn’t. Neither of them is able to input japanese (which is not unexpected in France, actually). I know the iPhone does both. Anyways, these are informations very hard to get a hand on before buying a model, and something that open-source would allow me to fix. Even better, it would allow me to take the pieces from the asian version of the same (or similar) phone which probably has the functionality. The phone I had when I was living in Japan had a nice feature that I haven’t seen in any phone in France (but again, this kind of information is very hard to get): different vibration types. For example, you had a vibration type making short vibrations, another one long vibrations, yet another one 3 short vibrations, a short pause, then 3 short vibrations again, etc. This is very useful when you disable ring tones during a meeting or some other occasions where you don’t want to bother the people around you with your phone ringing: depending on how the phone vibrates, you know whether you have to take the call or can ignore it, or if it’s only an e-mail, without taking a look at the phone. Again, an open-source firmware would allow me to implement this. I’m sad so much of what open-source can bring to mobile phones is so badly publicized.

Jon Dowland: masterpieces

This week, BBC Radio 1's Zane Lowe played four records in their entirety as part of his "masterpieces" feature, uncensored and without interruption. These were
  • The Stones Roses - The Stone Roses
  • Rage Against the Machine - Rage Against the Machine
  • Pink Floyd - Dark Side of the Moon
  • The Prodigy - Music for the Jilted Generation
Yesterday I was browsing the iTunes music store and I noticed that these albums had jumped into the top ten best selling for their respective categories. It looks like giving the album away on air has convinced people to go out and buy the records. You can listen to the shows up to a week after they broadcast, using the BBC's "listen again" facility, now rebranded and incorporated into "iplayer".

4 December 2008

Jeff Bailey: Coming up to the third night in the new place...

I found the camera this morning, but I haven't taken pictures of the new place yet. I think that'll have to wait until this weekend.

I'm sitting in the corner of what will be the office space. Right now, it's got the cordless phone, the wifi router, the cable modem, and the Vonage (codec? modem? codec seems likely, how wonderfully archaic). Off to the side is a sewing table of some sort that the former owners left behind which has the power brick for our cell phones and Angie's laptop on it.

We're running laundry for the first time in the washing machine downstairs, and seasoning the new cast iron frying pan. Leif had a bath earlier and actually went down at about the normal time. He woke up at 05h30 this morning, probably due to the lack of curtains. It apparently starts to get bright early, and none of us are sleeping well with three of us in a double.

Our furniture is due to arrive somewhere between the 15th and the 18th. I phoned today and the moving company told us that the stuff hasn't left California yet. Ah well. We've purchased a toaster over and electric kettle so far. We bought the stove, washer and dryer from the former owner. There was a spare fridge downstairs that we're using, but mostly we're using the step outside the kitchen door. We're back in Quebec and it's cold enough to keep things out there. =)

This place is easily the largest place I've lived in since my parents split up when I was 8. Angie and I are really trying hard not to fill it with crap, but actually think through what we need.

I signed Angie and I up for gym memberships today after work. Yesterday was cell phones. Angie picked up some new pots and pans. Tomorrow will be towels and some dishes.

Anyone know if it's better to buy a fridge and dishwasher before Christmas or after? =)

The new home number, cell numbers and such will be in Facebook and Orkut in a moment.

Florian Maier: HP Compaq 2510p linux kernel freeze

I've recently noticed that one of our lab laptops running "testing" and "unstable" <strong>freezes</strong> the system whenever i close
the lid. Additionally, X does not always come up properly and rebooting is (besides typing blindly) the only way to get a
graphical login. The graphics chipset is an intel 955. After a bit of search we found a kernel bugreport, which provides a clue
where the problem occurs. root@orion:~# cat /proc/acpi/video/*/DOS
DOS setting: <0>
To get it working for the HP Compaq 2510p, all you need to do is to set a value of "1" root@orion:~# echo '1' > /proc/acpi/video/*/DOS Then cross your fingers and close the lid. Hopefully your system did no freeze and is still up ;-) At work, we're using a modprobe post-install-Script to work around this which sets the working ACPI _DOS value if a ''ACPIvideo_DOS'' variable is set. This will hopefully be fixed soon in a newer kernel version. Afaik from Debconf8, Bdale also owns one of those notebooks. PS.: *rofl*

Jon Dowland: nautilus sums

I've got a ISO image that I wish to burn to DVD. I've got a copy burned already which has the same MD5 sum as the ISO file. I've just attempted to burn it another two times, both using nautilus cd burner (well, right click and 'burn image'). In both cases, the sum ended up being different, but strangely, the sum was the same for both of these subsequent burns. Has anyone else experienced problems getting 1:1 burns with nautilus cd burner?

David Welton: Won't fix... why?

I discovered a minor Rails annoyance today, and, looking around for an answer to the problem, I found this, which is a perfect description of the issue, and includes a fix: http://dev.rubyonrails.org/ticket/5123 Unfortunately it has marked as "wont fix" with no reason specified. Perhaps there is a reasonable answer that was perhaps discussed elsewhere, and just didn't make it into the bug report, making it invisible to people like me who find it via Google, which is pretty annoying. The other explanation is more along the lines of "don't wanna" (or fuck you, as the case may be), but at least come out and say so. "We're not going to do it, as it's not part of our English-centric vision" or what have you. Being a native English speaker, even when doing stuff for Italian or Austrian or whatever clients, I tend to code in English, because it's 1) fast, 2) easy and 3) it's pretty much universally understood by programmers. However, I can see the case for specific things to be in a particular language, and on the surface, this one line patch makes that a little bit easier, and doesn't appear to be costly, so why not? Just closing the bugs of people who have taken the time to try and help (this is clearly not just a "dude, it's, uh, broke" bug) is the twin of the equally annoying people who don't bother to take 30 seconds to send an email or bug report about software they're using, and both are things I greatly dislike.

David Welton: Won't fix... why?

I discovered a minor Rails annoyance today, and, looking around for an answer to the problem, I found this, which is a perfect description of the issue, and includes a fix: http://dev.rubyonrails.org/ticket/5123 Unfortunately it has marked as "wont fix" with no reason specified. Perhaps there is a reasonable answer that was perhaps discussed elsewhere, and just didn't make it into the bug report, making it invisible to people like me who find it via Google, which is pretty annoying. The other explanation is more along the lines of "don't wanna" (or fuck you, as the case may be), but at least come out and say so. "We're not going to do it, as it's not part of our English-centric vision" or what have you. Being a native English speaker, even when doing stuff for Italian or Austrian or whatever clients, I tend to code in English, because it's 1) fast, 2) easy and 3) it's pretty much universally understood by programmers. However, I can see the case for specific things to be in a particular language, and on the surface, this one line patch makes that a little bit easier, and doesn't appear to be costly, so why not? Just closing the bugs of people who have taken the time to try and help (this is clearly not just a "dude, it's, uh, broke" bug) is the twin of the equally annoying people who don't bother to take 30 seconds to send an email or bug report about software they're using, and both are things I greatly dislike.

3 December 2008

Romain Francoise: Cleaner

In the productive procrastination department: I repackaged rcs using debhelper (it feels like the future) and while I was at it, I implemented MadCoder's git maintenance scheme where changes from upstream are maintained in a rebased integration branch and serialized as patches in the Debian branch (master in my case) using git format-patch. It's pretty nice:Of course this is a very low-maintenance package (the last upstream release was 13 years ago) so it doesn't matter very much which maintenance strategy it uses, but after implementing it I'm pretty confident that it works and I might switch my other packages to it.

If you're interested in knowing more about clever ways to use modern VCS for packaging, you may want to join the vcs-pkg mailing-list.

David Bremner: Using GLPK from C++

Recently I suggested to some students that they could use the Gnu Linear Programming Toolkit from C++. Shortly afterwards I thought I had better verify that I had not just sent people on a hopeless mission. To test things out, I decided to try using GLPK as part of an ongoing project with Lars Schewe The basic idea of this example is to use glpk to solve an integer program with row generation. The main hurdle (assuming you want to actually write object oriented c++) is how to make the glpk callback work in an object oriented way. Luckily glpk provides a pointer "info" that can be passed to the solver, and which is passed back to the callback routine. This can be used to keep track of what object is involved. Here is the class header
#ifndef GLPSOL_HH
#define GLPSOL_HH
#include "LP.hh"
#include "Vektor.hh"
#include "glpk.h"
#include "combinat.hh"
namespace mpc  
  class  GLPSol : public LP  
  private:
    glp_iocp parm;
    static Vektor<double> get_primal_sol(glp_prob *prob);
    static void callback(glp_tree *tree, void *info);
    static int output_handler(void *info, const char *s);
  protected:
    glp_prob *root;
  public:
    GLPSol(int columns);
    ~GLPSol()  ;
    virtual void rowgen(const Vektor<double> &candidate)  ;
    bool solve();
    bool add(const LinearConstraint &cnst);
   ;
 
#endif
The class LP is just an abstract base class (like an interface for java-heads) defining the add method. The method rowgen is virtual because it is intended to be overridden by a subclass if row generation is actually required. By default it does nothing. Notice that the callback method here is static; that means it is essentially a C function with a funny name. This will be the function that glpk calls when it wants from help.
#include <assert.h>
#include "GLPSol.hh"
#include "debug.hh"
namespace mpc 
  GLPSol::GLPSol(int columns)  
    // redirect logging to my handler
    glp_term_hook(output_handler,NULL);
    // make an LP problem
    root=glp_create_prob();
    glp_add_cols(root,columns);
    // all of my variables are binary, my objective function is always the same
    //  your milage may vary
    for (int j=1; j<=columns; j++) 
      glp_set_obj_coef(root,j,1.0);
      glp_set_col_kind(root,j,GLP_BV);
     
    glp_init_iocp(&parm);
    // here is the interesting bit; we pass the address of the current object
    // into glpk along with the callback function
    parm.cb_func=GLPSol::callback;
    parm.cb_info=this;
   
  int GLPSol::output_handler(void *info, const char *s) 
    DEBUG(1) << s;
    return 1;
   
  Vektor<double> GLPSol::get_primal_sol(glp_prob *prob) 
    Vektor<double> sol;
    assert(prob);
    for (int i=1; i<=glp_get_num_cols(prob); i++) 
      sol[i]=glp_get_col_prim(prob,i);
     
    return sol;
   
  // the callback function just figures out what object called glpk and forwards
  // the call. I happen to decode the solution into a more convenient form, but 
  // you can do what you like
  void GLPSol::callback(glp_tree *tree, void *info) 
    GLPSol *obj=(GLPSol *)info;
    assert(obj);
    switch(glp_ios_reason(tree)) 
    case GLP_IROWGEN:
      obj->rowgen(get_primal_sol(glp_ios_get_prob(tree)));
      break;
    default:
      break;
     
   
  bool GLPSol::solve(void)    
    int ret=glp_simplex(root,NULL);
    if (ret==0) 
      ret=glp_intopt(root,&parm);
    if (ret==0)
      return (glp_mip_status(root)==GLP_OPT);
    else
      return false;
   
  bool GLPSol::add(const LinearConstraint&cnst) 
    int next_row=glp_add_rows(root,1);
    // for mysterious reasons, glpk wants to index from 1
    int indices[cnst.size()+1];
    double coeff[cnst.size()+1];
    DEBUG(3) << "adding " << cnst << std::endl;
    int j=1;
    for (LinearConstraint::const_iterator p=cnst.begin();
         p!=cnst.end(); p++) 
      indices[j]=p->first;
      coeff[j]=(double)p->second;
      j++;
     
    int gtype=0;
    switch(cnst.type()) 
    case LIN_LEQ:
      gtype=GLP_UP;
      break;
    case LIN_GEQ:
      gtype=GLP_LO;
      break;
    default:
      gtype=GLP_FX;
     
    glp_set_row_bnds(root,next_row,gtype,       
                       (double)cnst.rhs(),(double)cnst.rhs());
    glp_set_mat_row(root,
                    next_row,
                    cnst.size(),
                    indices,
                    coeff);
    return true;
   
 
All this is a big waste of effort unless we actually do some row generation. I'm not especially proud of the crude rounding I do here, but it shows how to do it, and it does, eventually solve problems.
#include "OMGLPSol.hh"
#include "DualGraph.hh"
#include "CutIterator.hh"
#include "IntSet.hh"
namespace mpc 
  void OMGLPSol::rowgen(const Vektor<double>&candidate) 
    if (diameter<=0) 
      DEBUG(1) << "no path constraints to generate" << std::endl;
      return;
     
    DEBUG(3) << "Generating paths for " << candidate << std::endl;
  // this looks like a crude hack, which it is, but motivated by the
  // following: the boundary complex is determined only by the signs
  // of the bases, which we here represent as 0 for - and 1 for +
    Chirotope chi(*this);
    for (Vektor<double>::const_iterator p=candidate.begin();
         p!=candidate.end(); p++) 
      if (p->second > 0.5)  
        chi[p->first]=SIGN_POS;
        else  
        chi[p->first]=SIGN_NEG;
       
     
    BoundaryComplex bc(chi);
    DEBUG(3) << chi;
    DualGraph dg(bc);
    CutIterator pathins(*this,candidate);
    int paths_found=
      dg.all_paths(pathins,
                   IntSet::lex_set(elements(),rank()-1,source_facet),
                   IntSet::lex_set(elements(),rank()-1,sink_facet),
                   diameter-1);
    DEBUG(1) << "row generation found " << paths_found << " realized paths\n";
    DEBUG(1) << "effective cuts: " << pathins.effective() << std::endl;
   
  void OMGLPSol::get_solution(Chirotope &chi)  
    int nv=glp_get_num_cols(root);
    for(int i=1;i<=nv;++i)  
      int val=glp_mip_col_val(root,i);
      chi[i]=(val==0 ? SIGN_NEG : SIGN_POS);
     
   
 
So ignore the problem specific way I generate constraints, the key remaining piece of code is CutIterator which filters the generated constraints to make sure they actually cut off the candidate solution. This is crucial, because row generation must not add constraints in the case that it cannot improve the solution, because glpk assumes that if the user is generating cuts, the solver doesn't have to.
#ifndef PATH_CONSTRAINT_ITERATOR_HH
#define PATH_CONSTRAINT_ITERATOR_HH
#include "PathConstraint.hh"
#include "CNF.hh"
namespace mpc  
  class CutIterator : public std::iterator<std::output_iterator_tag,
                                                      void,
                                                      void,
                                                      void,
                                                      void> 
  private:
    LP& _list;
    Vektor<double> _sol;
    std::size_t _pcount;
    std::size_t _ccount;
  public:
    CutIterator (LP& list, const Vektor<double>& sol) : _list(list),_sol(sol), _pcount(0), _ccount(0)  
    CutIterator& operator=(const Path& p)  
      PathConstraint pc(p);
      _ccount+=pc.appendTo(_list,&_sol);
      _pcount++;
      if (_pcount %10000==0)  
        DEBUG(1) << _pcount << " paths generated" << std::endl;
       
      return *this;
     
    CutIterator& operator*()  return *this; 
    CutIterator& operator++()  return *this; 
    CutIterator& operator++(int)  return *this; 
    int effective()   return _ccount;  ;
   ;
 
#endif
Oh heck, another level of detail; the actual filtering actually happens in the appendTo method the PathConstraint class. This is just computing the dot product of two vectors. I would leave it as an exercise to the readier, but remember some fuzz is neccesary to to these kinds of comparisons with floating point numbers. Eventually, the decision is made by the following feasible method of the LinearConstraint class.
 bool feasible(const
Vektor<double> & x)  double sum=0; for (const_iterator
p=begin();p!=end(); p++)  sum+= p->second*x.at(p->first);  
      switch (type()) 
      case LIN_LEQ:
        return (sum <= _rhs+epsilon);
      case LIN_GEQ:
        return (sum >= _rhs-epsilon);
    default:
      return (sum <= _rhs+epsilon) &&
        (sum >= _rhs-epsilon);
       
     

2 December 2008

Theodore Ts'o: Is the Linux community watching a setting Sun?

The title of this post was a headline that was probably written by an overly sensationalistic editor at http://www.searchenterpriselinux.com. The actual article, though, was written by Pam Derringer, was a pretty balanced piece (although it obviously could have been more in-depth; given length and time constraints, she talked to as many people as I think could have been expected, including a Sun spokeswoman, two analysts from different analyst companies, the chair of Apache Software Foundation, a Sun customer, and so on). I’m not sure I’d agree with Jim Jagielski when he claims that Sun has the “best and brightest business people in the world,” though. As I said in the article, and as I’ve said before, I have nothing but the highest respect for many of Sun’s engineers, especially those who work on Solaris. But their business people? I’m not so sure they have the best and brightest… in fact, I think that’s one of Sun’s greatest problems right now. Compare that with the job that Mark Hurd has done with HP, or with the work done by the executives at my employer (IBM), and I’m not so sure a strong case can be made for the excellence of Sun’s business folk. (I mean, how many people still believe that the $2 billion dollars which Sun spent to acquire Cobalt Networks, or the $4 billion dollars which Sun spent to acquire StorageTek, or the $1 billion dollars which Sun spent MySQL, were all good ideas? Sun is currently valued by the market at $2.4 billion dollars!) My bigger concern at the moment, however, is what happens if Sun gets purchased by a rival or by a corporate raider and gets broken up for parts? Since November 19th, when Sun’s stock price crashed through $3.27 (and has hit a low of $2.60 recently), it has been trading for less than its per-stock cash value. I say that not out of a sense of Schadenfreude, but out of concern about what happens if someone decides to buy the company, lay everyone off, and even after paying all of its debts, the resulting cash left over would be more than cost of completely buying the company — all of the real estate, the inventory, and the patent portfolio would all be pure profit. It’s the last I’m most concerned about; Sun has a very large patent portfolio! What if it fell into the hands of a patent troll? What damage could be done to not just Linux and the OSS comunity, but the software industry as a whole? Suppose Sun really does have patents that read upon many of NetApp’s products? If those patents fall into the hands of a patent troll, NetApp would no longer be able to negotiate a peace settlement based on its patents (if they survive the on-going patent re-examination process) that read on ZFS, since the patent troll would no longer be making any products based on ZFS. Maybe somewhere in Sun’s patent portfolio, there are patents that read on the GNOME and KDE desktops, but since Sun is trying to ship those with its Project Indiana/Open Solaris dekstop, it’s not bothering to assert them at this time? What if a patent troll, perhaps one funded by Microsoft, gets their hands on those patents? One final scary thought. Sun’s current market cap: $2.40 billion USD. Sun’s cash on hand: $2.63 billion USD. Microsoft’s current cash on hand: $19.71 billion USD. I can just imagine Steve Ballmer saying, “Chris, take it out of petty cash. I have an itsy-bitsy little acquistion I want to make…. Now I can embrace and extend Java all I want! And you know those term-limited, non-Open Source TCK licenses Sun gave to OpenJDK developers — not any more! They’re gone, within a year, the next time Red Hat needs to get the license renewed!” Could it happen? What do you think?

Miriam Ruiz: Collaborative maintenance of games between developers of different Linux and BSD systems

Games are probably the kind of software that needs more patching and maintenance. In some cases we even have to effectively act as upstreams ourselves. Currently every distro is doing that on their own, and we end up making n times similar patches to provide the same functionality (put files in the proper places, endianess and word size stuff, building with newer versions of gcc or free toolchains, etc). It makes a lot of sense to share among us all that stuff. Some of us, developers of different Linux distributions and BSD operative systems have started working together to reduce duplicated work, creating a distribution-agnostic mailing list in freedesktop servers as a first step. Debian Project News talks about this too. You can read more about our goals here. Wish us luck in this new quest, and join us if you’re interested too :)

Aigars Mahinovs: iPhone review from a free software guy

I got an iPhone on the very first day it was available officially in my country. I have used it every day since then and am now ready to decide how good it really is. Summary: it is a great piece of technology and the only tradeback is the locked down platform. I have abandoned my Palm and am not looking back. Hardware: the hardware is just perfect. 4 buttons (Home, Power, Volume Up and Down) and 1 switch (Mute) are all very clear, easy to find and press and frankly are enough. The touchscreen is reasonably fast and very precise nicely corrected by software that guides your presses toward UI points of interest if such are within your finger. The casing is absolutely solid - there is no gaps, no wobble, nothing. All glossy surfaces attract fingerprints, but a couple passes with a microfiber cloth (included) clean it up easily. The loudspeaker is phenomenal - all sound comes from a single small hole, but it can easily fill a small room with music. Call sound quality is impeccable. You can plug in any headphones, but if you use the included headphones you get a microphone with a button that can pickup and hand up calls, start/pause music and skip to the next track. I also love that the only charger included is a very small power brick that provides a power-only USB port and a USB charging cable. That is a good way to reduce number of power bricks for gadgets. The iPhone 3G (that is what I have) also has a GPS build-in, but let us be clear - it is not good enough to replace a car GPS, the iPhone GPS is slow (takes several seconds to refresh the location and tens of seconds to find it first time) and the precision is measured in meters or even tens of meters. The WiFi is very good at getting a connection and doing it very fast. Oh and there is an acceptable camera. Out of the box software: the software included surely is better than on any other phone I have seen (including Palm). The UI widgets are nicely written specially for a touchscreen interface - the best example is having click wheels instead of drop down menus. It is much easier mentally to flick a wheel up or down then to click on a list, click to scroll the list and then click to select an entry. And the click wheel makes it much easier to correct off-by-one errors. Switches that look like regular physical switches instead of checkboxes is another very useful UI concept. I think a lot of this can be reused on the desktop as well. iTunes: and here comes the bad spot, the lock-in part. To get anywhere with the iPhone you need to associate it with an installation of iTunes. It fails to work in Wine or even in a virtual machine - apparently there are some errors related to avahi or something. Unfortunately, this means that you need wither Windows or MacOS to do nything with your iPhone. iTunes is the only way to backup, restore and upgrade your iPhone, it is the only way to get contacts and music on the iPhone (there is an iTunes Store app in the newest version that allows purchasing music over the air). Even after doing a jailbreak (see further) it is currently not possible to add music to the iPhone from any third party applications, because the iTunes database has a hashed checksum that the build-in iPhone music player (and iTunes) check before doing anything. If the checksum is wrong the only thing you can do is a full restore of the phone from backup. Crypto geeks - please help decrypt that hash, so that we can sync iPhones to amaroK. The iTunes itself is a bit weird - to get music onto the phone you need to create a playlist and then you can sync that playlist over. One of the playlist options is a smart playlist with a random feature and a limit on number of matches. That is the way to get random music from your collection onto the phone. I do dislike the fact that iTunes syncs all the contacts from Google to the phone and not only contacts for a certain group or only those that have a phone number, for example. Search and favorites do help here. Third party software (iTunes Store): it is very easy to install new software on the phone over the WiFi and there is plenty to choose from. You do need a Mac to develop this software which restricts the developer base a bit. The main bases that I needed (or did not know I needed) are covered: Last.fm player, TwitterFon, LockBox password storage, Stanza ebook reader, Shazam music identificator, Wordpress client, BigOven cookbook and lots of fun games. Have not used any paid-for apps due to the fact that iTunes store is not available in Latvia and the official documentation recommends registering with a fake address in UK or US. :) Most of the software is rather stable and useful, but there is also a lot of fluff. User reviews and ratings help a lot, can we have those for Debian packages? Jailbreak and third party software (Cydia): thanks to some anonymous hackers, we have the ability to break the software jail on the iPhone and install software that Apple did not approve. The process is made very simple, but again it does require you to boot into Windows or MacOS X. The main thing the jailbreak process does is install an installer on the phone. Currently the best one is Cydia which is built on top of … apt-get and dpkg! After that is done, you can install a terminal, a ssh server and BossPrefs advanced preferences. There are also other interesting programs there - a different dock, file manager, caching youtube player, quake, themed app launcher with categories and startup page (winterboard). Theoretically the ssh server allows you to manage your music over WiFi from any platform, but unfortunately until the iTuned database hash algorithm is decoded, we can only copy music from the phone to the PC and not back. It is possible to copy files over using ssh and then play them using third-party players, but those players are very crude and featureless. To summarize: an iPhone is a great phone and a decent application platform. To make using an iPhone with Linux easier we need to make iTunes run in Wine (and allow it to see the iPhone) and reverse engineer the iTunes database hashing algorithm so that we can get music on our phones with Linux tools. I also wish there was a way to develop iPhone apps in Linux, but that really is reaching for the stars.

1 December 2008

Russell Coker: Gmail and Anti-Spam

I have just received an email with a question about SE Linux that was re-sent due to the first attempt being blocked by my anti-spam measures. I use the rfc-ignorant.org DNSBL services to stop some of the spam that is sent to me. The purpose of rfc-ignorant.org is to list systems that are run by people who don’t know how to set up mail servers correctly. But the majority of mail that is blocked when using them comes from large servers owned by companies large enough that they almost certainly employ people who know the RFCs (and who could for a trivial fraction of their budget hire such people). So it seems more about deliberately violating the standards than ignorance. The person who sent me the email in question said “hopefully, Google knows how to make their MTA compliant with RFC 2142“, such hope is misplaced as a search for gmail.com in the rfc-ignorant.org database shows that it is listed for not having a valid postmaster address [1]. A quick test revealed that two of the Gmail SMTP servers support the postmaster account (or at least it doesn’t give an error response to the RCPT TO command that is referenced in the complaint). However Gmail administrators have not responded to the auto-removal requests, which suggests that postmaster@gmail.com is a /dev/null address. However that is not a reason to avoid using Gmail. Some time ago Gmail took over the role of “mail server of last resort” from Hotmail. If you have trouble sending email to someone then using a free Gmail account seems to be the standard second option. Because so many people use Gmail and such a quantity of important mail is sent through that service (in my case mail from clients and prospective clients) it is not feasible to block Gmail. I have whitelisted Gmail for the rfc-ignorant.org tests and if Gmail starts failing other tests then I will consider additional white-lists for them. Gmail essentially has a monopoly of a segment of the market (that of free webmail systems). They don’t have 100%, but they have enough market share that it’s possible to ignore their competitors (in my experience). When configuring mail servers for clients I make sure that whatever anti-spam measures they request don’t block Gmail. As a rule of thumb, when running a corporate mail server you have to set up anti-spam measures to not block the main ISPs in the country (this means not blocking Optus or Telstra BigPond for Australian companies) and not block Gmail. Not blocking Yahoo (for “Yahoo Groups”) is also a good thing, but I have had a client specifically request that I block Yahoo Groups in the past - so obviously there is a range of opinions about the value of Yahoo. Someone contacted Biella regarding an email that they couldn’t send to me [2]. I have sent an email to Biella’s Gmail account from my Gmail account - that should avoid all possibility of blocking. If the person who contacted Biella also has a Gmail account then they can use that to send me email to my Gmail account (in the event that my own mail server rejects it - I have not whitelisted Gmail for all my anti-spam measures and it is quite possible for SpamAssassin to block mail from Gmail). It turns out that the person in question used an account on Verizon’s server, according to rfc-ignorant.org Verizon have an unusually broken mail server [3]. If your ISP is Optus, BigPond, Verizon, or something similarly broken and you want to send mail to people in other countries (where your ISP is just another annoyance on the net and not a significant entity that gets special treatment) then I suggest that you consider using Gmail. If nothing else then your Gmail account will still work even after your sub-standard ISP “teaches you a lesson” [4].

Next.

Previous.