programmierung - 28.3.2003 - 27.6.2003

if SCO isn't right, someone else will be

Once again, one of those tedious discussions about how open-source projects would supposedly be notoriously bad at controlling license compliance for code. Come on? This is getting annoying. Why do people keep opening their mouths about this without engaging their brains?

So first of all, there's hardly any software sector that pays closer attention to licenses than the open-source sector. If only because of the various incompatible open-source licenses (every developer will eventually run into license compatibility issues with the GPL - those discussions keep coming up). Also, in the open-source sector, many projects are explicitly careful to ensure that no proprietary content ends up in the source code - see for example the Samba project or Wine. Both manage to exist alongside Microsoft (and Microsoft's legal department is no slouch). And what really gets me about this whole thing: why do these people always believe that proprietary, closed software development doesn't steal foreign source code? That assumption is absurd. In the area of open-source projects, anyone can read the source code - including companies. Everyone can check whether foreign source is being used. In the proprietary sector, however, that's not possible. Here, costly court proceedings are needed to achieve source code reviews, and proof is not exactly easy. So please don't just parrot the FUD from companies like SCO, please use your head first and think about it. And check the facts.

At Cincom Smalltalk Blog - Smalltalk with Rants there's the original article.

COW - Programming for Bovines

Moo!

Here's the original article.

Syndication

I'll skip the usual talk about stop energy just because someone blogs (sorry, blocks) about an innovation and instead explain why I think this undertaking makes sense.

RSS is a format that has been developed in many different directions by various people. There are two main streams. The RDF-based formats with their peak in RSS 1.0, with design-by-company and sometimes even by-committee. And the keep-it-far-too-simple stream from Dave Winer with its peak in RSS 2.0, which attempts to marry RSS and RDF, but isn't really coherent either (for instance, lately Dave labels anything that uses namespaces as "funky RSS" - I hate funk!).

So what can a new format bring? Possibly nothing. That's fine too, then at least you know (and have it documented for reference) that RSS in its existing forms is good enough.

Or you recognize that there are weaknesses and errors in the existing pool of formats. If that's the case, there are two options again:

The weaknesses can be fixed (for example through RSS 1.0 with full RDF basis or with RSS 2.0 and a few additional namespaces). This will certainly be done - because not everyone wants to jump on a new format.

The alternative - the new format - also has its merits: it's being developed using community techniques. A wiki where everyone can contribute their two cents. So it can become quite an interesting format with many good ideas. Why shouldn't you implement it then? It would be a shame if all those ideas went to waste...

At the very least though, it's a wonderful network-psychological experiment. A bunch of pretty far-out freaks of various stripes trying to collaborate together in a wiki (remember: anyone can edit and change anything!). Hey, that's practically screaming out for chips and cola and comfortable kicking back and reading along

Devil's grin

.

At Der Schockwellenreiter you can find the original article.

Charming Python: Using combinatorial functions in the itertools module

A rather interesting article about the new functional features in itertools in Python 2.3. With itertools you can apply a programming technique that has been known in Common Lisp for quite some time as Series and is best described as lazy sequences: sequences of objects that are created on demand only as far as necessary. This opens up a whole range of very interesting techniques that can make programs much more readable.

Here is the original article.

MacOSX Packages for Mozart 1.2.5

Hey, Mozart and Oz are also available for OS X. Ok, not directly for OS X, but only as normal Unix ports for OS X - the GUI continues to be based on GTK and thus on X11. But at least you can run it on the Mac. There's also an interesting book about programming concepts, which describes them using Mozart and Oz. Here's the original article.

Vim 6: A Great Linux Outliner

If you're looking for an outliner for Linux and like VI, you should check out the VIM Outliner. It's a macro package for VIM 6 that transforms it into an outliner. Unfortunately, it still has some significant limitations, such as not saving which text areas are collapsed and which are not. But basically it's quite usable. At least it's still better than the alternatives I've found so far. Besides, you don't have to boot VIM like you do with Emacs.

Here's the original article.

Swindle - CLOS and more for DrScheme

This is really great: an OO extension for DrScheme built on Tiny-CLOS (where object-oriented here means the typical object+functional mix from CLOS — not those minimal OO systems from typical class-based languages). Very nice. And a large pile of additional tools and utilities on top. Basically you could say the programmer tried to implement large parts of Common Lisp in DrScheme. Nice, since I'm an old CL fan and Scheme fan, here I get the best of both worlds.

Unfortunately the system hasn't been extended to the GUI system, which still exists in the more classical OO form from DrScheme. A CLOS wrapper around it (or perhaps something like a tiny CLIM? Yeah, yeah, I'll be quiet, but one is allowed to dream) wouldn't be bad either.

Somehow DrScheme reminds me fatally of my nice Xerox 1186-compatible Lisp machines with their mix of Interlisp-D and Common Lisp in the operating system. There too the basic stuff is implemented in Interlisp-D (in DrScheme it's Scheme) and then Common Lisp is layered on top (in DrScheme then Swindle). Very nice approach.

And one more funny thing: a small graphical tool that visualizes lambda calculus. Programming with colored blocks to make things clear.

I think I like DrScheme

Here's the original article.

XchemeRPC

Should work with DrScheme 200 and newer. Of course it doesn't work with 204, which I have running. So it's back down to the software cellar again and time to fix the problems with a pipe wrench.

Here you can find the original article.

DrScheme

A very nice Scheme programming environment whose main goal is learning programming itself - building on Scheme language scopes of varying complexity. The whole thing is well-oriented to what is necessary at each respective level. In addition, a large collection of libraries with useful function definitions, a graphical programming environment, and a corresponding library for your own programs, many useful developer tools (and some optionally installable developer tools that you can't get elsewhere), and the best part: now also runs on OS X. Nice.

Here you can find the original article.

Looking to do web stuff with Python?

Notizgeblogged, in the Web Framework Shootout it's about comparing various web frameworks for Python. Quite interesting, and maybe I can steal one or another idea for the Python Desktop Server or the Python Community Server. At Richard's stuff : /python you can find the original article.

Text composition systems as you shouldn't do them?

I'm indeed a Lisp fan. I love Lisp-like languages and, when possible, only use languages that offer at least a certain basic set of features that Lisp implementations also provide. But this goes too far: a typesetting system with the structure of TeX, but with Lisp syntax.

Somehow this reminds me of the problems I have with Common Lisp: I like the language, I find most of its features brilliant to divine and I certainly have usable implementations to choose from. I don't use it anyway: I would simply have to write too much text. The identifiers are as long as COBOL syntax elements. Ugh. Similar with Scribe: while the identifiers are short, I have to write all the clutter around it. And I get those wonderful blah-blubb-fasel-blubber identifiers for various control purposes. Who wants to write all that crap? What good is a typesetting system where I have to write more markup than I would write in plain HTML? If I wanted to write that much non-content, I could just use DocBook instead...

Here's the original article.

Checkpointed Object Database

Sounds quite interesting, a database with pseudo-transparent access from Python. Objects are automatically read in and automatically written when changes occur. Objects are automatically added to the database when they are referenced by an already stored object. Databases are cleaned of garbage via reference-counting (unless you produce circular references). And there's checkpointing, which allows you to ensure that a database restarts with the last consistent state. In a broad sense similar to Metakit, but somewhat more focused on objects than on tables. This certainly allows for more elegant integration into Python code. The question is, how is the performance? Because many small object databases are terribly slow when the number of objects in them grows. And large object databases are simply overkill for something like a weblog tool. Here's the original article.

Firebird under OS X

So Firebird is quite cute. However, it's terribly slow (especially scrolling through pages is unbearable with this awful stuttering), I'm used to faster performance from Safari. But one thing is absolutely top-notch: the extensions (see link at the title). I loaded the Webdeveloper extension and the Checky extension there, the former provides a whole set of web developer tools (such as visual representation of document structure, quick source display, various validators, tools for images, forms, enable/disable various features, etc.). Checky is simply an extension that plugs a large collection of validators for various purposes into the document's popup menu - including auto-discovery of the corresponding parts (e.g., CSS or RSS feeds are automatically found and then validated on request). Great. Now just make the whole thing faster and then I'll be happy.

Here's the original article.

Once More on the Validator

I found the reason: SCRIPT is an element that can be used both as a block element and as an inline element. A is an inline element. So I can use SCRIPT within A. NOSCRIPT, on the other hand, is a block element. So it's not allowed within an A. That's garbage!

Stupid W3C. Don't they have anyone there who can think? The SCRIPT tag has its counterpart in NOSCRIPT. So it only makes sense if I can use NOSCRIPT in the same place as SCRIPT. But that doesn't work. In the Python Desktop Server Javascript is used in comment links to insert the number of existing comments. There should be an alternative display for this (just a question mark) so empty brackets don't appear. But since the whole thing is inside an A tag, I can use SCRIPT there, but not NOSCRIPT. That's garbage!

Yes, I know I'm repeating myself, but with such stupidity you can only scream. Now I have to choose whether I want valid HTML or HTML that complies with accessibility guidelines. Unfortunately, it's not easy to change the technology in the Python Desktop Server because the Python Community Server only delivers static HTML and therefore dynamic content has to be inserted via Javascript. And that's exactly what Document.write() was invented for. And it could be trivially implemented with a NOSCRIPT alternative for those who don't have or don't want Javascript. Any suggestions (other than changing careers)? Update: here someone commented on this on the W3C mailing lists. The suggestion: set the whole paragraph as an alternative block. No thanks. So NOSCRIPT gets removed - because there are a number of browsers that render the contents of NOSCRIPT even when Javascript is enabled. Here's the original article.

Sandbox for Python

Noted and blogged because I might want to play around with it - for example, to be able to run user code on the Python Community Server. Here's the original article.

Another Smalltalk?

Interesting - just a few screenshots, but what they show would be really nice: a native Smalltalk for Mac OS X. I've already played around a bit with VisualWorks, but it's just not native - you still see your own system world there, and it's poorly integrated into OS X at best. A Smalltalk that looks and feels like an OS X application, and that could perhaps use all the Objective-C classes via a corresponding bridge, that would be something. I found this at Cincom Smalltalk Blog - Smalltalk with Rants - the original article.

PEAK / PyProtocols

I need to check this out, it sounds a bit confusing, but quite interesting. This might be a way to break up some of the rather tight couplings and bindings of modules in the Python Desktop Server. And since the Python Desktop Server is still in Beta, you're allowed to do that sort of thing.

I found the original article on Tao of the Machine.

Python and curses - and a Python implementation of readline

Hmm. Too bad – there's a report about a Python library class that offers a much better alternative to readline (the input routine used in the Python interpreter). You can do multiline editing with it and, for example, use Tab to autocomplete Python names (modules and other globals). Disadvantage: it requires curses. And oddly enough, curses isn't generated when building the private Python for PyDS. Strange.

Ok, so I simply copied the files from the standard Python that comes with OS X 10.2, and it works. Nice module. Only: once again, the programmers have no idea about unusual environments like, for example, 8-bit character sets. Umlauts don't work. Backspace doesn't work; you have to use Ctrl-H instead.

But it's definitely more comfortable, even if it takes a bit longer to load. Let's see if it can possibly be integrated into the monitoring client in the Python Desktop Server, since that suffers mainly from its absolutely spartan input capabilities.

Here's the original article.

Dynamically Scoped Variables

I had exactly this problem in the Python Desktop Server as well. So I wrote PyDS.Context for it. There flet is defined and activated as a new builtin. Using flet you can create a dynamic context:

 > > > try: > > > _flet.begin(variable="wert") > > > ... > > > finally: _flet.end()

Not the most elegant version, but at least usable. However, I would prefer it if Python had real fluid lets like in Scheme.

At PragDave there's the original article.

This is just cool - ST-80in VW 7

That's really cool. A Smalltalk-80 running under an emulator for a Xerox Alto written in Smalltalk (Visual Works 7). Wow. The Dolphin mentioned in the article is one of Xerox's D-machines. I have two compatible systems sitting around here. Unfortunately, I never received the Smalltalk diskettes with the microcode and the image, but so far I've only had the Lyric and the Koto Lisp. Lyric is a nice Common Lisp environment, but Koto is really great: a pure Interlisp-D environment (ok, it's also included in Lyric and in the later Medley Common Lisp, but in Koto it's all pure Interlisp-D!).

I found the Cincom Smalltalk Blog - Smalltalk with Rants and the original article there.

20 years of Smalltalk-80

Smalltalk 80 is celebrating its 20th birthday. Let me congratulate it and have a quick laugh at Java's expense

At Cincom Smalltalk Blog - Smalltalk with Rants you can find the original article.

SAP relies on MySQL

Well. So far SAPDB was quite an interesting database alternative (ok, I like PostgreSQL much better, but whatever). But if the MySQL people start tinkering with it, that can only get worse. I wonder if they'll remove outer joins from SAPDB's SQL? And throw out transactions? Because nobody needs that anyway, as they used to argue back in the day

Devilish grin

At heise online news there's the original article.

Eiffel releases beta of EiffelStudio for OS X

OK, the development environment is interesting and the implementation sounds good. Eiffel is a nice language (somewhat quite verbose, but in return also considerably more readable than, e.g., C++). And through the integrated tools, such an environment naturally offers more than just a bare compiler - CASE tools etc. are included.

Nevertheless, in my opinion, the price of 4800 US dollars is rather an argument against buying it. Sorry folks, but for that price I can get a fully equipped license for Allegro Common Lisp, and it offers considerably better comfort and considerably nicer language features and expressiveness than EiffelStudio.

And I find the price for Allegro Common Lisp already considerably too expensive...

At The Macintosh News Network there's the original article.

Microsoft's Protocol Peepshow

In class. I'd rather look at the Samba sources if I need information about the Microsoft protocols, at least the sources are free.

Devilish grin

At heise online news there's the original article.

On Lisp Reprint

Cool. If you haven't got the book yet and want to dive deeper into Common Lisp: grab it and buy it! One of the best books on Common Lisp and definitely the best description of the possibilities of Common Lisp macros.

At lemonodor you can find the original article.

Python panic around Jülich?

Also sometimes Python panic also breaks out in our company, especially when I have to work with Python 1.5 again

At WDR.de there's the original article.

Donald E. Knuth on Significant Whitespace

We will perhaps eventually be writing only small modules which are identified by name as they are used to build larger ones, so that devices like indentation, rather than delimiters, might become feasible for expressing local structure in the source language. Donald E. Knuth, "Structured Programming with goto Statements", Computing Surveys, Vol 6 No 4, Dec. 1974 Digest that, you Perl hackers!

Teufelsgrinsen

(BTW: I'm a Perl hacker myself, so I'm allowed to gripe)

(re)StructuredText

In response to my colleague's question (since he still doesn't enable comments on his posts and his forum requires registration and I don't want to sign up

Teufelsgrinsen

): (re) Structured-Text is used with Python DocUtils. This is also used in the Python Desktop Server so that I don't have to write content in HTML. The Python Desktop Server also includes a module StructuredText.py that can be used for standalone deployment - it does have minimal dependencies on the Python Desktop Server, but these are automatically disabled when used standalone (it's mainly about enrichment and automatic linking to content from the weblog tool - so it could also be used in other projects). In general, I can only recommend (re) StructuredText, it's very convenient - in my opinion the most advanced text-to-HTML converter currently available for Python. There is a released version 0.2 and a CVS version 0.3 - the Python Desktop Server is based on the 0.2 version, so when trying out the module, make sure to use the correct version!

For the Python Desktop Server, on the other hand, the CVS version of the StructuredText.py module should be used because it contains massive changes from Garth T. Kidd that significantly expand the functionality - the previous release version of the Python Desktop Server still has an HTML converter I built myself with reduced functionality.

At Der Schockwellenreiter you can find the original article.

Hackers and painters

Finally, a text that captures really well how programming works for me. Programming is far more an aesthetic and creative process than a purely technical one - many aspects of programming involve artistic activity for me rather than technical implementation. The deeper I get into a program and enter "hack mode," the further I move away from classical software engineering teachings - there's no design and analysis there, but there is a lot of intuition at work.

Anyone who reduces programming to the purely technical aspect and thinks you can plan and analyze everything beforehand, preferably before you even sit down at the computer, excludes an essential part of programming: namely, the dialogue with the machine, with the problem.

Programming languages are a means of communication, so we should learn to communicate with these languages. Not pidgin and machine translation!

I found the original article at Tao of the Machine.

Linux: No Chance for Buffer Overflows

It was about time too. Because the best approach is still in the OS itself, not in relying on better application developers. Unfortunately.

At heise online news there's the original article.

80x86 ASM for ASP.NET

Ouch. Writing ASP.NET pages in assembler. Sure. That's what I dream about. At night. When I've eaten too much pizza beforehand. With pepperonis.

Teufelsgrinsen

I found the original article at Lambda the Ultimate.

Schemix - A Scheme In The Linux Kernel

Ok. I love Lisp. And I love Scheme as a very elegant, lean Lisp dialect. But a Scheme interpreter integrated in the kernel goes a bit too far even for me

surprised face

Although - that could be a starting point for the OpenSource Lisp machine

I found at Lambda the Ultimate the original article.

py-xmlrpc 0.8.8.3

Yep, definitely check whether I shouldn't include this in the build process of the Python Community Server and the Python Desktop Server - they don't have performance problems yet, but it doesn't hurt if things get even faster

I found the original article at Der Schockwellenreiter.

Pyro 3.2

And I should take a look at that too, even though I'm currently missing the application for it (usually XML/RPC or SOAP is enough for me).

At PyPI recent updates there's the original article.

GSM/GPRS on an SD card

When will there be drivers for Linux that work on the Zaurus too?

I found the original article at Gizmodo.

Just a little self-promotion again

Psst. New beta. Want one?

At PyPI recent updates I found the original article.

Mac OS X and Darwinports

With DarwinPorts, there is an environment available for installing Unix programs from source, similar to the BSD Ports structure.

What is it? With DarwinPorts you can very easily install Unix software directly from the sources without having to laboriously fetch and patch the sources first. That's the idea.

Basically a very convenient installation structure similar to Debian packages, only based on source. In this respect DarwinPorts is very similar to Fink. So why do you need DarwinPorts? I was initially quite enthusiastic because I assumed it would be the real Ports environment (similar to how GNU-Darwin for example uses the Ports from FreeBSD and thus already has a huge set of programs ready to compile - significantly more than Fink) from BSD. Nothing doing - it's its own development. And not even more software in it than Fink. And even better: the make install crashes for me with a bus error in pkg_mkindex.tcl

To be honest: we don't need ten different installation systems for Mac OS X, we need one that really runs smoothly and works. And so I'd rather stick with Fink, which works flawlessly and by now already has a somewhat fuller list of supported packages.

I found the original article at Der Schockwellenreiter.

Dream Over: No US Funds for OpenBSD

I would have been surprised if it had actually worked - Theo is not exactly the most accommodating and cooperative person, and conflicts with the idea of "whoever is not with us is against us" were pretty much inevitable. Still, it's a shame that the Americans let themselves be guided by ideology and nationalism once again, instead of simply implementing what is actually a good idea. After all, work on OpenBSD benefits the entire open source community - just think of OpenSSH.

At heise online news you can find the original article.

Technical stuff from Rollberg

I'm curious to see how SQLite performs there. I've looked at it several times myself and have been searching for a project to use it in. There are also Python bindings for SQLite (even on the Zaurus - I think that's where it will first be used for me).

At Der Schockwellenreiter you can find the original article.

Interesting Programming Language: Goo

Goo is a compact and simple programming language from the Lisp family with complete object orientation and some nice technical features (for example, dynamic compilation of Goo code into native code with the help of a C compiler). In some ways, Goo seems to be an alternative to Paul Graham's Arc - Goo with a focus on object orientation, Arc with a focus on functional programming. I should take a look at it sometime, could definitely be interesting.

Here's the original article.

What does Trackback have to do with the historical Web?

Seth Gordon provides an answer in which he draws connections between the original hypertext vision of Tim Berners-Lee (from his previous work on hypertext) with the Web and shows where Trackback fits into Tim Berners-Lee's ideas. Interesting, brief and concise, with a few aspects illustrated with Perl code.

Here you can find the original article.

Home is where CVSROOT is...

Not such a bad idea, simply synchronizing the home directory via CVS to a server and then updating from mobile devices.

And another thing: the Zaurus stores quite a lot as XML - you can use that wonderfully with CVS. And that would give you an exchange option for calendars and similar things with desktop tools. And via transconnect I could also synchronize that with the computer at the office.

Hmm ...

At [/ndy's Weblog][0] there's the original article.

Paul Graham speculates about programming languages in 100 years

Nice thoughts from Lisp Guy No 1 (ok, he's had the title only since Guy L. Steele defected to the Java camp).

Here's the original article.

John C. Dvorak is a blithering idiot

That's exactly what I thought when I first heard his absurd prediction that Apple would switch to Intel processors within 2 years at the latest. Ok, now he's going even further and claiming that Apple will go bankrupt if they don't implement his great plan. Seems a bit confused in the head, this so-called tech journalist.

Teufelsgrinsen

Although his great predictions and ideas contain a lot of errors: for example, his claim that with the x86 version of OS X all the Linux people could port their software. Has this nincompoop never heard of Fink or GNU-Darwin or similar projects that already allow porting Unix software to regular PPC Macs today?

At algorhythm I found the original article.

Microsoft patent on "probabilistic classifiers"

Yeah great, Microsoft has a patent on statistical spam filters

At Gary Robinson: Gary Robinsons Spam Rants I found the original article.

New QuickTime Version

Question: (Why do I actually have a Unix kernel if I have to restart the machine anyway?)

Answer: Because Apple didn't build more sophisticated mechanisms (restart server process, reload services, update frameworks, etc.) into the installation routines, but only a restart of the entire computer.

Yes, that's stupid.

I found the original article at Der Schockwellenreiter.

NewCode, a secure PL

Now that's quite an innovative approach! I found the original article at Lambda the Ultimate.

Whitespace

And that's just one innovation: I could fit a second program in Python's indentations

I found the original article at Lambda the Ultimate.

Yahoo! Store Switches Back to Lisp

Bitter. That's a really bitter April Fool's joke

I found the original article at Lambda the Ultimate.

Java, or how it came to be

A tale about the early beginnings, people and projects that ultimately led to Java. Exciting to read.

Here you can find the original article.