programmierung - 28.2.2003 - 16.6.2003

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.

Snake Food

Och menno, and I still have Python 1.52 code in productive use

At Der Schockwellenreiter there is the original article.

Lispworks Beta for OS X

Hey! If they're making this thing native Aqua now, that's a real killer - because so far there's only Macintosh Common Lisp, since Allegro doesn't come with a GUI. However, Lispworks is unfortunately not exactly cheap, so you could almost just use MCL again.

Or OpenMCL, which costs nothing

At lemonodor there's the original article.

Too cool for secure code

An interesting opinion from a Security Focus columnist on the topic of secure software. His basic thesis – the macho posturing of programmers who think their code in particular has no bugs, and the excessive use of low-level languages – is correct. It's really sometimes absurd with what primitive tools programs are created. And then people wonder why bugs occur that have been known for decades – well, of course tools are used that have existed just as long.

What he overlooks in his article, however, is the main motivation of many programmers in the open source area: fun. Many things come into being precisely because someone has fun doing them – but they only have fun because they use the tools of their choice.

From that perspective, we in the open source area will have to live with the fact that there are both bus drivers and fighter pilots among programmers – even if that means that parts of the system have holes from time to time. Because someone who simply enjoys C programming is not motivated by the fact that buffer overflows keep occurring to switch to Perl or Python. Even if that would eliminate entire classes of errors.

At WorldWideKlein - The Daily Durchblick I found the original article.

Perl, python

What always amazes me about all this virtual machine talk: why don't these people look at where virtual machines have actually been used for a long time before implementing such things? I mean, Smalltalk has had a virtual machine since its existence and since the mid-80s a highly efficient garbage collector as well as a whole range of advanced features. Same with Common Lisp implementations - many use internally portable code based on virtual machines. There's also corresponding experience with closures and continuations. It's not as if these topics were so terribly new - on the contrary, they're pretty old hat.

But instead of looking at where there are not only working implementations, but also the full source code for study, people prefer to tinker with their own stuff and at best refer to the JVM or the .NET CLR - two of the most pathetic implementations of virtual machines that exist (among other things because their designers make exactly the same mistake and think they know better and don't need to look at the code and ideas of old hackers).

What's really ridiculous is this continuations and closure debate. Both are essential features of Scheme and addressed in all Scheme implementations, because nothing would work without them. And many of them have highly efficient implementations for virtual machines or real CPUs.

People, please look at what others have already done decades ago before you think you have the great new idea. Or don't be too surprised if you're not taken very seriously by those who know these old systems ...

At Squawks of the Parrot there's the original article.

Artifacting

Of course we should focus more on the processes that create software than on alleged metrics for evaluating a project and abstract absolute values that are not tangible. This is a general problem in software development: at universities, the process of creating software itself is presented as unimportant, and only the results of analysis and design are considered important. As if analysis or design were independent of the implementation process, as if they could be directly derived from the former two. In some cases, programming itself is even separated from the normal realm of software development and packed into courses that are required as mandatory credits - but in actual teaching, it is pointed out that analysis and design predetermine the software solution, and you can do the programming in any language anyway. Absurd.

Software creation is accompanied by many components. Of course, analysis and design are among them - and not entirely unimportant ones. Preferably, these two components stand at the beginning of development. But they also accompany development during the process. But just as naturally, the actual implementation - often dismissively portrayed as mere coding, as if you were just converting one formal language into another and could hand it over to some trained monkeys - is an essential aspect that is crucially responsible for success and failure. The tools also play a role, specifically the degrees of freedom they offer, but also the degrees of freedom that programmers actively use in realization, are an essential aspect. This is not about my language being better than your language - that is banal and boring. No, it's about the fact that languages provide means of expression, just as natural languages do. Languages offer models of thinking - with 40 words for snow and ice, you can discuss snow and ice far better, but in the desert, you run out of conversation. The same is true in programming languages - they offer models of thinking that you can use. Or you can rape the language and discuss the meaning of desert with 2 words for sand.

In my opinion, it is infinitely sad that especially in the software engineering movement and in modern software development strategies (perhaps with the exception of the XP movement and the Pragmatic Programmer - but they are also often regarded as outsiders), the programming language is often dismissed as mere tool. My creed: the programming language is more than a tool. It is a way to communicate with the machine. And this communication is certainly not dry or banal or primitive. It is an intellectual challenge and a creative activity. The activity is not coding - it is communicating. The language used reveals the focus that a community has - this also applies to programming language. Its abstraction mechanisms, its degrees of freedom and expressive variety show what directions were envisioned, how the developers who designed this language see the software world. These directions and idea spaces in which a language moves are important - if I go against them in communication, I lack the words. I have to resort to circumlocutions - ugly, inelegant code is often the result.

In my now almost 20 years of programming, 16 of them professionally, I have read a lot of old code. This is essential when you spend 10 years of your working time working on an old inventory management system. And what always struck me was that inelegant code - in the sense mentioned above, but also in its most mundane form as incorrectly structured and formatted code - was almost always the code with the most bugs.

It is often a very clear sign that the failure to understand the culture of a programming language and its ethos is reflected in programming through a failure to understand complex processes - and that leads to bugs.

Ugly language designs then contribute to the fact that programs actually remind one more of curses at the machine than of what they should be (and in my opinion, are): Programs are poems for the computer!

Many programs in this context, however, remind one more of failed limericks with incorrect meter and non-rhyming lines, to which the poet has written 5 pages of explanations on how the discerning reader is supposed to interpret the poem...

At PragDave there is the original article.

Monday 24 March XML-RPC : Add a pointer to XML-RPC for OpenMCL

Hah! If I had had that earlier, I could have written the whole Python Desktop Server in Common Lisp together with the portable allegro store and maybe a port of Woods

I found the original article at CLiki Recent Changes.

Screamer

Reminds me that I wanted to port this to OpenMCL ...

At lemonodor there is the original article.

Java 1.4.1

Reminds me that I wanted to try whether PyDS also works with Jython. Yes, I know, Metakit and a few other things cause problems. But there might be alternatives for that (no idea if that also applies to docutils, but you can find something there too).

At PragDave there's the original article.

PyDBC 0.2

Contracts for Python? Hmm. Could be interesting, especially since you can disable them to boost runtime performance later. Maybe that will help get a better handle on the problems that Python's highly dynamic environment presents. Let me take a look.

At PyPI recent updates there's the original article.

Guide to building an anonymous CVS server with Debian

The linked page provides not only the software, but also Debian packages and explanations for setting up your own anonymous CVS server, which runs under its own user and in a chroot jail. Nice thing. I use it for the Python Desktop Server.

Here you can find the original article.

Ranchero releases XML-RPC client for MacOS

Noted and blogged. Could become interesting if I ever get the urge to dive back into Objective-C.

The original article is at Workbench under this link.

Development Environment

BBEdit 7.0, SSHPassKey, Python and CVS - that's what I use to build the Python Desktop Server when I'm sitting at my Mac (which I clearly prefer).

Since the CVS server isn't running locally but out on the net, ssh is set up as the transport (that's what SSHPassKey is for - it integrates SSH password prompts into Mac OS X's Keychain!).

On Linux I use VIM instead of BBEdit. Well...

Bill Gates rages against open source in Japan

Billy Boy's Horror Scenario: Free Software Creates No Jobs and Brings No Tax Revenue to the State. In capitalism, it is customary to develop new software and use revenues from earlier sales to finance it. If software were freely available, programmers would perhaps have to do fieldwork during the day to earn their living - yeah, off to the fields with the blockhead, so he can finally learn what honest work is

Devil's grin

At heise online news you can find the original article.