programmierung - 12.2.2007 - 23.4.2007

TextMate: Power Editing for the Mac - could be quite interesting, a book about TextMate.

Free Smalltalk Books - as PDFs

UseTheSource / Published Code Snippets - social source snippet site.

Vista Smalltalk Wiki - I had already seen this before, but there's a reason for the repetition: I only noticed today that Vista Smalltalk is not just a Smalltalk in Flash (ActionScript), but that it contains its own Lisp layer on which it is based. So a Smalltalk in Lisp in ActionScript ...

Erlang Cookbook - another cookbook site for Erlang. Nice for first impressions of the language.

Kamelia - interesting concept: component programming in Python. Components are operated in parallel via threads and communicate via a simple pipe interface. Similar to the Unix shell, but for high-level objects and within a programming language.

PragDave: Adding Concurrency to Our Erlang Program - second round. Not really practical code - the application can overload the Amazon Webservice and block your own key - but nice as a demo of how to convert sequential code into parallel. Where the hint about pmap as an alternative is not entirely unimportant ...

QuickCheck: An Automatic Testing Tool for Haskell - an interesting approach to automatic testing. The properties of functions are stored directly in the code and the test does not simply test predefined test cases, but runs through the property definitions with randomly generated values.

(The Scheme Way): Erlang or Gambit-C/Termite? A practitioner's perspective - Erlang wins the comparison. Some good points - especially Erlang's infrastructure is simply better and more mature.

Wings3D - is written in Erlang. Here is the evidence as a link to the source repository. I didn't know that before - a 3D modeler, written in a functional language.

CouchDb Project Website - hmm. I haven't seen that before. Replicating, document-oriented database. REST API.

PragDave: A First Erlang Program - Accessing Amazon Webservices with Erlang. Basic tutorial, expects nothing complex.

Doug's AppleScripts for iTunes - tons of scripts around iTunes

Metalua - a macro extension for Lua, similar to Common Lisp. Lua is becoming more and more interesting.

Write Your Own Automator Actions - as the name suggests: how to write your own Automator Actions.

5 Question Interview with Twitter Developer Alex Payne - interesting comments on Ruby on Rails under high pressure. Twitter had massive performance issues and Alex gives insights into the problems caused by Rails.

MogileFS - application level distributed file system.

RabbitMQ - Open Source Enterprise Messaging - sounds very interesting and the message server is written in Erlang.

IMified - Developer Community - API for creating your own IMified services.

BKNR - and something like Lisp on Rails. Although that would be more like an ICE with a double power car and an extra track.

CLiki : CommonLispPrevalence - securing internal objects against system terminations through parallel transaction logs. Essentially what Smalltalk does by default with the changelog and the image.

HUNCHENTOOT - The Common Lisp web server formerly known as TBNL - strange name, interesting package.

Lispbox - looks really nice now, ready-made packages with integrated Lisp and Emacs to get started with the book. Since I finally ordered the book (Practical Common Lisp), I'll probably take a closer look at this.

PLEAC - Programming Language Examples Alike Cookbook - the problems from the Perl Cookbook in a series of other languages. Not all are really complete, but the whole thing is open and can be expanded.

The Elephant Persistent Object Metaprotocol and Database - for Common Lisp. Yes, I have bracket addiction again. Sorry.

Locomotive - a nice way to run Ruby on Rails on the Mac. GUI with integrated Ruby, separate from the system, so that you are independent of the versions and can run several in parallel.

Scheme 48 - new release 1.6. Very interesting elements for programming with threads. Looks like someone has gone wild in all possible concepts.

Vista Smalltalk - originally a Smalltalk targeting Windows Vista, at least according to the documentation. But it is runnable with Flash - and thus in the Safari browser or even with the Apollo Runtime on other systems. And the Smalltalk isn't even that bad - and it also includes a small Lisp. Funny thing.

DjangoKit - great idea. Basically Apollo with Python - Django applications can easily be turned into real OSX applications. Could definitely become interesting.

Open Croquet SDK 1.0 - no longer Beta, but Release now. It remains exciting.

appscript - Python as an alternative to AppleScript (hadn't I already mentioned this one?)

Comprehensive Erlang Archive Network - a brilliant way to install Erlang - a self-extracting shell archive for various platforms and a good package library to quickly install additional packages. Great for trying out.

google-code-prettify - Google Code - nice JavaScript snippet that can syntax-highlight code/pre blocks.

LambdaVM - The Haskell to Java Translator

Lift Web Framework - for Scala. Inspired by ideas from Seaside, Rails, Django, and Erlyweb. Sounds at least good.

The Scala Programming Language - sounds interesting. Not that we urgently need another programming language, but this one has some interesting approaches and the really smooth integration into Java and .NET worlds has a real advantage: the availability of many libraries. However, whether the functional character of Scala will survive when combined with various Java classes?

HyperLook (aka HyperNeWS (aka GoodNeWS)) - wow. I didn't know that one. HyperCard in and with PostScript - on SUN OpenWindows with NeWS. Fascinating stuff - too bad all that stuff disappeared at some point.

Ideas for Sugar development environment from HyperLookSimCity - more about HyperLook.

SQLite Introduction - only linked because I might need it for a trivial project (PHP5 and SQLite - igh, I'll have to clean my keyboard afterwards).

Python, Django and DB2: we need your input! - sounds like there will soon be a DBAPI2 module for Python and DB/2 directly from the source.

LSL Module For BBEdit/TextWrangler - the best editors in the world for Linden Scripting Language (in SecondLife) use.

Programming Erlang - sounds good, and so far the books from the Pragmatic Bookshelf series have been quite useful. Could be one that you might want to read again.

Shill (LSL syntax files) - various editors for LSL usage. There should be something for everyone.

Mono on Nokia 770/800 - good. This gives chances to get the libSL stories (e.g. Sleek?) flying on the Nokia. And this gives chances for a minimal SL client on the tablet! (not to mention the variety of interesting programming languages that are now also available for the Nokia)

PicoLisp Again

After some digging and leafing through and reading: PicoLisp is brilliant. What it is: simply a primitive Lisp with a very compact language core and some very unusual design decisions.

First and foremost: no compiler, not even a bytecode compiler. PicoLisp's "virtual machine" is simply an efficient Lisp interpreter for Lisp SEXPRs (the linked lists you know from old Lisp interpreters).

Another point: only lists, symbols, and numbers as data types. No floating points (instead, simple ways to use scaled integers) and strings are either lists of characters (which are symbols again) or simply symbols.

Also rather unusual: constant dynamic binding of symbols, not lexical binding. Old Lisp systems also only had dynamic binding. Lexical binding makes compilers easier and eliminates some annoying sources of errors, but dynamic binding enables some very interesting programming techniques (which is why many Lisp systems have fluids - dynamically bound variables - such as the global parameters in Common Lisp).

Other peculiarities: designed from the outset for developing database-driven applications. It includes its own database that contains all the features of typical object-relational databases and its own GUI library that targets various HTML variants (pure HTML, HTML with Java, and HTML with JavaScript).

Adding Prolog as a query language to the database is only a consistent further development - the integration of Prolog and Lisp is not new in general. But to achieve all this in such a compact way is smart.

What excites me about it? Well, anyone who has read Paul Graham's articles about Arc - the 100-year language he is working on - will see astonishing parallels. PicoLisp also limits itself to the bare essentials, uses quite compact representations, and has only strongly reduced data types. The idea is the same for both: back to clean abstraction on known concepts, not to dilute the source representation through premature optimization (data type selection).

The result? A compact Lisp core with very interesting properties and a fairly simple way to put together web applications. But also suitable for typical scripting stories (once you've figured out how to get programs integrated, for example). Additionally, an interpreter with manageable source code (not 14,000 lines of C source!), which you can easily extend with the functions necessary for your own projects. Overall, this strongly reminds me of the old TCL versions, except that here a real Lisp is underneath.

If you want to read for yourself, here are some documentation links:

However, all the documentation is not quite complete - functions keep appearing in one of the documents that are missing in the reference, or functions are used that are not mentioned anywhere and whose operation is not entirely clear. But there is also the complete (and only sparsely) documented source code of all library modules for that. Yes, it sounds a bit like a text adventure, I know. On the other hand, the volume of source code is quite manageable.

Pico Lisp - a mini-Lisp interpreter that has been in practical use for application development since 1988. Interesting concept - back to Lisp 1.5, fast interpreter instead of compiler, high dynamics.

Jungerl - a dense and chaotic Jungle of Erlang code - it is what it says on the tin.

soaplib - there's something new here. Besides the rather slow SOAPpy and the, in my opinion, somewhat over-engineered ZSI, there is now another Python library for SOAP web services with soaplib. Let's take a look.

boto - a library for accessing Amazon Webservices. Supported are S3, SQS and EC2 - exactly what I need. Documentation also looks quite useful.

Jython 2.2 Beta - finally something new from Jython, the Python implementation for the Java VM. Still Python 2.2 syntax level, but at least a new release. However, the roadmap reads a bit harsh when talking about code quality ...