Usability-Rezept für glückliche Chatbots à la Amazon Alexa, Google Home, Apple Siri & Co

Wer versucht, die Gestaltung grafischer Oberflächen eins zu eins auf sog. Conversational UIs (Chatbots, Spracheingaben, usw.) zu bringen, merkt schnell, dass diese Rezepte hier nicht greifen. Es müssen stattdessen neue Zutaten hinzugefügt, alte Muster angepasst und einige Zutaten komplett ausgetauscht werden.

In diesem Artikel finden sich 3 Zutaten, die Spracheingabe und -ausgabe mit Alexa, Siri, Cortana & Co zu einem Genuss und echtem Mehrwert verhelfen können.

Denn gerade das lästige Eintippen von Texten auf kleinen Smartphones macht die Benutzererfahrung von eigentlich guten Applikationen häufig zu einer unangenehmen Sache. Nicht immer sind Sprachbefehle oder gesprochene Antworten die Lösung. Aber in Verbindung mit grafischen Oberflächen lässt sich die Usability deutlich verbessern. Und wer weiß. Vielleicht nutzen wir bald noch ganz andere Interaktionsmöglichkeiten, an die wir bis her noch (sic!) nicht denken.

Veröffentlicht unter IoT & Industry 4.0, Strategy & Methods | Verschlagwortet mit , , , , | Kommentar hinterlassen

Co-Creation im Workshop: Anstrengend ergebnisreich.

Unser Workshop war anstrengend … warum eigentlich?

Am 2./3. März verbrachten wir zwei intensive Workshoptage in Nochen: Ein Teil der OC Community (insgesamt 17 Personen) entwickelte Workshopkonzepte und Ideen rund um die Themen Innovation & Digitalisierung, New IT & IT Strategy sowie (Digital) Change. Am Freitag Abend waren wir – was die Gesamtsumme der Endergebnisse anging – eigentlich sehr zufrieden.

Eigentlich. Denn die beiden Workshoptage waren harte Arbeit, unsere Diskussionen waren zum Teil kontrovers-verwirrend-intensiv und auch kräftezehrend. Wir hatten Spaß beim Arbeiten, keine Frage!  Doch manche hatten das Gefühl, dass wir zwischendurch unseren roten Faden verloren hätten, dass wir unsere Ergebnisse als Gruppe homogener und effizienter hätten erarbeiten können. Irgendwie blieb der Eindruck von einem „echt anstrengenden Entscheidungsfindungsprozess“ hängen – trotz des konstruktiven Workshopklimas, des positiven Miteinanders und des guten Gesamtergebnisses.

In den letzten Tagen habe ich gegrübelt, woran das liegen könnte (als Moderator überlegt man ja immer, was man bei der Workshopbegleitung hätte verbessern könnte) … Waren die Workshop-Vorbereitungen nicht gut genug? Hätten wir inhaltlich vorarbeiten müssen, um schneller und effizienter in der großen Gruppe entscheiden zu können? Oder hätten wir uns weniger Themen vornehmen sollen? War der Teilnehmerkreis zu groß oder nicht gut ausgewählt? Hätten wir die Moderation straffer durchziehen müssen, mehr auf die Einhaltung von durchgängiger Anwesenheit und Timeboxes achten müssen?

Erkenntnis #1: Co-Creation in Reinform

Beim Blick zurück auf dem Teilnehmerkreis wurde mir nochmals bewusst, dass wir an beiden Workshoptagen wirklich crossfunktional-interdisziplinär aufgestellt waren: Vom Geschäftsführer über das mittlere Management und (Senior) Beratern bis zum (Noch)Studenten waren nahezu alle Hierarchiestufen unseres Unternehmens vertreten. Beteiligt waren Mitarbeiter aus dem Consulting (Architekten, Developer, Strategieberater und Change Facilitatoren), Marketing, Sales, Business Development und das Kompetenzmanagement. Wie bei der Workshopplanung erhofft (und wie es Workshopgurus und Facilitatoren so oft predigen) trat eine bunt gemischte Teilnehmergruppe an. Diese vielfältigen und zum Teil auch kontroversen Ideen und Meinungen unter einen Hut zu bringen, um in definierten Zeitboxen gute Ergebnisse zu erzielen, ist – ganz simpel – HARTE ARBEIT. Und zwar nicht nur für den Moderator des Workshops. Sondern für alle Teilnehmer. Alles gut also! Aber warum dann dieser vermeintliche „emotionale Workshop-Hangover“ im Nachgang?

Erkenntnis #2: „groan zone emotions“ waren zu Gast!

Vorgestern blätterte ich – einmal mehr – durch Sam Kaners Buch „Facilitator’s Guide to Participatory Decision-Making“ (ein Facilitator-Klassiker aus dem Jahr 2007). Der dort erläuterte „Diamond of Participatory Decision-Making“ beschreibt genau diese „groan zone“, die wir gemeinsam an diesen beiden Workshoptagen (mehrmals) durchlaufen haben:

Neue Datei 2017-03-15 08.35.48_1

Nach der Phase des „divergent thinking“ – Ideen werden frei gesammelt, die Diskussion öffnet sich, verschiedene Sichtweisen treffen aufeinander – folgt die „groan zone“ (der Wendepunkt), ehe die Workshopgruppe über das „convergent thinking“ – Sortierung, Fokussierung, Priorisierung – zur Entscheidungsfindung kommt. In jeder Phase des Workshops, bei jeder Themenerarbeitung, bei jeder Entscheidungsfindung in der Gruppe spielen – mehr oder weniger bewusst und individuell unterschiedlich erlebt – Emotionen eine große Rolle. Das ist einfach menschlich.

Deshalb war es für mich als Moderator im Nachgang des Workshops wichtig, mir – wieder einmal – in Erinnerung zu rufen: Neben den positiven Emotionen (aus den Phasen des divergent /convergent thinking), gehören die „groan zone emotions“ schlicht ebenfalls zu jedem Workshoperleben dazu. Im besten Fall dauern diese emotionalen Täler nur kurz an, der Workshopmoderator hat diese „groan zones“ fest im Griff und führt die Workshopgruppe dort gut durch. Wenn – wie in unserem Fall – eine sehr heterogene Gruppe (gut für das Gesamtergebnis!) zusammenarbeitet, ist machmal auch die „groan zone“ schlicht heterogener und intensiver spürbar. Grübelei zu Ende.

Fast: „when a discussion loses focus or becomes confusing, it can appear to many people that the process is heading out of control. Yet this is not necessarily what’s really going on. Sometimes what appears to be chaos is actually a prelude to creativity.“ (Kaner et al., 2007, S. 5). Danke, Sam!

 

Veröffentlicht unter OC Inside, Strategy & Methods | Verschlagwortet mit , , , , , , , , , | Kommentar hinterlassen

How to hide passwords and account information in WLST scripts (WebLogic Server)

change_on_install ... an oracle blog

If you are worried about your password showing up in clear text in the startup scripts, you can use the storeUserConfig command to generate encrypted userconfigFile and a userKeyFile that you can then use in the „nmConnect“ and „connect“ command.

Place there two files on the protected place and decide to set right permissions

Create storeUserConfig for the Node Manager

Start wlst via the shell script $ORACLE_HOME/oracle_common/common/bin/wlst.sh:

/u01/app/oracle/product/FMW/Oracle_Home/oracle_common/common/bin/wlst.sh

Ursprünglichen Post anzeigen 173 weitere Wörter

Veröffentlicht unter BPM & System Integration, Uncategorized | Verschlagwortet mit | Kommentar hinterlassen

Augmented Reality mit der HoloLens und was man für die Entwicklung von Hologrammen benötigt.

Mit Microsoft HoloLens ist auch Windows Holographic – eine neue Version des Betriebssystems – vorgestellt worden. Windows Holographic ist ein Derivat von Windows 10, dessen Innovation darin besteht, in einer dreidimensionalen Welt zu interagieren.

HoloLens Hardware

Die Hardware besteht aus der HoloLens, einem Klicker und einem Micro-USB Ladegerät. Das Gewicht der HoloLens beträgt 579 Gramm, was bei nicht allzu langen Einsätzen kaum negativ auffällt. Auf dem Bild rechts ist der HoloLens – Klicker abgebildet, der wie ein Hardware-Button agiert und eine Alternative für die AirTap-Geste darstellt.

Die weiteren Hardware-Specs der HoloLens:

  • Holographic Processing Unit (HPU) Intel 32 Bit Prozessor
  • 2 GB RAM
  • 64 GB Speicher
  • WLAN
  • Bluetooth

Die wichtigsten Komponenten der HoloLens sind jedoch die Kameras. Die HoloLens verfügt über ganze sechs Kameras.

  • 4 Kameras für die Umgebung
  • 1 Tiefen Kamera
  • 1 HD Kamera 2 MP

Weitere Komponenten:

  • 1 Lichtsensor
  • 1 Infrarotsensor
  • 2 Lautsprecher die auf das Ohr gerichtet sind
  • 4 Mikrofone
  • 1 Lagesensor
  • 1 Beschleunigungssensor
  • 2 Displays mit jeweils 4 Schichten für RGGB

Die Kombination aus HPU, den Kameras und zahlreichen Sensoren ermöglichen eine qualitative Interaktion mit den virtuellen Objekten in der realen Welt.

Der Entwicklungsprozess

Für die Entwicklung von HoloLens-Applikationen muss man sich unter anderem mit den folgenden Grundkonzepten beschäftigen:

  • Gaze
    • Blickrichtung, was sehe ich
  • Gesture
    • Gesten, die von der HoloLens erkannt werden können
  • Voice Input
    • Spracherkennung der HoloLens
  • Spatial Sound
    • Eine räumliche Audioquelle ermöglicht die Zuordnung von Sounds zu bestimmten Objekten in der realen Welt
  • Spatial Mapping
    • Orientierung in der realen Welt

Auf Windows Holographic laufen ausschließlich Universal Windows Apps, die auch nur mit Windows 10 64-Bit entwickelt werden können. Hat man die HoloLens nicht zur Hand, kann man den HoloLens Emulator verwenden. Dieser setzt jedoch die Hypervisor-basierte Virtualisierungstechnik voraus.

Auf der HoloLens können 2D- und 3D-Anwendungen deployed werden. Die 2D Anwendungen werden dann als Fenster in einem Raum positioniert, wie das untenstehende Bild veranschaulicht. Beispiele sind etwa der Browser, welcher in greifbarer Nähe am Schreibtisch platziert wird oder das Skype-Hologramm, welches das klassische Schreibtisch-Telefon ersetzt.

Die Entwicklung einer HoloLens Anwendung findet mit der Unity-Engine statt. Da Unity für die Spielindustrie gedacht ist, muss man sich mit deren Konzepten auseinander setzen. Dazu gehört unter anderem der Programmcode, welcher in Unity als Skript bezeichnet wird. Skripte lassen sich in Visual Studio importieren und werden in der Programmiersprache C# geschrieben. Darüber hinaus besteht die Möglichkeit, C++ als Programmiersprache zu nutzen.

Open Source wird auch vom MS HoloLens-Team praktiziert. MS stellt Hilfsmittel in einem HoloToolkit zu Verfügung, welches Skripte und Assets enthält, die in der Entwicklung mit Unity unterstützend wirken. Die HoloToolkit-Sammlung ist auf GitHub unter https://github.com/Microsoft/HoloToolkit-Unity zu finden.

Der Entwicklungsprozess einer HoloLens-Anwendung besteht aus mehreren Stufen. Als erstes werden in Unity die 3D-Objekte erstellt und mit Skripten versehen. Ist die 3D Welt modelliert, wird das Projekt mit der Option Virtual Reality Supported in Visual Studio importiert und die Skripte in C# programmiert. Der Programmcode wird dann als UWP-Anwendung auf der HoloLens deployed. Da HoloLens auf Windows 10 basiert, kann die Anwendung wie eine klassische App in der HoloLens gestartet werden.

Auf dem ersten Blick scheint die Entwicklung einer UWP-Anwendung mit Hologrammen – also den 3D-Objekten – relativ einfach zu sein. Doch in der Praxis ist die Entwicklung virtueller Objekte und die Verbindung dieser mit der realen Welt kompliziert und fordert etwas mehr Entwicklungszeit. Sollten die individuellen 3D-Objekte nicht zu Verfügung stehen, müssen diese erst modelliert werden. Erst dann können diese Objekte in einer HoloLens-Anwendung als Hologramm dargestellt werden.

Veröffentlicht unter Cloud & Infrastructure, IoT & Industry 4.0, Software Engineering | Verschlagwortet mit , , , , , | Kommentar hinterlassen

Fit for Agile: Die Retrospektive

Die Retrospektive gilt als das mächtigste und zugleich anspruchsvollste Werkzeug der Scrum Meetings. Aber auch in klassisch aufgestellten Projekten und Linieneinheiten kann sie den kontinuierlichen Verbesserungsprozess in der Zusammenarbeit und Vorgehensweise bereichern. Nur, wie macht man sowas?

Um diese Frage zu beantworten, hat unser Competence Center Agile Softwareentwicklung zusammen mit dem OPITZ CONSULTING Marketing-Team ein Poster zum Thema Retrospektive entwickelt. Es enthält nicht nur die wichtigsten Grundlagen für den gelungenen Aufbau und die Wahl der Teilnehmer sondern zudem hilfreiche Tipps und Tricks, die einen solchen Termin zum Erfolg werden lassen.
Das übersichtlich gestaltete Poster erklärt die Grundprinzipien, bietet zu jeder der fünf Phasen einer Retrospektive inspirierende Ideen, benennt typische Fehler und liefert Best Practices für die Vor- und Nachbereitung.

Und das Beste ist: Es steckt nicht nur voller Informationen sondern ist dazu auch noch ein Hingucker in jedem Teamraum!

Als PDF ist das Poster auf unserer Homepage zu finden. Das Printexemplar kann bei unserem Marketing-Team per Kontaktformular bestellt werden.

Das Competence Center Agile Softwareentwicklung wünscht allen viel Spaß und Erfolg für die nächsten Retrospektiven.

Veröffentlicht unter News, Strategy & Methods | Kommentar hinterlassen

Some Jenkins Magic

The last days I worked on an automated Jenkins installation for a customer with Ansible. The plain installation was pretty easy. I followed the Ansible Role (jenkins-role) provided by Jeff Geerling. Jeff Geerling is also the author of the great book Ansible for DevOps

In addition to this plain installation I had some other requirements for the automatic installation.

  • Enable security so that no actions are permitted without login
  • Create two kinds of security credentials. One username password credential for authentication against a subversion repository and an ssh keybased credential for Ansible connection on the target hosts.
  • Create a seed job which creates all our deployment jobs.

Enable Security

First of all I permit all actions without login. Jenkins runs all groovy scripts found in {{ jenkins_home }}/init.groovy.d/

The following script creates a new user and activates matrix-based project security. For matrix-based security you need the Matrix Authorization Strategy Plugin:

#!groovy
import hudson.*
import hudson.security.*
import jenkins.model.*

def instance = Jenkins.getInstance()

println "--> Checking if security has been set already"

if (!instance.isUseSecurity()) {
    println "--> creating local user 'admin'"

    // with new HudsonPrivateSecurityRealm(true) self registration for new Users is enabled
    def hudsonRealm = new HudsonPrivateSecurityRealm(false)
    hudsonRealm.createAccount('{{ jenkins_admin_username }}', '{{ jenkins_admin_password }}')
    instance.setSecurityRealm(hudsonRealm)

    def strategy = new ProjectMatrixAuthorizationStrategy()
    strategy.add(instance.ADMINISTER, "{{ jenkins_admin_username }}")
    // enables global read to anonymous
    strategy.add(Permission.READ, instance.ANONYMOUS.getName())
    // activates read permission to complete Jenkins instance to authenticated users
    strategy.add(instance.READ, "authenticated")
    instance.setAuthorizationStrategy(strategy)
    instance.save()
}

Creating Credentials

For creating the credentials I used the Jenkins Rest-Interface. To create a ssh key-based credential the following request can be used:

curl -X POST 'http://{{ jenkins_admin_username }}:{{ jenkins_admin_password }}@{{ jenkins_hostname }}:{{ jenkins_http_port }}/credentials/store/system/domain/_/createCredentials' \
--data-urlencode 'json={
  "": "0",
  "credentials": {
    "scope": "GLOBAL",
    "id": "ssh-credentials",
    "username": "key-user",
    "password": "",
    "description": "",
    "privateKeySource": {
      "stapler-class": "com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey$FileOnMasterPrivateKeySource",
      "privateKeyFile": "/home/{{ jenkins_user }}/id_rsa"
    },
    "$class": "com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey"
  }
}

If folders are used and the credential is for a specific folder the url must be changed into something like this:

http://{{ jenkins_admin_username }}:{{ jenkins_admin_password }}@{{ jenkins_hostname }}:{{ jenkins_http_port }}/job/{{ folder }}/job/{{ subfolder }}/credentials/store/folder/domain/_/</pre>

The creation of a username password credentials is very similar:

curl -X POST 'http://{{ jenkins_admin_username }}:{{ jenkins_admin_password }}@{{ jenkins_hostname }}:{{ jenkins_http_port }}/credentials/store/system/domain/_/createCredentials' \
    --data-urlencode 'json={
      "": "0",
      "credentials": {
        "scope": "GLOBAL",
        "id": "svn-credentials",
        "username": "user",
        "password": "",
        "$class": "com.cloudbees.plugins.credentials.impl.UsernamePasswordCredentialsImpl"
      }
    }

Create Seed Job

For creating the seed job I created the job on another Jenkins instance and extracted the job.xml. This can be done by using the cli.

java -jar jenkins-cli.jar -s http://{{ jenkins_hostname }}:{{ jenkins_http_port }}/ get-job JOB

Or copying the job.xml from the filesystem.

This job.xml can now be used to create the Job on the new Jenkins installation with the cli.

cat seed-job.xml | java -jar {{ jenkins_jar_location }} -s http://{{ jenkins_hostname }}:{{ jenkins_http_port }}/
create-job seed-job
--username {{ jenkins_admin_username }}
--password {{ jenkins_admin_password }}

Conclusion

Based on the initial Jenkins Role provides by Jeff Geerling it was realy time consuming to find out how these three Tasks can be achieved. It feel like magic when it works on the end of the day. I hope this would help some people saving time when it comes to automatic Jenkins installations.

Veröffentlicht unter Cloud & Infrastructure, Software Engineering | Verschlagwortet mit | Kommentar hinterlassen

Scripted Fields in the Elastic-Stack

Right now the Elastic-Stack (also known as ELK-Stack) is an increasingly used tool to realize BI- and Big-Data projects covering the whole challenges from the ETL-process to the graphical visualization. In one of our projects at the “Digitallab” OC|Lab we were analyzing Logfiles, trying to improve the readability of the logs and gathering new knowledge within the data. For these tasks we used the powerful Stack.

The Stack is divided in three parts: Logstash, Elasticsearch and Kibana. Briefly summarized Logstash extracts data from various sources, transforms it by defined business rules and sends it to Elasticsearch. The Clusterstorage provides extremely fast and multi-purpose searching. Among others this is possible due to the scalable architecture. Kibana is the frontend of the Stack and is responsible for the visualization of data.

The Elastic website offers complex, in-depth explanations about Scripted Fields. However, the hints Kibana shows while creating a scripted field are very helpful and much easier to understand. An example would be the calculation of the characteristic factor “Sells per [timeunit]”. With this tool you simply have to create a new Scripted Field and write the following Code:

scriptedfields1

This script now calculates the sells per minute if needed. Of course you can do more challenging operations. For those you will need the language “painless” (same Syntax as Groovy) in order to access multiple fields and apply logic on top. Furthermore you can import plugins to create Scripted Fields with JavaScript or Python. Another sample:

scriptedfields2

If you’re interested in learning more about Scripted Fields: https://www.elastic.co/guide/en/elasticsearch/reference/5.2/modules-scripting.html

Veröffentlicht unter Analytics & BigData | Verschlagwortet mit , , | Kommentar hinterlassen