.NET Code Contracts Vortrag auf der Springboard Konferenz

Monday, June 08, 2009 2:55:50 PM (W. Europe Daylight Time, UTC+02:00)

Am Freitag war ich mit einem Vortrag zu .NET Code Contracts auf der Springboard Konferenz in Köln. Die Springboard war eine Konferenz für Studenten und somit eine schöne Gelegenheit, mal wieder ein paar alte Kollegen aus dem Student Program zu treffen.

Neben meinem Vortrag hatte ich an dem Tag noch einen weiteren wichtigen Termin, auf den ich mich intensiv vorbereiten musste. Das führte dazu, dass ich die ganze Woche meistens bis nach Mitternacht mit dem Vortrag oder dem anderen Termin beschäftigt war. Jedenfalls war das lezte Beispiel mal wieder Just-in-time ca. 30 Minuten vor meinem Vortrag fertig. Demnächst sollte ich darauf achten, wichtige Termine weiter auseinander zu legen, dann habe ich vielleicht auch wieder mehr Freizeit ;-).

Folien zum Vortrag

Den gleichen Vortrag halte ich noch einmal am 10.06. bei der .NET User Group Paderborn.

Kick it on dotnet-kicks.de

dotnet-mct.de

Monday, May 25, 2009 1:43:58 PM (W. Europe Daylight Time, UTC+02:00)

Bisher habe ich meine Dienstleistungen ausschließlich über verschiedene Schulungsanbieter angeboten (zumindest habe ich selbst nirgendwo aktiv für mich geworben). Das hat für mich und auch für meine Kunden verschiedene Nachteile.

Ich darf z.B. in der Regel meine Schulungsteilnehmer nicht direkt anschreiben oder den Teilnehmern irgendwelche Kontaktmöglichkeiten nennen. Das führt dazu, dass ich vor der Schulung nur sehr umständlich die Inhalte mit den Teilnehmern absprechen kann (die E-Mails laufen teilweise über 2 oder 3 weitere Personen). Außerdem haben die Teilnehmer keine Möglichkeit, mir nach dem Vortrag noch Fragen zu stellen, oder auch einfach nur mal kurz zu schreiben, ob die geplante Prüfung erfolgreich bestanden wurde oder nicht. Ich kann auch keine Antworten zu Fragen nachreichen, die ich in der Schulung nicht sofort beantworten konnte. Dabei macht so eine Regelung überhaupt keinen Sinn, jeder der eine Suchmaschine bedienen kann findet innerhalb einer Minute heraus, wie er mich erreichen kann. Durch die schlechten Kontaktmöglichkeiten vor den Trainings kommt es nicht selten vor, dass Teilnehmer mit den falschen Vorkenntnissen in eine Schulung kommen, so dass ich ganz andere Inhalte vermitteln muss, als vorher abgesprochen und von mir vorbereitet wurden. Wenn es mal keinen passenden fertigen Kurs von Microsoft gibt, wird ganz selbstverständlich erwartet, dass der Trainer mal eben Unterlagen für 5 Tage selbst erstellt, am besten kostenlos.

Ein weiterer großer Nachteil für mich ist natürlich auch, dass die Schulungsanbieter an jeder Schulung mitverdienen. Der größte Teil der Gebühren, die die Teilnehmer zahlen, geht an den Schulungsanbieter, beim Trainer kommt davon nur ein kleiner Teil an. Vor fast jeder Schulung versuchen viele Anbieter auch, unter irgendwelchen Vorwänden Preise “ausnahmsweise” nach unten zu drücken. Rechnungen werden noch dazu oft sehr spät bezahlt (Negativrekord 2008 war ca. 75 Tage, 2007 waren es über 100 Tage). Sehr oft werden Termine angefragt und reserviert, nur um dann wenige Tage vor der Schulung wieder abzusagen.

Aus diesen Gründen habe ich mich entschieden, mit meinen Angeboten in Zukunft verstärkt direkt Endkunden anzusprechen. Der erste Schritt dazu ist meine neue Seite http://www.dotnet-mct.de.

Für Kunden, die ich bereits über andere Anbieter geschult habe, werde ich auch weiterhin nur über diese Anbieter arbeiten. Das ist für mich selbstverständlich, wäre aber sowieso durch Kundenschutzklauseln in meinen Verträgen gar nicht anders möglich.

Es gibt natürlich auch einige positive Ausnahmen. Von einigen wenigen Anbietern werden Rechnungen auch sehr schnell (7-8 Tage) bezahlt und diese versuchen auch nicht ständig, die Preise zu drücken.

Kick it on dotnet-kicks.de

Internationalisierung von WPF Anwendungen – Folien von der dotnet cologne

Saturday, May 16, 2009 4:35:02 PM (W. Europe Daylight Time, UTC+02:00)

Auf der dotnet cologne habe ich gestern gezeigt, wie mehrsprachige Windows Presentation Foundation Anwendungen erstellt werden können. Hier sind die Folien dazu:

Internationalisierung von WPF Anwendungen – dotnet cologne

Kick it on dotnet-kicks.de

Folien zu meinen Vorträgen bei der BASTA Spring

Sunday, March 01, 2009 5:59:15 PM (W. Europe Standard Time, UTC+01:00)

Letzte Woche war ich wieder mit 2 Vorträgen auf der BASTA Spring in Darmstadt.

Im ersten Vortrag ging es um mehrschichtige Webanwendungen mit dem Entity Framework. Dabei habe ich anhand eines Beispiels eine Anwendung schrittweise verbessert und so eine per Drag&Drop zusammengeklickte Anwendung zu einer mehrschichtigen Anwendung mit Dependency Injection umgebaut. Der Vortrag war super besucht, mit ca. 125 Teilnehmern hatte ich wohl die am besten besuchte Session am Dienstag.

Folien zu “Mehrschichtige Webanwendungen mit dem ADO.NET Entity Framework”

Die Beispiele werde ich demnächst online stellen. Ich wollte sie übers Wochenende noch einmal überarbeiten, da ich aber im Moment fast den ganzen Tag krank im Bett liege bin ich noch nicht dazu gekommen.

In meinem 2. Vortrag ging es mal wieder um die ADO.NET Sync Services. Im Prinzip fast der gleiche Vortrag, den ich schon mehrfach gehalten habe, mit ein paar kleineren Änderungen.

Folien zu “ADO.NET Sync Services 2.0”

Kick it on dotnet-kicks.de

CustomAttributeFormatException bei fehlendem .NET 3.5 SP1

Tuesday, December 16, 2008 5:46:56 PM (W. Europe Standard Time, UTC+01:00)

Ich hatte heute einen Fehler nach dem ich länger (naja “länger” ist relativ) suchen musste, weil es dazu weder auf Live noch auf Google passende Ergebnisse gab. Deshalb hier die Lösung:

Falls man versucht, eine .NET 3.5 SP1 Anwendung, die einen WCF Dienst aufruft, auf einem System ohne SP1 laufen zu lassen, kann es zu folgender Exception kommen:

System.Reflection.CustomAttributeFormatException: 'IsReference' property specified was not found. ---> System.NullReferenceException: Object reference not set to an instance of an object.

   at System.Reflection.CustomAttribute.GetCustomAttributes(Module decoratedModule, Int32 decoratedMetadataToken, Int32 pcaCount, RuntimeType attributeFilterType, Boolean mustBeInheritable, IList derivedAttributes)

   --- End of inner exception stack trace ---

   at System.Reflection.CustomAttribute.GetCustomAttributes(Module decoratedModule, Int32 decoratedMetadataToken, Int32 pcaCount, RuntimeType attributeFilterType, Boolean mustBeInheritable, IList derivedAttributes)

   at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeType type, RuntimeType caType, Boolean inherit)

   at System.Runtime.Serialization.DataContract.TryGetDCAttribute(Type type, DataContractAttribute& dataContractAttribute)

   at System.Runtime.Serialization.DataContract.GetStableName(Type type, Boolean& hasDataContract)

   at System.Runtime.Serialization.ClassDataContract.ClassDataContractCriticalHelper..ctor(Type type)

   at System.Runtime.Serialization.ClassDataContract..ctor(Type type)

   at System.Runtime.Serialization.DataContract.DataContractCriticalHelper.CreateDataContract(Int32 id, RuntimeTypeHandle typeHandle, Type type)

   at System.Runtime.Serialization.DataContract.GetDataContractSkipValidation(Int32 id, RuntimeTypeHandle typeHandle, Type type)

   at System.Runtime.Serialization.XsdDataContractExporter.GetSchemaTypeName(Type type)

   at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.ValidateDataContractType(Type type)

   at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.CreatePartInfo(MessagePartDescription part, OperationFormatStyle style, DataContractSerializerOperationBehavior serializerFactory)

   at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.CreateMessageInfo(DataContractFormatAttribute dataContractFormatAttribute, MessageDescription messageDescription, DataContractSerializerOperationBehavior serializerFactory)

   at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter..ctor(OperationDescription description, DataContractFormatAttribute dataContractFormatAttribute, DataContractSerializerOperationBehavior serializerFactory)

   at System.ServiceModel.Description.DataContractSerializerOperationBehavior.GetFormatter(OperationDescription operation, Boolean& formatRequest, Boolean& formatReply, Boolean isProxy)

   at System.ServiceModel.Description.DataContractSerializerOperationBehavior.System.ServiceModel.Description.IOperationBehavior.ApplyClientBehavior(OperationDescription description, ClientOperation proxy)

   at System.ServiceModel.Description.DispatcherBuilder.BindOperations(ContractDescription contract, ClientRuntime proxy, DispatchRuntime dispatch)

   at System.ServiceModel.Description.DispatcherBuilder.BuildProxyBehavior(ServiceEndpoint serviceEndpoint, BindingParameterCollection& parameters)

   at System.ServiceModel.Channels.ServiceChannelFactory.BuildChannelFactory(ServiceEndpoint serviceEndpoint)

   at System.ServiceModel.ChannelFactory.CreateFactory()

   at System.ServiceModel.ChannelFactory.OnOpening()

   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)

   at System.ServiceModel.ChannelFactory.EnsureOpened()

   at System.ServiceModel.ChannelFactory`1.CreateChannel(EndpointAddress address, Uri via)

   at System.ServiceModel.ChannelFactory`1.CreateChannel()

Kick it on dotnet-kicks.de
Previous Page Page 3 of 24 in the NET category Next Page