Durch einen Tweet von @sofakissen wurde ich darauf aufmerksam, dass es wohl mittlerweile schon ernsthafte LTE-Router für zu Hause gibt. Wir erinnern uns: LTE (Long Term Evolution) ist ein neuer Mobilfunkstandard, quasi der Nachfolger von UMTS, der Surfgeschwindigkeiten von bis zu 50MBit/s ermöglicht, und auf kurz oder lang auch das altgediente GSM für Sprachtelefonate ablösen soll. Klingt ja eigentlich ganz schick. In der Theorie.
Übers Ziel hinausgeschossen
Der AStA der TU Dortmund hat wieder offene Stellen zu besetzen, und verteilt deswegen mal wieder Flyer in der Mensa. Auch auf diesen Flyern fiel mir ein Abatz auf, der auch auf den vorhergehenden Stellenausschreibungen vorhanden war.
Clients From Hell Pt. 2
Anruf in der IT. Eine verzweifelte Userin.
Ja, hallo, ich rufe an, weil mein Excel total langsam ist. Die Maus hakt, und es dauert lange, bis ich Text eingeben kann, manchmal kommt da gar nichts.
IT:
Aha, hmhm, interessant…müsste ich jetzt mal gucken.
Etwa ein Speicherleck? In Excel würds mich nicht wundern, ist ja von Microsoft, da ist das ja quasi normal, höhö. Also mal Tante Google anwerfen, und recherchieren. Ist der Fehler bekannt? Gibts Patches dagegen? Fehlanzeige. Selber reparieren is nicht, weil ich nicht wüsste, wie. Weitergooglen.
Nach 20 Minuten ein erneuter Anruf.
Ja, ich bins nochmal. Also das wird hier immer schlimmer. Jetzt hakt das ganze System. Outlook, Firefox, nichts geht mehr.
Der Rechner ist vor 2 Wochen frisch installiert worden, und eigentlich sollte der RAM noch okay sein. Naja, ich hole mal ein Ersatzgerät aus dem Regal und fange an, es fertig zu machen. Kann ja sein, irgendein Hardwarefehler oder so. Trotzdem nervige Arbeit. Irgendwann noch ein Anruf.
Ich habe den Rechner ein paar mal neugestartet, das brachte aber nichts. Deswegen frage ich mal, kann das auch an der Maus liegen?
Normalerweise nicht, wir haben hier ganz normale Logitech-USB-Mäuse, 2 Buttons, Scrollrad, nichts wildes.
Ja, ich frag ja nur, weil ich mir dachte, ob es helfen könnte, dass ich mal die Batterie wechseln könnte.
WTF? Es stellte sich heraus, dass besagte Userin von zu Hause eine Funkmaus mitgebracht hat, weil sie besser in der Hand liegt. So ein hochgezüchtetes Gamerteil. Und sie war sich nicht bewusst, dass die Maus anfängt zu haken, wenn der Akku leer wird.
Wir haben die Userin dann eigenhändig zum Real rübergeschickt, neue Akkus besorgen, und ziemlich geflucht.
Maya-Apokalypse?
So. Da haben wir’s jetzt. 2012. Das Jahr des Weltunterganges, der Apokalypse, des jüngsten Gerichts. Zumindest, so die weit verbreitete Meinung, wenn man den Maya glauben kann. Weil deren Kalender nunmal 2012 aufhört.
Ich möchte dazu gerne etwas loswerden. Die Maya sagen also angeblich das Ende der Welt voraus. (Ja, angeblich, da komme ich nachher noch drauf zurück). Das Ende der Welt wurde immer mal wieder von irgendwelchen Gruppierungen vorausgesagt, und endete dann meistens in einem Kollektivsuizid einer Endzeitsekte, oder der jeweilige “Prophet” wird massiv ausgelacht (so zB bei der “Rapture” letztes Jahr.)
Twitterbot FlashGrdon
Unter meinen Kommilitonen ist irgendwann mal die Angewohnheit aufgekommen, auf jede Erwähnung von “Flash” mit “Aaaaah” zu antworten. So wie Queen in diesem Video:
Vor einigen Wochen war dann der 20. Todestag von Freddie Mercury, und wir kamen auf die Idee, dass man eigentlich mal einen Bot schreiben könnte, der dieses Verhalten imitiert. Quasi so, wie der @DBZNappa Bot, der auf jede Erwähnung von “over 9000” mit “WHAT? NINE THOUSAND” antwortet.
So entstand in kurzer Zeit, als mit langweilig war, der @FlashGrdon Bot. Er ist eigentlich nur ein kleines Script, was per Cron alle 15 Minuten ausgeführt wird, und die Twittersuche nach “flash” ausführt. Bei sämtlichen Tweets, die seit seiner letzten Ausführung geschrieben wurden, replied er mit “FLASH! Aaaah - Saviour of the Universe”. Mehr nicht.
Ich habe den Bot dann noch mit dem Freddie Mercury Rageface ausgestattet, und weil die Lyrics in dem entsprechenden Lied von Freddie Mercury gesungen werden, habe ich die App, mit der sich der Bot auf Twitter verbindet, “Freddie Mercury” genannt. Dann steht da nämlich “sent via Freddie Mercury”.
Der Bot läuft jetzt ca schon 8 Tage, und ich bin erstaunt, wieviele Rückmeldung ich von den angeschriebenen Usern bekam. Ein paar beschwerten sich über den Spam, aber die meisten fandens dann doch großartig, dass Freddie Mercury bzw. Flash Gordon sie angetwittert hat. Der Bot wurde mehrere Male retweetet, landete auf einer Liste, und hat um die 50 Follower. Ich habe keine Ahnung, ob das Spamfollower sind, oder reale Personen. Ich greife in das Geschehen nicht mehr so wirklich ein, sondern lasse den Bot völlig autark arbeiten.
Lediglich die Biografie habe ich noch angepasst, weil ich dann doch ziemlich viele Mentions bekam, dass Flash doch scheiße wäre, und HTML5 doch eh viel besser sei. ;)
Ich wundere mich übrigens nicht mehr viel über die merkbefreiten Spackos, die verwirrt sind, weil ihnen weder Queen, noch Freddie Mercury, noch Flash Gordon etwas sagen. Solche Leute gibts nunmal. :-/
So. Dann geht mal los, und triggert den Bot. Es kann sein, dass er nicht auf alle Tweets reagiert, weil er, wie gesagt, nur alle 15 Minuten in Aktion tritt, und wenn währenddessen mehr Triggertweets geschrieben wurden als Twitter ausliefern mag, dann können die ältesten Tweets nicht verarbeitet werden, weil der Bot nicht weiß, dass es sie gibt.
Die Source gibts übrigens auf GitHub
Clients From Hell
Es gibt sie offenbar wirklich, die Clients from Hell. Einer unserer User arbeitete heute von zu Hause aus, und rief an, weil er ein Problem hatte. User:
Ja, hi, eh, ich rufe an, weil ich nicht mehr ins VPN reinkomme. Da steht immer “Connection reset by client”. Was kann das sein?
IT:
Hm, kann ich so erstmal noch nicht sagen. Ich müsste mich da mal in den Serverlogs umsehen, vielleicht steht da was. Versuch du es mal weiterhin, wenns immer noch nicht klappt, melde dich mal.
User:
Ja okay, mach ich.
3 Stunden vergehen. Nichts passiert. Unser Server scheint korrekt zu laufen, andere User, die zu Hause arbeiten, beschweren sich auch nicht. Das Telefon klingelt erneut.
User:
Hi, ich bins. Also das klappt hier immer noch nicht. Könnt ihr da nochmal gucken? Aber bitte DRINGEND, ich hab in 10 Minuten einen Termin, und muss dann weg.
IT:
Ja klar, wir gucken mal, aber unser Server läuft eigentlich momentan rund. Wir gucken aber mal.
User:
… … Hm, jetzt kommen noch andere Meldungen. So wie hier “Anwendung hat Fehler bei der Speicherinitialisierung an der Stelle 0x12345667. Diese Anwendung wurde beendet.”
IT:
Ah, okay. Das sieht so aus, dass dein Client nicht mehr ganz so fehlerfrei arbeitet. Installier ihn am besten mal neu, die Profile bleiben bestehen, keine Sorge.
User:
Öhm, und woher bekomme ich den Client?
IT:
Naja, die Uni bietet ihn zum Download an, musste mal gucken da auf der Webseite.
User:
Aber da komm ich doch gar nicht rein?
IT:
Nee, das brauchst du auch nicht, das ist direkt auf der öffentlichen Webseite, dafür brauchst du kein VPN
User:
Jaja, aber die kann ich gar nicht öffnen. Ich kann gar keine Webseite öffnen. Hier tut sich gar nichts.
IT:
Ahh ja…auch nicht Google oder so?
User:
Nee, auch das nicht.
IT:
m( Ja gut, wenn deine Internetverbindung nicht funktioniert, ist klar, dass du auch keine Verbindung zu unserem VPN-Server aufbauen kannst.
User:
Wie? Echt? Also sollte ich mich lieber bei der Telekom melden?
IT:
Mhm
User:
Ach so. Ja, dann ist es ja wohl besser, wenn ich das erstmal tue. Ich meld mich dann nochmal bei euch.
IT: m( m(
Neuinstallieren eines Apple TV 1. Generation
Langer Titel ist lang. Ich habe mir letztens einen Apple TV 1. Generation bei eBay ersteigert. Für ziemlich günstiges Geld, weil diese Geräte nicht mehr zur aktuellen Generation gehören, aber vor allem auch, weil das ein Gerät für Bastler ohne Festplatte war. Google bestätigte mir aber, dass da eine ganz normale 2,5” Notebookfestplatte reingehört, und weil ich hier noch 2 Stück rumliegen hatte, war das okay.
Nun ist es aber wohl so, dass diese Geräte keinen USB-Slavemode können, und ihre Updates in der Regel aus dem Internet bekamen. Ein Austausch der Festplatte war von Apple so nicht vorgesehen. Natürlich haben das schon einige Leute ausprobiert, denn die 40GB Maximalgröße waren damals schon wenig. Sämtliche Austauschanleitungen sahen daher vor, die alte Platte mit einem entsprechenden Tool zu klonen, und dann im geklonten Image die Mediapartition (da, wo das ATV die Daten herholt, wenn es nicht streamt) zu vergrößern, und dann das modifizierte Image auf die neue Platte zu bügeln. Soweit sogut, aber was ist mit denjenigen, denen die Platte mal abraucht, oder die ein ATV von eBay besorgen, wo keine Platte eingebaut ist? Apples Supportdatenbank schweigt dazu. Das Internet auch irgendwie.
Es sei denn, man hat etwas Glück, und googlet hartnäckig. Dann stößt man nämlich irgendwann auf atvDrive. Das ist ein kleines Tool, was eine neue Festplatte ordentlich für das ATV formatiert und partitioniert. Also quasi wie hier im Wiki beschrieben, aber automatisiert und risikofrei. Die neue Festplatte sollte dafür mit einem USB-IDE-Adapter am Mac (ja, liebe Windowsnutzer, besorgt euch lieber mal ein gescheites System) angeschlossen sein, aber nicht gemountet sein. Der Unmount geht übrigens ganz schick über das Disk Utility. Denn offenbar ist unter Mac OS ein Unmount nicht gleichzusetzen mit dem Auswerfen eines Volumes über den Finder. atvDrive lässt man dann über die Festplatte laufen (hierbei ist dringend zu beachten, dass man das richtige Device auswählt, sonst formatiert man die falsche Platte). Der Wert für die Größe von OSBoot kann man so lassen. 900MB sind groß genüg für das ATV OS samt einigen kleinen Tools. Während des Vorganges meldet sich der Finder ein paar Mal, dass er einige Partitionen nicht öffnen kann, und ob man die formatieren möchte. Das liegt daran, dass Mac OS offenbar keine EFI-Partitionen verarbeiten kann, und sich deswegen auf den Schlips getreten fühlt. Egal, diese Meldungen kann man (bzw. sollte man dringend) getrost ignorieren. Wenn atvDrive dann durchgelaufen ist, mountet sich die einzige lesbare Partition, “OSBoot”, automatisch, weil sie von Mac OS als mountbar erkannt wird. So. Nun hat man da also eine schick partitionierte Festplatte, aber kein OS. Ein Fortschritt ist es immerhin schon gegenüber der komplett leeren Festplatte, denn nun bootet zumindest das EFI, und das ATV zeigt ein dickes blaues Fragezeichen an. Das war bei der leeren Festplatte noch anders. Da zeigte das ATV nämlich gar nichts an.
Nun muss man also ein funktionierendes Betriebssystemimage herbekommen. Wie gesagt, bei einem Plattentausch hätte man vorher geklont, und modifiziert, und alles. Bei einem Plattentausch hätte man aber alle Partitionen geklont, auch das gesamte EFI-Foo. Das brauchen wir ja jetzt nicht mehr. Nur wie kommt man jetzt ans Image? Da Apple die Kiste nicht mehr supported, würde der naheliegende Lösungsansatz jetzt “Torrent” heißen. Braucht man aber nicht. Apple bietet das Image nämlich zum Download an. Man muss nur wissen, wo. (Wieso man es noch runterladen kann, obwohl der Support für die Kiste längst eingestellt wurde, ist dann eine andere Frage. Vielleicht wegen noch laufenden AppleCare Verträgen, und damit der zuständige Mechaniker an die Software drankommt, oder so was.) Herauszufinden, wo man das Image herbekommt ist eigentlich recht leicht. Man muss nur wissen, wo das steht. In meinem Fall hatte ich nämlich vor, das Apple TV zu “jailbreaken”. Wobei das ja noch kein iOS ist, und deswegen noch nicht Jailbreak genannt werden kann. Whatever. Wenn man nämlich von dessen Projektseite den ATV USB-Creator herunterlädt, sieht man schon an den Screenshots auf der Startseite, dass das Tool ein ATV OS Image benötigt. Dies lädt es beim Erstellen des Patchsticks automatisch herunter. Wenn man also seinen ATV nachher noch jailbreaken möchte, genügt es, sich einen Patchstick zu erstellen, irgendwo wird dann das Image schon rumfliegen. Alle anderen werfen bitte einen Blick auf die beiliegende XML. Da steht die URL zu dem Pfad nämlich drin. URL kopieren, im Browser einfügen und abschicken. Der Download ist ca. 250MB groß. Während man auf dessen Ende wartet, guckt man sich am besten nochmal die Manpage von dd an, oder lädt sich den Carbon Copy Cloner runter. Alsdann klont man die Inhalte des heruntergeladenen Images (was übrigens “OSBoot” heißt) auf die bereits gemountete OSBoot-Partition auf der ATV Festplatte. Man sollte hierbei nicht Quelle und Ziel verwechseln, das wäre ineffizient. Sobald der Klonvorgang fertig ist, sollte man eventuell noch gucken, ob die Symlinks im Rootverzeichnis der Platte richtig gesetzt sind, und auch, ob überhaupt alle gesetzt sind. Einfach mit den Symlinks im Quellimage vergleichen. Wenn alles passt, kann man die Platte jetzt abziehen und ins ATV einbauen. Die richtige Lage des Flachbandkabels herauszufinden bleibt dann einem selbst überlassen.
Wenn man die Platte ans Flachbandkabel angesteckt hat, sollte man erst einmal testen, ob man alles richtig gemacht hat. Ist nämlich ziemlich nervig, wenn man alles wieder demontieren muss, wenn was nicht passt. Also einfach Platte ans Kabel hängen, ein Netzwerkkabel mit aktivem DHCP reinstecken, ein TV-Gerät anschließen, und das ATV durch Anschluss des Stromkabels starten. Der erste Boot dauert subjektv recht lange, aber wenn bei euch vorher schon das blaue Fragezeichen auftauchte, und anstelle des Fragezeichens ein weißer leuchtender Apfel auf eurem TV zu sehen ist, dann ist alles okay. Ich weiß nicht, wie aktuell das Quellimage des Klonvorganges war, deswegen das Netzwerkkabel, dann kann sich das ATV direkt ein paar Updates ziehen. Irgendwann kommt dann der Einrichtungsbildschirm, und das ATV verbindet sich mit iTunes, dann ist alles perfekt.
Wer mag, kann jetzt das ATV mithilfe des USB Creators noch jailbreaken, und das XBMC installieren, das ist nämlich proer. Oder einfach die ATV App aus dem Autostart rausnehmen, und sich über einen kastrierten Intel-MacMini mit Tiger freuen. Oder direkt Gentoo draufbügeln…oder…oder…
Dotfiles Sync mit git und bash
Dieses Problem dürfte jedem bekannt sein, der mit mehreren Computern mit unixoidem Betriebssystem arbeitet. Man arbeitet an einem Rechner, aber es fehlen aliase und Funktionen, die nur auf einem anderen Computer definiert sind. Eine Sync-Lösung für die .bashrc und andere Dateien (d.h. Dotfiles) wäre praktisch.
Wenn man etwas googlet, findet man mehrere Lösungen. An einer Stelle wird die Dropbox vorgeschlagen, was aber teilweise Root-Rechte auf allen beteiligten Systemen voraussetzt, und immer voraussetzt, dass sämtliche Dropbox-Ordner mitgesynct werden, und man dann Symlinks auf die Stellen setzt, wo das System die Dateien erwartet. Ist mir etwas zu oversized.
Eine weitere Lösung ist der Sync über ein Version Control System, z.B. git. Dies hätte den Vorteil, dass man bei der Programmierung der Scripte auch wirklich den Workflow hat, den man beim sonstigen Programmieren hätte. Es erschien mit aber unzweckmäßig, mein gesamtes Homeverzeichnis in ein git zu packen, und mit der .gitignore unerwünschte Dateien rauszufiltern, weil sich die .gitignore auch auf Unterverzeichnisse auswirkt. Da ich in den Unterverzeichnissen teilweise auch noch andere git-Repos drin hatte, war mir diese Lösung zu riskant. Murphys Law sagt nunmal, dass genau da Nebeneffekte auftreten, wo man sie am wenigsten erwartet.
Eine verbreitete Lösung ist nun, das git-Repo in einem Subfolder anzulegen, und dann mit einem Rakefile die Symlinks zu erzeugen. Das kommt meiner Lösung schon näher, aber wieso unbedingt rake, wenn das die Bash doch auch nativ kann?
Ich habe etwas gegooglet, und bin auf ein Bash-Script gestoßen, was in Zusammenarbeit mit git genau jenes kann. Ich habe es etwas modifizieren müssen, damit es auf Mac OS arbeitet (schließlich unterscheiden sich unter Mac OS und Linux die Pfade zum Homeverzeichnis), und habe hier jetzt die Mac-Version und die Linux-Version am Start.
Die Nutzung ist relativ einfach:
- Man kopiert das Script irgendwo hin, wo es noch im PATH liegt.
- Dann konfiguriert man ein Remote Repository so, dass man es ansprechen könnte. Z.B. addet man bei Github den Public Key des Rechner.
- Jetzt initialisiert man das Dotfiles Repository mit
dotfiles setup. Dies legt ein Ordner~/.dotfilesan, und initialisiert da drin ein git Repository. - Das Remote Repository fügt man mit
dotfiles setup-remote <url>hinzu. - Nun kann man mit
dotfiles add <file>die Dateien hinzufügen. Die Datei wird ins Repository kopiert, und der führende Punkt entfernt. Auch das Hinzufügen von Dateien in Unterordnern funktioniert. In der dotfiles.map Datei wird festgehalten, welche Datei im Repository zu welcher “echten” Datei gehört. Um Platz zu sparen wird die Datei nicht wirklich kopiert, sondern ein Hardlink erzeugt. Deswegen ist es auch wichtig, dass~/.dotfilesauf der gleichen Partition liegt wie das Homeverzeichnis. - Der Befehl
dotfiles syncsynct die Dotfiles nun auf den Server. Hierzu wird das lokale Repo erst committed, dann vom Server gepullt und dabei gemerged, und letztendlich wieder gepusht. - Auf einem anderen Server kann man nun mit
dotfiles use <file>oderdotfiles use :alldie Dateien aus dem gesyncten Repository benutzen. Sollte die entsprechende Datei schon vorhanden sein, wird die vorhandene Datei mit dem Suffix .local gebackupt. Es sei denn natürlich, dass die schon vorhandene Datei identisch ist, dann wird sie einfach überschrieben. - Wenn eine solche Datei verändert wurde, können mit
dotfiles updatedie upgedateten Dateien ins Repository reingelinkt werden.
Die Commit-Messages werden automatisch angelegt, und beinhalten die Info, welcher Hostname wann welche Datei geupdatet hat. Wenn man das dann auf allen beteiligten Rechnern gemacht hat, und die Dateien entsprechend gemerged hat, hat man eine einfache Sync-Lösung, die außer git und ssh keine weiteren Tools benötigt.
DISCLAIMER: Ich weiß zwar nicht mehr so wirklich, wo ich das Script her habe, aber da es unter der GPLv2 angeboten wurde, ist mein abgeändertes Script für Mac OS natürlich auch unter der GPLv2 verfügbar.
Bytepac Fotowettbewerb
Vor einiger Zeit hat die Firma Convar das Bytepac vorgestellt. Das Bytepac ist eine Box um eine Festplatte extern am Rechner anzuschließen. Das besondere ist allerdings, dass diese Box ausschließlich aus Pappe besteht (bis auf das Anschlusskit, das sind normale Kabel). Zur Einführung des Bytepac wurde ein Fotowettbewerb veranstaltet, und ich habe mich entschlossen, mitzumachen. Das Thema meines Fotos war:
Der Bytepac inmitten von Kabeln, externen Festplatten, sonstiger Hardware. So platziert, dass das braun der Packung recht gut aus dem Einheitsgrau der anderen Gerätschaften heraussticht.
Das eingereichte Foto war:

Wenn euch das Bild gefällt (oder ihr mir einen Gefallen tun wollt, oder einfach so), dann bitte ich euch, ab dem 29.11. 09:00 Uhr bis zum 06.12 hier einen Kommentar zu hinterlassen. Es ist nämlich so, dass das Foto mit den meisten Kommentaren gewinnt. ;)
Umstieg auf Octopress
Wie euch aufgefallen sein dürfte, sieht mein Blog etwas anders aus. Das liegt daran, dass ich von meinem alten Blogsystem, Wordpress, auf Octopress umgestiegen bin. Octopress ist ein Framework rund um jekyll, also ein Generator für statische Blogseiten. Was ihr hier seht, ist plain HTML, da steht keine SQL mehr hinter, und auch kein PHP. Ich habe das Blog quasi fefeisiert.
Da Kommentare ja weiterhin noch dynamisch sind, habe ich Disqus benutzt, um das weiterhin zu gewährleisten. Die letzten 2 Tage habe ich damit verbracht, den alten Content zu migrieren. Dies ging mehr oder weniger gut, einige Kinderkrankheiten hat das Blog noch. Z.B. dass das Twitter-Widget noch nicht so gut lädt. Aber da bin ich noch dran.
Wen es interessiert: Jeder Post liegt als einzelnes Textfile im Markdown/YAML-Format auf meiner Platte, mit einem Rakescript wird das Blog dann generiert, und mit einem weiteren Rakescript per rsync deployed.
Ich werde die Tage noch etwas basteln müssen, um die alte Wordpress-Funktionalität wieder etwas herzuholen. Ich benötige noch ein Plugin, was aus einer gegebenen Picasa-URL die Galerien erzeugt. Ich muss den Feedburner noch auf den neuen Feed umbiegen. Ich muss mir mit dem Twitterwidget noch was einfallen lassen. Und das automatisierte Publizieren auf Twitter und Facebook steht auch noch an. Es gibt viel zu tun. Und meine Nerd-Credibility ist auch angestiegen. Also alles in allem ein Erfolg. Hoffe ich. :D