code it

Martins Tech Blog

SourceTree und 'ssh-agent' ist fehlgeschlagen mit Code -1: System.NullReferenceException

Seit ich Git als SCM benutze, verwende ich auch SourceTree, um mir das Ganze etwas grafischer darstellen zu lassen. Bisher war ich auch ziemlich zufrieden und glücklich damit.

Aber dann kam das Update auf Version 1.8 und es änderte sich einiges. Neben der Änderung der Nutzungsbedingungen, die zwar im Blog deutlich hervorgehoben, aber irgendwie im Installationsprozess für mich nicht ersichtlich war, trat seitdem bei jedem Start von SourceTree folgender Fehler auf:

'ssh-agent' ist fehlgeschlagen mit Code -1: System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
()
Ich brauche wohl nicht zu erwähnen, dass es mit der Vorversion problemlos ging.

Mein Lösungsweg:
a) das System-Git mal wieder auf einen aktuellen Stand bringen
und
b) im SourceTree unter Tools ⇨ Optionen ⇨ Git auf den Button "Benutze System Git" klicken

Schon werde ich wieder nach meinem Kennwort für den SSH-Key gefragt und alles läuft wie vorher.

Playlist erstellen für PlayPoster von OOSM

Nachdem ich in meinem letzten Post geschrieben habe, wie man PlayPoster in Betrieb nimmt, soll es heute darum gehen, meine Anwendungsfälle mal abzubilden. Dazu erstelle ich im Admin-Portal eine Playlist und befülle diese mit Inhalten.

Das Admin Portal kommt sehr übersichtlich daher und alle wichtigen Menüpunkte sind per Direktlink verfügbar. Nun ein paar Worte zur Struktur: Ein PlayPoster Stick (= Unit) gehört zu einer Gruppe (= Location). Einer Location und damit allen darin enthaltenen Devices können Playlists zugeordnet werden, die entweder ganztägig, morgens, mittags oder abends aktiv sein können. Eine Playlist selbst ist eine Reihenfolge von Bausteinen, die im Editor erstellt oder bearbeitet werden können. In einigen Bausteinen werden Bilder benötigt (oder sind zumindest sinnvoll). Diese liegen unter Files.
Logo Baustein erzeugen
Ein recht simpler Baustein ist der Bildbaustein in dem einfach eine bestimmte Zeit lang ein Bild angezeigt wird. Dieser Baustein ist auch bereits in der Standard-Playlist mit der das Gerät ausgeliefert wird enthalten. Wie erzeugt man nun selbst einen solchen Baustein? Ganz einfach: Dazu legt man einfach in der Menüleiste ein Bild per Drag&Drop ab und definiert im anschließend erscheinenden Dialog noch die Anzeigedauer (diese ist immer im Format mm:ss).

Externe Webseite einbinden
In meinem vorigen Post habe ich ja als Use-Case angegeben, dass ich den Ticketstatus (bei uns aus dem Redmine) und den Status des Build- und Testsystems (bei uns Jenkins) anzeigen will. Dafür gibt es natürlich keine vorgefertigten Bausteine. Aber wozu bin ich Entwickler? Ich kann ja auf einem unserer Rechner noch einen Webserver laufen lassen, der die Daten nach meinen Wünschen aggregiert und anzeigt. Diese Webseite kann ich dann anzeigen lassen. Dazu erstelle ich unter Editor einfach einen neuen Baustein, weise das Template "External Page" zu und gebe die Url an, die angezeigt werden soll und auch wieder die Anzeigedauer. Die Url muss aus Sicht des Sticks angegeben werden - ich kann also auch lokale Urls verwenden. Die Vorschau im Browser funktioniert technisch bedingt nicht, wenn ich mich beim editieren nicht im gleichen Netz wie der Stick befinde und die Webseite für mich dann nicht erreichbar ist oder wenn meine Url eine http-Url ist (da das Portal https ist und der Browser unsichere Elemente in blockiert). Auf dem Device funktioniert es dann aber.

Tweets anzeigen
Ähnlich einfach ist die Anzeige von Tweets. Dazu verwendet man den Baustein "Twitter" und gibt den Hashtag oder die Person an der man folgen will. Innerhalb der definierten Anzeigedauer wird dann alle paar Sekunden durch die so gefilterten Tweets gewechselt. Da sowohl Schriftfarbe als auch Standard-Hintergrund weiß sind, ist es bei diesem Baustein wichtig, dass man im Editor das Hintergrundbild definiert. Dazu lädt man einfach im Vorab über Files ein Bild in der Hintergrundfarbe seiner Wahl hoch und setzt es im Baustein als Hintergrund.

Statische Texte
Zur Anzeige statischer Texte gibt es verschiedene Templates. Ich verwende dazu in der Regel eines der "Pricelist" Templates, da ich oft eine tabellarische Ansicht brauche (z.B. für die Ankündigung von Community Events). 

Playlist erstellen
Nun da ich alle Bausteine erstelle habe, muss ich nur noch eine Playlist aus diesen erstellen. Dazu wechsle ich unter Playlists und ziehe mir per Drag&Drop die Bausteine in der gewünschten Reihenfolge in meine Timeline und speichere die Playlist ab. 
Wenn ich mir noch aussuche wann und wo die Playlist gespielt werden soll, wird sie auch gleich auf die anhand der Location gewählten Devices gepusht und dort direkt angezeigt.

Ein komplettes Tutorial gibt es auf der OOSM Support Seite

Digital Signage mit PlayPoster von OOSM

Wer hat sie noch nicht gesehen - die Werbemonitore in den Geschäften, die Info-Screens bei Veranstaltungen. Digitale Schilder oder auch Digital Signage sind beim Marketing nicht mehr wegzudenken. 

Auch bei uns im Büro sollte so ein Screen her. Weihnachten war es dann so weit - im Büro stand ein nagelneuer Fernseher, der auch schnell recht professionell an der Wand hing. Doch wie geht's dann weiter? Ok, für ein paar statische Inhalte funktioniert das recht gut - USB-Stick angeschlossen und schon kann eine Slideshow von Bildern angezeigt werden. Aber das war's dann auch schon.

Unser Screen soll nicht nur Marketingfunktionen erfüllen, sondern ich möchte dort auch nützliche Informationen für die Mitarbeiter anzeigen und diese sind nur dann wirklich nützlich, wenn sie dynamisch erzeugt werden. Wir sind ein Unternehmen, das Software herstellt. Also was sind denn nützliche Informationen? Ich denke hier an:
  • den aktuellen Projektstatus (also das Sprint- oder Projekt-Burndown)
  • den Status des Buildsystems (welche Builds laufen gerade; gibt es irgendwo Builderrors oder fehlgeschlagene Tests)
  • Informationen zum Unternehmen oder zur Abteilung
  • Informationen zu Community-Events
  • Informationen aus sozialen Medien (z.B. einen Twitter-Feed)
Das alles lässt sich mit der statischen Dia-Show die der Fernseher mitbringt nicht lösen. Da muss etwas anderes her.

Im Frühsommer letzten Jahres war ich in Amsterdam zu einem Startup-Event und habe dort die Köpfe eines Unternehmens kennengelernt, die genau so eine Digital Signage Lösung herstellen: OOSM (sprich: awsome) mit Ihrem Produkt PlayPoster. In den Gesprächen mit dem CEO Peter Bruner stellte sich heraus, dass der Stick von OOSM vermutlich genau die einfache Lösung ist, die wir brauchen.

Also habe ich einen Stick bestellt. Nach wenigen Tagen war der dann auch in meinem Briefkasten. Die Installation ist denkbar einfach und in 3 Schritten erledigt: 
  • Stick auspacken und an Stromversorgung und HDMI-Port des Bildschirms anschließen
  • WLAN-Credentials eingeben (dafür braucht man mal kurzzeitig eine USB-Maus)
  • Stick kurz vom Stromnetz nehmen, damit er rebootet
Das war's auch schon. Ab jetzt öffnet sich bei jedem Boot automatisch die vorinstallierte App und zeigt die definierten Inhalte an.

Da kommen wir auch schon zum nächsten Punkt: Definieren der Inhalte. Denn ich wollte ja statische und dynamische Inhalte darstellen.

Bei der Bestellung erhält man Credentials zum Admin-Portal von OOSM. Dort definiert man sogenannte Playlists, die man einer Gruppe von Devices zuordnen kann - also ein Device ist in einer Gruppe; eine Gruppe hat eine oder mehrere aktive Playlists (ganztägig oder für einen bestimmten Zeitraum); eine Playlist besteht aus Bausteinen, für die eine Reihenfolge definiert wird. Wie das genau geht, erkläre ich in einem späteren Post.

Digital Signage Lösungen gibt es viele am Markt, deswegen hier neben dem persönlichen Kontakt zum Entwicklerteam noch ein paar Hard-Facts für die Entscheidung für PlayPoster. 

Einfache Installation mit vorhandener Hardware (+)
Es muss ja nicht immer der neue TV sein - wir alle haben igendwelche alten Monitore herumstehen, die wir nicht mehr brauchen und die super für Digital Signage geeignet sind. Einfach den Stick anschließen, WLAN einrichten, fertig. Und der Stick ist mit Abmessungen von 85 x 30 x 10 Millimeter wirklich nicht groß.

Cloudbasierte Definition (+)
Ich kann von zu Hause oder von unterwegs steuern, was auf meinen Screens im Office wann angezeigt wird.

Niedrige Kosten (+)
Die Anschaffungskosten sind vergleichsweise sehr gering - andere Digital Signage Produkte kosten über 100 Euro pro Device, die aktuellen Kosten (Stand Januar 2016) des PlayPoster Sticks sind 59 Euro einmalig ohne weitere nutzungsbasierte Zahlungen.

Betaphase (+/-)
Das System ist noch in der Betaphase. Man stolpert also noch manchmal im Admin-Portal über Punkte die von der User Experience noch nicht optimal sind, aber das Entwicklerteam freut sich über Feedback und behebt Bugs (wenn man welche findet) super schnell.

Viele vordefinierte Templates (+)
Für die Bausteine gibt es vordefinierte Templates, die schon viele Anwendungsgebiete abdecken:
  • statisches Bild (also quasi wie Diashow)
  • externe Webseite (z.B. für unsere Systemstatus-Anzeigen)
  • Tweets (anhand Hashtag oder Person)
  • RSS-Feed
  • Gimmicks wie Uhr, Horoskop, Wetter
  • verschieden gelayoutete Bild-/Text-Screens (Preisliste, Bild mit Text)

Nur FullHD (-)
Der Stick in seiner aktuellen Konfiguration unterstützt lediglich FullHD und noch kein 4K. Für uns reicht das im Moment. Nach der Aussage von OOSM soll die nächste Generation aber definitiv 4K-fähig sein.

Damit genug zum Thema Installation. In meinem nächsten Post zeige ich, wie ich meine Playlist für PlayPoster zusammenbaue.

Ein Wochenende beim Developer Open Space

An diesem Wochenende war ich beim Developer Open Space in Leipzig, der nun schon einige Male dort stattgefunden hat. Leider konnte ich auch dieses Jahr aus Zeitgründen nicht an den wirklich interessanten Workshops am Freitag teilnehmen, aber Samstag und Sonntag war ich vor Ort. 

Das Konzept ist recht einfach: Versammle eine Menge Entwickler und gib ihnen den Freiraum, selbst Themen zu bestimmen über die sie reden wollen. Was initial mal als .NET Open Space gestartet ist, hat sich in den letzten Jahren von der Technologie entfernt. Und so kommt es, dass inzwischen auch Entwickler mit dabei sind, die in anderen Technologien zu Hause sind, wie Java, Ruby, JavaScript und so weiter.

Welche Themen waren für mich interessant? Nun ja, dadurch, dass ich mich auch beruflich mit IoT beschäftige, fand ich die Wearables und Smarthome-Sessions sehr spannend. Als Freelancer/Geschäftsführer auch sehr interessant war die anschließende Session bei der es darum ging, gescheiterte Projekte zu analysieren und die Meinungen anderer zu hören, wie sie und auch ihre Auftraggeber damit umgehen. Leider war die Event Storming Session parallel, so dass ich bei dieser nicht dabei sein konnte. Weil auch wir oftmals vor Technologieentscheidungen stehen, besuchte ich anschließend die Session zum Thema NoSql vs. RDBMS in der diskutiert wurde, wann man welche Technologie sinnvollerweise einsetzt. Die für mich letzte Session des Tages hielt ich mit einigen Usergroup-Leads gemeinsam, in der wir zeigten, wie wir die Seite der .NET Usergroup Dresden aufgebaut haben (Jekyll auf Github). Es folgten noch zwei weitere Slots, aber die Zeit habe ich eher für entspannte Gespräche auf dem Hof genutzt. Der Abend endete dann in entspannter Atmosphäre und durchaus auch lustigen Gesprächen im Pub.

Der Sonntag lief recht ähnlich ab: interessante Sessions, spannende Gespräche in den Pausen oder nebenher. 


Es war für mich wieder ein Erlebnis, mit den ganzen Leuten quer aus dem DACH-Raum fachsimpeln und Gedanken austauschen zu können. Und auch wenn ich eher Technologie oder Management-Sessions besucht habe, so gab es auch dieses Jahr wieder Sessions zu Softskill und Psychologie - es ist also für jeden etwas dabei. Und mit 200 Anmeldungen zählt dieser Event nun schon zu den größeren Konferenzen.

Facebook zeigt falschen Vorschau-Content an

In der letzten Woche war mir aufgefallen, dass bei einer meiner Seiten der falsche Inhalt in der Vorschau angezeigt wurde. Das Problem hatte mehrere Ursachen.

1. IPv6
Das erste Problem ließ sich recht einfach lösen: Ich hatte in der Domain-Konfiguration noch einen AAAA-Record auf die IPv6  des Hosters gesetzt. Offenbar versucht Facebook einen Zugriff über IPv6 durchzuführen. Damit kam der Inhalt der Vorgabeseite des Hosters und damit auch ein hübsches rotes Verkehrszeichen als Bild, was mit meiner Webseite nun so überhaupt nichts zu tun hat.

2. Cache
Nun wurde es aber spannend. Die IP-Zuordnung war korrekt und trotzdem wurde noch der alte Inhalt angezeigt. Problem 2 ist, dass Facebook die Inhalte cacht. Das ist natürlich nur dann ein Problem, wenn man die Inhalte ändert. Glücklicherweise gibt es von Facebook ein Tool (das eigentlich einen anderen Zweck hat), aber hier sehr hilfreich ist - der Open Graph Object Debugger. Hier kann man die Url eingeben und sich ansehen, was Facebook daraus ausliest zum Erzeugen der Vorschau. Und man kann hier auch erzwingen, dass die Daten neu abgerufen werden.

3. Bilder
Letztes Problem bei mir waren Bilder. Auf vielen Webseiten ist es gerade üblich, im Header einen Slider mit Bildern zu haben. Diese Bilder findet auch der Crawler und möchte in der Vorschau eine Galerie anzeigen. Das ist aber nicht immer gewünscht. Nun kann man mit Meta-Informationen ein bestimmtes Bild erzwingen. Der entsprechende Metatag ist:

<meta property="og:image" content="http://komplette.url/zum/bild.jpg" />

Wichtig zu beachten: Das Bild muss mindestens 200 x 200 Pixel groß sein. Und: Größe und Seitenverhältnis definieren, ob das Vorschaubild links neben den anderen Metainformationen angezeigt wird (quadratisches Bild) oder ob sich das Bild über die komplette Breite des Posts zieht.

REST-Services mit SOAPUI testen

Schon in Zeiten von SOAP-Webservices war SOAPUI ein gutes Tool für funktionale Tests der Schnittstelle. Besonders im .NET-Framework, das es dem Entwickler so einfach wie möglich macht, indem Proxies angelegt werden und gleich die große Deserialisierungsmaschinerie anspringt, ist es durchaus an einigen Stellen sinnvoll, überprüfen zu können was genau an Markup über die Leitung geschickt wird und wenn Kommunikation oder Deserialisierung fehlschlagen.

Auch bei rest-basierten Services kann das an vielen Stellen sinnvoll sein. In meinem aktuellen Beispiel verwende ich einen REST-Service eines Drittanbieters von einem Android-Phone aus. Leider ist der Service des Anbieters noch in der Entwicklung und die Schnittstelle ändert sich gelegentlich. In meinem Fall gab es ein Serialisierungsproblem auf Anbieterseite - so wurden Objekte an einem Endpunkt, der eine Liste zurückgeben sollte nicht immer als Objektliste serialisiert, was dann natürlich bei der Deserialisierung zu argen Problemen führt. Dafür habe ich mir mit SOAPUI einen Test geschrieben.

Gehen wir von folgendem Szenario aus: Es gibt einen Endpunkt, der JSON zurückgibt. Laut Schnittstellen-Definition handelt es sich dabei um eine Liste von Personendaten. Leider ist es bei der Implementierung zu einem Fehler gekommen so dass nicht immer eine Liste zurückgegeben wird. Ein entsprechendes fehlerhaftes Beispiel ist in .NET schnell erstellt.
public class SampleController : Controller
{
    public JsonResult GetAll()
    {
        var persons = new PersonRepository().GetAll();
        if (persons.Count == 1)
        {
            return this.Json(persons[0], JsonRequestBehavior.AllowGet);
        }

        return this.Json(persons, JsonRequestBehavior.AllowGet);
    }
}

Nun zum eigentlichen Punkt - der Test. Ein Projekt in SOAPUI ist schnell erstellt.

Basierend auf diesem Request kann nun mit Hilfe des entsprechenden Kontextmenü-Eintrags ein neuer Test erzeugt werden.


Nun müssen nur noch Assertations festgelegt werden. Das kann im entsprechenden Tab erledigt werden.
Meine erste Assertation ist, dass Statuscode 200 zurückkommt.

Basierend auf den Eingabeparametern (die es in meinem Beispiel nicht gibt) könnte man auch auf andere Statuscodes prüfen - z.B. 401 (Unauthorized) oder 409 (Conflict) usw.

Prüfung 2 ist, ob wir eine Liste zurückbekommen, die den Anforderungen entspricht. Das macht man am besten scriptgesteuert. SOAPUI greift dazu auf Groovy-Scripte zurück:

Ein Script könnte so aussehen:
import groovy.json.JsonSlurper 

def response = messageExchange.response.responseContent
def slurper = new JsonSlurper()
def json = slurper.parseText response

List persons = (List) json;
assert !(persons.isEmpty())
persons.each{
	assert it.LastName != null
	assert it.FirstName != null
}
So kann man nun feststellen, ob das Ergebnis stimmt oder eben nicht. Bekomme ich statt der erwarteten Liste nur ein Objekt zurück, schlägt hier der Cast fehl.

Diese Tests kann man nun einzeln oder im Kommandozeilen-Testrunner ausführen und so automatisiert feststellen, ob das Backend tut was es tun soll.

Rückblick auf das MobileCamp 2014 - der Sonntag

Tag 2
Auch der zweiten Tag begann mit einer Keynote und diese war besonders interessant und kurzweilig. Zwei Google Glass zum selber ausprobieren und ein Xiaomi zum ausprobieren der chinesischen Konkurrenz für westliche Mobiltelefonhersteller waren der perfekte Auftakt für den Tag. Und ganz besonders spannend: Den ganzen Tag lang konnten Interessierte die Hardware ausprobieren.

Im Anschluss daran widmete ich mich einer Session betitelt mit "Meetings verbessern" und es war interessant herauszufinden wie andere mit Fokussierungsproblemen in Meetings umgehen, denn wer kennt sie nicht ergebnislose Meetings oder Marathonmeetings.

Und nun: ein Mittagessen zugeschnitten auf Entwickler: Pizza und Mate. Der schiefe Turm von Pizza(schachteln) hat es übrigens nach dem Foto nicht mehr lange ausgehalten.

Nach dem Mittag wieder ganz spannend für mich das Thema Open Source Compliance. Wie verhindere ich Copyleft-Effekte im Business Umfeld, welche Lizenzen sind verwendbar, wenn man Business-Anwendungen schreibt, die nicht OpenSource sein dürfen. Es gab viele Tipps, wie man gut durch den Lizenzdschungel kommt und mit vielen praktischen Tipps aus dem juritischen Alltag.

Die letzte themenbezogene Session war für mich Crowdfunding für mobile Apps und hat für mich etwas Licht ins Dickicht gebracht. Dachte ich bisher immer an Crowdinvesting und was es dabei alles zu beachten gibt, so bietet Crowdfunding eine ganz andere Perspektive. Und ganz wichtig dabei auch das Herangehen an so einen Funding-Prozess aus Unternehmenssicht. Es war gut, dass so viele dabei waren, die direkt aus der Praxis mitreden konnten, weil sie den Prozess bei Unternehmen schon begleitet haben und wussten was genau relevante Punkte sind.

Für alle, die sich etwas näher mit einem der Themen an denen ich teilgenommen hab oder auch an anderen beschäftigen wollen: unter http://lanyrd.com/cxdcb findet sich ein Großteil der Präsentationen und Unterlagen, die Grundlage für die Sessions waren.

Zu vielen Zeitpunkten wäre ich gern in mehreren Sessions parallel gewesen, einfach weil es so interessante Themen gab.

Ich kann diese Konferenz einfach nur jedem empfehlen, der auch nur im entferntesten etwas mit Mobile zu tun hat.

Noch einmal vielen Dank und im nächsten Jahr bin ich gern wieder mit dabei.

Rückblick auf das MobileCamp 2014 - der Samstag

Ein spannendes Wochenende geht vorbei und nach einiger Abstinenz vom Bloggen möchte ich genau das zum Anlass für einen Blogpost nehmen. Auch wenn im Vorfeld viele Teilnehmer unterschiedliche Angaben dazu gemacht haben - ja, es ist inzwischen schon das 6. MobileCamp, wie man dann unschwer am Tshirt erkennen konnte. Und mit einem Besucherrekord von knapp 300 Teilnehmern von denen überraschenderweise noch immer die Mehrzahl direkt aus Dresden und Ostsachsen kam, konnten Maßstäbe gesetzt werden. 

Thematisch richtet sich dieses Barcamp sowohl an Entwickler als auch an Designer, Grafiker, Rechtsexperten, Projektmanager, Vertriebler - eben alle, die sich mit der Thematik Mobile auseinandersetzen. Trotzdem war der Anteil an Nicht-Entwicklern relativ gering.

Für mich war es das dritte Mal, dass ich beim MobileCamp dabei war und was soll ich sagen: es hat sich gelohnt. An dieser Stelle vielen Dank an die Veranstalter und die anderen Sponsoren die die Veranstaltung, die das Barcamp erst möglich machen. Und wer sich wegen der Formulierung fragt: Ja,dieses Jahr waren wir mit unter den Sponsoren.

Nun aber zum spannenden Teil....

Tag 1
Der Tag beginnt mit einer großen Vorstellungsrunde (wer bin ich, was mache ich und warum bin ich hier), was bei der Anzahl der Teilnehmer schon mal eine ganze Weile in Anspruch nimmt. Im Anschluss daran - wie bei jedem Barcamp - Sessionfindung und Raumplanung. Ganz interessant - dieses Jahr gab es sowohl am ersten als auch am zweiten Tag eine Keynote, was eigentlich barcampunüblich ist. 

Die Keynote am ersten Tag drehte sich rund um das Thema Firefox OS. Und viele Aspekte waren doch sehr bekannt von anderen Plattformen, denn alles ist eine App. Sehr beruhigend ist, dass die Mozilla-Entwicklergemeinde wohl aus den Fehlern anderer Hersteller gelernt haben und an "Features" wie Markieren und Copy&Paste schon in der ersten Version denken.

In der zweiten Session des Tages drehte es sich für mich rund um das Thema Gamification und es war für mich sehr spannend einen Einblick in die wissenschaftlichen Hintergründe zu bekommen und das auf einem gut verständlichen und High-Level Weg. 

Nach der Mittagspause in der es (typisch ostdeutsch) Soljanka aus der Gulaschkanone gab

Im Anschluss daran stand ich das erste Mal vor der Qual der Wahl: Unity und Game Erstellung oder App Marketing. Als jemand mit BWL-Herz, landete ich in der App-Marketing Session die anhand eines aktuellen Beispiels und damit natürlich auch mit etwas Eigenmarketing der Session-Ownerin sehr interessante Aspekte aufzeigte.

Im Anschluss daran schaffte es Torsten mit einer Session zum Thema Psychologie die Hälfte der Teilnehmer in seinen Bann zu ziehen. Da ich vom  letzten den Developer Open Space aber schon einen Eindruck gewinnen konnte was er da erzählen wird, zog es mich eher zu einer Session die sich thematisch mit rechtlichen Neuerungen im eCommerce beschäftigt. Auch wenn ich aktuell noch keinen Onlineshop betreue und es mich deswegen nur am Rande betrifft, war es doch sehr spannend, zu diskutieren, was da ab Mitte Juni ansteht und wie Shopbetreiber damit umgehen müssen.

Die vorletzte Session des Tages war für mich zwar interessant, aber ohne direkte Anwendungsmöglichkeit: Haitech - wie steuere ich die Fernbedienung eines Spielzeugs fern, um schlechtes UX des Spieleherstellers zu umgehen. Es war spannend, was man mit ein paar Transistoren und Widerständen und ein klein wenig Programmierung erreichen kann, aber ich habe gemerkt dass ich bisher doch zu selten einen Lötkolben in der Hand hatte als dass ich das direkt machen würde. Glücklicherweise sind genug Ingenieure in meinem Bekanntenkreis.

17 Uhr - die letzte Session des Tages beginnt. Für mich Gamification Teil 2 - dieses mal ein Deep Dive in die wissenschaftlichen Ansätze - sehr sehr spannend, jedoch in Anbetracht der Uhrzeit hatte ich doch gelegentlich Schwierigkeiten, dem Ganzen mit "hier ist noch eine Grafik, die zeigt folgendes" und "ich hab hier eine Tabelle in der wird dargestellt, dass ... " zu folgen.

Den krönenden Abschluss des Tages gab es wie jedes Jahr im Citybeach Dresden und auch wie jedes Jahr bei Regen - Traditionen soll man beibehalten.

Entwickler erobern Leipzig

Jedes Jahr im Oktober gibt es in Leipzig eine Invasion von Entwicklern. Was als Event für .NET Entwickler begann wurde dieses Jahr konzeptionell etwas erweitert und hat nun den Namen Developer OpenSpace. So richtig hat sich mir die Notwendigkeit dieser Änderung noch nicht erschlossen, schließlich war es auch bisher schon so, dass sich immer auch Sessions zu eher .NET-fremden Themen oder sagen wir mal besser Randthemen aus dem Blickwinkel eines .NET Entwicklers gefunden haben. Das ist auch ganz gut - ergibt sich so doch der ein oder andere Blick über den Tellerrand. Und es schadet auf keinen Fall, mal was von Java oder Ruby gesehen zu haben. Ich persönlich sehe dieses Wochenende immer wieder als gute Gelegenheit für einen Austausch über Erfahrungen oder um neue Ideen oder Denkanstöße zu bekommen. Mehr...

Als Sprecher bei der .NET Usergroup Dresden

Im Grunde war es ein Heimspiel. Beim letzten Treffen der .NET Usergroup Dresden vor gut einer Woche war ich dort mal wieder zur Abwechslung als Sprecher.

Thematisch ging es dabei eher um ein Randgebiet für .NET Entwickler. Gemeinsam mit Matthias Wendt widmeten wir den Abend dem SQL Server 2012. Während Matthias das Thema Datenqualität und die in dieser Version neu hinzugekommenen Data Quality Services näher beleuchtete und anhand von Beispielen erklärte, ging ich auf Neuerungen in TSQL ein und zeigte anhand von Vorher-Nachher-Statements, ob und wo sich hier Vereinfachungen ergeben.

Es war ein sehr spannender Abend und anhand der doch recht großen Teilnehmerzahl von über 15 die auch den Abend mit aktivem Mitmachen und Rückfragen bereichert haben war eindeutig erkennbar, dass es auch noch .NET-Entwickler gibt, die sich um Datenspeicherung kümmern und nicht nur im Frontend unterwegs sind.

Englische Version Englische Version