Continuous Lifecycle 2013: Continuous Deployment so einfach wie möglich

I presented “Continuous Deployment so einfach wie möglich” at the Continuous Lifecycle 2013 in Karlsruhe on 2013-11-12:

Die automatisierte kontinuierliche Aktualisierung von Web-Anwendungen ist von der Idee her sehr komfortabel, trifft aber in der Praxis auf die ein oder andere Schwierigkeit. Der Referent zeigt am Beispiel zweier ASP.NET-Projekte – mit sechs Jahren Erfahrung -, wie man eine minimalistische eigene Infrastruktur dafür aufbaut und pflegt. Dabei geht er den kompletten Weg vom Check-in des Entwicklers über Build und Tests bis zum Update der Web-Anwendung auf dem eigenen IIS, inklusive Datenbank-Schema und Konfigurationsdateien.

Slides are available here: Continuous Deployment so einfach wie möglich (PDF).

Basta 2013: Grundlagen automatisierter Tests

I presented “Grundlagen automatisierter Tests” at the Basta 2013 on 2013-09-24:

Tests sind vor allem dann hilfreich, wenn sie 1. mit wenig Aufwand, 2. schnell, 3. eindeutige und 4. reproduzierbare Ergebnisse liefern. Automatisierung ist der Schlüssel zu ersteren. Wir zeigen in einer Livedemo, wie man durch Isolation von Daten(banken) und Code die Eindeutigkeit und Reproduzierbarkeit erreicht. Eine Einführung in gängige Frameworks ermöglicht, alles direkt selbst zu nutzen.

Slides are available here: Grundlagen automatisierter Tests (PDF). Get the source code at GitHub.

Basta 2013: Dependency-Injection-Grundlagen

I presented “Dependency-Injection-Grundlagen” at the Basta 2013 on 2013-09-24:

Durch Auslagerung der Abhängigkeiten via Dependency Injection (DI) wird der eigene Code einfacher konfigurierbar und besser testbar. Doch fällt es vielen nicht leicht, das Konzept für sich zu nutzen. Wir zeigen in einer Livedemo, wie man am besten anfängt, was DI kann und was es nicht kann. Eine Übersicht über (Anti-)Patterns hilft Ihnen dabei, zu beurteilen, was Ihnen tatsächlich Mehrwert bringt.

Slides are available here: Dependency Injection Grundlagen (PDF). Get the source code at GitHub.

Herbstcampus 2013: Geister, Gurken und Halbmetalle

I presented “Geister, Gurken und Halbmetalle – Tools für Web-UI-Acceptance-Tests” at the Herbstcampus 2013 on 2013-09-03:

Automatisierte Unit-Tests und Integrations-Tests gehören inzwischen für viele Entwickler zum Alltag. Wir zeigen in einer Live-Demo, wie man darüber hinaus durch Acceptance Tests einer Web-UI sicherstellt, dass der Benutzer auch genau das Gewünschte sieht. Mit einer KnockoutJS-basierten Seite führen wir Selenium, PhantomJS und SpecFlow vor, um von der Beschreibung in Textform zu C#-Code zu kommen. Abgerundet wird die Demo durch konkrete Hinweise aus der Entwicklerpraxis.

Slides are available here: Geister, Gurken und Halbmetalle (PDF). Get the source code at GitHub.

Entwicklertag: Acceptance Tests für Web-UIs

I presented “Acceptance Tests für Web-UIs” at the Karlsruher Entwicklertag 2013 on 2013-06-06:

Automatisierte Tests gehören inzwischen für viele Entwickler zum Alltag. Auch Web-Entwickler greifen häufig zu Unit-Tests und Integration-Tests, um den serverseitigen Code zu prüfen. Wir zeigen, wie man einen Schritt weitergeht und durch Acceptance Tests der Web-UI sicherstellt, dass der Benutzer auch genau das sieht was er sich gewünscht hat. Am Beispiel einer KnockoutJS-basierten Seite führen wir Selenium, PhantomJS und SpecFlow vor, um von der Beschreibung in Textform zu einer Implementierung in .NET zu kommen. Abgerundet wird die Demo durch konkrete Hinweise aus der Entwicklerpraxis.

Slides are available here: Acceptance Tests für Web-UIs (PDF). Get the source code at GitHub.

Basta Spring 2013: Knockout

I presented “Wartbare Webanwendungen mit Knockout und Model View ViewModel (MVVM)” at the Basta Spring 2013 on 2013-02-28:

Spätestens mit Visual Studio 2012 ist Knockout im Mainstream angekommen. Doch wie kann man es sinnvoll nutzen? Wir zeigen ganz pragmatisch mit einer Livedemo, dass nicht nur typische Single-Page Applications davon profitieren, sondern auch alle ASP.NET-MVC- und Web-Forms-Projekte, die etwas komplexere Eingabeformulare verwenden.

Slides are available here: Wartbare Webanwendungen mit Knockout und Model View ViewModel (MVVM) (PDF). Get the source code at GitHub.

2. iSAQB Architekturtage: Architektur als Balance der Problemlösung

I presented “Architektur als Balance der Problemlösung” at the 2. iSAQB Architekturtage on 2012-11-22:

Software-Architekturen sind nicht nur technisch – die optimale Balance hängt von den technischen, fachlichen und insbesondere den menschlichen Anforderungen ab und ändert sich über die Zeit. Eine gute Architektur findet in den Dimensionen Verständlichkeit, Performance, Kompatibilität und Testbarkeit einen Bereich, in dem mehr Probleme gelöst als neu geschaffen werden. Danach ist es aber mindestens ebenso wichtig sicherzustellen, dass dies auch so bleibt. Der Vortrag zeigt ganz konkret Erfahrungen und Lessons Learned aus mehreren langjährigen Projekten und gibt Hinweise, die eigenen Architekturen zu überdenken.

Slides are available here: Architektur als Balance der Problemlösung – Malte Clasen – 2. iSAQB Architekturtage (PDF).

HttpWebRequest Cookie Handling

When I tried to automate the access to the web-based UI of the Dell DRAC 5 remote access controller, I stumbled upon a strange issue. System.Net.WebClient does not handle cookies on its own. You can force it to do so by intercepting the request and response handlers, GetWebRequest() and GetWebResponse(). There you have access to the HttpWebRequest and HttpWebResponse objects, and the respective CookieContainer and Cookies properties.

But given the nature of the DRAC 5, this is not enough. By default, HttpWebRequest interprets 302 (temporary redirect) responses and loads the next page. However, HttpWebRequest does not handle the cookies set on the 302 response. So you also have to disable AllowAutoRedirect to get the chance to save the cookies.

You can have a look at the code (using HttpWebRequest directly) in the github repository of DracWake.

Windows 8 is just fine

I’m using Windows 8 for software development (web and console applications) on a daily basis for two weeks now. At first I hesitated because everyone says the new GUI is unusable on non-touch devices such as my notebook. However, it didn’t change my workflow at all. I pin all the programs I usually use to the task bar, just as I do in Windows 7. And for all the programs I rarely use, I press the Windows key and type the program name, just as I do in Windows 7. The screen looks different, with all the fancy rectangles instead of the start menu, but input and result are the same, so I don’t care. And when I’m done, I close the lid of my notebook. All in all, I barely notice whether I’m on my Windows 8 or my Windows 7 machine.

So why should you switch to Windows 8? I don’t know. I did because I wanted to evaluate it on my own. Apart from this, there is neither a real benefit nor a drawback. I will continue to use it, but I won’t upgrade my other machines.

Herbstcampus 2012: WebForms in MVC

I presented “Umzug – ASP.NET-WebForms-Elemente in MVC weiterverwenden” at the Herbstcampus 2012 on 2012-09-06:

Über Jahre entwickelte ASP.NET WebForms-Anwendungen enthalten oft komplexe Controls und Pages. Das stellt für eine Migration auf ASP.NET eine Hürde dar, weil die dahinter liegende Eingabe- und Darstellungslogik oft nicht ausreichend spezifiziert und dokumentiert ist. Aber auch in Fällen mit guter Spezifikation ist der damit verbundene Implementierungsaufwand nicht zu unterschätzen.

In diesem Vortrag wird an einem Beispiel aus der Praxis gezeigt, wie man bestehende WebForms-Controls und -Pages in MVC-Anwendungen und -Layouts integriert und so innerhalb des neuen Frameworks nutzen kann.

Slides are available here: Umzug – Malte Clasen – Herbstcampus 2012 (PowerPoint 2010, 1.3 MB). You can get the source code on github.