programmierung - 24.6.2011 - 27.7.2011

Orange - Data Mining Fruitful & Fun. Wow, just stumbled upon this, I didn't know it, I think. A GUI interface with a node interface for defining data analyses and visualizations, where these nodes are programmed in Python. The entire interface is built with QT, so there is also an OSX version of it. If you need to sift through larger amounts of data, this is definitely worth a look, especially since it is open source and you don't lose anything there.

Sage: Open Source Mathematics Software. Simply because I've been thinking about worksheet interfaces lately and considering what options there are - Sage is not just a math package, but primarily a huge collection of Python modules and a worksheet interface for Python as well. Okay, you use a web browser against a locally running web server, but still, it's actually a nice thing. And meanwhile, version 4.7 with many changes is out. And you can repeat good things. It's definitely cheaper than mathematics and I also like Python much better as a programming language. Since I will probably eventually install my own server to access notebooks from anywhere, here's a blogmark on a guide on how to build your own Sage server with Ubuntu.

The Xavisys WordPress Plugin Framework - Xavisys. Interesting if you want to build your own plugins for WordPress, as it takes care of some of the standard tasks and makes the code simpler.

Creating Apps Using AppleScript Objective-C. Maybe I should just get the book here to satisfy my (rather perverse) curiosity about the AppleScript/Objective-C Bridge.

SuperCard on Lion. And since I just wrote about HyperCard, its spiritual successor - SuperCard - still exists and has been made fit for Lion again. But it's still a Carbon application, so its days are probably counted (or it will become increasingly difficult to integrate SuperCard into current developments if a switch to Cocoa does not take place). And I'm still tempted to buy it, even if it's just for nostalgia. The hacking feeling of HyperCard I only experienced again later in Smalltalk environments (and they are unfortunately also rather dead under OSX).

Mac OS X 10.7 Lion Automation Release Notes. The worst language invention since HyperTalk has received a bunch of extensions in the Lion version, especially the integration of the Objective-C Bridge into the Apple Script Editor is funny - you can directly access Cocoa frameworks in scripts with it. Even though I believe that AppleScript has probably driven more programmers crazy than it has made life easier for users, it is always interesting from a linguistic historical point of view to see what is happening there. Since Snow Leopard with the Objective-C Bridge, it has been on the rise again and even in the current XCode 4.1 you can put applications together completely with the Interface Designer and AppleScript. Unfortunately, the application structure under Cocoa is definitely not suitable for non-programmers, so XCode with AppleScript applications is not really a revival of HyperCard (the only reason why I forgive HyperTalk - it was the language in this pretty brilliant little tool with great reach).

XMPPFLASK — XmppFlask v0.1 documentation. Definitely an interesting project - an XMPP bot in Python that has a similar structure to Flask, so simple definition for XMPP handlers with routing of events. Since I always wanted to take a look at XMPP as a backbone for distributed (so widely distributed) applications with online/offline capability, I've blogged about it.

flot - Attractive Javascript plotting for jQuery. Again something for the number crunchers, or rather their visualizing colleagues - presenting number deserts in attractive graphs, and all as a jQuery plugin. I definitely need to take a closer look at this, could be interesting for a specific project.

clojurescript demo convex hull. A demo for programming client-side code in Clojure using Clojurescript. Clojurescript compiles Clojure to JavaScript using the Google Closure Compiler and the Closure Library. Looks like a very interesting way to program clients, especially since Clojurescript is supported by Rich Hickey, the inventor and main developer of Clojure, so we can assume that the integration into the Clojure world will be good.

Pattern Matching In Python. Interesting article for people like me, i.e. for people who like Snobol4 or its "successor" (in quotation marks, because it is then a completely different language) Icon and would like an alternative to regular expressions. Implements a pattern-matching system very similar to the Icon model, complete with backtracking and generators. However, it is from 2004 and is rather a proof-of-concept story, not necessarily a directly usable and installable Python module. Unlike SnoPy, it is pure Python and not a Swig-based wrapper for an Ada Library.

Bash on Balls. For the moments in life where even Visual Basic would be too much - a web framework for Bash scripts. Naturally uses a few Unix tools in addition, especially Netcat for network I/O. And yes, it comes with a complete server and everything, just as one would imagine. Even has Dev-Code-Reload and such things, as well as a template language. And with BoB a nice acronym. (and unlike Cobol on Cogs this is a project that one can actually run and not just a joke)

FAQ - Kotlin - Confluence. The fifty-third Java-killer language for the JVM, which also attacks Scala here (the usual argument "Scala is too complicated", which on first glance is indeed true - Scala has few central basic features, which are then provided with many features for the programmer by the standard library and the good DSL possibility at the surface of the actual language). The question remains what will come of it, but since JetBrains is behind it, it will at least have a good IDE (JetBrains builds IntelliJ and other JVM IDEs, including PyCharm and with AppCode the only current OSX Objective-C alternative to XCode). And hey, anyone who names their language after an island near St. Petersburg already has a head start with me.

WSGID When your WSGI app becomes a nix daemon. Mongrel2 by Zed Shaw has interested me for quite some time, but the biggest drawback was that there are not many Python frameworks that work directly with Mongrel2. wsgid solves the problem, it is a WSGI server for Mongrel2 and can thus then connect frameworks that can run under WSGI - for example, Mongrel2 can be used as an HTTP server for a distributed Django installation. By using ZeroMQ in Mongrel2, the whole thing is then significantly more flexibly structured than with the classic (FCGI-based) server integrations.

Elnode - an Emacs version of node.js. Another project from the "because it can be done" category - I don't believe anyone would spontaneously answer "Emacs" to the question "how do I want to run my web services". But well, the operating system with built-in basic text processing functions can also represent an asynchronous web server.

Replication, atomicity and order in distributed systems. A very interesting article about distribution and ordering in distributed systems with parallel execution - because it's not really trivial. Worth reading just for the links to various projects in that area. At the end a bit of a cliffhanger, because it refers to an upcoming article - hopefully it will come, because its topic sounds interesting too.

Kivy: a crossplatform framework for creating NUI applications. Interesting new GUI library for Python, runs on various platforms (and in addition to the three major desktop environments, Android is already included as a mobile one) and can use OpenGL to accelerate output (internally they have a JIT that compiles the basic functions and thus enables fast execution).

Simple, Secure, Scalable Web Development with Opa. The Opa book is, at first glance, a very comprehensive introduction to the Opa language and its motivation. What also excites: the installation under Linux is based only on basic packages, you don't first download half of the internet and install just because you want to use a language. (What is rather not so positive with Opa experiments: very long compile times - even the examples provided in the book, which are not exactly overwhelmingly large, quickly reach quite significant 15-20 seconds ...)

Bulbflow: a New Python Framework for Graph Databases. Even though I keep thinking that graph databases are so 70s, not everything old is automatically bad - IMS is still around and very interesting for some purposes. And this sounds interesting, something like DBAPI for graph databases, so that you can change the database in your projects without having to rewrite everything completely.

The Pragmatic Bookshelf | Core Data. The book sounds quite interesting, Core Data is also fully supported in MacRuby, so it might be interesting to get and read it.

Responsive Applications - Mono. An article about the different ways to build applications with GTK# so that they respond quickly and do not block the user interface, even though GTK# is single-threaded (i.e., the UI can only be accessed by the GTK# thread).

MonoMac and XCode 4

Ouch, that really got me - I wanted to play with the GUI tools, but MonoMac doesn't fully support XCode 4 yet and only has this to say:

Developers that use Interface Builder are recommended to install Xcode 3.2.6 for the time being. MonoTouch News.

The bad part: that's from March. That's way too long without support, so MonoMac is just half a tool (if at all). Running XCode 3 and XCode 4 in parallel is also not an option (both want to be in the same folder). De facto, you're either stuck with XCode 3, or MonoMac is out. Or you build your GUI with GTK# - then XCode doesn't matter (the compiler part of XCode 4 is supported), but then you can forget about the AppStore (and GTK# doesn't really look great). Damn.

Jtalk Smalltalk. No idea why this has slipped past me so far - but a rather complete-looking Smalltalk implementation in JavaScript including an IDE with a class hierarchy browser is quite remarkable, even if it's not the first project of its kind (Clamato would be another, but that seems largely dead).

jQuery vs MooTools: Choosing Between Two Great JavaScript Frameworks. I've lost a bit of touch with MooTools, but before I got to know jQuery and its many plugins, it was my preferred JavaScript library. So it's interesting to read how it compares to jQuery (written from the perspective of a MooTooler).

asuhan / happy. Also not uninteresting: a PHP interpreter and compiler in Python based on the PyPy toolchain. Okay, it's not a showstopper, I don't think I've often had the question "how can I execute PHP code in Python" - but for example, if a site based on Django wants to provide users with PHP as a scripting language, something like this could become quite interesting - PHP is after all one of the best-known scripting languages for the web, but Python with some frameworks is simply much more interesting from a production perspective.

cfbolz / Pyrolog. Had I already seen this? A Prolog interpreter in Python that uses the PyPy toolchain. Could be very interesting if you need a bit of rule logic in your programs but don't necessarily want to use external tools for it.

The Node Beginner Book » A comprehensive Node.js tutorial. If I really want to take a closer look at Node.js again, this (free!) book could be helpful. Or for others who have the same plan.

JQuery-Wysiwym - PushingKarma. Something that could become interesting for me: a Markdown (among others) converter in JavaScript. Can be used to build a live editor for Markdown code. Could this be extended for Restructured Text? Because that is one of the problems I sometimes struggle with, that I have ReST as input for Docbook/XML output, but then no suitable graphical editor.

pdf.js reached its first milestone. And since we're on the topic of JavaScript and PDF: with this project you can display PDF files without a PDF reader - just with HTML5 and JavaScript. Very interesting, if this is further developed, it could make the PDF reader completely unnecessary in many places.

PDFKit — A PDF Generation Library for Node. I think I should take another look at Node.js. And CoffeeScript. This PDF generation looks very interesting and could be quite practical for some projects. However, with such libraries, I always miss the high-level part - the actual layout. When will someone build a TeX engine in JavaScript? Hyphenator already provides very good hyphenation, but what is simply missing is a good layout engine for distributing text on defined pages. And please also with good support for table setting.

manuel/edgelisp. Because I can never keep my fingers off the parentheses - a Common Lisp dialect and its implementation that compiles to JavaScript and makes the Lisp code executable in the browser. It seems quite complete - many other projects only show the rudimentary elements, but here there are already generic functions and macros.

Paver/paver. Sounds interesting, like a mix of SetupTools/DistUtils and Make (or their high-level counterparts Rake/Cake). I might take a look, as it could be quite practical for Python projects - although the standard Python tools are already quite useful.

PerlDancer - The easiest way to write web applications with Perl. To complement my collection of Sinatra-inspired microframeworks for web applications, here's one in Perl. Not that I would necessarily want to use Perl again - it's rather listed here for completeness.

danlucraft/git.js. Wow, impressive. And potentially very interesting - git as a general synchronization mechanism is extremely practical and integrating git functionality into web applications could solve some problems well (e.g. when it comes to synchronization with other places, or of course for document-internal versioning). I have to take a closer look at some point, I already have one or two ideas on how I could use it. It's still quite rudimentary at the moment, but it's definitely worth keeping an eye on.

Stiivi / cubes. Just bookmarked for later: an OLAP library in Python that can be built on SQL databases or MongoDB. This could be interesting for some things at work.

Tree for policy-settings-basic in MeeGo Multimedia - MeeGo. Since it is often claimed that Prolog is such an esoteric language that no one would use in normal life: the part of MeeGo (we remember, this is the handset operating system from the Nokia N900/N950/N9) that triggers various settings depending on environmental conditions is written in Prolog. And it runs productively on the handsets.

DropKick - a jQuery plugin for beautiful dropdowns. Looks nice, even if it is of course mainly a visual gimmick. But sometimes visual gimmicks are also necessary.

Prowl - iOS Push Notifications. Is a very practical tool for the iPhone or iPad as a supplement, because you get nice APIs with which you can, for example, send messages from servers to the iPhone. Or you use Send2Prowl from Firefox or Prowl from Chrome to send a link directly to your iPhone.

Opa: Advancing web development to the next generation. I think I mentioned this in the old blog, but what the heck - now the code is on github and under an open source license. And the entire project is not just something that has recently come out - it has 10 years of research behind it, the people really know what they are doing. The idea is cool (and has already been adopted by others as well): a language from which all layers of web applications are generated, including JavaScript, HTML, CSS, and the backend. All of this with type safety and corresponding checks and, for example, resulting security against injections and XSS attacks. And the language runs on OCaml underneath, which is also not the worst language. I should really seriously deal with this, especially since distributed installation comes along with it - and thus a far easier scalability is given than with many other approaches (the one from OPA reminds in a certain way of the one from Erlang-based systems). Oh, and web applications are then simply just a single executable - and not gigantic directory structures with thirty-nine XML files (or YAML files) to customize.

SymPy. Symbolic mathematics with Python directly in the Python shell. Together with NumPy for matrix operations and SciPy for various other scientific functions, Python becomes quite a respectable mathematics system. Nothing really new except perhaps SymPy itself.

PyPy Status Blog: Global Interpreter Lock, or how to kill it. Wow, that sounds good - the PyPy project wants to mitigate the GIL through STM (Software Transactional Memory) - and has quite an interesting approach for that. Some things are only possible through PyPy, because the corresponding infrastructure for code transformations is available there, which is missing in CPython.

jsPlumb for those who want to display diagrams (i.e., connected graphs of objects) and need to fiddle with them to see them better or to structure them. Or simply because it's funny and cool.

Paper.js is a graphics engine for the Canvas element. It all looks very nice and has a lot of features. It's impressive what you can do with JavaScript in the browser - and this could be interesting for projects, unlike booting Linux. It all comes from the Illustrator environment and is oriented towards Scriptographer, a plugin for Illustrator with which you can program graphics elements in JavaScript.

Sync BitBucket and GitHub - Ramanas Blog. If I ever want to switch, or simply want to provide repositories for both git and bitbucket, this could be helpful. Also just to convert repositories.

Issue Bucket. There is also a BitBucket client for iOS, but it is riddled with iAds and unfortunately very limited in features. And it looks more like a finger exercise in surface design - very plain, one could almost say "loveless". But at least you can get to the most important things to look at and it costs nothing.

iOctocat is your GitHub companion for the iPhone and iPod Touch. GitHub is becoming increasingly interesting - there is also an interesting GitHub client for iOS. And it is Open Source.

NancyFx/Nancy. Nancy is already much closer to Sinatra or Scalatra, but is actually based on C# - but maybe you can also just write modules in F# there, the interoperability of the two languages is very high (comparable to Scala and Java).

Bistro. This is now a web framework for F#, inspired by Django (among others). Unfortunately not as lean as Scalatra or other micro-frameworks, but perhaps still worth a look.

scalatra/scalatra. This is something like Sinatra, but not for Ruby but for Scala. It has direct support for Scalatest and also offers some nice features and DSLs to quickly and simply get to the result - could be interesting especially for creating web services in Scala.

The Larch Environment. Worth a look - a visual programming environment for Python. Interesting detail: objects are not just displayed textually, but also graphically represented via a dedicated mechanism - sounds a bit like output-recording from CLIM. Additionally, the whole thing is structured more like an interactive document - comparable to various mathematical systems (e.g., Mathematica or Maxima). Unfortunately, it's not based on the standard Python environment, but on Jython - so JVM as the runtime underneath.

I should check this out - it allows you to run AppEngine programs on your own servers that are based on Django (the AppEngine APIs are emulated using Django means). Certainly better than using the AppEngine Dev-Server directly.