programmierung - 10.12.2010 - 27.1.2011

live-processing is something like Impromptu - so a live coding environment - in Clojure. It naturally focuses more on graphics, as it is based on Processing, and does not yet have the full scope of Processing available, but hey, it should be enough to play around with a new language.

Optimizing Crajsh – Part 1 « #ponce's blog. A lot of information (also read the linked second part!) about efficient use of JavaScript in the browser for game development.

don't code today what you can't debug tomorrow: PhantomJS: minimalistic headless WebKit-based JavaScript-driven tool. Way cool - I definitely have to check this out, could be interesting for many experiments.

linq.js - LINQ for JavaScript. Quite an interesting hack to provide LINQ in JavaScript.

PyPy Status Blog: PyPy wants you! - yay! Fast-forward in PyPy gemerged! This means soon a 2.7 compatible PyPy - the project is now looking for contributors to implement the missing 2.7 features. The next PyPy version will be very interesting!.

InformIT: Art of Computer Programming, Volume 4A, The: Combinatorial Algorithms, Part 1. Part 1 - these are 2 headings in the planned book, it almost looks like it will be more like 4-5 books. Nobody has that much space in their bookshelf! By the way, Volume 5 is planned for 2020. Only 9 years left.

Exactly. If you want to explain something boring like "why generic functions and not single-object-dispatch," then use examples like these:

A short example: Imagine you have a class human which is inherited by a class male and female. Now as we all have an urge to reproduce where to put a method for having sex? Create a method haveSex in the human class, duplicate it in male or female? What would the argument to such a class be? What about having sex with people of the same sex, toys, animals, buildings...

via /dev/random - Random Thoughts On Programming In Parentheses - Coops - An introduction to chicken scheme's object system.

Tail Call Optimization Decorator - someone taught Python tail recursion as a decorator. Very cool. Someone else picked that up and built two faster versions, which, however, have minor restrictions in use. And at LTU someone also made a version - what's particularly cool about it is that it uses my lazypy module. And then I also found a super-short and fast version that, however, delivers incorrect results if a function is not called in tail position. But since you usually use tail calls in compact recursive functions (or two or a few that do mutual recursion), you should be able to handle that.

App Development Tools Contrib - Yes! This is something many have been waiting for - better tools for OSX programming with CCL directly in the IDE. I hope the next release of CCL is soon stable and includes these tools.

Harmony Of My Dreams | Brendan Eich. Interesting post by Mr. JavaScript. I hope he can push his ideas through and we see them in a future JavaScript, as that would make the language much more pleasant to write in the affected cases, in my opinion.

F-Script Home Oldy but Good! is still actively developed. I still wish for a native class browser with editing capabilities to turn F-Script into a "real" Smalltalk for OSX, but it also serves as a replacement for AppleScript (with drastically more extensive capabilities, as it supports not only the Scripting Bridge but all Objective-C frameworks). And for many purposes, it's close enough to Smalltalk.

Lively Kernel - Lively. Something similar to a Smalltalk system, but it runs in the browser, lives in web pages, and uses JavaScript as the language. Provides typical Smalltalk tools like the class browser and inspectors. And a test on the iPad was not blazing fast, but usable. By Dan Ingalls, the Smalltalk implementer alongside Alan Kay.

Pyrates are cool — A wiki about python game development. That's what it says. Certainly not everything is linked, but it's a wiki, and as a starting point for someone who wants to see what's happening around games with Python, it might be quite interesting.

CLPython - an implementation of Python in Common Lisp. Simply because it combines two of my favorite languages and makes pure-Python libraries available for Common Lisp. Perhaps now some of you can see where my search is heading - to have my cake and eat it too. By the way, CLPython is compatible with Python 2.5, so it's even a fairly up-to-date language level (even though I'm sure I'll miss some things from 2.6, but it's no different with PyPy).

FSet on Common-Lisp.net provides functional data structures as well. This library is also available in Quicklisp, so it's easier to install. And it looks very interesting.

CL-STM is simple Software Transactional Memory for Common Lisp (yes, I'm currently looking at CL alternatives for various Clojure features).

CLAZY: Lazy Calling in Common Lisp provides extended lazy evaluation for Common Lisp that goes beyond the usual delay/force pair.

Funds provides fully functional data structures for Common Lisp. This can be very helpful, especially for multi-threaded code. Unfortunately, it is not yet in Quicklisp.

dcolthorp/matchure - Pattern-Matching on Clojure data structures (not just strings and regular expressions, but also more complex matchings against lists, vectors, maps).

kriyative/clojurejs - GitHub I should check out, is another JS integration, here for a subset of Clojure, which is automatically translated to client-side JavaScript. And this one also supports jQuery rudimentarily.

Welcome to WuWei. Interesting Common Lisp library that makes it possible to program Ajax user interfaces purely in Common Lisp, without having to deal with the implementation in JavaScript. Unfortunately, it is not for my preferred JS library jQuery, but for Prototype and Scriptaculous.

Mozilla Labs » skywriter. And this one just as a reminder that web-based code editors are not really something entirely new.

Life at Eclipse » Blog Archive » Introducing Orion. A browser-based IDE based on Eclipse ideas (but newly implemented, so not just Java applets, but cleanly based on HTML5 and JavaScript). Could be quite interesting - of course, there are the usual naysayers, and of course the web is not necessarily the ideal platform for an IDE. But the web browser is everywhere and access is relatively easy from anywhere. So as an additional option to supplement a normal IDE, it can certainly make sense (e.g. for working on the go via an iPad).

MonoMac - Mono. Let's take a closer look, it now has a more up-to-date packager that includes all the Mono stuff directly into the application. On the one hand, you can then upload apps to the AppStore, on the other hand, it's simply easier to install the applications. And since I have to deal with all the .NET stuff anyway, I can also put it to good use.

Modernizr could be useful if you want to access newer HTML5 features but don't always encounter the latest browsers (basically a browser switch that someone else has already programmed for you and that you can access via CSS rules from stylesheets or jQuery code).

A Type-Safe Database Query DSL for Scala. Sounds interesting, something between LINQ and ORM for Scala. I should check it out when I'm back from the cold.

Sequel: The Database Toolkit for Ruby. Looks quite nice, I kind of like the DSL. Reminds me in parts of Django's ORM.

MacRuby: The Definitive Guide. Book at O'Reilly about MacRuby. You can already read many parts, maybe interesting for one or the other.

hoc - Project Hosting on Google Code. Just blogged about it in case I want to play with Haskell again. HOC is a bridge between Haskell and Objective-C and thus allows access to the OSX frameworks.

emscripten - Project Hosting on Google Code. And this is the tool that brought Python to the browser/server. It converts LLVM bitcode to JavaScript and enables a number of interesting tricks.

pyfilesystem - Project Hosting on Google Code. Could be useful if you want to access different types of filesystems from Python using uniform code.

Monads Are Not Metaphors - Code Commit. Definitely one of the better explanations of what a monad is that I have read.

J Home. Because you should sometimes just take a look at other languages that are so different that you don't even get the temptation to compare them with the usual (and hey, an APL offshoot with an ASCII character set is at least worth some attention once a year). You can also consider it as a high-end calculator.

'surface' plot 1 2 o. / 0.2 * i.60

The Art and Science of Smalltalk is now freely available on the web (PDF link). And where the book is located there are more books about Smalltalk for free download.

Oni Labs: Apollo. Interesting JavaScript runtime for browsers that translates StratifiedJS to JavaScript and thus allows asynchronous code to be written largely as one would write synchronous code. This can be very practical, especially with Ajax, because the actual algorithm is no longer buried in the many callbacks.

Python Package Index : futures 2.0. Just stumbled upon it, one of the features is new in Python 3.2, but the reference implementation also runs with Python 2.6. Basically does something like my lazypy and lindypy (i.e. solves the same problems, but in a slightly different way).

Pharo Open Source Smalltalk. I should take another look at it, as it looks very sleek now and the installation has become really trivial. Clever how a Pharo.App directory is loaded, which is the app for OSX and includes simple startup tools (LNK for Windows and .sh for Linux) for Linux and Windows. Additionally, there is a new VM and the whole thing has become really fast. And it no longer looks so outdated (unfortunately still GUI-in-window and no native windows).

pure sounds very interesting, even if it is of course yet another niche language. But at least it's a rarely trodden (not necessarily new, but not often used in compilers) path. What is particularly interesting is that the interpreter fully relies on the LLVM infrastructure and since 0.45 Pure can directly integrate various languages for the LLVM backends (e.g. C/C++ and with Faust a special language for audio processing). Pure thus goes far beyond simple scripting languages and offers a very interesting alternative to classical FFIs.

Alex Gaynor -- Getting the most out of tox. I should take a look at this - currently I'm quite lazy when it comes to creating unit tests for my projects, usually I only test against the one Python version that I primarily work with and for dependencies I only take the ones that are currently installed on my machine (or in the virtualenv). It would make sense to set up a more comprehensive system for this, just to have more meaningful test results.

coleifer/peewee at master - GitHub. I must have already had it, a small ORM for Python that is based on Django and works with sqlite. Particularly interesting for small web services if you don't want to pull in a large framework, but just want to make the code a bit more readable. Caution: it does not directly support programmer-controlled transactions, but is essentially always in autocommit mode. However, you can change this with relatively little effort if you want - just derive UpdateQuery, InsertQuery, and DeleteQuery and set requires_commit to False on the classes, and define an extended execute method that takes an explicit commit parameter.

Middleware_and_Utilities - WSGI Wiki. If you are working with wsgi as a basis, it is a good idea to check out what WSGI applications and middleware are already available.

Python Package Index : urlrelay 0.7.1. Web services based on gevent require URL dispatching. urlrelay seems to be an interesting small WSGI library that, unlike other systems, does exactly that and nothing else.

rhodecode is something like bitbucket or github. Like bitbucket, it uses mercurial and offers various tools in the interface. The special thing? The code is free and thus something like Bitbucket for self-hosting. Maybe an alternative to Trac.

Bottle: Python Web Framework I should also take a look at as an alternative to web.py - because in Bottle the app is simply a collection of functions with routes and mappings and not always a class. In addition, the functions can have different parameters for different verbs and JSON is directly supported as an output format. For web services, this sounds even more streamlined than web.py - and it also looks cleaner in structure to me.

RecordExtension - Mercurial. Great, I hadn't noticed this before. With this, you can select individual patches to commit when you've done several things at once but don't want to commit them together.

Mrdoob/three.js - GitHub. 3D Engine in JavaScript. Actually, I don't have a real application for this at the moment, but it could be quite practical for visualizations. And well, it's just cool, that alone justifies a blog post.

Namespacing in JavaScript. Everything you always wanted to know about it but were afraid to ask. Or also: why syntactic support for namespaces is overrated and plain old objects are sufficient.

For those who need to fiddle with bytes in Clojure: gloss. At the moment, I don't have an application for it, but I'm bookmarking it for later when I have to deal with binary data again.

Clojure Libs and Namespaces: require, use, import, and ns - 8th Light Blog. Just a brief overview of the different namespace functions in Clojure.