knuspermagier.de
Der privateste Blog von Philipp.

Das war 2014

Zeit für einen Jahresrückblick, in dem ich kurz auf verschiedene Aspekte meines Lebens im vergangenen Jahr eingehe und einen Ausblick auf 2015 gebe.

(Hä, die Einleitung klingt viel zu ernst, daher hier ein Satz, der mit “hä” beginnt.)

Programmieren

Programmieren ist weiterhin ein relativ großer Teil meines Lebens, denn es ernährt mich. In diesem Jahr habe ich zu etwa 30% NodeJS und zu 70% Objective C geschrieben und gefühlt sehr viel dazu gelernt, was iOS-Entwicklung angeht.

Leider habe ich nicht die Zeit gefunden, mich mit vielen neuen Sachen zu beschäftigen — Objective C und NodeJS waren ja auch noch relativ neu für mich — dieses Jahr will ich mir aber auf jeden Fall noch etwas neues anschauen, Go steht da aktuell oben auf der Liste.

Fotografieren

Nachdem ich 2013 nur relativ wenig Fotos machte, ging es dieses Jahr wieder ordentlich los. Einerseits natürlich, weil ich mir Anfang des Jahres die 6D kaufte, andererseits, weil ich einfach wesentlich mehr unterwegs war.

Insgesamt waren es fast 5000 Fotos, die ich dieses Jahr machte und mit dem was davon übrig blieb (Hier in den Galerien zu finden), bin ich ziemlich zufrieden. Hoffentlich wird das Fotobuch, was ich vor ein paar Tagen zu Blurb schickte so schön wie ich es mir vorstelle.

Konkrete Pläne für 2015 habe ich nicht. Einfach nicht aufhören Fotos zu machen.

Projekte

Leider gab es nicht ganz so viele größere veröffentlichte Projekte.

Ich arbeitete an ein paar kleinen Updates zu Coffeelog, baute daiquiri, den Generator für meine Bildergalerien und entwickelte eine eigene kleine App, mit der ich komfortabler Drive Now-Autos suchen kann.

Zum Ende des Jahres baute ich dann noch ein Modul für daiquri, mit dem ich die Galerien leichter in Photoshop basteln kann, eine Bluetooth-Lichterkette und ein kleines Tool um iOS-.strings-Dateien per Google Spreadsheet zu managen.

Das einzige größere Projekt war Placescore — das entwickelte sich aber leider etwas anders als geplant und wurde daher auch schon wenige Monate später wieder eingestellt.

2015 will ich auf jeden Fall wieder mehr machen und veröffentlichen, ich weiß nur noch nicht was. Ganz oben auf meiner Liste stehen einige Updates für watched.li (Jaaa, ich weiß.) — aber da verspreche ich nichts. Vielleicht habe ich auch Lust auf etwas komplett anderes.

Better könnte ich auch mal fertig machen — auch wenn es da mittlerweile einige Konkurrenz gibt, wäre es doch schön, das im App Store zu haben, allein damit ich es nicht immer compilen muss, wenn ich mein iPhone neu installiere.

Daily Knuspi

Anfang Januar startete ich mit Daily Knuspi einen täglichen… Podcast, den ich immerhin bis April, oder so durchzog.

Ich hatte kein wirkliches Konzept und wusste auch nicht, wo ich eigentlich damit hin will, aber eigentlich machte es mir Spaß — nach einer Zeit wurde es aber auch langweilig, da meine Tage meist nicht so spannend waren und sich das dann natürlich in den Soundschnipseln widerspiegelte.

Ich glaube nicht, dass ich das Projekt in dieser Form 2015 neu starten werde, habe aber weiterhin Lust auf etwas im Audio-Genre.

Lesen

Ich las sieben Bücher und fing zwei weitere an. Damit habe ich meinen 12-Bücher-Vorsatz für 2014 natürlich nicht erfüllt, ist mir aber eigentlich auch egal.

Am besten gefiel mir Tschick, die größte Enttäuschung war wohl The Fault in Our Stars, weil es alle anderen so gut finden und ich nun nicht mitreden kann.

Auto fahren

Ich machte meinen Führerschein im Herbst 2006 innerhalb weniger Wochen in den Semesterferien und fuhr seit dem quasi gar nicht. Einerseits, weil ich kein Auto hatte, andererseits, weil ich auch nicht fahren musste.

2014 änderte sich das etwas. Wir liehen ein Auto und fuhren nach Rømø und weil es ein neuer A6 mit Automatik war, wollte ich natürlich auch mal fahren. Mittlerweile habe ich einen DriveNow-Account und fahre ab und zu mal zum Baumarkt.

Autofahren ist immer noch keine Routine, noch relativ aufregend und stellt mich noch vor Herausforderungen, aber macht Spaß. Ich hoffe, dass ich in 2015 noch etwas mehr Routine reinbekomme.

Reisen

Dieses Jahr war ich auf Rømø und Helgoland, in Tokyo, Venedig, Amsterdam, Kiel, Flensburg und sogar mal in Berlin.

In diesem Jahr möchte ich auf jeden Fall mindestens genau so viel unternehmen, werde es aber versuchen ebenso spontan zu halten.

Filme

Wenn Letterboxd recht hat, war ich zwölf mal im Kino. Von den gesehenen Filmen gefiel mir wohl The Secret Life of Walter Mitty am besten. Aber auch 300: Rise of an Empire und natürlich Grand Budapest Hotel waren dufte.

Im zweiten Halbjahr liefen leider nicht so viele tolle Filme, Mockingjay 1 und der dritte Hobbit gefielen mir nicht so gut.

Von den Kinofilmen mal abgesehen sah ich zum ersten mal Richy Guitar und bin mir nicht sicher, ob ich ihn guten Gewissens empfehlen kann.

Ich habe keine Ahnung, was für Filme 2015 rauskommen, werde aber weiter ins Kino gehen. Mockingjay 2 wird sicher super. Kommt ein neuer Avengers, oder irgendwas von Marvel? Hoffentlich.

Serien

Puh. Bis auf Fargo schaute ich dieses Jahr nichts komplett. Dazu gesellten sich 21 Folgen Pastewka, 13 Folgen Tatortreiniger und sonst nur einzelne Folgen. Ich würde mein watched.li-Profil verlinken, aber die Funktion muss ich erst noch einbauen.

Total verpennt habe ich Game of Thrones, bei Homeland bin ich auch schon zwei Staffeln hinterher. Ich bin mir noch nicht sicher, wie ich meinen Rückstand aufarbeiten werde.

Mein Ziel für 2015 ist auf jeden Fall mehr als 20 Folgen Serien schauen.

Spiele

Ich glaube, außer Mario Kart 8 und Factorio habe ich dieses Jahr nichts erwähnenswert viel gespielt. Leider habe ich keine Webseite, die das aufzeichnet und muss mich auf meine Erinnerung verlassen.

Ob sich das 2015 ändern wird, weiß ich nicht. Ich wäre auf jeden Fall offen dafür.

Konzerte

Ich besuchte 14 Konzerte und jedes war toll. Reinhard Mey war wieder super, Farin Urlaub sowieso und Thees Uhlmann, auch. Alles gut.

Für 2015 stehen aktuell unter anderem Farin Urlaub und Funny van Dannen auf der Liste, aber das wird sich im Laufe der Zeit sicher noch erweitern. Konzerte finde ich weiterhin gut.

Musik

Ehrlich gesagt habe ich keine Ahnung, welche Alben 2014 rauskamen, ich höre soviel Musik, dass das alles verschmilzt. Ich erinnere mich an das Farin Urlaub Album, das war super.

Keine Ahnung, welche Alben 2015 rauskommen werden, aber vielleicht werde ich dieses Jahr mal eine Liste anlegen, damit ich hier in einem Jahr nicht so unvorbereitet da stehe.

Fazit

2014 war echt gut. 2015 wird besser, oder schlechter, aber wahrscheinlich besser. Mal sehen!

Amazon.de Einkaufsstatistiken 2014

Wenn schon kein ganzer Jahresrückblick kommt, dann doch wenigstens die Amazon-Einkaufsstatistik. Man sollte sich ja wenigstens ein paar Blog-Traditionen erhalten. Hier also der aktuelle Graph:

diagramm1.png

2013 war also allem Anschein nach nur eine kurze Delle. Ich hoffe, Amazon.de ist froh, dass ich mich als Kunde erholt habe!

Hier noch die Top 5 der Produkte, die ich erwarb:

  • Canon EOS 6D + EF 16-35mm/2.8L - Nach acht Jahren mit der 400D konnte ich mich endlich dazu überreden nochmal einen größeren Batzen Geld in die Hand zu nehmen und mich damit für die nächsten 8-10 Jahre kameratechnisch abzusichern. Bisher bin ich sehr zufrieden und sie erfüllt, glaube ich, alle Anforderungen, die ich als ambitionierter HobbyDSLR-Besitzer stelle. Natürlich hab ich bisher immer vergessen, die GPS-Funktion überhaupt zu aktivieren.

Lichterkette

Dieser Blogpost erzählt die Geschichte, wie ich mir eine per iPhone-App bedienbare Bluetooth-Lichterkette bastelte. Ich war mir im Vorfeld nicht ganz sicher, ob ich das als knuspermagierTV Classic HD-Video oder in Form eines 12-teiligen Softwareentwicklungstutorials machen soll — entschied mich jetzt aber einfach für die Form “Geschichtenerzählblogpost”, weil ich es sonst wahrscheinlich nie machen würde.

IMG_4376.jpg

Vor ein paar Wochen, so zum Beginn der Weihnachtszeit, fragte ich mich mal wieder, warum es eigentlich keine Lichterketten gibt, die man irgendwie per Bluetooth cool programmieren kann.

Kurz darauf viel mir dann ein, dass ich ja genau vor einem Jahr in ein Kickstarter-Ding investierte… Espruino. Ein Microcontroller, der mit Javascript programmierbar ist.

Damals klickte ich das einfach aus Interesse an und entschied mich sogar für das 70 Pfund-Paket, das neben der Hauptplatine einigen Kram, wie zum Beispiel einen WS2811 LED-Strip enthielt. Das lief alles gut und wurde auch Anfang des Jahres geliefert — wie das so ist mit Spielzeug, lag es dann aber erstmal rum, weil ich keine Idee hatte, was ich damit nun machen sollte.

Doch jetzt! Ich kombinierte in meinem Kopf. Microcontroller… check! Individuell adressierbare LEDs… check! Fehlt nur noch Bluetooth — nach etwas Recherche fand ich den passenden Chip, der per Bluetooth 4.0 LE auch mit dem iPhone kommunizieren kann und bestellte ihn direkt 2x bei irgendeinem Billoshop in Hong Kong.

Weil ich das ganze noch vor Weihnachten fertig haben wollte gab ich noch Unmengen für einen 3-5 Tage Expressversand aus, wartete 3-5 Tage und holte eines Abends den Lötkolben aus seinem Versteck. Meine Lötskills sind nicht wirklich ausgebildet, aber irgendwie schaffte ich alles korrekt zu verbinden und es funktionierte!

Hardware fertig, nun fehlte noch die Software. Durch geschicktes googeln und kopieren softwareentwickeln schaffte ich es in kurzer Zeit eine App zu bauen, die sich per CoreBluetooth verbinden und Befehle senden konnte. Etwas Javascript-Gemurkse auf der anderen Seite sorgte dann auch dafür, dass die entsprechenden LEDs die richtige Farbe zeigten.

Dann war erstmal kurz Ruhe. Meine interne “Projekt beenden”-Hürde nahm wieder Überhand. Immerhin hatte ich bewiesen, dass es möglich ist, ich hatte ja sogar GELÖTET. Handwerkliche Arbeit ist ja immer schonmal ziemlich zufriedenstellend.

Am Ende sind die 25 LEDs, die ich habe eh viel zu wenig und eigentlich will man die Lichter am Baum auch gar nicht ständig verändern und das ganze “ordentlich” zu machen würde jetzt auch soviel Zeit kosten und eigentlich will ich auch lieber Factorio spielen.

bluelight2.gif

Am Ende ließ es mir dann aber doch keine Ruhe und ich wollte das ganze Konstrukt doch irgendwie in eine “Form” bringen, die ich hier bloggen, oder nächstes Jahr an den Baum hängen kann (nachdem ich nochmal ein paar LEDs dazu gekauft habe). Also habe ich gestern nochmal ein paar Stunden investiert und sowohl die App, als auch den Espruino-Code etwas hübscher und benutzbarer gemacht.

Man kann nun, sobald man sich mit der Lichterkette verbunden hat, jede LED einzeln einfärben. Oder halt alle gleichzeitig! Außerdem sind insgesamt drei hochspannende Animationsmuster eingebaut, durch die man durchschalten kann! (Die ich alle aus dem Espruino-LED-Tutorial kopiert habe)

Damit gebe ich mich jetzt erstmal zufrieden, archiviere das Projekt im Kopf und freue mich, wieder was neues gelernt zu haben. CoreBluetooth, Löten, (wahrscheinlich total bescheuerte) Binär-Protokolle erfinden, Espruino programmieren.

Damit man sich das ganze besser vorstellen kann, hier noch ein unscharfes Video:

Für den unwarscheinlichen Fall, dass das jemand genau nachbauen will habe ich es mal in ein Github-Repository verfrachtet und dort auch kurz beschrieben, welche Teile und Tutorials man so braucht.

Nun noch ein inspirierender Abschluss-Satz:

Bestellt euch auch mal Espruino, Arduino oder vergleichbares und macht irgendein Quatschprojekt. Es macht ne Menge Spaß und ist mal was anderes!

Anhang 1 - Dinge, die ich noch einbauen könnte:

  • Die Lichterkette könnte ihren aktuellen Status speichern, damit sie korrekt weitermacht, nachdem der Strom weg war. Das sollte nicht so kompliziert sein.
  • Ich habe es nicht hinbekommen, einen vernünftigen Rückkanal zur Kommunikation aufzubauen. Die Lichterkette kann der App beim Verbinden also nicht sagen, welche Farben die LEDs aktuell haben. Das wäre natürlich cool.
  • Die App könnte eine Möglichkeit bieten irgendwie so Animationsmuster zu definieren, die dann übertragen werden können. Vielleicht einfach ein Textfeld für Javascript, der auf dem Espruino geevalt wird. Juchu, Scriptsprachen.

syncstrings

Bei einem Projekt letztens fiel mir mal wieder auf, dass ich immer noch keine vernünftige Lösung kenne, um Localizale.strings-Files aus dem iOS-Umfeld gemeinsam mit dem Kunden auf dem aktuellsten Stand zu halten.

Bisher regelte ich das immer über ein Google Spreadsheet, welches ich über den CSV-Export-Umweg in eine .strings-File umwandelte, aber das ist umständlich.

Daher setzte ich mich mal kurz hin und baute syncstrings, ein kleines NodeJS-Tool, welches .strings-Datei und Google Spreadsheet synchronisiert, alles nur mit einem Terminal-Befehl!

Alles weitere dazu auf der dazugehörigen Github-Seite.

Spiele

Es ist 2003, oder 2004. Ich komme aus der Schule, gehe an meinen Rechner und starte Diablo 2. Zweihundert Mephisto- und Cow-Runs später ist es auch schon wieder Nacht und ich gehe wieder schlafen, hoffe, dass die Schule nicht so lange dauert und freue mich am nächsten Tag darauf, weiter zu leveln und Items zu finden.


Natürlich war nicht jeder Tag so, aber über eine relativ lange Zeit, mindestens zwei Jahre, spielte ich sehr regelmäßig und mit großem Spaß Diablo 2. Seit dem hat es bei mir kein Spiel mehr geschafft, mich so zu fesseln.

Natürlich spielte ich auch zwischendurch etwas, aber hauptsächlich kurzen Kram, wie die 200 Call of Duty-Teile. Die längsten Zeitspannen waren wahrscheinlich Skyrim (70 Stunden, Main-Quest nicht durchgespielt) und Battlefield 3 (40 Stunden Xbox, 30 Stunden PC, dazu 4 Stunden BF4).

Kein Spiel hat es mehr geschafft mich so richtig zu fesseln und das finde ich… schade. Ich weiß gar nicht warum — statt zu spielen mache ich jetzt andere Sachen, die vielleicht sinnvoller sind, aber irgendwie vermisse ich die Diablo 2-Zeit.

factorio.jpg

Vor ein paar Tagen kaufte ich Factorio und fing an es einige Stunden zu spielen. Es macht mir echt Spaß da rumzubasteln und ich erwische mich dabei, wie ich mich tagsüber drauf freue, es Abends noch ein bisschen spielen zu können und denke darüber nach, wie ich meine Automationsabläufe da verbessern kann, oder was ich als nächstes ausprobieren will. Das hat schon ein paar Züge von der “guten alten Zeit”.

Gleichzeitig ist da aber auch eine Stimme in mir, die sagt, dass das es nur ein Spiel ist, das alles egal ist und ich nicht meine Denk- und Lebenszeit darauf verschwenden sollte.

Warum musste ich gerade in diesem Punkt erwachsen werden.

iPhone 6, erste Eindrücke.

IMG_0066.jpg

Weil ich iOS-Entwickler bin, muss ich natürlich jedes Jahr ein neues Gerät kaufen, auch wenn das Vorjahresmodell noch wunderbar funktioniert. So auch dieses mal. Diesmal stellte ich mich nicht vor den Apple Store, sondern bestellte vor -- und bekam es dann auch schon kurz vor 18 Uhr, so ziemlich nach jedem anderen. Dabei wurde es von DHL Express ausgeliefert!

Nicht mal vierundzwanzig Stunden später, habe ich es dann erst mal herunter geworfen. Im Gegensatz zu allen anderen iPhones, die ich bisher hatte, hat es den Sturz nicht unbeschadet überstanden.

Zum Glück hatte der Apple Store gestern noch keine Austausch-Displays und hat mir daher netterweise das ganze Gerät für die Displaywechsel-Pauschale von 110€ getauscht. Jetzt bin ich wieder komplett frei von Kratzern und bleibe es hoffentlich auch, dank Leder-Case.

Aber zum eigentlichen Punkt dieses Posts:

  • Es ist doch sehr viel größer als das 5S, und immer, wenn ich das 5S wieder in die Hand nehme, finde ich es angenehmer
  • Es ist wunderschön glatt und fässt sich sehr schön an
  • Es ist ziemlich glatt und rutscht einem leicht aus der Hand
  • Das Ledercase gibt mehr Grip, sieht ok aus und macht das Gerät nicht total hässlich

Fixing UIPageViewController's Top Layout Guide Problems

In a recent project I built a quick tutorial screen using a UIPageViewController. After creating all needed views and constraints I stumbled upon this awkward behaviour when changing the page:

bar_broken1.gif

Seems like the UIPageViewController does some strange this to the top layout guide of the contained view controllers. After trying every combination of switches in Interface Builder and some heavy stackoverflowing I fixed it using this code.

(self.topLayoutConstraint refers to the constraint defining the vertical space between the top view and the top guide)

bar_unbroken1.gif

Stay tuned for the next episode of "Philipp's Never Ending Search For Awkward Autolayout Behaviours".