Search Results: "beh"

17 February 2010

Bastian Venthur: Links not opening in Thunderbird 3?

If you re using KDE and upgraded to Thunderbird 3 lately you might have the problem that links in emails don t open in a browser anymore. For my case that happened even without a user visible error message. If that sounds familiar for you, check the error console (Tools/Error-Console). If there is an error like:
Error: uncaught exception: [Exception... "Component returned failure
code: 0x80004005 (NS_ERROR_FAILURE)
[nsIExternalProtocolService.loadUrl]   nsresult:  0 80004005
(NS_ERROR_FAILURE)   location:  JS frame ::
chrome://communicator/content/contentAreaClick.js :: openLinkExternally
:: line 188   data: no]
Then Thunderbird just (silently) fails to launch the browser. Guido pointed me to gconftool. gconftool -R / grep url-handlers told me that some components of gnome still had Firefox configured as http-handler (which is strange since it was rebranded to iceweasel ages ago). Resetting them solved the problem for me. The sad part of the story: x-www-browser, sensible-browser and KDE s http handler where all correctly configured and pointed to iceweasel. All applications behaved correctly only Icedove used a (for me) hidden setting pointing to firefox.

16 February 2010

Christian Perrier: Bug #570000

(you were awaiting this one, weren't you?) Ron Murray reported the Debian bug #570000 on Monday February 15th, against the gnome-keyring-daemon package. Bug #560000 was reported as of December 8th 2009. We're behind our "10,000 bugs in 2 months" pace by one week, so that's a small drop in the bug reporting rate, this time. I hope that people remember the Bug #600000 contest. Bets are closed now (the wiki page is still opened for modifications but I'll revert them if they are late bets). Being 30,000 bugs away from #600000, it's time to image when that bug could happen. The current "2 months+1 week/10,000 bugs" says it would happen around September 10th. With the "2 months/10,000 bugs" that would be August 15th, just after DebConf 10. The closest bet as of now seem to be either Miod Vallat or Kanru Chen. I probably lost already (I did bet June 30th) unless I imagine a very massive bug filing. Too bad Matt Arnold, Thomas Preudhomme, Nicolau Werneck and Odd Henriksen, you already lost!

15 February 2010

Gustavo Noronha Silva: WebKitGTK+, and the Page Cache

So, one of the things I get to do during work hours for Collabora is to contribute code, and do maintenance tasks for WebKitGTK+, and have been doing so since early last year, working on all kinds of things, from improving the network backend to handle the real-world web, to fixing scrolling problems, while reviewing patches from the many awesome developers who have been joining us (more on that later =D). One of the big features I have worked on this past month or so, along with Xan Lopez is the Page Cache. The page cache is a feature of web browsers that makes going back, and forward between pages in the same view very fast. It s better explained in this post, but to summarize, the idea is that instead of destroying all the work you have done since downloading the resources, and having to reparse/rebuild the structures the view uses to display the page from the cached resources, you hit pause on the page, and store the whole thing as is, and when coming back to it, you just hit play. You can see in the video two instances of Epiphany, one with the page cache enabled, one with it disabled. Easy to see which was has it enabled. Thanks to KiBi for the suggestion regarding a page that shows this easily =D. <video controls="controls" height="302" src="http://kov.eti.br/media/webkit/page-cache.ogv" width="450"></video> We initially thought we had this feature enabled, since our initialization functions (that exists since before the current maintainers were involved) did setup the number of desired pages in the cache, but during the hackfest we held in December we found out we were fooled all this time. Enabling the page cache does make going back faster, but also made lots of things become unstable and crash. Since then, we have been working on figuring out all the problems, and fixing them, using help from adventurous users of in-development software ;D. I believe we re now at a point in which I can happily declare the GTK+ port has a working page cache in trunk! If you re interested in the nasty details, bear with me! Let me go back in time a bit, and show you what problems we had. First, some background: the GTK+ port deviates a lot from the other ports when it comes to scrolling. This is because, when designing this part of the port, Holger Freyther had a very nice idea in mind: that the WebView should be a first-class citizen GTK+ scrollable widget. Meaning it would use GTK+ s adjustments for scrolling, and be able to interact with any parent scrolling widget, be it a GtkScrolledWindow, or a MokoFingerScroll. We cannot just throw away all the rest of the scrolling code in WebCore, though, that deals with all the details related to interacting with the DOM, and JavaScript code. This means our WebView contains adjustments that need to be set, and unset on our port s version of WebKit s own representation of the view, called the FrameView, to interact with it, and to get updates on the bounds of content, and such. For every load, in the non-page-cache case, a new FrameView is created, the previous one is destroyed - this means we need to set the adjustments on every load. The problem starts when you have the page cache enabled, because the code path used to do what is called commit the load of a cached page (that is, start replacing the content that is currently being displayed by the one that should now be displayed) is completely different, and we were not setting the adjustments on this new view, so we started with that. But all was not well. We were still having weird behaviour with scrollbars disappearing, and becoming the wrong size, and worse, crashes when back was hit. We then started investigating in more detail how it is that the page cache does its magic, to try and figure out the source of all evil. It turns out that when you leave a page that can be cached, the existing FrameView is no longer destroyed - it is stored as is in a CachedFrame to be restored if you go back, and a new one is created for the new page. This was having the undesired effect of having the adjustment be set in more than one FrameView at once, causing all kinds of (predictable, after we knew for real what was going on) unwanted effects. Thus, we reworked the code to make sure the adjustments are only ever set in one FrameView at once, making sure they are unset when the FrameView is being frozen, and reset when it s being restored from the page cache. Last, but not least, it was discovered that going back to a page that contained resources with data: URIs (such as Google results pages which contain a small number of image hits) also caused a crash. This was because our network backend was not storing the data: URI in the ResourceResponse objects it fed into WebCore. The page cache relies on those responses to recreate the requests it uses to artificially replay the load when restoring the page from the page cache, so we fixed that as well. What can be taken from all this? Building browsers is a lot of hard work! I can t think how we could deal with this level of complexity without the awesome testing suite of WebKit. The good news is all of those issues I talked about in this post are now covered by the automate tests that run as part of the normal buildbot cycle in our bots, so we re covered for the future, at least for these specific problems =D.

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.

11 February 2010

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 

Asheesh Laroia: Google and University email

Should universities switch away from hosting their own email and join the Google bandwagon? Adi Kamdar wrote to the Students for Free Culture discussion mailing list linking us to a Yale Daily News article discussing an "almost-definite" switch for Yale to Google Apps for Education. Adi asked for thoughts, so here are mine.

Privacy One interesting thing about the Gmail option is that, when deployed for all students, students have no choice but to let Google read their official email. Some students might take part in activism that they want to shield from Google, a corporation with its own interests, or the attackers that attempt to break into Google's systems (see the recent attacks from crafty pro-Chinese-government hacktivists). Before a switch to Gmail, each student could choose if Google was the kind of company they wanted to share their email with. After a switch to Google Apps, the choice is made for them. But this highlights a different issue: Before a switch to Google, students have no choice but to let university administrators read their official email. That's not necessarily optimal, either. Others have pointed out in this thread that this option comes with legal advantages with regard to privacy law. At least that's some consolation. It's still true that students can encrypt their email and make it difficult for any eavesdropper to figure out the bodies of their emails. But that's no use for hiding the identities of the people with whom they communicate -- no email crypto I know hides email addresses.

Software freedom and open standards This is juxtaposed against another difficult situation: Matt Senate wrote about the sucky Squirrelmail system that Berkeley uses (used?) for webmail. The fact that SquirrelMail is Free Software is small consolation for Matt. From his perspective, because it's a hosted web application, he has no more freedom than he would have with Gmail. At least Berkeley's IMAP server followed standards! That's more than we can say for the Gmail IMAP server, which is famous for basically supporting just enough IMAP for Microsoft Outlook to work. But standards compliance is small consolation. If the university email server "properly" supports IMAP, but isn't fast or doesn't provide the new extensions that make threading or search speedy, it's not much relief to know that you can use any client you want to slowly read your email.

Internet history Truth be told, University-hosted Internet services are based on what you might call the original Internet perspective. The Internet began as a network of networks. A University was a network island unto itself, running its own email, news, and Ethernet services. When inter-network connection was available, you can email people at other institutions. When it wasn't, well -- the Internet is a useful tool, but it's down right now. "Don't worry," the admins might tell you, "you can still read your email with PINE." It used to be that inter-network connectivity was icing on top of the "real" network a person used. Today, inter-network connectivity is the whole point of a network connection. How embarrassing for each individual network! To test if our connections are working, we skip right over the local content and point our web browsers at a search engine. Users today aren't satisfied to read their email from imap.institution.edu and read USENET news-- they thirst for real-time access resources available beyond the university. Students weren't interested in the J-Stream service I helped set up at Johns Hopkins; instead they mostly posted and watched videos at YouTube. They don't really care if the the student-oriented wiki is based on campus or instead halfway across the globe (say, in Japan). The original Internet was based on autonomous networks and opt-in routing. But eventually, all the networks opted in. Users drive everything, and when they don't get what they want, they vote with their feet. Companies like Facebook and Google stand ready and armed to provide shockingly-efficient services to millions of users who choose them. You could say that with today's network, the autonomy shifted from the network to the users. The nice thing about University-run services is that students can organize and ask for changes, as Fred pointed out. And for people like me, there's something nice about knowing the person who runs your email system. But if your busy university staff doesn't have time to investigate an email server with fast full-text indexing, you might wish for change. Having the university tear down its internal services is a progression toward seeing its network as simply transit. Imagine the loss of pride. It used to be that the university personally ran a system for helping users get what they wanted. As it becomes simply transit, the staff are just greasing the cogs of a larger, invisible machine that's easy for users take for granted. Some netizens like me hold email as sacred, a beautiful institution based on standards and a decision to interoperate. When your university switches to Gmail, I'll be sadder, but maybe what you'll get is professors who can spend more time with students and less time configuring desktop software.

Trade offs Every university has a choice: Pay hundreds of thousands to millions of dollars a year for dedicated staff to run an in-house email system, or let Google do it. Think for a moment of what good could come from those dollars when put to use in other ways for students. Your school could start a switch to all-organic food. It could start paying more of its employees a living wage. Imagine the travel funding for student activities that can come from hundreds of thousands a year well-spent. It could run a massive used textbook clearinghouse to help students avoid pouring their dollars into the textbook industry. And now cry with me. What I've asked you do is to consider sacrificing institutional autonomy for cold, hard cash. That's to say nothing of the ecological benefits or the productivity increases possible from having Google's paid experts run this part of the computing system.

Conclusion Is an official Google email system much different than the reality most students I know live, which is configuring their student email address to forward to gmail.com? For those of us who would be sadder with one more push toward centralizing email with Google -- for those who see it as the behemoth whose size threatens the decentralization that used to be the core of the Internet -- I ask you to think positive. "See the profit from your loss." I have no conclusions for you, just niggling questions.

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)

Mike Hommey: Iceweasel upgrade homepage, a week later

When users upgrade Firefox, they are shown a special web page after restart. As this was obviously very Firefox oriented, this was disabled in Iceweasel. Until a week ago. A week ago, I created a (quite raw) web page that users of Iceweasel 3.5.6-2 would see after they install or upgrade. The idea behind this page was suggested by Moritz Muehlenhoff during my BoF at DebConf 9, and consisted of displaying a call for help message in a splash screen. What most looked like this in Iceweasel is the Firefox feature mentioned above. I unfortunately wasn t able to implement it until now. So, a week after these pages were put online and Iceweasel 3.5.6-2 was uploaded, even though I can t say it s a huge success, it at least led to some movement: More than 12000 users (still growing) saw the pages, out of which almost 1800 (roughly 15%) followed the link for a new logo. While there was no contribution for a new logo yet, there has already been several translations contributions for the web pages, in german, spanish and italian. Next iceweasel upload will consequently send users to a localized version of the web page when it exists. The server logs also allow to have some figures on the usage of localized versions of Iceweasel, but as this is based on user agent strings, it is not totally accurate, though somehow interesting:
  1. english: 58.3%
  2. german: 15.2%
  3. french: 7.9%
  4. spanish: 3.8%
  5. italian: 2.7%
  6. polish: 2.5%
  7. japanese: 2.2%
  8. russian: 2.1%
  9. portuguese: 1%
  10. czech: 0.6%
Another interesting figure is that apparently 2.4% of users haven t upgraded xulrunner-1.9.1 and are not using version 1.9.1.6 with their Iceweasel 3.5.6. I m afraid of what this can mean for stable security updates, although, as being security updates, they may be followed better. Somewhere around 7% of users have, at some point, changed their user agent string to include Firefox in it, because web sites suck. This is a very interesting figure because despite that being quite significant, we haven t got that many complaints (I m not saying there weren t, but I would have expected more, considering the amount of users involved). Fortunately, this was changed recently, so all these users could reset their user agent string. And last but not least, except amd64 and x86 users, we saw 14 powerpc users and 7 arm users.

8 February 2010

Stefano Zacchiroli: integrating Mutt with Org-mode

remember Mutt's mail in Org-mode and jump back to them As already anticipated, I've been implementing my own Getting Things Done work flow. This post documents one of its main bricks: the integration between Mutt and Org-mode. As a geek, my main incoming stream of TODO items and information in general is email. As emails hit my INBOX, I either deal with them immediately (reply, archive, delete) or I need to store them elsewhere, possibly adding extra information such as a deadline, a personal note, the associated next action, the context in which it is actionable, etc. This need of adding extra information is what defeats the usage of my mail client (Mutt) as a list manager (in the GTD sense), and that's where I plugged Org-mode in. My main goals are:
  1. create Org-mode notes from Mutt, referencing the current email, and possibly inlining some of its metadata (e.g. subject, sender)
  2. quickly retrieve referenced emails from Org-mode notes; ideally that should happen in my usual email environment (i.e. Mutt), so that I can process the retrieved mail as usual (e.g. to inform the sender that I did something about it)
In fact, both would be straightforward to achieve if I were using some Emacs-based mail client such as Gnus, but I resist the Emacs operating system syndrome, and therefore I insist in using my beloved Mutt. Let's see how the two parts of the interaction between Mutt and Org-mode work. (1) Mutt Org-mode (there ...) The interaction from Mutt to Org-mode happens via org-protocol. Using it external applications can feed content to Org-mode note templates, which are then interactively edited (via emacsclient), and finally filed away. The Mutt glue macro from my ~/.muttrc is as follow:
macro index \eR " ~/bin/remember-mail\n"

The remember-mail script is trivial: it parses the fed mail from STDIN (using a couple of legacy Perl modules) and then invokes org-protocol. The relevant configuration from my ~/.emacs is reported below; the comments explain the various parts:
;; standard org <-> remember stuff, RTFM
(org-remember-insinuate)
(setq org-default-notes-file "~/org/gtd.org")
(setq org-remember-templates  ;; mail-specific note template, identified by "m"
      '(("Mail" ?m "* %?\n\n  Source: %u, %c\n  %i" nil)))
;; ensure that emacsclient will show just the note to be edited when invoked
;; from Mutt, and that it will shut down emacsclient once finished;
;; fallback to legacy behavior when not invoked via org-protocol.
(add-hook 'org-remember-mode-hook 'delete-other-windows)
(setq my-org-protocol-flag nil)
(defadvice org-remember-finalize (after delete-frame-at-end activate)
  "Delete frame at remember finalization"
  (progn (if my-org-protocol-flag (delete-frame))
     (setq my-org-protocol-flag nil)))
(defadvice org-remember-kill (after delete-frame-at-end activate)
  "Delete frame at remember abort"
  (progn (if my-org-protocol-flag (delete-frame))
     (setq my-org-protocol-flag nil)))
(defadvice org-protocol-remember (before set-org-protocol-flag activate)
  (setq my-org-protocol-flag t))

The result is that when you hit ESC-R in Mutt, emacsclient will be fired up in place presenting a note template that already contains relevant mail information (date, subject, from) and lets you add extra information before going away. Additionally, the email message-id will be hidden in the note as a mutt: hyperlink with anchor text "mail". (2) Org-mode Mutt (... and back again) Going back means that clicking on a "mail" hyperlink within an Org-mode note should bring up a Mutt instance showing the original message, in its context (e.g. its own mailbox). Achieving that consists of 2 separate steps:
  1. looking up a specific message by Message-ID
  2. firing up Mutt on the looked up message
For the first part I use maildir-utils (AKA mu): a Xapian-based mail indexing tool, which nicely integrates with Mutt; check out my previous blog post on the subject for a sample setup. Using mu, Message-ID lookups are as simple as:
zack@usha:~$ mu find -f p m:E1NbJad-0007x9-B7@ries.debian.org
/home/zack/Maildir/Debian.project/cur/1264883664_0.9472.usha,U=6320,FMD5=2284e927bb93d8a2ec434f5614dc04ba:2,S

Note: I'm relying upon maildir-utils version 0.6 or greater, for all presented scripts. For the second part I use the mutt-open script which fires upon a Mutt instance on the maildir containing a specific message, and then "hits" the appropriate keys to open the message and shutdown the sidebar (if desired). It is a nicely reusable script, which I've being using elsewhere too. The needed glue on the emacs side is just a function to invoke mutt-open in a brand new terminal, and its declaration as the handler for mutt: URLs.
(defun open-mail-in-mutt (message)
  "Open a mail message in Mutt, using an external terminal.
Message can be specified either by a path pointing inside a
Maildir, or by Message-ID."
  (interactive "MPath or Message-ID: ")
  (shell-command
   (format "gnome-terminal -e \"%s %s\""
       (substitute-in-file-name "$HOME/bin/mutt-open") message)))
;; add support for "mutt:ID" links
(org-add-link-type "mutt" 'open-mail-in-mutt)

Voil ! Download Summary of scripts and configuration snippets discussed above:

7 February 2010

Michal &#268;iha&#345;: Big changes in phpMyAdmin future

The main reason for me to go to FOSDEM this year was to meet with other phpMyAdmin developers to be able to discuss some things personally rather than on mailing list or irc. We had quite a big list of topics to discuss and besides discussed some other things which will be made public at some point later. The good thing is that both my proposals were accepted, so we're about to migrate to Git, what will make our development less blocked by slow SourceForge.net VCS server (what mostly affected people sitting in Europe). The migration will happen shortly, I expect to provide testing repository during next few weeks and we will switch for real once all developers get used to it. The other important change is to switch our translation system to Gettext. The primary motivation behind this is to allow translators to use wide range of standard tools available for po files and also to allow web based translation using Pootle server in similar way we currently handle documentation translation. I have already prepared the migration plan to Gettext, but it will not happen before migration to Git as I want to benefit integration of Pootle with Git, what makes translations directly commit to the local repository.

MJ Ray: The Phone Co-op 2010

Ed Mayo talking to the Phone Co-op meeting
Ed Mayo talking to the Phone Co-op meeting Yesterday I had the pleasure to be at the Phone Co-ops annual meeting, as those of you who follow me on identi.ca or elsewhere will already know. The proceedings included a speech from Cooperatives-UK Chief Exec Ed Mayo that included the co-op pub in Salford, spurning David Beckham s gift and this summer s Co-operatives Fortnight. As ever, the bits I liked best were the lively question-and-answer sessions, both on Ed s speech and the annual report. I took notes and reproduce them below, but I didn t capture every question, or every answer and none of this is verbatim. Questions to Ed about UK cooperation included:

Questions about the annual report asked about:

6 February 2010

Martin F. Krafft: Of waterfalls and communication culture

I got involved with open-source software before I learnt about software development in a university course. Naturally, when my profs tried to teach the waterfall model to me, I couldn t take them too seriously back then. After all, requirements specification design implementation verification maintenance is not really in line with the principle to release early, release often. Furthermore, since water cannot flow uphill, the waterfall model fails to represent development cycles, as they naturally appear, even in behemoth, ancient software nightmares. And yet, when embarking on a new project, I do tend to find myself first thinking about the big picture, instead of churning out the code. I am certainly not the best coder out there, and it might well be that I could benefit from learning to break down problems to get an earlier start on the implementation of components. However, I maintain that avoiding the waterfalls and engaging directly in extreme programming, agile software development, or pair-based approaches right away is not the answer. Rather, the best approach should probably involve a certain level of conceptualisation before code is produced. I am a big fan of test-driven development, and I like the scrum method for the very reason that it involves talking and challenging ideas (although I wouldn t follow the method down to the book). I like to think about trickles in the mountains where water droplets joyfully jump around. * * * When Glyn Moody spoke in his LCA2010 keynote about challenges we (as in society) face, and how open-source seems to have many answers, he dropped the following gem, which spoke right to my heart:
Twitter is the release early, release often principle applied to thinking.
By this simile, journal articles are produced according to the waterfall model. This may well be why they are usually outdated at the time of publication. Microblogging (like Twitter), on the other hand, is primarily used to publish stuff before it s ready, and which would never be published otherwise. With journals on one end, and microblogging on the other, I think the epiphany is found in between as with software development: web logs web applications that allow for easy publishing by anyone (which is a different problem not to be discussed here). Since articles on those platforms usually have at least a title and a body, they require just a little bit more thought than 140 characters of contracted brain farts, spilled into the world faster than it takes one to stand up, stretch, and sit down again. * * * Microblogging seems to be in line with where we re heading: more information, more self-promotion, more access to more people, and all that with lower barriers of entry. It s hard to argue against a trend, but I think we ve taken a wrong turn somewhere. The one specific instance of content is no longer relevant, and there is no more time in the day to read elaborate treatments of subject matters. Instead, what seems to prevail is a constant flow. This flow threatens to replace actual thinking and discourse, both of which require reflection and time a scarce resource used up by ever new, fast-flowing media. It seems to me that those who immersed in this flow are unable to get out, as if sucked in by a maelstrom. I ve seen people enter serious withdrawal within hours of not knowing what s going on in the world. One could miss out on something. If you re following people on one of those microblogging platforms, I challenge you to spend the weekend offline and when the urge hits, ask yourself what you are actually missing. I mean what you are really missing, and by that I mean anything other than the cozy buzz and hum of entertainment washed upon you, preventing you from having to think about what you could be (actively) doing instead. I hope it s not a lot. For else, I fear that this means that future generations will be stuck with this communication culture, just like water droplets can t ever play in the mountain trickle again. NP: Sola Rosa: Get It Together

4 February 2010

Andrew Pollock: [life] Completely moved

We finished off moving everything from the old place last weekend. Our new home number can be determined by adding 59115 to the old one (or calling the old one in the next 60 days). The great unpacking is continuing. We're reluctant to unpack much in the kitchen because it's all going to have to come back out again in a couple of weeks. The cats have settled in well. Lily is still spending most of her time under the bed, but she comes out to explore from time to time. We had a bunch of fun with various bits of cable. I had some CAT-6 cabling installed throughout, and also some new RG-6 cabling was installed at the same time. The contractor ran a new line into our place and also a line to the patch panel he installed for the phone. When Comcast came out to activate our cable TV service, the poor guy had all sorts of problems, until I realised there was an air gap between the line coming into the condo and the cables outside. Then the next problem was my contractor had run the new line out to the wrong location. The bunch of cables where he ran the line to was some old out of commission stuff. The Comcast guy was really great. We located where the current cable came in (via the attic) and he spliced that into the new internal cabling, and the net outcome was close to what was supposed to have happened in the first place. The funniest thing was the Comcast cable guy left in such a rush because he ran over time on the job, that he left the cable cabinet wide open, including the box with all of the building's cable connections. If I new how to crimp RG-6, and was feeling lucky, I could remove the filter that's restricting the channels we receive. The next fun was getting the phone line sorted out. Again, my contractor had run a new CAT-6 line to the patch panel for the purposes of giving me a few jacks in the one place, so I could plug in my DSL modem, and a line into my Asterisk box. The only problem was he wasn't sure which pair was the phone line (and the phone wasn't active at the time) so there was an air gap between the end of the CAT-6 and the phone line. AT&T came out and sorted that out. I suspect the AT&T guy also left in a hurry, because he left a tone generator jumpered into the phone line. Once the phone was working we had to wait a couple of days for the DSL service to get moved to the new number. It turns out that I got new static IP addresses with the move, so it wasn't just a case of plugging everything back in and it working, unfortunately. But that's all behind us now. We're fully here, online again, and settling in. I think this weekend we'll bang in some picture hooks and hang up our paintings, and try to unpack a few more boxes.

3 February 2010

Cyril Brulebois: G-I, part 2

Getting to X After having prepared a bunch of libraries, the idea was to get X in shape. I d like to thank Julien Cristau very much for his support all along the way, since I knew nothing about X. Basically the plan was to get: Not much to say about the former, it only pulled two additional libraries compared to what was previously udeb-ified: libaudit0 and libselinux1. Since security modules aren t the primary concerns in this exercise, --enable-xselinux quickly became --disable-xselinux and those dependencies went away. Both drivers were trivial to tweak, nothing really worth noting there. Once those 3 additional packages added to localudebs/ and to pkg-lists/local, the mklibs tool really wasn t happy with them during the rebuild of the netboot image, since the drivers are X plugins, meaning they need symbols which aren t defined in other libraries. Example:
No library provides non-weak EventSwapVector
Since the idea is to get something working rather than getting something perfect at once, d-i s packages/mklibs/src/mklibs.py (installed as /usr/bin/mklibs) was told to stop raising an exception, and to print a warning message instead. Rebuilding an image was then working again. It took some time, but finally it got noticed those packages were actually all installed in the initramfs, so there was no need to try and load/install them manually during the installation process, everything was there already, and it was sufficient to switch to VT2 to see the /usr/bin/Xorg binary. Some packages were still needed: xkb-data, and x11-xkb-utils. The latter also pulled libxkbfile1, but well, an additional library doesn t sound very scary. At this point, one has to try and run Xorg. The result was a black screen, and no means of getting back to another terminal, be it inside Qemu or VirtualBox. Troubleshooting X First idea: adding the openssh-server-udeb package to the image, and start sshd from there. But then one has to go through the missing config file, tweaking privilege separation, generating a host key, setting a password, etc. And for whatever reasons, it wasn t possible to access it. That s where the DebianInstaller/NetworkConsole page on the Debian Wiki came into play: it includes a few steps to get a working sshd within d-i, painlessly. So, X was actually starting properly, but getting a black screen is now the default. One wants X -retro to get the well-known old behaviour. From udevadm info --export-db, it looked like input stuff were missing, and indeed, udev-udeb doesn t include /lib/dev/input_id and /lib/udev/rules.d/60-persistent-input.rules. Since scp seems broken, wget from the host did the trick followed by chmod +x for the input_id file, otherwise that doesn t work so well. But still, there were some missing evdev stuff. And indeed evdev wasn t to be seen in lsmod, nor available to be modprobe d. That s where it became a little dirtier: wget and udpkg on mouse-modules-2.6.30-2-amd64-di, followed by depmod to make sure, and then modprobe was OK. A little udevadm trigger run to ensure udev was fully aware of the new situation, and restarting X led to a moving cursor there, as well as a working keyboard, since it was possible to switch between terminals! Prove it! Alright, I m proudly providing you with a screenshot: (Really, I ve never been so happy to see this fracking black-and-grey-grid screen. I kid you not!) If we forget about the very few network-console-related questions answered to get an sshd running, please note that the installation process is still just starting, the very first debconf question is still unanswered. Now, patching udev again so that udev-udeb includes the two mentioned files was almost easy (details aren t important anyway), while pulling evdev.ko module automatically was trivial, just a matter of adding such a line to a packages list (I picked pkg-lists/netboot/amd64.cfg):
mouse-modules-$ kernel:Version 
Which means one can now, out of the box: Next step Rework the Pango/Cairo/Gtk stack to use X11 instead of DirectFB.

1 February 2010

Cyril Brulebois: G-I, part 1

Producing udebs How to patch That s actually quite trivial. Most packages from Josselin s 1st and 2nd lists are libraries, and generating udebs for libraries is easy. Basically it boils down to declaring a new binary package: Now, populating it might depend on the considered source package, but thankfully, pkg-x11 packages are quite sane, using debhelper s dh_install. So duplicating debian/libfooN.install into debian/libfooN-udeb.install is usually sufficient. It s a bit trickier when dh_movefiles is used, but calling install and cp -r after the dh_movefiles call should be sufficient. Next step, tweak shlibs for libfooN. Without that step, a libbarM package built against libfooN would get libfooN in Depends, which is not appropriate. The idea is to get libfooN-udeb instead. Trivial: add --add-udeb=libfooN-udeb to the dh_makeshlibs call. Possible issues at that step: Various checks to perform: Results (These files might be moved around during the following steps, but this post shall be kept up-to-date and point to them at all time.) Legend: Graphs are scaled down to 75%, click for full size. Step 1: Step 2: Adding udebs to a d-i image Basic d-i image General guidelines (see d-i documentation for detailed installation, needed packages, etc.):
svn co svn://svn.debian.org/svn/d-i/trunk/ debian-installer-trunk
cd debian-installer-trunk/installer/build
make build_netboot
If that breaks (e.g. due to missing packages), make sure there s a similar entry in sources.list.udeb:
deb http://yourmirror/debian squeeze main/debian-installer
If everything goes well, the generated image should be available as dest/netboot/mini.iso, and tmp/netboot/udeb.list should contain the list of embedded udebs. To give it a try:
qemu-system-x86_64 -cdrom dest/netboot/mini.iso
Actually adding udebs Drop all additional udebs under localudebs/. Needed Packages and Packages.gz should be generated on the fly (but beware, secure apt is then disabled, even for non-local udebs). Now, tell d-i we want some more packages. If all of them are wanted, one can do that:
for i in localudebs/*.udeb; do \
  dpkg-deb --showformat='$ Package \n' -W $i; \
done > pkg-lists/local
(Update: Thanks to Guillem for pointing out a better and cleaner way than dpkg --info $i grep Package: awk ' print $2 ') Generate a new image (note the rebuild part of the target):
make rebuild_netboot
Make sure they got added by looking in tmp/netboot/udeb.list and profit! What s next Future steps include: Stay tuned.

31 January 2010

Axel Beckert: abe@debian.org

On Wednesday I got DAM approval and since Saturday late evening I m officially a Debian Developer. Yay! :-) My thanks go to As Bernd cited in his AM report, my earliest activity within the Debian community I can remember was organising the Debian booth at LinuxDay.lu 2003, where I installed Debian 3.0 Woody on my Hamilton Hamstation hy (a Sun SparcStation 4 clone). I wrote my first bugreport in November 2004 (#283365), probably during the Sarge BSP in Frankfurt. And my first Debian package was wikipedia2text, starting to package it August 2005 (ITP #325417). My only earlier documented interest in the Debian community is subscribing to the lists debian-apache@l.d.o and debian-emacsen@l.d.o in June 2002. I though remember that I started playing around with Debian 2.0 Hamm, skipping 2.1 (for whatever reasons, I can t remember), using 2.2 quite regularily and started to dive into with Woody which also ran on my first ThinkPad bijou . I installed it over WLAN with just a boot floppy at the Chemnitzer Linux-Tage. :-) Anyway, this has led to what it had to lead to a new Debian Developer. :-) The first package I uploaded with my newly granted rights was a new conkeror snapshot. This version should work out of the box on Ubuntu again, so that conkeror in Ubuntu should not lag that much behind Debian Sid anymore. In other News Since Wednesday I own a Nokia N900 and use it as my primary mobile phone now. Although it s not as free as the OpenMoko (see two other recent posts by Lucas Nussbaum and by Tollef Fog Heen on Planet Debian) it s definitely what I hoped the OpenMoko will once become. And even if I can t run Debian natively on the N900 (yet), it at least has a Debian chroot on it. :-) I'm going to FOSDEM, the Free and Open Source Software Developers' European Meeting A few weeks ago, I took over the organisation of this year s Debian booth at FOSDEM from Wouter Verhelst who s busy enough with FOSDEM organisation itself. Last Monday the organiser of the BSD DevRoom at FOSDEM asked on #mirbsd for talk suggestions and they somehow talked me into giving a talk about Debian GNU/kFreeBSD. The slides should show up during the next days on my Debian GNU/kFreeBSD talks page. I hope, I ll survive that talk despite giving more or less a talk saying Jehova! . ;-) What a week.

Thorsten Glaser: Hello, Debian!

I got an eMail tonight. I guess this means I can say hello officially now. (Everything else is details, waiting and fixing some bugs and technicalities, or so.) Thanks to everyone involved, I learned a lot already. Oh, and I had a look into madduck's book (the old sarge edition, which I got for free recently) and found a nice graphic explaining what non-native english speakers (I even had latin first, and 3 programming languages!) don't, from the Debian constitution. Congratulations XTaran for making it as well, even visible on the website already! Please don't file an "Please package mksh R39b" bug again, I am aware there's a new version ;-) as I'm upstream too. I'm just short of time at the moment, and I'd like to put out high-quality packages. Besides, the webpage needs fixing first (while the checksums and the changelog for the release are there, no proper announcement is yet, and I'd like, for this version, to add a "upgrading caveats" section, since due to bugfixes and better standards compliance some scripts need to be updated; some of the pdksh behaviour favoured Bourne over POSIX even!

27 January 2010

Gunnar Wolf: Packaging PKP OJS (Open Journals System)

New guidelines for periodic publications' websites at my University favor the different journals we have to use a standardized system And it makes quite a bit of sense. It is quite hard to explain to the people I work with that the content is not only meant to be consumed by humans, but also by other systems; the reasons behind rich content tagging and deep hierarchies for what they would just see as a list of words (think list of authors for an article, list of keywords, and so on). After all, aggregator databases such as Latindex and SciELO have achieved getting this understanding through. And I must be quite grateful, as the University's guidelines point to what appears to be a very well-thought and thorough system, the Open Journal Systems by the Public Knowledge Project, co-funded by several well-regarded universities. OJS is a GPL-2-covered PHP bundle. Anyway I am very glad at least one of my Institute's journal accepted the challenge and decided to go OJS. I know I will quite probably be administering this system long-term. And, being as snobbish as I am, I know I loathe anything installed in my machines that is not either developed by myself or comes in a Debian package. So, as it was not packaged, I made the package Note that I am still not filing an ITP (which means, I have not yet decided whether I will upload this to Debian) because I want first to make sure I do have the needed long-term commitment Besides, I am by far not a PHP person, and being responsible for a package Carries a nontrivial weight. Still, you might be interested in getting it. If you are interested, you can either download the .deb package or add it to your apt repositories (and stay updated with any new releases), by adding this to your /etc/apt/sources.list: deb http://www.iiec.unam.mx/apt/ lenny misc
deb-src http://www.iiec.unam.mx/apt/ lenny misc
Note: My packaging has still a small bug: The installer fails to create the PostgreSQL database. The MySQL database works fine. I will look into it soon So far, I am quite impressed with this program's functionality and the depth/quality of its (online) documentation. Besides, its usage statistics speak for themselves: So, it is quite possible I will be uploading this into Debian in a couple of weeks (hopefully in time to be considered for Squeeze). The reasons I am making it available in my personal repository now is:

Next.

Previous.