Review .NET Day Franken 2016

DDF_Logo

Der diesjährige .NET Day Franken am 11.06.2016 stand unter dem Motto

“Es väfliggsde sibbde Joa!”

Für mich war das der sechste .NET Day Franken in Folge (von sieben ingesamt) auf dem ich als Sprecher sein durfte. Diese Jahr mit meinem Vortrag:

“About async and await, concurrency and all that blocking stuff…”

Und trotz der einen oder anderen Schwierigkeit die das Orga Team meistern musste dieses Jahr ist es mal wieder eine fränkische Community Konferenz geworden die Maßstäbe setzt. Nicht nur die Location die wie auch die Jahre zuvor überzeugte, nein auch die Sprecher und die Vorträge, die für die vielen Besucher auch dieses Jahr wieder eine abwechslungsreiche Auswahl an Themen bereit hielten.

Ich persönliche habe mich sehr gefreut über ein Wiedersehen mit vielen bekannten Gesichtern und über angeregte Gespräche. Bitte liebes Orga Team macht weiter so dann sind die 10 Jahre bald voll 🙂

PS: Hier finden sich die Präsentation und der Beispiel Code aus meiner Session.

Excel Source on SSIS server fails.

Recently I had a strange issue with an Excel Source in a SSIS package.
While developing the SSIS package everything worked perfectly. Even after the initial deployment to an Acceptance stage and various user tests everything was working fine.

Until one day. Shortly after we got a new excel source data file. When the package was executed by a developer it worked well. But when a business user started the package it ran into the follwing error.

….Description: Opening a rowset for “Sheet$” failed.
Check that the object exists in the database…..

Of course there was a sheet in the excel file named “Sheet”.

It took nearly a whole day of reserach until we found the real problem behind.
Best help was this blog post here :
Strange Error Loading Excel Files (xlsx) using SQL Server Integration Services

Reason:
The reason for failing is that the package is executed in the context of the windows user (which is intended in our case) and the business (windows domain) user does not have any permission on a general temp folder on the server which the MS Access/Excel driver is utilizing when a excel source file is getting larger than a specific threshold.

Solution:
So you can fix that problem by granting write permissions on the folder
C:\Users\Default\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.MSO
to all users executing any packages with Excel Sources.

Happy packaging….

Review NRW Conf 2014

startbanner

Download – Samples zu dem Vortrag “Parallel Rockin’ – Paralleler Code muss rocken”

Die NRW Conf. ist ja unter den Community Konferenzen in Deutschland schon eine feste Einrichtung. Und so pilgerten auch dieses Jahr wieder viele Interessierte nach Wuppertal um sich für eine unschlagbar niedrige Teilnehmergebühr “aufzuschlauen” und sich mit anderen Teilnehmern, Interessierten, Nerds auszutauschen.

Aber die NRW Conf. hat, trotz ihrer Größe, immer ein sehr eigenes Flair behalten und ist mit anderen Konferenzen nur schwer zu vergleichen.
Für mich persönlich bedeutet NRW Conf. immer auch ein “zusammen mit Freunden”.
Eine gute Gelegenheit  Freunde und Bekannte zu sehen mit denen man sonst nur über soziale Netze und ähnlichem Kontakt hält.
Eine gute Gelegenheit mit anderen zu diskutieren auch abseits der Vorträge und Workshops.
Für mich ist dieses Konferenz immer noch etwas mehr als nur eine reine Konferenz, Location, Ambiente, Flair, Leute, Stimmung  und Themen passen einfach zusammen und machen diese Konferenz zu etwas besonderem. So auch dieses Jahr wieder.

Weiterhin durfte ich in diesem Jahr wieder auch selber Vorträge halten mit den Themen:

“Parallel Rockin’ – Paralleler Code muss rocken”

(…und warum “Async and Await” was für Mädchen ist…)

“Big Data Rockin’ – Data movin’ the easy way with SQL Server Integration Services”

Der Vortrag zu “Big Data Rockin'” hat sich erst kurzfristig ergeben weil einer der anderen Sprecherkollegen ausgefallen ist.
Das Feedback zu beiden Vorträgen war wirklich toll und ich freue mich die eine oder anderen Anregung geliefert zu haben für neue Themen/Projekte.

Abschließend möchte ich noch den beiden Organisatoren der Konferenz Kostja (Konstantin Klein) und Lenny (Daniel Fisher) danken für Ihre Mühen diese grandiose Konferenz auf die Beine zu stellen und zu organisieren. Vielen vielen Dank!

GinTonic

 

Sprecher auf der NRW Conf 2014

startbanner

Ich freue mich sehr auch dieses Jahr wieder als Sprecher auf die NRW Conf eingeladen zu sein und mit fantastischen Leuten aus der Community zu diskutieren und das eine oder andere Bierchen zu schlürfen.

Das Thema  meines Vortrags dieses Jahr:

“Parallel Rockin’ – Paralleler Code muss rocken”

Unter dem Motto “Ich rocke…parallel” zeige ich warum “Async and await” doch was für Mädchen ist und richtig parallel programmieren ganz anders geht.
Das “Wie” zeigt dieser Talk ganz im Detail anhand vieler Beispiele aus der Praxis.
Producer-Consumer heißt das Zauberwort mit dem Anwendungen zum “Fliegen” gebracht werden.
Lasst euch in diesem Talk von richtigem parallelen “Code-Rock” mitreißen!

See you there!

Review .NET Day Franken 2014

DDF_Logo

Der diesjährige .NET Day Franken am 10.05.2014 stand unter dem Motto

“FÜMPF JOA ECHD WOA!”

und war ein “kleines” Jubiläum. Der fünfte .NET Day Franken in Folge.
Ins Leben gerufen 2010 von Thomas Müller und Bernd Hengelein, ist der .NET Day Franken heute eine Community Veranstaltung die ihren festen Platz unter den führenden Community Treffen in Deutschland hat. Und das vollkommen zurecht wie ich finde.

Auch dieses Jahr fand die Konferenz wieder im NH Hotel in Nürnberg statt. Ein bewährte und erprobte Location die den optimalen Rahmen für eine Veranstaltung dieser Größe bietet und nichts vermissen lässt. Mancher mag im Vergleich zu anderen Veranstaltungen gar von paradisischen Verhältnissen sprechen. Eine optimale Raumaufteilung (auch wenn es wegen einer kleinen “Konkurrenzveranstaltung” dieses Jahr doch etwas enger wurde) dazu eine top technische Aufstellung (dieses Jahr sogar mit Aufzeichnung aller Sessions) und ein perfektes Catering was wohl die meisten anderen Veranstaltungen in Deutschland in den Schatten stellt. Also rund um eine sehr gelungen Konferenz.
Und doch verlieren die DodNedder wie sich die .NET UG selbst nennt nicht den heimischen Boden unter den Füßen. Die Konferenz ist und bleibt eine Veranstaltung von der Region (Franken) für die Region. Und da legt man großen Wert drauf. Man pflegt ganz bewusst das fränkische Image und hegt doch stets den Anspruch die Vorträge auf nationalem Niveau zu halten. Und das mit Erfolg. Auch dieses Jahr sprachen wieder einige regionale und überregionale MVPs auf der Konferenz was sicherlich auch eine Anerkennung für die Veranstaltung selbst ist.

Ich selbst hatte das große Glück dieses Jahr auch wieder dabei sein zu dürfen als Sprecher
(das 4. mal in Folge) mit meinem Vortrag:

“Parallel und gar nicht schnell”

Der Kampf mit den Ressourcen

Und auch wenn der Slot nach dem Mittagessen der vielleicht etwas schwierigste ist so war von “Suppen-Koma” nichts zu bemerken. Die Reihen waren voll besetzt und die letzten platzierten sich auf ein Sideboard als die Stühle schon alle vergeben waren. Mit diesem Andrang hatte ich nicht gerecht und mich um so mehr gefreut über das wahnsinnige Interesse. Die absolute Krönung ist aber sicherlich der dritte Platz für mich im Gesamt-Sprechervoting der Konferenzteilnehmer. Vielen vielen Dank nochmals dafür. Ich fühle mich sehr geehrt und freue mich das mein Vortrag so gut ankam. Slides und die Videoaufzeichnung werden demnächst online gestellt auf der Webseite des .NET Day Franken und in der eigenen Windows 8 App der Konferenz.

Abschließend möchte ich sagen das ich mich wahnsinnig gefreut habe wieder dort sein zu dürfen und möchte es auch nicht verpassen dem Udo und der Uli sowie auch allen anderen vom Orga-Team noch mal zu danken für diesen tollen Event.

Sprecher_DDF14

SAP RFC calls and all that empty arrays.

Pretty often I have to do some SAP RFC calls (BAPIs) in my projects.
To retrieve a result structure you often have to pass an empty element of the same type in.
In BizTalk this is pretty easy with a Map. You just “connect” all the elements in the target schema to an existing root node and the transformation engine will do the rest for you creating the structure.

But when you have to create this structure in code you are pretty doomed creating all that empty arrays line by line.

Recently I got pretty tired of this, writing a web service calling a SAP BAPI.

So I wrote the following little code code snippet that does the work for me in a generic way.

private void CreateAllArrays(object o)
{
 o.GetType()
	.GetProperties(System.Reflection.BindingFlags.SetProperty
				| System.Reflection.BindingFlags.Public
				| System.Reflection.BindingFlags.Instance)
	.Where(p => p.PropertyType.IsArray)
	.ToList()
	.ForEach(p => p.SetValue(o, Array.CreateInstance(p.PropertyType.GetElementType(), 0), null));
}

Call the “CreateAllArrays” function passing in the object that has properties of type array of [AnyType] and it will create and set an empty array instance for every property found.

Please feel free to adopt and/or copy it for any kind of use.

Tool of the week – ISO Workshop

My tool pick for this week is the ISO Workshop tool from Glorylogic.
A great tool (Windows) for handling ISO images.
You can:

Make ISO (standard or bootable, with custom file system UDF, ISO9660, Joliet or Bridge)
Burn ISO (burn ISO image or any other disc image to CD, DVD or Blu-ray Disc)
Extract Files and Folders (browse and extract files from various disc image formats)
Backup to ISO (copy any CD, DVD or Blu-ray Disc to ISO or BIN image)
Convert to ISO or BIN (supports various formats – ISO, CUE, BIN, NRG, MDF, CDI etc.)

Give it a try. Grab it! It’s free!

ISO Workshop

Pimp my drive: Buffalo HD-PA500TU3 on steroids…

Recently I was searching for a cheap but fast and valuable external hard drive for my MacBook Air. In the past I used some external hard drives from Western Digital on my USB 2 port. That was a pretty slow experience compared with the internal storage speed of my MBA. I first found the Seagate GoFlex adapter. Which is pretty affordable in the US (round about 99$ on Amazon) but the model available in Germany is about 200€. And that is the price just for the adapter without any storage.
So I went on searching and found the Buffalo HD-PA500TU3 which is available for about 140€ in Germany. Pretty good price for an external hard disk (500 GB) with Thunderbolt AND(!) USB 3 connector.
BuffaloMiniStation

 

 

 

 

 

 

As recommended by some customer reviews on Amazon I planned to pimp my drive with an Samsung SSD. So I ordered an Samsung 840 Pro 520 GB SSD too.
The delivery reached me just in time on christmas eve.
Replacing the built in Samsung hard drive of the Buffalo station with the SSD was pretty easy. There are some good instruction videos on the web. I connected the newly built “super drive” to my MBA and started the disk speed test. The test run round about 2 minutes at a very high level speed but suddenly there was a disk disconnect message from Mavericks. Something went wrong. I repeated the tests but same result. After some research I found several guys telling that they had the same problems even on the Seagate GoFlex adapter.
I send the SSD sad back to amazon and ordered the Samsung MZ-7TE750BW 840 EVO Basic with 750 GB (!) and nearly same price as the Pro one with 500 GB.
Two days later the SSD found its’s way to my Buffalo station and everything worked like a charm.
The benchmark results are amazing and I currently host all my virtual machines on that disk.. For round about 540€ a very fast external drive with 750 GB in a “Apple” like design. Hard to beat.

In the following the screenshots of two benchmarks.

Performance benchmark of Buffalo station with the ORIGINAL hard drive:

DiskSpeedTest_HDD

 

Performance benchmark of Buffalo station with the Samsung Evo Basic 705 GB SSD drive:

DiskSpeedTest_SSD

Set value of xs:boolean field in BizTalk Map manually.

In case you want to set a constant true or false value to a field of type xs:boolean in a BizTalk Map you maybe run in trouble with the default behavior of the BizTalk Map designer.
You can not assign a constant value by using a String Concatenation Functoid because it is another data type and a cast is not done automatically.
Furthermore the BizTalk Map Designer deals incoming true or false values of type bool regularly as indicator that a node will exist in the target document or not.

So the easiest way is clearly the following:

  1. Create a Scripting Functoid in your map, leave the input empty and assign the output to your field of type xs:boolean.
    SetBool_In_Map_Screen1

 

 

 

 

2. Open the properties of the Functoid, go to the “Script Functoid Configuration” tab.

3. Select “Inline C#” as type from the list.

4. Place the following code in the script box.
(in case you want false as value change the code as necessary)

public bool ReturnAlwaysTrue()
{
   return true;
}

 

SetBool_In_Map_Screen2

 

 

 

 

 

 

 

 

 

 

 

5. You’re done.