Nachtrag zu veganer Ernährung

Nachdem ich mit meinem Bruder Simon über den Gesundheits-Aspekt von veganer Ernährung gesprochen habe und außerdem das Buch „The Vegetarian Myth“ von Lierre Keith gelesen habe, würde ich den vermeintlichen Health-Benefit von veganer Ernährung wohl noch etwas vorsichtiger formulieren.

Egal ob Rohköstler, Veganer oder Paleo-Anhänger, alle werden sich wohl einig darüber werden können, dass viel Gemüse zu essen gut ist, und dass große Mengen Zucker ungesund sind. Das wussten bereits unserer Großmüttter. Darüber hinaus wird es dann schon schwierig, da sich für alles Artikel, Blogposts, Studien und Gegenstudien finden lassen. Welche man dabei für glaubwürdig hält und welche für unseriöse Propaganda, ist wohl sehr vom eigenen Weltbild abhängig – Stichwort fake news. Auch ich bin für diesen Effekt nicht immun. Wenigstens versuche ich mich jetzt bewusster auch mit gegensätzlichen Meinungen auseinander zu setzen.

Das gerade angesprochene Buch „The Vegetarian Myth“ von einer ehemaligen Veganerin, die große gesundheitliche und auch ethische Probleme hatte und letztendlich zu einer offenbar fleischreichen Ernährung zurückgekehrt ist, hat mich insgesamt nicht von der Überlegenheit von tierischer Ernährung überzeugt, auch wenn sie durchaus Lücken in die moralische Argumentation der typischen Vegan-Propaganda reißt. Es werden letztendliche keine überzeugenden Alternativen aufgezeigt, um Tierleid und Umweltsünden wenigstens zu reduzieren. Als Haupt-Bösewicht sieht sie, statt die Fleisch- und Milchwirtschaft, Big-Corn, also die Saatguthersteller, Produzenten und Lobbyisten für Getreide. Mit veganer Ernährung wäre es nicht möglich, auf Getreide und Soja und den Konsum bodenschädigender einjähriger Nutzplanzen zu verzichten. Vieles davon ist wohl richtig und bringt einem zum Nachdenken, weswegen ich das Buch inbesondere Vegetariern/Veganern durchaus empfehlen kann.

An vielen Punkten macht sie sich mit inkonsistenter Argumentation angreifbar. Die Strategie, möglichst viele mehr oder weniger seriöse Argumente zu platzieren, in der Hoffnung, dass irgendwas hängen bleibt, kommt mir ja durchaus bekannt vor, schließlich passiert auf „meiner“ Seite genau das gleiche:)

Vegane Ernährung

 

Mit zwischenzeitlichen Aussetzern bin ich jetzt seit etwa einem halben Jahr dabei, mich (nicht ganz perfekt) vegan zu ernähren. Dieses letzte Quäntchen hin dazu komplett „perfekt“ vegan zu sein werde ich wahrscheinlich nie schaffen, aber dazu vielleicht später mehr.

Ich habe vor, in diesem und einer Serie folgender Beiträge meine Beweggründe und Erfahrungen weiter auszubreiten. Mal sehen, ob ich es schaffe das auch wirklich mal zu Ende zu bringen oder ob auch dieses Vorhaben nur halbfertig liegen bleibt, neben diversen angefangen App-Ideen, meinem nach einem Semester abgebrochenen Wiwi-Studium, anderer Blog-Serien usw;-)

Bevor ich loslege noch der obligatorische Hinweis, dass ich nur meine eigene Meinung und Erfahrungen vertrete, nicht die Weisheit für mich gepachtet habe und gerne auch noch dazu lerne.

Gründe für vegane Ernährung

Vegetarisch ernähre ich mich schon seitdem ich ein Kind bin, wobei ich weder den genauen Zeitpunkt noch die damaligen Gründe noch genau in Erinnerung habe. Es war wohl hauptsächlich Ekel bei der Vorstellung, tote Tiere zu essen. Diesen Grund finde ich eigentlich weiterhin ziemlich nahe liegend, aber mittlerweile fallen mir auch noch ein paar mehr ein:-)

Tierleid

Ein anderes Lebewesen zu töten, um sein Fleisch zu essen, ist ziemlich offensichtlich nicht besonders nett, solange man diesem Lebewesen nicht die Fähigkeit zum Empfinden von Schmerz und Gefühlen abspricht. Im Fall der wichtigsten Nutztiere wie Schweinen, Rindern und Hühnern wird das wohl kaum jemand tun. Trotzdem werden diese Tiere in viel zu engen Stallungen gehalten, mit Rekordtempo auf Schlachtgewicht gebracht und schließlich „am Fließband“ umgebracht, damit Menschen das Fleisch dieser Tiere essen können. Aus meiner Sicht steht der hedonistische Nutzen (Lustgewinn, Geschmack…), den der Mensch durch den Verzehr dieses Fleischs hat in keinem Verhältnis zu dem Leid, dass er bei dem Tier damit verursacht. Wäre Fleisch für die menschliche Ernährung tatsächlich notwendig, wäre das eine andere Sache, das wird wohl kaum jemand ernsthaft behaupten.

Pig – James F Clay

Als Vegetarier war ich allerdings bisher nicht konsequent, wenn es darum ging durch meine Ernährung ausgelöstes Tierleid soweit möglich zu vermeiden. Schließlich werden auch Milch und Eier nicht hergestellt, ohne Tiere dabei zu quälen und zu töten:

  • Jedes zweite Küken das schlüpft ist ein Männchen, und die legen keine Eier – folglich haben sie in der industriellen Landwirtschaft keinen Wert. Also werden diese gelben Federbällchen gleich nach dem Schlüpfen vergast oder geschreddert
  • Genau wie Frauen geben Kühe nicht einfach so Milch, erstmal müssen sie ein Baby bekommen. Damit die Milchproduktion nicht versiegt, werden die Tiere jedes Jahr erneut künstlich befruchtet. Diesen Vorgang als Vergewaltigung zu bezeichnen ist meines Erachtens nach nicht abwegig. Und da wir die Milch, die die Natur ja eigentlich für Kälber vorgesehen hat, selbst trinken möchten, muss das Kalb möglichst bald nach der Geburt von seiner Mutter getrennt werden. Ich bin kein Fachmann in Tierpsychologie, aber es erscheint mir intuitiv, dass das zu erheblichen emotionalem Leid bei Mutter und Kind führt.
  • Grundsätzlich werden die Tiere auf viel zu engem Raum gehalten, schließlich ist das maximal effizient – solange man das Wohlbefinden der Tiere nicht als Faktor sieht. Das führt natürlich dazu, dass die Tiere kein artgerechtes Leben führen können. Und genauso grundsätzlich wird in der industriellen Landwirtschaft ein Tier, dass nicht mehr produktiv ist, getötet. Eine Legehenne oder Milchkuh bekommt keine Rente.

Care – Victor U on Flickr

Klimaschutz und Ressourcenverbrauch

Ziemlich intuitiv ist klar, dass es effizienter ist, wenn ich selbst Mais oder Sojabohnen esse, statt diese an andere Tiere zu verfüttern und dann ihr Fleisch, ihre Milch oder ihre Eier zu essen. In einer Welt mit endlichen Ressourcen ist das ein wichtiges Argument gegen die allermeisten Ausprägungen der Nutztierhaltung. Die individuelle Klimabilanz und der Wasserverbrauch jedes einzelnen Konsumenten hängt sicherlich auch davon ab, was man genau zu sich nimmt. Wenn man sich von Flugobst, großen Mengen an z.B. Mandeln oder exotischen Superfoods ernährt, ist es wohl möglich auch als Veganer ein ganz schlimmer Umweltsünder zu ein, aber durch den Verbrauch von Tierprodukten fällt das nochmal deutlich leichter. Laut einer Einschätzung der Organisation Worldwatch ist die Nutztierhaltung für die Hälfte aller Treibhausgas-Emissionen verantwortlich.

Hinzu kommt der Ausstoß von klimaschädlichen Methangas durch Kühe, die hohe Nitratbelastung in Boden und Grundwasser in Regionen mit viel Nutzttierhaltung (Zum Beispiel im westlichen Niedersachsen) und die Problematik, dass in der intensiven Nutztierhaltung die Antibiotika in Rauen Mengen gegeben werden, was zu resistent Erregern führt, die früher oder später auch auf den Menschen überspringen. Das Bundesinstitut für Risikobewertung schreibt etwa:

Im Rahmen der Lebensmittelgewinnung können resistente Keime aus der Tierproduktion auf Lebensmittel, z.B. Fleisch oder Milch, übertragen werden. Über Lebensmittel, aber auch durch direkten Tierkontakt, können resistente Erreger auch zum Verbraucher gelangen und unter Umständen Infektionen beim Menschen auslösen.

Multiresistente Keime sind ein wirkliches Problem, an dem jetzt schon hundertausende Menschen sterben. In Wikipedia steht zu Thema Antibiotika etwa:

Die Zahl der jährlich neu auf den Markt kommenden Antibiotika geht kontinuierlich zurück. Dies ist als bedenklich anzusehen, da andererseits Antibiotikaresistenzen ständig zunehmen.

 

Ernährungsgerechtigkeit

In einer Welt, in der immer noch Menschen hungern, ist es schwer zu rechtfertigen, wenn Nahrungsmittel, oder auch die Fläche, die zur Produktion von Nahrungsmitteln dienen könnte, zur ineffizienten Produktion von Luxusgütern wie Fleisch verwendet wird, statt direkt denen zu Gute zu kommen, die Hunger leiden. Nun ist mir bewusst, dass dieses Verteilungsproblem viele Ursachen hat und keine ganz einfachen Lösungen, aber trotzdem bin ich überzeugt, eine Reduktion des Fleischverbrauchs auch hier eine Verbesserung bringen würde.

Gesundheit

Gute moralische Gründe für vegane Ernährung zu finden ist nicht schwer, aber deswegen seiner eigenen Gesundheit zu schaden, das ginge sicherlich den meisten Leuten zu weit. Ich selbst bin natürlich auch kein Märtyrer und hoffe, ein möglichst langes und gesunden Leben führen zu können. Zum Glück gibt es hier, soweit ich meiner Recherche und (bisheriger) persönlicher Erfahrung glauben kann, keinen Interessenskonflikt.

Es stimmt, dass einige wichtige Nährstoffe wie Vitamin B12, EPA&DHA oder Vitamin D über eine rein pflanzliche Ernährung schwerer zu bekommen sind. Aber erstens ist es nicht so, dass man als Omnivor zwangsläufig frei von Mangelversorgung ist, und zweitens kann man ja fehlende Vitamine oder Spurenelemente über Nahrungsergänzungsmittel zu sich nehmen. Vor kurzem habe ich jedenfalls einen Bluttest beim Hausarzt machen lassen und der kam ohne Auffälligkeiten zurück. Die Kosten wurden komplett von der Krankenkasse übernommen.

Das Argument mit dem Mangel an dem einen oder anderen Vitamin führt die vegane Ernährung aber in die Defensive, Zeit für einen Tempogegenstoß! Die Schädlichkeit vieler tierischer Produkte ist teilweise erwiesen, teilweise ist die Beweislage noch unklar – eine Auswahl:

Bei der Frage „Ist Fleisch/Mich/Ei gesund?“ bekommt man diverse, sich widersprechende Meinungen, persönliche Erfahrungen, wissenschaftliche Studien und Medienberichte. Was soll man glauben?

Veganes Büffet bei Tahinas Taufe

Bei den gesundheitsbezogenen Informationen neige ich, mit einer gewissen Skepsis, eher den Argumente der Pro-Vegan Fraktion zu folgen. Einerseits sicherlich, weil man grundsätzlich empfänglicher ist für Argumente, die der eigenen Sichtweise entsprechen. Andererseits glaube ich schon, dass an dem Argument was dran ist, dass die Fleisch-/Milch-/Aggrar-Lobby ihre Finger im Spiel hat, indem zum Beispiel wissenschaftliche Studien direkt von Milch- oder Fleischproduzenten finanziert werden, so dass von unabhängiger Wissenschaft bei vielen Studien nicht wirklich gesprochen werden kann. Eine vergleichbar mächtige und finanzstarke Interessensgruppe gibt es auf der „Gegenseite“ meiner Einschätzung nach nicht.

Durch eine vegane Ernährung isst man natürlich nicht automatisch gesündere Lebensmittel. Aber wenn man nicht auf eher ungesunde „Ersatzprodukte“ (veg. Käse, Wurst, usw.) sondern auf viel Gemüse setzt, isst man sicherlich besser als die meisten Allesesser. Ich zumindest fühle mich gesünder und habe seit meiner Ernährungsumstellung auch ein paar Kilo abgenommen. Aber jetzt ist auch gerade Sommer, es kann auch einfach daher kommen. Also beobachte ich das lieber noch weiter bevor ich mich zu großen Aussagen verleiten lasse. Mehr zu meiner persönlichen Erfahrung ist weiteren Posts geplant.

Moralische Überlegenheit

Nach all den hochtrabenden Argumenten, warum der Verzicht auf tierische Lebensmittel so gut ist, kommt das folgende Argument nicht ganz so edel daher: Ich möchte lieber auf der richtigen Seite der Geschichte sein, sozusagen lieber MLK als KKK. Wer weiß ob die Zukunft wirklich so aussieht wie in der Mockumentary Carnage dargestellt, aber so abwegig erscheint es mir gar nicht. Es fühlt sich gut an, wenn die eigenen Wertvorstellungen und Handlungen zumindest in diesem Aspekt meines Lebens zueinander im Einklang stehen – es gibt schließlich noch genug andere Baustellen, in denen ich ein besserer Mensch werden kann. Und ich gebe es zu, manchmal fühle ich ein gewisses Gefühl von Überlegenheit, wenn ich durch das Fenster auf die dicken, dummen und grausamen Menschen im Burger King oder KFC blicke. Das kannst Du auch!

Okay, vielleicht hätte ich diesen Aufruf an einer anderen Stelle platzieren können 😉 Aber Tatsache ist, weniger tierische Produkte zu sich zu nehmen den meisten von uns gut tun und unserem blauen Planeten ganz sicher. Ob man dabei versucht einfach den Konsum zu reduzieren oder ganz radikal jegliche tierische Produkte ablehnt ist eine Entscheidung die jeder selbst treffen muss. Ich persönlich finde es oft einfacher, klare Regeln (zum Beispiel „Zuhause wird nur vegan gekocht“) aufzustellen, anstatt bei jeder Mahlzeit neu mit mir zu ringen. Wie Tahina und ich uns da geeinigt haben und wo und wann ich selbst Kompromisse mache, dazu schreibe ich später nochmal etwas.

Ein Film, der uns beide sehr motiviert hat, heißt Hope for All und ist deutlich besser, als der käsige Titel vermuten lässt. Gibt es u.A. bei Amazon Prime.

Computer mit Selbstheilungskräften?

Das ist jetzt schon das zweite Mal innerhalb eines halben Jahres, dass uns sowas mit unseren Computern passiert, das muss ich jetzt mal festhalten. Ich schreibe diesen Text von einem älteren Acer-Laptop, den mein Bruder Simon mir gegeben hat und der einige Mängel hatte, unter anderem funktionierte das Touchpad nicht mehr. Durch den Einsatz einer zusätzlichen USB-Maus konnte ich mich behelfen.

Vorhin sprang mir beim Schreiben der Cursor scheinbar zufällig durch den Text – und da fiel mir auf, dass das Touchpad nach Jahren plötzlich wieder funktioniert. Cursor bewegen, Links-/Rechtsklick, Scrollen, als wäre nichts gewesen.

Bei unserem anderen Laptop ist Anfang des Jahres plötzlich der Bildschirm dunkel geblieben. Man konnte ihn über HDMI am Fernseher weiter verwenden, aber das Display blieb komplett schwarz. Ich habe ihn bei Repairzone vorbei gebracht, die sich das Gerät für immerhin 40 Euro genauer angesehen haben. Die Erfahrung war eher unbefriedigend: das Gerät haben sie einen ganzen Monat behalten und schließlich kamen sie mit einem Angebot von 500 Euro für die Reperatur zurück, was dem Neupreis vor einigen Jahren entspricht. Klare Entscheidung. Entsprechend nehme ich das Gerät so wieder nach Hause, als dass es wenigstens als Video-Abspieler am Fernseher noch eine Funktion hat. Ein paar Wochen später fällt mir dann auf, dass das Display einfach so wieder funktioniert, und das tut es seitdem auch ohne Aussetzer…

Gibt es irgendeine logische Erklärung für so etwas? Habt ihr ähnliche Erfahrungen gemacht?

WordPress Twenty Seventeen Theme – Autor bei Post anzeigen

Für ein neues Projekt (dazu später mehr) habe ich einen neuen WordPress Blog eingerichtet und dabei das Default-Theme „Twenty Seventeen“ beibehalten. Der Gesamteindruck des Themes ist gut, aber es hat mich gewaltig gestört, dass bei neuen Posts der Autor nicht angezeigt wird. Auf dem folgenden Weg konnte ich das beheben:

Dazu muss die folgende Datei bearbeitet werden:

wp-content/themes/twentyseventeen/template-parts/post/content.php

Dort muss an der richtigen Stelle der Funktionsaufruf the_author() hinzugefügt werden:

 if ( 'post' === get_post_type() ) :
   echo '<div class="entry-meta">';
     if ( is_single() ) :
       twentyseventeen_posted_on();
     else :
       echo twentyseventeen_time_link();
       twentyseventeen_edit_link();
     endif;
   echo " von ";
   the_author();
   echo '</div><!-- .entry-meta -->';
 endif;

So sieht das dann aus:

 

 

Nachtrag: Besser ist es wohl einfach, im CSS .byline {display: none} zu entfernen….

Audible Abo pausieren

Schon seit 2010 habe ich ein Audible.de Abo, dass ich seitdem auch immer gerne genutzt habe. Allerdings gibt es immer mehr und mehr gute Podcasts und kostenlose Hörbücher da draußen, so dass ich nicht mehr unbedingt 12 Hörbücher im Jahr kaufen und hören möchte. Unter „mein Konto“ gibt es lediglich die Option „Abo kündigen“. Wenn man da drauf klickt während man noch Guthaben hat, wird man darauf hingewiesen, dass dieses bei der Kündigung verfällt. Deswegen habe ich das Guthaben noch ausgegeben – ob das wirklich nötig war weiß ich jetzt auch nicht.

Man kann das Konto aber auch bis zu 3 Monate pausieren und in der Zeit natürlich auf seine Hörbücher normal zugreifen. Allerdings ist diese Option ziemlich versteckt:

  1. Zuerst auf Abo kündigen klicken
  2. Als Begründung: „Ich kann meine Hörbuch-Guthaben nicht so schnell verbrauchen“ angeben
  3. Dann muss man die Kündigung nochmal bestätigen, bevor man das Angebot zum Pausieren bekommt.
  4. Dann die Dauer auswählen und bestätigen

Ich übernehme natürlich nicht die Verantwortung für den Fall, dass Audible den Prozess irgendwann ändert. Schade, dass diese Option nicht transparenter gemacht wird.

App Entwicklung mit Apache Cordova

Nachdem ich größtenteils schon wieder vergessen hatte, wie man für Android Apps nativ entwickelt und mal wieder Lust hatte, neue Apps zu programmieren und in den Play Store zu bringen, habe ich mir angeschaut, wie man so etwas ohne native Android-Entwicklung bewerkstelligen kann.

Es gibt mehrere populäre Frameworks, um Apps möglichst auf unterschiedlichen Plattformen (Android, iOS, Windows 10) zu publizieren, aber nur einmal, üblicherweise mit gängigen Web-Tech
nologien (HMTL5 / Javascript / CSS + sehr viele tolle neue Frameworks) entwickeln zu müssen. Klassisch, write once, debug everywhere halt;-)
Ionic und React Native sind wohl zwei der populärsten Frameworks dieser Art. Hier soll der Anwender möglichst denken, die App wäre nativ für das jeweiligen Betriebssystem geschrieben worden. Ich hatte mich für mein Projekt initial für Ionic entschieden, aber dann gemerkt, dass für meine Zwecke der Overhead dieses Frameworks gar nicht nötig war.
Ionic verwendet nämlich zur Integration in die Zielplattform (i.e. Android) Apache Cordova, welches auch ohne diese zusätzliche Schicht das bietet was mich interessiert hat: Single Page Applications (SPA), also clientseitig laufende, mit Javascript geschriebene Anwendungen nach Android kompilieren zu können. Heutzutage benutzt man dazu ein SPA Framework, und da hat man eine gewaltige Auswahl. Wenn man anfängt sich zu Javascript Frameworks und anderer Web-Technologien zu informieren, kann einem schon etwas schwindelig werden – irgendwann muss man einfach aufhören Alternativen zu vergleichen und einfach anfangen. Ich habe mich für AngularJS entschieden, verwende ehrlich gesagt aber nur eine kleine Teilmenge der Features und Komplexität.

Angular JS

Was wirklich nett ist, ist das Angular die Verknüpfung zwischen Datenmodell und Darstellung im DOM (Document Object Model, die Repräsentation des HTML Dokuments zur Laufzeit) automatisch und in Echtzeit übernimmt. Wenn man also im Datenmodell beispielsweise einen Counter hochzählt, sieht man das sofort im Browser – und wenn der Anwender den Wert in einem Eingabefeld ändert, passt sich das Modell sofort an.
Darüber hinaus bin ich bei meiner Verwendung von Angular JS bisher kaum über Hello-World Niveau hinausgegangen, aber ich denke ich werde mich da eher „on demand“ weiterbilden statt erstmal ein dickes Buch durchzuarbeiten. Im Internet gibt es aufgrund der Popularität des Frameworks jedenfalls etliche Ressourcen dazu.

Elephant Brain

Ich habe die Entwicklung erstmal mit einer etwas ambitionierteren App zum Vokabeln/Sprache lernen begonnen, aber nachdem ich dafür ein kleines Memory-Spiel entwickelt hatte, möchte ich dieses erstmal sozusagen als „Spin Off“ veröffentlichen, um Erfahrung mit dem gesamten Prozess zu sammeln. Dabei habe ich einige Sachen gelernt.

elefantengedaechtnisJavascript

Objektorientierte Programmierung mit Javascript ist für einen geübten Java-Entwickler ziemlich ungewohnt. Es gibt keine „Klassen“, aber dafür sind Funktionen Objekte und können ein bisschen so ähnlich verwendet werden. Funktionen können sowohl Daten/Felder wie weitere Funktionen enthalten. Das was in Javascript wiederum Objekte genannt wird ist eigentlich auch nicht mehr als eine Map, die beliebige Daten, etwa auch andere Maps und Funktionen enthalten kann. Einige Male bin ich bei der Entwicklung mit meiner Java-Brille in Sackgassen gelaufen, aber da mein Programm ja nicht groß ist, war das Refactoring nie besonders aufwändig. Langsam komme ich mit der Sprache besser zurecht, und es macht schon Spaß, eine neue Programmiersprache zu lernen, beziehungsweise in diesem Fall etwas besser und detaillierter zu lernen. Ich habe auf die Verwendung der allerneuesten Sprachfeatures (ECMAScript 6/2016) verzichtet, damit es in den meisten Browsern läuft.

Persistenz

Persistenz ist im Browser supereinfach zu haben:
 // Speichern
 localStorage.setItem("meinName", "Paul");
 // Laden
 var name = localStorage.getItem("meinName");

Die Werte in localStorage können aber erstmal nur Strings sein, deswegen braucht man gibt es diverse Frameworks, die sich als Wrapper um LocalStorage legen, um den Umgang damit komfortabler zu machen. Ich verwende dazu Lockr, und es tut was es soll. Objekte werden beim Speichern nach JSON serialisiert und beim Laden entsprechend deserialisiert. Einzige Limitation: Funktionen (Anweisungen) gehen dabei verloren, deswegen habe ich in meinem Code einen einfachen Datencontainer g verwendet, der selbst keine Funktionen hat.

Persistenz gibt es zumindest in der aktuellen Version nur auf dem Client. Es gibt also keine globale Bestenliste, und wenn der Browser-Cache geleert wird sind auch die Punktestände wieder weg. Bei einem ambitionierterem Projekt müsste ich mir also auch über serverseitige Persistenz gedanken machen.

Icons und Bilder

Ich habe Spaß am Programmieren, aber eher weniger dabei, mich mit CSS herumzuschlagen, damit das Ganze gut aussieht, und auch das Erstellen schöner Grafiken ist nicht gerade meine Kernkompetenz. Eine Super-Ressource, die mir hier sehr geholfen hat, war FlatIcons.

APK Generieren mit Cordova

Cordova wird dazu verwendet, aus einer bereits existenten SPA mit wenigen Befehlen eine vollständige APK (Android Package)-Datei zu generieren. Oder auch Output für andere Systeme, aber damit habe ich mich erstmal nicht so intensiv beschäftigt. Eine neue Plattform hinzuzufügen ist in jedem Fall mit etwas Aufwand verbunden, im Fall von iOS braucht an wohl sogar einen Mac dazu. In Fall von Android muss jedenfalls schonmal ein SDK vorliegen. Das hat auf Anhieb nicht geklappt, da sich das installierte SDK, Java und Cordova nicht vertragen haben. Es kam etwa die folgende Fehlermeldung:

Error: Requirements check failed for JDK 1.8 or greater

Mit der Kombination Cordova 5.4.0, Android SDK 6.0 (API 23) und Java 8 JDK hat es dann letztendlich funktioniert, und ich habe erstmal nicht vor, da weiter upzugraden.
Hat man das Projekt erstellt (cordova create <project> ) und Android als target eingerichtet (`cordova platform add android`), wird eine neue Version einfach so gebaut: cordova build –release. Um Apps im Play Store vertreiben zu können, müssen sie signiert werden. Dazu muss eine Keystore-Datei erstellt und eine Datei platforms/android/release-signing.properties erstellt werden, und schon wird die APK Datei automatisch signiert.
storeFile=XYZ.keystore
storeType=jks
keyAlias=
keyPassword=
storePassword=
Wichtig: Viele Dateien in platform/android werden von Cordova generiert, es hat also keinen Sinn sie manuell zu ändern – auf das Änderungsdatum achten. Mit jeder neuen Version die über die Developer Konsole von Android hochgeladen wird, muss die Versionsnummer erhöht werden.

Rechtschreibung

Eine weitere Lektion: Prüfe die Rechtschreibung von deinem App-Namen, bevor Du sie veröffentlichst;) Erst zu spät ist mir aufgefallen, dass das englische Wort für „Elefant“ elephant und nicht elefant ist. Da war der Identifikator für den Play Store bereits vergeben (de.panschk.elefantbrain), deswegen muss das jetzt so bleiben.

Links

Auch dieses Projekt habe ich in meinem Github Profil hochgeladen. Im Play Store von Android ist die App zur Zeit noch im Betatest-Modus, ich werde sie wohl in den nächsten Wochen offiziell veröffentlichen.
Die App ist im Android Store zu laden, funktioniert aber auch im Browser: Zu Elephant Brain im Browser

Lubuntu

Mein lieber Bruder Simon hat mir seinen alten Laptop zur Verfügung gestellt, der mit dem Windows 7 was da drauf war tatsächlich kaum noch zu benutzen war. Ich habe Lubuntu (16.04 LTS) drauf installiert, und jetzt kann ich den Laptop noch prima zum Entwickeln benutzen. Das ist nicht das erste Mal, dass ich einem „zu langsamen“ PC durch Installation von Linux ein zweites Leben geben konnte.

Lubuntu gefällt mir bisher jedenfalls sehr gut – nicht fancy, aber alles funktioniert ziemlich reibungslos.

2016-11-13-100731_1366x768_scrot

 

WordPress Update

Mein Webhoster (allinkl.com) hat zum Upgrade von PHP auf eine neuere Version (Jetzt 5.6) gedrängt/geraten, und nachdem ich das gemacht habe musste ein Upgrade von WordPress her, um noch kompatibel zu sein. Das hat mit zwei Klicks einfach funktioniert, und schon bin ich wieder auf dem neuesten Stand. Sehr schön wie das heutzutage funktioniert 🙂

Next up: Mal ein etwas aktuelleres Theme installieren und mal wieder hin und wieder was schreiben…

Tastatur Spiel

Mein letzter Eintrag in dem Blog ist ja schon über zwei Jahre her. Vielleicht sollte ich doch mal hin und wieder was hier posten, aber ich verspreche mir selbst lieber nicht zuviel;-)

Jetzt habe ich wenigstens mal wieder einen Anlass, da ich ein kleines Projekt mit der Welt teilen möchte. Idee war, eine Anwendung zu schreiben, die auf wirklich kinderleichte Art das Üben mit der Tastatur ermöglicht. Es wird einfach nur ein Buchstabe auf dem Bildschirm angezeigt, wenn man den entsprechenden Buchstaben drückt ertönt ein Geräusch und der nächste Buchstabe wird angezeigt. Wenn man irgendeine andere Taste drückt, passiert nichts. Das ganze lässt sich mit wenigen Tasten Javascript implementieren, wobei ich mich auf zwei Bibliotheken gestützt habe, was bei so einem Min-Projekt wohl gar nicht nötig gewesen wäre:

  • Das unvermeidliche JQuery, um etwas einfacheren Code für den Zugriff auf Elemente des DOM verwenden zu können
  • Timbre.js, eine JavaScript Bibliothek zum programmatischen Erzeugen von Sounds, um einfach nur das Piepen nach jedem Anschlag zu erzeugen.

Verlinkt habe ich das auch: Tastaturspiel gleich ausprobieren, oder zum Download.

tastatur_spiel

SQL: Changing type of a column while keeping the contents (Oracle)

At work we just needed to change the data type of a column which already contained data. In such a case, a simple alter table statement would not work, because the type can not be changed on non-empty columns. (ORA-01439: column to be modified must be empty to change datatype)

You can achieve this with the following series of statements. In my case, the type of the id column should be changed from int to string. For other datatypes, some more effort might be needed on step two, to get the data into the new column in the right format.

ALTER TABLE TABLE_NAME ADD ID_STR VARCHAR(20);
update TABLE_NAME set ID_STR = ID;

-- FIND OUT ABOUT possible constraints to delete:
-- SELECT * FROM DBA_CONSTRAINTS WHERE table_name = 'TABLE_NAME';
alter table TABLE_NAME drop constraint PK_TABLE_NAME;
alter table TABLE_NAME drop column ID;

alter table TABLE_NAME rename column ID_STR to ID;
-- recreate constraint if needed
alter table TABLE_NAME add CONSTRAINT "PK_TABLE_NAME" PRIMARY KEY (...) ENABLE;