perl

Holy Smokes, Per6 is officially out!

Quelle: The Night Larry Wall Unveiled Perl 6 | 10 Zen Monkeys

Mojolicious - Perl real-time web framework. You had one problem, you took Perl. Now you have two problems and a bunch of sharp brackets to cut yourself on. Jokes aside: nice to see that Perl is not only still active, but also actively modern in the web environment. After all, Perl once set the standard in that area.

Mojolicious - Perl real-time web framework. Looks quite interesting, simply because it gives a rather lean impression and does not require too many Perl peculiarities. Of course, you can also have this with Ruby or Python, microframeworks are not extremely exciting, but there are still people who work with Perl.

PerlDancer - The easiest way to write web applications with Perl. To complement my collection of Sinatra-inspired microframeworks for web applications, here's one in Perl. Not that I would necessarily want to use Perl again - it's rather listed here for completeness.

Mail::RFC822::Address - "The grammar described in RFC 822 is suprisingly complex. Implementing validation with regular expressions somewhat pushes the limits of what it is sensible to do with regular expressions, although Perl copes well"

Acme::Don't - Perl people are weird!

Redhat perl. What a tragedy. - those who use Redhat: compile Perl yourself. Redhat seems to have a really big problem here.

Sleep - Java Scripting Language - if anyone really misses Perl in the Java world, they could check out this project. Linked purely for nostalgic reasons, as I used to rely on Perl for a few years.

Perlbal - a balancing proxy server focused on performance. In Perl. Tons of features that make it easy to compose a single frontend from many backend systems.

Stopping spam with the Anti-Spam-SMTP-Proxy (ASSP) - hmm. Transparent SMTP proxy. Unfortunately in Perl - my experiences in that direction were rather negative so far.

Ancient Languages: Perl - already old, but simply great. A bitter account with Larry Wall and Perl.

wikiCalc - a mixture of spreadsheet and wiki. Strange. By Mr. Visicalc himself. Currently only Windows-compatible despite Perl. Well, spreadsheets fit for me with Perl and Windows - all shady stuff.

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.

Crypt::PasswdMD5 is a Perl module that hashes MD5 passwords the same way Linux and Solaris do.

Higher-Order Perl is a book (currently in paper form, but it is supposed to be freely available online soon) that deals with higher-order functions and Perl - could be quite interesting, Perl offers a lot of features hidden under all those curly braces and other special characters ...

PerlPad is a service for Mac OS X that allows you to execute Perl code in any Cocoa text window and collect the output, or send selected text through a Perl script.

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.

Pugs - pugscode is a Perl6 implementation in Haskell. Even crazier: the entire project is primarily coordinated in an IRC chat and the collaborative work is done with SubEthaEdit. Is this already Nirvana?

And for those who don't like or can't use Lisp, perhaps SAJAX - Simple Ajax Toolkit by ModernMethod - XMLHTTPRequest Toolkit for PHP can help, which supports not only PHP but also Io, Lua, Perl, Python, and Ruby.

Aranha server monitor

The freshmeat.net: Aranha server monitor sounds exactly like what I programmed under Servermonitoring. However, I don't use XML-RPC, but SOAP. And I didn't provide it with a XUL interface, but a web interface. And I don't use Perl, but Python. Strange.

surprised face

Mine has been running in the company for ages and faithfully performs its duty in monitoring our server zoo.

pirate (python on parrot) - Ansätze eines Python Compilers für Parrot

Stopping spam with the Anti-Spam-SMTP-Proxy (ASSP) - SMTP Proxy mit Bayesian Filtering, der hier ist ohne Teergrube

Maypole / Apache::MVC - Perl Framework zur Erstellung von Webapplikationen

Daring Fireball: Markdown Syntax Documentation - Interessante Textumsetzung nach XHTML für PHP und Perl - ähnlich zu reStructured Text

Index of /~erich/bricolage - Debian Pakete für Bricolage

The Mason Book - Bricolage Anleitung

WAD - Crash Debugger für Script Sprachen (besonders bei segfault nützlich)

Nyetwork Wiki: MiniWiki - Einfaches Wiki als mod_perl Modul für Apache

Perl Monks - The Monastery Gates - Tipps und Tricks rund um Perlprogrammierung