knuspermagier.de
Ein L und zwei P. Philipp!

Episoden aus meinem spannenden Leben

Es ist Sonntag, 20:56. Ich habe gerade das Licht angemacht, weil es draußen wieder früher dunkel wird. In ein paar Wochen ist es wieder um 16 Uhr stockduster und den ganzen Tag kalt. Dann kann man schön den ganzen Tag jammern, das es doch hoffentlich bald wieder Sommer ist. Solang, bis es Sommer ist. Im Sommer hab ich Geburstag, aber das dauert noch ein bisschen.


Ich hätte den letzten Absatz auch ganz kitschig mit "Winter is coming" abschließen können, dann hätte ich eine schöne Überleitung gehabt du diesem Absatz, in dem ich erwähnen will, dass ich endlich anfing Game of Thrones zu lesen. Ja, es ist lang und ja, ich werde ewig brauchen um erstmal die Serie aufzuholen, aber ich will einfach wissen, wie es weiter geht, ohne auf die Serie angewiesen zu sein. Immerhin sind die Kapitel (bisher) immer ganz gut lesbare 15-Minuten-Häppchen. Laut dem Kindle werde ich das erste Buch in 17 Stunden abgeschlossen haben, fragt mich also morgen Mittag nochmal.


Ich hätte auch direkt mit dem dritten Buch anfangen können, aber das geht ja nicht. Ich muss auch erstmal DiRT 2 spielen, bevor ich DiRT 3 anfangen kann. Nach meinen Erlebnissen mit Ersterem weiß ich allerdings auch gar nicht mehr, ob ich überhaupt Lust auf das Letzere habe. Der geringere Rallye-Anteil störte mich ja schon im ersten Teil der DiRT-Serie, in DiRT 2 hat sich der aber (zumindest gefühlt) nochmal reduziert. Aber naja, was solls. Ich füge mich der Macht der Zahlen.


Ich würde echt gerne wieder mehr Kram in diesen Blog schreiben. Allein schon wegen der Tatsache, dass ich mich in 3-4 Jahren hassen werde, wenn ich mich durch das 2013er Archiv bewege und da dann nur einen Eintrag zu langweiligem Programmierkram für jeden Monat finde. Ich weiß noch nicht genau, wie es funktionieren soll, aber irgendwie kriegen wir das schon hin.

Better

Viele denken sich jetzt wahrscheinlich “Och nee, nicht schon wieder so ein Programmier-Post!”, aber man muss die Dinge so nehmen wie sie kommen.

Ich erzählte ja vor einigen Monaten mal, dass ich jetzt Next benutze um herauszufinden, wo mein Bargeld eigentlich bleibt. Bereits damals erwähnte ich einige Schwachstellen, unter anderem die fehlende Möglichkeit einer Synchronisation. Also mir hätte ja schon ein CSV-Export gereicht, aber nein. Nichts.

better.png

Da sich nun nach 4 Monaten auch nichts mit der App getan hat und die Entwicklung wohl nur auf Sparflamme weitergeführt wird, habe ich mich nun daran gemacht meine eigene App zu entwickeln. Die Idee ist ja auch schon länger da, mindestens seitdem ich Next benutze, aber erst vor 2 Wochen fing ich an mir kurz genau zu überlegen, was ich will:

  • Weniger Kategorien, eigentlich brauch ich nur fünf
  • Synchronisation mit meinem Ausgabenmanage-Webservice
  • Schnellzugriffsmöglichkeit für Beträge die immer wiederkehren (Taxifahrten, die immer das gleiche kosten, etc)
  • Um nicht viel Zeit zu verlieren erstmal kein aufwendiges Design
  • Statusbar nicht ausblenden!

Nach ein paar Skizzen fing ich, ich glaube am Montag, an es schnell umzusetzen. Ein paar Abende später und nach etwa… 15 Stunden reine Code-Zeit bin ich ganz zufrieden. Einerseits damit, dass ich jetzt eine benutzbare App habe und Next löschen kann, andererseits damit, das ich es in relativ kurzer Zeit geschafft habe, eine App zu machen, die funktioniert. Hätte ich mich entschieden direkt mit SQLite zu arbeiten und mich nicht mit Core Data rumzuärgern, hätte ich wohl noch mal 20% der Zeit eingespart. Aber auch nichts gelernt, so ist das!

Natürlich muss man auch dazu sagen, dass das “Design” auch sehr… zeitsparend war. Aber für die ersten Testläufe reicht es erstmal, hübsch machen kann man es ja immernoch. Um das ganze mal etwas in Aktion zu sehen habe ich hier ein Video vorbereitet: (Die Qualität ist nicht supergeil, aber ich nahm es per AirPlay Mirroring auf. o_o)

Insgesamt war es eine schöne Übung, ich hab ein paar neue iOS-Sachen ausprobieren können und alles ist gut! Ob ich irgendwann Lust habe noch richtig Zeit zu investieren um das ganze App Store-tauglich zu machen liegt natürlich in den Sternen. Schön wär’s aber gewiss.

Lifeslice

Letztens sprachen wir in unserem Chat über Dinge und unter anderem erwähnte Marcel, dass er vielleicht aufhört Everyday zu benutzen, weil es nicht mehr geupdated wird und dann stellte sich heraus, dass es vielleicht doch irgendwann geupdated wird.

Spannende Information. Jedenfalls bin ich quasi auch ein großer Fan von Everyday, nur leider bin ich zu faul jeden Tag manuell ein Foto von mir zu machen. Ist nicht so, als hätte ich es nicht schon oft genug probiert, aber ich schaff es einfach nicht. (Im Gegensatz zu Day One ist es ja etwas, was man dann auch wirklich JEDEN Tag machen muss -- wenn ich bei Day One mal einen Tagebucheintrag einen Tag später nachhole macht das ja nichts).

face_2013-07-31t15-00-00z-0200.jpg

Als ich noch ein bisschen über die Situation nachdachte kam mir der Einfall, dass ich ja einfach ein Script nehmen könnte, was jede Stunde, oder so, ein Foto von mir macht, per Webcam. Automatisch! Jede Stunde deshalb, damit ich am Ende des Tages vielleicht wenigstens ein brauchbares Bild habe. Wenn das nur einmal am Tag passiert, kann's ja sein, dass ich gerade nicht am Rechner sitze, oder so.

Kurz gegoogelt und Lifeslice gefunden. Nach ein bisschen rumgefrickel bekam ich es dann auch zum laufen und passte es ein bisschen an, sodass es nur noch das Webcam-Bild aufnimmt. (Eigentlich macht es auch noch einen Screenshot vom Bildschirm und speichert die aktuell offene App, aber den Kram brauch ich gerade eigentlich nicht.)

Werde dann in einigen Wochen weiter berichten, wie gut es läuft. Eventuell werde ich es auch forken und mit meinen Anpassungen noch mal online stellen, für die Nicht-Frickler unter euch. Mal sehen!

Geburtstage

Hallo liebe Leser,

die Aufmerksamen unter euch haben sicherlich daran gedacht, dass ich letztens Geburtstag hatte. Vielen dank dafür!

Ich habe auch an mich gedacht und mir einen kleinen Wunsch erfüllt, den ich schon länger hatte, aber immer vor mir herschob: einen vernünftigen Monitor für zuhause.

Im Büro hab ich jetzt ja seit mehr als einem Jahr ein 27" Thunderbolt-Display und immer wenn ich nach Hause kam musste ich mich wieder mit dem 24" Full-HD-Ding zufrieden geben. Pixel so groß wie Traktorreifen!

IMG_8970.jpg

Naja. Aber ein Thunderbolt-Display wollte ich für's Homeoffice nicht -- zu teuer und ständiges Umstecken zwischen PC und Macbook hätte mich ziemlich genervt. Ich entschied mich also für die einzige verfügbare Alternative: den Dell 2713HM.

Dazu kaufte ich noch einen USB-Switch und nun kann ich sowohl Macbook (via Displayport) und PC (via DVI) dran benutzen und ganz elegant Tastatur/Maus per Tastendruck switchen. Woohoo! Ja, okay, es sind mehr Kabel als bei einem Thunderbolt-Display, aber diesen Kompromiss muss man wohl eingehen.

Damit bin ich jedenfalls sehr zufrieden.

IMG_8955.jpg

Natürlich bin ich nicht der Einzige, der mir was schenkte. Insgesamt war es, bis auf den Monitor, ein sehr haushaltsorientierter Geburtstag. Von meiner Mama bekam ich eine ordentliche Pfanne, meine Schwester schenkte mir neue Teller (wahrscheinlich will sie mehr abwaschen!) und von Martin und Tatjana bekam ich diese handgefertigte Panda-Tasse! Grandios. Danke auch an Beeti! <3

Des Weiteren erhielt ich Capri-Sonne von Daniel und Max! Oben im Foto ist ein Exemplar zu erkennen.

Jetz bin ich also 25! Endlich mal eine schöne runde Zahl.

Wellen

IMG_3509.jpg

Hier ein zusammenhangloses, mittelgutes Bild aus dem Teneriffa-Urlaub von 2011, was ich veröffentliche, weil ich es doch noch ganz schön fand und weil ich nach den Walls of Text in letzter Zeit hier mal wieder was Schönes haben wollte. Danke für ihre Aufmerksamkeit.

Mac OS X 10.8, iTerm2, screen, irssi

Für mindestens 43,759% meiner täglichen Chat-Aktivität verwende ich IRC. Mein Setup sieht dabei meistens so aus, dass ich von einem meiner Rechner, die mittlerweile beide Mountain Lion haben über die ganz wunderbare iTerm2-Applikation per SSH auf meinen V-Server zugreife und mich da in meinen screen einklinke, in dem eine irssi-Instanz läuft.

Klingt kompliziert, ist aber alles ganz einfach. Irssi ist der beste IRC-Client, wie jeder weiß, und der läuft da einfach 24/7 auf diesem billig V-Server. Erfüllt seinen Zweck wie eine Nadel im Heuhaufen. Außerdem benutze ich irssiproxy um auch mal mit einem Client zuzugreifen, der Bilder unterstützt.

Seit dem Update auf Mountain Lion hatte ich jedenfalls das Problem, dass irgendwie keine Umlaute mehr gingen. Zunächst schob ich es immer vor mir her, da es nur das Macbook Air betraf und ich dann halt einfach auf Umlaute verzichtete, aber letztes Wochenende brachte ich das andere Macbook auf den neusten Stand und seitdem gingen Umlaute allgemein nicht mehr. Schade.

asdasdddd.png

Da sich das Problem irgendwie exakt auf die Kombi Mountain Lion + screen + irssi beschränkte half auch nichts, was ich im Internet so fand um etwaige UTF-8-Probleme mit irssi und screen zu lösen. War alles schon richtig konfiguriert. Dachte ich jedenfalls.

Eben kam ich durch... mehr oder weniger Zufall auf die Lösung. Es reicht anscheinend nicht den screen einmal mit screen -U zu starten. Man muss bei jedem attachen des screens auch die -U-Flag verwenden. Verrückt, was?

Aus der Reihe: Posts mit riesiger Einleitung, die den hilfreichen Teil in einem Nebensatz am Ende verstecken

Moves-API (3)

So. An diesem Wochenende habe ich mich noch mal etwas hingesetzt und Elizabeth (archiv.knuspermagier.de berichtete) um die Funktion erweitert, die ich eigentlich von Anfang an haben wollte: einen Export zu Day One.

Wie ich ja schonmal schrieb, benutze ich seit einiger Zeit Day One um ein schönes Tagebuch zu führen. Das funktioniert auch alles ziemlich knorke und ich schaffe es tatsächlich jeden Tag etwas zu schreiben -- und dank des neuen Exporters kann ich nun schnell und einfach neben meinen manuellen Einträgen auch eine kurze automatisch generierte Tageszusammenfassung haben.

Screen-Shot-2013-06-16-at-9.47.59-PM.png

Da Day One ziemlich einfach funktioniert, war das alles kein Problem. Ich benutze die Moves-API um die Daten zu bekommen, mache einen schönen Text und eine Karte draus (mit dem bereits vorhandenen GoogleMapExporter) und packe den Kram in ein entsprechendes Day One-Dokument, was aber auch einfach nur eine XML-File ist.

Wenn ihr Day One per iCloud-Sync benutzt, sollte alles automatisch funktionieren (vorausgesetzt ihr habt die Day One-Mac-App installiert). Bei Dropbox-Sync müsst ihr den Ordner wohl manuell angeben. Wie das alles funktioniert ist auf der Github-Seite eigentlich beschrieben, falls noch mehr Informationen nötig sind, mache ich vielleicht demnächst noch eine bessere Anleitung.

(Natürlich muss es regelmäßig ausgeführt werden, damit das regelmäßig gesynct wird.)

Vorsicht: Es kann natürlich nie schaden sein Day One Journal vorher zu backuppen. :)

Ansonsten: Viel Spaß, falls es jemand ausprobieren will. Bei Bugs: Einfach fixen und Pull Requests schicken. So macht man das in dieser verrückten Welt!

Moves-API (2)

Weil ich noch ein bisschen weiter rumspielen wollte habe ich das Modul, welches ich für Elizabeth schrieb, um mit der Moves-API zu kommunizieren, mal extrahiert, schön gemacht (sogar Tests geschrieben!) und in ein eigenes NodeJS-Modul gepackt und verfügbar gemacht.

(Es unterstützt aktuell nur Authentifizierung und die Storyline-Schnittstelle, die anderen brauchte ich bisher nicht.)

Jetzt wo das geschafft ist, habe ich nicht nur endlich mal was sinnvolles auf Github, sondern kann jetzt auch versuchen coole Auswertungssachen zu basteln. Ich bin da ja leider meistens nicht so sehr kreativ, aber irgendwas wird sicher dabei rausspringen.

Moves-API

TL;DR Mit Elizabeth könnt ihr die Moves-API benutzen um eure Daten zu exportieren.

Vor einigen Monaten kam mit Moves eine tolle kleine App in den Appstore (Marcel berichtete). Seit ungefähr März läuft sie nun schon auf meine iPhone und trackt jede meiner Bewegungen mehr oder weniger.

Ja, es kostet Akku, ja, letztendlich unterscheiden sich die Tage normalerweise nicht so sehr voneinander, aber gerade die Tage, an denen man dann doch mal was besonderes macht sind doch gerade die, an denen man wahrscheinlich vergessen hätte, ein eventuelles Tracking erst noch einzuschalten.

Man kennt mich ja als ausdrücklichen... Trackingfanatiker, der gerne jedes Stückchen seines Lebens versucht festzuhalten und für diese Aufgabe ist Moves nunmal ganz gut geeignet und ich zahle den Preis der leicht reduzierten Akkulaufzeit gerne.

Ein Problem, was mich von Anfang an jedoch beschäftigte war das Fehlen einer Möglichkeit auch irgendwie an die Daten heranzukommen. Die App an sich bot leider nur den Export von "Storyline"-Grafiken, immerhin wurde aber direkt von Anfang an kommuniziert, dass eine API irgendwann geplant ist.

Am Dienstag, glaube ich, war es nun soweit. In meinem E-Mail-Postfach erschien eine E-Mail mit dem Titel "The Moves API has launched!" (aus einem Gedankenprotokoll reproduziert). Natürlich musste ich sofort damit rumspielen.

Mein erstes Anliegen war erstmal, die Daten überhaupt raus zu bekommen um sie vielleicht irgendwo backuppen zu können. Stufe Zwei wäre dann ein vernünftiger Import in Day One (das leider noch keine .gpx oder .kml-Dateien unterstützt um sie auf einer Map anzuzeigen). Des Weiteren hat man natürlich auch schön viele Möglichkeiten der ausführlichen Analyse, wenn man sich die Daten erstmal gezogen hat, aber dazu komme ich dann später, wenn ich Lust dazu habe.

Wie schon gesagt setzte ich mich direkt Dienstag Abend noch hin und fing an etwas rumzuspielen. Die API verwendet eine OAuth2-Authentifizierung, die etwas anders ist als normal, da es ja keine Webseite gibt, auf der man einen User-Account hat. Statt dessen muss man in der App auf dem Telefon einen generierten Code eingeben. Funktioniert aber alles super!

Nach ein paar Stunden herumgewusel habe ich nun etwas anzubieten, für Leute die ein Bisschen herumspielen wollen: Elizabeth! Diesmal keine nette Dame, die uns Munition und Health-Packs zuwirft, sondern eine kleine NodeJS-Applikation, mit der man seine gesammelten Daten aus Moves exportieren kann.

Screen-Shot-2013-06-06-at-10.16.34-PM.png

Das alles ist nur schnell zusammengebaut, mein erstes (öffentliches) NodeJS-Projekt und nicht fertig, aber es ist auf Github und wer Lust hat, kann es forken und besser machen. Das würde mich sehr freuen.

Aktuell hilft Ellie euch durch den Auth-Prozess und bietet dann die Möglichkeit bestimmte Datumsbereiche (oder z.b. "die letzten 7 Tage") entweder als Plaintext oder als Map (via Google Static Map API) abzuspeichern.

Wie schon gesagt, nur kurz rumprobiert, keine Garantie für nichts. Würde mich freuen, wenn sich jemand findet, der Lust darauf hat, daran etwas rumzuspielen. Eignet sich bestimmt auch toll um ein bisschen NodeJS auszuprobieren. (NodeJS ist nicht übel, Freunde!)

Und als nächstes baue ich dann den DayOne-Import.

Next

Ihr kennt das. Ihr holt Geld bei der Bank, packt es in den Geldbeutel und beim nächsten Mal nachsehen ist es auch schon wieder alle.

Meine Ausgaben die ich per EC- oder Kreditkarte tätige werden bereits perfekt getrackt und verkategorisiert, sodass ich da keine Probleme habe nachzuvollziehen, wohin mein Geld verschwindet. Bei Bargeld war das allerdings immer ein Problem.

Natürlich gibt es ca. 100 Apps fürs iPhone, die einem das erleichtern sollen, irgendwie fand ich bisher allerdings alle blöd. Vor ein paar Wochen, oder so, kam jetzt aber Next raus. Next löst das Problem ganz nett, denn es gibt einfach ein paar Buttons, die man entsprechend mit Icons versehen kann (gibt über 30 oder so zur Auswahl) und ein einzelner "Track-Vorgang" ist schnell abgeschlossen.

next.png

Mit Swipes nach links und rechts kann man sich dann noch Statistiken und Graphen ansehen, alles ziemlich schnieke.

Aaaallerdings ist auch nicht alles so super-perfekt. Denn die App hat standardmäßig erstmal gefühlte 200 Buttons, soviele dass man auf jeden Fall schonmal scrollen muss. Man kann zwar bestimmen, welches Icon sie anzeigen, sie aber nicht löschen. Auf meine Frage, ob das vielleicht irgendwann möglich sein wird, bekam ich leider auch keine besonders zufriedenstellende Antwort.

Des Weiteren hat die App auch keine Export-Funktion -- etwas was ich ziemlich knorke fänd um die ganze Sache mit meiner Webapp zu syncen. Aber das wird ja vielleicht irgendwann eingebaut. Bis dahin kann ich mir dem Kram ja immernoch aus der SQLite-Datenbank vom iPhone-Backup extrahieren.

Vielleicht kommt die perfekte App ja doch noch irgendwann.