Artikel - 14.8.2005 - 12.9.2005

Brain Fart

Bayern's Brainfart Producer No. 1 (yes, he even beats Scatman Eddy) demands internet filters for bomb-making instructions:

Bayern's Interior Minister GĂĽnther Beckstein (CSU) has urged the business community to find solutions for what he considers a very serious security problem: bomb-making instructions on the internet.

The much bigger security problem: crazy and incompetent interior ministers. Unfortunately, you can't just filter them out of existence. Ok, you can't do that with bomb-making instructions either - they're in books after all, which you'd then have to burn as well. A solution that might also be suitable for politician ejection ...

The Dreamers of the BfA

From my pension information:

You can assume that the calculated old-age pension of X.XXX,XX EUR will actually be higher due to future pension adjustments. However, we cannot predict the development either. Therefore, we have calculated two possible variants for you without taking inflation into account. If the annual adjustment rate is 1.5 percent, this would result in a monthly pension of Y.YYY EUR from the age of 65. With an annual adjustment rate of 2.5 percent, this would result in a monthly pension of approximately Z.ZZZ EUR.

Ehm. Sorry, but if you really dream of a 1.5 percent or 2.5 percent pension adjustment per year, then you really cannot predict the development at all ...

Common Scheme

Common Scheme is an implementation of a common module standard for various Scheme implementations, including a package installer that can fetch its stuff from the net. This comes with a number of initial modules that are distributed via it. Could become something like CPAN for Scheme.

Similar approaches have been made before, but unfortunately only for individual Schemes (e.g. MZScheme has something like that). A Scheme-wide solution could make things a lot easier in the long run - and get Scheme out of the academic corner. The language deserves it.

And the best part: Gambit-C and Chicken are among the supported Schemes

Unfortunately, MZScheme is missing from the list of supported Schemes - it would be pretty cool to develop your programs with DrScheme and then simply run them through Chicken to get them quickly ...

I want one!

First signs of life from Open Genera on PowerMac - that would be really something if Open Genera didn't just run on weird OpenVMS boxes, but also on a PowerMac - I'd actually buy a desktop computer for that

Beware the Monster Chick!

That dinosaurs were feathered - they were only tarred during the asteroid impact (ok, sorry, bad joke) - has been under discussion for a long time, especially since there are appropriate findings. But this was new to me:

“The way these creatures are depicted can no longer be considered scientifically accurate,” he said. “All the evidence is that they looked more like birds than reptiles. Tyrannosaurs might have resembled giant chicks.”

Chicks? More like chickens, right? Unless the chicks in the writer's hometown are overly impressed by feathers.

Quality Journalism

It was still correct in the WDR morning magazine, but the Tagesschau is not too stupid to repeat the silly joke again:

We should thank the Strasbourg deputies, we have escaped again on this sunny September day: The EU directive "for protection against optical radiation at the workplace" has been overturned and thus remains, hopefully forever, disappeared in the darkness of the archive cabinets.

Dear journalists: the regulation was primarily about artificial optical stress, not about the sun. It was in no way about covering anyone who carries beer mugs - it was about employers being obliged to actively point out to employees the strain caused by UV radiation and to inform them about it. The hint here: >Bare upper bodies on the construction site, deep décolletés in the beer garden, lifeguards without covering.

is therefore complete nonsense.

One may wonder if such a regulation makes sense - but this silly fuss about something that was not the aim of the regulation is actually only embarrassing and ridiculous. More embarrassing and ridiculous than any EU regulation could ever be ...

First Fallout from Black-Yellow

Black-Yellow on the ideological crusade against wind energy:

The Federal Ministry for the Environment sees the initiative of the state government as a "frontal challenge" to wind energy. "This means that no more wind turbines may be built in NRW," a ministry spokesman told wdr.de on Tuesday. If the example of North Rhine-Westphalia were to be followed, Germany's climate protection targets would no longer be achievable. The CDU and FDP are fighting "for ideological reasons" against wind energy.

Well, of course, the Union has to diligently crawl up the energy monopolists' asses, so the fluttering of the wind rotors is a nuisance ...

All Just Stolen

CDU admits: Merkel copied from Reagan:

Yes, the closing statement by Angela Merkel, the Union's candidate for chancellor, in the TV duel with Chancellor Gerhard Schröder was based on a speech by former US President Ronald Reagan.

Well, well, she can't even come up with her own praise and boasting. Should someone like that become chancellor?

Django Gallery Status

Again news from my gallery project - it's making good progress, even if some of my latest stuff isn't directly visible. I did a lot of reworking in the code and a lot of admin interface changes. Things in the source that might be interesting for other djangonistas:

  • I still have a fully filesystem based gallery - but I added a database stored cache. So now when contents is pulled from the filesystem, the code directly checks with it's database cache and updates that accordingly. This led to a heavy rework of the code so that now actually all stuff is driven by model objects - the cache entries are just part of the django model. Makes code much easier and allows the next two changes.
  • I added an automatic sitemap for galleries. First versions traversed the filesystem, but now it just uses the database cache to draw a folder hierarchy with thumbnails.
  • I added RSS support. The main gallery selection references a RSS feed over all galleries and the folder and image views within a gallery reference a RSS feed only for images within that gallery. This makes use of the RSS framework of Django.
  • the view that showed gallery folders and images was reworked to make much more use of django-like stuff: instead of lazy closures that are passed in to the template, I now use custom templates that help to reduce the code of the view drastically (ok, the code is moved to the taglib, but that's much better decoupling than before).

The result: the gallery is much faster, I have RSS up and running and I have automatic sitemaps. The code itself is much easier as it is more model-driven - the former clash between picturefolder model stuff on the one side and FSObject instances on the other side ist gone - and cache maintenance is automatic. And the XMLRPC integration is much faster, too. All in all some very useful internal changes.

Other changes are in the management interface where you now not only have the AJAX-stuff to change object names and hidden state, but can do that from a filemanager, too. That filemanager will be extended for simple management functions like moving, deleting etc., too. It already is able to create new folders.

Sometimes the Debianistas Spin

From the response to a bug report by me about a completely wrong version of mod_perl 2:

I'm afraid you will be out of luck here, if I understand the issues correctly. The official release of mod_perl 2.0 never made it to Sarge, the 1.999.21-1 packages in Sarge is a pre-release. The problem was that shortly before mod perl2 went stable, the upstream developers decided to rename lots of things in the API, and Sarge shipped the old API. Thus, mod perl 2.0 as shipped with Sarge won't run in the rest of the world, and vice-versa. Also, the documentation will be confusing. [...] So, well, this isn't a good situation, but it is something we have to live with.

What? They must have lost their minds. Once again, for clarity: the mod_perl 2 version in Debian Sarge—the current stable Debian—is not compatible with the old mod_perl 1 version or the real mod_perl 2 version because it is a 1.99something with a quite different API. Applications based on it are not portable from the old version and not portable to the new version. Anyone who wants to work with Debian Sarge, Apache2, and mod_perl must first get a backport because the version included is simply completely wrong.

This is absurd. Sure, mod_perl 2 wasn't ready for release on time, but the version currently in Sarge is simply garbage. Instead of removing it, an intermediate version is included, making life difficult for anyone who wants to port mod_perl applications to Apache 2—and doubly so, because with the next release, they'll have to port again.

And then the knockout punch last night:

The only valid complaint in this bug report is the fact that we don't include pre-2.0 API docs in sarge. Debian makes absolutely no guarantees that the version of a package shipped in a stable release will match whatever the current API is on its upstream website.

Summary: we don't understand anything and insist on behaving like complete idiots. Instead of at least removing the junk release—which is also classified as "don't use" by upstream—the missing documentation is now listed as a wishlist bug.

Night of Museums in MĂĽnster

As every year, the long night of museums in MĂĽnster took place again. However, something must have happened compared to last year. Last year, the interest was indeed great, but it could still be described as quite bearable. In the museums, one could move through the rooms - albeit with more visitors than usual. Only the Picasso Museum was already overcrowded last year and was only allowed to enter in groups.

This time, that was unthinkable - the State Museum of Art and Culture is not exactly small. Nevertheless, one could no longer get into some rooms because of the sheer number of people - who then, with guided tours, turned into real visitor traffic jams, making entire parts of the museum inaccessible.

Absolutely crazy the whole thing. Real hordes of people moved through the city and blew the collective attack on the museums. Somehow slightly surreal the whole thing

Parser for Python-like configuration files

Philip J. Eby hacks again. This time, a parser for configuration languages whose syntax is based on Python. Particularly interesting: with the parser, you can beautifully build abstract languages that use Python for code in parts - you can convert Python blocks contained in it from the token form back into cleanly formatted and indented Python code. The parser, of course, knows all the edge cases of source formatting in Python and can handle them as well.

This is interesting because with Python, unfortunately, you don't have a macro language and therefore cannot directly map your own syntax extensions and languages with domain-specific syntax and semantics to Python - but you can build a translator for such DSLs via this parser and then convert them back into Python. Add a bit of import magic and you would have something like poor-mans-macros for Python ...

Priorities

I actually wanted to refrain from commenting on New Orleans - after all, one doesn't know what determines thinking more, the grief over the unnecessary victims or the anger at the bungling activities of the government there, but when I read something like Rogers Cadenhead: Go to the Back of the Bus Line I really feel sick. Because this is no longer just bungling, this is pure racism (and before I'm accused of anti-Americanism and other things again: look at the skin color of the majority of those who, for some reason, could not be evacuated from New Orleans).

It's simply disgusting. And now the religious right is coming along and blaming gays and abortion clinics for the hurricane.

And the President? He makes a detour to Biloxi and has the relief workers clear the exact spot he visits beforehand - and after the visit the relief workers disappear again. By the way, it was in the Tagesschau - the reporter herself could not quite believe what was going on ...

ID is utter nonsense

Intelligent Design is not science:

It stems from laziness and arrogance: "I'm a smart guy, and I can't understand how all this could have evolved. Therefore, it couldn't have evolved through evolution."

A very good (because honestly annoyed) article in Die Zeit about the nonsense of creationists who always want to force their brain farts into schools. A topic that should have been filed away since Darwin - and unfortunately is still stirred up by religious nutjobs.

It would be about time for the big churches to take a clear stance on the issue and declare the nutjobs for what they are - but they can't bring themselves to do that. After all, you can make a lot of money with simple answers to complex problems. And who cares about reality ...

MochiKit Tutorial Part 1

The first part of the MochiKit Tutorial is online. Very interesting reading - some of the points are quite thought-provoking. And MochiKit has already proven itself to me in real-world use - and yes, I almost exclusively use JSON in the process.

And they still run

Our little friends on Mars are still on their way. Spirit has now climbed a mountain and is enjoying the view of the landscape.

Alongside Cassini-Huygens, the Mars story with the Mars Explorer and the two sympathetic remote-controlled rovers is one of the most exciting space projects for me. Much more exciting than sending outdated Space Shuttles on boring routine missions with extended repair work ...

I would like a few more of the Mars kind.

Campaign contribution?

Achne, the exhibition is Schmarotzer in Bonn - and the Bundestag is now in Berlin ...

geocaching Status

4 caches found, 2 located but not retrieved due to muggles, 1 not found (but at least a tick). Not bad for a start ...

GEMA and the Internet

Again, it's a privately run site that has been caught this time for uploading game trailers and now has to pay GEMA fees for the background music.

And what about GEMA and the music industry? They continue to do their job and in doing so, they also trample over virtual corpses. Doesn't matter, it's just the internet. It's just virtually already convicted and indebted youth before entering professional life. And anyway, where would we end up if everyone just uploaded random videos online for fun...

But it's not just that - in my opinion, it goes far beyond that. Not only are people criminalized for trivial matters on absurd grounds, but ultimately, GEMA and the music industry (and don't even get me started on the artists - they're at the very end of the sausage-making process and the 5 euros they would get for the game trailer site could really make a difference) are making double and triple profits from exploitation rights - even if they are only marginally affected, as in the case of game trailers (for whose background music, by the way, the game manufacturer has usually already paid - if it is original game music).

Where is the right to quote within reasonable limits? There is such a right for written works - why doesn't something like this exist for music?

Maneuvering in Court

Just to summarize Pfahl's story once more. This was the accusation:

The former CSU politician and state secretary in the Kohl government is said to have received 3.8 million marks, or approximately two million euros in bribes from Schreiber for a tank deal with Saudi Arabia in 1991 and not declared it for tax purposes.

And this is the deal:

Pfahls and his defense reached an agreement with the court: For an admission of guilt at the beginning of the trial, in which the 62-year-old Pfahls admitted the payments from the arms lobbyist Karlheinz Schreiber, the defendant was promised a maximum sentence of two years and three months and the possibility of early release after serving half of the sentence.

Who else besides me has the impression that the higher the amounts involved, the more trivial the punishment? All are equal before the law? Forget it.

Although I seriously wonder why I expected anything different after Kohl got away with breaking his oath of office without major problems - and people accuse me of being a cynic - reality regularly surpasses me by far ...

Public Sector Non-Performance

Imagine an agency of the state government tasked with surveying the entire country. A sensible idea, after all, one must know where there is space and where there isn't, where rivers, houses, roads, railways, and plots of land are, and all the other things that are around.

Imagine further that this agency is naturally funded by tax money - sensible, since it is a service to society. The survey technicians working there are paid from the public purse and do what they do best - survey the area.

Imagine further that these data are also used for maps for private individuals. Commendable - even if the maps are significantly more expensive at almost 8 euros than other maps, they are based on much more precise data and are beautifully detailed at 1:25,000 - ideal as hiking maps.

Imagine further that this agency also operates an online service where you can zoom in on all maps - down to the scale of 1:1,000. Very nice, to take a closer look at the area in detail. Unfortunately, the window is very small and thus the overview is not really very good. In return, you can mix in aerial images.

Imagine further that this agency also provides the map data in digital form - with software only for Windows. That's bad. That's rarely stupid - Java has been around for 15 years, should also be known in such offices and agencies. Moreover, the DVD with its almost 50 euros is not exactly cheap (or rather, the 1:50,000 is not - the 1:25,000 are two DVDs, no idea about the price - probably double). And did I mention that they were so stupid to make it only for Windows?

Now imagine that the data on the Windows DVD are indeed based on a standard format (GeoTIFF - basically map material as TIFF with additional geo-data for the precise determination of the position of the graphic tiles). But on the Windows DVD, these data are encrypted - to prevent any user of a non-publicly-officially-approved operating system from accessing them. That's shit.

Now imagine that upon inquiry, this office informs you that of course you can also get the data in the standard format - for a measly 3 euros per square kilometer of map coverage. That is an audacity. If you imagine all that together, then you have the Landesvermessungsamt Nordrhein-Westfalen.

What do I pay my taxes for again? So that I can be screwed twice?

Music Label Heads Still Completely Clueless

They're no longer satisfied with their scams:

Too many of their own online music portals had failed and Apple's concept of direct binding to the iPod promised success. Meanwhile, iTunes has sold more than half a billion titles and the labels want a larger share of the pie. Currently, they receive only about 70 US cents from the 99 US cents per song.

It never occurs to these idiots to consider that their own trash shops failed, among other things, due to the absurd costs and even more absurd rights restrictions, and that the success of the iTunes Music Store lies precisely in its characteristics such as price and possibilities.

Sorry, but an industry led by such mentally substandard idiots deserves nothing less than to be mercilessly wiped out. Of course, it's a shame about the jobs and a shame for some musicians. But only when this music industry moloch has been organized into insignificance by its managers can music actually make a fresh start - and then perhaps become reasonable.

News from the Gallery project

News from my Django Gallery project: it's coming along nicely. If you want sample code for AJAX with Django or XML-RPC with Django - look into it's source. I implemented parts of the blogger API, metaWeblog API and MoveableType API - just enough so that Photon can post pictures to my gallery. AJAX is used for logged in users to change the title of pictures and folders by just clicking the title and for activating the toolbox on the backside of pictures. Additionally the gallery includes the usual PIL stuff like thumbnailing - I am especially proud of the flipped corner look for folder thumbnails Other stuff worth looking into might be the usage of lazy evaluation to push stuff into the template without precalculating it - it's only calculated when the template actually uses it. And interesting might be the abstraction of the filesystem based content - only the base path is stored in the database model, the rest of the gallery is in the filesystem (and can so be easily managed with FTP, SSH or directly on the unix shell).

Additionally you might look into it for handling of authentication - user registration isn't yet done, but will follow some day. As will comments and RSS - but I have to write that, first. And I am starting to write documentation - docstrings in the code and documentation pages in the wiki.

iTAN method not secure either

The iTANs (indicated TANs - as recently introduced by the Postbank) are also not the be-all and end-all against phishing attacks. The classic attack would simply be to redirect the user to their own site during phishing and then process the transaction with the bank in parallel with the user's inputs - but of course in a different form than shown to the user. Instead of simply requesting a TAN, the bank server is first contacted and the TAN required from there is then requested from the user. With this TAN, a booking can then be made problem-free while the user spends time on the supposed security update - or whatever the phishing attack pretended to be.

The RedTeam has compiled a scenario and spoken to the banks:

According to a survey by the RedTeam, the problem described was largely understood by the banks, but not taken very seriously. They wanted to continue to adhere to the presentation of secure iTANs. One bank argued that the attack would have to be very quick and take place within seven minutes. Another institution wanted to distance itself from its statements only after the first case of damage to a customer had occurred.

The same arrogant attitude that banks have always taken against abuse - instead of addressing the problems themselves or actively describing security issues and thus taking customer maturity seriously - is being dismissed and lied about. And for such nonsense, we then have to pay booking fees.

JavaScript + CSS Box Model Puzzle

So, I have this HTML table. All the TDs are centered with their content using text-align: center. In these TDs, I have two DIVs displayed on top of each other. The top one contains an IMG, and the bottom one just contains some text. Both contents are also centered. Now, using JavaScript DOM functions, I swap the top DIV with the IMG inside it with another DIV that contains two DIVs, which in turn contain text. The texts in the inner DIVs of the new DIV are centered. However, the DIV itself, which contains the inner DIVs, is no longer centered relative to the encompassing TD. The problem is reproducible with Safari and Camino - somehow the "align content center" property is lost for the newly added elements. I've tried all possible CSS attributes and experimented with everything (e.g., checking if the old DIV with the IMG inside or the IMG itself has a value for left), but for some reason, it just won't work.

The background for all this: when you click on an icon, an IMG should be completely replaced with a DIV of the same size, containing some switches with which properties of the IMG can be changed. Basically, something similar to the widgets in Dashboard - configuration on the "back" of an image.

At the moment, I'm only taking over the height of the image, so the vertical alignment is perfect. However, the horizontal alignment remains dynamic. If I have two cells on top of each other and both switch to configuration, the table changes in width. This causes ugly jerking. But I don't want to statically expand the TDs, otherwise the layout would no longer dynamically adjust to the browser width.

Oh, and all this has to work with Safari, it's finally my main browser.

Update: in the comments, there are links to test pages with which you can see the effect.

Karlsruhe clears the way for new elections

Am I the only one, or does anyone else feel like Karlsruhe wanted to avoid the discussion about the legitimacy of the new elections? The justifications read as if a blank check has now been issued for the Chancellor and the President - if the two agree, the Bundestag is gone in a flash. An allegedly bad prognosis and the consent to it are enough ...

Why do we even have rules for the dissolution of the Bundestag in the Basic Law if the Constitutional Court apparently doesn't care much anymore?

JavaScript and the escape() Function

Note to self: escape() in JavaScript is only suitable for latin-1 - a utf-8 string with special characters sends these as latin-1 characters over the line. Pretty stupid when you're tinkering with a form via Ajax and then sending a value to a function in the backend that actually expects utf-8. encodeURIComponent is the answer, not escape.

MochiKit - First Experiences

I had already briefly mentioned MochiKit – A lightweight Javascript library. I used it at viele-bunte-bilder.de (offline since 2007) (so that the owner of a gallery could change the image names and folder names). Pretty brilliant small library for JavaScript. Makes working with JavaScript much more pleasant.

Armstrong EPO-doped in first Tour victory?

Apparently there is evidence that Armstrong doped during his first Tour de France victory:

In six urine samples taken from Armstrong during the 1999 Tour de France, doping researchers found EPO in tests conducted for scientific purposes five years later. Dr. Jacques de Ceaurriz, the director of the laboratory that conducted these tests, confirmed on Tuesday a corresponding report in the Tuesday edition of the sports newspaper L'Equipe.

A pretty big deal, all of this. And it doesn't look like this time it's just unfounded allegations.

Is Aldag quitting?

Oh man: Rolf Aldag ends his 15-year career as a professional cyclist at the end of the season. It's not that simple. I liked the rumor version - where he leaves with Zabel to Domina Milka - better. Okay, I wish him a good retirement and maybe we'll get to see him commentating on bike races more often, because he can definitely do it more competently than the sleeping pills of the ARD and ZDF sports editorial teams, but somehow I will miss him as a rider.

Canon EOS 5D, full-frame 12.8 megapixel

Well, the rumors were spot on regarding the Canon EOS 5D - unfortunately also regarding the price. A few hundred euros less would have been nicer. The technical specifications still sound great even the second time around. Now I just need to somehow convince my bank account to take on the right sign and change color.

Poor Jörg Jaksche - again

Oh man, another breakdown on the stage in the final climb and then someone snatching the stage victory from him again, even though he fought back after the breakdown. Somehow, it just isn't working out with a stage victory for him. Really a shame, because he's impressively fighting at these extremely steep mountain finishes.

Also impressive: Jan Ullrich lost 30 seconds to Levi Leipheimer. That's already a significantly better cushion for Leipheimer for the time trial. In the Tour, it was 2:50 over 55 kilometers - in this 33-kilometer race at the Deutschland Tour, this could potentially save Leipheimer's overall victory, which he was able to extend to a 1:29 lead today.

Now it will be shown in the time trial how strong Leipheimer is - he can actually do it, especially when he's in good form. And that seems to be the case at the moment. On the other hand, Jan Ullrich is an absolutely outstanding time trialist, so everything is definitely still up in the air.

DjangoGallery - sample app with sample installation

Mal wieder englisch, da auch fĂĽr #django interessant I have uploaded the source and made available the repository and a trac instance for my django projects. The first one that's there is the DjangoGallery - that's what I am using at viele-bunte-bilder.de. I have written a first take at an installation instruction that shows how to get the gallery running on your own site - you could even integrate it into your own project (although you will have to do some minor source changes - mostly replacing the projectname "gallery" by whatever your project is called).

The application isn't fully done, yet. There are many plans on how to extend it, as it will be my main motiviation to remove all other gallery software I am running (I already replaced PHP Gallery and now I am targeting my old mod_perl stuff and last one will be attacking my Wordpress based gallery), so be warned that it will change over time.

If you find bugs, feel free to file tickets. You can file enhancement wishes, too - but since the main target of this project will be to replace my own other gallery projects, it's doubtfull that I will do much work besides what is needed to reach that goal. At least for now - there's no limit to what can be done to the code after I phased out all PHP and Perl code

Since 2007 these links are non-functional, so I removed them.

Competence, Incompetence, Incontinence?

No idea what it is, but I find it cute to appoint someone to a competence team whose ideas are not in line with the party's own program. I mean, decent social democrats usually wait with the dismantling of their experts until these at least had the chance to pretend to understand their job, but what the Union's Kauder is doing here can only be described as an accelerant

Post 5000

Wow. This is seriously the 5000th post in the database.

Amazed face

first Django application live

So, my first Django application is live - not finished yet, but at the moment already so good that it's better than the old PHP mess that was running before. And it's about my image gallery at viele-bunte-bilder.de. At the moment there is user registration and everything related to it - but I'll probably implement that later. Or maybe not. Let's see.

In any case, it's already quite nice - I can upload pictures directly from iPhoto again (which was the most important advantage of the old gallery software) and the files are in the filesystem, not in a database - which was also quite an important point.

The software itself is of course available - anyone who wants to browse, I have set up a Trac instance with my Django experiments.

Since 2007 nothing has been online.

ObjectiveCLIPS

Way cool: Objective CLIPS is a new development environment for OS X. From the description:

Using Objective C runtime introspection, CLIPS, and FScript, it is possible to write intelligent Cocoa applications. Any Objective C object can be asserted as a fact in CLIPS, however, CoreData provides an additional meta model along with object persistence.

CLIPS is an expert system environment that is based on a Lisp dialect and enables the management of rules and facts, as well as reasoning about them. FScript is a scripting language inspired by Smalltalk that works directly with the ObjectiveC classes in OS X. Both together should enable pretty cool things, especially since databases and documents can also be easily created with CoreData. And both languages (CLIPS and FScript) I found quite interesting in my experiments with them - CLIPS was even used by me for a longer time as a "Lisp replacement", because it is indeed a rather old-fashioned Lisp, but is equipped with powerful additional abstraction possibilities.

RSS 3 - twice

Again someone who thinks they can create a great new format: RSS 3.0 - and that someone is too stupid to google first. Because otherwise they would have stumbled upon RSS 3.0 and maybe thought about it.

Oh well, thinking isn't one of the usual activities of great inventors of syndication formats, as we already noticed in the discussion around Atom. I'm still convinced that all syndication formats are a large-scale net psychological test.

Heise also has something about it. And just like Rogers Cadenhead - who is on the RSS Advisory Board.

SHA-1 is going down the drain

In any case, if the 2^63 attack against SHA-1 that was just announced hits. Now, the first reference implementations will probably be targeted. 2^63 is quite crackable with today's computing power, there are already some initial experiences. And thus, it is probably only a matter of time before, similar to MD5, hash collisions for real documents can be produced. It's quite strange to see how the field has changed in terms of the computing power that can be brought to bear.

1&1 is acting up

Now there's a forced redirect:

When customers of the provider 1&1 in Karlsruhe establish a new DSL connection and then start the browser, they are now always shown the 1&1 portal.

Great. And if these first requests come from some scripts of a server at the DSL connection, the scripts will fail. Just because 1&1 had another rarely stupid idea. And we have to explain to the customers again why something obscure doesn't work - and all of this just for marketing nonsense.

The world is ending in 2029

Because the sky will fall on our heads. Which is a good thing, because in 2037 the Unix epoch will expire and all computers will go crazy. And so we are spared the chaos.

Oh, and whoever believes all this, I have a very nice bridge to sell ...

CRUD with Django

Create, Read, Update, Delete - the standard functions of classic interfaces - can be easily assembled with Django. For this, there are Generic Views. On Postneo there is now a CRUD Tutorial, which shows how simple such interfaces can be put together with Django.

London: Doubts about the police version in the Menezes case

There are legitimate doubts about the police version in the Menezes case in London:

A surveillance video shows that the 27-year-old was wearing a light denim jacket and did not behave suspiciously in the subway station, the broadcaster reported. He calmly entered the station, accepted a free newspaper, and took the elevator to the platform. Only there did Menezes run to a train and take a seat in a carriage. A witness also stated that the trained electrician was overpowered by an officer. Shortly afterward, police officers shot Menezes multiple times in the head. An autopsy revealed that the body had seven headshots and one entry wound in the shoulder. However, the police had fired three more shots whose projectiles had not yet been found, ITV continued.

And how do all the shoot-to-kill advocates explain this away now? So they don't have to think about the madness of their stance?

Something interesting in Rails

Finally an application in Ruby on Rails that goes beyond the usual example applications - and is not just a weblog or a totally pointless to-do list management or something similar: VitalSource is an iTunes-like application for books with a corresponding backend and a frontend also based on Rails (but integrated into the application):

Apparently their backend applications have been running Rails for a while. But they've recently released their client software, and it runs Rails as well. Except... you won't see it running in a conventional browser. As the picture shows, the Rails app runs embedded within the client executable: in the case of the Mac client it uses WebKit to render the responses from the Rails app.

I was already fed up with all the Rails applications - which all sounded like textbook exercises.

Poor Jörg Jaksche

Also honest. Someone snatches the stage victory from him at the finish line. Sorry, but sometimes cycling is really unfair. Too bad - I would have given today's stage victory to Jörg Jaksche, he really kept attacking. Twice less looking back and maybe he would have won after all.

Living Data

Funny title, isn't it? Well, I just noticed something while dealing with web frameworks and other applications, specifically in the Ruby and Python environments. Namely, the way mini-data is stored and how configuration data is handled, for example.

In the Java environment, there is an inflation of XML mini-languages - mountains of dead data. Dead because this data only exists in XML format and can only be processed and modified using XML tools. For example, if I have constantly repeating or algorithmically describable configuration blocks (e.g., a mountain of quite similar-looking URL patterns for a web framework), I can only generate these using XML tools - e.g., generate them from simpler formats using XSLT. Or I write small tools for this.

In Ruby, the situation is similar - only that instead of XML, YAML is used here. Ultimately, however, this is not better - the configuration is still a dead file.

But both in the Python environment and in various other dynamic languages, there is a good alternative to this: just use a module in your programming language. For example, Python modules live - if the structure is complex but partially repetitive - simply write a small Python function that helps with the dynamic creation of the config. If the config should partially come from database contents - simply write a Python function that reads this data from the DB at runtime and mixes it into the config. Living configuration data, after all.

Of course, security issues come into play here - we don't want to repeat the PHP mistake with the eternal eval. What is urgently necessary for this would be a clean sandbox for such modules. Unfortunately, there is a massive hole in the implementation right there in Python. There were bytecode hacks in the past, which were also revived - but these are just hacks. The method of building a pseudo-sandbox using restricted imports and proxy objects, as Zope does, is also not the be-all and end-all.

Perl offers a very clean method here - as is usual for all security features in Perl, this is of course used by almost no project - to regulate down to the smallest detail what the code in such a sandbox is allowed to do - and thus a configuration via Perl module is definitely better secured than in languages without such a concept.

Java itself, of course, has a pretty sophisticated security management system - necessarily, as it is also supposed to run in browsers with very restricted rights. This security model is also usable for applications and could be used, for example, for servlets or Java configs - especially since you can also easily translate files at runtime and load them dynamically with Java. Now explain to me why the Java people are so fixated on XML when they have the best foundations for secure living data ...

We will ignore the safe model of PHP here, because it is a soda-or-seltzer model - either every code runs under safemode, or none at all. What we would need is a selective activation of different security classes for a single code block or module import (ok, PHP also doesn't have module imports, only includes - I say, we just ignore it).

So far, you can only work with living configurations in Python if you are sure that the configurations are only edited by users without malicious intent. Django, for example, only uses living configurations - it would therefore be a pretty stupid idea to make the configuration files editable via the web for centrally hosted applications.

We urgently need a clean sandbox for Python. I even believe that this would be a more important subproject than the various syntactic extensions that are repeatedly addressed.

wxWindows now also for Common Lisp

wxCL provides Common Lisp libraries for using the brilliant wxWindows GUI library. Very nice - I have already appreciated wxWindows in its Python incarnation, and in Scheme (via DrScheme) it is also very helpful. Now Common Lispers can use it too. I know that in Common Lisp, of course, CLIM (today often in the form of McCLIM) is the toolkit of choice, especially since it is much more powerful than wxWindows. But still, it's nice to have a cross-platform GUI library, especially because it is available for more than one programming language.

the strange tendency of PHP programmers to eval

Vulnerabilities in PHP modules endanger (once again) numerous web applications - and once again it's XML-RPC. They are still using eval - and that's for evaluating tags. Seriously? Sorry, folks, but this is just ridiculous - eval has already blown up in your face, why weren't all those calls removed back then? Or at least properly secured?

And people wonder why I don't have much faith in PHP software ...

Lazy Posts in WordPress

The new Wordpress 1.5.2 should finally fix the slow posting - caused by pinging - by moving the pinging to the shutdown, i.e. after the actual request-response chain. In German: with 1.5.2, pinging should no longer cause an eternal wait on the browser. It would be very nice if that actually works.

Since there are also security fixes included, an upgrade is generally sensible. Although WordPress, for a PHP application, functions surprisingly stably - but still, there are undoubtedly one or two skeletons in the closet.

Update: well, it hasn't really gotten faster when posting ...

Turn off spotlight on removable drive

sudo mdutil -i off -E /Volumes/VOLNAME/ should disable Spotlight on a volume and discard the index. Hopefully - it's annoying when my backup drives are supposed to be indexed every time. Or when the found applications appear in the Open With lists, even if the drive is not connected at all ...