knuspermagier.de
Hallo. Ich bins! Philipp!

Dumme Uhren

Als ich meine HappyBrush bekam, war ich zunächst ja erstmal sehr begeistert, denn im Lade-Sockel ist eine Uhr integriert. Geil! Endlich weiß ich,wie spät es ist, wenn ich mitten in der Nacht aufs Klo muss!

Nun ist es aber ja leider so, dass man im Bad selten so viele Steckdosen hat, wie man gerne hätte, und wenn man den Rasierer mal laden muss, muss die Zahnbürste halt kurz dran glauben.

Als ich sie wieder mit der Stromversorgung verband, war ich zunächst überrascht. Die Zeit war noch da, juchu! Er hatte sie nicht vergessen und sogar weiter getickt! Hat da jemand mitgedacht?

Naja, leider war das bisher nur einmal der Fall. Ich habe das Gefühl, dass wirklich nur ziemlich kurze Stromunterbrechungen überbrückt werden können. Zu früh gefreut.


Was ich sagen will: In meinem Leben ist kein Platz für so dumme Uhren, die man ständig neu stellen muss. Oder welche, die nach einer Zeit nachgestellt werden müssen, oder Uhren, die die Zeitumstellung nicht kapieren (die wir ja, zum Glück, demnächst los sind).

Jeder kennt doch die Uhr zuhause am Herd, die nie gestimmt hat. Nach einer Zeit geht man dazu über sich einfach den Umrechnungsfaktor zu merken. Herd sagt es ist 18:52 Uhr? Einfach 3 Stunden und 12 Minuten abziehen! Das wird mit der Zeit zur Automatik.

Ist es wirklich so teuer einen Funk-Empfänger einzubauen? In ein 1.000€-Gerät wie einen Herd? Selbst bei einer 50€-Zahnbürste müsste das doch möglich sein, was kann das schon kosten. Oder liegt es daran, dass man in der Wohnung so selten Funkkontakt hat und das Kundenerlebnis daher zu schlecht ist?

Man weiß es nicht. Das Einzige, was ich weiß, ist der Umrechnungsfaktor meiner neuen Bad-Uhr. +3h25min. Zumindest, bis ich mich das nächste mal rasiere.

Barista Stories I

barista.jpg

Kennt ihr das Gefühl, das euch beschleicht, wenn ihr wirklich lange etwas übt und auf einmal, wie aus dem nichts, klappt es?

Ich kannte das bisher hauptsächlich vom Gitarre spielen. Man spielt und spielt und spielt das Riff auf und ab, alle, die zuhören müssen, sind wahrscheinlich schon genervt, man selber ist genervt, aber irgendwann kommt dieser kurze Moment der Glückseligkeit, der einen für den Rest des Tages auf einer Wolke schweben lässt. Der Moment, wo man das Riff genau so perfekt spielt, wie es sein soll.

Genau diesen Moment hatte ich heute, als ich mir mal wieder einen Kaffee machte. Wie man auf meinem Instagram-Kanal verfolgen kann, übe ich ja seit einigen Wochen, die Milch so in den Kaffee zu kippen, das etwas schönes dabei raus kommt, bisher ohne großen Erfolg.

Heute klappte es endlich. Also, es ist weit von perfekt entfernt, aber zum ersten Mal entstand mehr als nur ein weißer großer Punkt. Success! ✨

Maniac

Wenn ihr dieses Jahr nur eine Serie schaut, lasst es Maniac sein, es ist grandios. Mehr kann ich dazu gar nicht sagen.

★★★★★

iPhone XS

Wisst ihr noch damals, der Umstieg vom iPhone 5S zum iPhone 6? Plötzlich war alles groß und schwer, und trotzdem hat sich das alte iPhone direkt komisch angefühlt. Wie konnte ich bis gestern mit diesem extrem kleinen Display leben?

Tatsächlich ist Apple genau das Gleiche beim Sprung vom iPhone 7 auf das XS (ich hab ausnahmsweise mal eine Generation ausgelassen!!) gelungen. Jedes mal, wenn ich ein altes Gerät in der Hand habe, freue ich mich zwar, wie schön leicht es ist, sobald das Display angeht, frage ich mich aber, warum das so winzig ist.

Schon schön, wie man immer wieder an der Nase herum geführt wird!


Ansonsten bin ich bisher auch echt zufrieden. Qi-Charging ist cool, aber aktuell hält der Akku auch noch den ganzen Tag, auch ohne dass ich es lade. Das ist auch eine Neuerung! Mal sehen, wie lang das so bleibt.

Leider kostet der Spaß mittlerweile halt anderthalb Steine, das ist schon ziemlich frech. Dafür sollte es aber auch locker wieder für die nächsten zwei Jahre reichen, denke ich. Vielleicht ja sogar drei?

Groß plakatiert war es hier in Hamburg. Natürlich musste ich es mir anschauen, als Werbeopfer.

Es war… komisch. Es war teilweise so unglaublich dumm, alles. Gefühlt tausen Plotholes und Dinge, die physikalisch bestimmt nicht so funktionieren können.

Dazu mit Dr. Smith eine sehr sehr unsympatische Bösewichtin, und ansonsten mag ich die Charaktere eigentlich alle nicht, außer Don, den Comic Relief, der in den meisten Fällen total fehl am Platz wirkt.

Trotz allem habe ich es mir zu Ende angeschaut, man will ja schon sehen, wie es nun ausgeht. Natürlich mit einen Cliffhanger.

Hoffentlich bekomme ich einfach nicht mit, wenn Season 2 erscheint.

★★☆☆☆

In der zweiten Staffel wird die Story nahtlos weitergeführt. Es gibt ein paar gute Twists, leider hat Marty weniger Screentime und alles dreht sich mehr um die anderen Charaktere. Kann man machen, aber manche von ihnen interessieren mich einfach nicht so sehr.

Insgesamt wirkt die Story ein bisschen mit dem Holzhammer geschrieben und nicht so… subtil, wie zum Beispiel… Breaking Bad. Ja, ok. Muss man jede Drogen-Serie mit Breaking Bad vergleichen, einer der besten Serien überhaupt?

Wie auch immer. Ich war gehookt genug um es anzuschauen, werde auch in Season 3 reinschauen, aber es war einfach nicht so gut, wie die erste Staffel.

★★★☆☆

Oculus Go

Manchmal bin ich wirklich ein Extrem-Late-Adopter. So zum Beispiel beim Thema Virtual Reality. Wann kam die erste Oculus und die erste HTC Vive raus? Gefühlt vor Ewigkeiten.

Ich hatte nie Lust so viel Geld auszugeben um ein Produkt zu testen, das in den Kinderschuhen steckt und es hat mich auch nicht so sehr gereizt, das ich motiviert genug gewesen wäre, Freunde zu besuchen, die verrückt genug waren direkt am Anfang so ein Gerät zu erwerben.

Nun begab es sich, dass vor ein paar Monaten die Oculus Go rauskam, ein standalone VR-Gerät, mit dem man sich den ganzen Kram mal angucken kann, ohne 800€ für die Brille und 2.000€ für einen Gaming-PC auszugeben.

Ich war kurz gehyped und überlegte schon, ob es wohl 300€ Wert sein könnte, las ein paar Reviews, die sagten, dass es ganz ok ist, aber doch wesentlich schlechter als die teuren Brillen und legte die Idee erstmal zur Seite.


Wochen später: Ich werde auf Grover aufmerksam gemacht. Dort kann man Kram mieten, auf Monatsbasis. Sie haben die Oculus Go im Angebot und ich finde noch einen Gutschein und denke mir, dass endlich die Zeit gekommen ist, um die Geschichte mal auszutesten.

Ich bestelle also, warte mehr als eine Woche, obwohl von einer 3-6-tägigen Lieferzeit die Rede ist und am Ende ist der Postmann auch noch zu faul die paar Treppenstufen bis zum Büro zu laufen – und einen Zettel in den Briefkasten zu legen. Wie auch immer. Samstags gehe ich also zur Post, hole das viel zu große Paket ab und packe den Kram aus. Das Paket ist noch zugeschweißt, also hatte anscheinend noch keiner die Brille auf. Oder Grover verschweißt einfach wieder alles.


Ausgepackt, geladen, Oculus App geladen. Die Einrichtung verläuft relativ problemlos, bis auf das 50-sekündige Sicherheitsvideo, das man angucken muss, ohne die Möglichkeit es zu skippen. Laaame. 50 Sekunden meines Lebens!

Ich hab natürlich keine Lust im umfangreichen Oculus Shop noch mehr Geld auszugeben, also lade ich mir erstmal Netflix und die erste Achterbahn-App, die ich finden kann.

Brille auf und die Enttäuschung kann beginnen.

Die Displays sind so schlecht, so unglaublich schlecht. Es wirkt, als würde man mit 30cm Abstand vor so Röhrenfernsehern aus den 80er Jahren sitzen. Riesige Pixel. Also ich weiß, dass Röhrenfernseher keine Pixel haben, aber wenn man da ganz nah rangeht, sieht man ja schon einzelne unscharfe Bildpunkte und genau so sieht es in der Go aus.

Die Achterbahn-App ruckelt mega, und läuft gefühlt mit 15 FPS. Ich hatte mich auf verrückte VR-Gefühle gefreut und dachte, ich falle vielleicht vom Stuhl, so wie man das kennt. Bei 15 Frames pro Sekunde und den riesigen Pixeln kommt allerdings keine Achterbahn-Atmosphäre auf. Statt vom tollen VR-Gefühl wird mir eher Übel vom Ärger darüber, dass ich auch noch Geld für diesen Mist bezahlt habe!

Ich probierte noch ein, zwei andere von den kostenlosen Games, die alle ebenfalls ziemlich langweilig waren, oder ruckelten, oder beides.

Zum Schluss schaute ich mir noch Netflix an. Erstmal muss man natürlich sein sehr langes Passwort über eine mittelmäßige VR-Tastatur eingeben, danach landet man in einer Art virtuellem Wohnzimmer, mit großer Leinwand. Man sitzt allerdings so nah, dass man den Kopf nach unten neigen muss um Untertitel zu lesen, ansonsten sind sie total verzerrt. Das selbst HD-Serien aussehen, wie aus den 80er Jahren ist bei der bereits angesprochenen Display-Auflösung natürlich klar.


Ich hab das Ding zwar für einen Monat gemietet, aber ich denke, ich packe es jetzt wieder ein. Davon, dass es ein großer Haufen stinkendes Plastik ist und sich anfühlt, wie eine Mickey Maus-Heft-Beilage, will ich mal gar nicht anfangen.

Jaa, klar, werden jetzt einige sagen, es ist halt das Low-Budget-Einsteigerding. Mag sein. Vielleicht sind meine Augen auch einfach zu Retina-Display verwöhnt und ich bin ja generell nicht so einfach zu begeistern. Mir hat das Produkt auf jeden Fall keine Lust gemacht, jetzt 800€ für ein richtiges VR-Produkt auszugeben, und das sollte doch wahrscheinlich das Ziel sein?

Wie auch immer. Vielleicht schaue ich mir, wenn die Zeit reif ist, nochmal ein richtiges VR-Headset an einem teuren Gaming PC an und falle bei einer Achterbahnsimulation vielleicht auch vom Stuhl, wie es sich gehört. Die Go kann ich auf jeden Fall nicht empfehlen.

Wenn ich lese, dass zu einer Veranstaltung das Mitbringen von Fingerfood erwünscht ist, denke ich immer zuerst an Fischstäbchen. Vielleicht, weil sie auf Englisch Fish Fingers heißen. Die Vorstellung, dass man am Ende mit einer Pfanne Fischstäbchen im Rucksack ankommt, finde ich allerdings ziemlich absurd. ✌🏻

Side-Project-Tagebuch: recex (2)
Facettensuche mit RediSearch

Ihr kennt das. Man sucht beim Onlinehändler seines Vertrauens nach Schuhen, gibt einen Suchbegriff ein und neben den Suchergebnissen erscheinen weitere Filteroptionen, mit denen man das Ergebnis weiter einschränken kann. Damit man direkt bescheid weiß, steht auch direkt daneben, wie viele Suchergebnisse es für diesen Filter noch gibt.

Diesen Quatsch nennt man gemeinhin Facettensuche und an und für sich ist das eigentlich ganz praktisch. Leider ist es nicht mal eben durch den Aufruf von zwei PHP-Funktionen implementiert, daher habe ich bisher immer davon abgesehen, so etwas bei einem einer Side-Projects einzubauen. Also klar, es ist auch nur in wenigen Fällen sinnvoll, aber zum Beispiel fin, meine Finanzverwaltung, könnte sowas sicher gebrauchen.

Nun beschäftige ich mich seit gestern ja mit meinem neuen Projekt recex und natürlich soll man da auch nach Rezepten suchen können. Von Anfang an war mir da klar, das ich auch direkt nach Zutaten suchen will und nicht nur wildes Matching von Wörtern im Rezepttitel haben möchte.

Glücklicherweise basiert das Backend von recex auf Blogchain — ich kann also mit Fug und Recht behaupten, meine Rezepte in einer Blogchain zu speichern — und das bedeutet, RediSearch ist bereits angebunden, wie schwer kann es also sein, die Suche entsprechend umzustricken?

Index anlegen

Als erstes musste ich einen neuen Index anlegen. Neben Titel und Text (in dem Fall die Zubereitungsschritte des Rezepts) möchte ich auch Tags (“hellofresh“, “wegtuppern“) und Zutaten (“Zwiebel“, “Kartoffel“) indizieren. Leider unterstützt ethanhann/redisearch-php das Tag-Feld noch nicht, also erstelle ich den Index manuell per redis-cli:

FT.CREATE recipes SCHEMA title TEXT text TEXT ingredients TAG SORTABLE tags TAG SORTABLE

Das Indizieren der Rezepte ist wieder easy gemacht, denn dabei sind die TAG-Felder nur Komma-separierte Strings. Das funktioniert also über die PHP-Library

Query

Die Query-Syntax ist leider etwas kompliziert. Das RediSearch-Feature, mit dem wir unsere Facetten bauen heißt Aggregations und ist ziemlich mächtig.

Die Query sieht am Ende etwa so aus:

FT.AGGREGATE recipes "*" APPLY split(@tags) AS tag GROUPBY 1 @tag REDUCE count_distinct 1 @tag AS count SORTBY 1 @count DESC

Die Dokumentation ist zwar eigentlich gut, ich brauchte aber trotzdem einen Moment, bis ich hier auf die richtige Kombination von Wörtern kam. Also:

  • recipes ist der Name vom Index
  • "*" ist die Such-Query. In diesem Fall einfach “alles”
  • APPLY wendet eine Funktion auf das Ergebnis an, in diesem Fall…
  • split(@tags) …wird das Feld tags gesplittet (anhand der Kommas!) und mit AS tag im Verlauf tag genannt.
  • GROUPBY 1 @tag gruppiert nach dem neu erstellten tag-Feld
  • REDUCE count_distinct 1 @tag Zählt die Vorkommnisse jedes Tags und speichert es AS count
  • SORTBY 1 @count DESC sortiert den Spaß absteigend

Etwas verwirrend: Man muss vielen Befehlen (GROUPBY, REDUCE, etc) sagen wie viele Argumente folgen. Daher die ganzen 1-er. Fand ich am Anfang etwas verwirrend, ist aber wohl eine Limitierung des Redis-Command-Syntax.

Leider kann die PHP-Library auch diese Aggregations noch nicht, daher musste ich die Query auch händisch in meinen Code aufnehmen, was ganz fürchterlich aussieht, weil rawCommand jedes Wort einzeln erwartet, warum auch immer:

$result = $redis->rawCommand('FT.AGGREGATE', 'recipes', $query,
    'apply', 'split(@tags)', 'as', 'tag',
    'groupby', '1', '@tag',
    'reduce', 'count_distinct', '1', '@tag', 'as', 'count',
    'SORTBY', '1', '@count', 'desc'
);

Update: Die Library kann doch schon Aggregations, ich war nur zu Blöd es zu finden 😇

Das Ergebnis ist auf jeden Fall ein Array, mit allem, was wir wissen wollen. So einfach! Ist es nicht schön?

Zusammen mit einem kleinen Query-Parser kann man sich sowas bauen, und fröhlich nach Rezepten suchen:

(video file:facet.mov mode:loop)


RediSearch ❤️