Category archives: blog

Die Ringvorlesung im neuen Format

Mit dem Vortrag von Nina Schumacher zu Porn Studies wurde der letzte Vortag der diesjährigen Ringvorlesung als Podcast veröffentlicht. Damit stehen neun der elf Vorträge zum Download bereit.

Da wir damit in diesem Jahr fast alle Vorträge aufzeichnen und veröffentlichen konnten haben wir uns entschieden die Vorträge in einem neuen Format zu veröffentlichen: als eBook.

iBook und PDF

Um die Möglichkeiten von Tablets wie dem iPad ausnutzen zu können gibt es die Ringvorlesung als iBook. Die einzelnen Vorträge lassen sich direkt aus dem iBook wiedergeben (und müssen nicht zusätzlich heruntergeladen werden) und Hintergrundinformationen sind ansehnlich verlinkt. Zum öffnen wird die kostenlose iBooks App von Apple benötigt.

Als Alternative zum iBook stellen wir das eBook noch als PDF zur Verfügung. Da sich Audio-Dateien nicht sinnvoll in PDFs einbinden lassen, sind die Audioaufzeichnung nur verlinkt und müssen auf anderem Wege geladen und wiedergegeben werden.

Ringvorlesung 2013 – Sexualität als iBook (578,2 MB)

Auf Grund der Größe dauert es länger, wenn das iBook aus dem Browser heraus in iBooks geöffnet werden soll

Ringvorlesung 2013 – Sexualität als PDF (1,7 MB)

Feedback

Um einschätzen zu können in wieweit es sich lohnt das mit den eBooks weiterzuführen wäre es super wenn ihr die eBooks weiterverbreiten würdet und uns Feedback gebt, wie ihr die eBooks findet, welche Funktionen fehlen, ob und welche Fehler es gibt usw. Wenn ihr Feedback habt, dann schreiben es einfach in dieses Pad.

Noch weniger Reibungsverluste

In Omni Hijack Professional und Mist wegautomatisieren habe ich bereits beschrieben, wie ich aufnehme und dabei meine Shownotekommentare mache. Gestern habe ich ein wenig rumgespielt, um den Prozess noch ein wenig zu verbessern.

Aufnahmesituation

Während der Aufnahme höre ich also zu, ob AutorInnen genannt werden, die dann in die Shownotes kommen. Wenn ich Glück habe, dann stehen die Namen mit auf der Präsentation. Dann wechsle ich zu Omni Outliner Professional und klicke auf das Script-Icon, wodurch eine neue Zeile erstellt wird. Soweit so gut. Wenn der Name nicht verständlich ist, dann muss ich erstmal suchen, welche Person gemeint sein könnte. Google ist da eine gute Hilfe.

So oder so muss ich noch einen passenden Weblink zur genannten Person raussuchen. In jedem Fall mache ich dann zwei Sachen auf einmal. Weiter zuhören und im Web suchen.

Sachen schnell aus dem Kopf bekommen

Ich habe mir überlegt, dass es ganz cool wäre, wenn ich nur einen Knopf drücken bräuchte, um das Script auszulösen. Das könnte ich nun über ein Tastaturkürzel machen (das wäre die einfachste Variante, bei der ich mir aber das Kürzel merken müsste) oder ich mache es über eines der tollen iDevices. Schon länger wollte ich mal mit OSC, also Open Sound Control, experimentieren. Dazu benutze ich zwei Programme. Auf dem Mac kommt OSCulator zum Einsatz. OSCulator wartet auf einem Port auf OSC oder MIDI Signale. Dabei lassen sich Aktionen definieren, die ausgeführt werden, wenn ein bestimmtes Signal gegeben wird. In meinem Fall wird eine, mittlerweile modifizierte, Version des Apple Scripts für die Shownotes ausgeführt. Dazu später mehr.

Auf iOS gibt es mehrere Möglichkeiten. Ich habe mich für die kostenlose Variante entschieden: Control. Control gibt es für iOS und für Android. In Control lassen sich unterschiedliche Bedienflächen erstellen. Diese geben über OSC oder MIDI Signale an einen Empfänger, in diesem Fall OSCulator, ab. So habe ich mir ein simles Layout für das iPad Mini erstellt, dass eigentlich nur aus vier Buttons besteht. Wichtig ist dabei nur der Add Shownote Button, der ein OSC Signal raus schickt. Eben dieses, welches das Script auslöst.

Bild des Control Bedienfeldes

Das einzige wirkliche Manko an Control ist aber, dass die Dokumentation, sagen wir, nicht wirklich sehr hilfreich ist. Es hat mich doch recht viel Zeit gekostet rauszubekommen, wie ich mit JSON ein Bedienfeld erstellen kann, was macht was ich möchte. Das könnte besser werden.

Kleine Verbesserung im Apple Script

Am Apple Script habe ich ein wenig gedreht um zwei Sachen zu erreichten:

  • Wenn die Ziffer der Stunden oder der Minuten unter 10 ist, wird nicht mehr nur die Zahl angegeben, sondern es wird einen 0 am Anfang ergänzt. Aus 5 wird 05
  • Am Ende des Scripts wird der Omni Outliner in den Vordergrund geholt, damit ich sofort anfangen kann mit tippen

    tell application "Audio Hijack Pro"
        set _ses to first session whose hijacked is true
        set _time to get current recording time of _ses
        if _time > 0 then
            set theHours to (_time div hours)
            if (theHours < 10) then set theHours to (0 as string) & (theHours as string)
            set theRemainderSeconds to (_time mod hours)
            set theMinutes to (theRemainderSeconds div minutes)
            if (theMinutes < 10) then set theMinutes to (0 as string) & (theMinutes as string)
            set theRemainderSeconds to (theRemainderSeconds mod minutes)
            set _cont to theHours & ":" & theMinutes & ":" & (round theRemainderSeconds) as text
            tell application "OmniOutliner Professional"
                set MyDocument to front document
                tell MyDocument
                    make new child with properties {topic:_cont}
                end tell
            end tell
        end if
    end tell
    tell application "System Events"
        set frontmost of process "OmniOutliner Professional" to true
    end tell
    

Insgesamt spare ich mir also das suchen von Omni Outliner, um ihn aufzurufen und ich spare mir das Klicken des Script Icons.

Schnelles Suchen

Noch mehr Arbeit nimmt mir PopClip ab. PopClip ist ein kleines Hilfstool. Es wird aufgerufen, wenn mit der Maus / dem Trackpad Text markiert wird. Angepasst an den jeweiligen Text lassen sich dann Aktionen ausführen. Diese Bedienung ist an das Cut, Copy, Paste auf iOS angelehnt. Über Extensions lassen sich weitere Funktionen hinzufügen. In meinem Fall markiere ich den Text und kann mit meinem Klick eine Websuche oder eine Suche bei der Wikipedia starten. Wenn ich zum Beispiel das 10.000ste Mal die Wikipediaseite von Judith Butler suche, markiere ich einfach den Namen, klicke das Wikipedia Icon und brauche nur noch die URL der Seite kopieren, fertig.

Da geht noch mehr…

… war der erste Gedanke. Der Plan: Über OSC ein AppleScript oder einen (Automator) Dienst aufrufen, der über Apple Script die OPML Datei stript, also von jeder Outline nur den Inhalt des Namestags und die URL stehen lässt (brauch ich ja für Auphonic). Nachdem ich bestimmt drei Stunden daran gesessen habe das in AppleScript umzusetzen habe ich aufgegeben. Ich schiebe es einfach auf Apple Script im Automator, bei dem beim ersten Ausführen ein (nicht näher spezifizierter) Fehler geworfen wird, beim zweiten Ausführen die Operation klappt.
Also habe ich auf Twitter nachgefragt ob mir jemand helfen kann. Und siehe da: 7h3linguist hat sich erbarmt und mir ein Python Script geschrieben, was das Ganze für mich macht. Den Plan mit OSC an der Stelle verworfen und eine Hazel Regel angelegt, die im Ordner für meine Shownotes auf .opml Dateien wartet. Wenn eine gefunden wird, dann wird das Script aufgerufen und die Ausgabe direkt an Sublime Text 2 weitergegeben. Daraus muss der Text nur noch in Auphonic kopiert werden (als Shownotes direkt in der Datei) und in MarkDown, für das Blog, konvertiert werden. Das wiederum lässt sich mit Apple Script in einem Automator Dienst machen:

on replaceText(s, token, withToken)
    considering case
        set defaultDelimiter to text item delimiters of AppleScript
        set text item delimiters of AppleScript to token
        set elements to text items of s

        set text item delimiters of AppleScript to withToken
        set s to elements as string
        set text item delimiters of AppleScript to defaultDelimiter
    end considering
    return s
end replaceText

on trim(strg)
    ignoring white space
        -- do the left trim
        set left_counter to 1
        repeat with J from 1 to length of strg
            if ")
" = (character left_counter of strg) then
                set left_counter to left_counter + 1
            else
                exit repeat
            end if
        end repeat
        try
            set strg to text left_counter through -1 of strg
        on error
            set strg to ""
        end try
        -- end left trim

        -- do the right trim
        set right_counter to -1
        repeat with J from 1 to length of strg
            if "
[" = (character right_counter of strg) then
                set right_counter to right_counter - 1
            else
                exit repeat
            end if
        end repeat
        try
            set strg to text 1 through right_counter of strg
        on error
            set strg to ""
        end try
        -- end right trim
    end ignoring
    return strg
end trim

on run {input, parameters}
    set s to my replaceText(input, ".", ".")
    set s to my replaceText(s, "
", ")
[")
    set s to my replaceText(s, " - ", "](")
    set s to my replaceText(s, "
", "

")
    set s to "[" & s & ")"

    return s
end run

So weit, so gut :)

Kosten

Was kosten nun die verwendeten Sachen so??

Control für iOS ist kostenlos.

  • Hazel: 25$
  • PopClip: 4,49€

OSCulator wird nach dem Motto ‘name your price’ verkauft. Es wird aber ein Preisminimum von 14€ angegeben und ein Preis von 29€ vorgeschlagen.

Noch weniger Mist dank SublPress

Es geht um folgendes: So wenig Mist wie möglich.

Nicht die ganze Geschichte

Das klingt ersmal einfach. In meinem Post Mist Wegautomatisieren habe ich schon ein wenig darüber geschrieben. Der Post endet mit “Dann brauche ich das nur noch auf das Blog schmeißen und alle so \o/”. Das \o/ ist aber nur die halbe Wahrheit. Denn bisher habe ich (in meinem Sublime Text 2) an dieser Stelle einen in Markdown formatierten Text, der in ein WordPress muss. Und WordPress mag Out of the box kein Markdown. Eine bisherige Lösung wäre gewesen eine Blogging-Software wie Mars Edit (Mac) oder Mou (Mac) zu benutzen um aus dem MarkDown HTML oder Rich Text zu machen und den Text dann entweder direkt (mit Mars Edit) ans WordPress zu schicken oder es im Fall von Mou zu kopieren und dann über die Weboberfläche zu posten. Beides umständlich und im Fall von Mars Edit auch nicht günstig. Mal davon abgesehen, dass dafür je ein Mac von nöten ist.

Mehr Funktionalität für ST2

Auf Twitter habe ich dann über den Account Sublime Text Tips von einem Plugin für Sublime Text 2 gelesen: SublPress. Mit diesem Plugin lassen sich direkt aus dem Sublime Text 2 WordPressinstallationen verwalten und auch Artikel posten. Damit entfällt schon mal der Wechsel in den Browser oder ein anderes Programm, um den Artikel zu posten.
Bleibt weiterhin das Problem, dass der Text noch immer MarkDown ist. Dafür gibt es eine weitere Lösgung. In den Kommentaren zum Blogpost über SublPress verlinkt Josh Earl den Text Zero Friction Blogging. In dem Text werden einige Packages für Sublim Text 2 und MarkDown verlinkt. Im Einsatz habe ich jezt MarkDownEditing und MarkDownPreview. Damit bekommt MarkDown ein ansehnlicheres Theme verpasst und über MarkDownPreview kann ich mir direkt eine HTML-Vorschau generieren lassen. Was in der Folge heißt: Artikel schreiben/generieren -> HTML aus MarkDown erzeugen -> Neuen Post auf dem Blog eröffnen -> HTML einfügen -> veröffentlichen!! Und damit fast \o/

Fast \o/

Warum fast?? In den Podcast-Episoden gibt es ein Custom-Field names enclosure in dem die URL der Episode steht. Wenn ich jetzt noch rausbekomme wie ich dieses Feld setzen kann (oder die Funktionalität im Package nachgerüstet wird), dann: \o/

PS: Natürlich ist dieser Blogpost in ST2 entstanden :D

Mist wegautomatisieren

Ich habe neulich ein paar Sachen zusammen geschrieben, wie ich mein Aufnahme-Setup geändert habe,also meine Aufnahme in Audio Hijack Pro mache und die Notizen in OmniOutliner. Dabei stellen sich aber ein paar neue Probleme, die ein wenig neuen Aufwand mit sich bringen. Dabei geht es um Folgendes: Wenn die Aufnahme fertig ist habe ich eine Liste, die zweierlei enthält. Zum einen sind da Anfangs- und Endtimecodes von Unterbrechungen des Vortrags (diese werden aus der Aufnahme geschnitten und die Listenitems gelöscht), zum anderen Shownotes. Diese Shownotes kommen dann einmal in den Blogpost und einmal in die Datei selbst, damit die Notizen auch immer in der Datei liegen, selbst falls das Blog mal down sein sollte. Wenn ich einen Knoten aus dem Outliner kopiere sieht das wie folgt aus: - 0:17:11 (viele Leerzeichen) Michel Foucault (viele Leerzeichen) de.wikipedia.org—Michel_Foucault (viele Leerzeichen) <http: //de.wikipedia.org/wiki/Michel_Foucault>

Ich brauche die Daten aber in zwei Formen:

  • Für die Datei in: Namen – Link
  • Für das Blog : Name mit HTML-Link

Damit ich das nicht händisch bearbeiten muss hilft mir dabei Sublime Text 2 . Damit ich so automatisiert wie möglich vorgehen kann lasse ich die Datei als OPML exportieren und entferne als erstes alle außer dem Block mit den relevanten -Elementen. In meinem Beispiel bleiben da übrig:

<outline text="0:14:31" Name="Husni Mubarak" Link="de.wikipedia.org—Husni_Mubarak &lt;http://de.wikipedia.org/wiki/Husni_Mubarak&gt;"/> <outline text="0:15:9" Name="Mohammed Mursi" Link="de.wikipedia.org—Mohammed_Mursi &lt;http://de.wikipedia.org/wiki/Mohammed_Mursi&gt;"/> <outline text="0:17:11" Name="Michel Foucault" Link="de.wikipedia.org—Michel_Foucault &lt;http://de.wikipedia.org/wiki/Michel_Foucault&gt;"/>

Auf diesen Text wende ich an:

  • <outline text='.*' Name= ersetzen durch nichts
  •  Link=".*&lt; ersetzen durch - * &gt;"/> ersetzen durch nichts
  • " ersetzen durch nichts

Und wir bekommen:

Husni Mubarak - http://de.wikipedia.org/wiki/Husni_Mubarak

Mohammed Mursi - http://de.wikipedia.org/wiki/Mohammed_Mursi

Michel Foucault - http://de.wikipedia.org/wiki/Michel_Foucault

Das sind dann die Links der Shownnotes. Diese kopiere ich in das entsprechenden Feld beiAuphonic. Auphonic ist das Tool, welches die Angleichung der Lautstärke und das Encondieren für uns übernimmt und was ich nur wärmstens empfehlen kann.

Shownotes die Zweite, Das Blog

Das nächste Problem in das ich immer wieder gelaufen bin war, dass ich aus TextExpander gern die CC-Lizenz einfügen lasse, die ich als Snippet hinterlegt habe. Der Schnelligkeit halber gleich mit dem Link drin und damit als Rich Text. Was ich nicht bedacht habe ist, dass dann die Font-Formatierung auch im Blog erscheint, ich das händisch wieder ändern muss, aber auch hier gibt es eine Alternative, nämlich Markdown. Das schöne ist, dass wenn ich ,,md-liz-sa-30 eingebe, dann ergänzt mir das TextExpander in: Die Aufnahme steht unter der [CC BY-SA 3.0](http://creativecommons.org/licenses/by-nc-sa/3.0/de/ "") Lizenz. Und dazu kommt ein zweiter Vorteil, denn ich kann die Formatierung der Shownotes als Links auch gleich mit Automatisieren. Es braucht nur hinten und vorn der Datei einen Zeilenumbruch und wir bekommen:

Husni Mubarak - http://de.wikipedia.org/wiki/Husni_Mubarak Mohammed Mursi - http://de.wikipedia.org/wiki/Mohammed_Mursi Michel Foucault - http://de.wikipedia.org/wiki/Michel_Foucault

Dann:

  • Ersetze Zeilenumbruch durch ) Zeilenumbruch [
  • Ersetze - durch ](

Und wir haben:

[Husni Mubarak](http://de.wikipedia.org/wiki/Husni_Mubarak)

[Mohammed Mursi](http://de.wikipedia.org/wiki/Mohammed_Mursi)

[Michel Foucault](http://de.wikipedia.org/wiki/Michel_Foucault)

Dann brauche ich das nur noch auf das Blog schmeißen und alle so \o/

Omni Hijack Professional

Für die letzten Aufnahmen der Ringvorlesung habe ich Hindenburg benutzt. Eine Software die genau für solche Aufnahmen gemacht wurde. Leider hatte ich bei den letzten drei Aufnahmen jeweils mindestens einen Ausfall der Software, vom ‘Input Buffer Overflow’ bis zum Time Out. Dabei hatte ich immer Glück, dass wir ein Backup live mitlaufen haben, also keine Informationen verloren gingen.

Ich habe mich wegen der Fehler aber dafür entschieden wieder auf Audio Hijack Pro von rogue amoeba umzusteigen, weil ich bis dato keine Probleme hatte. Aber damit geht mir eine wichtige Funktionalität verloren. Das setzen von Markern während der Aufnahme. Für unsere Aufnahmen verlinken wir bisher die erwähnten Autor_innen. Bisher lief das so, dass ich die Aufnahme im Audio Hijack Pro gemacht habe und dann in F5 die Aufnahme noch mal gehört haben (auf 2-facher Geschwindigkeit) und dabei dann mitgeschrieben habe wer zitiert wurde. Mit Hindenburg konnte ich dir Marker gleich während der Aufnahme setzen. Als wichtig hat sich herausgestellt, dass nicht nur aufgeschrieben wird wer zitiert wird, sondern auch wann. Denn oft genug habe ich die Namen falsch verstanden. Das mehrmalige anhören hilft da wunder. Mit Hindenburg ist das dann kein Problem. Die Timecodes sind dann ohne nochmaliges Hören schon da.

Um mir die Zeit auch weiterhin zu sparen habe ich ein wenig Zeit in Apple Script gesteckt, denn wunderbarer Weise ist Audio Hijack Pro an Apple Script angebunden. Für das “Sammeln” der einzelnen Marker nutze ich das wunderbare Programm Omni Outliner, welches auch mit Apple Script redet. *yeay*

Der Trick ist dabei folgender: Wenn ein Apple Script in ~/Library/Scripts/Application/OmniOutliner Pro abgelegt wird, dann lässt sich das Script in die Symbolleiste des Omni Outliner Fensters ziehen. Mit nur einem Klick fragt das Apple Script bei Audio Hijack Pro nach dem aktuellen Timecode, erstellt eine neues Item mit dem zurückgegebenen Timecode. Der Timecode ist grob gerundet, was für meine Zwecke vollkommen ausreicht.

Omni Outliner Professional

Zu sehen ist ein Bild eines Fensters von Omni Outliner Professional, mit dem Script in der Statusleiste und einem Dokument mit drei Spalten. Die erste Spalte ist diejenige mit den Zeitstempeln.

Zwei Sachen sind zu beachten: Das Apple Script wählt nur die erste Session in Audio Hijack Pro aus, die hijacked ist. Sollten mehrere hijacked sein könnte es ein Problem geben. Und das Script fügt den Timecode in das Omni Ounliner Fenster ein, welches gerade im Vordergrund ist.

Hier ist jedenfalls der Script Code:

tell application “Audio Hijack Pro”

set _ses to first session whose hijacked is true

set _time to get current recording time of _ses

if _time > 0 then

set theHours to (_time div hours)

set theRemainderSeconds to (_time mod hours)

set theMinutes to (theRemainderSeconds div minutes)

set theRemainderSeconds to (theRemainderSeconds mod minutes)

set _cont to theHours & “:” & theMinutes & “:” & (roundtheRemainderSeconds) as text

tell application “OmniOutliner Professional”

set MyDocument to front document

tell MyDocument

makenewchildwith properties {topic:_cont}

end tell

end tell

end if

end tell

Hallo Welt!

Ok, Second Try.. nachdem es uns gerade die gesamte WordPressinstallation zerschossen hat, jetzt der zweite Versuch. Diesmal mit Backup und in hübsch.