.NET Open Space Leipzig

Trotz Familie habe ich dieses Wochenende geopfert und mich auf dem .NET Open Space Leipzig ( wie Bar Camp) rumgetrieben. Zugegeben, ich habe auch noch die die inoffizielle Einweihung unsereres neuen Leipziger ppedv Standortes damit verbunden. Obwohl es als Unkonferenz angekündigt wurde gibt es doch Gemeinsamkeiten zur klassischen Konferenz wie VSone Es gibt Teilnehmer Es gibt Sessions Es gibt Essen und Kaffee Es gibt nicht Sprecher Präsentationsmittel ( nur eingeschränkt) keiner hält sich an Zeiten und niemand findet es schlimm Es gibt sehr viel Kommunikation und es waren durchaus interessante Kollegen da. Um nur einige zu nennen: Karsten Samaschke, Albert Weinert, Ralf Westphal, zwei von Microsoft und ein Evangelist von Oracle und jemand von Sigs Datacom. Ich hab sicher noch ein paar vergessen. Jeden Tag morgens wird in einer Art first come first serve Prinzip in der kompletten Runde eine Agenda gebastelt. Das dauert und hat für mich keine Nutzen. Das 1 h im Stehen verbringen habe ich  mir am zweiten Tag gespart. In den Sessions gibts keine Organisation und man sitzt im Kreis. Es wird lose miteinander diskutiert, was erstaunlich gut funktioniert hat. Ich habe das selten so diszipliniert erlebt. Am Ende hatte ich oft das Gefühl, “schön das wir darüber gesprochen haben”. Es haben sich für mich dabei aber interssante Menschen, Standpunkte und Erfahrungen herauskristallisiert. Die Sprecherberühmtheiten haben sich angenehm im Hintergrund gehalten. Das Gesamtspektrum der Themen war erstaunlich bodenständig, Scrum, Aufwandschätzung, Weiterbildung und natürlich Clean Code. Bei manchen Sessions hatte ich keine Ahnung welches Thema gerade eigentlich dran war, weil die Agenda nur an einer Stelle im Erdgeschoss per Postit aufgeschrieben war und oft die Diskussion abdriftete. Alles in Allem, toll organisiert von Torsten Weber und seinen Kollegen. Ich finde das Konzept Open Space ersetzt aber keine klassische Wissensvermittlung. Mein Fazit: ein Teil eines Puzzle auf dem Weg zum super .NET Developer.

Mail Sender Klartextnamen in web.config setzen

Klein aber feines Problem. Wie setzt man den reelen Sendernamen in einer Email, so das er auch für den Empfänger lesbar ist? Die Lösung liegt im SMTP Protokoll im mail from command. Die muss in folgender Form übergeben werden. Voller name <mailadresse@domain.de> Wie macht man das aber in der Web.config um den Absender von extern zu setzen? Das kann manchmal sehr hilfreich sein, wenn man dies konfigurierbar halten möchte. Das größer bzw kleiner Zeichen muss XML üblich maskiert werden, sonst gibts Probleme mit dem Parser. <system.net> <mailSettings> <smtp from="hannesp&lt;hannesp@ppedv.dee&gt;" deliveryMethod="SpecifiedPickupDirectory"> <specifiedPickupDirectory pickupDirectoryLocation="c:\temp"/> </smtp> </mailSettings> </system.net>

public Call for Papers: VSone 2010 und mobile Guru

Mein ppedv Kollege und Microsoft MVP Torsten Weber startet eine eigene Konferenz zum Thema Windows Mobile und Windows Embedded. Der Plan ist 50 Sessions anzubieten. Dafür sucht Torsten und sein Content Chair Kollege Peter Nowak noch fähige Sprecher und Themen. Sendet Eure Vorschläge direkt an torstenw AT ppedv.de bis spätestens 3.Okt. Sessionlänge ist 60 Minuten. 30.11-01.12.2009 in Leipzig Die Konferenz rund um Mobile Development www.MobileGuru.de   Gleich 6 Konferenzen finden unter dem Dach der VSone statt. Themen satt. Von Sharepoint, SQL, Visual Studio, Silverlight. Für Admins, Developer und Manager. Direkt in Müchen mit großer Fachausstellung. Um bei der Fülle der Microsoft Technologien den Überblick zu erhalten unterstützt mich ein ganzes Content Board: Fabian Moritz, Michael Greth, Torsten Weber, Klaus Aschenbrenner, Jan Schenk u.a.. Wer Sessions einreichen möchte bitte Mail an jennyp AT ppedv.de. Sie schickt euch den Zugang zum Online Tool. 24.02-25.02.2010 in München Die Konferenz rund um Microsoft Technologien www.VSone.de

ppedv erffnet 2 Neue Trainingscenter in Leipzig und Dresden

Wissensvermittlung für Developer findet auf viele Arten statt. Blogs (blogs.ppedv.de), Konferenzen (www.adc09.de), Magazine ( Visual Studio one ) und natürlich Schulungen. Wir setzen im Trainingsbereich konsequent auf hohe Qualität und führen z.B. die allermeisten Schulungen mit eigenen Trainer durch. ppedv AG ist natürlich Microsoft Certified Gold Partner for learning solutions. So können Kunden Trainings mit Microsoft SA Vouchern bei uns auch kostenlos besuchen. Unser Ziel ist es das unseren Kunden mit wenig Aufwand das maximale Lernergebnis erzielen. Die Gruppen sind meist sehr klein und die Schulungen meist etwas kürzer. Die Trainer beten nicht nur MOC Agendas runter, sondern versuchen wirkliche Probleme lösen zu helfen. Wesentlich ist aber auch, wieviel Aufwand die Anreise ist. Deshalb haben wir in den letzten Jahren konsequent beim Kunden vor Ort Center eröffnet. Für die Leipzig und Dresden gibt es ab 1.September buchbare Termine. Burghausen 1997 Baden-Baden 2002 (geschlossen 2007) München 2003 umgezogen 2009 in größere Räume Siegen 2006 Köln 2006 Karlsruhe 2007 Wien 2007 Frankfurt 2008 Stuttgart 2008 Leipzig 2009 Dresden  2009 Das Büro in Leipzig liegt in prominenter City Lage (Georgiring 1-3) und verfügt über ein Dachterrasse (wie Siegen, Wien, Burghausen) Für alle die es nicht Wissen, ich halte auch noch selbst Trainings bei ppedv. Meine Themen sind Silverlight, ASP.NET, AJAX, IIS und ich schreibe meinen Code noch mit VB. In Leipzig wird mein Kollege und CTO der ppedv AG, Torsten Weber angesiedelt sein. Aktuell planen wir gerade im Bereich Azubis Fachinformatiker Anwendungsentwicklung ein spezielles sehr güsntiges Angebot zu schnüren. Dazu demnächst mehr.

Gutes Design beginnt bei stimmigen Farben

Viele Menschen haben eine Meinung zu, “das ist ein schönes Design und das ist ein schlechtes Design”. Auch wenn man dazu gut diskutieren kann, besteht meist Grundkonsens. Aber nur mehr wenige können sagen, warum etwas schön oder weniger schön ist.   Ich will hier als positives Beispiel einen Ausschnitt des Blogs von Ralf Westphal zeigen. Grafiker lernen einen ganzen Satz von Regeln mit deren Hilfe man handwerksartig schönes Design erstellen kann. Der goldene Schnitt ist nur ein Beispiel davon. Ein anderes ist die Farbenlehre. Ich rede nicht von CYMK oder RGB  sondern von Harmonie von Farben. Bevor wir nun in die Tiefen des Mediendesign hinabsteigen, eine zulässige Verkürzung. Farbpalletten. Die meisten Microsoft Programme bieten solche. Wenn man sich eine solche Palette aussucht und innerhalb der angebotenen Farben bleibt, ist das erzeugte Dokument, egal ob Web oder Print, fast schon automatisch stimmig. Auch Expression Design besitzt solche Palletten.     Wer mehr möchte findet Vorschläge für Farbschemas auf der Website http://de-de.colourlovers.com/. Der Download ist gratis. Dieses Farbschema kann man als XML speichern und in Expression Design importieren. Der Menüpunkt dazu heißt Import Image Swatch. In dem Bereich Categories findet sich dann diese Palette wieder und freut sich auf Verwendung.

Expression Design 3 Photo Effekte

Ich bin so ein kleiner verkappter Designer. Nein ich möchte gern ein Designer sein. Jedenfalls verwende ich ausschließlich Microsoft Werkzeuge, nicht weil sie besser sind, sondern weil mich meine Kursteilnehmer auch mal danach fragen. Und da Expression 3 Studio Tools nun final ist ein paar Tipps dazu. Expression Design hat natürlich auch Effekte. Ausgangspunkt ist immer eine Vespa und die photografischen Effekte Grain Film Grain Diffuse Glow meine Favorit Neon Glow auch nicht schlecht Photo Copy Halftone Screen Expression Design erzeugt natürlich auch XAML Code!

Das ASP.NET Silverlight Server Control in Silverlight 3 verwenden

Leider hat Microsoft das ASP.NET Server Control aus Silverlight 3 entfernt. Statt dessen muss jetzt per HTML Object Element das Silverlight Plugin in die Seite eingebaut werden. Laut Gerüchten wurde dies gemacht um klar zu stellen das man Silverlight in jede Art von Web Seite einbauen kann. Das hat aber auch Nachteile so ist der Scalemode nun verschwunden. Die Gute Nachricht ist, das Control aus Silverlight 2 lässt sich mit ein wenig Aufwand weiter verwenden. Einzig die System.Web.Silverlight.DLL muss man sich besorgen.   System.Web.Silverlight.dll in BIN Verzeichnis der Web Anwendung kopieren das ScriptManager Control aus den Extensions auf die Website ziehen Das  Silverlight control aus der Toolbox ziehen (oder tippen) Setzen von Source Attribut und MinimumVersion Attribut auf 3.0.40000.0 Wenn die  Silverlight Navigation Controls zum Einsatz kommen einen iframe mit der  ID “_sl_historyFrame” anlegen   <form id="form1" runat="server" style="height:100%;"> <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> <div style="height:100%;"> <asp:Silverlight ID="Xaml1" runat="server" Source="~/ClientBin/SilverlightApplication1.xap" MinimumVersion="2.0.31005.0" Width="100%" Height="100%" /> </div> </form>

Silverlight Objekt an Kreis entlang animieren

Mit Silverlight 3 kommen neue Animationstypen zb Bounce ( für Schwingen). Mir war schon immer ein anliegen mal eine Objekt an einem Kreis entlang zu animieren. Also ganz ohne Code nur per XAML. Mit Blend lässt sich das ganz leidlich abbilden. Ein kleiner blauer Ball soll sich im Uhrzeiger Sinn bewegen. Die gestrichelten Linien sind für mich zur Hilfe, weil ich mit unterschiedlichen Animationstypen experimentiert habe. Hier noch mein wunderbarer XAML Code. Wer genau hinsieht wird erkennen das die Bewegung zeitlich nicht linear ist, weil auf der Y Achse linear und auf X Circle animiert wird. <Storyboard x:Name="Storyboard1" RepeatBehavior="Forever"> <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="ellipse" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)"> <EasingDoubleKeyFrame KeyTime="00:00:01" Value="100"> <EasingDoubleKeyFrame.EasingFunction> <CircleEase EasingMode="EaseOut"/> </EasingDoubleKeyFrame.EasingFunction> </EasingDoubleKeyFrame> <EasingDoubleKeyFrame KeyTime="00:00:02" Value="0"> <EasingDoubleKeyFrame.EasingFunction> <CircleEase EasingMode="EaseIn"/> </EasingDoubleKeyFrame.EasingFunction> </EasingDoubleKeyFrame> <EasingDoubleKeyFrame KeyTime="00:00:03" Value="-100"> <EasingDoubleKeyFrame.EasingFunction> <CircleEase EasingMode="EaseOut"/> </EasingDoubleKeyFrame.EasingFunction> </EasingDoubleKeyFrame> <EasingDoubleKeyFrame KeyTime="00:00:04" Value="00"> <EasingDoubleKeyFrame.EasingFunction> <CircleEase EasingMode="EaseIn"/> </EasingDoubleKeyFrame.EasingFunction> </EasingDoubleKeyFrame> </DoubleAnimationUsingKeyFrames> <DoubleAnimationUsingKeyFrames AutoReverse="true" BeginTime="00:00:00" Storyboard.TargetName="ellipse" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)"> <LinearDoubleKeyFrame KeyTime="00:00:02" Value="200"/> </DoubleAnimationUsingKeyFrames> </Storyboard>

Silverlight RSS Feeds einlesen

Datenbinding ist meiner Ansicht nach nur unzureichend gelöst in Silverlight. Die .NET RIA Services sind auch noch bei weitem nicht fertig. Selbst die Neue Version Silverlight 3 bringt nur ganz wenig Änderungen zum Thema Datenbinding. Mein Problem ist, das man unglaublich viel Infrastruktur Arbeit machen muss, um die typische Customer Tabelle von der Nordwind Datenbank anzuzeigen. Und es gibt mindestens fünf oder mehr Möglichkeiten das zu tun. Erinnert mich irgendwie an RDO und ADO und ODBC usw. Aber das ist eine andere Geschichte. Ich will heute mal auf Feature hinwiesen das es schon seit Silverlight 2 gibt die RSS Syndication Klassen. Diese übernehmen die Dreckarbeit mit den Formaten wie RSS und ATOM umzugehen. Wer das schon mal gemacht hat, weis der Teufel liegt im Detail. Der Download erfolgt wie üblich per Webclient und asynchron. Die empfangenen Daten werden dann in einen XAML Reader geladen und dann in eine Liste vom Typ Syndication Feed. Man erspart sich das aufwendige manuelle parsen, Typüberprüfungen und das erstellen einer Datenklasse für die Items. Private Sub OnClick(sender As Object, args As EventArgs) Dim wc As New WebClient() wc.DownloadStringAsync(New Uri("http://http://rss.focus.de/fol/XML/webslice/fol_newsticker.html")) AddHandler wc.DownloadStringCompleted, AddressOf rssCallback End Sub Private Sub rssCallback(sender As Object,e As DownloadStringCompletedEventArgs) Dim reader As XmlReader = XmlReader.Create(New StringReader(e.Result)) Dim feed As SyndicationFeed = SyndicationFeed.Load(reader) datagrid1.ItemsSource = feed.Items End Sub

Silverlight Network Stack- die Qual der Wahl

Silverlight 3 besitzt 2 Network Stacks. Man merkt davon auf den ersten Blick aber nichts und wozu zwei mal das gleiche? Bisher hat Silverlight immer den Browser Network Stack verwendet (XMLHTTP). Dies hat eine Menge Vorteile wie z.B. Cookie Support, Caching von Images und wenig Aufwand. Leider auch einen kleinen und einen erheblichen Nachteil: Nur Statusode 404 und 200 und keine DELETE oder PUT Http Kommandos. Nie und nimmer ( auch wenn manche was anderes behaupten). Das ginge ja noch. So wird bei ADO.NET Dataservice ein entsprechender REST Aufruf einfach in einen POST Request getunnelt. Richtig schlimm wird es aber erst wenn eine Silverlight Anwendung Out off Browser läuft. Wie der Name schon sagt gibt es dann keinen Browser mehr und damit auch keinen Browser Network Stack. Deshalb haben die Jungs vom Silverlight Team den Network Stack in Silverlight nachprogrammiert, nennt sich ClientHttpStack im Gegensatz zum BrowserHttpStack. Allerdings weicht die Implementierung erheblich ab. Caching von Images gibt es z.B. nicht mehr. Man kann für einen einzelnen Webrequest umschalten oder für alles (Images, Webclient, HttpClient, Web Service ect) Dim httpResult As Boolean = WebRequest.RegisterPrefix("http://", _ WebRequestCreator.ClientHttp) Dabei wird für jeweils ein Prefix der ClientHTTP Stack aktiviert. Das kann auch ruhig in der Form http://www ect erfolgen. Das geht allerdings nur einmal pro Anwendungsstart. Dann gehen auch Request auf REST Services mit GET, POST, DELETE, PUT, OPTIONS und HEAD. Wenn eine Cross Domain Zugriff erfolgen soll muss im Clientaccesspolicy File die http-Methods auf * sein. Ansonsten gibts auch hier nur GET und POST. Das Thema ist im Detail sehr Umfangreich. Nur um ein paar Stichwörter zu geben, Cookies, Authentifierung, Header, Caching oder Proxy Settings. Dazu später vielleicht mehr.