Artikel - 3.7.2005 - 26.7.2005

There are days when my computer hates me

For example, when I play with Flup and instead of the threaded server I want to use a forked server. And I realize that the latter requires the socketpair function, which unfortunately is only available from Python 2.4, which is available on Debian Sarge, but for Python 2.4 there is no Psycopg in Debian Sarge - which in turn is a prerequisite for Django and PostgreSQL, which is why I am dealing with FastCGI in the first place. Installing Psycopg itself is no fun, as you not only need the PostgreSQL headers that are normally installed, but also a few internal headers - so in principle a build tree. And then you also need the egenix-mx-base headers, which you can only get for Python 2.3, so you would have to install that yourself as well. Backports from the next Debian version don't work either, as they are just switching to PostgreSQL 8.0 and Sarge is still using 7.4 and I didn't want to upgrade the whole system right away. And so you go in circles and feel a bit cheated by all the dependencies and version conflicts.

And what do you do as a solution, because the threaded server unfortunately only produces segfaults in Psycopg? You take the threaded server, forbid it to thread and start it via the spawn-fcgi from lighttpd, or directly from lighttpd. But that's somehow stupid again, because then there are always 3 threads per FCGI server, two of which just stand in the process list and do nothing. And all this just because mod python2 (which is needed for Django) requires Apache2, which in turn requires mod perl2, which is incompatible with the old mod perl, which is why a whole bunch of my sites wouldn't work anymore if I switched to Apache2. Which I don't want to do anyway, because Apache2 with mod python is damn slow. And once again I feel cheated. I really should have looked for a more meaningful job.

If you didn't understand anything: doesn't matter, it's technology, it's not important, I just wanted to say that.

Running Django with FCGI and lighttpd

Diese Dokumentation ist für einen grösseren Kreis als nur .de gedacht, daher das ganze in Neuwestfälisch Englisch. Sorry. Update: I maintain the actually descriptions now in my trac system. See the FCGI+lighty description for Django. There are different ways to run Django on your machine. One way is only for development: use the django-admin.py runserver command as documented in the tutorial. The builtin server isn't good for production use, though. The other option is running it with mod_python. This is currently the preferred method to run Django. This posting is here to document a third way: running Django behind lighttpd with FCGI.

First you need to install the needed packages. Fetch them from their respective download address and install them or use preinstalled packages if your system provides those. You will need the following stuff:

  • [Django][2] itself - currently fetched from SVN. Follow the setup instructions or use python setup.py install .
  • [Flup][3] - a package of different ways to run WSGI applications. I use the threaded WSGIServer in this documentation.
  • [lighttpd][4] itself of course. You need to compile at least the fastcgi, the rewrite and the accesslog module, usually they are compiled with the system.

First after installing ligthttpd you need to create a lighttpd config file. The configfile given here is tailored after my own paths - you will need to change them to your own situation. This config file activates a server on port 8000 on localhost - just like the runserver command would do. But this server is a production quality server with multiple FCGI processes spawned and a very fast media delivery.


 # lighttpd configuration file
 #
 ############ Options you really have to take care of ####################

server.modules = ( "mod_rewrite", "mod_fastcgi", "mod_accesslog" )

server.document-root = "/home/gb/public_html/"
 server.indexfiles = ( "index.html", "index.htm", "default.htm" )

 these settings attch the server to the same ip and port as runserver would do

server.errorlog = "/home/gb/log/lighttpd-error.log"
 accesslog.filename = "/home/gb/log/lighttpd-access.log"

fastcgi.server = (
"/myproject-admin.fcgi" => (
"admin" => (
"socket" => "/tmp/myproject-admin.socket",
"bin-path" => "/home/gb/public_html/myproject-admin.fcgi",
"min-procs" => 1,
"max-procs" => 1
 )
 ),
"/myproject.fcgi" => (
"polls" => (
"socket" => "/tmp/myproject.socket",
"bin-path" => "/home/gb/public_html/myproject.fcgi"
 )
 )
 )

url.rewrite = (
"^(/admin/.*)$" => "/myproject-admin.fcgi$1",
"^(/polls/.*)$" => "/myproject.fcgi$1"
 )

This config file will start only one FCGI handler for your admin stuff and the default number of handlers (each one multithreaded!) for your own site. You can finetune these settings with the usual ligthttpd FCGI settings, even make use of external FCGI spawning and offloading of FCGI processes to a distributed FCGI cluster! Admin media files need to go into your lighttpd document root.

The config works by translating all standard URLs to be handled by the FCGI script for each settings file - to add more applications to the system you would only duplicate the rewrite rule for the /polls/ line and change that to choices or whatever your module is named. The next step would be to create the .fcgi scripts. Here are the two I am using:


 #!/bin/sh
 # this is myproject.fcgi - put it into your docroot

export DJANGOSETTINGSMODULE=myprojects.settings.main

/home/gb/bin/django-fcgi.py

 #!/bin/sh
 # this is myproject-admin.fcgi - put it into your docroot

export DJANGOSETTINGSMODULE=myprojects.settings.admin

/home/gb/bin/django-fcgi.py

These two files only make use of a django-fcgi.py script. This is not part of the Django distribution (not yet - maybe they will incorporate it) and it's source is given here:


 #!/usr/bin/python2.3

def main():
 from flup.server.fcgi import WSGIServer
 from django.core.handlers.wsgi import WSGIHandler
 WSGIServer(WSGIHandler()).run()

if name == 'main':
 main()

As you can see it's rather simple. It uses the threaded WSGIServer from the fcgi-module, but you could as easily use the forked server - but as the lighttpd already does preforking, I think there isn't much use with forking at the FCGI level. This script should be somewhere in your path or just reference it with fully qualified path as I do. Now you have all parts togehter. I put my lighttpd config into /home/gb/etc/lighttpd.conf , the .fcgi scripts into /home/gb/public_html and the django-fcgi.py into /home/gb/bin . Then I can start the whole mess with /usr/local/sbin/lighttpd -f etc/lighttpd.conf . This starts the server, preforkes all FCGI handlers and detaches from the tty to become a proper daemon. The nice thing: this will not run under some special system account but under your normal user account, so your own file restrictions apply. lighttpd+FCGI is quite powerfull and should give you a very nice and very fast option for running Django applications. Problems:

  • under heavy load some FCGI processes segfault. I first suspected the fcgi library, but after a bit of fiddling (core debugging) I found out it's actually the psycopg on my system that segfaults. So you might have more luck (unless you run Debian Sarge, too)

  • Performance behind a front apache isn't what I would have expected. A lighttpd with front apache and 5 backend FCGI processes only achieves 36 requests per second on my machine while the django-admin.py runserver achieves 45 requests per second! (still faster than mod_python via apache2: only 27 requests per second) Updates:

  • the separation of the two FCGI scripts didn't work right. Now I don't match only on the .fcgi extension but on the script name, that way /admin/ really uses the myproject-admin.fcgi and /polls/ really uses the myproject.fcgi.

  • I have [another document online][6] that goes into more details with regard to load distribution

Stupid Patents the One Hundred and Eleventh

Whenever you think you've seen the most idiotic patent, something even more stupid is guaranteed to come along - Microsoft wants to patent smileys:

The patent application published on Thursday describes a method for encoding self-created emoticon images as strings that can be embedded in text messages.

Scotland Yard shoots innocent people

By now it's clear that the person shot by British police was innocent. And yet: Scotland Yard defends headshot practice. The former Scotland Yard chief:

"There is only one sure way to stop a suicide bomber who is convinced of his mission - to destroy his brain immediately, completely," he wrote in the Sunday newspaper "News of the World". "That means shooting him in the head with destructive force, killing him instantly."

One must keep in mind that these were plainclothes police officers - a panic reaction when a group of armed people in civilian clothes are after you is, of course, preprogrammed. To use this as justification for a targeted headshot is more than just cynicism.

Executions on suspicion as a response to terrorism - this turns the alleged protection of society itself into terrorism and a danger to every citizen. The inhumanity of the police representatives in defending this practice - Police chief 'sorry' over death - is simply revolting.

Mandatory insurance sponsorship by the state?

Foreign Minister Fischer advocates for a mandatory Riester pension - naturally, the reader wonders what the Foreign Minister has to do with it, but never mind:

Federal Foreign Minister Joschka Fischer has spoken out in favor of introducing a mandatory private pension insurance. "The pension system must be affordable. I wish that the Riester pension would finally be introduced in a binding manner and that we encourage people to private provision."

Well, well. Encouraging private provision. To this end, a mandatory participation in the biggest insurance scam of all time - the Riester pension, whose returns are modest and whose payment guarantees are more than questionable.

One could, of course, simply choose a model of a citizen's insurance, in which everyone pays into the state social insurance schemes, without leaving a loophole for higher earners to escape - especially within the framework of great ideas such as the Ich-AG and increased self-employment, the social insurance system is further hollowed out. But that would be an intelligent solution. The state social insurances have the advantage that they are subject to certain rules by the constitution - and the state must ensure that the corresponding services are provided.

Instead, the private insurance industry is further sponsored and, according to Fischer's ideas, even with a mandatory requirement for citizens. Yes, that brings growth, that makes sense. That citizens are simply being taken advantage of and many models are pure extortion, and no payout security is given in any way, we simply ignore for now.

One thing is certain: with the idiocy of our politicians, there will soon be a lot to earn in the insurance industry. Which will presumably have nothing better to do than to gamble our then private forced pensions on the stock market and sell them to hedge funds.

Crazy Vinokourov ...

... snatches the victory from the sprinter teams right in front of their noses in Paris. Nobody really expected that. First, he still gets two seconds of goodwill in the fight for the overall classification and the 5th place and then he simply doesn't want to fall in line and leave the field to the sprinters. Classy move, I love such surprises.

Otto will foam again

Owl Content

Now he probably has to rant against the EU, as the EU Commission insists on the independence of data protection authorities:

The EU Commission has initiated a breach of contract procedure against Germany for disregarding the EU Data Protection Directive. It criticizes that the supervision of privacy protection in this country is in the hands of the state. The "current organization of the supervisory bodies responsible for monitoring data processing in the non-public sector" is "not compatible with Community law," according to a letter from the Directorate-General for Justice, Freedom and Security available to heise online.

Whether one should take the EU Commission's sudden advocacy for data protection seriously in view of the efforts to extend storage times for communication data within the EU is a completely different matter ...

About unlucky people and favorites

Well, one thing was definitely clear today (aside from the fact that Armstrong still rides better than Ullrich, even in the time trial): Rasmussen is the unlucky one of the day. Two crashes, 5 breakdowns, and over 7 minutes caught up, that hurts. Fortunately, he arrived and he can console himself: today he will also be given a polka dot jersey.

The next Tour is already shaping up with the favorites: Ullrich and Basso right at the top of the list. Vinokourov certainly also a favorite, but definitely with a clear margin. It may be that at some point a new rider will come along - but these three are definitely in the running for the victory.

It will definitely be more interesting when Armstrong no longer starts - the favorites for next year are clearly much closer together and the battles should also become more exciting again. Ullrich and Vinokourov clearly the much stronger time trialists, Basso the much better climber - that will definitely be exciting.

Only one thing I still don't understand at the end of the Tour: why T-Mobile didn't take Zabel with them. Those idiots.

Django Again

Django - the upcoming web framework for Python - now has SQLite 3 support. This makes setting up a development environment for Django projects extremely simple: you just need Python 2.3 or Python 2.4, SQLite3, and PySQLite2. On a Mac, everything is already there except PySQLite2, which you can get from www.pysqlite.org and install using sudo python setup.py install. And you're ready to start with Django and work through the tutorials. No Apache needed, no PostgreSQL (though it's the nicest of all SQL databases, it's sometimes overkill for a development environment on a notebook), and especially not psycopg - whose installation unfortunately requires almost a full PostgreSQL source tree. So there's no excuse for Pythonistas not to get involved with Django.

Internet pillory of US law enforcement agencies

Shame on privacy rights, in the land of the brave and the free the US Department of Justice puts a sex offender database online. And who believes that wouldn't be so bad, it only affects rapists and pedophiles:

The online activities of US law enforcement are not only directed against convicted criminals. The police of Chicago recently launched a site where individuals are depicted and published by name who are suspected of "supporting prostitution". The site notes that the listed persons are considered innocent until a court has determined their guilt.

Great, isn't it? Let's just put your picture on display, the small side note the lynch mob will surely read before they unpack the rope and drag your ass to the nearest tree. And anyway, the term sex offender can't be broad enough ...

Major Eavesdropping Also in Saxony Unconstitutional

Owl Content

Sachsens Verfassungsgerichtshof kippt in Teilen den "Großen Lauschangriff" and of course the politicians still feel confirmed, the laws just need to be changed - sorry, but I see it differently. The mindset needs to be changed and it's a shame that the constitutional judges are not more explicit about this.

Doohan alias Scotty died

Scotty was beamed up for the last time - and this time, no one will likely be able to reconstruct him from the pattern buffer of his transporter. Let's drink a glass of Scotch in his honor.

How Bertelsmann's business administrators are entering education policy

Found on Telepolis: TP: Enforcement of Controlling and Ranking at All Levels:

If a critical economist had been invited to the congress, he would have probably formulated the Bertelsmann strategy as follows: Democratic decision-making and open discussion are replaced by control procedures from modern business administration. Everything is sweetened with dynamic Anglicisms from marketing babble, but often ideas from the business administration specialty of controlling are hidden behind them. Earlier, one spoke more prosaically of accounting/internal auditing, but meant the same thing: the internal control and monitoring of production processes. This is done by means of cost-benefit analysis, profit and loss accounting, budgeting, profit centers, key figures for everything and anything, etc.

My personal aversion to business administration as, in my opinion, a far too short-sighted vision of the market should be known by now. However, the connection with a rather sanctimonious acting major publishing house makes the whole thing really explosive - because such corporations primarily have their own economic interests and should therefore be kept out of educational policy discussions, especially they are definitely the wrong ones to be involved as advisors in educational policy decision-making. But in the course of the politicians' privatization frenzy, such blunders are repeatedly made - combined with the marketing lies that automatically arise from such companies to consolidate their own route (such as the survey on tuition fees cited in the text, in which the path of free study was simply excluded - and then it was claimed that students were predominantly in favor of tuition fees).

The biggest problem with this close connection to the economy - whether it's Bertelsmann in educational policy or other companies in other areas - is the lack of democratic control. Politicians are still controlled in a rudimentary way, public institutions are forced by the new information law to disclose many areas, but decision-making in private sector institutions is not subject to these controls. If politicians, for example, refer to studies from the economy, one may get to the point - that the decision is based on a study by Institute So-and-So - but one may find out nothing about the structure and actual content of the study. And thus, control by the population is bluntly circumvented.

In my opinion, given the importance of educational policy, every influence of the economy and industry must be excluded. Completely irrelevant what they demand - they have nothing to do with the political design of educational policy. But unfortunately, our politicians repeatedly sell political control to private sector institutes instead of doing the work themselves. And they are selling our future and our sovereignty as a society to the economy.

EU Arrest Warrant Unconstitutional

The Federal Constitutional Court makes a decision on the European Arrest Warrant - and it turns out negatively. The European Arrest Warrant violates the Basic Law. And our government? It calls this a blow to the fight against terrorism and mocks the bureaucratization. Please what? Adhering to the Basic Law is not principle riding and bureaucratization, but a necessity. But this interests Mrs. Zypries just as little as the decision of the Bundestag against the software patent directive - and she immediately announces a legislative initiative that would make the European Arrest Warrant possible again.

I find it disgusting. Incidentally, the suspect has not been convicted in Germany - the deportation/extraction is based solely on a European Arrest Warrant from Spain. And it is not as if it had not been tried to convict him here - it just was not enough what was presented.

So the presumption of innocence is simply circumvented and the Basic Law is dismissed as silly bureaucracy - all in the name of the fight against terrorism.

Who actually protects us from the lunatics in Berlin?

Jython 2.2 in the works

The Jython website doesn't provide much information, but a few days ago, there was a post in the mailing list announcing a new alpha release for Jython 2.2 - and this time (it was already this far back at the end of 2004), it's one that actually works. Many features of the newer Python versions are included, such as generators/iterators. Therefore, it is not identical to Python 2.2, but rather a good step towards Python 2.3 in terms of features. Since the developer works with OS X and develops there, it is relatively easy to install.

For installation, as this is not mentioned anywhere explicitly:


java -jar [jython .version.elend.langer.name.jar]

Then a graphical installer appears that installs everything on the disk. Then, in the target directory, enter the following commands additionally:


chmod 755 jython
chmod 755 jythonc

Then the two (jython is the interpreter and jythonc is a compiler) are also callable and you can get started. When starting jython for the first time, a whole series of system packages are activated, so don't be surprised by the many messages from the sys-package-mgr.

For those who don't know Jython: it is a reimplementation of Python on the Java Virtual Machine. This allows all Java libraries to be used very elegantly, and the interactive shell of Jython allows you to play interactively with Java classes. Very nice to quickly try things out. But of course also very nice to have the portability of Java, but not the crazy language.

And it's just fun to do things like this:


Jython 2.2a1 on java1.4.2_07 (JIT: null)
Type "copyright", "credits" or "license" for more information.
>>> import java.lang
>>> dir(java.lang.Number)
['byteValue', 'doubleValue', 'floatValue', 'intValue', 'longValue', 'shortValue']
>>> import java
>>> dir(java)
['__name__', 'applet', 'awt', 'beans', 'io', 'lang', 'math', 'net', 'nio', 'rmi', 'security', 'sql', 'text', 'util']
>>> ```

First Django Tutorials Online

The Django programmers start with the tutorials. The first tutorial primarily deals with creating the database model and the basic code for the objects to be managed, and the second tutorial deals with the automatically generated administration interface. Very nice, all of it.

The system is of course strongly focused on content creation and management - but still general enough so that it can also be used for differently structured content. The entire administration is automatically created from the object model and some hints, so it always aligns with the real data in the system. And the default look is also quite appealing.

Server integration is done simply via mod python - so via Apache. Which is also an advantage, as mod python offers very high performance right out of the box. And for more demanding cases, there's the caching in Django. I must say, what I've seen of Django so far, I like it very much.

An important note is missing in the installation instructions: Apache2 is mandatory, and therefore also ModPython in the corresponding version. However, Mac OS X only provides Apache 1.3, and many other servers also only have the 1.3 Apache available, so Django still has a real drawback here.

By the way, if you want to upgrade from Apache to Apache2 on Debian: if mod perl is in use, forget it. The mod perl2 for Apache2 in Debian Sarge is complete garbage - as if the API changes in mod perl2 compared to the old mod perl weren't annoying enough. In principle, you can no longer get Perl modules to run so easily with it.

Update: By the way, there is currently a lot of activity in the Subversion for Django to eliminate the requirement for Apache. A simple development server is already included, so in the future you will no longer need Apache for initial experiments. And you could also set up the deployment on other legs in the long run - for example, FCGI behind lighttpd.

Update 2: The third tutorial is out and deals with the view for the visitor. They have a pretty intense pace right now with Django.

First stage victory for Gerolsteiner in the Tour

Wow. That was a stage - the top riders clearly showed where the performance level lies. Armstrong and Basso with the best legs, Ullrich very strong and thus also a clear statement to Klöden and Vinokourov, who the captain is. But definitely not strong enough for Armstrong. Whether Basso can crack Armstrong I don't know either - today his helpers were clearly missing, Sastre and Julich just lack that last bit of strength.

But the absolute stars are Gerolsteiner. On the one hand, of course, the still superb placement of Leipheimer, their captain. But the showstopper was Georg Totschnig with his stage win. The first in the Tour for Gerolsteiner ever and also the first stage win in the Tour for Totschnig. I haven't seen a rider and sports director be so happy about a victory in a long time like Totschnig and Holczer. Great performance, big congratulations to both of them for that.

By the way, Gerolsteiner's Typo3 server (yes, Gerolsteiner uses open source) just died - could that perhaps be due to the stage win and the many curious visitors?

Django - new web framework for Python

Another web framework for Python, this time with the bold name Django. I am skeptical about yet another web framework - there are already plenty, and I must admit that I have contributed to one or another - but this one offers some interesting approaches.

On the one hand, it addresses similar solutions like Ruby on Rails - but does not mention Ruby on Rails at all. That's already positive; lately, one almost gets the impression that Python programmers are panicking because of ROR and think that everything must only be oriented towards it.

On the other hand, Django offers automatically generated backend pages. This is something I really like and what I find so nice about Zope, for example - you immediately have a way to play with the actual data, even before the actual frontend is ready. Very practical, especially in the initial development phase.

Some of the other ideas are also quite funny - for example, the mapping of URLs to handlers in the Python code via regular expressions. Reminds a bit of mod_rewrite in Apache (where, with such solutions, the question of prioritization of overlapping regular expressions always remains). And an integrated object-relational manager is not bad either, even if you can of course just as well fall back on finished solutions there. And the fact that the developers have already thought about the need for efficient cache systems and then rely on memcached is also nice - many projects die at some point from the load, simply because caching was not thought of in time.

The template language, however, looks a bit unusual and somehow I wonder why there must be almost as many of them as there are web frameworks.

SCO trips over its own feet

At least that's how it seems when there is an email about No 'smoking gun' in Linux code.

The e-mail, which was sent to SCO Group CEO Darl McBride by a senior vice president at the company, forwards an e-mail from a SCO engineer. In the Aug. 13, 2002, e-mail, engineer Michael Davidson said "At the end, we had found absolutely nothing ie (sic) no evidence of any copyright infringement whatsoever."

The email has been known for some time but has only now been published - previously it was still under seal as part of the court records. Quite embarrassing for SCO when the sad details gradually come to light. Especially embarrassing: SCO argues with the same consultant who apparently found nothing here but previously claimed there was identical code. Somehow, SCO should get its argumentation in order soon, otherwise the whole lie and extortion won't last in the long run ...

Patented People

Another solo run by the European Patent Office against all laws:

The European Patent Office (EPO) granted a patent in February 2005 for a method used to select the sex of children born through artificial insemination. The patent holder is the US company XY Inc, USA. This is confirmed by a recent investigation by Greenpeace. According to the patent specification with the number EP 1257 168 B, sperm cells are deep-frozen and separated according to sex chromosomes. The patent covers the technical process and the sperm cells themselves. This places humans on a level with methods used in animal breeding.

It's ridiculous what nonsense the officials at the EPO allow themselves to be drawn into and what idiotic carts they are harnessed to. Thinking doesn't seem to be part of their job description, apparently ...

Integration Security or Xenophobia?

Great idea from Bavaria (hey, I'm in Munich, so I can also pick up Bavarian topics): Integration of foreign children: Only those who speak German can go to school. The question that arises for me: does the regulation only affect foreign children, or are all children with poor German skills sent back? And if they are sent back - is it ensured that kindergarten places with language promotion courses actually exist? Or are foreign children simply kept out of school to keep everything nicely German?

On average, ten percent of all elementary school students in Bavaria have a non-German mother tongue.

Sorry, but that should be significantly more than 10 percent - because if I listen to what people speak here in Bavaria, it is by no means always German, even if it sounds similar. So how does it look - are dialect-impaired children also sent to language courses, or does it only affect the unpopular foreigners?

robots.txt as alleged copy protection

There is no idea too stupid that lawyers or politicians couldn't have: Is the robots.txt file suitable as copy protection? a law firm in the USA is now asking, because access to historical data was possible via the Internet Archive, although in newer versions of the website, access was denied to the Internet Archive via robots.txt:

Harding, Earley, Follmer & Frailey, who had previously been involved in a legal dispute with Healthcare Advocates, now accuses Healthcare Advocates of violating the DMCA and the Internet Archive of breach of contract, as they did not, as explained, block access to the historical data. Therefore, Healthcare Advocates also demands compensation from the Internet Archive.

Not only does someone misunderstand the function of robots.txt - it is not copy protection, but merely a hint for robots as to whether they are allowed to scrape the data or not - they are also extremely bold. The Internet Archive provides its service for free - but you can sue for breach of contract and demand compensation.

This is somehow pretty stupid. The ideas of such tech failures are always amusing ...

(and yes, there is also internet access in Munich)

Tour Exciting Despite Armstrong

Because a whole series of riders really impressed me with their performance. For example, today it's of course Vinokourov, but especially the performance of Jörg Jaksche - nobody in Armstrong's immediate surroundings expected that. Also, CSC's placement with three top riders right at the front - Basso, Sastre, and Julich - is great. But what's really nice is the good position of Botero and Moreau - both have definitely found their old form again. And Vinokourov's victory might compensate him for his weakness yesterday.

It's a bit of a shame that I only followed the stage with occasional glances at the ticker. But I'm here to work, so I don't want to complain too loudly.

Addendum: However, it does make me sad that Jens Voigt was taken out of the race for a 42-second time excess - in my opinion, the race management could have turned a blind eye there. On the other hand, he apparently had bronchitis, so it might not be so detrimental to his health if he doesn't continue. Whether he would have given up voluntarily is rather questionable given his attacking will.

The Mountain Calls

Well, not really. There aren't any mountains directly in Munich. So, the Hofbräuhaus is probably calling. Or rather, the colleagues. In any case, I'm away for two days. Don't break everything here ...

Hardly with clean means

Has the transfer of the .net registrar to VeriSign gone through, given how ICANN is under VeriSign's thumb:

VeriSign can raise the prices of .net addresses at will starting January 1, 2007. Additionally, the Internet Corporation for Assigned Names and Numbers (ICANN) secured them an automatic extension of the term after six years.

Anyone who still believes that no money changed hands, I'd be happy to sell them a washing machine with a rubber band drive ...

Microsoft Loves Spyware

Anyway, Microsoft now classifies these differently:

According to this, since the update at the end of March, the program recommends ignoring various Claria products classified as moderately dangerous, as well as those from the spyware mills WhenU and 180solutions.

Sorry, but background programs that display news are fundamentally unacceptable, and I don't care in the slightest about the velvet-glove arguments the manufacturers of this junk come up with.

Sorry, but a manufacturer of operating system software that does not suggest uninstalling such trash in an anti-spyware check is simply not credible.

Law Enforcement Demands Access to Whois Data

Owl Content

Well, not being able to distinguish between IP addresses and domains, but demanding unrestricted access to WHOIS database contents. Great strategy. It's highly foolish: I can't, for the life of me, imagine a situation where the domain owner is really the interesting piece of information. On the contrary, it's almost always about IP addresses - and these are assigned to the registries and then to the providers, but these assignments are public. The assignments after that - i.e., how the providers allocate the addresses further - are not in any public-access WHOIS databases, but are stored with the providers. Let's think through a few cases:

  • Illegal upload or download of protected works: To clarify such cases, you need the user's IP address and the assignment over time - because these are often dynamic addresses. The information can only be provided by the dial-up provider in whose area the IP is located. This assignment to the provider is publicly queryable via WHOIS, but everything else can only be obtained from the provider.

  • Illegally operated server: The domain under which it runs is initially irrelevant - more interesting is the IP of the host on which the stuff is located. True, the domain may provide clues about co-responsible parties, but the interesting part is the IP - because you can get the hoster for the system through it, and they have records of who they provided this server to. Moreover, only the hoster can have access logs for this server, through which, for example, it could be determined which IP made the upload - and then we're back to the first case.

  • Email with insults, threats, or other prohibited content: Here, the domain probably helps very little - more interesting is the IP of the servers on which the emails were packaged and delivered. Because through access logs, you can get the IP of the delivering or retrieving system and then, with the first point, get back to the user.

Sorry, but I really don't see any reason why domain data should be public or why law enforcement agencies need urgent access to the data - sure, trademark lawyers would like that, but I don't think this is about facilitating access for trademark lawyers...

To me, the whole thing sounds like another case of demands being made without a real concrete need. Just as surveillance measures without good reason are repeatedly made public - and then the investigative authorities are once again in the line of fire. It would be nice if, with all these demands from the authorities, there were concrete reasons why this demand is being made, so that one could think about real solutions to their problems - after all, the refusal to provide data is not about hindering the investigative authorities, but about ensuring data protection.

Assign JavaScript Actions to CSS Selectors

Cool stuff: Behaviour is a JavaScript library that allows you to bind JavaScript actions to CSS selectors. The advantage: the actions disappear from the HTML code - making it much slimmer. And the actions can be adapted to new requirements at any time by changing the selectors.

In my first applications of Ajax, I stumbled upon exactly this problem: the JavaScript actions clutter the code that has just been painstakingly reduced to semantic HTML. Exactly what used to annoy me about all the table layouts now annoys me about the whole JavaScript thing. A clean separation of code, semantics, and style is exactly what I need. Actually, something like this should be part of the HTML standard.

I definitely need to try this out, because if it's usable in terms of performance, I should take a closer look at a few of the last Ajax actions and change them ...

Jens Voigt in Yellow

I love this. A truly strong stage winner with an outstanding performance. A technically perfect team time trial by Voigt and Moreau. The overall classification has been shaken up and the yellow jersey is with one of my favorite riders (the other one isn't allowed to participate this year). Hey, as far as I'm concerned, Jens Voigt can wear the color for a few more days.

Plash: the Principle of Least Authority shell

Interesting concept: Plash is a shell that inserts a library under programs through which all accesses to the file system are sent. This allows you to control which functions a program is actually allowed to execute. This time, it is not about protecting against user activities, but about protecting the user against activities of the program. Especially when installing programs that you do not know, you can sometimes catch Trojans - Plash helps here by explicitly only enabling the areas of the disk for the program that it actually needs.

For this purpose, all accesses to the file system are internally routed via a own mini-server - the actual program is executed under a freshly allocated user in a own chroot-jail, so it has no chance to do anything outside that is not explicitly allowed.

Very interesting concept, especially for system administrators. Unfortunately (as expected) it does not work with grsecurity - of course, grsecurity is supposed to help prevent some of the tricks used in Plash. In this case, it fails due to the requirement of executable stack.

The Catholic Church and Evolution

No Church!

Not yet seen in other media, so here's a link to the New York Times: Leading Cardinal Redefines Church's View on Evolution - New York Times:

The cardinal, Christoph Schönborn, archbishop of Vienna, a theologian who is close to Pope Benedict XVI, staked out his position in an Op-Ed article in The New York Times on Thursday, writing, "Evolution in the sense of common ancestry might be true, but evolution in the neo-Darwinian sense - an unguided, unplanned process of random variation and natural selection - is not."

Well. The Catholic Church wants to go against Darwin and his teachings again? Instead of blunt creationism, now the embellished Intelligent Design? What is not compatible is reality and the Catholic Church ...

larger Haskell sources

Who like me prefers to dig through sources to learn languages, here are a few larger Haskell projects to choose from:

  • [Haskell User-Submitted Libraries][0] is a collection of partially older but still interesting Haskell projects. Downloadable is an IRC bot and in the CVS there is also a web server with a plugin interface.
  • [Pugs][1] is a Perl 6 implementation in Haskell. [I've already mentioned it][2], it's still cool |:-)|
  • [darcs][3] is a distributed source control system. [I've also mentioned it][4], but it's still cool.

Helium - Haskell Learning System

Helium is a Haskell subset compiler specifically developed for teaching. It provides more detailed error messages and further analyzes sources to make these messages possible. However, it is really only a subset of Haskell - and since type classes are missing, a quite important part is missing. But to get a taste of functional programming, it is quite useful.

As textbooks, The Craft of Functional Programming and The Haskell School of Expression are recommended. I ordered both - my Haskell knowledge is more than primitive and hopelessly outdated (if that is even possible with a relatively young language like Haskell).

Sometimes DarwinPorts Drives Me to Despair

For example, if I want to install ghc (a Haskell compiler), but it first wants to install Perl 5.8. As if I didn't already have a quite usable Perl 5.8.6 on the disk under Tiger, no, the DarwinPorts want their own versions of it. And then, depending on the path setting, I have either the Apple-Perl or the one from DarwinPorts active. Quite stupid - I think there should be pseudo-packages in the DarwinPorts that then refer to the pre-installed versions from Apple.

This causes problems especially when I also install packages manually. Because then sometimes the Perl accessible via the path is used - and with active DarwinPorts, that is the one there. But this is absolutely not the desired effect - after all, the Perl in this case only got in because the port for ghc has a build-dependency. But I don't want to use the DarwinPorts Perl at all ...

For the same reason, I find all the Python and Ruby modules in DarwinPorts unusable: they automatically pull in a new installation of Python and Ruby and do not use the pre-installed version. Rarely stupid ...

As a result, you can only use DarwinPorts on an OS X box for well-isolated tools - which is a bit of a shame, because the idea and the implementation itself are pretty great. Only too little consideration is given to the already installed stuff.

By the way, I installed ghc simply via the binary package from haskell.org. It says there that it is for 10.3, but it also works with 10.4 - at least what I do with it. And it saves me from having to build all that stuff.

Bomb Series in London

Bomb series in London: Explosions in several subway stations and buses have plunged London into chaos on Thursday. Apparently three explosions in subway stations and three explosions in double-decker buses. The suspicion of terrorist attacks is of course close at hand - after all, the G8 summit is in England.

Shiira - alternative WebKit browser

Shiira Project is an interesting web browser for the Mac that is based on WebKit. What makes Shiira special (apart from minor things like a more Cocoa-like layout instead of the tin box shape of Safari) is the ability to display all tabs loaded in a window in an overview of shrunk pages using a hotkey - similar to Exposé. Very stylish, I could also like this function in Safari ...

In addition, Shiia supports cUrl as an alternative to the WebKit downloader - but unfortunately the browser still has some strange properties, for example, the login to WordPress blogs does not always work with it and sometimes old data is displayed. Even with normal authentication it doesn't always work - I then get an error message instead of the browser asking for the password. However, everything looks quite neat with the WebKit downloader.

Since I have a rather small screen (usually set to 1024x768, as the notebook also has this size and I thus have 100 Hz on the display) this will probably not be my standard browser - the sidebar for bookmarks and history is simply impractical on small screens. I would therefore prefer a display of this information in the main page à la Safari or Camino.

SSL-VPN with Browser Control

Colleague found a pretty brilliant tool: SSL Explorer, a small https-server that together with a Java applet in the browser implements a VPN. Specifically, when the applet starts (which must be confirmed, as the applet requires additional capabilities), tunnel connections are established over https, and various applications are then integrated over these connections. For example, you can establish a VNC connection to an internal server with a click on a link, browse the local Windows network via web forms, transfer files, or access Linux servers behind the firewall via SSH. And the whole thing works with a simple Java-capable web browser - I tested it with Safari, for example, and it works flawlessly. Completely without additional client software to be installed. Ideal for roaming users who don't always have their own device with them.

Oh, and the whole thing is also under the GPL.

Hardened-PHP project

No idea how good this really is, but the Hardened-PHP project already sounds quite nice. Due to the high prevalence of PHP for web applications, it is a central point of entry for servers. Should put this on my ToDo list.

Music industry wants to taboo Allofmp3.com

Actually, it's more like censorship of positive reports about allofmp3 that the music industry is aiming for. So if you've ever said something good about allofmp3, or linked to it, or even recommended it: Waldorf and Stettler will surely send you a letter. And so the madness of cease and desist orders will continue, and the music industry will continue to finance lawyers but do nothing to stop their decline and will therefore eventually become completely insignificant. But of course, it's always someone else's fault ...

Software patents temporarily halted

Occasionally, there is some positive news: European Parliament says no to software patents. However:

Now the European Patent Office must be democratized so that software patents are no longer granted in Europe without legal basis. And we must ensure that software patents are not introduced through some other back door, such as the efforts for a common EU patent.

That is the problem - we must be extremely careful that the same thing is not now attempted through other means. I do not believe that the EU Council will simply abandon its ideas, on the contrary, I suspect that it is now evading to other solutions. Therefore, I would have preferred an adopted patent directive with the intended changes rather than the general rejection, because the topic is still open. And ultimately, a directive with clear definitions could have helped prevent pure software patents, for example, to remove patents like the MP3 patent - because after all, there are already quite a number of pure software patents in Europe, and these must be eliminated somehow.

Social welfare fraud intensified

To make it clear what it would mean if Black/Yellow instead of Red/Green ruled: CDU Minister wants relatives to pay for ALG II:

The Hessian Minister of Social Affairs spoke out in favor of reintroducing the so-called maintenance recourse for unemployment benefit II (ALG II) according to the "Berliner Zeitung" on Wednesday. As already with the social benefit, non-cohabiting parents or adult children would then also be held liable for the maintenance of an unemployed person before he receives state support.

This would then not only destroy the life of the unemployed person through unemployment, but also introduce collective punishment. Where all this is heading is also clear. And the minister does not hide this:

The election program of the Union will make it clear, "that we want to revive the low-wage sector," Lautenschläger continued.

The Union presumably envisions something like India in Germany. Are there real prospects for the citizens of the Federal Republic ...

Mexico's Settlement Older Than Previously Thought

Human footprints dating back 40,000 years have been found in Mexico:

Researchers in Mexico have discovered human footprints. The imprints are older than they should be according to the theory of the settlement of the Americas.

However, it is only a rumor that next to the footprints on the wall a graffiti with the words Kilroy was here was found.

PHP-Serialize for Python

Hurring.com : Code Vault : Python : PHP-Python Serialize : v0.3b is an implementation of the PHP serialize() stuff in Python. Very practical for WordPress: often serialized structures are stored in the options that you can resolve this way - you can write tools that work directly on the database, but are written in Python. The author has done the same for Perl - you can thus push simple data structures back and forth between Python, Perl and PHP.

Whiners and Open Source

IT decision-makers demand in an open letter more focus on the areas important to them:

In an open letter to "the" Open Source Community, IT decision-makers from various fields have urged to orient themselves more towards the actual needs of users from the corporate sector.

I always find it fascinating with what audacity some people make demands on voluntary work, only to then use it for their own purposes. Some demand the abolition of the GPL because the conditions don't suit them, the next demand focus on the desktop because they want an alternative to Microsoft, others demand more focus on high-performance servers because SUN machines with Solaris or IBM servers with AIX are too expensive for them.

Strangely enough, I only ever hear demands in open letters - but it would be much more sensible to simply support the corresponding project financially and with manpower. But that would be one's own effort, which one wants to avoid precisely. Demands for better support and better documentation also fit in here - both things that companies could easily set up themselves. But one is too good for that.

Sorry, but to me, such open letters to Open Source developers always sound like whiny little children who absolutely want an ice cream.

Sorry, folks, but that's not how it works. A large part of the Open Source Community still consists of hackers and enthusiastic amateurs and tinkerers. This often produces great crap and occasionally brilliant solutions. And it produces only what people feel like doing - if writing documentation is boring and annoying for someone, they will not spend their free time on it.

You have an itch? Scratch it. Yourself.

Then to the Bundestag

And he would have my vote. But of course, the established politicians have something to complain about and demand that he give up his acting career. Meanwhile, the opposite - that professional politicians should face the realities of life - would be much more desirable.

Furthermore, with his social commitment and dedication to his theater, he has shown that he has far more answers than the great prolethicians in Berlin. So give the man a chance. At worst, we have someone in the Bundestag whose demeanor is much more human and who still knows what the little people on the street really are.

Update: Peter Sodann has withdrawn his candidacy. Since I really like him as Kommissar Ehrlicher in Tatort, I don't even know if I should be sad about it.

Software patent directive on the verge of failure?

It would indeed be nice if the Software Patent Directive were on the verge of being scrapped:

According to Lehne, four smaller factions in the vote planned for Wednesday on the directive and possible amendments want to completely reject the European Council's proposal, according to an AFP report that can be found, among others, in the Berliner Zeitung.

Unfortunately, I'll only believe it when I see it. Because so far, the impending demise has been proclaimed several times, but the thing has still made it through. Moreover, I wouldn't be surprised if the Council simply sends the same directive back to the front without real changes. Or if the talk of scrapping it is simply an attempt to lull the software patent opponents into a false sense of security and get them to ease up on their efforts.

Therefore: continue to write and speak out against software patents. Write to your own EU representatives. Also write to those you otherwise have nothing to do with - and point out that the Software Patent Directive is selling Europe to the giants of the software industry.

Entanglements of the March Hare?

The Proletarians in Berlin are upset, but of course nothing is said about the farce of the occupation of the supervisory board of the German Stock Exchange. And this despite the fact that clear conflicts are evident:

In his main job, Merz is a lawyer and represents the CEO of the British hedge fund TCI, Christopher Hohn, as a legal advisor. The hedge fund manager had prevented the planned takeover of the London Stock Exchange (London Stock Exchange/LSE) by the German Stock Exchange.

And then the March Hare is supposed to be something in the Merkel cabinet soon. Great idea, great future.

Every smile you fake ...

... we'll be watching you. Sting rules

And Pink Floyd, of course. But they are out of competition anyway.

Objects and Functions with JavaScript

Since the OO aspect of JavaScript is often overlooked, here's a text about Object Hierarchy and Inheritance in JavaScript.

I myself have been a fan of this approach to OO since my first encounters with prototype-based OO languages like Self and NewtonScript - the pigeonhole thinking of class-based OO approaches is often restrictive, especially when modeling real-world objects.

By the way, JavaScript also has a whole lot of other nice features that are often overlooked - first and foremost the nice anonymous functions, through which Closures in JavaScript are realized. And higher-order programming can also be implemented with it.

If you now combine Prototype-OO and Higher-Order-Programming, something like Prototype might come out - a library for JavaScript with a lot of interesting extensions such as elegant Ajax bindings, simpler callback construction and many other toys. Another possibility could arise from Bob Ippollitos MochiKit, if it is ever published (and lives up to the hype).

Prototype, by the way, requires a lot of imagination as to what can be done with it - there is no documentation after all.