Created a shortcut cheat sheet for the clojure foreplay vim plugin

In Meikel Brandmeyer’s post „On the state of VimClojure“ he mentioned the alternative „foreplay“ to his vimclojure repl solution which is using ng-server.

I tried the plugin and liked it. It has a more robust feel and very easy setup – none required to be precise. You can simply start your nrepl using lein repl and the plugin automagically talks to it.

There are quite some useful shortcuts you should know, therefore I created a foreplay-cheat-sheet (PDF) which might be helpful at the beginning.

Maybe the more often required commands should be on top, but I guess you’ll learn those quite fast anyway.

I created it manually from the foreplay vim documentation, so the content is actually from Tim Pope. The office document is available here foreplay-cheat-sheet.odt

hth

XBMC windowed mode calibration (overscan) settings not remembered

I love XBMC, it is a great free media center, controllable via android phone with lot’s of cool plugins and even blue ray support.

But there was this bug annoying me. I am using two monitors and want to keep the mouse non captured, therefore using xbmc in maximized windowed mode instead of fullscreen. This works great but the overscan settings get lost on every restart, hiding great parts of the GUI.

The settings are written correctly to the „resolution“ node in guisettings.xml with the description „Windowed“ but are not loaded. After the next start the default settings are used and the config overwritten.

These forum posts or some posts of them might be related:
http://forum.xbmc.org/showthread.php?tid=104735
http://forum.xbmc.org/showthread.php?tid=132776

I tried to fix the problem myself and got up with a patch. There were a couple of problems preventing the settings from being loaded and applied – see pull request for details. It also seems like it makes sense to reset the overscan settings when the window is resized but upon initial start they should be loaded from the config.

See Ticket http://trac.xbmc.org/ticket/11861
Pull Request https://github.com/xbmc/xbmc/pull/1246

Edit:

Well, the xbmc folks answered quite fast, see below. Too bad but until then I got my patch.

FernetMenta commented
check out #1231
There are (and should) no calibration settings for windowed mode. Your original problem mentioned in the ticket 11861 will be fixed by not grabbing the mouse.

Rome und Felix OSGi

Ich war freudig überrascht, als ich Rome (RSS/Atom syndication and publishing tools) gefunden hatte. Es macht einen soliden, gut designten und dokumentierten Eindruck. Dies und die Tatsache, dass ich ansonsten nichts vergleichbares gefunden habe, ist auch der Grund warum ich so viel Aufwand betrieben habe die Bibliothek zum Laufen zu bekommen.

In unserem Projekt verwenden wir Felix OSGi, was nicht selten zu Problemen bei der Integration von externen Bibliotheken geführt hat.

Im Fall von Rome äußterte sich das in folgenden Exceptions:

SEVERE: Servlet.service() for servlet proxy threw exception
java.lang.NoClassDefFoundError: Could not initialize class com.sun.syndication.feed.synd.SyndFeedImpl
[...]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
[...]

bzw.

SEVERE: Servlet.service() for servlet proxy threw exception
java.lang.NullPointerException
at java.util.Properties$LineReader.readLine(Properties.java:418)
at java.util.Properties.load0(Properties.java:337)
at java.util.Properties.load(Properties.java:325)
at com.sun.syndication.io.impl.PropertiesLoader.(PropertiesLoader.java:74)
at com.sun.syndication.io.impl.PropertiesLoader.getPropertiesLoader(PropertiesLoader.java:46)
at com.sun.syndication.io.impl.PluginManager.(PluginManager.java:54)
at com.sun.syndication.io.impl.PluginManager.(PluginManager.java:46)
at com.sun.syndication.feed.synd.impl.Converters.(Converters.java:40)
at com.sun.syndication.feed.synd.SyndFeedImpl.(SyndFeedImpl.java:56)
[...]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)

Letztere Exception tritt auf, weil ein Property File rome.properties nicht gefunden werden kann und dies nicht weiter abgefangen ist.

Versuch 1: Mit diesem Problem brachte mich google zu einigen Leuten die auch das Problem hatten. Es scheint sogar einen Patch zu geben und eine Rome Version (1.0-osgi) im mvn Repository des Autors. Leider hat dies bei mir nicht zu einer Lösung geführt. Quelle und Rome Bugtracking Ticket dazu.

Versuch 2: Interessanterweise stand auf der Rome Seite auch etwas zum Thema Rome + OSGi, worauf mich google nicht geführt hat. Hier ist von einer rome.pluginmanager.useloadclass Property bei RC2 die Rede. Das Setzen der Property auf true hat allerdings auch nicht den gewünschten Effekt gehabt. Der Code der dadurch ausgeführt werden soll sieht auch nicht so aus als würde er helfen. Wer es dennoch versuchen möchte: Rome Homepage : RomeAndOSGi

Lösung: Was letztendlich funktioniert hat, war den Rat von JS Bournival zu befolgen und die Bibliothek selber zu patchen. Dabei muss nicht der Thread ClassLoader verwendet werden, sondern der selbe, der auch verwendet wurde um die Rome Klassen zu laden. Dieser hat dann auch Zugriff auf die Property Files die Rome in der Exception vermisst hat. (Seltsamerweise macht die 1.0-osgi dies angeblich auch so) OSGi: jumping through classoading hoops

Step by Step + Patch:

Ich habe folgendes gemacht:

Rome 1.0 RC2 checkout:

cvs -d :pserver:username@cvs.dev.java.net:/cvs checkout -r v1_0RC2-CORE rome

(Ihr braucht ein java dev Konto, oder falls ihr eures einmal verlegt haben solltet gibt es eine coole Seite bugmenot welche auch für Burger King Gutscheine sehr hilfreich ist.)

grep -sIR "Thread.currentThread().getContextClassLoader()" .

Eine einfache Suche nach der Verwendung des falschen ClassLoaders zeigt die zu Ändernden Klassen auf. Schön zu sehen dass hier auch mit dem bewährten Copy-Paste-Pattern gearbeitet wurde ;-).

Ihr könnte euch das sparen und einfach den Patch anwenden http://gist.github.com/633790

$ cd rome
$ patch -p0 < rome-v1_0RC2-osgi.patch

Das builden mittels mvn install sowie die Tests sollten durchlaufen und das jar kann manuell in euer maven repository installiert werden.

hth

QBasic on Linux

Mich hat es heute irgendwie gepackt und ich habe meine alten Jugendsünden wieder einmal herausgekramt. BASIC heißt das Zauberwort.

Früher auf dem 486er, den ich von meinem Onkel hatte (vielen Dank an dieser Stelle noch einmal, wer weiß ob mich der PC und das Programmieren ohne dich jemals so gefessel hätte), habe ich sehr viel mit QBasic herumgespielt, ohne ein Fünkchen Ahnung davon zu haben. Es war sehr spannend was man alles mit ein paar Zeilen Text machen konnte, es machte Spaß bestehende Programme zu analysieren, die Hilfe-Funktion zu durchforsten, wilde, durch alle Farben iterierende Schleifen zu bauen. Dass ich dabei den furchtbarsten Code meines Lebens produziert habe, war damals wohl egal.

Ich bin heute jedoch froh, dass ich diese Relikte noch aufgehoben habe, samt einer Kopie von QBasic.

Mit Hilfe von dosemu bzw. xdosemu kann man das Programm (qb.exe) nämlich noch wunderbar starten und seine alten Machwerke bestauenen. Vielleicht führe ich mein großes Spieleprojekt „Hunt“ einmal zu Ende … im Rentenalter.

Freebasic habe ich auch probiert zu verwenden, es war auf die schnelle aber nicht auf AMD 64 zum laufen zu bringen, 32Bit X Libs gefehlt und den Code habe ich nur als BASIC Code gefunden …

Anbei ein paar Screenshots von qb.exe auf dosemu.
(Für irgendwelche Schmerzen, geistiger oder körperliche Art dir durch den Anblick des Codes entstehen könnten übernehme ich keinerlei Haftung.)

GP2X revival

Ich habe mir endlich mal wieder eine neue SD Karte geholt und die Chance genutzt um meinen guten alten GP2X F100 MK1 auszupacken. Damals hatte ich mir gleich einen aus den ersten Fuhren ergattert und habe mich schon riesig gefreut Emulatoren zu zocken, Videos zu schauen und selber Anwendungen zu schreiben.

Nunja an Anwendungen ist dann nicht sooo viel dabei heraus gekommen, ich habe eine Version von Game of Life für den GP2X geschrieben, sowie eine Version von einem Rubik’s Cube in 3D in der Mache. Dieser ist allerdings noch nicht fertig. Mal sehen ob das überhaupt noch was wird.

Infos über den GP2X gibt es auf der deutschen Portalseite gp2x.de. Wichtige Anlaufpunkte sind hierbei das Forum, Wiki und das Dateiarchiv.

GP2X of Life

GP2X of Life in git
GP2X of Life im GP2X Archiv
Eine Version von Game of Life für den GP2X handheld. Mit der SDL auch unter Linux ausführbar.
GP2X of life screenshot

Man sollte jedoch nicht verheimlichen dass das gerät mittlerweile schon einige Jahre auf dem Buckel hat und es demnächst die Pandora gibt. Mit WLAN und allem Schnickschnack. :-)