programmierung - 5.11.2002 - 3.1.2003

Easy Things Should Be Easy

Easy Things Should Be Easy - the power of high-level libraries.

Gefunden bei PyLog.

Friday 3 January AllegroServe : 3 edits

Friday 3 January AllegroServe : 3 edits - hmm, has it quietly become OpenMCL-compatible? That would be something worth doing, maybe playing around with OpenMCL again. Perhaps a parallel implementation of PyDS as ClDS? Or at least parts of it?

PyDS is making nice progress, by the way, a simple weblog tool is already there, but rendering and upstreaming are still missing. But the infrastructure is now largely complete. Let's see, once I have rendering and upstreaming done, I could actually take my stuff down from Radio and import it into PyDS.

I could handle news with AmphetaDesk for now and just patch the template so I can post entries to PyDS. That way I could do everything I do today. Just uglier.

Found at CLiki Recent Changes.

MacBird Open Source Release

MacBird Open Source Release - well, it's been sitting around for three years and I'm afraid no one will pick up the ball. That's a shame really, because a GUI is what Frontier/Radio is still missing. The web interface isn't always optimal and the built-in editors are usable for the predefined types, but not necessarily always ideal for real applications. OK, Dave lives in the Outliner, but there are people who still want classic applications

Found at Scripting News.

Post without title

I'm currently working on a larger Python project that could potentially replace Radio for me. We'll see how it goes. The infrastructure is already in place — I simply borrowed from PyCS and used the same modules. Next, I'll do some fine-tuning on the infrastructure, then comes template integration and themes. After that, I'll create the first tools. I'm curious to see how it turns out, but based on my previous Python projects, I'm actually quite optimistic. Python and all the available libraries are a fairly reliable tool — so I won't end up in the rain halfway through just because some annoying library starts acting up again...

Post without title

Cyclone 0.4 released - I talked about it with Kai at the regulars' table yesterday, and today I see the update. Ok, Kai said it means typhoon, but I think cyclone is meteorologically close enough (Found at Lambda the Ultimate)

Should I take a look at it? I've been quite happy with "Pyrex" and "Python" so far, but I still need the obligatory new programming language for this year that I want to explore ...

Found at Lambda the Ultimate.

Lost...

Lost....

 > look You are in a twisty maze of python build dependencies, all covered with inscrutable error messages. There are exits to: N, S, E, W. What do you do? > python setup.py build A compiler goblin rushes out of one of the passages, scribbles on a wall and runs gibbering down another passage. > help There is no help for you. > n You are in a twisty maze of python build dependencies, all covered with inscrutable error messages. There are exits to: N, S, E, W. What do you do? > get coffee

[ richard's stuff : /python] So (s/coffee/apfelschorle/) fühle ich mich auch manchmal. Meistens aber mit Perl, wenn eine Modulinstallation gleich das ganze Perl selber mit installieren will aufgrund seiner Abhängigkeiten ...

Gefunden bei richard's stuff : /python.

Photo albums on the OUT e.V. server

Photo albums on the OUT e.V. server now automatically create an RSS feed of new images, so these can be subscribed to in a news aggregator like "Radio Userland". This way you can easily keep track of where new photos have been added, even with photo albums.

The XML URL for the RSS feed can also be extended with a second parameter "&count=NN" to select the number of current images. The default is 10, which should be sufficient. I may make some optimizations to the server software later to keep transfers and CPU load from getting too high.

A few image albums can be seen in my list of subscribed news feeds on the right (e.g. Leicaesk, hugo.f-2.org, the drf image critique pages).

Post without title

Matthew Thomas: When good interfaces go crufty. Worth reading. The explicit examples in particular are very interesting. Found via Scripting News.

Found at Scripting News.

Ook!!!

Ook!!!. http://bluesorcerer.net/esoteric/ook.html: "Specially for orang-utans an Ook# .NET Compiler v1.0 has been developed. The syntax only contains one word, namely Ook,... - crazy. Funny, but completely crazy ";->" (found via BloQ).

Ook.

Found at BloQ.

Post without title

From Der Schockwellenreiter:

[Exotic Programming Languages]: Type inference in Icon(

pdficon.gif

, 192 KB). »The original, interpretiveimplementation of Icon performs rigorous run-time type checking and incurs significant overhead as a result. A new optimizing compiler for Icon, on the other hand, has a type inferencing system that is effective in determining type usage and in eliminating much of the run-time checking that otherwise would be required.« It's a shame that highlights like Icon are now being treated as exotic programming languages. Icon is, after all, the continuation of ideas from Snobol into a programming language with proper syntax. Well, what Icon has suffered from (and still suffers from) is a library that's too simple. While there are modules for every conceivable thing, serious networking libraries, standard protocols, and more advanced features like database connections, GUIs, XML parsers, etc. are unfortunately missing. Icon never got out of the toy stage and the "hack together a quick filter" stage.

The Icon compiler itself is actually old news, it existed back then - and already with type inference. The latter is also old hat; in Lisp compiler construction it's used all the time, and in the realm of functional programming languages (ML, Haskell, OCAML) it's indispensable (though implemented much more elegantly there than in other languages, where type inference can never be complete).

It's a shame, Icon really had the makings of a usable alternative to Perl, Python, and Ruby today.

Found at Der Schockwellenreiter.

Post without title

searchebay.py is a small Python script I hacked together that performs searches on eBay, analyzes the results, extracts individual listings, and builds an RSS feed from all the data. This RSS feed can then be used in, for example, MacReporter to monitor eBay auctions without having to constantly search eBay yourself. I find it practical.

The usage is very simple: python searchebay.py +contax +zeiss -ikon -o=contax

would for example search for Contax and Zeiss, filter out all Ikon items, and primarily find Contax lenses by Zeiss.

The result is saved in contax.xml in the public_html subdirectory of the active user's home directory (~/public_html/contax.xml). On Windows, you need to set a HOME environment variable that points to a directory with a public_html subdirectory.

Then run the whole thing regularly on a web server via Crontab or Scheduler and create a corresponding plugin in MacReporter (MacReporter Forge is sufficient for this). Of course, you can also use other RSS-capable news aggregators.

What is RSS?

What is RSS? - Mark Pilgrim describes the history and technical details of the RSS variants used on the web. He also provides descriptions of how to parse most of them. For anyone who wants to write their own aggregator, this is certainly a good starting point to get an overview.

Found at Meerkat: An Open Wire Service.

Happy Birthday Perl

Happy Birthday Perl - hey, in 3 more years Perl will be of legal age

Found at use Perl.

Gallows Humor Against Software Patents

Dark humor against software patents - a witty idea. Especially the example patent from Canon with the violation by a one-line shell script is quite something. Thanks to Industrial Technology & Witchcraft for the link.

Found at Industrial Technology & Witchcraft.

Post without title

For Python hackers: check out Psyco and Pyrex. Very interesting ways to speed up Python code when you're working heavily with arrays or numbers and can't make progress with the usual methods (like a better algorithm, for example).

Psyco is a form of just-in-time compiler for Python, but it includes rudimentary type inference — it determines at the time of code analysis what values can actually arrive. This of course helps primarily in areas where specializations are included in this compiler. Current focus areas are arrays and lists of basic types, especially numbers, and arithmetic expressions.

Pyrex is something completely different, but no less exciting. Pyrex is its own language that is very closely modeled on Python, but combined with C. This makes creating Python extensions much easier than with C or C++ alone, because you program in a way familiar to Python users, but can work with C type declarations.

Post without title

6/2/02: How to create a directory in Radio's Outliner - I don't know exactly what it's for yet, but I think I'll use it. Somehow it's cool, even though I don't know exactly why. Hmm - I often feel that way about David Winer's ideas for Radio, it must be my fault

Found at Scripting News.

Post without title

Computer Pioneer Alan Kay Joins Hewlett-Packard - whether he can bring his strengths to bear there? HP is - especially after the latest merger - really no longer the think tank with good ideas and sometimes quite a bit of freedom for research. It would be a shame if Alan Kay got stuck there. And to stay on topic: the environment linked in the article Squeak is really worth seeing. Take a look at it sometime, one of the most modern Smalltalk systems on the market. An ideal playground, especially since many interesting base projects are already included, such as a quite usable web browser and web server.

Found at heise online news.

Java vs. Python

Java vs. Python - a fairly well-made comparison between Java and Python. Attempts to address all aspects. Actually, I only have two points of criticism:

Regarding remote methods and distributed programs, it is stated that Python would not provide anything by default. That's not correct, though - it comes with xmlrpclib, a module that makes it very easy to create servers and clients for XML-RPC calls. This is also used internally in the Python Community Server.

As a counterpart to the servlet architecture, only Zope is referenced, not the numerous servlet-like programs available for Python. Medusa is certainly one possible example of a very efficient server environment, but also Python Server Pages or Quixote provide quite a lot in that regard. And there is mod_python - admittedly not as widespread as mod_perl, but that will certainly come.

But overall still a fairly good comparison, and many of the points that make me prefer Python to Java are addressed.

Python JIT

Python JIT - something like that exists? I was quite surprised when I read the previous comparison article that such a project actually exists. It even goes one step further and, in addition to the classic JIT technique, wants to extract even more performance with the help of specialization of the generated code. Something like that has been done quite often in the realm of functional languages, so it's doable. In any case, a project worth keeping an eye on!

Threads considered harmfull

Threads considered harmfull - a fairly controversial discussion on kuro5hin.org about the dangers of thread programming. In my opinion, a whole range of problems are addressed that arise with threads in programs, and that often the same problems can be solved more simply and efficiently in other ways.

I discovered an example myself not long ago, the Medusa Webserver. It works completely without threading and processes, instead using input dispatching. In doing so, it even implements multiple virtually parallel running servers in a simple and efficient event loop. Medusa is also the basis for Zope. There, however, multiple processes are pre-started and centrally managed. In the Python Community Server, on the other hand, Medusa is contained in its pure form.

The Commercialization of Knowledge

The Commercialization of Knowledge - yeah great, rosy prospects. Whoever creates something is screwed. Whoever uses something is screwed. Only those who sell and exploit the parts that others also thought of get to skim off the fat profits. That's probably what many managers imagine the future to be like ...

And incidentally, you can also strip the annoying competitor Open Source of its breeding ground (the information). This idea stinks.

Found on heise online news.

Macintosh Common Lisp 5.0b

Macintosh Common Lisp 5.0b - despite its hefty price and what I consider to be the rather questionable way that recent subscribers were strung along with updates to classic versions for as long as possible until even the last of the free updates ran out and thus everyone has to pay the hefty prices, it's still one of the best Common Lisp implementations I know of.

Well, I'll refrain from the upgrade anyway and continue to rely on Open MCL - a free implementation of Common Lisp that is based on an older MCL version. What Gary Byers is doing there is really impressive and eventually there will be a GUI there too.

Found at VersionTracker.com - Mac OS X.

Post without title

A bit of exploration with Radio Userland and its translation capabilities uncovered quite a bit of information. Of course, nothing is really properly documented — you have to search and dig. Google is definitely your friend... First, you need to set up a database as described at http://frontier.userland.com/localizationGuestDatabases. All the translation work happens in this database. If it's located directly in the tools subfolder of Radio Userland, it will be activated with every startup. Second, you need to create your own new property. To do this, jump to user.prefs using Apple-J (Ctrl-J on Windows). There, create a new scalar of type String (Table menu, then New Scalar and select String). The name is language. This string is set to the value german and then activates the German translation from the guest database in the web interface. If you want documentation for the previous paragraph, you'll only find it indirectly. A search on http://radio.userland.com/ for localization at least revealed that the function radio.string.getLocalizedString takes the language version into account (or rather, the message — it was already older — stated that you need to patch this function so that it takes it into account). If you look at the function (simply jump to radio.string.getLocalizedString using Apple-J or Ctrl-J on Windows), you can see that it takes user.prefs.language into account. For hackers, Radio is a paradise because the entire script source code is there and you can just start hacking. You can rummage through everything and investigate. Stick your nose in everywhere and change just about anything. For end users, however, something as essential as activating a subsequently installed translation database should really be made a bit easier |;-)|.

Post without title

A Shallow Introduction to the K Programming Language - If you're in the spirit of the Pragmatic Programmers and want to learn a new programming language again, and are willing to take on something truly new and unusual, this is the right place. K can be considered a mixture of Mumps (the K-Tree reminds me strongly of it), APL, J, and functional languages. Wild, unreadable, extraordinary. Unfortunately, there is no native Mac OS-X version available, only Linux, Solaris, and Windows. Found at kuro5hin.org.

Post without title

Book recommendation: The Pragmatic Programmer. A very interesting book that deals with the philosophy of programming, but pursues an approach that deviates significantly from the classical method. You could consider it a pragmatic approach to Extreme Programming. Many ideas have resonated with my own way of working - you can tell the authors are actually programmers who have been in the job for years. Many ideas can also be directly transferred to open-source projects, even if commercial interests are not pursued there. It's less about tools and languages (although the Pragmatic Programmers recommend on their website - and I can only reinforce this recommendation - learning a new programming language each year), but much more about the mindset behind successful and intellectually demanding software development. Software development should be fun again and lead to a successful conclusion. As a counterpoint, you could see "The Mythical Man-Month" by Frederick P. Brooks. In this book it becomes clear why, for example, there's no point in accelerating a delayed project by adding more staff. And many other misconceptions of classical project management are illustrated using IBM's OS/360 project. While OS/360 is only of historical interest today, the problems in large projects are the same as they were back then.

Post without title

Compile Nightly, Run Faster - well. Nice idea, but for me it's a clear indication that it's high time today's programmers learned a bit more about their craft. After all, the idea of putting bytecode compilation into "the evening hours" is pretty silly - I still prefer to keep compilation using tried and tested methods on a normal developer machine.

Just-in-Time compilers are a nice thing for languages that build on bytecode and where the target platform isn't clear beforehand, so compilation is better done on the user's machine at the time of use. But if you're already planning a batch compile run on the server machine (which can only compile for that server machine anyway, so it addresses quite different issues than a JIT), then for heaven's sake do it where it belongs, namely on the developer's machine.

Strange. Java really does spoil one's sense of programming. And something like this on advogato - well, at least the author didn't know the "locate" command either ...

Found on Advogato.