code it

Martins Tech Blog

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

Treffen der .NET Usergroup Dresden

Das Oktober-Treffen der .NET Usergroup Dresden wird am 27.10.2011 in den Räumen der T-Systems MMS stattfinden. Das Treffen beginnt wie gewohnt um 18:00 Uhr. Detaillierte Informationen zum Termin selbst und eine Möglichkeit zur Anmeldung finden sich auf der Seite der Usergroup.

Thematisch wird es an diesem Abend um die Neuigkeiten gehen, die Microsoft im letzten Monat auf der Build-Konferenz in Anaheim vorgestellt hat - und im speziellen um Windows 8 und die Anwendungsentwicklung für das neue Betriebssystem. Peggy und Lars werden uns durch den Abend führen und sowohl auf die Grundlagen eingehen als auch anhand von ein paar Beispielen zeigen, wie man vorgehen kann.

Im Anschluss daran wird es wieder die Möglichkeit zum gemeinsamen netzwerken geben.

Es gibt aber noch einen weiteren Grund zur Freude: Die Xing-Gruppe der .NET Usergroup Dresden hat seit heute offiziell 111 Mitglieder. Um das zu feiern sponsort Unique Software der Usergroup drei Bücher zu den Themenbereichen Webentwicklung, HTML 5 und WPF, die an diesem Abend unter den anwesenden Teilnehmern verlost werden.

Einladung zum Treffen der .NET Usergroup Dresden am 14.07.2011

Das kommende Treffen der .NET Usergroup Dresden wird am 14.07.2011 bei Saxonia Systems stattfinden. Dabei geht es hauptsächlich um die folgenden Themen:

  1. MEF (Mario Kretschmer)
    Das Microsoft Extensibility Framework ist eine neue Bibliothek im .NET Framwork 4, die es recht leicht macht, erweiterbare Anwendungen zu schreiben. Mit Hilfe weniger Attribute kann man so die Komplexität solcher Anwendungen stark verringern und kann dynamisch Module nachladen (AddIn-Konzept).
  2. BDD mit SpecFlow (Hendrik Lösch)
    SpecFlow versucht, die Lücke zwischen Entwicklern und  Domain-Experten zu schließen. Dazu bietet es einen Editor, in dem man seine Anforderungen an die Domain recht normalsprachlich (im Gherkin-Format) in feature-Dateien herunterschreiben kann. Aus diesen werden dann Testschritte generiert, die in Unittests automatisiert getestet werden können.
Im Anschluss daran gibt es wieder Gelegenheit, gemeinsam zu netzwerken. Nähere Informationen und einen Link zur Anmeldeliste finden sich auf der Webseite der .NET Usergroup Dresden.

Einladung zum Treffen der .NET Usergroup Dresden am 16.06.2011

Das Juni-Treffen der .NET Usergroup Dresden wird am 16.06.2011 stattfinden. Die Veranstaltung beginnt um 18:00 Uhr in den Räumen der Saxonia Systems AG.
 
Thematisch wird es dabei um zwei Themenblöcke gehen, die beide Mathias Raake bestreiten wird:
 
Zum einen werfen wir einen Blick auf PostSharp. Die Implementierung von INotifyPropertyChanged, Logging-Code, Exception-Handling oder auch Caching sind Funktionalitäten, die man in vielen Teilen der Anwendung immer wieder implementieren muss. Dabei haben diese Funktionen mit der eigentlichen Logik eurer Anwendung wenig zu tun. Die Aspektorientierte Programmierung (AOP) ermöglicht es euch, euren Code wieder auf das Wesentliche zu beschränken und "Infrastrukturfunktionen" in sogenannte Aspekte auszulagern. Euer Code wird kürzer, lesbarer und somit wartbarer, und die Aspekte können einfach wiederverwendet werden. Der Vortrag zeigt anhand von PostSharp und Microsoft Unity, wie ihr AOP in Ihren Anwendungen nutzen könnt.
 
Im Anschluss daran schauen wir uns gemeinsam NLocalize an.Wer bisher seine WPF-Anwendungen mit LocBaml lokalisiert hat, dem sei ein Blick auf dieses Tool empfohlen. Neovelop NLocalize unterstützt euch bei der Lokalisierung von WPF- und Silverlight Anwendungen. Als Visual Studio 2010 Plugin ermöglicht NLocalize die Lokalisierung direkt in Visual Studio. Für Übersetzer gibt es einen eigenen Client, der sich durch eine hohe Benutzerfreundlichkeit auszeichnet.
 
Wie immer, so wird es auch dieses Mal wieder im Anschluss die Möglichkeit geben, bei einem Bierchen zu netzwerken.

Einladung zum Treffen der .NET Usergroup Dresden am 27.04.2011

Das kommende Treffen der .NET Usergroup Dresden findet am 27.04. um 18:00 Uhr statt. Wir treffen uns dieses Mal wieder in den Räumen der Communardo Software GmbH.
 
Thematisch widmen wir uns dieses Mal wieder den Web-Technologien etwas mehr. Diskussionsgrundlage und Beispiel soll die Anwendung BizzBingo sein. Diese verwendet unter anderem die folgenden Technologien und Frameworks:
  • ASP.NET MVC 3 mit Razor View Engine
  • Team City
  • Windows Azure
  • CQRS Architektur
  • BDD Unit Tests
  • Azure Deployment via PowerShell
  • jQuery
  • MSBuild
  • NuGet
Robert wird das Projekt vorstellen, das ursprünglich beim WebCamp im Juni 2010 in München seinen Anfang fand. Er wird auf die Technologie eingehen und auch den ein oder anderen Stolperstein. Ich denke bei dieser Themenvielfalt wird es sicher auch im Anschluss noch Bedarf und Gelegenheit für eine offene Diskussion geben.

Nachlese zum Treffen der .NET Usergroup Dresden vom 17.03.2011

Gestern gab es gleich zwei Premieren bei der .NET Usergroup Dresden.

Premiere 1: Wir haben das erste Mal ein Coding Dojo durchgeführt. 18:00 Uhr ging es los. Nachdem beim letzten Usergroup-Treffen die ein oder anderen Fragen auch in Richtung testgetriebene Entwicklung und die Sinnhaftigkeit gingen bin ich in ein paar einleitenden Worten darauf eingegangen, was testdriven eigentlich bedeutet und wie man dabei vorgeht.

Ausgehend davon wurde der Rahmen für den Abend gesteckt. Ich erklärte die Grundbegriffe von Coding Dojos und weil es für viele das erste Dojo war, begannen wir mit der recht einfachen Kata FizzBuzz. Im Vordergrund für diesen Abend stand einfach nur, allen ein Gefühl für TDD zu geben und die Angst vor dem Unbekannten "Coding Dojo" zu nehmen. Zweite Kata des Abends sollte nach einer Abstimmung Kata Potter sein, die aber nach unterschiedlichen Lösungsvorschlägen und Herangehensweisen irgendwann dann abgebrochen wurde.

Für mich war es das erste mal als Sensei und ich habe ein paar wertvolle Schlüsse ziehen können. Zunächst habe ich mich sehr gefreut, dass sich auch Usergroup-Teilnehmer, die eigentlich als Muttersprache VB.NET sprechen (wie sie es selbst genannt haben) in einem C#-Projekt mitgearbeitet haben, auch wenn "dieses komische Semikolon immer" gestört hat. Mir hat es sehr gut gefallen, dass eben nicht nur ein Vorturner da war, sondern dass wir die Gelegenheit hatten, vom Wissen aller zu profitieren, die sich freiwillig gemeldet haben, an der Kata mitzumachen. Und hier hat sich wieder gezeigt, dass es wichtig ist, nicht vorn still vor sich hin zu programmieren, sondern alle an den Gedanken teilhaben zu lassen.

Es gab aber auch ein paar Lehren für mich: Bei einer Gruppengröße von 20 Teilnehmern ist es recht kompliziert alle bei der Sache zu halten. Und, es hat sich herausgestellt, dass es wichtig ist, auch im Dojo die Schritte Red-Green-Refactor alle durchzuführen und es nicht auf Red-Green-Vielleicht-Refactor zu beschränken. Dem resultierenden Code merkt man nämlich an, dass er dringend ein Refactoring benötigt. Und zu guter Letzt ist es wichtig, nicht blind drauf los zu programmieren, sondern sich auch zu Beginn schon mal Gedanken darüber zu machen, in welche Richtung es gehen soll. Denn was nutzen 7 grüne Tests, wenn man der Lösung noch nicht wirklich näher gekommen ist und erst dann überlegt, wie man das Problem denn lösen könnte.

Zusammenfassend: Es war ein gelungener erster Dojo-Abend. Ich denke, wir werden das auch weiter fortführen und gelegentlich Dojo-Abende einstreuen und die Schlüsse die ich und auch die anderen aus diesem Abend ziehen konnten werden dann sicher auch Eingang finden. Die Resonanz war zumindest eindeutig positiv. Und nicht zuletzt habe ich mich auch sehr darüber gefreut, neben den vielen bekannten Gesichtern wieder mal ein paar neue Teilnehmer begrüßen zu dürfen. Ach ja - Premiere 2: Das Treffen fand das erste Mal bei Saxonia Systems statt und es war ein guter Einstand. Offenbar können Softwareentwickler aber mit Gemüse nicht allzu viel anfangen, denn obwohl die freundlicherweise gesponserten belegten Brötchen im wahrsten Sinne weggingen wie warme Semmeln, war die Gemüseplatte fast unberührt.

Einladung zum Treffen der .NET Usergroup Dresden am 17.03.2011

Am 17.03.2011 wird das nächste Treffen der Usergroup stattfinden. Dieses Mal kommen wir so denke ich allen Teilnehmern von der Altstadt-Seite etwas entgegen, denn das Treffen findet bei Saxonia Systems statt und beginnt um 18:00 Uhr. Wie beim letzten Treffen mit großer Mehrheit beschlossen wurde, wollen wir dieses Mal ein Coding Dojo durchführen.

Damit alle einen groben Einblick haben, wohin die Reise geht, werde ich die Gelegenheit nutzen und zu Beginn anhand eines einfachen Beispiels die grundlegende Herangehensweise an testgetriebene Entwicklung erklären. Das Beispiel wird wohl jedem bekannt sein und daher können wir uns hier auf das Wie und nicht so sehr auf das Was konzentrieren. Im Anschluss daran werden wir zunächst eine einfache Kata gemeinsam durchführen und so das eben gelernte Vertiefen. Ich werde noch ein paar schwierigere Übungen mitbringen, so dass wir dann darunter eine aussuchen können, die wir bearbeiten.

Der Abend soll den Auftakt dazu geben, zukünftig ab und zu das ein oder andere Dojo durchzuführen. Wer sein eigenes Notebook mitbringen möchte, um selbst an der Lösung der Aufgaben zu arbeiten, ist herzlich dazu eingeladen. Das Dojo selbst wird an einem zentralen Notebook durchgeführt, so dass alle Beteiligten an den Gedanken von Driver und Copilote teilhaben können. Ich bin schon sehr gespannt auf diesen Abend.

Damit wir besser planen können, bitte ich alle potenziellen Teilnehmer um Eintragung in die Teilnehmerliste.

Nachlese zum Februar-Treffen der .NET Usergroup Dresden

Jetzt ist es schon fast eine Woche her, dass das Februar-Treffen der .NET Usergroup Dresden stattgefunden hat. Es hat mich persönlich sehr gefreut, dass wir mit Hendrik einen neuen Sprecher akquirieren konnten. Er ist zwar schon länger Mitglied der Usergroup, konnte aber bisher nur selten an unseren Treffen teilnehmen.

Auch das Thema war sehr interessant. Ich selbst habe bisher als Mocking Framework eher auf Rhino.Mocks gesetzt. Aber warum nicht auch mal umsehen, ob es andere Frameworks gibt, die vielleicht besser oder intuitiver sind. Aus diesem Grund fand ich die Einführung in Moq ganz spannend - auch, weil man sich so direkt mal über die Stolpersteine unterhalten konnte.

Ganz geschickt hatte Hendrik in seinen Live-Coding-Beispielen auch schon Methoden-Stubs für Beispiele andere Frameworks wie Rhino.Mocks vorbereitet. Die Stubs hab ich zwar nicht verwendet, aber ich hab aus einem meiner Projekte ein paar Testmethoden gezeigt. So konnten wir hier zumindest schon mal anschneiden, dass es viele Gemeinsamkeiten gibt, die sich im Grunde nur in Details unterscheiden.

Nachdem wir im vergangenen Jahr gemeinsam mit Alexander einen LdL-Abend gemacht haben, bei dem es um Unittesting ging, war es dieses Mal etwas schwer, alle abzuholen und so war Unittesting für einige nur theoretisch bekannt und in der Praxis noch nie eingesetzt worden, andere "alte Hasen" verwenden es täglich und in allen Projekten.

Eine Zusammenfassung von Hendrik sowie seine Slides und die Code Samples findet man in seinem Blog.

Mit dem Abend stehen nun auch schon die kommenden Usergroup-Treffen bis Mai zumindest thematisch fest. Für März ist ein Coding-Dojo geplant. Ich bin sehr gespannt wie das wird. Ein Einladung dazu wird es geben, sobald Räumlichkeiten und genauer Termin feststehen.

Einladung zum Treffen der .NET Usergroup Dresden am 17.02.2011

Am 17.02. wird das nächste Treffen der .NET Usergroup Dresden stattfinden. Wir treffen uns 19:00 Uhr bei der T-Systems MMS.

Der Abend steht unter dem Thema Unittesting. Hendrik Lösch wird zunächst noch einmal kurz auf die Grundlagen eingehen, bevor er dann ausgiebig erläutert, wie das Framework Moq beim Schreiben der Tests helfen kann. Dabei geht es darum, wie Abhängigkeiten aufgebrochen, Methodenverhalten emuliert und Methodenaufrufe validiert werden können.

Das Thema bietet genug Gesprächsstoff und bestimmt hat jeder schon einmal Erfahrungen mit dem ein oder anderen Mocking Framework sammeln können. Aus diesem Grund schließen wir an den Vortrag eine offene Diskussion über eure verwendeten Frameworks an, bei der ihr gern eingeladen seid, eure Erfahrungen mit eurem bevorzugten Framework vorzustellen und auch gern am Notebook das ein oder andere Beispiel zu zeigen.

Wir freuen uns auf viele Teilnehmer. Mehr Informationen und einen Link zur Gästeliste findet ihr auf der Event-Seite.

Nachlese zum gestrigen Treffen der .NET Usergroup Dresden

Gestern abend fand das erste Treffen der .NET Usergroup Dresden in diesem Jahr statt und erfreulicherweise waren auch sehr viele Teilnehmer mit dabei. Und das war auch nicht verwunderlich, denn wir hatten ein paar sehr spannende Themen. Sicher waren die beiden Vorträge nur ein kurzer Einblick und es bleibt jetzt für alle die Option, sich selbst auszuprobieren. Um den Einstieg wieder zu finden, nun noch die Slides zu den Vorträgen von Daniel und mir sowie die Weblinks zu den Beispielen, die ich gezeigt hab:

Reactive Framework

Zunächst das Beispiel mit Aufruf eines WebRequests unter Zuhilfenahme der Reactive Extensions:

var webRequest = WebRequest
    .Create("http://localhost/mysite?output=xml");

var observableRequest = Observable
    .FromAsyncPattern<WebResponse>(
        webRequest.BeginGetResponse, 
        webRequest.EndGetResponse);

Observable
.Timeout(observableRequest.Invoke(), 
    TimeSpan.FromMilliseconds(20000))
.ObserveOnDispatcher()
.Subscribe
(
 response =>
 {
  var responseStream = response.GetResponseStream();
  var reader = new StreamReader(responseStream, Encoding.UTF8);
  var responseText = reader.ReadToEnd();

  textBox1.Text = responseText;
 },
 exception =>
 {
  textBox1.Text = exception.Message;
 }
);

Die beiden anderen Beispiele waren aus dem Web (Asynchrone Funktionsaufrufe, Malen auf einem Canvas) und sind recht schnell nachgestellt.

WebMatrix und Razor

Viel Spaß beim selbst ausprobieren und ich bin gespannt auf Eure Erfahrungen.