Kategorie: Digital

  • Darum sind Konzepte doch nicht so nutzlos

    Darum sind Konzepte doch nicht so nutzlos

    Papier ist der Horror eines jeden Software Entwicklers. Papier ist eine verschwendete Ressource, welche keinen Wert liefert.

    Konzepte und Pläne für die lange weite Zukunft zu schreiben ist nichts als warme Luft oder eben Papier zum Anfeuern des Kamins.

    Ganz unrecht haben sie nicht, denn so lange ein Konzept für die Entstehung braucht, so schnell ist es wieder veraltet. 

    Und ist das Konzept dann endlich da, wurde von allen Stakeholders gutgeheissen und unterzeichnet und für gültig befunden kommt schon die neue Technologie, der Strategiewechsel oder schlicht ganz einfach neue Erkenntnis. 

    Das Konzept ist nicht mehr gültig.

    Konzepte schreiben ist reine Zeitverschwendung. Ganz falsch ist das nicht. Aber es gibt noch eine andere Seite.

    What I discovered, which is what many writers discover, is that I write in order to think, I´d say, I think I have an idea, but when I begin to write it, I realize, I have no idea, and I don´t actually know what Ithink until Itry and write it.

    Kevin Kelly, Tools of Titans

    Interessanter Punkt: «I write in order to think.» – Ich schreibe um zu denken. Ein Konzept ist somit nicht das Vehikel für den Software Entwickler sondern für Auftraggeber. 

    Das Konzept ist dazu da, dass sich der Auftraggeber klar wird was er will. Der Duden beschreibt ein Konzept wie folgt:

    «klar umrissener Plan, Programm für ein Vorhaben»

    Duden

    Das Konzept umschreibt einen Plan. Ein Plan ist ein Plan. Pläne ändern sich. Insofern ist es auch unproblematisch, wenn ein Konzept aufgrund von neuen Erkenntnissen nicht wie ursprünglich konzipiert umgesetzt wird.

    Ideen für Software zu haben ist einfach. Die Umsetzung oftmals sehr schwierig. Durch das Konzept muss sich der Auftraggeber mit seiner Idee intensiv befassen, diese beschreiben und damit reifen lassen. Es entstehen neue Ideen, reifere Ideen, welche Hand und Fuss haben und für erste Stories umgesetzt werden können.

    Hätte ich noch vor wenigen Tagen Konzepte belächelt und als unnütze Arbeitsbeschaffung abgestemmelt, sehe ich das unterdessen anders. 

    Gerne höre ich deine Meinung.

  • Der Produktionsadvisor – Ein kleines Stück Digitalisierung

    Als Co-Founder der RapNika GmbH produzieren wir Bienenwachstücher. Ein totales Low-Tech Produkt. Es werden physische Güter produziert und verschickt. Das Deployment und Packiging gibt es auch irgendwie, aber sieht ziemlich anders aus.

    Logistik und Produktion ist für mich Software Entwickler bisher inexistent gewesen. So etwas gab es bisher nicht. Daher habe ich mich bisher nicht darum gekümmert. Das hat sich aber jetzt geändert.

    Aktuell haben wir rund 30 verschiedene Produkte, welche wir herstellen und verkaufen und es stellte sicher sehr bald die Frage, wie man die Produktion schlau steuert:

    • Das Lager soll nicht zu gross sein
    • Dennoch soll alles immer an Lager sein

    Als Kleinstfirma haben wir kein ERP System, welches solche Funktionen beinhalten würde.

    Der Ist-Prozess, zur Bestimmung der Aufträge

    1x wöchentlich den Lagerbestand der Produkte anschauen und sich dann für irgendwelche Produkte festlegen. Es ist mehr ein Bauchgefühl. Das ist nicht per se schlecht, aber braucht immer viel hin und her und schlussendlich ist es dann doch eine andere Zahl.

    Ein einfaches kleines Programm soll dabei helfen, diesen Schritt zu automatisieren. Jedes Produkt muss (manuell) mit den folgenden Angaben angereichert werden:

    • Threshhold
    • Produktionsmenge
    • Kann produziert werden

    Threshhold: Dieser gibt an, ab wann ein Produkt nachproduziert werden soll. Dieser ist natürlich von Produkt zu Produkt verschieden. Wenn der Produktionszyklus eine Woche dauert, müsste der Threshhold so hoch sein, wie in einer Woche verkauft wird.

    Produktionsmenge: Wieviel sollen pro Mal produziert werden. Auch diese Zahl hängt davon ab, wie gut das jeweilige Produkt verkauft wird.

    Kann produziert werden (True|False): Wir haben immer wieder Produkte, wo der Stoff ausgelaufen ist. Diese sollen nicht mehr im Report erscheinen, da sie nicht mehr nachproduziert werden können. Zudem geben die eine Meldung aus, um sicherzustellen, dass diese auch aus dem Shop entfernt werden, wenn sie ausverkauft sind.

    In einem ersten Schritt wird der Produktionsadvisor manuell mit den Zahlen gefüttert. Für einen zukünftigen Schritt, liessen sich diese Zahlen jedoch durchaus auch aus vergangenen Verkaufszahlen herleiten. Z.B. der «Durchsatz» für 4 Wochen. Oder natürlich noch viel genauer mit irgend einem Machine Learning Algorithmus… Zukunftsmusik und übersteigt wahrscheinlich meine Fähigkeiten. 

    Falls jemand eine Software (nicht SAP) kennt, welche so etwas macht, dann würde es mich natürlich interessieren. 

  • Holacracy Meets Scrum

    Das Meeting eskaliert. Die Entwickler sind frustriert. Zeit wird mit warmer Luft vergeudet. Diskussionen drehen sich im Kreis und verstricken sich in kleinen Details. So in etwa lässt sich das letzte Grooming Meeting beschreiben.

    So kann es nicht mehr weitergehen, aber wie sonst? Es gib anscheinend zu viele starke und vor allem unterschiedliche Meinungen. Grooming ist noch nicht fertig, alle sind frustriert. Jetzt ist guter Rat teuer.

    Und doch so einfach. Nicht dass die Entwickler böse Absichten hätten oder gar demotiviert sind und einfach stören wollen. Im Gegenteil: Es steckt viel Herzblut und Elan drin. Zu viel? Holacrazy bietet Hilfe.

    Weg mit der freien Diskussion

    Damit solche Leute dennoch zielführend miteinander diskutieren können, bedarf es einer strikten Moderation. Holacrazy gibt für die Moderation des Governance Meeting einen genauen Prozess vor:

    1. Präsentieren
    2. Fragen stellen
    3. Reaktionen
    4. Anpassen
    5. Einwände
    6. (Schätzen)

    Der fast perfekte Prozess für ein Grooming aber auch für ein Planning II.

    Präsentieren
    Der Product Owner (PO) stellt die Story kurz und knapp dem Team vor.

    Fragen stellen
    Das Team kann Fragen stellen. Jede Frage ist präzise formuliert. Eine Frage endet mit einem Fragezeichen. Ist es keine Frage, schreitet der Moderator sofort ein. Der PO beantwortet Fragen und darf bei Bedarf auf das Wissen von anderen Teammitglieder zurückgreifen.

    Reaktionen
    Reaktionen dürfen persönlich sein. Gefällt mir, gefällt mir nicht. Es ist allerdings keine Diskussion und es werden auch keine Fragen mehr gestellt. Reaktionen haben normalerweise ein Ausrufezeichen am Satzende.

    Anpassen
    Basierend auf den Fragen und den Reaktionen hat der PO jetzt die Möglichkeit die Story noch anzupassen. In Praxis findet diese Anpassung laufend statt.

    Einwände
    Jetzt dürfen Einwände kommen. Bei den Einwänden geht es nicht um die «Umsetzungsfähigkeit» sondern um die «Sinnhaftigkeit» einer Story. Es könnte durchaus sinnvoll sein, ein paar Kriterien aufzustellen, welche einen gültigen Einwand Charakterisieren: Bsp: Story falsch geschnitten aufgrund von xyz, Story kann bereits mit xyz Prozess durchgeführt werden etc.

    Schätzen
    Zu guter letzt kann die Story jetzt noch geschätzt werden.

    Wichtig ist der Moderator. Eine Diskussion, wo jeder wild durcheinander Meinungen, Argumente und Fragen in die Runde wirft findet nicht statt und müssen ausserhalb des Meetings diskutiert werden. 

    Meetingsleitfaden fürs Planning II

    Auf fürs Planning II ist dieser Prozess geeignet, allerdings mit einer kleinen Abwandlung: Nicht der PO stellt etwas vor sondern der Entwickler. 

    Der Reihe nach stellt ein Entwickler eine Story vor und wie er diese umzusetzen gedenkt. Dabei wählt er die Story, wo er am meisten Wissen hat und wo er den grössten Bedarf an gemeinsamen «Entwicklungsverständnis» sieht. 

    Dieser Modus hat dem Team geholfen, effizient, zielstrebig und vor allem ohne Kollateralschäde durch die regelmässigen Scrum Meetings durchzukommen.

    Sicher ist diese Vorgehensweise nicht für alle Teams geeignet. Sie mögen als einengend und Kindergarten scheinen. In dem Fall bitte nicht umsetzen. Für andere Teams hingegen kann es ein guter Ausgangspunkt für eine geordnete Diskussion sein. 

  • ESR Systeme für WooCommerce

    Ich schlage mich mit Finanzsystemen herum. Eine Qual ist das. Man müsste meinen, dass so etwas problemlos möglich wäre: Einen Shop mit einem Orangen Einzahlungsschein. Die Flattern fast täglich in den Briefkasten. Da gibt es sicher zig fix fertige WordPress Plugins, welche helfen.

    Falsch.

    Es gibt nur ein halbes Plugin! Halbes, weil es basierend auf einem Saas Plugin ist: Wallee.

    Warum schreibe ich diesen Post?

    1. möchte ich all denen helfen, welche ein ähnliches Problem haben.
    2. möchte ich ein paar konstruktive Verbesserungsvorschläge anbringen (oder ist es mehr den Frust ablassen?)

    Orange Einzahlungsscheine – ESR

    Die gibt es nur in der Schweiz, sind aber eigentlich super praktisch. Eine eindeutige Nummer identifiziert die Zahlung. Diese lässt sich somit vollkommen automatisch verarbeiten. Damit können zwei Use Cases abgebildet werden:

    1. Rechnung können automatisch vom Buchhaltungssystem abgeglichen werden.
    2. Vorauskasse kann auch automatisch abgeglichen werden.

    Aber: Swiss Only. Und da die Schweiz bekanntlich so furchtbar klein ist und eine *riesige* Open Source Community beheimatet, gibt es für WordPress genau 0 Module.

    Auch wenn man ein wenig über den Tellerrand schaut habe ich kein Shopsystem gefunden, welches diese Integration bietet. Schade. Wäre das ein internationales Zahlungsprotokoll gäbe es sicher zig Plugins.

    In der Schweiz kommt man, was Zahlungssysteme angeht wahrscheinlich nicht an Customweb vorbei. Von ihnen stammt auch die Plattform Wallee.

    Be ready for global growth by accepting all different kind of payment methods via our integrated payment service provider over a fully streamlined and standardized process and API.

    Customweb

    Das heisst:

    • Payment Provider einbinden
    • Mahnungen verschicken
    • Betrugsfeatures
    • und noch so einiges mehr

    Und bei den Payment Provider wird definitiv nicht gespart. Die Liste beinhaltet die Klassiker wie PayPal und Exoten wie Alipay. Sie ist lang! Das Konzept ist nicht ganz einfach zu verstehen. Es gibt drei Pfeiler:

    • Die Methode. Z.B. Rechnung.
    • Der Processor. Z.B. Postfinance
    • Der Connector: Verbindet die beiden.

    Dazu gibt es einen standardisierten Bestellablauf, welcher für alle Bezahlmethoden gleich ist. Das ist alles schön und gut: ABER. Hier waren Ingenieure am Werk und definitiv nicht UXler.

    Ich bin überzeugt, dass die Software von hoher Qualität ist, basierend auf neuesten Technologien gebaut ist und moderne Architekturprinzipien umarmt. Absolut nichts gegen die Funktionalität der Software, aber hier fehlt ein Usability Sepzialist.

    Als Benutzer werde ich mit der vollen Komplexität überwältigt. Selbsterklärend ist nur wenig und die Hilfetext sind holprig und wenig aussagend. (Nachdem ich das geschrieben habe, habe ich nochmals einen Blick drauf geworfen. Eigentlich sind sie nicht schlecht, aber irgendwie lassen sie doch ein ungutes Gefühl zurück. Es sieht einfach nicht so anmächelig aus). 

    Einfache Aktionen -> Z.B. einen manuellen Task abhaken braucht zwei Klicks, obwohl es gut auch mit einem möglich wäre. Ich ertappe mich, wie ich mit der Maus quer über den Bildschirm von einer Ecke zur anderen Jage, weil die Buttons entsprechend angelegt sind. 

    Checkboxen in Listen sind zwar da, aber haben keine Bulkfunktionalität. E-mail Templates können bearbeitet werden, aber sind weit entfernt von selbsterklärend. Im initialen Assistenten ist Alipay als Defaultwert aufgeführt. Auch solche Dropdowns sind eher verwirrend als zielführend.

    Alles klar?

    Die API ist vorhanden, aber da habe ich mich noch nicht dran gewagt und möchte es auch nicht. 

    Wenn ich es nicht besser wüsste, würde ich sagen, dass es eher ein Tool ist, welches sie intern gebrauchen, um Kundenwünsche in ihren eigenen Projekten schnell und effizient erledigen zu können. Gut, besser wissen tue ich es eigentlich auch nicht.

    Meine Bitte an Customweb und andere Saas Provider

    Ich zahle gerne einen fairen Preis (und Walle ist da meiner Meinung nach fair), aber bitte bitte: Ich habe das Ding nicht entwickelt und möchte mit ein wenig Try and Error meinen Use Case einrichten können.

    Und hier eine paar Firmen, welche es absolut genial machen:

    • Digital Ocean der Underdog und Geheimtipp in der IaaS Welt. Super Simpel. Super Sexy. Doch das beste sind die Tutorials, um xyz zu erledigen.
    • Freshdesk. Auch hier einfach und intuitiv. Ok, ist nicht ganz so ein kompliziertes Thema.
    • Basecamp. Brauche ich zwar schon eine Weile nicht mehr, aber ich erinnere mich gerne an die Basecamp Zeit zurück. Es hat einfach Spass gemacht, damit zu arbeiten. 
    • Synceria. Das initiale Tutorial, um alles einzurichten sieht super sexy aus und ist einfach. 

    So jetzt meine Bitte an Customweb:

    • Schreibt Tutorial oder macht Screencasts, wo ihr wichtige und gängige Tutorials aufzeigt. Vielleicht gibt es die auch, dann macht, dass ich sie finde. Wichtig: Am Anfang klar machen, was erreicht werden soll und dann konkret zeigen, wie es erreicht wird. 
      -> Learning by Doing ist 100% effizienter.
    • Bitte baut bei der Dokumentation eine Suche ein!
    • Klicks reduzieren.
    • Pinke Button heissen nicht automatisch, dass man etwas besser sieht. Das Layout ist viel wichtiger.
    • Navigationsführung verbessern: Wenn ich in einer Detailansicht bin (Transaktion), erwarte ich, dass die horizontale Navigation zu diesem Record gehört.
    • Checkboxen in einer Liste sind mit Bulkaktionen zu verknüpfen.
    • Dann hätte ich noch ein paar spezifische, aber eher inhaltliche Bitten/Feature Requests, aber das gehört hier nicht rein. 

    Ich bin sicher kein Finänzler und der eine oder andere Begriff ist mir neu, aber ganz doof im Umgang mit IT Systemen bin ich nicht. Ich habe mich jetzt einige Stunden (geht schon fast in die Tage) mit Wallee (lediglich dem Invoice Teil) und WooCommerce auseinandergesetzt… das ist einfach zu viel und gäbe es Konkurrenz, hättet ihr mich verloren.

    Da es diese jedoch nicht gibt, bleibe ich (gezwungenermassen), möchte aber gerne helfen, die Applikation benutzerfreundlicher zu gestalten. 

    Ich möchte jedoch mit einem Plus enden: Der Support funktioniert und antwortet und wollte sich angeblich sogar telefonisch bei mir melden (Anruf habe ich leider verpasst).

    Falls das jemand von Wallee liest: Nicht persönlich nehmen, sonder als konstruktive Kritik von einem ganz normalen Benutzer, der sich mit der ESR Integration die Zeit «vertrödelt».

  • Getting Things Done – GTD

    Als kleiner Reminder, wie die Methode gedacht ist. Vielleicht kann ich mich ein anderes Mal über den Nutzen dieser Methodik äussern.

  • Einfaches Backup Script

    Hier ein ganz einfaches Backup Script:

    #!/bin/sh
    rdiff-backup /srv/users/ /root/backup/
    rdiff-backup –remove-older-than 4W –force /root/backup

    Basiert auf rdiff und löscht alle Backups welche älter als 4 Wochen sind. –Force ist notwendig, um sicherstellen, dass auch mal 2 Backups welche älter als 4 Wochen sind gelöscht werden.

    Und hier ein Snipped, welches ein komplettes Backup einer MySQL DB macht:

    #!/bin/sh

    #TIME=»$(date +’%Y-%m-%d›)»
    BACKUP_DIR=»/tmp/backup_mysql»

    TIMESTAMP=$(date +»%F__%H»)
    DB_BACKUP_DIR=»$BACKUP_DIR»
    MYSQL_USER=»backup»
    MYSQL=/usr/bin/mysql
    MYSQL_PASSWORD=»the_password»
    MYSQLDUMP=/usr/bin/mysqldump

    mkdir -p «$DB_BACKUP_DIR»

    #backup database
    databases=`$MYSQL –user=$MYSQL_USER -p$MYSQL_PASSWORD -e «SHOW DATABASES;» | grep -Ev «(Database|information_schema|performance_schema)»`

    for db in $databases; do
    echo «Backup Database: $db»
    $MYSQLDUMP –force –opt –user=$MYSQL_USER -p$MYSQL_PASSWORD –databases $db | gzip > «$DB_BACKUP_DIR/$db.gz»
    done

    rdiff-backup /tmp/backup_mysql /root/backup_mysql

    Funktioniert nach dem einfachen Prinzip:

    • Dump DB als gzip
    • inkrementelles Backup via rdiff-backup
  • hc-sr501 PIR Motion

    Es sind lediglich drei Anschlüsse notwendig und somit sehr einfach zu machen:

    • Power
    • Ground
    • Datenfluss

    Die beiden organgen Regler am Besten zum Starten ganz gegen den Uhrzeigersinn drehen. Dadurch wird die Sensititivät sehr gering und man muss sehr nahe am Sensor sein und zudem «merkt» sich der Sensor die Zeit nicht.

    So sollte der Sensor aussehen. Die Plastikkappe lässt sich leicht entfernen. Dann kann man auch einfach prüfen, wie die Drähte gesteckt werden müssen.

    Dieser kleine Schnippsel sollte funktionieren und geht davon aus, dass der Datendraht an D6 angeschlossen ist.

    int sensor = D6;
    
    void setup() {
      Serial.begin(115200);
      Serial.setDebugOutput(true);
      pinMode(sensor, INPUT);   // declare sensor as input
      //pinMode(Status, OUTPUT);  // declare LED as output
    }
    
    void loop() {
      Serial.println("start");
      long state = digitalRead(sensor);
      
      if(state == HIGH) {
          //digitalWrite (Status, HIGH);
          Serial.println("Motion detected!");
          delay(1000);
        }
      else {
          //digitalWrite (Status, LOW);
          Serial.println("Motion absent!");
          delay(1000);
          }
    }
    
    

    Die eingesetzten Komponenten habe ich hier (https://de.aliexpress.com/item/V2-4M-4FLASH-NodeMcu-Lua-WIFI-Networking-development-board-Based-ESP8266/32647690484.html?spm=a2g0s.9042311.0.0.yFM7LS) und hier (https://de.aliexpress.com/item/Free-shipping-1PCS-LOT-HC-SR501-HCSR501-SR501-human-infrared-sensor-module-Pyroelectric-infrared-sensor-imports/32700407854.html?spm=a2g0s.9042311.0.0.yFM7LS) gekauft

  • Drupal Cron job für Normalsterbliche

    Bisher musste ich den Cronjob immer von Hand durchführen. Das kann doch ziemlich mühsam werden, da es immer mal vergessen wird. Einen Cronjob kann ich jedoch bei meinem Hoster nicht ausführen 🙁 … dazu bezahle ich einfach zu wenig.

    Es gibt aber eine Abhilfe: poormanscron (Armer Manns Cron). Ganz einfach zu installieren nicht zu viel zu konfigurieren und läuft einfach. In der Konfiguration kann festgelegt werden, in welchen Zeitabständen der «Cron» ausgeführt werden soll. Dabei wird im Prinzip lediglich der manuelle Cron ausgeführt, wenn ein Benutzer die Seite betritt und genügend Zeit seit dem letzten Besuch verstrichen ist.

    Ich war schon fast drauf und dran ein solches Modul selber zu schreiben. Zum Glück ist mir das noch über den Weg «gelaufen» 🙂

    Der Performance zu liebe sollte man wohl den Abstand nicht zu klein wählen. Standard ist 60 Minuten… scheint mir ziemlich hoch. Kommt wohl drauf an, was für eine Seite man hat. Für Rapslis World reichen 6 h bei weitem.

    Update 17.12.2007: Gerade ist mir noch etwas über richtige Cronjobs über den Weg gelaufen: www.cronjob.de. Habe es in keiner Weise ausprobiert, aber klingt eigentlich genau danach. Falls jemand schon Erfahrungen damit gesammelt hat, soll er doch bitte einen kleinen Kommentar lassen.

    Update 28.08.2014: Dieser Inhalt ist unter umständen nicht mehr aktuell.

  • Wikipedia vs. Brockhaus

    Als Student ist das doch mal etwas Positives. Wikipedia schlägt Brockhaus 🙂 … dies sagt jedenfalls eine Untersuchung [not working anymore], welche im Auftrag von Stern durchgeführt wurde. Dies wird wohl jedoch nichts daran ändern, dass in wissenschaftlichen Papers Wikipedia nach wie vor nicht im Literaturverzeichnis erscheinen soll/darf. Ich zweifle jedoch nicht daran, dass auch Wissenschaftler rege gebrauch von Wikipedia machen. Nur wagt sich niemand Wikipedia dann auch zu erwähnen.

    Die Frage stellt sich, ob Wikipedia jemals die nötige Akzeptanz erreicht, damit sie auch in wissenschaftlichen Papers erwähnt werden kann. Bis dahin dauert es wohl noch ein wenig, aber ich gebe die Hoffnung auf jeden Fall nicht auf.

    Interessant, was im Netz geraten wird:

    Die Wikipedia ist ein Online-Lexikon, in dem jeder Nutzer einen Artikel erstellen oder an ihm mitarbeiten kann. Dies ist auf der einen Seite ein Vorteil (z.B. bei der Aktualität von Artikeln), andererseits ein Nachteil, da die fachliche Qualifikation und die Identität der Autoren nicht sichergestellt werden kann.

    Auch wenn viele Artikel der Wikipedia eine hohe Qualität aufweisen, kann die Wikipedia aufgrund der genannten Argumente nicht als zitierfähige Quelle angesehen werden – es sei denn, es geht in der Hausarbeit um die Wikipedia selbst.

    Stellt sich die Frage, inwiefern diese Quelle natürlich verlässich ist?