Search Results: "ron"

15 February 2010

Adrian von Bidder: Papillon

Another attempt to shorten my list of movies where not having seen them makes me an absolute philistine, according to various friends: Papillon, with Steve McQueen and Dustin Hoffmann. Ignoring the tragic history behind it (the French penal system in French Guiana during the colonial era I didn't know about this from school), it's great entertainment. There is a kind of happy end, but nowhere close to what Hollywood does to its stories these days... A long time on the to watch list: The Fifth Element by Luc Besson. I don't know why but I had always been sceptical if I'd enjoy this one, but my feeling was completely wrong. Real fun. While I think the basic idea of superheroes getting older and having a midlife crisis, or a daughter, (and of course during the film, getting back into action) could make a wonderful film, the ending of Watchmen left me with a bad feeling about the whole film. But then I never read or watched superhero cartoons anyway, so maybe it's just that I'm not the intended audience for this one. Finally, V for Vendetta is another interpretation of the 1984 theme (actually, it's the interpretation of a graphic novel, but I've not read that), with a very well chosen John Hurt as Big Brother (or, I should say, High Chancellor Adam Sutler.) With quite a few slapstick moments, this isn't really as dark as the theme might suggest.

Russell Coker: Will Aliens be Alien?

The Telegraph has a silly article titled Aliens are likely to look and behave like us [1]. It s based on the ideas of Professor Simon Conway Morris [2] who is a big fan of evolutionary convergence. He seems to believe that humans evolved in a way that is close to optimal and that aliens would have to evolve in a similar manner. The article s claim that aliens will look and behave like us has three flaws, one is assuming that humans are the ideal form for space travel, another is the significant possibilities for vast objective differences between species, and the final one is the human tendency to regard small differences as being really significant. The Arrogance of Assuming that Humans are Ideal. It seems extremely arrogant to assume that humans have the ideal form for performing tasks that we have not yet performed such as traveling to another star system. To assume that it is certain that humans will colonise the stars is also extremely arrogant and foolish as well, I think that a significant amount of money should be devoted to existential risks that we face. People who believe that humans will inevitably colonise the stars (probably because God told them there s no other reason for such certainty) will tend to oppose taking prudent measures to reduce the probability of failure. We should also consider the possibility that a human society that colonises another star system at some future time might be so different from us that we regard them as alien. How Might Aliens be Different? It seems to me that one problem with the theory of convergent evolution (as applied to different planets) is that evolution doesn t seem to work in big steps. It seems to me that for an increasing portion of the jobs in our technological society there would be a benefit in having four arms and two legs, and maybe having more than four fingers on two of the hands. But evolving a bone structure that makes four arms useful is not a minor tweak so it seems unlikely to happen naturally we might be able to genetically modify humans to have four arms and two legs with some future technology. I can t believe that four limbs is the optimal number for every mammal, amphibian and reptile (apart from the legless ones), that two legs plus two wings is the optimal number for every bird, and that six legs is the optimal number for every insect. I also can t believe that two arms and two legs is the optimum number for every primate with the only significant difference in limbs being the primates that possess a prehensile tail. Evolution doesn t produce perfect creatures, what it does is to produce creatures that tend to be slightly fitter than their ancestors. So even if there was an optimal form for a species that develops interstellar-craft, there would be no reason to assume that humans have such a form even if we had developed interstellar travel. I think it s relatively safe to assume that aliens would have two eyes (stereoscopic vision is a significant advantage), but apart from that I don t think we can assume much about their appearance. For example I don t think that there s any inherent reason why creatures as intelligent as current humans could not evolve from octopuses 8 arms would be quite useful for operating machines. Aliens that spread beyond their own home planet don t have to be optimal for such tasks, they only need to become the dominant species on their planet, develop decent technology, and then want to leave their planet. A species that took 100,000 years to achieve what humans have achieved in the past 100 years might not be considered optimal but it might still be able to eventually launch interstellar craft. I don t think it s reasonable to assume that aliens would have to be as intelligent as humans to do that. But it does seem most likely that any aliens who manage to get here would be more intelligent than us. Guns, Germs, and Steel: The Fates of Human Societies by Jared Diamond has a really interesting analysis of how human history was determined by geography and the availability of plants and animals suitable for domestication. Part of the explanation for the apparent lack of intelligent aliens could be planets where the dominant species was stuck in a situation like that of the people of New Guinea, the lack of plants and animals suitable for domestication prevented their society from developing. A stone-age human civilisation could potentially be stable for millions of years. The article says Extra-terrestrials might not only resemble us but have our foibles, such as greed, violence and a tendency to exploit others resources . Well for starters a species that can displace all other contenders to become the dominant species in their planet would have to be capable of greed and violence. So that is probably correct but is not really going out on a limb. Physorg.com has a short article describing the benefits of sexual reproduction in terms of the rate of accumulation of harmful mutations [3]. So it seems that sexual reproduction is most likely among intelligent aliens. But I don t think that there is any reason to assume that aliens couldn t be hermaphrodites. The Telegraph article claims that Star Wars and Star Trek could be more accurate than they ever imagined in depicting alien life , but given that Star Trek has avoided homosexuality even when demanded by the plot it seems that whatever aliens do in the bedroom would be way outside the range of activities alluded to in Star Trek. It seems that almost all sci-fi has aliens that are less alien than a significant portion of the human population. I think it s safe to predict that if we should meet aliens they will not look like humans wearing cheap make-up or rubber suits that has more to do with the budgets assigned to movie studios than any claim to potential realism. It seems most likely that a society capable of developing space travel would need a great deal of training for it s young before they become self-sufficient. Species of animal that abandon their eggs and hope for the best seem unlikely to succeed in doing that. I think that this implies that a pair-bonded species that spends an extended amount of time raising their young is most likely to succeed. Perceptions of Aliens Vulcans are widely regarded as being on the Autism spectrum. So it seems that having some similarities in personality to about 1% of the human population is enough to convince most human viewers that the character in question is an alien. A Google search for such things just turns up many references to people on the Autism spectrum who feel like aliens which incidentally is the source of the alias ETBE [4] that I used for more than 10 years before being diagnosed as an Aspie. Star Trek aliens aren t actually very alien by human standards! Given the repeated demonstrations of the general human inability to recognise the psychological similarities in people from different countries or racial/ethnic/religious backgrounds it seems likely that few people would recognise aliens as being at all similar to us. As so many people are unable to recognise the fundamental similarities in people who happen to have a different skin color I can t imagine many people immediately regarding beings that look like octopuses as having human traits. Could an eusocial organism (such as bees or ants) develop space travel? It seems to me that most people wouldn t regard humans who act in a manner that resembles ants (such as the Borg Collective) as being like us . The possibility of an eusocial race evolved from humans is explored in Coalescent: A Novel (Destiny s Children, Bk. 1) by Stephen Baxter (and more briefly in the sequels). Probability The universe is a large place. Making a specific prediction about the first alien species that we might encounter might make some sense. But given the potentially billions of species that might be out there we should assume that some of the more improbable forms are represented. Claiming that anything in particular is impossible seems very rash. Also anyone who makes claims about what evolution should do seems to have missed the point. What evolution does is to give rise to species that tend to be a better fit for the environment. Different environments result in different creatures. We can try and predict what creatures might evolve, but we don t get to say that things should happen.

Mike Hommey: RC_buggy_arches = 0

(maybe) After the two updates in the previous post, I got further and eventually fixed the root of the remaining problems on ARM. It appears I got on the wrong track at the very beginning of the investigation. My first test was to disable the JIT compiler during the tests, and it didn t affect the result. I assumed from there that the JIT compiler was doing fine and wasn t involved. Which led me to believe the alignment of the stack at 32-bits word boundary instead of 64-bits was a standard behaviour. I turns out my first test itself was wrong, because I hadn t disabled the JIT compiler at all. You need to modify the runxpcshelltests.py script to disable the JIT, and not fiddle with the javascript.options.jit.chrome preference. The JIT compiler was misaligning the stack, and disassembling the generated code leading to broken behaviour revealed that it was doing so when setting up arguments on the stack for function calls. While I was afraid this would be difficult to fix without changing a lot of code, and first only disabled the JIT compiler, it turns out the way nanojit works by compiling the last instructions first did make it straightforward to fix. But ARM was not the only RC buggy architecture left after sparc and powerpc were fixed. MIPS remained. Alpha fails, too, but it is not a release architecture. Update: It appears hurd fails too, but like Alpha, it is not a release architecture. So, while I didn t want to wait 50 hours for a build, I managed to execute a failing test with the last xulrunner-1.9.1 packages that got built (before I enabled the test suite) under qemu. And I was able to track down the origin of the bug: the xpcom layer that translate function calls between languages doesn t fill arguments correctly when they are smaller than 32 bits. While the code is adapted to the mipsel case, which is little endian, it doesn t work on mips, which is big endian. I came up with a patch that should work, and which I hope won t break mipsel as a consequence. All that is left to do is to build and test the fix. I hope someone else will be able to do that for me. All in all except a 1.9.1.8 release this week with a lot less red on the buildd status page.

Bdale Garbee: TeleMetrum v0.2 First Test Flight

On Saturday, I joined The Albuquerque Rocket Society monthly launch in Rio Rancho, NM. A friend, Mike, who lives in the area joined me for the launch. While the morning started off clear and calm, if a bit cold... the wind came up hard and we had to call it quits before lunch. But before the wind "blew us away", I managed to get one flight in. And it was an absolutely perfect test of one of my brand-new TeleMetrum v0.2 boards! My cut-down Hawk Mountain "Raptor" kit, renamed "G-Spot" last October during my quest to exceed 50 g acceleration, was loaded with TeleMetrum serial number 51... and launched on a Cesaroni 229H255WT-14A motor. The ascent was beautiful! I've put a few photos of the rocket leaving the launch rail up on flickr. However, despite a clear sky, we quickly lost sight of it! I managed to spot a bit of the smoke trail from the delay grain as the rocket approached apogee, but that was it! None of us at the launch saw anything after apogee! After losing sight of the rocket, I turned my attention to my computer, where we were receiving a solid telemetry stream. It quickly became apparent that the rocket was descending normally under chute. As it got closer to the ground, I started calling out elevation, azimuth, and distance numbers, but still nobody could spot the rocket. As expected, we lost the RF link once the rocket reached the ground. As various folks on the flight line wished me luck finding my rocket, I put the last reported GPS position into my hand-held receiver. Staring at the map display, Mike and I realized the rocket was far down range, near one of the roads into the site. We jumped into my vehicle and drove down the road to the point closest to the rocket's reported position. We then walked to where the GPS receiver said the rocket should be... And found the rocket within about 20 feet! That was well within the window of position uncertainty my hand-held GPS was reporting at the time. Things just don't get much better than that! We picked up the rocket, and returned to the flight line only a few minutes after leaving it. After dumping the data from the board's on-board memory, I quickly generated the usual plots, along with a kml file that can be viewed in Google Earth. The rocket reached 1881 meters apogee, or around 6173 feet, and the maximum acceleration was 19.5 g. It touched down nearly 1.3 miles down range from the launch rail, in sage-brush desert. I honestly don't think I would have found the rocket without at least the radio beacon. It was hugely gratifying that the GPS worked and let me walk right up to the rocket! I could not have asked for a better test of the new electronics! Later in the day, Keith flew a successful test of serial number 52 at a launch in Wilsonville, Oregon. We're very happy with these results! Weather permitting, I hope to get more test flights in next weekend at Hudson Ranch. Stay tuned!

14 February 2010

Russell Coker: I Just Bought a new Thinkpad and the Lenovo Web Site Sucks

I ve just bought a Thinkpad T61 at auction for $AU796. My Thinkpad T41p has cooling problems which I have previously described[1]. It s also started to rattle a bit when I hold it upside down since I took it apart so I guess I didn t do a great job at trying to fix it (probably the fan is getting obstructed). Now it has developed some screen problems where the screen back-light will periodically turn off and stay off until I press and release the lid-close button (to turn the screen off and on again), this is apparently the symptom of a broken inverter [2]. I was quoted $160 to fix the inverter and $250 to replace the entire screen by laptop.com.au (a very reliable laptop sales and repair company that I ve dealt with before) [3]. Also the system has the red screen problem where intermittently the screen turns reddish so paying $250 for a replacement screen is worth considering. I decided not to do this as I have seen refurbished Thinkpad T41p systems on sale for about $400 and spending $160 now and possibly $250 later on a $400 system didn t seem like a good idea. One thing that has annoyed me about my Thinkpad for a long time is the lack of PAE support in the Pentium-M CPU which makes it impossible to run Xen [4], so upgrading to a newer system will allow me to use virtualisation for the purpose of fixing bugs in Debian/Unstable among other things. As I want a Trackpoint it seems that a Thinkpad is the best option (Thinkpads are also great in many other ways). So really all want is a new Thinkpad with an equal or higher resolution screen, more than 1.5G of RAM (what I ve currently got) and at least PAE (but ideally hardware virtualisation for KVM) as rumor has it that ACPI doesn t work well with Xen and also Xen has a history of being a little unreliable at the best of times. I m after a portable desktop replacement system, so I m not after an X series or anything else light either. Even though the new prices on Thinkpads are generally more than I want to pay I first checked the Lenovo web site. It sucks in a magnificent way. First there were some basic site navigation issues, such as the fact that I often can t click my middle mouse button on a link to open it in a new tab (I get some sort of Javascript error) it seems that the Lenovo web team didn t consider the possibility that I might want to have the details of different series of Thinkpad open in different tabs for the purpose of comparison. But the kicker is the fact that most Thinkpads don t have the screen resolution displayed! It seems to me that one of the most important factors in purchasing a laptop is the screen resolution and Lenovo generally don t provide it! The Ideapad is described as having a resolution of 1024*600 (a netbook not a laptop), the Thinkpad Edge has 1366*768 (not that good), and the R400 and R500 are WXGA which is anything between 1280*720 (sucky) and 1366*768 (slightly less sucky). So it seems that the low end models have technical details which could allow a potential customer to reject them, while the high end models don t have technical details needed to justify the purchase price! Fortunately a friend who works for IBM was able to find me the necessary information, this site allows you to enter the part number of any Thinkpad and receive a reasonably complete set of specifications (including display resolution) [5]. With the information on that site I was able to successfully bid on the single Thinkpad in a Lenovo auction of refurbished systems that had a resolution that was satisfactory. The fact that the Lenovo auctions of refurbished systems also lack the details is another think that Lenovo do wrong. In this case I started bidding one minute before the auction closed and had to push the price up by $125 to win it. Given the number of auctions that Lenovo runs world-wide they would probably benefit from fixing their web site just to get the occasional Thinkpad price increased by $125. Not to mention the number of people who are discouraged from buying new Thinkpads because they can t get information on what they might be paying for.

Dirk Eddelbuettel: Rcpp 0.7.7

Version 0.7.7, a shiny new bug fix release of Rcpp, our set of R / C++ interface classes, just arrived on CRAN and in Debian. The Language class had a real bug leading to this new release just two days after 0.7.6.
0.7.7	2010-02-14
    o	new template classes Rcpp::unary_call and Rcpp::binary_call
    	that facilitates using R language calls together 
    	with STL algorithms.
    	
    o	fixed a bug in Language constructors taking a string as their
    	first argument. The created call was wrong.
As always, even fuller details are in the ChangeLog on the Rcpp page which also leads to the downloads, the browseable doxygen docs and zip files of doxygen output for the standard formats. Questions, comments etc should go to the rcpp-devel mailing list off the R-Forge page

Jeff Bailey: LED lights

Anyone know if the LED lights are any good yet? I'm tired of CFLs burning out in less than a year for the cost and am switching back to incandescents for now. Replacing these things yearly can't be resulting in a net improvement for the environment.

Russell Coker: Which People are Stupid on the Internet?

I don t think that the answer is everyone or even everyone other than my geeky friends , but obviously it is a large number of people. Many people apparently type facebook into Google and try to login to the first thing that they see, if it happens to not be Facebook then they whine this became known after a Google search for facebook login happened to not return the Facebook login page as the first link [1]. This blog post claims that they are not stupid [2] the specific claim is that URLs etc are just too complex. I disagree, if my mother and my mother-in-law can both do better than that then I think that we should expect that a significant portion of retirees can do so and we should also expect that younger people will do better than older people. In a more specific sense, when I was in primary school I was taught the Dewey Decimal System aka Dewey Decimal Classification. With the DDC a primary school student can look up the location of a book in the library index system (cardboard files when I was at school) and then know where to find it. After looking up a book on one occasion no-one would want to repeat the effort so the sensible thing to do is to write down the DDC index to any interesting book. The same mental processes can be used for dealing with URLs, someone might find Facebook etc through Google on the first occasion but they can then use browser bookmarks and written notes for traveling to track the URLs that interest them. I think we should expect that a typical adult nowadays should be able to complete any task that would be expected of a 10yo when I was young, and I don t think it s unreasonable to call an adult stupid if they can t compare to a 10yo from the early 80 s! As a specific example, while 10yo children were given assignments to look up various books in the DDC I think that an adult can be expected to work out the value of an index on their own young children should be expected to require a little more training than adults! Some people will claim that it s not stupidity but ignorance. What exactly is supposed to have prevented these people from learning? Have the primary school libraries stopped teaching the DDC and most other things related to storing written knowledge? Is there supposed to be such an utter lack of computer skills in the general population that anyone who wants to learn will be unable to do so? I m sure that there are plenty of retirees who could seek advice from my mother or my mother-in-law if they wanted to learn about such things. NB I m not making any general comment about gender specific computer skills here, my father and my father-in-law don t seem to use the Internet much and they aren t the ones to complain to me when things break so I can t assess their skills. I am talking about four individuals and the only generalisation that I am making is that 2/4 retirees I know well seem to have good Internet skills and therefore I expect there to be a reasonable number of retirees who successfully use the Internet. The Making Light analysis and discussion of the issue has a lot of good points (Making Light does in fact make light ) [3]. But does have some claims that I find really strange, one example concerns a woman who misunderstood the way the up/down buttons work to call an elevator. Misunderstanding the buttons is one thing, but she also shared her knowledge of elevators with others, presumably she had more than a few people try to correct her and she ignored their advice. I think that someone who ignores advice from a variety of people, ignores advice that can easily be tested (just push the elevator buttons and observe what happens), and then goes around sharing their wrong ideas seems to have clearly crossed the line separating cluelessness from stupidity. One of the Making Light comments references the Clients From Hell blog a summary of strange, stupid, and amusing requests that clients have made to web design companies [4]. It seems to me that there are two noteworthy categories of anecdote on that site. One is requests that demonstrate ignorance of the work, such as requesting something significant and complex to be done in an hour. The other is requests that demonstrate contempt for the people doing the work, such as offering to pay $10 per hour. Misjudging the time taken to complete work is forgivable if someone has the skill to accurately estimate the time required then they would be able to do the work and wouldn t be asking for a quote for someone else to do it. Demonstrating contempt for someone that you are about to hire is stupid no matter how or why it s done. Clients From Hell also documents people who have requests that are obviously silly, it s understandable that someone might expect a blurry image to be sharpened as done on CSI , but wanting use image editing to reveal the face of a person who was facing away from the camera is simply assigning magical powers to the computer the fact that this sort of thing is done in shows such as Star Trek says a lot about the shows in question and their viewers. Often car metaphors are used for computers, you can be a good driver without knowing the details of how a car works but you do have to know how the pedals, switches, and steering wheel work as well as the meanings of the various dials. You can be competent at using the Internet without knowing much about bits, bytes, assembler code, or how a CPU works but you do need to know how the controls work and this means knowing how to type a URL. The basic operations of browsing the web require considerably less skill than driving a car and less skill than is commonly used in operating the telephone system (including PABX systems, mobile phones, and international calls). Anyone who is unable (not unwilling) to drive a car or make any phone call other than a local direct call and yet is reasonably intelligent could be used as an example of how an intelligent person could be unable to understand some aspects of technology, I don t think that there are many people in that situation it s difficult to find an adult in Australia who can t drive a car. Finally while it s reasonable to be uninterested in some things, it s not reasonable to be interested in doing something without wanting to learn how to do it properly. If typing facebook.com is so difficult that it exceeds someone s level of interest in the service then they shouldn t complain if they find that they can t access the service. Really typing facebook.com into the address bar of a web browser is easier than starting the engine of a car with a manual transmission, it s easier than filling the fuel tank of a car with the correct fuel, or figuring out when a car is due for service. Now there are serious security issues revealed by this event. I m sure that lots of people use similar methods to access their online banking etc. I just did a quick Google search for online banking with Australian banks, and I noticed that a few of the search results have adverts from rival banks. So it seems quite plausible that someone could trick Google into thinking that they run a bank (there are many thousands of banks in the world), run adverts competing against established banks, and phish the people who click on them. I wonder whether the best solution would be for the banks to test the security of their customers. Then any customer who gets phished by the bank s anti-fraud division would receive increased bank fees for the next few years and the rest of us who are less risk to the bank could receive lower fees. The current situation seems to be that my bank fees are partly determined by the need to recoup the money that the bank loses from customers who just use Google to find their bank s web site. I would rather not pay for the stupidity of such people. In the end all security comes down to people issues, technology just helps people do the right thing. I believe that one of the groups of stupid people on the Internet are those who believe that the Internet should be made safe for people who want to know nothing about it not even the basic library skills that are taught to primary school students.

13 February 2010

Dirk Eddelbuettel: Rcpp 0.7.6

The new 0.7.6 release of Rcpp, our set of R / C++ interface classes, is now at CRAN and Debian. This comes just a few days after 0.7.5 as we had made a mistake in Makefile.win which is now fixed. A few other things sneaked in while were at it, see the snippet from the NEWS file below or look at Romain's blog where he highlights named-based indexing in vectors and the addition of iterator as well as begin() and end() members that now allow the use of STL algorithms on our R objects which is nifty. The changes are summarised below in the NEWS file snippet, more details are in the ChangeLog as well.
0.7.6   2010-02-12
    o   SEXP_Vector (and ExpressionVector and GenericVector, a.k.a List) now
	have methods push_front, push_back and insert that are templated
    o   SEXP_Vector now has int- and range-valued erase() members
    o   Environment class has a default constructor (for RInside)
    o   SEXP_Vector_Base factored out of SEXP_Vector (Effect. C++ #44)
    o   SEXP_Vector_Base::iterator added as well as begin() and end()
        so that STL algorithms can be applied to Rcpp objects
    o   CharacterVector gains a random access iterator, begin() and end() to
	support STL algorithmsl; iterator dereferences to a StringProxy
    o   Restore Windows build; successfully tested on 32 and 64 bit;
    o   Small fixes to inst/skeleton files for bootstrapping a package
    o   RObject::asFoo deprecated in favour of Rcpp::as<foo>
As always, even fuller details are in the ChangeLog on the Rcpp page which also leads to the downloads, the browseable doxygen docs and zip files of doxygen output for the standard formats. Questions, comments etc should go to the rcpp-devel mailing list off the R-Forge page

Mike Hommey: When will Iceweasel 3.6 come ?

That is a question I hear more and more, and I felt it had to be answered publicly. Short answer: when it s ready. The current target for Squeeze is 3.5, for various reasons, but the main is that it shares the same Gecko version as Iceape (SeaMonkey) and Icedove (Thunderbird), which means that while the security team (or myself) will have to update these three for security updates, they will share patches. So 3.6 is less a priority than having 3.5 in shape for the release. Last week, I wrote on a mailing list post that I was expecting 3.6 to come this week. Well, that was before I discovered the sad reality about the state of the current version. But 3.6 is still on the radar. I already went through all the patches we apply on 1.9.1, and rebasing should now be straightforward. Most of the 3.5 failures have now also been addressed: sparc and powerpc were fixed first, and I am now (re-re-re -re)building on arm for, I hope, the last time. Unfortunately, mips is still missing, and without a porterbox, I can t do much. I tried, some time ago, in qemu, but there is no way I m going to wait 50 hours for a build again ; it was already painful on a real arm box (where it takes 90 minutes just to link libxul.so). Anyways, 2 patches stolen from upstream and 5 patches sent (or almost sent for the one currently under validation) later, we should be down to one release architecture failing instead of four. Which is already good. On the other hand, a new 3.5 upstream release, with security fixes, is planned for next tuesday, which means some time will have to be spent for stable updates, too. So, in the next few days, expect that I ll be working on stable security updates, then unstable updates, including the three architectures fix, and then work on 3.6 will continue. Which means we can hope for a 3.6 release in experimental by the end of next week, or the following one, in the worst case. Update: *sigh* 4 patches on arm is not enough :(. At least this time I think I m done with xptcinvoke and xptcstubs. Update:In the end, 2 patches and disabling the JIT compiler did the trick on arm. The 2 other patches were actually addressing bugs that only existed because the JIT is doing something wrong with the stack alignment.

Martin F. Krafft: ACTA: less knowledge means less resistance

Right now, your government is probably engaged in the discussion of the Anti-Counterfeiting Trade Agreement (ACTA). You are likely not aware of that because your government has been actively keeping these negotiations and details surrounding them secret. Your government does not want you to know about a treaty that has far-reaching negative effects on your freedom, as well as your basic human rights. If you did know, you might speak up and make it difficult for the drivers of ACTA to smoothly push their interests past you. The red light should light up in your head right now! The goals of the trade agreement that is being negotiated are multifarious, but essentially seem to centre around challenges related to intellectual property, and copyright in the digital age, even though it is sometimes claimed that the agreement serves primarily to contain trade of fake Prada bags and Rolex watches. In reality, ACTA is about content producers like movie studios, who try everything to prevent you from copying their work without paying for it even if you cannot actually purchase the work, because of e.g. technical measures designed to prevent certain people from legally obtaining content, or simply because the media companies are greedy and consider it PR-savvy to delay the release of a given work in certain countries until after people have had a chance to pay a lot of money to the cinemas. In theory, a creative work goes out of copyright 50 or 75 years after its author died, depending on whether the creativity can be attributed to a person or a corporation, respectively. Therefore, 50 or 75 years after creation, it gets increasingly hard to monetise a work that has not been reinvented in that period of time. Sounds plausible to you and me, but this sort of stuff frightens companies like Disney, who seem powerful enough to simply have the law changed. That is not how things should work. The media producers are failing to control the Internet, and hence they want to turn it into something more like cable TV, which they do know how to control. ACTA aims to make copyright infringement a criminal offence. ACTA wants to make it possible for a government to cut you off the Internet because someone thinks you did something bad they don t actually have to prove it though, accusation is enough. Similar efforts have already failed all over the world, e.g. in France and New Zealand. That s a sign, not a reason to try again. ACTA wants to set in stone that you have absolutely no rights when you cross borders. This is largely already the case border officials can pretty much do with you whatever they want now it s supposed to be made official, and legally binding. ACTA will create a culture of surveillance and suspicion. ACTA is designed to break the Internet, among other things. But worst of all: I am just speculating because we are not supposed to know the details. The best current source of information on ACTA seems to be Canadian law professor Dr. Michael Geist, who has been collecting content and linking to articles consistently since the ACTA negotiations commenced 2 3 years ago. The Electronic Frontier Foundation also has comprehensive resources available. It s even more important today than before to put an end to this secrecy. Don t let your government enter secret agreements that affect you and your life, refusing to talk to you about it beforehand, and probably refusing all responsibility afterwards. Talk to your politicians and ask questions that cannot be answered with stock replies. If you have specific contact addresses for politicians, please let me know so I can add them. Colin Jackson helped me with this article at Kiwi Foo Camp. He also takes an issue with the secrecy around ACTA.

12 February 2010

Joost Yervante Damad: Nokia N82 Bluetooth + GPRS/3G

A few months ago I did an interesting discovery about using my cellphone to go on the internet via bluetooth. I had this strange situation before where it just stopped working, and after revisiting all configs it worked again. What really happens is that my cellphone somehow crashes, after which I power cycle it by removing the batteries. The phone then boots again, but here is the twist: the service channels in the phone are re-allocated and apparently in a random order! This implies that the RFCOMM channel configured in the /etc/bluetooth/rfcomm.conf file is possible wrong now! Solution: just browse the services again with sdptool browse, adapt the file and it should work again!

11 February 2010

Robert Collins: Using UEC instead of EC2


So, we wanted to move a Hudson CI server at Canonical from using chroots to VM s (for better isolation and security), and there is this great product Ubuntu Enterprise Cloud (UEC basically Eucalyptus). To do this I needed to make some changes to the Hudson EC2 plugin and thats where the fun starts. While I focus on getting Hudson up and running with UEC in this post, folk generally interested in the differences between UEC and EC2, or getting a single-machine UEC instance up for testing should also find this useful. Firstly, getting a test UEC instance installed was a little tricky I only had one machine to deploy it on, and this is an unusual configuration. Nicely though, it all worked, once a few initial bugs and misconfiguration items got fixed up. I wrote up the crux of the outcome on the Ubuntu community help wiki. See 1 Physical system . The particular trap to watch out for seems to be that this configuration is not well tested, so the installation scripts have a hard time getting it right. I haven t tried to make it play nice with Network Manager in the loop, but I m pretty sure that that can be done via interface aliasing or something similar. Secondly I needed to find out what was different between EC2 and UEC (Note that I was running on Karmic (Ubuntu 9.10) so things could be different in Lucid). I couldn t find a simple description of this, so this list may be incomplete:
  1. UEC runs an old version of the EC2 API. This is because it hasn t implemented everything in the new API versions yet.
  2. UEC defaults to port 8773, not port 80 (for both the EC2 and S3 API s)
  3. The EC2 and S3 API s are rooted differently: at AWS they are at /, for UEC they are at /services/Eucalyptus and /services/Walrus
  4. UEC doesn t supply a SSL API port as far as I can tell.
  5. DescribeImages has something wonky with it.
So the next step then is to modify the Hudson EC2 plugin to support these differences. Fortunately it is in Java, and the Java community has already updated the various libraries (jets3t and typica) to support UEC I just needed to write a UI for the differences and pass the info down the various code paths. Kohsuke has let me land this now even though it has an average UI (in rev 27366), and I m going to make the UI better now by consolidating all the little aspects into a couple of URL s. Folk comfortable with building their own .hpi can get this now by svn updating and rebuilding the ec2 plugin. We ve also filed another bug asking for a single API call to establish the endpoints, so that its even easier for users to set this up. Finally, and this isn t a UEC difference, I needed to modify the Hudson EC2 plugin to work with the ubuntu user rather than root, as Ubuntu AMI s ship with root disabled (as all Ubuntu installs do). I chose to have Hudson reenable root, rather than making everything work without root, because the current code paths assume they can scp things as root, so this was less disruptive. With all that done, its now possible to configure up a Hudson instance testing via UEC nodes. Here s how:
  1. Install UEC and make sure you can run up instances using euca-run-instances, ssh into them and that networking works for you. Make sure you have installed at least one image (EMI aka AMI) to run tests on. I used the vanilla in-store UEC Karmic images.
  2. Install Hudson and the EC2 plugin (you ll need to build your own until a new release (1.6) is made).
  3. Go to /configure and near the bottom click on Add a new cloud and choose Amazon EC2.
  4. Look in ~/.euca/eucarc, or in the zip file that the UEC admin web page lets you download, to get at your credentials. Fill in the Access Key and Secret Access key fields accordingly. You can put in the private key (UEC holds onto the public half) that you want to use, or (once the connection is fully setup) use the Generate Key button to have a dedicated Hudson key created. I like to use one that I can ssh into to look at a live node YMMV. (Or you could add a user and as many keys as you want in the init script more on that in a second).
  5. Click on Advanced, this will give you a bunch of details like EC2 Endpoint hostname . Fill these out.
  6. Sensible values for a default UEC install are: 8773 for both ports, /services/Eucalyptus and /services/Walrus for the base URLs, and SSL turned off. (Note that the online help tells you this as well).
  7. Set an instance cap, unless you truely have unlimited machines. E.g. 5, to run 5 VMs at a time.
  8. Click on Test Connection it should pretty much instantly say Success .
  9. Thats the Cloud itself configured, now we configure VM s that Hudson is willing to start. Click on Add right above the List of AMIs to be launched as slaves text.
  10. Fill out the AMI with your EMI e.g. emi-E027107D is the Ubuntu 9.10 image I used.
  11. for remote FS root, just put /hudson or something, unless you have a preseeded area (e.g. with a shared bzr repo or something) inside your image.
  12. For description describe the intent of the image e.g. DB test environment
  13. For the labels put one or more tags that you will use to tell test jobs they should run on this instance. They can be the same as labels on physical machines it will act as an overflow buffer. If no physical machines exist, a VM will be spawned when needed. For testing I put euca
  14. For the init script, its a little more complex. You need to configure up java so that hudson itself can run:
    cat >> /etc/apt/sources.list << EOF
    deb http://archive.ubuntu.com/ubuntu/ karmic multiverse
    deb http://archive.ubuntu.com/ubuntu/ karmic-updates multiverse
    deb http://archive.ubuntu.com/ubuntu/ karmic-security multiverse
    EOF
    export http_proxy=http://192.168.1.1:8080/
    export DEBIAN_FRONTEND=noninteractive
    apt-get update
    echo "buildd shared/accepted-sun-dlj-v1-1 boolean true"   debconf-set-selections
    apt-get install -y -f sun-java6-jre
    
    Note that I have included my local HTTP proxy there just remove that line if you don t have one.
  15. Click on Advanced, to get at the less-common options.
  16. For remote user, put ubuntu , and for root command prefix put sudo .
  17. For number of executors, you are essentially choosing the number of CPU s that the instance will request. E.g. putting 20 will ask for an extra-large high-cpu model machine when it deploys. This will then show up as 20 workers on the same machine.
  18. Click save :)
  19. Now, when you add a job a new option in the job configuration will appear tie this job to a node . Select one of the label(s) you put in for the AMI, and running the job will cause that instance to start up if its not already available.
Note that Hudson will try to use java from s3 if you don t install it, but that won t work right for a few reasons I ll be filing an issue in the Hudson tracker about it, as thats a bit of unusual structure in the existing code that I m happier leaving well enough alone :) .

Joachim Breitner: Diploma Thesis Finished

Earlier today, I went to a local copy shop and had my diploma thesis printed. This afternoon, I will hand it in. The title is Loop subgroups of Fr and the images of their stabilizer subgroups in GLr( ) and discusses a group-theoretical result. I assume that very few readers care about the content of the thesis, but maybe some are interested in a few assorted LaTeX hints. I m also publishing the full TeX source code, maybe someone can make use of it. Less chatty varioref I m using the varioref package, in conjunction with the cleveref package. This provides a command \vref fig:S3S4l which will expand to, for example, to Figure 1 on page 11 . But if the referenced figure is actually on the current page, the next page, the previous page or the facing page (in two-side layouts), it will say so: Figure 1 on this page. This is very nice, but I assume that the reader of my thesis is able to find Figure 1 when it is visible, i.e. on the current or facing page. One can remove the referencing texts with the commands \def\reftextfaceafter , \def\reftextfacebefore and \def\reftextcurrent . But because varioref puts a space between Figure 1 and this text, we will get a superfluous space even before punctuation. The remedy is the command \unskip, which removes this space again. So I use in my preamble:
\def\reftextfaceafter  \unskip %
\def\reftextfacebefore \unskip %
\def\reftextcurrent    \unskip %
Palatino and extra leading I chose the Palatino font for my thesis, using the mathpazo package. Various sources (such as the KOMA-Script manual) suggest to use 5% extra leading:
\linespread 1.05 
Counting figures independently from chapters I don t have too many figures and tables in my thesis, and I want them to be numbered simple 1, 2, ... By default, LaTeX would say 1.1, 1.2, 2.1, ... This can be fixed using the remreset package and these commands:
\makeatletter
\@removefromreset figure chapter 
\renewcommand \thefigure \arabic figure 
\@removefromreset table chapter 
\renewcommand \thetable \arabic table 
\makeatother
No widows and club lines LaTeX already avoids these, but I wanted to get rid of them completely. This can be done with:
% Disable single lines at the start of a paragraph (Schusterjungen)
\clubpenalty = 10000
% Disable single lines at the end of a paragraph (Hurenkinder)
\widowpenalty = 10000 \displaywidowpenalty = 1000
Struck table lines I had to typeset tables with some lines struck, and I could not find a ready command for that. I used the following definition, based on the code for \hline. Note that it probably does not adjust well to other font sizes and needs to be adjusted manually:
\makeatletter
\def\stline %
  \noalign \vskip-.7em\vskip-\arrayrulewidth\hrule \@height \arrayrulewidth\vskip.7em 
\makeatother
Title page in one-sided layout According to the KOMA manual, the title page as set by LaTeX is not meant to be the cover of a publication, and therefore has to be set with the margins of a right page i.e. a larger right margin and a smaller left margin. But when printing cheaply, one often just put a transparent sheet on top of the print, so the title page is the cover. You can convince KOMA that you are right by using
\KOMAoptions twoside=false 
\begin titlepage 
...
\end titlepage 
\KOMAoptions twoside=true 
Not flushing the page for chapter heads LaTeX would put the list of algorithms on a new right page. I found this a waste of paper for my few algorithms, and preferred to put the list right after the table of contents. You can override the LaTeX behavior using:
\tableofcontents
 
\let\cleardoublepage\relax  % book
\let\clearpage\relax  % report
\let\chapter\section
\listofalgorithms
 
This code also reduces the size of the heading to that of a section. The same trick also works with \chapter. Math in headings vs. PDF bookmarks LaTeX with the hyperref package creates nice PDF bookmarks from your chapter and section titles. Unfortunately, PDF bookmark names can only be plain strings, while the titles in the document might contain some math symbols. You can make both happy with \texorpdfstring:
\section Stabilizer subgroups in \texorpdfstring $\GL_r(\Z/2\Z)$ GL\_r(Z/2Z) 
Setting lines for the signature The diploma thesis contains a small note which I have to sign, saying that I created it on my own etc. Below that, I put two labeled lines for date and signature, using the tabbing environment:
\begin tabbing 
\rule 4cm .4pt \hspace 1cm  \= \rule 7cm .4pt  \\
Ort, Datum \> Unterschrift
\end tabbing 

10 February 2010

Bernd Zeimetz: caching issues in django

Yesterday I stumbled upon an interesting and broken behaviour of Django: Running two instances with the same memcached as cache backend might result in displaying the wrong template from the cache in case we have template files with the same name but a different content. This behaviour is also visible in all django applications which use the cache backend without taking care of settings.CACHE_MIDDLEWARE_KEY_PREFIX. As mentioned in the bug report a design decision is necessary here, as the setting was only supposed to be used in middlewares. On the other side not honouring the setting everywhere makes it impossible to use different (unrelated) Django instances with one memcached. While this is not such a big issue for template data, it should be - for example - possible to insert faked django CMS user permissions into memcached as they are cached there, too. One possible solution is to ensure that settings.CACHE_MIDDLEWARE_KEY_PREFIX (or a similar setting with a better name) is used for every access. Using the following snippet as custom cache backend ensures this. Additionally it is much harder to insert faked cache content by using a md5 hexdigest as key. Although you should never store sensitive data in memcached - if you need to cache such data, use locmem, file or db as cache backend, as they allow to limit access to the data properly.
from django.conf import settings
from django.core.cache.backends.memcached import CacheClass as DjangoMemcachedCacheClass
from django.utils.hashcompat import md5_constructor
class CacheClass(DjangoMemcachedCacheClass):
    def __init__(self, server, params):
        self.key_prefix = settings.CACHE_MIDDLEWARE_KEY_PREFIX
        super(CacheClass, self).__init__(server, params)
    def _genkey(self, origkey):
        return md5_constructor("%s:%s" %(self.key_prefix, origkey)).hexdigest()
    def add(self, key, value, timeout=0):
        return super(CacheClass, self).add(self._genkey(key), value, timeout)
    def get(self, key, default=None):
        return super(CacheClass, self).get(self._genkey(key), default)
    def set(self, key, value, timeout=0):
        return super(CacheClass, self).set(self._genkey(key), value, timeout)
    def delete(self, key):
        return super(CacheClass, self).delete(self._genkey(key))
    def get_many(self, keys):
        return super(CacheClass, self).get_many(self._genkey(key))
    def incr(self, key, delta=1):
        return super(CacheClass, self).incr(self._genkey(key), delta)
    def decr(self, key, delta=1):
        return super(CacheClass, self).decr(self._genkey(key), delta)

9 February 2010

Christian Perrier: Family DebConf

This year, at DebConf 10, I'll very probably have the pride to attend the conference along with my 22 y.o. son, Jean-Baptiste. JB began a 3 year cycle to graduate in electronics and industrial computing at Polytech'Paris-UPMC and is increasingly becoming more and more interested in Linux, programming and particularly low-level programming in embedded devices (as far as I can understand this stuff). As one can see, he's on his way to become a much clever geek than his dad. It then became natural for him to consider attending Debconf even though he's not (yet) involved in Debian. So, you folks will have to suffer having two bubulles instead of one. That should make a nice picture if Bdale and Elisabeth are there too..:-) See you in NYC!

Aigars Mahinovs: Debug and optimization do NOT mix!

This has robbed me of several days of my life, so I want to bring Google juice this this problem. IF you have a Pylons or TurboGears application or anything else that uses the fantastic EvalException WSGI middleware for web debugging of you web program and have the following symptom: * on a crash the traceback page shows up, but it has no css style and no images
* http://127.0.0.1:5000/_debug/media/plus.jpg returns a 404 (where 127.0.0.1:5000 is the path of your application) with Nothing could be found to match _debug The problem that you are facing in this case is the enviroment variable PYTHONOPTIMIZE or apache_wsgi option WSGIPythonOptimize. Unset them both or you debug environment will not work!

Dirk Eddelbuettel: Rcpp 0.7.5

A new release of our Rcpp R / C++ interface classes is now out, the version number is 0.7.5. It comes on the heels of the release 0.7.4 and keeps with our semi-frantic schedule of releases every ten or so days going. The package is now on CRAN and Debian, and mirrors start to get the new versions. As before, my local page provides more details and Romain's blog is always worth watching too. The changes are summarised below in the NEWS file snippet, more details are in the ChangeLog as well.
0.7.5	2010-02-08
    o 	wrap has been much improved. wrappable types now are :
    	- primitive types : int, double, Rbyte, Rcomplex, float, bool
    	- std::string
    	- STL containers which have iterators over wrappable types:
    	  (e.g. std::vector<t>, std::deque<t>, std::list<t>, etc ...). 
    	- STL maps keyed by std::string, e.g std::map<std::string>
    	- classes that have implicit conversion to SEXP
    	- classes for which the wrap template if fully or partly specialized
    	This allows composition, so for example this class is wrappable: 
    	std::vector< std::map<std::string> > (if T is wrappable)
    	
    o 	The range based version of wrap is now exposed at the Rcpp::
    	level with the following interface : 
    	Rcpp::wrap( InputIterator first, InputIterator last )
    	This is dispatched internally to the most appropriate implementation
    	using traits
    o	a new namespace Rcpp::traits has been added to host the various
    	type traits used by wrap
    o 	The doxygen documentation now shows the examples
    o 	A new file inst/THANKS acknowledges the kind help we got from others
    o	The RcppSexp has been removed from the library.
    
    o 	The methods RObject::asFoo are deprecated and will be removed
    	in the next version. The alternative is to use as<foo>.
    o	The method RObject::slot can now be used to get or set the 
    	associated slot. This is one more example of the proxy pattern
    	
    o	Rcpp::VectorBase gains a names() method that allows getting/setting
    	the names of a vector. This is yet another example of the 
    	proxy pattern.
    	
    o	Rcpp::DottedPair gains templated operator<< and operator>> that 
    	allow wrap and push_back or wrap and push_front of an object
    	
    o	Rcpp::DottedPair, Rcpp::Language, Rcpp::Pairlist are less
    	dependent on C++0x features. They gain constructors with up
    	to 5 templated arguments. 5 was choosed arbitrarily and might 
    	be updated upon request.
    	
    o	function calls by the Rcpp::Function class is less dependent
    	on C++0x. It is now possible to call a function with up to 
    	5 templated arguments (candidate for implicit wrap)
    	
    o	added support for 64-bit Windows (thanks to Brian Ripley and Uwe Ligges)
As always, even fuller details are in the ChangeLog on the Rcpp page which also leads to the downloads, the browseable doxygen docs and zip files of doxygen output for the standard formats. Questions, comments etc should go to the rcpp-devel mailing list off the R-Forge page

Stefano Zacchiroli: RC bugs of the week - issue 20

RCBW - #20 With a couple of days of delay, here are this last week squashes, by yours truly: The delay is due to FOSDEM, it's hard to squash bugs when you are: (1) having fun (best FOSDEM ever, if you ask me), (2) connected with very poor network connectivity (let's say: FOSDEM-quality network). Also, there are just 6 squashes, but last week there were 8, so ... :-) (I know, I suck). Among the main highlights of the week, I just want to cite Mehdi Dogguy: he was with me at JFLA 2010 last week and I've managed to grab him into the "RCBW tunnel". With a handful of well-targeted NMUs, he has fixed about 10 RC bugs in the few days of the conference. He is too shy to blog about that, but since I'm evil, I'm disclosing it here :-P Welcome on board, Mehdi! (now you're doomed: you must continue doing that!)

Robert Collins: Is a code of silence evil?


Looking at using google apps for my home email, as I want to be able to have my home machines totally turned off from time to time. Found this interesting gem in the sign up agreement (which I have not yet agreed to :P ):
11. PR. Customer agrees not to issue any public announcement regarding the existence or content of this Agreement without Google s prior written approval. Google may (i) include Customer s Brand Features in presentations, marketing materials, and customer lists (which includes, without limitation, customer lists posted on Google s web sites and screen shots of Customer s implementation of the Service) and (ii) issue a public announcement regarding the existence or content of this Agreement. Upon Customer s request, Google will furnish Customer with a sample of such usage or announcement.
This is rather asymmetrical: If I agree to the sign up page, I cannot say I am using google apps , but google can say Robert is using google apps . While I can appreciate not wanting to be dissed on if something goes wrong, this is very much not open! A couple of implications: Everyone seeking support for google apps in the apps forums is probably in violation of the sign up agreement; we can assume that anyone having a terrible experience has been squelched under this agreement. Le sigh.

Next.

Previous.