WPHP - Call PHP from Python via a FastCGI server. This could, for example, integrate PHP into Django.
programmierung - 18.2.2006 - 28.7.2006
TLS Lite - a nice small Python-only lib for SSL, TLS and low-level X509 handling. Quite useful for quick-off projects and for larger systems it integrates with other PKI libraries for Python.
CLPython - an implementation of Python in Common Lisp - ok, that's already crazy.
Exploring Cocoa with F-Script - interesting article about the object system of OS X
Python Cheatsheet : saprfc 0.08 - another SAP-RFC module for Python.
DrScheme - the best Scheme implementation in the world now has a new version 350. This version includes, among other changes, a Just-in-Time-Compiler for Intel and PPC.
Generic Table Relations for Django. Very interesting, this makes things like tags in data models much easier. I should be able to get rid of a lot of stuff from my Stuff-Library with this.
Allegro Common Lisp Express - the current free (as in free beer) version 8.0 of it is out now.
Automatic Pickle Serialization and Deserialization with PostgreSQL - very interesting, automatic pickle/unpickle when using PsycoPG2.
StepTalk(GNU Scripting Framework) - now available in a version for Mac OS X!
The source code for UCSD-Pascal is free - for fans of old languages and old operating systems. Oh man, that was the first Pascal environment I hacked on at school almost 24 years ago ...
Feedjack - A Django+Python Powered Feed Aggregator (Planet) - could perhaps be used as a replacement for the rather outdated WordPress at metaowl.de?
PL/1 for GCC - for fans of old languages.
PyCells and peak.events - Phillip J. Eby on Cells and what they mean for event-oriented programming. Particularly interesting, as one of the projects in the Google Summer of Code is a Python implementation of the Cell concept.
Are you generic? - Wilson Miner describes how he, as a non-programmer, can create applications himself without programmer assistance using Django and its simple generic view functions.
Debunking Linus's Latest - Shapiro also has a few thoughts to share about Linus's latest misstep.
Tanenbaum-Torvalds debate, Part II - Tanenbaum's counterarguments to Linus' Microkernel-stupid claim ...
HashCaml - an extension of Objective Caml, which allows type-safe data to be serialized and deserialized. Basis for example for remote function calls.
Django for non-programmers - Django from a web designer's perspective.
Django Weblog "magic-removal" branch merged - gaaaah. Work. Crap.
Workbench: Settlement Reached with Dave Winer - and now Dave Winer has lost his last advocate that one could still take seriously. Well. Will Dave now taste his own medicine? So far, he was the one who has put others down in blogs ...
Oberon Script. A Lightweight Compiler and Runtime System for the Web - an Oberon compiler in JavaScript. Now that's weird.
Metasploit: Exploit Development: GroupWise Messenger Server - those who still convince themselves that the time from the discovery of a software vulnerability to an exploit is correspondingly long: forget it. Here someone shows an example development of a complete exploit one day after a hole in the GroupWise Messenger Server became known ...
Virtual Worlds and Attack Scenarios
What do you get when you have virtual worlds with scriptable objects? Cracker attacks, of course. In this case, a user in Second Life built objects that, via script, produce further objects. This is a classic attack scenario in such worlds - overloading servers through high load, i.e., a classic DOS from within. What was interesting about this attack was that these objects catapulted every avatar a few million meters into the air - possibly to hinder cleanup efforts.
Cleanup efforts? Yes. The system of Second Life is a virtual world with many scripted objects - so you can't just throw everything away, as this would destroy the users' content. Instead, all regions (in principle, a region is a server in a large server farm) that were attacked had to be cleaned of exactly the affected objects. To do this, the Lindens (the employees of the operator) first approached these objects inworld (i.e., within the simulation environment) to examine them. Presumably, the operator will have tools for mass cleanup of malicious objects, but nevertheless, the entire work took several hours!
Well, one might say that this is trivial - after all, it's just a virtual world on a server cluster, nothing more. But Second Life is more - among other things, it is a micropayment system. And a lot of money is transacted there - thousands of US dollars per hour (and not just to the operator, but also among the users themselves!). There is therefore direct economic damage from the downtime. Not to mention the interactions of users in the system and events taking place - for example, on that evening, there were two major openings of new clubs with live music. The musicians were completely disconnected from the system by the events, as they no longer received any feedback, they did not know whether they were still live or not (although the streams usually continued to run) and of course, a lot of people's party was ruined. And the club owners certainly had a different idea of their opening party.
All in all, of course, predictable - because any system with influence possibilities will be misused by people, even if it is out of sheer malice - but nevertheless extremely annoying.
Get A-Life: Core Wars / Tierra - a researcher lets a few Core-Wars algorithms loose in a digital primordial soup with simple mutation and simple death - and finds evolution and parasites shortly thereafter.
Bundesrat considers software patents - and who cares about the Mittelstand and open source software. Certainly not the Prolethicians in Düsseldorf ...
Eiffel development environment becomes Open Source - yes, there was another object-oriented language.
Python 3000 - Adaptation or Generic Functions?
Python 3000 - Adaptation or Generic Functions? Wow. GvR sees the light! Generic functions in Python 3000! Hell freezes over, third time ...
python-constraint - had I already seen this? Doesn't matter, there's a new link and everything is repeated on TV anyway. Constraint solver in Python. Could definitely be interesting for projects.
Merquery, Text Indexing and Search with a Focus - a full-text search engine in Python specifically for RAD frameworks? Let's see what comes out of this.
The Spider of Doom - ouch. Destructive GET and "security" through JavaScript, cookies, and redirects. You have only yourself to blame, one might say.
Naked Objects in Virtual Life
Stupid title, I know. But that's exactly what the Linden Script Language (LSL) is - the programming language used to control objects in Second Life. Every virtual object is also a program object with its own methods that react to external events. Somehow, I can imagine that Second Life would be well suited for introducing event-oriented programming, as you can directly interact with the objects.
The physics simulation in the game is also exciting - because scripts also have access to it. This way, it directly offers an experimental platform for virtual robotics experiments and the visualization of simulations (or even directly experiential visual simulations - a complete virtual world).
One does wonder why a game developer has such ideas, and why many simulation environments for "serious" research come across as so boring. Perhaps scientists should make contact with game designers to liven up classrooms and labs a bit? Dealing with such topics is certainly much easier to convey in a playful way, especially because students might actually listen then ...
Gosling Didn’t Get The Memo - and gets wonderfully roasted. Comment and link collection on the latest "they're just scripting languages" comment by James Gosling.
Waterfall 2006 - International Conference on Sequential Development - the Waterfall development model is back!
MP3 Python Module - simple lib for accessing MP3 information.
aspectes.tigris.org - Aspect Oriented Programming for JavaScript.
BranchBasedDevelopment - interesting list of points on how to work with branches in Subversion in a meaningful way.
Divmod - a whole series of very interesting Python projects. Of course, also its own web framework and its own ORM, but also a few smaller, interesting things like, for example, a Bayesian Classifier.
Screencast about Web Applications
Steve from JPL has provided a comparison of various web frameworks as a video. Quite nice, even if he of course simplifies some things quite a bit. Warning: the video is very large (300 MB) and J2EE comes off badly.
Regarding the Django comments (after all, I am a Django contributor): I18N has been in the standard for a long time, but since Django moves very quickly, you can't expect it to take everything into account. And with the templates, he is not dependent on the Django template language, he can also use ZPT (the same ones as in Plone).
But the central point comes across well: forget J2EE, learn something else. And in this case, the decision between Plone, Rails, TurboGears, or Django is probably completely irrelevant - the main thing is that you learn something that you also enjoy programming with.
Tail Call Optimization in Python
At the beginning of the month, I was still annoyed that GvR doesn't want tail-call optimization in Python - because he thinks that this is a feature that cannot have a simple interface. On [Lambda the Ultimate] there is also a comment on this - because logically, this statement by GvR has led to some amusement in the Lisp community. Especially cute about this: there is a solution to optimize tail calls via decorator - where Python simply fiddles around in the stack (thanks to stack introspection, this works quite well). So much for the topic of Rube Goldberg Device - the decorator is extremely compact, there is really not much complexity contained. Of course, the optimization is not really optimal - it avoids stack overflow, but uses exception handling to avoid function calls, which then affects performance a bit. But for the simple transfer of recursive algorithms, this can still be quite useful.
And why is something like this not built directly into Python as a better, more efficient solution? Python 2.5 gets conditional expressions inherited from Perl (value if condition else othervalue), but not something like a simple decorator to optimize certain function calls?
Live Thumbnails: Watch 'em Grow - interesting article about creating large images directly from thumbnails without changing pages. However, due to the invented attributes, it is not valid HTML4.
The Little Calculist: JavaScript language level - JavaScript as a language directly supported in DrScheme. This gives the brilliant tools of DrScheme for editing JavaScript as well.
RubyForge: Ruby Port to Nokia 770 Internet Tablet: Project Info - Ruby is now also available on the Nokia 770. With Python and TCL, that's quite a number of on-board programming languages.
Scsh PhotoBase - is a photo management software like iPhoto, but written in Scheme and for use over the web. So far only an announcement, but the source will definitely be released.
Clim-Desktop project - first approaches for an integrated Common Lisp development environment based on the free CLIM implementation.
Migrate apps from Internet Explorer to Mozilla - interesting article that covers a series of pitfalls when switching between IE and Mozilla.
Snowball - finds word stems in various languages. Algorithms in a specially developed language. Practical for classic word lists.
Stéphane Ducasse :: Free Online Books - a whole series of free books about Smalltalk. Some are only scanned, some are real text PDFs. A whole series of classics are included.
Cocoa for Bracket Fetishists
There is actually an Objective-C Bridge for the second best Scheme in the world. And I hadn't seen it before. It looks very interesting, the author has a nice tutorial online where he controls his iTunes with Scheme. And a lot of other source samples for Chicken-Scheme, including the obligatory currency converter. However, you need a newer Chicken-Scheme version (i.e., a current snapshot), otherwise the -objc switch is not supported.
If they keep being this productive, Chicken will soon displace the best Scheme from its place.
The installation is quite hairy, so here are some notes on how I did it:
- Chicken Scheme 2.3 is the minimum
- Install libffi from Darwinports: sudo port install libffi
- Install objc Egg:
sudo chicken-setup -c "-I/opt/local/include -L/opt/local/lib" objc
Gauche:ObjectiveCBridge - there is also an Objective-C Bridge for Gauche Scheme. However, with fewer sophisticated examples.