Application Insights für Desktop Anwendungen (WPF + WinForms)

Windows Azure bietet mit Application Insights eine einfache Möglichkeit Telemetriedaten für Desktop-Anwendungen und Dienste zu sammeln. Diese Daten können unter anderem Aufschluss darüber geben, wie oft welche Funktionalität in der Anwendung verwendet wird, wie viele Benutzer zu welchen Zeiten die Anwendung verwenden, wie häufig die Anwendung abstürzt oder wie häufig Exceptions auftreten. Das Sammeln dieser Informationen kann z.B. zur Verbesserung der Anwendung beitragen, in dem z.B. häufig verwendete Funktionen schneller und einfacher für den Anwender zugängig gemacht werden. So könnten solche Funktionalitäten im Ribbon nach links oder im Kontextmenu nach oben wandern. Unter https://azure.microsoft.com/en-us/documentation/articles/app-insights-windows-Desktop/ findet man eine sehr gute Anleitung. Etwas verwirrend ist leider die Tatsache, dass der in der Anleitung benötigte ‘Instrumentation Key’ im Portal (zumindest in der deutschsprachigen Version) ‘Komponenten-ID’ heißt: AppInsigths1      

Zu Evaluierungszwecken habe ich ein kleines WPF-Testprojekt angelegt. Bitte in diesem Testprojekt, den Instrumentation-Key in der Datei ApplicationInsights.config anpassen. Bitte auch die installierten Nu-Get Pakete beachten. Ich habe das Paket ‘Desktop Apllication Insights’ hinzugefügt, welches aktuell nur in einer Vorabversion existiert. Die abhängigen Pakete werden dann automatisch hinzugefügt.

AppInsigths4

Die Testanwendung gibt z.B. einen simplen Einblick, wie oft welcher Button betätigt wurde:

AppInsigths3

AppInsigths2

Code Contracts

CodeContracts verwendet man zur Überprüfung von Parametern vor der eigentlichen Methodenausführung. Zunächst sollte das erforderliche Visual Studio AddIn (von Microsoft) installiert werden.  Nach der Installation erhält man unter den Projekteigenschaften eine neue Karteikarte Code Contracts:

CodeContracts1

Dort kann man sowohl das Static- als auch das Runtime-Checking aktivieren. Die statische Überprüfung wird unmittelbar nach dem Kompilieren ausgeführt und kann Probleme frühzeitig erkennen. Bei aktiviertem Runtime-Checking (z.B. im Debug -Modus) werden zur Laufzeit Exceptions geworfen, wenn gegen den Vertrag verstoßen wird. Ist die Runtime -Überprüfung ausgeschaltet (z.B. im Release-Modus), wird der Code ignoriert. Das führt natürlich zu einer verbesserten Performance. Im Code sieht das im einfachsten Fall so aus:

CodeContracts2

Bei aktivierter statischer Überprüfung werden dann folgende Fehler ausgegeben:

CodeContracts3

Weitere Infos unter:

http://www.codeproject.com/Articles/103779/Introducing-Code-Contracts

und

https://msdn.microsoft.com/de-de/library/system.diagnostics.contracts.contract%28v=vs.100%29.aspx

 

 

 

Electric Light Orchestra at Hyde Park 2014

Lynne

Tandy ELO

Nach 28 Jahren Abwesenheit von großen Bühnen hat Jeff Lynne zusammen mit seinem langjährigen musikalischen Wegbegleiter Richard Tandy im September 2014 einen spektakulären Live Auftritt im Londoner Hyde Park vor 50.000 Zuschauern hingelegt. Unterstützt wurden die beiden von der Take That – Band, sowie von 32 Streichern vom BBC Orchestra. Alle Tickets waren innerhalb weniger Minuten weg! Das Konzert wurde komplett auf BBC Four ausgestrahlt und kann glücklicherweise auch auf Youtube angesehen werden: https://www.youtube.com/watch?v=pecpeVYg7LM

Ich kann das Konzert jedem ELO Fan uneingeschränkt empfehlen. Für mich ist es musikalisch das beste Konzert, dass ich je gesehen habe. Es beginnt spektakulär mit “All Over the World” aus dem Album Xanadu, welches Jeff Lynne zum ersten Mal überhaupt live spielt. Es endet noch spektakulärer mit der besten “Roll Over Beethoven” – Version ever. Dazwischen werden Hits wie z.B. Evil Woman, Strange Magic, Turn To Stone, Don’t Bring me Down, Telephone Line oder Mr. Blue Sky gespielt. Die komplette Setlist findet man z.B. hier: http://www.setlist.fm/setlist/electric-light-orchestra/2014/hyde-park-london-england-13cfe5cd.html

Weiter Infos zum Konzert in diesem Interview: http://www.theguardian.com/culture/2014/oct/15/elo-jeff-lynne-hipsters-beards-electric-light-orchestra-hyde-park-beatles

Es gibt Gerüchte, dass es Ende 2015 eventuell sogar eine World Tour geben soll.

 

 

BASTA 2014

Meine persönlichen Highlights von der BASTA 2014 (Mo, den 22.09.2014 – Do, den 25.09.2014):

Am Montag hat Neno Loje in seinem Workshop “Ganzheitliches Application LifeCycle Management mit Team Foundation Server: Von der Idee bis zum Release” wieder einmal einen sehr guten Einblick in dieses Thema gegeben. Mein Eindruck war allerdings, dass es im Team Foundation Server innerhalb des letzten Jahres keine spektakulären Neuerungen gegeben hat. Stattdessen hat Microsoft an vielen Details (wie z.B. der Verbesserung der Charting-Funktionalität) gearbeitet. Dass sich der Besuch für mich dennoch gelohnt hat, lag an einigen Tipps, die mir Neno im Anschluss an den Workshop geben konnte. Dabei ging es u.a. um das Thema “Update/Migration eines produktiven TFS 2010 (mit angepasstem Prozess-Template) auf die aktuelle Version”.

Am Dienstag hat die Keynote “Die neue Offenheit” bei mir leider keinen nachhaltigen Eindruck hinterlassen. Für die erste Keynote einer BASTA wäre es aus meiner Sicht wünschenswert, wenn man in Zukunft hochkarätigere Speaker gewinnen könnte. In der Podiumsdiskussion ging es diesmal im Wesentlichen darum, dass Microsoft seine Aktivitäten im Bereich OpenSource verstärkt und dass man jetzt zunehmend auch auf anderen Plattformen (Beispiel: IOS, Linux/Android) durchstarten möchte. Nichts was einen wirklich überrascht hat!!! Im Anschluß habe ich dann den C# Track verfolgt: In den beiden Vorträgen von Oliver Sturm und Christian Nagel wurden die neuen “Code Features von C# 6″ vorgestellt. Beide Vorträge waren für sich genommen wirklich sehr gut und sehr informativ. Allerdings hätte es aus meiner Sicht definitiv gereicht, einen der beiden Vorträge zu besuchen. Am Nachmittag gab es dann gute Tipps, wie man seine Codequalität verbessern kann (z.B. mit StyleCop oder mit Code Analysis). Anschließend hat Thomas Claudius Huber dem geneigten Publikum die S.O.L.I.D-Prinzipien anhand von vielen Code-Beispielen erklärt. Ich vermute mal, dass die meisten Teilnehmer (mich eingeschlossen) nicht alles verstanden haben. Gute Anregungen für den eigenen Code konnte man aber auf jeden Fall mitnehmen.

Bei der Keynote am Mittwoch hat Tarek Madkour (Microsoft) einen sehr guten Überblick zum Thema “Awesome everywhere – Targeting EVERY DEVICE with Visual Studio” abgeliefert. Eine besondere Empfehlung gab er für die Tools Xamarin und Cordova. Mit diesen ist es möglich, mobile Apps für IPhone, Android und Windows Phone zu entwickeln, die auf einer einzigen Codebasis beruhen. Am Mittwoch hat mir außerdem der Vortrag von Christian Nagel zum Thema “Using LINQ in Real Life Scenarious” gefallen. Es gab wieder viele Code-Beispiele. Ausgehend von einer guten Einführung hat er dabei immer fortgeschrittene Anwendungsszenarien (inkl. Grouping und SelectMany) vorgestellt. In Erinnerung bleiben wird außerdem der Vortrag von Thomas Schissler zum Thema “Performance Testing”. Dabei stellte er u.a. die folgenden Tools vor: Die Load Testing – Funktionalität aus Visual Studio Ultimate, die WPF Performance Suite, Snoop (Event Monitoring für WPF) und den Windows Performance Recorder.

In der Keynote am Donnerstag haben dann Dr. Holger Schwichtenberg und Manfred Steyer über die “Zukunft von .Net am Server” berichtet. Ich fand die Keynote sehr kurzweilig. In Erinnerung geblieben ist mir, das Microsoft das .Net-Framework in Zukunft auch in vielen kleineren Häppchen anbieten wird. Diese kann man sich dann für seinen speziellen Anwendungsfall zusammenstellen. Dadurch ergeben sich folgende Vorteile: Bessere Performance und weniger Ressourcenverbrauch. Man liefert wirklich nur noch das aus (z.B. per XCopy – Deployment), was auch wirklich benötigt wird. Damit werden in Zukunft auch Anwendungen auf kleineren Devices, wie z.B. Raspberry Pi oder auch auf sogenannten Wearables möglich. Leider sind dazu auch Code-Breaks im .Net-Framework erforderlich, die dazu führen werden, dass möglicherweise auch Anpassungen am eigenen Code erforderlich sind. Auch das Thema NuGet spielt in Zukunft eine immer wichtiger werdende Rolle. Hier wurde auch der Tipp gegeben, dass sich bei Verwendung entsprechender Pakete auch mal ein Blick in die Lizenzbedingungen lohnt. Weiterhin in Erinnerung bleiben wird auch der Vortrag von Christian Binder mit dem Thema “Entwickeln im Rhythmus der Cloud”. Hier wurde am Beispiel der Entwicklung des Team Foundation Servers und von Visual Studio gezeigt wie Microsoft Software entwickelt. Wichtige Aspekte des Vortrags waren: Wie sind die Entwicklungsteams bei Microsoft organisiert? Wie wird Scrum gelebt? Wie bekommt man unmittelbares Feedback der Anwender? Wie geht dieses Feedback in die Entwicklung ein? Wie bekommt man immer kürzere Realeasezyklen hin? Weiterführende Infos dazu gibt es unter: http://stories.visualstudio.com.

 
Ein Thema ist dieses Jahr auf der BASTA scheinbar etwas in den Hintergrund gerückt. Während man im letzten Jahr irgendwann fast zwangsläufig in einen Vortrag saß, der sich mit dem Thema “Cloud” beschäftigte, habe ich es dieses Jahr geschafft, keinen einzigen technischen Vortrag zu diesem Thema zu verfolgen. Neben den vielen Vorträgen sind auch noch die Aussteller zu erwähnen, deren Besuch sich in einigen Fällen (nicht nur wegen der Give Aways !!!) wirklich gelohnt hat. Insgesamt war die BASTA auch in diesem Jahr wieder eine gelungene Veranstaltung und daher komme ich auch im nächsten Jahr gerne wieder.

Mein persönlicher Lieblingssprecher bei der diesjährigen BASTA war übrigens Christian Nagel. Er hat mit seiner unverwechselbaren Art, seinem Akzent, seiner Bärenruhe und natürlich seiner Kompetenz sehr gute Vorträge zum Thema C# gehalten. Da er es bei der Einleitung seiner Vorträge jedes mal erwähnte, habe ich insbesondere mitgenommen, dass man mit Büchern zum Thema “C# – Entwicklung” nicht reich werden kann und das Hollywood (aus welchem Grund auch immer) keinen Wert darauf legt, seine Bücher zu verfilmen!!!

 

 

 

 

 

 

Welche .Net Assembly wurde eigentlich geladen ?

Als .Net Entwickler kommt man früher oder später an den Punkt, wo man sich fragt: Welche Assembly hat meine Software eigentlich geladen? Eine sehr gute Antwort auf die Frage, wie man in einem solchen Fall vorgehen kann, gibt z.B. ein Artikel von Scott Hanselmann: http://www.hanselman.com/blog/BackToBasicsUsingFusionLogViewerToDebugObscureLoaderErrors.aspx.

Hervorzuheben ist hier insbesondere der “Fusion Protokoll Viewer”. Mit seinen Logging-Fubktionalitäten kommt man möglichen Problemen schon sehr gut auf die Schliche. Leider muss man sich oft durch eine Vielzahl von Protokolleinträgen kämpfen bis man eine Antwort auf seine Fragen gefunden hat. Wer es einfacher haben will und mit weniger Infos auskommt, der findet mit den in Visual Studio 2013 eingebauten Funktionalitäten eine sehr gute Alternative:

Einfach einen BreakPoint setzen. Dann die Anwendung bis auf diesen Punkt laufen lassen. Dann unter Debuggen->Fenster->Module aufrufen.

VS2013_Module

 

 

 

 

 

 

 

 

My “holy” ten commandments of software development

moses.gebote6

1. Learn programming language as good as possible!

2. Use a style guide!

3. Use code analysis and profiling tools!

4. Apply clean code developer rules!

5. Apply common design patterns!

6. Write unit tests!

7. Apply the agile software development methodology

8. Use a source code control

9. Meet colleagues for code reviews!

10. Visit lectures and conferences!

 

And another tip:

Never be satisfied with ‘good’ code! There is always room for improvement!

Vintage Hifi – Geräte

Hifi

Allen, die auf der Suche nach einem schönen Vintage Hifi-Gerät (z.B. Dual Plattenspieler) sind oder Ihr altes Gerät, das vielleicht viele Jahre auf dem Dachboden gestanden hat und bereits verstaubt ist, wieder flott machen wollen, möchte ich an dieser Stelle den folgenden Link empfehlen: http://www.radio-werkstatt.de/