One Vim to rule them all

Der Text hier gehört vermutlich in die Kategorie „Texte, die kaum einen interessieren, da die Userbasis des Themas um ein Vielfaches größer ist, als die Leserschaft“, aber ich schreibe ihn trotzdem.

Vor einigen Jahren kam ich in Berührung mit Cygwin. Dabei handelt es sich um ein Programm, mit dessen Hilfe eine Reihe von äußerst hilfreichen Linux-Programmen auch auf einem Windows-Rechner verwendet werden können. Mit dabei war ein Texteditor für ein Kommandozeileninterface, den ich damals unter den zur Verfügung stehenden Editoren nur als das kleinere Übel benutzte. Die letzten Wochen hat sich das geändert. Und Vim, wie sich der Editor nennt, ist mein neuer Lieblingseditor.

Bei Vim handelt es sich um einen modalen Editor. Vereinfacht heißt das, dass man vor dem Tippen von Text erst eine bestimmte Taste drücken muss, bevor sich auf dem Bildschirm überhaupt etwas tut. Bis dahin bewirken alle Tasten etwas anderes. Eben das war damals der Grund, warum ich mich mit Vim etwas schwer tat. Und eben das ist der Grund, warum ich Vim jetzt für so toll halte.

Im „etwas anderes“-Modus – oder Kommando-Modus – ist die Tastatur vollgepflastert mit Bewegungstasten. Einfach nur die Zeichen rechts, links oder die Zeile oben und unten ansteuern ist nämlich langweilig. Vim liefert die Bewegung jeweils zum nächsten und vorherigen Wortanfang, Wortende, Satzanfang, Absatzanfang, beliebigem Zeichen, gleichem Wort oder Suchbegriff – auch als regulärem Ausdruck. Und das alles, mit nur ein, zwei Tasten und ohne auch nur einmal die Maus in die Hand zu nehmen. Das beschleunigt zwar die Navigation im Dokument sehr, aber der Clou ist folgender: Tasten wie „Löschen“ oder „Kopieren“ verlangen nach ihrer Betätigung eine Bewegungsrichtung. Die Aktion wird dann bis zum Ziel ausgeführt, zu der man sich hinbewegt. Hin und wieder kommt es etwa vor, dass man während des Schreibens eines Satzes feststellt, dass dieser Müll ist. „Löschen… bis letzten Satzanfang“. Fertig. Inhalt zwischen zwei Klammern, Anführungszeichen oder HTML-Tags ersetzen? Drei Tasten. Zeile duplizieren? Dito. Man mag es kaum glauben, aber ich verwerfe häufig einzelne Textpassagen. Und mit dem richtigen Editor kann ich sie jetzt viel schneller entsorgen.

Suchmuster-Hervorhebung ist ebenso dabei wie Syntax-Hervorhebung. Rechtschreibprüfung sowieso. Mehrere Register („Zwischenablagen“), Makro-Aufzeichnung, Wortvervollständigung – sowohl aus dem Dokument als auch aus dem Wörterbuch. Unendliches Undo und Autokorrektur. Ganz allgemein ist der Funktionsumfang bereits ab Werk größer, als ich das von jedem anderen Editor kenne. Und die gigantische Community führt dazu, dass weitere sinnvolle Features über Plugins ergänzt wurden bzw. werden. Das einzige, was ich jetzt an Vim auszusetzen habe, ist, dass die Syntax für reguläre Ausdrücke etwas von dem aus Perl bekannten Quasi-Standard unterscheidet. Aber damit kann ich leben. Besonders, da es ein Kommando gibt, mit welchem man den Text zu Perl und wieder zurück schicken kann.

Nur um das erwähnt zu haben: Ich habe auch von Sublime Text sehr viel Positives gehört – vor allem, dass es eine flachere Lernkurve besitzt als Vim. Aber das hörte ich erst, nachdem ich mich mit Vim bereits eingearbeitet hatte. Insofern kann ich in der Sache nichts Relevantes sagen. Und dann soll es noch sowas wie Emacs geben, was ich noch nie gestartet habe, aber von dem ich hörte, manche bevorzugten das.

Eigentlich wollte ich ja ein gist einbetten.

Mittlerweile kann ich definitiv sagen, dass ich daran Gefallen gefunden habe, Fotos so zu strecken und stauchen, dass das Ergebnis mit der realen Welt nicht mehr viel gemeinsam hat. Es geht in die nächste Runde.

Ich interpretiere jedes Pixel eines Fotos als Punkt in einem kartesischen Koordinatensystem. Soweit nichts besonderes. Dann wird jeder Punkt aber in ein Koordinatensystem überführt, welches den Radius über dem Winkel darstellt. Elemente aus dem Kreisinneren landen an einer Kante des entstehenden Bilds, Elemente aus dem Kreisäußeren an der Gegenüberliegenden. Funfact: Alle so entstehenden Bilder lassen sich horizontal nahtlos kacheln.

Weil ich der Meinung war, das der Effekt toll aussieht und man das Verfahren ohne zusätzliche Handgriffe auf andere Fotos übertragen kann, machte ich mich daran, den Code für irgend eine freie Software zu portieren. Irgendwann landete ich bei ImageMagick. Und während ich die Dokumentation nach den benötigten Stellschrauben durchsuchte, bemerkte ich, dass die Funktion bereits implementiert wurde. Neben gefühlten Millionen anderen, mit denen ich mich demnächst abgeben werde. Für die, die Interesse haben, selbst ein paar Fotos durch den Fleischwolf zu drehen, steht unten das zu verwendende Kommando. Bei den Fotos sollte der Kreismittelpunkt des dargestellten Objekts in der Bildmitte liegen. Ansonsten lassen sich starke Wellen am Rand nur durch zusätzliche Parameter entfernen, was die Stapelverarbeitung verkompliziert.

convert -distort depolar 0 infile outfile

begradigte SonnenblumeOriginal von flickr-User readerwalker unter CC-BY-NC-SA

Weiterlesen

von umfangreichen Alphabeten und unzulänglichen Tastaturen

Telefone, die nicht über eine QWERTZ-Tastatur verfügen (und eigentlich auch solche) haben das Problem, dass sie einen großen Zeichensatz auf eine geringe Anzahl von Tasten abbilden müssen. Wie das gemacht wird, wirkt sich selbstverständlich darauf aus, wie schnell bestimmte Wörter getippt werden können.

Es etablierten sich zwei Verfahren, die sich ein Tastaturlayout teilen. Das Layout belegt die Taste 2 der numerischen Tastatur mit den Buchstaben A, Ä, B und C, die Taste 3 mit D, E und F, usw. Der vollständige Aufbau lässt sich wohl am schnellsten durch Konsultation des eigenen Telefons ermitteln. Wie die Buchstaben erzeugt werden, ist mit dem Layout aber noch nicht geklärt. Denn anders als bei der QWERTZ-Tastatur muss dem Telefon hier noch mitgeteilt werden, welchem Buchstaben man wünscht darzustellen. Je nach Wort und Verfahren ist dieses Mitteilen mehr oder weniger aufwändig. Mir ging es darum, in Beiden lästige Wörter zu finden.

Weiterlesen

dem Erdboden gleichmachen

Nikki Graziano veröffentlichte vor einer Weile ein paar Fotografien in einem Projekt namens Found Functions. Über die Fotos des Projekts wurden Funktionsgraphen so montiert, dass in den Fotos vorhandene Konturen verstärkt wurden.

Etwas ähnliches habe ich mir auch vorgenommen. Statt aber kompliziertere Funktionen zu suchen, die möglichst gut in die Umgebung einzubetten sind, sah ich mir die andere Richtung an – in gewisser Weise analog zum verzerrten Eiffelturm: Das Foto wird spaltenweise (auf Pixelebene) so nach oben oder unten geschoben, dass eine vorher markierte Kurve am Ende eine Gerade bildet. Und da ich Brücken toll finde, zeige ich hier eine Auswahl des erzeugten Outputs. Mein Dank geht an die Fotografen der Originale.

Gaoliang BridgeGaoliang-Brücke, unter CC-BY-SA
Original von Wikimedia-Commons-User Hennessy unter CC-BY-SA

Weiterlesen

Und wenn Sie sich das nächste Mal mit einer Tasse Kaffee in der Hand umdrehen…

Nachdem ich die Ergebnisse des letzten Postings überdacht habe, finde ich dessen Titel äußerst deplatziert. Ja, die neuen Zahlen sind besser als die alten. Aber das liegt ja an keiner Optimierung des ganzen Systems: Keiner hat irgendetwas schneller gemacht, es wurde schlicht nicht genauer gerechnet. Der Titel weckt also unter Umständen Erwartungen, die nicht eingehalten wurden. Da ich das nicht auf sich beruhen lassen kann, gibt es jetzt Nachschub.

Ich setze voraus, dass jeder schon einmal einen Industrieroboter gesehen hat. Den Rest gibt es im Schnelldurchlauf: Die meisten Industrieroboter besitzen mehrere rotatorische oder translatorische Achsen, die derart hintereinander geschaltet sind, dass die Ansteuerung einer Achse alle dahinterliegenden (in Richtung Werkzeug) Armsegmente bewegt. Wie man die Achsen bewegen muss, erfährt man über inverse Kinematik. Angenommen man will von einem Raumpunkt zu einem anderen fahren. Dann errechnet man aus dem Zielpunkt über inverse Kinematik Gelenkwinkel (für Drehgelenke) und Gelenkabstände (für Translationsgelenke). Da die ursprünglichen Gelenkstellungen bekannt sind, muss also nur jedes Gelenk so bewegt werden, dass es die neue Stellung erreicht. Der Roboter ist am Ziel, wenn das letzte Gelenk – das schwächste Glied in der Kette – die geforderte Auslenkung hat. Schneller geht es erst einmal nicht. Es sei denn, die Gelenke betreiben etwas Teamwork…

Weiterlesen

Let’s speed things up a bit.

Draußen herrscht zur Zeit klirrende Kälte. Ein Zustand, gegen den ich zwar nichts machen kann, dem ich jedoch trotzdem mit einem Artikel über etwas sehr heißes entgegentreten will. Dem Erdkern.

Konkret soll es um ein hypothetisches Fortbewegungsmittel namens Gravity Train gehen (eine übliche deutsche Übersetzung ist mir nicht bekannt). Dabei handelt es sich um das theoretische Konzept, durch die Erde einen langen Tunnel zu graben. Dann lässt sich ein Wagen durch die Gravitation an einem Ende des Tunnels in diesen hinein beschleunigen. Bis zur Tunnelmitte beschleunigt er und bremst ab dort ebenfalls durch die Gravitation wieder ab, bis er am anderen Ende des Tunnels – die Reibung ignorierend – zum Stillstand kommt.

Es lassen sich über die Mathematik hinter dem Konzept relativ viele Quellen finden. In etwa 42 Minuten ließe sich jeder beliebige Punkt auf der Erde erreichen. Und das unabhängig von der Entfernung, da bei einem geringeren Abstand von Start- und Zielpunkt, da mit sinkendem Abstand auch die Hangabtriebskraft abnimmt. Das Problem dieser Berechnungen ist, dass alle von einer homogenen Erde mit konstanter Dichte ausgehen, was nicht der Fall ist. Die Erde ist im Inneren wesentlich dichter als außen.

Weiterlesen

Don’t you forget about me.

So ein Verfassungsschutz ist eigentlich eine tolle Sache. Aber gibt’s das nicht auch in unabhängig? Eine Art Verein, der nicht nur den politischen Gegner observiert, sondern wirklich das Schützen der Verfassung als Anliegen hat. Jemand der nicht nur auf Reden mit verfassungsfeindlichen Inhalten achtet, sondern auch auf verfassungswidrige Gesetzesentwürfe?

Es mag durchaus sein, dass ich da einiges zu stark vereinfache, aber ich verstehe es trotzdem nicht: Wenn Mitglieder einer Partei A einer Partei B Verfassungsfeindlichkeit vorwerfen, wieso stört sich keiner daran, dass das Bundesverfassungsgericht regelmäßig Gesetze kassiert, die unter Mitwirkung von Mitgliedern aus Partei A entstanden sind und von diesen verabschiedet wurden?