Archiv der Kategorie: Coding

Remote Developer Setup

Smartphones oder Tablets von Samsung oder Huawei haben einen hochinteressanten Desktop-Modus. Bei Samsung DeX bespielsweise öffnet sich auf einem Desktop Bildschirm über USB-C und HDMI eine vollwertige Oberfläche, die ganz stark an Windows erinnert und die für das Arbeiten völlig ausreicht. Und man hat sie immer dabei. Darauf scheint es hinauszulaufen – alles, was für den Rahmen des elektronischen Alltags nötig ist, ist Teil des mobilen Smart-Devices. Die Inhalte kommen als Stream oder Dateien aus der Cloud. Spiele, Musik, Filme oder Kontakte.

Wie geht man als Entwickler damit um? Dabei meine ich die Frage nicht im Sinne von Responsive Design (wie baue ich eine Web-App, die auf allen Geräten gleich funtioniert). Nein, ich meine die Nutzung dieses Smart-Devices als Entwicklungsumgebung. Wie das geregelt ist oder geregelt wird – davon hängt die Geschwindigkeit der Transformation unserer Umwelt ab.

Fakt ist, dass es schwierig ist, von unterwegs auf einem Android oder IOS Gerät, Software zu entwickeln. Es gibt Ansätze wie „DroidEdit“, die ein wenig eine Entwicklungsumgebung nachahmen. Wirklich produktiv wird man aber nur, wenn man überall die gleiche Umgebung hat und davon ausgeht, dass die Darstellung dieser Umgebung unabhängig von dem Gerät selbst ist.

Remote Developer Setup

Das ist der Grund, warum ich mich mit „GNU Emacs“ beschäftige und warum ich dazu schon einige Artikel verfasst habe. Der 40 Jahre alte Editor, für den man keine Maus benötigt und der nach einer steilen Lernkurve alles mitbringt, was man für Softwareentwicklung benötigt, läuft am besten auf einem minimalen Linux, das man über einen angemieteten Server überall zugänglich macht. Dort verbindet man emacs über SSH in einem Terminal mit dem eigenen Webspace und entwickelt Software. Backups sind auf dem Server geregelt und es braucht keine wirkliche Versionskontrolle, da die Software direkt auf dem Server editiert wird.

Emacs in DeX auf einem Samsung Tablet
Emacs auf demselben Server unter Windows 10 im Terminal

Einziger Stolperstein ist tatsächlich die steile Lernkurve und die anfängliche Ungläubigkeit – denn welche Vorteile soll es bringen, sich auch jetzt noch in diesen Dinosaurierer einzuarbeiten?

Wenn man einige grundlegende Funktionen eingerichtet hat und sich seine eigene Konfiguration zusammengebaut hat, diese mit Tatstaturkürzeln beherrscht, dann gibt es absolut nichts, was produktiver ist als die Nutzung von Emacs. Dazu konkret in Kürze mehr … .

Emacs – Die ersten Hürden (Tutorial 1)

Es ist mal wieder Zeit für neues Futter für die Nerds unter meiner Leserschaft 🙂

Vielleicht geht es nur mir so, aber in Zeiten, in denen eine schleichende Verdummung durch medialen Overkill mit Alterweisheit und langsam nachlassender Jugend einhergeht, da möchte man vieles einfacher gestalten. Und trotzdem auf nichts verzichten. Ich bin jetzt nicht einem bratzenhaften Minimalismus verfallen, suche aber nach Methoden, die – wenn sie einmal eingerichtet sind – den Nerdalltag vereinfachen.

Ganz konkret: wie kann ich auf einem S7+ von Samsung (Andoid Tablet mit 12″ Display) eine Nutzerumgebung einrichten, mit der ich auch Webentwicklung (wie CONSILIUM) bequem von überall aus gestalten und überwachen kann? Nicht nur für zwischendruch, sondern so, dass mir alle Möglichkeiten offenstehen. Nie wieder einen Laptop mitschleppen – Tablet einschalten, über Tethering auf dem Smartphone ins Netz und loslegen.

Eine Entwicklungsumgebung wie PHPStorm gibt es nicht für Android. Schade. Gibt es Online IDEs, die sich nutzen lassen? Ja, aber CLOUD9 von Amazon erlaubt mir keine Installation ohne node.js. Und sowas wie codeanywhere.com ist nett. Aber, da kann ich auch gleich einen einfachen Editor nutzen. Und dann kommt man an den Punkt, an dem ich schon so oft war und den ich wegen einer zu steilen Lernkurve immer aufgegeben habe. Der wohl kompletteste Editor für alle Belange von Softwareentwicklung ist „emacs“, ein Dinosaurier, unglaublich umfangreich, gemacht bereits zu Zeiten, als es noch keine Maus gab – wir brauchen also noch nicht einmal eine grafische Oberfläche. Back to the roots bedeutet hier in diesem Fall ein Gewinn an Produktivität.

Emacs in action
Sieht aus wie ein lokales Programm – ist aber keines

Wenn ich mich für so etwas einscheide und mir doch die Fähigkeiten aneigne, die ich für die Nutzung von emacs brauche – wIe kann ich dann auf meinem Windows Desktop und einem Android Tablet die gleichen Bedingungen schaffen ohne zwei Umgebungen verwalten zu müssen? In dem ich einen kleinen Server miete, für 1,- EUR im Monat, dort ein minimales Debian Linux laufen lasse und emacs installiere. Diesen steuere ich auf dem Desktop und dem Tablet über einen Telnet bzw. ssh Client an und habe überall die gleichen Bedingungen. Selbst wenn mein Rechner in Flammen aufgeht und mir die Bude abbrennt – alles liegt auf meinem eigenen Server.

Ein sehr durchdachtes Farbschema für emacs habe ich hier gefunden. Protesilaos Stavrou, so heisst der Macher dieser Farbschema, hat außerdem noch viele brauchbare Videos und Blogeinträge zum Umgang mit emacs erstellt.

Und jetzt „übe“ ich diese Tastaturkürzel, die tatsächlich sehr durchdacht sind. Für alle, die ebenfalls nach so einem Einstieg suchen, ist diese Liste vielleicht hilfreich.

--- emacs : Tastaturkürzel für Windows-User ---

Vorbemerkungen
Mit C ist bei emacs und allen Dokumenten/Handbüchern/Tutorials immer die STRG bzw. CTRL Taste gemeint. M ist ALT. Wird als Tastenkombination z.B. C-x C-f angegeben, muss nacheinander STRF+x und dan STRG+f + ENTER eingegeben werden. Manchmal folgt dann noch ein weiterer Parameter (wie etwa ein Suchkriterium). Diese Kommandozeilen-Aktionen werden immer in der unteren Kommandozeile angezeigt, unabhängig davon, ob emacs in einem Terminal läuft unter einer grafischen Oberfläche

Datei und Bufferhandling
C-x C-f    + ENTER : Öffnet einen Buffer, in dem alle Dateien des aktuellen Standardverzeichnis angezeigt werden. Navigieren durch die Liste + ENTER öffnet dann diese Datei.
C-x o      Wechselt durch die offenen Buffer
C-x 0      Schliesst den aktuellen Buffer
C-x 1      Schliesst einen anderen Buffer außerhalb des aktuellen
C-x 2      Teilt den aktuellen Buffer in zwei (vertikal)
C-x 3      Teilt den aktuellen Buffer in zwei (horizontal)
 
C-x C-s    Speichert die aktuelle Datei. Wenn noch kein Dateiname vergeben 
           wurde, muss dieser angegeben werden.
C-x C-w    Speichern unter
C-x k      Schliesst die aktuelle Datei.
 
C-x C-c    Schliesst Emacs
M-x shell  Öffnet das aktuelle Verzeichnis
 
Bearbeitung
Dadurch, dass die STRG Taste eine zentrale Rolle spielt, weisen Kombinationen wie STRG+C (C-c) oder STRG+V (C-v) auf andere Funktionen in emacs hin. Dafür wurde der CUA Modus entwickelt, der einfach in den Optionen aktiviert werden kann.  Das ist vor allem für Nutzer von Windows interessant, bei denen die Shortcuts nahezu überall Standard sind und man sich ungern umgewöhnen möchte.
 
Mit CUA Mode
C-c        Kopiert den markierten Text in die Zwischenablage
C-v        Fügt den Text aus der Zwischenablage ein
C-x        Schneidet den markierten Text aus und kopiert ihn in die Zwischenablage
 
Wenn Sie bereits an diese Emacs Kürzel gewöhnt sind, dann gelten für dieser drei Optionen diese Kürzel:

Ohne CUA Mode
 
M-w        Kopiert den markierten Text in die Zwischenablage
C-v        Fügt den Text aus der Zwischenablage ein
C-w        Schneidet den markierten Text aus und kopiert ihn in die Zwischenablage
 
C-x h      Alles markieren
 
 
M-u        Wandelt den markierten Text in Großbuchstaben um
M-l        Wandelt den markierten Text in Kleinbuchstaben um
M-c        Wandelt den ersten Buchstaben in einen Großbuchstaben um
 
C-x C-+    Schrift vergrössern
C-x C--    Schrift verkleinern
M-h        Markiert einen ganzen Absatz
C-M-h      Markiert eine Funktion
C-a        Cursor an den Anfang einer Zeile
C-e        Cursor an das Ende einer Zeile
C-p        Eine Zeile nach oben
C-n        Eine Zeile nach unten
M-b        Cursor ein Wort zurück
M-f        Cursor ein Wort vorwärts
C-l        Cursor in der Mitte des Screens platzieren
M-d        + goto-line x  : Springt zur Zeile x
M-x        + comment-region : Kommentiert die aktuelle Auswahl aus
M-;        Kommentiert die aktuelle Zeile aus
M-d        Löscht das Wort am Cursor

Demnächst folgen noch weitere Infos über die verschiedene Modi in emacs und wie sich Funktionen dort automatisieren lassen.

CONSILIUM. Der Dienstplaner.

Eines der CONSILIUM-Promotion Fotos, die evtl. mal in Google oder Facebook Ads auftauchen werden.

Immer noch BUGS, immer noch viel Feinarbeit – aber es geht mit mächtigen Schritten voran. Der große Teil der Erstellung von AGBs und Datenschutzerklärung ist fertig und wird gerade von einem Kunden reviewed – jetzt geht es an die letzten Feinheiten.

Das animierte GIF auf der Startseite wurde jetzt durch ein Appetizer-Video mit einer schönen Intro Animation ersetzt. Die werde ich bei allen Tutorial Videos nutzen. Dieses Video zeigt einfach nur einen unkommentierten Einblick in die Funktionen von CONSILIUM:

Eine Entscheidung, die ich jetzt erst spontan getroffen habe, entpuppt sich dabei als zusätzliche intensive Baustelle. Statt eines PDF/ePub Handbuches zur Software habe ich entschieden, ein kontextabhängiges Hilfesystem aufzubauen. Also überall in CONSILIUM gibt es kleine Info-Buttons – wann immer der User darauf klickt öffnet sich ein Modal-Fenster (das sind Pop-Up Fenster, die die Overlay-Funktionen des Browsers nutzen) und zeigt die passenden Erklärungen an, teilweise auch mit eingebetteten Videos. Da CONSILIUM jetzt schon massenhaft Funktionen hat, braucht es auch massenhaft Erklärungen und damit sehr viele dieser Fenster.

Hilfesystem CONSILIUM.
Beispiel für eines der Modal-InfoFenster von CONSILIUM, welches durch eines der vielen InfoButtons ausgelöst wird.

Trotzdem wird es auch ein klassisches Handbuch geben. Es ist einfacher zunächst die einzelnen Elemente zusammenzustelllen und alle wichtigen Elemente einer Funktion direkt darzustellen, als dieses aus einem größeren Text heruaszunehmen, nur um diesen dann wieder anpassen zu müssen.

Nun, ich hoffe, dass CONSILIUM noch in diesem Monat von einem ausgewählten Kunden „in Produktion“ genommen wird, d.h. für Juli werden die ersten Planungen in einem Service-Center mit CONSILIUM gemacht werden. Da stelle ich mich auch schonmal auf ein wenig Flick-Werk ein – nämlich für all die BUGS, die ich jetzt noch gar nicht sehe 🙂

DSGVO & Co. – Ein notwendiges Übel

DSGVO & Co,

Günstiger, als die Texte selbst auszudrucken – die Verordnungen können als praktische Broschüren gekauft werden.

CONSILIUM – die Webversion meines Dienstplan-Tools geht allmählich in die Zielgerade. Eine erste Alpha-Version ist fertig – sie wird  derzeit mit verschiedenen Fallstudien getestet. Spätestens jetzt ist es wichtig, sich um ein scheinbar lästiges Thema wie den Datenschutz zu kümmern. DSGVO & Co. lassen grüßen. Was echte Mehrarbeit und ein schwieriges Unterfangen ist, ist aber meiner Meinung nach auch ein notwendiges Übel.

Datenschutz wird in Deutschland in besonderem Maße hochgehalten. Das ist auch gut so. Ich finde, die vielen Diskussionen, die sich gerade auch in diesen Zeiten zum Thema Datenschutz auftun, sind sehr wichtig. Die Verordnungen sind dabei insofern positiv zu sehen, als dass sie tatsächlich ein Instrument sind, wie Software für Effizienz sorgen kann, der Datenschutz aber gewährleistet bleibt. Im Klartext: Jede Form von Software kann mit Hilfe des Instrumentariums dieser Verordnungen datenschutzkonform umgesetzt werden. Auch wenn es manchmal viel Arbeit ist und damit Zeit und Geld kostet. Sie führen auch zu einer dringend notwendigen differenzierten Betrachtung von Gefahrenquellen – etwas, dass derzeit eher lästig und aufgezwungen wirkt und jeden Nutzer damit quält, sich mit so etwas wie „Cookies“ zu beschäftigen. Aber der Reihe nach … .

Die Hierarchie der Verordnungen ist eindeutig. DSGVO und ePrivacy Richtlinie sind europäische Verordnungen, wobei ePrivacy ein noch sich in der Veränderung befindlicher Teil des DSGVO ist.  Sie umfasst bereits die sogenannte Cookie-Richtlinie, zu der auch (Stand Februar 2021) ein erweiterter Entwurf gehört. Das Bundesdatenschutzgesetz ist nationales Gesetz und steht – sofern ich das als Nicht-Jurist überhaupt beurteilen kann – nicht im Widerspruch zur DSGVO.

Der Datenschutz hat also einen brauchbaren europäischen Rahmen. Ich denke, das ist ein wichtiger Aspekt. Zu erwähnen ist aber auch, dass die DSGVO von nationalem Recht eingeschränkt werden kann. Die Bedingungen dafür sind in der DSGVO selbst festgelegt. Wenn also in Deutschland immer wieder Projekte vertrödelt werden und auf den angeblich strikten Datenschutz in Deutschland verwiesen wird – das ist schlicht falsch. Die DSGVO betrifft alle europäischen Staaten. Wenn Deutschland zum Beispiel eine DSGVO-konforme Datenschutz-App nicht auf die Reihe kriegt, die Schweden aber damit schon seit Monaten fertig sind, dann hat das nichts mit Datenschutz in Deutschland zu tun.

Was sind nun die zentralen Bestandteile der DSGVO? Das lässt sich mit diesen Schlagwörtern zusammenfassen:

  • Einwilligung zur Verarbeitung von Daten zwingend und explizit notwendig
  • Transparenz und Zweckgebundenheit der Datenverarbeitung
  • Exklusive Hoheit über die Nutzerdaten beim Nutzer – dieser muss jederzeit erfahren können, welche Daten zu welchem Zweck über ihn erfasst wurden.
  • Das Recht auf Löschen von Daten und das Recht auf „Vergessenwerden“

Das bedeutet für die Softwarenutzung im Internet eine ganze Menge Änderungen. Es reicht also nicht, dass ein Nutzer eine E-Mail Adresse und ein Passwort für eine Software wählt – er muss auch erfahren können dürfen, was mit diesen Informationen passiert. Das sollte in den Allgemeinen Geschäftsbedingungen und Datenschutzbestimmungen festgelegt sein.

Viel entscheidender – und leider bisher nicht in Verordnungen gegossen – ist der sogenannte SaaS Vertrag („Software as a Service“). Dazu gibt es bisher keine eigene Verordnung – allerdings ist die Annahme, dass diese Art von digitalem Produkt durch die DSGVO abgedeckt ist, doch eher lückenhaft. Denn „SaaS“ – also das regelmässige Nutzen einer Software im Internet oder auf einem Server – bedeutet nicht selten, dass mehr als zwei Parteien involviert sind. Neben dem Anbieter und dem Kunden spielen auch personenbezogene Daten eine Rolle – im Falle von CONSILIUM sind das die Daten der MitarbeiterInnen, die in diesem Dienstplan-Tool verwaltet werden. Und es gibt dann noch den Service-Provider, der die Datenbank hostet. Auch der muß DSGVO-konform handeln. Hier könnte man meinen, dass das selbstverständlich sei – nun, das ist eine steile These. Wie oft hören wir davon, dass z.B. Passwörter in Datenbanken im Klartext gespeichert sind? Hier machen es sich einige Anbieter einfach, in dem sie annehmen, dass der Zugang zur Datenbank selbst verschlüsselt ist. Und das würde als Sicherheitsmaßnahme ausreichen. Das jedoch ist fahrlässig und auch ein indirekter Verstoß gegen die DSGVO.

Man muss also aufpassen, wenn AGBs und Datenbestimmungen für „Software as a Service“ definiert werden. Es gibt dafür auch kaum kostenpflichtige Templates oder gar kostenfreie Vorlagen, die man als „SaaS“ – Betreiber nehmen und anpassen könnte. Das liegt ganz einfach an den vielfältigen Szenarien, die sich aus der Software ergeben können. Welche Parteien sind involviert, wie müssen Sie durch die DSGVO in die Pflicht genommen und geschützt werden? Bei „CONSILIUM“ ist es z.B. so, dass die verwalteten MitarbeiterInnen durch einen Administrator selbst zu CONSILIUM Nutzern werden können. Damit können sie direkt über einen Teil ihrer Daten selbst verfügen – was bedeutet das für ihre Rechten und Pflichten? Ein sehr weites Feld … .

Aber das Wichtigste überhaupt: das Vertrauen. Der Nutzer der Software muss Vertrauen haben können. Deswegen habe ich mich entschlossen, zusätzlich zu den AGBs und der Datenschutzbestimmung auch einen eigenen Datenschutzkodex zu verfassen. Diese Kodex ist jenseits von halb-juristischem seitenlangem Kauderwelsch eine Eigenverpflichtung, die genau diesem Vertrauensaufbau dienen soll. Man stelle sich vor, als Softwarebetreiber würde man in den begründeten Verdacht geraten, Daten an Dritte zu verkaufen – das wäre der Super-GAU. Es muss also mehr als deutlich werden, dass das Werben um berechtigstes Vertrauen Zukunft für den Betreiber schafft und in dessen Interesse liegt.

Mehr dazu in den nächsten Wochen, wenn als diese Erzählungen praktische Formen annehmen.