programmierung - 4.7.2012 - 22.10.2012

jq. A very cool tool for someone who has to deal with JSON a lot, especially in the Unix shell. The tool can process JSON data with functions that are inspired by sed, awk, and grep. And you can pipe jq in a Unix-typical way or even use internal pipes in transformation expressions à la awk. And it all comes as a single-executable without runtime libraries except for libc - so it should even work as a static binary and thus be trivially installable with scp.

XKCD plots in d3. And this in JavaScript and directly in the browser. Would be something for the math fans out there who always think they have to post plots.

IBM Worklight - Mobile application platform. Eclipse-based and presumably Java-infested in a typical IBM fashion, but still perhaps worth a look: an IDE for mobile applications that a) includes both client and server and b) supports multiple target systems (iOS, Android, web applications). So basically something like Titanium Appcelerator or Phonegap, but with server infrastructure and management tools included. And you can choose how portable you want to be and integrate native extensions if you need them (and of course sacrifice parts of portability in the process).

Moby is a package for Racket with which you can create Android programs. Integrated in DrRacket, you also have a suitable IDE in which most things can be tested. So much to try out, so little time.

PharoDroid is an implementation of Pharo that runs on Android tablets - but really like on the desktop, so no special touch support. Therefore rather cumbersome to use, but it's a start.

LLJS : Low-Level JavaScript. I don't understand what the point is of compiling a low-level language (a JavaScript dialect with C-like type definitions and constructs) to JavaScript, which is not exactly low-level in its execution model. But in case of doubt, the standard argument applies: because it can be done! However, this is probably more of a project that I only link to because it's weird, but I probably won't use it myself anytime soon.

Comtypes: How Dropbox learned to stop worrying and love the COM. Filed for future use. Accessing COM APIs in Windows from Python with fairly lean means. Could be interesting for one or the other admin tool in the company.

DataNitro. If you want to program your Excel spreadsheet in Python, this is the place to go. Might be interesting for one or the other number cruncher who uses Excel as a frontend.

Pyjnius: Accessing Java classes from Python | Txzone. Very interesting side project of Kivy - with this you can quite easily integrate and use Java classes in Python without having to switch to Jython. It is based on Cython and JNI and integrates directly into native Python. Kivy is slowly becoming a real alternative for Android development that I should take a closer look at.

X11-Basic Homepage. And since I'm on the topic of Basic - X11 Basic is a GFA Basic clone that has many extensions and runs on all possible systems. Among other things, there is also an Android version - although on my Galaxy Nexus the font is no longer elderly-compatible and on the Nexus 7 I'm considering reaching for a magnifying glass. With this Basic, however, it's more about being able to maintain old habits rather than really working with the new systems - the Android specifics are quite manageable.

RFO BASIC! for Android. Fun system to play interactively with Android stuff - and especially to do that on the go. Basically a souped-up Basic with support for various Android sensors and access to all kinds of system services (e.g. SQLite), so you can really do a lot with it. Basic programs can even be converted into APKs that can be distributed as standalone apps. This brings back the feeling of programmable calculators from the 80s - amateur programs, but self-made hacks and tools.

Jforc Contents. J for C Programmers. To make their brains smoke and steam. Which is not always a bad thing. There is even J for Android, so you can play around with it on the go. Especially compact languages are particularly pleasant on mobile devices with small screens. More functionality fits in when the function is noted compactly. However, you then also have to live with the fact that the code looks a bit like line noise.

toastdriven/django-tastypie. I think I've mentioned this before, but it doesn't matter, it still looks interesting - an alternative to django-piston with significantly more functionality (for example, quite extensive options for authentication and authorization). What does it do? REST interfaces for Django models including their relations. In various formats (XML, JSON, YAML).

linq.js - LINQ for JavaScript. What it says on the tin. LINQ for JS objects and arrays. Which can make the code more readable when dealing with structured data from services that are rendered in the browser via JS.

Postgres-XC project Page. Multi-Master (Read and Write) Cluster for PostgreSQL. Supports replicated setups as well as partitioned setups (or mixed forms).

Online Python Tutor - Learn programming by visualizing code execution. Great if you're learning Python as a beginner and want visual support to understand what the code is actually doing.

pyMCU - The Python Controlled Microcontroller. Alternative for those who would rather use Python instead of Arduino and its Processing-based development environment. Since I've been playing around with Android, Java has lost much of its terror for me; you get used to everything. Presumably, my COBOL experience from the first 10 years of my career helps here; once you've been through that, almost everything is acceptable.

amoffat/sh. Cool little module that integrates external commands as if they were functions. You simply call a function git with a few named parameters and get the git output as a string. Makes shell scripts in Python much more compact and readable. Exactly the right thing for sysadmins.

Android Bootstrap. Hmm, maybe I should check it out - it should help you get a framework for an application done faster than if you manually put all the pieces together yourself. The idea behind it is a bit like the various HTML and CSS bootstraps - a base that you then further edit. Although I don't find the normal Android APIs so terribly complicated in general.

Buildroid for VirtualBox | BuilDroid. An alternative for AMD CPU owners and VirtualBox users to the previous part from Intel: this starts Android in VirtualBox and makes it available as an emulated system. Sounds quite interesting, especially since I already work a lot with VirtualBox and therefore this might be less stressful for me.

Supercharge Your Android Emulator Speed - Developer.com. Interesting - Intel has its own Android images based on x86 and a virtualization driver that allows the Android emulator to run at native speed. The downside is that it conflicts with VirtualBox and you can only run one or the other. But if you absolutely have to work with the Android emulator (e.g. because you don't have a developer device with you or because you can't have all device forms as hardware), this is definitely still interesting.

Lazarus 1.0 release available for download. Great, the Pascal IDE is now available in version 1.0. And also for OSX. I've always played around with the pre-releases and it's really impressive what's all included. Nevertheless, I ended up with RealBasic, but I still have Lazarus and FreePascal installed and play around with them from time to time.

Cameron Lairds personal notes on varieties of Python implementation. And if by now there are too many Python variants to keep track of: someone has already done that, keeping track. And yes, there is a whole bunch of different distributions and implementations.

Numba vs Cython - Pythonic Perambulations. Another alternative to Cython and PyPy, with which you can marry LLVM and Python for performance gains. Here, real Python code is accelerated without modification via decorators, which is an extension to normal Python, so all libraries remain available and only the performance-critical routines are post-processed with LLVM.

KDE Necessitas project - Welcome to KDE Necessitas project. Hmm, it has received a new homepage, but more importantly, a new Alpha4 which will soon become Beta1. And from Beta1, ABI compatibility is guaranteed and then it will be a real alternative for Android development. Ok, C++ is not really much better than Java for me - quite the opposite. But it has the advantage that you can write apps with QT and C++ that can be made available as desktop applications with little effort. So just take a look when I find the time.

rawson.js - a camera raw previewer in javascript. Jupp. A RAW module for JavaScript. It's crazy what can be built with JavaScript. Although, after the PC emulator running in the browser that boots Linux, nothing should surprise me anymore.

commonsguy/cwac-anddown. Another Markdown implementation - this one uses sundown internally and JNI and the NDK to have a fast implementation of Markdown on Android. Worked flawlessly for me with the Nexus.

LuminosoInsight/python-ftfy. A handy little tool that cleans up various inconsistencies in text encodings after something has gone wrong. This is of course no substitute for correct use of encodings in Python, but sometimes you get your input from external sources (or have legacy data from old programs from times when the whole Unicode stuff was not yet so well developed) and have no influence on how the data looks - in that case, this is a very practical little tool.

kmike/marisa-trie. Very practical - there are quite a few things done in Python with Dicts that actually belong in other structures. Especially the prefix search and the search for existing prefixes is practical. And all of this with a C extension also quite fast.

Arduino - MacOSX. What fascinates me about Arduino: the simple interface of the IDE (which is just an enhanced Processing) and the pile of crazy projects around it, such as Digispark, a mini-board that can do less but is tiny and runs directly from the USB port. You can really think about things like water level sensors for plant irrigation or similar. With the prices for the mini-board, this becomes directly realistic.

myabc/markdownj I should check out, because JMD is somehow still a bit buggy and the developer is no longer doing anything with it. This is a port of the original Perl sources, so it heavily uses Regular Expressions, but that shouldn't really cause big problems with my UniversalBrain program structure, since I cache the HTML output. Maybe it behaves better than JMD. Although, of course, the question is whether it can be properly integrated as a library.

mitotic/otrace. Interesting alternative Python debugger designed for debugging and tracing multithreading applications. It's less about stepping sequentially through the Python code and more about analyzing an environment that dynamically changes through threads (the normal Python debugger is a bit cumbersome here).

Cletus/jmd. Since PegDown doesn't run on Android because the underlying parser wants to generate a dynamic parser class, which is not allowed there, take a look at this. It should also be quite comprehensive and is based on the Markdown# project for C#.

mitmel/SimpleContentProvider. Looks like a simple ORM that automatically generates an Android Content Provider. This makes the creation much slimmer in code.

sattvik/neko. Also noted for later, Clojure for programming Android applications with a few bindings for the Android APIs. Although the question remains whether they have tackled the startup problem, or if that still limits the use of Clojure.

ActionBarSherlock - Home. For later use: this allows you to use the ActionBar in code even on older Android versions, it automatically uses a backport if no native ActionBar is available.

sirthias/pegdown. Interesting Markdown implementation in Java, based on a real parser and not the usual ad-hoc parsers or collections of regular expressions. Could be an interesting starting point for me, especially since it also comes as an Idea project and I should be able to integrate it quite easily.

n8han/giter8. And another practical tool, not necessarily Scala-related, but very useful: templates stored on GitHub are used to set up project structures. There is also a template for Android projects that use Scala.

Getting started · jberkel/android-plugin Wiki. And here is the central element for Scala programming for Android. This provides various sbt commands that handle Android integration and delivery.

mpeltonen/sbt-idea. Hmm, interesting - an sbt plugin with which you can generate Idea project structures. With this, you can then use the IDE at the points where you want to use it on the same project. For example, for remote debug integration, the IDE is quite nice.

Android programming with Scala. A bit stilted language, but useful content. The article provides a nice overview of what you gain when using Scala for Android programming. I need to take a closer look at this myself, as typing in Java sometimes gets on my nerves. Additionally, a workflow with sbt and a normal editor sounds much leaner than the various Java IDE environments. And some Scala language features practically scream to be used in the Android environment (especially traits).

OrmLite - Lightweight Object Relational Mapping ORM Java Package. Let's take a closer look, an ORM that can also be used in Android. Programming SQLite directly with SQLiteDatabaseHelper just isn't that much fun for me. It's a bit too low-level.

Create a package for Android for Kivy. I think I need to take a closer look at Kivy. They are now working with Python for Android, their own Python distribution that brings a customized interpreter for Android and a coupling via Cython, NDK, and JNI to the Android SDK. This way, you can produce real APKs that can be installed normally on devices - but write everything that makes up the application itself in Python. Of course, the question remains how fast it will run - Python is interpreted after all. But it would definitely be interesting for tools, especially since you can also run Kivy applications more or less directly under desktop systems.

Plop: Low-overhead profiling for Python. I need to take a closer look at this, it could be very interesting for the company's servers, especially the low profiling overhead of only 2% sounds exciting. And the visualization is definitely one of the better ones for Python profilers.

Custom Drawn Interface/Android - Lazarus wiki. Hah, there is also quite a bit for FreePascal and Lazarus (the FP IDE with a touch of Delphi) regarding the programming of Android apps. It's all still a bit wobbly and hacky, but it's making progress. The idea is quite funny - a minimal Java app with minimal activity and then the integration of Pascal code via JNI. The idea there is to be able to continue using the LCL - the GUI library of Lazarus - so that you can program across systems. And you can then also use the built-in GUI Builder.

Basic4android Basic for Android - Rapid Application Development. Heh, nice, a kind of Visual Basic for Android. Unfortunately only for Windows. Too bad.

Android - Processing. Oh, that's interesting. The latest Processing 2.0 Alpha can also directly support Android - and it's really simple, just write a Processing app, switch to Android and use "Run on device" to bring it all to the device and start it there. That sounds really interesting for the typical small hacks, especially if you want to play around with graphics (that's the focus of Processing).

necessitas / Home / necessitas. Hmm, sounds quite interesting - a QT version for Android including an IDE for programming apps. Maybe I'll check it out when my Nexus is here.

Ymacs -- An Emacs-like editor for the Web. As the title says. Emacs now also boots in the browser. However, there is still no usable editor for Emacs.

OscarGodson/EpicEditor. That sounds interesting - a web editor that doesn't just produce HTML, but Markdown. Could be interesting for some projects.