• Shortcuts : 'n' next unread feed - 'p' previous unread feed • Styles : 1 2

» Publishers, Monetize your RSS feeds with FeedShow:  More infos  (Show/Hide Ads)


Date: Friday, 27 Jun 2014 07:06

Mein Computer ist ein Apple MacBook Pro (early 2011) mit hochauflösendem 15” AntiGlare Display, einer 2 GHz Intel Core i7 CPU und 8 GB RAM. Das ist auf dem Papier so weit immer noch eine schnelle Maschine.

In der Praxis wird das Gesamtsystem allerdings durch die verbaute 500 GB Toshiba-Festplatte mit 5400 RPM ausgebremst. Und zwar nicht zu knapp.

Die Messung mit dem Black Magic Disk Speed Test ergibt auch sehr wohlwollend betrachtet lediglich schlappe 40 Megabyte/s im Lesen und so gerade eben 28 Megabyte/s im Schreiben.

Die Festplatte nutzt die verfügbaren 6 Gigabit/s Bandbreite1 des internen SATA 3 Anschlusses also nicht wirklich aus…

Gerade bei Vorgängen die auf viele, relativ kleine Dateien auf der Platte zurückgreifen, dreht die CPU Däumchen während sie auf die Anlieferung der Datenhäppchen wartet. Das sind bei mir vor allem:

Insbesondere dann, wenn Arbeit mit dem Fotoarchiv und ein2 gleichzeitiger Backuplauf zusammenkamen, war eine angemessene Schwuppdizität in egal welchem Programm kaum mehr zu erzielen.

Glücklicherweise ist der Festplatte als Flaschenhals relativ einfach beizukommen: Man ersetze sie schlicht mit einer SSD. Diese auf Flash-Speicher basierenden Laufwerke sind Festplatten in allen technischen Belangen, vor allem aber bei der Zugriffsgeschwindigkeit, überlegen. Dafür sind Festplatten, besonders wenn man Kapazitäten ab 500 GB betrachtet, um Größenordnungen billiger.

Alternativ hätte ich natürlich eine günstigere, kleinere SSD mit ca. 128-256 GB erwerben können und dann sehr mit meinen Daten haushalten3. Oder die Festplatte mit einem OptiBay-Adapter anstelle des Superdrives in das MacBook Pro einbauen und dort die großen Daten, also in meinem Fall vor allem das Fotoarchiv, lagern. Das erschien mir aber wie eine unvollständige Lösung des Problems, ich wollte gerne alle Daten auf schnellem Flash-Speicher liegen haben.

Nach einigen Jahren4 der Marktbeobachtung habe ich mich nun bei nur ganz knapp über 200 € für eine 500 GB große Samsung 840 evo SSD entschieden. Und ich bin mit diesem Stück Hardware sehr glücklich.

Um es tl;dr-kurz zu machen: Alles was die Leute über SSDs sagen ist wahr. Hat man einmal an einem SSD-basierten System gearbeitet, so gibt es kein Zurück mehr. Never ever will ich noch mal mit einem Computer arbeiten, dessen OS auf rotierenden, magnetischen Scheiben liegt5. Die SSD ist meiner Meinung nach das beste und sinnvollste singuläre Hardware-Upgrade für Computer seit den seeligen Zeiten der 3D-Beschleuniger-Karten anno 1995. Yes, it’s that good.

Wie glücklich genau eine SSD macht, wie die SSD in das MacBook kam und wie meine Daten von den magnetischen Scheiben in die Flash-Zellen übertragen wurden, das alles folgt nach dem Klick…

Vor dem Einbau: Mühsames Daten klonen

Um die Downtime für die Migration auf die SSD möglichst gering zu halten6, habe ich mich gegen eine frische Installation mit anschließendem Restore aus dem Time Machine Backup entschieden. Statt dessen wollte ich einen Klon der internen Festplatte auf die SSD durchführen. Dazu benötigt man nur eine Software die den Klon erstellt und eine Anbindung der SSD an die im MacBook Pro verbaute Festplatte.

Klon-Hardware

Damit der Klonvorgang möglichst zügig vonstatten geht, wollte ich in meiner naiven Art die schnellste verfügbare Schnittstelle am MacBook Pro verwenden: Thunderbolt7.

Dummerweise kostet ein günstiger Delock SATA-Thunderbolt-Adapter immer noch gute 100 €. Thunderbolt-Gehäuse sind noch teurer. Die nächst schnellere FireWire 800-Schnittstelle8 verursacht ähnlich hohe Kosten, USB 3.09 ist an meinem MacBook Pro nicht vorhanden.

Also habe ich dann anstelle einer modernen Schnittstelle ein schnarchlahmes aber eh da USB 2.0 Festplattendock benutzt. Für einen einmaligen Vorgang ist das auch ok und, spitz nachgerechnet, gar nicht so schrecklich viel langsamer:

USB 2.0 bietet eine theoretische Bandbreite von 480 Megabit/s, also respektable 60 Megabyte/s. Da USB 2.0 aber nur Half-Duplex arbeitet und noch etwas Protokolloverhead hinzukommt, landet man in der Praxis irgendwo im Bereich von 30-35 Megabyte/s. Und das ist dann auch nicht mehr so viel langsamer als die oben gemessenen 40 Megabyte/s, die die Toshiba-Festplatte maximal auf den Bus liefern kann…

So betrachtet ist nicht mehr wirklich viel Geschwindigkeitsvorteil übrig, den man mit 100 € oder mehr erkaufen würde.

Klon-Software

Unter OS X gibt es seit vielen Jahren zwei erprobte, kommerzielle Programme um einen bootbaren Klon einer Festplatte zu erstellen:

Außerdem kann man das ganze natürlich auch mit dem integrierten Festplatten-Dienstprogramm oder dd erledigen.

Ich habe mich für den Carbon Copy Cloner entschieden, da dieser die einfachste Möglichkeit bietet die seit OS X 10.7 Lion vorhandene Recovery-Partition zusammen mit der OS X Partition zu klonen. Diese spart nicht nur ein knappes Gigabyte Download aus dem Internet wenn man OS X einmal neu installieren möchte, sondern bietet zusätzlich einige andere praktische Funktionen und ist auch die Voraussetzung für die Verschlüsselung des Laufwerks mit FileVault 2. Das möchte man also haben.

Was mit dem Carbon Copy Cloner nicht geht, ist das Klonen einer eventuell vorhandenen BootCamp-Partition mit Windows10, YMMV.

Klon

Damit der Carbon Copy Cloner mit der SSD arbeiten kann, muss diese zunächst mit dem Festplatten-Dienstprogramm als Mac OS Extended (Journaled) formatiert werden. Ich habe die SSD bei der Gelegenheit auch gleich Macintosh HD genannt11.

Ist dieser Schritt erledigt, öffnet man den Carbon Copy Cloner und bestimmt im wesentlichen nur die Quelle und das Ziel des Klonvorgangs.

Man wird außerdem, wie oben erwähnt, automatisch darauf hingewiesen, dass nun eine gute Gelegenheit wäre, die Recovery Partition zu klonen. Das geschieht dann einfach per Knopfdruck in der Carbon Copy Cloner Festplattenverwaltung.

Nach einem deutlichen Hinweis darauf, dass Daten auf dem Ziellaufwerk nun gelöscht werden geht es dann auch los.

Jetzt kann man den Computer, je nach dem Umfang der eigenen Daten, eine ganze Weile alleine lassen12

Meine 213 GB Daten brauchten fast genau sieben Stunden um auf die SSD umzuziehen.

Man wagt kaum sich vorzustellen, wie gelangweilt die SSD die hereintröpfelnden Bits und Bytes entgegengenommen hat…

Klon-Test

Bevor man die SSD nun intern verbaut, kann man den Erfolg der Klon-Aktion noch extern testen. So spart man sich unter Umständen nerviges Geschraube und den ein oder anderen Fluch - Better safe than sorry und so…

Dazu habe ich das System neu gestartet und dabei die -Taste gedrückt gehalten. Nun sollte die externe SSD als bootbares Laufwerk angeboten werden und es dann auch tun.

Eine über USB 2.0 angebundene SSD ist übrigens, nach den Messungen oben wenig überaschend, in der Geschwindkeit durchaus vergleichbar mit der internen Festplatte.

Verlief der Test erfolgreich, so kann die SSD die interne Festplatte ersetzen und endlich damit beginnen, die 6 Gigabit/s des SATA 3 Anschlusses auszureizen…

Einbau: Up to Speed in 10 Minuten

Der Einbau der SSD in ein MacBook Pro (early 2011) ist überhaupt kein Problem wenn man einen Schraubendreher gerade halten kann und das Organisationstalent besitzt, 10 Schrauben ihrem ursprünglichen Einbauort zuzuordnen13.

Außerdem muss man die korrekten Schraubendreher benutzen, anderenfalls gehen die Schrauben kaputt. Die Bezeichnungen lauten:

  • PH00: Für die Schrauben am Gehäuse und die Laufwerks-Klammer
  • Torx6: Für die Schrauben am Laufwerksgehäuse

In einem üblich sortierten Informatiker-Haushalt findet sich so etwas sicherlich…

Eine hervorragende Anleitung für den Umbau findet sich bei iFixit. Da bleiben wirklich keine Fragen offen. Länger als 10 Minuten wird man da kaum brauchen.

Hier die unspektakulären Vorher- und Nachher-Ansichten meines Umbaus:

Die ausgebaute Festplatte habe ich dann noch in ein wirklich ausgesprochen günstiges USB-Gehäuse gesteckt. Da drauf landet dann zukünftig ein Klon der SSD um ein weiteres Backup zur Vefügung zu haben14.

Nach dem Einbau: Speed Baby!

Umbau fertig, Gerät eingeschaltet und sofort festgestellt: Das Teil ist leise und es bootet schnell.

Die erneut per Black Magic Disk Speed Test gemessenen Werte sind dann auch äußerst zufriedenstellend:

Knapp über 500 Megabyte/s lesen und knapp über 480 Megabyte/s schreiben sind eine gemittelte Verbesserung um Faktor 15 gegenüber der alten Festplatte. Und das merkt man an allen Ecken und Enden. Bei beinahe jeder Funktion des Computers ist die Verbesserung deutlich spürbar:

  • Die Bootzeit beträgt sieben Sekunden.
  • Apple Mail öffnet in weniger als einem Dockhüpfer15. Vorheriger Wert: 13 Dockhüpfer.
  • Das MacBook Pro ist flüsterleise.
  • Ein Dockhüpfer um iTunes zu öffnen.
  • Der iTunes Match Sammelvorgang ist sauschnell.
  • Im wesentlichen öffnen alle Programme in weniger als einem Dockhüpfer.
  • Die Arbeit mit Aperture ist butterweich.
  • Ein Einfluss der verschiedenen Backups auf die Schwuppdizität des Gesamtsystems ist nicht spürbar.
  • Ich habe keine belastbaren Messwerte, aber der Akku scheint auch länger zu halten…

Alles. Ist. Viel. Schneller.

Dauerhafte Performance und Security

Nach der Euphorie des ersten Geschwindigkeitsrausches sind nun noch zwei Dinge zu erledigen die eher in den Bereich Wartung & Pflege fallen, aber dennoch wichtig sind.

TRIM

TRIM ist ein ATA-Befehl, mit dem das Betriebssystem der SSD mitteilen kann, dass gelöschte Daten nun wirklich nicht mehr gebraucht werden und weg können. Anderenfalls werden die Daten auf der SSD nicht wirklich gelöscht, sondern lediglich SSD-intern als überschreibbar gekennzeichnet.

Es dauert aber wesentlich länger, einen als überschreibbar gekennzeichneten Bereich erst zu löschen und dann mit gerade anfallenden neuen Daten zu befüllen, als direkt in einen leeren Bereich zu schreiben. Unterlässt man also die Verwendung von TRIM, so wird die Performance der SSD mit der Zeit schlechter werden.

Apple hat die TRIM-Unterstützung seit OS X 10.6.8 Snow Leopard an Bord, aktiviert sie aber nur für SSDs, die von Apple selbst verbaut wurden.

Damit auch Nicht-Apple-SSDs wie meine 840 evo von Samsung in den Genuss von TRIM-Unterstützung kommen, kann man diesen von Hand einschalten.

Ich habe dazu den TRIM Enabler in der kostenlosen nicht-Pro Version benutzt. Alternativ könnte man auch den Chameleon SSD Optimizer verwenden, oder das ganze zu Fuß im Terminal erledigen und die für Storage zuständige KEXT16 selber patchen. Unter OS X 10.9 Mavericks geht das so:

KEXT Backup
1
"sudo cp /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage.backup"
KEXT Patching
1
"sudo perl -pi -e 's|(\x52\x6F\x74\x61\x74\x69\x6F\x6E\x61\x6C\x00{1,20})[^\x00]{9}(\x00{1,20}\x54)|$1\x00\x00\x00\x00\x00\x00\x00\x00\x00$2|sg' /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage"
Patching fertig stellen
1
"sudo touch /System/Library/Extensions/"

Egal welche Methode man verwendet hat, einen Reboot später sollte man sich vergewissern, ob TRIM erfolgreich aktiviert wurde. Das erfährt man via Über diesen Mac im Apfel-Menü oben links und dann Weitere Informationen, Systembericht. Dort findet man im Abschnitt SATA/SATA Express alle Informationen über die per SATA angeschlossenen Geräte. Bei meiner Samsung 840 evo ist der Punkt TRIM-Unterstützung nun mit einem beruhigenden Ja versehen.

Nach jedem OS X Update muss man nun außerdem checken, ob Apple auch die Storage-KEXT aktualisiert und damit den gepatchten TRIM-Support wieder deaktivert hat. In der Regel sollte die einmal verwendete Methode dann erneut funktionieren, es ist aber eine gute Idee, das vorher noch einmal zu prüfen.

Auf der Website des von mir verwendeten TRIM Enablers gibt es etwa einen gut gepflegten News-Bereich, in dem auch schon auf Kompatibilität mit dem im Herbst 2014 erwarteten OS X 10.10 Yosemite hingewiesen wird.

FileVault

Meine alte Festplatte war komplett per FileVault 2 verschlüsselt.

Da der Klon bei laufendem System mit angemeldetem User vonstatten ging, und der Carbon Copy Cloner aus diesem und aus weiteren technischen Gründen17 nichts von der Verschlüsselung mitbekommt, wurden die Daten unverschlüsselt auf die SSD geschrieben.

Um die Gewissheit zu haben, dass die Daten wenigstens auf dem lokalen Laufwerk sicher verschlüsselt sind, besucht man die Abteilung Sicherheit der Systemeinstellungen, wechselt dort zu FileVault und schaltet das ganze wieder ein.

Die Aktivierung der Verschlüsselung dauert dann auch auf einer SSD eine ganze Weile. Meine 213 GB brauchten gute zwei Stunden… Einen Unterschied zum unverschlüsselten Arbeiten spürt man während und nach diesem einmaligen Vorgang aber nicht, daher: Machen und auch den Wiederherstellungsschlüssel notieren. Ich habe außerdem davon abgesehen, den Wiederherstellungsschlüssel bei Apple speichern zu lassen, YMMV, BND, NSA etc

Fazit

Ich bin so begeistert von dem neuen Laufwerk, ich erwäge mir trotz nicht vorhandener Maus, ein Mauspad zu kaufen…

Ich hatte durchaus erwartet, einen Unterschied zwischen der Geschwindigkeit der rotierenden, magnetischen Scheiben und dem Flash-Speicher zu spüren. Dass dieser aber so deutlich ist und die Arbeit mit dem Gerät so viel freudiger gestaltet grenzt in der Tat an Magie.

Womit ich nicht gerechnet hatte: Die herumfahrenden, rotierenden, ratternden, klackernden Innereien von Festplatten sind laut. Das merkt man so nicht, man gewöhnt sich an das beständige Hintergrundrauschen wie an das Geräusch des Straßenverkehrs vor dem Fenster. Aber wenn es dann weg ist, so bemerkt man die Abwesenheit des Geräusches sofort.

Mein MacBook Pro ist nun im Alltagsbetrieb unhörbar. Die Lüfter drehen dann so langsam, dass man sie, im Gegensatz zu der Festplatte, nicht hört. Es ist sehr angenehm, damit zu arbeiten.

Unhörbar leise und unheimlich schnell:

Bereits drei Wochen nach dem Wechsel zur SSD erscheint mir der Unterschied gegenüber der lahmen Festplatte ähnlich groß, wie der Unterschied zu den Geschwindkeiten einer Floppy oder Datasette

Wenn euer Gerät einigermaßen modern ausgestattet ist mit:

  • Mehrkernprozessor
  • 4 GB RAM oder mehr
  • Mindestens SATA II mit 3,0 Gbit/s, besser SATA III mit 6,0 GBit/s

Und ihr außerdem das Geld übrig habt, um eine für euer Datenvolumen angemessen große SSD zu kaufen, dann tut das.

Ist das Gerät schon älter oder nicht entsprechend ausgestattet, so ist der Erwerb eines neuen Gerätes mit SSD vermutlich die bessere Wahl.

Auf mittel- bis langfristige Sicht wird uns die Festplatte sicher noch als externer, vergleichbar langsam angebundener Massenspeicher begleiten. Auch in Rechenzentren in RAID-Verbünden wird sie noch Zukunft haben. Was aber lokalen, internen Speicher angeht, scheint mir der Siegeszug der SSD nur noch eine Frage der Zeit.

  1. 6 Gigabit entsprechen 768 Megabyte…

  2. Oder auch mehrere…

  3. Aktuell sind gute 200 GB auf der Festplatte des MacBook Pro belegt…

  4. Kein Witz…

  5. Außer ich werde dafür bezahlt…

  6. Ich bin Vater zweier Kinder, ich habe keine Zeit…

  7. Thunderbolt verfügt über eine Bandbreite von 10 Gigabit/s…

  8. Immerhin noch 800 Megabit/s verfügbare Bandbreite…

  9. Die 3.0er Version von USB bietet theoretische 5 Gigabit/s…

  10. Störte mich mangels Windows-Installation nicht…

  11. Interne und externe Platten kann man auch sehr gut anhand ihrer unterschiedelichen Icons auseinanderhalten…

  12. Ich habe die Gelegenheit genutzt und mich schlafen gelegt…

  13. Pro Tip: Man lege sie einfach auf ein Blatt Papier oder eine ähnliche rechteckige Fläche. Oder um das MacBook herum. Der Phantasie sind kaum Grenzen gesetzt. Hauptsache jede Schraube landet wieder an ihrem angestammten Platz…

  14. Dieses dann sogar direkt bootbar…

  15. Ja, das ist eine offizielle Maßeinheit…

  16. KEXT wie Kernel Extension. Im weitesten Sinne sind das Treiber…

  17. Das kann man sich ruhig mal durchlesen, da wird man nicht dümmer von…

Author: "--"
Send by mail Print  Save  Delicious 
Date: Tuesday, 10 Jun 2014 09:58

Meine pinboard.in-Links vom 10. April bis zum 06. Juni:

  • Cloudmarks - is a Safari extension that works with cloud bookmarking services Pinboard, Delicious, Kippt, and Google Bookmarks. Cloudmarks lets you access your cloud bookmarks in a convenient popover window without interrupting your browsing.
  • contacts - gives you access to view and search all your records in the AddressBook database.
  • OpenRefine - is a power tool that allows you to load data, understand it, clean it up, reconcile it to master database, and augment it with data coming from Freebase or other web sources. All with the comfort and privacy of your own computer.
  • cliutils - is a library of functionality designed to alleviate common tasks and headaches when developing command-line (CLI) apps in Ruby.
  • GitBook - is a command line tool (and Node.js library) for building beautiful programming books and exercises using GitHub/Git and Markdown. An editor is available for Windows, Mac and Linux.
  • Fuck Off As A Service (FOAAS) - provides a modern, RESTful, scalable solution to the common problem of telling people to fuck off.
  • DynaHack - A NetHack variant with UnNetHack’s new content/challenges, NitroHack’s UI, GruntHack’s random magical items, and more.
  • play - is an employee-powered iTunes-based client-driven distributed music server for your office. Also it can prepare your taxes.
  • iTunes-Volume-Control - This app allows you to control the iTunes volume using volume up and volume down hotkeys.
  • Tumult Hype - Using Tumult Hype, you can create beautiful HTML5 web content. Interactive content and animations made with Tumult Hype work on desktops, smartphones and iPads. No coding required.
Author: "--"
Send by mail Print  Save  Delicious 
Date: Wednesday, 30 Apr 2014 07:23

Heute vor vier Jahren haben Kathi und ich geheiratet.

Ich wünsche der besten Ehefrau der Welt und mir eine wundervolle seidene Hochzeit1 und freue mich auf das nächste Jahr im aufregenden Hafen der Ehe.

  1. Es gibt wirklich wunderliche Listen im Internet…

Author: "--"
Send by mail Print  Save  Delicious 
Date: Thursday, 10 Apr 2014 11:05

Meine pinboard.in-Links vom 17. März bis zum 09. April:

  • dategrep - searches the named input files for lines matching a date range and prints them to stdout. If dategrep works on a seekable file, it can do a binary search to find the first and last line to print pretty efficiently. dategrep can also read from stdin if one the filename arguments is just a hyphen, but in this case it has to parse every single line which will be slower.
  • Normbrief mit Markdown - Mit diesem Stylesheet (CSS) kann man mittels Markdown private Briefe oder auch Geschäftsbriefe verfassen. Dabei wird das Anschriftsfenster von Briefumschlägen berücksichtigt. Der Briefkopf mit Bank- und Kontaktdaten erscheint in einer zweiten Spalte.
  • Comic Neue - Comic Sans wasn’t designed to be the world’s most ubiquitous casual typeface1. Comic Neue aspires to be the casual script choice for everyone including the typographically savvy. The squashed, wonky, and weird glyphs of Comic Sans have been beaten into shape while maintaining the honesty that made Comic Sans so popular. It’s perfect as a display face, for marking up comments, and writing passive aggressive office memos.
  • TreeSheets - is the ultimate replacement for spreadsheets, mind mappers, outliners, PIMs, text editors and small databases. Suitable for any kind of data organization, such as Todo lists, calendars, project management, brainstorming, organizing ideas, planning, requirements gathering, presentation of information, etc.
  • AltDrag - gives you the ability to move and resize your windows in a new way. When running, you can simply keep the Alt key depressed and then click and drag any window. Besides just moving windows, you can resize, maximize and close them too. AltDrag simply allows you to do more with less mouse movements.
  • Tabula - is a tool for liberating data tables trapped inside PDF files. If you’ve ever tried to do anything with data provided to you in PDFs, you know how painful this is - you can’t easily copy-and-paste rows of data out of PDF files. Tabula allows you to extract that data in CSV format, through a simple interface.
  • fzf - is a general-purpose fuzzy finder for your shell.
  • wkline - is a WebKit-based statusline utility for tiling window managers. It displays a HTML-based statusline in a WebKit web view. It provides a smooth looking statusline with CSS transitions and effects, and the possibility of having a transparent background with effects without a desktop compositor running.
  • After Dark in CSS - Do you longingly reminisce about the days when flying toasters graced your screen? Do words like “Confetti Factory” and “Daredevil Dan” make your heart skip a beat? If so, then never fear — CSS is here! Using modern CSS techniques like animations and transforms, we can imitate several of your favorite After Dark(tm) screensavers.
  • httpie - is a command line HTTP client. Its goal is to make CLI interaction with web services as human-friendly as possible. It provides a simple http command that allows for sending arbitrary HTTP requests using a simple and natural syntax, and displays colorized responses. HTTPie can be used for testing, debugging, and generally interacting with HTTP servers.
Author: "--"
Send by mail Print  Save  Delicious 
Date: Thursday, 27 Mar 2014 11:00

Nina ist heute morgen um 05:15 Uhr auf die Welt gekommen. Das Tochterkind ist 51 cm und 3170 g pure Magie und reines Wunder.

Wir sind schon wieder zuhause, Linus ist ein großer Bruder, Kathi und ich das zweite mal Eltern. Es ist so verrückt und so schön.

Auf zu neuen Abenteuern, wir freuen uns drauf!

Das Foto bei Flickr.

Author: "--"
Send by mail Print  Save  Delicious 
Date: Tuesday, 18 Mar 2014 11:15

Meine pinboard.in-Links vom 06. Februar bis zum 17. März:

  • HTML-XML-utils - are a number of simple utilities for manipulating HTML and XML files. Including the incredibly handy hxpipe, which converts HTML to a line-by-line format that plays nicely with awk, grep, sed, …
  • MkDocs - is a fast, simple and downright gorgeous static site generator that’s geared towards building project documentation. Documentation source files are written in Markdown, and configured with a single YAML configuration file.
  • Steg - is a cross-platform and portable software, written in C++. It use steganography and cryptography techniques to hide information inside uncompressed and compressed images. JPEG (JPG), TIFF, PNG, BMP image formats are supported. With it’s easy graphical user interface is possible to fine tune steganography parameters, evaluates image’s artifacts and uses both symmetric-key and asymmetric-key cryptography. Arbitrary data can be hidden as compressed archive file and it’s also possible to add a text comment.
  • ctrlp.vim - Full path fuzzy file, buffer, mru, tag, … finder for Vim.
  • Log Parser Studio - is a utility that allows you to search through and create reports from your IIS, Event, EXADB and others types of logs. It builds on top of Log Parser 2.2 and has a full user interface for easy creation and management of related SQL queries.
  • Massren - is a command line tool that can be used to rename multiple files using your own text editor. Multiple-rename tools are usually difficult to use from the command line since any regular expression needs to be escaped, and each tool uses its own syntax and flavor of regex. The advantage of massren is that you are using the text editor you use every day, and so can use all its features.
  • iotop - is a Python program with a top like UI used to show of behalf of which process is the I/O going on.
  • LAN Speed Test (Lite) - is a FREE utility designed from the ground up to be a simple but powerful tool for measuring file transfer, hard drive, USB Drive, and Local Area Network (LAN) speeds (wired & wireless).  It does this by building a file in memory, then transfers it both ways (without effects of windows file caching) while keeping track of the time, and then does the calculations for you.
  • Dropbox Uploader - is a BASH script which can be used to upload, download, list or delete files from Dropbox
  • Faker - is a Rubygem that generates fake data for you. Whether you need to bootstrap your database, create good-looking XML documents, fill-in your persistence to stress test it, or anonymize data taken from a production service, Faker is for you.
Author: "--"
Send by mail Print  Save  Delicious 
Date: Thursday, 20 Feb 2014 12:06

When I sit in front of an old school, regular computer1, writing happens in Vim. Mails, code, blogposts, my diploma thesis, ToDo-lists, comments on random web pages2 - everything.

And I love Markdown. And footnotes3. So the usage of MultiMarkdown-footnotes is a natural fit.

There is no real standard for the notation, but most people tend to use numbers or words or a combination of these two. As long as the footnote marker is preceded by a caret (^) and enclosed by square brackets ([]) and the matching footnote reference starts at the beginning of a line and is followed by a colon (:), MultiMarkdown is a happy camper. The resulting Markdown-source is easy to read and really flexible:

MultiMarkdown Footnotes
1
2
3
4
5
6
7
8
9
10
This is an example text containig footnotes[^1]. These can be made of numbers
or almost any other character[^anotherfootnote]. 

Of course, one can use a combination[^fn5].

[^1]: This is a footnote...

[^anotherfootnote]: Therefore, this is also a footnote...

[^fn5]: This is also a footnote...

Trouble is, all these brackets and carets for the footnote links are kind of hard to type. The best practice for the footnote references is to keep them at the end of the file, so additional cursor movement is necessary. If you just want to insert a footnote as fast as possible and keep your writing flow, all this key pressing gets boring really soon.

vim-markdownfootnotes to the rescue

Luckily, I use Vim. Vim loves text automation. And Vim is used by lots of smart people like David Sanson who forked the venerable vimfootnotes, named it vim-markdownfootnotes and tweaked it for use with the extended Markdown markup as shown above.

The vim-markdownfootnotes plugin can easily be installed with Pathogen and defines two mappings:

vim-markdown mappings
1
2
<Leader>f    Insert new footnote 
<Leader>r    Return from footnote

From now on, you just type <Leader>f whenever you want to insert a footnote marker. The mapping works in normal and in insert mode which results in almost no friction while writing. This simple command inserts a footnote marker like [^1] after the cursor and a matching footnote reference like [^1]: gets inserted all the way down at the end of the file. Impressive, but the wonder does not stop here:

Vim opens a new buffer in a split window at the bottom of the current window and places your cursor right behind the empty space after the colon. This way you can just keep on typing your footnote and hit <Leader>r to close the split and return to the place in the main text where you left off. And you just keep on typing, leaving behind only a beautifully formatted MultiMarkdown footnote and no wasted thoughts.

It looks a lot like this:

The plugin also keeps track of the number of footnotes it inserted so the second footnote marker gets inserted as [^2], the third as [^3] and so on…

It’s a really good solution and includes some nice bells and whistles. If, for example, you don’t like the use of the default arabic numerals you are free to change the format by setting the variable vimfootnotetype to one of the following:

  • arabic: 1, 2, 3…
  • alpha: a, b, c, aa, bb…, zz, a…
  • Alpha: A, B, C, AA, BB…, ZZ, A…
  • roman: i, ii, iii… (displayed properly up to 89)
  • Roman: I, II, III…
  • star: *, **, ***…

Because we can. Crazy stuff. Totally cool if you think about it.

My footnote counter pet peeve

I installed the plugin in spring 2012 and slightly changed the sourcecode to use [^fn23] as footnote markup4 to make it more distinguishable from regular numbered Markdown reference style links. I kept on using it ever since, despite one minor gripe which kept on itching me:

The footnote counter only works for one session. Whenever I opened a file which already contained some footnotes, I had to check5 for the number of the last added footnote and use the FootnoteNumber command to set the counter to the correct starting point.

I usually write my blogposts in small chunks, so typing :FootnoteNumber 5 after finding out that the last footnote was [^fn4] was also kinda boring. And of course I always inserted a [^fn1] when footnotes were already present in the file before remembering I had to adjust the counter. So I had to undo the last footnote, close the split by hand, reset the counter and start again…

I don’t want to do this little footnote-counter-adjusting-dance every time I open a file. My computer should do this for me. I mean, seriously how hard can it be?

Luckily, another smart Vim-user named Nick Coleman, solved the problem for the automatic insertion of HTML-footnotes which are magnitudes harder to type than their Markdown counterparts. He wrote his own footnote.vim script which6 does not include fancy stuff like key mappings or splits but had a working footnote counter implemented in VimL.

So I did what every self respecting geek would do:

I ripped the code apart and changed the regular expression to match against my style of Markdown footnotes. The result worked fine on it’s own but I missed the easy writing flow of <Leader>f and <Leader>r.

Naturally, I forked vim-markdownfootnotes on Github and cobbled the counter code directly into the function s:VimFootnotes(appendcmd). Now, whenever I hit <Leader>f the script counts the occurences of the footnote references, adds 1 and sets the global variable g:vimfootnotenumber to the result.

The FootnoteNumber, FootnoteNumberRestore and FootnoteUndo functions are still present in the code, but whatever they set the variable to gets overridden by the automatic counter which, by the way, even works with non arabic numerals. So people who prefer their footnotes numbered with roman numerals or stars can also use this.

No more thinking about the current footnote counter, more thinking about my words. Excellent.

Sorting Markdown footnotes

Now, because I tend to edit my posts in small chunks it is not uncommon at all, that I insert a footnote somewhere in the text. Maybe even at the very beginning. This can lead to a situation like this7:

Unordered Footnotes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Well, the way they make shows is, they make one show. That show's called
a pilot[^fn2]. Then they show that show to the people who make shows, and on the
strength of that one show they decide if they're going to make more shows. Some
pilots get picked and become television programs. Some don't, become nothing.
She starred in one of the ones that became nothing.

Now that there is the Tec-9[^fn1], a crappy spray gun from South Miami. This gun is
advertised as the most popular gun in American crime. Do you believe that shit?
It actually says that in the little book that comes with it: the most popular
gun in American crime. Like they're actually proud of that shit[^fn3]. 

[^fn1]: This is a footnote concerning the Tec-9, it was the first that was written...

[^fn2]: This is the second footnote I added, it's marker appears in the text before the marker of the first footnote...

[^fn3]: This is the third footnote I added, it's marker is the last in the text...

The second footnote is added to the beginning of the text, 2 appears before 1. The footnote references are numbered 1, 2, 3 but the footnote markers are 2, 1, 3.

This is, and I may overreact here, totally wrong

Markdown does not care a bit about the order in which the footnotes appear in the text. The text above and the following, nicely tidied up text render to the exact same HTML.

Sorted footnotes by appearance in the text
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Well, the way they make shows is, they make one show. That show's called
a pilot[^fn1]. Then they show that show to the people who make shows, and on the
strength of that one show they decide if they're going to make more shows. Some
pilots get picked and become television programs. Some don't, become nothing.
She starred in one of the ones that became nothing.

Now that there is the Tec-9[^fn2], a crappy spray gun from South Miami. This gun is
advertised as the most popular gun in American crime. Do you believe that shit?
It actually says that in the little book that comes with it: the most popular
gun in American crime. Like they're actually proud of that shit[^fn3]. 

[^fn1]: This is the second footnote I added, it's marker appears in the text before the marker of the first footnote...

[^fn2]: This is a footnote concerning the Tec-9, it was the first that was written...

[^fn3]: This is the third footnote I added, it's marker is the last in the text...

So nobody but me would notice any difference. But really, this bothered me. So again, I turned to the Internet to see if I could find a solution for my problem. And sure enough, in a thread on the MultiMarkdown Google group I found a hint8 that the document converter Pandoc could do this by converting from Markdown to Markdown like this:

pandoc conversion
1
cat example.mmd | pandoc --from markdown --to markdown > tidied-example.mmd

Indeed, this works fine but strips my beloved fn-addition from each and every footnote… And I’m so used to my beloved fn-additions…

I considered diving into the source of Pandoc to fix this behaviour and learn some Haskell along the way but decided against it. I thought of formd, which I use to convert Markdown links from inline to reference style9 and wondered, why this fine software does not work with footnotes. After all, they are not that different from regular reference links, aren’t they?

Soon I found out that Seth Brown aka Dr. Bunsen altered the code of formd to ignore footnotes. As requested by Martin Kopischke and, ahem, me

I tried to find out if I could alter the behaviour of formd to sort footnotes as effortless into a nice order as links. But my Python-fu was too weak.

With some more looking at the Internet I found a promising looking post by yet another Dr., Dr. Drang. He wrote a Python-script to tidy up Markdown reference links.

More importantly, he explained the inner workings of the script in great detail, so even I could figure out10 how this was supposed to work. Just like formd, the script made sure to exclude footnotes. I changed the two regular expressions to match against footnote markers and references and ignore regular markdown links. The inner logic remained the same and some more adjustments to the string replacement parts later the new sort_footnotes script worked surprisingly well. It looks like this:

sort_footnotes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/usr/bin/python

import sys
import re

'''
Read a Markdown file via standard input and tidy the containing
Multimarkdown footnotes. The reference links will be numbered in
the order they appear in the text and placed at the bottom
of the file.

Based on "Tidying Markdown reference links" by Dr. Drang available at:

http://www.leancrew.com/all-this/2012/09/tidying-markdown-reference-links/

Do *not* place footnote reference links at the start of a line, bad things will
happen, your footnotes will be eaten by a grue.
'''

# The regex for finding footnote reference links in the text. 
link = re.compile(r'[^(?<=\n)](\[\^fn([\d]+)\])')

# The regex for finding the footnote labels with the text.
label = re.compile(r'(?<=\n)\[\^fn([\d]+)]:\s?(.*)')

def refrepl(m):
    # Rewrite reference links with the reordered link numbers. Insert the first
    # character from the footnote reference link right before the new link.
    return '%s[^fn%d]' % (m.group(0)[:1], order.index(m.group(2)) + 1)

# Read in the file and find all the footnote-links and -references.
text = sys.stdin.read()
links = link.findall(text)
labels = dict(label.findall(text))

# Determine the order of the footnote-links in the text. If a link is used
# more than once, its order is its first position.
order = []
for i in links:
    if order.count(i[1]) == 0:
      order.append(i[1])

# Make a list of the footnote-references in order of appearance.
newlabels = [ '[^fn%d]: %s \n' % (i + 1, labels[j]) for (i, j) in enumerate(order) ]

# Remove the old footnote-references and put the new ones at the end of the text.
text = label.sub('', text).rstrip() + '\n'*3 + '\n'.join(newlabels)

# Rewrite the footnote-links with the new footnote-reference numbers.
text = link.sub(refrepl, text)

print text

The script is also available in it’s own Github repository.

Like the original by Dr. Drang, sort_footnotes is by no means foolproof. In fact, it does not work with footnote links at the start of a line and fails horrible if one is found in a file. The alternate way to differentiate between footnote links and footnote references would have been the colon. I figured it is much more probable that a footnote link appears right before a colon, than it’s appearance at the start of a line. After all, footnotes should appear after words or, even better, sentences and not before them11. Even stranger things might occur if two footnotes have the same number or if one marker misses it’s reference or vice versa. This kind of stuff should of course never happen if you use the automatic insertion of footnotes as described above but YMMV

This script also does not work with roman numerals or stars so fans of these footnote markers will have to port the numeral converter from VimL to Python and insert it into my script12

Because the script was designed to work via standard input it is easy to create a small Vim macro, assign a mapping like <Leader>fs and pipe the content of the current buffer through it. For good measure I also defined a <Leader>fx mapping to use formd and sort_footnotes in one fell swoop on the current buffer.

The mappings are defined in my .vimrc as follows:

My .vimrc Markdown reformating mappings
1
2
3
4
5
6
7
8
9
10
" Use formd to transfer markdown from inline to reference links and vice versa
" Use the vim mark m to jump back to the position from where formd was invoked.
" see: http://drbunsen.github.com/formd/
nnoremap <leader>fr mm :%! ~/bin/formd -r<CR> `m :delmarks m<CR>
nnoremap <leader>fi mm :%! ~/bin/formd -i<CR> `m :delmarks m<CR>
" Sort footnotes into order of appearance
nnoremap <leader>fs mm :%! ~/bin/sort_footnotes<CR> `m :delmarks m<CR>
" Reformat with formd to reference style and sort the footnotes. The whole
" enchilada...
nnoremap <leader>fx mm :%! ~/bin/formd -r <bar> ~/bin/sort_footnotes<CR> `m :delmarks m<CR>

And this is pretty much it.

Without worrying about cursor movement, bracket typing and keeping footnote counters up to date it is much easier to type at the speed of thought. It is one mental barrier less when I jump into a draft for a 20 minute editing session after a long day. And the nicely ordered lists of links and footnotes at the end of my markdown source files make me feel all warm and cozy inside.

  1. As in, not an iOS device…

  2. Thanks to the wonderful QuickCursor

  3. Oh boy, do I love me some footnotes…

  4. This is just my personal preference, you can use just about anything or leave it as is…

  5. as in manually…

  6. on purpose…

  7. Sample text produced by the awesome Samuel L. Ipsum

  8. From the already mentioned David Sanson…

  9. formd sorts the reference style links exactly like I want my footnotes sorted…

  10. After poking around in the code with a long stick and some print statements…

  11. At least according to the English and German Wikipedia…

  12. Well, maybe, one of those days…

Author: "--"
Send by mail Print  Save  Delicious 
Date: Friday, 07 Feb 2014 10:28

cURL an image!, like so:

cURL an image!
1
2
3
4
5
6
curl ihmage.com/dog
curl ihmage.com/mario
curl ihmage.com/prince
curl ihmage.com/flower
curl ihmage.com/anything
curl ihmage.com/Whatever%20You%20Want!

Hours of fun, not really useful at all…

(via: One Thing Well)

Author: "--"
Send by mail Print  Save  Delicious 
Date: Friday, 31 Jan 2014 09:02

Meine pinboard.in-Links vom 03. Dezember bis zum 28. Januar:

  • knitr - was designed to be a transparent engine for dynamic report generation with R, solve some long-standing problems in Sweave, and combine features in other add-on packages into one package (knitr ≈ Sweave + cacheSweave + pgfSweave + weaver + animation::saveLatex + R2HTML::RweaveHTML + highlight::HighlightWeaveLatex + 0.2 * brew + 0.1 * SweaveListingUtils + more).
  • Unsavory - is a little Ruby script which checks your Pinboard bookmarks for dead links (HTTP status code 404) and removes them. Additionally it will also inform you about links which return a status code other than 200 (OK).
  • OpenRA - is a Libre/Free Real Time Strategy project that recreates the classic Command & Conquer titles. We include recreations of C&C (Tiberian Dawn), C&C: Red Alert, and Dune 2000. These are not intended to be perfect copies, but instead combine the classic gameplay of the originals with modern improvements such as unit veterancy and the fog of war.
  • websocketd - is a small command-line tool that will wrap an existing command-line interface program, and allow it to be accessed via a WebSocket. WebSocket-capable applications can now be built very easily. As long as you can write an executable program that reads STDIN and writes to STDOUT, you can build a WebSocket server. Do it in Python, Ruby, Perl, Bash, .NET, C, Go, PHP, Java, Clojure, Scala, Groovy, Expect, Awk, VBScript, Haskell, Lua, R, whatever! No networking libraries necessary.
  • MailCatcher - runs a super simple SMTP server which catches any message sent to it to display in a web interface. Run mailcatcher, set your favourite app to deliver to smtp://127.0.0.1:1025 instead of your default SMTP server, then check out http://127.0.0.1:1080 to see the mail that’s arrived so far.
  • skippy-XD - Skippy-XD is a full-screen task-switcher for X11. You know that thing Mac OS X, Compiz and KWin do where you press a hotkey and suddenly you see miniature versions of all your windows at once? Skippy-XD does just that. It’s most commonly known by Mac OS X’s name for it - Exposé.
  • WMND - WindowMaker Network Devices is a dockapp for monitoring network interfaces under WindowMaker and other compatible window managers. WMND currently works on Linux, FreeBSD, NetBSD, Solaris, OpenSolaris, Darwin and IRIX. WMND can monitor multiple interfaces at the same time, sports several display modes and can also monitor remote interfaces through SNMP.
  • TXMouse - is the True X-Mouse Gizmo for Windows, enabling the unsurpassably liberating experience of X11-ish copy’n’paste on Windows.
  • reposurgeon - A tool for editing version-control repository history. reposurgeon enables risky operations that version-control systems don’t want to let you do, such as editing past comments and metadata and removing commits. It works with any version control system that can export and import git fast-import streams, including git, hg, bzr, CVS, and RCS. It can also read Subversion dump files directly and can thus be used to script production of very high-quality conversions from Subversion to any supported DVCS.
  • Backtick - is a console for bookmarklets and scripts, packaged as a Chrome extension. The extension comes with a set of predefined commands, but you can easily create your own to use yourself or share with others.
Author: "--"
Send by mail Print  Save  Delicious 
3   New window
Date: Sunday, 26 Jan 2014 09:07

Heute vor drei Jahren kam Linus auf die Welt.

Was das letzte Jahr an neuen Erkenntnissen und Erlebnissen mit dem Sohn gebracht hat, ist schon wirklich nicht mehr so recht in Worte, geschweige denn Listen zu fassen. Er ist ein Kindergartenkind, rennt zunehmend schneller, quasselt in einer Tour und liest Hausnummern wie andere Leute Tweets..

Er bekommt so viel mehr mit von der Welt, er lernt so schnell, es ändert sich immer wieder so viel, dass man kaum noch hinterherkommt wann denn nun genau sich dieses oder jenes Verhalten eingestellt hat. Zuweilen ist man dann auch froh, wenn die eine oder andere Phase dann wieder vorbei geht…

In wenigen Wochen wird Linus außerdem auch noch ein großer Bruder werden und seine und unsere Welt wird erneut komplett auf den Kopf gestellt werden.

Auf in das nächste Lebensjahr Sohn und alles, alles liebe zu deinem Geburtstag. Dieses 2014 wird nicht nur für dich viel neues bringen. Schön, dass du dabei bist.

Author: "--"
Send by mail Print  Save  Delicious 
Date: Monday, 06 Jan 2014 10:14

Es ist 2014. Dinge werden besser.

Im Sommer 2010 war ich noch ausgesprochen enttäuscht, dass das mit iOS 4 vorgestellte Multitasking nicht geeignet war, meine auf dem iPhone gehörte Musik automatisch an last.fm zu schicken1. Dieses fehlende automatische scrobbeln meiner Musik war für mich immer der Grund, meine iOS-Geräte zu jailbreaken. Denn nur so konnte man das winzige Scrobbl installieren2. Dieses lief nach der Installation fortwährend im Hintergrund und aktualiserte mein last.fm-Profil mit dem gerade gehörten Song. In Echtzeit.

In den folgenden Jahren war ich es zunehmend leid, den Jailbreak-Tanz aufzuführen und entschied mich für CloudScrob, um meine Musik zu scrobblen. Das Programm funktionierte gut, aber ich musste daran denken es hin und wieder zu starten, damit es seine Arbeit tun und die Songs seit dem letzten Start scrobbeln konnte. Das ist nicht sehr 21. Jahrhundert.

Mit iOS 7 hat nun ein aktualisiertes Multitasking und damit auch eine Technik namens Background App Refresh den Weg auf die iDevices gefunden. Damit können Apps nun Zeiten ausknobeln, zu denen es wahrscheinlich am besten passt, einen Refresh auszuführen. So kann etwa Instapaper lernen, ungelesene Artikel wochentags während meiner Zeit unter der Dusche herunterzuladen und fertig zu sein, wenn ich am Frühstückstisch sitze. Apple dazu:

iOS learns patterns based on your use of the device and tries to predict when an app should be updated in the background. It also learns when the device is typically inactive, such as during the night, to reduce update frequency when the device is not in use.

QuietScrob nutzt den Background App Refresh in die andere Richtung und lädt Informationen über neu gehörte Songs hoch. Damit löst sich das Scrobbel-Problem auf meinem iPhone im Austausch gegen 0,89 € nun endlich zu meiner Zufriedenheit. QuietScrob läuft auch auf dem iPad. Zwar nicht darauf optimiert, aber da man eh nur ein mal die last.fm Daten einträgt und die App fortan im Hintergrund läuft und ihr Werk verrichtet, ist das auch total ok so. Das scrobbeln geschieht zwar nicht in Echtzeit, aber dafür automagically und ohne Jailbreak.

Der Entwickler Sergey Pershenkov gibt 10-60 Minuten als Update-Zeit an und das reicht mir völlig. Unklar bleibt, warum ich auf diesen kleinen Fortschritt Jahre warten musste. Aber ich nehme an, so ist das mit dieser Zukunft und diesem Fortschritt und diesem Leben. Es geschieht die ganze Zeit über ohne dass man es wirklich wahrnimmt und dann ist plötzlich ein signifikanter Schritt getan. Nun scrobbeln alle Geräte auf denen ich üblicherweise Musik genieße3 die gehörten Titel automatisch an last.fm.

Wie gut. Darauf ein wenig Musik…

  1. Scrobbeln ist die Bezeichnung für diesen Vorgang…

  2. Die last.fm Gruppe hat noch immer über 1600 Mitglieder, der Quellcode ist bei Github zu finden…

  3. Der Mac mini, das MacBook Pro, Sonos, das iPhone und das iPad…

Author: "--"
Send by mail Print  Save  Delicious 
Date: Wednesday, 18 Dec 2013 09:44

Meine pinboard.in-Links vom 04. November bis zum 03. Dezember:

  • cmder - is a software package created out of pure frustration over the absence of nice console emulators on Windows. It is based on amazing software, and spiced up with the Monokai color scheme and a custom prompt layout. Looking sexy from the start.
  • poche - is a self hostable read-it-later app. Unlike to other services, poche is free and open source.
  • parcimonie - is a daemon that incrementally refreshes a GnuPG key ring using the Tor network. It fetches one key at a time, waits a bit, changes the Tor circuit being used, and starts over. This way it is hard to correlate the key ring content to an individual and it makes it hard to locate an individual based on an identifying subset of her key ring content.
  • Isso - is an open source commenting server system written in Python and JavaScript. You can migrate your Disqus comments without any hassle.
  • Herald - is a plugin for Mail.app that goes far beyond OS X’s built in notifications.Inspired by the excellent Mail.appetizer plugin, Herald allows you to perform common actions directly from within the notification window, including deleting, initiating replies, or marking as read.
  • filegive - easily sends or receives files point-to-point, through a LAN or over the Internet with authentication and ciphering, and the other side only needs a Web browser. No third party server is involved in the transfer. It can use common NAT traversal protocols like uPnP and NAT-PMP, manually forwarded ports, or a public ssh server.
  • DevTools Snippets - A collection of helpful snippets to use inside of browser devtools
  • The Colour Clock - Time as a hexadecimal colour value.
  • lnav - The log file navigator is an enhanced log file viewer that takes advantage of any semantic information that can be gleaned from the files being viewed, such as timestamps and log levels. Using this extra semantic information, lnav can do things like interleaving messages from different files, generate histograms of messages over time, and providing hotkeys for navigating through the file. It is hoped that these features will allow the user to quickly and efficiently zero in on problems.
  • Launchbot - I am Launchbot! A neat open-source JavaScript startpage script, which enables you to easily open sets of all your favorite websites with just one click. It’s like restoring tabs, but on any computer and browser. You can also search Google or just quick-launch one of your favorite websites.
Author: "--"
Send by mail Print  Save  Delicious 
Date: Tuesday, 17 Dec 2013 09:02

In einer Woche ist Weihnachten. Sieben mal schlafen. Quasi um die 168 Stunden.

Das bedeutet, genau jetzt ist es der richtige Zeitpunkt, um ein last Minute Shopping für den Geek in eurem Leben zu veranstalten. Oder eben für sich selbst, da weiß man was man hat beziehungsweise bekommt. Hier einige Tips:

Bei den Favorite Things 2013 von Tools & Toys sind einige tolle Ideen versammelt, die eine große Bandbreite an Interessen abdecken. Zum großen Teil stammen die Ideen natürlich aus dem Tools & Toys Christmas Catalog, in dem Themen wie Fotografie, Kaffee, Audio und Apple beguckt werden.

In Sachen Software gibt es derzeit das Merry Mac Bundle mit 8 Advanced Media Apps. Da könnte durchaus was für euch dabei sein und mit 34 US-Dollar ist es auch gar nicht so schrecklich teuer. Und, die weihnachtlichen Wortspiele finden kein Ende, das Giftmas Bundle versammelt für 20 US-Dollar 7 schicke Mac Apps für viele Gelegenheiten.

Du spielst unter iOS und möchtest mal so richtig sehen, was die Hardware an Grafik so kann? Dann wird es dich interessieren, dass im aktuellen Dezember 2013 Infinity Blade II das IGN Spiel des Monats und damit gratis zu haben ist.

Wer es etwas unspezifischer angehen möchte, dem seien die vielen Gutschein-Angebote und Rabattcodes der Online-Händler empfohlen. Viele gemischte Angebote für teilweise deutlich günstigeres Geld. So gibt es etwa bunt sortierte Gutscheine von Paypal, die geeignet sind ein breites Interessen-Spektrum auch abseits der elektronischen Gadgeterie abzudecken.

Last, but not least at all:

Wer Audio in den eigenen vier Wänden verteilen möchte, dem seien die Produkte der Firma Sonos empfohlen. Allerbeste Streaming Unterstützung und einfachste Benutzung machen das System zur Wirecutter Empfehlung. Will man Sonos hierzulande online anschaffen, gibt es eigentlich keinen besseren Weg als Überall Musik. Sehr tolle Beratung, irre toller Service, perfekt.

Ob hemmungsloser Konsum oder still und besinnlich: Ich wünsche euch allen ganz tolle Weihnachten 2013.

Author: "--"
Send by mail Print  Save  Delicious 
Date: Monday, 09 Dec 2013 10:17

10 Jahre…

Diese meine Seite ist am heutigen 9. Dezember 2013 seit einem Jahrzent online.

10 Jahre…

Ok, richtig, der erste Post der noch online ist stammt von Heilig Abend 2003 und wäre heute, wenn überhaupt, wohl eher ein Tweet geworden.

10 Jahre…

Bemerkenswert ist es aber schon, dass der Großteil von instant-thinking.de, das einst lokal auf meinem iBook G3 begann1, heute noch zu sehen ist. Über SnipSnap (Start in 2003), und Typo2 (Switch in 2005), hin zu Wordpress (Switch in 2007) und nun Octopress (Switch in 2012), sind die Daten über vier verschiedene Systeme und einige Datenbanken, Hoster und Datei-Formate gelaufen.

10 Jahre…

Die Migration der alten SnipSnap-Daten habe ich mir oft vorgenommen, aber tatsächlich erst in diesem Herbst/Winter 2013 umgesetzt. Mithilfe einiger kruder awk- und Ruby-Scripte und dann doch noch einiger Handarbeit… Die Posts, die der Dennis von vor 10 Jahren veröffentlichte werden sicherlich nie einen Pulitzer-Preis erhalten. Aber so kann man halt auch gut sehen, wie man sich über eine lange Zeit weiter entwickelt.

10 Jahre…

Mir macht die Schreiberei hier immer noch viel Spaß und daher sehe ich keinen Grund, warum ich dieser bescheidenen Seite, meinem ~ im Internet, nicht im nächsten Jahrzent zu ihrem zwanzigsten Jubiläum gratulieren werde.

10 Jahre…

Vielen Dank an euch alle da draussen, die mir über die Jahre Feedback haben zukommen lassen. Ohne euch wäre es nur halb so toll.

Auf die nächsten zehn Jahre instant-thinking.de, stay hungry, stay foolish3.

  1. Nette Idee dieses bloggen. Kann man ja mal rasch ausprobieren…

  2. Das heute schon Publify heißt…

  3. Steve, natürlich…

Author: "--"
Send by mail Print  Save  Delicious 
Date: Wednesday, 06 Nov 2013 07:32

Meine pinboard.in-Links vom 16. September bis zum 30. Oktober:

  • vim-airline - a lean & mean status/tabline for vim that’s light as air.
  • Everything - is an administrative tool that locates files and folders by filename instantly for Windows. Unlike Windows search “Everything” initially displays every file and folder on your computer (hence the name “Everything”). You type in a search filter to limit what files and folders are displayed.
  • speedtest-cli - Command line interface for testing internet bandwidth using speedtest.net
  • jQuery.JamCity - uses the API from Last.Fm to get your Last.Fm account top albums, loved tracks, top tracks, new releases, or recent tracks. It then takes that information and displays a beautiful layout using CSS3, jQuery, etc. Enjoy showing off your music on your blog or website!
  • Dateutils - are a bunch of tools that revolve around fiddling with dates and times in the command line with a strong focus on use cases that arise when dealing with large amounts of financial data.
  • xip.io - is a magic domain name that provides wildcard DNS for any IP address. You can use xip.io domains to access virtual hosts on your development web server from devices on your local network, like iPads, iPhones, and other computers. No configuration required!
  • Reportr - Reportr is a complete application which works like a dashboard for tracking events in your life (using a very simple API). With a simple interface, it helps you track and display your online activity (with trackers for Facebook, Twitter, GitHub, …) or your real-life activity (with hardware trackers or applications like Runkeeper). The project is entirely open source and you can host your own Reportr instance on your own server or Heroku.
  • Zim - is a graphical text editor used to maintain a collection of wiki pages. Each page can contain links to other pages, simple formatting and images. Pages are stored in a folder structure, like in an outliner, and can have attachments. Creating a new page is as easy as linking to a nonexistent page. All data is stored in plain text files with wiki formatting. Various plugins provide additional functionality, like a task list manager, an equation editor, a tray icon, and support for version control.
  • iFestivalDownloader - You can watch the iTunes Festival concerts through iTunes and iDevices (including Apple TV), live and later. Eventually they will disappear. But since this is a video on demand stream, you can also save those files to local disk. This is no rocket science, but also a lot of work unless you have Max Bäumle’s handy tool.
  • sqitch - is a database change management application. Sqitch is not integrated with any framework, ORM, or platform. Rather, it is a standalone change management system with no opinions about your database engine, application framework, or your development environment. Changes are implemented as scripts native to your selected database engine.
Author: "--"
Send by mail Print  Save  Delicious 
Date: Friday, 25 Oct 2013 09:51

Es ist 2013. Die Zeit für physikalische Medien in unserem Haushalt ist abgelaufen. Das Papier, das uns erreicht wird gescannt, die enthaltenen Informationen leben als volltextindizierte PDFs weiter. Bücher aus Papier kaufen wir eigentlich nur noch für Linus. Und die Musiksammlung ist schon ewig in iTunes, CDs besitzen wir nicht mehr.

Allein die DVD-Sammlung auf dem Regal leistete der Entstofflichung Widerstand. Der Aufwand und der Platzbedarf in Gigabyte1 erschienen zu groß, die Vorteile des digitalen Films auf der Platte wollten sich nicht recht erschließen. Immerhin neigt man doch öfter dazu, spontan einen Song von vier Minuten genau jetzt hören zu wollen, als einen 90 Minuten Film zu schauen. Da ist das zweiminütige Suchen im DVD-Regal ein verhältnismäßig geringer Aufwand.

Doch auch das ist nun vorbei. Alle knapp 200 DVDs wurden gerippt, neu im H.264-Format in mp4-Containern encoded, mit Metadaten versorgt und in iTunes importiert. Bei den einzelnen Schritten habe ich jeweils auf Software zurück gegriffen, die für die gerade anstehende Aufgabe besonders gut geeignet war, denn ich bin ein großer Fan von Do one thing and do it well. Der Workflow ist in der folgenden Abbildung schematisch dargestellt.

Einige der hier benutzten Programme sind auch in der Lage, andere Schritte mit durchzuführen, ein Rundum-Sorglos-Paket gibt es aber meines Wissens nach nicht. So kann etwa der verwendete DVD-Ripper auch encoden, und zu iTunes hinzufügen, das Encoding ist aber kaum konfigurierbar und es ist auch nicht möglich, Metadaten zu vergeben.

Eine ausführliche Beschreibung meines Vorgehens folgt nach dem Klick…

Rip

Als allererstes, müssen die Daten der Filme von den Silberscheiben herunter und auf die Festplatte kopiert werden. Der Vorgang wird im Allgemeinen Rip genannt. Ich habe zu diesem Zweck das Programm RipIt verwendet. Alternativ habe ich auch gutes von Mac DVDRipper Pro gehört, kann aber zu dessen Benutzung nichts sagen. Das schlanke und kleine Programm RipIt hat den Vorteil, dass man es ideal für den massenhaften Rip von DVDs konfigurieren kann. Ich habe dem Apple DVD-Player abgewöhnt, jede DVD die man in das optische Laufwerk einlegt sofort abzuspielen2, und dafür RipIt instruiert, jede eingelegte DVD sofort zu rippen. Wenn das nach 30-60 Minuten geschehen ist, wird die DVD wieder ausgeworfen und ein Ping-Sound wird abgespielt3. Die nötigen Einstellungen finden sich in der nächsten Abbildung.

Und das will man wirklich so haben, wenn man mehr als eine Handvoll DVDs rippen möchte. Der Vorgang reduziert sich mit diesen Einstellungen im wesentlichen darauf, die gerade gerippte Silberscheibe wieder in ihre Hülle zu verfrachten und auf den Fertig-Stapel zu legen. Dafür nimmt man dann eine neue vom To Rip-Stapel und legt sie in das Laufwerk ein, welches automatisch den Dienst aufnimmt. Das können sogar schon Zweijährige4, ein Spaß für die ganze Familie.

Wenn man mehr als einen Mac mit optischem Laufwerk zur Verfügung hat, kann man so eine DVD-Sammlung in etwa doppelt so schnell rippen. Im Prinzip müsste das auch mit mehreren externen oder internen Laufwerken in einem Mac klappen, aber das habe ich hier nicht ausprobiert.

Ein Problem, dass ca. alle drei DVDs auf dem Mac mini auftrat, war, dass die DVD nach der Fertigstellung des Rips zwar umountete, aber nicht ejectete. Um sie aus dem Laufwerk zu bekommen musste ich dann jeweils RipIt schließen und ein drutil tray eject im Terminal absetzen. Auf dem MacBook Pro trat dieses Problem nie auf, YMMV.

Wenn dann nach geraumer Zeit ganze Datenberge5 aus gerippten DVD-Images auf der, hoffentlich ausreichend geräumigen, Festplatte liegen, geht es an den nächsten Schritt, das Encoding.

Encode

Durch Encoding6 wird nun das Videoformat der Filme geändert. Dazu benötigt man so viel CPU-Power wie nur irgend möglich, verpackt in möglichst vielen Kernen. Totale, rohe, numbercrunching, Processing Power.

Ein wenig Hintergrund

Zu diesem Zeitpunkt liegen die DVDs in ihrem ursprünglichen Format auf der Festplatte. Der OS X DVD-Player kann all diese Images genau so abspielen, als lägen die Daten immer noch auf ihren Silberscheiben7.

Daher lautet das verwendete Videoformat der Images auch immer noch MPEG-2 beziehungweise H.262. Dieses Format ist schon etwas älter und kann von so ziemlich jedem halbwegs aktuellen Wiedergabegerät gelesen werden. Leider ist es nicht sonderlich sparsam, was den Platzverbrauch angeht. Um den Ansprüchen an mobile Anwendungen und hochauflösenden Formaten gerecht zu werden, wurde seit 2001 an H.264 gearbeitet. Mit einigem Erfolg:

H.264 erreicht typischerweise eine etwa dreimal so hohe Codiereffizienz wie H.262 (MPEG-2) und ist auch für hoch aufgelöste Bilddaten (z. B. HDTV) ausgelegt. Das heißt, vergleichbare Qualität ist etwa bei einem Drittel der MPEG-2-Datenmenge zu erreichen. Allerdings ist der Rechenaufwand auch um den Faktor 2 bis 3 höher.

Der Rechenaufwand ist in der Tat beachtlich. Um diesen so gering wie möglich zu halten, sollte man sich überlegen, welche Teile der DVDs man überhaupt behalten möchte.

Ich habe stets auf sämtliche Interviews, Trailer, Hinter-Den-Kulissen und Audio-kommentierte Versionen verzichtet und jeweils nur den Hauptfilm in den Sprachvarianten Deutsch und Englisch behalten.89 Das spart dann über alle DVDs gesehen auch wieder nicht unerheblich viel Platz auf der Festplatte. Dieser Verzicht ist sicherlich nichts für Cineasten, ich für meinen Teil habe allerdings noch nie sonderlich viel mit den Extras einer DVD anfangen können. Rühmliche Ausnahmen sind hier nur die Bullet Time-Doku der ersten Matrix-DVD, sowie die Sing-along-Version von Mamma Mia!10.

Encoding mit HandBrake

Um die Umwandlung nun tatsächlich durchführen zu können, benötigt man ein Programm. Ich verwendete zu diesem Zweck HandBrake in der zum Zeitpunkt der Entstehung dieser Zeilen aktuellen Version 0.9.9 x86_64 (2013051800). HandBrake ist sowohl Cross Platform, als auch Open Source. Es läuft also unter OS X, Linux, anderen Unices und sogar Windows.

Die Einstellungsmöglichkeiten von HandBrake können auf den ersten Blick etwas erschlagen. Ich habe es mir einfach gemacht und schlicht das High Profile-Preset verwendet. Dieses habe ich auch gleich als Default konfiguriert, damit ich nicht nach jedem Neustart von HandBrake daran denken muss, es einzustellen. Mit dieser Voreinstellung wird der Film in der Originalauflösung mit hochwertigen Einstellungen für die Qualität encoded. Auf der HandBrake-Presets-Seite wird von High Profile: HandBrake’s general-purpose preset for High Profile H.264 video, with all the bells and whistles gesprochen. Im Gegensatz zu den Default- und Apple Universal-Profilen geht hier mehr Bearbeitungszeit und etwas mehr Dateigröße für eine bessere Qualität drauf. Das ist für mich beides sehr ok. Als Container-Ausgabeformat habe ich m4v verwendet, da dieses Format auch von iTunes und sonstigen Apple-Gerätschaften verwendet wird.

Video-Einstellungen

Das führt dann zu diesen Einstellungen für das Bild:

Die Qualität der dabei entstehenden Videos ist für mich nicht vom Original zu unterscheiden.

Wer noch etwas mit den Einstellungen spielen möchte, kann den RF11-Wert noch auf 19 anstelle der 20 stellen. Das soll in manchen Situationen die Bildqualität nochmals verbessern. Noch weiter runter sollte man diesen Wert nicht stellen, da ansonsten die m4v-Datei auch mal größer werden kann, als das ursprüngliche DVD-Image. YMMV, weitere Infos gibt es auf der Seite zu Constant Quality im HandBrake Wiki.

Audio-Einstellungen

Die Einstellungen für den Ton sehen so aus:

Hier wird also die AC3-Spur für jede Sprache einmal nach AAC-Stereo encoded und einmal schlicht durchgereicht. Das führt dazu, dass die Videos sich problemlos auf iOS-Geräten wiedergeben lassen, die Surround-Informationen aber trotzdem noch in der Datei enthalten sind, falls zukünftig doch mal wieder eine 5.1-Anlage in unseren Haushalt Einzug halten sollte.

Zu dem bemerkenswert komplexen Untertitel-Thema gibt es weiter unten noch einen eigenen Abschnitt.

Source & Queue

Um nun einen Encode-Vorgang zu starten, könnte man über die Source-Schaltfläche einfach eine eingelegte DVD als Quelle auswählen und starten.

Da aber zu diesem Zeitpunkt alle DVDs als Images vorliegen, kann man die Queue von HandBrake nutzen und beliebig viele Konvertierungen hintereinander weg in eine Warteschlange stellen. Dazu bemüht man pro Quelldatei bzw. Image schlicht die Add to queue-Schaltfläche. HandBrake bemüht sich, bei der Auswahl der Quelle automatisch den Hauptfilm zu erwischen. Das ist in der Regel der Titel mit der längsten Laufzeit. Bei TV-Serien auf DVD erwischt man dabei üblicherweise alle Folgen der DVD hintereinander weg. Für eine schöne Organisation nach Staffeln und einzelnen Episoden ist das recht ungeeignet.

Hier lohnt ein genauerer Blick ins Titel-Menü. Dort finden sich meist neben dem gerade erwähnten längsten Titel der alle Folgen enthält, auch noch einmal die einzelnen Folgen in einzelnen Titeln. Man kann sich hier grob an der Länge der Titel und der Anzahl der Folgen pro Scheibe orientieren. Alsdann fügt man die einzelnen Episoden zur Queue hinzu und achtet dabei direkt auf eine passende Namensvergabe. Als ideal hat sich die Form Name.der.Serie.S02E08.m4v12 herausgestellt.

Alternativ bemüht man die CLI-Version von HandBrake und wickelt ein kleines Script drumrum. Das Vorgehen habe ich schon einmal in dem Post TV-Serien mit HandBrake rippen im Detail beschrieben.

In der Praxis sah das bei mir so aus, dass alle DVD-Images auf einer Festplatte lagen, die per Firewire 400 an den Mac mini angeschlossen war. Die Queue des mini wurde dann mit den Filmen befüllt, deren Dateinamen am Anfang des Alphabets standen. Das MacBook Pro griff über das heimische 802.11n WLAN auf die selbe Platte zu und begann am Ende des Alphabets. Beide Computer speicherten die fertigen m4v-Dateien als Ergebnis ihrer Mühen in einem gemeinsamen Zielordner auf der selben Platte. Weder die Firewire 400 Verbindung, noch das WLAN erwiesen sich dabei als Flaschenhals, da hier Input-Output-Durchsatz gegenüber der CPU-Geschwindigkeit nur eine untergeordnete Rolle spielte.

So ein Encode-Vorgang dauert dann auch je nach Quellmaterial und verwendetem Computer unterschiedlich lange, lastet aber auf jeden Fall stets alle zur Verfügung stehenden Kerne der CPU aus.

Der Mac mini war mit seinem doppelkernigen Core2Duo Prozessor (1,83 GHz) in der Lage, im Schnitt 15 Frames die Sekunde zu bearbeiten. Das entspricht ca. 3½ Stunden Bearbeitungszeit pro DVD…

Das MacBook Pro war dank den 8 Kernen13 seines Core i7 Prozessors (2,0 GHz) und trotz der Anbindung über WLAN in der Lage, um die 45 Frames die Sekunde fertig zu stellen. Das entspricht ungefähr einer Stunde pro DVD. Die Datenrate der WLAN-Schnittstelle transportierte währenddessen up und down jeweils knapp 2 MB/s.

Bei knapp 200 DVD-Images ist das natürlich einiges an Rechenzeit. Die Lüfter des MacBookPro erreichen bei voller CPU-Auslastung außerdem schon nach sehr kurzer Zeit eine recht hohe Umdrehungszahl und damit auch Lautstärke. Daher sollte man die Umwandlung pausieren, wenn man sich im selben Raum Tätigkeiten widmen möchte die nicht gut mit Lüfterrauschen zusammenpassen. Über Nacht ist ja auch einiges zu schaffen… Von der Geräuschentwicklung abgesehen waren beide Computer auch während des Encodings weiterhin sehr gut zu benutzen. Hier zeigt sich der Vorteil von Mehrkern-CPUs ausgesprochen deutlich.

Metadata & Import

Wenn dann endlich alle DVDs konvertiert wurden und sich die Filme und Serien-Episoden in m4v-Dateien befinden, kann man beginnen, den Vorteil des neuen Formats zu nutzen. Die Rede ist von Metadaten. Wo ein DVD-Image sich im wesentlichen nur durch den Dateinamen auszeichnet, kann ein m4v-Container neben den Video- und Audio-Daten auch noch andere enthalten.

Dazu zählen etwa:

  • Titel
  • Schauspieler
  • Regisseur
  • Drehbuchautor
  • Erscheinungsdatum
  • Coverart
  • Genre
  • Kurzbeschreibung
  • Bewertung

und noch ein paar mehr.

Um diese Informationen in die Dateien zu bekommen, könnte man sie14 in iTunes ziehen, über das Kontextmenü die Informationen aufrufen und dort dann die entsprechenden Felder befüllen so gut man es eben kann.

Man könnte aber auch Software verwenden, um Datenbanken wie The Movie Database und The TV Database im Netz über ihre APIs anzuzapfen und einen ganzen Rutsch an Dateien automatisch mit Metadaten zu versehen. Ich habe mich zu diesem Zweck für iFlicks entschieden.

Mögliche Alternativen wären vielleicht iDentify 2 oder MetaX. Zu deren Benutzung kann ich aber nichts sagen.

Neben dem Metadaten-Import inklusive Coverart habe ich auch die iTunes-Import-Funktion von iFlicks genutzt. Möglich ist ausserdem auch hier ein Encoding durchzuführen. Das war dank der ausgezeichneten Vorarbeit mit HandBrake aber nicht nötig.

Praxis & Beispiele

In der Praxis schaute die iFlicks Benutzung bei mir dann etwa so aus:

Die 12 hübsch benannten Dateien der ersten Staffel von Sex and the City aus dem Finder in das iFlicks-Fenster ziehen.

Kurz warten und schon erscheint das passende Cover sowie die Nummer der Staffel und der jeweiligen Episode.

Die Metadatenfelder sind ebenfalls automatisch befüllt worden, hier als Beispiel Episode 11, Die große Dürre.

Filme werden auf die selbe Art und Weise verarbeitet und erhalten ebenfalls sehr schnell Cover und Metadaten.

Sollte iFlicks mit dem Dateinamen alleine nicht erfolgreich sein, ist das an einem eher kleinen oder gar nicht vorhandenen Cover zu erkennen. Oftmals feht dann auch das Jahr der Veröffentlichung15. Manchmal ist auch ein Film als ein anderer erkannt worden. In diesem Fall kann man die Suche mit einem eigenen Suchbegriff erneut starten und erhält dann auch sinnvolle Vorschläge von iFlicks.

Wenn dann ein Schwung Dateien mit Metadaten und Coverart versehen wurde, kann iFlicks sie auch gleich in die nächste Queue stecken, und in iTunes importieren. Die iFlicks-Queue wird dann nacheinander abgearbeitet.

In iTunes selbst kann man den Fortschritt einer jeden Importieraktion ebenfalls verfolgen.

Fertig in iTunes importiert sieht das dann schon echt recht hübsch aus.

Hier sind noch die verwendeten Einstellungen, die sich für ein rasches abarbeiten der Queue bezahlt gemacht haben:

Über die Einstellung iTunes kompatibel, werden Videos die schon passend für iTunes kodiert sind, nicht erneut kodiert. Das könnte iFlicks auch noch tun, aber das habe ich ja schon alles mit HandBrake erledigt. Im aktuellen Ordner landet dann auch nichts, da ja auch nichts zu konvertieren ist. Den Schalter Originaldatei löschen habe ich erst nach einigen Versuchen aktiviert. Er hilft aber sehr dabei, den Fortschritt schnell zu erkennen. So muss man sich nicht ständig vergewissern, ob dieser oder jener Film schon in iTunes angekommen ist. Falls doch etwas schief gehen sollte, findet man den Film dann immer noch im Papierkorb wieder.

Hier hat sich iFlicks als wirklich sehr zuverlässige und praktische Software erwiesen. Ohne iFlicks wäre das Vergeben von Metadaten sicherlich nicht so einfach und schnell von der Hand gegangen…

Disk-Management

Auch wenn die H.264 encodierten Videos um ein vielfaches kleiner sind, als das ihnen zugrundeliegende Ausgangsmaterial, so lädt man sich doch einen erklecklichen Batzen Daten in die iTunes-Bibliothek.

Standardmäßig liegt diese auf dem Bootlaufwerk des Macs, den man als Medienspeicher auserkoren hat. In meinem Fall habe ich schon vor langer Zeit den iTunes-Speicherort auf eine externe Platte gelegt. Die nun importierten Filme sollten aber auf einer eigenen Festplatte gespeichert werden. Daher habe ich nach dem Import in iTunes noch TuneSpan bemüht, um die guten 500 GB nicht auch noch auf die schon recht gut ausgebuchte Musikplatte quetschen zu müssen.

Mit TuneSpan ist es möglich, sehr einfach, schnell und zuverlässig fast beliebige iTunes-Inhalte raus aus der Standard-Bibliothek zu bewegen, ohne dass alles verschoben werden muss16. Das Interface ist sehr freundlich und schaut so aus:

Ich habe dann einfach den Span Filter auf Not Spanned gesetzt und jeweils die kompletten Kategorien Movies und TV-Shows auf den unteren Aktionsbereich namens Spanning Queue17 gezogen. Nach einem Klick auf Span geht es dann auch schon los und die ausgewählten Dateien werden in ihr neues Zuhause bugsiert.

Dort werden die Dateien dann in der selben Verzeichnisstruktur wie in iTunes gespeichert.

Ich habe TuneSpan dann auch direkt hinter sich aufräumen lassen: Dateien und leere Order werden dann in den Papierkorb verschoben. Auch TuneSpan verhielt sich hier, wie schon iFlicks, vorbildlich und führte nie unerwünschte Löschaktionen durch.

Der Vorgang dauert natürlich eine Weile, wenn viele Dateien zu verschieben sind und auch noch unterschiedliche Laufwerke beteiligt sind. Am Ende hat man dann aber eine einfach zu handhabende Verzeichnisstruktur. Das ist sehr praktisch, um sie auch anderen Programmen als Quelle für Videos zur Verfügung zu stellen. Ebenso kann man sehr einfach Backups durchführen. Es wäre ja ausgesprochen ärgerlich, wenn die ganze Arbeit durch eine crashende Platte wieder zum Teufel wäre. Ihr habt ein Backup, oder18?

Untertitel

Das Thema der Untertitel ist deutlich schwieriger, als ich zunächst annahm…

Ausserdem verwenden erstaunlich viele Filme Untertitel. Denkt man einmal darüber nach fallen einem sehr viele Gelegenheiten ein, in denen andere Sprachen gesprochen werden. Ob es eine echte Sprache wie französisch oder japanisch ist, oder eine Kunstsprache wie dothrakisch, klingonisch oder elbisch19

Es gibt generell zwei Möglichkeiten, wie man Untertitel hin bekommen kann:

  • Entweder man lässt sie von HandBrake direkt aus der DVD-Quelle auslesen
  • Oder man fügt sie nachträglich mit Subler in die dafür vorgesehenen Datenfelder einer m4v-Datei ein.

Die beiden Möglichkeiten sind unterschiedlich aufwendig und erzeugen auch unterschiedliche Ergebnisse.

Diese Untertitel in Game of Thrones wurden mit HandBrake automatisch aus der DVD ausgelesen und in das Videosignal eingebaut:

Diese Untertitel in Inglorious Basterds wurden mit Subler in die Datenfelder der m4v eingesetzt:

Ich finde die Untertitel von Subler deutlich hübscher. Ausserdem sind sie, sollte doch mal etwas nicht passend gelaufen sein20, auch wieder rückstandsfrei aus den Datenfeldern zu entfernen. Bei der Methode mit HandBrake sind die Untertitel fest mit dem Videosignal verbunden.

Hier folgen auf jeden Fall die beiden Methoden, die ich ausprobiert habe.

Untertitel mit HandBrake

Mit HandBrake werden die Untertitel zum Zeitpunkt des Encode-Vorgangs eingebaut.

Auf dem dritten Tab in HandBrake kann man für Untertitel die Option Foreign Audio Search (Bitmap) aus dem ersten Track-Dropdown auswählen. Das sollte die Haken bei Forced only und Burned in setzen.

Diese Funktion sollte die Untertitel finden, die von der DVD erzwungen werden, oder die nur 10% oder weniger Film-Laufzeit erscheinen und in die erzeugte m4v einbauen.

Die Doku von HandBrake verrät ausserdem, wie man bei Härtefällen vorgehen kann, die sich einer automatischen Erkennung widersetzen. Das ist mir allerdings nicht passiert…

Untertitel mit Subler

Mit Subler werden die Untertitel erst dann hinzugefügt, wenn die m4v schon fertig encodiert wurde. Dazu benötigt man als allererstes eine SRT-Datei mit den Untertiteln. Eine ganz gute Anlaufstelle ist hier subtitles.de, auch wenn die Qualität teilweise schon sehr schwankt.

Unter OS X 10.8 Mountain Lion und offenbar auch unter 10.9 Mavericks ist es außerdem noch nötig, einen alternativen A52Codec zu verwenden.

Eine gut passende SRT auszuwählen ist definitiv entscheidend für das Seelenheil des Untertitelnden. Ich bin bei Inglorious Basterds so weit gegangen, zwei SRTs zu mergen. Die eine hatte die falschen Timestamps, die andere a) schrecklich falsche Übersetzungen und enthielt b) alle Dialoge… Dafür aber eben auch c) die korrekten Timestamps. Was macht man nicht alles.

Aber mal angenommen alles ist gut und die SRT passt auf Anhieb gut:

Dann öffnet man einfach Subler, erzeugt per + N ein neues Projekt und zieht die m4v des zu untertitelnden Films in das Fenster. Die AC3-Tracks sollte man auf Passthru [sic] stellen um sie im Original-Format zu erhalten. Die Alternate Group der englischen und deutschen Audio Tracks sollten alle auf der 1 stehen.

Im Anschluss an diese Vorbereitungen kann man dan die SRT in das Fenster ziehen.

Die Einstellungen kann man so übernehmen. Im Anschluss die Datei einmal speichern und kurz warten, bis Subler die Verarbeitung abgeschlossen hat. Erst dann erhalten die Tracks ihre Nummern.

Die SRT muss dann noch auf die selbe Alternate Group 1 gestellt werden. Dann noch All samples are forced aktivieren und den Forced Track auf die Tracknummer des Untertiteltracks stellen. Im Beispiel hier also auf die 6.

Hier sind noch einmal die getätigten Einstellungen im Überblick:

Nun das ganze noch einmal speichern und wesentlich kürzer warten. Fertig.

Es enthalten echt eine ganze Menge Filme Untertitel. Da man das ganze Prozedere daher nun öfter vor hat, kann man auch gleich einige Voreinstellungen tätigen:

Etwa die Native language auf German stellen:

Und die Konvertierung von AC3-Tracks abschalten:

Das spart dann jedes mal ein paar Klicks.

Die Crux an der Untertitelbehandlung per Subler ist halt, dass der zu treibende Aufwand unter Umständen stark ansteigt, wenn die Qualität der SRT den eigenen Ansprüchen nicht genügt. Die Untertitel die sich direkt per HandBrake von der DVD ziehen lassen, passen natürlich perfekt, haben aber den Nachteil, dass sie nicht so hübsch aussehen, und man vorab Kenntnis über das Vorhandensein von Untertiteln haben muss.

Machbar ist das aber alles.

Batch Convert

Neben dem oben beschriebenen Vorgehen nach und nach die gerippten DVDs in die HandBrake-Queue zu stellen, gibt es auch die Möglichkeit, einen ganzen Batzen Dateien auf einmal zu encoden. Das geht mit HandBrake Batch ganz einfach von der Hand.

Die umzuwandelnden Dateien in das Fenster ziehen, HandBrake Preset und die Optionen für Audio, Untertitel und Zielverzeichnis auswählen und schon gehts los. Optional kann HandBrake Batch nach der Fertigstellung den Mac schlafen legen oder ausschalten. Das ist besonders dann praktisch und stromsparend, wenn die Konvertierung in der Nacht durchgeführt wird, während man selbst schon schläft.

Unter der Haube werkelt das original HandBrake21, die Ergebnisse sind daher auch ebenso toll, nur die Handhabung ist halt für mehrere Dateien optimiert.

Allerdings wurde die Entwicklung von HandBrake Batch im August 2013 eingestellt, da HandBrake seit mindestens Version 0.9.8 ebenfalls Batch-Funktionalität bietet.

Diese ist allerdings so unhandlich implementiert, dass es mich nicht weiter wundert, dass ich sie nicht sofort gefunden habe. Das geht nämlich so:

  • Nach dem Klick auf Source in HandBrake wird kein einzelner Film, sondern ein ganzer Ordner ausgewählt, in dem sich die Filme befinden.
  • Dann wird ein bisschen gewartet, bis die Title gescannt und die Previews erstellt wurden.
  • Erst dann kann man im File-Menü den Punkt Add All Titles To Queue… auswählen, der dann tatsächlich alle auf einmal mit den selben Einstellungen in die Queue einstellt.

Das ist, IMHO, deutlich komplizierter, als der Ansatz von HandBrake Batch.

MP4-Videos mergen

Je nach dem Inhalt der eigenen DVD-Sammlung kann es sein, dass es Filme gibt, die auf mehr als eine DVD verteilt worden sind. Hier war das der Fall bei den Extended Cut Versionen der Herr der Ringe Trilogie. Die Filme waren jeweils auf der Vorderseite und auf der Rückseite22 einer DVD gespeichert, so dass man diese während des Films einmal wenden musste.

Diese Beschränkung fällt natürlich zunächst lediglich theoretisch durch einen Rip- und Encode-Vorgang weg. Vielmehr muss man die fertigen aber immer noch einzelnen m4v-Dateien dann noch zu einer eizigen Datei zusammenkleben. Der Vorgang wird im allgemeinen als mergen bezeichnet.

Das habe ich mit dem multimedia packager MP4Box aus dem GPAC-Framework erledigt. Nach dem Download und der Installation unter OS X ist es aus Gründen der direkteren Erreichbarkeit des Binaries sehr sinnig, den Pfad /Applications/Osmo4.app/Contents/MacOS/ zum $PATH hinzufügen.

Danach ist es mit der generellen Syntax

1
>  MP4Box -add Datei_1.m4v -cat Datei_2.m4v Datei_1_und_2.m4v

möglich, die beiden einzelnen Dateien Datei_1.m4v und Datei_2.mv4 zu der zusammengefassten Datei Datei_1_und_2.m4v zu mergen.

Am Beispiel der Gefährten sah das ganze in der Praxis dann so aus:

1
2
3
4
5
6
7
8
9
10
11
12
13
>  MP4Box -add Der.Herr.der.Ringe.-.Die.Gefährten.Teil.1.m4v  -cat Der.Herr.der.Ringe.-.Die.Gefährten.Teil.2.m4v Der.Herr.der.Ringe.-.Die.Gefährten.m4v

IsoMedia import Der.Herr.der.Ringe.-.Die.Gefährten.Teil.1.m4v - track ID 1 - Video (size 720 x 424)4v
IsoMedia import Der.Herr.der.Ringe.-.Die.Gefährten.Teil.1.m4v - track ID 2 - Audio (SR 48000 - 2 channels)
IsoMedia import Der.Herr.der.Ringe.-.Die.Gefährten.Teil.1.m4v - track ID 3 - Audio (SR 48000 - 2 channels)
IsoMedia import Der.Herr.der.Ringe.-.Die.Gefährten.Teil.1.m4v - track ID 4 - Audio (SR 48000 - 2 channels)
IsoMedia import Der.Herr.der.Ringe.-.Die.Gefährten.Teil.1.m4v - track ID 5 - Audio (SR 48000 - 2 channels)
IsoMedia import Der.Herr.der.Ringe.-.Die.Gefährten.Teil.1.m4v - track ID 6 - media type "text:text"
Appending file Der.Herr.der.Ringe.-.Die.Gefährten.Teil.2.m4v
WARNING: Concatenating track ID 1 with different SPS - result file might be broken
Warning: suspicious edit list entry found: duration 3229.34 sec but longest track duration before cat is 3045.98 - fixing it
Setting up iTunes/iPod file...
Saving to Der.Herr.der.Ringe.-.Die.Gefährten.m4v: 0.500 secs Interleaving

Danach finden sich die beiden Teile des Films vereint in der Datei Der.Herr.der.Ringe.-.Die.Gefährten.m4v, die dann in iTunes importiert werden kann.

Bei mir war das Audio nach dem Merge-Vorgang in Ordnung, das muss aber offenbar nicht immer so ein. Ein anderer Ansatz mit ffmpeg wird in diesem Superuser-Post diskutiert. YMMV. Ähnliches sollte auch mit den MP4tools möglich sein..

Fazit & Quellen

Eine DVD-Sammlung in eine wirklich digitale Form ohne Trägermedium zu bekommen ist erstaunlich arbeitsreich.

Vom Rip-Vorgang über das Encoding, die Metadaten und die Untertitel sind 8 Wochen ins Land gegangen. Je nach Umfang der Sammlung und der persönlichen Aufopferungsfähigkeit kann das natürlich sowohl schneller gehen, als auch länger dauern. Video von DVDs zu holen ist auf jeden Fall deutlich aufwendiger, als Musik von CDs zu holen.

Aber es lohnt sich. Man hat mehr Platz in der Wohnung und kann etwa hübsche Bücher aus Papier in dem nun leeren DVD-Regal drapieren. Man könnte die Regale auch einfach abhängen und sie durch ein schönes Bild ersetzen. Und wenn man nun mal wieder Lust auf den Lieblingsfilm hat, so ist er über Apples Remote App nur noch ein paar Fingerstreiche entfernt. Die Filme lassen sich auch auf einem iPhone oder iPad betrachten und natürlich auch zu einem AppleTV streamen. Durch die simple Speicherung im Dateisystem könnte man auch einen DLNA-Server auf die Verzeichnisse zugreifen lassen um nicht-Apple Hardware, etwa viele moderne Fernseher, zu befeuern.

Das Ergebnis der Mühen ist sehr einfach zu benutzen. Der Weg dahin ist aber am besten mit einigem technischen Sachverstand im Handgepäck zu beschreiten. Dem Unterfangen diesen weiter zu verbreiten, sei dieser Post gewidmet.

Keinesfalls unerwähnt bleiben sollen hier die Leute, die ihre Posts bereits vor mir in diesem Gedanken ins Netz gestellt haben.

Inspiration und Beispiele für mein Vorgehen fand ich vor allem in den Posts

von Alexander Langer.

Einen sehr guten Überblick über das gesamte Thema im Allgemeinen und die Erhaltung von Surround Sound im Zusammenspiel mit AppleTV im speziellen bietet außerdem Russell Brooks.

Dieser Post von Jesse Torres half sehr, das Interface von Subler zu durchsteigen.

Wer bis hierhin gut durchgehalten hat, und sich eventuell sogar unterhalten und angespornt fühlte, dem sei das Unterfangen nochmals empfohlen. Man kann das alles peu à peu nacheinander durchackern und hat am Ende eine toll sortierte Filme-Sammlung auf der Platte, die leichter zu benutzen ist als jemals zuvor.

Willkommen im 21. Jahrhundert.

  1. Eine DVD enthält zwischen 4 und knapp 9 GB Daten…

  2. Das Teil startet allerdings trotzdem noch…

  3. Dank der Growl-Integration könnte man sich auch eine Myriade andere Möglichkeiten der Notifikation überlegen. Etwa mit Prowl

  4. Man muss sie nur anfangs geduldig instruieren, beim Einlegen der Scheibe die Bilderseite nach oben zu halten…

  5. Hier so gute 1,5 Terabyte…

  6. Genauer wäre eigentlich Transcoding…

  7. Also auch inklusive aller nicht überspringbaren Copyright-Hinweise und sämtlicher Werbung…

  8. Die Audiospuren können dabei sowohl gewandelt, als auch in ihrer ursprünglichen Codierung beibehalten werden, mehr dazu etwas weiter unten…

  9. Sowie, wenn machbar, die Untertitelspur für andere Sprachen deren ich nicht so wirklich mächtig bin. Mehr dazu weiter unten…

  10. Ja, das ist eine witzige Kombination, was?

  11. RF wie Rate Factor. Die verwendete Skala ist logarithmisch, kleine Änderungen haben große Auswirkungen…

  12. Hier beispielhaft für die achte Episode der zweiten Staffel…

  13. Vier physikalische und vier virtuelle HyperThreading-Kerne…

  14. Jetzt, wo sie dank HandBrake das passende Format haben…

  15. Man ahnt nicht, wie häufig der selbe Titel über die Jahre manchmal verwendet wird…

  16. Hier sollten sich nun auch Besitzer von pfeilschnellen aber eher kleinen SSDs angesprochen fühlen…

  17. Ja, in der Tat, das Wort Queue kommt oft vor in diesem Post…

  18. Always do your backups, kids…

  19. Mein Klingonisch ist wirklich eingerostet…

  20. Oder sich das halb vergessene Schulfranzösisch ganz plötzlich verbessern…

  21. Open Source - making Software better…

  22. Was den mühsam angelernten zweijährigen DVD-Importeur von weiter oben merklich irritierte…

Author: "--"
Send by mail Print  Save  Delicious 
Date: Friday, 20 Sep 2013 08:43

Meine pinboard.in-Links vom 26. August bis zum 16. September:

  • posh-git - is a PowerShell module which provides Git/PowerShell integration.
  • LICEcap - can capture an area of your desktop and save it directly to an animated .GIF (for viewing in web browsers, etc) or it’s own native .LCF.
  • Smartwatch+ - is an iOS companion app that enhances the experience with your Pebble smartwatch. Smartwatch+ allows you to display additional information on your watch, such as weather, your iPhone’s battery status, unread SMS/email and missed call counts, current stock and Bitcoin prices, your current GPS location, and your latest calendar appointments. Additionally, you can control certain functions of your phone from the watch, such as replying to text messages and initiating calls, launching the camera and taking pictures, controlling the phone’s volume and activating Siri.
  • Boxen - can clone your projects, install your toolchains, apply security policies, configure your favorite music player, set your screensaver, clone your dotfiles, and scream for help when things go haywire.
  • PuTTY Plugin for Launchy - Is a plugin to add completion of saved PuTTY sessions to Launchy. Even works portable and with PuTTY-Tray
  • ngrep - strives to provide most of GNU grep’s common features, applying them to the network layer. ngrep is a pcap-aware tool that will allow you to specify extended regular or hexadecimal expressions to match against data payloads of packets. It currently recognizes IPv4/6, TCP, UDP, ICMPv4/6, IGMP and Raw across Ethernet, PPP, SLIP, FDDI, Token Ring and null interfaces, and understands BPF filter logic in the same fashion as more common packet sniffing tools, such as tcpdump and snoop.
  • turses - is a Twitter client for the console.
  • Luakit Browser Framework - is a highly configurable, browser framework based on the WebKit web content engine and the GTK+ toolkit. It is very fast, extensible by Lua and licensed under the GNU GPLv3 license. It is primarily targeted at power users, developers and any people with too much time on their hands who want to have fine-grained control over their web browsers behaviour and interface.
  • sshfav.sh - A shell script for connecting to your favourite SSH locations easily.
  • sovereign - is a set of Ansible playbooks to build and maintain your own private cloud: email, calendar, contacts, file sync, IRC bouncer, VPN, and more.
Author: "--"
Send by mail Print  Save  Delicious 
Date: Friday, 13 Sep 2013 07:01

The Klapperstorch has landed again, wir sind dann bald zu viert…

Das Bild stammt aus der neunten Woche eines ganz jungen Lebens und zeigt ca. zwei Zentimeter reines Wunder. Jetzt ist Kathi bereits in der 12. Woche und so langsam geht es ihr auch schon besser.

Kathi, der zukünftige große Bruder Linus und ich sind schon total gespannt auf Nummer 2 und freuen uns drauf, sie oder ihn1 irgendwann um den 2. April 2014 herum auf der großen Weltenbühne zu begrüßen.

Das wird bestimmt sehr aufregend.

  1. Mädchen oder Junge? Das ist noch nicht abzuschätzen…

Author: "--"
Send by mail Print  Save  Delicious 
Date: Friday, 30 Aug 2013 07:42

Ich hatte das Vergnügen, in der Folge vier des Nerdbureau-Podcasts als Gast mitwirken zu dürfen.

Das Nerdbureau wird hauptamtlich von André, Fabian und Helge betrieben und widmet sich Wissenschaft, Technik und anderen Zufällen. Eine sympathische Tagline wenn ihr mich fragt.

In dieser Folge namens Einkaufsberatung geht es um die Ressentimens des BSI gegen Trusted Computing 2.0, die verschiedenen Möglichkeiten Leute online und auf der Straße zu tracken, sowie Tips & Tricks zur Beschaffung des News-Fix in einer Post-Google-Reader Welt.

Vielen Dank an die Regulars, dass ich dabei sein durfte. Wenn ihr den Podcast noch nicht auf dem Abspielgerät eurer Wahl abonniert haben solltet, sei dieser Post meine Empfehlung dazu.

Author: "--"
Send by mail Print  Save  Delicious 
Date: Wednesday, 21 Aug 2013 09:21

Meine pinboard.in-Links vom 25. Juli bis zum 20. August:

  • Baïkal - is a lightweight CalDAV + CardDAV server. Baïkal offers ubiquitous and synchronized access to your calendars and address books over CalDAV and CardDAV. Baïkal implements the current IETF recommendation drafts of these industry standards for centralized calendar and address book collections.
  • autoenv - Magic per-project shell environments. Very pretentious. If a directory contains a .env file, it will automatically be executed when you cd into it.
  • upton - is a framework for easy web-scraping with a useful debug mode that doesn’t hammer your target’s servers. It does the repetitive parts of writing scrapers, so you only have to write the unique parts for each site.
  • Forge - Slightly Magic - is an implementation of Magic the Gathering that lets you play against a computer AI opponent using most of the rules of a real game. You can construct decks for you and the computer to play with, currently about 13050 (and counting) cards are available.
  • vimus - An MPD client with vim-like key bindings, written in Haskell
  • Docsplit - is a command-line utility and Ruby library for splitting apart documents into their component parts: searchable UTF-8 plain text via OCR if necessary, page images or thumbnails in any format, PDFs, single pages, and document metadata (title, author, number of pages…)
  • Glui - The simplest way to capture, annotate and share screenshots on OS X.
  • Shuttle - A simple SSH shortcut menubar app for OS X.
  • mon - mon is a super-simple monitoring program. mon spawned from the needlessly complex frustration that tools like monit provide, with their awkward DSLs and setup. mon is written in C, uses less than 400kb of memory, and is incredibly simple to set up.
  • CryPing - is a a free and simple to use network connectivity test tool. It is a command line utility that extends the functionality of the traditional ping command to include the ability to ping individual specific ports. With CryPing you can ping a TCP-IP port. The ability to ping HTTP, SMTP, POP3 or NNTP services. CryPing provides a simple command line way to check that an http web server (HTTP), outgoing email server (SMTP), incoming email server (POP3) or news-server (NNTP) is responding. You can even view the response headers if you wish. This is for when pinging the port just isn’t enough.
Author: "--"
Send by mail Print  Save  Delicious 
Next page
» You can also retrieve older items : Read
» © All content and copyrights belong to their respective authors.«
» © FeedShow - Online RSS Feeds Reader