>

instant-thinking.de

just enough to get you started and leave you confused

The True Cost of an iPhone

| Kommentare

Ein iPhone ist mal gar nicht so schrecklich günstig. Ich finde ja, dass man für das Gerät einen durchaus angemessenen Preis bezahlt, aber dennoch, billig ist anders.

Ein iPhone 4S startet bei 629,00 € und selbst das mittlerweile in die Jahre gekommene iPhone 3GS geht noch für 369,00 € über die Ladentheke.

Wie sich diese Kosten, beginnend bei der Schürfung der Rohstoffe1 zusammensetzen und viele weitere interessante Zahlen und Fakten rund um das Telefon mit dem Apfel drauf, finden sich in einer sehenswerten Infografik auf dieser Seite und auch direkt nach dem Klick.

QuickLinks vom 27. März bis zum 04. April

| Kommentare

Meine pinboard.in-Links vom 27. März bis zum 04. April:

  • Curlish - A Python script that extends curl to work with OAuth and APIs that use it.
  • Tree - is an outliner featuring a horizontally expandable tree view.
  • Legit - is a complementary command-line interface for Git, optimized for workflow simplicity.
  • pygmynote - is a command-line tool for storing and managing heterogeneous bit of data, including notes, tasks, links, and file attachments.
  • mosh - is a remote terminal application that supports intermittent connectivity, allows roaming, and provides speculative local echo and line editing of user keystrokes.
  • Pixa - is an application for designers or people who works with a very large numbers of images and needs to organize, collect and catalog them.
  • The Bastards Book of Ruby - is an introduction to programming and its practical uses for journalists, researchers, scientists, analysts, and anyone else whose job is to seek out, make sense from, and show the hard-to-find data.
  • YouTube Unblocker - Gesperrte YouTube Videos entsperren per Plugin für Chrome, Safari, Firefox und Opera.
  • localtunnel - makes it easy to share your local web server with the wider world: tell it the port your web server’s running on and it returns a temporary URL.
  • Feed2Imap - is an RSS/Atom feed aggregator. After Downloading feeds (over HTTP or HTTPS), it uploads them to a specified folder of an IMAP mail server or copies them to a local maildir.

Benjamin Franklin’s Daily Schedule

| Kommentare

Benjamin Franklin war, so lehrt uns die Wikipedia, ein nordamerikanischer Drucker, Verleger, Schriftsteller, Naturwissenschaftler, Erfinder und Staatsmann.

Er hat beispielsweise1, nach einigen Experimenten mit Windvögeln in Gewittern, den Blizableiter erfunden. Dazu die Bifokalbrille, Schwimflossen und den Katheter. Ausserdem hat er sowohl die erste freiwilllige Feuerwehr, als auch die erste öffentliche Bibliothek der Welt gegründet. Er gehört zu den Unterzeichnern der amerikanischen Unhabhängigkeitserklärung und hat sie auch mitverfasst. Er hat ausserdem dem Golfstrom seinen Namen gegeben und durch dessen systematische Kartographierung, Seereisen über den Atlantik um Wochen verkürzt.

Franklin war nie Präsident der vereinigten Staaten und ist trotzdem auf dem 100 US-Dollar Schein abgebildet2.

Er war ein erstaunlicher Mann.

Wie, so fragt man sich spätestens an dieser Stelle, wie hat er das denn bloß alles angestellt? Und, wenn diese Frage denn auch noch erlaubt sei, wann hat er das alles getan?

Wenn man diesen Fragen ein wenig nachgeht, stößt man unweigerlich auf die folgenden beiden Gegebenheiten:

QuickLinks vom 15. März bis zum 26. März

| Kommentare

Meine pinboard.in-Links vom 15. März bis zum 26. März:

  • SmokePing - is a latency measurement tool. It sends test packets out to the net and measures the amount of time they need to travel from one place to the other and back.
  • pandas - is an open source, BSD-licensed library providing high-performance, easy-to-use data structures and data analysis tools for the Python programming language.
  • vimdb - lets you search for vim commands, keys and configuration options at the command line.
  • NotesWiki - ist ein Wiki für persönliche Notizen. Es läuft auf dem lokalen Rechner und dient zur Sammlung und Verwaltung von eigenen Texteinträgen.
  • pyp - is a linux command line text manipulation tool similar to awk or sed, but which uses standard python string and list methods as well as custom functions evolved to generate fast results in an intense production environment.
  • Countify - Count down a custom duration with our simple Countdown.
  • spot - is an easy-to-use ack-style file search utility written in bash.
  • Album Artwork Assistant - finds album cover artwork on the Internet and adds it to music track files in iTunes.
  • yadr - is an opinionated dotfile repo that will make your heart sing. This is a collection of best of breed tools from across the web, from scouring other people’s dotfile repos, blogs, and projects.
  • Mac OS X keyboard shortcuts - Each and every OS X keyboard shortcut.

So ein toller Tag

| Kommentare

Heute war, obwohl eigentlich gar nichts aussergewöhnliches passiert ist, ein wirklich ganz fantastischer Tag.

Ich habe relativ lang1 geschlafen und konnte dann einen feinen Morgen mit Linus verbringen. In der Zwischenzeit hat Kathi noch ein wenig geschlafen und nach einem Frühstück zu dritt waren wir dann endlich mal wieder Babyschwimmen.

Danach gab es für Linus Mittagessen und einen Mittagsschlaf und für Kathi und mich eine entspannte Mittagspause auf dem Balkon in der Frühlingssonne.

Nach guten eineinhalb Stunden haben wir den Wochenendeinkauf gemeistert. Ab nach Hause, ab auf den Balkon, Grill anschmeissen und lecker essen.

Aufräumen, noch etwas Bespaßung für Linus, problemloses zu Bett bringen und nun den Abend ausklingen lassen.

Vermutlich ist es eine Kombination aus Familien-Harmonie, Sonne, Frühling, Wind und Balkonzeit.

So super.

  1. Immerhin 07:30 Uhr…

QuickLinks vom 24. Februar bis zum 13. März

| Kommentare

Meine pinboard.in-Links vom 24. Februar bis zum 13. März:

  • parallel-flickr - is a tool for backing up your Flickr photos and generating a database backed website that honours the viewing permissions you’ve chosen on Flickr.
  • pdfgrep - is a tool to search text in PDF files. It works similar to grep.
  • Hekyll - is a presentation generator that uses Jekyll and Impress.js to create awesome presentations. You write Markdown files, which get turned into individual slides for an Impress.js presentation. How cool is that?
  • RetroShare - is a Open Source cross-platform, private and secure decentralised communication platform. It lets you to securely chat and share files with your friends and family, using a web-of-trust to authenticate peers and OpenSSL to encrypt all communication. RetroShare provides filesharing, chat, messages, forums and channels.
  • Mezzanine - is a content management platform built using the Django framework. It is BSD licensed and designed to provide both a consistent interface for managing content, and a simple, extensible architecture that makes diving in and hacking on the code as easy as possible.
  • A Byte of Vim - is a book which aims to help you to learn how to use the Vim editor (version 7), even if all you know is how to use the computer keyboard.
  • Git In The Trenches - is designed to be a book that focusses on teaching people to use Git by associating with scenarios that are experienced by a fictional company called Tamagoyaki Inc. Through reading about their day to day lives, the reader will learn not only how to use Git, but why version control systems are important and how to implement them within an organisation.
  • ChiliProject - is a web based project management system. It supports your team throughout the complete project life cycle, from setting up and discussing a project plan, over tracking issues and reporting work progress to collaboratively sharing knowledge.
  • Adapter - It’s a free video converter for Mac & PC. It converts avi, saves flash .flv, crops video and more. It even works with audio and image files so you can convert wav to mp3 and transform jpg files.
  • TwitVim - is a Vim plugin that allows you to post to Twitter and view Twitter timelines.
  • Tyler - A tiling window manager for OS X that automatically arranges your windows according to pre-defined layouts.
  • Atea - is a minimalistic text file based menu bar time tracker for Mac OS X.
  • Cauliflower Vest - is an end-to-end Mac OS X FileVault 2 recovery key escrow solution. While stock OS X FileVault 2 is consumer focused, the goal of this project is to provide enterprise features.

Youtube Videos einbetten mit Octopress und Kramdown

| Kommentare

Eines der Probleme, die diese Migration auf Octopress aufwarf, war, dass YouTube-Videos mit dem aktuellen iframe-Embed-Snippet nicht korrekt gerendert wurden. Statt des Videos wurde einfach der HTML-Quelltext des Snippets angezeigt.

Wenn man die Videos, so wie auf der Octopress Video Testpage gezeigt, auf einer Seite mit der Dateiendung .html einbettet, so ist alles total in Ordnung. Den Quelltext dieser Seite kann man sich praktischerweise direkt auf GitHub anschauen. Die Endung .html sorgt dafür, dass der Inhalt der Seite ohne Behandlung direkt als HTML durchgereicht wird. Benutzt man stattdessen .markdown als Dateiendung, so wird der Post durch den konfigurierten Markdown-Parser gejagt und von diesem in HTML konvertiert…

So kam ich drauf, dass Octopress an sich gar nicht das Problem ist, sondern der von mir verwendete Markdown-Renderer, Kramdown1, der eigentliche root cause ist…

Der Bug ist in der Tat bereits bekannt und hier sowie hier dokumentiert. In der nächsten Version soll das Problem behoben werden:

The next version of kramdown will allow boolean attributes like “allowfullscreen” to be specified. This should fix your problem and make kramdown more resilient.

Bis dieses Problem also gefixt ist, werde ich zukünftig nach dieser Anleitung vorgehen2: Einfach ein paar invalide Statements aus dem Embed-Code von Youtube rauswerfen, noch ein class für eventuelles CSS-Styling hinzufügen und schon klappt das.

Um also ein YouTube-Video mit Octopress und Kramdown darzustellen muss man aus:

Kaputtes YouTube Embed
1
<iframe width="420" height="315" src="http://www.youtube.com/embed/5UGlrBvUOt4" frameborder="0" -allowfullscreen></iframe>

Die validere Form bauen:

Funktionierendes und valides YouTube Embed
1
<iframe class="youtube-player" width="420" height="315" src="http://www.youtube.com/embed/5UGlrBvUOt4"></iframe>

Dann klappt das schon sehr gut.

Um jetzt noch die Tiparbeit zu sparen, die nötig wäre um jedes Embed einzeln zu fixen, habe ich mir dieses Octopress Youtube-Liquid-Template besorgt und wie folgt angepasst:

Gefixtes youtube.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
module Jekyll
  class Youtube < Liquid::Tag
    @@width = 420
    @@height = 315

    def initialize(name, id, tokens)
      super
      @id = id
    end

    def render(context)
      %(<iframe width="#{@@width}" height="#{@@height}" src="http://www.youtube.com/embed/#{@id}"></iframe>)
    end
  end
end

Liquid::Template.register_tag('youtube', Jekyll::Youtube)

Das so gefixte Plugin landete dann als youtube.rb im plugin-Ordner von instant-thinking. Youtube-Videos können nun einfach so mit der YouTube-ID als einziger Angabe eingebunden werden:

{% youtube 5UGlrBvUOt4 %} 

Das spart einem faulen Menschen wie mir3 sehr viel Tipparbeit und schon sind Olli und Stefan valide eingebunden und im Bilde:

Die Videos die aktuell kaputt eingebettet sind: Da werden sicher ein paar Zeilen grep, sed oder ack und awk weiterhelfen können… So etwas ist in Textdateien ja sehr komfortabel zu fixen.

Wieder ein Punkt weniger auf der ToDo-Liste.

  1. Denn nur dieser kann Fußnoten passend erzeugen. Und ich mag Fußnoten…

  2. Und damit direkt die Validität von instant-thinking.de verbessern…

  3. Informatiker tippen so viel, da spart man an jedem Tastenanschlag…

Running on Octopress

| Kommentare

Seit Samstag Abend wird dieses Blog nicht mehr von Wordpress, sondern von Octopress angetrieben. Ein sehr schönes Gefühl, wenn alles woran man so in Zeitstückchen vor sich hin gebastelt hat, am Ende auch tatsächlich funktioniert, wenn man das deploy Script ausführt.

Nun, fast.

Die Migration verlief genau wie geplant, bis auf zwei Sachen, die man eben vorher kaum testen konnte.

www is for sissies

Einerseits hatte ich offenbar irgendeine Wordpress-Einstellung vergessen, die dafür sorgt, dass dieses Blog zwar über www.instant-thinking.de erreichbar ist, aber dann nach instant-thinking.de umleitet.

Fehlt diese Umleitung, so ist die Seite unter zwei Adressen zu erreichen und das macht Suchmaschinen sehr traurig…

Das war aber glücklicherweise mit zwei ergänzenden Zeilen in der .htaccess schnell getan.

disqus Kommentare

Ausserdem fehlten mir alle Kommentare. Ich habe schon vor etlichen Wochen und Monaten die Kommentare von instant-thinking auf das externe disqus-System umgestellt. Der Plan war, dass sich die Kommentare einfach wieder einfinden sobald der Switch gelaufen ist. Die URLs haben sich ja in keiner Weise geändert.

Leider war dem nicht so. Alle Kommentare sind in meinem Moderation-Panel sichtbar, nur auf instant-thinking zeigte sich bislang nichts…

Ich habe dann sicherheitshalber noch am Samstag eine CSV-Datei gebaut 1, die für alle URLs die disqus verzeichnet hatte, die korrekte URL nennt und die CSV dem Migration-Wizard vorgeworfen.

Danach ging ich ins Bett.

Am Sonntag erst einmal keine Veränderung, also habe ich disqus um Hilfe gebeten.

Der Rat des Supports war es, erst einmal abzuwarten, da so eine Aktion schon einmal 24 Stunden dauern könne.

Derzeit, Montag Abend, hat schon wieder der ein oder andere Post Kommentare, aber im großen und ganzen ist instant-thinking immer noch kommentarfrei.

Neue Kommentare funktionieren übrigens ganz hervorragend, nur die alten werden nicht angezeigt. Mal schauen, ob sich die restlich noch einfinden, ansonsten werde ich auf das Angebot des Supports zurück kommen und mich noch einmal bei denen melden.

Running

Aber der Rest hat wirklich ganz fantastisch funktioniert.

Links auf Bilder, auf die Feeds und noch ein paar Sachen werden umgeleitet, die Youtube-Embeds funktionieren, und ich habe Fancybox eingebaut und mir ein rudimentäres Liquid-Plugin für die Bilderauszeichung gebastelt.

Was noch fehlt, ist ein bisschen Script-Zeugs für das automatisierte Posten, die QuickLinks, die Tweets und noch so ein paar Sachen. Da ist für Spaß am Gerät und Stoff für neue Posts gesorgt.

  1. Das ging dank vim erstaunlich schnell

QuickLinks vom 12. Februar bis zum 22. Februar

| Kommentare

Meine pinboard.in-Links vom 12. Februar bis zum 22. Februar:

  • Fliqlo - Flip-clock style screensaver for Mac and Windows
  • sl - takes the most common use of Unix ls, to display the files in a directory compactly in multiple columns, and makes it substantially more useful.
  • SourceTree - is a free Mac client for Git, Mercurial and Subversion version control systems.
  • Sikuli - is a visual technology to automate and test graphical user interfaces using images (screenshots).
  • nload - nload is a console application which monitors network traffic and bandwidth usage in real time. It visualizes the in- and outgoing traffic using two graphs and provides additional info like total amount of transfered data and min/max network usage.
  • Middleman - is a small tool for developing stand-alone, static websites. It's great for separating frontend development from the backend, developing blazingly fast static websites or quickly creating prototypes.
  • pytograph - Reflect local filesystem changes on a remote system in real time, automatically. In a nutshell, you instruct pytograph that there are directory structures on your machine that match directory structures on a remote machine. It monitors the directories on your local machine for changes, then makes identical changes on the remote machine in real time via SFTP.
  • Charles - is an HTTP proxy / HTTP monitor / Reverse Proxy that enables a developer to view all of the HTTP and SSL / HTTPS traffic between their machine and the Internet.
  • MockSMTP - is a native Mac application that embeds its own SMTP server. It also features an e-mail client browser, enabling instant viewing of both raw content and HTML rendering, so you can see how your mail looks when delivered.
  • Dropbox Automator - automatically Processes Images, Text, PDFs and Other Files in Your Dropbox Any Way You Choose

Switching to Octopress

| Kommentare

Dieses kleine Blog läuft nun schon seit dem 18. August 2007 mit Wordpress.

Damals switchte ich von Typo, zu dem ich vorher von SnipSnap aus switchte.

Nun bin ich tatsächlich schon seit meinem zarten Hinweis vom 6. Juni 2011 dabei, das diese Seite antreibende Blogsystem auf Jekyll umzustellen. Um genau zu sein auf Octopress aber dazu gleich mehr…

Fakt ist, dass dieses Wordpress so langsam aber sicher unzeitgemäß erscheint. Das liegt auf Frontendseite natürlich zu einem großen Teil am verwendeten Theme, welches sich natürlich ändern ließe. Aber auch auf der Backendseite erscheint mir Wordpress nach all den Jahren immer altbackener. Nicht, das es sich nicht weiterentwickelt hätte, ganz im Gegenteil. Das Admin-Panel ist sogar durchgängig besser und schicker geworden finde ich. Aber ich bin seiner sozusagen überdrüssig und der inner Geek sehnte sich auch schon seit einiger Zeit nach einem neuen Blogtriebwerk.

Und auf der Triebwerksseite gibt es einiges an positiven Änderungen durch den Einsatz des neuen Systems. Jekyll ist in dem Sinne keine Blogsoftware, sondern eine Parsing Engine. Man wirft ihr eine Verzeichnisstruktur gefüllt mit Dateien vor und Jekyll baut daraus eine fertige Website1. Dieser Vorgang wird im Allgemeinen als Backen einer Website bezeichnet. Auf diese Art und Weise treibt Jekyll nicht nur zahlreiche Websites im Netz, sondern etwa auch sämtliche GitHub Pages an.

Dieses Backen hat zur Folge, dass nur noch statische Seiten ausgeliefert werden, die mit buchstäblich jedem Webserver ohne jede weitere Abhängigkeiten ausgeliefert werden können. Daraus ergeben sich die folgenden Vorteile:

  • Keine Datenbank mehr nötig, die die Informationen vorhalten müsste
  • Keine Scriptsprache mehr nötig, mit der die Informationen aus der Datenbank geholt werden
  • Ideale Performance, da nichts on the fly zusammengebaut wird
  • Keine Userverwaltung
  • Keine Adminbackend
  • Keine Updates auf dem Server einspielen
  • Kein Einfallstor für Schadcode2
  • Bloggen mit Vim und Markdown
  • Versionskontrolle und Backup sind sehr einfach zu implementieren

Der eine große Nachteil ist, dass das Backen der Website mit allen Verlinkungen und Layouts und Posts und allem, eben eine gewisse Zeit dauert. Auf dem Mac mini benötigt die Erstellung von instant-thinking.de aktuell eine knappe Viertelstunde. Das MacBook Pro erledigt die Aufgabe in acht Minuten, aber auch das ist noch relativ lang.

Ein weiteres, aber deutlich kleineres Problem, ist die Einbindung von dynamischen Inhalten wie etwa Kommentaren. Das wird auf dieser kleinen Seite3 aber schon seit geraumer Zeit von Disqus erledigt. Die Widgets von last.fm, Twitter und flickr in der Seitenleiste funktionieren genau so weiter, wie sie bisher auch arbeiteten. Also alles gar nicht so wild.

Ausserdem kommt hinzu, dass Jekyll so gut wie nichts mitbringt. Man ist also gezwungen, sich alles was man so haben möchte selbst zu bauen. Dieser Umstand hat wesentlich dazu beigetragen, dass die ganze Geschichte so lange gedauert hat. Ich war eigentlich, vor allem dank dem Blueprint CSS Framework, auch schon recht weit und die Seite sah schon ganz gut aus.

Aber dann stiess ich auf Octopress.

Hierbei handelt es sich um ein Jekyll-Framework. Man muss nun also nicht mehr bei Null anfangen4, sondern kann auf einer ausgesprochen soliden Basis aufbauen. Dazu gehören ein responsives Theme, gelöste Standardaufgaben per Rakefile und die einfache Installation per git, rvm und bundler. Das gesamte Framework kann durch custom-Verzeichnisse und -Dateien an den eigenen Geschmack angepasst werden.

Das alles macht den Einstieg in die statische Blog-Erstellung deutlich einfacher und die schnellen Erfolgserlebnisse tragen nicht wenig zum sprichwörtlichen Spaß am Gerät bei. Das Ergebnis schaut aktuell auch schon ziemlich fertig aus.

Ausserdem bin ich einfach famos schlecht darin, einer so großartigen Tagline wie der von Octopress zu wiederstehen:

Octopress - A blogging framework for hackers

Der langen Rede kurzer Sinn, hier die Dinge die ich bereits erledigt habe:

  • Export der Posts aus Wordpress in Text-Dateien
  • Anpassungen von Umlauten und anderen Sonderzeichen in Tags und Überschriften
  • Konvertierung der Fußnoten-Syntax von wp-footnotes in Multimarkdown
  • Konvertierung der verschiedenen, über die Jahre eingesetzen Code-Highlighting-Blöcke
  • Auslagerung des Kommentar-Systems zu Disqus
  • Anpassung des Themes in Anlehnung an das unter Wordpress eingesetzte Copyblogger-Theme

Und hier die Dinge die noch anstehen, bis der Switch tatsächlich stattfinden kann:

  • Einige eingebette Videos funktionieren nicht mehr. Es wird nur der Embed-Code ausgegeben
  • Implementierung von Lightbox-Funktionalität
  • Anpassung der .htaccess um alte Inhalte auf die neuen Adressen umzuleiten. Cool URIs don’t change.
  • Erstellung eines Workflows5 für das automatische und zeitversetze Publishing
  • Ein Script um die QuickLinks weiterhin automatisiert aus Pinboard heraus zu bloggen
  • Ein New Blog Post Tweet-Script

Also noch einiges zu tun.

Aber es macht wirklich einen Heidenspaß, die bevorzugten Werkzeuge einzusetzen, wenn es um das Schreiben von Posts und das Verwalten des Blogs geht. Einfache Textdateien, eine einfache Auszeichnungssprache, ein guter Editor und ein modernes Versionierungssystem sind schlicht großartige Werkzeuge deren Benutzung mir viel mehr Freude bereitet, als ein überkandideltes Web-Backend mit einem Dutzend Plugins.

Und, hey, vielleicht gibt es dann sogar mal wieder was öfter neue Einträge wenn das mal alles durch ist…

Stay tuned…

  1. Und der Begriff Website hat bei Jekyll eigentlich immer die Bedeutung Blog…

  2. Abgesehen von dem Webserver selbst natürlich…

  3. In Vorbereitung auf den großen Switch weg von Wordpress…

  4. Oder sich eine der zahlreichen Jekyll-Sites klonen und anpassen…

  5. Mir schwebt da eine Kombination aus Dropbox, FolderActions und git-hooks vor…