Kategorien
Allgemein

Ein Experiment: EurKEY

Manchmal möchte man Dinge ändern, in der Hoffnung, etwas zu verbessern. Nachdem der Kollege neben mir sich eine neue Tastatur gekauft hat, war ich einigermaßen fasziniert, was die Welt der mechanischen Tastaturen so offenbart.

Allerdings ist da meiner Ansicht nach ähnlich viel Glaube und Vorliebe darin, wie bei den Stereonerds der 80er und 90er. Ab einem gewissen Punkt und Preis wirds halt esotherisch.

Allerdings habe ich dann von einer sehr interessanten Möglichkeit erfahren, mein Game ein bisschen aufzupeppen: EurKEY. Das ist doch mal ein guter Grund, ein neues Keyboard zu kaufen.

Parallel zur Recherche nach einem Keyboard für meine Bedürfnisse habe ich das Layout auch schon mit meiner ISO-Tastatur getestet. Da ich momentan wenig programmiert habe, ist das noch ein bisschen in der Schwebe und fertig dran gewöhnen muss man sich ja auch noch.

Dieser Artikel entsteht bereits auf meinem neuen Keyboard und das meiste geht tatsächlich sehr reibungslos von statten. Mal schauen wie das weitergeht.

Spannende Punkte bei mir sind:

  1. Ich nutze das Keyboard an Mac und Linux. Hier kommt zur Umstellung auf EurKEY auch dazu, dass ich die Tastenkombis im Prinzip doppelt lernen muss (bzw. das Unterscheiden der Modifier-Taste, wenn ich zwischen den Systemen wechsle)
  2. Umgang mit der Tatsache, wenn ich im Büro ein anderes Keyboad als zuhause nutze.
  3. Werde ich es schaffen, nicht in ein neues Sammelhobby abzurutschen?
  4. Wird sich das Entwicklen durch die bessere Erreichbarkeit der entsprechenden Steuersymbole wirklich beschleunigen?
  5. Ein “finales” Keyboard wird auf jeden Fall eines mit QMK/VIA Support, da ich das ganze ja unter Mac und Linux nutze und damit nicht auf Win/Mac-Software alleine bauen kann (I’m looking at you, Steelseries & Co.!)

Wenn euch das interessiert werde ich versuchen in einem und 3 Monaten ein Zwischen- und ein Fazit zu schreiben. Und dann ggf. nach einem etwas dauerhafterem Keyboard zu suchen. Ich hab da schon Ideen, die über das RK84 hier hinausgehen. Mal schauen.

Aktuell tue ich mich besonders bei y/z schwer und den Umlauten die unter Mac auf dem Winkey (als AltGr) liegen, unter Linux mit aber mit dem (richtigen) Alt bzw. AltGr-Key geschrieben werden. Aber es wird von Tag zu Tag einfacher…

Kategorien
Allgemein

Tirade Teil 2: Fernseher

“Smart TV” ist auch nur eine schnieke Abkürzung für “Wenn Du deinen Fernseher ans Internet hängst, zeigt er Dir auch in den Menüs mehr Werbung als 1Live und RTL nachts um 2 zusammen”

Kategorien
Allgemein

Tirade: Wann ist das mit der Hardware eigentlich so falsch abgebogen?

Und wieso braucht man mittlerweile für jedes bekloppte Zubehör ne eigene App und Benutzerkonten?

$Kopfhörer will ne App mit Benutzerkonto und “überspringen”-Dark Pattern. $Maus-und-Tastatur-Lieferant hat halt einfach gleich 2 Apps, natürlich sehr gerne mit Benutzerkonto. Um den Pro-Controller mit Remap zu Konfigurieren, brauchts dann auch noch ne $Controller-Hersteller-App. Hab ich bisher nicht, vermutlich aber auch mit Benutzerkonto.

Und was machen Leute, die einfach nur an der Konsole zocken wollten, weil man da den ganzen Klumbatsch nicht hat? Vielleicht keinen PC / Mac haben, auf dem die ach so tollen GrützeProgs, mit denen man alle meine Geräte mit meinen persönlichen Eingaben zu verknüpfen, nicht laufen? Versteht das nicht falsch, die Hardware ist ja in der Regel durchaus brauchbar, aber dieser App-Zwang…

Programme, die jedes für sich dann alle einfach irgendwie Updates laden und Server-Funktionen anbieten (Software des $Maus-und-Tastaturherstellers, ganz großes Kino)

Was soll da schon schief gehen? Und dann sind die 32GB RAM unter Windows, oder die 16GB auf dem Mac ruckzuck durch drölfzehn Electron-Config-Apps belegt, die alle im Hintergrund rumschimmeln, RAM in Server-Dienste verwandeln und die Ports offen halten, bis der RAM am Ende ist. Eigentlich ganz praktisch, dann laufen die Exploits auch langsamer, die die ganzen grottigen Teile aufreißen.

Mal ernsthaft. Dinge, die ich die letzten Jahre nicht vermisst habe:

“Bitte melde Dich an der App mit deinem Nutzerkonto an um dein Zubehör zu personalisieren”

So oder so ähnlich, fast jedes Zubehörteil

App alleine ist schon genug nervig. Aber Benutzerkonto? Wofür? WOFÜÜÜÜÜÜÜR? Das ist genauso dumm wie Online-Zwang für Single-Player-Spiele, die komplett von der Konsole laufen. Aber das ist ein zu weites Feld für diesen Post.

Kategorien
Allgemein

Hilfe!? Wie gut ist die Kindersichung beim Kindle Fire Kids?

Ich schwanke gerade zwischen stolz und ängstlich. Mein 6-jähriges Kind hat es ohne Lese-Kenntnisse und nur durch rumprobieren geschafft, die Amazon-Kids-Zeitbeschränkung teilweise zu umgehen, indem es

  • die System-Screenshot-Funktion nutzt um einen Screenshot des Sperrbildschirms zu erstellen und diesen
  • per “share” an eine Mal-App zu übergeben, die
  • dann einfach beliebige Ausmalbilder malen lässt.

Ich hatte ja schon irgendwie damit gerechnet, vielleicht sogar gehofft, dass so ein Tag mal kommt, aber doch nicht schnell.

Nachtrag: Der App-Switcher (Das viereckige Kästchen) erlaubt auch wenn die Zeit rum ist, dass man in vorher benutzte Apps zurückspringt… Yay.

Update 17.10.: Der Amazon-Kundendienst hat sich auf meine Rezension hin gemeldet. Das wird spannend 🙂

Kategorien
Allgemein Code

Wie man ohne eigene Infrastruktur und mit wenig Aufwand eine Web-App mit “CMS” betreibt – kostenlos.

Ja, klar, alter Hut. CMS SaaS gibts ja auch wie Sand am Meer, aber, wenn man wirklich nur ne kleine API aus einer Tabellenartigen Struktur erzeugen will, ist das meist mit Kanonen auf Spatzen geschossen.

Ich bin ja Freund des Lean-Ansatzes. Also schnüren wir mal folgende Dinge:

  1. Einen Account bei GitLab (oder Github)
  2. Einen Account bei Netlify, Vercel o.ä.
  3. Einen Account bei Google.

Die meisten Web-Entwickler haben Punkt 1 und 3 schon erfüllt, schätze ich. Netlify oder Vercel hat vielleicht nicht jeder, am Ende tut es auch ein eigener Webspace, aber ich habe mich mit Netlify für den wenigsten Aufwand entschieden, da sie auch Cloud-Functions bieten. Das ist hier zwar nicht notwendig, aber ein nettes Feature, welches API-Calls sicherer macht.

Die Datenbank

Eine Tabelle der Dinge, die ich darstellen wollte, gab es schon:

Übersicht über Gamingbooster am deutschen Markt

Auf Youtube habe ich eine sehr coole Einführung in Google Apps Script, welches im Kontext von Spreadsheet ausgeführt wird, gefunden.

Komprimiert ist das die Funktion die ihr im App Script einbauen wollt:

function doGet() {
  const spreadSheet = SpreadsheetApp.getActiveSpreadsheet()
  const workSheet = spreadSheet.getSheetByName('Übersicht Gaming Booster');
  const data = workSheet.getRange("A1").getDataRegion().getValues();
  const fieldNames = data.shift();

  let jsonArray = data.map((row, i) => {

    // remap header fieldname to create new object
    // makes api more robust on table changes
    const obj = row.reduce((acc, curr, idx) => {
      acc[fieldNames[idx]] = curr;
      return acc
    }, {id: i});
    return obj
  })

  return ContentService
    .createTextOutput(JSON.stringify(jsonArray))
    .setMimeType(ContentService.MimeType.JSON)
}

Damit wird aus Zeilen ein Array von Objekten gemacht, die man in einer Web-App gut verarbeiten kann. Die erste Zeile wird dabei als Property-Name für die Objekte genutzt. Wie man an die einzelnen Stellen herankommt, kann man in den Youtube-Videos gut sehen.

Das Frontend.

Das ist eine einfache Vue-App, in der zentralen App.vue Komponente werden die Daten von der Google-API abgerufen und im LocalStorage abgelegt. Durch Nutzung des Vue-PWA Plugins ist die App damit offline-fähig, nachdem sie das erste Mal geladen wurde.

Der automatische Build

Die Versionierung des Frontends liegt in einem privaten Repository auf Gitlab. In meinem Fall habe ich Netlify und Gitlab verknüpft. Damit bekomme ich in Netlify mit, wenn sich mein stabiler Entwicklungszweig ändert und fängt an, meine Anwendung neu aufzubauen.

Diese wird bei Netlify gehostet, dort wird ein npm install && npm run build ausgeführt und das Build-Artefakt als neue Homepage eingesetzt.

Anstelle von Netlify kann man auch Vercel oder Heroku nutzen, eigenen Webspace, Gitlab Pages via Gitlab CI, Github, Github Actions und Github Pages, die Liste an Möglichkeiten ist lang. Meine gewählte Kombi ist aus Bequemlichkeit entstanden (bekannter Workflow, Netlify bietet noch ein paar interessante Zusatzfunktionen, die ich gerne ausprobieren möchte). Und in dieser Form ist das einzige, was ich machen muss, entwickeln und versionieren, der Rest läuft automatisch. Wenn ich schon ein just-for-fun-Projekt mache, muss sich der Management-Overhead auch schon gegen 0 bewegen.

Bonuspunkte

Ich habe die Google-API in meinem Fall durch eine Netlify Function geproxyd, damit die URL immer gleich bleibt und von der App aus immer nur die neueste Funktion genutzt werden kann. Andernfalls könnte jemand die verschiedenen Stadien der API sehen und nutzen, auch wenn diese z.b. durch Änderungen in der Tabelle gar nicht mehr funktionieren oder Daten ausgeben, die ich gar nicht ausgeben will.

Wie lange dauert sowas?

Die erste Version der App hat ca. 3 halbe Tage (nach dem Feierabend) gebraucht. In der Zeit habe ich mit Vite und TypeScript angefangen, aufgrund wirklich merkwürdiger Fehler, die TS im Template-Teil einer Vue-Component das ganze noch mal mit Vue-CLI neu aufgesetzt, dann auf Vue-CLI 5-beta geupgraded und nach einer Auseinandersetzung damit, dass Typescript Sortierfunktionen gar nicht mag, wenn man nach einem dynamisch gewählten Feld sortiert (auch wenn es korrekt getyped wurde), fast einfach alles weggeworfen und auf Javascript umgebaut.

Ach ja, und die API habe ich sehr schnell von einem statischen Row-Index auslesen (MVP lässt grüßen) auf das dynamisch erweiterbare Schema welches oben schon erwähnt ist, umgestellt.

Fazit: Was gelernt und Spaß dabei

Wie eben schon erwähnt: Es ist eigentlich so ziemlich alles schief gelaufen, was hätte schief gehen können. Aber: ich habe Dinge über Typescript gelernt (das war mein erstes TypeScript Projekt). Ich habe eine Menge über Google App Scripts gelernt (die Funktion ist bei mir deutlich anders mittlerweile), mit Parametern und Co. und einem Mini-Counter als Mini-Statistik. Netlify und Gitlab und das automatische Bauen von Anwendungen kannte ich schon, Netlify Functions habe ich in diesem Projekt auch das erste Mal genutzt.

Was ich auf jeden Fall noch vorhabe: Einen Service-Worker bauen, der das Datenmanagement im Hintergrund macht und ggf. die PWA-Notification API nutzen um auf neu hinzugefügte Produkte aufmerksam zu machen. Das wird allerdings komplettes Neuland für mich.