knuspermagier.de
Er bloggt noch? Krass!

Vegan Burger Patty

Vor ein paar Tagen hatte ich Lust auf Burger und kaufte im Edeka so einen Fleischersatz. Das letzte Mal hatte ich einen Beyond Meat Burger als er noch ganz frisch war und gerade in Deutschland zu bekommen. Ich fand es damals schon so mittel und naja. Ab und zu kann man ja mal Dinge erneut probieren!

Ich weiß gar nicht mehr von welcher Marke der Burger war, den ich nun getestet habe, aber er schmeckte quasi genau so, wie ich den Beyond in Erinnerung hatte. Irgendwie okay, aber auch einfach egal.
Dazu ist mir nicht ganz klar, warum die Patties so ultra dick sein müssen. Während ich mir also schon die gedankliche Notiz machte, die Dinger beim nächsten mal einmal durchzuschneiden, bevor ich sie brate, fiel es mir wie Schuppen von den Augen:

Es wird gar kein nächstes Mal geben. Ich mag die Patties gar nicht. Wenn man ehrlich ist, mochte ich schon die meisten Fleisch-Patties in Burgerläden nicht. Zu dick und zu fleischig. Ottos Burger war schon soweit okay, die hatten die Besten, aber ansonsten war ich eigentlich nie richtig zufrieden. Zudem fühlte ich mich nach dem Konsum auch nie wirklich gut und stundenlang danach noch aufstoßen müssen war auch nicht so geil.

Diese Fleischersatz-Patties verbinden für mich nun die schlechtesten Eigenschaften von echten Patties – Mittelgeil, zu fleischig, danach aufstoßen müssen – noch mit der ebenfalls mittelmäßigen Tatsache, dass ich da ein künstlich hergestelltes Produkt aus tausend Inhaltsstoffen vor mir habe, statt zum Beispiel eine Möhre.


Immerhin gibt es ja noch genug andere Dinge, die man auf Burger legen kann. Zum Beispiel Halloumi, oder eins der tausend anderen veganen oder vegetarischen Patty-Rezepte auf diesem Planeten. Oder zur Not halt Hähnchenersatz-Dinger. Die sind zwar auch nicht besonders natürlich, aber immerhin ist ein Plant-based Long Chicken (mit extra Käse und Röstzwiebeln) vom Burger King das beste Fastfood-Gericht, das ich in den letzten zehn Jahren entdeckt habe.

DateTime

Ich bin ja manchmal sehr resistent dagegen, neue Sachen zu lernen. PHP bietet seit Version 5.2.0 die DateTime-Klasse, aber ich benutze eigentlich so gut wie immer, wenn es um Daten und Zeiten geht noch Funktionen wie date, strftime und strtotime. Achja und mktime nicht zu vergessen!

Also, natürlich habe ich auch DateTime schonmal benutzt, in größeren Applikationen, aber ich meine, wenn ich jetzt eben mal schnell ein Script zusammenklöppel dann kommt es mir nicht so leicht aus den Fingern. Weil seit PHP 8.1.0 nun strftime deprecated ist, nehme ich das zum Anlass, mir mal den neuen heißen Scheiß genau anzugucken und Teile meines Gehirns zu überschreiben. Ich versuche es zumindest.

neonbrand-kyxxmtptzek-unsplash.jpg
Normalerweise verzichte ich ja auf nichts sagende Stockfotos, aber eine verdammte Sanduhr, äh ein holistic hourglass, bot sich hier einfach an.

date

Die Funktion von date ist natürlich das Formatieren eines Unix Timestamps, wär hätte das bei dem Funktionsnamen erwartet.

echo date('Y-m-d H:i:s', 1231234514);
// Ergibt zum Beispiel 2009-01-06 09:35:14

Kann ja nicht so schwer sein, dass jetzt mit DateTime zu machen:

$d = new DateTime('@1231234514');
echo $d->format('Y-m-d H:i:s');
// Ergibt zum Beispiel 2009-01-06 09:35:14

Ja gut, die Syntax mit @ ist ja etwas komisch, aber wenn man kein date benutzt, muss man eigentlich auch fast keine Unix Timestamps mehr benutzen, da man eh alles in DateTime hat, oder halt in Date-Strings, und das kann DateTime ja auch einfach direkt:

$d = new DateTime('2010-10-10 12:15:33');
echo $d->format('Y-m-d H:i:s');
// Ergibt zum Beispiel 2010-10-10 12:15:33

Der Format-String ist auf jeden Fall der gleiche Kram wie bei date, das ist schön. Nicht so wie bei strftime, wo man sich absurde Dinge mit Prozentzeichen merken muss!

strftime

Der hässliche kleine Bruder von date, wo man jedes mal Nachschlagen muss, welche Format-Strings man jetzt benutzen muss. Immerhin jetzt deprecated. Doch wozu habe ich strftime benutzt? Immer, wenn bei der QA jemand sagte “Ja in Deutsch heißt das aber gar nicht February XD”. Ja, stimmt. date kann keine Locale. So im Jahr 2006 habe ich da dann noch folgendes gemacht:

$months = ['', 'Januar', 'Februar', 'März', …];
$monthName = $month[date('n', $timestamp)];

$formatted = date('d.', $timestamp) . ' ' . $monthName;

Wie oft ich in meinem jungen Leben damals wohl Arrays mit Monatsnamen tippte. Damals gab es ja auch noch keine Notizapps und Copy-Paste! Naja, vielleicht doch, aber ich brauche immer so lang um mich an Sachen zu gewöhnen.

Jedenfalls benutzt man strftime jetzt ungefähr so:

echo strftime('%A, %e. %B', 1231234514);
// Ergibt: Tuesday,  6. January

setlocale(LC_TIME, 'de_DE');
echo strftime('%A, %e. %B', 1231234514);
// Ergibt: Dienstag,  6. Januar

Tut also das, was man will. Leider ist das handlen der System-Locale und so immer etwas fummelig und je nach Server-Konfiguration funktioniert es auch nicht, weil de_DE zum Beispiel nicht installiert ist. Zudem der komplett andere Format-String. Trotzdem hab ich es jetzt einige Jahre benutzt.

Wie macht man es nun mit DateTime? Gar nicht! Haha, denn DateTime kann auch keine Locale. Seit PHP 5.3.0 gibt es aber den IntlDateFormatter, wenn man die intl-Extension installiert hat.

$d = new DateTime('@1231234514');
$formatter = new IntlDateFormatter(
    'de_DE', 
    IntlDateFormatter::SHORT, 
    IntlDateFormatter::SHORT,
    null,
    null,
    'EEEE, d. LLLL'
);

echo $formatter->format($d);
// Ergibt: Dienstag,  6. Januar

Ist etwas… klobig, aber zeigt mir eine Programmiersprache, in der internationales Daten-Formatieren nicht mega ausführlich ist. Das Pattern ist natürlich auch ein anderes als bei date und dem normalen format von DateTime, man muss nämlich die offiziellen Symbols aus der Tabelle der ICU nehmen. Immerhin kennt man die schon ganz gut, wenn man öfter unter JavaScript Daten mit datefns formatiert.

Fassen wir zusammen: Vorher dumm, nachher bisschen weniger dumm, aber etwas, was man sich immer zusammenkopieren wird.

strtotime

Eine meiner Lieblingsfunktionen, denn sie tut genau das, was man erwartet. Aus 2009-01-06 09:35:14 wird 1231234514. Wie man oben schon gesehen hat, kann DateTime das ja direkt im Konstruktor, das wird also ein einfaches, mir das anzugewöhnen.

mktime

Selten genutzt und jedes mal gehasst, aufgrund der Parameter-Reihenfolge, wer soll sich das merken:

mktime(
    int $hour,
    ?int $minute = null,
    ?int $second = null,
    ?int $month = null,
    ?int $day = null,
    ?int $year = null
): int|false

Da kann DateTime natürlich punkten:

$d = new DateTime();
$d->setTime(12, 0, 0);
$d->setDate(2010, 1, 4);

Fazit

Eigentlich ist es gar nicht so schwer, man müsste sich nur mal darauf committen, wie bei so vielem im Leben. Zahnseide benutzen ist auch gar nicht so schwer, man muss es nur eben machen! Was Laravel-Apps und sowas angeht wird das auch nicht so schwierig, mal sehen, ob ich auch in meinen Quick’n’Dirty-Scripten darauf umschwenken kann.

Bonus: Carbon

Jetzt kommen sicher alle und rufen, halt, stopp, benutz doch einfach Carbon! Ja, guter Einwand. Carbon ist auch echt nett und hat einen ganz großen Haufen von Convenience-Funktionen, zum Beispiel geht das internationale Formatieren wesentlich schnittiger.

Da Laravel soweit ich weiß, zumindest war es früher so, Carbon mitbringt, hatte ich damit auch schon viel Kontakt und habe es hier und da auch eingesetzt, aber, wie schon dreimal gesagt, der Hauptpunkt, wo ich weg will von den Legacy-Kram sind schnelle Scripte und Quatschkram, bei dem ich nicht erstmal eine Third Party Library installieren will. Daher wollte ich mir hier erstmal die eingebauten Möglichkeiten genau angucken.

M1 Max auslasten

Ich musste heute mal ein paar Videos encodieren, und weil ich gerne Speicherplatz sparen wollte, dachte ich mir, ich nutze direkt den modernen h265-Codec, oder HEVC, wie Apple ihn auch nennt.

Zum Encodieren benutze ich meistens HandBrake, weil da so eine tolle UI für ffmpeg ist. Allerdings musste ich erstmal herausfinden, wie ich damit nun ein HEVC-Video erzeugen kann, unter benutzung voller Hardware-Beschleunigung. Wählt man nämlich einfach nur h265 als Codec aus, dann schafft er gerade mal so 3-4 Frames pro Sekunde, das wäre mir doch etwas langsam gewesen.

Natürlich muss man in der Selectbox “h265-Videotoolbox” auswählen. Was ich für einen komischen scammy Name einer Windows-Shareware hielt, die irgendwie zufällig in den MacOS-Build von HandBrake reinkam ist anscheinend der offizielle Apple-Name für Hardwarebeschleunigte h265-Encodings.

Das kommt wohl mit ein paar Einschränkungen, was Qualität und alles angeht, aber da war für meinen Einsatzzweck erstmal egal. Nach ein paar Minuten Volllast fing das Macbook tatsächlich an zu lüften. Kaum hörbar. Das Encoding lief dann mit über 200 FPS. Traumcomputer, weiterhin.

Danke für den Tipp, Markus!

Dragonball Z Kai (2)

Nun bin ich mehr als fünfzig Folgen drin und, wie im letzten Post erwartet, trafen sie auf Freezer und zwar so richtig. Zuerst ging es noch langsam und abwechslungsreich los, mit verschiedenen Gegnern, die sich von der Kampfkraft langsam stärkten. Die letzten, ich weiß nicht genau, dreißig Episoden der Freezer-Arc umfassten aber nur noch den großen Kampf von Son Goku gegen den Endboss dieser Geschichte. Ich hatte das ja schon wirklich lang und ausgestreckt im Kopf, aber dass es so lang war, hatte ich vergessen. Wie muss das damals gewesen sein, als man da nur eine Folge pro Tag gucken konnte. Oder gab es Doppelfolgen? Ich glaube es waren Doppelfolgen.

Insgesamt fiel mir auf, dass die Serie doch ziemlich brutal ist, das hatte ich nicht so in Erinnerung. Kein Wunder, dass es nicht im RTL2-Nachmittagsprogramm lief. Beim Gucken schaue ich ständig im PERFECT POWER LEVEL LIST Wiki um mir eine Vorstellung zu machen, wie stark jetzt alle sein sollen. Keine Ahnung warum.

Ein witziges Element, dass ich, ja, ich sag es immer wieder, komplett vergessen hatte, war die Ginyu Force mit ihrem bescheuerten Tanz, haha.

ginyutokusentai.jpg
Bitte nicht verklagen, wegen einem Screenshot. Quelle: Dragon Ball Wiki

Nun kämpfen Goku und Freezer ungefähr dreißig Episoden lang und Freezer sagt mehrfach “Ich glaube, dass in so zwei Minuten der Planet explodiert”. Daraufhin kämpfen sie ewig weiter, zehn Folgen vergehen, nicht allerdings die Zeit. Zwei Minuten. Für immer. Naja. Trotzdem bleibt es immer auf eine komische Art und Weise spannend — an und für sich weiß ich ja, was passiert und wer überleben wird. Ab und zu gibt es auch noch einen überraschend Emotionalen Moment. Eigentlich immer noch perfekte Unterhaltung!

(Das einzige, was ein bisschen nervt ist dieser Atombomben-Explosions-Sirenen-Sound nach jeder Energiekugel, die auf dem Planeten einschlägt.)

Noch eine Sache, die ich nie gedacht hätte, dass ich sie über die Lippen bringe: Der englische Dub ist über jeden Zweifel erhaben. Mega gut.

Nachdem Freezer erstmal erledigt ist, geht auch alles super schnell, Dragonball Z Kai, ohne Filler-Arcs, sei dank. Kurz ein bisschen mit den geretteten Namekianern auf der Erde abhängen, alle, die noch tot sind, wiederbeleben und schwupps, zwei Folgen, nach dem man dachte, man sieht Freezer erstmal nicht wieder, landet er schon wieder auf der Erde – und mit ihm Trunks.

Wie cool ist eigentlich Trunks? Ultra.

Kirby 3.6 und PHP 8.1

Ich hatte länger Bedenken auf Kirby 3.6 upzudaten, weil ich dachte, alle meine Plugins gehen durch den Umbau im Panel kaputt, aber dem war gar nicht so klappt alles noch. Endlich kann ich also den eingebauten Builder benutzen! Zeitgleich habe ich auch mal auf PHP 8.1 geupdated und bin jetzt up to date für die nächsten zehn Jahre, juchu!

BetterJournal (3)

So, nicht, dass ich denke, dass irgendjemand es benutzen würde, aber ich dachte, es wäre mal wieder an der Zeit etwas bei Github hochzuladen. Ich legte zum Einen für BetterJournal eine Projektseite im Wiki an, mit ein paar Screenshots und merkte, dass ich da dringend nochmal ans Design muss, das sieht aus wie Kraut und Rüben, also das Wiki, nicht BetterJournal. Zum Anderen pushte ich den Code zu Github.

Mir gibt es nun immerhin so halbwegs das Gefühl mal eine Sache abgeschlossen zu haben, etwas so rund gemacht, dass jemand es theoretisch benutzen könnte, ein gewisses Interesse daran, mit PHP Code rumzuspielen vorausgesetzt. Gleichzeitig sagt in mir wieder eine Stimme, dass das alles nicht genug ist, keiner läd sich ein paar PHP-Dateien runter, warum habe ich es nicht direkt als iPhone App gemacht, die im App Store ist, das wäre cool!

Alles eine Einstellungssache, natürlich. Ich entscheide mich jetzt aktiv dafür, dass ich stolz bin, ein benutzbares Mini-Projekt in kurzer Zeit zusammengebaut habe. Zumindest versuche ich das.